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

редактировать

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

Содержание
  • 1 Таксономия Флинна
  • 2 Методы реализации
    • 2.1 Архитектура набора команд (ISA)
    • 2.2 Конвейерная обработка команд
    • 2.3 Переименование регистров
    • 2.4 Организация памяти
    • 2.5 Спекулятивная выполнение
    • 2.6 Выполнение вне очереди
    • 2.7 Суперскалярное выполнение
  • 3 В отличие от архитектуры процессоров, ориентированных на пропускную способность
  • 4 Примечания
  • 5 Ссылки
Таксономия Флинна

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

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

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

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

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

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

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

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

Переименование регистров

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

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

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

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

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

Выполнение вне очереди

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

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

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

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

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

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

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

Примечания
Ссылки
Последняя правка сделана 2021-05-26 14:20:55
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте