Архитектура процессора, ориентированная на задержку - Latency oriented processor architecture

Архитектура процессора, ориентированная на задержку это микроархитектура из микропроцессор предназначен для обслуживания последовательных вычислений нить с малой задержкой. Это типично для большинства Центральные процессоры (CPU) разрабатывается с 1970-х годов. Эти архитектуры, как правило, нацелены на выполнение как можно большего числа инструкций, принадлежащих одному последовательному потоку, в заданное окно времени; однако время для полного выполнения одной инструкции от этапов выборки до этапов вывода из эксплуатации может варьироваться от нескольких циклов до даже нескольких сотен циклов в некоторых случаях.[1][страница нужна ] Архитектуры процессоров, ориентированных на задержку, противоположны процессорам, ориентированным на пропускную способность, которые больше озабочены общим пропускная способность системы, а не услуги задержки для всех отдельных потоков, над которыми они работают.[2][страница нужна ][3]

Таксономия Флинна

Архитектуры процессоров, ориентированных на задержку, обычно попадают в категорию SISD классификация по таксономии Флинна. Это означает, что типичной характеристикой архитектур процессоров, ориентированных на задержку, является выполнение одной задачи, работающей с одним потоком данных. Немного SIMD стиль мультимедийных расширений популярных наборов инструкций, таких как Intel MMX и SSE инструкции также должны подпадать под категорию архитектур процессора, ориентированных на задержку;[2] потому что, хотя они работают с большим набором данных, их основной целью также является сокращение общей задержки для всей текущей задачи.

Методы реализации

Существует множество архитектурных методов, используемых для уменьшения общей задержки для одной вычислительной задачи. Обычно это связано с добавлением дополнительного оборудования в трубопровод для обслуживания инструкций, как только они получены из объем памяти или же кеш инструкций. Примечательной особенностью этих архитектур является то, что значительная часть микросхемы используется в других частях, кроме Единицы исполнения самих себя. Это потому, что цель состоит в том, чтобы сократить время, необходимое для выполнения «типичной» задачи в вычислительной среде. Типичная вычислительная задача - это последовательный набор инструкций, который сильно зависит от результатов, полученных предыдущими инструкциями той же задачи. Следовательно, имеет смысл, что микропроцессор будет тратить свое время на выполнение множества других задач, помимо вычислений, требуемых самими отдельными инструкциями. Если опасности обнаруженные во время вычислений не разрешаются быстро, тогда увеличивается задержка для потока. Это связано с тем, что опасности останавливают выполнение последующих инструкций и, в зависимости от реализации конвейера, могут либо полностью остановить процесс до тех пор, пока зависимость не будет разрешена, либо привести к лавине новых опасностей в будущих инструкциях; еще больше увеличивая время выполнения потока.[4][5]

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

Архитектура набора команд (ISA)

В большинстве современных архитектур используются более короткие и простые инструкции, такие как загрузка / сохранение архитектуры, которые помогают оптимизировать конвейер команд для более быстрого выполнения. Инструкции обычно имеют одинаковый размер, что также помогает оптимизировать логику выборки инструкций. Такой ISA называется RISC архитектура.[6]

Конвейерная обработка инструкций

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

Регистрация-переименование

Этот метод используется для эффективного увеличения общего размера файла регистров, чем тот, который указан в ISA для программистов, и для устранения ложных зависимостей. Предположим, у нас есть две последовательные инструкции, которые ссылаются на один и тот же регистр. Первый читает регистр, а второй записывает в него. Чтобы поддерживать правильность программы, важно убедиться, что вторая инструкция не выполняет запись в регистр, прежде чем первая сможет прочитать свое исходное значение. Это пример Запись после чтения (WAR) зависимость. Чтобы устранить эту зависимость, конвейер будет внутренне переименовывать инструкцию, назначая ее внутреннему регистру. Таким образом, инструкция может выполняться, и полученные ею результаты теперь будут немедленно доступны для всех последующих инструкций, даже если фактический регистр назначения, предназначенный программой, будет записан позже. Точно так же, если обе инструкции просто предназначены для записи в один и тот же регистр Запись после записи (WAW), конвейер переименует их и обеспечит доступность их результатов для будущих инструкций без необходимости сериализации их выполнения. [b]

Организация памяти

Различные уровни памяти, включая тайники, основная память и энергонезависимая память как жесткие диски (где находятся программные инструкции и данные), предназначены для использования пространственная местность и временная местность уменьшить общую время доступа к памяти. Чем меньше времени процессор тратит на ожидание получения данных из памяти, тем меньшее количество инструкций потребляет ресурсы конвейера, просто бездействуя и не выполняя никакой полезной работы. Конвейер инструкций будет полностью остановлен, если все его внутренние буферы (например, станции бронирования ) заполнены в соответствии с их вместимостью. Следовательно, если инструкции потребляют меньше циклов простоя, находясь внутри конвейера, есть большая вероятность использования Параллелизм на уровне инструкций (ILP), поскольку логика выборки может извлекать большее количество инструкций из кеша / памяти в единицу времени. [c]

Спекулятивное исполнение

Основной причиной остановок конвейера являются зависимости потока управления, то есть когда результат инструкции перехода заранее неизвестен (что обычно бывает). Сегодня многие архитектуры используют компоненты предсказателя перехода, чтобы угадать результат перехода. Выполнение продолжается по прогнозируемому пути для программы, но инструкции помечаются как предположительные. Если предположение оказывается верным, то инструкции могут успешно завершиться и обновить свои результаты обратно для регистрации файла / памяти. Если предположение было неверным, то все предполагаемые инструкции удаляются из конвейера, и выполнение (повторное) запускается по фактическому правильному пути для программы. Поддерживая высокую точность прогнозирования, конвейер может значительно увеличить пропускную способность для исполняемого потока. [d]

Внеочередное исполнение

Не все инструкции в потоке занимают одинаковое время для выполнения. Суперскалярные конвейеры обычно имеют несколько возможных путей для инструкций в зависимости от текущего состояния и самого типа инструкции. Следовательно, чтобы увеличить инструкций за цикл (IPC) конвейер позволяет выполнять инструкции в неупорядоченном порядке, чтобы последующие инструкции в программе не останавливались из-за инструкции, выполнение которой займет больше времени. Все инструкции регистрируются в буфере переупорядочения, когда они извлекаются конвейером и им разрешается удалиться (то есть записать свои результаты) в порядке исходной программы, чтобы сохранить правильность. [e]

Суперскалярное исполнение

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

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

Напротив, пропускная способность Ориентированная архитектура процессора предназначена для максимального увеличения объема «полезной работы», выполняемой за значительный промежуток времени. Под полезной работой подразумеваются большие вычисления на значительном объеме данных. Они делают это за счет распараллеливания рабочей нагрузки, так что многие вычисления могут выполняться одновременно. Расчеты могут относиться к одной задаче или ограниченному количеству нескольких задач. Общее время, необходимое для выполнения 1 выполнения, значительно больше, чем у архитектуры процессора, ориентированной на задержку, однако общее время выполнения большого набора вычислений значительно сокращается. Задержкой часто приносят в жертву, чтобы добиться более высокой пропускной способности за цикл.[3] В результате процессор, ориентированный на задержку, может выполнить одно вычисление значительно быстрее, чем процессор, ориентированный на пропускную способность; однако процессор, ориентированный на пропускную способность, может частично выполнить сотни таких вычислений к тому времени, когда процессор, ориентированный на задержку, завершит 1 вычисление.[2]

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

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

Примечания

  1. ^ Компьютерная организация и дизайн: аппаратно-программный интерфейс, Глава 4[5]
  2. ^ Компьютерная архитектура: количественный подход, Раздел 3.1[4]
  3. ^ Организация и дизайн компьютера: аппаратно-программный интерфейс, Глава 5[5]
  4. ^ Компьютерная архитектура: количественный подход, Раздел 3.3[4]
  5. ^ Компьютерная архитектура: количественный подход, Разделы 3.4, 3.5[4]
  6. ^ Компьютерная архитектура: количественный подход, Разделы 3.6-3.8[4]

Рекомендации

  1. ^ Джон Пол Шен; Микко Х. Липасти (2013). Современный дизайн процессора. McGraw-Hill Professional. ISBN  978-1478607830.
  2. ^ а б c Ян Солихин (2016). Основы параллельной многоядерной архитектуры. Чепмен и Холл / CRC Вычислительная наука. ISBN  978-1482211184.
  3. ^ а б c Майкл Гарланд; Дэвид Б. Кирк (2010). «Понимание архитектур, ориентированных на пропускную способность». Коммуникации ACM. 53 (11): 58–66. Дои:10.1145/1839676.1839694.
  4. ^ а б c d е Джон Л. Хеннесси; Дэвид А. Паттерсон (2013). Компьютерная архитектура: количественный подход (Пятое изд.). Издательство Морган Кауфманн. ISBN  978-0123838728.
  5. ^ а б c Дэвид А. Паттерсон; Джон Л. Хеннесси (2013). Компьютерная организация и дизайн: аппаратно-программный интерфейс (Пятое изд.). Издательство Морган Кауфманн. ISBN  9780124078864.
  6. ^ Бхандаркар, Дилип; Кларк, Дуглас В. (1 января 1991 г.). Производительность от архитектуры: сравнение RISC и CISC с аналогичной организацией оборудования. Труды Четвертой Международной конференции по архитектурной поддержке языков программирования и операционных систем. ACM. С. 310–319. Дои:10.1145/106972.107003.