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ą :
Nieskończoność- chyba, nigdzie nie jest to konkretnie napisane - ale na 89,1415% ok (to kod specjalny więc nie jest ani znormalizowana ani zdenormalizowana)
(1)1001,101(U2) - Znormalizowane - bo czemu nie? Podczas zapisu do float przesuwamy przecinek i jest ok
Pi = 3,14159
2^(-131)- Za duży wykładnik, w single precision floatach może być do 127
0- zera są do dupy :< jesli komus nie pasuje takie wytlumacznie, to ak str 77
NaN (nieliczba)nie jest znormalizowana. to kod specjalny więc ani znormalizowana ani zdenormalizowana. liczby zdenormalizowane to takie których wykładnik jest równy zero bo nie da się go bardziej zmniejszyć, ale możliwe było przesunięcie mantysy dzięki czemu zapisana liczba jest poprawna.
-1 wykładnik nie będzie równy zero bo mamy obciążenie więc liczba jest znormalizowana (0xhbf800000).
e=2,718282
8^448^44 = 2^132, więc zbyt duża potęga
0,00000000000001 to jest liczba ZNORMALIZOWANA bo miesci sie w przedziale od 1,18*10^(-38) a do tego wykladnik to -14, jak dodamy +127 to wychodzi 113 czyli liczba ktora spokojnie da sie zapisac na 8 bitach w IEEE-754
π^-1 = 0,318309, to raczej znormalizowane jest wg mnie (tzn da sie znormalizowac)
2^(-1131)
1+∞^(-1) - inf^(-1)=0 (sprawdzone w gcc i vs), 1+0=1, więc znormalizowane.
16^41- zbyt duża wartość.
3,14159^(-5) - ktoś może potwierdzić? potwierdzic nie moge ale tez bym tak zrobil
32^(-2031)
tg π/2
log10(123)
cos(0), rozważamy oczywiście wynik cosinusa
log2(log2(1))
sin(π/2)
2^129
Skutkiem normalizacji wyniku mnozenia zmiennoprzecinkowego może być:
nadmiar zmiennoprzecinkowy - 95 str. ak wydanie iv
niedomiar zmiennoprzecinkowy- potwierdzenie na 95 stronie AKIV - "Normalizacja może więc spowodować tylko zwiększenie wykładnika, czego skutkiem może być powstanie nadmiaru" - Jednak to odnosi sie do standardu IEEE754, natomiast w ogolnym przypadku moze wystapic i nadmiar i niedomiar. I teraz pytanie o co jasnie swietemu chodzilo:/
nieskończoność
utrata dokładności
Skutkiem normalizacji wyniku dodawania zmiennoprzecinkowego może być:
nadmiar zmiennoprzecinkowy
niedomiar zmiennoprzecinkowy
utrata dokładności
nieskończoność
Skutkiem normalizacji wyniku odejmowania zmiennoprzecinkowego może być: (takie same, jak w dodawaniu!)
nadmiar zmiennoprzecinkowy
niedomiar zmiennoprzecinkowy
utrata dokładności - dopiszmy na wszelki wypadek
NaN
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ć:
nadmiar zmiennoprzecinkowy(niepoprawne, wg. informacji z forum)
niedomiar zmiennoprzecinkowy (poprawne, uzasadnienie z forum poniżej)
nieskończonośćWedług testów z 2009 ta odpowiedź jest niepoprawna.
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:
Wymusza wymianę linii
Jest skutkiem błędnej prognozy skoku
Powoduje unieważnienie bufora
Powoduje zapis argumentu do pamięci głównej (RAM)
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:
Chybienia podczas zapisu - na tym polega AoW
Błędnej prognozy skokubo co to ma do rzeczy ?
Wywołania proceduryjak wyżej.
Trafienia podczas odczytu- nie ma żadnego powodu, dla którego linia miałaby być zmieniana
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:
Unieważnienie linii chybionej- bez sensu odpowiedź trochę
Wypełnienie jednej z unieważnionych linii
Usunięcie jednej spośród unieważnionych linii - nie wiem właśnie, czy to będzie dobra odpowiedź, chociaż no ta unieważniona linia jest usuwana - ale już wcześniej z niej nie korzystaliśmy, więc była jakby usunięta chociaż wciąż obecna kurde ale filozofuję
Przestój potoku
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:
Powoduje unieważnienie linii chybionej
Powoduje zmianę markowania przypadkowej linii
Wymusza wypełnienie linii, jeśli nie jest to zakazane
Powoduje przestój potoku
Linie pamięci podręcznej z odwzorowaniem bezpośrednim, wyposażonej w bufor zapisu, są aktualizowane w trybie ¸allocate on write". Chybienie podczas zapisu:
Wymusza wymianę linii
Powoduje wyjątek
Powoduje blokadę bufora zapisu
Powoduje przestój potoku
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:
Chybienia podczas zapisu
Zapełnienia bufora zapisu
Chybienia podczas odczytu
Pobrania antycypowanego - wątpilwa odpowiedź
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):
musi być wykonana przed dekodowaniem
Jest oparta na przesłankach statystycznych
nie jest weryfikowana podczas dekodowania
jest skuteczna dla skoku bezwarunkowego
jest skuteczna dla skoku warunkowego
Jest skuteczna dla skoku pośredniego (np. jmp [ebx])
Jest skuteczna średnio dla 90% skoków w przód
Jest nieskuteczna dla skoku warunkowego(to jest zle, 2007 rok, gr 3, gosc dostal max za to pytanie, a zaznaczyl, ze to nieprawda)
Powoduje przestój w potoku rozkazów
Gwarantuje poprawne wykonanie skoku w tył
Jest weryfikowana podczas dekodowania
Dynamiczna prognoza rozgałęzień (skoków):
Jest weryfikowana w etapie wykonaniaWeryfikacja następuje przy dekodowaniu.
Jest oparta na historii wykonywania skoku
Jest skuteczna dla rozkazu powrotu (RET)
Musi poprzedzać dekodowanie rozkazu
Jest nieskuteczna dla rozkazu skoku w przód(a tego nie skreślamy?) Jest skuteczna. Skreślamy.
Jest skuteczna dla skoku bezwarunkowegoStatyczna jest skuteczna, ale dynamiczna dla warunkowego.
Jest weryfikowana podczas dekodowania Jest weryfikowania. W książce tak piszą.
Może być połączona z prognozą statyczną (u biernata jest napisane, ze ma przed nia pierwszenstwo, czyli chyba moze) a dalej jest nawet "Stosowanie obu metod istotnie poprawia skuteczność prognozy"
Linia bufora prognozy skoków BTB zawiera następujące informacje:
adres rozkazu skoku
adres względny skoku
bity używalności tej linii
etykieta szansy (mozliwe wartosci ST, T, WT i NT) z forum
bit prognozy statycznej
kod rozkazu skoku
zasięg (adres względny) skoku- czy to jest to samo, co adres względny skoku? Chyba tak
kod kierunku skoku
adres docelowy skoku
(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:
Podczas wykonania każdego rozkazu skoku
Podczas prognozy wykonania
Podczas dekodowania rozkazu skoku
Zgodnie z regułą 90/50
po wykonaniu każdego skoku warunkowego (niby kłóci się z pierwszym, ale pierwssza odp. jest z 2005 i jest na pewno dobra, bo alternatywą było "przed wykonaniem"), a ta jest z 2009 i też jest na pewno dobra : /. istnieje też możliwość, że w 2005 były obydwie złe. ogólnie chuj.)
Skutkiem trafienia w buforze prognozy skoków BTB jest:
Wykonanie rozkazu skoku
Zmiana bitu kierunku skoku (w przód/tył)
Obliczanie adresu docelowego skoku
Ustawianie prognozy ¸Wykonaj skok" skąd jest ta odp? 12-06-2009, gr2, pyt4 (to jest zle imho, bo BTB to po prostu cache dla adresow skokow z aktualna prognoza, czy sie wykonaja, wiec odczytanie z niego linii nie jest jednoznaczne z wykonaniem skoku, ani ustawieniem takiej prognozy)przecież w tym teście nie ma takiej odpowiedzi! jest.
aktualizacja linii bufora
Skutkiem CHYBIENIA w buforze prognozy skoków BTB jest:
Wykonanie rozkazu skokuja jestem za tym, że skok się wykona - bo w BTB przechowywane są tylko te skoki które się wykonały. a co jak pierwszy raz napotkaliśmy instrukcję skoku? (to jest zle, BTB tylko ma zamieniac adres czegostam na adres skoku docelowego, czy jakos tak, nie zalezy od niego wykonanie skoku)
Zmiana bitu kierunku skoku (w przód/tył)
Obliczanie adresu docelowego skoku
Ustawianie prognozy ¸Wykonaj skok"
Zmiana adresu docelowego skoku
Wypełnienie lub wymiana linii bufora
Wymuszenie zmiany zawartości licznika rozkazów
W bloku aktywacji funkcji na stosie są umieszczone:
Adres powrotu
Wskaźnik poziomu zagnieżdżenia
Zmienne globalne
Poprzedni stan wskaźnika stosu toż to zwykła ramka stosu, więc wskaźnik na stos sami wrzucaliśmy na stos już w wywoływanej funkcji (czyli jest on elementem bloku aktywacji funkcji)
Kod rozkazu wywołania CALL
Wskaźniki struktur globalnych
Zmienne lokalne funkcji - nie jestem pewien, te zmienne nie są tworzone już w samej funkcji? są, ale dotyczą wywołania funkcji więc znajdują się w ramce stosu (bloku aktywacji funkcji)
Słowo stanu procesora
Parametry wykonania fukcji - w x86 chyba tak, ale w x86_64 to wszystko w rejestrach lądowało? w x86_64 bywa różnie, jeżeli parametry zmieszczą się w rejestrach to są w nich przekazywane, jezeli parametrow jest wiecej, niz rejestrow to ida przez stos
Tryb adresowania zmiennych lokalnych
Zwracana wartość funkcji -
Kod rozkazu powrotu funkcji RET
Wskaźniki lokalnych struktur danych tej funkcji
Licznik rekurencji
wskaźnik powiązania dynamicznego
wskaźnik powiązania statycznego
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
i
W bloku sterującym (PCB) każdego aktywnego procesu przechowywane są:
Stos programowy
Wskaźnik rekurencji procesu
Pełny kontekst procesora
Rozmiar zbioru roboczego procesu
Wskaźnik kontekstu pamięci
Wskaźnik zagnieżdżenia procesu
Zbiór roboczy procesu
Minimalny kontekst procesora
- prawda. dscn2199.jpg, zad. 5.
Wskaźnik powiązania procesu- nieprawda, taką informację zawiera kontekst procesora (połączenia do procesów współpracujących)
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:
Bity obecności, używalności i zapisu
Uprawnienia dostępu do strony
Skrót wirtualnego numeru (adresu) strony(to jest zle, dscn2199.jpg, zad. 6).
Numer (adres) ramki strony w pamięci głównej
Kod rozmiaru strony
Deskryptor strony w odwróconej tablicy stron (IPT) zawiera:
Bity używalności i modyfikacji
Wirtualny numer strony
Skrót wirtualnego numeru (adresu) strony
Adres strony rzeczywistej
Rozmiar ramki
Deskryptor strony w buforze tablicy stron (TLB) zawiera:
Bity obecności, używalności i zapisu
Skrót rzeczywistego numeru strony
Pełny wirtualny numer strony
Adres partycji, na której zlokalizowana jest strona
Skrót wirtualnego numeru (adresu) strony
Wskaźnik wypełnienia strony
Adres strony na dysku
(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:
Bity obecności, używalności i zapisu -?
Numer segmentu -?
Skrót rzeczywistego adresu segmentu
Rozmiar segmentu
Skrót rzeczywistego adresu strony
Rozmiar strony
"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
Braku strony na dysku odpowiedz skonstruowana na pdostaiwe adminowego tiraethowego pdfa
Wyjątku programowego s.131 Architektura Komputerów wydanie IV - "Przerwania precyzyjne mogą być skutkiem wykonania instrukcji"
Żądania obsługi we/wy
Żądań transmisji DMA
Krytycznych błędów sprzętu
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:
Zatrzymanie potoku
Zgłoszenie wyjątku
Podjęcie obsługi zgłoszenia
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:
Synchroniczne z programem
Skutkiem braku strony w pamięci
Skutkiem wystąpienia wyjątku
Żądanie obsługi we/wy może byś sygnalizowane jako:
Przerwanie precyzyjne
Wyjątek programowy
Żądanie transmisji DMA
Wyjątek jest skutkiem:
braku strony na dysku
błedu programowego
żądania obsługi we/wy
Błąd jednostki zmiennoprzecinkowej jest sygnalizowany jako:
przerwanie precyzyjne
wyjątek programowy
wywołanie systemowe
kontekst procesora obejmuje:
wskaźnik stosu uzytkownika i systemu
wskaznik zagniezdzenia procesu
adres bufora TLB(raczej tak ma byc...)
rozmiar zbioru roboczego procesu
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:
Pełny kontekst procesora
Wskaźnik zagnieżdżenia procesu
Słowo stanu procesora
Stan rejestru akumulatora
Procesor ma architekturę akumulatorową. Wskaż rozkazy spoza listy tego procesora
(JB str.47-49):
bgt Rx, Ry, offset
or Rx, Ry, A
add Rx
load A, [Rz] - are you siur? Wg Pytania testowe.pdf, sa podane strony, ale w pdfie z ksiazka biernata ich brakuje wiec nie moge zweryfikowac.siur, 'W opisie rozkazów arch.akum. specyfikowany jest tylko jeden arg., którym jest słowo w pamięci...', przykłady w książce to: add A(jako dodawanie [A] do akumulatora) i add#x A (jako dodawanie [A+x] do akumulatora, więc akumulator jest zawsze domniemany)
push Rxna pewno?? mam tu zestaw gdzie jest napsiane ze tylko "ADD" jest akumulatorowe, a ja mam zestaw gdzie jest dopisek, ze jest to szczegolny przypadek akumulatorowej, zwracam honor :*<sex>
load Rx, [A]
sub Rx, #3, A
Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora:
(JB 47-49)
bgt Rx, Ry, offset
nand Rx, Ry, A
add Rx, #1, Rz
store Rx, [Rz]
Procesor ma architekturę rejestr-pamięć. Wskaż rozkazy spoza listy tego procesora: (JB 47-49)
bgt offset
or [Rx], Ry
add Rx, [Ry], Rz (to chyba jest spoza, bo sa 3 argumenty, u biernata jest napisane, ze sa ZWYKLE 2 argumenty : / wiec w sumie nie wiadomo), wg tabeli 3.3 ze strony 49 jest spoza
load A, [Rx, Rz]
Maksymalny rozmiar wirtualnej przestrzeni adresowej zależy od:
rozmiaru stronyod tego raczej nie- Ozzy
rozmiaru wskaźników adresowych (chyba)
dopuszczalnej liczby procesów
zakresu relokacjii tego też nie
rozmiaru bufora TLB
pojemności pamięci wtórnej (dysku)
rozmiaru przestrzeni rzeczywistej
pojemności pamięci głównej
maksymalnego rozmiaru partycji
(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)
Wirtualna przestrzeń tego procesora obejmuje: 2^(14-2+32)=2^44 bajtow dobrze
Bufor TLB procesora powinien zawierać co najmniej 2^7 deskryptorów. dobrze
Jeśli skrót wirtualnego numeru strony jest 10-bitowy, to deskryptor w TLB powinien zawierać 6+2+44+10=62 bitów(a nie powinno ty byc jeszcze +32(chyba tyle ma adres strony rzeczywistej) - > nie wiem. ten wzor bodajze podal tiraeth. dobrze
Jeśli strona ma 256kB, to bufor TLB procesora powinien zawierać co najmniej 2^10 deskryptorów. (256 kb = 2^8 kb = 2^18 b)
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 ;)
Deskryptor w TLB ma rozmiar ..................... więc funkcja haszująca generuje ......-bitowy skrót adresu .................... .
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.
W procesorze tym można zdefiniować 2^9 różnych procesów. dobrze (czemu? a nie np 2^24 ? wg mnie jednostki pomieszałeś. 2^46 kB = 2^56B, zatem 2^56/2^32 = 2^24 ?? ale mogę się mylić, bo źle liczę...)
patrz czarrnuchu: pamiec glowna = 16GB = 2^4 * 2^30 = 2^34
zbior roboczy = 2^4 (liczba stron) * (rozmiar) 2^21 = 2^25
i nizej:
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
Odwrócona tablica stron IPT powinna zawierać 2^13 deskryptorów. dobrze
IPT = pamiec glowna / rozmiar strony = 34 / 21 = 13
Jeśli funkcja skrótu 2-krotnie skraca rozmiar wskaźnika, to deskryptor w IPT ma mieć rozmiar 7+62= 69 b. razej źle ( 46 + 23 = 69 )
moja propozycja 56 + 28 = 84
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ń adresowa tego procesora obejmuje 2^54 bajtów
Odwrócona tablica stron IPT powinna zawierać 2^10 lokacji -> lokacje = deksryptory
Funkcja haszująca generuje 12-bitowy skrót adresu 34-bitowego, więc tablica IPT powinna mieć rozmiar 46*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)
Wirtualna przestrzeń tego procesora obejmuje: 2^(16-1+32)=2^17 GB dobrze
Bufor TLB procesora powinien zawierać co najmniej 2^7 deskryptorów. dobrze
Jeśli skrót wirtualnego numeru strony jest 10-bitowy, to deskryptor w TLB powinien zawierać 6+2+47+10=65 bitów. dobrze
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