
Lek2013 / Lek11_FPGA
.docx
№7 Способы увеличения быстродействия. Конвейерная обработка.
-
увеличение тактовой частоты
(ограничено физическими законами – увеличение тепловыделение >100 вт) Причины повышения мощности: возрастает влияние емкостных связей при увеличении частоты.
-
параллельное выполнение программы
Параллельность достигается либо увеличением числа ядер процессора, что требует дополнительных усилий от программиста по распараллеливанию программ, либо путем одновременного выполнения нескольких машинных команд на одном ядре.
Параллельность на уровне команд машинного языка реализуется при помощи конвейерной обработки.
При этом каждый этап выполнения машинной команды обрабатывается параллельно на разных устройствах внутри процессора.
Команды большинства RISC процессоров разбиваются на 5 этапов:
-
выборка команды IF (instruction fetch)
-
декодирование команды ID (instruction Decode)
-
выполнение операции или вычисление адреса EX (execute)
-
обращение к памяти MEM (memory)
-
запоминание результата WB (write Back)
При отсутствии конвейера этапы команды будут выполняться последовательно, а выполнение всей команды будет длиться 5 тактов синхронизации.
Сум= 260нс
При наличии конвейера за каждый такт синхронизации начинается выполнение новой команды. Каждый этап команды будет выполняться параллельно на отдельном устройстве процессора.
Идеальный конвейер:
-
Время выполнения всех этапов команды одинаковое
-
Команды не зависят друг от друга
-
Среднее выполнение команды – 1 такт синхронизации
Работа конвейера в идеальном случае:
Ожидание заполнения конвейера. Ожидание длиться 5 тактов, после чего одна инструкция выполняется за 1 такт.
В реальности время выполнения различных шагов команды не одинаково. Такт синхронизации не может быть меньше, чем время, необходимое для работы наиболее медленной ступени конвейера.
№ 8 Конфликты конвейера и их классификация
Конфликт – это ситуация, когда нельзя выполнить команду из потока конвейера в предназначенном для этого такте синхронизации.
Классификация конфликтов по причине возникновения:
-
Структурные конфликты
Возникает– когда выполняется одновременное обращение к одному устройству процессора.
-
Конфликт по данным – когда для выполнения следующей команды требуется результат работы предыдущей
-
Конфликт по управлению
Возникает – когда в конвейер приходит команда перехода и происходит изменение счетчика команд. При этом после записи нового адреса в счетчик команд происходит повторная загрузка конвейера.
Чем длинней конвейер, тем большую тактовую частому можно использовать, т.к. каждая стадия конвейера выполняет меньше действий. Однако при этом возрастают задержки при возникновении конфликта по управлению.
№ 9 Структурные конфликты и способы их разрешения
Структурные конфликты возникают из-за неполного дублирования ресурсов процессора обычно с целью его удешевления.
Пример1: в процессоре один АЛУ
Команды сложения и команда условного перехода, поступив в конвейер, одновременно пытаются обратиться к одному АЛУ. Команда сложения для вычисления результата. Команда перехода для вычисления адреса.
Пример 2: в процессоре один канал данных и команд.
Иллюстрация:
Для разрешения конфликта приостанавливают выполнение команды на один такт. Такую приостановку называют “конвейерным пузырем” (pipline bubble). Пузырь проходит по конвейеру не выполняя полезной работы:
Запуск 4-й команды требует не 1 а 2 такта синхронизации. Однако ее выполнение требует как и прежде 5 тактов.
№ 10 Конфликт по данным и их преодоление
Конфликт по данным возникает при наличии зависимости между командами, расположенными столько близко, что их конвейерное выполнение может привести к изменению порядка обращения к операндам.
Пусть команда A выполняется в программе перед командой B, тогда можно выделить следующие варианты конфликтов данных:
1) RAW (чтение после записи) -
Команда B пытается прочитать операнд прежде чем команда A его записала.
Пример:
LDI R16, 33 -
ADD R17, R16
SUB R20, R17
INC R17
Здесь производится попытка сложить значение операнда R16 до того как команда загрузки константы LDI R16, 33 успеет записать значение.
2) WAR (запись после чтения)
Команда B пытается записать результат в приемник прежде чем он считывается оттуда командой А.
-
WAW (запись после записи) Команда B пытается записать операнд прежде чем он будет записан командой А
Конфликты типа WAR и WAW не возникают в системах где команды выполняются в том же порядке, в каком поступили.
Способы преодоления:
Как и в случае структурного конфликта можно ввести пузырь.
Однако:
Минимизировать количество конфликтов по данным можно используя перестановки команд. Эта возможность присутствует в современных компиляторах и называется “планированием загрузки конвейера” (pipeline scheduling)
Пример: требуется вычислить a = b+c, d = e-f
Вариант 1:
LDI R16, b //загрузка константы b
LDI R17, c
ADD R16,R17 //stall // сложение R16=R16+R17
MOV R21,R16 //R22=R16
LDI R16, e
LDI R17, f
SUB R16,R17 //stall //R16=R16-R17
MOV R22,R16 //R22=R16
Вариант 2 (с учетом (pipeline scheduling)) :
LDI R16, b //загрузка константы b
LDI R17, c
LDI R18, e
ADD R16,R17 // NO stall // сложение R16=R16+R17
LDI R17, f
MOV R21,R16 //R22=R16
SUB R18,R17 // NO stall // R16=R16-R17
MOV R22,R16 //R22=R16
Во втором варианте понадобился дополнительный регистр
№ Классификация вычислительных систем по числу потоков команд и потоков данных (классификация Флинна)
Классификация вычислительные систем введенная Флинном:
В основе классификации лежит понятие поток команд и поток данных. Поток команд соответствует счетчику команд. Поток данных состоит из набора операндов.
-
SISD ( Single Instruction stream Single Data stream) – один поток команд один поток данных. К этим системам относится классическая архитектура фон- Наймана.
-
MISD- не существует.
-
SIMD ( Single Instruction stream Multiple Data stream) – один поток команд множественный поток данных.
Не встречаются в чистом виде. Однако процессоры могут содержать дополнительные SIMD команды в основном для работы с мультимедиа.
В Pentium4 SIMD команды присутствуют в виде инструкций MMX SSE, SSE2, SSE3, SSE4Основная идея заключается в одновременной обработке нескольких элементов данных за одну инструкцию.
Используется для обработки мультимедиа данных.
(Например, ко всем пикселям изображения применим один алгоритм преобразования).
-
MIМD - вычислительные системы, содержащие несколько процессорных ядер.
MIMD системы делятся на мультипроцессоры и мультикомпьютеры.
Мультипроцессоры содержат несколько ядер имеющих одно адресное пространство, т.е. одну разделяемую общую память. К мультипроцессорам относятся обычные многоядерные персональные компьютеры.
Мультикомпьютеры – многоядерный компьютер, каждое ядро которого имеет свое адресное пространство. Для обращения одного ядра к переменной, значение которой хранится в адресном пространстве другого ядра, требуется через коммуникационную среду послать сообщение.
К мультикомпьютерам относят суперкомпьютеры и кластерные системы.
Супрекомпьютеры – состоят из набора стандартных процессоров, объединенных высокопроизводительной коммуникационной средой.
Кластерные системы – набор стандартных процессоров, объединенных стандартной коммуникационной средой (через локальную сеть).
Достоинство мультикомпьютеров – число ядер может достигать >1000.
Недостаток – сложность программирования, необходимость использования библиотек обмена сообщениями (например MPI).