background image

 

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 pobrania rozkazu, 
•  dekodowanie rozkazu, 
•  wykonanie rozkazu, 
•  zwiększenie licznika rozkazów. 

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

•  FETCH - pobranie instrukcji  
•  DECODE - dekodowanie obrazu binarnego instrukcji  
•  READ - odczyt argumentów instrukcji z rejestrów procesora lub z pamięci  
•  EXECUTE - wykonanie operacji arytmetycznej lub logicznej  
•  WRITE - zapis wyniku do rejestru lub pamięci  

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:  

•  Oczekiwanie na wyniki 

o

  synchronizacja potoku  - "odczyt po zapisie„  (RAW - Read After Write

o

  SCOREBOARDING - flagi wskazujące na ważność zawartości  rejestrów procesora 

o

  BYPASSES (obejścia) - dodatkowe szyny wewnątrz procesora 

•  Rozgałęzienia programu 

Sposoby minimalizacji wad: 

•  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. 

background image

 

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: 

• 

Znana jest funkcja i należy dokonać wyboru jej argumentów 

• 

Znane są argumenty i należy wskazać właściwą funkcję. 

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. 

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) 

RAM

PROGRAMU

CPU

ADRES

DANE

RAM

DANYCH

ADRES 2

DANE 2

background image

 

•  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 

 
 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. 

RAM

(PROGRAMU

I DANYCH)

CPU

ADRES

DANE

background image

 

 
 
 
 
 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  

background image

 

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):  

o

  PSW.0=P – parzystość, flaga jest ustawiana gdy wynikiem operacji jest liczba parzysta,  

o

  PSW.1=F1 – począwszy od 8052, flaga którą może zdefiniować użytkownik,  

o

  PSW.2=OV (Overflow) – przepełnienie, przekroczenie zakresu liczb w kodzie uzupełnienia do 2 (U2),  

o

  PSW.3=RS0 (Register Bank Switch) młodszy bit numeru banku,  

o

  PSW.4=RS1 (Register Bank Switch) starszy bit numeru banku,  

o

  PSW.5=F0 – flaga ogólnego zastosowania,  

o

  PSW.6=AC (Auxiliary Carry) – przeniesienie z młodszej do starszej tetrady (istotne w rozkazach 

arytmetycznych BCD),  

o

  PSW.7=CY (Carry) – przeniesienie z najstarszego bitu (oznacza np. przekroczenie zakresu przy sumowaniu 

NKB),  

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

o

  P0 i P2 – mogą zostać wykorzystanie jako wyprowadzenia szyny systemowej mikrokontrolera  

o

  P1 – port ogólnego zastosowania,  

o

  P3 – port posiada wyspecjalizowane linie (w SFR przedstawiane jako bity),  

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,  

o

  IE – zezwolenia dla przerwań (Interrupt Enable),  

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,  

o

  IP – priorytety przerwań (Interrupt Priority),  

PS – priorytet dla przerwań od transmisji szeregowej,  
PT0, PT1 – priorytet dla przerwań od timerów,  
PX0, PX1 – priorytet dla przerwań zewnętrznych,  

o

  TCON – tylko młodsze 4 bity,  

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,  

o

  DPH – starszy bajt wskaźnika,  

o

  DPL – młodszy bajt wskaźnika,  

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. 

background image

 

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.  
 

background image

 

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  

background image

 

- 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 

background image

 

•  Rozbudowane instrukcje 

o

  Operacje arytmetyczne bezpośrednio na 

lokalizacjach w pamięci 

•  Możliwość zaawansowanego programowania w 

języku maszynowym 

•  Różna długość instrukcji 

o

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

o

  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.  

background image

10 

 

-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. 
 

background image

11 

 

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  

• 

Każdy rozkaz wykonywany jest w trzech cyklach  

o

  Pobranie,  

o

  Dekodowanie,  

o

  Wykonanie,  

• 

Przetwarzanie odbywa się z zastosowaniem potoku trójpoziomowego,  

• 

Efektywny czas wykonania rozkazu to jeden cykl.  

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: 

• 

32-bitowy procesor zgodny z RISC 

• 

Procesor zoptymalizowany pod względem poboru mocy 

• 

Różne tryby pracy 

o

  32-bitowe instrukcje ARM 

o

  16-bitowe instrukcje Thumb 

• 

Praca w trybie Big lub Little Endian 

• 

Szybka obsługa przerwań, aplikacje czasu rzeczywistego 

• 

Pamięć wirtualna 

• 

Lista wydajnych instrukcji (optymalizacja na podstawie RISC i CISC) 

• 

Sprzętowe wsparcie dla języków wyższego poziomu 

Rejestry: 

• 

PC – licznik programu 

• 

CPSR – licznik statusowy, obecny status 

• 

SPSR – licznik statusowy, dostępny w różnych trybach uprzywilejowania 

• 

LP – licznik powrotu, wykorzystywany podczas wywołania funkcji 

• 

SP – wskaźnik stosu 

• 

R0-R12 – rejestry ogólnego przeznaczenia 

7 trybów pracy: 

background image

12 

 

• 

User 

• 

System 

• 

Supevisor 

• 

Abort 

• 

Undef 

• 

IRQ 

• 

FIQ 

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  

a.  CPU – Central Processing Unit  
b.  AAU – Auxiliary Arithmeric Unit  
c.  SP – Serial Ports  
d.  IM – Internal Memory  

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

a.  Szeregowy (np. modem)  
b.  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) 

background image

13 

 

 - 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:  

•  Krótki czas dostępu (on chip RAM)  

•  Część pamięci może być skonfigurowana, jako pamięć programu lub pamięć danych  

•  1056 słów pamięci RAM można zapisywać i odczytywać w pojedynczym cyklu ("Dual Access RAM")  

•  Zwykle po uruchomieniu procesora program, dane oraz informacje o konfiguracji są ładowane do pamięci RAM, 

skąd program jest uruchamiany  

 
Pamięć ROM:  

•  Wewnętrzna pamięć programu (inicjalizacja i test) od 2 do 16 K słów 16 b  

•  Programowanie możliwe tylko podczas produkcji (można zamawiać w TI)  
•  Możliwość dołączenia zewnętrznej pamięci ROM  

 
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 

I

486 

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 

•  Konstrukcja z roku 1989 

•  Mikroprocesor zawierający mechanizmy wspomagające prace wielozadaniowa 

•  Mikroprocesor 32-bitowy 

•  Praca w trybach: 

• 

Rzeczywistym (ang. real) 

• 

Chronionym (wirtualnym) (ang. protected / virtual) z możliwością pracy w wirtualnym trybie 8086 

•  Możliwość zaadresowania do 4GB pamięci fizycznej 

•  Podział pamięci na segmenty oraz na strony 

•  Wbudowana pamięć podręczna (ang. cache) 

•  Wbudowana jednostka operacji zmiennopozycyjnych 

background image

14 

 

ARCHITEKTURA 

•  Integracja bloków operacji stało oraz zmiennoprzecinkowych pamięcią podręczną 

•  Szerokie magistrale wewnętrzne, przetwarzanie potokowe 

•  Współpraca z zewnętrzną pamięcią w obu kierunkach przez bufory – jądro procesora i pamięć pracują 

asynchronicznie 

•  Seryjne przesłania po szynie do/z pamięci (ang.burst) 

REJESTRY 

•  Zawartość rejestrów ogólnego przeznaczania zależna od aktualnie wykonywanego zadania – ich zawartość 

automatycznie przeładowywana w trakcie zmiany aktualnie wykonywanego zadania (zmiana kontekstu) 

•  Rozkazy wykonują operacje 1, 8, 16, 32 oraz 64 bitowe oraz operacje na polach bitowych od 1 do 32 bitów w 

obrębie rejestrów ogólnego przeznaczenia 

•  Rejestry segmentowe umożliwiają jednoczesny dostęp do 6 segmentów pamięci (każdy do 4GB); dwa z nich 

umożliwiają dostęp do kodu programu i stosu; rejestry deskryptorów nie są dostępne programowo i są 

automatycznie ładowane podczas przeładowania selektora 

•  Zależnie od trybu pracy zawartość rejestrów segmentowych jest różnie interpretowana; w trybie rzeczywistym 

segmenty maja długość 64KB; w trybie chronionym dowolna d4ugość a* do rozmiaru ca4ej pamięci 

•  Wskaźnik rozkazów zawiera przesuniecie (ang. offset) nast2pnej do wykonania instrukcji. Przesuniecie jest 

liczone wzgl2dem segmentu CS 

 
ORGANIZACJA PAMIECI
 

•  Pamięć podzielona jest na bajty, słowa (dwa bajty w kolejnych komórkach) oraz podwójne słowa (cztery bajty o 

kolejnych adresach) 

o

  Dodatkowo pamięć może by. podzielona na zmiennej ale określonej długości segmenty, które mogą być 

„wymiatane” na dysk i współdzielone miedzy zadaniami 

o

  Dodatkowo pamięć jest dzielona na 4kB strony 

•  Segmentacja jest użyteczna dla programistów użytkowych (logiczny podział na moduły), stronicowanie dla 

programistów systemowych (optymalizacja wykorzystania fizycznej pamięci operacyjnej) 

o

  W trybie rzeczywistym adres fizyczny liczony jest z zawartości przesuniętego rejestru segmentowego oraz 

wartości przesunięcia (maksymalnie 1MB pamięci fizycznej); jest to tryb procesora po włączeniu zasilania 

(niemal identyczny z praca procesora 8086) 

o

  W trybie chronionym wyróżnia się przestrzenie adresowe: 

  Logiczna (wirtualna),  
  Liniowa 
  Fizyczna (maksymalnie 4GB pamięci fizycznej i 64TB pamięci wirtualnej!) 

ORGANIZACJA PAMIECI – TRYBY 
Tryb rzeczywisty 

•  Pamięć podzielona jest na stałej długości segmenty po 64kB 

•  Na zawartości segmentów można dowolnie wykonywać operacje odczytu, zapisu lub wykonania kodu 

•  Segmenty mogą na siebie zachodzić; fizyczna komórka pamięci może posiadać 2 różne adresy logiczne 

•  Adresy od 00000H do 003FFH są zarezerwowane na tablice wektorów przerwań 

•  Adresy FFFFFFF0F do FFFFFFFFH zarezerwowane są dla inicjacji systemu 

•  Stronicowanie nie jest dozwolone w trybie rzeczywistym 

Tryb chroniony 

•  Rozszerzenie pamięci widocznej dla programu z maksymalnej pamięci fizycznej 4GB do pamięci wirtualnej 64TB 

(2^46) 

background image

15 

 

•  Mechanizmy ochrony pamięci oraz dostępu do urządzeń we/wy 

•  Praca w trybie wirtualnym 8086 umożliwiająca wielozadaniowe uruchamianie programów utworzonych dla 

procesora 8086 

•  Składowe adresu to 16-bitowy selektor oraz 32-bitowe przesunięcie 

•  Stronicowanie pracuje na adresie liniowym powstałym na skutek segmentacji 

SEGMENTACJA 

•  Segmentacja służy do enkapsulacji regionów pamięci np. kod wykonywalny programu powinien być zawarty w 

jednym segmencie 

•  Informacja o segmencie zawarta jest w 8-bajtowej strukturze danych zwanych deskryptorem 

•  Wszystkie deskryptory przechowywane są w tablicach obsługiwanych bezpośrednio przez mikroprocesor 

•  Tablice Global Descriptor Table, Local Descriptor Table i Interrupt Descriptor Table; każda zawiera od 1 do 

8192 8-bajtowe descryptory; najstarszych 13 bitów selektora stanowi indeks w odpowiedniej tablicy 

deskryptorów 

•  Każda tablica ma z sobą związany rejestr (GDTR, LDTR i IDTR) zawierający informacje o fizycznym adresie 

bazowym i rozmiarze odpowiedniej tablicy; wyjątkiem LDTR będący selektorem do GDT z informacja o 

położeniu LDT 

•  Rozmiar pamięci wirtualnej: 2*(2^13)*(2^32) = 2^46 (lokalna/globalna pamięć * liczba segmentów * mak. 

Rozmiar segmentu)  

•  GDT zawiera informacje dostępne dla wszystkich zadań w systemie (zadanie – program wykonywany 

niezależnie od innych (lub o ściśle zdefiniowanych powiązaniach) 

•  LDT zawiera informacje widoczne wyłącznie dla aktualnie wykonywanego zadania – segment pamięci może 

być dostępny wyłącznie, gdy jego deskryptor znajduje się w GDT lub LDT 

•  IDT zawiera deskryptory wskazujące na miejsca w pamięci zawierające procedury obsługi 256 przerwań 

•  Rejestry segmentowe zawierające selektory posiadają pamięć umożliwiającą zapamiętanie wszystkich 8 

bajtów odpowiedniego deskryptora 

DESKRYPTORY 

•  Deskryptor zawiera atrybuty wskazywanego obszaru pamięci liniowej 
•  Deskryptory niesystemowe zawierają kod programu lub dane; zawierają informacje czy segmenty danych można 

zapisywać, czy segmenty kodu można odczytywać i czy segment danych znajduje się poniżej czy powyżej adresu 

bazowego 

DESKRYPTORY SYSTEMOWE 

•  Deskryptor LDT– wskazuje na segmenty w pamięci zawierajce tablice LDT  
•  Deskryptor TSS (Task State Segment) – TSS zawiera kontekst zadania (wszystkie rejestry) oraz pola łączące 

umożliwiające zagnieżdżanie zadań; rejestr TR zawiera selektor wskazujący na TSS aktualnego zadania 

•  Deskryptory bram (gate) – używane w celu kontroli dostępu do punktów wejścia do segmentów kodu; kontrola 

dostępu umożliwia sprawdzenie uprawnień do wykonania kodu w segmentach użytkowników i systemu 

operacyjnego; różne typy deskryptorów bram:  

o

  call (używane do zmiany poziomu dostępu),  

o

  task (używane do przełączania zadań),  

o

  interrupt (obsługa przerwań + blokada przerwań) 

o

  trap (obsługa przerwań, ale bez blokady przerwań) 

INICJALIZACJA - PRZEJSCIE DO TRYBU CHRONIONEGO 

•  Procesor po sygnale RESET znajduje się w trybie rzeczywistym 
•  Inicjalizacja wymaga, aby GDTR oraz IDTR pokazywały na poprawne GDT i IDT; IDT musi zawierać co najmniej 32 

deskryptory (256 bajtów); GDT musi zawierać deskryptory dla inicjującego segmentu danych oraz kodu 

background image

16 

 

•  GDT zawiera deskryptor segmentu kodu i danych/stosu każdy o długości 4GB na poziomie ochrony 0 
•  Przełączanie trybów następuje poprzez ustawienie bitu PE w CR0 instrukcja MOV CR0, R/M; następnie wykonuje 

się między segmentowy skok JMP w celu załadowania CS oraz finalnie ładuje wartości selektorów do rejestrów 

segmentowych 

STRONICOWANIE 

•  Podział na strony nie ma odniesienia do podziału programu na moduły – stałej długości strona to tylko fragment 

modułu kodu lub danych 

•  Tylko niewielka liczba stron programu musi jednocześnie przebywać w pamięci – nie musi to być cały segment 
•  Stronicowanie przekształca adres liniowy na adres fizyczny i jest dwupoziomowe: katalog tablic stron i tablice 

stron; każda z tych struktur zajmuje jedna 4kB stron2 

•  Rejestr CR3 zawiera 20 starszych bitów rejestru bazowego katalogu tablic stron 
•  Rejestr CR2 zawiera 32-bitowy adres liniowy, który spowodował niepowodzenie dostępu do strony 
•  Tablice stron same są stronami i mogą być wymiatane na dysk 

STRONICOWANIE - POLA KATALOGU TABLIC I TABLICY STRON 
Pola wpisu w katalogu tablic stron i tablicy stron: 

•  20 starszych bitów to adres bazowy tablicy stron lub strony 

•  OS RESERVED – do swobodnego wykorzystania przez system operacyjny np. do wyznaczania strony najdawniej 

używanej 

•  P (Present) – czy pole tablicy wskazuje na stronę; jeżeli nie pole może być swobodnie wykorzystane przez OS 

•  A (Access ) – ustawiany automatycznie przez procesor podczas dostępu (odczyt lub zapis) do wskazywanej 

strony 

•  D (Dirty) – ustawiany automatycznie przed zapisem do wskazywanej strony; niezdefiniowane zachowanie dla 

katalogu tablic stron 

•  PWT – nadzoruje strategie współpracy z pamięcią podręczną drugiego poziomu 

•  PCD – nadzoruje współpracę z pamięcią notatnikowa na poziomie strony  

Mechanizmy ochrony podczas stronicowania pracuje na 2 poziomach: 

•  Użytkownika dla segmentów o poziomie ochrony 3 

•  Administratora dla segmentów na poziomie 0, 1 i 2; w ustalaniu zasad ochrony współdziała również bit WP z 

rejestru flagowego 

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 

background image

17 

 

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) 

•  Cztery bloki pamięci po 2kB każdy; każdy blok podzielony na 128 16- bajtowych zestawów 
•  Z każdym blokiem pamięci związany blok katalogu – tu przechowywane 21- bitowe adresy pamięci fizycznej, 

której „lustrem” jest zestaw oraz bit znacznika i 3 bity LRU 

•  Wszystkie dane różniące się na 21 bardziej znaczących bitach 
•  Odwzorowywane na 4 zestawy; bity LRU modyfikowane są podczas operacji dostępu do pamięci tak, aby 

wskazywały na najdawniej używany zestaw; w przypadku chybienia dane zapisywane są do zestawu najdawniej 

używanego 

•  Włączenie mechanizmu pamięci notatnikowej oznacza, ze procesor zawsze odczytuje dane z pamięci w porcjach 

po 16 bajtów w szybkich operacjach transferów blokowych 

•  W przypadku zmiany danej znajdującej się w pamięci notatnikowej zmieniana jest jednocześnie pamięć 

notatnikowa jak i pamięć główna 

•  Wbudowane mechanizmy śledzenia zmian pamięci w przypadku dostępu do niej urządzeń innych niż procesor 
•  Wbudowane mechanizmy współpracy z zewnętrzną pamięcią drugiego poziomu 

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: 

• 

Trywialna – skok nie będzie wykonay 

• 

Statyczna – skok wstecz będzie wykonany, w przód nie 

• 

Przewidywanie oparte na statystycznej analizie wykonania skoków 

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

background image

18 

 

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.