Процесс выполнения инструкции и реализация в gem5?

Я изучаю процесс работы программы на gem5. И почитайте несколько книг. Но я все еще не понимаю, в каких частях выполнения программы. Правильно ли мое понимание ниже?

  1. Сначала компьютерная инструкция помещается в ICache, а ЦП компьютера контролирует выборку инструкций и помещает полученные инструкции в очередь инструкций. Затем возьмите инструкцию из очереди инструкций и декодируйте инструкцию в микрооперации. Эти микрооперации будут отправлены в буфер переупорядочения. Если микрооперация в буфере переупорядочения является загрузкой / сохранением, она будет отправлена ​​в очередь загрузки / сохранения. Если это такая операция, как сложение и вычитание, она будет отправлена ​​непосредственно в исполнительный модуль. В этом процессе каждый исполнительный блок имеет зарезервированную станцию ​​для переименования регистров. Когда микрооперация будет завершена, она вернется в буфер переупорядочения. Когда микрооперация достигает заголовка буфера переупорядочения, она может быть записана обратно в кэш или память вне ЦП.
  2. Очередь загрузки будет извлекать данные из кеша. Кэш обычно представляет собой индекс виртуального адреса и тег физического адреса. Операция загрузки будет происходить из кэша параллельно и выполнять преобразование виртуальных адресов. Если кэш отсутствует, операция загрузки будет отправлена ​​в MSHR. MSHR отправляет полученные данные в память. Если данные находятся в памяти, данные сначала загружаются в кэш, а затем полученные данные возвращаются в MSHR, а затем возвращаются в очередь загрузки. Если данных нет в памяти, операционная система выдаст ошибку страницы, а затем данные будут извлечены с жесткого диска в память, извлечены из кэша, а затем возвращены в MSHR, а затем возвращены в очередь загрузки.

вопросов:

  1. Относится ли микрооперация к таким операциям, как mov и add при декодировании?
  2. Относится ли проблема с инструкциями к микрооперациям, отправленным в буфер переупорядочения или отправленным из буфера переупорядочения в исполнительный блок? После того, как инструкция декодирована, отправляется ли она непосредственно в буфер переупорядочения?
  3. Относятся ли отправка и выдача к одному и тому же процессу?
  4. Я также видел некоторые очереди, такие как очереди чисел с плавающей запятой или другие очереди. Относится ли это к месту, где инструкции временно хранятся из-за недостаточного количества исполнительных блоков, когда инструкции отправляются из буфера переупорядочения в исполнительный блок? Эти очереди относятся к тому же самому объекту, что и станция бронирования в алгоритме Томасуло?

введите описание изображения здесь


person c yj    schedule 17.10.2020    source источник
comment
Я предполагаю, что вы говорите о x86, учитывая упоминание uops (micro-ops). Прочтите микроархитектурный PDF-файл Агнера Фога, особенно раздел, посвященный Intel Core 2 или Nehalem, больше всего похож на то, что вы описываете (без кеша uop, но с очередью декодированных инструкций для буферизации между декодированием и переименованием / выделением в серверную часть). для этих реальных процессоров нужно много заботиться о внешнем декодировании, но вы можете пропустить этот раздел, если детали не соответствуют механизму внешнего декодирования, на который вы настраиваетесь. Также другие ссылки в stackoverflow.com/tags/x86/info, особенно. Записи Дэвида Кантера.   -  person Peter Cordes    schedule 17.10.2020
comment
Терминология: в терминологии Intel проблема = перемещение uop из внешнего интерфейса в вышедший из строя внутренний сервер, в ROB и RS (станцию ​​резервирования, также известную как планировщик, которую вы вызываете в очередь. Так что, возможно, K8 / K10 будет лучшей моделью, если у вас есть отдельные планировщики FP и целочисленные, где мопы ждут, пока их входные данные будут готовы, и для свободного порта выполнения; Intel использует унифицированный планировщик (до Skylake?). Dispatch = отправка uop из планировщик в исполнительный блок. В учебниках по компьютерной архитектуре, отличным от x86, часто используется противоположная терминология. Они никогда не бывают синонимами.   -  person Peter Cordes    schedule 17.10.2020
comment
Отправлена ​​ли инструкция из буфера переупорядочивания на станцию ​​резервирования? Можно ли отправить его прямо на станцию ​​бронирования с передней стороны? Есть ли планировщик после декодирования и после буфера переупорядочения? Планировщик после буфера переупорядочения относится к станции резервирования (то есть к очереди чисел с плавающей запятой и т. Д.?). После вопроса я добавил картинку из верхнего документа встречи. Но на рисунке видно, что очередь выделяется после декодирования, почему бы не выделить очередь, когда буфер переупорядочения распределяет инструкции?   -  person c yj    schedule 17.10.2020
comment
Я понимаю, что буфер переупорядочения отправляет инструкции на станцию ​​резервирования (то есть очереди различных исполнительных модулей), а затем эти очереди отправляют инструкции исполнительным модулям. Но это кажется несовместимым с этим изображением.   -  person c yj    schedule 17.10.2020
comment
Отправляется ли инструкция из буфера переупорядочения на станцию ​​резервирования? - Нет, она отправляется обоим на этапе выдачи, за исключением таких инструкций, как nop или xor eax,eax, которые не нуждаются в каких-либо внутренних операциях. В этом случае запись ROB может быть помечена как уже выполненная, готовая к удалению изначально, без необходимости ждать сигнала завершения для соответствующей записи RS. Я всегда находил диаграммы, показывающие, что исполнительные блоки ROB - ›RS -› вводят в заблуждение, потому что я не думаю, что оборудование работает именно так, и упы должны оставаться в ROB от проблемы до выхода на пенсию.   -  person Peter Cordes    schedule 17.10.2020
comment
Вы имеете в виду, что, подобно nop или xor eax, команды eax отправляются напрямую от внешнего интерфейса к станции бронирования? Он помечен как уже выполненный в буфере переупорядочения. Эти микрооперации, подобные add mul, сначала отправляются в буфер переупорядочения, а затем отправляются из буфера переупорядочения на станцию ​​резервирования. Затем станция резервирования отправляется в исполнительную единицу?   -  person c yj    schedule 17.10.2020
comment
Позвольте нам продолжить это обсуждение в чате.   -  person c yj    schedule 17.10.2020
comment
Нет, nop и исключенные uops (без исполнительного модуля) переходят в ROB без записей RS, потому что на самом деле ничего не нужно выполнять. Все входит в ROB, что позволяет избавиться от неверных предположений (например, ветвей или исключений). См. Может ли MOV для x86 действительно быть бесплатным? Почему я вообще не могу воспроизвести это? и Как лучше всего обнулить регистр в сборке x86: xor, mov или и?. Упс, которым действительно нужна проблема с исполнительным блоком, в ROB и RS. Интерфейс не может выдать их, если они заполнены   -  person Peter Cordes    schedule 17.10.2020
comment
А если серьезно, если вы не читали объяснение PPro и Nehalem в руководстве Agner Fog по микроархитектуре, сделайте это сейчас. Для сравнения realworldtech.com/barcelona/5 описывает отдельные планировщики для каждого порта, который AMD K10 использует. Он описывает вещи в терминах инструкций, исходящих от ROB планировщикам, что опять же может быть неточным или бесполезной ментальной моделью.   -  person Peter Cordes    schedule 17.10.2020
comment
Кстати, эта диаграмма (включая кеш uop, дополнительный хранилище AGU на собственном порту и 4 порта ALU) очень похожа на Haswell / Skylake. realworldtech.com/sandy-bridge. Я предполагаю, что этот процессор GEM специально разработан для модели Haswell / Skylake.   -  person Peter Cordes    schedule 19.10.2020