Снижение 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), – предназначенным для хранения команд, которые уже декодированы, но еще не выполнены.
Каждый накопитель команд связан со своим функциональным блоком (ФБ), поэтому число накопителей обычно равно числу ФБ, но если в процессоре используется несколько однотипных ФБ, то им придается общий накопитель.
По отношению к блоку диспетчеризации накопители команд выступают в роли виртуальных функциональных устройств.