Аппаратное обеспечение. Многопроцессорные архитектуры.
Однопроцессорные архитектуры
ЦПУ – кэш1 – кэш2 – память
Параллелизм внутри обычного процессора
1. Конвейеризация. Процессор принимает новую инструкцию каждый цикл, даже если предыдущие не завершены. В результате выполнение нескольких инструкций перекрывается и в процессоре находятся сразу несколько инструкций в разной степени готовности. Они образуют конвейер инструкций
Стадии исполнения: выборка, декодирование, исполнение, запись результатов.
ВДИЗ ВДИЗ ВДИЗ
Процессор без конвейера
ВДИЗ
ВДИЗ
ВДИЗ
Процессор с конвейером.
Поток инструкций могут нарушить переходы и прерывания. Поэтому используется предсказание переходов.
Внутри конвейера могут быть взаимозависимые инструкции. Команда может читать результат, который пишет предыдущая. Поэтому оптимизирующие компиляторы переупорядочивают команды, чтобы избежать зависимостей. Также используется динамическое переименование регистров.
- Суперскалярность. Исполнение нескольких инструкций одновременно. Требует наличие нескольких независимых устройств: целочисленных, для работы с плавающей точкой, управления памятью, мультимедийных команд и т.д.В суперскалярном процессоре несколько конвейеров инструкций.
- Многоядерность. Фактически несколько процессоров с разделяемой памятью
Многопроцессорные архитектуры
- Сильно связанные процессоры (SMP- симметричные мультипроцессорные системы).
Общая шина, общая память Задачи могут переходить от одного процессора к другому. Синхронизация кэшей. Пример – мат. плата с двумя Pentium 4.
- Слабо связанные процессоры. Разделяемая память, но невозможен переход задачи.
Память память
----------------------------- сеть
ЦПУ ЦПУ
Пример – промышленные компьютеры –стойки с процессорными платами и платами с памятью.
3. Распределенные процессоры. Распределенная память.
----------------------------- сеть
память память
ЦПУ ЦПУ
Кластеры.
Возможны гибридные схемы. Например модули сильно связанных процессоров с общейц памятью соединяются через шину.
Поддержка параллелизма системой команд процессора.
Доступ к объектам синхронизации (например семафорам). Процесс читает значение семафора. Если оно = 1, то процесс его обнуляет, занимая семафор. Изменение семафора состоит из трех стадий: чтение, изменение, запись. Если на стадии чтения произойдет переключение на другой процесс, то он также может занять семафор, что приведет к одновременной попытке обратиться к разным ресурсам, то есть к ошибке.
Для решения этой проблемы процессоры имеют инструкцию выполняющую неделимый цикл чтение-изменение-запись.