biernat pytania i odpowiedzi

Jutro przed południem idę z tymi pytaniami do zakowców. Jesli macie jakieś dodatkowe, to wpisujcie je na dole.

 

Legenda - Poprawnie Błędnie Komentarz do odpowiedzi. Pamiętaj, aby ustawić sobie pseudonim! (po prawej)

 

W formacie zmiennoprzecinkowym pojedynczej precyzji liczbami znormalizowanymi są :

 

Skutkiem normalizacji wyniku mnozenia zmiennoprzecinkowego może być:

 

Skutkiem normalizacji wyniku dodawania zmiennoprzecinkowego może być:

 

Skutkiem normalizacji wyniku odejmowania zmiennoprzecinkowego może być: (takie same, jak w dodawaniu!)

 

A CZYM SIĘ RÓŻNI DODAWANIE OD ODEJMOWANIA?!?! +1, fleg... -10, leman - sa inne odpowiedzi;] chyba że tak :3

 

Skutkiem normalizacji wyniku dzielenia zmiennoprzecinkowego może być:

mantysa w liczbie zdenormalizowanej ma postac 0,bbbbbbb czli jest z przedziału (0,1). A wykładnik to 0..0. Jeszcze jedna uwaga w materiałach w zasadzie wszystkich jest błąd podczas normalizacji wyniku mnożenia może wystapić tylko nadmiar bo mantysa wwyniku jest z przedziału [1,4), a normalizacja wyniku dzielenia może spowodować tylko niedomiar mantysa z przedziału (0,5;1], uzasadnienie jest w książce JB w rozdziale o typie zmiennoprzecinkowym. A pozatym tak jest logicznie w mnożeniu dwóch mantys postaci 1,bbbb * 1,bbbb nie można uzyskać 0,bbbbb a przez do niedomiar jest niemożliwy, analogiczne rozumowanie dla dzielenia. dzieląc liczbę postaci 1,bbbbb przez 1,bbbbb nie otrzymamy 10,bbbb, a zatem nadmiar nie może wystapić.

 

Aktualizacja linii bufora pamięci podręcznej o organizacji blokowo-skojarzeniowej (wielodrożnej) następuje w trybie "allocate on write".Jeśli wszystkie linie są wypełnione, to chybienie podczas zapisu:

 

Sterownik bufora pamięci podręcznej o organizacji blokowo-skojarzeniowej (wielodrożnej) działa w trybie ¸allocate on write". Jeśli wszystkie linie są wypełnione, to wymiana linii następuje wskutek:

 

Sterownik bufora pamięci podręcznej o organizacji asocjacyjnej działa w trybie ¸no allocate on write". Jeśli niektóre linie są unieważnione, to skutkiem chybienia podczas odczytu jest:

 

Aktualizacja linii bufora pamięci podręcznej o organizacji asocjacyjnej następuje w trybie "no allocate on write". Chybienie podczas odczytu po uprzednim unieważnieniu całego bufora:

 

 

Linie pamięci podręcznej z odwzorowaniem bezpośrednim, wyposażonej w bufor zapisu, są aktualizowane w trybie ¸allocate on write". Chybienie podczas zapisu:

 

Linie bufora pamięci podręcznej z odwzorowaniem bezpośrednim są aktualizowane w trybie ¸allocate on write", a bufor jest całkowicie wypełniony. Chybienie podczas zapisu:

• Wymusza wymianę linii

• Powoduje unieważnienie linii docelowej

• Powoduje blokadę bufora zapisu

• Powoduje przestój potoku

 

Linie pamięci podręcznej z odwzorowaniem bezpośrednim, wyposażonej w bufor zapisu, są aktualizowane w trybie ¸no allocate on write". Wymiana linii jest skutkiem:

 Za to pytanie Andrzej Gawron(tak samo Paweł Beder) dostał 3/4pkt. więc jedna odp jest źle. Mój typ: pobranie antycypowane. Typowalbym tak samo. Napewno nie chybienie podczas zapisu, bo to jest napisane w ksiazce Jaśnie Wielkiego Sumatora Fakt, NAoW polega na tym, że nie wrzucamy do cache podczas chybienia w zapisie

 

Statyczna prognoza rozgałęzień (skoków):

 

Dynamiczna prognoza rozgałęzień (skoków):

 

Linia bufora prognozy skoków BTB zawiera następujące informacje:

(http://cseweb.ucsd.edu/~j2lau/cs141/week8.html - z tego wynika, ze BTB ma tylko adres rozkazu skoku i adres docelowy skoku, no ale bity uzywalnosci sa potrzebne do okreslenia, kiedy co wywalic, wiec chyba tez beda).

 

Bufor prognozy BTB jest aktualizowany:

 

Skutkiem trafienia w buforze prognozy skoków BTB jest:

 

Skutkiem CHYBIENIA w buforze prognozy skoków BTB jest:

 

W bloku aktywacji funkcji na stosie są umieszczone:

zaznaczam od razu, że sam nie wiem co to jest ten "blok aktywacji funkcji", ale wynika z tego, że to nie jest to samo czym się bawiliśmy na laborkach. zainteresowanych odsyłam do strony 114

http://webcache.googleusercontent.com/search?q=cache:wWz1t13JtggJ:www.physd.amu.edu.pl/~k_raczkiewicz/pliki/akpp1.doc+blok+aktywacji+funkcji&cd=3&hl=pl&ct=clnk&gl=pl&client=firefox-a

i

http://pleple.ict.pwr.wroc.pl/zak/materialy/architektura_1/wyklad/AK-6-%20skoki%20i%20funkcje-ext.pdf

 

W bloku sterującym (PCB) każdego aktywnego procesu przechowywane są:

 

Pełny kontekst pamięci procesu jest przechowywany:

 w rejestrach procesora

• w odwróconej tablicy stron

• w buforze TLB

• w partycji przydzielonej procesowi

• w pamięci głównej

• w pamięci wtórnej

• na stosie programowym

• w pamięci podręcznej

-napewno nie kesz, napewno nie bufor TLB, napewno nie odwrocona tablica stron

-pamiec procesu moze byc na dysku, w pamieci glownej, a partycja przydzielona procesowi to czesc pamieci glownej, wiec chyba tez:P

-rejestry? kontekst procesora jak dla mnie

-stos? wydaje mi sie ze czesc kontekstu pamieci

We wtórnej wydaje się zbyt wolno, wydaje mi się że powinna być jedna: albo główna albo wtórna (raczej główna) Jest we dwoch, jest do tego ladny rysunek u biernata w ksiazce;P bo adresy wirtualne odzwierciedlaja tez te na dysku, wiec nieaktywne procesy chyba tam sa

 

Deskryptor ramki strony w odwróconej tablicy stron zawiera:

• bity obecności, używalności i zapisu

• adres rzeczywisty ramki

• numer strony wirtualnej

• rozmiar ramki

(tego tez nie wiadomo do konca. za te odpowiedzi i rozmiar ramki byly 3/4, czyli jedna jest zle. wytypowalem, ze to rozmiar ramki ;p) UPDATE: rozmiar ramki jest niepoprawny, czyli odpowiedzi sa ok.

 

Deskryptor strony w pełnej tablicy stron zawiera:

 

Deskryptor strony w odwróconej tablicy stron (IPT) zawiera:

 

Deskryptor strony w buforze tablicy stron (TLB) zawiera:

(3 ostatnie odp. sa z poprawki 2009, gr. 1)

Teraz ok:P Zawiera RWX(Bity), #VP(Skrót Virtual), VP(Virtual Page), RP(Real Page)

 

Deskryptor segmentu w tablicy segmentów zawiera:

"W ogólności deskryptor segmentu jest 64-bitową strukturą określającą  jednoznacznie położenie segmentu w pamięci, jego typ, rozmiar, prawa  dostępu oraz pozostałe informacje przydatne przy dostępie do segmentu w trybie chronionym procesora"

 

Przerwanie precyzyjne jest skutkiem

 

Przerwania nieprecyzyjne są skutkiem:

• braku strony w pamięci

• żądań obsługi we/wy

• wyjątków programowych

 krytycznych błędów sprzętu

 

Skutkiem niezablokowanego przerwania precyzyjnego jest:

Napewno dla przerwan precyzyjnych nie jest podejmowana od razu obsluga, mozna ja rozpoczac po zakonczeniu procesu. Wyjatek nie moze zostac zgloszony, bo wymaga on natychmiastowej obslugi a przerwanie jest precyzyjne, a zatrzymania potoku nie wiem:P strzelam ze tez jest niepoprawne. Zatrzymanie potoku jest prawidłowe!

 

Przerwanie programowe jest:

 

Żądanie obsługi we/wy może byś sygnalizowane jako:

 

Wyjątek jest skutkiem:

 

Błąd jednostki zmiennoprzecinkowej jest sygnalizowany jako:

 

kontekst procesora obejmuje:

Pełny kontekst procesora obejmuje rejestr stanu, licznik programu, rejestry ogólne, rejestry sterujace i połaczenia do procesów współpracujacych

wiec jedyne co mi pasi to rozmiar zbioru roboczego, choc nie wiem czy to to samo

 

Minimalny kontekst procesora aktywnego procesu zawiera:

 

 Procesor ma architekturę akumulatorową. Wskaż rozkazy spoza listy tego procesora

 (JB str.47-49):

 

 Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora: 

 (JB 47-49)

 

 Procesor ma architekturę rejestr-pamięć. Wskaż rozkazy spoza listy tego procesora: (JB 47-49)

 

Maksymalny rozmiar wirtualnej przestrzeni adresowej zależy od:

(tych odpowiedzi w ogole nie jestem pewny, wiec przydaloby sie to zweryfikowac jakos).

Wykreslilem te, ktore wg mnie sa napewno bledne;P Rozmiar wirtualnej przestrzeni adresowej moze byc duzo wiekszy niz fizyczna czy logiczna

 

Rozmiar logicznej przestrzeni adresowej zależy od:

• dopuszczalnej liczby procesów

• rozmiaru wskaźników adresowych

• rozmiaru segmentów

• maksymalnego rozmiaru partycji

(wszystkie odp. wymagaja weryfikacji)

 

 

Tak sobie postrzelalem tutaj nizej:P

Przekroczenie zakresu w odejmowaniu w kodzie znak-moduł jest sygnalizowane:

• jako przeniesienie równe 1

• jako bit znaku równy 1

• jako wskaźnik nadmiaru równy 1

• gdy znaki argumentów są jednakowe

 

Przekroczenie zakresu w dodawaniu i odejmowaniu w kodzie uzupełnieniowym U2 sygnalizuje:

• wskaźnik znaku

• wskaźnik nadmiaru

• wskaźnik przeniesienia

• przeniesienie równe 0

 

Przekroczenie zakresu w dodawaniu i odejmowaniu w naturalnym kodzie binarnym sygnalizuje:

• wskaźnik znaku

• wskaźnik nadmiaru

• wskaźnik przeniesienia

• przeniesienie równe 1

 

3. Zadania otwarte

 

Mojzi poprawia:

 

2009 poprawa test 1

 

Zbiór roboczy typowego procesu uruchamianego na procesorze 32-bitowym obejmuje 2^7 stron o rozmiarze 2MB. Rejestr identyfikatora jest 14-bitowym w tym 2 bity uprawnień. Pamięć główna ma 2GB. Deskryptor strony w buforze TLB zawiera 8 bitów kontrolnych (P, R/W, X, U/S, A, D, LRU1, LRU0)

2^10 deskryptorow, bo mamy 2^7 stron o rozmiarze 2MB (2^21 bajtow), czyli w sumie 2^28 bajtow. strona ma 256 kB, czyli 2^18 bajtow, a 28-18 = 10. tadam. << dokladnie, mialem zastoj w mysleniu ;)

 

 

Wzory:

Wirtualna przestrzeń  = (identyfikator-bity uprawnień + ilosc bitowy procesor)

tyle deskryptorów = ile stron

W przypadku 2^21 rozmiaru strony mamy 2^7 stron.

W przypadku 2^18 rozmiaru strony mamy 2^10 stron.

 

Idetyfikator linii to to samo, co etykieta adresu

 

Bufor pamięci podręcznej o organizacji 4-drożnej zawiera łącznie 2048 (2^11) linii 128-bajtowych. Procesor wytwarza 36-bitowe adresy fizyczne, a jednostką adresowania jest słowo 4-bajtowe. 

 

UWAGA W TYM WZORZE MAJA BYC SAME MINUSY !!!!!!!

sloth1989 napisal plus w wzorze i sie pojebalo troche,

ale biernat dal punkty komus za to ze policzyl wg wzrou z minusami

w moim pdfie jest blad of course, 

pamietajcie o tym bo nie chce miec -5 pkt na sumieniu u was :>

 

identyfikator linii = rozmiar adresu fizycznego - liczba blokow !!! - !!! ilosc slow w linii

!!!!!!!!!!!!!!!

 

W odwzorowaniu z przeplotem minimalna odległość linii jednego podzbioru wynosi 2^6 kB dobrze, a identyfikator linii ma 22 bitówdobrze

 

. Etykieta adresu (identyfikator) zawiera 22 bitów dobrze, a całkowita pojemność bufora wynosi 2^8 kB dobrze. 

Wzory:

Minimalna odległość to 2^(K+N), gdzie 2^K - rozmiar linii, 2^N - liczba bloków.

 

Rozmiar linii = 128 = 2^7

Liczba bloków = 2^11 / 2^2 = 2^9

 

Minimalna odległość 2^16 B = 2^6 kB

 

Identyfikator linii = rozmiar adresu fizycznego - liczba bloków - rozmiar slowa w linii

 

Słowo 4-bajtowe daje nam 32 słowa w linii, czyli 2^5. Rozmiar słowa w takim razie to 5.

(to zdanie jest jakies dziwne. moze chodzi o 32bity?)

patrzaj: mamy 128 bajtowa linie, a slowo ma 4 bajty, czyli mozemy miec 32 bajty w linii to jest 2^5, czyli rozmiar slowa to 5 :p, wiem ze to glupie, ale jakos tak sie to liczy :) czaje, thx.

 

Identyfikator linii = 36 - 9 - 5 = 22

 

Pojemność bufora to ilość linii * rozmiar linii, czyli 2^11 * 2^7 = 2^18 bajtów.

 

2009 poprawa test 2

 

Zbiór roboczy typowego procesu uruchamianego na procesorze 32-bitowym ma rozmiar 8 MB. Identyfikator aktualnie wykonywanego rpocesu jest 16-bitowy - w tym 2 bity informacji o prawach dostępu. Pamiec glowna ma 2GB. Deskryptor strony zawiera 6 bitow kontrolnych (skroty chyba nie istotne?).

Wirtualna przestrzen adresowa tego procesu zawiera 2^26MB dobrze

Bufor TLB procesora zawiera 2^5  -> ?? deskryptorow wszystkcih stron zbioru roboczego. dobrze :)))

wiem ze dobrze, ale dlaczego??? ;o

a tu mi brakowalo danych, to nie wiem, w sumie,

liczba deskrytproow = liczba stron = zbior roboczy / rozmiar strony =

8MB / xx =  2^23 / xx

 

!! halo halo

Deskryptor w TLB ma rozmiar ........., wiec funkcja haszująca generuje ..........-bitowy skrót adresu ........... ???

 !! umie to ktos??

 

 

Bufor pamieci podrecznej o organizacji 8-droznej zawiera lacznie 8192 (2^13) linii 64-bajty kazda. Procesor wytwarza 36-bitowe adresy fizyczne, a jednostką adresowana jest slowo 2-bajtowe. Etykieta adresu (identyfikator) linii zawiera 21 dobrze, a calkowita pojemnosc bufora wynosi 2^9 KB

Wzory:

 

Rozmiar linii = 64= 2^6

Liczba bloków = 2^13 / 2^3 = 2^10

 

Identyfikator linii = rozmiar adresu fizycznego - liczba bloków + rozmiar slowa w linii

 

Słowo 2-bajtowe daje nam 32 słowa w linii, czyli 2^5. Rozmiar słowa w takim razie to 5.

 

Identyfikator linii = 36 - 10 + 5 = 31 bitow

 

Pojemność bufora to ilość linii * rozmiar linii, czyli 2^13 * 2^6 = 2^19 bajtów

 

2009 poprawa test 3

 

Zbiór roboczy typowego procesu uruchamianego na procesorze 32-bitowym zawiera średnio 2^4 stron o rozmiarze 2MB. Wirtualna przestrzeń adresowa tego procesora obejmuje 2^46kB. Pamięć główna tego procesora ma rozmiar 16GB. Deskryptor strony zawiera 6 bitów kontrolnych.

ilosc procesow = pamiec glowna/ zbior roboczy = 2^34/2^25 = 2^9

 

A CHUJ! zle! powinno byc 2^46kB/2^32B=2^56B/2^32B=2^24 procesow

 

 

IPT = pamiec glowna / rozmiar strony = 34 / 21 = 13 

 

        a nasza to: 7+6+28+56=97b

        

        

        ADAM TO SEP PIERDOLONY!:P

 

tu jakis kolega nizej blad zrobil, bo jesli wirtualna przestrzen adresowa to wskaznik,

to mamy 46 kb = 56 bajtow , z f = n -> n /2 wychodzi 28,

i jesli to polega na tym (analogicznie robiac i myslac) ze dodajemy 56 + 28 = 84

Adres strony wirtualnej = Pamięć wirtualna/Rozmiar strony = 56-21=35

35+28=63?

 

Wzory:

 

Załóżmy że ilość zbiorów rezydentnych procesów wynosi 0. Procesy to rozmiar pamięci / rozmiar zbioru roboczego. Zbiór roboczy to ilość stron * rozmiar strony, zatem 2^4 * 2^21, czyli 2^25. Pamięć główna, 16GB to 2^34 bajtów.

 

Ilośc deskryptorów ITP to ile stron zmieści się w pamięci głównej. 2^34 / 2^21 = 2^13.

 

Dwukrotne skrócenie wskaźnika oznaczamy jako n -> n/2. Wirtualna przestrzeń adresowa ma 2^46, czyli adresujemy 46 bitów. Przechodzimy na 23 bity, czyli 69 bitów.

 

Bufor pamięci podręcznej o organizacji 4-drożnej ma pojemność 256 kB i zawiera lacznie 2^12 linii 64 bajtowych. Procesor wytwarza 40-bitowe adresy fizyczne, a jednostką adresowania jest słowo 32-bitowe. Identyfikatotr linii zawiera 32 (40-10-4 = 26) bitow 

blad bla d;p

rozmiar slowa wg. flega i jawora = log2(liczby bitow slowa) = 32 bity => 2^5 => 5...

40-10-5 = 25 ;p

Wzory:zja

Pojemność linii = 256 kb = 2^8 kb = 2^18 b

Rozmiar linii = 64 bajty

Ilość linii = pojemność bufora / rozmiar linii = 2^18 / (64 bajty = 2^6) = 2^12

Identyfikator linii = rozmiar adresu fizycznego - liczba bloków - rozmiar slowa w linii

rozmiar adresu fizycznego= 40

rozmiar linii = 64B, rozmiar slowa = 32 bity = 4 B, rozmiar slowa w linii to 16 czyli 2^4, rozmiar slowa to 4

liczba blokow = ilość linii / drożność = 2^12/2^2 = 2^10

 

 

2009 poprawa test 4

 

Zbiór roboczy typowego procesu uruchamianego na procesorze 32-bitowym obejmuje 2^7 stron o rozmiarze 2MB. Rejestr identyfikatora wykonywanego procesu jest 24-bitowy - w tym 2 bity informacji o prawach dostępu. Pamięć główna procesora ma 2GB, a procedury rezydentne systemu operacyjnego zajmują 512kB. Deskryptor strony zawiera 7 bitów kontrolnych. Bez wystąpienia migotania można jednocześnie uruchomić N= ............. halo halo? ktos wie

zbiór roboczy = liczba stron * rozmiar strony = 2^7 * 2 MB = 2^28 B

N = (pamięć główna - procedury rezydentne) / zbiór roboczy = (2 GB - 512 kB) / 2^28 B = (2^13 - 1) / 2^10 = 2^3 - (1/2^10) -> 

 

 

 

Wirtualna przestrzeń = 2^(32+24-2) = 2^54. doobrze

 

Lokacje to deskryptory (tak działa IPT). Zatem mamy 2^31 / 2^21 = 2^10 lokacji. dobrze

 (pamiec glowna/rozmiar strony)

 

12-bitowy skrót adresu, a sam adres to 2^54 / 2^21 = 2^34. 34+12 daje tam 46. A z tego najbliżej do 2^6 kB jeśli chodzi o rozmiar. 

 

jestem w stanie stwierdzic, ze ja ttego podpunktu nie zrobilem wlasnorecznie ;), to chyba tajret cos czarowal, ale chuj wie o co chodzi, jesli wiesz lepiej to popraw wedle uznania:), ja nie wyrocznia ^^

 

tajret <3 8====================O   (_(0)_)

goral: "ty, a to nie jest kutas?", mojzi:" to? , to jest kutas, sam narysowalem" ;D co to kurwa ma być ja pierdolę

 

up^ : A nie powinno być: ilosc bitów adresu strony + hash strony wirtualnej = ileśtam bitowy adres? Wtedy by wyszło 24+12 = 36 bitowy...

 

Bufor pamięci podręcznej o organizacji 4-drożnej  zawiera lacznie 4096 (2^12) linii 64 bajtowych. Procesor wytwarza 36-bitowe adresy fizyczne, a jednostką adresowania jest słowo 4 bajtowe. Etykieta adresu (identyfikator) zawiera 22 bitów, a całkowita pojemność bufora wynosi 2^8 kB. dobrze

Wzory:

Rozmiar linii = 64 = 2^6

Liczba bloków = 2^12 / 2^2 = 2^10

 

Identyfikator linii = rozmiar adresu fizycznego - liczba bloków + rozmiar slowa w linii

 

Słowo 4-bajtowe daje nam16 słowa w linii, czyli 2^4. Rozmiar słowa w takim razie to 4.

 

Identyfikator linii = 36 - 10 - 4 = 22

 

Pojemność bufora to ilość linii * rozmiar linii, czyli 2^12 * 2^6 = 2^18 bajtów.

 

2009 poprawa test 5

 

Zbiór roboczy typowego procesu uruchamianego na procesorze 32-bitowym obejmuje 2^7 stron o rozmiarze 2MB. Rejestr identyfikatora jest 16-bitowym w tym 1 bity uprawnień. Pamięć główna ma 4GB. Deskryptor strony w buforze TLB zawiera 8 bitów kontrolnych (P, R/W, X, U/S, A, D, LRU1, LRU0)

 

 

Bufor pamięci podręcznej o organizacji 4-drożnej zawiera łącznie 2048 (2^11) linii 128-bajtowych. Procesor wytwarza 36-bitowe adresy fizyczne, a jednostką adresowania jest słowo 4-bajtowe. W odwzorowaniu z przeplotem minimalna odległość linii jednego podzbioru wynosi 2^6 kB, a identyfikator linii ma 32 (36-9-5 = 22) bitów. dobrze

 

2009 poprawa test 6

 

Zbiór roboczy typowego procesu uruchamianego na procesorze 32-bitowym ma rozmiar 16 MB. rejestr identyfikatora procesu jest 24-bitowy, w ty m2 bity uprawnien. Pamiec glowna ma 4GB. Deskryptor strony w buforze TLB zawiera 9 bitow kontrolnych (skroty chyba nie istotne?). Strona ma rozmiar 256 kB

Wirtualna przestrzen adresowa tego procesu zawiera 2^(32+24-2) = 2^14 TB (dobrze)

Bufor TLB procesora powinien zwierac co najmniej 2^10 2^6 deksryptorow (dobrze)

il str = il deskr

il stron = zbior roboczy/ rozmiar strony = 16MB/ 256kB =2^24 / 2^18 = 2^6

 

Rozmiar strony 256kb = 2^18 b, wiec mamy 2^10 stron

Deskryptor w TLB ma rozmiar 80b, więc funkcja haszujaca generuje 17- bitowy skrót adresu wirtualnego

bo 80 - 54 (liczba bitów na wirtualna przestrzeń adresową) - 9 (liczba bitów kontrolnych) = 17

 

Bufor pamieci podrecznej o organizacji 8-droznej zawiera lacznie 8192(2^13) linii 64-bajtowych. Procesor wytwarza 36-bitowe adresy fizyczne, a jednostką adresowana jest slowo 2-bajtowe. Etykieta adresu (identyfikator) linii zawiera 21  bitow, a calkowita pojemnosc bufora wynosi 2^9 KB

Wzory:

Rozmiar linii = 64 = 2^6

Liczba bloków = 2^13 / 2^3 = 2^10

 

Identyfikator linii = rozmiar adresu fizycznego - liczba bloków - rozmiar slowa w linii

 

Słowo 2-bajtowe daje nam32 słowa w linii, czyli 2^5. Rozmiar słowa w takim razie to 5.

 

Identyfikator linii = 36 - 10 - 5 = 21

 

Pojemność bufora to ilość linii * rozmiar linii, czyli 2^13 * 2^6 = 2^19 bajtów.

 

UWAGA W TYM WZORZE MAJA BYC SAME  MINUSY !!!!!!!

sloth1989 napisal plus w wzorze i sie  pojebalo troche,

ale biernat dal punkty komus za to ze  policzyl wg wzrou z minusami

w moim pdfie  jest blad of course, 

pamietajcie o  tym bo nie chce miec -5 pkt na sumieniu u was :>

 

identyfikator linii = rozmiar adresu  fizycznego - liczba blokow !!! - !!!  rozmiar slowa linii

!!!!!!!!!!!!!!!

up ^ za późno :P

 

ZEBRANE WZORY DO OTWARTYCH

[malo tu tych wzorw ;p]

 

przestrzen  adresowa = bity procesora + bity identyfikatora procesu - bity  uprawnien

ilosc deskryptorow bufora tlb  procesora = liczba stron

ilosc  deskryptorow bufora tlb procesora = rozmiar zbioru roboczego / rozmiar  strony

rozmiar deskryptora w tlb = skrót  wirtualnego adresu strony + bity uprawnien + bity przestrzeni adresowej

ilosc procesow = rozmiar pamieci  glownej / rozmiar zbioru roboczego

tu jeszcze trzeba odjac rezydentne? Pewnie tak, jak cos wspomna-leman (ale tu chodzi o liczbe wszystkich mozliwych procesow, a nie mozliwych do uruchomienia w jednym czasie chyba - unK) wszystkie mozliwe to = przestrzen wirtualna / 2^ilosc_bitow_procka (wg bindera) nie wiem czy o to chodzi

 

rozmiar bufora pamieci = ilosc linii * pojemnosc linii

odleglosc  linii = rozmiar bufora pamieci / ilosc drog

rozmiar identyfikatora linii =  rozmiar adresu fizycznego - (liczba linii/ilosc drog) - rozmiar slowa w  linii

deskryptory w odwroconej tablicy  stron = rozmiar pamieci glownej / rozmiar strony

 

ASM:

gdzie jest treść zadania? wrzućcie, będzie łatwiej;d

1 gr.

 

    mov n, %ecx        ; n do rejestru ecx

    mov k, %esi        ; k do rejestru esi

    mov $1, %ebx      ; pierwszy dzielnik (1) do ebx

    mov n, %eax       ; pierwszy mnożnik (n) do eax

comb:

    dec %eax    ; kolejny czynnik (n-i) iloczynu

    mul %ecx    ; (edx:eax:=eax*ecx)

    inc %ebx    ; kolejny dzielnik

    div %ebx    ; (eax:=(edx:eax)/ebx, reszta w edx)

    cmp k, %ebx

    jne comb

 

Wynik programu jest w rejestrze eax.

Jeżeli n=-2, a k = 1, to program zwraca wartość ...

 

2 gr.

 

(imho tu jest coś zjebane, bo nie ma instrukcji, która modyfikuje licznik pętli, więc nieco zmodyfikowałem. jak ktoś ma pomysł (sprawdzony!), jak zapisać to tak, jak JB chce, to niech poprawi).

a po co tu licznik, skoro zwiekszamy esi, i porownujemy?

gdyby byl loop, to licznik bylby w ecx, ale tu jest skok

(wlasnie chodzi o to, ze dodalem zwiekszanie, bo na arkuszu nie ma na to miejsca ;p)

 

    xor %eax, %eax        ; wyzerowanie eax

    mov $10, %ecx          ; podstawa 10 do ecx

    mov $0, %esi            ; rozmiar argumentu N do esi 

pocz:

    mul %ecx                         ; suma:=suma*10

    mov LICZBA(%esi), %bl    ; kod ascii kolejnej cyfry ze zmiennej LICZBA do rejestru bl

    sub $'0', %bl

    add %ebx, %eax        ; suma:=suma+kolejna cyfra

    inc %esi                     ; dodane przeze mnie, imho inaczej sie nie da

    cmp N, %esi

    jne pocz

to ^ jest źle raczej

Zakładamy, że liczba jest zapisana odwrotnie

    xor %eax, %eax        ;  wyzerowanie eax

    mov $10, %ecx          ;  podstawa 10 do ecx

    mov N, %esi            ;  rozmiar argumentu N do esi 

pocz:

     mul %ecx                         ; suma:=suma*10

     mov LICZBA(%esi), %bl    ; kod ascii kolejnej cyfry ze zmiennej LICZBA  do rejestru bl

    sub $'0', %bl

     add %ebx        ; suma:=suma+kolejna cyfra

     dec %esi          

     jnz pocz      ; albo jgt, ale nie jestem pewien

 

Wynik programu jest w rejestrze eax.

Program zwraca poprawna wartość, jeśli 0 <= N <= 10 (bo max. liczba w eax to 2^32, czyli 4294967296, która ma 10 cyfr).

 

3 gr.

 

    mov $-1, %edx

    mov $-1, %eax    ; -1 do edx:eax

cykl:

    add $2, %eax      ; oblicz w edx:eax nastepna nieparzysta

    adc $0, %edx

    sub %eax, ZMIENNA

    sbb %edx, ZMIENNA+4

    jgt cykl

    shr $1, %eax

    rcr ...

 

Wynik programu jest w rejestrze/rejestrach eax. (?)

Jeśli ZMIENNA < 0, to program zwraca wartość 0 (?)

 

4. gr

 

    mov N, %ecx

    mov $1, %eax # F(0)

    mov $1, %ebx # F(1)

    cmp $1, %ecx

    jg fibonac

    mov $1, %ecx

fibonac:

    mov %ebx, %edx

    mov %eax, %ebx

    add %edx, %eax

    

    loop fibonac

 

 Wynik w ebx       

Jezeli N=0, to wynikiem jest 1:P

 

W 4-droznym odwzorowaniu blokowo-skojarzeniowym z przeplotem minimalna odleglosc(roznica adresow) linii jednego podzbioru wynosi 16kB. Kazda linia zawiera 128 bajtow a bufor cache ma pojemnosc 512kB. Procesor wytwarza ......-bitowe adresy fizyczne komoreko rozmiarze 1 bajt kazda.

chuj wie, brakuje danych? bo co nam da log2(16) ? 

tak, chyba brakuje czegoś o długości identyfikatora linii //Oz


Wyszukiwarka