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