Porównaj architektury procesorów rdzeniowych: Harvard, mod Harvard, von Neumana. Podaj przykłady mikroprocesorów dla każdej architektury.
Architektura Harvardzka –
opiera się na użyciu dwóch oddzielnych układów pamięci (osobny układ do operacji na rozkazach i osobny do operacji na danych) i dwóch magistral łączących te pamięci z procesorem, dzięki czemu w trakcie pobierania argumentów wykonywanej właśnie instrukcji można równocześnie zacząć pobieranie następnego słowa rozkazowego . Skraca to cykl rozkazowy i zwiększa szybkość pracy. Obszary adresowe pamięci danych i programu są rozdzielone. Pociąga to za sobą niejednoznaczność adresów, ponieważ pod tym samym adresem jednostka centralna widzi pamięć RAM i ROM.
W tym przypadku stosuje się inne rozkazy dla pamięci programu i inne dla pamięci danych. Ponadto magistrala danych i rozkazów mają różną szerokość (długość słowa).
Separacja pamięci danych od pamięci rozkazów sprawia, że architektura harwardzka jest obecnie powszechnie stosowana w mikrokomputerach jednoukładowych, w których dane programu są najczęściej zapisane w nieulotnej pamięci ROM (EPROM/EEPROM), natomiast dla danych tymczasowych wykorzystana jest pamięć RAM (wewnętrzna lub zewnętrzna).
W architekturze typu Harvard komputer ma możliwość jednoczesnego dostępu do danych oraz do rozkazów programu co zwiększa jego efektywność. Procesory o takiej strukturze stosowane są przede wszystkim w obróbce sygnałów, w tak zwanych procesorach DSP.
Architektura harwardzka jest także stosowana przy dostępie procesora do pamięci cache.
Przykłady mikroprocesorów:
AVR
DSP
Architektura von Neumanna –
rodzaj architektury komputera, przedstawionej po raz pierwszy w 1945 roku.
Polega 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 sam program)
urządzenia wejścia/wyjścia
System komputerowy zbudowany w oparciu o architekturę von Neumanna 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 danych
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.
Architektura Von-Neumanna cechuje się jednolitą przestrzenią adresową, w której wszystkie pamięci, rejestry i układy we/wy są umieszczone w jednej, wspólnej przestrzeni adresowej. W architekturze tej zakłada się, że podział przestrzeni adresowej na pamięć programu, pamięć danych oraz obszar we/wy jest czysto umowny i zależy wyłącznie od rozmieszczenia tych elementów w obszarze adresowym podczas projektowania systemu.
System komputerowy von Neumanna nie posiada oddzielnych pamięci do przechowywania danych i instrukcji. Instrukcje jak i dane są zakodowane w postaci liczb. Bez analizy programu trudno jest określić czy dany obszar pamięci zawiera dane czy instrukcje. Wykonywany program może się sam modyfikować traktując obszar instrukcji jako dane, a po przetworzeniu tych instrukcji - danych - zacząć je wykonywać.
Architektura von Neumanna tworzy w pewnym miejscu tzw. wąskie gardło ograniczające moc procesora. Tym miejscem jest szyna, czyli kanał, przez który procesor komunikuje się z pamięcią i urządzeniami zewnętrznymi.
W architekturze harwardzkiej adres danej można podawać do pamięci danych już w czasie podawania adresu następnej instrukcji pamięci programu. Taka architektura ułatwia przetwarzanie potokowe. Rozwiązaniem jest zastosowanie pamięci podręcznej cache.
Programowanie jest ułatwione, gdyż dostęp do danych, programu i urządzeń we/wy odbywa się przy użyciu zunifikowanych rozkazów wykorzystujących te same tryby adresowania. Zatem nie istnieje tu potrzeba wprowadzania specjalnych rozkazów pozwalających na przepływ danych pomiędzy pamięcią ROM i RAM.
Przykłady mikroprocesorów:
ARM
Zmodyfikowana architektura harwardzka –
jest rozwiązaniem pośrednim, starającym się połączyć zalety architektury harwardzkiej i Von-Neumanna. Obszary pamięci ROM i RAM są rozdzielone, ale charakteryzują się taką samą długością słowa. Wykorzystują one wspólne magistrale danych i adresową.
Dzięki multiplekserom MUX i odpowiedniej organizacji magistrali pamięci ROM i RAM możliwe jest z pewnymi ograniczeniami przesyłanie stałych z pamięci ROM do rejestrów i pamięci RAM. Jedynym rejestrem niewidocznym jako komórka pamięci RAM jest rejestr akumulatora A.
Przykłady mikroprocesorów:
rodzina mikrokontrolerów 8051
Porównaj architektury układów mikroprocesorowych na podstawie modelu pamięci.
Architektura von Neumanna
Architektura Harvard
Architektura zmodyfikowana Harvard
Opisz i porównaj CISC i RISC.
Podział na CISC i RISC jest podziałem, który można uzyskać korzystając z kryterium typu listy instrukcji.
RISC (Reduced Instruction Set Computers) –
Architektura RISC, czyli o zredukowanej liście instrukcji, odznacza się następującymi cechami:
• procesor jest zbudowany zgodnie z architekturą harwardzką,
• procesor wykorzystuje przetwarzanie potokowe w celu zwiększenia szybkości wykonywania programu,
• zbiór realizowanych instrukcji jest ograniczony i spełnia warunki ortogonalności (symetrii).
W przetwarzaniu potokowym jednostka centralna dysponuje pobranymi na zapas instrukcjami, które będą kierowane do współbieżnego wykonania w jej poszczególnych jednostkach wykonawczych. W procesorze tego typu zamiast prostego rejestru instrukcji stosuje się pamięć FIFO (first-in first-out), która gromadzi kolejkę instrukcji. Instrukcje pobierane z pamięci programu do kolejki w cyklu pre-fetch opuszczają ją w takiej samej kolejności i są kierowane do poszczególnych układów wykonawczych.
Jej podstawowe cechy to:
Zredukowana liczba rozkazów do niezbędnego minimum. Ich liczba wynosi kilkadziesiąt, podczas gdy w procesorach CISC sięga setek. Co znacznie upraszcza dekoder rozkazów.
Redukcja trybów adresowania, dzięki czemu kody rozkazów są prostsze, bardziej zunifikowane, co dodatkowo upraszcza dekoder rozkazów. Ponadto wprowadzono tryb adresowania, który ogranicza ilość przesłań .
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.
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.
Dzięki przetwarzaniu potokowemu (ang. pipelining) wszystkie rozkazy wykonują się w jednym cyklu maszynowym, co pozwala na znaczne uproszczenie bloku wykonawczego, a zastosowanie superskalarności także na umożliwienie równoległego wykonywania rozkazów. Dodatkowo czas reakcji na przerwania jest krótszy.
Pojęcie ortogonalności oznacza unifikację instrukcji według następujących zasad:
każda instrukcja może operować na dowolnym rejestrze roboczym. Procesor nie ma więc wyróżnionych rejestrów, które są specjalizowane do wykonywania określonych rodzajów operacji,
każda instrukcja może wykorzystywać dowolny tryb adresowania argumentów, nie ma ukrytych związków między instrukcjami (efektów ubocznych), które powodowałyby nieprzewidziane reakcje systemu w zależności od kontekstu użycia rozkazów w programie,
kody rozkazów i formaty instrukcji są zunifikowane. W szczególności wszystkie instrukcje zajmują w pamięci programu taką samą liczbę bajtów.
Przykłady rodzin mikroprocesorów o architekturze RISC:
Intel 8086
Intel 8096
IBM 801
PowerPC
MIPS
Alpha
ARM
Motorola 88000
AMD 29000
SPARC
PA-RISC
Atmel_AVR
CISC (Complex Instruction Set Computers) –
Mikrooperacje arytmetyczne - dodawanie, odejmowanie, mnożenie i dzielenie, inkrementacja i dekrementacja: ADD, SUBB, MUL, DIV, INC, DEC;
Mikrooperacje logiczne – iloczyn logiczny, suma logiczna, suma logiczna modulo 2(XOR), negacje – rozkazy ANL, ORL, XRL, CLR
Procesory typu RISC ( ReducedInstruction Set Computer - komputery o zredukowanej liście rozkazów) - zredukowana liczba rozkazów
Cechy architektury:
- Ograniczona lista rozkazów, zawierająca do 128 rozkazów wewnętrznych.
- Rozkazy wewnętrznych mają prostą treść operacyjną, realizują one osobno operacje dostępu do pamięci operacyjnej i operacje przetwarza danych w rejestrach.
- Mała liczba trybów adresowania dostępna w rozkazach wewnętrznych, do 4.
- Duża liczba rejestrów roboczych w procesorze, od 32 do 256.
- Mała liczba formatów rozkazów wewnętrznych, jednakowa długośd słowa rozkazowego - często odpowiadająca pojedynczemu słowu.
- Ujednolicony czas wykonania rozkazów - od jednego do kilku cykli zegara.
-Układ sterowania procesora jest sprzętowy.
- prosta budowa procesora
- zredukowana liczba trybów adresowania
- zwiększenie liczby rejestrów (min. 16, zwykle 32
- przetwarzanie potokowe, wszystkie rozkazy są wykonywane w jednym cyklu maszynowym
- argumenty instrukcji mogą być równej długości
- instrukcje trójargumentowe
- jednakowa długość instrukcji – 32 bity
cechy:
-procesor jest zbudowany zgodnie z architekturą harwardzką,
-procesor wykorzystuje przetwarzanie potokowe (pipeling) w celu zwiększenia szybkości wykonywania programu,
-zbiór realizowanych instrukcji jest ograniczony i spełnia warunki ortogonalności(symetrii).
W przetwarzaniu potokowym dysponuje pobranymi na zapas instrukcjami, które będąkierowane do współbieżnego wykonania w jej poszczególnych jednostkach wykonawczych.W procesorze tego typu zamiast prostego rejestru instrukcji stosuje się pamięd FIFO (first-infirst-out), która gromadzi kolejkę instrukcji. Instrukcje pobierane z pamięci programu do kolejki w cyklu pre-fetch opuszczają ją w takiej samej kolejności i są kierowane do poszczególnych układów wykonawczych.
Pojęcie ortogonalności oznacza unifikację instrukcji według następujących zasad:
-każda instrukcja może operować na dowolnym rejestrze roboczym. Procesor nie ma więc wyróżnionych rejestrów, które są specjalizowane do wykonywania określonych rodzajów operacji, każda instrukcja może wykorzystywać dowolny tryb adresowania argumentów, nie ma ukrytych związków między instrukcjami (efektów ubocznych), które powodowałyby nieprzewidziane reakcje systemu w zależności od kontekstu użycia rozkazów w programie,
-kody rozkazów i formaty instrukcji są zunifikowane. W szczególności wszystkie instrukcje zajmują w pamięci programu taką samą liczbę bajtów. Ortogonalność zbioru instrukcji radykalnie upraszcza budowę układu sterowania, który może realizować cykl wykonania każdego rozkazu według identycznego algorytmu. Stąd prostszy układ sterowania może pracować znacznie szybciej, dlatego cykl rozkazowy ulega skróceniu. Klasyczna architektura jest stosowana w mikrokontrolerach rzadko. Najczęściej można znaleźć elementy tej architektury, ale ortogonalność instrukcji nie jest pełna.
Procesory typu CISC ( CompoundInstruction Set Computer - komputery o złożonej liście rozkazów) - duża liczba rozkazów Cechy architektury:
- Rozbudowana lista rozkazów zawierająca od 100 do 300 rozkazów wewnętrznych.
-Wiele rozkazów wewnętrznych ma skomplikowana treść operacyjną, realizują one w jednym rozkazie skomplikowane operacje łączące dostępy do pamięci operacyjnej z przetwarzaniem danych.
-Duża liczba trybów adresowania dostępna w rozkazach wewnętrznych, od 5 do 20.
-Mała liczba rejestrów roboczych w procesorze, od kilku do kilkunastu.
-Formaty rozkazów wewnętrznych zróżnicowane pod względem: podziału na pola, długości słowa rozkazowego i liczby argumentów.
-Zróżnicowane czasy wykonania rozkazów - od jednego do wielu cykli zegara.
-Układ sterowania procesora jest przeważnie mikroprogramowany.
- niektóre rozkazy potrzebują dużej liczby cykli procesora
- występowanie złożonych, specjalistycznych rozkazów
- duża liczba trybów adresowania
- bezpośrednio do pamięci może się odwoływać duża liczba rozkazów
- powolne działanie dekodera rozkazów
- rozkazy są różnej długości
- mniejsza niż w RISC częstotliwość taktowania procesora
- max 16 rejestrów
- instrukcje dwuargumentowe
-Cecha ortogonalności nie jest zachowana.
-Instrukcje są wąsko specjalizowane, współpracują na ogół tylko z określonymi rejestrami i wymagają stosowania określonych trybów adresowania.
USB – zaawansowany interfejs szeregowy, opracowany głównie z myślą o wykorzystaniu w komputerach klasy PC, realizujący koncepcję plug and play w odniesieniu do sieci urządzeń zewnętrznych. Może obsługiwać maksymalnie do 127 urządzeń peryferyjny, stosując dużą szybkość transmisji danych – 1,5Mbit/s w przypadku obniżonej prędkości i 12Mbit/s przy prędkości pełnej.
Obsługa magistrali USB: identyfikacja rodzaju transmisji;
• przesyłanie danych pomiędzy kontrolerem USB komputera a urządzeniem peryferyjnym,
zgodnie z kierunkiem określonym w fazie identyfikacji rodzaju transmisji;
• potwierdzenie realizacji lub informacja o błędach transmisji danych.
Transmisja szeregowa – cyfrowa transmisja danych, podczas której bity informacji są przesyłane kolejno po sobie wraz z dodatkowymi danymi pozwalającymi na kontrolę tej transmisji. Do przeprowadzenia tej transmisji potrzebne są tylko dwie linie. Kolejną zaletą jest duża odporność na zakłócenia. Standardami tej transmisji są np. USB, RS-232, RS-485, IzC, SPI i inne.
RS-232 – prosty, do wiekowy, standardowy interfejs szeregowy, służący do komunikacji pomiędzy urządzeniem nadrzędnym a peryferyjnym.
Timery mikrokontrolera:
Najprostsza metoda odliczania czasu – użycie rozkazu NOP (nie robi nic), jednostka czasu to czas wykonania jednego rozkazu.
Rozkaz NOP zajmuje 1 cykl maszynowy czyli 1μs.
DSM ma 2-timery 16 bitowe
- jako timery (liczy impulsy z rezonatora kwarcowego dzielone na 12)
- jako liczniki (liczy impulsy podłączone do linii wejściowej mikrokontrolera)
Maksymalna wartość naliczania – 65536. Stan początkowy ustawiany dowolnie. Zakończenie zliczania symuluje flaga bądź przerwanie.
4 tryby pracy:
Timer zlicza impulsy zew. I podłączone do linii procesora
Timer 0 z linii P3.4 (T0)
Timer 1 z linii P3.5 (T1) – do T1 podłączona jest klawiatura wyświetlacza 7-segmentowego. Używając z niej klawiszy można nadawać impulsy na T1.
Rejestry związane z Timerami są w obszarze rejestrów specjalnych.
TL0 – młodsza część timera 0 (8 bit)
TH0 – starsza część
TL1 - --„—1
TH1 - ---„---- 1
TMOD – ustawia tryby pracy timera 0,1
TCON – 4 bity z tego rejestru sterują pracą timerów
Bit CIT – decyduje o pracy jako Timer lub licznik. Stan 0 zlicza impulsy wew. 1- impulsy zewnętrzne
GATE – sposób kontrolowania pracy timera: 0-start.stop przez ustawienie bitu TRx (z rej. TCON) 1- start 0-stop. Przy 1 o pracy timera decyduje jeszcze stan linii INTx.