Architektury systemów komputerowych

Transkrypt

Architektury systemów komputerowych
Architektury systemów komputerowych
Lista 10
x9 = 7 (minimum na bdb)
W niektórych zadaniach na dzisiejszej li±cie b¦dziemy odwoªywa¢ si¦ do poni»szych fragmentów
kodu MIPS:
Program 1:
sw r16,
lw r16,
beq r5,
add r5,
slt r5,
12(r6)
8(r6)
r4, Label #zaªó», »e r5 != r4
r1, r4
r15, r4
Program 2:
lw r2, 0(r1)
label1: beq r2, r0, label2 #za pierwszym razem r2 != r0, potem równe
lw r3, 0(r2)
beq r3, r0, label1 #taken
add r1, r3, r1
label2: sw r1, 0(r2)
1. Rozwa»amy procesor potokowy z bezbª¦dn¡ predykcj¡ skoków (nie ma »adnych hazardów sterowania). Zaªó»my, »e mamy tylko jedn¡ jednostk¦ pami¦ci (nie ma podziaªu na pami¦¢ rozkazów
oraz danych). Wtedy, za ka»dym razem gdy chcemy pobra¢ rozkaz, a inny rozkaz z potoku
pobiera dane dochodzi do hazardu strukturalnego. Przyjmijmy, »e taki hazard jest zawsze rozwi¡zywany na korzy±¢ rozkazu pobieraj¡cego dane. Ile cykli zajmie wykonanie Programu 1
(które rozkazy trzeba b¦dzie opó¹ni¢?)? Czy tego typu hazardy strukturalne daªoby si¦ rozwi¡za¢ poprzez dopisanie (w czasie kompilacji) rozkazów nop w odpowiednich miejscach kodu?
2. Ponownie rozwa»amy procesor potokowy z bezbª¦dn¡ predykcj¡ skoków. Rozwa»my modykacj¦
rozkazów load/store tak¡, »e bior¡ one adres bezpo±rednio z rejestru (bez dodawania osetu).
Przy tej modykacji rozkazy te nie musz¡ u»ywa¢ ALU. A wtedy fazy MEM i EX mog¡ by¢
naªo»one na siebie i potok ma tylko cztery fazy. Zmodykuj Program 1 tak, aby dziaªaª dla przebudowanej w opisany sposób architektury. Zakªadaj¡c, »e modykacja nie wpªywa na dªugo±¢
cyklu zegarowego porównaj czas dziaªania zmodykowanego pragramu z oryginalnym.
3. Przedstaw diagram wykonania Programu 2 na procesorze potokowym (tzn. poka», w jakich fazach wykonania s¡ rozkazy w kolejnych cyklach zegarowych) zakªadaj¡c, »¦ skoki wykonywane
s¡ w fazie EX. Nast¦pnie powtórz to ¢wiczenie zakªadaj¡c, »e tym razem implementacja u»ywa
tzw. skoków opó¹nionych (deleyed branches). Instrukcja znajduj¡ca si¦ za beq wypeªnia tzw. delayed slot i wykonuje si¦ zawsze (ewentualny skok nast¦puje dopiero po niej).
4. Rozwa»my teraz architektur¦, w której rozkazami skoków warunkowych s¡ bez rd, Label oraz
bnez rd, Label (odpowiednio: skocz je±li w rejestrze rd jest zero, skocz je±li w rejestrze rd nie
ma zera). Przepisz kod Programu 2 do tak zmodykowanej architektury. Mo»esz u»y¢ rejestru
r8 jako rejestru pomocniczego oraz rozkazu seq rd, rs, rt (set if equal ; rozkaz typu R).
5. Przedstaw diagram wykonania Programu 2 na procesorze potokowym zakªadaj¡c, »e skoki wykonywane s¡ w fazie ID. Przyjmuj¡c, »e dªugo±¢ cyklu jest taka sama jak w przypadku procesora
wykonuj¡cego skoki w fazie EX porównaj czasy wykonania w Programu 2 w obydwu wariantach.
6. Zbadamy teraz skuteczno±¢ ró»nych wariantów predykcji skoków na pewnym rozkazie skoku
(mo»na np. my±le¢, »e jest to skok zamykaj¡cy p¦tl¦), który podczas swoich pierwszych pi¦ciu
wykona« kolejno: skoczyª, nie skoczyª, skoczyª, skoczyª, nie skoczyª.
(a) Jaka jest skuteczno±¢ predyktora, który zakªada, »e skok zawsze si¦ wykonuje?
(b) Jaka jest skuteczno±¢ predyktora, który zakªada, »e skok nigdy si¦ nie wykonuje?
(c) Jaka jest skuteczno±¢ predyktora dwubitowego (patrz Slajd 11) podczas pierwszych skoków,
przy zaªo»eniu, »e startuje on w swoim lewym dolnym stanie?
(d) Jaka jest skuteczno±¢ predyktora dwubitowego, je±li przez rozwa»any skok przechodzimy
niesko«czenie wiele razy (opisana sekwencja wykona« skoku powtarza si¦ cyklicznie).
7.
∗
(2 pkt.) W tym ¢wiczeniu porównamy efektywno±¢ procosora potokowego (1-issue) i procesora
typu multiple issue (konkretnie 2-issue), bior¡c pod uwag¦ optymalizacj¦ kodu programu do
wykonywania na procesorze 2-issue. Rozwa»my nastepuj¡cy program w j¦zyku C:
for (i=0; i != j; i+=2)
b[i]=a[i]-a[i+1];
(a) Przetªumacz ten program do asemblera MIPS w jak najbardziej naturalny sposób. Zaªó»,
»e i jest przechowywane w rejestrze r5, j w r6, adres a w r1, a adres b w r2. Dodatkowo
mo»esz u»y¢ pomocniczych rejestrów r10, r11, r12.
(b) Przedstaw diagram wykonania uzyskanego kodu na procesorze potokowym (1-issue)
(c) Przedstaw diagram wykonania dwóch pierwszych p¦tli uzyskanego kodu na procesorze typu
2-issue. Zaªó», »e predykcja skoków jest bezbª¦dna. Dla uproszczenia zakª¡damy, »e procesor potra pobra¢ dwie dowolne instrukcje (niekoniecznie kolejne) w tym samy cyklu. Mog¡
by¢ to np. dwie instrukcje lw albo dwie instrukcje arytmetyczne. Nie ma zatem hazardów
strukturalnych, ale mog¡ by¢ hazardy danych, które musz¡ by¢ rozwi¡zane poprawnie.
(d) Przeorganizuj tªumaczenie danego programu do asemblera MIPS w taki sposób, aby uzyska¢ krótszy czas wykonania na procesorze 2-issue. Przedstaw diagram wykonania dwóch
pierwszych p¦tli uzyskanego kodu na procesorze typu 2-issue.
(e) Ile zajmie wykonanie 1 000 000 p¦tli kodu z podpunktu (a) na procesorze 1-issue a ile na
2-issue? Ile zajmie wykonanie kodu z podpunktu (d) na procesorze 2-issue?
8. (2pkt.) Rozwa»my architektur¦ z nast¦puj¡cymi rozkazami dwuargumentowymi: add, addi,
mul, move.
• Rozkaz add rd, rs dodaje rejestry rd i rs, a wynik zapisuje w rd.
• Rozkaz mul rd, rs mno»y rejestr rd przez rs, a wynik zapisuje w rd.
• Rozkaz addi rd, const dodaje staª¡ const do rejestru rd.
• Rozkaz move rd, rs kopiuje zawarto±¢ rejestru rs do rejestru rd.
W tym zadaniu projektowa¢ b¦dziemy procesor realizuj¡cy t¡ list¦ rozkazów. Zakªadamy, »e procesor b¦dzie dysponowaª plikiem o±miu, 16-bitowych rejestrów ogólnego przeznaczenia. Mamy
tylko pami¦¢ rozkazów (programy operuj¡ jedynie na rejestrach; pami¦¢ jest tylko do odczytu zakªamy, »e dostajemy j¡ razem z programem), adresowanie jest bajtowe, a adresy maj¡ dªugo±¢
16 bitów. Ka»dy rozkaz jest dªugo±ci jednego bajtu. Wszystkie dane s¡ 16-bitowe. Kodowanie
rozkazów jest nast¦puj¡ce:
• dwa najbardziej znacz¡ce bity to kod operacji: add 00, addi 01, mul 10, move 11,
• kolejne trzy bity to numer rejestru rd,
• trzy najmniej znacz¡ce bity to numer rejestru rs lub (trzybitowa) staªa w reprezentacji
uzupeªnie« do 2.
2
Do dyspozycji mamy nast¦puj¡ce bloki (patrz równie» rysunek):
• ukªad pami¦ci MEM: jedno szesnastobitowe wej±cie adresowe Addr, jedno o±miobitowe wyj±cie
M Out; czas dziaªania: 200 ps,
• plik rejestrów REG: dwa trzybitowe wej±cia: RReg (nr rejestru do odczytu), W RReg (nr rejestru do odczytu/zapisu), dwa 16-bitowe wyj±cia ROut1 odczytany rejestr RReg , ROut2
odczytany rejestr W RReg , 16-bitowe wej±cie Data z dan¡ do zapisu, wej±cie zezwolenia
na zapis Enb; czas odczytu: 120 ps, czas zapisu: 120 ps,
• jednostka arytmetyczno-logiczna ALU: dwa szesnastobitowe wej±cia danych Data1, Data2,
jedno szesnastobitowe wyj±cie AOut, jedno dwubitowe wej±cie operacji Op (00 dodaj, 11
pomnó», 01 - odejmij); czas dziaªania: 220 ps.
• Szesnastobitowy rejestr licznika rozkazów, PC, z wej±ciem zezwolenia na zapis W Enb
2
16
8
3
16
16
3
16
16
16
16
Mo»esz u»y¢ te» dodatkowych ukªadów realizuj¡cych pewne proste czynno±ci (np. dodawanie
staªej do PC) wyspecykuj ich dziaªanie. Przydadz¡ si¦ te» na pewno multipleksery, mo»e
co± jeszcze... W podpunktach dotycz¡cych wyliczania czasu dziaªania mo»esz pomin¡¢ czas
dziaªania wszystkich dodatkowych ukªadów.
(a) Przedstaw schematyczny rysunek procesora w wersji jednocyklowej. Zaznacz dokªadnie,
gdzie kierowane s¡ poszczególne bity. Opisz precyzyjnie dziaªanie jednostki steruj¡cej (jakie
sygnaªy steruj¡ce s¡ potrzebne, jak s¡ generowane).
(b) Jaka powinna by¢ optymalna dªugo±¢ cyklu zegarowego dla wersji jednocyklowej?
(c) Ile etapów potoku powinien mie¢ prosty procesor potokowy? Jakie to etapy? Jaka powinna
by¢ optymalna dªugo±¢ cyklu zegarowego?
(d) Z jakiego rodzaju hazardami mo»emy mie¢ do czynienia w naszym procesorze potokowym?
Podaj przykªad kodu powoduj¡cego hazardy.
(e) Opisz prosty i efektywny sposób eliminowania hazardów z poprzedniego podpunktu (nie
musi by¢ to tak dokªadny opis jak w podpunkcie (a) wystarczy krótkie obja±nienie ogólnej
idei).
3