1. Organizacja 4-blokowa po 2kB - razem 8kB. Tak wiec „dół” adresu wybiera miejsce w bloku. Miejsce to jest 4-krotnie powielone. Po aktywacji pp pp pobierając kod programu równocześnie kopiuje go w pp. Wybór linii odbywa się wg 11-tu linii najmłodszych bitów adresu (2kB). Do linii zostaje dopisane: góra adresu (21 bitów) oraz odczytywane bajty, ustawiony zostaje bit ważności „v”. Widać więc, że gdy pojawi się kontakt o takich samych dolnych bitach adresowych dane i „góra” adresu zostają przyporządkowane do tej samej linii. Aby nie pojawił się efekt nadpisywania (zamazywania) tworzy się struktury wieloblokowe (tu 4 bloki). Tak więc bez obawy „wypychania” pp może pomieścić w jednej linii 4 porcje informacji o takich samych dolnych adresach. Aby usprawnić przesyłanie danych przyjęto, ze najmniejszą porcją danych, na której operuje pp to 16 bajtów (ta porcjom operuje pp przy transferze blokowym magistrali).
Organizacja linii w pp (jest ich 128)
LRU |
V0 |
Górny adres 0 |
V |
16 bajtów |
Górny adres 1 |
Y |
16B |
Górny adres 2 |
V |
16B |
Górny adres 3 |
V |
16B |
#0 |
#1 |
#2 |
#3 |
#0,#1,#2,#3 - alternatywne linie w polu „górny adres” jest tez bit ważności linii „v”
Na blokach LRU zapisano informację o numerze linii najdawniej zapisanej - przy konieczności zapisu pod ta lokację pp linia ta zostanie „zamazana”.
2. Wpisz program, który wprowadzi do pamięci zewnętrznej stan początkowy rej. CR0 sterującego m.in. pp (bity CD i NW). Następnie pp, pośrednio przez akumulator, wyzeruje te bity inicjując pp. Kolejną czynnością będzie skok do samego siebie. Zostanie on odczytany dalej z pp i pp wstrzyma wykonywanie cykli zewnętrznych (skok =>JMP będzie pobierany z pp).
pref 66 |
MOV EAX,CR0 |
66,0F, 20, CO |
pref 66 |
MOV (#7000),EAX |
66,A3,00,70 |
pref 66 |
MOV EAX,#00000010 |
66,C7,C0,10,00,00,00 |
pref 66 |
MOV CR0,EAX |
66,0F,22,CO |
NOP |
90 | |
=> JMP |
EB,FE |
/przedrostek 66 wymusza rozmiar 32 bitowy rejestrów gdyż w trybie rzeczywistym, w którym znajduje się pp jest dostęp tylko do 16 bitów rejestrów (AX a nie EAX)
Program ten wpisz począwszy od lokacji #4000 pamiętając o odwrotnym początku bajtów.
Przekrokuj i zauważ, że:
- zapis pod 7000 jest dopiero po odczytaniu 32 bajtów kodu (kolejka) sprawdź stan początkowy bitów CD i NW