Сколько конвейеров у суперскалярного процессора

Обновлено: 06.07.2024

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

  • Архитектура набора инструкций обеспечивает контракт между программным обеспечением и оборудованием, то есть между программой и машиной.
  • ISA представляет собой абстракцию между аппаратной реализацией и программами, которые можно писать с использованием ISA.
  • ISA обеспечивает переносимость.
  • Для разработчиков оборудования ISA – это спецификация.
  • Набор инструкций, определенный ISA, представляет собой язык ассемблера.
  • Динамико-статический интерфейс: определяется как разделение между элементами, которые могут выполняться статически (во время компиляции), и элементами, которые могут выполняться динамически (во время выполнения).

Производительность процессора измеряется как CPI – количество циклов на инструкцию. Существуют следующие методы уменьшения количества инструкций

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

Этапы выполнения в скалярных конвейерных процессорах

procsimu-dlx-pipeline

Этапы выборки, декодирования инструкций, выполнения, памяти и обратной записи в процессорах скалярных конвейеров.

CRAY-1 является примером суперконвейерного процессора. Суперскалярные машины с параллелизмом на уровне инструкций. Машины с набором инструкций с очень длинными словами.

Этапы в скалярных конвейерных процессорах

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

      640px-MIPS_Architecture_(Pipelined).svg

      Типы инструкций

      1. Арифметические операции
      2. Загрузка/сохранение — операции перемещения данных между памятью, кэшем и регистрами.
      3. Инструкции по ветке

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

      Это пример конструкции суперскалярного процессора. Трубопровод не только глубокий, но и параллельный.

      Динамические конвейеры

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

        Буферы в суперскалярном дизайне

        Пример новейшего микропроцессора Intel x86

        Каждое ядро ​​имеет следующее количество аппаратных единиц:

        • Буфер переупорядочивания
          • ROB используется для переименования регистров и изменения порядка результатов выполнения не по порядку.
          • 192 записи
          • 60 записей
          • 168 целочисленных регистров
          • 168
          • 56 записей.
          • 1536 мкопераций, 8 каналов, размер линии 6 мкроопераций, на ядро
          • 32 КБ, 8 ассоциативных наборов, 64 набора
          • 64-байтовая строка кэша
          • 32 байта для чтения и записи за такт
          • 32 КБ, 8 ассоциативных наборов, 64 набора
          • 64-байтовая строка кэша
          • 256 КБ, 8 ассоциативных наборов, 512 наборов
          • 64-байтовая строка кэша
          • 45 МБ (кольцо общего доступа)
          • 16 байт за такт.

          Кэш трассировки

          После выборки инструкций они декодируются и делятся на микрооперации. Инструкции сохраняются в кэше трассировки после декодирования в микрооперации. Код операции имеет длину от 1 до 15.

          Вот хорошее видео о взломе набора инструкций ISA.

          Методы прогнозирования ветвей

          Правильное прогнозирование ветвлений важно для производительности суперскалярного процессора. Прогноз ветвления в значительной степени предсказуем из-за различных методов, описанных ниже:

          • Предположение о целевой ветке
            • Полностью ассоциативное имя кэша Branch Target buffer используется для хранения целевого адреса последней выполненной ветки. Для следующего поиска используется кеш.

            • BPU с динамическим прогнозированием переходов –
              • Спекулятивное исполнение через две ветки
              • Полностью ассоциативный кэш целевых адресов ветвей (BTAC) с 64 записями
              • Таблица истории ветвлений (BHT) с 512 записями, по два бита на запись для четырех уровней предсказания – не выполнено, строго не выполнено, выполнено, строго выполнено.
              • Двухуровневый предиктор переходов, также называемый предиктором переходов на основе корреляции, использует двумерную таблицу счетчиков, также называемую «Таблица истории шаблонов». Его ввели Йе и Патт, которые из-за того, что результат ветки зависит не только от адреса ветки, но и от результата других недавних веток (межотраслевая корреляция) и от более длинной истории самой ветки (внутри корреляция ветвей).
                • Глобальная история переходов — это сдвиговый регистр, в котором хранятся результаты любого перехода. Для взятой ветки сохраняется «единица», а для неиспользованной — «ноль». Регистр смещается при сохранении самого нового значения. Чтобы обратиться к таблице, учитываются результаты n последних ветвей.
                • Таблица локальной истории — это таблица регистров сдвига, своего рода глобальная история ветвей. Однако каждый сдвиговый регистр относится к последним результатам одной отдельной ветви. Поскольку доступ к этой локальной таблице истории осуществляется как к одноуровневой таблице предсказания ветвлений, не гарантируется отсутствие перекрытия ветвей, и в одном сдвиговом регистре может храниться информация о разных ветвях.
                • Поскольку таблица имеет только два измерения, необходимо выбрать два из трех источников информации для доступа к строкам и столбцам. Другой метод — объединить два источника в один, о чем мы поговорим позже.
                • В целом можно констатировать, что двухуровневый предиктор ветвлений более точен, чем одноуровневый, но это преимущество также связано с недостатком более дорогостоящей реализации и тем фактом, что так называемая функция прогрева Фаза, т. е. время, в течение которого записи таблицы содержат пригодные для использования значения, намного длиннее.

                Статическое прогнозирование переходов

                Динамический прогноз перехода

                • Динамический прогноз ветвления дает прогноз с вероятностью от 80% до 95%.
                • Прошлые результаты используются в качестве входных данных для прогнозирования ветвлений.
                  • Предсказатель ветвления на одном уровне
                  • Различные функции предиктора
                  • Двухуровневый предсказатель ветвления
                  • Методы хэширования
                  • Трудности
                  • Гибридный предсказатель ветвлений
                  • Многокомпонентный гибридный предсказатель ветвлений
                  • Классификация филиалов
                  • Реализации прогнозирования отрасли

                  Зарегистрировать переименование

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

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

                  Ars представляет часть нашей серии статей «Понимание микропроцессора»: …

                  Джон Стоукс – 17 декабря 2002 г., 19:00 UTC

                  Некоторые заключительные замечания по конвейерной обработке

                  Конвейерная обработка, по сути, позволяет ЦП обрабатывать несколько инструкций одновременно. Четырехэтапный конвейер, подобный описанному выше, дает процессору «окно» из четырех инструкций. Это окно скользит по потоку кода, перемещаясь вперед на одну инструкцию за каждый такт, и позволяет процессору «просматривать» и работать со всеми четырьмя инструкциями в своем окне. Таким образом, в отличие от простых процессоров из предыдущей статьи, конвейерные процессоры «удерживают» и обрабатывают более одной инструкции.По разным причинам существуют некоторые части потока кода, для которых такое окно с четырьмя инструкциями просто не работает. Эти шероховатости в потоке кодов усложняют работу архитектора процессора. В следующей статье я расскажу об этих сложностях и о том, как архитектор может их преодолеть.

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

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

                  < td width="45%" rowspan="2">Завершить/Записать
                  G4 G4e
                  Передняя часть 1 Выборка 1 Выборка1
                  2 Fetch2
                  2 Декодировать/Отправить 3 Декодировать/ Отправка
                  4 Проблема
                  Внутренняя часть 3 Выполнить 5 Выполнить
                  4 6 Завершить
                  7 Запись

                  Как видно из приведенной выше таблицы, более продвинутый G4e разбивает четырехэтапный G4 на два отдельных, более коротких этапа. Точно так же этапы декодирования и записи также разбиты на более мелкие этапы. (Мы поговорим о том, что означают термины «выдача», «завершение» и «отправка» в следующей статье.)

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

                  То, что этап выполнения (или, может быть, нам следует использовать более широкий термин, этап выполнения) на самом деле состоит из нескольких этапов конвейера, не должно вас шокировать. Как в этой статье, так и в предыдущей мы видели, что на этом этапе происходит довольно много всего. И чем сложнее выполняемая инструкция, тем больше шагов в ее выполнении. Целочисленные инструкции, такие как наши ADD A, B, обычно очень просты и могут быть выполнены за минимальное количество шагов. Более сложные инструкции, такие как деление с плавающей запятой, включают в себя несколько этапов сложения и битового сдвига для получения результата. (Помните, единственная математика, которую на самом деле делают компьютеры, — это сложение и сдвиг битов.) Таким образом, количество стадий выполнения в конвейере устройства с плавающей запятой будет больше, чем количество стадий выполнения в конвейере обычного АЛУ.< /p>

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

                  В предыдущей статье мы рассмотрели процессор так, как его видит программист. Файлы регистров, слово состояния процессора, АЛУ и другие части модели программирования предназначены для того, чтобы программист мог манипулировать процессором и заставить его выполнять полезную работу. Другими словами, модель программирования по существу представляет собой пользовательский интерфейс для ЦП.

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

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

                  С появлением в 1971 году процессора Intel 4004 все изменилось. 4004 был первым в мире микропроцессором на чипе. Разработанный как мозг калькулятора, производимого ныне несуществующей компанией Busicom, 4004 имел шестнадцать 4-битных регистров, АЛУ, логику декодирования и управления, и все это было упаковано в один чип из 2300 транзисторов. 4004 был подвигом для своего времени и проложил путь к революции ПК. Однако только четыре года спустя Intel выпустила 8080, и мир увидел первый настоящий ЦП общего назначения. (Хорошую историю развития микропроцессора см. в этой статье.)

                  В течение десятилетий после 4004 плотность транзисторов росла ошеломляющими темпами. По мере того, как у разработчиков процессоров было все больше и больше транзисторов для работы при разработке новых чипов, они начали придумывать новые способы использования этих транзисторов для повышения производительности вычислений в коде приложений. Одна из первых вещей, которая пришла в голову разработчикам, заключалась в том, что они могут разместить более одного ALU на чипе, и оба ALU будут работать параллельно для более быстрой обработки кода. Поскольку эти схемы могли выполнять более одной скалярной (или целочисленной, для наших целей) операции одновременно, их назвали суперскалярными компьютерами. RS6000 от IBM был выпущен в 1990 году и стал первым в мире суперскалярным процессором. Затем в 1993 году компания Intel выпустила процессор Pentium, который с двумя ALU перенес мир x86 в эпоху суперскаляров.

                  Получите полный доступ к Алгоритмам и параллельным вычислениям и более чем 60 тысячам других игр с бесплатной 10-дневной пробной версией O'Reilly.

                  Есть также прямые онлайн-мероприятия, интерактивный контент, материалы для подготовки к сертификации и многое другое.

                  2.7 ПАРАЛЛЕЛИЗМ НА УРОВНЕ ИНСТРУКЦИЙ (ILP) И СУПЕРСКАЛЯРНЫЕ ПРОЦЕССОРЫ

                  Суперскалярный процессор способен одновременно выполнять несколько инструкций из независимых конвейеров инструкций [18]. Суперскалярные процессоры имеют динамический планировщик, который проверяет инструкции в кэше/памяти инструкций и решает, какие из них должны быть выданы каждому конвейеру инструкций. Динамическое планирование позволяет выдавать и выполнять инструкции не по порядку. На рис. 2.17 показана общая организация трехпроцессорного суперскалярного процессора, в котором процессор содержит три конвейера команд, работающих с тремя независимыми модулями тракта данных. Суперскалярный компьютер имеет несколько конвейеров инструкций и модулей пути данных, которые могут работать параллельно для выполнения инструкций, выдаваемых им ЦП. Используя этот метод, скорость выполнения инструкций будет выше, чем тактовая частота. Для трехкомпонентной суперскалярной архитектуры с конвейером команд за такт может выполняться до трех инструкций.

                  Рисунок 2.17. Общая организация трехпроцессорного суперскалярного процессора.

                  c02f017

                  Конвейер команд для двустороннего суперскалярного процессора, показанный на рис. 2.18, который является модификацией рис. 2.14, указывает на тот факт, что теперь у нас есть два конвейера команд.

                  Рисунок 2.18. Конвейеры инструкций для двустороннего суперскалярного процессора.

                  Сейчас стоит объяснить разницу между VLIW и .

                  Познакомьтесь с Алгоритмами и параллельными вычислениями прямо сейчас с онлайн-обучением O’Reilly.

                  Члены O’Reilly проходят онлайн-обучение в режиме реального времени, а также получают книги, видео и цифровой контент от более чем 200 издателей.

                  Читайте также: