Ak06 2022

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 41

Процесор

Поглавје 4

1
Извршување на lw инструкција

lw $t1, offset($t2)

5
Извршување на lw инструкција
lw $t1, offset($t2)

• [31:26] влегуваат во главната контрола


• [25:21] влегуваат во првата порта за читање
• Главната контола поставува:
– Регистерско одредиште = 0
– [20:16] влегуваат во портата за пишување преку мултиплексерот
• [15:0] (offset) влегуваат во проширувачот со знак, кој го прави offset-от
32-битен број со знак
• Главната контрола поставува:
– АЛУ влез = 1
– 32-битниот offset влегува во АЛУ
• Излезот од првата порта за читање на регистерската датотека влегува во
АЛУ

6
Извршување на lw инструкција
• Главната контрола поставува:
– АЛУОп = 10 (види го слајд 23)
– АЛУ ќе изврши собирање на влезните зборови $t2+offset
• Излезот од АЛУ се доведува како адреса за читање од податочната
меморија
• Главната контрола поставува:
– Мемориско читање = 1
– Мемориско запишување = 0
– Податочната меморија е отворена за читање
• Главната контрола поставува:
– Меморија кон регистер = 1
– Податоците од податочната меморија ќе се запишат во регистерската
датотека
• Главната контрола поставува:
– разгранување = 0
– PC+4 се запишува во програмскиот бројач

7
Извршување на beq инструкција

beq $t1, $t2, offset

8
Извршување на beq инструкција
beq $t1, $t2, offset

• [31:26] влегуваат во главната контрола


• [25:21] влегуваат во првата порта за читање
• [20:16] влегуваат во втората порта за читање
• Главната контола поставува:
– Регистерско запишување = 0
– Регистерската датотека е заклучена
– Регистерско одредиште = Х
– Не е битно што влегува во портата за пишување
• [15:0] (offset) влегуваат во проширувачот со знак, кој го прави offset-от
32-битен број со знак
• Поместувачот го поместува 32-битниот offset за 2 места на лево
• Собирачот горе десно ја пресметува адресата на скокот

9
Извршување на beq инструкција
beq $t1, $t2, offset

• Излезот од првата порта за читање на регистерската датотека влегува во


АЛУ
• Излезот од втората порта за читање на регистерската датотека влегува
во АЛУ (АЛУ влез = 0)
• Главната контрола поставува:
– АЛУОп = 01 (види го слајд 23)
– АЛУ ќе изврши споредување на $t1 со $t2
• Главната контрола поставува:
– разгранување= 1
– Ако $t1==$t2, тогаш PC влез=1 - адресата на скокот се запишува во
програмскиот бројач
– Ако $t1!=$t2, тогаш PC+4 - адресата на следната инструкција - се
запишува во програмскиот бројач

10
Извршување на j инструкција

скок

11
Извршување на j инструкција
j address

• [31:26] влегуваат во главната контрола


• Се прави 32-битен број така што на битовите
[25:0] од ј инструкцијата
– од десно се лепат два бита 00
– Од лево се лепат битовите [31:28] од PC+4
• Главната контрола поставува:
– скок= 1 – нов контролен сигнал
– 32-битниот број се запишува во програмскиот бројач

12
Која инструкција е во тек?

A. add
B. lw
C. sw
D. beq

lw

13
Која инструкција е во тек?

Инструкција[25:21]

A. add
B. lw
C. sw
D. beq

Која инструкција е во тек?

14
Која инструкција е во тек?

Инструкција[31:26
]

Инструкција[25:21]

A. add
B. lw
C. sw
D. beq

add

15
Зошто не се користи едноциклусната
имплементација?
• Инструкцијата lw ги користи сите елементи
од податочната патека

• Оваа инструкција предизвикува најголемо


доцнење и го диктира периодот на тактот

• Останатите инструкции мора да се извршат


во истиот такт период, иако можат и побргу

16
Проточност

Поглавје 4

17
Преглед на проточноста

• Проточност: Имплементациска техника при


која повеќе инструкции се преклопуваат
при извршувањето
• Слично како производствена линија
• Проточноста е универзално
имплементирана

18
Преглед на проточностите

19
Преглед на проточностите
• Нечисти алишта се средуваат во 4 чекори
1. Перење
2. Сушење
3. Пеглање
4. Ставање во плакар
• Проточниот пристап подразбира истовремено
извршување на сите 4 чекори (ако имаме
засебен куп алишта за секој чекор)
– Чекорите се викаат етапи во проточноста

20
Преглед на проточностите
• МИПС инструкциите се извршуваат во пет чекори:
1. Преземање на инструкција од меморија.
2. Во паралела се извршуваат два чекори:
• Читање од регистрите
• Декодирање на инструкцијата (генерирање на контролните сигнали)
3. Извршување на операцијата дефинирана со инструкцијата
4. Читање од податочната меморија
5. Запишување во регистер

• МИПС проточен процесор се состои од 5 етапи


– Во секоја етапа истовремено се извршува засебна инструкција

21
Пример:
• Време на извршување на секој од 5-те чекори
поединечно, и време на извршување на инструкција

Вкупно време за секоја инструкција пресметана од времето за секоја


компонента. Ова пресметување претпоставува дека мултиплексерите,
контролната единица, пристапите до програмскиот бројач, и единицата за
проширување со знак не воведуваат доцнење.

22
Пример:
• За едно-циклусни имплементации на МИПС
процесори
– lw го диктира периодот на часовникот на 800 ps (пико
секунди)
– beq може да се изврши за 500 ps, но и таа инструкција се
извршува за 800 ps
• За проточни имплементации на МИПС процесори
– Извршувањето на најбавната етапа го диктира периодот
на часовникот на 200 ps
– Читање од регистер може да се изврши за 100 ps, но и
оваа етапа се извршува за 200 ps
– 5 етапи по 200 ps значи дека една инструкција се
извршува за 1000 ps

23
Пример:
• Проточна имплементација со n етапи може, теоретски, да понуди
забрзување за фактор n во однос на едно-циклусна имплементација

• МИПС едно-циклусен процесот со 5 чекори на извршување и такт од 800


ps, теоретски, може да се направи проточен процесор со 5 совршено
балансирани етапи со такт од 800/5 ps = 160 ps.
– Со ова би се добило 5-кратно забрзување

• Од табелата се гледа дека МИПС етапите не се совршено балансирани,


односно има етапи со време на извршување > 160 ps
– Затоа, забрзувањето не е 5-кратно

24
Пример со три lw инструкции

25
Пример:
• За едно-циклусни имплементации на МИПС
процесори
– Трите инструкции ќе се извршат за 3х800 ps = 2400 ps
• За проточни имплементации на МИПС процесори
– 5 етапи по 200 ps значи дека една инструкција се
извршува за 1000 ps
– Следната инструкција ќе биде извршена за 200 ps
– Трите инструкции ќе се извршат за
1000 ps +200 ps + 200 ps = 1400 ps

26
Пример со три lw инструкции

Празнината означува дека читањето Празнината означува дека пишувањето


од регистерската датотека се одвива во регистерската датотека се одвива
во втората половина од тактот во првата половина од тактот

27
Дизајнирање на инструкциско
множество за проточност
• Во МИПС сите инструкции се со иста должина
– Ова ја олеснува имплементацијата на проточноста

• Интеловите х86 инструкции се со различни


должини – од 1 бајт до 17 бајти
– Имплементацијата на проточноста е комплицирана
– Затоа Интеловите процесори најпрвин ги конвертираат
х86 инструкциите во инструкции со еднаква должина

28
Проточни конфликти
• Проточен конфликт е состојба на процесорот во која
процесорот не смее да продолжи со извршување на
некоја инструкција, односно нејзиното извршување во тој
момент би било катастрофално за текот и резултатите на
програмата

• Постојат три типа на проточни конфликти:


– Структурни конфликти
– Податочни конфликти
– Контролни конфликти

29
Структурни конфликти
• Структурни конфликти се јавуваат кога две инструкции се
натпреваруваат за ист хардверски ресурс

• Пример 1: замислете во процесот на перење да имаме


машина за перење и сушење. Во тој случај имаме
структурен конфликт, бидејќи не можеме во исто време да
переме едни алишта и да сушиме други

• Пример 2: може да се направи процесор со заедничка


(инструкциска и податочна) меморија. Но тогаш, ќе се
појави структурен хазард – две инструкции ќе се
натпреваруваат за преземање од меморијата

30
Податочни конфликти
• Податочни конфликти се јавуваат кога на една инструкција
и е потребен резултат од некоја претходна инструкција,
која сеуште не е извршена
• Пример:
– add $s0, $t0, $t1
– sub $t2, $s0, $t3
• add ќе го запише резултатот во $s0 во 5-тата етапа, sub
мора да чека 3 циклуса за резултатот од add да се
запише во $s0

31
Графичко претставување на
етапите во проточнен процесор

• IF – преземање на инструкцијата
• ID – декодирање на инструкцијата (во МИПС и
читање од регистри)
• EX –извршување на инструкцијата во АЛУ
• МЕМ – пристап до меморијата
• WB – запишување во регистер

32
Графичко претставување на
етапите во проточнен процесор

• EX е целосно засенчена затоа што add ја користи


АЛУ во целиот такт
• МЕМ не е засенчена затоа што не се користи од add
• IF и ID се засенчени од десно затоа што се користат
во втората половина од тактот
• WB е засенчена од лево зато што се користи во
првата половина од тактот

33
Препраќање – решение за податочните конфликти

• Излезот од АЛУ (EX)е поврзан со влезот на АЛУ (направен


е бајпас преку кој може да се препраќа резултатот)
• Ако на инструкцијата што влегува во АЛУ и е потребен
резултатот од инструкцијата што излегува, излезниот
резултат преку бајпасот се носи на влезот
• Препраќањето станува многу тешко да се имплементира
со растењето на проточните степени и со растењето на
бројот на инструкции кои истовремено се извршуваат

34
Препраќање – решение за податочните конфликти

• Во некои комбинации на инструкции, препраќање


не може да се примени
• Резултатот од lw е познат после МЕМ етапата
• sub во EX етапата не може да користи резултатот
од lw затоа што не е готов
• Се прави застој – sub и помладите инструкции
чекаат lw да се изврши

35
Преуредување на кодот –решение за
податочните конфликти

• сегмент од инструкции: • Преуреден сегмент :


lw $t1, 0($t0) lw $t1, 0($t0)
lw $t2, 4($t0) lw $t2, 4($t0)
add $t3, $t1,$t2 lw $t4, 8($t0)
sw $t3, 12($t0) add $t3, $t1,$t2
lw $t4, 8($t0) sw $t3, 12($t0)
add $t5, $t1,$t4 add $t5, $t1,$t4
sw $t5, 16($t0) sw $t5, 16($t0)

Компајлерот го преуредува кодот за да избегне застои

И двете add инструкции имаат конфликт поради нивната зависност од


претходната lw инструкција.

36
Контролни конфликти
beq $1,$2,10
lw $3,300($0)
WB
.
.
.
or $7,$8,$9

• Кога beq е во ID етапата, која инструкција треба да


се преземе во IF етапата?
– Следбеникот на beq (lw) или скокот (or)
• Која инструкција треба да се преземе, ќе биде
познато во EX етапата
• Контролен конфликт – кога beq е во EX етапата,
инструкциите во ID и IF етапите не одговараат на
програамскиот редослед

37
Контролни конфликти

• Решение #1:
– МИПС процесорот се надоградува така што
beq се извршува во ID етапата
– се прави застој од еден такт циклус
– Во следниот такт се одбира вистинската
инструкција што следи по beq инструкцијата

Проточност која прикажува застој при секое условно разгранување како


контрола за разрешување конфликти. Овој пример претпоставува дека скокот е
преземен и инструкцијата на целта на разгранувањето е OR инструкција. По
разгранувањето има застој од еден проточен степен. Во реалноста процесот на
креирање застој е малку посложен, како што ќе видиме во секција 4.8. Ефектот
врз перформансите е ист како што би бил и ако биле додадени празнини.

38
Решение #1:

39
Решение #1:

• Кога beq ќе влезе во ID етапата:


– се читаат содржините на регистрите $1 и $2
– Се проверува дали $1==$2
– Се пресметува адресата на скокот
• Во тој циклус во IF етапата не се преземаат
инструкции
– направен е застој
• Во следниот циклус се презема точната
инструкција – скокот (or)

40
Контролни конфликти
• Решение #2:
– хардвер за предвидување на гранењето
– Веднаш по beq инструкциите се преземаат
предвидените инструкции
• Нема застои ако предвидувањето е точно
• Ако предвидувањето е погрешно, погрешно преземените
инструкции не смеат да пишуваат во регистрите
– Наједноставен предвидувач: скокот не е преземен
– Динамички предвидувачи:
• Го следат однесувањето на beq инструкциите
• Одлуката за скок се менува со текот на програмата
• Ја памтат адресата на скокот на beq инструкциите
• Прецизноста им е над 90%

41
Решение #2:

Предвидување дека скоковите не се преземаат како решение за контролните


конфликти. Цртежот горе ја покажува проточноста кога нема разгранување.
Долниот цртеж ја покажува проточноста кога има разгранување. Како што
забележавме на сликата 4.31, додавањето празнина на овој начин го
поедноставува тоа што навистина се случува, барем до првиот такт по
разгранувањето. Секцијата 4.8 открива повеќе детали.

42
Решение #2:

• Наједноставен предвидувач: скокот не е преземен


• Веднаш по beq се презема инструкцијата
следбеник, односно lw
– Нема застој
• Во ID етапата процесорот може да заклучи дека
предвидувањето е погрешно
– Прави застој
– Ја отфрла lw инструкцијата
– Ја презема or инструкцијата (скокот)

43
Материјал за учење

• Овој час ги покрива лекциите 4.4-4.5 од


книгата на Патерсон Хенеси

44

You might also like