Циклы выполнения команд: принципы организации, К1810ВМ86, КР580ВМ80

Циклы выполнения команд: принципы организации, К1810ВМ86, КР580ВМ80

Принципы организации командных и машинных циклов.

Команда пред­ставляет собой совокупность микрокоманд, которые в виде двоичных кодов хра­нятся в постоянной памяти (ПЗУ) устройства управления процессора. Выполне­ние команды можно рассматривать как процесс считывания из ПЗУ микрокоманд, инициирующих работу некоторых функциональных узлов процессора на отдель­ных временных интервалах (тактах). Время, затрачиваемое на выполнение коман­ды, называется командным циклом.

Команды имеют не одинаковую длительность командных циклов, так как со­держат различное число микрокоманд, используют разные способы адресации и другую дополнительную информацию. Это обстоятельство отражается в форма­тах команд, имеющих длину один, два и более байт. В командном цикле можно выделить две основные фазы:

● фазу выборки команды.

В этой фазе программный счетчик PC выставляет на адресную шину адрес первого байта команды. Микропроцессор вырабатыва­ет сигнал «чтения памяти», благодаря которому содержимое адресуемой ячейки памяти по шине данных поступает в регистр команд IR ( Instruction Register ).

Программный счетчика PC формирует адрес, указывающий на следующий элемент объектного кода. Фаза выборки одинакова для всех команд;

● фазу выполнения команды.

Фаза начинается с дешифрации команды. В ре­зультате дешифрации первого байта определяется вид (код) операции и в уст­ройстве управления формируются необходимые для ее выполнения управля­ющие сигналы. Действия процессора в фазе выполнения команды и ее про­должительность зависит от вида операции. Для выполнения операции может потребоваться дополнительное обращение к памяти или внешним устрой­ствами за данными, пересылка данных в соответствующие регистры процес­сора, непосредственное выполнение операции в АЛУ, вывод результатов в память или внешнее устройство и т. д.

Различная длительность командных циклов и неоднородность их отдельных фаз явились причиной организации машинных циклов для выполнения команд. Каждый машинный цикл представляет собой цикл обращения к системной ма­гистрали. В машинном цикле производится выборка очередного байта (слова) команды или данных из памяти, запись в память, ввод или вывод данных. Команд­ный цикл может содержать различное число машинных циклов. В первом машин­ном цикле М1 происходит выборка первого байта команды, ее дешифрация и ис­полнение, если данные находятся во внутренних регистрах процессора. Если выполнение команды требует обращения к памяти или внешним устройствам, то используется два, три и более машинных циклов.

Машинные циклы, как и команд­ные, также не являются однородными. Поэтому на их выполнение затрачивается различное число тактов. Таким образом, при выполнении команды все действия процессора синхронизированы вложенными друг в друга циклами трех уровней: командными, машинными и тактовыми.

Рассмотрим в общих чертах особенности организации машинных циклов и ра­боты микропроцессоров КР580ВМ80 и К1810ВМ86.

Микропроцессор КР580ВМ80.

Организация машинных циклов. Для организации машинных циклов (МЦ) используется двухфазная система синх­роимпульсов Ф1, Ф2. Машинные циклы выполняются по тактам. Каждый такт отсчитывается от фронта импульсов Ф1. Его длительность равна периоду синхро­импульсов.

В течение такта выполняется одна микрокоманда. В первый такт каждого МЦ процессор вырабатывает сигнал синхронизации SYNC. Один МЦ включает 3–5 тактов, один командный цикл — 1–5 МЦ.

Набор управляющих сигналов процессора не обеспечивает его нормального функционирования в микропроцессорной системе. Например, он не позволяет реализовать селективное обращение к памяти и внешнему устройству. Поэтому в процессоре предусмотрен вывод на шину данных 8–разрядного слова состоя­ния SW ( Status Word ) в первом такте каждого машинного цикла, что позволяет расширить набор управляющих сигналов и организовать работу МП в машинных циклах.

Отдельные разряды D 7… D 0 слова состояния имеют следующее назначение:

D 0 ( INTA ) ПОДТВЕРЖДЕНИЕ ПРЕРЫВАНИЯ: стробирование команды RS Т (повторного пус­ка) в микропроцессор из устройства, запрашивающего прерывание, при действи­тельном сигнале ПРИЕМ ( DBIN );

D l ( WO #) ЗАПИСЬ/ВЫВОД: при WO # = 0 на шине данных находится информация для запи­си в память или вывода во внешнее устройство (при WO = 1 реализуется режим чтения из памяти или приема из внешнего устройства);

D 2 ( STACK ) СТЕК: на шине адреса установлен адрес из указателя стека;

D 3 ( HLTA ) ПОДТВЕРЖДЕНИЕ ОСТАНОВА: микропроцессор находится в состоянии останов — отклик на команду ОСТАНОВА HLT ;

D 4 ( OUT ) ВЫВОД: на адресной шине установлен номер устройства вывода и осуществляется вывод информации из аккумулятора в это устройство при сигнале ВЫДАЧИ ( WR = 0);

D 5(М1) ВЫБОР ПЕРВОГО БАЙТА: текущий цикл служит для выбора первого байта команды;

D 6( INT ) ВВОД: на адресной шине установлен номер устройства ввода и осуществляется ввод информации в аккумулятор из этого устройства;

D 7 (МЕМ R ) ЧТЕНИЕ ИЗ ПАМЯТИ: в текущем цикле производится чтение из памяти.

С помощью разрядов слова состояния кодируются МЦ. В 8–разрядном про­цессоре КР580ВМ80 предусмотрено 10 МЦ:

№ МЦНазначениеКод
1Прием первого байта команды в регистр команд10100010
2Чтение данных из памяти10000010
3Запись данных в память00000000
4Чтение из стека10000110
5Запись в стек00000100
6Ввод данных из порта в аккумулятор01000010
7Вывод данных из аккумулятора в порт00010000
8Подтверждение прерывания00100011
9Останов10001010
10Подтверждение прерывания при останове00101011

Работа в машинных циклах.

Выполнение любой команды начинается с первого машинного цикла М1, называемого основным. Перед началом цикла в программном счетчике PC установлен адрес первого байта очередной команды.

На такте Т1 происходят следующие процессы:

● адрес первого байта загружается в регистр адреса и выставляется на шину адреса; одновременно содержимое счетчика команд поступает в схему инк­ремента–декремента;

● передним фронтом импульса Ф2 формируется сигнал SYNC , свидетельству­ющий о том, что текущий цикл является первым машинным циклом; одновре­менно с этим сигналом на шину данных выставляется информация о состоя­нии микропроцессора.

● передним фронтом импульса Ф1 формируется Строб, по которому происхо­дит запись слова состояния в регистр состояния;

● передним фронтом импульса Ф2 в микропроцессоре формируется сигнал Прием; с помощью сигнала Прием и выходного сигнала D 7 регистра состоя­ния формируется управляющий сигнал чтения из памяти ЧтП; первый байт команды через двунаправленный буфер БД поступает на шины данных мик­ропроцессора, однако не воспринимается им;

● прежнее содержимое счетчика команд, находящееся в схеме инкремента–декремента, увеличивается на единицу и снова передается в счетчик. Следова­тельно, теперь в счетчике будет уже находиться адрес второго байта коман­ды или адрес первого байта следующей команды, если текущая команда яв­ляется однобайтной;

● выявляется необходимость перевода микропроцессора в состояние ожида­ния TW путем проверки сигналов ГОТОВНОСТИ (Гт), ЗАПРОСА ЗАХВАТА (ЗЗх) и ПОДТВЕРЖДЕНИЯ ОСТАНОВА ( D 3). Если к моменту появления среза импуль­са Ф2 сигнал Гт = 0, то микропроцессор переходит в состояние ожидания Tw , которое может длиться неограниченно большое, но целое число тактов. На срезе Ф2 каждого такта производится проверка сигнала Гт. При Гт = 1, ЗЗх = 0, D 3 = 0 микропроцессор переходит в такт ТЗ.

● отрицательным фронтом Ф1 первый байт команды записывается в регистр команд РК;

● положительным фронтом Ф2 оканчивается сигнал Прием на выходе микро­процессора и, следовательно, сигнал чтения из памяти ЧтП.

● первый байт команды поступает из регистра команд в устройство управле­ния, где анализируется и выясняется необходимость дополнительного обра­щения к памяти;

● если команда однобайтная и операнды находятся в регистрах микропроцес­сора, то такое обращение не требуется и предусмотренная командой опера­ция выполняется; при необходимости используется дополнительный такт Т5;

● если существует необходимость дополнительного обращения к памяти, то ос­новной машинный цикл М1 заканчивается.

Отличие машинных циклов ЧТЕНИЯ ИЗ ПАМЯТИ (2), ЧТЕНИЯ ИЗ СТЕКА (4), ВВОДА из внешнего устройства (6) по сравнению с циклом М1 заключается в сле­дующем:

● для активизации режима работы устройств используются соответствующие управляющие сигналы;

● на такте ТЗ информация на шине данных воспринимается микропроцессором как данные, а не первый байт команды, и поэтому передается в другие реги­стры, а не в регистр команд.

Особенности выполнения машинных циклов ЗАПИСИ В ПАМЯТЬ (3), ЗАПИСИ В СТЕК (5) и ВЫВОДА из микропроцессора во внешние устройства (7) проявляют­ся в следующем:

● для активизации режимов записи или вывода используются соответствующие управляющие сигналы для каждого из указанных устройств;

● на такте Т2 из микропроцессора на шину данных выводится информация;

● на такте ТЗ формируется управляющий сигнал для активизации записи или вывода.

Микропроцессор К1810ВМ86.

Организация машинных циклов. Машинные циклы (МЦ) синхронизируются тактовыми импульсами, поступающими на вход CLK.

Период тактовых импульсов составляет такт МЦ. Границей раздела тактов является срез тактового импульса. Каждый МЦ содержит не менее четы­рех тактов Т1–Т4.

В режиме минимальной конфигурации все необходимые сигналы управления вырабатываются микропроцессором самостоятельно. В режиме максимальной конфигурации возможна работа в восьми МЦ, тип которого выбирается трехраз­рядным кодом S2S1S0.

Работа в машинных циклах.

Рассмотрим работу процессора в машин­ном цикле, в котором осуществляется обращение к магистрали.

В такте Т1 микропроцессор на соответствующие выводы выставляет адрес А19…А0 и сигнал BHE/S7 = 0 для активизации Н–банка памяти.

При адресации портов ВВ старшие разряды А19…А16 адреса принимают зна­чение 0.

В циклах чтения такт Т2 используется для переключения шины адресов/дан­ных (ША/Д) в режим чтения. В это время она находится в высокоомном состоя­нии. Данные принимаются в течение тактов ТЗ и Т4.

В циклах записи в течение тактов Т2–Т4 процессор выставляет на ША/Д дан­ные D15…D0. В такте ТЗ любого МЦ МП сигналом READY опрашивает готовность ВУ к обме­ну. Если READY = 0, то в следующем такте МП переходит в состояние ожидания, которое длится целое число тактов TW . После поступления READY = 1 микропро­цессор завершает МЦ тактом Т4 и переходит к следующему МЦ обращения к ма­гистрали. При отсутствии необходимости обращения к магистрали генерируются холостые такты Т5.

При передаче данных в тактах Т2, ТЗ ( TW ), Т4 на выводах A 16/ S 3… A 19/ S 6 и BHE / S 7 микросхемы активными становятся сигналы S 3… S 7, которые информи­руют ВУ о состоянии МП. При этом S 6 = 0, S 5 показывает состояние флага пре­рывания, a S 4 S 3 кодирует сегментный регистр, используемый при адресации.

Процессоры — описание основ, принципов и классов

Содержание

  • Архитектура фон Неймана
  • Устройство управления
  • Арифметико-логическое устройство
  • Микропроцессорная память
  • Интерфейсная система микропроцессора
  • Генератор тактовых импульсов (internal clock)
  • Команда, инструкция (instruction)
  • Цикл процессора
  • Такт работы процессор
  • Регистры
  • Цикл команды
  • Системы команд и соответствующие классы процессоров
  • Классы команд
  • Классы процессоров
  • CISC (complex instruction set computer)
  • RISC (Redused Instruction Set Computer)
  • Процессор VL1W
  • Процессор MISC
  • Технологии повышения производительности процессоров
  • Блоки операций с плавающей запятой
  • SlMD — процессы (команды)
  • Динамическое исполнение (dynamic execution technology)
  • Многократное декодирование команд
  • Декодирование команд CISC/RISC в VLIW
  • Декодирование команд CISC VLIW в RISC
  • Макрослияние (macrofusion)
  • Микрослияние (micro-op fusion)
  • Технология Hyper-Threading (НТ)
  • Технологии «невыполнимых битов»

Архитектура фон Неймана

В 1945 года в отчете по ЭВМ EDVAC Дж. фон Нейман сформулировал основные принципы построения ЭВМ. Вычислительная система, согласно фон Нейману, должна включать следующие компоненты: центральное арифметическое устройство; центральное устройство управления; главную память; устройства ввода-вывода.

По прошествии более полувека большинство компьютеров так и имеют «фон неймановскую архитектуру».

Процессором является определенная функционально полная совокупность устройств, которая регулирует, управляет и контролирует соответствующий рабочий процесс. В персональных компьютерах таким рабочим процессом является процесс обработки данных, а сама совокупность устройств называется процессором.

В состав микропроцессора входят несколько типовых компонентов. Подробнее читайте далее.

Устройство управления

Устройство управления (УУ) формирует и подает во все блоки машины в нужные моменты времени определенные сигналы управления (управляющие импульсы), обусловленные спецификой выполняемой операции и результатами предыдущих операций; формирует адреса слов (ячеек) памяти, используемых выполняемой операцией, и передает эти адреса в соответствующие блоки компьютера; опорную последовательность импульсов устройство управления получает от генератора тактовых импульсов.

Арифметико-логическое устройство

Арифметико-логическое устройство (АЛУ) предназначено для выполнения арифметических (обычно это короткие операции — с фиксированной точкой, ФТ) и логических операций над числовой и символьной информацией.

Микропроцессорная память

Микропроцессорная память (МПП, или кэш память 1-го уровня — L1 cache) предназначена для кратковременного хранения, записи и выдачи информации, непосредственно используемой в ближайшие такты работы машины.

Интерфейсная система микропроцессора

Интерфейсная система микропроцессора предназначена для сопряжения и связи с другими устройствами ПК.

Генератор тактовых импульсов (internal clock)

Генератор тактовых импульсов (internal clock) генерирует последовательность электрических импульсов, частота которых определяет тактовую частоту микропроцессора — электронные часы реального времени, обеспечивающие при необходимости автоматический съем текущего момента времени.

Перечислим далее основные понятия, связанные с работой процессора.

Команда, инструкция (instruction)

Команда, инструкция (instruction) — описание операции, которую нужно выполнить. Каждая команда начинается с кода операции (КОП), содержит необходимые адреса, характеризуется форматом, который определяет структуру команды.

Команды подразделяются на арифметические, логические, ввода/вывода, передачи данных. Каждая команда выполняется в компьютере за один либо несколько тактов.

Цикл процессора

Цикл процессора — период времени, за который осуществляется выполнение команды исходной программы в машинном виде; состоит из нескольких тактов.

Такт работы процессор

Такт работы процессора — промежуток времени между соседними импульсами (tick of the internal clock) генератора тактовых импульсов, частота которых есть тактовая частота процессора. Такт процессора (такт синхронизации) — квант времени, в течение которого осуществляется элементарная операция — выборка, сравнение, пересылка данных. Выполнение короткой команды — арифметика с ФТ, логические операции, обычно занимает пять тактов:

  • выборка команды;
  • расшифровка кода операции (декодирование);
  • генерация адреса и выборка данных из памяти;
  • выполнение операции;
  • запись результата в память.

Процедура, соответствующая такту, реализуется определенной логической цепью (схемой) процессора, обычно именуемой микропрограммой.

Регистры

Регистры — устройства, предназначенные для временного хранения данных ограниченного размера. Важной характеристикой регистра является высокая скорость приема и выдачи данных. Регистр, обладающий способностью перемещать содержимое своих разрядов, называют сдвиговым. Некоторые регистры служат счетчиками. Счетчик является устройством, которое на своих выходах выдает (в двоичной форме) сумму числа импульсов, подаваемых на его единственный вход. Максимальное число импульсов, которое счетчик может подсчитать, называется его емкостью.

Регистры общего назначения (РОН, General Purpose Registers) — общее название для регистров, которые временно содержат данные, передаваемые или принимаемые из памяти.

Регистр команды (РК, Instruction Register IR) служит для размещения текущей команды, которая находится в нем в течение текущего цикла процессора.

Регистр — (РАК) счетчик (СчАК) адреса команды (program counter, PC) — регистр, содержащий адрес текущей команды.

Сумматор — регистр, осуществляющий операции сложения (логического и арифметического двоичного) чисел или битовых строк, представленных в прямом или обратном коде. (Иногда РЧ и РР включают в состав сумматора).

Существуют и другие регистры, например, регистр состояния — Status Register (SR). Типичным содержанием SR является информация о результатах завершения команды (ноль, переполнение, деление на ноль, перенос и прочее). УУ использует информацию из SR для исполнения условных переходов (например, «в случае переполнения перейти по адресу 4170»).

Цикл команды

Цикл выполнения короткой команды может выглядеть следующим образом.

1. В соответствии с содержимым СчАК (адрес очередной команды) УУ извлекает из ОП очередную команду и помещает ее в РК. Некоторые команды УУ обрабатывает самостоятельно, без привлечения АЛУ (например, по команде «перейти по адресу 2478» величина 2478 сразу заносится в СчАК, и процессор переходит к выполнению следующей команды).

Типичная команда содержит:

  • код операции (КОП), характеризующий тип выполняемого действия;
  • номера индексного (ИР) и базисного (БР) регистров;
  • адреса операндов A1, А2 и так далее

2. Осуществляется расшифровка (декодирование) команды.

3. Адреса A1, А2 и прочие, помещаются в регистры адреса.

4. Если в команде указаны ИР или БР, то их содержимое используется для модификации РА — фактически выбираются числа или команды, смещенные в ту или иную сторону по отношению к адресу, указанному в команде.

5. По значениям РА осуществляется чтение чисел (строк) и помещение их в РЧ.

6. Выполнение операции и помещение результата в PP.

7. Запись результата по одному из адресов (если необходимо).

8. Увеличение содержимого СчАК на единицу (переход к следующей команде).

Очевидно, что за счет увеличения числа регистров возможно распараллеливание, перекрытие операций. Например, при считывании команды СчАК можно автоматически увеличить на 1, подготовив выборку следующей команды. После расшифровки текущей команды РК освобождается и в него может быть прочитана следующая команда. При выполнении операции возможна расшифровка следующей команды и так далее Все это является предпосылкой построения так называемых конвейерных структур (pipeline). Однако все это хорошо только при последовательном (естественном) порядке выполнения команд. Появление переходов (особенно по не определенному заранее условию) нарушает эту картину. Поэтому современные процессоры пытаются предсказывать переходы в программе (branch prediction).

Системы команд и соответствующие классы процессоров

Основные команды ЭВМ классифицируются вкратце следующим образом: по функциям (выполняемым операциям), направлению приема-передачи информации, адресности.

Классы команд

1. Команды обработки данных, в том числе (01 — первый операнд, 02 — второй):

1.1. Короткие операции (один такт).

— логическое сложение (для каждого бита 01 и 02 осуществляется операция ИЛИ;

— логическое умножение (для каждого бита О! и 02 осуществляется операция И;

— инверсия (в O1 все единицы заменяются на нули, и наоборот);

— сравнение логическое (если O1=02, то некий регистр устанавливается в 1, иначе — в 0).

— сложение или вычитание операндов;

— сравнение арифметическое (если O1 > O2, или O1=O2, или O1 Стек регистров с ПЗ и ММХ-регистры

Эти регистры доступны в стековом порядке. Имена (номера) регистров устанавливаются относительно вершины стека (ST (0) — вершина стека, ST(1) — следующий регистр ниже вершины стека, ST (2) — второй после вершины стека и так далее). Вводимые данные таким образом всегда сдвигаются «вниз» от вершины стека, а текущая операция совершается с содержимым вершины стека.

SlMD — процессы (команды)

Г. Флинном в 1966 году была предложена классификация ЭВМ и вычислительных систем (в основном — суперкомпьютеров), основанная на совместном рассмотрении потоков команд и данных. В процессорах таких известных производителей как Intel и AMD все более полно используются некоторые из этих архитектурных наработок.

Таблица классификации Флинна

Поток данныхПоток команд
ОдиночныйМножественный
ОдиночныйSISD — Single Instruction stream/Single Data stream (Одиночный поток Команд и Одиночный поток Данных — ОКОД)MISD — Multiple Instruction stream/ Single Data stream (Множественный поток Команд и Одиночный поток Данных — МКОД)
МножественныйSIMD — Single Instruction stream/Multiple Data stream (Одиночный поток Команд и Множественный поток Данных — ОКМД)MIMD — Multiple Instruction stream/Multiple Data stream (Множественный поток Команд и Множественный поток Данных -МКМД)

Например, в общем случае архитектура SIMD (ОКМД) предполагает создание структур векторной или матричной обработки. Под эту схему хорошо подходят задачи обработки матриц или векторов (массивов), задачи решения систем линейных и нелинейных, алгебраических и дифференциальных уравнений, задачи теории поля и другое

В микропроцессорах массового выпуска при обработке мультимедийных данных также целесообразно применять подобные решения.

Динамическое исполнение (dynamic execution technology)

Динамическое исполнение — технология обработки данных процессором, обеспечивающая более эффективную работу процессора за счет манипулирования данными, а не просто линейного исполнения списка инструкций.

Предсказание ветвлений

С большой точностью (более 90 %) процессор предсказывает, в какой области памяти можно найти следующие инструкции. Это оказывается возможным, поскольку в процессе исполнения инструкции процессор просматривает программу на несколько шагов вперед.

Внеочередное выполнение (выполнение вне естественного порядка — out-of-order execution

Процессор анализирует поток команд и составляет график исполнения инструкций в оптимальной последовательности независимо от порядка их следования в тексте программы, просматривая декодированные инструкции и определяя, готовы ли они к непосредственному исполнению или зависят от результата других инструкций. Далее процессор определяет оптимальную последовательность выполнения и исполняет инструкции наиболее эффективным образом.

Переименование (ротация) регистров (register rename

Чтобы избежать пересылок данных между регистрами в соответствующей команде изменяется адрес регистра, содержащего данные, участвующие в следующей операции. Поэтому вместо пересылки данных в регистр-источник осуществляется трактовка регистра с данными как источника.

Выполнение по предположению (спекулятивное — speculative

Процессор выполняет инструкции (до пяти инструкций одновременно) по мере их поступления в оптимизированной последовательности (спекулятивно). Поскольку выполнение инструкций происходит на основе предсказания ветвлений, результаты сохраняются как предположительные («спекулятивные»). На конечном этапе порядок инструкций восстанавливается.

Существуют следующие варианты спекулятивного выполнения:

  • предикация (predication) — одновременное исполнение нескольких ветвей программы вместо предсказания переходов (выполнения наиболее вероятного);
  • опережающее чтение данных (speculative loading), то есть загрузка данных в регистры с опережением, до того, как определилось реальное ветвление программы (переход управления).

Эти возможности осуществляются комбинированно — при компиляции и выполнении программы.

Предикации

Обычный компилятор транслирует оператор ветвления (например, if-then-else) в блоки машинного кода, расположенные последовательно в потоке. Обычный процессор в зависимости от исхода условия исполняет один из этих базовых блоков, пропуская все другие. Более развитые процессоры пытаются прогнозировать исход операции и предварительно выполняют предсказанный блок. При этом в случае ошибки много тактов тратится впустую. Сами блоки зачастую весьма малы — две или три команды, — а ветвления встречаются в коде в среднем каждые шесть манд. Такая структура кода делает крайне сложным его параллельное выполнение.

При использовании предикации компилятор, обнаружив оператор ветвления в исходной программе, анализирует все возможные ветви (блоки) и помечает их метками или предикатами (predicate). После этого он определяет, какие из них могут быть выполнены параллельно (из соседних, независимых ветвей).

В процессе выполнения программы центральный процессор выбирает команды, которые взаимно независимы и распределяет их на параллельную обработку. Если центральный процессор обнаруживает оператор ветвления, он не пытается предсказать переход, а начинает выполнять все возможные ветви программы.

Таким образом, могут быть обработаны все ветви программы, но без записи полученного результата. В определенный момент процессор наконец «узнает» о реальном исходе условного оператора, записывает в память результат «правильной ветви» и отменяет остальные результаты.

В то же время, если компилятор не «отметил» ветвление, процессор действует как обычно — пытается предсказать путь ветвления и так далее Испытания показали, что описанная технология позволяет устранить более половины ветвлений в типичной программе, и, следовательно, уменьшить более чем в 2 раза число возможных ошибок в предсказаниях.

Опережающее чтения

Опережающее чтение (предварительная загрузка данных, чтение по предположению) разделяет загрузку данных в регистры и их реальное использование, избегая ситуации, когда процессору приходится ожидать прихода данных, чтобы начать их обработку.

Прежде всего, компилятор анализирует программу, определяя команды, которые требуют приема данных из оперативной памяти. Там, где это возможно, он вставляет команды опережающего чтения и парную команду контроля опережающего чтения (speculative check). В то же время компилятор переставляет команды таким образом, чтобы центральный процессор мог их обрабатывать параллельно.

В процессе работы центрального процессора встречает команду опережающего чтения и пытается выбрать данные из памяти. Может оказаться, что они еще не готовы (результат работы блока команд, который еще не выполнился). Обычный процессор в этой ситуации выдает сообщение об ошибке, однако система откладывает «сигнал тревоги» до момента прихода процесса в точку «команда проверки опережающего чтения». Если к этому моменту все предшествующие подпроцессы завершены и данные считаны, то обработка продолжается, в противном случае вырабатывается сигнал прерывания.

Многократное декодирование команд

В то время как традиционный процессор линейно переводит команды в тактовые микрокоманды и последовательно их выполняет, центральный процессор с многократным декодированием сначала преобразует коды исходных команд программы в некоторые вторичные псевдокоды (предварительное декодирование, или предекодирование), которые затем более эффективно исполняет ядро процессора. Эти преобразования могут содержать несколько этапов. В качестве примеров рассмотрим 2-3-ступенчатые декодеры.

  • a — преобразование CISC/RISC в VLIW;
  • б — преобразование VLIW/CICS в RISC;
  • в — макрослияние;
  • г — микрослияние

Декодирование команд CISC/RISC в VLIW

Декодирование команд CISC/RISC в VLIW. Эти технологии использованы в мобильных процессорах Crusoe (фирма Transmeta) и некоторых центральных процессорах Intel — архитектуры IA-64 и EPIC (Explicitly Parallel Instruction Computing — вычисления с явной параллельностью инструкций).

В частности, в Crusoe на входе процессора — программы, подготовленные в системе команд Intel х86, однако внутренняя система команд VLIW не имеет ничего общего с командами х86 и разработана для быстрого выполнения при малой мощности, используя обычную CMOS-технологию. Окружающий уровень программного называют программным обеспечением модификации кодов (Code Morphing software — CMS, или CM), здесь осуществляется динамический перевод команд х86 в команды VLIW.

Аналогичные приемы используются в процессорах Intel Itanium — здесь при компиляции готовятся пакеты (связки, bundles) команд (по 3 команды в 128-битовом пакете). Тем самым, компилятор выполняет в данном случае функции СМ.

Декодирование команд CISC VLIW в RISC

Указанные выше достоинства RISC-архитектуры привели к тому, что во многих современных CISC-процессорах используется RISC-ядро, выполняющее обработку данных. При этом поступающие сложные и разноформатные команды предварительно преобразуются в последовательность простых RISC-операций, быстро выполняемых этим процессорным ядром. Таким образом, работают, например, современные модели процессоров Pentium и К7, которые по внешним показателям относятся к CISC-процессорам. Использование RISC-архитектуры является характерной чертой многих современных процессоров.

Макрослияние (macrofusion)

В процессорах предыдущих поколений каждая выбранная команда отдельно декодируется и выполняется. Макрослияние позволяет объединять типичные пары последовательных команд (например, сравнение, сопровождающееся условным переходом) в единственную внутреннюю команду-микрооперацию (МкОП, micro-op) в процессе декодирования. В дальнейшем две команды выполняются как одна МкОП, сокращая полный объем работы процессора.

Микрослияние (micro-op fusion)

В современных доминирующих процессорах команды х86 (macro-ops) обычно расчленяются на МкОП прежде, чем передаются на конвейер процессора. Микрослияние группирует и соединяет МкОП, уменьшая их число. Исследования показали, что слияние МкОП вкупе с выполнением команд в измененном порядке может уменьшить число МкОП более чем на 10 процентов. Данная технология использована в системах Intel Core, а ранее апробировалась в ПЦ мобильных систем Pentium М.

В процессорах AMD К8 конвейер строится на том, что работа с потоком МкОП происходит тройками инструкций (AMD называет их линиями — line). Конвейер К8 обрабатывает именно линии, а не х86-инструкции или отдельные микрооперации.

Технология Hyper-Threading (НТ)

Здесь реализуется разделение времени на аппаратном уровне, Разбивая физический процессор на два логических процессора, каждый из которых использует ресурсы чипа — ядро, кэш память, шины, исполнительное устройство.

Благодаря НТ многопроцессная операционная система использует один процессор как два и выдает одновременно два потока команд. Смысл технологии заключается в том, что в большинстве случаев исполнительные устройства процессора далеки от полной загруженности. От передачи на выполнение вдвое большего потока команд повышается загрузка исполнительных устройств.

Технологии «невыполнимых битов»

Технологии «невыполнимых битов» (No-eXecute bit). Бит «NX» (63-й бит адреса) позволяет операционной системе определить, какие страницы адреса могут содержать исполняемые коды, а какие — нет. Попытка обратиться к NX-адресу как к исполняемой программе вызывает событие «нарушение защиты памяти», подобное попытке обратиться к памяти «только для чтения» или к области размещения операционной системы. Этим может быть запрещено выполнение программного кода, находящегося в некоторых страницах памяти, таким образом предотвращая вирусные или хакерские атаки. С теоретической точки зрения, здесь осуществляется виртуальное назначение «Гарвардской архитектуры» — разделение памяти для команд и для данных. Обозначение «NX-bit» используется AMD, Intel использует выражение «XD-bit» (eXecute Disable bit).

Дополнительная информация по теме

Подробное описание истории и устройство процессоров компании AMD, с графическими схемами и сравнительными характеристиками

Подробное описание истории и устройство процессоров компании Intel, с графическими схемами и сравнительными характеристиками

Подробное описание истории и устройство процессоров компании Cyrix с использованием графических схем

Описание разных производителей процессоров, которые не смогли попасть в лидеры процессорного рынка

http://pue8.ru/protsessory/672-tsikly-vypolneniya-komand.html
http://sd-company.su/article/computers/processors

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *