Materialy 2012

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

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

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.

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.

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:

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.

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

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

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:

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

background image

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

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:

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

background image

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.

background image

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.

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:

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

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)

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

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:

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

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

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.

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

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)

background image

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

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

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

background image


Wyszukiwarka

Podobne podstrony:
Farmakoterapia monitorowana materialy 2012
Część VI, Materiały 2012
Materialy 2012 farmacja V rok wyklady 3 4
teresa fraczek rozklad materialu 2012
BADANIE PRZEDMIOTOWE (1), studia, 3 rok, pediatria, materiały 2012-13
Mukowiscydoza, studia, 3 rok, pediatria, materiały 2012-13
Materialy 2012 farmacja V rok l Nieznany
chemia fizyczna cw 13, Politechnika Wrocławska inżynieria materiałowa 2012, chemia fizyczna lab
Terapia monitorowana materialy 2012
materialy 2012 2013 farmacja V rok ndl interakcje2
Ostra biegunka, studia, 3 rok, pediatria, materiały 2012-13
MBM Pytania, Politechnika Wrocławska inżynieria materiałowa 2012, MBM W Łowkis
Farmakoterapia monitorowana materialy 2012
Materialy IV Analityka 2012 Bol leki nienarkot
III - społeczeństwo 3, WOS - matura, Inne materiały, Pytania 2012

więcej podobnych podstron