Architektury systemów komputerowych
Transkrypt
Architektury systemów komputerowych
Architektury systemów komputerowych Lista 9 x9 = 6 (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 #zaªó», »e r3 = r0 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 Wykªad 9, Slajd 43 ) 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. W tym i w nast¦pnym zadaniu rozwa»amy 4-gigabajtow¡ przestrze« adresow¡, adres okre±la pojedynczy bajt pami¦ci, a wi¦c ma 32 bity. Przyjrzymy si¦ dwóm wariantom bezpo±redniego mapowania przestrzeni adresowej w pami¦ci cache. Zaªó»my, »e mamy do dyspozycji pami¦¢ cache, która mo»e przechowywa¢ 16 kB danych (nie liczymy miejsca przeznaczonego na znaczniki). Ka»dy bajt pami¦ci cache jest adresowany osobno, a wi¦c ka»dy musi posiada¢ wªasny znacznik. Ile bitów ma adres bajtu w pami¦ci cache, a ile bitów musi mie¢ znacznik? Pod jakim adresem w pami¦ci cache mo»e by¢ przechowywana zawarto±¢ pami¦ci RAM o adresie 0x1A2B3C4D (podanym szesnastkowo)? Ile bitów (ª¡cznie z miejscem na znaczniki) ma nasza pami¦¢ cache? 8. Zaªó»my teraz, »e adresowaln¡ jednostk¡ pami¦ci cache jest wiersz (blok) zªo»ony z czterech 4-bajtowych sªów. Ile wierszy ma nasza 16 kB pami¦¢ cache? Gdzie w pami¦ci cache b¦dzie przechowana zawarto±¢ adresu 0x1A2B3C4D (w którym wierszu, w którym sªowie tego wiersza, w którym bajcie tego sªowa)? Ile bitów (ª¡cznie z miejscem na znaczniki) ma nasza pami¦¢ cache? 2