Параллелизм на уровне команд
ПРИМЕР ПРОЦЕССОРА С РАЗЛИЧНЫМИ ВИДАМИ ПАРАЛЛЕЛИЗМА
Download 101.4 Kb.
|
ПРИМЕР ПРОЦЕССОРА С РАЗЛИЧНЫМИ ВИДАМИ ПАРАЛЛЕЛИЗМАРассмотрим пример гипотетического процессора, реализующего все рассмотренные виды параллелизма. На рис. 28 показана схема конвейера двухпоточного суперскалярного процессора с внеочередным выполнением команд и векторным расширением. Рис. 28. Структура процессора, использующего различные виды параллелизма На входе в конвейер стоят два блока выборки команд, каждый из которых производит выборку команд своего потока. Из кэш-памяти команд l-ro уровня в каждый блок выборки поступают блоки данных (кэш-строки или части кэш-строк), из которых блоки выборки выделяют непосредственно коды команд. Далее два потока команд поступают в декодер, который выполняет их декодирование и преобразование во внутренние команды процессора (микрооперации), чередуя потоки на каждом такте. Каждая микрооперация помечается, какому из потоков она принадлежит. На выходе из декодера микрооперации объединяются в один общий поток и попадают в диспетчер. Диспетчер представляет собой большой буфер микроопераций (буфер переупорядочения), организованный в виде очереди. Запись о каждой микрооперации хранится в буфере до самого ее выхода с конвейера. Диспетчер разрешает все зависимости по данным, выполняя переименование регистров и отправляя готовые для выполнения микрооперации в планировщик, по нескольку штук за такт. Вновь прибывшие микрооперации попадают в начало очереди, готовые к выполнению микрооперации отправляются в планировщик с любого места очереди, а выполненные микрооперации удаляются с конца очереди. Планировщик получает микрооперации, зависимости по данным у которых разрешены, и распределяет их по функциональным устройствам, т. е. разрешает зависимости по ресурсам. Функциональные устройства получают команды от планировщика, а данные - из регистрового файла. Два потока команд используют один и тот же файл аппаратных регистров, конкретные ячейки которого распределяет диспетчер. Результаты вычислений функциональные устройства складывают обратно в регистровый файл. По завершении выполнения каждой команды соответствующее функциональное устройство отправляет сигнал диспетчеру. Диспетчер помечает команду как выполненную и проверяет, могут ли теперь начать выполняться другие, зависимые от нее команды, т. е. все ли зависимости по данным у них разрешены. Выполненные команды, находящиеся в конце очереди, удаляются из нее, освобождая место для вновь прибывших. Кроме того, в процессоре реализовано векторное расширение в виде отдельного регистрового файла (с векторными регистрами большого размера) и отдельного функционального устройства, выполняющего векторные операции над данными в регистровом файле. На схеме особо выделено также функциональное устройство чтения/записи памяти, связанное с кэш-памятью данных 1-го уровня и со всеми регистровыми файлами. Оно выполняет все операции с памятью: копирование данных из памяти в регистр и из регистра в память. Кэш-память команд 1-го уровня и кэш-память данных 1-го уровня связаны с общей кэшпамятью 2-го уровня, которая, в свою очередь, связана с более высокими уровнями иерархии памяти (кэш-память 3-го уровня или оперативная память). Представленный пример отражает принцип функционирования, подходящий для многих современных суперскалярных процессоров. Следует, однако, помнить, что детали микроархитектуры каждого конкретного процессора могут различаться. В приведенном примере многие важные компоненты процессора не отражены, например, функциональное устройство выполнения переходов и блок предсказания переходов, разрешающий зависимости по управлению, блок архитектурных регистров для сохранения текущего состояния процессора, разделение функциональных устройств по типу операций. Download 101.4 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling