Командный цикл процессора

1. Какие факторы оказывают существенное влияние на «удлинение» командного цикла процессора?

- Структурные конфликты (выдача команд приостановливает):

устройство не является полностью конвейерным;

устройство имеют различные времени выполнения (количества записей в регистровый файл в каждом такте может быть больше 1)

- Конфликты WAW (т.к. команды больше не поступают на ступень WB в порядке их выдачи за выполнения), конфликты типа WAR невозможны (чтение регистров осуществляется на ступени ID)

- проблема с реализацией прерываний (команды могут завершатся не в том порядке, в котором они поступали).

2. В каком(-их) месте(-ах) командного цикла обычно реализуется фаза прерывания?

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

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

- сохранение текущего состояния процесса;

- переход к процедуре обслуживания прерывания.

Классы прерываний:

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

Аппаратные – генерируются специальными средствами контроля работоспособности аппаратуры при обнаружении сбоев (пропадание питания, ошибка контроля памяти по четности и т.п.).

Ввода-вывода – генерируются контроллером ввода-вывода (завершение текущей операции ввода-вывода, возникновение ошибки процедуры ввода-вывода).

Прерывания по таймеру – генерируются таймером процессора и используются ОС для переходов в многозадачном режиме.

Поток данных при прерывании:

На рисунке: регистр адреса памяти (РгАП, MAR); буферный регистр данных памяти (БРгП, MBR); программный счетчик (ПС, PC). Текущее содержимое ПС сохраняется (в стеке), что позволяет в дальнейшем возобновить выполнение прерванной программы с той же точки. В ПС вместо текущего адреса прерванной программы загружается начальный адрес подпрограммы обработки прерывания.

Какие прерывания относятся к программным?

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

3. Что представляет собой класс прерываний?

Классы прерываний:

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

Аппаратные – генерируются специальными средствами контроля работоспособности аппаратуры при обнаружении сбоев (пропадание питания, ошибка контроля памяти по четности и т.п.).

Ввода-вывода – генерируются контроллером ввода-вывода (завершение текущей операции ввода-вывода, возникновение ошибки процедуры ввода-вывода).

Прерывания по таймеру – генерируются таймером процессора и используются ОС для переходов в многозадачном режиме.

Что является концептуальной основой конвейерных вычислений?

Средства повышения эффективности работы системы:

- совершенствование элементной базы;

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

Аппаратура компьютера в любой момент времени выполняет одновременно более одной базовой операции. Два вида совмещения:

- параллелизм (аппаратная структура воспроизводится в нескольких копиях);

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

Принцип конвейеризации:

- подлежащая исполнению функция делится на более мелкие части (этапы, стадии, ступени);

- для каждого этапа выделяется отдельный блок аппаратуры;

- данные передаются от одного этапа к следующему;

- этапы выполнения разных команд совмещаются.

Способы синхронизации ступеней конвейера:

1. Синхронный конвейер - характерен для традиционных компьютеров: синхронный характер работы процессора; короткие тракты распространения сигналов синхронизации (перекос сигналов не существенен).

2. Асинхронный конвейер

Условия применения:

- длительности временных интервалов отдельных ступеней конвейера зависят от типа команды и вида операндов;

- связь между ступенями не сильна;

- длина сигнальных трактов между разными ступенями сильно рознится;

Что означает понятие RISC?

RISC – Reduced Instruction Set Architecture. Компьютер с сокращенным форматом команд.

RISC - Reduced (Restricted) Instruction Set Computer - процессоры (компьютеры) с сокращенной системой команд. Эти процессоры обычно имеют набор однородных регистров универсального назначения; их система команд отличается относительной простотой. В результате аппаратная реализация такой архитектуры позволяет с небольшими затратами выполнять эти инструкции за минимальное (в пределе 1) число тактов синхронизации.

4. Перечислите характеристики RISC?

Для улучшения эффективности было решено упростить архитектуру компьютера – так появилась RISC-архитектура. Концепции:

- выполнение по крайней мере, 75% команд за один машинный цикл;

- устройство управления с «жесткой» логикой;

- стандартная однословная длина всех команд:

равна естественной длине слова и ширине шины данных;

допускает унифицированную поточную обработку всех команд;

- малое число команд (не более 128);

- малое количество форматов команд (не более 4);

- малое число способов адресации (не более 4; отсутствие косвенной адресации памяти);

- доступ к памяти только посредством команд «Чтение» и «Запись»;

- все команды, за исключением «Чтения» и «Записи», используют внутрипроцессорные межрегистровые пересылки;

- относительно большой (не менее 32) процессорный файл РОНов (в современных микропроцессорах превышает 500).

Что являлось направлением исследований, приведших к созданию RISC-архитектуры?

Согласно проведенным Дэвидом Паттерсоном и Джоном Хеннеси исследованиям (исследовались языки С, Pascal:

- операции – функции выполняемые ЦП взаимодействие ЦП з ОП

- операнды - операнды, частота использования, служить для выбора необходимого множества режимов адресации

- последовательность выполнения – определяет структуру управлении процессором и конвейером.

1. Большинство ссылок – скалярные переменные (в основном – локальные).

2. Больше всего времени занимают вызов подпрограмм (и возврат из них) и условные переходы.

Оцениваемые параметры:

-среднее количество машинных команд и обращений к памяти при реализации операторов разных типов;

- динамичная частота появления разных классов(типов) переменных.

Какие выводы из научных исследований привели к появлению RISC?

Эффективный путь повышения производительности:

- основа – конвейер команд:

проектирование конвейера (традиционный неэффективен)

использования компиляторов оптимизующих работу конвейера.

- более интенсивно использовать регистры (минимальное обращение к переменным в ОП)

- сократить набор относительно простых команд.

5. Что является технической основой реализации RISC?

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

Регистры процессора, их оптимизация:

1. Программный метод: Реализуется компилятором с ЯПВУ. Регистры процессора распределяются для переменных, наиболее интенсивно используемых в заданном временном интервале.

- Каждой переменной выделяется виртуальный регистр (их число m не ограничено).

- Виртуальные регистры отображаются на ограниченное количество (n) физических регистров:

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

при нехватке физических регистров их роль для оставшихся виртуальных регистров выполняют ячейки памяти.

Задача: определить, каким переменным в данной точке программы выгоднее всего выделить физические регистры.

Метод решения: распространенный – раскраска графа:

Элементы графа: узел – виртуальный регистр; кол-во узлов – m; цвет узла – физический регистр; кол-во цветов – n; ребро – соединяет два виртуальных регистра, одновременно используемых в одном и том же фрагменте программы.

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

2. Аппаратный метод: Реализуется посредством регистровых окон. Упрощение и ускорение передачи параметров между вызывающей и вызываемой процедурами.

Весь набор регистров процессора делится на множество небольших групп – регистровых окон (register window). В процессе выполнения программы:

- каждое окно связывается с определенной подпрограммой;

- в любой момент процессору доступны регистры только одного окна;

- при вызове очередной подпрограммы процессор автоматически переключается на использование регистрового окна, связанного с ней;

- окна вызывающей и вызываемой подпрограмм частично перекрываются, благодаря чему:

возможна автоматическая передача параметров;

не требуются операции пересылки данных.

Обычно выделяют в регистровом окне: локальные регистры, регистры параметров (параметры вызова данной подпрограммы и сохранение результата), временные регистры(параметры вызова подпрограмм). Организация: циклический буфер. CWP – указатель текущего окна (current window pointer): определяет окно текущей активной подпрограммы. SWP – указатель сохраненного окна (saved window pointer): информация об окне, данные из которого были сохранены в памяти по причине переполнения циклического буфера.

6. Каким образом в RISC-архитектуре реализуются локальные переменные?

Большинство переменных в RISC-архитектуре сохраняется в регистрах самого процессора, а локальные обязательно только в регистрах процессора, именно за счет этого и обеспечивается эффективная работа RISC-архитектуры.

7. Каким образом могут быть организованы регистровые окна?

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

8. Что означает понятие «перекрывающиеся регистровые окна»?

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

9. Как используются CWP и SWP?

CWP – указатель текущего окна (current window pointer), определяет окно текущей активной подпрограммы. Обычно хранится в ССП.

В подпрограмме обращение к регистру задается указанием смещения регистра относительно CWP.

SWP – указатель сохраненного окна (saved window pointer), содержит информацию об окне, данные из которого были сохранены в памяти последними (по причине переполнения циклического буфера).

10. Какие распространены варианты хранения глобальных переменных в RISC?

Два способа представления:

компилятор резервирует определенные ячейки в памяти; доступ – в соответствии с режимами адресации памяти;

отдельное (от локальных переменных) окно, регистры которого: имеют фиксированные номера, доступны из любой подпрограммы.

11. Какой должна быть скорость выполнения команд идеальным RISC-конвейером?

Для RISC-конвейера каждая команда (не менее 75 %) должна выполнятся за один машинный цикл или такт.

12. Каким образом в RISC используется основная память?

В RISC архитектуре обращение к ОП сводится к минимуму, в большинстве случаев пересылки дынных ведутся на межрегистровом уровне. Для обращения к оперативной памяти используются специальные команды - LOAD и STORE.

На что оказывает влияние одинаковая длина RISC-команд?

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

Поскольку длина команды всегда равна длине машинного слова, команда извлекается за одно обращение к памяти.

13. Укажите преимущества RISC-архитектуры процессоров по сравнению с CISC.

Повышение производительности:

более эффективные компиляторы с ЯПВУ, которые максимально используют регистры для хранения переменных;

быстродействие выше благодаря отказу от микропрограммирования (отличие от CISC);

более эффективная работа конвейера команд (благодаря более простому набору команд);

более быстрая реакция на прерывания (запросы анализируются в промежутке между простыми операциями).

Снижение сложности самих схем ЦП.

14. Что означает понятие VLIW?

Very Long Instruction Word - архитектура с очень длинным командным словом.

Выдача на одновременное выполнение фиксированного количества команд, сформатированных как:

одна «длинная» команда;

пакет команд фиксированного формата;

15. Перечислите основополагающие принципы VLIW

Планирование вычислений полностью реализуется программным обеспечением.

Функции «интеллектуального» компилятора: поиск в программе независимых инструкций, группирование найденных инструкций в «очень длинные» командные слова («метаинструкции» длиной 256-1024 бит).

Формат инструкции:

длина – 256 бит;

8 операционных полей, каждое из которых:

- выполняет традиционную трехоперандную RISC-подобную инструкцию;

- непосредственно управляет специфическим функциональным блоком при простом декодировании;

- имеет небольшую длину.

Т.е. за один такт возможно одновременное выполнение 8 команд.

16. Какие задачи выполняет VLIW-компилятор?

Поиск в программе независимых инструкций, группирование найденных инструкций в «очень длинные» командные слова («метаинструкции» длиной 256-1024 бит).

17. Как формируется командное слово VLIW?

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

Формат инструкции:

длина – 256 бит;

8 операционных полей, каждое из которых:

- выполняет традиционную трехоперандную RISC-подобную инструкцию;

- непосредственно управляет специфическим функциональным блоком при простом декодировании;

- имеет небольшую длину.

18. Каким образом можно повышать производительность VLIW-процессора?

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

19. Что ограничивает повышение производительности VLIW?

Ограничивает повышение производительности зависимость компилятора от микроархитектуры.

Решением является 2 стадии компиляции:

- генерация промежуточного кода

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

Также проблемой является реакция программы на непредусмотренные в процессе компиляции динамические ситуации (например неизвестно время ожидания ввода-вывода).

20. Какие преимущества имеет архитектура VLIW с точки зрения технологии?

Архитектура VLIW ориентирована на вычисления, где особенно необходимо большое быстродействие процессора, но для объектно-ориентированных и управляемых по событиям программ она менее подходит.

21. Какие существуют трудности реализации VLIW?

При реализации архитектуры VLIW возникают и другие серьезные проблемы: VLIW-компилятор должен в деталях знать внутренние особенности архитектуры процессора, опускаясь до внутреннего устройства самих функциональных модулей. Как следствие, при выпуске новой версии VLIW-процессора с большим количеством обрабатывающих модулей (или даже с тем же количеством, но другим быстродействием) все старое программное обеспечение, скорее всего, потребует полной перекомпиляции. Надо ли было при переходе, скажем, на процессор 486 избавляться от имеющегося ПО для процессора 386? Конечно, нет, а вот при переходе от одного VLIW-процессора к другому придется, и это разработчик должен учесть при планировании своих затрат и потребуются дополнительные средства на перекомпиляцию. Сторонники VLIW-архитектуры в оправдание предлагают разделить процесс компиляции на две стадии. Все программное обеспечение должно готовиться в аппаратно-независимом формате с использованием промежуточного кода, который окончательно транслируется в машинно-зависимый код только после установки на машине пользователя. Пример такого подхода демонстрирует фонд OSF со своим стандартом ANDF (Architecture-Neutral Distribution Format). Но кроссплатформенное программное обеспечение пока еще только желаемое, а в действительности разработчики ПО для ПК зачастую весьма инертны по отношению к принятию радикально новых технологий. Другая трудность и это по своей сути статическая природа оптимизации, которую обеспечивает VLIW-компилятор. Как поведет себя программа, когда столкнется во время компиляции с непредусмотренными динамическими ситуациями, такими как, например, ожидание ввода-вывода? Архитектура VLIW возникла в ответ на требования со стороны научно-технических организаций, где при вычислениях особенно необходимо большое быстродействие процессора, но для объектно-ориентированных и управляемых по событиям программ она менее подходит, а ведь именно такие программы составляют сейчас большинство в мире ПК. Но и это еще не все: а как можно проверить, что компилятор выполняет такие сложные преобразования надежно и правильно? Пока никак. Вот почему VLIW-компиляторы называют вещью в себе. Однако решение сложной задачи обеспечения взаимодействия аппаратного и программного обеспечения в архитектуре VLIW требует серьезных предварительных исследований.

22. Какова сфера применения VLIW-компьютеров?

Что означает понятие «EPIC»?

EPIC (Explicitly Parallel Instruction Computing) - микропроцессорная архитектура с явным параллелизмом команд. Термин введён в 1997 году альянсом HP и Intel для разрабатываемой архитектуры Intel Itanium. EPIC позволяет микропроцессору выполнять инструкции параллельно, опираясь на работу компилятора, а не выявляя возможность параллельной работы инструкций при помощи специальных схем. В теории, это могло упростить масштабирование вычислительной мощности процессора без увеличения тактовой частоты.

23. На что направлены методы минимизации приостановок работы конвейера?

Методы минимизации приостановок работы конвейера нацелены на достижение идеального CPI = 1.

Что характеризует показатель CPI?

CPI – среднее количество тактов на выполнение команды (clock per instruction)

командный цикл процессор архитектура конвейер

CPI конв. = CPI ид.конв. + Cс + Cд + Cу,

где Cс, Cд, Cу – приостановки конвейера из-за структурных конфликтов, конфликтов по данным и конфликтов по управлению, соответственно.

24. Каким образом достигается CPI меньше 1?

Снижение CPI  повышение производительности:

минимизации приостановок конвейера –достижение идеального CPI = 1;

параллельная выдача нескольких команд в каждом такте – CPI < 1:

оснащение процессора множеством функциональных модулей обработки;

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

25. Какие команды являются параллельными?

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

Взаимозависимые команды не являются параллельными.

Какие различают виды параллелизма в архитектуре процессоров?

Виды параллелизма:

параллелизм уровня команд (ILP – Instruction-Level Parallelism);

аппаратный параллелизм.

26. Чем определяется параллелизм уровня команд?

Условие существования: команды в последовательности независимы и могут выполняться параллельно.

Степень параллелизма: зависит от частоты появления в программе фрагментов, содержащих взаимозависимые команды.

Факторы ILP:

архитектура набора команд;

специфика приложения;

операционная латентность – время, до истечения которого результат операции недоступен для использования в качестве операнда в последующих командах.

Охарактеризуйте аппаратный параллелизм.

Условие существования: способность процессора извлечь преимущества из программного параллелизма.

Степень параллелизма определяется:

Количеством команд, которые процессор может извлечь и выполнить одновременно (количеством параллельных конвейеров);

Быстродействием и функциональностью механизма выявления независимых команд.

27. Чем являются зависимости?

Зависимости являются свойством программ.

На что влияют зависимости между командами?

Организацией конвейера определяется:

Приведет ли данная зависимость к обнаруженному конфликту.

Вызовет ли данный конфликт реальную приостановку конвейера.

Три типа:

Зависимости по данным;

Зависимости по именам;

Зависимости по управлению.

28. Что представляет собой зависимость по данным?

Обнаружение зависимости по данным

Данные от команды к команде передаются посредством:

Регистров – обнаружение зависимостей проще (имена регистров зафиксированы в командах).

Ячеек ОП – обнаружение значительно сложнее.

29. Что означает понятие «сохранение потока данных»?

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

Выполнение команд по предположению;

Условные команды.

Какие меры способствуют снижению приостановок конвейера по управлению?

Базовое планирование загрузки конвейера

Предотвращение приостановки конвейера: отделить зависимую команду (j) от исходной (i) на расстояние в тактах, равное задержке конвейера для последней.

Планирование – обеспечение условий максимальной загрузки конвейера.

Факторы эффективности планирования:

Степень программного ILP;

Задержка функциональных устройств в конвейере.

Недостатки простого конвейера

Главное ограничение: порядок выдачи команд строго определен программой:

Приостановка выполнения какой-либо команды в конвейере вызывает приостановку следующих за ней команд;

Если имеется несколько функциональных устройств, многие из них могут оказаться незагруженными.

Подход к реализации неупорядоченного выполнения

Простой конвейер: структурные конфликты и конфликты по данным потерялись на стадии ID.

Неупорядоченное выполнение команд: ступень ID расщепляется на две:

Выдача: декодирование команд

Чтение операндов: ожидание, отсутствие конфликтов по данным

Динамическое планирование (оптимизация)

Все команды:

Проходят ступень выдачи (issue) в порядке, предписанном программой (упорядоченная выдача);

Могут приостанавливаться и обходить друг друга на ступени чтения операндов, поступая на ступень выполнения неупорядоченно.

Требование: возможность одновременного нахождения нескольких команд на стадии выполнения.

Варианты:

Множество конвейерных ФУ;

Конвейеризация всех ФУ.

30. На чем основано планирование загрузки конвейера?

Условие максимальной загрузки конвейера – выявление последовательностей несвязных команд, которые могут выполняться в конвейере с совмещением.

Чтобы избежатьприостановки конвейера, зависимая команда должна быть отделена от исходной команды на расстояние в тактах, равное задержке конвейера для этой исходной команды.

31. От чего зависит способность компилятора выполнять планирование загрузки конвейера?

Способность компилятора выполнять планирование загрузки конвейера зависит от следующих факторов:

Степень параллелизма уровня команд, доступного в программе;

Задержка функциональных устройств в конвейере.

32. На что направлено действие механизмов динамического планирования?

Динамическое планирование направлено на приостановки конфликтовтипа WARи WAW.

Какой порядок выдачи и выполнения команд используется в конвейере с динамическим планированием?

Динамическое планирование (оптимизация)

Все команды:

Проходят ступень выдачи (issue) в порядке, предписанном программой (упорядоченная выдача);

Могут приостанавливаться и обходить друг друга на ступени чтения операндов, поступая на ступень выполнения неупорядоченно.

Требование: возможность одновременного нахождения нескольких команд на стадии выполнения.

Варианты:

Множество конвейерных ФУ;

Конвейеризация всех ФУ.

33. Что означает понятие «суперскалярный процессор»?

Появление в структуре процессора более одного конвейера делает этот процессор суперскалярным.

Структура суперскалярного процессора:

Блок выборки команд:

Извлекает команды из ОП через кэш память;

Хранит несколько значений счетчика команд и обрабатывает команды условного перехода.

Блок диспетчеризации и распределения:

Взаимодействие между собой, выполняя функцию контроля трафика;

Хранят очереди декодирования команд

Блок декодирования:

Расшифровывает код операции, содержащийся в излеченной из кэша команде.

Накопители команд:

Каждый связан со своим функциональным блоком (ФБ) → число накопителей обычно равно числу ФБ;

Выступают в роли виртуальных функциональных устройств по отношению к блоку диспетчеризации;

В некоторых процессорах объединен в отдельную очередь.

Блок диспетчеризации также хранит список свободных ФБ – табло (Scoreboard). Блок диспетчеризации извлекает команды из своей очереди, считывает из памяти или регистров операнды этих команд, после чего табло помещает команды и значения операндов в очередь распределения.

Эта операция называется выдачей команд. Блок распределения в каждом цикле проверяет каждую команду на наличие операндов в соответствующем ФБ.

Блок исполнения:

Набор ФБ (операционные целочисленные умножения и сложения с плавающей запятой, доступа к памяти и т.п.).

Блок обновления состояния:

Запись и анализ результата команды, исполнение которой завершено.

34. Какие средства оптимизации могут использоваться в суперскалярных процессорах?

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

Отметим наличие двух механизмов процессора для повышения вычислительной эффективности программы: распараллеливания (один или несколько конвейеров) и оптимизации программы (переупорядочи­вание команд, переименование регистров, предсказание переходов и т.п.).

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

35. Какое количество параллельных блоков реализуется на практике в суперскалярных процессорах?

практически достижимая степень параллелизма – 5-6;

Какие команды являются «спариваемыми»?

Команды являются спариваемыми, если:

Между ними не должно быть регистровых зависимостей типа «запись после чтения» или «чтение после записи»;

Ни одна из команд не может содержать одновременно смещение и непосредственный операнд;

36. Какие аппаратные средства требуются для реализации суперскалярного процессора?

Блок выборки команд:

извлекает команды из основной памяти через кэш-память команд;

хранит несколько значений счетчика команд и обрабатывает команды условного перехода.

Блок декодирования:

расшифровывает код операции, содержащийся в извлеченных из кэш-памяти командах.

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

Блоки диспетчеризации и распределения:

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

хранят очереди декодированных команд.

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

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

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

В некоторых процессорах накопители объединены в единую очередь.

Блок диспетчеризации также хранит список свободных функциональных блоков – табло (Scoreboard).

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

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

Блок исполнения:

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

Блок обновления состояния:

запись и анализ результата команды, исполнение которой завершено;

учет полученного результата для команд в очередях распределения, где он выступает в качестве одного из операндов.

37. Что означает термин «speculative execution»?

Speculative execution - планирование по предположению (speculation), выполняемое с помощью компилятора или аппаратуры - позволяет выполнить команду еще до того, как процессор узнает, что она должна выполняться.

38. Какие действия выполняются на этапе выдача команды?

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

39. Для чего предназначены схемы резервирования?

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

40. Как в суперскалярном процессоре реализуется этап записи результата?

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