wyk3 d


A. Myśliński  materiały pomocnicze do wykładu ASK
ASK - Wykład 3
Działanie komputera. Mikroprocesor  budowa ogólna.
Architektura RISC i CISC.
1. Modele systemów komputerowych
1.1 Maszyna Turinga
" Abstrakcyjny model komputera stworzony w latach trzydziestych dwudziestego wieku
przez Alana Turinga służący do wykonywania algorytmów.
" Maszyna Turinga składa się z nieskończenie długiej taśmy podzielonej na pola. Taśma
może być nieskończona jednostronnie lub obustronnie. Każde pole może znajdować się
w jednym z N stanów. Maszyna zawsze jest ustawiona nad jednym z pól i znajduje się
w jednym z M stanów. Zależnie od kombinacji stanu maszyny i pola maszyna zapisuje
nową wartość w polu, zmienia stan, a następnie może przesunąć się o jedno pole w
prawo lub w lewo. Taka operacja nazywana jest rozkazem. Maszyna Turinga jest
sterowana listą zawierającą dowolną ilość takich rozkazów. Liczby N i M mogą być
dowolne, byle skończone. Czasem dopuszcza się też stan M+1, który oznacza
zakończenie pracy maszyny. Lista rozkazów dla maszyny Turinga może być traktowana
jako jej program.
" Mimo że maszyna Turinga jest abstrakcją o dużej mocy obliczeniowej (większej na
przykład niż dowolny komputer), istnieje wiele problemów (np. problem stopu), których
nie da się na niej rozwiązać. Matematycy rozważają więc (od czasów samego Turinga)
silniejsze modele obliczeń, które mogą takim zadaniom podołać. Hipotetyczne maszyny
potrafiące wykonywać takie obliczenia, nazywa się hiperkomputerami. Należy
zauważyć, że przy obecnym stanie wiedzy nie jest jasne, czy prawa fizyki rządzące
naszym światem pozwalają na skonstruowanie maszyn obliczeniowych silniejszych niż
maszyna Turinga. Jest to pole aktywnych prac badawczych.
1.2 Komputer von Neumanna
Architektura komputera wg Neumanna została zaproponowana w roku 1945. Polega ona na
ścisłym podziale komputera na trzy podstawowe części:
" procesor (w ramach którego wydzielona bywa część sterująca oraz część
arytmetyczno-logiczna)
" pamięć komputera (zawierająca dane i program)
" urządzenia wejścia/wyjścia
1
A. Myśliński  materiały pomocnicze do wykładu ASK
Rys. 1. Architektura komputera wg von Neumanna.
CPU  centralna jednostka przetwarzająca, MEM  pamięć złożona z RAM  pamięć do zapisu i odczytu oraz ROM 
pamięć tylko do odczytu, BIOS  podstawowy system obsługi we/wy, PAO  pamięć operacyjna, I/O  układy wejścia
wyjścia, AB  magistrala adresowa, DB  magistrala danych, CB  magistrala sterująca
1.2.1 Założenia modelu systemu komputerowego John a von Neumann a:
System komputerowy zbudowany w oparciu o tą architekturę powinien:
" mieć skończoną i funkcjonalnie pełną listę rozkazów
" mieć możliwość wprowadzenia programu do systemu komputerowego poprzez
urządzenia zewnętrzne i jego przechowywanie w pamięci w sposób identyczny jak dane
" dane i instrukcje w takim systemie powinny być jednakowo dostępne dla procesora
" informacja jest tam przetwarzana dzięki sekwencyjnemu odczytywaniu instrukcji z
pamięci komputera i wykonywaniu tych instrukcji w procesorze.
1.2.2 Podstawowe słabości architektury von Neumanna:
Głównym błędem związanym z architekturą von Neumanna jest tzw. wąskie gardło von
Neumanna. Rozważmy program mnożący dwie liczby
Int a,b,c oraz a=b*c
Procesor (CPU) musi najpierw pobrać instrukcję powyższego programu mówiącą o tym, iż
program będzie mnożył dwie cyfry, następnie musi pobrać te cyfry, dodać je i zapisać w
zmiennej a. Wydawałoby się, że ta prosta operacja nie jest skomplikowana, ale wymaga aż
czterech operacji. Wiąże to się z przesyłaniem wielu informacji pomiędzy CPU a pamięcią, co
w rezultacie blokuje do niej dostęp.
Drugim problemem jest brak podziału pomiędzy pamięcią zawierającą program a danymi na
niej zapisanymi. W razie powstania błędu CPU może zacząć wykonywanie instrukcji
prowadzące do błędu. Może dojść do sytuacji, gdy program zacznie modyfikować sam siebie,
ten proces jest wykorzystywane przez większość wirusów komputerowych.
1.2.3 Architektura harwardzka
Architektura ta jest bardzo podobna do architektury von Neumana z jedną znaczącą różnicą,
w tej architekturze pamięć została podzielona na dwa obszary: pamięć programu oraz pamięć
danych. Dzięki takiemu rozwiązaniu procesor może jednocześnie pobierać instrukcje i dane.
Dzięki rozdzieleniu pamięci CPU może pobrać kolejną instrukcję programu do wykonania w
2
A. Myśliński  materiały pomocnicze do wykładu ASK
trakcie zapisu wyników obecnie wykonywanej instrukcji do pamięci danych. Co w rezultacie
daje efektowny wzrost mocy obliczeniowej procesora.
1.3. Pierwsza realna implementacja modeli komputerowych
Przyjmuje się, że pierwszym komputerem był, ENIAC. ENIAC ważył ponad 30 ton, zużywał,
ponad 30 kW energii i składał się z 19 000 lamp elektronowych, z których prawie zawsze
jedna była zepsuta. Głównym zastosowaniem tego komputera były obliczenia balistyczne.
Aktualnie główne części składowe komputera stanowią: procesor (obecnie w postaci układu
scalonego, czyli mikroprocesora), pamięć operacyjna oraz urządzenia peryferyjne
(zewnętrzne). Urządzenia te wykonane są w technice tranzystorowej. Zadaniem procesora,
zwanego też czasem jednostką centralną, jest wykonywanie rozkazów i sterowanie pracą
pozostałych bloków funkcjonalnych komputera. Urządzenia peryferyjne, dołączone do
komputera najczęściej za pośrednictwem układów wejścia - wyjścia, służą do komunikacji
komputera ze światem zewnętrznym (z użytkownikiem), np. klawiatura, monitor ekranowy,
drukarka, mysz, joystick, pióro świetlne, skaner, ploter; do urządzeń peryferyjnych zalicza się
też pamięci zewnętrzne, np. dyski magnetyczne i optyczne. Urządzenia peryferyjne w obecnie
używanych komputerach pracują z reguły jako autonomiczne jednostki współbieżnie z
procesorem.
Pamięć operacyjna składa się z komórek ponumerowanych kolejnymi liczbami naturalnymi
(0, 1, 2,...). Komórka jest ciągiem bitów, które można sobie wyobrazić jako miejsca, gdzie
można wpisać 0 lub 1. Do komórek pamięci można więc wpisywać informacje w postaci zer i
jedynek. Można również pobierać informacje tam zapisane. W czasie zapisywania poprzednia
zawartość komórki ulega zniszczeniu. Przy odczytywaniu nie zmienia się. Numery komórek
nazywane są adresami. Zawartość pamięci może być odczytywana jedynie za pośrednictwem
dwóch związanych z nią rejestrów: rejestru adresowego pamięci oraz rejestru buforowego
pamięci. To samo dotyczy operacji zapisywania do pamięci. Przy odczytywaniu z pamięci do
rejestru buforowego pobierana jest zawartość tej komórki pamięci, której adres znajduje się w
rejestrze adresowym. Przy zapisie zawartość rejestru buforowego jest wpisywana do komórki
o adresie z rejestru buforowego.
W pamięci umieszczane są programy oraz dane dla nich. Programy są ciągami rozkazów,
które komputer ma wykonać. Dane są informacjami, które w wyniku wykonania programu są
przekształcane w inne informacje. Arytmometr wykonuje rozkazy na danych umieszczonych
w rejestrach z nim związanych. Mogą to być na przykład rozkazy dodawania liczb lub też
rozkazy logiczne, takie jak iloczyn lub suma logiczna ciągów zer i jedynek. Wynik działania
arytmometru pozostaje w jednym z jego rejestrów. Poza wymienionymi wyżej rejestrami
związanymi z pamięcią oraz arytmometrem w procesorze istnieją także takie, które sterują
przebiegiem jego pracy. Kluczową rolę pełnią tu: rejestr rozkazów oraz rejestr zwany
licznikiem rozkazów. W pierwszym pamiętany jest rozkaz aktualnie wykonywany przez
komputer, w drugim  adres komórki pamięci, w której znajduje się następny rozkaz do
wykonania.
2. Mikroprocesor  budowa i funkcje
Mikroprocesor to układ cyfrowy wykonany jako pojedynczy układ scalony o wielkim
stopniu integracji zdolny do wykonywania operacji cyfrowych według dostarczonego ciągu
3
A. Myśliński  materiały pomocnicze do wykładu ASK
instrukcji. Jest to procesor wykonany w technologii LSI (mikroprocesory 8-bitowe), VLSI
(mikroprocesory 16-bitowe i 32-bitowe) lub ULSI (mikroprocesory 64-bitowe).
Układ, który dokonał rewolucji w informatyce, powstał trochę na zasadzie nieudanego
produktu ubocznego. Pierwszy mikroprocesorem Intel 4004 (USA) z trudem znajdował
zastosowania w wąskim gronie amatorów komputeryzacji i nie wróżono mu dalekiej
przyszłości. Przodującymi producentami typowych mikroprocesorów są firmy: Intel,
Motorola, MOS Technology oraz liczne zakłady dalekowschodnie, a przemysł
mikroprocesorów stanowi istotną gałąz produkcji krajów rozwiniętych. Cały sprzęt PC, sprzęt
sieciowy i telekomunikacyjny, komputery laboratoryjne, osprzęt linii technologicznych,
elektronika motoryzacyjna, niezliczone aplikacje domowe opierają się na mikroprocesorach.
Mikroprocesor umożliwił rozwój mikrokomputerów w połowie lat 70. dwudziestego wieku.
Przed tym okresem, elektroniczne CPU były konstruowane z zajmujących wiele miejsca
indywidualnych urządzeń przełączających, z których każde było odpowiednikiem zaledwie
kilku tranzystorów. Poprzez zintegrowanie procesora w jeden lub kilka obwodów scalonych o
coraz wyższej skali integracji (zawierających odpowiednik tysięcy lub milionów
tranzystorów), stosunek możliwości do ceny procesora znacząco wzrósł. Od połowy lat
siedemdziesiątych, dzięki intensywnemu rozwojowi układów scalonych, mikroprocesor stał
się najbardziej rozpowszechnioną formą CPU, prawie całkowicie zastępując wszystkie inne.
Ewolucję mikroprocesora dobrze opisuje prawo Moore a mówiące o wzroście wydajności na
przestrzeni lat. Mówi ono, że złożoność układów scalonych (liczba tranzystorów), przy
zachowaniu minimalnego kosztu składników, będzie się podwajać co 18 miesięcy.
Stwierdzenie to zachowuje prawdziwość od czasu wczesnych lat 70. Począwszy od układów
porównywalnych z prostymi kalkulatorami, mikroprocesory osiągały coraz wyższą moc
obliczeniową, co w rezultacie doprowadziło do ich dominacji nad każdą inną formą
komputera.
2.1 Budowa typowego mikroprocesora
W prawie każdym mikroprocesorze możemy wyróżnić następujące bloki
" ALU  jednostka arytmetyczno-logiczna (Arithmetic Logic Unit), wykonuje ona
operacje logiczne na dostarczonych jej danych, podstawowy zestaw to: dodawanie,
podstawowe operacje logiczne (AND, XOR, OR, NOT), oraz przesunięcia bitowe w
lewo i w prawo. W bardziej złożonych mikroprocesorach zestaw ten jest znacznie
bogatszy.
" CU  układ sterowania (Control Unit), zwany też dekoderem rozkazów.
Odpowiedzialny jest on za dekodowanie dostarczonych mikroprocesorowi instrukcji i
odpowiednie sterowanie pozostałymi jego blokami (na przykład jeśli zdekodowaną
instrukcją będzie dodawanie, CU odpowiednio ustawi sygnały sterujące, by ALU
wykonała tę właśnie operację)
" Rejestry  umieszczone wewnątrz mikroprocesora komórki pamięci o niewielkich
rozmiarach (najczęściej 4/8/16/32/64/128 bitów) służące do przechowywania
tymczasowych wyników obliczeń (rejestry danych) oraz adresów lokacji w pamięci
operacyjnej (rejestry adresowe). Proste mikroprocesory mają tylko jeden rejestr
danych zwany akumulatorem. Oprócz rejestrów danych i rejestrów adresowych
występuje też pewna liczba rejestrów o specjalnym przeznaczeniu:
4
A. Myśliński  materiały pomocnicze do wykładu ASK
o PC  licznik rozkazów (Program Counter)  zawiera on adres komórki pamięci
zawierającej następny rozkaz do wykonania
o IR  rejestr instrukcji (Instruction Register)  zawiera on kod aktualnie
wykonywanej przez procesor instrukcji.
o SP  wskaznik stosu (Stack Pointer)  zawiera adres wierzchołka stosu
Mikroprocesor komunikuje się z otoczeniem za pomocą szyny danych i szyny adresowej.
Rys. 2. Budowa mikroprocesora.
Rys.3. Budowa ALU.
Komputer działa według ustalonego schematu. Schemat ten, nazywany cyklem pracy
komputera, wygląda następująco:
" z pamięci operacyjnej komputera pobierana jest zawartość komórki pamięci o adresie
równym zawartości licznika rozkazów
" wartość ta jest przesyłana do licznika rozkazów, gdzie jest interpretowana jako rozkaz
do wykonania
5
A. Myśliński  materiały pomocnicze do wykładu ASK
" licznik rozkazów jest zwiększany o taką wartość, aby wskazywał następny rozkaz w
pamięci operacyjnej
" przygotowywane są argumenty rozkazu (operandy)
" rozpoznany rozkaz jest wykonywany
" następuje przejście do kolejnego cyklu pracy (chyba, że wykonano rozkaz zatrzymania
pracy komputera).
Lista rozkazów mikroprocesora składa się zwykle z rozkazów arytmetycznych, logicznych,
przesłań, rozkazów skoku, zatrzymania, wejścia / wyjścia oraz wywołania podprogramu.
Każdy z tych rozkazów ma zero, jeden lub dwa argumenty. Argumenty mogą być
umieszczone bezpośrednio w kodzie rozkazu, w rejestrze lub w pamięci. W związku z
różnymi sposobami adresowania argumentów istotne jest podanie sposobu ich odnalezienia,
który zależy od zastosowanego sposobu adresacji.
Generalnie każdy bardziej skomplikowany mikroprocesor można zaklasyfikować do jednej z
trzech architektur:
" CISC (Complex Instruction Set Computers)
" RISC (Reduced Instruction Set Computers)
" VLIW (Very Long Instruction Word)
Każda z nich ma swoją specyfikę, swoje wady i zalety.
2.2 Architektura CISC
CISC (ang. Complex Instruction Set Computers)  nazwa architektury mikroprocesorów o
następujących cechach:
" Występowanie złożonych, specjalistycznych rozkazów (instrukcji) - które do
wykonania wymagają od kilku do kilkunastu cykli zegara
" Szeroka gama trybów adresowania
" Przeciwnie niż w architekturze RISC rozkazy mogą operować bezpośrednio na
pamięci (zamiast przesłania wartości do rejestrów i operowania na nich)
" Powyższe założenia powodują, iż dekoder rozkazów jest skomplikowany
Istotą architektury CISC jest to, iż pojedynczy rozkaz mikroprocesora, wykonuje kilka
operacji niskiego poziomu, jak na przykład pobranie z pamięci, operację arytmetyczną i
zapisanie do pamięci.
Przed powstaniem procesorów, RISC, wielu komputerowych architektów próbowało
zmostkować lukę semantyczną,  aby zaprojektować zestawy rozkazów, które wspierałyby
języki programowania wysokiego poziomu przez dostarczenie rozkazów wysokiego poziomu
np. wywołania funkcji i zwrócenia jej wartości, instrukcje pętli czy kompleksowe tryby
adresowania. Rezultatem tego były programy o mniejszym rozmiarze i z mniejszą ilością
odwołań do pamięci, co w tamtym czasie było istotne z punktu widzenia wydajności przy
jednoczesnym dążeniu do obniżenia kosztów pojedynczego komputera.
Przykłady rodzin procesorów o architekturze CISC to: System/360, VAX, PDP-11, x86
6
A. Myśliński  materiały pomocnicze do wykładu ASK
Współczesne procesory zgodne z x86 produkowane przez firmy Intel i AMD przetwarzają
rozkazy procesora x86 na proste mikropolecenia pracujące wg idei RISC, często wykonujące
się równolegle.
Języki wysokiego poziomu umożliwiają programiście bardziej zwięzłe wyrażanie algorytmów
i w naturalny sposób wspierają użycie programowania strukturalnego. Rozwój języków
wysokiego poziomu doprowadził do powstania luki semantycznej, której przejawami są
złożoność kompilatorów, nadmierne rozmiary programów maszynowych, nieefektywność
wykonywania. Jedną z dróg do usunięcia tej luki była rozbudowa listy rozkazów
maszynowych i trybów adresowania. Wzmacniało to rozwój architektury CISC. Drugim
kierunkiem rozwoju była redukcja listy rozkazów w ramach architektury RISC.
2.3 Architektura RISC
RISC (Reduced Instruction Set Computers) - nazwa architektury mikroprocesorów która
została przedstawiona pod koniec lat 70. w teoretycznych pracach na uniwersytecie Berkeley
oraz w wynikach badań Johna Cocke z Thomas J. Watson Research Center.
Ówczesne procesory (budowane w architekturze CISC) charakteryzowały się bardzo
rozbudowaną listą rozkazów, ale jak wykazały badania, statystycznie tylko nieliczna ich część
była wykorzystywana w programie. Okazało się np. że ponad 50% rozkazów w kodzie to
zwykłe przypisania, tj. zapis zawartości rejestru do pamięci i odwrotnie.
Ponadto badania wykazały, że podczas działania programu ok. 26-45% wykonywanych
instrukcji to instrukcje wywołania podprogramów lub instrukcje obsługujące pętle, ok. 13-
15% to wspomniane przypisania, 7-21% to instrukcje warunkowe (jeśli warunek to & ),
natomiast reszta to tylko 1-3%.
W związku z powyższym zaprezentowano architekturę mikroprocesorów, w której
uwzględniono wyniki badań. Jej podstawowe cechy to:
1. Zredukowana liczba rozkazów do niezbędnego minimum. Ich liczba wynosi
kilkadziesiąt, podczas gdy w procesorach CISC sięga setek. Upraszcza to znacznie
dekoder rozkazów.
2. Redukcja trybów adresowania, dzięki czemu kody rozkazów są prostsze, bardziej
zunifikowane, co dodatkowo upraszcza wspomniany wcześniej dekoder rozkazów.
Ponadto wprowadzono tryb adresowania, który ogranicza ilość przesłań.
3. Ograniczenie komunikacji pomiędzy pamięcią, a procesorem. Przede wszystkim do
przesyłania danych pomiędzy pamięcią, a rejestrami służą dedykowane instrukcje,
które zwykle nazywają się load (załaduj z pamięci), oraz store (zapisz do pamięci);
pozostałe instrukcje mogą operować wyłącznie na rejestrach. Schemat działania na
liczbach znajdujących się w pamięci jest następujący: załaduj daną z pamięci do
rejestru, na zawartości rejestru wykonaj działanie, przepisz wynik z rejestru do
pamięci.
4. Zwiększenie liczby rejestrów (np. 32, 192, 256, podczas gdy np. w architekturze x86
jest zaledwie 8 rejestrów), co również ma wpływ na zmniejszenie liczby odwołań do
pamięci.
7
A. Myśliński  materiały pomocnicze do wykładu ASK
Rys. 4. Okna rejestrów w architekturze RISC.
Pierwszym procesorem zaprojektowanym w oparciu o architekturę RISC był RCA1802
wyprodukowany przez firmę RCA.
Obecnie popularne procesory Intela z punktu widzenia programisty są widziane jako CISC,
ale ich rdzeń jest RISC-owy. Rozkazy CISC są rozbijane na mikrorozkazy (ang. microops),
które są następnie wykonywane przez RISC-owy blok wykonawczy. W praktyce okazuje się
że rozwiązanie takie (pomimo wielu znaczących wad) jest podejściem znacznie bardziej
wydajnym (szczególnie że RISC-owy blok wykonawczy jest znacznie bardziej nowoczesny
od architektury CISC widocznej dla programisty).
Przykłady rodzin mikroprocesorów o architekturze RISC: Alpha, AMD 29000, ARM, Atmel
AVR, IBM 801, Intel i860, Intel i960, Motorola M88000, MIPS, PA-RISC, PowerPC,
SPARC
2.4 Architektura VLIW (Very Long Instruction Word)
Już od samego początku historii procesorów starano się zwiększać moc obliczeniową oraz
szybkość wykonywania programu poprzez zwiększanie liczby jednostek wykonawczych w
procesorach. Dzięki temu przy dogodnych warunkach udawało się wykonać więcej niż jedną
instrukcję w tym samym czasie. Poprawienie warunków równoległego (i szybszego)
wykonywania instrukcji zostało osiągnięte przez wprowadzenie techniki wcześniejszego
wykonania instrukcji (ang. Out-of-Order Execution). Wszystkie te mechanizmy zwiększania
równoległości wykonywania instrukcji zaszyte były w logice mikroprocesorów. W
przeciwieństwie do innych architektur mikroprocesorów, architektura VLIW charakteryzuje
się maksymalnie daleko idącym uproszczeniem jednostek sterujących (CU) w samym
mikroprocesorze. Logika została maksymalnie uproszczona aż do całkowitego zaniku
niektórych elementów. Całą złożoność przepływu sterowania w mikroprocesorze, czyli
wykonywania rozkazów (programu), przerzucono na barki oprogramowania  kompilatorów.
Rezygnacja z całej tej logiki wymusiła dostarczenie do procesora wystarczającej liczby
danych  sygnałów sterujących. Z tego powodu pojedyncze rozkazy posiadają w sobie już
zdekodowane (lub wstępnie zdekodowane) sygnały sterujące, dane oraz, co najważniejsze,
"instrukcje" dedykowane dla konkretnych jednostek wykonawczych mikroprocesora. Tak
stworzona pojedyncza instrukcja procesora VLIW ma wielkość rzędu setek bitów  256 lub
więcej.
8
A. Myśliński  materiały pomocnicze do wykładu ASK
2.5 Podstawowe układy cyfrowe mikroprocesora
Działanie układów cyfrowych w komputerach opiera się na algebrze Boole a, tj zasadach
logiki matematycznej. Wykorzystywanymi układami cyfrowymi są:
" Bramki: AND, OR, NOT, NAND, NOR
Funkcjonalnie pełny zbiór bramek np. NAND, NOR
Układ kombinacyjny: zbiór wzajemnie połączonych bramek, którego
stan wyjść jest funkcją stanu wejść w tej samej chwili czasu
Funkcje Boole a i mapy Karnaugha
Programowalne tablice logiczne (PLA)
" Przerzutniki: D, T, SR, JK
najprostsza postać układu sekwencyjnego
jest to układ dwustabilny mogący działać jako pamięć 1 bitowa
jest to układ mający dwa wyjścia wzajemnie się dopełniające (Prawda i
Fałsz)
Bramki i przerzutniki są podstawowymi elementami każdego układu sekwencyjnego
działającego jako automat Moore a.
2.5.1 Podstawowe układy funkcjonalne mikroprocesora
Magistrala.
Jest to zbiór przewodów łączących poszczególne rejestry komputera. Wyróżnimy przesyłanie
danych po magistrali i sygnały sterujące przesyłaniem. Przesyły realizowane pomiędzy
magistralami są możliwe dzięki multipleksowaniu.
Multiplekser
Urządzenie zbudowane z wielu bramek łączące wiele wejść z jednym wyjściem. Używane w
układach cyfrowych do sterowania przepływem sygnałów i danych np. ładowania licznika
programu.
Koder i dekoder
Układ kombinacyjny o pewnej liczbie linii wyjściowych, z których w określonej chwilki jest
potwierdzana tylko jedna w zależności od kombinacji sygnałów na liniach wejściowych.
Sumator
Układ elektroniczny zbudowany z bramek. Mogą być sumatory jedno jak i wielo bitowe.
Rejestr jest to zbiór przerzutników. W rejestrze szeregowym przerzutniki są połączone jeden
za drugim - wyjście poprzedniego przerzutnika dołączone jest do wejścia następnego. W
rejestrze równoległym przerzutniki nie są powiązane ze sobą a operacje wpisu lub zerowania
są wykonywane na wszystkich przerzutnikach równolegle.
Licznik
Rejestr którego zawartość może być z łatwością zwiększana o 1. Istnieją liczniki
asynchroniczne (szeregowe) oraz synchroniczne. Wadą licznika szeregowego jest
wprowadzane opóznienie podczas zmiany wartości proporcjonalne do długości licznika.
9
A. Myśliński  materiały pomocnicze do wykładu ASK
Literatura:
1) W. Stallings, Organizacja i architektura systemu komputerowego, WNT, Warszawa,
2008.
2) S.H.A. Clarke, W sercu PC, Helion, Gliwice, 2003.
10
A. Myśliński  materiały pomocnicze do wykładu ASK
ASK - Wykład 4
Rejestry  organizacja, funkcje, implementacje
2.6 Organizacja rejestrów
System komputerowy zawiera hierarchię pamięci. Im wyżej pamięć jest klasyfikowana w
hierarchii tym jest szybsza, mniejsza i droższa w przeliczeniu na bit. Rejestry procesora są
rodzajem pamięci klasyfikowanym w hierarchii pamięci powyżej pamięci głównej i
podręcznej. Rejestry w procesorze są dzielone na dwie grupy:
" Rejestry widzialne dla użytkownika - umożliwia to programiście języka maszynowego
procesora minimalizowanie odwołań do pamięci głównej poprzez optymalizację
wykorzystania rejestrów,
" Rejestry sterowania i stanu - używane przez jednostkę sterującą do sterowania pracą
procesora oraz przez uprzywilejowane programy systemu operacyjnego do sterowania
wykonaniem programów.
Rejestry są szczególnymi fragmentami (komórkami) wewnętrznej pamięci zapisywalnej
mikroprocesora. Oprócz  centralnego rejestru , nazywanego akumulatorem,
współpracującego z jednostką arytmetyczno-logiczną, istnieje szereg rejestrów
pomocniczych. Rejestry tym różnią się od  zwykłych komórek pamięci, że można ich
zawartość przetwarzać w różny sposób, a nie tylko zapisywać i odczytywać. Na zawartości
rejestrów zazwyczaj mogą być wykonywane operacje arytmetyczne i logiczne.
2.6.1 Rejestry widzialne dla użytkownika
Ogólnego przeznaczenia (robocze)
Mogą być przypisane przez programistę wielu funkcjom np. dowolny
rejestr roboczy może zawierać argument dowolnego kodu operacji
Mogą być wykorzystywane do adresowania
Danych
Mogą być używane tylko do przechowywania danych
Adresów
Mogą być uniwersalne lub przypisane określonym trybom adresowania
obejmującym:
Wskazniki segmentu (adres podstawy segmentu); rejestrów takich
może być wiele np. jeden dla systemu operacyjnego i jeden dla
bieżącego procesu
Rejestry indeksowe  używane do adresowania indeksowego. Mogą
być indeksowane automatycznie
Wskaznik stosu
Zagadnienia projektowe:
" Rejestry robocze czy specjalizowane?
" Liczba rejestrów
" Długość rejestrów
Kodów warunkowych
11
A. Myśliński  materiały pomocnicze do wykładu ASK
Kody warunkowe (znaczniki stanu, flagi) są bitami ustalanymi
sprzętowo przez procesor w wyniku operacji. Kod ten może być dalej
sprawdzany w ramach operacji rozgałęzienia warunkowego.
Bity kodu warunkowego mogą być zbierane w wielu rejestrach.
Zwykle stanowią część rejestru sterowania. Rozkazy maszynowe
umożliwiają odczytywanie tych bitów poprzez odniesienia domyślne.
Programista nie może zmieniać tych bitów.
2.6.2 Rejestry sterowania i stanu
Zazwyczaj rejestry te nie są widzialne dla użytkownika. Niektóre z nich mogą być widzialne
dla rozkazów maszynowych wykonywanych w trybie sterowania lub przez system
operacyjny. Poniższe cztery rejestry, wykorzystywane do przenoszenia danych pomiędzy
procesorem a pamięcią, mają zasadnicze znaczenie dla wykonywanych rozkazów:
Licznik Programu (PC)  zawiera adres rozkazu przewidzianego do
pobrania. Jest aktualizowany przez procesor po każdym pobraniu rozkazu.
Rozkaz rozgałęzienia lub pominięcia również modyfikuje zawartość licznika
programów.
Rejestr rozkazu (IR)  zawiera ostatnio pobrany rozkaz. W rejestrze
analizowane są kod operacji oraz specyfikator argumentu. Dane są
wymieniane z pamięcią za pośrednictwem rejestrów MAR i MBR.
Rejestr adresowy pamięci (MAR)  zawiera adres lokacji w pamięci. W
systemie magistralowym rejestr MAR jest połączony bezpośrednio z
magistralą adresową.
Rejestr buforowy pamięci (MBR)  zawiera słowo danych, które ma być
zapisane do pamięci lub które zostało ostatnio odczytane z pamięci.
W systemie magistralowym rejestr MBR jest połączony bezpośrednio
z magistralą danych.
Rejestry widzialne dla użytkownika wymieniają dane z rejestrem MBR.
Wewnątrz procesora dane muszą być doprowadzone do ALU celem
przetworzenia. Zatem ALU musi mieć bezpośredni dostęp do rejestru
MBR oraz rejestrów widzialnych dla użytkownika.
Ponadto we wszystkich projektach procesora występuje:
Rejestr Stanu Programu (PSW)  zawiera kody warunkowe oraz inne informacje o
stanie programu zawarte na polach:
Znak  zawiera bit znaku wyniku ostatniej operacji arytmetycznej
Zero  ustawiane gdy wynik operacji jest równy zeru
Przeniesienie  używane przy operacjach arytmetycznych
obejmujących wiele słów. Ustawiane gdy wynikiem operacji
dodawania jest przeniesienie alby gdy wynikiem operacji odejmowania
jest przeniesienie zanegowane.
Równość  ustawiane gdy wynikiem operacji porównywania
logicznego jest równość
Przepełnienie  używane do wskazywania przepełnienia
arytmetycznego
Zezwolenie/Blokowanie przerwania  używane do obsługi przerwań
12
A. Myśliński  materiały pomocnicze do wykładu ASK
Nadzorca  wskazuje tryb pracy procesora: nadzorca lub użytkownik.
Niektóre rozkazy uprzywilejowane albo pewne obszary pamięci mogą
być dostępne tylko w trybie nadzorcy.
Zagadnienia projektowe
" Istnieje wiele innych rejestrów związanych ze stanem i
sterowaniem wprowadzanych w konkretnych konstrukcjach
mikroprocesorów
" Organizacja rejestrów stanu i sterowania a także innych
rejestrów powinna wspierać działanie systemu operacyjnego.
" Podział informacji sterowania pomiędzy rejestry a pamięć
(szybkość vs koszt).
2.6.3 Rejestry  implementacje w procesorach
Rys 5. Przykładowe implementacje rejestrów.
13
A. Myśliński  materiały pomocnicze do wykładu ASK
2.7 Stosy
Stos jest to uporządkowany zestaw elementów, z których tylko do jednego można mieć
dostęp w określonej chwili. Stos charakteryzują:
" Punkt dostępu nazywa się wierzchołkiem stosu.
" Liczba elementów stosu (długość stosu) jest zmienna.
" Obiekty mogą być dodawane lub odejmowane tylko z wierzchołka stosu. Powoduje to, że
stos jest nazywany również listą spychania lub LIFO (last in first out).
Operacje dotyczące stosu:
" PUSH  umieszczenie nowego elementu na wierzchołku stosu
" POP - usunięcie wierzchołkowego elementu stosu
" Operacja jednoargumentowa  wykonanie operacji na wierzchołkowym elemencie stosu i
zamiana tego elementu na wynik operacji.
" Operacja dwuargumentowa - wykonanie operacji na dwóch wierzchołkowych elementach
stosu. Usunięcie dwóch wierzchołkowych elementów stosu i umieszczenie wyniku
operacji na wierzchołku stosu.
Stosy są wykorzystywane do zarządzania wywołaniami i powrotami procedur. Mogą też być
wykorzystywane do obliczania wartości wyrażeń oraz przez programistów. Ponieważ
operacje stosu odnoszą się do jednoznacznej lokalizacji adres argumentu jest domyślny.
Rys. 7. Konstrukcja stosu.
2.7.1 Implementacja stosu
W pamięci głównej jest zarezerwowany blok sąsiadujących lokacji przeznaczonych na stos.
Przez większość czasu blok ten jest częściowo wypełniony elementami stosu. Pozostała część
bloku stanowi rezerwę w przypadku powiększania się stosu. Do poprawnego działania stosu
wymagane są trzy adresy przechowywane w rejestrach procesora:
" Wskaznik stosu  zawiera adres wierzchołka stosu
" Podstawa stosu  zawiera adres najniższej lokacji w zarezerwowanym na stos bloku.
" Granica stosu  zawiera adres drugiego końca niż podstawa zarezerwowanego bloku na
stos.
14
A. Myśliński  materiały pomocnicze do wykładu ASK
Podstawa stosu znajduje się pod najwyższym adresem w bloku zarezerwowanym dla stosu
zaś jego granicą jest koniec bloku o niskim adresie. Stos narasta od adresów wyższych do
niższych.
W celu przyśpieszenia operacji na stosie dwa wierzchołkowe elementy stosu są często
przechowywane w rejestrach a wskaznik stosu zawiera adres trzeciego elementu stosu.
Rys 7. Wskazniki stosu  implementacja.
Literatura:
3) W. Stallings, Organizacja i architektura systemu komputerowego, WNT, Warszawa,
2008.
4) S.H.A. Clarke, W sercu PC, Helion, Gliwice, 2003.
15


Wyszukiwarka

Podobne podstrony:
pr pracy Monika Gładoch wyk3
wyk3
Fot wyk3 int
Wyk3 kalibracja komory
czesc1 wyk3
IB wyk3
Wyk3 term
wyk3
WYK3
wyk3[1]
Wyk3
wyk3
md wyk3
WYK3 optymalizacja

więcej podobnych podstron