Opracowanie Zagadnień na egzamin Mikroprocki

Rozkaz - pojedyncza operacja centralnej jednostki obliczeniowej określona przez zestaw rozkazów danej architektury. Jest ona przekazywana procesorowi, który ją wykonuje, po czym zapisuje wartość wynikową lub ustawia flagę błędu, jeżeli wystąpił. W szerszym pojęciu, rozkaz może być elementem programu wykonywalnego, takiego jak kod bajtowy.

Cykl rozkazowy – są to pewne powtarzające się czynności, polegające na cyklicznym pobieraniu kodów rozkazów z pamięci i wczytywaniu ich do układu sterowania mikroprocesora, a następnie realizacji rozkazu, którego kod został pobrany. Posiada dwie fazy: pobrania i wykonania.

Potok

Potok – pozwala, aby wyjście jednego programu było wejściem dla innego. Jego operatorem jest pionowa kreska (|). Operacja potoku odbiera wynik polecenia znajdującego się przed operatorem potoku i wysyła je, jako dane wejściowe do polecenia umieszczonego za operatorem potoku.

Metody synchronizacji potoku:

• Przewidywanie skoków - Współczesne procesory potrafią przewidywać skoki z 90% skutecznością

• Wykonywanie jednoczesne obu rozgałęzień programu (architektura hiper skalarna) do czasu sprawdzenia warunku rozgałęzienia

• Opóźnienie skoków w potoku - Skok opóźniony (delayed branch): wykonaj następną instrukcję za bieżącą, a potem skocz

Struktura cyklu rozkazowego procesora

Rozkaz realizuje się w czterech etapach:

Cykl rozkazowy procesora

W wykonaniu każdej instrukcji przez procesor można wyróżnić kilka faz. Typowo wyróżnia się następujące fazy:

Należy zauważyć, że dla wielu instrukcji niektóre z wymienionych faz są zbędne, np. instrukcja przesłania między rejestrowego nie wymaga użycia jednostki arytmetyczno-logicznej.

Potok o „głębokości” 5: Wykonywanie każdej instrukcji trwa 5 cykli, ale efektywnie tylko jeden.

Podstawowe problemy:

Sposoby minimalizacji wad:

Preprocesing – coś co się wykonuje przed czymś

Przetwarzanie (proces kojarzenia). Wykonanie każdego etapu przetwarzania wymaga użycia układu funkcjonalnego realizującego potrzebną funkcję i dostarczenia do tego układu danych stanowiących argumenty funkcji. Proces przetwarzania jest ciągiem kojarzeń ortogonalnych zasobów: danych oraz układów/jednostek wykonawczych.

Zależnie od etapu wykonania rozkazu wystąpi w tym procesie jedna z dwóch opcji:

Drugi sposób przetwarzania może wystąpić w etapie wykonania, a także w etapie dekodowania. W innych etapach potrzebne działania są dokładnie określone.

Czas cyklu procesora zależy od złożoności instrukcji i konstrukcji układów je realizujących oraz technologii wykonywania.

Przetwarzania rozkazu: Kolejnymi rozkazami przetwarzania rozkazu są: pobranie rozkazu z pamięci, dekodowanie i wykonanie (w szczególności transfer rejestr-pamięć)

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:

Architektura von Neumanna –

rodzaj architektury komputera, przedstawionej po raz pierwszy w 1945 roku.

Polega na ścisłym podziale komputera na trzy podstawowe części:

System komputerowy zbudowany w oparciu o architekturę von Neumanna powinien:

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:

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:

Mikrokontroler - definicja Mikrokontroler jest układem scalonym bardzo wielkiej skali integracji, w skład, którego wchodzi: - mikroprocesor - pamięć przechowująca rozkazy dla mikroprocesora, dane oraz wyniki operacji - układy wejścia-wyjścia, umożliwiające wprowadzanie do pamięci rozkazów i danych i wyprowadzanie wyników Mikrokontrolery są więc kompletnymi, programowalnymi, autonomicznymi układami (do pracy nie jest konieczne urządzenia zewnętrzne), mogącymi realizować wszystkie operacje składające się na przetwarzanie informacji cyfrowej łącznie z jej wymianą z określonym otoczeniem.

Elementy składowe mikrokontrolera 8051 Mikrokontroler 8051 złożony jest z następujących elementów:

-Generatora sygnałów zegarowych i układów kontrolno-taktujących

-Pamięci programu ROM lub EPROM (4kB w wersji podstawowej)- jest to pamięć ustalana przy produkcji mikrokontrolera

-128-bajtowej pamięci danych w obszarze wewnętrznej pamięci RAM (adresy 00...7Fh)

-zespołu rejestrów specjalnych (SFR-Special Function Registers) umieszczonych w wydzielonym obszarze pamięci wewnętrznej RAM (adresy 80h...0FFh), poprzez które możliwe jest sterowanie urządzeniami wewnętrznymi

-16-bitowego licznika rozkazów (PC)

-8-bitowej ALU (jednostki arytmetyczno-logicznej)

-Czterech grup rejestrów (R0-R7), z których każda zawiera osiem 8-bitowych rejestrów umieszczonych w wewnętrznej pamięci danych RAM

-16-bitowego wskaźnikowego rejestru danych DPTR (rejestr SFR o adresie 82h)

- 8- bitowego wskaźnika stosu SP (rejestr SFR o adresie 81h)

- czterech 8-bitowych portów we-wy PO-P3 (bufory w bloku SFR pod adresami 80h, 90h,A0h i B0h)

- dwóch 16-bitowych układów czasowo-licznikowych TIMER 0 i TIMER 1 . Układy te mogą zliczać impulsy zegarowe lub impulsy przychodzące z zewnątrz.

- sterownika szeregowej transmisji danych pozwalającego na zorganizowanie transmisji w standardzie RS232 w dwu kierunkach jednocześnie

- sterownika przerwań przyjmującego przerwania z pięciu źródeł - dwa z układów zegarowych (timerów), jedno ze sterownika transmisji szeregowej i dwa z linii zewnętrznych

Dodatkowe zastosowania portów P0 i P2 pełnią rolę szyny systemowej adresującej zewnętrzną pamięć kodu programu lub danych. P0 służy do przesyłania 8-bitowych danych P3 pełni rolę we-wyj dla układów licznikowo-czasowych i portu szeregowego oraz steruje kierunkiem przepływu danych z/do zewnętrznej pamięci danych RAM.

Pamięć programu mikrokontrolera 8051 Standardowy mikrokontroler 8051 posiada 4KB pamięci programu typu ROM programowane maskę. Niektóre wersje układu posiadają pamięć:

- EPROM (Erasable Programmable ROM) – pamięć z możliwością kasowania dotychczasowej zawartości promieniami ultrafioletowymi i prowadzania nowej zawartości za pomocą zewnętrznego programatora. Umieszczane są w obudowach z okienkiem kwarcowym w celu umożliwienia kasowania. Z pamięci można czytać, lecz nie można do niej wpisywać danych. Umieszczanie danych w pamięci wymaga specjalnego procesu, zwanego programowaniem.

- lub EEPROM -przechowuje zmienne lub tablice stałych, które po wyłączeniu zasilania nie mogą ulec skasowaniu. Pamięć programu przechowuje kody operacji przeznaczonych do wykonania przez mikroprocesor, może także służyć do przechowywania stałych używanych w programie. Pamięć programu adresowana jest przez 16-bitowy licznik rozkazów (PC, ang. Program Counter). Mikrokontroler 8051 może także korzystać z zewnętrznej pamięci programu o pojemności do 64KB.

Pamięć danych mikrokontrolera 8051 Na wewnętrzną pamięć RAM składają się dwa bloki: 128 bajtów ciągłego obszaru pamięci danych oraz obszar 128 bajtów niespójnego bloku rejestrów specjalnych mikrokontrolera.

Rejestry specjalne Blok rejestrów specjalnych (SFR; ang. Special Function Registers) znajduje się w nieciągłym obszarze pamięci danych mikrokontrolera o adresach 128- 240 (80H-0F0H). Obszar rejestrów SFR mikrokontrolera '51 jest wykorzystywany dwojako - z jednej strony umieszczone są w nim wszystkie (za wyjątkiem licznika rozkazów i czterech banków rejestrów R0-R7) rejestry sterujące pracą mikrokontrolera lub wykorzystywane bezpośrednio przy wykonywaniu programu; z drugiej zaś strony rejestry SFR stanowią rodzaj interfejsu pomiędzy mikroprocesorem a układami peryferyjnymi umieszczonymi wewnątrz mikrokontrolera. Wszystkie operacje sterowania wewnętrznymi układami peryferyjnymi oraz przesyłania danych między nimi a CPU, odbywają się właśnie za pośrednictwem rejestrów SFR. Dostęp do każdego z tych rejestrów możliwy jest wyłącznie w trybie adresowania bezpośredniego.

Ważniejsze rejestry specjalne

ACC – akumulator, jeden z najczęściej wykorzystywanych rejestrów, gdyż obsługuje większość operacji arytmetycznych, logicznych, skoków warunkowych i wiele innych

B – dodatkowy rejestr, wykorzystywany w trakcie operacji mnożenia (MUL) i dzielenia (DIV)

PSW – rejestr stanu programu (Program Status Word), jest to zbiór różnych flag (wskaźników):

Porty P0-P3 – wykorzystywane są do komunikacji ze światem zewnętrznym (wszelkimi urządzeniami peryferyjnymi), niektóre mają jeszcze dodatkowe funkcje,

RD – odczyt pamięci danych,

WR – zapis pamięci danych,

T0,T1 – wejścia timerów zewnętrznych (zliczanie impulsów trybie pracy timerów jako liczniki),

INT0,INT1 – wejścia zewnętrznych przerwań,

TxD, RxD – wysyłanie (Transmit) i odbieranie (Receive) danych (Data) przy transmisji szeregowej,

Sterowanie przerwaniami,

EA – ogólne zezwolenie dla przerwań,

ES – zezwolenie dla przerwań od transmisji szeregowej,

ET0, ET1 – zezwolenie dla przerwań od timerów,

EX0, EX1 – zezwolenie dla przerwań zewnętrznych,

PS – priorytet dla przerwań od transmisji szeregowej,

PT0, PT1 – priorytet dla przerwań od timerów,

PX0, PX1 – priorytet dla przerwań zewnętrznych,

IE0, IE1 – flagi przerwań zewnętrznych (zgłoszenie zewnętrznego przerwania),

IT0, IT1 – sposób zewnętrznego przerwania (0 – poziom niski, 1 – opadające zbocze),

DPTR – 16-bitowy wskaźnik adresu danych,

SP – wskaźnik stosu (Stack Pointer),

Pamięć zewnętrzna Oprócz pamięci wewnętrznej danych możliwe jest dołączenie do mikrokontrolera zewnętrznej pamięci danych o pojemności do 64kB. Ponieważ mikrokontroler nie posiada osobnych rozkazów do dostępu do urządzeń wejścia-wyjścia, to w obszarze adresowym 64kB zewnętrznej pamięci danych mogą być również umieszczane rejestry dołączanych do systemu urządzeń we /wy. Ponadto adresy wewnętrznej pamięci RAM pokrywają się z adresami zewnętrznej pamięci RAM i pamięci programu, zatem aby rozróżnić typ adresowanej pamięci stosuje się odpowiednie rozkazy:

* MOV dla adresowania wewnętrznej pamięci RAM

* MOVX dla adresowania zewnętrznej pamięci RAM

* MOVC dla adresowania wewnętrznej i zewnętrznej pamięci programu (rozróżniane stanem wyprowadzenia EA oraz zakresem adresów)

Mikrooperacje:

Mikrooperacja - elementarna czynność układu sekwencyjnego, którą układ może zrealizować bez potrzeby rozkładania na czynności prostsze.

Mikrooperacje transferu – zapis i odczyt w poszczególnych rejestrach -> rozkazy MOV, MOVC;

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

Mikrooperacje na bitach: ustawienie, zerowanie bitu, negowanie, suma logiczna na bitach, iloczyn logiczny na bitach – rozkazy SETB, CLR, CPL, ORL, ANL Mikrooperacje przesunięć – przesunięcie logiczne (przesuwanie całego rejestru, wypełnianie zerami), przesunięcie arytmetyczne( przesuwanie całego rejestru z wyłączeniem bitu znaku, wypełnienie zależne od stosowanego kodu), cyrkulacja( przesuwanie całego rejestru z wpisywaniem najstarszego bitu na najmłodszy i odwrotnie). Rozkazy RR, RL, RLC, RRC.

Podaj sposób realizacji mikrooperacji inkrementacji i dekrementacji

Inkrementacja A+1

Dekrementacja A-1

Realizacja sprzętowa ALU

- Typowy symbol jednostki arytmetyczno-logicznej ALU A,B – operandy, R – wynik operacji, F- sygnał sterujący, D – status wyjścia

Za pomocą ALU można wykonywać operacje logiczne, operacje arytmetyczne, operacje jednoargumentowe. ALU często posiada zaimplementowany układ do mnożenia, odejmowania, dodawania z przeniesieniem, inkrementacji/dekrementacji, dzielenia.

Jeżeli chodzi o realizację sprzętową, to zapamięta, że posiadamy specjalne układy zbudowane na bramkach logicznych, traktowane jako czarne skrzynki, z dwoma argumentami wejściowymi, wyjściem oraz sygnałami sterującymi.

Transmisja szeregowa

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, I2C, SPI i inne.

W przypadku RS232: Prędkość od 300 do 115200 bitów na sekundę. Strony ustalają wspólną prędkość przed podjęciem transmisji. Ramka składa się z 5-9 bitów danych i 2-4 bitów kontrolnych. Transmisja ramki może rozpocząć się w dowolnym momencie (transmisja asynchroniczna). Czas transmisji pojedynczej ramki jest ściśle ustalony. Symetryczny poziom napięć - odporność na zakłócenia. Symetria obu stron transmisji.

RS-232 – prosty, do wiekowy, standardowy interfejs szeregowy, służący do komunikacji pomiędzy urządzeniem nadrzędnym, a peryferyjnym.

I2C – interfejs będący poprzednikiem innych współczesnych interfejsów szeregowych w tym CAN. Pozwala na szybka komunikację (do 100kB/s).

SPI – interfejs o możliwościach i właściwościach podobnych do I2C, o większej szybkości transmisji danych sięgającej kilka MB/s. Stworzony przez Motorolę, obecnie jest dość często wykorzystywany przez innych producentów. Interfejs ten został standardowo wbudowany w wiele mikrokontrolerów.

D2BUS – Interfejs Digital Data Bus opracowany przez firmę Philips, stworzony z myślą o łączeniu niewielkiej liczby urządzeń na małym obszarze, umożliwiający transmisję danych z szybkością100kbit/s pomiędzy urządzeniami oddalonymi od siebie o 150m.Pozwala zaadresować 4096 jednostek. Jako medium transmisyjne najczęściej używa się pary skręconych przewodów, lub kabla koncentrycznego.

USB - zaawansowany interfejs szeregowy, opracowany głównie z myślą o wykorzystaniu w komputerach PC, realizujący koncepcję plug and play w odniesieniu do sieci urządzeń zewnętrznych. Może obsługiwać maksymalnie do 127 urządzeń peryferyjnych, stosując dużą szybkość transmisji danych - 1,5 Mbit/s w przypadku obniżonej prędkości i 12 Mbit/s przy prędkości pełnej.

Kontrola poprawności transmisji: Nadając 8 bitów danych, nadajemy dodatkowy, dziewiąty bit – bit parzystości, wystawiany w zależności od ilości jedynek w bajcie. Po odebraniu bajtu, parzystość jest zliczana ponownie i porównywana z wartością odebraną, co pozwala na wychwycenie błędu. Niestety, w przypadku wystąpienia błędu na dwóch bitach nie zostanie on wykryty.

I2C:

magistrala dwuprzewodowa

– serial data line (SDA)

– serial clockline (SCL)

• Poziomy napięć

– Wysoki (HIGH) 1

– Niski (LOW) 0

Urządzenie typu Master – Kontroluje linię SCL – Generuje bity startu i stopu – Kontroluje (generuje) adresy innych urządzeń

• Urządzenie typu Slave – Urządzenie adresowane (podległe) master

• Nadajnik/ Odbiornik (Transmitter/Receiver) – master lub slave – master-nadaje (wysyła) daną do slave-odbiornika – master-odbiera żądaną daną z urządzenia slave-nadajnika

• Do magistrali może być dołączonych wiele kontrolerów (urządzeń master)

• Kilka urządzeń masters może wystawić start swojej ramki

• synchronizacja poprzez SCL

• arbitraż poprzez SDA

• Połączenia typu wired-AND do linii SCL/SDA

USB:

• USB 1.1 - jego transfer wynosi, w zależności od typu urządzenia 1.5 lub 12 Mbit/s.

• USB 2.0 - osiąga transfer do 480 Mbit/s.

Magistrala USB tworzy strukturę warstwową, jednak zachowuje logiczną strukturę gwiazdy, a komunikacja przebiega tak, jakby urządzenia były podłączone bezpośrednio do hosta. Gdy hub jest odłączony, wszystkie urządzenia podłączone do huba zostają usunięte z logicznej topologii hosta.

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.

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ść 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ęć 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.

RISC a CISC – Podstawowe różnice:

CISC – Complete Instruction Set Computer RISC – Reduced Instruction Set Computer
  • Rozbudowane instrukcje

    • Operacje arytmetyczne bezpośrednio na lokalizacjach w pamięci

  • Możliwość zaawansowanego programowania w języku maszynowym

  • Różna długość instrukcji

    • Często występujące instrukcje 8-bitowe

    • Rzadsze rozbudowane instrukcje o większej długości

  • Znaczne różnice czasu wykonania poszczególnych instrukcji

  • Mikrooperacje realizowanie są synchronicznie razem z  sygnałem fazy

  • Znacznie ograniczony zestaw instrukcji

  • Operacje ALU tylko na rejestrach

  • Prosty tryb adresowania – uproszczone odwołania do pamięci

  • Wszystkie instrukcje identycznej długości (32b)

  • Znacznie prostsza konstrukcja procesora

  • Mikrooperacje realizowanie są synchronicznie razem z sygnałem zegarowym

Opisać pamięć x86 w trybie rzeczywistym i chronionym

Tryb chroniony umożliwia adresowanie pamięci przekraczającej wielkość 1 MB (tryb rzeczywisty), wprowadza wiele nowych udogodnień wspierających wielozadaniowość, takich jak: sprzętowa ochrona pamięci (układ MMU), wsparcie w przełączaniu kontekstu procesora i wiele innych.

Tryb rzeczywisty nie zapewnia ochrony pamięci przed użyciem przez inny proces oraz obsługi wielozadaniowości. W trybie rzeczywistym dostępna jest 1-megabajtowa przestrzeń adresowa. Adres logiczny (programowy) składa się z dwóch liczb 16-bitowych: segmentu (numeru segmentu) oraz przemieszczenia względem początku segmentu (ang. offset).

Opisać budowę i własności EEPROM Flash, podać sprzętowe mechanizmy wspomagające wyliczanie adresów przy zapisywaniu i kasowaniu

Komórka jest podobna do tranzystora polowego, ale z dwiema bramkami: bramką sterującą i bramką "pływającą". Jeśli komórkę wybrano do odczytu (bramka połączona jest z linią słowa pamięci), wtedy do bramki sterującej doprowadzone jest napięcie. Bramka "pływająca" nie jest bezpośrednio wyprowadzona, a jedynie ładunek tej bramki decyduje o przepływie prądu przez tranzystor. Ładunek bramki "pływającej" decyduje o napięciu progowym Ut, jeśli napięcie na bramce sterującej przekroczy Ut, wtedy tranzystor rozpoczyna przewodzenie.

VLIW (ang. VeryLongInstruction Word) – nazwa architektury mikroprocesorów z bardzo dużym słowem instrukcji.

- maksymalne uproszczenie jednostek sterujących (CU) w samym mikroprocesorze → 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 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.

-Obecnie procesory VLIW są oparte na architekturze RISC, zazwyczaj z czterema lub maksymalnie ośmioma jednostkami obliczeniowymi.

Architektura EPIC (Intel Itanium) ExplicitlyParallelInstruction Computing - przetwarzanie jawnie równoległe

- Grupowanie instrukcji i oznaczanie ich wzajemnych relacji już na etapie kompilacji programu.

- Instrukcje są zamknięte w tzw. paczkach (po trzy instrukcje), które są ładowane do procesora równocześnie.

-Każda paczka zawiera przedrostek - grupę bitów informujących procesor o tym, do których jednostek ma skierować poszczególne rozkazy.

-W przedrostku znajdują się też informacje o tzw. barierach wykona o służących do koordynacji wykonywania poszczególnych instrukcji.

-Jeśli pomiędzy dwoma ciągami rozkazów znajdują się bariery wykonania, to drugi ciąg zostanie wykonany dopiero wtedy gdy znane będą wyniki działania rozkazów z pierwszego ciągu.

-Skalowalność: Kod nie jest on dostosowany ściśle do budowy procesora (jak w układach VLIW) - zamiast równoległych instrukcji i od wołań zawiera tylko informacje, które instrukcje mogą się wykonać równolegle

Przetwarzanie potokowe

-sposób przetwarzania kodu rozkazu przez mikroprocesor

- wykonanie rozkazu jest realizowane w określonym porządku

Wyróżniamy: * etap pobrania * etap dekodowania * etap wykonania *etap zwrotu rezultatów

- za każdy krok odpowiada konkretna jednostka w strukturze procesora

Realizacja zadania (potoku)- pobieranie kolejnego rozkazu, kiedy kolejna instrukcja jest rozpoznawana i przetwarzana przez mikroprocesor → rozpoczęcie i wykonanie jednego rozkazu w jednym cyklu zegarowym.

- zastosowanie potoku nie redukuje czasu kompletnego wykonania

- potok może zawierać od kilku do kilkunastu poziomów

Opisać ścieżki danych i programu na podstawie VLIW i EPIC

VLIW Kompilator VLIW porządkuje kod na ścieżki, które wprost nie posiadają jakichkolwiek zależności. Następnie są one dzielone na cztery lub więcej części (jeden dla każdej jednostki obliczeniowej CPU) i pakowane razem w większe instrukcje z dodatkową informacją odnośnie do jednostki, na której ma być wykonywana. Rezultatem tego jest pojedynczy wielki opcode (stąd nazwa "Very Long").

EPIC Grupowanie instrukcji i oznaczaniu ich wzajemnych relacji już na etapie kompilacji programu. Instrukcje są zamknięte w tzw. paczkach (po trzy instrukcje), które są ładowane do procesora równocześnie. Każda paczka zawiera przedrostek - grupę bitów informujących procesor o tym, do których jednostek ma skierować poszczególne rozkazy. W przedrostku znajdują się też informacje o tzw. barierach wykonań służących do koordynacji wykonywania poszczególnych instrukcji. Jeśli pomiędzy dwoma ciągami rozkazów znajdują się bariery wykonania, to drugi ciąg zostanie wykonany dopiero wtedy gdy znane będą wyniki działania rozkazów z pierwszego ciągu.

ARM

Architektura ARM (Advanced RISC Machine, pierwotnie Acorn RISC Machine) – 32-bitowa oraz 64-bitowa (Apple A7, 2013 r.) architektura (model programowy) procesorów typu RISC. Opiera się również o architekturę Von Neumanna.

Zgodnie z założeniami architektury RISC, rozkazy procesorów ARM są tak skonstruowane, aby wykonywały jedną określoną operacje i były przetwarzane w jednym cyklu maszynowym.

Interesującą zmianą w stosunku do innych architektur jest użycie 4-bitowego kodu warunkowego na początku każdej instrukcji. Dzięki temu każda instrukcja może być wykonana warunkowo. Ogranicza to przestrzeń dostępną, na przykład, dla instrukcji przeniesień w pamięci, ale z drugiej strony nie ma potrzeby stosowania instrukcji rozgałęzień dla kodu zawierającego wiele prostych instrukcji warunkowych.

Inną unikatową cechą zestawu instrukcji procesora ARM jest łączenie operacji przesunięcia i obrotu bitów w rejestrze z instrukcjami arytmetycznymi, logicznymi, czy też przesłania danych z rejestru do rejestru. Dzięki temu wyrażenie języka C „a += (j << 2);” może zostać przetłumaczone przez kompilator w pojedynczą instrukcję asemblera.

Przedstawione cechy powodują, że typowy program zawiera mniej linii kodu niż w przypadku innych procesorów RISC. W rezultacie jest mniejsza liczba operacji pobrania/zapisania argumentów instrukcji, więc potokowość jest bardziej efektywna. Pomimo że procesory ARM są taktowane zegarem o stosunkowo niskiej częstotliwości są konkurencyjne w stosunku do znacznie bardziej złożonych procesorów.

Cała przestrzeń adresowa rdzenia generalizując podzielona jest na 3 przestrzenie :

1) pamięć kodu/danych,

2) przestrzeń nie wykorzystana ,

3) rejestry sterujące urządzeniami peryferyjnymi.

Kontroler przerwań: Przerwania są charakterystycznym elementem architektury mikroukładów. Model kontrolera przerwań omawianego układu można uprościć do dwu obwodów:

• Obwód żądania przerwania - odpowiada za to aby zgłosić zapotrzebowanie.

• Obwód obsługi przerwania – wystawia on odpowiedni adres obsługi procedury.

Start-Up początek pracy:

• oprogramowanie wektora resetu oraz wektorów przerwań – (dla nieużywanych przerwań umieszczenie pustych funkcji)

• oprogramowanie (konfiguracja) układów peryferyjnych procesora np. zegar, RST, watchdog itp.

• alokacja miejsca na stosy oraz inicjalizacja wskaźników stosów dla wszystkich trybów pracy procesora

• skok do dalszej częsci programu - dla C – skok do procedur inicjalizujacych biblioteki i zmienne globalne

Fazy wykonania rozkazu – praca potokowa

W procesorach ARM stosuje się mechanizm bankowania rejestrów, który polega na tym, że gdy procesor zmienia tryb ochrony zestaw niektórych rejestrów jest podmieniany na inny. W efekcie każdy tryb ochrony posiada własny rejestr, który jest widoczny tylko w tym trybie.

Potok trójpoziomowy (pobranie->dekodowanie->wykonanie)

Cechy ARM:

Rejestry:

7 trybów pracy:

DSP

Budowa blokowa jednostki DSP TMS320C50, porównać pracę w trybie mikrokomputera i mikroprocesora. Podstawowe bloki funkcjonalne i obsługa przerwań. Opisz PLU w tym procesorze

Podaj (wymień) rejestry używane w pętlach licznikowych

  1. Procesor – układ scalony DSP

    1. CPU – Central Processing Unit

    2. AAU – Auxiliary Arithmeric Unit

    3. SP – Serial Ports

    4. IM – Internal Memory

  2. Pamięć zewnętrzna (w architekturze harwardzkiej pamięć programu i pamięć danych

  3. Porty komunikacji

    1. Szeregowy (np. modem)

    2. Równoległy (np. drukarka)

Bloki funkcjonalne:

Układ scalony DSP, pamięć zewnętrzna, A/C, C/A, Porty

Przerwania:

Zawartość licznika rozkazów zostaje zapamiętana (na 8-poziomowym stosie sprzętowym razem z adresami procedur – uwaga przy ich wywoływaniu z procedury przerwania)

Zapamiętanie kontekstu: zawartość rejestrów rdzenia zostaje zapamiętana (na stosie 1-poziomowym -> ‘C50 nie obsługuje przerwań zanurzonych)

Licznik rozkazów zostaje załadowany adresem procedury obsługi przerwania (ISR)

Procesor wykonuje program procedury przerwania aż do napotkania instrukcji RETE lub RETI

Zapamiętany na stosie kontekst przerwania: PC, ACC, ACCB, PREG, ST0-1, PMST, TREG0-2, INDX, ARCR.

Urządzenia funkcjonalne:

Układ scalony DSP, pamięć zewnętrzna, A/C, C/A, Porty

Licznik rozkazów zostaje załadowany adresem procedury obsługi przerwania (ISR)

Procesor wykonuje program procedury przerwania aż do napotkania instrukcji RETE lub RETI

Zapamiętany na stosie kontekst przerwania: PC, ACC, ACCB, PREG, ST0-1, PMST, TREG0-2, INDX, ARCR.

Procesor sygnałowy (DSP z ang. Digital Signal Processor, procesor DSP) – oznacza klasę specjalizowanych procesorów do cyfrowej obróbki sygnałów. Charakteryzują się rozdzielonymi pamięciami programu i danych (architektura harwardzka), możliwością równoczesnego odczytu instrukcji i danych, sprzętowym dostosowaniem do wykonywania operacji najczęściej występujących przy przetwarzaniu sygnałów i potokowym przetwarzaniem instrukcji. Opiera się także o architekturę RISC.

Typowy system cyfrowego przetwarzania sygnału:

CPU - central processing unit (procesor, jednostka centralna)

AAU - auxiliary arithmetic unit (pomocnicza jednostka arytmetyczna)

SP - serial ports (porty szeregowe)

IM - internal memory (pamięć wewnętrzna)

W temacie DSP na wykładzie omawialiśmy głównie procesor TMS320C50 firmy Texas Instruments, jego główne parametry:

-Wydajność 40 MIPS (Milion Instrukcji na Sekundę

- określa liczbę milionów operacji stałoprzecinkowych wykonywanych w ciągu sekundy)

- Poszerzony zestaw instrukcji

- 1-9 K słów pamięci RAM (on-chip)

- 224 K słów adresowalnej pamięci zewnętrznej (64 K - program, 64 K - dane, 64 K - I/O, 32 K - pamięć globalna)

- 32 b jednostka arytmetyczno-logiczna (ALU), akumulator i bufor akumulatora

- 16 b równoległa jednostka logiczna (PLU)

- instrukcje mnożenia i dodawania w jednym cyklu rozkazowym

- osiem rejestrów pomocniczych (AR0-AR7) z dedykowaną jednostką arytmetyczną (ARAU) do adresowania pośredniego.

Pamięć RAM:

Pamięć ROM:

Przerwania:

i486

Budowa jednostki i486, na czym polega (opisać) adresowanie w trybie chronionym

Podział pamięci na segmenty oraz na strony, wbudowana pamięć podręczna, wbudowana jednostka operacji zmiennopozycyjnych, integracja bloków operacji stało oraz zmiennoprzecinkowych pamięcią podręczną, współpraca z zewnętrzną pamięcią

Tryb chroniony:

Rozszerzenie pamięci widocznej dla programu z maksymalnej pamięci fizycznej 4GB do pamięci wirtualnej 64TB, mechanizmy ochrony pamięci oraz dostępu do urządzeń we/wy, składowe adresu to 16-bitowy selektor oraz 32-bitowe przesunięcie

OGÓLNA CHARAKTERYSTYKA

ARCHITEKTURA

REJESTRY

ORGANIZACJA PAMIECI

ORGANIZACJA PAMIECI – TRYBY

Tryb rzeczywisty

Tryb chroniony

SEGMENTACJA

DESKRYPTORY

DESKRYPTORY SYSTEMOWE

INICJALIZACJA - PRZEJSCIE DO TRYBU CHRONIONEGO

STRONICOWANIE

STRONICOWANIE - POLA KATALOGU TABLIC I TABLICY STRON

Pola wpisu w katalogu tablic stron i tablicy stron:

Mechanizmy ochrony podczas stronicowania pracuje na 2 poziomach:

STRONICOWANIE - OPIS

Podział segmentów na strony pozwala na zapisanie segmentu niekoniecznie w postaci ciągłej. Poszczególne jego strony zapisywane są w nieobsadzone 4kB obszary pamięci dysponowanej.

Stronicowanie powoduje oczywiście wprowadzenie dodatkowego etapu przy adresacji. Mianowicie przeliczenie adresu logicznego na fizyczny. Proces przeliczania powoduje wydłużenie czasu realizacji dostępu, a także narzuca wymogi na posiadanie dodatkowego obszaru pamięci operacyjnej, gdzie znajduje się „przewodnik” po stronach. Są to tak zwane tablice translacji (struktura dwupoziomowa) umożliwiające przeliczenie adresu liniowego na fizyczny. Aby przeliczyć adres konieczne są kontakty z tzw. katalogiem tablic i indywidualną tablicą stron. Należy pamiętać, że każde zadanie może (nie musi) dysponować własnymi tablicami translacji. Adres bazowy tablicy wyższego rzędu (tzw. katalog tablic) zawarty jest w rejestrze CR3.

Inicjacja stronicowania to po prostu ustawienie bitu PG w rejestrze CR0 (rozkaz LMSW nie może być w tym przypadku użyty, ponieważ ma on dostęp tylko do młodszego słowa CR0, a bit PG znajduje się w starszym słowie). Oczywistym jest, że należy przynajmniej częściowo mieć przygotowaną tablicę translacji, zapisaną wartość w rej. CR3, a samo przełączenie nie może spowodować zmiany adresu, tzn. przeskoku µP w inne miejsce. Następujący po ustawieniu bitu PG proces translacji musi spowodować przejście z adresu (jest to od tego momentu adres liniowy) na ten sam adres fizyczny. Oznacza to, że przełączenia dokonujemy na tzw. stronie transparentnej.

Ustawienie bitu PG nie może nastąpić wcześniej niż przejście do trybu wirtualnego (możemy uczynić to równocześnie). Pierwszą instrukcją po ustawieniu PG musi być skok (najczęściej do następnej lokacji). Wycofanie się ze stronicowania to wyzerowanie bitu PG (tryb wirtualny dalej aktualny). Możliwe jest oczywiście równoczesne przejście w tryb rzeczywisty z wyłączeniem stronicowania. Operacja ta musi być zrealizowana także na stronie transparentnej.

Gdyby µP przy translacji każdego adresu (kodu, danych i stosu) sięgał dwukrotnie do tablic translacji, działanie takie nie miałoby sensu (kilkakrotne spowolnienie pracy µP). Dlatego też dysponuje on wewnętrzną, szybką pamięcią asocjacyjną, w której zapisuje opisy ostatnio używanych stron. Jeżeli przykładowo pamięć zawiera 128 pozycji, to można zapamiętać sposób translacji obszaru o rozmiarze 512kB. µP na początku translacji szuka oczywiście opisów stron w pamięci asocjacyjnej, a dopiero potem sięga do tablic zewnętrznych.

Oczywistym jest, że po takim kontakcie uzupełnia pamięć asocjacyjną ewentualnie usuwając z niej opisy stron najdawniej używanych (gdy pamięć jest „pełna”). W przypadku, gdy podczas wykonywania instrukcji µP stwierdzi równocześnie błąd związany z segmentacją i stronicowaniem, to pierwszy zgłaszany jest błąd segmentacji, a po jego obsłudze i ponowieniu wykonania instrukcji zgłaszany jest stan wyjątkowy błędu stronicowania. W tym przypadku rejestr CR2 podaje nam błędny adres liniowy, który spowodował ten wyjątek. Wyjątek stronicowania ma numer 14 i umieszcza na stosie dodatkowe informacje o szczegółowej przyczynie.

PAMIEC NOTATNIKOWA (CACHE)

Mechanizm segmentacji: tłumaczy adres wirtualny na liniowy

Mechanizm stronicowania: tłumaczy adres liniowy na fizyczny

Adresowanie wirtualne (translacja adresu logicznego na liniowy)

Segment jest wybierany za pomocą 16-bitowego selektora. Selektor wskazuje na deskryptor opisujący segment. Deskryptor jest umieszczony w tablicy deskryptorów. W deskryptorze jest zawarty adres początku segmentu.

W trybie chronionym rejestry segmentowe zawierają selektory, które wskazują na pole w tablicy deskryptorów. Ze wskazanego element tablicy deskryptorów procesor pobiera 32-bitowy adres bazowy, który sumowany jest z przesunięciem. Tak powstaje adres liniowy, który przywłączonym mechaniźmie stronicowania zostaje poddany transformacji na adres fizyczny.

W trybie rzeczywistym adres mają 20 bitów. Natomiast rjestry mają 10 bitów. Zatem by uzystać fizyczny adres komórki pamięci zawartość rejestru segmentowego mnoży się razy 16 i dodaje przesunięcie OFFSET. Adres fizyczny liczony jest z zawartości przesuniętego rejestru segmentowego oraz wartości przesunięcia (max 1MB pamięci fizycznej)

Potokowe – przewidywanie skoków – przetwarzanie potokowe zwiększa wydajność mikroprocesora ale problemem staje się z poleceniem przeniseienia sterowania zwłaszcza warunkowe. Polecenia te powodują zmianę sekwencyjnego wykonywania poleceń programu

Strategie przewidywania skoków:

Pamięć cache łącznie z wyspecjalizowaną jednotką CPU używa się do przewidywania adresów skoków.

Cache – pamięć podręczna to relatywnie mały obszar pamięci o krótkim czasie dostępu, w której przechowywana jest kopia danych bądź programu z pamięci głownej

Zawartość rejestrów ogólnego przeznaczenia zależna jets od aktulanie wykonywanego zadania. Rozkaz wykonują operacje 1, 8, 16, 32 oraz 64 bitowe oraz operacje na polach bitowych od 1 do 32b.


Wyszukiwarka

Podobne podstrony:
Opracowanie Zagadnień na egzamin Mikroprocki
Opracowanie Zagadnień na egzamin Mikroprocki ściąga
Opracowanie Zagadnień na egzamin Mikroprocki
Opracowanie zagadnień na egzamin z MO
Przemiany geopolityczne (opracowane zagadnienia na egzamin)
Opracowane zagadnienia na egzamin
Andragogika opracowane zagadnienia na egzamin
opracowane zagadnienia na egzamin, ►► UMK TORUŃ - wydziały w Toruniu, ►► Socjologia, Praca socjalna,
Dydaktyka [opracowane zagadnienia na egzamin], Metodyka nauczania, język polski, teksty i notatki, e
Opracowanie zagadnień na egzamin z judaizmu, 2. GENEZA JUDAIZMU, Religia patriarchów
Konflikty opracowanie zagadnien na egzamin 2
opracowane zagadnienia na egzamin piachy
Nauka?ministracji Opracowanie zagadnień na egzamin z NA
Zestaw 1, Opracowane zagadnienia na egzamin
Zestaw 15, Opracowane zagadnienia na egzamin
ściąga opracowane zagadnienia na egzamin piachy
Zestaw 22, Opracowane zagadnienia na egzamin
Zestaw 11, Opracowane zagadnienia na egzamin

więcej podobnych podstron