Architektura Komputerów I Rozwiązania List Zadań
Transkrypt
Architektura Komputerów I Rozwiązania List Zadań
Architektura Komputerów I semestr letni 2007/2008 Rozwiązania List Zadań Opracowali: Hejduk Przemysław Maślej Damian Korekta: mgr Bartosz Wojciechowski Należy pamiętać, że praca może zawierać błędy, mijać sie z prawdą lub być niekompletna, ale za to autorzy nie ponoszą żadnej odpowiedzialności. Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 1 z 38 Architektura Komputerów Lista 1 – IEEE 754 • Zad 1. a) 0+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - - s exponent mantissa g r s 01 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - - s exponent mantissa g r s b) - nieskończoność 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - - s exponent mantissa g r s + nieskończoność 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - - s exponent mantissa g r s c) – 9.625 Dzielimy liczbę przez 2 i zapisujemy: -9.625 = 4,8125 x 21 4,8125 = 2,40625 x 22 2,40625 = 1,203125 x 23 Kodujemy część ułamkową, odcinając po drodze część całkowitą 0,203125 x 2 = 0,40625 0 0,40625 x 2 = 0,8125 0 0,8125 x 2 = 1,625 1 0,625 x 2 = 1,25 1 0,25 x 2 = 0,5 0 0,5 x 2 = 1,0 1 Wykładnik to 3+127= 130 1 1 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 s exponent mantissa g r s d) 0.1875 = 1.5 x 2-3 Kodujemy część ułamkową 0.5 x 2 = 1.0 1 Wykładnik to -3+127 = 124 0 0 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 s exponent Rozwiązania List Zadań Architektura Komputerów mantissa g Hejduk Przemysław Maślej Damian 2 z 38 r s e) 30.5 30.5 = 1,90625 x 24 Kodujemy część ułamkową 0,90625 x 2 = 1,8125 0,8125 x 2= 1,625 0,625 x 2 = 1,25 0,25 x 2 = 0,5 0,5 x 2 = 1,0 Wykładnik to 4 +127 = 131 0 1 0 0 0 0 0 1 1 1 1 1 0 s exponent -2.2 -2.2= -1.1 x 21 0.1 x 2 = 0.2 0.2 x 2 = 0.4 0.4 x 2 = 0.8 0.8 x 2 = 1.6 0.6 x 2 = 1.2 0.2 x 2 = 0.4 0.4 x 2 = 0.8 0.4 x 2 = 1.6 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 mantissa g r s f) s exponent 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 1 mantissa g r s g) qNaN x 1 1 1 1 1 1 1 1 1 x x x x x x x x x x x x x x x x x x x x x x - - s exponent mantissa g r s h) sNaN x 1 1 1 1 1 1 1 1 0 x x x x x x x x x x x x x x x x x x x x x x - - s exponent mantissa g r s i) 21,(3) Kodujemy 21 jako 10101 Kodujemy 0,(3) jako 0,010101010101… 10101,0101010101… = 1,0101010101… x 24 Wykładnik to 4 + 127 = 131 1 0 0 0 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 s exponent Rozwiązania List Zadań Architektura Komputerów mantissa g Hejduk Przemysław Maślej Damian 3 z 38 r s • Zad 2. a) C780 0007 C 7 8 0 0 0 0 7 1 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 - - s exponent mantissa g r s Wykładnik odciążamy, robimy z niego liczbę przeciwną I dociążamy. Mantysę negujemy i dodajemy jeden. 1 0 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 - - s exponent mantissa g r s b) 8F80 000F 8 F 8 0 0 0 0 F 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 - - s exponent mantissa g r s 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 0 - - s exponent mantissa g r s c) 3FFF FFFB 3 F F F F F F B 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 - - s exponent mantissa g r s 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 - - s exponent mantissa g r s d) 8780 0004 8 7 8 0 0 0 0 4 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 - - s exponent mantissa g r s 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 - - s exponent Rozwiązania List Zadań Architektura Komputerów mantissa g Hejduk Przemysław Maślej Damian 4 z 38 r s • Zad 3. poprawność rozwiązania nie gwarantowana a) zaokrąglenie przez obcięcie tabela jest taka sama dla liczb ujemnych jak I dodatnich przed zaokrągleniem po zaokrągleniu (23 bit mantysy) 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 0 Średni błąd standaryzowany = różnica dziesiętna 0 1 v -1 2 v -2 3 v -3 4 v -4 5 v -5 6 v -6 7 v -7 0 b) zaokrąglenie do + inf - tabela dla liczb dodatnich przed zaokrągleniem po zaokrągleniu (23 bit mantysy) 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 różnica dziesiętna 0 1 2 3 4 3 2 1 - tabela dla liczb ujemnych przed zaokrągleniem 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 różnica dziesiętna 0 1 2 3 4 5 6 7 Średni błąd standaryzowany = Rozwiązania List Zadań Architektura Komputerów po zaokrągleniu (23 bit mantysy) 0 0 0 0 0 0 0 0 2,93 Hejduk Przemysław Maślej Damian 5 z 38 c) zaokrąglenie do - inf - tabela dla liczb ujemnych przed zaokrągleniem 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 po zaokrągleniu (23 bit mantysy) 0 0 0 0 1 1 1 1 różnica dziesiętna 0 -1 -2 -3 -4 -3 -2 -1 - tabela dla liczb dodatnich przed zaokrągleniem 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 po zaokrągleniu (23 bit mantysy) 0 0 0 0 0 0 0 0 różnica dziesiętna 0 -1 -2 -3 -4 -5 -6 -7 Średni błąd standaryzowany = 2,93 d) zaokrąglenie do najblizszej - tabela dla liczb ujemnych i dodatnich przed zaokrągleniem po zaokrągleniu (23 bit mantysy) 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 Średni błąd standaryzowany = różnica dziesiętna 0 1 v -1 2 v -2 3 v -3 4 v -4 3 v -3 2 v -2 1 v -1 0 - standardu ieee nie używa się do przechowywania danych o kwotach pieniężnych, gdyż w tego typu danych wymagana jest bezwzględna dokładność. W bankowości do przechowywania kwot pieniężnych używa się reprezentacji dziesiętnych. Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 6 z 38 • Zad 4. Nie, gdyż, 0 nie jest liczbą znormalizowaną a poza tym mamy równanie (gdzie A i B to części ułamkowe liczb) 1, · 2 1, · 2 1, · 2 1, · 2 0 Dla dowolnego B i Y liczba nigdy nie będzie równa zero • Zad 5. Ogólna reprezentacja liczby zmiennoprzecinkowej: S E E E E E MMMMM s exponent mantissa Obciążenie jest równe 15, czyli zakres wykładnika od -14 do 16 + inf 0 1 1 1 1 1 0 0 0 0 0 s exponent mantissa - inf 1 1 1 1 1 1 0 0 0 0 0 s exponent mantissa qNaN x 1 1 1 1 1 1 x x x x s exponent mantissa sNaN x 1 1 1 1 1 0 x x x x s exponent mantissa max 0 1 1 1 1 0 1 1 1 1 1 s exponent mantissa min 1 1 1 1 1 0 1 1 1 1 1 s exponent mantissa Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 7 z 38 • Zad 6. a) A = (550)16 B = (4E0)16 A = (550)16= (010101010000)2 = 1,0101010000 x 210 B = (4E0)16 = (010011100000)2 = 1,0011100000 x 210 W standardzie IEEE754 są 4 oficjalne standardy zaokrągleń, do +inf, do –inf, do zera i do najbliższej A w IEEE 754: 0 1 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 s exponent mantissa g r s A z bitami GRS : 0 1 1 0 0 1 0 1 0 1 0 1 0 0 s exponent mantissa g r s A zaokrąglone do zera 0 1 1 0 0 1 0 1 0 1 0 s exponent mantissa A zaokrąglone do -inf 0 1 1 0 0 1 0 1 0 1 0 s exponent mantissa A zaokrąglone do +inf 0 1 1 0 0 1 0 1 0 1 1 s exponent mantissa A zaokrąglone do najblizszej 0 1 1 0 0 1 0 1 0 1 1 s exponent mantissa B w IEEE 754 0 1 0 0 0 1 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 s exponent mantissa g B z bitami GRS: 0 1 1 0 0 1 0 0 1 1 1 0 0 0 s exponent mantissa g r s B zaokrąglone do zera 0 1 1 0 0 1 0 0 1 1 1 s exponent mantissa B zaokrąglone do -inf 0 1 1 0 0 1 0 0 1 1 1 s exponent mantissa Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 8 z 38 r s B zaokrąglone do +inf 0 1 1 0 0 1 0 0 1 1 1 s exponent mantissa B zaokrąglone do najblizszej 0 1 1 0 0 1 0 0 1 1 1 s exponent mantissa 1) dodawanie / odejmowanie 2) mnożenie 3) dzielenie Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 9 z 38 Każdą z podanych operacji na każdym poziomie wykonywanie, należy wykonywać na 35 bitach (łącznie z bitami G,R,S, których wartości na samych początku są zerami). Zaokrąglenia wg wybranego standardu należy wykonać po 3, a przed 4 krokiem. Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 10 z 38 Architektura Komputerów Lista 2 – Architektura listy rozkazów • Zad 1. a) i. Operacja 2b Tryb 1b Dana 5b Operacja 2b Tryb 1b Dana 13b Operacja 2b Tryb 1b Dana 29b ii. iii. Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 11 z 38 b) ============================ OR ===== sta R3 => akumulator ląduje w R3 nand R1 => negujemy akumulator /// akumulator=zanegowany_start sta => akumulator (zanegowany_start) ląduje w R2 R2 nand R3 => w R3 jest start a W R1 zanegowany_start więc wynik nand-a to FF nand src => do akumulatora wrzucamy zanegowany src nand R2 => w R2 mamy zanegowany_start, w akumulatorze zanegowane src, więc wynikiem nand-a będzie OR(start, src) =========================== ADD ===== sta R2 => akumulator ląduje w R2 nand R1 => negujemy akumulator /// akumulator=zanegowany_start nand R2 => w R2 jest start a W R1 zanegowany_start więc wynik nand-a to FF sta => wrzucamy do rejestru warunku FF z akumulatora R8 nand R1 => negujemy akumulator (jest w nim 00) STA R9 => do rejestru C ląduje 0 cadc R2 => do akumulatora ląduje wynik 0+start+0 cadc src => do akumulatora ląduje start + src +0 Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 12 z 38 =========================== SUB ===== sta R2 => akumulator ląduje w R2 nand R1 => negujemy akumulator /// akumulator=zanegowany_start nand R2 => w R2 jest start a W R1 zanegowany_start więc wynik nand-a to FF sta => wrzucamy do rejestru warunku FF z akumulatora R8 nand R1 => negujemy akumulator (jest w nim 00) STA R9 => do rejestru C ląduje 0 cadc src => do akumulatora ląduje wynik 0+src+0 nand R1 => w akumulatorze zanegowana druga liczba cadc R2 => w akumulatorze R2+zanegowane_src +0 =========================== INC ===== sta R2 => akumulator ląduje w R2 nand R1 => negujemy akumulator /// akumulator=zanegowany_start nand R2 => w R2 jest start a W R1 zanegowany_start więc wynik nand-a to FF sta R8 => do R8 (COND) wrzucamy FF sta R9 => do R9 wrzucamy FF, więc C (R9[0]) = 1 nand R1 => negujemy akumulator /// akumulator = 00 cadc R2 => COND != 0, więc akumulator = 00 + R2(start) + C (1) = start + 1 Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 13 z 38 =========================== XOR===== R2 R2 R4 R3 sta R2 => w R2 ląduje start nand R1 => negujemy akumulator /// akumulator=zanegowany_start nand R2 => w R2 jest 0 lub 1 a W R1 1 lub 0 więc wynik nand-a to 1 sta => wrzucamy do rejestru warunku 1 z akumulatora R8 nand R1 => negujemy akumulator (jest w nim 0) STA R9 => do rejestru C ląduje 0 cadc src => do akumulatora ląduje wynik 0+src+0 sta R3 => w R3 mamy src nand R2 => wynik negacji src i startu ląduje w akumulatorze sta R4 => akumulator do R4 nand R2 => wynik negacji R2 i R4 w akumulatorze sta R2 => wynik negacji R2 i R4 w R2 nand R1 => negujemy akumulator /// akumulator=zanegowany_start nand R2 => w R2 jest 0 lub 1 a W R1 1 lub 0 więc wynik nand-a to 1 nand R1 => negujemy akumulator (jest w nim 0) cadc R4 => w akumulatorze ląduje R4 nand R3 => w akumulatorze ląduje nand z R3 i R4 nand R2 => w akumulatorz ląduje wynik XOR = A xor src Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 14 z 38 =========================== PUSH ===== sta R2 => akumulator ląduje w R2 nand R1 => negujemy akumulator /// akumulator=zanegowany_start nand R2 => w R2 jest start a W R1 zanegowany_start więc wynik nand-a to FF nand R28 => akumulator = !R28 nand R1 => akumulator = R28 INC R1 => akumulator = R28+1 sta R28 => R28++ sta => akumulator ląduje w R2 R2 nand R1 => negujemy akumulator /// akumulator=zanegowany_start nand R2 => w R2 jest start a W R1 zanegowany_start więc wynik nand-a to FF nand Ri => akumulator = !Ri nand R1 => akumulator = Ri sta [R28] => na szczyt stosu odkładamy wartość z Ri =========================== DEC ===== sta R2 => akumulator ląduje w R2 nand R1 => negujemy akumulator /// akumulator=zanegowany_start sta => R3 = zanegowany_start R3 nand R2 => w R2 jest start a W R1 zanegowany_start więc wynik nand-a to FF sta R8 => do R8 (COND) wrzucamy FF sta R9 => do R9 wrzucamy FF, więc C (R9[0]) = 1 nand R1 => negujemy akumulator /// akumulator = 00 cadc R3 => COND != 0, więc akumulator = R3(zanegowany_start) + C (1) nand R1 => negujemy akumulator /// akumulator = start - 1 Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 15 z 38 =========================== POP ===== sta R2 => akumulator ląduje w R2 nand R1 => negujemy akumulator /// akumulator=zanegowany_start nand R2 => w R2 jest start a W R1 zanegowany_start więc wynik nand-a to FF nand [R28] => akumulator = ![R28] nand R1 => akumulator = [R28] sta Ri => Ri = wartość na szczycie stosu sta R2 => akumulator ląduje w R2 nand R1 => negujemy akumulator /// akumulator=zanegowany_start nand R2 => w R2 jest start a W R1 zanegowany_start więc wynik nand-a to FF nand R28 => akumulator = !R28 nand R1 => akumulator = R28 DEC R1 => akumulator = R28 – 1 sta R28 => R28-- • Zad 4. ============================ NEG ===== not R1,Rk => do R1 wrzucamy negację Rk not R2,R0 => do R2 wrzucamy FF (czyli -1 w U2) sub R1,R2,Rm => do Rm wrzucamy !Rk - (-1) (w U2) czyli !Rk+1 (!Rk w U2) ============================ ADD ===== NEG Rk,R1 => do R1 wrzucamy negację Rk sub Rm,R1,Rn => Rn = Rm – (–Rk) = Rm+Rk Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 16 z 38 ============================ AND ===== not R1, Rk => do R1 wrzucamy negację Rk not R2, Rm => do R1 wrzucamy negację Rm or R1,R2,Rn => sumujemy logicznie zaprzeczenia Rk i Rm not Rn, Rn => negujemy Rn, bo Rk + Rm = !(!Rk * !Rm) ============================ MOVE ===== not Rm, Rk => do Rm wrzucamy negację Rk not Rm, Rm => negujemy Rm alternatywnie SUB Rk, R0, Rm ; => Rm=Rk-0 Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 17 z 38 • Zad 5. ============================ SILNIA ===== br R6, LICZ => jeśli R6!=0 to skok do LICZ move R8, R0 => R8 = 00 not R7, R0 => R7 = FF neg R7 => negujemy FF w U2 (R7 = 01) br R7, KONIEC => jeśli R7!=0 to skok do KONIEC LICZ: move R8, R6 => do R8 przypisujemy wartość R6 move R9, R6 => do R9 przypisujemy wartość R6 not R7, R0 => do R7 przypisujemy FF czyli -1 w U2 add R9, R7, R9 => dekrementujemy R9 w U2 add R9, R7, R9 => dekrementujemy R9 move R10, R9 => do R10 przypisujemy wartość R9 move R11, R8 => do R11 przypisujemy wartość R8 POWROT: move R8, R11 => do R8 przypisujemy wartość R11 MNOZENIE: add R11, R8, R11 => dodajemy w mnożeniu add R9, R7, R9 => dekrementujemy R9 br R9, MNOZENIE => jeśli R9 != 0 to powrót do MNOZENIE add R10, R7, R10 => dekrementujemy R10 move R9, R10 => do R9 przypisujemy zdekrementowaną wartość R10 br R9, POWROT => jeśli R9 != 0 to powrót do POWROT KONIEC: Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 18 z 38 ============================ FIBONACCI ===== br R6, LICZ => jeśli R6!=0 to skok do LICZ move R8, R0 => R8 = 00 not R7, R0 => do R7 przypisujemy FF czyli -1 w U2 neg R7 => negujemy FF w U2 (R7 = 01) br R7, KONIEC => jeśli R7!=0 to skok do KONIEC LICZ: not R7, R0 => do R7 przypisujemy FF czyli -1 w U2 move R11, R6 => do R11 przypisujemy wartość R6 add R11, R7, R11 => R11--; br R11, LICZ2 => jeśli R11!=0 to skok do LICZ2 move R10, R6 => do R10 przypisujemy wartość R6 br R10, KONIEC => przechodzimy do KONIEC, wartość=1 LICZ2: move R8, R0 => R8 = 00 not R9, R0 => R9 = FF neg R9 => negujemy FF w U2 (R9 = 01) DODAWANIE: add R8, R9, R10 => dodajemy R10 = R8 + R9 move R8, R9 => R8 = R9 move R9, R10 => R9 = R10 add R11, R7, R11 => R11--; br R11, DODAWANIE => powrot KONIEC: Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 19 z 38 Architektura Komputerów Lista 3 – organizacja pamięci • Zad 1. Strona ma ustaloną wielkość, a wielkość segmentu zależy od zapotrzebowań procesu. Liczba stron jest ustalona i wynosi rozmiar_dostępnej_pamięci/wielkość_strony. Ilość segmentów zależy od ich wielkości i dostępnej pamięci, więc nie jest stała bo segmenty mogą mieć różne wielkości. W segmentacji użytkownik określa numer segmentu i odległość w segmencie, natomiast w stronicowaniu użytkownik określa pojedynczy adres, dzielony następnie przez sprzęt na numer strony i odległość. Fragmentacja wewnętrzna występuje w stronicowaniu (gdy przydzielana pamięć jest większa niż zamawiana). Fragmentacja zewnętrzna występuje w segmentacji (gdy suma wolnych obszarów w pamięci wystarcza na spełnienie zamówienia, ale nie tworzą one spójnego obszaru, przez co nie mogą zostać przydzielone procesowi). • Zad 2. Po usunięciu procesów P2 i P4 pamięć będzie wyglądała następująco: P1 250 P3 150 W 280 P5 200 W 168 W 632 A po wprowadzeniu P6, P7, P8 i P9 w zależności od algorytmu następująco: (a) pierwsze wpasowanie (ang. first fit — FF) – wrzucamy kolejne procesy w pierwsze wolne obszary, do których się zmieszczą. P1 250 P6 P8 W 140 80 60 P3 150 P9 W 110 58 P5 200 P7 200 W 432 (b) najlepsze wpasowanie (ang. best fit — BF) – wrzucamy kolejne procesy w najmniejsze wolne obszary, do których się zmieszczą. P1 250 P7 200 P8 80 P3 150 P6 140 W 28 P5 200 P9 110 W 522 (c) najgorsze wpasowanie (ang. worst fit — WF) – wrzucamy kolejne procesy w największe wolne obszary. P1 250 Rozwiązania List Zadań Architektura Komputerów P9 110 W 170 P3 150 W 168 P5 200 P6 140 P7 200 P8 80 W 212 Hejduk Przemysław Maślej Damian 20 z 38 • Zad 3. Pamięć początkowo będzie wyglądała następująco: W 100 W 500 W 200 W 300 W 600 A po wprowadzeniu procesów w zależności od algorytmu następująco: (a) pierwsze wpasowanie (ang. first fit — FF) – wrzucamy kolejne procesy w pierwsze wolne obszary, do których się zmieszczą. P 209 W 100 P 120 W 171 W 200 P 420 W 300 W 180 UWAGA!! Brak miejsca dla procesu o rozmiarze 430 (b) najlepsze wpasowanie (ang. best fit — BF) – wrzucamy kolejne procesy w najmniejsze wolne obszary, do których się zmieszczą. P 420 W 100 W 80 P 120 P 209 W 80 P 430 W 91 W 170 (c) najgorsze wpasowanie (ang. worst fit — WF) – wrzucamy kolejne procesy w największe wolne obszary. P 420 W 100 W 80 W 200 P 209 W 300 P 120 W 271 UWAGA!! Brak miejsca dla procesu o rozmiarze 430 Najlepiej zagospodarował pamięć algorytm BF, ponieważ tylko przy nim zmieściły się wszystkie procesy. • Zad 4. Jeden element typu char zajmuje 1 bajt pamięci, więc przy 16 bajtowych stronach zadeklarowanie tej tablicy zajmie 4 strony: Nr. 1 2 3 4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [0,0] [2,0] [4,0] [6,0] [0,1] [2,1] [4,1] [6,1] [0,2] [2,2] [4,2] [6,2] [0,3] [2,3] [4,3] [6,3] [0,4] [2,4] [4,4] [6,4] [0,5] [2,5] [4,5] [6,5] [0,6] [2,6] [4,6] [6,6] [0,7] [2,7] [4,7] [6,7] [1,0] [3,0] [5,0] [7,0] [1,1] [3,1] [5,1] [7,1] [1,2] [3,2] [5,2] [7,2] [1,3] [3,3] [5,3] [7,3] [1,4] [3,4] [5,4] [7,4] [1,5] [3,5] [5,5] [7,5] [1,6] [3,6] [5,6] [7,6] [1,7] [3,7] [5,7] [7,7] a) matrix[i][j] = (i)*8+j; Nr. 1 2 3 4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 0 16 32 48 1 17 33 49 2 18 34 50 3 19 35 51 4 20 36 52 5 21 37 53 6 22 38 54 7 23 39 55 8 24 40 56 9 25 41 57 10 26 42 58 11 27 43 59 12 28 44 60 13 29 45 61 14 30 46 62 15 31 47 63 Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 21 z 38 zamiana LIFO Stan Komórki bufora Błąd tabeli TLB początek x,x,x [0,0] 1,x,x TAK [0,1] 1,x,x [0,2] 1,x,x : : : : : : : : : [0,7] 1,x,x [1,0] 1,x,x [1,1] 1,x,x : : : : : : : : : [1,7] 1,x,x [2,0] 1,2,x TAK [2,1] 1,2,x : : : : : : : : : [3,7] 1,2,x [4,0] 1,2,3 TAK [4,1] 1,2,3 : : : : : : : : : [5,7] 1,2,3 [6,0] 1,2,4 TAK [6,1] 1,2,4 : : : : : : : : : [7,6] 1,2,4 [7,7] 1,2,4 Liczba błędów: 4 Współczynnik trafień: (64-4)/64 = 60/64 = 94% Rozwiązania List Zadań Architektura Komputerów zamiana LRU Stan Komórki bufora Błąd tabeli TLB początek x,x,x [0,0] 1,x,x TAK [0,1] 1,x,x [0,2] 1,x,x : : : : : : : : : [0,7] 1,x,x [1,0] 1,x,x [1,1] 1,x,x : : : : : : : : : [1,7] 1,x,x [2,0] 1,2,x TAK [2,1] 1,2,x : : : : : : : : : [3,7] 1,2,x [4,0] 1,2,3 TAK [4,1] 1,2,3 : : : : : : : : : [5,7] 1,2,3 [6,0] 4,2,3 TAK [6,1] 4,2,3 : : : : : : : : : [7,6] 4,2,3 [7,7] 4,2,3 Liczba błędów: 4 Współczynnik trafień: (64-4)/64 = 60/64 = 94% Hejduk Przemysław Maślej Damian 22 z 38 b) matrix[j][i] = (i)*8+j; Nr. 1 2 3 4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 zamiana LIFO Stan Komórki bufora Błąd tabeli TLB początek x,x,x [0,0] 1,x,x TAK [1,0] 1,x,x [2,0] 1,2,x TAK [3,0] 1,2,x [4,0] 1,2,3 TAK [5,0] 1,2,3 [6,0] 1,2,4 TAK [7,0] 1,2,4 [0,1] 1,2,4 [1,1] 1,2,4 [2,1] 1,2,4 [3,1] 1,2,4 x7 [4,1] 1,2,3 TAK [5,1] 1,2,3 [6,1] 1,2,4 TAK [7,1] 1,2,4 Liczba błędów: 18 Współczynnik trafień: (64-18)/64 = 46/64 = 72% Rozwiązania List Zadań Architektura Komputerów zamiana LRU Stan Komórki bufora Błąd tabeli TLB początek x,x,x [0,0] 1,x,x TAK [1,0] 1,x,x [2,0] 1,2,x TAK [3,0] 1,2,x [4,0] 1,2,3 TAK [5,0] 1,2,3 [6,0] 4,2,3 TAK [7,0] 4,2,3 [0,1] 4,1,3 TAK [1,1] 4,1,3 [2,1] 4,1,2 TAK [3,1] 4,1,2 x7 [4,1] 3,1,2 TAK [5,1] 3,1,2 [6,1] 3,4,2 TAK [7,1] 3,4,2 Liczba błędów: 32 Współczynnik trafień: (64-32)/64 = 32/64 = 50% Hejduk Przemysław Maślej Damian 23 z 38 • Zad 5. W przypadku gdy, adres strony znajduje się w buforze asocjacyjnym całkowity czas dostępu do pamięci wynosi 100ns + 20ns = 120ns, natomiast w przypadku braku adresu strony czas wynosi 100ns + 20ns + 100ns = 220ns. Wzór na średni czas dostępu dla powyższych danych przy współczynniku trafień β: β * 120ns + (1- β) * 220ns a) 0,8 * 120ns + 0,2 * 220ns = 140ns b) 0,9 * 120ns + 0,1 * 220ns = 130ns • Zad 6. Jedno zadanie zajmuje w pamięci 8 stron każda po 1024 bajty czyli wielkość pamięci którą zajmuje jedno zadanie jest równa 213 bajtów. Są 32 ramki, czyli zarazem pamięć może pomieścić 32 strony, czyli 4 zadania, a więc rozmiar pamięci fizycznej jest równy 4 razy 213 bajtów czyli rozmiar pamięci fizycznej jest równy czyli w sumie 215 bajtów. Selektor strony składa się z 5 bitów, gdyż stron jest 25. Jedna strona zajmuje 210 bajtów. Więc offset jest 10 bitowy, selektor strony 5 bitowy więc adres liniowy składa się z 15 bitów. Natomiast adres logiczny składa się z 10 bitów offsetu i 3 bitów selektora strony danego zadania. Czyli w sumie ma 13 bitów. • Zad 7. Adres logiczny jest pamiętany jako nr_segmentu:odległość_w_segmencie, tak więc dla przykładu: adres logiczny 0:430 odpowiada adresowi fizycznemu 219+430=649 a) 0:430 => 649 b) 1:11 => 2311 c) 1:10 => 2310 d) 2:500 => błąd (odległość w segmencie jest większy od rozmiaru segmentu) e) 3:400 => 1727 f) 4:112 => błąd (odległość w segmencie jest większy od rozmiaru segmentu) Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 24 z 38 • Zad 8. Segmentacja stronicowana polega podziale pamięci na strony, strony są grupowane w tablice stron, w których znajdują się adresy stron w pamięci fizycznej, natomiast tablice stron są grupowane w segmenty. Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 25 z 38 Architektura Komputerów Lista 4 – Pamięć Podręczna • Zad 1. Pamięć jest podręczna jest 4-drożna, więc w każdym bloku występują 4 linie. Pojedyncza linia zawiera 16 bajtów, a ponieważ bloków jest 64 to w sumie rozmiar pamięci podręcznej jest równy 64*16bajtów*4= 212B (4096B) Adres logiczny ma postać X X X X X Y Y Y Y Y Y Y Y Y Y Y 5 bitów 11 bitów 5 bitów bo aby zapisać numer ramki potrzeba 25 bitów (bo są 32 ramki) 11 bitów to przesunięcie w ramce (offset) bo ramka ma rozmiar 211B Adres rzeczywisty ma 16 bitów • Zad 2. Pojemność bufora jest równa ilości linii pomnożonej przez rozmiar linii czyli a) 256*32 = 213 bajtów b) 512*64 = 215 bajtów c) 1024*128 = 217 bajtów Indeks słowa: a) 256 linii : 2 (ilość linii na blok) = 128 bloków Indeks bloku = log2 128 = 7 bitowy Jedna linia ma rozmiar 32 bajtów, słowo jest 2-bajtowe, więc w 1 linii mieści się 16 słów, więc aby zaadresować dane słowo potrzeba 4 bitów bo 24=16 Etykieta adresu = rozmiar_adresu_fizycznego-indeks_bloku-indeks_slowa=32-7-4=21 b) 512 linii : 4 (ilość linii na blok) = 128 bloków Indeks bloku = log2 128 = 7 bitowy Jedna linia ma rozmiar 64 bajtów, słowo jest 2-bajtowe, więc w 1 linii mieszczą się 32 słowa, więc aby zaadresować dane słowo potrzeba 5 bitów bo 25=32 Etykieta adresu = rozmiar_adresu_fizycznego-indeks_bloku-indeks_slowa=32-7-5=20 c) 1024 linii : (8 ilość linii na blok) = 128 bloków Indeks bloku = log 2 128 = 7 bitowy Jedna linia ma rozmiar 128 bajtów, słowo jest 4-bajtowe, więc w 1 linii mieszczą się 32 słowa, więc aby zaadresować dane słowo potrzeba 5 bitów bo 25=32 Etykieta adresu = rozmiar_adresu_fizycznego-indeks_bloku-indeks_slowa=32-7-5=21 Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 26 z 38 • Zad 3. Sterownik pamięci wypełnia pojedynczą linię pamięci podręcznej w trybie zapisu blokowego 4 słów 64 bitowych, więc rozmiar pojedynczej linii powinien być równy 4*64bity = 32 Bajty W jednym bloku znajdują się 2 linie, bo pamięć podręczna jest dwudrożna. Bloków jest 8 więc w sumie mamy 16 linii. Każda linia ma rozmiar 32 bajtów więc całkowity rozmiar pamięci podręcznej jest równy 29 bajtów. Przestrzeń adresowa wynosi 216 bajtów = rozmiar adresu fizycznego to 16 bitów. Indeks bloku ma rozmiar log2 8 = 3bity. Indeks słowa ma rozmiar 5 bitów, bo rozmiar linii to 32 bajty (25) Więc etykieta adresowa = 16 – 3 – 5 = 8b Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 27 z 38 • Zad 4. Przestrzeń adresowa pewnego procesora wynosi 244 bajtów, czyli M=44. Adres bazowy strony fizycznej jest 32-bitowy, więc może zaadresować 232 stron, czyli M-N=32. Tak więc N=12, czyli strona ma rozmiar 212 bajtów. Pamięć podręczna L2 ma pojemność równa rozmiarowi 8 stron, czyli 212 *23=215 bajtów. Sterownik pamięci L2 realizuje wypełnienie linii w trybie transferu blokowego 4 słów 32bitowych, więc jedna linia ma rozmiar 4*32bity = 27bitów = 24 bajtów Jeśli pamięć będzie zorganizowana jako czterodrożna/dwudrożna to jedna linia pamięci powinna zawierać 16 / 16 bajtów a w każdym bloku powinno być 4/2 linie. Indeks słowa jest 4 bitowy, bo rozmiar linii wynosi 24 bajtów. W L2 mamy 24 bajtów na linię, więc rozmiar bloku wynosi 26 / 25 bajtów. Ilość bloków to rozmiar pamięci podręcznej podzielony przez rozmiar bloku, czyli 29 / 210. Indeks bloku (cache index) powinien więc zawierać 9 /10 bitów. Etykieta adresu (line label ) to całkowita przestrzeń adresowa pomniejszona o indeks słowa i indeks bloku (44 – 4 – 9/10), czyli 31 / 30 bitów. Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 28 z 38 • Zad 5 Rysunek przedstawia algorytm wyznaczania linijki w pamięci zorganizowanej w cztery kanały (4 linijki w jednej sekcji). Przy takiej organizacji, w katalogu cache każdym czterem linijkom stanowiącym sekcję, są przypisane trzy bity LRU (B0-B2). W trakcie kolejnych odczytów danych z linijek w sekcji, bity LRU są ustawiane w następujący sposób: -B0 jest 1 gdy ostatni dostęp do kanału 0 lub kanału 1 okazał się trafieniem -B1 jest 1 jeśli trafiony był kanał 0 lub zeruje jeśli kanał 1 -B0 jest 0 się jeśli trafienie było w kanale 2 lub 3 -B2 jest 1 jeśli trafienie było w kanale 2, zeruje jeśli w kanale 3 Algorytm LRU z wykorzystaniem 6 bitów. Rejestry używane do reprezentacji informacji to B0, B1, B2, B3, B4, B5 B0 B2 B4 B1 B3 B5 00 01 10 11 L1 L2 L3 L4 0 1 0 1 1 1 W powyższym przykładzie najrzadziej używane było L1 (nie ma go na liście) Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 29 z 38 • Zad 6 W dwupoziomowej inkluzywnej pamięci podręcznej, po jednoczesnym wypełnieniu, ich linie zostały zamarkowane jako E (exclusive). Jak zmieni sie markowanie linii : a) po wykonaniu kolejnego odczytu: (L1) E (L2) E b) po wykonaniu zapisu: (L1) M (L2) E Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 30 z 38 (L1) I (L2) I c) po zainicjowaniu transmisji DMA do pamięci głównej (zapis) Obie pamięci zmieniają zamarkowanie, bo przechodzę po bitach mesi obu pamięci podręcznych aby dojść do głównej d) po chybieniu przy odczycie w L1 i jednoczesnym trafieniu w L2 Rozwiązania List Zadań Architektura Komputerów (L1) E (L2) E Hejduk Przemysław Maślej Damian 31 z 38 HIERARCHIA L1 / \ L2 / \ MEMORY // Każdy obiekt zawarty w wyższej warstwie jest również obecny w warstwie niższej • Zad 7 Pamięć L1 działa w trybie WO, a pamięć L2 w trybie CB a) Zapis L1 E L2 M b) Odczyt L1 S L2 E c) Zainicjowanie transmisji DMA (odczyt) L1 S L2 E d) Zainicjowanie transmisji DMA (zapis) L1 I L2 I Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 32 z 38 • Zad 8 a) z przeplotem Mamy ośmiodrożną pamięć podręczną, czyli w jednym bloku mamy 8 linii. Rozmiar 1 linii to 256B czyli rozmiar jednego bloku to 8*256B = 2048B = 2KB Pamięć podręczna składa się z 64KB/2KB = 32 bloków. Linii jest w sumie 32 bloki* 8 linii = 256 linii Indeks bloku jest 5 bitowy, natomiast 8 bitowy jest indeks słowa więc odległość między pierwszymi bajtami bloków to 2(5+8) B = 213 B A A A A A A A A A A A A A A A A A A A A A A A A A B B B B B S S S S S S S S Indeks bloku Etykieta adresu Indeks słowa b) bez przeplotu B B B B B A A A A A A A A A A A A A A A A A A A A A A A A A S S S S S S S S Indeks bloku Etykieta adresu Indeks słowa W tym przypadku odległość między pierwszymi bajtami bloków to 28bajtów Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 33 z 38 Architektura Komputerów Lista 5 – Tryb chroniony i przewidywanie rozgałęzień • ZAD 1 Rozwiązanie podano dla procesorów firmy Intel wskaźnik stosu aktualny 2b B int f[b] 10B char e10] 2B int d EBP (wskaźnik ramki) 4B Adres powrotu 4B *a 2B b 2B c EBP – wartość wskaźnika ramki stosu Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 34 z 38 • ZAD 2 1) Tryb rzeczywisty Można zaadresować 2 20 = 1MB Pamięć jest podzielona na segmenty po: 64kB (rozmiar rejestrów) Występuje tylko segmentacja Adres się składa z selektora segmentu i przesunięcia | 16*S + P| 2) Tryb chroniony – segmentowanie i stronicowanie Każdy segment ma swoją tablicę stron. Selektor segmentu jest 16-bitowy Przesunięcie 32 bity • ZAD 3 Mamy 10000 instrukcji, co 10 jest skokiem więc mamy 1000 skoków. Instrukcja i trafiony skok zajmują po 1 cyklu. a) 5 etapów 80% 80% z 1000 to 800, więc 200 skoków zajmuje po 5 cykli (bo 5 etapów) W sumie mamy 9800 cykli + 200 skoków po 5 cykli czyli w sumie 10800 cykli b) 20 etapów 90% 90% z 1000 to 900, więc 100 skoków zajmuje po 20 cykli (bo 20 etapów) W sumie mamy 9900 cykli + 100 skoków po 20 cykli czyli w sumie 11900 cykli • ZAD 4 a)222 bajtów = 4MB 22 bity to jest offset Selektor segmentu to pozostałe 10 bitów Ponieważ adres 32 bitowy Wiec 10 bitów na określenie strony czyli 210 stron Każda strona = 1 deskryptor wiec rozmiar tablicy deskryptorów to 210 * 4bajty = 212 bajtów. b) mamy 4-kilobajtowe strony, dlatego offset jest zapisany na 12 bitach bo 212 to 4kb Jest jeden katalog, który przechowuje deskryptory tablic stron, czyli deskryptorów w katalogu jest 210. Rozmiar deskryptora to 4B, czyli rozmiar katalogu to 212B. Mamy 210 tablic stron, a w każdej tablicy stron mamy 210 deskryptorów po 4B, czyli w sumie tablice stron zajmują 222B Rozmiar pamięci niezbędny do przechowywania wszystkich tablic stron, to rozmiar katalogu i rozmiar tablic stron czyli 222B + 212B Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 35 z 38 • ZAD 5 Adres wirtualny – ilość bitów potrzebna do zaadresowania segmentu – ilość bitów adresu bitów potrzebna do zaadresowania deskryptorów stron = 40 -3 – 12= 25 Przestrzeń adresów liniowych czyli rozmiar obszaru pamięci, którą adresują adresy liniowe. Po odjęciu 16 bitów indeksu w tablicy stron pozostaje nam offset czyli przesunięcie na stronie równe 9 bitów. Offset zajmuje 9 bitów. Bity adresu fizycznego bez offsetu tworzą adres bazowy strony. Więc 32-9=23 Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 36 z 38 • ZAD 6 a) b) c) d) … nttnt (t) … ttnnt (n) … ntntt (t) … ttntn (t) Szukamy ostatniej pary powtórzonych skoków, jeżeli jest to tt, to następnym skokiem będzie t a jeżeli nn, to następnym skokiem będzie n. Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 37 z 38 Mamy nadzieję, że przedstawione powyżej rozwiązania, pomogą w zrozumieniu zawiłości Architektury Komputerów I Serdecznie dziękujemy za sprawdzenie poprawności i korektę błędów mgr Bartoszowi Wojciechowskiemu Rozwiązania List Zadań Architektura Komputerów Hejduk Przemysław Maślej Damian 38 z 38