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
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
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
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
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.
o
Każda instrukcja ma tylko jeden argument docelowy
o
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.
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.
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:
o
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
o
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.
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
1
Adresowania bezpośredniego rejestru
danych
D0 := D1
MOVE D1, D0
2
Adresowania bezpośredniego rejestru
adresowego
D0 := A1
MOVE A1, D0
3
Adresowania pośredniego rejestrem
adresowym
D0 := (A1)
MOVE (A1), D0
4
Adresowania pośredniego rejestrem
adresowym z postinkrementacją
D0 := (A1)
A1:= A1 + N; N=1,2,4
MOVE (A1)+, D0
5
Adresowania pośredniego rejestrem
adresowym z predekrementacją
A1:= A1 - N;
N=1,2,4
D0 := (A1) MOVE -
(A1), D0
6
Adresowania pośredniego rejestrem
adresowym z przesunięciem
D0 := (A1+4)
MOVE 4(A1), D0
7
Adresowania pośredniego licznikiem
programu z przesunieciem
D0 := (PC+4) MOVE 4(PC), D0
Lp. Nazwa trybu
Działanie
Przykład
8
Adresowania pośredniego rejestrem
adresowym z indeksem
D0 := (A1+4) +
(D1)
MOVE
4(A1,D1.L), D0
9
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
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.
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
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,
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:
o
Dostępna pełna lista rozkazów,
o
Rozkazy mogą przyjmować większą liczbę parametrów,
o
Program złożony z instrukcji ARM działa szybciej,
o
Rozmiar programu jest większy.
Tryb Thumb – rozkazy zakodowane na 16 bitach:
o
Program wykonywany jest wolniej ze względu na konieczność konwersji każdej instrukcji do pełnej instrukcji
ARM przed jej wykonaniem,
o
Rozmiar programu jest mniejszy.
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.
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
1
Pobranie
2
Dekodowanie
Pobranie
3
Wykonanie
Dekodowanie
Pobranie
4
Wykonanie
Dekodowanie
5
Wykonanie
DSP - Procesor TMS320C50
Typowy system cyfrowego przetwarzania sygnałów (DSP – Digital Signal Processing) – budowa:
Procesor – układ scalony DSP
o
CPU – Central Processing Unit
o
AAU – Auxiliary Arithmeric Unit
o
SP – Serial Ports
o
IM – Internal Memory
Pamięć zewnętrzna (w architekturze harwardzkiej pamięć programu i
pamięć danych
Porty komunikacji
o
Szeregowy (np. modem)
o
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
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:
o
Wykonuje mnożenie dwóch liczb 16-bitowych (U2) dając 32-bitowy iloczyn
o
Umożliwia filtrację sygnałów o dużej częstotliwości próbkowania (splot, korelacja)
o
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)
o
Współpracując z akumulatorem wykonuje dodawanie, odejmowanie i działania boolowskie, np. AND i OR
o
Wyniki są zapisywane z akumulatorze
Rejestr przesuwający (shifter)
o
Umożliwia skalowanie danych – poprzez przesunięcie ciągu bitów w lewo i w prawo
o
Mniej znaczące bity są wypełniane zerami
o
Pozwala na uniknięcie przepełnienia
Akumulator
o
Rejestr pamięciowy 32-bitowy
o
Współpracuje z układem mnożącym, pamięcią, ALU i rejestrem skalującym
o
Możliwy jest dostęp do części MSB (ACCH) i LSB (ACCL) akumulatora
o
Akumulator posiada bufor 32-bitowy (pamięć tymczasową)
Rejestry pomocnicze
o
AR0-AR7: pamięć pomocnicza danych lub pamięć wskaźników do danych (przy adresowaniu pośrednim)
o
Rejestry AR mogą być łatwo inkrementowane lub dekrementowane
o
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)
o
Umożliwia wykonywanie operacji logicznych bez zmiany zawartości akumulatora (np. bity rejestru stanu
mogą być zmieniane bez spowalniania obliczeń)
Rejestry stanu i sterowania
o
Rejestry stanu ST0 i ST1
o
Rejestr stanu trybu procesora (PMST)
o
Rejestr sterujący buforów kołowych (CBCR)
o
Ustawiając lub zerując bity w rejestrach można rekonfigurować procesor
Układy peryferyjne – umożliwiają współpracę z urządzeniami zewnętrznymi
Port szeregowy
o
Synchroniczny
o
Dwukierunkowy i podwójnie buforowany
o
Służy np. do współpracy z układami A/C i C/A, kodekami
Port szeregowy TDM
o
Do komunikacji między układami w systemie wieloprocesorowym
o
Obsługuje do 7 procesorów zewnętrznych
Układ czasowy
o
Programowalny
o
16-bitowy
o
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ń
o
Do współpracy procesora z wolniejszymi pamięciami zewnętrznymi (procesor może czekać 1, 2, 3 lub 7 cykli)
Porty równoległe
o
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.
Tryby adresowania:
Bezpośredni (direct)
o
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)
o
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)
o
Rejestr AR zostaje wybrany przez załadowanie jego numeru (0..7) do rejestru ARP
o
Zawartość rejestrów ARx jest obliczana przez ARAU, niezależnie od AL.
o
Instrukcja LAR ładuje żądany adres do aktualnie wskazywanego rejestru AR
o
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)
o
Instrukcja zawiera wartość operandu
Rejestrami dedykowanymi (dedicated register)
o
Istnieje 9 instrukcji, które korzystają z rejestrów dedykowanych
o
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)
o
Rejestry te są umieszczone na stronie zerowej.
o
Dostęp do nich nie wymaga modyfikacji DP
o
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)
o
Tryb adresowania użyteczny w realizacji splotu, korelacji, filtrów i do generowania sygnałów okresowych.
I
486
OGÓLNA CHARAKTERYSTYKA
Konstrukcja z roku 1989
Mikroprocesor zawierający mechanizmy wspomagające prace wielozadaniowa
Mikroprocesor 32-bitowy
Praca w trybach:
o
Rzeczywistym (ang. real)
o
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
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)
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)
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
• 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
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
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
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ł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.
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
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.
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
K
(CISC)
Tryby adresowania:
Bezpośredniego rejestru
o
Danych (1)
o
Adresowego (2)
Pośredniego
o
Rejestrem adresowym (3)
Z postinkrementacją (4)
Z predekrementacją (5)
Z przesunięciem (6)
Z indeksem (7)
o
Licznikiem programu
Z przesunięciem (8)
Z indeksem (9)
Absolutne
o
Krótkie (10)
o
Długie (11)
Natychmiastowe (proste)
o
Krótkie (12)
o
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)
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:
User
System
Supevisor
Abort
Undef
IRQ
FIQ
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.
32-bitowy adres liniowy dzielony jest na 3 części: indeks katalogu, indeks tablicy i offset.
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
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
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
o
AX – akumulator
o
BX – bazowy
o
CX – zliczający
o
DX – danych
o
SP – wskaźnik stosu
o
BP – wskaźnik bazy
o
SI – rejestr indeksowy źródła
o
DI – rejestr indeksowy przeznaczenia
Segmentowe
o
CS – programu
o
DS – danych
o
SS – stosu
o
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
o
Przez rejestr bazowy
o
Przez rejestr bazowy i przemieszczenie
o
Przez rejestr indeksowy
o
Przez rejestr indeksowy i przemieszczenie
o
Przez rejestr bazowy, indeksowy i przemieszczenie
Łańcuchowe