Архитектура процессоров
Другими специфическими особенностями классификации, скорее микроархитектур, можно отнести следующие:
- Наличие регистра флагов. Например, в RISC-V отсутствует данный регистр. Применение триггеров различных признаков состояния процессора, таких как переполнение АЛУ, признак (флаг) 0. Данные триггеры объединяются в регистр флагов и применяются при построении схемы управления ветвлениями в процессорах.
- Наличие определенного регистра аккумулятора для работы с АЛУ (x86, микроконтроллеры PIC имеют данный регистр).
По системам команд процессоры классифицируются на:
- безадресные (стековые);
- одноадресные;
- двухадресные, например, x86 и ряд RISC процессоров и микроконтроллеров;
- трехадресные - архитектура RISC-V.
Еще одним видом классификации процессоров является степень параллелизма обработки данных:
1. SISD (Single Instruction, Single Data) - это архитектура, в которой один процессор выполняет одну инструкцию над одним набором данных в один момент времени. Это традиционная модель вычислений, используемая в большинстве обычных процессоров.
Каждый такт процессор выполняет одну инструкцию над одной частью данных, что ограничивает его производительность при обработке больших объемов данных.
Применение: подходит для простых задач и приложений, которые не требуют высокой степени параллелизма, таких как базовые вычисления и небольшие программы.
Преимущества: простота реализации и программирования.
Недостатки: низкая эффективность в сравнении с параллельными архитектурами при выполнении сложных задач.
2. SIMD (Single Instruction, Multiple Data) - это архитектура, в которой одна и та же инструкция применяется одновременно ко многим данным. Это позволяет значительно ускорить выполнение операций над большими массивами данных.
В один момент времени одна инструкция применяется ко всем элементам векторов или массивов. Например, сложение двух векторов чисел.
Применение: широко используется в обработке изображений, машинном обучении, научных вычислениях и т.д.
Преимущества: высокая производительность при обработке больших объемов однотипных данных, эффективное использование ресурсов.
Недостатки: ограниченная гибкость, поскольку не все задачи можно разбить на операции с одинаковыми данными.
3. MIMD (Multiple Instruction, Multiple Data) - это архитектура, в которой несколько процессоров могут выполнять разные инструкции над разными наборами данных одновременно. Это наиболее универсальный тип архитектуры.
Каждый процессор может выполнять свою собственную инструкцию и работать с собственными данными, что позволяет решать разнообразные задачи параллельно.
Применение: используется в многоядерных процессорах, кластерах, распределенных системах и для высокопроизводительных вычислений.
Преимущества: высокая степень гибкости и универсальности, возможность работы с разнообразными задачами.
Недостатки: более сложная реализация и необходимость в эффективной синхронизации и управлении потоками.
Кратко рассмотрим микроархитектуры процессоров, представленных на рынке.
Процессоры x86
Применяемые в большинстве решений вычислительных машин, процессоры реализованы на так называемой Intel совместимой архитектуре. Данные процессорные решения имеют разную микроархитектуру и совместимы между собой на уровне общих инструкций языка ассемблера. В то же время могут иметь собственные специфические инструкции, описываемые в документации разработчика. На рисунке 7.4 приведена общедоступная структурная схема процессора Intel Pentium [3], совместимость с которым у других производителей была наиболее близкой. На структурной схеме можно выделить следующие блоки:
- Bus Interface Unit (блок интерфейса шины) обеспечивает взаимодействие с внешней шиной и кэшом L2.
- Instruction Fetch Unit (блок извлечения инструкций) отвечает за извлечение инструкций из памяти.
- Instruction Decoder (дешифратор инструкций) декодирует извлеченные инструкции. Данный блок состоит из двух простых и одного сложного дешифраторов, отвечающих за преобразование инструкции в микрокоманды управления.
- Branch Target Buffer (буфер адреса перехода) ускоряет выполнение ветвящихся инструкций, обеспечивая быстрый доступ к целевым адресам.
- Microinstruction Sequencer (планировщик последовательности микрокоманд) обрабатывает сложные инструкции, которые не могут выполнить составные дешифраторы Instruction Decoder, формируя при этом необходимое количество микрокоманд. При работе с данным блоком активируется Reservation Station.
- Register Alias Table (таблица алиасов регистров) управляет именами регистров, чтобы избежать конфликтов при одновременном обращении к двух соседних команд к одному регистру. В данном блоке именные ссылки на регистры преобразуются в адреса 40 физических регистров.
- Reservation Station (станция ожидания) хранит инструкции, ожидающие выполнения и освобождения для них ресурсов.
- Memory Reorder Buffer (буфер упорядочения памяти) обеспечивает упорядоченное выполнение инструкций в отношении памяти. Пересылает данные в память тогда, когда микроинструкция осуществлявшая запись в память удалена.
- Data Cache Unit (блок данных кэша) хранит временные данные для быстрого доступа.
- Memory Interface Unit (блок интерфейса памяти) управляет взаимодействием с основной памятью.
- Address Generation Unit (блок генерации адресов) генерирует адреса для доступа к памяти.
- Integer Execution Unit (управляющий блок целых чисел) выполняет арифметические и логические операции над целыми числами.
- Floating-point Execution Unit (управляющий блок с плавающей запятой) отвечает за выполнение операций над числами с плавающей запятой.
- Reorder Buffer and Retirement Register File (буфер восстановления последовательности) управляет завершением выполнения инструкций, гарантируя, что они будут выполнены в правильном порядке. Хранит часть микрокоманд, ожидающих исполнения.