Układ wykonawczy, instrukcje i adresowanie Dariusz Chaberski
System mikroprocesorowy mikroprocesor C A D A D pamięć programu C BIOS dekoder adresów A C 1 C 2 C 3 A D pamięć danych C pamięć operacyjna karta graficzna magistrala adresowa magistrala danych sygnały sterujące A układy wejścia wyjścia D C klawiatura mysz stacja dyskietek 2
Jednostka centralna szyna sygnałow sterowania sygnały sterujące układ sterowania sygnały stanu wewnętrzna szyna danych układ wykonawczy wewnętrzna szyna adresowa 3
Układ wykonawczy akumulator rejestr tymczasowy rejestr znaczników rejestry ogólnego przeznaczenia wskaźnik stosu rejestr rozkazów licznik programu 4
architektura superskalarna rejestry ogólnego przeznaczenia FIFO sekwencer licznik programu 5
Instrukcje format 4 R: r k 1 r 0 O: o l 1 o 0 rodzaj operacji pierwszy operand O : o m 1 o 0 W: w n 1 w 0 drugi operand wynik R(W, F) = R(O, O, F) F - rejestr znaczników przykłady F [W] = [O] O F W = O [#O ] - dowolny operator 6
format 3 R: r k 1 r 0 O: o l 1 o 0 rodzaj operacji pierwszy operand O : o m 1 o 0 drugi operand R(A/O, F) = R(O, O, F) A - rejestr specjalny - akumulator przykłady F O = O F [#O] = O #O F A = O [#O ] 7
format 2 R: r k 1 r 0 O: o l 1 o 0 rodzaj operacji operand R(A/O, F) = R(A, O, F) przykłady F O = O F A = O F A = [A O] 8
format 1 R: r k 1 r 0 rodzaj operacji R(A, F) = R(A, F) przykłady F A = A F [A] = 0 F A = [A] 9
podział pełniona funkcja przesłań arytmetyczne logiczne sterujące warunkowe specjalne typ danych stałoprzecinkowe zmiennoprzecinkowe bitowe blokowe DSP - Digital Signal Processing SIMD - Single Instruction Multiple Data poziom uprzywilejowania 10
przesłania n bitowe międzyrejestrowe rejestry ogólnego przeznaczenia rejestry ogólnego przeznaczenia przeznaczenie przeznaczenie źródło akumulator D = S D = A D, S -rejestr przeznaczenia, źródła 11
przesłania pomiędzy rejestrami 2n bitowymi rejestry ogólnego przeznaczenia rejestry ogólnego przeznaczenia D 1 D 2 D H D L S 1 S 2 S H S L D 2 D 1 = S 2 S 1 D L = S H 12
przesłania pamięć-rejestr, rejestr-pamięć (kolejność bajtowa) rejestry ogólnego przeznaczenia pamięć RD H RD L AD: RS AS: AS+1: [AD] = RS RD H RD L = [AS] [AS + 1] 13
Kolejność bajtowa Big Endian - najbardziej znaczący bajt umieszczany jest w pamięci jako pierwszy pod najniższym adresem (na przykład procesory POWER) przykład 0x6FC9D (Big Endian, 32 bitowe rejestry) adres(przesunięcie) 0 1 2 3 zawartość 0x00 0x06 0xFC 0x9d Little Endian - najmniej znaczący bajt umieszczany jest w pamięci jako pierwszy (na przykład procesory Intel x86) 14
Instrukcje przesłania blokowe pamięć-pamięć DI: SI: pamięć CNT: DI: SI: licznik przesłań rejestr indeksowy przeznaczenia rejestr indeksowy źródła znacznik kierunku DIR 15
przesłania na stos i ze stosu (ochrona rejestru) LIFO n+4 n+3 n+2 n+1 n chroniony rejestr LIFO n+4 n+3 n+2 n+1 n chroniony rejestr wskaźnik stosu wskaźnik stosu 16
sterujące - wywołanie podprogramu pamięć programu PC: PC+1: wywołanie SUB PC=PC+1 SP=SP+1 [SP]=PC PC=SUB SUB: PC=[SP] SP=SP-1 powrót PC - licznik programu SP - wskaźnik stosu 17
sterujące - skok bezwarunkowy pamięć programu PC: skok ADDR PC=ADDR PC+1: ADDR: 18
sterujące - skok bezwarunkowy względny pamięć programu PC: PC+1: skok ADDR L ADDR H PC = PC + 1 L = [PC] PC = PC + 1 H = [PC] PC = PC + 1 PC = PC + H L PC + H L: 19
warunkowe typu SKIP warunkowa pomijana 20
warunkowe typu BRANCH (zastosowanie SKIP) warunkowa instrukcje pomijane 21
warunkowe typu BRANCH (zastosowanie do tworzenia opóźnień) zapętlane instrukcje warunkowa 22
warunkowe typu +BRANCH zapętlane instrukcje warunkowa 23
warunkowe typu +SKIP warunkowa pomijana 24
specjalne zatrzymanie procesora oczekiwanie przerwania operacja pusta obniżenie poboru energii 25
bitowe przesunięcie logiczne w prawo 0 b N 1 b 0 C przesunięcie logiczne / arytmetyczne w lewo C b N 1 b 0 0 przesunięcie arytmetyczne w prawo b N 1 b 0 C 26
bitowe przesunięcie cykliczne w prawo przez znacznik przeniesienia b N 1 b 0 C przesunięcie cykliczne w lewo przez znacznik przeniesienia C b N 1 b 0 27
Instrukcje bitowe przesunięcie cykliczne w prawo b N 1 b 0 C przesunięcie cykliczne w lewo C b N 1 b 0 28
bitowe ustawianie bitu k w słowie B B: b N 1 1 b 0 N-1 k 0 B = B (1 << k) zerowanie bitu k w słowie B B: b N 1 0 b 0 N-1 k 0 B = B (1 << k) 29
bitowe negowanie bitu k w słowie B B: b N 1 b k b 0 N-1 k 0 B = B (1 << k) 30
poziom uprzywilejowania 0 1 2 3 0 - jądro systemu operacyjnego (zarządzanie pamięcią, przełączanie zadań) 1 - system operacyjny (dostęp do danych, obsługa wejść / wyjść) 2 - rozszerzenie systemu operacyjnego przez użytkownika 3 - programy użytkowe 31
podział mikroprocesorów według typu listy instrukcji RISC (ang. Reduced Instruction Set Computer) zbiór instrukcji jest ortogonalny mała liczba instrukcji CISC (ang. Complex Instruction Set Computer) rozbudowana liczba instrukcji wysoka specjalizacja instrukcji 32
Tryby adresowania implikowane pamięć programu rejestry ogólnego przeznaczenia akumulator A = A R - dowolny operator A - rejestr specjalny - akumulator R - wybrany rejestr ogólnego przeznaczenia 33
natychmiastowe pamięć programu akumulator A = A #D 34
bezpośrednie pamięć programu rejestry ogólnego przeznaczenia akumulator A = A [D1 D2] D1, D2 - dwa kolejne słowa po kodzie rozkazu 35
(pre, post) indeksowe pamięć programu rejestry ogólnego przeznaczenia lub pamięć akumulator rejestry indeksowe A = A [I], I = I + D I = I + D, A = A [I] D - słowo po kodzie rozkazu, I - zawartość wybranego rejestru indeksowego 36
indeksowe z przesunięciem adresowanym bezpośrednio pamięć programu rejestry ogólnego przeznaczenia lub pamięć akumulator rejestry indeksowe A = A [I + [D1 D2]] 37
pośrednie pamięć programu rejestry ogólnego przeznaczenia lub pamięć akumulator A = A [[D1 D2]] 38
względne pamięć programu akumulator licznik programu adres następnej instrukcji A = A [PC + D] PC - licznik programu 39