ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH modele programowe komputerów ASK MP.02 c Dr inż. Ignacy Pardyka 1 UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach 2 Literatura Rok akad. 2011/2012 c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/2012 1 / 24 c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/2012 2 / 24 Definicja użytkowego modelu programowego Składniki modelu programowego zestaw zasobów logicznych komputera dostępnych dla programisty języka asemblera twórcy kompilatora nie ma bezpośredniego związku z budową wewnętrzną procesora model programowy architektura różne rodziny komputerów mogą być oparte o wspólny model programowy zestaw rejestrów liczba rejestrów funkcjonalność zestaw trybów adresowania specyfikacja argumentów operacji model operacji warunkowych sposób realizacji konstrukcji warunkowych lista instrukcji zestaw operacji, jakie może wykonać procesor c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/2012 3 / 24 c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/2012 4 / 24
Funkcje rejestrów akumulator A = A op src może być wiele rejestrów pełniących tę funkcję rejestr adresowy bazowy indeksowy wskaźnik stosu wskaźnik ramki stosu licznik pętli odliczanie iteracji brak rejestrów minimalny zestaw rejestrów mały zestaw rejestrów specjalizowanych mały zestaw rejestrów uniwersalnych duży zestaw rejestrów uniwersalnych zestaw rejestrów buforujących ramkę stosu stosowy zestaw rejestrów c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/2012 5 / 24 c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/2012 6 / 24 Architektury bezrejestrowe Architektury z minimalnym zestawem rejestrów zawierają 1..3 rejestrów, w tym PC operacje na danych typu pamięć pamięć obecnie prawie niespotykane architektura typu MOVE argumenty w instrukcji lub w pamięci rejestry w pamięci głównej rozwiązanie np. w kontrolerach MAXQ PC licznik rozkazów SP wskaźnik stosu akumulator (lub dwa) rejestr adresowy (lub dwa) argumenty: jeden w rejestrze, a drugi w pamięci wada: częste odwołania do pamięci zastosowanie: mikrokontrolery 8-bitowe, np. 68HC08 c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/2012 7 / 24 c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/2012 8 / 24
Architektury z małym zestawem rejestrów specjalizowanych Architektury z małym zestawem rejestrów uniwersalnych 6..8 rejestrów pełniących sztywno określone funkcje rejestry służą wyłącznie do przechowywania argumentów operacji i wyników pośrednich niektóre rejestry domyślnie zawierają argumenty specyficznych instrukcji zastosowanie: np. x86 w trybie 16 bitowym AX akumulator DX rozszerzenie akumulatora dla mnożenia i dzielenia CX licznik iteracji BX główny rejestr adresowy SP wskaźnik stosu BP wskaźnik ramki SI, DI pomocnicze rejestry adresowe IP licznik instrukcji FLAGS rejestr znaczników 6..8 rejestrów uniwersalnych zastosowanie: np. x86 w trybie 32-bitowym: EAX, EDX, ECX, EBX, ESP, EBP, ESI, EDI wszystkie rejestry mogą służyć jako: akumulatory rejestry adresowe rejestry indeksowe (poza ESP) 3..4 rejestrów do przechowania parametrów procedur lub zmiennych lokalnych c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/2012 9 / 24 c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/2012 10 / 24 Architektury z dużym zestawem rejestrów uniwersalnych Bardzo duży zestaw rejestrów uniwersalnych 16..32 rejestrów uniwersalnych zastosowanie: np. MIPS, IBM Power, AMD64 rejestry do przechowania kilku parametrów procedur lub zmiennych lokalnych istotna redukcja liczby odwołań do pamięci 32..128 rejestrów uniwersalnych przechowują całą ramkę stosu (bez zmiennych strukturalnych) zastosowanie np. SPARC, Am29k, IA-64 (Itanium) szybkie wykonywanie procedur c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/2012 11 / 24 c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/2012 12 / 24
Stosowy zestaw rejestrów 3..8 rejestrów tworzących stos często brak nazw rejestrów operacje wykonywane na wierzchołku stosu rejestrów bezargumentowe lub 1-argumentowe argumenty pobierane z wierzchołka stosu wynik odkładany na stos przykłady: transputery jednostka zmiennoprzecinkowa x87 upraszcza konstrukcję kompilatora, jednak jednostka wykonawcza trudna do implementacji sposób specyfikacji argumentu operacji sposób obliczania adresu danej w pamięci także z wykorzystaniem rejestrów tryby odnoszące się do pamięci: natychmiastowy: operand w polu instrukcji rejestrowy bezpośredni: operand w rejestrze tryby rejestrowe pośrednie operand w pamięci, a jego adres (lub składnik) w rejestrze rejestrowy prosty (r.p.): adres w rejestrze r.p. z przemieszczeniem: adres = zawartość rejestru + stała z instrukcji dwurejestrowy pośredni: adres jest sumą zawartości dwóch rejestrów c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/2012 13 / 24 c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/2012 14 / 24 tryb absolutny (bezpośredni) dana w pamięci adres w instrukcji stosowany do adresowania danych statycznych może być zastąpiony przez r.p. z przemieszczeniem tryb z bazą w PC r.p. z rejestrem bazowym PC wygodny do adresowania tablic adresów kodu, np. implementacja konstrukcji switch zastosowanie: np. M68k, AMD64, MSP430 tryb indeksowy adres = efektywny adres pamięci + zawartość rejestru skala skala: 1, 2, 4, 8, 16 c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/2012 15 / 24 c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/2012 16 / 24
Minimalny zestaw trybów adresowania tryb z automodyfikacją bazy r.p. z modyfikacją rejestru bazowego o długość danej automodyfikacja przed lub po operacji preinkrementacja, postinkrementacja, predekrementacja, postdekrementacja niejawnie wykorzystywany przez operacje stosowe: PUSH, POP tryb pamięciowy pośredni dana w pamięci składnik adresu w pamięci stosowany w klasycznych architekturach CISC natychmiastowy rejestrowy bezpośredni rejestrowy pośredni (np. r.p z przemieszczeniem) niezbędny np. do wskazywania zmiennych w ramce stosu c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/2012 17 / 24 c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/2012 18 / 24 Model operacji warunkowych Model operacji warunkowych ze znacznikami określa sposób realizacji przez procesor operacji warunkowych model ze znacznikami model bez znaczników model z predykatami znaczniki: 1-bitowe rejestry atrybutów ostatnio wykonanej operacji zwykle grupowane w wielobitowym rejestrze znaczników typowe znaczniki: Z: znacznik zera Z = 1, gdy wynik = 0 N/M: kopia MSB wyniku operacji C/CY: przeniesienie z MSB wyniku O/V/OV: nadmiar (w kodzie U2) AC/HC: przeniesienie pomocnicze (dla BCD) P: parzystość P = 1, gdy parzystość w najmłodszym bajcie zasady ustawiania zdefiniowane w dokumentacji architektury procesora c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/2012 19 / 24 c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/2012 20 / 24
Instrukcje warunkowe Model operacji warunkowych bez znaczników w instrukcji zawarty warunek wykonania rozkazu warunkowe: skoki, przesłania warunek może być ustawiany explicite: SET cc symbole oznaczające warunki (mnemo) w instrukcjach x86: O, NO OF C, B, NAE, NC, NB, AE CF Z, E, NZ, NE ZF BE, NA, NBE, A CF ZF S, NS SF P, PE, NP, PO PF L, NGE, NL, GE SF OF LE, NG, NL, G (SF OF) ZF A above, B below, G greater, L less pojedyncza instrukcja ewaluuje relację i wykonuje operację, jeśli relacja jest spełniona np. skocz jeśli zawartości rejestrów równe charakterystyczny dla procesorów RISC, np. MIPS c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/2012 21 / 24 c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/2012 22 / 24 Literatura Model z predykatami Literatura predykaty uogólnione znaczniki mogą przechowywać wartość logiczną dowolnej wcześniej obliczonej relacji możliwość równoczesnego przechowywania wartości wielu relacji instrukcje, w większości, warunkowe zastosowanie: np. IA-64 (Itanium) A. S. Tanenbaum, Strukturalna organizacja systemów komputerowych, Helion, 2006. J. Biernat, Architektura komputerów, OWPW, 2005. R. Hyde, Profesjonalne programowanie, Helion, 2005. R. Hyde, Asembler. Sztuka programowania, Helion, 2004. G. Mazur, Programowanie niskopoziomowe, http://wazniak.mimuw.edu.pl. P.A. Carter, PC Assembly Language, http://www.drpaulcarter.com/pcasm/. D.W. Lewis, Między asemblerem a językiem C. Podstawy oprogramowania wbudowanego, RM, 2004. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/2012 23 / 24 c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/2012 24 / 24