Конвейер. Типы конфликтов

Содержание

Слайд 2

Конвейер инструкций Стадии: Выборка инструкций. Выборка данных из регистров и декодирование

Конвейер инструкций

Стадии:
Выборка инструкций.
Выборка данных из регистров и декодирование инструкции.
Исполнение инструкции (вычисление

адреса).
Обращение к памяти (загрузка и сохранение).
Запись данных в регистры
Слайд 3

Диаграмма конвейерного исполнения I n s t r. O r d e r Time (clock cycles)

Диаграмма конвейерного исполнения

I
n
s
t
r.
O
r
d
e
r

Time (clock cycles)

Слайд 4

Что препятствует эффективному исполнению инструкций на конвейере? Зависимости между инструкциями. Наличие

Что препятствует эффективному исполнению инструкций на конвейере?

Зависимости между инструкциями.
Наличие зависимостей приводит

к возникновению конфликтов (hazard).
Слайд 5

Конфликт Конфликты – это некоторая ситуация, при которой не возможно запустить

Конфликт

Конфликты – это некоторая ситуация, при которой не возможно запустить следующую

инструкцию непосредственно за предыдущий, не нарушив критерия сохранения корректности программы.
Запуск инструкции происходит спустя n тактов.
Конфликты – это не атрибут программы или алгоритма, это следствие параллельного исполнения зависимых инструкций на процессоре.
Слайд 6

Типы конфликтов. Структурные конфликты Разным инструкциям требуется доступ к одному ресурсу

Типы конфликтов.

Структурные конфликты
Разным инструкциям требуется доступ к одному ресурсу процессора.
Конфликты по

данным
Следствие наличия зависимостей по данным именам.
Конфликты по управлению
Следствие наличия зависимости по управлению.
Слайд 7

Конфликты по данным. RAW (read after write). Чтение поле записи. i.R2

Конфликты по данным.

RAW (read after write). Чтение поле записи.
i.R2 <- R1

+ R3 j.R4 <- R2 + R3
Возможен для скалярных и суперскалярных конвейерных процессоров.
WAR (write after read) Запись после чтения.
i.r1 <- r2 + r3 j. r3 <- r4 + r5
Возможен для суперскалярных процессоров.
WAW (write after write). Запись после записи.
i.r2 <- r1 + r3 j.r2 <- r4 + r7
Возможен для суперскалярных процессоров.
Слайд 8

Способы разрешения конфликтов. Программные Обнаружение конфликтов в процессе компиляции и добавление

Способы разрешения конфликтов.

Программные
Обнаружение конфликтов в процессе компиляции и добавление инструкций nop.
Статическое

планирование конвейера.
Аппаратные
Добавление устройства обнаружения конфликтов и останова конвейера.
Добавление специфичных аппаратных решений.
Слайд 9

Структурные конфликты и механизмы их устранения. I n s t r.

Структурные конфликты и механизмы их устранения.

I
n
s
t
r.
O
r
d
e
r

Time (clock cycles)

Load

Instr 1

Instr 2

Instr 3

Instr

4

DMem

Cycle 1

Cycle 2

Cycle 3

Cycle 4

Cycle 6

Cycle 7

Cycle 5

Слайд 10

Структурные конфликты и механизмы их устранения. I n s t r.

Структурные конфликты и механизмы их устранения.

I
n
s
t
r.
O
r
d
e
r

Time (clock cycles)

Load

Instr 1

Instr 2

Nop

Instr 3

DMem

Cycle

1

Cycle 2

Cycle 3

Cycle 4

Cycle 6

Cycle 7

Cycle 5

Слайд 11

Структурные конфликты и механизмы их устранения. Второй способ устранения приводит к

Структурные конфликты и механизмы их устранения.

Второй способ устранения приводит к добавлению

второго канала к памяти, разделению общего кэша на кэш данных и кэш инструкций.
Слайд 12

Конфликт RAW Time (clock cycles)

Конфликт RAW

Time (clock cycles)

Слайд 13

Конфликт RAW Time (clock cycles)

Конфликт RAW

Time (clock cycles)

Слайд 14

Устранение RAW конфликтов методом bypass Метод Bypass сводиться к возможности передачи

Устранение RAW конфликтов методом bypass

Метод Bypass сводиться к возможности передачи

данных между стадиями конвейера напрямую.
Вход стадии может быть соединен с выходом любой последующей стадии.
Слайд 15

Пример механизма bypass. Time (clock cycles)

Пример механизма bypass.

Time (clock cycles)

Слайд 16

Аппаратные изменения для работы bypass MEM/WR ID/EX EX/MEM Data Memory mux mux Registers NextPC Immediate mux

Аппаратные изменения для работы bypass

MEM/WR

ID/EX

EX/MEM

Data
Memory

mux

mux

Registers

NextPC

Immediate

mux

Слайд 17

Ограничения bypass (проблема загрузки) Time (clock cycles)

Ограничения bypass (проблема загрузки)

Time (clock cycles)

Слайд 18

Ограничения bypass Данные могут быть переданы на другую стадию, только в

Ограничения bypass

Данные могут быть переданы на другую стадию, только в том

случае, если они реально существуют.
Необходимым и достаточным условием работы bypass механизма является наличие требуемых данных хотя бы на одной стадии конвейера к тому моменту, когда они действительно потребуются.
Слайд 19

Решение проблемы загрузки остановкой конвейера Time (clock cycles) or r8,r1,r9 I

Решение проблемы загрузки остановкой конвейера

Time (clock cycles)

or r8,r1,r9

I
n
s
t
r.
O
r
d
e
r

lw r1, 0(r2)

sub r4,r1,r6

and

r6,r1,r7

ALU

DMem

Bubble

Слайд 20

Статическое планирование конвейера Это программный подход, который сводиться к перестановке инструкций

Статическое планирование конвейера

Это программный подход, который сводиться к перестановке инструкций внутри

программы для того, чтобы минимизировать количество тактов простоя конвейера.

LW Rb,b
LW Rc,c
ADD Ra,Rb,Rc
SW a,Ra
LW Re,e
LW Rf,f
SUB Rd,Re,Rf
SW d,Rd

LW Rb,b
LW Rc,c
LW Re,e
ADD Ra,Rb,Rc
LW Rf,f
SW a,Ra
SUB Rd,Re,Rf
SW d,Rd

Тактов: 10

Тактов: 8

Пример

Слайд 21

Конфликт управления Time (clock cycles)

Конфликт управления

Time (clock cycles)

Слайд 22

Как уменьшить количество тактов простоя Adder Memory Access Write Back Instruction

Как уменьшить количество тактов простоя

Adder

Memory
Access

Write
Back

Instruction
Fetch

Instr. Decode
Reg. Fetch

Execute
Addr. Calc

Memory

Reg File

MUX

Data
Memory

MUX

Sign
Extend

Zero?

Next SEQ PC

RD

RD

RD

WB

Data

Next PC

RS1

RS2

Imm

MUX

Слайд 23

Динамическое планирование исполнения инструкций Идея динамического планирования в том, что инструкции

Динамическое планирование исполнения инструкций

Идея динамического планирования в том, что инструкции запускаются

не по порядку их следования в программе, а по мере готовности их операндов и освобождения требуемых ресурсов процессора.
Пример:
DIV.D F0,F2,F4
ADD.D F10,F0,F8
SUB.D F12,F8,F14
Слайд 24

Конфликты связанные с внеочередным исполнением Пример: DIV.D F0,F2,F4 ADD.D F6,F0,F8 SUB.D

Конфликты связанные с внеочередным исполнением

Пример:
DIV.D F0,F2,F4
ADD.D F6,F0,F8
SUB.D F8,F10,F14
MULT.D F6,F10,F8
Несмотря на то,

что 3,4 инструкции не зависят по данным от 1,2 они не могут быть запущенны из-за возникновения WAR и WAW конфликтов.

RAW

WAR

WAW