ARCHITEKTURA SYSTEMÓW MIKROPROCESOROWYCH część 3 dr inż. Małgorzata Langer B9, pok. 310 Instytut Elektroniki
Podstawowa architektura systemu mikroprocesorowegow aspekcie jego budowy Projektant systemu wybiera architekturę maszyny w oparciu o koszt i korzyści płynące z możliwej zoptymalizowanej organizacji przy wykorzystaniu dostępnych elementów sprzętu (hardware) i oprogramowania (software). Każdy element może być wdrożony w różnych postaciach zależnie od postawionych wymagań i dostępnej (lub wybranej) technologii. W SZCZEGÓLNOŚCI BUDOWA SYSTEMU MUSI ODZWIERCIEDLIĆ WSZYSTKIE MINIMALNE WYMAGANIA POSTAWIONE PRZEZ ASPEKT ORGANIZACJI PRACY (poprzedni wykład) 2
Parametry podstawowe dla konstrukcji Wybrany zestaw instrukcji Długość słowa Ustalone formaty instrukcji i danych Sposób zaprojektowania (i technologia) rejestrów i pamięci Ścieżka przepływu danych i instrukcji Projekt jednostki arytmetycznej i logicznej Mechanizm I/O Generowanie sygnałów sterujących Projekt jednostki sterującej 3
Wykonanie programu Po załadowaniu kodu obiektu do pamięci, można rozpocząć jego wykonywanie poprzez ustawienie licznika programu na adres startu i aktywację (przycisku, rozkazu, ) START Instrukcje są wtedy pobierane z pamięci i kolejno wykonywane, aż pojawi się instrukcja HLT, albo wcześniej wystąpi błąd (i wtedy: co dalej? ) Wykonywanie instrukcji składa się z dwóch etapów: - pobieranie instrukcji - wykonanie instrukcji 4
Pobieranie instrukcji Słowo z instrukcją musi zostać pobrane z pamięci do rejestru instrukcji (IR) W tym celu zawartość licznika programu (PC) przeniesiona zostaje do MAR i wykonana zostaje operacja odczytu pamięci słowo zostaje przeniesione do MBR Następnie instrukcja zostaje przeniesiona do IR, a wewnętrzna logika sterowania musi dodać 1 do zawartości PC, aby wskazywał instrukcję następną Taka sekwencja pobierania instrukcji jest niezmienna obowiązuje dla wszystkich instrukcji 5
Wykonywanie instrukcji Po zdekodowaniu kodu instrukcji (opcode) następuje faza wykonywania, unikalna dla każdej instrukcji Najczęściej jest to sekwencja operacji, jeżeli potrzeba, z wczytywaniem danych, obliczaniem adresu, itp. Po fazie wykonywania maszyna wraca do fazy pobierania Jeżeli instrukcja używa trybu pośredniego adresowania, potrzebna jest faza dodatkowa do obliczenia efektywnego adresu tzw. Faza opóźniająca (defer phase) POBIERANIE, WYKONYWANIE ORAZ OPÓŹNIENIE (ewentualnie) SKŁADAJĄ SIĘ NA CYKL INSTRUKCJI 6
Ścieżki przepływu pomiędzy rejestrami Faza pobierania i obliczania adresu (A) adres; (I) instrukcja; 1 zwiększenie o 1 7
Struktura magistrali Połączenia rejestrów mogłyby być realizowane jako każdy indywidualnie ze wszystkimi potrzebnymi NIEREALNE! Lub przy pomocy MAGISTRALI (bus), która łączy wszystkie rejestry Single bus magistrala pojedyncza wszystkie dane i adresy płyną przez jedną magistralę Multibus wiele magistral każda przeznaczona do wyznaczonych transferów, np. oddzielna dla danych a inna dla adresów MULTIBUS pozwala na równoległy przepływ operacje wykonywane równolegle 8
Przykładowa struktura magistrali w ASC [S.G.Shiva; Computer Organization, Design and Architecture] Przy wykonywaniu np. dodawania BUS1 i BUS2 podadzą składniki a wynik zostanie podany na BUS3 9
Czas przesyłu Dane wchodzą do rejestru przy dodatnim (rosnącym) zboczu zegara Sygnał zegarowy jest generowany przez jednostkę sterującą (oraz inne sygnały sterujące do wyboru źródła i przeznaczenia) Zegar musi mieć podłączenie do wszystkich rejestrów Czas potrzebny na przeniesienie jednostki danych ze źródła do przeznaczenia poprzez ALU jest czasem TRANSFERU REJESTRU Częstotliwość zegara musi być maksymalnie taka, aby podczas okresu zegara zakończył się najwolniejszy transfer CZAS TRANSFERU REJESTRU DECYDUJE O PRĘDKOŚCI PRZETWARZANIA 10
Praca przy pojedynczej magistrali W takiej strukturze konieczne są rejestry buforowe. Przy dodawaniu, albo jeden ze składników, albo wynik, musi być zapisany w buforze, zanim można go przesłać do rejestru przeznaczenia Przy pojedynczej magistrali konieczne są więc dodatkowe transfery NIEKTÓRE OPERACJE BĘDĄ WYMAGAŁY WIĘCEJ CZASU Praca komputera z pojedynczą magistralą jest WOLNIEJSZA niż z multibus 11
ALU jednostka arytmetyczna i logiczna ALU jest strukturą, która wykonuje wszystkie działania arytmetyczne i logiczne W PROSTYM KOMPUTERZE zestaw instrukcji musi obejmować przynajmniej: - dodawanie dwóch liczb - obliczanie uzupełnienia dwójkowego do liczby - przesuwanie zawartości akumulatora o jeden bit w prawo, lub w lewo - bezpośredni transfer dowolnego ze swoich wejść na wyjście, aby umożliwić operacje przesyłu danych, typu IR MBR oraz MAR IR 12
Minimalny zestaw instrukcji: Założenie 1: Jednostka sterująca maszyny dostarczy odpowiednie sygnały sterujące do ALU, aby wykonać operacje (identyfikowane jako nazwy instrukcji) Założenie 2: Mamy 3 magistrale BUS1 i BUS2 na wejścia, BUS3 wyjście ALU; pozycje bitów numerowane są od lewej (15) do prawej (0) ADD: BUS3 BUS1 + BUS2 COMP: BUS3 BUS SHR: BUS3 BUS1 15 BUS1 15-1 SHL: BUS3 BUS 14-0 0 TRA1: BUS3 BUS1 TRA2: BUS3 BUS2 13
ADD Obwód dodawania musi się składać z 15 sumatorów pełnych i jednego półsumatora dla najmniej znaczącego bitu (0) Wyjście sumy każdego bitu jest bramkowane w bramce AND z sygnałem sterującym ADD Wyjście przeniesienia z każdego bitu jest wejściem na wejście bitu przeniesienia kolejnego bardziej znaczącego bitu. (Pół-sumator nie posiada wejścia na bit przeniesienia, a najbardziej znaczący sumator (15) bit przeniesienia podaje jako znacznik błędu do rejestru stanu PSR) Zawartość bitów akumulatora na magistrali BUS1 dodawana jest do zawartości MBR na BUS2 i zawartość zapisana zostaje w akumulatorze 14
Obwód dla pojedynczego bitu Bit 0 dla SHR nie jest podłączony do bitu mniej znaczącego BUS3, więc sygnał jest tracony 15
COMP Logiczny obwód to 16 bramek NOT, po jednej dla każdego bitu BUS1 Otrzymujemy w ten sposób uzupełnienie jedynkowe do liczby. Wyjście z każdej bramki NOT jest bramkowane na bramce AND z sygnałem COMP Wynik pośredni jest zawartością akumulatora i wynik zostaje zapisany w akumulatorze Dwójkowe uzupełnienie to uzupełnienie jedynkowe i dodanie 1 do wyniku (TCA uzupełnienie dwójkowe z zapisem w akumulatorze) 16
SHR Przesuwanie w prawo odbywa się poprzez połączenie każdego bitu BUS1 do sąsiadującego mniej znaczącego bitu BUS3 Transfer jest bramkowany przez sygnał sterujący SHR Najmniej znaczący bit z BUS1 (BUS1 0 ) jest tracony w procesie przesuwania Najbardziej znaczący bit BUS3 15 jest wypełniony bitem znaku 17
SHL Przesuwanie w lewo odbywa się poprzez połączenie każdego bitu BUS1 do sąsiadującego bardziej znaczącego bitu BUS3 Transfer jest bramkowany przez sygnał sterujący SHL Najbardziej znaczący bit z BUS1 (BUS1 15 ) jest tracony w procesie przesuwania Najmniej znaczący bit z BUS3 (BUS3 0 ) zostaje wypełniony zerem 18
Schemat logiczny ALU dla typowego bitu 19
Rejestr stanu - PSR Bity PSR są uaktualniane równocześnie z aktualizacją akumulatora C N Z O I Zapisywane są następujące bity: - C bit przeniesienia (C out ) przy dodawaniu bit przeniesienia z najbardziej znaczącej pozycji - 15 - N znak ujemny (bit BUS3 15 ) - Z bit zera (gdy wszystkie bity BUS3 są zerami) - O bit przepełnienia (gdy podczas dodawania suma przekracza (2 15 1), czyli gdy oba bity znaku składników są jedynkami, a wyniku zerem lub odwrotnie), (lub przy SHL, gdy zmienia się bit znaku) - I przerwanie bit podawany z układu sterującego Architektura komputerów, część 5 20
CPU Central Processing Unit Jest to połączenie ALU i jednostki sterującej Jego funkcją jest GENEROWANIE SYGNAŁÓW STERUJĄCYCH potrzebnych przez inne bloki urządzenia, WE WCZEŚNIEJ OKREŚLONEJ KOLEJNOŚCI, tak, aby spowodować sekwencję działań wywoływanych przez każdą instrukcję Schemat blokowy Uwaga: CLOCK jest podłączony do wszystkich rejestrów 21
CPU DATA przerzutnik ułatwiający handshake (nawiązanie kontaktu) między CPU a urządzeniami I/O RUN przerzutnik ustawiany sygnałem START (np. z zewnętrznego panelu sterującego) aby uaktywnić dowolną mikrooperację STATE dwubitowy rejestr stanu umożliwiający rozróżnienie trzech faz (pobierz, opóźnij, wykonaj) 22
SYGNAŁY CPU Wejścia zewnętrzne: z rejestrów (PSR, IR, indeksowych), urządzeń I/O Wejścia wewnętrzne: zawartości (bity przerzutników) danych, rejestru stanu (STATE), rejestru RUN, zegar (CLOCK) Sygnały generowane na potrzeby wewnętrzne: sygnały zmiany stanu (pobierz, opóźnij, wykonaj, reset dla DATA, reset dla RUN) WYJŚCIA: - do pamięci (READ, WRITE) - do ALU (TRA1, TRA2, ADD, COMP, SHR, SHL) - do I/O (INPUT, OUTPUT) - do magistrali 23
Sygnały CPU do struktury magistrali ACC do BUS1 MAR do BUS1 IR 7-0 do BUS1 PC do BUS1 1 do BUS1-1 do BUS1 INDEX do BUS2 MBR do BUS2 1 do BUS2 SWITCHBANK do BUS2 BUS3 do ACC BUS3 do INDEX BUS3 do MAR BUS3 do MBR BUS3 do PC BUS3 do MONITOR BUS3 do IR DIL do ACC ACC do DOL 24
WEJŚCIE / WYJŚCIE Nawet najprostszy komputer musi posiadać przynajmniej jedno urządzenie wejściowe (np. klawiatura) i jedno wyjściowe (np. wyświetlacz, lub drukarka) Najprostszym jest programowalne urządzenie I/O RWD podczas wykonywania tej instrukcji CPU wydaje komendę urządzeniu wejściowemu do przesłania słowa danych i czeka Kiedy urządzenie wejściowe ma gotowe słowo w buforze danych, informuje o tym CPU CPU bramkuje wtedy przepływ danych do ACC poprzez DIL (data input line) 25
WEJŚCIE / WYJŚCIE WWD CPU bramkuje wyjściowe słowo danych z ACC do DOL (data outputline), wydaje komendę urządzeniu wyjściowemu do przyjęcia danych i czeka Gdy urządzenie wyjściowe poprzez swoje bramki umieści słowo danych w swoim buforze informuje CPU o akceptacji danych. CPU może przystąpić do wykonywania następnej instrukcji Wymieniane sygnały informacyjne handshaking W obu operacjach największy czas zabiera czekanie urządzenia I/O są zawsze znacznie wolniejsze od CPU WNIOSEK: Programowalne urządzenia I/O są co prawda bardzo proste, ale bardzo wolne. W takim schemacie CPU nie może podczas czekania robić nic innego (nie otrzymało sygnału o zakończeniu instrukcji) 26
Rodzaje jednostek sterujących Każdy cykl instrukcji składa się z trzech faz, a każda z faz składa się z sekwencji mikrooperacji Mikrooperacja może oznaczać jedno z następujących działań: - pojedynczy transfer rejestru (zawartość jednego rejestru przeniesiona do innego rejestru) - złożony transfer rejestru, zatrudniający ALU (np. suma z dwóch rejestrów przeniesiona do trzeciego rejestru przeznaczenia) - operacja zapisu do pamięci lub odczytu z pamięci Jednostki sterujące mogą być: - wykonaną strukturą bramek, przerzutników i połączeń, która generuje sygnały sterujące (HCU hardwared control unit) - programowalną jednostką, gdzie mikrooperacje dla każdej instrukcji są zapisane w pamięci (MCU microprogrammed control unit) sygnały sterujące są generowane poprzez dekodowanie mikroinstrukcji 27
HCU może być: SYNCHRONICZNE każda operacja jest sterowana zegarem; stan jednostki sterującej można określić znając stan zegara Częstotliwość zegara musi być taka, że odległość między kolejnymi pulsami musi pozwolić na wykonanie najwolniejszej mikrooperacji. ASYNCHRONICZNE zakończenie jednej operacji wyzwala początek następnej; nie istnieje sygnał zegarowy Konstrukcja jest nieco bardziej skomplikowana, ale ograniczone funkcjonalnie asynchroniczne HCU mogą być znacznie szybsze od ich synchronicznych odpowiedników 28
Pamięć a prędkość procesora Czas dostępu pamięci równy jest dwóm czasom transferu rejestru Podczas odczytu, jeżeli adres jest bramkowany do MAR razem z instrukcją READ, dane będą dostępne w MBR na koniec następnego czasu transferu rejestru Podczas zapisywania, jeżeli dane i adres są odpowiednio dostarczone do MAR i MBR, z sygnałem sterującym WRITE, pamięć kończy zapisywanie danych z końcem drugiego czasu transferu rejestru Zawartość MAR nie może zostac zmieniona aż do zakończenia instrukcji READ lub WRITE 29
Charakterystyki czasowe pamięci 30
Cykl maszynowy W synchronicznych układach sterujących czas pomiędzy kolejnymi impulsami zegara takt - (czas transferu rejestru) jest określony przez operację transferu najwolniejszego rejestru. W przypadku ASC jest to sumator w ALU. Takt, inaczej czas transferu rejestru, nazywany jest czasem cyklu procesora, lub małym cyklem Przejście pomiędzy stanami pobierz, opóźnij, wykonaj konstrukcyjnie uważa się za dodatkowy mały cykl (CP 4 ) Główny cykl procesora składa się z kilku cykli małych Cykl instrukcji składa się z jednego lub więcej głównych cyklów procesora 31
MCU Mikroprogramy odpowiadające każdej instrukcji przechowywane są w pamięci ROM (Read Only Memory) Nazwa CROM oznacza pamięć sterującą Control ROM; µcu microcontrol unit µcu jest zwykle prostym HCU, którego funkcją jest wykonywanie mikroprogramów zawartych w CROM W CROM mikroprogram zapisywany jest w postaci binarnej Czas wymagany do wykonania instrukcji jest funkcją ilości mikroinstrukcji w danej sekwencji (każda mikroinstrukcja pobierana jest w dwóch taktach (czas transferu najwolniejszego rejestru + czas dostępu CROM) EMULACJA dowolnego procesora w złożonych systemach komputerowych polega na wpisaniu do pamięci mikroprogramów i tym samym utworzenie namiastki CROM 32
Schemat blokowy MCU 33
URZĄDZENIA PERYFERYJNE sposób obsługi Tryb programowalnych I/O jest nie tylko wolny (procesor wciąż CZEKA), ale nie zawsze możliwy do realizacji (np. gdy urządzenie I/O musi zgłosić ALARM i wymaga natychmiastowej obsługi a dzieje się to w sposób całkowicie nieprzewidywalny) PRZEPŁYW INFORMACJI pomiędzy dowolnym I/O a procesorem składa się z następujących kroków: - wybór urządzenia i sprawdzenie jego gotowości - inicjacja transferu (jeżeli urządzenie jest gotowe) - transfer informacji - zakończenie Kroki te mogą być kontrolowane tylko przez procesor, tylko przez urządzenie, lub i przez procesor i urządzenie 34
W zależności od tego, gdzie jest kontrola Istnieją trzy tryby I/O: 1. Programowany I/O 2. Tryb przerwań I/O 3. Bezpośredni dostęp do pamięci (DMA Direct memory access) 35
Ogólny model I/O 36
Ogólny model I/O Komunikacja ASC peryferia przebiega po liniach DIL (wejście) oraz DOL (wyjście). W praktyce jest to jedna, dwukierunkowa magistrala danych Przerzutnik DATA w jednostce sterującej koordynuje działania I/O Jeżeli (prawie zawsze) jest więcej urządzeń I/O, każde z nich musi mieć swój numer lub adres Wykorzystuje się tu wolny operand z instrukcji RWD i WWD (pole 8 bitów) a nawet 11 bitów (bo w tych instrukcjach wolne są również pole indeksowe i pośrednie) 4 bity pozwalają na 16 urządzeń wejścia i 16 wyjścia 37
Ogólna struktura I/O Adres urządzenia niesiony jest przez magistralę danych i dekodowany przez każde urządzenie. Tylko jedno urządzenie ma zgodny adres i uczestniczy w dalszej operacji Magistrala danych jest dwukierunkowa, Magistrala sterująca niesie sygnały sterujące od CPU oraz stanu generowane przez interfejsy urządzenia (DEVICE BUSY, ERROR, ) 38
Adresy Struktura taka, jak na poprzednim slajdzie wyraźnie oddziela obszar adresów pamięci od obszaru adresów I/O (oddzielne magistrale) tryb IZOLOWANEGO I/O Może być wspólna szyna dla pamięci i urządzeń I/O i wtedy adresy I/O są częścią obszaru adresów pamięci Pamięć CPU Urządz.1 Urządz.N Wspólna magistrala systemowa I/O z mapowaną pamięcią (memory-mapped I/O) 39
Adresy uwaga Pojedyncza (fizycznie) magistrala nie zawsze świadczy o mapowaniu pamięci dla I/O. Można multipleksować adresy do I/O i pamięci na tej samej magistrali poprzez odpowiednie sygnały sterujące (logicznie odpowiada to dwóm magistralom) 40
Interfejs urządzenia Interfejs urządzenia I/O jest unikalny dla danego urządzenia. Zależy od sposobu prezentacji danych, nośnika, konstrukcji, itd. Każdy interfejs zawiera sterownik otrzymujący sygnały sterujące (rozkazy) od CPU i raportujący CPU stan urządzenia Sygnały stanu, to np.: DEVICE BUSY, DATA READY, itp. W interfejsie znajduje się dekoder adresu wybierającego urządzenie Najczęściej jest przetwornik dekodujący odczytane dane i umieszczający je w buforze (skąd zostaną pobrane jako input data) lub pobierający umieszczone w buforze dane (output data), i dekodujący je do formatu zapisu na zewnętrznym medium (np. ASCII do drukarki, 0/1 na nośnik magnetyczny) 41
Interfejs zasadnicze funkcje Główne funkcje interfejsu urządzenia I/O to: - taktowanie (timing) (urządzenie I/O posiada inną prędkość działania niż CPU) - sterowanie - konwersja danych - wykrywanie błędów - korekta błędów 42
Sekwencja operacji - READ Nie ma znaczenia które urządzenie (również CPU) rządzi przy sterowaniu magistralą. Gdy komunikują się dwa urządzenia, zawsze jedno z nich jest MASTER a drugie SLAVE Przesył danych po magistrali może być synchroniczny lub asynchroniczny; wobec CPU urządzenia peryferyjne działają najczęściej asynchronicznie MASTER aktywuje sygnał READ i umieszcza ADRES urządzenia SLAVE (z którego chce odczytać dane). Wszystkie urządzenia podłączone do magistrali dekodują adres, tylko jedno w krótkim czasie (jakim?) ma umieścić dane na magistrali. Aby powiadomić MASTER, że dane już są do pobrania, SLAVE musi przesłać ACK (acknowledge) potwierdzenie o gotowości. Po stwierdzeniu sygnału ACK, MASTER bramkuje dane do swoich wewnętrznych rejestrów 43
Sekwencja operacji - WRITE MASTER aktywuje sygnał WRITE i umieszcza ADRES urządzenia SLAVE (na którym chce zapisać dane) na liniach adresowych magistrali. Podczas gdy urządzenia dekodują adres, MASTER umieszcza dane na magistrali danych. Po pewnym czasie wybrany SLAVE bramkuje dane do swojego bufora i odpowiada sygnałem ACK (data accepted) Po wykryciu sygnału ACK, MASTER usuwa dane i sterujący sygnał WRITE z magistrali Sekwencja wydarzeń opisujących transfer nazywana jest protokołem lub handshake 44
Transfer synchroniczny Transfer asynchroniczny 45
Sterowanie tryb programowanego I/O Procesor 1. Wybiera urządzenie i sprawdza stan urządzenia 3. Jeżeli urządzenie nie jest gotowe powrót do kroku 1; jeżeli gotowe, do 4 4. Daje sygnał do urządzenia o zainicjowaniu przesyłu danych. W przypadku OUTPUT bramkuje dane na linii danych i ustawia linię sterującą wyjście 6. Przy INPUT akceptuje dane; przy OUTPUT usuwa dane z linii danych 7. Odłącza urządzenie (usuwa adres z linii adresowych) Sterownik urządzenia 2. Sygnalizuje procesorowi, że jest lub nie jest gotowe 5. Przy OUTPUT sygnalizuje procesorowi, że dane zostały przyjęte; przy INPUT gromadzi dane i sygnalizuje procesorowi, że są gotowe na liniach danych W danym momencie urządzenie może być albo w trybie OUTPUT, albo INPUT 46
Przerwania (InterruptmodeI/O) Dla poprawy efektywności (aby CPU nie czekał bezczynnie), część czynności kontrolnych przenoszone jest do urządzenia. Procesor wysyła do sterownika urządzenia rozkaz OUTPUT lub INPUT i powraca do przetwarzania następnych instrukcji Sterownik urządzenia odpowiednio zbiera dane z lub przesyła do urządzenia i PRZERYWA procesorowi w jego przetwarzaniu CPU OBSŁUGUJE PRZERWANIE, tzn. odłącza urządzenie jeżeli transfer jest zakończony Również sama inicjalizacja transferu może rozpocząć się od urządzenia przerwaniem; wtedy CPU podczas handshaking określa, czy jest to INPUT, czy OUTPUT 47