ARCHITEKTURA WEWNĘTRZNA KOMPUTERA Realizacja wybranych grup rozkazów: Arytmetycznych Logicznych Elementy logiki komputerów Wewnętrznych (systemowych) –przerwanie, obsługa wejścia-wyjścia Architektura komputerów – wykład Dr inż.. T. Popkowski
Rozkazy arytmetyczne ograniczają się do czterech podstawowych działań: Dodawania (ADD) Odejmowania (SUB) Mnożenia (MUL) Dzielenia (DIV) (dot. liczb całkowitych w kodzie U2)
KOD U2 Kod uzupełnień do dwóch (w skrócie U2 lub ZU2) jest obecnie najpopularniejszym sposobem zapisu liczb (najczęściej całkowitych) na bitach. Jego popularność wynika z faktu, że operacje dodawania i odejmowania są w nim wykonywane tak samo jak dla liczb binarnych bez znaku. Z tego też powodu oszczędza się na kodach rozkazów procesora. Nazwa kodu wzięła się ze sposobu obliczania liczb przeciwnych. Dla jednobitowej liczby wartość przeciwną obliczamy odejmując daną liczbę od 2 (uzupełniamy jej wartość do dwóch). Analogicznie, dla liczb n-bitowych wartości przeciwne uzyskujemy odejmując liczbę od dwukrotnej wagi najstarszego bitu (2·2n–1 = 2n). W analogiczny sposób można stworzyć np. kod uzupełnień do jedności. Zaletą tego kodu jest również istnienie tylko jednego zera. Przedział kodowanych liczb nie będzie zatem symetryczny. W U2 na n bitach da się zapisać liczby z zakresu: Dla 8 bitów (bajtu) są to liczby od –128 do 127. Liczba –2n–1 nie posiada swojego przeciwieństwa w n-bitowej reprezentacji kodu U2.
ZAPIS LICZB W dwójkowym systemie liczbowym najstarszy bit liczby n-cyfrowej ma wagę 2n–1. Jedyną różnicą, jaką wprowadza tu kod U2, jest zmiana wagi tego bitu na przeciwną (–2n–1). Bit ten jest nazywany bitem znaku, ponieważ świadczy o znaku całej liczby – jeśli jest ustawiony (=1) cała liczba jest ujemna, jeśli jest skasowany (=0) – liczba jest dodatnia lub równa 0. Jeśli chcemy zwiększyć obszar zajmowany przez liczbę w kodzie U2 (np. z jednego bajtu na dwa), dodawany obszar musimy wypełnić bitem znaku. PRZYKŁAD: 11101101U2 = -1 ⋅ 27 + 1 ⋅ 26 + 1 ⋅ 25 + 0 ⋅ 24 + 1 ⋅ 23 + 1 ⋅ 22 + 0 ⋅ 21 + 1 ⋅ 20 = -1910
LICZBA PRZECIWNA Aby zamienić liczbę w U2 na przeciwną, należy wykonać dwa kroki: dokonać inwersji bitów, czyli pozamieniać 0 na 1 i odwrotnie zwiększyć wynik o 1. Można też posłużyć się metodą podaną na wstępie, ale powyższa metoda jest prostsza i działa również na procesorach, które nie mają operacji odejmowania. Przykład Dana jest liczba: 010010102 = -(0) ⋅ 27 + 1 ⋅ 26 + 0 ⋅ 25 + 0 ⋅ 24 + 1 ⋅ 23 + 0 ⋅ 22 + 1 ⋅ 21 + 0 ⋅ 20 = 7410 Dokonujemy inwersji: 10110101 Zwiększamy o 1: 10110110U2 = -1 ⋅ 27 + 0 ⋅ 26 + 1 ⋅ 25 + 1 ⋅ 24 + 0 ⋅ 23 + 1 ⋅ 22 + 1 ⋅ 21 + 0 ⋅ 20 = -7410
DODAWANIE I ODEJMOWANIE LICZB Dodawanie i odejmowanie w U2 odbywa się standardową metodą – traktujemy liczby jako zwykłe liczby binarne (dodatnie), dodajemy je lub odejmujemy, a wynik otrzymujemy w zapisie U2. Dodawanie i odejmowanie odbywa się łącznie z bitem znaku, a przeniesienia i pożyczki poza najstarszy bit (bit znaku) ignorujemy. Jeśli jednak przepełnienie (lub pożyczka) nie będzie występować jednocześnie na bit znaku i poza niego, wówczas możemy być pewni przekroczenia zakresu wyniku. Uwaga: przecinek oznacza oddzielenie części całkowitej od ułamkowej, kropka znaku liczby od wartości w U2. Rezerwujemy odpowiednią ilość "bitów" uzupełniając z lewej strony bitem znaku, a z prawej zerami zgodnie z zasadą zapisu w U2.
PRZYKŁAD: DODAWANIE I ODEJMOWANIE 1.10100,010 +1.11000,011 ------------ 1.01100,101 -1.11000,011 1.11011,111
DZIAŁANIA LOGICZNE I BRAMKI Działania logiczne posługują się głównie algebrą Boole’a określoną dla zmiennych przyjmujących wartości ze zbioru dwóch elementów {0; 1}. Na zmiennych dwustanowych definiuje się następujące działania: – iloczyn logiczny nazywany funkcją AND: – sumę logiczną OR: – negację argumentu NOT: W praktyce wygodnie jest wprowadzić również funkcje realizujące złożenie funkcji AND z NOT oraz OR z NOT – negacja iloczynu NAND: – negacja sumy NOR: Definicje funkcji AND, OR, NAND i NOR można łatwo rozszerzyć na dowolną liczbę argumentów przez złożenie ich z funkcji dwuargumentowych, np. A*B*C=(A*B)*C
Bramka NOT (negacja) Symbol graficzny: Tablica prawdy 1 1 Wejście Wyjście 1 1 Jest to najprostsza bramka; jej zadaniem jest odwracanie (negowanie) sygnału wejściowego. Gdy na wejściu ustawimy sygnał "1" to na wyjściu otrzymamy "0", a gdy na wejściu ustawimy "0" to na wyjściu pojawi się "1". Wejście bramki, wg przedstawionego wyżej symbolu graficznego znajduje się po lewej stronie; po prawej jest jej wyjście. Bramka ta zawsze ma tylko jedno wejście.
Bramka AND (iloczyn) Symbol graficzny: Tablica prawdy Wejście1 Wejście2 Wyjście 1 1 1 1 Bramka ta realizuje tzw. iloczyn logiczny. Na wyjściu stan "1" występuje tylko i wyłącznie wtedy gdy na wszystkich wejściach bramki ustawiony jest również stan logiczny "1". Bramka ta posiada co najmniej dwa wejścia (u nas po lewej stronie) - może jednak posiadać ich więcej - teoretycznie nieskończenie wiele. W praktyce spotyka się bramki posiadające do 8 wejść. Natomiast wyjście wszystkie bramki mają tylko jedno.
Bramka OR (suma) Symbol graficzny: Tablica prawdy 1 1 1 Wejście1 Wejście2 Wyjście 1 1 1 1 1 1 Jest to tzw. bramka sumy logicznej. W przypadku tej bramki wystarczy aby choć na jednym z jej wejść pojawił się stan "1" i wtedy na wyjściu również pojawi się jedynka logiczna "1". Odnośnie ilości możliwych wejść - jak wyżej.
Bramka NAND (negacja iloczynu) Symbol graficzny: Tablica prawdy Wejście1 Wejście2 Wyjście 1 1 1 1 1 1 Bramka ta stanowi jakby połączenie bramki AND i NOT. Zero logiczne "0" na wyjściu jest ustawiane tylko wtedy gdy na obu wejściach jest jedynka logiczna "1". W pozostałych przypadkach na wyjściu zawsze jest stan "1". Widać więc, że jest ona dokładną odwrotnością bramki AND - porównaj tablice prawdy dla obu bramek. Również i ta bramka może mieć wiele wejść i tylko jedno wyjście.
Bramka NOR (negacja sumy) Tablica prawdy Symbol graficzny: Wejście1 Wejście2 Wyjście 1 1 1 1 A ta bramka natomiast jest odwrotnością bramki OR. Zero na wyjściu pojawia się zawsze wtedy, gdy choćby na jednym z wejść jest jedynka logiczna. Tylko wtedy gdy wszystkie wejścia są ustawione w stan "0" na wyjściu pojawia się "1".
Bramki wielowejściowe Wejście1 Wejście2 Wejście3 Wejście4 Wyjście 1 Symbol graficzny: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Na symbolu graficznym dochodzą tylko dodatkowe wejścia podobnie jak w tablicy prawdy - zamiast dwóch wejść mamy cztery. A ponieważ jest to bramka AND, wyjście przyjmuje stan "1" tylko wtedy gdy wszystkie wejścia również są ustawione w stan "1".
UKŁADY WEJŚCIA / WYJŚCIA Układem wejścia / wyjścia nazywamy układ elektroniczny pośredniczący w wymianie informacji pomiędzy mikroprocesorem i pamięcią systemu z jednej strony, a urządzeniem peryferyjnym z drugiej. Dla systemu mikroprocesorowego układ wejścia / wyjścia widoczny jest jako rejestr lub zespół rejestrów o określonych adresach oraz pewien zestaw sygnałów sterujących.
Układy wejścia / wyjścia współadresowalne z pamięcią operacyjną CPU – centralna jednostka przetwarzająca PAO – pamięć operacyjna I/O – układy wejścia wyjścia AB – magistrala adresowa W przypadku układów współadresowalnych z pamięcią operacyjną wybieramy obiekt na którym dokonujemy operacji (komórka pamięci lub rejestr układu wejścia / wyjścia), za pomocą adresu. Sygnały sterujące są wspólne dla pamięci i układów wejścia / wyjścia.
Układy wejścia / wyjścia izolowane Dla izolowanych układów wejścia / wyjścia wybieramy obiekt na którym dokonujemy operacji (komórka pamięci lub rejestr układu wejścia / wyjścia), za pomocą sygnałów sterujących. Przestrzenie adresowe pamięci i układów wejścia / wyjścia są rozdzielone.
Operacje wejścia / wyjścia Operacjami wejścia / wyjścia nazywamy całokształt działań potrzebnych do realizacji wymiany informacji pomiędzy mikroprocesorem i pamięcią z jednej strony, a układem wejścia / wyjścia z drugiej. • Bezwarunkowe operacje wejścia / wyjścia Bezwarunkową operacja wejścia / wyjścia nazywamy taką operację przy realizacji której mikroprocesor nie sprawdza gotowości układu wejścia / wyjścia do tej wymiany. • Operacje wejścia / wyjścia z testowaniem stanu układu wejścia / wyjścia - Przy realizacji operacji wejścia / wyjścia z testowaniem stanu układu wejścia / wyjścia, mikroprocesor sprawdza sygnał (np. może to być określony bit) gotowości układu wejścia / wyjścia do tej wymiany. W przypadku potwierdzenia gotowości do wymiany przez układ jest ona realizowana.
Operacje wejścia / wyjścia z przerwaniem programu STEROWNIK PRZERWAŃ: Pośredniczenie w przyjmowaniu zgłoszeń przerwań pomiędzy mikroprocesorem, a innymi układami wejścia / wyjścia Przyjmowanie zgłoszeń przerwań od wielu układów wejścia / wyjścia Wybór z pośród kilku jednocześnie zgłoszonych przerwań tego, które zostanie obsłużony Zasygnalizowanie dokonanego wyboru przez podanie numeru (adresu) układu wejścia / wyjścia, z którym zostanie dokonana wymiana, a dokładniej, adresu programów obsługi przerwania realizującego tą wymianę Po przyjęciu sygnałów zgłoszeń przerwań od układów wejścia / wyjścia i wyborze układów, który będzie obsłużony, wygenerowanie sygnału zgłoszenia przerwania bezpośrednio do mikroprocesora.
Wykonanie operacji wejścia / wyjścia z przerwaniem programu
Schemat blokowy sterownika przerwań
Operacja maskowania sygnałów przerwań
Dziękuję za uwagę!