Architektura Komputerów
Test 1.
Przykładem ortogonalności architektury jest:
domyślne użycie akumulatora (AX lub DX:AX) przy mnożeniu w procesorze 8086;
realizacja funkcji pełnego zestawu trzech funkcji logicznych: AND, OR, NOT;
umożliwienie stosowania dowolnego trybu adresowania w każdej operacji arytmetycznej;
podwójne zero w arytmetyce zmiennoprzecinkowej;
w procesorach MC680x0 możliwość użycia dowolnych operandów w rozkazach MOVE.
Przy współpracy procesora z pamięcią o organizacji słowowej umieszczenie kodu pierwszego rozkazu programu na granicy słowa (adres parzysty):
zawsze skraca czas pobrania rozkazu;
nie jest możliwe przy bajtowej strukturze kodów rozkazu;
upraszcza adresowanie kolejnych rozkazów;
wymusza słowową strukturą wszystkich danych.
Implementacja mechanizmu predekrementacji i postinkrementacji adresu:
ułatwia organizację wielu stosów programowych;
komplikuje dostęp do urządzeń zewnętrznych;
upraszcza operacje na danych wielokrotnej precyzji;
Wskaż prawdziwe stwierdzenia:
kod U2 jest kodem pozycyjnym;
kod z obciążeniem (+N) zachowuje relację uporządkowania liczb;
operacje arytmetyczne w kodzie U2 można wykonać w arytmometrze kodu binarnego NB;
przy wytwarzaniu 32-bitowego wyniku mnożenia liczb 16 bitowych w kodzie U2 nie może wystąpić nadmiar.
W standardzie zmiennoprzecinkowym IEEE 754 liczbami znormalizowanymi są:
nieskończoności;
liczby, których wykładnik ma kod 00...00;
liczby z przedziału [-1, +1];
nie-liczby (NAN);
liczby z przedziału [+1,+4];
Czas dostępu do pamięci głównej wynosi 120 ns, zaś czas dostępu do pamięci podręcznej 30 ns. Niepowodzeniem kończy się 20% zwrotów do pamięci podręcznej.
Współczynnik przyspieszenia dostępu do pamięci sca = [h + (1 - h) * (tpm / tca)]-1 = ......2,5.................... .
Średni czas dostępu do pamięci jest równy: ...........48.................... .
Zmiana organizacji pamięci powodująca dwukrotne zmniejszenie współczynnika nietrafień jest równoważna zastosowaniu pamięci podręcznej o czasie dostępu tca = ............18,75.............. . (20*100+80*30)/100
Uzasadnij potrzebę użycia cyfry chroniącej G (guard digit) przy mnożeniu liczb zmiennoprzecinkowych znormalizowanych.
ma to na celu eliminacje bledu niedokladnosci przy przesuwaniu znacznika podczas normalizacji
Wektory i tablice to typy: (strukturalne)
skalarne;
rekordowe;
wskaźnikowe.
Zjawisko migotania (trashing) pamięci podręcznej można złagodzić przez:
użycie pamięci podręcznej o krótszym czasie dostępu;
zwiększenie rozmiaru bloku jednostkowego (wiersza) w pamięci podręcznej;
zastosowanie wielodrożnej (set-associative) organizacji pamięci podręcznej;
zwiększenie liczby bloków odwzorowywanych w pamięci podręcznej.
Pamięć podręczna (cache):
jest pamięcią całkowicie asocjacyjną;
zawiera zawsze dokładnie jeden ciągły fragment pamięci głównej;
wymusza odnawianie zawartości pamięci głównej przy każdej operacji zapisu;
może być zrealizowana na dysku stałym.
Narysuj schemat generatora reprezentacji resztowej liczby 16-bitowej mod 15.
Dysponując instrukcjami procesora RISC (k, m, n = 0, 1, ..., 31):
sub Rk, Rm, Rn ; Rn ¬ Rk – Rm (różnica liczb w kodzie U2)
and Rk, Rm, Rn ; Rn ¬ Rk & Rm (iloczyn logiczny)
ldxw stała, Rn ; Rn ¬ stała (w kodzie U2!!)
zasymuluj instrukcje (wskazówka b =1 – b):
Move Rm, Rn |
Not Rn |
Add Rk, Rm, Rn |
or Rk, Rm, Rn |
; Rn ¬ Rm |
; Rn ¬ /Rn |
;Rn ¬ Rk + Rm |
; Rn ¬ Rk È Rm |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Test 2.
Przykładem kompletności architektury jest:
realizacja rozgałęzień zależnych od stanu dowolnego znacznika;
realizacja dwuargumentowej funkcji logicznej NAND zamiast zestawu funkcji logicznych;
możliwość stosowania dowolnego trybu adresowania w każdej operacji arytmetycznej;
realizacja wszystkich możliwych funkcji logicznych dwóch zmiennych.
Przenoszalność oprogramowania na poziomie systemu operacyjnego jest możliwa jeśli:
wszystkie programy mają postać kodu bezpośrednio wykonywalnego;
wszystkie programy przetłumaczono na ten sam język asemblerowy;
zdefiniowano maszyne wirtualną.
Z poniższej listy usuń (wykreśl) wszystkie typy, które nie są typami strukturalnymi:
tablice boolowskie;
zmienne zespolone;
znak ASCII;
wektory;
zestaw kolorów.
Podaj przykłady (intel 8086) rozkazów w których użyto adresowania:
zeroelementowego: .......................RETI............................. ;
jednoelementowego: .......................SHR, NOT......................... ;
dwuelementowego: .......................MOVE............................. ;
wieloelementowego: .......................ADD, OR.......................... .
Podaj wartość liczby, której 4 kolejne bajty umieszczone w pamięci, zgodnie z konwencją Big Endian (HH-H-L-LL) zawierają następujące bity (najstarszy - ... - młodszy - najmłodszy):
(...00) 10010101 (...01) 00010100 (...10) 01101001 (...11) 01111000,
a) w zapisie heksadecymalnym: .......95146978..................................... .
b) w kodzie U2: .......10010101 00010............................... .
c) w kodzie BCD: .......95146978..................................... .
W pamięci o organizacji słowowej wyrównanie kodu do granicy słowa:
skraca czas pobrania rozkazu; ?????????
wydłuża czas pobrania kodu przy bajtowej strukturze kodu maszynowego; xxxxxxxx
wymusza słowową strukturę wszystkich danych.
Implementacja mechanizmu predekrementacji i postinkrementacji adresu:
upraszcza operacje z użyciem stosu;
komplikuje dostęp do urządzeń zewnętrznych;
upraszcza operacje na danych wielokrotnej precyzji;
utrudnia operacje na łańcuchach.
Wskaż prawidłowe stwierdzenia:
kod uzupełnieniowy do 1 jest kodem wagowym;
po dodaniu liczb w kodzie uzupełnieniowym do 2 niezbędna jest korekcja wyniku;
w odejmowaniu liczb w kodzie uzupełnieniowym do 2 może występować nadmiar;
liczba dodawań przy realizacji algorytmu Booth’a w bazie 2 jest proporcjonalna do liczby bitów mnożnika;
dzielenie restytucyjne (odtwarzające reszty) jest szybsze od dzielenia nierestytucyjnego.
Przyspieszenie dodawania dwóch liczb stałoprzecinkowych, w porównaniu z czasem dodawania w sumatorze ze skrośną propagacją przeniesień (CLA) można uzyskać w układzie:
sumatora z propagacją przeniesień jednoczesnych (carry-lookahead);
sumatora z wybieraniem przeniesień dopełniających (carry select);
sumatorów przechowujących przeniesienia (CSA - carry save adder).
W standardzie zmiennoprzecinkowym IEEE 754 liczby bardzo małe (cech = 0B) to:
liczby nieznormalizowane;
nie-liczby (NAN);
liczby zdenormalizowane;
liczby ujemne.
Deadlock to:
zablokowanie obsługi przerwań;
realizacja pętli nieskończonej długości;
wzajemne zablokowanie procesów;
wykluczenie dostępu do wspólnych zasobów pamięci.
Pamięć wirtualna (VM):
jest adresowana symbolicznie w programie;
musi być podzielona na segmenty;
jest zawsze większa niż pamięć główna komputera;
jest relokowalna.
Zaletą stronicowania jest:
zmienna wielkość strony;
możliwość wykorzystania pamięci podręcznej (cache);
brak efektu fragmentacji pamięci głównej.
Pamięć podręczna (notatnikowa) (cache):
jest pamięcią typu RAM;
zawiera wiele ciągłych fragmentów pamięci głównej o tej samej wielkości;
wymusza potrzebę odnawiania pamięci głównej przy każdej operacji odczytu;????
może być zrealizowana w rejestrach procesora.??
Wartość kolejnej reszty częściowej w dzieleniu nierestytucyjnym jest 3D/4 (3/4 wartości dzielnika). Wyznacz na podstawie wykresu dzielenia 2 kolejne cyfry ilorazu.
Narysuj schemat 5-operandowego dwubitowego sumatora CSA.
Dysponując instrukcjami procesora RISC II:
sub Rk, Rm, Rn ; Rn := Rk - Rm
and Rk, Rm, Rn ; Rn := Rk & Rm
ldxw stała, Rn ; Rn := stała
Zasymuluj instrukcje:
or Rk, Rm, Rn ; Rn := Rk È Rm
not Rn ; negacja bitów
move Rn, Rm ; Rn:=Rm
UWAGA: R0 – rejestr zawierający stałą 0.
Test 3.
7-bitowy kod (w kolejności od najstarszego do najmłodszego bitu): 010101
reprezentuje pewną liczbę. Podaj tę liczbę jeśli tym kodem jest:
naturalny binarny (NB) .............85........................ ;
uzupełnieniowy do 2 (2’s complement) ........-43....................... ;
znak-moduł (sign-magnitude) ..................-21...............;
zmiennoprzecinkowy typu s-e-m (znak-cecha-mantysa) jeśli najstarszy bit jest bitem znaku, kolejne 3 bity określają wykładnik m mantysy w kodzie plus 3, a pozostałe bity określają moduł mantysy z przedziału <0,1) .............-5/16.......................... .
W języku pewnego asemblera występuje rozkaz odejmowania: SUBX SP, [SP+1]
Ile nastąpi co najmniej zwrotów do pamięci przy jego wykonaniu, jeśli drugi z argumentów jest argumentem docelowym? .................3.................. .
Czy bufor magistrali danych zawiera rejestry zatrzaskowe (latch)? ...................TAK.............. .
Ile co najmniej dekoderów typu 3 na 8 potrzeba do zaadresowania 23 różnych bloków pamięci przyłączonych do tych samych młodszych linii magistrali adresowej? Ile starszych linii tej magistrali musi zostać przyłączonych do wejść dekoderów? ...3... dekoderów ....5... starszych linii
Czy można zrealizować rotację wyłącznie przy użyciu operacji przesunięć arytmetycznych lub logicznych? TAK
W rejestrach procesora 12-bitowego umieszczono 2 liczby w kodzie uzupełnieniowym do 2:
011101101010
010100101111
Czy w wyniku dodania tych liczb powstanie:
nadmiar ..tak............TAK... ;
przeniesienie ..........NIE..... ?
Pamięć podręczna (notatnikowa) (cache):
jest pamięcią asocjacyjną;
zawiera zawsze dokładnie jeden ciągły fragment pamięci głównej;
wymusza potrzebę odnawiania pamięci głównej przy każdej operacji zapisu;
może być realizowana na dysku stałym.
Poniższy program (w mnemonice i8086) ma realizować dodawanie 13-bitowych liczb podanych w kodzie uzupełnieniowym do 2. Liczby umieszczono w pamięci w lokacjach słowowych L1 i L2, wynik jest umieszczany w miejscu drugiego argumentu. Popraw błędy.
MOV CL, 3
MOV AX, L1
ROL AX, CL
ROL L2, CL
ADC L2, AX
PUSHF
ROR L2, CL
POPF
Dysponując instrukcjami procesora RISC II:
sub Rk, Rm, Rn ; Rn := Rk – Rm
add Rk, Rm, Rn ; Rn := Rk + Rm
ldxw stała, Rn ; Rn := stała
zasymuluj instrukcje:
not Rn ; negacja bitów
neg Rn ; uzupełnienie dwójkowe
move Rn, Rm ; przesłanie Rn do Rm
UWAGA: R0 – rejestr zawierający stałą 0.
Test 4.
Generowanie kodu wynikowego w trybie kompilacji zamiast w trybie interpretacji:
zapewnia szybsze wykonanie programu;
zapewnia oszczędne użycie pamięci;
przyśpiesza wykonanie pętli programowych;
uniemożliwia dynamiczne definicje zmiennych.
Logiczne rozdzielenie przestrzeni adresowych pamięci i peryferali:
uniemożliwia użycie identycznych rozkazów dla obiektów umieszczonych w obu obszarach;
umożliwia implementację pamięci podręcznej;
uniemożliwia fizyczne rozdzielenie obszarów adresowych pamięci i peryferali;
uniemożliwia przesłania danych między tymi obszarami w trybie DMA.
Przy współpracy procesora z pamięcią o organizacji słowowej umieszczenie każdej danej na granicy słowa (adres parzysty):
przyspiesza przetwarzanie danych;
jest nieistotne w przypadku bajtowej struktury danych;
upraszcza adresowanie danych;
uniemożliwia przetwarzanie danych o strukturze bajtowej;
Adresowanie w trybie predekrementacji i postinkrementacji:
jest niezbędne w obszarze stosu;
utrudnia realizację operacji na łańcuchach danych;??
upraszcza operacje na danych wielokrotnej precyzji;
może być zastąpione adresowaniem względem licznika rozkazów.
Wskaż prawdziwe stwierdzenia:
zmiana znaku liczby w kodzie U2 jest zawsze wykonalna;
w symetrycznym kodzie z obciążeniem (+N) istnieją 2 różne kody liczby zero;
operacje arytmetyczne w kodzie NB można wykonać w arytmometrze kodu binarnego U2;
mnożenie liczb wielobajtowych w kodzie U2 można zrealizować jako sekwencję dodawań i mnożeń jednobajtowych w kodzie U2.
W standardzie zmiennoprzecinkowym IEEE 754 liczbami znormalizowanymi są:
nieskończoności;
liczby których wykładnik ma kod 11...11;
niektóre liczby z przedziału [-1, +1];
wszystkie liczby z przedziału [+1, +4].
Cyfra chroniąca G (guard digit):
jest niezbędna przy postnormalizacji wyniku dodawania zmiennoprzecinkowego; ????????
umożliwia dokładne obliczenie różnicy liczb zmiennoprzecinkowych o różnych znakach;
jest zbędna przy normalizacji ilorazu liczb znormalizowanych.
Czy jest prawdziwe stwierdzenie:
Im większy współczynnik przyspieszenia dostępu do pamięci sca=[h+(1-h)*(tpm/tca)]-1, tym krótszy średni czas dostępu do pamięci. TAK / NIE
Pamięć podręczna z odwzorowaniem bezpośrednim (direct mapped):
jest pamięcią całkowicie asocjacyjną;
zawiera zawsze dokładnie jeden ciągły fragment pamięci głównej;
wymaga odnawiania zawartości pamięci głównej przy każdej operacji zapisu.
Zjawisko migotania (trashing) pamięci podręcznej można złagodzić przez:
użycie pamięci podręcznej o krótszym czasie dostępu;
zwiększenie rozmiaru bloku jednostkowego (wiersza) w pamięci podręcznej;
zastosowanie wielodrożnej (set-associative) organizacji pamięci podręcznej;
zwiększenie liczby bloków odwzorowywanych w pamięci podręcznej.
Minimalny kontekst procesu obejmuje:
blok sterujący procesu;
segment danych;
licznik rozkazów;
rejestr stanu procesora.
Obsługa wejścia - wyjścia w trybie DMA:
wymaga przełączania procesów;
wyklucza wykorzystanie przerwań;
jest wolniejsza niż obsługa w trybie przerwań;
wymaga zatrzymania procesora.
Dysponując instrukcjami procesora RISC (k, m, n = 0, 1, ..., 31):
sub Rk, Rm, Rn ; Rn ¬ Rk – Rm (różnica liczb w kodzie U2)
and Rk, Rm, Rn ; Rn ¬ Rk & Rm (iloczyn logiczny)
ldxw stała, Rn ; Rn ¬ stała (w kodzie U2)
zasymuluj instrukcje:
add Rk, Rm, Rn |
or Rk, Rm, Rn |
Rn ¬ Rk + Rm |
Rn ¬ Rk È Rm |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Test 5.
Generowanie kodu wynikowego w trybie kompilacji zamiast w trybie interpretacji:
spowalnia wykonanie programu;
wymusza nieoszczędne użycie pamięci;
przyśpiesza wykonanie pętli programowych;
uniemożliwia dynamiczne definicje zmiennych.???
Logiczne rozdzielenie przestrzeni adresowych pamięci i peryferali:
wymaga użycia różnych rozkazów dla każdej z tych przestrzeni;
jest warunkiem fizycznej separacji przestrzeni adresowych;
uniemożliwia implementację stosu w przestrzeni adresowej pamięci.
Wyrównanie danych do granicy słowa maszynowego:
przyspiesza przetwarzanie danych;
nie ma wpływu na czas przetwarzania w przypadku bajtowej struktury danych;
upraszcza adresowanie danych;???
uniemożliwia przetwarzanie danych o rozmiarze mniejszym niż słowo maszynowe.
Adresowanie w trybie predekrementacji lub postinkrementacji:
jest niezbędne w obszarze stosu;
utrudnia realizację operacji na łańcuchach danych;
przyspiesza operacje na danych wielokrotnej precyzji;
może być zastąpione adresowaniem względem licznika rozkazów.
Wskaż prawdziwe stwierdzenia:
zmiana znaku liczby w kodzie U2 jest zawsze wykonalna;
w symetrycznym kodzie z obciążeniem (+N) istnieją 2 różne kody liczby zero;
operacje arytmetyczne w kodzie NB można wykonać w arytmometrze kodu binarnego U2;
mnożenie liczb wielobajtowych w kodzie U2 można zrealizować jako sekwencję dodawań i mnożeń jednobajtowych w kodzie U2.
W standardzie zmiennoprzecinkowym IEEE 754 liczbami znormalizowanymi są:
nieskończoności;
liczby których wykładnik ma kod 11...10;
wszystkie liczby z przedziału [-1, - 0.125];
niektóre liczby z przedziału [0, +4];
nie-liczby;
zero.
Cyfra chroniąca G (guard digit):
jest niezbędna przy postnormalizacji wyniku dodawania zmiennoprzecinkowego;
umożliwia dokładne obliczenie różnicy liczb zmiennoprzecinkowych o różnych znakach;
jest zbędna przy normalizacji ilorazu liczb znormalizowanych;
jest niezbędna do prawidłowego zaokrąglenia wyniku.
Czy jest prawdą, że współczynnik trafień w pamięci podręcznej (cache) oznacza krótszy średni czas dostępu do pamięci? TAK / NIE
Pamięć podręczna z odwzorowaniem bezpośrednim (direct mapped):
jest pamięcią całkowicie asocjacyjną;
zawiera zawsze dokładnie jeden ciągły fragment pamięci głównej;
wymaga odnawiania zawartości pamięci głównej przy każdej operacji zapisu.
Zjawisko migotania (trashing) pamięci podręcznej można złagodzić przez:
użycie szybszej pamięci podręcznej (o krótszym czasie dostępu);
zwiększenie rozmiaru bloku jednostkowego (wiersza) w pamięci podręcznej;
zastosowanie wielodrożnej (set-associative) organizacji pamięci podręcznej.
Minimalny kontekst procesu obejmuje:
blok sterujący procesu (process control block);
segment danych;
licznik rozkazów;
rejestr stanu procesora.
Obsługa wejścia - wyjścia w trybie DMA:
wymaga przełączania procesów;
wyklucza wykorzystanie przerwań;
jest wolniejsza niż obsługa w trybie przerwań.
Dysponując instrukcjami procesora RISC (k, m, n = 0, 1, ..., 31):
sub Rk, Rm, Rn ; Rn ¬ Rk – Rm (różnica liczb w kodzie U2)
and Rk, Rm, Rn ; Rn ¬ Rk & Rm (iloczyn logiczny)
not Rk, Rm ; Rm ¬ Rk (zaprzeczenie logiczne)
i wiedząc, że rejestr R0 jest tylko odczytywalny i zawiera stałą 0, zasymuluj instrukcje:
U waga: b = 1 – b, gdzie b jest wartością pojedynczego bitu.
add Rk, Rm, Rn |
or Rk, Rm, Rn |
move Rk, Rm |
Rn ¬ Rk + Rm |
Rn ¬ Rk È Rm |
Rm ¬ Rk |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Test 6
Jaką wartość oznacza i jakie ma rozszerzenie kod 8-bitowy 1011 0101, interpretowany jako:
|
Wartość dziesiętna |
Rozszerzenie 16-bitowe (zapis hexad.) |
Uzupełnieniowy do 2 (U2): |
|
|
Znak - moduł (S - M) |
|
|
W rejestrach procesora 32-bitowego umieszczono liczby w kodzie uzupełnieniowym U2:
0111 0010 1111 0110 0110 1010 1111 0110
0101 0110 1010 0010 1111 0110 1010 1111
W wyniku dodawania tych liczb ........ powstanie nadmiar stałoprzecinkowy, ponieważ
............................................................................................................................................................................
W wyniku odejmowania tych liczb ........ powstanie nadmiar stałoprzecinkowy, ponieważ
............................................................................................................................................................................
Dane programu z zadania 3 okazują dużą / niedużą / żadną lokalność przestrzenną / czasową oraz dużą / niedużą lokalność przestrzenną / czasową.
Linie dwupoziomowej pamięci podręcznej zostały jednocześnie wypełnione. W jakim trybie działają obie pamięci, jeśli po dokonaniu pierwszego zapisu markowanie L1 nie zmienia się, a markowanie L2 zmienia się na E? L1: WT / CB / WO, L2: WT / CB / WO. Po drugim trafionym zapisie stanami użytej linii będą odpowiednio: L1: .............., L2: ................ . Jak zmieni się markowanie:
po dokonaniu kolejnego trafionego zapisu: L1: .............., L2: ............... ;
po wymianie linii w L1 skutkiem chybienia przy jednoczesnym trafieniu w L2: L1: .............. ;
po zewnętrznym trafieniu w L1 przy odczycie pamięci głównej: L1: ............. .
Pamięć podręczna L2 mieści 8 stron o rozmiarze 4 KB każda. Sterownik pamięci L2 realizuje wypełnienie linii w trybie transferu blokowego 8 słów 32-bitowych. Jeśli pamięć będzie zorganizowana jako dwudrożna (2 - way set - associative) to linia powinna zawierać .......... bajtów, a w bloku powinno być .......... linii. Przestrzeń adresowa pamięci głównej ma 2 32 bajtów, zatem etykieta adresowa (identyfikator) linii powinna zawierać .......... bitów.
Na liście rozkazów procesora z zadania 7 są rozkazy rozgałęzień warunkowych uzależnionych od relacji wyniku dodawania / odejmowania względem zera (bge / ble / bne etykieta). Napisz program realizujący instrukcję warunkową:
If (R1 ³ R2) then (R1 := -R1) else (R2 := 0)
Wirtualna przestrzeń adresowa jednego procesu obejmuje 64 segmenty o pojemności 2 26 B. 16-bitowy selektor segmentu jest identyfikowany za pomocą ...... najbardziej znaczących bitów ...... - bitowego adresu logicznego. Segmenty są podzielone na strony, a każdy blok 8-drożnej zewnętrznej pamięci podręcznej obejmuje 4096 linii i może pomieścić 4 pełne strony. Wypełnienie linii wymaga 4 cykli odczytu na 64-bitowej magistrali danych. Rozmiar strony wynosi .......... KB. Wirtualna przestrzeń adresowa tego procesora obejmuje .................... GB. W translacji adresu strony wirtualnej na 32-bitowy adres fizyczny użytych jest .......... bitów.
Konflikt danych w przetwarzaniu potokowym może być złagodzony przez:
powielenie jednostek wykonawczych;
zastosowanie prognozy rozgałęzień;
użycie specjalnych jednostek wykonawczych;
rozdzielenie wewnętrznej pamięci podręcznej na pamięć kodu i pamięć danych;
Kolejne bajty 256-bitowych zmiennych całkowitych ZM1 i ZM2 umieszczono w pamięci w konwencji Big Endian. Arytmometr stałoprzecinkowy przetwarza argumenty 16-bitowe. Uzupełnij program dodawania tych liczb, przy założeniu, że dostępny jest tryb adresowania z postinkrementacją [Rx+], predekrementacją [-Rx] i skalowaniem adresu [sc * Rx + XX].
Uwaga: [offset XX] oznacza bajt/słowo zmiennej XX o najniższym adresie.
load.l R1, offset ZM1 ..... ; R1 <- adres początkowy I argumentu
load.l R2, offset ZM2 ..... ; R2 <- adres początkowy II argumentu
load.l R3, offset SUM ..... ; R3 <- adres początkowy sumy
cykl: load.w R0, [ ..... ] ; R015..0 <- [...]
addx.w R0, [ ..... ] ; R015..0 <- R015..0 + [...] + C
load.w [ ..... ], ..... ; [...] <- (suma częściowa)
dec R31 ; R31 <- R31 – 1 (liczba powtórzeń pętli)
bnz cykl
Dane programu z zadania 3 okazują dużą / niedużą / żadną lokalność przestrzenną / czasową oraz dużą / niedużą lokalność przestrzenną / czasową.
Dysponując instrukcjami procesora RISC (k, m, n = 0, 1, ..., 31):
sub Rk, Rm, Rn ; Rn ¬ Rk – Rm (różnica liczb w kodzie U2)
and Rk, Rm, Rn ; Rn ¬ Rk & Rm (iloczyn logiczny)
not Rk, Rm ; Rm ¬ Rk (zaprzeczenie logiczne)
i wiedząc, że rejestr R0 jest tylko odczytywalny i zawiera stałą 0, zasymuluj instrukcje:
Uwaga: b = 1 – b, gdzie b jest wartością pojedynczego bitu, kodem wartości –1 jest 11..111.
add Rk, Rm, Rn |
or Rk, Rm, Rn |
ld 1, Rk |
Rn ¬ Rk + Rm |
Rn ¬ Rk È Rm |
Rk ¬ 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|