WYKŁAD:
ARCHITEKTURA KOMPUTERÓW
I PROGRAMOWANIE NISKOPOZIOMOWE
prof. Adam Dąbrowski
II semestr
Literatura:
•
W. Stallings “Organizacja i architektura systemu komputerowego – projektowanie systemów, a
jego wydajność.”
•
A. Rydzewski “Mikrokomputery jednoukładowe rodziny MCS-51.”
•
P. Gałka “Podstawy programowania mikrokontrolera 8051”
•
P. Metzger “Anatomia PC – architektura komputerów zgodnych z IBM PC”
opracował Marcin Ossowski (majestic.ni@poczta.fm)
1
Mikroprocesory:
–
mikrokomputer = mikroprocesor + RAM + ROM + urządzenia we/wy,
–
mikrokontroler – nie potrebuje RAM i urządzeń we/wy, wystarczy mikroprocesor i program w
pamięci ROM. Jest to mikroprocesor, który jest przystosowany do niewielkich wymagań. Jest bez
radiatora, bo nie ma wielkich mocy (mW). Stosowany do kontroli prostych urządzeń. Nie wymaga
szybkich i dużych obliczeń,
–
procesor – liczy się moc obliczeniowa, nie rozmiar i prąd – służą do budowy PC,
–
procesory sygnałowe – urządzenia małej mocy. Przetwarzają głos lub obraz. Wykonują duże
obliczenia, długie słowa, zegar nie może być zbyt duży. Używany np. w telefonach
komórkowych. Dlatego sygnałowy, bo przetwarza sygnał.
Architektura komputerów – opis budowy systemu komputerowego, który odnosi się do atrybutów
systemu widzialnych dla programisty (organizacja jednostki arytmetyczno-logicznych (ALU), lista
rozkazów, metody organizacji pamięci i mechanizmów wejścia i wyjścia).
Organizacja komputerów – opis budowy systemu komputerowego, który odnosi się do atrybutów
niewidzialnych dla programisty (rozwiązania sprzętowe wynikające z zastosowania technologii
eletronicznej, sygnały i układy sterujące, interfejsy między komputerem a urządzeniami
peryferyjnymi).
Assembler – kompilator, język assemblera – język zrozumiały dla assemblera.
Assemblacja – przetwarzanie języka assemblera na język wewnętrzny. Deassemblacja – odwrotnie
do assemblacji.
Struktura komputera – opis wzajemnego, hierarchicznego powiązania składników systemu
komputerowego.
Algebra Boole'a
Bramka AND – operacja ma dwa sygnały wejściowe. Jeśli sygnał na wyjściu jest, to na obu
wejściach jest wysoki. Jeżeli na jednym wejściu jest niski, to wyjściu też jest niski.
X
Y
Z
0
0
0
0
1
0
1
0
0
1
1
1
Bufor – nie wnosi informacji do sygnału. Służy do tego, żeby móc dostarczyć do wielu wejść innych
układów w sposób jaknajmniej zniekształcony.
X
Z
0
0
1
1
Inwerter – tak jak bufor, ale neguje sygnał, czyli NOT.
X
Z
0
1
1
0
2
X
Y
Z
X
Z
X
Z
Bramka NAND – czyli AND + NOT (inwerter)
X
Y
Z
0
0
1
0
1
1
1
0
1
1
1
0
Bramka OR – czyli lub.
X
Y
Z
0
0
0
0
1
1
1
0
1
1
1
1
Bramka NOR – czyli OR + NOT.
X
Y
Z
0
0
1
0
1
0
1
0
0
1
1
0
Bramka EXCLUSIVE OR – XOR
X
Y
Z
0
0
0
0
1
1
1
0
1
1
1
0
Jeśli nadamy wartości to XOR może być interpretowane do arytmetyki dodawania bitów i z bramki
AND można zbudować najprostszy sumator.
Bufor trójstarowy – na wyjściu jest to samo co na wyjściu, jeżeli bramka jest włączona.
3
X
Y
Z
X
Y
Z
X
Y
Z
X
Y
Z
Działanie komputera
Komputer realizuje 4 funkcje:
–
przetwarzanie danych,
–
przechowywanie danych,
–
przenoszenie danych,
–
sterowanie.
Główne składniki strukturalne komputera:
–
procesor CPU – przetwarza dane – steruje działaniem komputera:
–
jednostka arytmetyczno-logiczna – ALU,
–
rejestry podręczne – przechowuje chilowo dane,
–
jednostka sterująca – steruje działaniem procesora,
–
połączenia (szyny) – zapewniają łączność między składnikami procesora.
–
pamięć główna – przechowuje dane,
–
urządzenia we/wy – komunikacja z użytkownikiem,
–
połączenia systemowe – zapewniają łączność między procesorem, pamięcią a urządzeniami
we/wy.
Generacje komputerów
I generacja 1946-1957, na lampach elektronowych (40 000 operacji/s)
II generacja 1958-1964, technologia dyskretnych układów tranzystorowych (200 000 operacji/s)
III generacja 1965-1970 (1 000 000 operacji/s)
IV generacja 1971-1977 zastosowanie mikroprocesorów 4- i 8-bitowych – wielka skala integracji
V generacja i dalsze 1978 + zastosowanie mikroprocesorów 16-bitowych, opracowanie PC,
mikroprocesory wielobitowe, procesory sygnałowe, system multimedialny, bardzo wielka skala
integracji.
4
środowisko
użytkowe
urządzenie do
transmisji danych
urządzenie
sterujące
urządzenie do
przechowywania danych
urządzenie do
przetwarzania danych
Procesory Intela
8080 – pierwszy na świecie mikroprocesor ogólnego przeznaczenia. Było to urządzenie 8-biotwe z
8-bitową ścieżką do pamięci. (8 bitów – za mała długość do obliczeń)
8086 – daleko potężniejsze 16-bitowe urządzenie. Poza szerszą ścieżką danych i większymi
rejestrami mikroprocesor 8086 zawiera podręczną pamięć rozkazów, która poprawia szybkość
obliczeń
80286 – stanowi rozszerzenie mikroprocesora 8086 umożliwiające adresowanie 16MB pamięci,
zamiast poprzednio 1MB
80386 – pierwsze 32-bitowe urządzenie Intela jednocześnie znaczne odnowienie linii procesorów
(komputery z tymi procesorami zaczęły konkurować pod względem wydajności ze specjalistycznymi
maszynami)
80486 – w tym mikroprocesorze wprowadzono bardziej złożoną i potężną technikę pamięci
podręcznej, a także wyrafinowane potoki rozkazów
Pentium – wraz z Pentium wprowadzono do użytku techniki superskalarne co umożliwiło
równoległe wykonywanie wielu rozkazów
P6 – procesor, który stanowi kontynuację prac nad organizacją superskalarną, którą rozpoczął
procesor Pentium, ponadto szeroko jest wykorzystywane przewidywanie (predykcja) rozgałęzień,
analiza przepływu danych
P7 – RISC – procesor o zredukowanej liście rozkazów, wykonywanie skomplikowanych obliczeń
poprzez złożenie prostych rozkazów, jest łatwiej przewidzieć szybkość obliczeń i ją zwiększyć
MIPS (millions instructions per second) – milion instrukcji na sekundę
Najwydajniejsze współczesne procesory mają ok. kilku tysięcy MIPS (np. AMD Athlon XP 2000+
ma ponad 6200 MIPS)
Liczby w postaci kodów:
–
binarnym,
–
ósemkowym, grupujemy bity po 3 począwszy od najmniej znaczącego bitu
4 010
101
¿
2
LSB less significant bit (najmniej znaczący bit)
MSB most significant bit (najbardziej znaczący bit),
–
szesnastkowy, z systemu binarnego grupujemy po 4 bity począwszy od najmniej
znaczącego bitu
1011
B
16
3
1111
F
16
2
0110
6
16
1
0010
2
16
0
hexadecymalna reprezentacja
wzrost jest logarytmiczny
A – 1010 wart 10
B – 1011 wart 11
C – 1100 wart 12
D – 1101 wart 13
E – 1110 wart 14
F – 1111 wart 15
Chaotyczne zmiany →
zmiany szumowe
Gdy na poziomie najmniej znaczącego bitu dołożymy bit to zakres nam
wzrośnie dwukrotnie.
2
n
– zakres liczby
2
3
– 3-bitowa wartość
ucho reaguje na zakres 100 decybeli
aby reprezentować barwy, 3 barwy 3*8dB=24bity
5
400
200
120
60
5
10
15
20
zakres dynamiczny
(zmienny przecinek)
zakres liniowy
(stały przecinek)
dB
Żeby wprowadzić liczby ujemne potrzeba dodatkowego bitu – bitu znaku. Rejestr dzielimy na
mantysę, cechę i bit znaku.
Binarne liczby
Mantysa
2
Cecha
Integer
111000b
← zaznaczamy, że to liczba binarna
Octal Integer226q
← liczba ósemkowa
Decimal Integer
normalnie
Hex Integer
37Ah
← oznacza, że to liczba szesnastkowa
0FFFh
FFFh ← zły zapis
Floating Point constants 1,623 e
-23
to oznacza 1,623 10
-23
character constants
'D'
stałe znakowe
character strings
“ciąg znaków”
Operatory, które nadają znak liczbie
+
–
~
← reprezentacja z U1
+
dodawanie
–
odejmowanie
^
exclusive-OR
|
OR
&
AND
*
mnożenie
/
dzielenie
%
operacja modulo (reszta z dzielenia)
W niektórych reprezentacjach stosuje się trzy liczby
1,
∅,
1
.
CSD – kod minimalizacji bitów niezerowych ← przydatne przy mnożeniu liczb
11111111=1
∅∅∅∅∅∅
1
← bit ujemny, aby te dwie liczby były sobie równe. Nie mogą
ze sobą sąsiadować dwie niezerowe bity, można je rozsunąć przez bit zerowy np.
3=11 = 10
1
← kod CSD 5=101=101 ← kod CSD
Dla arytmometru nie ma znaczenia gdzie w rejestrze jest przecinek
np. 16-bitowy rejestr
mnożenie dwóch liczb 16-bitowych daje wynik 32-bitowy, gdyby
obie były w formacie Q
∅ to wynik jest też w formacie Q∅, a
gdyby były w formacie Q15, to wynik już jest w for-macie Q30, a
potrzeba Q31 i wynik trzeba przesunąć w lewo o 1bit.
Gdy mamy zakres (-1,1) (same ułamki), to wynik też musimy otrzymać w tym zakresie.
6
MSB
LSB
to jest liczba
typu Integer
B-bitowy rejestr
zapisane w formacie Q
∅
oznacza zero bitów po przecinku
B-1
Q1
15
format
Q15
MSB
16
Znak moduł
Reprezentacja w U2
U2
znak moduł
0 0 0
0
0
0 0 1
1
1
0 1 0
2
2
0 1 1
3
3
1 0 0
-4
-0
1 0 1
-3
-1
1 1 0
-2
-2
1 1 1
-1
-3
Aby nie było przepełnień, musimy rozszerzyć zakres np. od -32 do 31 przy dodawaniu. Zakres za
każdym razem podczas dodawania trzeba rozszerzyć, a potem przeskalować do zakresu (-1,1).
Mikrokontroler ma reprezentację U2.
2
8
=256
U2 ma zakres -2
n
do 2
n
-1
np. -128 do 127
Kod BCD (Binary Coded Decimals)
Cyfry są w systemie dziesiętnym kodowane za pomocą 4 bitów jest to kod nadmiarowy, gdyż nie
wykorzystujemy szesnastu kombinacji
Istnieje
16 !
16−10!
≈2.9⋅10
10
różnych kodów BCD
Najczęściej używane jest “8421” kod, nazwa wynika z przypisania wag kolejnym pozycjom
binarnym.
190856
10
=0001
1
1001
9
0000
0
1000
8
0101
5
0110
6
Ten kod nie używa wartości powyżej dziesięciu.
Rejestr chcemy podzielić na 3 pola: pole znaku, pole wykładnika i pole mantysy.
Standard IEEE 754
N=(-1)
S
∙2
E-127
∙1.M ← część ułamkowa mantysy
255 to maksymalna potęga, czyli cecha, ale 255 jest
specjalne i można używać tylko do 254
Wybrane własności:
➔
liczba zakodowana jest na 32 bitach (4 bajtach),
➔
występuje mantysa z ukrytą jedynką,
➔
mimo, że cecha kodowana jest na 8 bitach, maksymalna wartość cechy możliwą do wykorzystania
przy kodowaniu zwykłych liczb jest 11111110
b
=254
10
, gdyż kombinacja 11111111
b
=255
10
jest
zarezerwowana dla liczb specjalnych. Oznacza to, że maksymalną liczbą od zakodowania jest:
2
254-127∙
1.1111...1
2
=2
127
∙(2-2
-23
) ≈ 3.4028∙ 10
38
7
MSB
LSB
S b
n-1
b
1
b
0
sign
znak
. . .
MSB
LSB
b
n
b
1
b
0
. . .
na tej pozycji
jest znak liczby
reprezentacja
liczby ujemnej
2
2
2
1
2
0
liczby
3-bitowe
tu się liczby
załamują
S
znak 1
cecha 8
mantysa 23
E
M
cecha
liczby
X
=−1
s
⋅moduł=−1
s
∑
k
=0
n
−1
b
k
⋅2
k
X
=2
n
⋅−b
n
∑
k
=0
n
−1
b
k
⋅2
k
Najmniejsza liczba to –3.4028 ∙10
38
.
ZAKRES UNORMOWANY
E=11111111
2
, M ≠ 0 Not a number, np. wynik dzielenia przez zero
E=11111111
2
, M = 0
+ gdy bit znaku dodatni
– gdy bit znaku ujemny
0<E<11111111
2
N=(-1)
S
∙2
E-127
∙1.M, liczba unormowana
E=0, M ≠ 0
N=(-1)
S
∙ 2
-126
∙ 0.M, czyli część ułamkowa
liczba nieunormowana, wprowadzona w celu
zwiększenia precyzji kodowania liczb w
pobliżu zera
E=0, M = 0
N=0
ZAKRES NIEUNORMOWANY
Standard IEEE 754 – podglądanie reprezentacji.
Standard ten jest używany w typie float w C++.
void podejrzyj(float input)
{
char string[sizeof(float)];
1
float *input_pointer=&input;
2
memcpy(string,input_pointer,sizeof(float));
3
for (char byte=sizeof(float)-1;byte>-0;byte--)
4
for (char bit=0;bit<8;bit++)
cout << int ((string[byte]>>(7-bit))&1);
}
1 sizeof(nazwa typu) – funkcja zwracająca w bajtach rozmiar podanego typu
2 ma wskazywać na zmienną input
3 memcpy – funkcja kopiująca
4 musimy uwzględnić, że bajty są przechowywane w odwrotnej kolejności
8
2-2
-
23
M
2
1
0
-1
-2
brakuje reprezentacji zera
zakres
mantysy
1-2
-23
M
2
1
0
-1
-2
gdy zmienna bit ma wartość 0, to
pobieramy najbardziej znaczący bit
TEXAS INSTRUMENTS tj. Floating-Point Format
value = S ∙
s
∙F ∙2
E
Gdy s=1 to
s
=0. Jeśli F=0 to mantysa zaczyna się od -2 ≤ M ≤ -1-12
23
. S=0 to mantysa=1.
TMS (Texas Instruments).
Wykładnik od -128 do 127, liczby z cechą -128 to jest
zero.
Positive Number Example
value = S ∙
s
∙F ∙2
E
0
0000
2
0010
4
0100
0
0000
0 0 0
Architecture of IAS Computer
Komputer von Neumanna. Jest tu wspólna magistrala dla danych i instrukcji, mnoży się przez
kolejne dodawania.
Architektura harwardzka
Osobne magistrale dla danych i instrukcji.
9
S
E
F
8 bitów 1bit 23 bity
exponent sign fraction
2-2
-
23
M
2
1
0
-1
-2
-1-2
-23
S
E
F
8 bitów 1bit 23 bity
exponent sign fraction
bit znaku
main
memory
input
output
equipment
Arithmetic Logic Unit
program control unit
PC
PROG
MEM
IR
ACU
DATA
MEM
EXU
Program path
tor programu
Data path
tor danych
Address Computation Unit
Pamięć danych
program counter
(licznik rozkazów)
Instruction Register
(rejestr rozkazów) tu
dekoduje się rozkazy
Cechy procesorów sygnałowych multimedialnych:
–
posiadają układ mnożący,
–
to co przechowuje akumulator może zostać użyte jako operand do operacji (np
ACC:=ACC+X*Y), może to być przydatne np. do obliczenia iloczynu skalarnego dwóch
wektorów:
x
=
[
x
1
x
2
...
x
n
]
y
=
[
y
1
y
2
...
y
n
]
〈 x , y〉=x⋅y=
∑
n
=1
n
x
n
y
n
Multiunit architecture
Organizacja operacji arytmetyczno-logicznych
W procesorze sygnałowym nie możemy pozwolić na zbyt duże
częstotliwości zegara, bo procesor potrzebuje więcej mocy i bardziej się
nagrzewa i trzeba wtedy zamontować układ chłodzący. Na takie coś
przenośne urządzenia nie mogą sobie pozwolić, dlatego procesor
sygnałowy musi być optymalnie zbudowany.
RISC – procesor sygnałowy służy wyłącznie do przetwarzania sygnałów,
ciągle wykonując te same operacje dla każdej próbki sygnału, dlatego
można przewidzieć ile będzie trwało każde pobranie sygnału. Generalnie
każdy rozkaz zajmuje określoną ilość cyklów zegarowych – pracuje
regularnie.
W normalnym procesorze nie wiemy ile dana operacja zajmie czasu, bo
procesor robi różne rzeczy, a poza tym jego praca jest przerywana, itd.
Układ obliczania adresu
Typowy filtr cyfrowy rejestruje próbkę na wejściu, zapamiętuje ją w kolejnych komórkach pamięci,
działa do zapełnienia bufora np. 200 próbek, gdyby było adresowanie było zwiększanie o 1 to
zwiększanie adresu w pewnym momencie do adresu 00...., wtedy marnotrawstwo np. pamięci w
kilku tys. zmarnujemy całą bo chcemy zapisać 100 komórek.
Możliwość adresowania liczbą modulo
Początek adresowania → gdzieś w rejestrze zapisu.
10
MPY
ACC
ALU
A-reg
B-reg
modulo
bitrev
addr
Address
Arithmetic Unit
tu wchodzą
dane
zwiększa adres
o pewien skok
Szybka transformacja Fouriera (FFT) jest najczęściej stosowana (analiza widmowa, w dziedzinie
częstotliwości, itp.)
Dyskretna transformacja Fouriera jest to transformacja ciągłości w próbce ta transformacja ma
szybkie algorytmy, gdy próbki są w kolejności naturalnej to wyniki są przemieszane. Dokonujemy
decymacji pobierając co drugą próbkę.
Co powoduje przemieszanie Fouriera
0 000 | 0 000
1 001 | 4 100
2 010 | 2 010
3 011 | 6 110
4 100 | 1 001
5 101 | 5 101
6 110 | 3 011
7 111 | 7 111
odbicie w lustrze, czyli jest układ do odwracania bitów
PROGRAM COUNTER (PC)
Serce procesora do obliczeń multimedialnych
11
RESET
PC
INC
INTERRUPT
ADDRESS
STACK
PROGRAM
MEMORY
IR
aby móc wrócić
do zerowego
adresu
rejestr który
zapamiętuje
inkrement
stos aby można było
odkładać rozkazy, aby
obsługiwać przerwania
rejestr A
rejestr B
układ
mnożący
akumulator
Jeśli będziemy przesuwać mantysę w mnożeniu zmiennoprzecinkowym to w końcu rejestr będzie za
mały i wtedy coś obetniemy.
ZAGADNIENIA PODSTAWOWE
Omówienie pamięci:
Podstawowe własności pamięci:
➔
lokalizacja:
- procesor,
- wewnętrzna (główna),
- zewnętrzna,
➔
pojemność:
- rozmiar słowa,
- liczba słów,
➔
budowa fizyczna:
- półprzewodnikowa,
- magnetyczna,
➔
własności fizyczne,
- ulotność,
- wymazywalność,
➔
jednostka transferu:
słowo,
blok,
➔
sposób dostępu:
- sekwencyjny,
- bezpośredni,
- swobodny,
- skojarzeniowy,
➔
wydajność:
- czas dostępu,
- czas cyklu,
- szybkość transferu.
Rodzaje pamięci półprzewodnikowych:
rodzaj
opis
wymazywalna
ulotność
RAM
pamięć o dostępie swobodnym
elektrycznie
✔
ROM
pamięć stała
–
–
PROM
programowalna pamięć stała
–
–
EPROM
wymazywalna i programowalna pamięć stała
światło UV
–
EEPROM
elektrycznie wymazywalna i programowalna
pamięć stała
elektrycznie
–
Pamięci RAM dzielą się na:
–
DRAM (dynamic RAM) – dynamiczna pamięć RAM, wymaga okresowego odświeżania, po
wyłączeniu zasilania traci dane,
–
SRAM (static RAM) – statyczna pamięć RAM, nie wymaga, okresowego odświeżania, a po
wyłączeniu zasilania traci dane.
Jednostka transferu – liczba bitów jednocześnie zapisanych do pamięci lub odczytywanych
Jednostka adresowalna – liczba bitów obiektu reprezentowanego przez ten sam adres. Jeśli przez A
oznaczymy długość adresu w bitach to liczba jednostek adresowalnych w danej pamięci = 2
A
.
Słowo – obiekt o rozmiarze jednostki adresowalnej lub o rozmiarze rejestru procesora.
Dostęp sekwencyjny – dostęp do jednostek pamięci jest możliwy w określonej sekwencji liniowej.
Mechanizm odczytujący i zapisujący musi przenosić się od pozycji bieżącej do żądanej
przepuszczając i odrzucając pozostałe jednostki. Czas dostępu jest zmienny.
Dostęp bezpośredni – poszczególne bloki mają unikatowe adresy wewn. bloku poszukiwanie
docelowej jednostki odbywa się sekwencyjnie
Dostęp swobodny – np. pamięć RAM.
12
HIERARCHIA PAMIĘCI
- rośnie czas dostępu,
- mniejszy czas dostępu,
- maleje częstotliwość,
- większy koszt na bit,
- rośnie pojemność,
- rośnie częstotliwość,
- maleje koszt na bit,
- maleje pojemność.
Większa pojemność – większy czas dostępu.
Mikroprocesor 8086 – 16 bitowy tzn. jego szyna wewnętrzna, pamięć wewnętrzna przeznaczona do
przechowywania argumentów i wyników instrukcji jest podzielona na 16-bitowe elementy.
Adresowanie pamięci w mikroprocesorze 8086
Moduły pamięci są połączone z mikroprocesorem za pomocą magistral:
–
magistrala adresowa służy do przesyłania przez procesor do modułu pamięci adresu, będącego
numerem wybranej komórki pamięci,
–
zawartość komórki przesyła się dwukierunkowo za pomocą magistrali danych.
Przestrzeń adresowa procesora 8086 wynosi 2
20
bajtów = 1 048 576 B = 1 MB
Do wskazania jednej dowolnej komórki pamięci trzeba posłużyć się co najmniej dwoma rejestrami
jednocześnie.
20-bitowy adres fizyczny jest obliczany na podstawie dwóch liczb 16-bitowych:
–
numer segmentu,
–
przesunięcie w obrębie segmentu (offset) zgodnie ze wzorem:
adres fizyczny = 10
16
* segment + offset,
jeżeli w wyniku powyższej operacji adres będzie 21-bitowy nastąpi obcięcie najbardziej
znaczącego bitu, zatem adresy tworzą pierścień.
W procesorach 80286 i nowszych, o magistralach większych niż 20-bitowych nie jest ignorowany
21-szy bit obliczonego adresu fizycznego. Adresując zatem w trybie segment i offset mamy do
dyspozycji następującą liczbę bajtów:
FFFF0 + FFFF + 1 = 10FFFF + 1
Odwrotne przechowywanie
W strukturach zajmujących kilka bajtów pamięci poszczególne bajty są przechowywane w odwrotnej
kolejności do kierunku adresowania pamięcią np. long int – 4 bajty
N – adres zmiennej, rozumiemy jako numer najniżej położonego w pamięci bajtu, należącego do
danej struktury. Tutaj najniżej ulokowany w pamięci bajt jest najmniej znaczącym bajtem.
Pamięć podręczna
Stosuje się w celu uzyskania szybkości zbliżonych do najszybszych pamięci, przy jednoczesnym
uzyskaniu danego rozmiaru pamięci.
Jeśli procesor zamierza odczytać słowo w pamięci, następnie sprawdzenie czy słowo znajduje sięw
pamięci podręcznej. Jeżeli nie, pewien blok danych, zawierający żądane słowo zostaje pobrany w
13
rejestry
pamięć podręczna
pamięć główna
dyskowa pamięć podręczna
pamięć dyskowa
pamięć taśmowa
dysk optyczny
31 24 23 16 15
8 7
0
MSB
LS
B
N
N+1
N+2
N+3
7
0 15
823 16 31 24
pamięci głównej do podręcznej, a następnie słowo to zostaje
udostępnione ze względu na lokalność, następnie odczytanie.
Pamięć podręczna zrealizowana w poziomie bloku.
Lokalność:
Grupowanie się odwołań do pamięci w sensie podobieństwa ich
lokalizacji w tej pamięci. Główne przyczyny tego zjawiska są
następujące:
Migotanie pamięci → pamięć wciąż ulega zmianom co do zawartości.
Aby mieć zysk z istnienia POP musimy zapewnić lokalność. Niech
pamięć główna składa się z 2
n
słów o unikalnych n-bitowych adresach.
Podzielimy ją na równych rozmiarów bloki zawierające k-słów.
Bloków takich będzie zatem M=2
n
/K. Niech pamięć podręczna składa się C wierszy, zawierających
C słów, przy czym C << M. Jedną z metod odwzorowania pamięci głównej w pamięci podręcznej
jest
ODWZOROWANIE BEZPOŚREDNIE
Jest ono określone następująco
C = M mod C
Dla danego wzoru istnieje stała lokalizacja w pamięci podręcznej. Jeśli procesor będzie się
odwoływał do słów w różnych blokach przypisanych do tego samego wiersza, bloki te będą ciągle
przepisywane do pamięci podręcznej.
ODWZOROWANIE SKOJARZEIOWE
umożliwia załadowanie danego bloku z pamięci głównej do dowolnego wiersza pamięci podręcznej.
•
LRU (least recently used – najmniej ostatnio używany), należy zastąpić w pamięci ten blok, który
pozostawał w pamięci najdłużej bez odniesień. Wiersze pamięci podręcznej zawierają bit
wykorzystania (USE)
•
LFU (least frequently used – najrzadziej używany), należy zastąpić blok, do którego wystąpiło
najmniej odniesień (liczniki odwołań),
•
FIFO (fisrt in first out – pierwszy wchodzi pierwszy wychodzi), czyli ten, który był najdłużej
•
losowy wybór bloku, który należy zastąpić.
Działanie pamięci dwupoziomowych
Pamięć wysokiego poziomu (M1) – pamięć podręczna do tymczasowego przechowywania danych,
mniejsza, szybsza i o większym koszcie na bit niż pamięć niskiego poziomu (M2). Gdy wystąpi
odniesienie do pamięci, najpierw poszukuje się danych w pamięci M1. Jeśli się uda jest szybki
dostęp. Jeśli nie, kopiujemy dany blok do M1 po czym udostępniamy.
Średni czas dostępu do obiektu definiujemy
Τ
S
= H∙Τ
1
+ (1-H)∙(Τ
1
+Τ
2
)
Τ
1
– czas dostępu do pamięci M
1
Τ
2
– czas dostępu do pamięci M
2
H – współczynnik trafień, prawdopodobieństwo, że
poszukiwane dane znajdą się w pamięci podręcznej M1
Im większe H, tym Τ jest bliższe Τ
1
.
T
1
T
S
=
1
1
1−H ⋅T
2
/T
1
Średni koszt na bit pamięci dwupoziomowej
14
CPU
PAMIĘĆ
PODRĘCZNA
PAMIĘĆ
GŁÓWNA
przesyłanie słów
przesyłanie bloków
0 0,2 0,4 0,6 0,8 1,0
10
-3
10
-2
10
-1
10
0
Τ
2
/Τ
1
=1
Τ
2
/Τ
1
=10
Τ
2
/Τ
1
=100
Τ
2
/Τ
1
=1000
współczynnik
trafień
C
S
=
C
1
S
1
C
2
S
2
S
1
S
2
C
1
– koszt na bit pamięci M1
C
2
– koszt na bit pamięci M2
S
1
– rozmiar M1
S
2
– rozmiar M2
Oznaczamy
y=C
S
/C
2
x=S
2
/S
1
wtedy
y
=
C
1
C
2
⋅
1
1
x
1
1
y
−1
Jeżeli program nie jest lokalny to korzystamy z pamięci M1 i M2 na chybił trafił.
Mete\ody ochrony danych w pamięciach:
•
bity korekcyjne,
•
kody detekcyjne → wykrywają błąd,
•
kody korekcyjne → korekta błędu.
Kod wykrywający:
–
pojedynczy błąd – Single Error Detection (SED),
–
podwójny błąd – Double Error Detection (DED).
Kod korekcyjny – Single Error Correcting (SEC).
Gdy wystąpią dwa błędy, jeden trzeba poprawić jeszcze raz.
Uruchomienie komputera
•
wyzerowanie pamięci wewnętrznej CPU,
•
skok pod adres F000:0000
16
, jest to adres przechowywanego w pamięci ROM programu BIOS
(Basic Input Output System), czyli podstawowego systemu wejścia/wyjścia,
•
BIOS przeprowadza kontrolę sprzętu POST (Power On Self Test), w razie wystąpienia błędów
wysyła komunikat w postaci tekstu na ekranie lub sygnałów dźwiękowych. Pojedynczy krótki
sygnał dźwiękowy oznacza pomyślne przejście przez test do obszaru BDA (BIOS Data Area)
wpisane zostaje 256 bajtów informacji o zainstalowanych urządzeniach. Obszar ten o adresie
0040:0000
16
jest później wykorzystywany przez system operacyjny,
•
BIOS próbuje odczytać na nośnikach rekord ładowania
RAID (redundant array of independent disc) – nadmiarowa struktura niezależnych dysków
Podział dysków:
•
CAV (constant angular velocity) – stała prędkość kątowa,
–
dyski magnetyczne obracają się ze stałą prędkością kątową,
–
dyski podzieloną są na ścieżki i sektory,
•
CLV (constant linear velocity) – stała prędkość liniowa,
–
dyski optyczne, CD-ROM-y, prędkość jest zmienna, ale stała jako prędkość liniowa,
–
jest jedna ścieżka (spirala) podzielona na sektory, odstęp między ścieżkami wynosi 1,6 μm,
zapisywalna szerokość płyty CD-ROM = 32 590 μm podzielona przez odstęp ścieżek daje
2034 ścieżek, ta jedna spirala ma długość około 5,27 km, czas zapisu całej ścieżki 73,2,
gdyby odczytywać z szybkością 176,4 KB/s, to pojemność płyty wynosi 774,57 MB.
Dane na płycie CD-ROM są zapisane w postaci ciągu bloków. Blok składa się następujących pól:
–
sync (synchronizacja): pole identyfikacyjne początek bloku składa się bajtu złożonego z
samych zer, 10 bajtów jedynkowych i znowu jednego zerowego,
15
–
header (nagłówek): zawiera adres bloku i bajt trybu,
tryb 0 oznacza czyste pole danych,
tryb 1 wykorzystanie kodu korekcyjnego i 2048 bajtów danych,
tryb 2 – 2338 bajtów kodu korekcyjnego,
–
data (dane): dane użytkownika,
–
auxiliary (pomocnicze): dodatkowe dane użytkownika w trybie 2.
Rodzaje dysków optycznych:
–
CD – dysk kompaktowy tylko do odczytu niewymazywalny do informacji audio w postaci
cyfrowej, w systemie znormalizowanym używane są dyski o średnicy 12 cm, przy czym czas
ciągłego odtwarzania przekracza 60 minut,
–
CD-ROM – pamięć stała na dysku kompaktowym niewymazywalnym. Dysk służący do
przechowywania danych. W systemie znormalizowanym używane są dyski o średnicy 12 cm i
pojemność ponad 550 MB,
–
CD-1 – norma określająca sposoby umieszczania na płycie informacji audio, video,
graficznych i tekstowych oraz programów komputerowych na CD-ROM,
–
DVI (digital video interface) – cyfrowy dysk video.
–
WORM (write once read memory) – jednokrotny zapis, wielokrotny odczyt, na którym zapis
jest łatwiejszy niż na CD-ROM co umożliwia dostępność unikalnych dysków w jednym
egzemplarzu, najpopularniejszy rozmiar 5,25 cala i pojemność od 200-280 MB.
Cechy charakterystyczne dysków CAV:
–
ruch głowicy,
głowica może myć nieruchoma (jedna na jedną ścieżkę),
może być też ruchoma,
–
wykorzystanie talerzy: jednostronne lub dwustronne,
–
liczba talerzy (na wspólnej osi) – może być jeden talerz, lub może być wiele,
–
mechanizmy odczytu głowicy:
- kontaktowy (floppy),
- ustalona przerwa,
- przerwa aerodynamiczna (Winchester),
Cechy RAID-u:
1. RAID – jest zespołem fizycznie istniejących napędów dyskowych widzianych przez użytkownika
(system operacyjny) jako pojedynczy napęd logiczny.
2. Dane są rozproszone w tych napędach, tworzących tablicę.
3. Redundancyjna pojemność dysków jest wykorzystywana do przechowywania informacji o
parzystości, co gwarantuje odzyskiwanie danych w przypadku uszkodzenia dysku.
Szczegółowe rozwiązania dotyczą 2. i 3. cechy są różne dla różnych poziomów RAID. Poziom
RAID 0 nie wspiera 3 cechy.
RAID zaproponowano w celu zamknięcia poszerzającej się luki między szybkimi procesorami, a
stosunkowo wolnymi elektromechanicznymi napędami dysków. Strategia ta polega na zastąpieniu
dysku o wielkiej pojemności wieloma napędami o mniejszej pojemności i na rozpraszaniu danych,
które umożliwia jednoczesny dostęp do danych w wielu napędach, dzięki czemu uzyskuje się
zwiększoną wydajność we/wy i łatwiejsze zwiększenie pojemności.
16
Poziomy RAID
kategoria
poziom
opis
częstość zgłaszania
żądania we-wy
(odczyt/zapis)
paskowanie
0
bez redundancji
duże paski - doskonała
kopiowanie lustrzane
1
lustrzane kopiowanie danych (na
kilku dyskach te same dane)
dobra/dostateczna
dostęp równoległy
2
3
redundancja poprzez kod Hemminga,
parzystość na poziomie bitów
dostęp niezależny
4
5
parzystość na poziomie bloków
rozproszenie parzystości na poziomie
bloków
doskonała
Klasyfikacja przykładowych urządzeń we/wy
rodzaj
partner
szybk. transferu [KB/s]
klawiatura we
człowiek
0,01
mysz
we
człowiek
0,02
we głosowe we
człowiek
0,02
skaner
we
człowiek
200
wy. głosowe wy
człowiek
0,6
dysk opt.
pamięć
komputer
2 000
dysk magn. pamięć
komputer
2 000
ASCII kod – amerykański standard do przesyłania informacji
Sposoby działania urządzeń we/wy:
brak przerwań
zastosowanie przerwań
programowane
we/wy sterowane
we/wy
przerwaniami
bezpośredni dostęp do pamięci (DMA) – direct memory
acces
Brak przerwań
Zastosowanie przerwań
Tranfer we/we – pamięć
poprzez procesor bezpośredni
transfer we/wy – pamięć (z
pominięciem działania
procesor)
Programowane we/wy
we/wy sterowane przerwaniami,
bezpośredni dostęp do pamięci
(DMA) – direct memory acces
17
moduł we/wy
dopasowuje szybkości
linia adresowa
linia danych
linia systemowa
m
ag
ist
ra
la
sy
ste
m
ow
a
układ
logiczny
sterowania
bufor
przetworniki
sygnały
sterowania
z modułu
we/wy
syngały
stanu
do modułu
we/wy
dane do
modułu we/wy
specyfikacje dla urządzenia
kierowana do otoczenia
Sposoby realizacji urządzeń we/wy:
➔
we/wy programowane
- procesor steruje operacje we/wy (rozpoznaje stan) wysyła rozkazy odczytu i zapisu,
- procesor po wydaniu rozkazu modułowi we/wy musi czekać na zakończenie tej operacji,
zazwyczaj procesor jest szybszy od modułu we/wy, czyli marnują się cykle procesora,
➔
we/wy sterowane przerwaniami
procesor nie czeka na zakończenie operacji we/wy i zajmuje się czymś innym,
➔
bezpośredni dostęp do pamięci.
Przerwania wielokrotne:
➔
blokowanie przerwań (mało efektywne) jest blokada przerwań, bo jedno jest wykonywane, a inne
czekają,
➔
zagnieżdżanie przerwań, urządzeniom nadaje się priorytety przerwań, przerwanie o wyższym
priorytecie ma pierwszeństwo, taki priorytet mają urządzenia, które czekając mogłyby stracić
dane.
Obsługa przerwań:
1) zapisuje wartości rejestrów procesora i licznika rozkazów na stos,
2) ustaw licznik rozkazów na procedurę obsługi przerwania,
3) po zakończeniu procedury zdjęcie ze stosu wartości rejestrów i przywrócenie ich wartości, powrót
do przerwanych zadań.
1 cykl rozkazowy składa się z 12-stu cykli zegarowych.
Przerwania wielokrotne, typowo dana ma 13 bitów, a 3 bity to jest rozpoznanie jakie rodzaju adres
(jakie adresowanie), gdy dane są od razu w kodzie rozkazu to adresowanie natychmiastowe, gdy
dana jest jest w rejestrze to adresowanie rejestrowe, gdy dane w pamięci podręcznej w rozkazie jest
jej adres to mamy adresowanie bezpośrednie, gdy na stronie pamięci jest rozkaz, a w rejestrze jest
adres do tej strony, to jest to adresowanie pośrednia, w rejestrze mamy zapisany adres do danej.
Segmentacja
Zazwyczaj są dwie dane i druga dana jest zapisana w akumulatorze.
Generalnie procesory dzielimy na 4 rodzaje:
•
SISD – (single instruction single data), na danej jest wykonany jeden rozkaz, przechodzimy do
kolejnej,
•
SIMD – (single instruction multiple data), pojedyncza instrukcja służy do wykonania operacji na
wielu danych np. obróbka obrazu,
•
MISD – (multiple instructions single data), nietypowe,
•
MIMD – (multiple instructions multiple data).
Struktury połączeń
Komputer jest zestawem zespołów i modułów. Pamięć i urządzenia we/wy muszą się komunikować,
struktura połączeń jest najczęściej oparta na tzw. magistralach. Pamięć to moduł składający się z N
słów o jednostkowej długości każde.
18
pobieranie
rozkazu
dekodowanie
rozkazu
obliczanie
adresu
argumentu
pobieranie
argumentu
operacje
na danych
obliczenie
adresu
argumentu
zapisanie
argumentu
sprawdzenie
przerwań
przerwania
obliczanie
adresu
rozkazu
wiele
rozkazów
następny
rozkaz
brak
przerwań
łańcuch
lub wektor
Pamięć wykonuje dwie operacje: czytania i zapisywania.
Połączenie magistralowe. Magistrala składa się z wielu linii komunikacyjnych, a każdą mogą być
przesyłane dwa stany binarne 0 i 1. Magistrala systemowa składa się ze 100 oddzielnych linii:
–
linii danych,
–
linii adresu,
–
linii sterowania,
–
linii zasilania.
Magistrala jest wspólnym nośnikiem transmisji między urządzeniami realizowanym poprzez system
łączących ich linii komunikacyjnych.
Szyna – zestaw równoległych przewodów.
Magistrala to zestaw równoległych przewodów wraz z mechanizmami sterowania tymi przewodami.
DMA – Direct Memory Access – wymiana danych pomiędzy urządzeniami we/wy z pamięcią bez
pośrednictwa procesora.
Hierarchiczne struktury wielomagistralowe
Przyczyny zmniejszania wydajności magistrali:
–
opóźnienie sygnałów związane z dołączeniem
wielu urządzeń,
–
urządzenia żądają przesyłania danych z
szybkością zbliżoną do szybkości magistrali.
Karty graficzne łączone są przy pomocy magistrali
szybkiego przesyłania.
Rodzaje magistral.
Rodzaje linii:
–
linie specjalistyczne (dedicated),
–
linie multiplexowe, do różnych celów, i adres, i
dane mogą być przesyłane.
Metody arbitrażu:
19
sygnał
pamięć
odczyt
zapis
adres
szyna danych
do zapisu
szyna danych
do odczytu
Moduł
we/wy
M-portów
dane wewnętrzne
dane zewnętrzne
sygnały przerwań
szyna danych
szyna wejścia
danych zewn.
Procesor
rozkazy
dane
sygnały
przerwań
sygnały
sterujące
dane
CPU
pamięć
podręczna
lokalny
sterownik
we/wy
RAM
SCSI
Sieć
interfejs
szyny
rozszerzeń
magistrala lokalna
magistrala systemowa
szyna rozszerzeń
–
scentralizowany, jeden moduł arbitrażu steruje całą magistralą,
–
rozproszony.
Metody koordynacji:
–
synchroniczna,
–
asynchroniczna,
–
mostek synchronizacyjny.
Magistrala PCI (Peripheral Component Interconnect) – system urządzeń preyferyjnych
Szerokopasmowa tzw. międzypiętrowa łącząca cechy systemowej i innych magistral do 64 linii
danych.
Własności:
–
wykorzystuje koordynację synchroniczną,
–
posiada arbitraż specjalizowany, arbitraż może odbywać się w trakcie przesyłania na jednostkę
nadrzędną danych, zatem arbitraż nie powoduje utraty cykli magistrali,
–
zastosowanie mostka między procesorem a magistralą.
W podstawowej wersji ma 50 linii.
Magistrala może być konfigurowana jako 32- lub 64-bitowa. Podział linii sygnałowych:
–
wyprowadzenia systemowe (wyprowadzenia zegara i przywracania – reset),
–
wyprowadzenia adresu i danych, 32 linii multipleksowanych,
–
wyprowadzenia sterowania interfejsem,
–
wyprowadzenia arbitrażowe w przeciwieństwie do pozostałych magistral, PCI nie są liniami
wspólnymi,
–
wyprowadzenia informujące o błędach, informacje o parzystościach i inne,
–
wyprowadzenia JTAG (standard urządzenia, aby ono samo się monitorowało i wysyłało inf. o
swoim stanie), linie te umożliwiają realizację procedur testowania określonych w normie
IEEE 1491.
Rozkazy PCI. Działanie magistrali to transakcja między inicjatorem (modułem nadrzędnym), a
celem (modułem podrzędnym). Gdy inicjator domaga się sterowania magistralą określa typ
transakcji, która ma być prowadzona. Podczas fazy adresu transakcji do sygnalizowania typu
transakcji są używane linie BE. Rozkazy są następujące:
–
potwierdzenie przerwania,
–
cykl specjalny,
–
odczyt I/O,
–
zapis I/O,
–
odczyt pamięci,
–
linia odczytu pamięci,
–
zwielokrotniony odczyt pamięci,
–
zapis w pamięci,
–
zapis w pamięci i unieważnienie,
–
odczyt konfiguracji,
–
zapis konfiguracji,
–
cykl podwójnego adresu.
“Potwierdzenie przerwania” jest rozkazem odczytu przeznaczonym dla urządzenia, które działa jako
sterownik przerwań na magistrali PCI.
Arbitraż.
Magistrala PCI wykorzystuje scentralizowany rodzaj arbitrażu, w którym każdy moduł ma
przypisaną unikatową sygnaturę zapotrzebowania (REQ) i udostępniania (GNT).
20
SCSI (Small Computer System Interface)
–
każde z urządzeń ma wielopunktowe łącze I/O,
–
urządzenia są połączone łańcuchowo, jedno z zakończeń łańcucha jest podłączone do komputera,
–
urządzenia mogą wymieniać dane między sobą i komputerem.
Wymiana informacji przez magistralę SCSI odbywa się między inicjatorem (np. komputer) i
adresatem, jednym podłączonych urządzeń.
Wymiany zachodzą w ustalonej sekwencji faz magistrali.
Linie sygnałowe pracują z szybkością 5 MB/s, jest ich 18:
–
9 linii danych:
–
8 właściwych linii danych,
–
1 linia parzystości,
–
9 linii sterowania.
Magistrala P1394
–
wykorzystano transmisję szeregową za pomocą pakietów:
–
asynchroniczną, o zmiennych długościach nagłówek pakietów zawiera informację o
nadawcy, odbiorcy i długości, po jego odebraniu wysyła się potwierdzenie,
–
synchroniczną – o ustalonych długościach, po odebraniu nie wysyła się potwierdzenia,
–
urządzenia mogą być dołączone bez wyłączonego zasilania i ponownego konfigurowania
systemu, automatycznie nadaje adresy urządzeniom,
–
urządzenia mogą być połączone w mieszaną strukturę łańcuchowo-drzewiastą,
–
arbitrem jest urządzenie stanowiące korzeń drzewa 0 przyjmuje ona zgłoszenia zapotrzebowania
na magistralę od innych urządzeń, urządzenia o krótszej ścieżce do korzenia otrzymuje wyższy
priorytet, a gdy ścieżki równe to urządzenie o niższym adresie.
Przebieg sygnałów. Podoperacje to proces dostarczenia jednego pakietu. Fazy podoperacji:
–
arbitraż,
–
transmisja nagłówka pakietu,
–
transmisja bloku danych pakietu,
–
przerwa na potwierdzenie.
Adresowanie natychmiastowe
Immediate Addressing Example
LDI
1223h,R0 – umieść daną 1223 (hex) w rejestrze R0
Adresowanie bezpośrednie
Pamięć podzielona na 512 stron, a każda strona ma 128 słów, czyli adres
jest 16-bitowy.
21
load integer R0 1223h
11bitów 5bitów 16bitów
128
word
page
51
2 s
tro
n
15 9 bitów 6 7 bitów 0
D
P
dma
Data Page Pointer
wskaźnik na stronę pamięci
za pomocą 9 bitów można
zaadresować 512 stron
data memory address
adres pamięci danych
(fragment adresu na danej stronie)
Direct addressing example
Instruction
Program memory
DP
LDP #2
ADD 56h
LDI
@adr, R0
Direct addressing
Przed ADDI @0BCDh,R7
(dodaj wartość integer spod adresu @... do rejestru R7, rejestr ten działa jak akumulator)
DP=108Ah
R7=11h
Data at 10BA BCDEh = 1234 5678h
Po instrukcji
DP=108Ah
R7=12345689h
Data at 10BA BCDEh = 12345678h
22
szyna danych
(Data Bus (16))
DP(9)
za pomocą szyny
ładujemy DP
z kodu instrukcji ładujemy dma
data memory address
dit data
9
7
16
15 8 7 0
Opcode 0 dma
7-bit
opcode
AD
D
56
000000010
000000010 1010110
56 jest adresem
na pewnej stronie
pamięci, na którą
wskazuje rejestr DP
załaduj data page
pointer, czyli DP,
liczba 2 (adresowa-
nie natychmiastowe)
31 16 15 0
expr
Instruction
Word
DP
(data
page
pointer)
page
address
31 16 15 0
31 16 15 0
pełen 32-bitowy adres
Adresowanie pośrednie
Składnia
Znaczenie
•
ARn
indirect (pośrednie)
•
+ARn(disp)
zanim użyjemy adresu, który jest w rejestrze, to zwiększamy go o wartość
disp
•
–ARn(disp)
j.w. ale zmniejszamy
•
++ARn(disp)
pre-inkrement and modification, nowa wartość adresu (zwiększona) jest
wpisana do adresu
•
– –ARn(disp)
j.w., ale dekrement
•
ARn++(disp)
post–inkrement, zwiększony adres po wykonaniu instrukcji
•
ARn– –(disp)
j.w., ale dekrement
•
ARn++(disp)%
adresowanie cyrkularne
•
ARn– –(disp)%
j.w.
•
Arn++(IR0)B
z rewersją bitów do szybkiego realizowania transformacji Fouriera
DFT - Discrete Fourier Transformation
X
o
,X
1
, ..., X
N-1
blok N próbek np. w dziedzinie czasu
X
0
=
1
N
∑
n
=0
N
−1
X
n
X
K
=
1
N
∑
n
=0
N
−1
X
N
W
N
k
n
W
N
=e
− j⋅
2
N
współczynnik obrotu wskazującu 1/N obrotu
W N próbkach jest to np. jeden okres W
N
k
, h=0,1,2,...,N-1
IDFT
X
N
=
∑
k
=0
N
−1
X
k
W
N
−hn obracanie jest w przeciwną stronę ,bo jest minus
Przykład dla dwóch próbek X
0
,X
1
W
2
=e
-jπ
=–1
X
0
= ½ (x
0
+x
1
)
X
1
= ½ (x
0
–x
1
)
dwa współczynniki w dziedzinie częstotliwości.
średnia arytmetyczna, czyli ostatecznie:
x
0
=x
0
+x
1
x
1
=x
0
–x
1
LACC – Load Accumulator – załaduje akumulator
LDP – Load Data Pointer – załaduj wskaźnik
SACL – Store Accumulator – zachowaj akumulator
MAR – modify auxiliary register – zmodyfikuj rejestr pomocniczy
MAR *,AR1
czyli do ARP wpisz 1
LAR AR0,#2
wpisz 2 do rejestru pomocniczego 0
LDP #0
wrzuć do DP 0
LAR AR1,#200h
do rejestru R1 wrzuć 200 (hex)
LAR AR2,#300h
do rejestru R2 wrzuć 300 (hex)
LACC 61h
adresowanie bezpośrednie
gdy
23
31 16 15 0
operand
address
31 16 15 0
w instrukcji
w rejestrze
jest adres
Arn
LACC #61h
wrzuć do akumulatora zawartość komórki 61h
ADD *+
dodaj adresowanie pośrednie, czyli zmodyfikuj o 1 adres
komórki, co wskazuje ARP, imkrementuje po zaadresowaniu
SUB 60h,1
przesuń wartość z 60h czyli 10 o jeden bit w lewo, czyli
zwiększ wartość dwukrotnie, później odejmij od tego co
w akumulatorze
ADD *+,AR2
do akumulatora dodaj 60, zawartość R1 zwiększamy o 1,
czyli wskazuje na adres 202 i ARP=2
LDP #6
załaduj wskaźnik strony wartością 6
ADD 1
dodaj do akumulatora zawartość pierwszej komórki ze strony
6 czyli z adresu 300 weź 10, czyli A=290
ADD *+,4
adresowanie pośrednie na to na co wskazuje aktualnie ARP,
czyli 2, czyli co jest pod 300h, czyli 10 i tę wartość przesunąć
o bity, czyli zwiększyć 16-krotnie
SUB *+,0,AR1
nie przesuwa wartość, zmienia zawartość ARP na 1, teraz już
AR2 ma wart. 301, czyli 30, czyli od A=390 odejmujemy 30,
czyli A=360
SUB #32
odejmij wartość 32 od tego co w akumulatorze, czyli odejmij
tak naprawdę 20, czyli 340 mamy w A.
ADD *0-,0,AR2
ustawia ARP na AR2, przesuwa zero bitów, od aktualnego
rejestru pomocniczego (AR1) odjąć wartość INDX – rejestru
indeksowego
SUB *0-
dekrementowanie 0 2 indeksu i dlatego od aktualnego
rejestru AR2 odejmij 2, czyli z 302 mamy 300
SACL 82h
przesuwa wartość w dma 362h
Andrzej Rydzewski
“Mikrokomputery jednoukładowe rodziny MCS-51”
8 bitowe CPU (jedn. centralna, może wykonywac 111 rozkazów).
12 cykli zegarowych = 1 cykl maszynowy
System przerwań
Multiplexowane wejścia równoległe P0, P1, P2, P3
Nie nadaje się do obliczeń dużej precyzji, czyli do przetwarzania dźwięku lub obrazu (jest za wolny),
ale do sterowania lodówką lub pralką.
Zegar ma 12 Mhz, czas cyklu maszynowego = 1 μs
Wewnętrzna pamięć typu ROM – ma jeje 4096 bajtów (4K) słów 8 bitowych, może być rozszerzona
do 64K bajtów przez pamięć zewnętrzną.
Wewnętrzna pamięć danych RAM – pojemność 128 bajtów.
Port szeregowy – może pracować w 4 trybach.
AT89CS1
4K
8 FLASH (pamięć flash)
SFR – Special Function Registers (rejestry specjalne)
Ma dwa aukumulatory
A, ACC oraz B
Rr – rejestry robocze r={1,...,7}
Ri – rejestry – wskaźniki danych i=1,2
SP (stack pointer) – wskaźniki stosu
n – 8-bitowy argument
nn – 16-bitowy argument
d – 8-bitowe przesunięcie
24
Cykl rozkazowy może składać się z kilku cykli maszynowych, z kolei cykl maszynowy składa się z
12 cykli zegarowych.
1. Odpowiedz na pytania:
a) czym się różnią pojęcia: cykl rozkazowy, cykl maszynowy i cykl zegarowy w komputerach RISC i
CISC,
b) opisać cykl rozkazowy mikrokotrolera 8051,
c) skrót SFR oznacza “special functions registers”, czyli “rejestry specjalne”. Jaką rolę pełnią te
rejestry w mikrokontrolerze 8051 i jaki zajmują obszar pamięci,
d) czym się różni wewnętrzna pamięć danych mikrokontrolerów 8051 i 8052?
e) co oznaczają skróty: RAM, ROM, EPROM, EEPROM, FLASH.
2. Wymień różnice i podobieństwa architektury typowego procesora sygnałowego i mikrokontrolera
8051.
3. Wyjaśnij działanie poszczególnych instrukcji programu:
PUSH
ACC
MOV
DPTR,#data
ANL
A,#Fh
MOVC A,@A+DPTR
MOV
P0,A
POP
ACC
4. Zaprojektować zawartości tablicy data w pamięci programu, która służyłaby do
zapalania kolejnych cyfr 0,1,2,3,4,5 wyświetlacza 7-segmentowego, opisanego na
rysunku. Założyć, że diody LED są połączone do końcówek mikroprocesora jest
pokazane na rysunku. Zastosować następującą kolejność bitów a b c d e f g.
Dioda będzie świecić gdy stan będzie wysoki (zapali się gdy zero).
25
a
b
c
d
e
f
g