Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В компьютерной технике , вне порядка исполнения (или более формально динамического исполнение ) является парадигма используется в большинстве высокоэффективных центральных процессоров использовать циклов команд , которые могли бы быть потрачены впустую. В этой парадигме процессор выполняет инструкции в порядке, определяемом доступностью входных данных и исполнительных модулей [1], а не их исходным порядком в программе. [2]При этом процессор может избежать простоя в ожидании завершения предыдущей инструкции и может тем временем обработать следующие инструкции, которые могут выполняться немедленно и независимо. [3]

История [ править ]

Выполнение вне очереди - это ограниченная форма вычисления потока данных , которая была основной областью исследований в области компьютерной архитектуры в 1970-х и начале 1980-х годов.

Важное научное исследование по этой теме было проведено Йельским Паттом и его тренажером HPSm . [4] Статья Джеймса Смита и А.Р. Плешкуна, опубликованная в 1985 году, завершила схему, описав, как точное поведение исключений может поддерживаться в вышедших из строя машинах.

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

Примерно через три года в IBM System / 360 Model 91 (1966) был представлен алгоритм Томасуло , который делает возможным полное выполнение вне очереди . В 1990 году IBM представила первый микропроцессор с нарушением порядка, POWER1 , хотя выполнение с нарушением порядка ограничено инструкциями с плавающей запятой (как и в случае с Model 91 [5] ).

В 1990-х годах выполнение вне очереди стало более распространенным и было представлено в IBM / Motorola PowerPC 601 (1993), Fujitsu / HAL SPARC64 (1995), Intel Pentium Pro (1995), MIPS R10000 (1996), HP PA. -8000 (1996 г.), AMD K5 (1996 г.) и DEC Alpha 21264 (1996 г.). Заметные исключения из этой тенденции включают Sun UltraSPARC , HP / Intel Itanium , Intel Atom до Silvermont Architecture [6] и IBM МОЩНОСТЬ 6 .

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

Основная концепция [ править ]

Обработчики в порядке [ править ]

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

  1. Получение инструкций .
  2. Если входные операнды доступны (например, в регистрах процессора), инструкция отправляется в соответствующий функциональный блок . Если один или несколько операндов недоступны в течение текущего тактового цикла (обычно из-за того, что они извлекаются из памяти ), процессор останавливается, пока они не станут доступными.
  3. Инструкция выполняется соответствующим функциональным блоком.
  4. Функциональный блок записывает результаты обратно в регистровый файл .

Вышедшие из строя процессоры [ править ]

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

  1. Получение инструкций.
  2. Отправка инструкций в очередь инструкций (также называемую буфером инструкций или станциями резервирования ).
  3. Инструкция ожидает в очереди, пока не станут доступны ее входные операнды. Инструкция может покинуть очередь до более старых инструкций.
  4. Инструкция выдается соответствующему функциональному блоку и выполняется этим блоком.
  5. Результаты поставлены в очередь.
  6. Только после того, как все более старые инструкции записывают свои результаты обратно в регистровый файл, этот результат записывается обратно в регистровый файл. Это называется этапом выпуска или выхода на пенсию.

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

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

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

Разделение отправки и выпуска позволяет выпускать вне очереди [ править ]

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

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

Буфер предназначен для разделения доступа к памяти и выполнения функций в компьютерной программе, а также для достижения высокой производительности за счет использования мелкозернистого параллелизма между ними. [7] Таким образом, он эффективно скрывает все задержки памяти с точки зрения процессора.

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

Развязанные архитектуры обычно считаются бесполезными для вычислений общего назначения, поскольку они плохо обрабатывают код с интенсивным управлением. [8] Код с интенсивным управлением включает такие вещи, как вложенные ветки, которые часто встречаются в ядрах операционных систем . Разделенные архитектуры играют важную роль в планировании в архитектурах с очень длинным командным словом (VLIW). [9]

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

Разделение выполнения и обратной записи позволяет перезапустить программу [ править ]

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

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

Выбор микроархитектуры [ править ]

  • Отправляются ли инструкции в централизованную очередь или в несколько распределенных очередей?
Процессоры IBM PowerPC используют очереди, которые распределены между различными функциональными блоками, в то время как другие вышедшие из строя процессоры используют централизованную очередь. IBM использует термин станции резервирования для своих распределенных очередей.
  • Существует ли реальная очередь результатов или результаты записываются непосредственно в регистровый файл? Для последнего функция организации очереди обрабатывается картами регистров, которые содержат информацию о переименовании регистров для каждой выполняющейся инструкции.
Ранние вышедшие из строя процессоры Intel использовали очередь результатов, называемую буфером переупорядочения , в то время как большинство более поздних вышедших из строя процессоров использовали карты регистров.
Точнее: микропроцессоры семейства Intel P6 имеют как буфер переупорядочения (ROB), так и таблицу псевдонимов регистров (RAT). ROB был мотивирован в основном восстановлением неверного предсказания ветвления.
Семейство Intel P6 было одним из первых микропроцессоров OoOE, но было вытеснено архитектурой NetBurst . Спустя годы Netburst оказался тупиком из-за своего длинного конвейера, предполагавшего возможность гораздо более высоких рабочих частот. Материалы не смогли соответствовать амбициозным целям разработки часов из-за проблем с температурой, и более поздние разработки, основанные на NetBurst, а именно Tejas и Jayhawk, были отменены. Intel вернулась к дизайну P6 как основе микроархитектур Core и Nehalem . Последующие Sandy Bridge , Ivy Bridge и HaswellМикроархитектуры являются отходом от методов переупорядочения, используемых в P6, и используют методы переупорядочения от EV6 и P4, но с несколько более коротким конвейером. [10] [11]

См. Также [ править ]

  • Архитектура потока данных
  • Забор памяти
  • Система воспроизведения
  • Табло
  • Буфер для стеллажей
  • Алгоритм Томасуло

Ссылки [ править ]

  1. ^ Кукунас, Джим (2015). Мощность и производительность: анализ и оптимизация программного обеспечения . Морган Кауфман. п. 37. ISBN 9780128008140.
  2. ^ "Выполнение вне очереди" (PDF) . cs.washington.edu. 2006 . Проверено 17 января 2014 . не ждите выполнения предыдущих инструкций, если эта инструкция от них не зависит
  3. ^ "Выполнение вне очереди" . pcguide.com . Проверено 17 января 2014 . Эта гибкость повышает производительность, поскольку позволяет выполнять работу с меньшим временем ожидания.
  4. ^ Hwu, W .; Патт, Йель Н. (1986). HPSm - высокопроизводительная архитектура с ограниченным потоком данных с минимальной функциональностью . ISCA '86 Труды 13-го ежегодного международного симпозиума по компьютерной архитектуре . ACM . С. 297–306. ISBN 978-0-8186-0719-6. Проверено 6 декабря 2013 .
  5. ^ Tomasulo, Роберт Марко (1967), "Эффективный алгоритм Эксплуатируя Несколько арифметических устройств" (PDF) , IBM Журнал исследований и развития , 11 (1): 25-33, CiteSeerX 10.1.1.639.7540 , DOI : 10,1147 / rd.111.0025 , S2CID 8445049 , архивировано из оригинала (PDF) 12.06.2018   
  6. ^ Ананд Лал Шимпи (2013-05-06). «Раскрыта архитектура Intel Silvermont: серьезно относимся к мобильным устройствам» . AnandTech .
  7. ^ Смит, JE (1984). «Несвязанный доступ / выполнение компьютерных архитектур». ACM-транзакции в компьютерных системах . 2 (4): 289–308. CiteSeerX 10.1.1.127.4475 . DOI : 10.1145 / 357401.357403 . S2CID 13903321 .  
  8. ^ Куриан, Л .; Хулина, PT; Кораор, LD (1994). «Эффекты задержки памяти в несвязанных архитектурах» (PDF) . Транзакции IEEE на компьютерах . 43 (10): 1129–1139. DOI : 10.1109 / 12.324539 . S2CID 6913858 . Архивировано из оригинального (PDF) на 2018-06-12.  
  9. ^ Dorojevets, MN; Оклобджия, В. (1995). «Многопоточная несвязанная архитектура» . Международный журнал высокоскоростных вычислений . 7 (3): 465–480. DOI : 10.1142 / S0129053395000257 .
  10. Кантер, Дэвид (25 сентября 2010). "Микроархитектура Intel Sandy Bridge" .
  11. ^ "Интерфейс Haswell - Анализ архитектуры Intel Haswell: создание нового ПК и нового Intel" .

Дальнейшее чтение [ править ]

  • Смит, Джеймс Э .; Плешкун, АР (июнь 1985 г.). «Реализация точных прерываний в конвейерных процессорах». Новости компьютерной архитектуры ACM SIGARCH . 13 (3): 36–44. DOI : 10.1145 / 327070.327125 .
  • Смит, Джеймс Э .; Плешкун, АР (май 1988 г.). «Реализация точных прерываний в конвейерных процессорах». Транзакции IEEE на компьютерах . 37 (5): 562–573. DOI : 10.1109 / 12.4607 .
  • Смит, Джеймс Э .; Плешкун, АР (1998). «Реализация точных прерываний в конвейерных процессорах» . 25 лет международным симпозиумам по компьютерной архитектуре (избранные доклады) - ISCA '98 . С.  291–299 . DOI : 10.1145 / 285930.285988 . ISBN 1581130589.