background image

A

RCHITEKTURA 

V

ON 

N

EUMANNA

,

 

H

ARWARDZKA I POŁĄCZONA

 

 

Powyższy podział jest podziałem ze względu na typ mapy pamięci. Mapa pamięci (memory map) w sposób graficzny 
przedstawia rozmieszczenie poszczególnych pamięci w przestrzeni adresowej jednostki centralnej. Oprócz adresów 
obszarów RAM, ROM i innych rodzajów pamięci, mapa ta podaje usytuowanie rejestrów uniwersalnych, adresów procedur 
obsługi przerwań, rejestrów układów we/wy (dostępne przez adresowanie pamięci RAM). 

A

RCHITEKTURA VON 

N

EUMANNA

 

rodzaj architektury komputera, przedstawionej po raz pierwszy w 1945 roku przez Johna von 
Neumanna stworzonej wspólnie z Johnem W. Mauchly'ym i Johnem Presper Eckertem. 

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

 

procesor (w ramach którego wydzielona bywa część sterująca oraz część 
arytmetyczno-logiczna) 

 

Pamięć komputera (zawierająca dane i sam program) 

 

Urządzenia wejścia/wyjścia 

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

 

Mieć skończoną i funkcjonalnie pełną listę rozkazów 

 

Mieć możliwość wprowadzenia programu do systemu komputerowego poprzez urządzenia zewnętrzne i jego 
przechowywanie w pamięci w sposób identyczny jak danych 

 

Dane i instrukcje w takim systemie powinny być jednakowo dostępne dla procesora 

Informacja jest tam przetwarzana dzięki sekwencyjnemu odczytywaniu instrukcji z pamięci komputera i wykonywaniu tych 
instrukcji w procesorze. 

Architektura Von-Neumanna cechuje się jednolitą przestrzenią adresową, w której wszystkie pamięci, rejestry i układy we/wy 
są umieszczone w jednej, wspólnej przestrzeni adresowej. W architekturze tej zakłada się, że podział przestrzeni adresowej na 
pamięć programu, pamięć danych oraz obszar we/wy jest czysto umowny i zależy wyłącznie od rozmieszczenia tych 
elementów w obszarze adresowym podczas projektowania systemu. Mk ma jedną szynę danych wspólną dla danych i 
programu 

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. Rozważmy (często 
spotykaną) instrukcję procesora, która pobiera jedno słowo danych z pamięci. Taka instrukcja wymaga: 

 

Podania pamięci adresu tej instrukcji,  

 

Pobrania kodu operacji z pamięci,  

 

Podania pamięci adresu danej,  

 

Pobrania danej z pamięci,  

 

Podania pamięci adresu następnej instrukcji itd.  

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.  

RAM

(PROGRAMU

I DANYCH)

CPU

ADRES

DANE

background image

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. 

Cechy architektury von Neumana  

•  Brak podziału pamięci na pamięć danych i programu,  
•  Możliwość wykonywania kodu programu zarówno z pamięci Flash jak i RAM (możliwość modyfikacji kodu w trakcie 

wykonywania programu). 

Przykłady mikroprocesorów:   ARM 

A

RCHITEKTURA 

H

ARVARDZKA 

 

Opiera się na użyciu dwóch oddzielne 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 (pre-
fetch
). Skraca to cykl rozkazowy i zwiększa szybkość pracy. Obszary adresowe pamięci 
danych i programu (wewnętrznych i czasami zewnętrznych) 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 
bardzo zwiększa jego efektywność. Procesory o takiej strukturze stosowane są przede wszystkim w obróbce sygnałów, w tak 
zwanych procesorach DSP (Digital Signal Processing ). 

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

Przykłady mikroprocesorów:   AVR, DSP

 

 

Z

MODYFIKOWANA 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 

 

 

RAM

PROGRAMU

CPU

ADRES

DANE

RAM

DANYCH

ADRES 2

DANE 2

background image

A

RCHITEKTURA 

RISC

 

(

I PORÓWNANIE Z 

CISC) 

czyli o zredukowanej liście instrukcji. 

Cechy RISC: 

•  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). 
•  Procesor tego typu zamiast prostego rejestru instrukcji stosuje się pamięć FIFO (first-in first-out), która gromadzi 

kolejkę instrukcji. 

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. 

RISC a CISC – Podstawowe różnice: 

CISC – Complete Instruction Set Computer 

RISC – Reduced Instruction Set Computer 

•  Rozbudowane instrukcje 

Operacje arytmetyczne bezpośrednio na 

lokalizacjach w pamięci 

•  Możliwość zaawansowanego programowania w 

języku maszynowym 

•  Różna długość instrukcji 

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

Rzadsze rozbudowane instrukcje o większej 

długości 

•  Znaczne różnice czasu wykonania poszczególnych 

instrukcji 

•  Mikrooperacje realizowanie są synchronicznie 

razem z  sygnałem fazy 

•  Znacznie ograniczony zestaw instrukcji 

•  Operacje ALU tylko na rejestrach 

•  Prosty tryb adresowania – uproszczone odwołania 

do pamięci 

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

•  Znacznie prostsza konstrukcja procesora 

•  Mikrooperacje realizowanie są synchronicznie 

razem z sygnałem zegarowym 

 

 

 

background image

CISC 

•  Podejście stosowane w latach 60tych i 70tych XX wieku. 
•  Zakłada odpowiedniość między instrukcjami procesora i instrukcjami języka wysokiego poziomu 

(instrukcja wysokiego poziomu jest zamieniana na jedną lub kilka instrukcji procesora). 

•  Rejestru służą tylko do tymczasowego przechowywania wyników pośrednich i adresów, dane znajdują 

się w pamięci (instrukcje operują na danych w pamięci). 

•  Instrukcje operują na argumentach o różnych długościach: bajty, słowa 16-, 32- ew. 64-bitowe (długość 

argumentu jest zapisana w kodzie instrukcji). 

•  Bogaty repertuar trybów adresowania. 
•  Maksymalnie 16 rejestrów 
•  Operacje warunkowe - najczęściej z użyciem znaczników. 
•  Dominują instrukcje warunkowe - wynik zastępuje argument źródłowy. 
•  Specyfikacja dwóch argumentów wymaga mniejszej liczby bitów w obrazie binarnym instrukcji niż 

specyfikacja trzech argumentów. 

•  Rejestry przechowują wyniki obliczeń - nowy wynik tymczasowy zastępuje poprzedni. 
•  Skomplikowane instrukcje wymagają złożonej jednostki wykonawczej. 
•  Duża liczba odwołań do danych w pamięci spowalnia wykonanie programu. 
•  Duża liczba i złożoność trybów adresowania powoduje wydłużenie pól specyfikacji argumentów w 

zapisie binarnym instrukcji. 

RISC 

•  Podejście RISC wprowadzono na początku lat 80-tych XX wieku 
•  Ważniejsze współczesne architektury RISC: MIPS, SPARC, ARM 
•  Skalarne dane lokalne procedury są przechowywane w rejestrach. Odwołania do pamięci głównie w 

prologu i epilogu procedury - przeładowanie ramki stosu. 

•  Duży zestaw rejestrów - minimalnie 16, zwykle przynajmniej 32 (rejestry powinny mieścić skalarne 

argumenty i lokalne procedury). 

•  Instrukcje trójargumentowe - nie niszczą argumentów źródłowych (dane lokalne nie są zamazywane 

podczas wykonywania na nich operacji). 

•  Rzadkie odwołania do pamięci nie wymagają złożonych trybów adresowania (proste kodowanie 

instrukcji). 

•  Proste instrukcje dają się wykonać w prostej i szybkiej jednostce wykonawczej. 

Każda instrukcja ma tylko jeden argument docelowy 

Najwyżej jedno odwołanie do pamięci. 

•  Złożone operacje można zsyntetyzować z kilku instrukcji. 
•  Instrukcje arytmetyczne i logiczne operują tylko na dancyh w rejestrach i argumentach 

natychmiastowych (długość argumentu jest zwykle równa długości rejestru, brak operacji 8-, i 
16bitowych). 

•  Tylko dwa rodzaje instrukcji operują na pamięci: Load – ładuj, Store – składuj 
•  Więcej instrukcji - dłuższa postać binarna programu. 
•  Wszystkie instrukcje mają taką samą długość obrazu binarnego (zwykle 32 bity). 
•  Jeden lub dwa tryby adresowania pamięci - rejestrowy pośredni z przemieszczeniem, ew. dwurejestrowy 

pośredni. 

 

 

background image

A

RCHITEKTURA 

MIPS 

 

 Microprocessor without Interlocked Pipeline Stages - (Kaliornijski Uniwersytet Stanford) 

Pomiędzy poszczególnymi fazami potoku nie występują relacje wymagające sprzętowego uzależnienia. 

Obowiązek odpowiedniego ułożenia kodu programu spada na kompilatory - Idea w praktyce b. trudna do spełnienia. 

Najnowsze z procesorów MIPS - R10000 i R12000 (64 bitowe)- wyposażone są w zwielokrotnione jednostki 
zmiennoprzecinkowe, oraz w superskalarne jednostki wykonawcze (do 5 instrukcji równocześnie).  

Układy MIPS stanowią serce graficznych stacji roboczych Silicon Graphics. (Filmy „Toy Story", „Jurassic Park", „Dawno temu w 
trawie".) 

 

A

RCHITEKTURA 

EPIC

 

 

Explicitly Parallel Instruction Computing - przetwarzanie jawnie równoległe 

(Intel Itanium) 

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.  

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

 

A

RCHITEKTURA 

VLIW

 

-

 

V

ERY 

L

ONG 

I

NSTRUCTION 

W

ORD

 

 

Wada: brak skalowalności 

Np. TMS320C6211(?) 

Obecnie procesory VLIW są oparte na architekturze RISC, zazwyczaj z czterema lub maksymalnie ośmioma jednostkami 
obliczeniowymi. Po normalnej kompilacji programu, 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"). 

Procesor TriMedia firmy Philips jest przedstawicielem architektury VLIW, tak samo jak Intel Itanium IA-64. 

 

 

background image

M

IKROPROCESOR MOTOROLA 

68 000 

 

 

Mikroprocesor 68000 nie ma wyróżnionego wśród rejestrów akumulatora. Funkcje tę może pełnić dowolny z ośmiu 
dostępnych 32-bitowych rejestrów danych D0-D7.  

 

Rejestry A0-A6 to 32-bitowe rejestry adresowe - adresowane programowo.  

 

Rejestr A7 - dwa rejestry 32-bitowe, z których tylko jeden działa w danym momencie.  

 

W trybie użytkownika A7 jest wskaźnikiem stosu użytkownika (USP)  

 

W trybie nadzorcy A7 jest wskaźnikiem stosu nadzorcy (SSP).  

 

Tworzony stos rozciąga się w dół pamięci.  

Dane przechowywane w tych rejestrach mogą być:  

•  Niezależnymi bitami - 32 bity,  
•  Liczbami BCD (4-bity) - 8 liczb,  
•  Słowami words (16-bitów) - 2 słowa,  
•  Podwójnymi słowami long words (32-bity) - 1 słowo.  

 Organizacja danych w pamięci  

1.  Dane mogą mieć rozmiar 8, 16 lub 32 bitów (bajt, słowo, długie słowo)  
1.  Instrukcja MOVE, przesyłająca daną binarną z jednego miejsca do drugiego, posiada trzy formy:  

a.  MOVE.B - przesyła daną o długości bajtu,  
b.  MOVE.W - przesyła daną o długości słowa,  
c.  MOVE.L - przesyła daną o długości długiego słowa.  

Kolejnymi rejestrami są: 

•  32-bitowy licznik programu PC (Program Counter). 
•  16-bitowy rejestr statusowy (rejestr stanu) SR (Status Register) podzielony na dwa bajty:  

Bajt systemowy (bity od 8 do 15 rejestru statusowego):  

 

Bit 15 stanowi sprzętową pomoc dla debugerów. Zwany jest on bitem śledzenia (Trace bit). 
Umożliwia on przejmowanie sterowania przez debuger po wykonaniu każdej kolejnej instrukcji 
śledzonego programu.  

 

Bit 13 używany jest do kontrolowania dostępu do określonych instrukcji i do bajtu systemowego 
rejestru statusowego. Bit ten jest nazywany bitem nadzorcy (Supervisor bit). Jeśli bit ten jest 
ustawiony, dostęp jest dozwolony. Gdy jest on wyzerowany oznacza to, że procesor pracuje w trybie 
użytkownika.  

 

Bity 10 do 8 zwane są maską przerwań. Określają one priorytet obsługiwanego aktualnie przerwania. 
Pozostałe bity bajtu systemowego nie są w procesorze 68000 używane 

Bajt użytkownika (bity od 0 do 7 SR): rejestrem kodów warunków CCR (Condition Codes Register).  

 

Bit 0, bit przeniesienia C (Carry).  

 

Bit 1, bit nadmiaru V (Overflow).  

 

Bit 2, bit zera (Zero).  

 

Bit 3, bit mniejszości od zera (Negative).  

 

Bit 4, bit rozszerzenia X (Extend). Jest on kopią bitu C. 

 

 

background image

Tryby adresowania 

 

Obsługa przerwań: 

•  Obsługa zdarzeń wyjątkowych inicjują: 
•  Przerwania sprzętowe,  
•  Sygnały błędów układowych (np. BERR),  
•  Pułapki programowe (np. generowane automatycznie przy dzieleniu przez zero).  
•  O priorytecie danego przerwania sprzętowego decydują sygnały na wejściach IPL0 - IPL2. 
•  Istnieje 256 lokacji wektorów przerwań, z których każda zajmuje po 4 bajty. 

  

 

 

Lp.  Nazwa trybu 

Działanie 

Przykład 

Adresowania bezpośredniego rejestru 
danych 

D0 := D1 

MOVE D1, D0 

Adresowania bezpośredniego rejestru 
adresowego 

D0 := A1 

MOVE A1, D0 

Adresowania pośredniego rejestrem 
adresowym 

D0 := (A1) 

MOVE (A1), D0 

Adresowania pośredniego rejestrem 
adresowym z postinkrementacją 

D0 := (A1) 

A1:= A1 + N; N=1,2,4 
MOVE (A1)+, D0 

Adresowania pośredniego rejestrem 
adresowym z predekrementacją 

A1:= A1 - N; 
N=1,2,4  

D0 := (A1) MOVE -
(A1), D0 

Adresowania pośredniego rejestrem 
adresowym z przesunięciem 

D0 := (A1+4) 

MOVE 4(A1), D0 

Adresowania pośredniego licznikiem 
programu z przesunieciem 

D0 := (PC+4)  MOVE 4(PC), D0 

 

Lp.  Nazwa trybu 

Działanie 

Przykład 

Adresowania pośredniego rejestrem 
adresowym z indeksem 

D0 := (A1+4) + 
(D1) 

MOVE 
4(A1,D1.L), D0 

Adresowania pośredniego licznikiem 
programu z indeksem 

D0 := (PC+4) + 
(D1) 

MOVE 
4(PC,D1.L), D0 

10   Adresowanie absolutne krótkie 

D0 := ($1000) - 16 
bitów 

MOVE $1000, D0 

11  Adresowania absolutnego długiego 

D0 := ($10000) - 32 
bity 

MOVE $10000, D0 

12 

Adresowanie natychmiastowe (proste) 
krótkie 

D0 := $10002000, 
D0 

MOVE 
#$10002000, D0 

13 

Adresowanie natychmiastowe (proste) 
długie 

D0 := $10002000, 
D0 

MOVE 
#$10002000, D0 

14  Adresowanie implikowane (niejawne) 

D0 := SR, USP, 
SSP, PC 

 

 

background image

Odpytywanie – polling 

•  Program czeka na nadejście danych z urządzenia i nie może wykonywać innych zadań 
•  Urządzenie zewnętrze dostarcza dane w trudnym do przewidzenia momencie, ale program jest gotowy w każdej 

chwili na ich odbiór 

•  Program odbiera dane z urządzenia i musi natychmiast się nimi zająć aby jak najszybciej być gotowym na odbiór 

następnych danych 

•  Nie wiadomo kiedy nadejdą dane, więc program znów czeka i nie może wykonywać innych zadań 

Sytuacja wyjątkowa / przerwanie (Exception / Interrupt) 

•  Program nie czeka na nadejście danych z urządzenia i może wykonywać inne zadania 
•  Urządzenie zewnętrze dostarcza dane w trudnym do przewidzenia momencie, ale sygnalizuje ten fakt do programu i 

jest on gotowy na ich odbiór wtedy, gdy dane się pojawiają. 

•  Program odbiera dane z urządzenia 
•  … i musi się nimi zająć 
•  … aby po chwili powrócić do poprzednio wykonywanych zadań. 

Sytuacja wyjątkowa - odstępstwo od normalnego wykonywania ciągu instrukcji programu w celu obsługi nieprzewidzianego 
lub/i krytycznego zdarzenia w systemie mikroprocesorowym 

Sytuacje wyjątkowe powstają na skutek: 

•  Zdarzenia powstałego na zewnątrz mikroprocesora 
•  Nieprzewidzianego błędu podczas wykonywania programu 
•  Celowego wywołania za pomocą specjalnych instrukcji 

Typy sytuacji wyjątkowych: 

 

Reset - sytuacja wyjątkowa polegająca na rozpoczęciu pracy systemu (np. po włączeniu zasilania lub przycisku Reset). 
Bit S i T rejestru SR ustawiane są na 1 i 0, a maska przerwań na 111, a następnie z pamięci ładowane są zawartości 
rejestrów:SP (spod adresu 0) i PC (spod adresu 4) 

 

Bus error - sytuacja wyjątkowa występująca przy próbie odwołanie się procesora do obszaru pamięci nieistniejącego 
fizycznie w systemie. Może być wykorzystywane do realizacji pamięci wirtualnej. 

 

Interrupt - sytuacja wyjątkowa służąca do komunikacji z urządzeniami zewnętrznymi, jeśli dane z urządzenia 
napływają bardzo wolno lub/i w niemożliwych do przewidzenia momentach. 

 

Przerwania wektorowe polegają na tym, że urządzenie identyfikuje się do procesora podając, po zgłoszeniu i 
przyjęciu przerwania, swój unikalny numer. 

 

Przerwania autowektorowe polegają na tym, że identyfikacja urządzenia do procesora, po zgłoszeniu i przyjęciu 
przerwania, określona jest bezpośrednio na podstawie priorytetu zgłaszającego się przerwania 

 

Normal interrupt - przerwanie, którego cykl zgłoszenia, przyjęcia i identyfikacji przebiega bez zakłóceń. 

 

Spurious interrupt - przerwanie, które zostaje zgłoszone i przyjęte, ale procesor nie otrzymuje jego numeru (np. z 
powodu przerwania sygnalizacji przerwania przez urządzenie lub jego uszkodzenia) 

 

Uninitialized - przerwanie, które może być zgłoszone przez niezainicjowane urządzanie. Przerwanie może być 
wówczas zgłoszone i przyjęte, ale jako numer przesyłana jest wartość $0F, pozwalająca na odpowiednia reakcję 
systemu 

 

Trace - sytuacja wyjątkowa wywoływana po wykonywaniu każdej instrukcji programu użytkownika, pozwalająca na 
uruchamianie programów w trybie pracy krokowej. Oczywiście program obsługi tej sytuacji (już w trybie nadzorcy) 
przerywany nie jest. 

 

Privilage violation - sytuacja wyjątkowa wywoływana przy próbie wykonywania przez program w trybie 
użytkownika instrukcji zastrzeżone dla trybu nadzorcy 

 

Illegal instruction - sytuacja wyjątkowa wywoływana przy próbie wykonywania instrukcji, której kod nie odpowiada 
żadnej istniejącej instrukcji 

 

DIVS,DIVU / Divide by Zero - sytuacja wyjątkowa wywoływana przy próbie wykonania instrukcji dzielenia DIVS, 
DIVU, jeśli dzielnik jest równy 0. 

background image

 

TRAPV, TRAPcc - sytuacja wyjątkowa wywoływana przez instrukcję TRAPV (ogólnie TRAPcc dla 68020+), jeśli 
testowany warunek cc jest spełniony. 

 

TRAP #n - sytuacja wyjątkowa wywoływana przez instrukcję TRAP #n (n=0..15). Pozwala na poszerzenie listy 
instrukcji o 16 nowych pozycji. Wykorzystywane np. do pisania programów przenośnych pomiędzy różnymi 
systemami (z tym samym procesorem ale różnymi urządzeniami we/wy) 

 

CHK, CHK2 - sytuacja wyjątkowa wywoływana przez instrukcję CHK (i CHK2 dla 68020+), która porównuje operand z 
podaną wartością, ( CHK <ea>,Dn ). Jeśli operand w Dn.W jest wartością spoza zakresu 0 - <ea>, wywoływana jest 
sytuacja wyjątkowa. 

 

Line 1010 (A) emulator - sytuacja wyjątkowa wywoływana przy próbie wykonania instrukcji, której kod zaczyna się 
od wzorca 1010. Pozwala to na zdefiniowanie grupy nowych instrukcji, np. emulujących możliwości nowszych 
procesorów tej rodziny. 

 

Line 1111 (F) emulator - sytuacja wyjątkowa wywoływana przy próbie wykonania instrukcji, której kod zaczyna się 
od wzorca 1111. Wykorzystywana zwykle do emulacji instrukcji koprocesora arytmetycznego w systemie z 
procesorem 68000. 

Obsługa sytuacji wyjątkowej: 

•  Dokończenie aktualnie wykonywanej instrukcji, 
•  Wewnętrzne wygenerowanie numeru sytuacji wyjątkowej, rozstrzygnięcie priorytetu, 
•  Odłożenie na stos zawartości rejestrów procesora (zawsze SP i PC, dodatkowe rejestry odkładane są w zależności od 

typu sytuacji wyjątkowej) tzw. ramka stosu, 

•  Odczytanie z tablicy wektorów adresu procedury obsługi dla danego numeru sytuacji wyjątkowej, 
•  Skok, wykonanie procedury obsługi i powrót z odtworzeniem ramki stosu. 

 

Priorytety sytuacji wyjątkowych: 

Sytuacja wyjątkowa o priorytecie niższym może być przerwana przez sytuację o priorytecie wyższym (np. obsługa błędu 
programowego może być przerwana przez przerwanie zewnętrzne). 

 

 

Priorytet 

Sytuacja wyjątkowa 

Najwyższy 

Reset 

Bus error 

error 

Średni 

Trace 

Interrupt 

Illegal instruction 

Privilege violation 

Najniższy 

TRAPcc, TRAP #n 

Divide by Zero, 

CHK 

background image

P

ROCESOR 

ARM

 

-

 

NAJELEGANTSZY

 PROCESOR

 

 

Skonstruowany całkowicie od podstaw w 1986 roku przez brytyjską firmę Acorn.  

Acorn RISC Machine, „przechrzczony” po kupieniu Acorna przez Olivetti na Advanced RISC Machine.  

Każda z instrukcji zawiera 4-bitowy kod, określający warunki jej wykonania, a także bit wskazujący na to, czy dana instrukcja 
może zmienić zawartość rejestru stanu procesora. Konstrukcja taka pozwala na eliminację wielu rozgałęzień programu, 
upraszcza znacznie logikę procesora, a równocześnie przyspiesza wykonanie programu dzięki zmniejszeniu objętości kodu.  

Procesor Strong ARM, pracuje obecnie z zegarami w zakresie 100-300 MHz przy poborze mocy rzędu zaledwie 1 W !!! 

R

DZEŃ 

ARM

V

4T

 

(ARM7) 

 

Architektura RISC (Reduced Instruction Set Computers) 

 

Ograniczona lista wykonywanych rozkazów,  

 

Ograniczona ilość trybów adresowania,  

 

Operacje wykonywane na rejestrach (brak rozkazów operujących na pamięci – poza LOAD i STORE)  

 

Operacje na danych w pamięci wykonywane są według schematu Read-Modify-Write,  

 

Proste kody rozkazów -> uproszczenie dekodera rozkazów,  

 

Prosta budowa rdzenia -> mniejsza ilość elementów -> zmniejszony pobór prądu.  

Architektura von Neumana 

 

Brak podziału pamięci na pamięć danych i programu,  

 

Możliwość wykonywania kodu programu zarówno z pamięci Flash jak i RAM (możliwość modyfikacji kodu w trakcie 
wykonywania programu).  

Rejestry mikrokontrolerów RISC 

 

Zwiększona liczba rejestrów roboczych,  

 

Wszystkie rejestry są 32-bitowe.  

 

32-bitowa magistrala danych – możliwość jednoczesnego odczytu i zapisu danych, jednostkami 8, 16 lub 32-bitowymi 
(problem wyrównywania danych).  

Wyjątki obsługiwane przez rdzeń ARM7TDMI 

 

SWI – napotkanie specjalnej instrukcji SWI,  

 

Abort – próba wykonania instrukcji, przy pobieraniu której wystąpił błąd w dostępie do pamięci lub próba 
zapisu/odczytu niewyrównanych danych,  

 

Undefined – napotkanie instrukcji, której rdzeń nie jest w stanie zdekodować,  

 

nIRQ – przerwanie – pojawienie się na linii wejściowej nIRQ stanu niskiego,  

 

nFIQ – przerwanie o wyższym priorytecie od nIRQ – wykorzystywane tam gdzie konieczna jest szybka reakcja,  

 

 

background image

Tryby pracy rdzenia 

 

Tryby zależne od rodzaju obsługiwanego wyjątku (np. po wystąpieniu wyjątku Abort rdzeń pracuje w trybie Abort),  

 

Tryby pracy w czasie wykonywania programu głównego: Supervisor, System, User (różnią się poziomem praw 
dostępu do zasobów oraz obszarów pamięci mikrokontrolera),  

Tryby pracy rdzenia (z punktu widzenia instrukcji) 

 

Tryb ARM – rozkazy zakodowane na 32 bitach:  

Dostępna pełna lista rozkazów,  

Rozkazy mogą przyjmować większą liczbę parametrów,  

Program złożony z instrukcji ARM działa szybciej,  

Rozmiar programu jest większy.  

 

Tryb Thumb – rozkazy zakodowane na 16 bitach:  

Program wykonywany jest wolniej ze względu na konieczność konwersji każdej instrukcji do pełnej instrukcji 
ARM przed jej wykonaniem,  

Rozmiar programu jest mniejszy.  

Fazy wykonania rozkazu – praca potokowa  

 

Każdy rozkaz wykonywany jest w trzech cyklach  

Pobranie,  

Dekodowanie,  

Wykonanie,  

 

Przetwarzanie odbywa się z zastosowaniem potoku 
trójpoziomowego,  

 

Efektywny czas wykonania rozkazu to jeden cykl.  

 Kodowanie rozkazów arytmetycznych i logicznych w trybie ARM:  

 

Regularna budowa kodu – uproszczenie dekodera rozkazów -> zmniejszenie rozmiarów struktury krzemowej -> 
zmniejszenie poboru prądu  

 Przesuwnik bitowy:  

 

Wykonuje przesunięcia logiczne, arytmetyczne oraz rotacje użytego w rozkazie operandu,  

 

Uzupełnia możliwości rdzenia o brakujące na liście rozkazów przesunięcia i rotacje,  

 

Służy do skalowania jednego z argumentów w rozkazach arytmetycznych i logicznych,  

 

Umożliwia skalowanie wartości przesunięcia (offsetu) w rozkazach przesłań, pozwala to łatwo indeksować dane o 
różnych rozmiarach.  

STARTUP – 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ęści programu - dla C – skok do procedur inicjalizujących biblioteki i zmienne globalne 

 

 

Cykl 

Rozkaz 1 

Rozkaz 2 

Rozkaz 3 

Pobranie 

 

 

Dekodowanie 

Pobranie 

 

Wykonanie 

Dekodowanie 

Pobranie 

 

Wykonanie 

Dekodowanie 

 

 

Wykonanie 

background image

DSP - Procesor TMS320C50 

 

Typowy system cyfrowego przetwarzania sygnałów (DSP – Digital Signal Processing) – budowa: 

 

Procesor – układ scalony DSP 

CPU – Central Processing Unit 

AAU – Auxiliary Arithmeric Unit 

SP – Serial Ports 

IM – Internal Memory 

 

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

 

Porty komunikacji 

Szeregowy (np. modem) 

Równoległy (np. drukarka) 

P

ROCESOR 

TMCS320C50 

Przegląd właściwości: 

 

Wydajność 40 MIPS 

 

Statyczny układ CMOS -> 2 tryby zmniejszania poboru 
mocy(5µA /60mA / 100mA) 

 

Zgodny z TMS3201x, 2x, 2xx 

 

Emulacja przez wydzielony port 

 

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 

 

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

 

11 rejestrów przełączania kontekstu (shadow registers) wspomagających obsługę przerwań 

 

Ośmiopoziomowy stos sprzętowy 

 

Rejestr przesuwający w lewo i w prawo o wartość od 0 do 16 b 

 

2 bufory kołowe do adresowania kołowego 

 

Zdolność powtarzania pojedynczej instrukcji i 
bloku instrukcji 

 

Instrukcje przesuwania (move) bloków pamięci 
programu i danych 

 

Dwukierunkowy synchroniczny port szeregowy 

 

Port szeregowy z podziałem czasu 

 

Wewnętrzny zegar 

 

16 portów równoległych we/wy 

 

16 programowalnych generatorów cykli 
opóźniających (wait-state) 

 

Tryb adresowania indeksowego 

 

Tryb adresowania z rewersją bitów 

 

 

background image

Przegląd właściwości c.d.: 

Pamięć RAM: 

 

Krótki dostęp czasu („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 16K słów 16-bitowych 

 

Programowanie możliwe tylko podczas produkcji (można zamawiać w TI) 

 

Możliwość dołączenia zewnętrznej pamięci ROM 

Rdzeń – Zestaw równolegle działających układów arytmetycznych, logicznych i rejestrów (duża prędkość). Zgodny z 
TMS3201x/2x: 

 

Układ mnożący: 

Wykonuje mnożenie dwóch liczb 16-bitowych (U2) dając 32-bitowy iloczyn 

Umożliwia filtrację sygnałów o dużej częstotliwości próbkowania (splot, korelacja) 

Zawiera: 

 

Rejestr pomocniczy T (Temporary register) do zapamiętania mnożnej 

 

Rejestr P (Product register) do przechowania iloczynu 

 

Mnożarkę równoległą 16x16b 

 

Jednostka arytmetyczno-logiczna (ALU) 

Współpracując z akumulatorem wykonuje dodawanie, odejmowanie i działania boolowskie, np. AND i OR 

Wyniki są zapisywane z akumulatorze 

 

Rejestr przesuwający (shifter) 

Umożliwia skalowanie danych – poprzez przesunięcie ciągu bitów w lewo i w prawo 

Mniej znaczące bity są wypełniane zerami 

Pozwala na uniknięcie przepełnienia 

 

Akumulator 

Rejestr pamięciowy 32-bitowy 

Współpracuje z układem mnożącym, pamięcią, ALU i rejestrem skalującym 

Możliwy jest dostęp do części MSB (ACCH) i LSB (ACCL) akumulatora 

Akumulator posiada bufor 32-bitowy (pamięć tymczasową) 

 

Rejestry pomocnicze 

AR0-AR7: pamięć pomocnicza danych lub pamięć wskaźników do danych (przy adresowaniu pośrednim) 

Rejestry AR mogą być łatwo inkrementowane lub dekrementowane 

Operacje na danych w rejestrach pomocniczych są wykonywane przez ARAU – niezależną jednostkę 
arytmetyczną (działającą w kodzie naturalnym) 

 

Równoległa jednostka logiczna (PLU) 

Umożliwia wykonywanie operacji logicznych bez zmiany zawartości akumulatora (np. bity rejestru stanu 
mogą być zmieniane bez spowalniania obliczeń) 

 

Rejestry stanu i sterowania 

Rejestry stanu ST0 i ST1 

Rejestr stanu trybu procesora (PMST) 

Rejestr sterujący buforów kołowych (CBCR) 

Ustawiając lub zerując bity w rejestrach można rekonfigurować procesor 

 

 

background image

Układy peryferyjne – umożliwiają współpracę z urządzeniami zewnętrznymi 

 

Port szeregowy 

Synchroniczny 

Dwukierunkowy i podwójnie buforowany 

Służy np. do współpracy z układami A/C i C/A, kodekami 

 

Port szeregowy TDM 

Do komunikacji między układami w systemie wieloprocesorowym 

Obsługuje do 7 procesorów zewnętrznych 

 

Układ czasowy 

Programowalny 

16-bitowy 

Umożliwia podział częstotliwości zegara w stosunku od ½ do 1/32,  
(np. do sterowania zewnętrznych układów A/C i C/A) 

 

Generator opóźnień 

Do współpracy procesora z wolniejszymi pamięciami zewnętrznymi (procesor może czekać 1, 2, 3 lub 7 cykli) 

 

Porty równoległe 

Do komunikacji z urządzeniami o prostych układach dekodujących (instrukcje IN oraz OUT) 

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.  

background image

Tryby adresowania: 

 

Bezpośredni (direct) 

2 części adresu bezpośredniego 

 

9-bitowy wskaźnik strony pamięci 

 

7-bitowy adres komórki na bieżącej stronie (DMA – Data Memory Address) 

Instrukcje wykorzystujące adresowanie bezpośrednie: 

 

AND (akumulator i zaadresowana komórka) 

 

ADD (akumulator i zaadresowana komórka) 

 

OR (akumulator i zaadresowana komórka) 

 

LST (załaduj rejestr stanu zawartością zaadresowanej komórki) 

 

Pośredni (indirect) 

Rejestr AR zostaje wybrany przez załadowanie jego numeru (0..7) do rejestru ARP 

Zawartość rejestrów ARx jest obliczana przez ARAU, niezależnie od AL. 

Instrukcja LAR ładuje żądany adres do aktualnie wskazywanego rejestru AR 

Instrukcje operujące na rejestrach pomocniczych: 

 

LAR (załaduj daną do ARx) 

 

ADRK (dodaj stałą do ARx) 

 

SBRK (odejmij stałą od ARx) 

 

MAR (zmodyfikuj ARx lub ARP po skopiowaniu ARP do ARB) 

 

Natychmiastowy (immediate) 

Instrukcja zawiera wartość operandu 

 

Rejestrami dedykowanymi (dedicated register) 

Istnieje 9 instrukcji, które korzystają z rejestrów dedykowanych 

Rejestry dedykowane:  

 

BMAR (rejestr adresu przesuwani bloku) 

 

BLDD, BLDP, BLPD – przesunięcie danych (zawartość BMAR wskazuje adres źródłowy i 
docelowy) 

 

MADD (multiply and accumulate with data move and dynamic addressing) 

 

MADS (multiply and accumulate with dynamic addressing) 

 

DBMR (rejestr dynamicznych manipulacji bitowych) 

 

APL, OPL, CPL, XPL – operacje logiczne na danych z pamięci i zawartości rejestru DBMR 

 

Rejestrami umieszczonymi w pamięci (memory-mapped register) 

Rejestry te są umieszczone na stronie zerowej. 

Dostęp do nich nie wymaga modyfikacji DP 

Instrukcje 

 

LAMM (załaduj do akumulatora wartość rejestru w pamięci) 

 

SAMM (przechowaj zawartość akumulatora w rejestrze pamięci) 

 

LMMR (załaduj rejestr umieszczony w pamięci) 

 

SMMR (zapisz wartość rejestru umieszczonego w pamięci) 

 

Kołowy (circular) 

Tryb adresowania użyteczny w realizacji splotu, korelacji, filtrów i do generowania sygnałów okresowych. 

 

 

background image

I

486 

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 

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 

REJESTRY – REJESTR FLAGOWY 

 

ID – możliwość zmiany tego bitu oznacza wspieranie instrukcji CPUID 

 

VIP/VIF – zachowują w systemie wieloprocesorowym wirtualny obraz flagi IF 

 

AC – wymusza generacje niepowodzenia (fault) w przypadku niepoprawnego ulokowania argumentów 

 

VM – flaga pracy w wirtualnym trybie 8086 (tylko w trybie chronionym) 

 

RF – wykorzystywana wraz z rejestrami od punktów zatrzymania (ang. brakpoint) 

 

NT – informuje, ze wykonanie aktualnego zadania odbywa się w sposób zagnieżdżony w innym zadaniu 

 

IOPL – maksymalna wartość CPL (Current Privilege Level) zezwalajca na wykonanie instrukcji I/O 

 

OF – flaga przepełnienia dla liczb w kodzie U2 (ustawiana gdy następuje przeniesieniu/pożyczka z na/z bitu znaku a 
nie następuje poza bit znaku lub vice-versa) 

 

DF – określa kierunek przesłań podczas operacji blokowych 

 

IF – odblokowuje przerwania od zewnętrznego pinu INTR 

 

TF – flaga pracy krokowej SF, ZF, AF, PF oraz CF – flagi znaku, zera, przeniesienia pomocniczego, parzystości oraz 
przeniesienia 

 

 

background image

REJESTRY – STERUJACE, TABLIC DESCRYPTORÓW 

Rejestry sterujące CRx – CR1 zarezerwowany dla przyszłych wersji procesora 

 

CR0.PR (Paging Enable) – steruje mechanizmem stronicowania, 

 

CR0.CD (Cache Disable) – steruje wewnętrzną pamięcią notatnikowa 

 

CR0.NW (Not-write Through) – jednoczesny zapis do pamięci zewnętrznej w przypadku trafionego zapisu do pamięci 
„cache” 

 

CR0. AM (Alignment Mask) – steruje kiedy bit flagowy AC generuje niepowodzenie braku wyrównania argumentu 

 

CR0. WP (Write Protect) – umożliwia zapis stron „read-only” z poziomów ochrony od 0 do 2 

 

CR0. NE (Numerics Exception) – steruje zgłaszaniem przerwań od koprocesora numerycznego 

 

CR0. TS (Task Switched) – ustawiany automatycznie podczas przełączenia zadania 

 

CR0. EM (Emulate Coproces or) – umożliwia generacje wyjątku podczas próby wykonania operacji zmiennopozycyjnej 
(istotne dla 486 SX) 

 

CR0. MP (Monitor Coproces or) – w połączeniu z flaga CR0.TS określa, kiedy instrukcji koprocesora WAIT wymaga 
obsłużenie 

 

CR0. PE – (Protection, Enable) – steruje przełączaniem w tryb chroniony 

 

CR2 – zawiera adres liniowy, który spowodował ostatnie niepowodzenie dostępu do strony 

 

CR3 – zawiera adres fizyczny katalogu tablic stron. Katalog jest zawsze wyrównany do 4kB – najmłodsze 12 bitów nie 
ma znaczenia. 

 

CR3.PCD (Page Cache Disable), CR3. PWT (Page Write-Through) – sterują zasadami zapisu katalogu tablic do pamięci 
notatnikowej i zewnętrznej  

 

CR4.PSE (page Size Extensions) – zezwala na 4MB rozmiar strony 

 

CR4.PVI (Protected mode Virtual Inter upts) – umożliwia pewnym programom zaprojektowanym do pracy na 
poziomie ochrony 0 pracować na poziomie 3 

 

CR4.VME (Virtual-8086 Mode Extensions) – zarządza wirtualna flaga przerwania w wirtualnym trybie 8086 
 

 

GDTR (Global Descriptor Table Register) – zawiera 32-bitowy adres liniowy oraz 16-bitowy rozmiar globalnej tablicy 
deskryptorów (globalny obszar pamięci w systemie) 

 

IDTR (Inter upt Descriptor Table Register) – zawiera 32-bitowy adres liniowy oraz 16-bitowy rozmiar tablicy 
deskryptorów przerwań (globalny obszar pamięci w systemie) 

 

LDTR (Local Descriptor Table Register) – zawiera selektor dla lokalnej tablicy deskryptorów (obszar pamięci w 
systemie związany z aktualnie wykonywanym zadaniem) 

 

TR (Task Register) – zawiera selektor dla segmentu TSS (Task Switching Segment) (obszar pamięci w systemie 
związany z aktualnie wykonywanym zadaniem zawierający kontekst zadania) 

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) 

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 

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) 

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) 

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

 

Logiczna (wirtualna),  

 

Liniowa 

 

Fizyczna (maksymalnie 4GB pamięci fizycznej i 64TB pamięci wirtualnej!) 

background image

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) 

 

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 

 

 

background image

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:  

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

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

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

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 

•  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ędzysegmentowy 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 

 

 

background image

STRONICOWANIE - OPIS 

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

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

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

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

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

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

 

PAMIEC NOTATNIKOWA (CACHE) 

•  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 

 

 

background image

P

RZETWARZANIE POTOKOWE

 

Struktura potoku jednostki centralnej procesora RISC 

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ędzyrejestrowego 
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 

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

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

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łezień programu (architektura hiperskalarna) 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 

 

Magistrala - „wąskie gardło” 

1.  Różna długość instrukcji 
2.  Podwójne pobranie z pamięci 

Efekt ten NIE WYSTĘPUJE w procesorach o architekturze RISC (LES) 

konieczność pobierania równocześnie instrukcji (kodu) oraz argumentów instrukcji (danych) z tej samej pamięci 

 

 

Numer 

instrukcji

1

Pobranie

Dekodowanie Wykonanie

Zwrot rezultat.

2

Pobranie

Dekodowanie Wykonanie

Zwrot rezultat.

3

Pobranie

Dekodowanie Wykonanie

Zwrot 

rezultat.

4

Pobranie

Dekodowanie

Wykonanie

Zwrot 

rezultat.

Cykl zegara

1

2

3

4

5

6

7

Stan potoku.

background image

M

IKROOPERACJE

 

Mikrooperacje to elementarne sygnały elektryczne, 
służące do sterowania przepływem danych 
pomiędzy rejestrami. Realizowanie są 
synchronicznie razem z sygnałem zegarowym (RISC) 
lub sygnałem fazy (CISC).  

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

Oznaczenia: 

•  → 

kier. transferu  A  → B 

•  ( ) 

część rejestru  MBR(H), MBR(L) 

•  : 

warunek f. sterującej 

P: A → B 

•  , 

oddzielenie mikrooperacji 

A  → B, PC ← PC + 1 

•  => 

Przesłanie wielobitowe 

Mikrooperacje:  

•  TRANSFERU 
•  ARYTMETYCZNE 
•  LOGICZNE 
•  NA BITACH 
•  PRZESUNIĘĆ 

 

 

 

MNEMONIK 

OPIS 

OPERACJA 

KOD 

 (HEX ) 

BAJTY/ 
CYKLE 

UWAGI 

ACALL  
adr11 

Subroutine call 
on page
 

SP 

SP+1 

(SP)

  PC

7-0

 

SP

 SP+1 

(SP)

 PC 

15-

8

 

PC

10-

0

adr11 

11,31,51 
71,91, 
B1,D1, 
F1 

2/2 

adr11- adres 11 
- bitoey
 

LCALL  
adr16 

Subroutine call 

SP 

SP+1 

(SP)

  PC

7-0

 

SP

 SP+1 

(SP)

 PC 

15-

8

 

PC 

  adr16 

12 

3/2 

adr16 - adres 16 
- bitowy
 

RET 

Return from 
subroutine 

PC

15-8

(SP

SP

 SP-1 

PC

7-0

(SP) 

SP

 SP-1 

22 

1/2 

 

RETI 

Return from 
interrupt 

PC

15-8

(SP

SP

 SP-1 

PC

7-0

(SP) 

SP

 SP-1 

32 

1/2 

 

PUSH   ad 

Push onto 
stack
 

SP 

SP+1 

(SP)

 <ad> 

C0 

2/2 

ad - bezpośredni 
adres
 
 8 - bitowy 

POP     ad 

Pop from stack 

<ad>

 (SP) 

SP

  SP-1 

 

 

ad - bezpośredni 
adres
 
 8 - bitowy 

background image

 

 

 

 

 

background image

W modelu von Neumanna zadaniem procesora jest przetworzenie danych, których jedynym źródłem jest pamięć. Wykonanie 
rozkazu zaczyna się od pobrania z pamięci słowa traktowanego jako kod instrukcji. Kolejno następuje pobranie danych z 
pamięci, ich przetworzenie i zapis wyniku do pamięci. Wynik rozkazu zależy od wykonania rozkazów poprzednich. Chwilowe 
umieszczenie danych w rejestrach procesora służy zmniejszaniu obciążenia magistrali i nie jest sprzeczne z modelem 
przetwarzania. 

Podstawową rolę pełni pamięć zorganizowana zgodnie z następującymi zasadami: 

 

Informacja jest przechowywana w komórkach o jednakowych rozmiarach, każda komórka zawiera jednostkę 
informacji zwaną słowem 

 

Znaczenie słów nie jest przypisane ich treści, sposób przechowania danych i nstrukcji jest identyczny (kod informacji 
nie zawiera żadnej etykiety) 

 

Struktura (kod) słowa nie pozwala odróżnić instrukcji od danych, interpretacja zależy tylko od stanu maszyny w 
momencie pobierania słowa z pamięci 

 

Komórki tworzą zbiór uporządkowany, a każdemu słowu można jednoznacznie przypisać unikatowy wskaźnik lokacji 
(adres) określający pozycję w sekwencji 

 

Zawartość komórki pamięci może zmienić tylko procesor dokonując (w wyniku wykonania rozkzu) przesłania słowa 
do pamięci 

W koncepcji von Neumanna termin pamięć oznacza tę część magazynu informacji, którą procesor może zaadresować podczas 
wykonywania pojedynczego rozkazu. 

Informacje z innych części magazynu informacji (nazywanych pamięcią wtórną lub masową) mogą być przetworzone dopiero 
po ich uprzednim skopiowaniu do adresowanej przez procesor pamięci głównej (zwaną operacyjną lub pierwotną) 

Program jest sekwencją rozkazów/poleceń, zatem podczas wykonywania rozkazu powinien być znany adres lub sposób 
wyznaczania kolejnego rozkazu. Układ wytwarzający adres kolejnego rozkazu podczas wykonywania poprzedniego nosi 
nazwę licznika rozkazów 

 

W architekturze Harwardzkiej rozdzielono pamięć główną na osobne pamięci danych i rozkazów. Umożliwia to nie tylko 
równoczesne pobieranie kodu rozkazu i argumentów, ale także zabezpieczenie kodu przed przypadkowym zniszczeniem. 

Oprócz funkcji przetwarzania wynikający z realizowanego algorytmu, komputer powinien wypełniać również wiele innych 
zadań, związanych zwłaszcza z kontrolą poprawności wykonania rozkazów.  

W architekturze Harward mamy 2 szyny danych oraz 2 szyny adresowe. Transmisja danych i instrukcji odbywa się w sposób 
równoległy. Architektura ta jest prostsza od von Neumanna i ma dużo większą szybkość działania oraz obsługuje mechanizm 
potokowy. 

 

Cykl – stan pomiędzy kolejnymi zmianami stanu. Najkrótszy czas między zmianami stanu procesora to cykl procesora, czas 
potrzebny na zmianę stanu pamięci to cykl pamięci (cykl rozkazowy), który może obejmować kilka cykli procesora 

Rozkaz – jest funkcją r

x

∊R:M->M, która przeprowadza stan wejściowy na wyjściowy. Rozkazy są zakodowane i umieszczone w 

pamięci jak inne dane. Sekwencja rozkazów tworzy makrorozkaz. Wykonanie każdego rozkazu rozpoczyna się od pobrania 
jego kodu z pamięci. Kolejnym etapem jest dekodowanie rozkazu w celu wytworzenia sygnałów sterując, zwykle połączone z 
wytworzeniem adresów argumentów. Po ewentualnym odczycie argumentu z pamięci następuje wytworzenie wyniku. Wynik 
musi zostać zapamiętany w pamięci lub rejestrze procesora. Wykonanie każdego rozkazu powoduje zmianę stanu procesora, 
nawet gdy pozornie nie jest wytworzony żaden wynik. 

 

 

background image

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ęć) 

M

OTOROLA 

68

(CISC) 

Tryby adresowania: 

 

Bezpośredniego rejestru 

Danych (1) 

Adresowego (2) 

 

Pośredniego 

Rejestrem adresowym (3) 

 

Z postinkrementacją (4) 

 

Z predekrementacją (5) 

 

Z przesunięciem (6) 

 

Z indeksem (7) 

Licznikiem programu 

 

Z przesunięciem (8) 

 

Z indeksem (9) 

 

Absolutne 

Krótkie (10) 

Długie (11) 

 

Natychmiastowe (proste) 

Krótkie (12) 

Długie (13) 

 

Implikowane (niejawne) (14) 

4 rodzaje rejestrów: 

 

8 32-bitowych rejestrów danych (D0-D7) 

 

8 32-bitowych rejestrów adresowych (A0-A7) 

 

32 bitowy rejestr licznika programu (PC) 

 

16-bitowy rejestr statusowy (SR) 

Rejestry ogólnego przeznaczenia = adresowe + danych 

ARM

 

(RISC,

 VON 

N

EUMANN

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) 

background image

Cechy ARM: 

 

32-bitowy procesor zgodny z RISC 

 

Procesor zoptymalizowany pod względem poboru mocy 

 

Różne tryby pracy 

32-bitowe instrukcje ARM 

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: 

 

User 

 

System 

 

Supevisor 

 

Abort 

 

Undef 

 

IRQ 

 

FIQ 

 

 

background image

I

486 

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 – przeiwdywanie 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 nieb ędzie ykonay 

 

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

 

Przewidywanei oparte na statystycznej analizie wykonania skoków 

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

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

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

 

 

background image

 

32-bitowy adres liniowy dzielony jest na 3 części: indeks katalogu, indeks tablicy i offset. 

 

 

background image

D

EFINICJE

 

System komputerowy – zestaw jedno lub wielokomputerowy wraz z odpowiednim oprogramowaniem przeznaczonym do 
wykonywania określonych zadań 

Sprzęt – czyli elektroniczne komponenty komputera przede wszystkim jednostka centralna (procesory, pamięć, sterowniki) 
oraz urządzenia zewnętrzne 

Oprogramowanie – zapisane na nośniku informacji programy i dane umożliwiające eksploatację systemu komputerowego i 
realiację zadań użytkowników systemu 

System operacyjny – program działający jako pośrednik między użytkownikiem komputera a sprzętem komputerowym 

Architektura komputera – część opisu struktur komputera widziana poprzez programistę działającego na poziomie 
oprogramowania podstawowego za pomocą języka assembler. 

Organizacja komputera – obejmuje wzajemne powiązania i współdziałanie jego poszczególnych bloków funkcjonalnych 

Bit –najmniejsza jednostka informacji rozróżniana w komputerze 

Bajt – ciąg zerojedynkowy o długości 8-bitów 

Słowo maszynowe – Określa się zwykle długość ciągu zerojedynkowego na którym możliwe jest równoległe dokonywanie 
większości operacji 

Linia – jednolita droga przesyłania sygnałów (realizacja techniczna = przewód) 

Szyna – zbiór linii służących do przesyłania grup sygnałów. Linie te sągrupowane według funkcji sygnałów i stąd pochodzą ich 
nazwy: szyna danych, adresowa i sterowania 

Magistrala – połączenie składające się zwykle z szyny danych, adresowej i sygnałów sterujących 

Przestrzeń adresowa – zbiór wszystkich możliwych adresów, które mogą zostać wygenerowane przy dostępie do pamięci 

Rozkaz – zerojedynkowy ciąg pobrany z pamięci w celu określenia na jego podstawie dalszych działań procesora 

Lista rozkazów – zbiór wszystkich możliwych rozkazów ( różnych ) 

Mikrooperacja arytmetyczna – operacja przesłań między rejestrami. Zmienia wartość operacji podczas przesyłania, poprzez 
układy logiczne wykonujące odpowiednią funkcję arytmetyczną 

Cykl rozkazowy – ciąg czynności wykonywanych poprzez układ sterowania jednostki centralnej procesora w czasie realizacji 
jednego rozkazu. NA cykl rozkazowy składa się faza pobrania i wykonania (co najmniej) 

Cykl maszynowy – cykl, w którym następuje przesłanie danych (odczyt lub zapis) między jednostką centralną a pamięcią lub 
układem we/wy a rejestrami procesora. Jeden cykl maszynowy wykonywane jest podczas jednego lub kilku taktów zegara 
systemowego 

 

 

 

background image

 

Stopnie MIPS: 

 

IF pobiera instrukcje z pamięci instrukcji 

 

RD odczytuje zawartość rejestrów źródłowych z zestawu rejetrów 

 

ALU wykonuje operację arytmetyczną, ew. skok 

 

MEM dokonuje wymiany danych z hierarchią pamięci danych 

 

WB zapisuje wynik operacji arytmetycznej 

 

 

 

Stopnie CISC (i486): 

 

Fetch – pobranie instrukcji do bufora instrukcji 

 

ID1 – wstępne dekodowanie, określenie dlugości 

 

ID2 – obliczenie adresów 

 

EX - wymiana z pamęcią, odczyt rejestrów, operacja arytmetyczna lub 
logiczna (stopień bardzo skomplikowany, w wielu instrukcjach, 
wykonanie wielofazowe 

 

WB – zapis wyników do rejestrów 

 

Synchronizacja potoku – usuwanie hazardu R-A-W: 

 

Metoda administracyjna – uznanie sekwencji instrukcji powodującej hazard za nielegalną i niedozwoloną 

 

Wstrzymanie potoku po wykryciu hzardu – azard w potoku można łatwo wykryć umieszczając w stopniu RD 
komparatory porównujące numery rejestrów źródłowych odczytywanych przez RD z numerami rejestrów 
docelowych instrukcji przechowywanych w stopni ALU i MEM 

 

Obejścia – najbardziej efektywna metoda usuwania hazardu wymaga rozbudowy stopnia odczytu i przeprowadzenia 
dodatkowych ściżek danych ze stopni ALU i MEM do stopnia RD 

 

 

background image

I

NTEL X

86

 

(16-

BITOWY 

CISC) 

Tryby adresowania: 

 

Natychmiastowe 

 

Rejestrowe 

 

Bezpośrednie 

 

Pośrednie 

 

Pośrednie skalowane z przemieszczeniem 

 

Operacja łańcuchowa 

Rejestry 

 

Ogólnego przeznacznia 

AX – akumulator 

BX – bazowy 

CX – zliczający 

DX – danych 

SP – wskaźnik stosu 

BP – wskaźnik bazy 

SI – rejestr indeksowy źródła 

DI – rejestr indeksowy przeznaczenia 

 

Segmentowe 

CS – programu 

DS – danych 

SS – stosu 

ES – dodatkowy 

Pamięć 8086 – pamięć danych i programu jset 8-bitowa, ale możlwie jest adresowanie słów wielobajtowych. Stos jest 16-
bajtowy. Te 3 rodzaje pamięci są adresowane za pomocą wspólnej magistrali adresowej. Stos to obszar pamięci do któ®ego 
wpisujemy dane bądź są łądowane adresy w wyniku wykorzytania podprogramów lub przerwań. 

20-bitowa magistrala adresowa pozwala na zaadresowanie do 1MB pamięci operacyjnej. Przestrzeń adresowa zostałą 
podzielona na segmenty o długości 64kB. 

Rodzaje adresowania 

 

Natychmiastowe 

 

Bezpośrednie 

 

Pośrednie 

Przez rejestr bazowy 

Przez rejestr bazowy i przemieszczenie 

Przez rejestr indeksowy 

Przez rejestr indeksowy i przemieszczenie 

Przez rejestr bazowy, indeksowy i przemieszczenie 

 

Łańcuchowe 

 

 

background image