Opracowanie Zagadnień na egzamin Mikroprocki

background image

1

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

2

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.

W

tym przypadku stosuje się inne rozkazy dla pamięci programu i inne dla
pamięci danych. Ponadto magistrala danych i rozkazów mają różną
szerokość (długość
słowa).

Separacja pamięci danych od pamięci rozkazów sprawia, że

architektura harwardzka jest obecnie powszechnie stosowana w
mikrokomputerach jednoukładowych, w których dane programu są
najczęściej zapisane w nieulotnej pamięci ROM (EPROM/EEPROM),

natomiast dla danych tymczasowych wykorzystana jest pamięć RAM (wewnętrzna lub zewnętrzna).


W architekturze typu Harvard komputer ma możliwość jednoczesnego dostępu do danych oraz do rozkazów

programu co zwiększa jego efektywność. Procesory o takiej strukturze stosowane są przede wszystkim w
obróbce sygnałów, w tak zwanych procesorach DSP.


Architektura harwardzka jest także stosowana przy dostępie procesora do pamięci cache.

Przykłady mikroprocesorów:

• AVR
• DSP



Architektura von Neumanna –

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

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

• procesor (w ramach którego wydzielona bywa część sterująca oraz część arytmetyczno-logiczna)
• pamięć komputera (zawierająca dane i sam program)

RAM

PROGRAMU

CPU

ADRES

DANE

RAM

DANYCH

ADRES 2

DANE 2

background image

3

• 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

4





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

5

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

6

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

7

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

8

- 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

9

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


Wyszukiwarka

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