Процессор в параллельных системах

В 80-х годах для создания мультикомпьютеров был популярен специальный процессор под названием Transputer. Транспьютер состоял из одного базового процессора, небольшой памяти SRAM, интерфейса основной памяти DRAM и четырех каналов связи - все на одном кристалле. Чтобы сделать параллельную компьютерную связь, каналы были соединены, чтобы сформировать сеть Transputers. Но ему не хватает вычислительной мощности, и поэтому он не может удовлетворить растущий спрос на параллельные приложения. Эта проблема была решена разработкой RISC-процессоров, к тому же это было дешево.

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

Высокопроизводительные процессоры

На сегодняшнем рынке параллельных компьютеров доминируют процессоры RISC и RISCy.

Характеристики традиционного RISC:

  • Имеет несколько режимов адресации.
  • Имеет фиксированный формат для инструкций, обычно 32- или 64-битный.
  • Имеет специальные инструкции загрузки / сохранения для загрузки данных из памяти в регистр и сохранения данных из регистра в память.
  • Арифметические операции всегда выполняются с регистрами.
  • Использует конвейерную обработку.

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

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

Процессоры с очень большим командным словом (VLIW)

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

Векторные процессоры

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

Кеширование

Кэши - важный элемент высокопроизводительных микропроцессоров. Через каждые 18 месяцев скорость микропроцессоров становится вдвое, но чипы DRAM для основной памяти не могут конкурировать с этой скоростью. Итак, кеши вводятся, чтобы преодолеть разрыв в скорости между процессором и памятью. Кэш - это быстрая и небольшая память SRAM. Многие другие кэши применяются в современных процессорах, таких как кеши буферов просмотра трансляции (TLB), кеши инструкций и данных и т. Д.

Кэш с прямым подключением

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

Полностью ассоциативный кэш

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

Наборно-ассоциативный кэш

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

Стратегии кеширования

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

Некоторые хорошо известные стратегии замены:

  • Первый пришел - первый ушел (FIFO)
  • Наименее недавно использованные (LRU)