Процессор в параллельных системах
В 80-х годах для создания мультикомпьютеров был популярен специальный процессор под названием Transputer. Транспьютер состоял из одного базового процессора, небольшой памяти SRAM, интерфейса основной памяти DRAM и четырех каналов связи - все на одном кристалле. Чтобы сделать параллельную компьютерную связь, каналы были соединены, чтобы сформировать сеть Transputers. Но ему не хватает вычислительной мощности, и поэтому он не может удовлетворить растущий спрос на параллельные приложения. Эта проблема была решена разработкой RISC-процессоров, к тому же это было дешево.
Современный параллельный компьютер использует микропроцессоры, которые используют параллелизм на нескольких уровнях, таких как параллелизм на уровне команд и параллелизм на уровне данных.
Высокопроизводительные процессоры
На сегодняшнем рынке параллельных компьютеров доминируют процессоры RISC и RISCy.
Характеристики традиционного RISC:
- Имеет несколько режимов адресации.
- Имеет фиксированный формат для инструкций, обычно 32- или 64-битный.
- Имеет специальные инструкции загрузки / сохранения для загрузки данных из памяти в регистр и сохранения данных из регистра в память.
- Арифметические операции всегда выполняются с регистрами.
- Использует конвейерную обработку.
Большинство микропроцессоров в наши дни являются суперскалярными, то есть в параллельном компьютере используются несколько конвейеров команд. Следовательно, суперскалярные процессоры могут выполнять более одной инструкции одновременно. Эффективность суперскалярных процессоров зависит от количества параллелизма на уровне команд (ILP), доступного в приложениях. Чтобы конвейеры оставались заполненными, инструкции на аппаратном уровне выполняются в другом порядке, чем порядок программ.
Многие современные микропроцессоры используют суперконвейерный подход. При супер конвейерной обработке , чтобы увеличить тактовую частоту, работа, выполняемая в конвейерной стадии, уменьшается, а количество конвейерных стадий увеличивается.
Процессоры с очень большим командным словом (VLIW)
Они получены из горизонтального микропрограммирования и суперскалярной обработки. Инструкции в процессорах VLIW очень большие. Операции внутри одной инструкции выполняются параллельно и направляются для выполнения в соответствующие функциональные блоки. Итак, после получения инструкции VLIW ее операции декодируются. Затем операции отправляются в функциональные блоки, в которых они выполняются параллельно.
Векторные процессоры
Векторные процессоры являются сопроцессором универсального микропроцессора. Векторные процессоры обычно представляют собой регистр-регистр или память-память. Векторная команда выбирается и декодируется, а затем выполняется определенная операция для каждого элемента векторов операндов, тогда как в обычном процессоре для векторной операции требуется структура цикла в коде. Чтобы сделать его более эффективным, векторные процессоры объединяют несколько векторных операций в цепочку, т. Е. Результат одной векторной операции пересылается другой как операнд.
Кеширование
Кэши - важный элемент высокопроизводительных микропроцессоров. Через каждые 18 месяцев скорость микропроцессоров становится вдвое, но чипы DRAM для основной памяти не могут конкурировать с этой скоростью. Итак, кеши вводятся, чтобы преодолеть разрыв в скорости между процессором и памятью. Кэш - это быстрая и небольшая память SRAM. Многие другие кэши применяются в современных процессорах, таких как кеши буферов просмотра трансляции (TLB), кеши инструкций и данных и т. Д.
Кэш с прямым подключением
В кэшах с прямым отображением функция «по модулю» используется для однозначного сопоставления адресов в основной памяти с ячейками кеша. Поскольку одна и та же запись кэша может иметь несколько отображаемых блоков основной памяти, процессор должен иметь возможность определить, является ли блок данных в кэше тем блоком данных, который действительно необходим. Эта идентификация выполняется путем сохранения тега вместе с блоком кеша.
Полностью ассоциативный кэш
Полностью ассоциативное сопоставление позволяет разместить блок кеша в любом месте кеша. Используя некоторую политику замены, кэш определяет запись кэша, в которой он хранит блок кэша. Полностью ассоциативные кэши имеют гибкое сопоставление, которое сводит к минимуму количество конфликтов записей кэша. Поскольку полностью ассоциативная реализация стоит дорого, они никогда не используются в больших масштабах.
Наборно-ассоциативный кэш
Наборно-ассоциативное отображение - это комбинация прямого отображения и полностью ассоциативного отображения. В этом случае записи кэша подразделяются на наборы кешей. Как и при прямом отображении, существует фиксированное отображение блоков памяти в набор в кэше. Но внутри набора кэша блок памяти отображается полностью ассоциативным образом.
Стратегии кеширования
Помимо механизма отображения, кэшам также нужен ряд стратегий, которые определяют, что должно происходить в случае определенных событий. В случае (набор-) ассоциативных кешей кеш должен определять, какой блок кеша должен быть заменен новым блоком, входящим в кеш.
Некоторые хорошо известные стратегии замены:
- Первый пришел - первый ушел (FIFO)
- Наименее недавно использованные (LRU)