PODSTAWY ARCHITEKTURY KOMPUTERA
PODSTAWY ARCHITEKTURY KOMPUTERA
dr inż. Jacek FLOREK
dr inż. Jacek FLOREK
Instytut Informatyki
Instytut Informatyki
Specjalizowany układ cyfrowy a maszyna
Specjalizowany układ cyfrowy a maszyna
cyfrowa
cyfrowa
Struktura systemu mikroprocesorowego
Struktura systemu mikroprocesorowego
Bloki funkcjonalne - organizacja i
Bloki funkcjonalne - organizacja i
architektura
architektura
7
PRZETWARZANIE
PRZETWARZANIE
INFORMACJI
INFORMACJI
Wszelkie procesy zamierzonego przetwarzania informacji
Wszelkie procesy zamierzonego przetwarzania informacji
przebiegają według ustalonego algorytmu
przebiegają według ustalonego algorytmu
DANE
DANE
POCZĄTKOW
POCZĄTKOW
E
E
WYNIKI
WYNIKI
KOŃCOWE
KOŃCOWE
PROCES
PROCES
PRZETWARZANI
PRZETWARZANI
A
A
ALGORYTM
ALGORYTM
Przetwarzanie informacji można zrealizować dwoma sposobami:
Przetwarzanie informacji można zrealizować dwoma sposobami:
•
Specjalizowany układ cyfrowy:
Specjalizowany układ cyfrowy:
•
System mikroprocesorowy (maszyna cyfrowa):
System mikroprocesorowy (maszyna cyfrowa):
SPECJALIZOWANY
SPECJALIZOWANY
UKŁAD CYFROWY
UKŁAD CYFROWY
MASZYNA
MASZYNA
CYFROWA
CYFROWA
WYNIKI
WYNIKI
PROGRAM
PROGRAM
DANE
DANE
DANE
DANE
WYNIKI
WYNIKI
ARCHITEKTURA MASZYNY CYFROWEJ
ARCHITEKTURA MASZYNY CYFROWEJ
PAMIĘĆ
PAMIĘĆ
ZEWNĘTRZNA
ZEWNĘTRZNA
UKŁADY WY
UKŁADY WY
URZĄDZENIA
URZĄDZENIA
ZEWNĘTRZNE
ZEWNĘTRZNE
PAMIĘĆ
PAMIĘĆ
OPERACYJNA
OPERACYJNA
BLOK
BLOK
PRZETWA-
PRZETWA-
RZANIA
RZANIA
STEROWANIE
STEROWANIE
UKŁADY WE
UKŁADY WE
URZĄDZENIA
URZĄDZENIA
ZEWNĘTRZNE
ZEWNĘTRZNE
MASZYNA CYFROWA
MASZYNA CYFROWA
PROCESOR
PROCESOR
JEDNOSTKA CENTRALNA
JEDNOSTKA CENTRALNA
W
Y
N
IK
I
W
Y
N
IK
I
P
R
O
G
R
A
M
P
R
O
G
R
A
M
D
A
N
E
D
A
N
E
...
...
URZ.
URZ.
ZEWN.
ZEWN.
PROCESOR
PROCESOR
PAMIĘC
PAMIĘC
UKŁADY
UKŁADY
WE/WY
WE/WY
ZEGAR
ZEGAR
SZYNA DANYCH
SZYNA DANYCH
SZYNA ADRESOWA
SZYNA ADRESOWA
SZYNA STEROWANIA
SZYNA STEROWANIA
UŻYTKOWNIK
UŻYTKOWNIK
DANE
DANE
PROGRAMY
PROGRAMY
WYNIKI
WYNIKI
MONITORY, DRUKARKI,
MONITORY, DRUKARKI,
CZYTNIKI,...
CZYTNIKI,...
SYSTEM MIKROPROCESOROWY
SYSTEM MIKROPROCESOROWY
Centralna jednostka
Centralna jednostka
przetwarzająca (CPU)
przetwarzająca (CPU)
Liczba linii wyznacza
Liczba linii wyznacza
możliwości
możliwości
adresowania np. liczba
adresowania np. liczba
linii 20 to można
linii 20 to można
zaadresować 2
zaadresować 2
20
20
komórek
komórek
Liczba linii określa
Liczba linii określa
długość słowa
długość słowa
procesora (8, 16,
procesora (8, 16,
32, .... (+biyt detekcji i
32, .... (+biyt detekcji i
korekcji błędów
korekcji błędów
)
)
Kilkanaście
Kilkanaście
(kilkadziesiąt) linii
(kilkadziesiąt) linii
Uniwersalny układ
Uniwersalny układ
przetwarzający
przetwarzający
informację i
informację i
sterujący pracą
sterujący pracą
pozostałych
pozostałych
elementów
elementów
systemu
systemu
ORGANIZACJA SYSTEMU
ORGANIZACJA SYSTEMU
»
Architektura klasycznego komputera (wg von Neumana)
Architektura klasycznego komputera (wg von Neumana)
opiera się na założeniach:
opiera się na założeniach:
–
program wykonywany przez procesor wraz z danymi
program wykonywany przez procesor wraz z danymi
jest umieszczony w pamięci;
jest umieszczony w pamięci;
–
kolejność wykonywanych rozkazów zależy od ich
kolejność wykonywanych rozkazów zależy od ich
umieszczenia w programie (w kolejnych komórkach
umieszczenia w programie (w kolejnych komórkach
pamięci), a zmiana tej zasady może być wykonana
pamięci), a zmiana tej zasady może być wykonana
tylko:
tylko:
•
przez program (rozkaz skoku);
przez program (rozkaz skoku);
•
przez system operacyjny np. wykrycie błędu;
przez system operacyjny np. wykrycie błędu;
•
przez operatora np.
przez operatora np.
reset
reset
–
procesor odczytuje kolejne rozkazy z pamięci
procesor odczytuje kolejne rozkazy z pamięci
wysyłając odpowiednie adresy
wysyłając odpowiednie adresy
»
Każde działanie wykonywane przez system jest wynikiem
Każde działanie wykonywane przez system jest wynikiem
realizacji określonego programu bądź jego fragmentu
realizacji określonego programu bądź jego fragmentu
PROCESOR
PROCESOR
PAMIĘĆ
PAMIĘĆ
Adres
Adres
Dane
Dane
Zapis
Zapis
1
1
2
2
3
3
3
3
4
4
PROCESOR
PROCESOR
PAMIĘĆ
PAMIĘĆ
Adres
Adres
Dane
Dane
Odczyt
Odczyt
1
1
2
2
3
3
4
4
PROCESOR
PROCESOR
UKŁAD
UKŁAD
WY-WE
WY-WE
Adres
Adres
Dane
Dane
Zapis
Zapis
1
1
2
2
3
3
4
4
PROCESOR
PROCESOR
UKŁAD
UKŁAD
WY-WE
WY-WE
Adres
Adres
Dane
Dane
Odczyt
Odczyt
1
1
2
2
3
3
4
4
Z
P
R
O
C
E
S
O
R
A
D
O
P
A
M
IĘ
C
I
Z
P
R
O
C
E
S
O
R
A
D
O
P
A
M
IĘ
C
I
Z
P
A
M
IĘ
C
I
D
O
P
R
O
C
E
S
O
R
A
Z
P
A
M
IĘ
C
I
D
O
P
R
O
C
E
S
O
R
A
Z
P
R
O
C
E
S
O
R
A
N
A
W
Y
JŚ
C
IE
Z
P
R
O
C
E
S
O
R
A
N
A
W
Y
JŚ
C
IE
Z
W
E
JŚ
C
IA
D
O
P
R
O
C
E
S
O
R
A
Z
W
E
JŚ
C
IA
D
O
P
R
O
C
E
S
O
R
A
PRZEPŁYW DANYCH W SYSTEMIE
PRZEPŁYW DANYCH W SYSTEMIE
MIKROPROCESOROWYM
MIKROPROCESOROWYM
ARCHITEKTURA PROCESORA
ARCHITEKTURA PROCESORA
dr inż. Jacek FLOREK
dr inż. Jacek FLOREK
Instytut Informatyki
Instytut Informatyki
Schemat blokowy procesora
Schemat blokowy procesora
Rejestry
Rejestry
Blok arytmetyczno-logiczny (ALU)
Blok arytmetyczno-logiczny (ALU)
Układ sterowania
Układ sterowania
8
SCHEMAT BLOKOWY PROCESORA
SCHEMAT BLOKOWY PROCESORA
ALU
ALU
JEDNOSTKA
JEDNOSTKA
WYKONAWCZA
WYKONAWCZA
układ
układ
sterowania
sterowania
d
e
k
o
d
e
r
d
e
k
o
d
e
r
ro
zk
a
zó
w
ro
zk
a
zó
w
re
je
s
tr
re
je
s
tr
ro
zk
a
zó
w
ro
zk
a
zó
w
rejestry części
rejestry części
wykonawczej
wykonawczej
DANE
DANE
PROGRAM
PROGRAM
WYNIKI
WYNIKI
wewnętrzne
wewnętrzne
sygnały
sygnały
sterujące
sterujące
zewnętrzne
zewnętrzne
sygnały
sygnały
sterujące
sterujące
JEDNOSTKA
JEDNOSTKA
STERUJĄCA
STERUJĄCA
Zadaniem jednostki
Zadaniem jednostki
wykonawczej jest
wykonawczej jest
wykonywanie operacji
wykonywanie operacji
arytmetycznych i logicznych
arytmetycznych i logicznych
w zależności od
w zależności od
wewnętrznych sygnałów
wewnętrznych sygnałów
sterujących
sterujących
Jednostka sterująca z
Jednostka sterująca z
programu dekoduje rozkaz i
programu dekoduje rozkaz i
na jego podstawie
na jego podstawie
generowane są wewnętrzne i
generowane są wewnętrzne i
zewnętrzne sygnały sterujące
zewnętrzne sygnały sterujące
REJESTRY
REJESTRY
dostępne
dostępne
programowo
programowo
niedostępne
niedostępne
programowo
programowo
(na przykładzie 8 bitowego procesora 8086/8088)
(na przykładzie 8 bitowego procesora 8086/8088)
FLAGS
FLAGS
AX
AX
AX
AX
BX
BX
CX
CX
DX
DX
SI
SI
DI
DI
BP
BP
SP
SP
IP
IP
CS
CS
DS
DS
ES
ES
SS
SS
15
15
0
0
7
7
15
15
0
0
Rejestr
Rejestr
znacznikó
znacznikó
w
w
(flagowy
(flagowy
Rejestry
Rejestry
powszechne
powszechne
go
go
stosowania
stosowania
Rejestry
Rejestry
wskaźniko
wskaźniko
we i
we i
indeksowe
indeksowe
Rejestry
Rejestry
segmento
segmento
we
we
Wskaźnik
Wskaźnik
rozkazów
rozkazów
OF
OF
DF
DF
IF
IF
TF
TF
SF
SF
ZF
ZF
AF
AF
PF
PF
CF
CF
OF - flaga nadmiaru
OF - flaga nadmiaru
(przepełnienia)
(przepełnienia)
DF - flaga kierunku
DF - flaga kierunku
IF - flaga zezwolenia na
IF - flaga zezwolenia na
przerwanie
przerwanie
TF - flaga pracy krokowej
TF - flaga pracy krokowej
SF - flaga znaku
SF - flaga znaku
ZF - flaga zera
ZF - flaga zera
AF - flaga przeniesienia
AF - flaga przeniesienia
pomocniczego
pomocniczego
PF - flaga parzystości
PF - flaga parzystości
CF - flaga
CF - flaga
przeniesienia
przeniesienia
AH
AH
AL
AL
BH
BH
BL
BL
CH
CH
CL
CL
DH
DH
DL
DL
Wskaźnik stosu
Wskaźnik stosu
Wskaźnik bazy
Wskaźnik bazy
Rejestr
Rejestr
indeksowy
indeksowy
przeznaczenia
przeznaczenia
Rejestr
Rejestr
indeksowy
indeksowy
źródła
źródła
Rejestr danych
Rejestr danych
Rejestr
Rejestr
zliczający
zliczający
Rejestr bazowy
Rejestr bazowy
Akumulator
Akumulator
Rejestr
Rejestr
programu
programu
Rejestr danych
Rejestr danych
Rejestr
Rejestr
dodatkowy
dodatkowy
Rejestr stosu
Rejestr stosu
Znaczniki
Znaczniki
kontrolne
kontrolne
Znaczniki stanu
Znaczniki stanu
REJESTRY
REJESTRY
Rejestr znaczników (flagowy)
Rejestr znaczników (flagowy)
- rejestr przeznaczony do przechowywania
- rejestr przeznaczony do przechowywania
dodatkowych cech wyniku operacji (np. znak, przekroczenie zakresu, znak
dodatkowych cech wyniku operacji (np. znak, przekroczenie zakresu, znak
parzystości, ...) w postaci tzw. flagi (znacznika). Każdy znacznik jest bitem w
parzystości, ...) w postaci tzw. flagi (znacznika). Każdy znacznik jest bitem w
rejestrze, który wskazuje czy określony stan wystąpił. Znaczniki mogą być
rejestrze, który wskazuje czy określony stan wystąpił. Znaczniki mogą być
wykorzystywane przez procesor lub programistę na dwa sposoby:
wykorzystywane przez procesor lub programistę na dwa sposoby:
•
ustawienie znacznika dla zapamiętania określonego stanu po wykonaniu
ustawienie znacznika dla zapamiętania określonego stanu po wykonaniu
rozkazu
rozkazu
•
testowanie znacznika celem umożliwienia decyzji o sposobie dalszego
testowanie znacznika celem umożliwienia decyzji o sposobie dalszego
postępowania (przetwarzania danych)
postępowania (przetwarzania danych)
Znaczniki stanu:
Znaczniki stanu:
–
CF - flaga przeniesienia lub pożyczki, ustawiana przy przekroczeniu zakresu
CF - flaga przeniesienia lub pożyczki, ustawiana przy przekroczeniu zakresu
długości słowa, w którym zapisywany jest wynik (1 wystąpiło przeniesienie)
długości słowa, w którym zapisywany jest wynik (1 wystąpiło przeniesienie)
–
PF - flaga parzystości (1) wskazuje na parzystą lub nieparzystą liczbę bitów o
PF - flaga parzystości (1) wskazuje na parzystą lub nieparzystą liczbę bitów o
wartości jedynki
wartości jedynki
–
ZF - flaga zera - sygnalizująca, że wynikiem ostatnio wykonywanej operacji
ZF - flaga zera - sygnalizująca, że wynikiem ostatnio wykonywanej operacji
jest zero
jest zero
–
PF - flaga przeniesienia pomocniczego jest wykorzystywana przy działaniach
PF - flaga przeniesienia pomocniczego jest wykorzystywana przy działaniach
na liczbach w kodzie BCD. Ustawiana jest gdy następuje przeniesienie lub
na liczbach w kodzie BCD. Ustawiana jest gdy następuje przeniesienie lub
pożyczka z najstarszego bitu pierwszej tetrady wyniku
pożyczka z najstarszego bitu pierwszej tetrady wyniku
–
SF - flaga znaku, ustawiana gdy najstarszy bit wyniku jest równy 1 (operacje
SF - flaga znaku, ustawiana gdy najstarszy bit wyniku jest równy 1 (operacje
liczb ze znakiem - kod U2)
liczb ze znakiem - kod U2)
–
OF - flaga przepełnienia, sygnalizująca przekroczenie zakresu dla operacji
OF - flaga przepełnienia, sygnalizująca przekroczenie zakresu dla operacji
arytmetycznych (operacje liczb ze znakiem - kod U2)
arytmetycznych (operacje liczb ze znakiem - kod U2)
Znaczniki kontrolne:
Znaczniki kontrolne:
–
TF- znacznik pracy krokowej - ustawienie 1 pozwala na wykonanie przez
TF- znacznik pracy krokowej - ustawienie 1 pozwala na wykonanie przez
procesor po wykonaniu każdego rozkazu przerwania i przejście do
procesor po wykonaniu każdego rozkazu przerwania i przejście do
specjalnych procedur obsługi
specjalnych procedur obsługi
–
IF- znacznik zezwolenia na przerwanie - ustawienie 1 powoduje odblokowanie
IF- znacznik zezwolenia na przerwanie - ustawienie 1 powoduje odblokowanie
systemu przerwań w procesorze (0 - procesor ignoruje przerwania)
systemu przerwań w procesorze (0 - procesor ignoruje przerwania)
–
DF - znacznik kierunku - umożliwia realizację przetwarzania łańcuchów (ciągu
DF - znacznik kierunku - umożliwia realizację przetwarzania łańcuchów (ciągu
słów) przy rosnących adresach (1) lub malejących adresach (0)
słów) przy rosnących adresach (1) lub malejących adresach (0)
REJESTRY
REJESTRY
Rejestry ogólnego przeznaczenia
Rejestry ogólnego przeznaczenia
- rejestry przeznaczone do przechowywania
- rejestry przeznaczone do przechowywania
dowolnych danych i wykonywania operacji (arytmetycznych i logicznych), ale
dowolnych danych i wykonywania operacji (arytmetycznych i logicznych), ale
jednocześnie spełniające pewne funkcje specjalne. Szczególną funkcję pełni
jednocześnie spełniające pewne funkcje specjalne. Szczególną funkcję pełni
akumulator
akumulator
Akumulator
Akumulator
- rejestr przeznaczony do przechowywania jednego z operandów
- rejestr przeznaczony do przechowywania jednego z operandów
(argumentów) wykonywanej operacji oraz wyniku wykonywanej operacji
(argumentów) wykonywanej operacji oraz wyniku wykonywanej operacji
(czasami wynik może być umieszczany w innym rejestrze)
(czasami wynik może być umieszczany w innym rejestrze)
Rejestry segmentowe
Rejestry segmentowe
- są rejestrami wykorzystywanymi do adresowania
- są rejestrami wykorzystywanymi do adresowania
pamięci operacyjnej. Rejestry te zawierają adresy początkowe segmentów
pamięci operacyjnej. Rejestry te zawierają adresy początkowe segmentów
–
CS rejestr segmentowy programu wskazuje segment programu, z
CS rejestr segmentowy programu wskazuje segment programu, z
którego aktualnie są pobierane kolejne rozkazy do wykonania,
którego aktualnie są pobierane kolejne rozkazy do wykonania,
–
DS rejestr segmentowy stosu wskazuje segment, w którym zapamiętane
DS rejestr segmentowy stosu wskazuje segment, w którym zapamiętane
są zmienne używane w programie,
są zmienne używane w programie,
–
ES rejestr segmentowy dodatkowy wskazuje dodatkowy segment
ES rejestr segmentowy dodatkowy wskazuje dodatkowy segment
danych,
danych,
–
SS rejestr segmentowy stosu wskazuje segment pamięci, w którym
SS rejestr segmentowy stosu wskazuje segment pamięci, w którym
zdefiniowany jest stos.
zdefiniowany jest stos.
Wskaźnik rozkazów
Wskaźnik rozkazów
(wskaźnik instrukcji) - łącznie z rejestrem segmentowym
(wskaźnik instrukcji) - łącznie z rejestrem segmentowym
CS adresuje kolejne rozkazy przeznaczone do wykonania. Wskazuje adres
CS adresuje kolejne rozkazy przeznaczone do wykonania. Wskazuje adres
względem początku segmentu programu
względem początku segmentu programu
Rejestry wskaźnikowe i indeksowe
Rejestry wskaźnikowe i indeksowe
- posiadają dwa rejestry wskaźnikowe i
- posiadają dwa rejestry wskaźnikowe i
dwa rejestry indeksowe.
dwa rejestry indeksowe.
Rejestry wskaźnikowe (SP, BP) są stosowane do adresowania danych w
Rejestry wskaźnikowe (SP, BP) są stosowane do adresowania danych w
obrębie wydzielonego obszaru pamięci (stosu).
obrębie wydzielonego obszaru pamięci (stosu).
Rejestry indeksowe (SI, DI) służą do adresowania danych w obszarze pamięci
Rejestry indeksowe (SI, DI) służą do adresowania danych w obszarze pamięci
zwanym segmentem danych.
zwanym segmentem danych.
Wszystkie rejestry mogą być wykorzystywane jako argumenty większości
Wszystkie rejestry mogą być wykorzystywane jako argumenty większości
rozkazów arytmetycznych i logicznych.
rozkazów arytmetycznych i logicznych.
REJESTRY
REJESTRY
Wskaźnik stosu(SP) - rejestr zawierający adres ostatniej zapełnionej komórki
Wskaźnik stosu(SP) - rejestr zawierający adres ostatniej zapełnionej komórki
stosu (wierzchołka stosu)
stosu (wierzchołka stosu)
Stosem nazywamy wyróżniony obszar w pamięci używany wg reguł:
Stosem nazywamy wyróżniony obszar w pamięci używany wg reguł:
–
informacje zapisane są na stos do kolejnych komórek (pod kolejnymi
informacje zapisane są na stos do kolejnych komórek (pod kolejnymi
adresami), przy czym żadnego adresu nie wolno pominąć
adresami), przy czym żadnego adresu nie wolno pominąć
–
odczytujemy informacje w kolejności odwrotnej do ich zapisu
odczytujemy informacje w kolejności odwrotnej do ich zapisu
–
informacje odczytujemy z ostatnio zapełnionej komórki, natomiast
informacje odczytujemy z ostatnio zapełnionej komórki, natomiast
zapisujemy do pierwszej wolnej
zapisujemy do pierwszej wolnej
Czyli obowiązuje reguła LIFO - ostatni wchodzi pierwszy wychodzi
Czyli obowiązuje reguła LIFO - ostatni wchodzi pierwszy wychodzi
lub
lub
Adres
Program główny
101
Instrukcja
102
Instrukcja
103
Call
Wywołanie podprogramu I
(adres 104 na stos)
1002
Instrukcja
1003
Instrukcja
1004
Call
Wywołanie podprogramu II
(adres 1005 na stos)
2001
Instrukcja
2002
Instrukcja
2003
Return
1005
Instrukcja
1006
Instrukcja
1007
Return
Powrót z podprogramu II
(do adresu 1005
odczytanego ze stosu)
104
Instrukcja
105
Instrukcja
106
Instrukcja
Powrót z podprogramu I
(do adresu 104
odczytanego ze stosu)
107
Instrukcja
stos
stos
stos
stos
akumulator rejestr bazowy
rejestr
zliczający
rejestr danych
wskaźnik stosu
wskaźnik bazy
rejestr indeksowy
źródła
rejestr indeksowy
przeznaczenia
rejestr danych
rejestr dodatkowy
rejestr stosu
rejestr programu wskaźnik rozkazów
rejestr flagowy
(znaczników)
flaga parzystości
flaga przeniesienia
pomocniczego
flaga zera
flaga zezwolenia
na przerwanie
flaga nadmiaru
flaga kierunku
flaga znaku
flaga przeniesienia
Flaga (znacznik)
symbol
=1
=0
Flaga nadmiaru
OF
OV
NV
Flaga kierunku
DF
DN
UP
Flaga zezwolenia na przerwanie
IF
EI
DI
Flaga znaku
SF
NG
PL
Flaga zera
ZF
ZR
NZ
Flaga przeniesienia pomocniczego
AF
AC
NA
Flaga parzystości
PF
PE
PO
Flaga przeniesienia
CF
CY
NC
BLOK ARYTMETYCZNO-LOGICZNY
BLOK ARYTMETYCZNO-LOGICZNY
Blok arytmetyczno-logiczny (ALU)
Blok arytmetyczno-logiczny (ALU)
- jest uniwersalnym układem
- jest uniwersalnym układem
kombinacyjnym, który realizuje operacje matematyczne i logiczne w
kombinacyjnym, który realizuje operacje matematyczne i logiczne w
zależności od zaprogramowanej operacji tj. rozkazu umieszczonego w
zależności od zaprogramowanej operacji tj. rozkazu umieszczonego w
programie.
programie.
Rozkazy mogą dotyczyć
Rozkazy mogą dotyczyć
•
operacji dwuargumentowych:
operacji dwuargumentowych:
–
operacji arytmetycznych (dodawanie i odejmowanie)
operacji arytmetycznych (dodawanie i odejmowanie)
–
operacji logicznych (sumowanie mnożenie, sumowanie mod 2, itp.)
operacji logicznych (sumowanie mnożenie, sumowanie mod 2, itp.)
•
operacji jednoargumentowych (np. negowanie bitów lub przesuwanie
operacji jednoargumentowych (np. negowanie bitów lub przesuwanie
zawartości rejestrów)
zawartości rejestrów)
Argumentami rozkazów są najczęściej dwa słowa binarne, od długości
Argumentami rozkazów są najczęściej dwa słowa binarne, od długości
których mówi się o liczbie bitów ALU.
których mówi się o liczbie bitów ALU.
A
A
0
0
- A
- A
3
3
B
B
0
0
- B
- B
3
3
S
S
0
0
- S
- S
3
3
M
M
F
F
0
0
- F
- F
3
3
A
F
B
A
F
B
A
F
F
AB
F
B
F
B
A
F
B
A
F
B
A
F
B
A
F
B
F
AB
F
F
B
A
F
B
A
F
A
F
1
0
)
1
(
)
(
)
(
2
)
1
(
)
(
)
1
(
)
1
(
)
(
1
)
(
)
(
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
C
A
F
C
A
B
A
F
C
A
AB
F
C
A
F
C
AB
F
C
AB
B
A
F
C
B
A
F
C
AB
A
F
C
A
F
C
B
A
F
C
B
A
B
A
F
C
B
A
A
F
C
F
C
B
A
F
C
B
A
F
C
A
F
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
1111
0111
1011
0011
1101
0101
1001
0001
1110
0110
1010
0010
1100
0100
1000
0000
Lp. S
Lp. S
0
0
- S
- S
3
3
M=0 M=1
M=0 M=1
Sygnały sterujące
Sygnały sterujące
do wyboru
do wyboru
mikrooperacji
mikrooperacji
logicznej (M=0) lub
logicznej (M=0) lub
arytmetycznej
arytmetycznej
(M=1)
(M=1)
Przykład 4 bitowego ALU
Przykład 4 bitowego ALU
SN74181
SN74181
UKŁAD STEROWANIA
UKŁAD STEROWANIA
Często (a może najczęściej) procesor wykonuje rozkazy nie w
Często (a może najczęściej) procesor wykonuje rozkazy nie w
jednym kroku (jak np. dodawanie) ale w wielu krokach (np.
jednym kroku (jak np. dodawanie) ale w wielu krokach (np.
mnożenie lub dzielenie jako ciąg dodawań i przesunięć).
mnożenie lub dzielenie jako ciąg dodawań i przesunięć).
W tym celu potrzebny jest złożony automat sekwencyjny,
W tym celu potrzebny jest złożony automat sekwencyjny,
generujący odpowiednie ciągi słów podawanych na wejścia
generujący odpowiednie ciągi słów podawanych na wejścia
sterujące układu ALU - układ sterowania.
sterujące układu ALU - układ sterowania.
Cechy takiego automatu to:
Cechy takiego automatu to:
•
konieczność posiadania bardzo dużej liczby stanów
konieczność posiadania bardzo dużej liczby stanów
dostosowanych do wymaganej liczby wykonywanych
dostosowanych do wymaganej liczby wykonywanych
rozkazów;
rozkazów;
•
konieczność zapewnienia synchronizacji pracy układu
konieczność zapewnienia synchronizacji pracy układu
sterowania i wykonawczego (uwzględnienie czasów
sterowania i wykonawczego (uwzględnienie czasów
wykonywania poszczególnych operacji).
wykonywania poszczególnych operacji).
W praktyce realizowane są jako:
W praktyce realizowane są jako:
•
generatory sekwencyjne
generatory sekwencyjne
•
układy mikroprogramowalne
układy mikroprogramowalne
ROZKAZY I TRYB ADRESOWANIA
ROZKAZY I TRYB ADRESOWANIA
dr inż. Jacek FLOREK
dr inż. Jacek FLOREK
Instytut Informatyki
Instytut Informatyki
Cykl rozkazowy
Cykl rozkazowy
Lista i format rozkazu
Lista i format rozkazu
Tryb adresowania
Tryb adresowania
Sposób prezentowania rozkazu
Sposób prezentowania rozkazu
9
CYKL ROZKAZOWY PROCESORA
CYKL ROZKAZOWY PROCESORA
Realizując program, system mikroprocesorowy wykonuje pewne
Realizując program, system mikroprocesorowy wykonuje pewne
powtarzające się czynności, polegające na cyklicznym pobieraniu
powtarzające się czynności, polegające na cyklicznym pobieraniu
kodów rozkazów z pamięci i wczytywaniu ich do układu sterowania,
kodów rozkazów z pamięci i wczytywaniu ich do układu sterowania,
a następnie realizacji rozkazu
a następnie realizacji rozkazu
Def.1. Czas potrzebny na odczytanie kodu rozkazu z
Def.1. Czas potrzebny na odczytanie kodu rozkazu z
pamięci, na pobranie argumentów, na wykonanie
pamięci, na pobranie argumentów, na wykonanie
rozkazu i przesłanie wyniku operacji nazywa się
rozkazu i przesłanie wyniku operacji nazywa się
cyklem rozkazowym (instrukcyjnym)
cyklem rozkazowym (instrukcyjnym)
Def.1. Czas potrzebny na odczytanie kodu rozkazu z
Def.1. Czas potrzebny na odczytanie kodu rozkazu z
pamięci, na pobranie argumentów, na wykonanie
pamięci, na pobranie argumentów, na wykonanie
rozkazu i przesłanie wyniku operacji nazywa się
rozkazu i przesłanie wyniku operacji nazywa się
cyklem rozkazowym (instrukcyjnym)
cyklem rozkazowym (instrukcyjnym)
Cykl rozkazowy składa się zwykle z faz pobierania (kodu rozkazu,
Cykl rozkazowy składa się zwykle z faz pobierania (kodu rozkazu,
pobierania argumentu) i wykonania rozkazu.
pobierania argumentu) i wykonania rozkazu.
P
a
m
ię
ć
P
a
m
ię
ć
C
P
U
C
P
U
POBRANIE
POBRANIE
ROZKAZU
ROZKAZU
WYSŁANIE
WYSŁANIE
ADRESU
ADRESU
ROZKAZU
ROZKAZU
DEKODOW
DEKODOW
ANIE
ANIE
ROZKAZU
ROZKAZU
OBLICZANIE
OBLICZANIE
ADRESU
ADRESU
ARGUMENTU
ARGUMENTU
I
I
OBLICZANIE
OBLICZANIE
ADRESU
ADRESU
ARGUMENTU
ARGUMENTU
II
II
WYKONANIE
WYKONANIE
ROZKAZU
ROZKAZU
OBLICZENIE
OBLICZENIE
ADRESU
ADRESU
PRZEZNACZE
PRZEZNACZE
-
-
NIA
NIA
ZAPIS
ZAPIS
WYNIKU
WYNIKU
POBRANIE
POBRANIE
ARGUMENTU
ARGUMENTU
II
II
POBRANIE
POBRANIE
ARGUMENTU
ARGUMENTU
I
I
cykl pobrania
cykl pobrania
rozkazu
rozkazu
cykl
cykl
pobrani
pobrani
a
a
argume
argume
ntu I
ntu I
cykl
cykl
pobrani
pobrani
a
a
argume
argume
ntu II
ntu II
cykl zapisu wyniku
cykl zapisu wyniku
CYKL ROZKAZOWY PROCESORA
CYKL ROZKAZOWY PROCESORA
Czas trwania fazy pobierania rozkazu (pobierania argumentu)
Czas trwania fazy pobierania rozkazu (pobierania argumentu)
zależy od rodzaju procesora i rodzaju rozkazu (argumentu).
zależy od rodzaju procesora i rodzaju rozkazu (argumentu).
Np.
Np.
Jeżeli procesor jest 8-bitowy, kod rozkazu 8-bitowy, adres
Jeżeli procesor jest 8-bitowy, kod rozkazu 8-bitowy, adres
argumentu 16-bitowy to faza pobrania rozkazu składa się z trzech
argumentu 16-bitowy to faza pobrania rozkazu składa się z trzech
cykli odczytu pamięci:
cykli odczytu pamięci:
•
odczyt kodu - pobranie rozkazu
odczyt kodu - pobranie rozkazu
•
odczyt jednego bajtu adresu
odczyt jednego bajtu adresu
•
odczyt drugiego bajtu adresu
odczyt drugiego bajtu adresu
Jeżeli procesor i rozkaz są 32-bitowe to wystąpi jedna faza
Jeżeli procesor i rozkaz są 32-bitowe to wystąpi jedna faza
pobrania rozkazu
pobrania rozkazu
Rozpatrzmy przykład wykonania programu dodawania dwóch liczb
Rozpatrzmy przykład wykonania programu dodawania dwóch liczb
16-bitowych stałopozycyjnych w komputerze 16-bitowym. Pamięć
16-bitowych stałopozycyjnych w komputerze 16-bitowym. Pamięć
jest 16-bitowa, kod rozkazu 12-bitowy a adres 20-bitowy (kod
jest 16-bitowa, kod rozkazu 12-bitowy a adres 20-bitowy (kod
rozkazu i adres można zatem umieścić w 2 komórkach pamięci)
rozkazu i adres można zatem umieścić w 2 komórkach pamięci)
Faza pobrania:
Faza pobrania:
1. adresowanie: podanie zawartości licznika rozkazów PC
1. adresowanie: podanie zawartości licznika rozkazów PC
(rejestru adresującego pamięć AD) na magistralę adresową
(rejestru adresującego pamięć AD) na magistralę adresową
2. odczyt zaadresowanej komórki pamięci do rejestru rozkazów
2. odczyt zaadresowanej komórki pamięci do rejestru rozkazów
(RR)
(RR)
3. zwiększenie zawartości licznika rozkazów
3. zwiększenie zawartości licznika rozkazów
Faza wykonania:
Faza wykonania:
4. zdekodowanie kodu rozkazu i wytworzenie sygnałów
4. zdekodowanie kodu rozkazu i wytworzenie sygnałów
sterujących realizujących dany rozkaz
sterujących realizujących dany rozkaz
1
1
2
2
3
3
4
4
Cykl von
Cykl von
Neumana
Neumana
w przypadku rozkazów
wielobajtowych
PC(AD)
PC(AD)
RR
RR
kod
kod
rozkazu
rozkazu
kod
kod
rozkazu
rozkazu
kod
kod
rozkazu
rozkazu
kod
kod
rozkazu
rozkazu
kod
kod
rozkazu
rozkazu
procesor
procesor
pamięć
pamięć
s
zy
n
a
a
d
re
so
w
a
s
zy
n
a
a
d
re
so
w
a
s
zy
n
a
d
a
n
y
c
h
s
zy
n
a
d
a
n
y
c
h
MAPA PAMIĘCI
300
ładuj A
adres 841
301
adres 841
302
ładuj B
adres 915
303
adres 915
304
dodaj A+B
305
zapisz pamięć
adres 915
306
adres 915
841
4
915
5
ZAWARTOŚĆ REJ ESTRÓW PROCESORA
Pobranie kodu rozkazu
i 4 bitów adresu
Pobranie 16
bitów adresu
Odczyt
argumentu
A
4
B
ładuj A
PC
300
301
302
AD
300
301
841
RR
ładuj A
ładuj A
ładuj A
Pobranie kodu rozkazu
i 4 bitów adresu
Pobranie 16
bitów adresu
Odczyt
argumentu
A
4
4
4
B
5
ładuj B
PC
302
303
304
AD
302
303
915
RR
ładuj B
ładuj B
ładuj B
Pobranie kodu rozkazu
A
B
5
dodaj
PC
304
AD
304
RR
dodaj
Pobranie kodu rozkazu
i 4 bitów adresu
Pobranie 16
bitów adresu
Odczyt
argumentu
A
9
9
9
B
5
5
5
zapisz
PC
305
306
307
pamięć
AD
305
306
915
RR
zapisz
zapisz
zapisz
A
Rejestr A
B
Rejestr B
PC
Licznik rozkazów
AD
Rejestr adresujący pamięć
RR
Rejestr rozkazów
1
6
Program składa się z 4 rozkazów (adres pierwszego rozkazu wynosi
Program składa się z 4 rozkazów (adres pierwszego rozkazu wynosi
300):
300):
•
odczyt pierwszego argumentu z komórki o adresie 841 i zapisanie go
odczyt pierwszego argumentu z komórki o adresie 841 i zapisanie go
do rejestru A
do rejestru A
•
odczyt drugiego argumentu z komórki o adresie 915 i zapisanie go do
odczyt drugiego argumentu z komórki o adresie 915 i zapisanie go do
rejestru B
rejestru B
•
dodanie obu argumentów
dodanie obu argumentów
•
przesłanie wyniku do komórki pamięci o adresie 915
przesłanie wyniku do komórki pamięci o adresie 915
LISTA ROZKAZÓW
LISTA ROZKAZÓW
Def.1. Rozkazem (instrukcją maszynową) nazywamy
Def.1. Rozkazem (instrukcją maszynową) nazywamy
najprostszą operację, której wykonania programista
najprostszą operację, której wykonania programista
może zażądać od procesora
może zażądać od procesora
Def.1. Rozkazem (instrukcją maszynową) nazywamy
Def.1. Rozkazem (instrukcją maszynową) nazywamy
najprostszą operację, której wykonania programista
najprostszą operację, której wykonania programista
może zażądać od procesora
może zażądać od procesora
Def.2. Listą rozkazów nazywamy zestaw wszystkich
Def.2. Listą rozkazów nazywamy zestaw wszystkich
instrukcji maszynowych (rozkazów), jakie potrafi
instrukcji maszynowych (rozkazów), jakie potrafi
wykonać dany procesor
wykonać dany procesor
Def.2. Listą rozkazów nazywamy zestaw wszystkich
Def.2. Listą rozkazów nazywamy zestaw wszystkich
instrukcji maszynowych (rozkazów), jakie potrafi
instrukcji maszynowych (rozkazów), jakie potrafi
wykonać dany procesor
wykonać dany procesor
•
rozkazy przesłań
rozkazy przesłań
•
rozkazy arytmetyczne i logiczne
rozkazy arytmetyczne i logiczne
•
rozkazy sterujące (skoki, wywołania podprogramów, pętle, itp.)
rozkazy sterujące (skoki, wywołania podprogramów, pętle, itp.)
•
inne (np. sterowanie pracą koprocesora, rozkazy testujące, operacje w
inne (np. sterowanie pracą koprocesora, rozkazy testujące, operacje w
trybie chronionym)
trybie chronionym)
Rozkazy (jak inne informacje) są przechowywane w systemie
Rozkazy (jak inne informacje) są przechowywane w systemie
mikroprocesorowym w postaci kodów binarnych
mikroprocesorowym w postaci kodów binarnych
Adres
komórki
Zawartość
komórki
0000
0000
1011
0001
0000
0001
0001
0101
0000
0010
1010
0000
0000
0011
0000
0000
0000
0100
0000
1111
0000
0101
0000
0000
0000
0110
1100
1000
0000
0111
1100
0110
0000
1000
1010
1010
-
-
0000
1111
0000
0010
MOV CL,5
MOV A, [B2,B3]
ADD CL,A
A=A+5
OUT [B2]
rozkazy w postaci kodów binarnych
rozkazy w postaci kodów binarnych
instrukcje maszynowe
instrukcje maszynowe
instrukcje w FORTRANie
instrukcje w FORTRANie
FORMAT ROZKAZÓW I TRYB
FORMAT ROZKAZÓW I TRYB
ADRESOWANIA
ADRESOWANIA
Def.1. Formatem rozkazu nazywamy sposób
Def.1. Formatem rozkazu nazywamy sposób
rozmieszczenia informacji w kodzie rozkazu
rozmieszczenia informacji w kodzie rozkazu
Def.1. Formatem rozkazu nazywamy sposób
Def.1. Formatem rozkazu nazywamy sposób
rozmieszczenia informacji w kodzie rozkazu
rozmieszczenia informacji w kodzie rozkazu
Kod rozkazu:
Kod rozkazu:
•
musi zawierać określenie rodzaju wykonywanej operacji (kod operacji)
musi zawierać określenie rodzaju wykonywanej operacji (kod operacji)
- w pierwszym bajcie (bajtach) kodu rozkazu
- w pierwszym bajcie (bajtach) kodu rozkazu
•
może zawierać operandy i/lub adresy operandów wykonywanych
może zawierać operandy i/lub adresy operandów wykonywanych
operacji
operacji
Def.2. Trybem adresowania nazywamy
Def.2. Trybem adresowania nazywamy
sposób
sposób
określenia
określenia
miejsca przechowywania argumentów rozkazu
miejsca przechowywania argumentów rozkazu
Def.2. Trybem adresowania nazywamy
Def.2. Trybem adresowania nazywamy
sposób
sposób
określenia
określenia
miejsca przechowywania argumentów rozkazu
miejsca przechowywania argumentów rozkazu
Argumenty rozkazu (dotyczy zarówno danych jak i wyników) mogą być
Argumenty rozkazu (dotyczy zarówno danych jak i wyników) mogą być
przechowywane w:
przechowywane w:
•
rejestrach
rejestrach
•
pamięci
pamięci
•
kodzie rozkazu
kodzie rozkazu
Rozróżniamy następujące tryby
Rozróżniamy następujące tryby
adresowania
adresowania
•
adresowanie natychmiastowe
adresowanie natychmiastowe
•
adresowanie bezpośrednie
adresowanie bezpośrednie
•
adresowanie rejestrowe
adresowanie rejestrowe
•
adresowanie pośrednie
adresowanie pośrednie
•
adresowanie indeksowe z
adresowanie indeksowe z
przemieszczeniem
przemieszczeniem
TRYB ADRESOWANIA
TRYB ADRESOWANIA
Def.Przy
Def.Przy
adresowaniu natychmiastowym
adresowaniu natychmiastowym
argument
argument
rozkazu zawarty jest w kodzie rozkazu
rozkazu zawarty jest w kodzie rozkazu
Def.Przy
Def.Przy
adresowaniu natychmiastowym
adresowaniu natychmiastowym
argument
argument
rozkazu zawarty jest w kodzie rozkazu
rozkazu zawarty jest w kodzie rozkazu
Oznacza to, że w zasadzie nie jest to adresowanie w
Oznacza to, że w zasadzie nie jest to adresowanie w
zwykłym sensie. Argument jest umieszczany w kodzie
zwykłym sensie. Argument jest umieszczany w kodzie
rozkazu, więc musi być on znany w momencie pisania
rozkazu, więc musi być on znany w momencie pisania
programu.
programu.
Kod rozkazu
Kod rozkazu
Kod operacji
Kod operacji
Argument
Argument
Def.Przy adresowaniu bezpośrednim kod rozkazu zawiera
Def.Przy adresowaniu bezpośrednim kod rozkazu zawiera
adres komórki pamięci, w której przechowywany jest
adres komórki pamięci, w której przechowywany jest
argument rozkazu
argument rozkazu
Def.Przy adresowaniu bezpośrednim kod rozkazu zawiera
Def.Przy adresowaniu bezpośrednim kod rozkazu zawiera
adres komórki pamięci, w której przechowywany jest
adres komórki pamięci, w której przechowywany jest
argument rozkazu
argument rozkazu
W momencie pisania programu musimy zarezerwować adres
W momencie pisania programu musimy zarezerwować adres
przechowywania argumentu.
przechowywania argumentu.
Kod
Kod
rozkazu
rozkazu
Kod operacji
Kod operacji
Adres
Adres
Argument
Argument
P
A
M
IĘ
Ć
P
A
M
IĘ
Ć
TRYB ADRESOWANIA
TRYB ADRESOWANIA
Def.Przy
Def.Przy
adresowaniu rejestrowym
adresowaniu rejestrowym
w kodzie rozkazu
w kodzie rozkazu
zawarty jest rejestr, w którym przechowywany jest
zawarty jest rejestr, w którym przechowywany jest
argument
argument
Def.Przy
Def.Przy
adresowaniu rejestrowym
adresowaniu rejestrowym
w kodzie rozkazu
w kodzie rozkazu
zawarty jest rejestr, w którym przechowywany jest
zawarty jest rejestr, w którym przechowywany jest
argument
argument
Zaletą tego trybu jest krótki kod i szybkie wykonanie
Zaletą tego trybu jest krótki kod i szybkie wykonanie
Kod
Kod
rozkazu
rozkazu
Kod
Kod
operacji
operacji
Określeni
Określeni
e
e
rejestru
rejestru
Argument
Argument
REJESTR
REJESTR
Def.W trybie
Def.W trybie
adresowania pośredniego (rejestrowego
adresowania pośredniego (rejestrowego
pośredniego)
pośredniego)
kod rozkazu zawiera określenie rejestru
kod rozkazu zawiera określenie rejestru
bądź rejestrów, w których znajduje się adres komórki
bądź rejestrów, w których znajduje się adres komórki
pamięci zawierającej argument
pamięci zawierającej argument
Def.W trybie
Def.W trybie
adresowania pośredniego (rejestrowego
adresowania pośredniego (rejestrowego
pośredniego)
pośredniego)
kod rozkazu zawiera określenie rejestru
kod rozkazu zawiera określenie rejestru
bądź rejestrów, w których znajduje się adres komórki
bądź rejestrów, w których znajduje się adres komórki
pamięci zawierającej argument
pamięci zawierającej argument
Adres
Adres
REJESTR
REJESTR
Argument
Argument
P
A
M
IĘ
Ć
P
A
M
IĘ
Ć
Kod
Kod
operacji
operacji
Określeni
Określeni
e
e
rejestru
rejestru
Kod
Kod
rozkazu
rozkazu
TRYB ADRESOWANIA
TRYB ADRESOWANIA
Def.W trybie
Def.W trybie
adresowania indeksowego z
adresowania indeksowego z
przemieszczeniem
przemieszczeniem
adres argumentu
adres argumentu
przechowywanego w pamięci obliczany jest jako suma
przechowywanego w pamięci obliczany jest jako suma
zawartości rejestru określonego w kodzie rozkazu i
zawartości rejestru określonego w kodzie rozkazu i
wartości umieszczonej w kodzie rozkazu, zwanej
wartości umieszczonej w kodzie rozkazu, zwanej
przemieszczeniem
przemieszczeniem
Def.W trybie
Def.W trybie
adresowania indeksowego z
adresowania indeksowego z
przemieszczeniem
przemieszczeniem
adres argumentu
adres argumentu
przechowywanego w pamięci obliczany jest jako suma
przechowywanego w pamięci obliczany jest jako suma
zawartości rejestru określonego w kodzie rozkazu i
zawartości rejestru określonego w kodzie rozkazu i
wartości umieszczonej w kodzie rozkazu, zwanej
wartości umieszczonej w kodzie rozkazu, zwanej
przemieszczeniem
przemieszczeniem
Kod
Kod
rozkazu
rozkazu
Kod
Kod
operacji
operacji
Określeni
Określeni
e
e
rejestru
rejestru
wartość
wartość
REJESTR
REJESTR
Przemieszczen
Przemieszczen
ie
ie
Argument
Argument
P
A
M
IĘ
Ć
P
A
M
IĘ
Ć
SPOSÓB PREZENTOWANIA ROZKAZU
SPOSÓB PREZENTOWANIA ROZKAZU
1.
1.
Oznaczenie symboliczne rozkazu
Oznaczenie symboliczne rozkazu
Jest stosowane dla prezentacji programu człowiekowi lub przy
Jest stosowane dla prezentacji programu człowiekowi lub przy
pisaniu programów w asemblerze
pisaniu programów w asemblerze
Składa się ono z mnemonika (skrótu, który powinien sugerować
Składa się ono z mnemonika (skrótu, który powinien sugerować
rodzaj operacji) i pola argumentów
rodzaj operacji) i pola argumentów
JMP SHORT
JMP SHORT
NEXT
NEXT
mnemonik
mnemonik
argument
argument
PAMIĘĆ
ADRESY
11101011
000
00000011
001
010
011
NEXT
Kolejny rozkaz
100
101
110
EB 03h
EB 03h
argumen
argumen
t
t
kod operacji
kod operacji
Kod rozkazu w
Kod rozkazu w
kodzie
kodzie
heksadecymalnym
heksadecymalnym
Kod rozkazu
Kod rozkazu
binarnie (w
binarnie (w
pamięci)
pamięci)
................................
................................
SPOSÓB PREZENTOWANIA ROZKAZU
SPOSÓB PREZENTOWANIA ROZKAZU
2.
2.
Opis działania rozkazu
Opis działania rozkazu
Jest możliwy w formie słownej lub symbolicznej
Jest możliwy w formie słownej lub symbolicznej
Opis słowny:
Opis słowny:
„
„
Wykonaj skok i pobierz kod rozkazu z
Wykonaj skok i pobierz kod rozkazu z
komórki pamięci o adresie równym
komórki pamięci o adresie równym
etykieta”
etykieta”
(u nas NEXT=100)
Argumentem jest jednak nie adres komórki lecz długość
Argumentem jest jednak nie adres komórki lecz długość
skoku (interpretowana w kodzie U2). SHORT oznacza w tym
skoku (interpretowana w kodzie U2). SHORT oznacza w tym
przypadku skok bliski (w zakresie od 127 bajtów w górę do
przypadku skok bliski (w zakresie od 127 bajtów w górę do
128 bajtów w dół)
128 bajtów w dół)
Opis symboliczny:
Opis symboliczny:
(PC)
(PC)
(PC) + przesunięcie
(PC) + przesunięcie
czyli zwiększ licznik rozkazów o przesunięcie (o liczbę
czyli zwiększ licznik rozkazów o przesunięcie (o liczbę
komórek)
komórek)
SPOSÓB PREZENTOWANIA ROZKAZU
SPOSÓB PREZENTOWANIA ROZKAZU
3.
3.
Format rozkazu
Format rozkazu
Jest to sposób rozmieszczenia informacji w kodzie rozkazu. Jest
Jest to sposób rozmieszczenia informacji w kodzie rozkazu. Jest
on następujący:
on następujący:
Kod
Kod
rozkazu
rozkazu
111010
111010
11
11
przemieszcze
przemieszcze
nie
nie
kod
kod
operacji
operacji
argument
argument
4.
4.
Ustawienie flagi
Ustawienie flagi
Istotną informacją jest określenie czy są ustawiane flagi (i
Istotną informacją jest określenie czy są ustawiane flagi (i
które) przy wykonaniu rozkazu. W tym przykładzie flagi nie są
które) przy wykonaniu rozkazu. W tym przykładzie flagi nie są
ustawiane.
ustawiane.
5.
5.
Szybkość wykonywania rozkazu
Szybkość wykonywania rozkazu
Szybkość podawana jest jako ilość taktów zegara procesora
Szybkość podawana jest jako ilość taktów zegara procesora
potrzebnych do wykonania rozkazu. W tym przykładzie
potrzebnych do wykonania rozkazu. W tym przykładzie
procesor 80386 wykonuje rozkaz w 7 taktach.
procesor 80386 wykonuje rozkaz w 7 taktach.
PRZYKŁADOWE ROZKAZY
PRZYKŁADOWE ROZKAZY
Rozkazy przesłań:
Rozkazy przesłań:
MOV -
MOV -
move
move
- przesłanie słowa między dwoma rejestrami
- przesłanie słowa między dwoma rejestrami
STR -
STR -
store
store
- przesłanie słowa ze wskazanego w rozkazie rejestru do
- przesłanie słowa ze wskazanego w rozkazie rejestru do
komórki pamięci
komórki pamięci
LD -
LD -
load
load
- przesłanie słowa z pamięci do wskazanego rejestru
- przesłanie słowa z pamięci do wskazanego rejestru
XCH -
XCH -
exchange
exchange
- wymiana zawartości rejestrów
- wymiana zawartości rejestrów
Rozkazy arytmetyczno-logiczne:
Rozkazy arytmetyczno-logiczne:
ADD -
ADD -
addition
addition
- dodawanie
- dodawanie
SUB -
SUB -
subtraction
subtraction
- odejmowanie
- odejmowanie
MUL -
MUL -
multiplication
multiplication
- mnożenie
- mnożenie
DIV -
DIV -
division
division
- dzielenie
- dzielenie
NEG -
NEG -
negate
negate
- negacja
- negacja
DEC -
DEC -
decrement
decrement
- zmniejszanie wartości o
- zmniejszanie wartości o
jeden
jeden
INC -
INC -
increment
increment
- awiększanie wartości o
- awiększanie wartości o
jeden
jeden
Rozkazy sterujące pracą programu:
Rozkazy sterujące pracą programu:
JMP -
JMP -
jump
jump
- skok bezwarunkowy do wyspecyfikowanego miejsca w
- skok bezwarunkowy do wyspecyfikowanego miejsca w
pamięci
pamięci
CALL -
CALL -
jump to subroutine
jump to subroutine
- wywołanie podprogramu
- wywołanie podprogramu
RET -
RET -
return
return
- skok powrotny z podprogramu
- skok powrotny z podprogramu
SKIP -
SKIP -
skip
skip
- przeskok przez jeden rozkaz
- przeskok przez jeden rozkaz
Rozkazy sterujące pracą procesora :
Rozkazy sterujące pracą procesora :
HALT -
HALT -
stop
stop
- zatrzymanie wykonania programu
- zatrzymanie wykonania programu
NOP -
NOP -
no operation
no operation
- rozkaz pusty
- rozkaz pusty
AND -
AND -
conjuction
conjuction
- iloczyn
- iloczyn
OR -
OR -
disjunction
disjunction
- suma
- suma
EXOR -
EXOR -
exclusive-OR
exclusive-OR
-suma mod 2
-suma mod 2
NOT -
NOT -
complement
complement
- negacja
- negacja
PAMIĘCI
PAMIĘCI
dr inż. Jacek FLOREK
dr inż. Jacek FLOREK
Instytut Informatyki
Instytut Informatyki
Podstawowe cechy i klasyfikacja
Podstawowe cechy i klasyfikacja
Pamięci RAM
Pamięci RAM
Pamięci dynamiczne RAM
Pamięci dynamiczne RAM
Pamięci ROM
Pamięci ROM
10
PARAMETRY PAMIĘCI
PARAMETRY PAMIĘCI
Pamięć jako układ przeznaczony do przechowywania informacji
Pamięć jako układ przeznaczony do przechowywania informacji
binarnej można scharakteryzować następującymi
binarnej można scharakteryzować następującymi
parametrami:
parametrami:
•
pojemność
pojemność
•
szybkość
szybkość
•
koszt
koszt
•
pobór mocy
pobór mocy
Pojemność pamięci
Pojemność pamięci
określa ilość informacji jaką można w niej
określa ilość informacji jaką można w niej
przechować wyrażoną w bitach, bajtach lub słowach.
przechować wyrażoną w bitach, bajtach lub słowach.
Pamięć dzielona jest na fragmenty (w zależności od typu
Pamięć dzielona jest na fragmenty (w zależności od typu
pamięci) umożliwiające adresowanie.
pamięci) umożliwiające adresowanie.
W pamięci operacyjnej są to fragmenty określane długością
W pamięci operacyjnej są to fragmenty określane długością
słowa (8, 16, 32, 64 bity). Pojemność określa się podając liczbę
słowa (8, 16, 32, 64 bity). Pojemność określa się podając liczbę
słów i długość słowa, np. 512Kx64 - 2
słów i długość słowa, np. 512Kx64 - 2
19
19
słów 64-bitowych
słów 64-bitowych
W pamięciach masowych fragmentami są sektory (setki lub
W pamięciach masowych fragmentami są sektory (setki lub
tysiące słów).
tysiące słów).
PARAMETRY PAMIĘCI
PARAMETRY PAMIĘCI
Szybkość pamięci
Szybkość pamięci
określa jak często procesor (lub inne
określa jak często procesor (lub inne
urządzenie) może z niej korzystać.
urządzenie) może z niej korzystać.
•
czas dostępu - czas od momentu żądania informacji z
czas dostępu - czas od momentu żądania informacji z
pamięci do momentu, w którym ta informacja ukaże się na
pamięci do momentu, w którym ta informacja ukaże się na
wyjściu pamięci
wyjściu pamięci
•
czas cyklu - najkrótszy czas jaki musi upłynąć pomiędzy
czas cyklu - najkrótszy czas jaki musi upłynąć pomiędzy
dwoma żądaniami dostępu do pamięci
dwoma żądaniami dostępu do pamięci
•
szybkość transmisji - określa ile bajtów (bitów) można
szybkość transmisji - określa ile bajtów (bitów) można
przesłać pomiędzy pamięcią a innym urządzeniem w
przesłać pomiędzy pamięcią a innym urządzeniem w
jednostce czasu.
jednostce czasu.
Koszt pamięci
Koszt pamięci
określa cenę jaką należy ponieść za uzyskanie
określa cenę jaką należy ponieść za uzyskanie
wysokich parametrów pamięci
wysokich parametrów pamięci
szybciej - drożej !!!
szybciej - drożej !!!
wolniej - taniej !!!
wolniej - taniej !!!
Pobór mocy
Pobór mocy
określa jakie jest
określa jakie jest
zapotrzebowanie energetyczne na realizację
zapotrzebowanie energetyczne na realizację
funkcji pamięci zwłaszcza przy dążeniu do
funkcji pamięci zwłaszcza przy dążeniu do
wzrostu jej pojemności
wzrostu jej pojemności
!
PAMIĘCI
PAMIĘCI
Rejestrowa
Rejestrowa
Kieszeniowa
Kieszeniowa
Operacyjna
Operacyjna
Masowa
Masowa
Zewnętrzna
Zewnętrzna
Z dostępem swobodnym
Z dostępem swobodnym
(bezpośrednim)
(bezpośrednim)
Z dostępem cyklicznym
Z dostępem cyklicznym
Z dostępem
Z dostępem
sekwencyjnym
sekwencyjnym
Z dostępem
Z dostępem
asocjacyjnym
asocjacyjnym
ROM
ROM
RAM
RAM
DRAM
DRAM
(dynamiczne)
(dynamiczne)
SRAM
SRAM
(statyczne)
(statyczne)
H
ie
ra
rc
h
ia
p
a
m
ię
c
i
H
ie
ra
rc
h
ia
p
a
m
ię
c
i
D
o
s
tę
p
d
o
i
n
fo
rm
a
c
ji
D
o
s
tę
p
d
o
i
n
fo
rm
a
c
ji
PAMIĘCI RAM
PAMIĘCI RAM
Def. Pamięcią RAM (
Def. Pamięcią RAM (
Random Access Memory
Random Access Memory
) nazywamy
) nazywamy
pamięć półprzewodnikową o dostępie swobodnym
pamięć półprzewodnikową o dostępie swobodnym
przeznaczoną do zapisu i odczytu. RAM jest pamięcią
przeznaczoną do zapisu i odczytu. RAM jest pamięcią
ulotną, co oznacza, że po wyłączeniu zasilania dane są
ulotną, co oznacza, że po wyłączeniu zasilania dane są
tracone.
tracone.
Def. Pamięcią RAM (
Def. Pamięcią RAM (
Random Access Memory
Random Access Memory
) nazywamy
) nazywamy
pamięć półprzewodnikową o dostępie swobodnym
pamięć półprzewodnikową o dostępie swobodnym
przeznaczoną do zapisu i odczytu. RAM jest pamięcią
przeznaczoną do zapisu i odczytu. RAM jest pamięcią
ulotną, co oznacza, że po wyłączeniu zasilania dane są
ulotną, co oznacza, że po wyłączeniu zasilania dane są
tracone.
tracone.
Pamięć
Pamięć
2
2
n
n
x m
x m
adres
adres
E
E
zapis/odcz
zapis/odcz
yt
yt
n
n
m
m
Łączenie układów pamięci dla zwiększenia
Łączenie układów pamięci dla zwiększenia
pojemności:
pojemności:
•
zwiększanie długości słowa
zwiększanie długości słowa
•
zwiększanie ilości słów
zwiększanie ilości słów
PAMIĘCI RAM
PAMIĘCI RAM
zwiększanie długości słowa (rozbudowa szyny danych)
zwiększanie długości słowa (rozbudowa szyny danych)
Pamięć
Pamięć
1M x 4b
1M x 4b
adres
adres
E
E
z/o
z/o
20
20
D0
D0
D1
D1
D2
D2
D3
D3
Pamięć
Pamięć
1M x 1b
1M x 1b
D0
D0
Pamięć 4Mb z bitem
Pamięć 4Mb z bitem
parzystości
parzystości
Pamięć 8Mb z bitem
Pamięć 8Mb z bitem
parzystości
parzystości
Pamięć
Pamięć
1M x 4b
1M x 4b
adres
adres
E
E
z/o
z/o
20
20
D0
D0
D1
D1
D2
D2
D3
D3
Pamięć
Pamięć
1M x 1b
1M x 1b
D0
D0
Pamięć
Pamięć
1M x 4b
1M x 4b
D0
D0
D1
D1
D2
D2
D3
D3
D0 D1 D2
D0 D1 D2
D3
D3
Sposób stosowany w budowie modułów SIMM (
Sposób stosowany w budowie modułów SIMM (
Single In Line
Single In Line
Module
Module
)
)
D4 D5 D6 D7 D8
D4 D5 D6 D7 D8
PAMIĘCI RAM
PAMIĘCI RAM
zwiększanie liczby słów (rozbudowa szyny adresowej)
zwiększanie liczby słów (rozbudowa szyny adresowej)
Pamięć
Pamięć
256k x 4b
256k x 4b
adres
adres
E
E
z/o
z/o
18
18
D0
D0
D1
D1
D2
D2
D3
D3
Pamięć 256k x 4b
Pamięć 256k x 4b
Pamięć
Pamięć
256k x 4b
256k x 4b
D
E
K
O
D
E
R
D
E
K
O
D
E
R
E
E
z/o
z/o
A
0
-
A
0
-
A
1
7
A
1
7
D0
D0
D1
D1
D2
D2
D3
D3
Pamięć 1M x 4b
Pamięć 1M x 4b
Pamięć
Pamięć
256k x 4b
256k x 4b
D0
D0
D1
D1
D2
D2
D3
D3
Pamięć
Pamięć
256k x 4b
256k x 4b
D0
D0
D1
D1
D2
D2
D3
D3
Pamięć
Pamięć
256k x 4b
256k x 4b
D0
D0
D1
D1
D2
D2
D3
D3
D3 D2 D1
D3 D2 D1
D0
D0
E
E
E
E
E
E
18
18
A
1
8
A
1
9
A
1
8
A
1
9
PAMIĘCI RAM
PAMIĘCI RAM
dynamiczne i statyczne
dynamiczne i statyczne
CECHY PAMIĘCI
CECHY PAMIĘCI
DRAM
DRAM
SRAM
SRAM
szybkość
szybkość
mała
mała
duża
duża
koszt
koszt
niski
niski
wysoki
wysoki
pojemność
pojemność
duża
duża
mała
mała
pobór mocy
pobór mocy
mały
mały
duży
duży
łatwość scalania
łatwość scalania
duża
duża
mała
mała
konieczność odświeżania
konieczność odświeżania
tak
tak
nie
nie
główne zastosowanie
główne zastosowanie
główna pamięć
główna pamięć
pamięć
pamięć
operacyjna
operacyjna
kieszeniowa
kieszeniowa
(
(
cache
cache
)
)
PAMIĘĆ DYNAMICZNA RAM (DRAM)
PAMIĘĆ DYNAMICZNA RAM (DRAM)
adres
adres
dane
dane
RAS#
RAS#
CAS#
CAS#
WE#
WE#
OE#
OE#
CE#
CE#
OE# - zezwolenie na odczyt
OE# - zezwolenie na odczyt
WE# - zezwolenie na zapis
WE# - zezwolenie na zapis
CE# - uaktywnianie (strob)
CE# - uaktywnianie (strob)
RAS# - syg.wprowadzania adresu do
RAS# - syg.wprowadzania adresu do
pamięci
pamięci
CAS# - -‘’-
CAS# - -‘’-
-‘’- -‘’- -‘’-
-‘’- -‘’- -‘’-
adres
adres
RAS#
RAS#
CAS#
CAS#
DEKODER
DEKODER
KOLUMN
KOLUMN
R
E
JE
S
T
R
A
D
R
E
S
U
R
E
JE
S
T
R
A
D
R
E
S
U
W
IE
R
S
Z
A
W
IE
R
S
Z
A
D
E
K
O
D
E
R
D
E
K
O
D
E
R
W
IE
R
S
Z
Y
W
IE
R
S
Z
Y
REJESTR ADRESU
REJESTR ADRESU
KOLUMNY
KOLUMNY
0 dla aktywnego sygnału
0 dla aktywnego sygnału
RAS#
RAS#
1 dla aktywnego sygnału
1 dla aktywnego sygnału
CAS#
CAS#
adres
adres
kolumny
kolumny
d
o
w
e
jś
c
ia
d
o
w
e
jś
c
ia
a
d
re
s
o
w
e
g
a
d
re
s
o
w
e
g
o
D
R
A
M
o
D
R
A
M
adres
adres
wiersz
wiersz
n
n
2
2
n
n
n
n
n
n
S
S
WE1
WE1
WE0
WE0
PAMIĘĆ DYNAMICZNA RAM (DRAM)
PAMIĘĆ DYNAMICZNA RAM (DRAM)
operacje odczytu
operacje odczytu
t
t
c
c
-
-
minimalny czas pomiędzy dwoma
minimalny czas pomiędzy dwoma
cyklami
cyklami
RAS#
RAS#
t
t
a
a
-
-
czas
czas
dostępu
dostępu
t
t
D RAS-CAS
D RAS-CAS
-
-
opóźnienie sygnału CAS# względem
opóźnienie sygnału CAS# względem
RAS#
RAS#
Wyjście
Wyjście
danych
danych
Adres
Adres
wiersza
wiersza
Ważne
Ważne
dane
dane
Adres
Adres
kolumny
kolumny
Adres
Adres
wiersza
wiersza
CAS#
CAS#
Wejścia
Wejścia
adresow
adresow
e
e
pamięci
pamięci
S
S
OE#
OE#
PAMIĘĆ DYNAMICZNA RAM (DRAM)
PAMIĘĆ DYNAMICZNA RAM (DRAM)
stany oczekiwania
stany oczekiwania
BCLK
BCLK
A23 - A0
A23 - A0
W/R#
W/R#
READY
READY
D15 - D0
D15 - D0
T
T
i
i
T
T
i
i
T
T
i
i
T
T
i
i
T
T
1
1
T
T
2
2
T
T
1
1
T
T
2
2
T
T
2
2
T
T
1
1
T
T
2
2
T
T
2
2
VA
VA
VA
VA
VA
VA
odczyt
odczyt
(0
(0
oczekiwania
oczekiwania
)
)
uśpienie
uśpienie
uśpienie
uśpienie
uśpienie
uśpienie
uśpienie
uśpienie
odczyt
odczyt
(1
(1
oczekiwania
oczekiwania
)
)
zapis
zapis
(1
(1
oczekiwania
oczekiwania
)
)
DO dane zapisywane
DO dane zapisywane
DI dane odczytywane
DI dane odczytywane
VA ważny adres
VA ważny adres
stan nieistotny
stan nieistotny
DI
DI
DI
DI
DO
DO
PAMIĘĆ DYNAMICZNA RAM (DRAM)
PAMIĘĆ DYNAMICZNA RAM (DRAM)
odświeżanie
odświeżanie
Odświeżanie komórek pamięci dynamicznych polega na cyklicznym
Odświeżanie komórek pamięci dynamicznych polega na cyklicznym
doładowaniu pojemności pamiętających przechowujących wartość
doładowaniu pojemności pamiętających przechowujących wartość
logiczną „1”.
logiczną „1”.
Operacja odświeżania realizowana jest przez specjalistyczne układy
Operacja odświeżania realizowana jest przez specjalistyczne układy
logiczne, będące elementem płyty głównej komputera.
logiczne, będące elementem płyty głównej komputera.
Istnieją cztery podstawowe sposoby odświeżania pamięci
Istnieją cztery podstawowe sposoby odświeżania pamięci
dynamicznych RAM:
dynamicznych RAM:
•
sygnałem RAS (tryb wierszowy)
sygnałem RAS (tryb wierszowy)
•
sygnałem CAS przed RAS (tryb statyczny)
sygnałem CAS przed RAS (tryb statyczny)
•
odświeżanie ukryte
odświeżanie ukryte
•
autoodświeżanie
autoodświeżanie
PAMIĘĆ KIESZENIOWA (STATYCZNA)
PAMIĘĆ KIESZENIOWA (STATYCZNA)
RAM
RAM
Zjawisko lokalności
Zjawisko lokalności
- procesor odwołuje się najczęściej do pamięci
- procesor odwołuje się najczęściej do pamięci
(
(
trafienie
trafienie
) w pewnym niewielkim obszarze (w okolicach danego
) w pewnym niewielkim obszarze (w okolicach danego
programu) - bardzo rzadko do obszarów odległych. Stąd stosowanie
programu) - bardzo rzadko do obszarów odległych. Stąd stosowanie
szybkich pamięci kieszeniowych (cache) zawierających właśnie taki
szybkich pamięci kieszeniowych (cache) zawierających właśnie taki
lokalny obszar pamięci.
lokalny obszar pamięci.
0
0
1
1
q-1
q-1
1 blok
1 blok
2 blok
2 blok
k-1 blok
k-1 blok
k-2 blok
k-2 blok
...
...
0
0
1
1
m-1
m-1
2
2
m-2
m-2
q słów
q słów
log
log
2
2
k
k
pamięć operacyjna
pamięć operacyjna
pamięć kieszeniowa
pamięć kieszeniowa
zawiera tylko
zawiera tylko
m
m
spośród
spośród
k
k
bloków
bloków
(k>>m)
(k>>m)
Gdy procesor zażąda dostępu do bloku, którego nie ma w pamięci cache
Gdy procesor zażąda dostępu do bloku, którego nie ma w pamięci cache
(
(
chybienie
chybienie
) to następuje wymiana zawartości jednej komórki pamięci
) to następuje wymiana zawartości jednej komórki pamięci
kieszeniowej.
kieszeniowej.
Nr
Nr
bloku
bloku
PAMIĘĆ KIESZENIOWA (STATYCZNA)
PAMIĘĆ KIESZENIOWA (STATYCZNA)
RAM
RAM
H - współczynnik
H - współczynnik
trafienia
trafienia
Jeżeli założymy pojemność pamięci operacyjnej: 8192 bloki (k) po 8 bajtów (q)
Jeżeli założymy pojemność pamięci operacyjnej: 8192 bloki (k) po 8 bajtów (q)
tj. 8192*8 = 65536B = 64KB
tj. 8192*8 = 65536B = 64KB
oraz pojemność pamięci kieszeniowej m=128 linii
oraz pojemność pamięci kieszeniowej m=128 linii
to długość linii pamięci kieszeniowej wyniesie
to długość linii pamięci kieszeniowej wyniesie
s=8*q + log
s=8*q + log
2
2
k = 8*8 + log
k = 8*8 + log
2
2
8193 = 64+13=77bitów
8193 = 64+13=77bitów
q = 8
q = 8
q =
q =
64
64
q =
q =
16
16
0,3
0,3
0,6
0,6
0,9
0,9
5 kB
5 kB
10 kB
10 kB
15 kB
15 kB
20 kB
20 kB
pojemność pamięci
pojemność pamięci
kieszeniowej
kieszeniowej
PAMIĘCI ROM
PAMIĘCI ROM
Def. Pamięcią ROM (
Def. Pamięcią ROM (
Read Only Memory
Read Only Memory
) nazywamy pamięć
) nazywamy pamięć
półprzewodnikową o dostępie swobodnym przeznaczoną
półprzewodnikową o dostępie swobodnym przeznaczoną
tylko do odczytu uprzednio zapisanych danych. Oznacza
tylko do odczytu uprzednio zapisanych danych. Oznacza
to, że nie można do niej zapisywać danych w trakcie
to, że nie można do niej zapisywać danych w trakcie
normalnej pracy w systemie. ROM jest pamięcią
normalnej pracy w systemie. ROM jest pamięcią
nieulotną, co oznacza, że po wyłączeniu zasilania dane
nieulotną, co oznacza, że po wyłączeniu zasilania dane
nie są tracone.
nie są tracone.
Def. Pamięcią ROM (
Def. Pamięcią ROM (
Read Only Memory
Read Only Memory
) nazywamy pamięć
) nazywamy pamięć
półprzewodnikową o dostępie swobodnym przeznaczoną
półprzewodnikową o dostępie swobodnym przeznaczoną
tylko do odczytu uprzednio zapisanych danych. Oznacza
tylko do odczytu uprzednio zapisanych danych. Oznacza
to, że nie można do niej zapisywać danych w trakcie
to, że nie można do niej zapisywać danych w trakcie
normalnej pracy w systemie. ROM jest pamięcią
normalnej pracy w systemie. ROM jest pamięcią
nieulotną, co oznacza, że po wyłączeniu zasilania dane
nieulotną, co oznacza, że po wyłączeniu zasilania dane
nie są tracone.
nie są tracone.
•
MROM (
MROM (
mascable ROM
mascable ROM
) zawartość pamięci ustalana jest w
) zawartość pamięci ustalana jest w
procesie produkcji (za pomocą odpowiednich masek) - BIOS do
procesie produkcji (za pomocą odpowiednich masek) - BIOS do
obsługi klawiatury
obsługi klawiatury
•
PROM (
PROM (
programmable ROM
programmable ROM
) pamięć jednokrotnie programowalna
) pamięć jednokrotnie programowalna
przez użytkownika - obecnie nieużywana
przez użytkownika - obecnie nieużywana
•
EPROM pamięć wielokrotnie programowalna w ultrafioletowych
EPROM pamięć wielokrotnie programowalna w ultrafioletowych
programatorach - obecnie wychodzi z użycia
programatorach - obecnie wychodzi z użycia
•
EEPROM pamięć kasowana i programowana na drodze
EEPROM pamięć kasowana i programowana na drodze
elektrycznej (podobnie jak RAM ale czas zapisu jest
elektrycznej (podobnie jak RAM ale czas zapisu jest
nieporównywalnie długi) - flash-BIOS (uaktualniany BIOS)
nieporównywalnie długi) - flash-BIOS (uaktualniany BIOS)
UKŁADY I OPERACJE WEJŚCIA/WYJŚCIA
UKŁADY I OPERACJE WEJŚCIA/WYJŚCIA
dr inż. Jacek FLOREK
dr inż. Jacek FLOREK
Instytut Informatyki
Instytut Informatyki
Układy wejścia/wyjścia
Układy wejścia/wyjścia
Operacje wejścia/wyjścia
Operacje wejścia/wyjścia
11
UKŁDY WEJŚCIA/WYJŚCIA
UKŁDY WEJŚCIA/WYJŚCIA
Def. Układem we/wy nazywamy układ elektroniczny
Def. Układem we/wy nazywamy układ elektroniczny
pośredniczący w wymianie informacji pomiędzy
pośredniczący w wymianie informacji pomiędzy
mikroprocesorem i pamięcią systemu z jednej strony a
mikroprocesorem i pamięcią systemu z jednej strony a
urządzeniem peryferyjnym (zewnętrznym urządzeniem
urządzeniem peryferyjnym (zewnętrznym urządzeniem
współpracującym) z drugiej.
współpracującym) z drugiej.
Dla systemu mikroprocesorowego układ we/wy widoczny
Dla systemu mikroprocesorowego układ we/wy widoczny
jest jako rejestr lub zespół rejestrów o określonych
jest jako rejestr lub zespół rejestrów o określonych
adresach oraz pewien zestaw sygnałów sterujących.
adresach oraz pewien zestaw sygnałów sterujących.
Def. Układem we/wy nazywamy układ elektroniczny
Def. Układem we/wy nazywamy układ elektroniczny
pośredniczący w wymianie informacji pomiędzy
pośredniczący w wymianie informacji pomiędzy
mikroprocesorem i pamięcią systemu z jednej strony a
mikroprocesorem i pamięcią systemu z jednej strony a
urządzeniem peryferyjnym (zewnętrznym urządzeniem
urządzeniem peryferyjnym (zewnętrznym urządzeniem
współpracującym) z drugiej.
współpracującym) z drugiej.
Dla systemu mikroprocesorowego układ we/wy widoczny
Dla systemu mikroprocesorowego układ we/wy widoczny
jest jako rejestr lub zespół rejestrów o określonych
jest jako rejestr lub zespół rejestrów o określonych
adresach oraz pewien zestaw sygnałów sterujących.
adresach oraz pewien zestaw sygnałów sterujących.
Urządzenia peryferyjne mogą służyć do wprowadzania,
Urządzenia peryferyjne mogą służyć do wprowadzania,
wyprowadzania bądź przechowywania informacji lub być układami
wyprowadzania bądź przechowywania informacji lub być układami
wykonawczymi.
wykonawczymi.
Dlaczego konieczne jest pośredniczenie?
Dlaczego konieczne jest pośredniczenie?
•
różnice w szybkości działania (konieczne jest więc sterowanie
różnice w szybkości działania (konieczne jest więc sterowanie
przepływem informacji)
przepływem informacji)
•
różnice w parametrach elektrycznych (konieczna więc
różnice w parametrach elektrycznych (konieczna więc
translacja poziomu sygnałów)
translacja poziomu sygnałów)
•
wymagają podania informacji o określonym formacie wraz z
wymagają podania informacji o określonym formacie wraz z
pewnymi sygnałami sterującymi (np. Sygnał wideo wraz z
pewnymi sygnałami sterującymi (np. Sygnał wideo wraz z
synchronizacją)
synchronizacją)
Układy wej/wyj podobnie jak pamięci posiadają wejścia adresowe i
Układy wej/wyj podobnie jak pamięci posiadają wejścia adresowe i
sterujące.
sterujące.
UKŁDY WEJŚCIA/WYJŚCIA
UKŁDY WEJŚCIA/WYJŚCIA
UKŁDY WEJŚCIA/WYJŚCIA
UKŁDY WEJŚCIA/WYJŚCIA
WSPÓŁADRESOWALNE Z PAMIĘCIĄ
WSPÓŁADRESOWALNE Z PAMIĘCIĄ
Szyna adresowa
Szyna adresowa
PAMIĘĆ
PAMIĘĆ
OPERACYJNA
OPERACYJNA
CPU
CPU
I/O
I/O
MEMR MEMW
MEMR MEMW
MEMR MEMW
MEMR MEMW
MEMR MEMW
MEMR MEMW
Def. W przypadku układów współadresowalnych z pamięcią
Def. W przypadku układów współadresowalnych z pamięcią
operacyjną wybieramy obiekt, na którym dokonujemy
operacyjną wybieramy obiekt, na którym dokonujemy
operacji (komórka pamięci lub rejestr układu we/wy), za
operacji (komórka pamięci lub rejestr układu we/wy), za
pomocą adresu (istnieje potrzeba wydzielenia w pamięci
pomocą adresu (istnieje potrzeba wydzielenia w pamięci
przestrzeni dla adresów układów we/wy). Sygnały sterujące
przestrzeni dla adresów układów we/wy). Sygnały sterujące
są wspólne dla pamięci i układów we/wy.
są wspólne dla pamięci i układów we/wy.
Def. W przypadku układów współadresowalnych z pamięcią
Def. W przypadku układów współadresowalnych z pamięcią
operacyjną wybieramy obiekt, na którym dokonujemy
operacyjną wybieramy obiekt, na którym dokonujemy
operacji (komórka pamięci lub rejestr układu we/wy), za
operacji (komórka pamięci lub rejestr układu we/wy), za
pomocą adresu (istnieje potrzeba wydzielenia w pamięci
pomocą adresu (istnieje potrzeba wydzielenia w pamięci
przestrzeni dla adresów układów we/wy). Sygnały sterujące
przestrzeni dla adresów układów we/wy). Sygnały sterujące
są wspólne dla pamięci i układów we/wy.
są wspólne dla pamięci i układów we/wy.
Np. karta
Np. karta
graficzna
graficzna
UKŁDY WEJŚCIA/WYJŚCIA IZOLOWANE
UKŁDY WEJŚCIA/WYJŚCIA IZOLOWANE
Szyna adresowa
Szyna adresowa
PAMIĘĆ
PAMIĘĆ
OPERACYJNA
OPERACYJNA
CPU
CPU
I/O
I/O
MEMR
MEMR
MEMW
MEMW
MEMR MEMW
MEMR MEMW
IOR IOW
IOR IOW
Def. Dla izolowanych układów we/wy wybieramy obiekt, na
Def. Dla izolowanych układów we/wy wybieramy obiekt, na
którym dokonujemy operacji (komórka pamięci lub rejestr
którym dokonujemy operacji (komórka pamięci lub rejestr
układu we/wy), za pomocą sygnałów sterujących.
układu we/wy), za pomocą sygnałów sterujących.
Przestrzenie adresowe pamięci układów we/wy są
Przestrzenie adresowe pamięci układów we/wy są
rozdzielone
rozdzielone
Def. Dla izolowanych układów we/wy wybieramy obiekt, na
Def. Dla izolowanych układów we/wy wybieramy obiekt, na
którym dokonujemy operacji (komórka pamięci lub rejestr
którym dokonujemy operacji (komórka pamięci lub rejestr
układu we/wy), za pomocą sygnałów sterujących.
układu we/wy), za pomocą sygnałów sterujących.
Przestrzenie adresowe pamięci układów we/wy są
Przestrzenie adresowe pamięci układów we/wy są
rozdzielone
rozdzielone
IOR
IOR
IOW
IOW
Sygnały
Sygnały
sterujące
sterujące
dla pamięci
dla pamięci
Sygnały sterujące
Sygnały sterujące
dla
dla
układów we/wy
układów we/wy
Np. sterownik
Np. sterownik
dysku twardego
dysku twardego
OPERACJE WEJŚCIA/WYJŚCIA
OPERACJE WEJŚCIA/WYJŚCIA
Def. Operacjami wejścia/wyjścia nazywamy całokształt działań
Def. Operacjami wejścia/wyjścia nazywamy całokształt działań
potrzebnych do realizacji wymiany informacji pomiędzy
potrzebnych do realizacji wymiany informacji pomiędzy
mikroprocesorem i pamięcią z jednej strony a układem
mikroprocesorem i pamięcią z jednej strony a układem
wejścia/wyjścia z drugiej.
wejścia/wyjścia z drugiej.
Def. Operacjami wejścia/wyjścia nazywamy całokształt działań
Def. Operacjami wejścia/wyjścia nazywamy całokształt działań
potrzebnych do realizacji wymiany informacji pomiędzy
potrzebnych do realizacji wymiany informacji pomiędzy
mikroprocesorem i pamięcią z jednej strony a układem
mikroprocesorem i pamięcią z jednej strony a układem
wejścia/wyjścia z drugiej.
wejścia/wyjścia z drugiej.
Operacje wejścia/wyjścia mogą być realizowane:
Operacje wejścia/wyjścia mogą być realizowane:
•
od początku do końca przy udziale procesora - przesyłana
od początku do końca przy udziale procesora - przesyłana
informacja przepływa przez rejestry procesora, który także
informacja przepływa przez rejestry procesora, który także
steruje każdym krokiem realizacji operacji - są to
steruje każdym krokiem realizacji operacji - są to
operacje z
operacje z
bezpośrednim sterowaniem przez mikroprocesor
bezpośrednim sterowaniem przez mikroprocesor
•
poprzez zainicjowanie operacji przez procesor, który następnie
poprzez zainicjowanie operacji przez procesor, który następnie
przekazuje nadzór nad realizacją operacji innemu układowi
przekazuje nadzór nad realizacją operacji innemu układowi
(zarządcy magistrali) - są to
(zarządcy magistrali) - są to
operacje z pośrednim sterowaniem
operacje z pośrednim sterowaniem
przez mikroprocesor (z bezpośrednim dostępem do pamięci -
przez mikroprocesor (z bezpośrednim dostępem do pamięci -
DMA)
DMA)
.
.
OPERACJE Z BEZPOŚREDNIM
OPERACJE Z BEZPOŚREDNIM
STEROWANIEM PRZEZ
STEROWANIEM PRZEZ
MIKROPROCESOR
MIKROPROCESOR
Operacje wejścia/wyjścia z bezpośrednim sterowaniem przez
Operacje wejścia/wyjścia z bezpośrednim sterowaniem przez
mikroprocesor :
mikroprocesor :
•
bezwarunkowe operacje wejścia/wyjścia
bezwarunkowe operacje wejścia/wyjścia
•
operacje z testowaniem stanu układu wejścia/wyjścia
operacje z testowaniem stanu układu wejścia/wyjścia
•
operacje z przerwaniem programu
operacje z przerwaniem programu
Def. Bezwarunkową operacją wejścia/wyjścia nazywamy taką
Def. Bezwarunkową operacją wejścia/wyjścia nazywamy taką
operację, przy realizacji której mikroprocesor nie
operację, przy realizacji której mikroprocesor nie
sprawdza gotowości układu wejścia/wyjścia do tej wymiany.
sprawdza gotowości układu wejścia/wyjścia do tej wymiany.
Są to operacje najprostsze realizowane tylko w niektórych
Są to operacje najprostsze realizowane tylko w niektórych
przypadkach np. przesłanie sygnału do wyświetlania
przypadkach np. przesłanie sygnału do wyświetlania
informacji za pomocą zestawu diod
informacji za pomocą zestawu diod
elektroluminescencyjnych.
elektroluminescencyjnych.
Def. Bezwarunkową operacją wejścia/wyjścia nazywamy taką
Def. Bezwarunkową operacją wejścia/wyjścia nazywamy taką
operację, przy realizacji której mikroprocesor nie
operację, przy realizacji której mikroprocesor nie
sprawdza gotowości układu wejścia/wyjścia do tej wymiany.
sprawdza gotowości układu wejścia/wyjścia do tej wymiany.
Są to operacje najprostsze realizowane tylko w niektórych
Są to operacje najprostsze realizowane tylko w niektórych
przypadkach np. przesłanie sygnału do wyświetlania
przypadkach np. przesłanie sygnału do wyświetlania
informacji za pomocą zestawu diod
informacji za pomocą zestawu diod
elektroluminescencyjnych.
elektroluminescencyjnych.
Def. Przy realizacji operacji wejścia/wyjścia z testowaniem
Def. Przy realizacji operacji wejścia/wyjścia z testowaniem
stanu układu wejścia/wyjścia, mikroprocesor sprawdza
stanu układu wejścia/wyjścia, mikroprocesor sprawdza
sygnał (np. określony bit kontrolny) gotowości układu do
sygnał (np. określony bit kontrolny) gotowości układu do
wymiany. W przypadku potwierdzenia gotowości do
wymiany. W przypadku potwierdzenia gotowości do
wymiany przez układ jest ona realizowana. Operacje te są
wymiany przez układ jest ona realizowana. Operacje te są
stosowane np. przy współpracy z przetwornikiem a/c -
stosowane np. przy współpracy z przetwornikiem a/c -
procesor cyklicznie przepytuje przetwornik (tzw. pętla
procesor cyklicznie przepytuje przetwornik (tzw. pętla
przepytywania) do chwili uzyskania zgłoszenia gotowości.
przepytywania) do chwili uzyskania zgłoszenia gotowości.
Def. Przy realizacji operacji wejścia/wyjścia z testowaniem
Def. Przy realizacji operacji wejścia/wyjścia z testowaniem
stanu układu wejścia/wyjścia, mikroprocesor sprawdza
stanu układu wejścia/wyjścia, mikroprocesor sprawdza
sygnał (np. określony bit kontrolny) gotowości układu do
sygnał (np. określony bit kontrolny) gotowości układu do
wymiany. W przypadku potwierdzenia gotowości do
wymiany. W przypadku potwierdzenia gotowości do
wymiany przez układ jest ona realizowana. Operacje te są
wymiany przez układ jest ona realizowana. Operacje te są
stosowane np. przy współpracy z przetwornikiem a/c -
stosowane np. przy współpracy z przetwornikiem a/c -
procesor cyklicznie przepytuje przetwornik (tzw. pętla
procesor cyklicznie przepytuje przetwornik (tzw. pętla
przepytywania) do chwili uzyskania zgłoszenia gotowości.
przepytywania) do chwili uzyskania zgłoszenia gotowości.
OPERACJE Z BEZPOŚREDNIM
OPERACJE Z BEZPOŚREDNIM
STEROWANIEM PRZEZ
STEROWANIEM PRZEZ
MIKROPROCESOR
MIKROPROCESOR
operacje z przerwaniem programu
operacje z przerwaniem programu
Operacje wejścia/wyjścia z przerwaniem programu eliminują wady
Operacje wejścia/wyjścia z przerwaniem programu eliminują wady
operacji z testowaniem stanu układu.
operacji z testowaniem stanu układu.
Procesor wykonuje
Procesor wykonuje
program główny
program główny
oczekując na zgłoszenie gotowości.
oczekując na zgłoszenie gotowości.
Zgłoszenie powoduje przerwanie wykonywania programu głównego i
Zgłoszenie powoduje przerwanie wykonywania programu głównego i
zapamiętanie informacji potrzebnej do późniejszego powrotu do programu
zapamiętanie informacji potrzebnej do późniejszego powrotu do programu
głównego. Procesor przechodzi do wykonania
głównego. Procesor przechodzi do wykonania
programu obsługi przerwań
programu obsługi przerwań
(
(
ISR -
ISR -
interrupt service routine
interrupt service routine
) - następuje wymiana informacji z układem we/wy. Po
) - następuje wymiana informacji z układem we/wy. Po
zakończeniu wymiany (programu obsługi przerwania) procesor kontynuuje
zakończeniu wymiany (programu obsługi przerwania) procesor kontynuuje
przerwany program główny.
przerwany program główny.
INSTRUKCJA 1
INSTRUKCJA 1
INSTRUKCJA 2
INSTRUKCJA 2
INSTRUKCJA 3
INSTRUKCJA 3
INSTRUKCJA 4
INSTRUKCJA 4
INSTRUKCJA 11
INSTRUKCJA 11
INSTRUKCJA 12
INSTRUKCJA 12
INSTRUKCJA 5
INSTRUKCJA 5
INSTRUKCJA 6
INSTRUKCJA 6
INSTRUKCJA 7
INSTRUKCJA 7
INSTRUKCJA 8
INSTRUKCJA 8
INSTRUKCJA 9
INSTRUKCJA 9
RET 10
RET 10
Program główny
Zgłoszenie
przerwania
Odtworzenie
stanu
rejestrów
procesora
Początek
programu obsługi
przerwania
Zapamiętanie
stanu
rejestrów
procesora
OPERACJE Z BEZPOŚREDNIM
OPERACJE Z BEZPOŚREDNIM
STEROWANIEM PRZEZ
STEROWANIEM PRZEZ
MIKROPROCESOR
MIKROPROCESOR
operacje z przerwaniem programu
operacje z przerwaniem programu
W przypadku pojawienia się jednoczesnego kilku zgłoszeń od
W przypadku pojawienia się jednoczesnego kilku zgłoszeń od
urządzeń we/wy sytuacja może się komplikować. Dlatego stosuje się
urządzeń we/wy sytuacja może się komplikować. Dlatego stosuje się
tzw.
tzw.
sterownik przerwań
sterownik przerwań
.
.
Główne zadania sterownika przerwań:
Główne zadania sterownika przerwań:
•
pośredniczenie w przyjmowaniu zgłoszeń przerwań pomiędzy
pośredniczenie w przyjmowaniu zgłoszeń przerwań pomiędzy
procesorem i układami we/wy
procesorem i układami we/wy
•
przyjmowanie zgłoszeń od wielu układów we/wy (procesor
przyjmowanie zgłoszeń od wielu układów we/wy (procesor
posiada tylko jedno wejście zgłoszenia przerwań)
posiada tylko jedno wejście zgłoszenia przerwań)
•
wybór spośród wielu zgłoszeń tego, które zostanie obsłużone
wybór spośród wielu zgłoszeń tego, które zostanie obsłużone
•
sygnalizowanie wyboru przez podanie adresu układu we/wy, z
sygnalizowanie wyboru przez podanie adresu układu we/wy, z
którym zostanie dokonana wymiana (adresu programu obsługi
którym zostanie dokonana wymiana (adresu programu obsługi
przerwania realizującego tą wymianę, a właściwie numer
przerwania realizującego tą wymianę, a właściwie numer
pozycji w
pozycji w
tablicy wektorów przerwań
tablicy wektorów przerwań
)
)
•
wygenerowanie sygnału zgłoszenia przerwania bezpośrednio
wygenerowanie sygnału zgłoszenia przerwania bezpośrednio
do procesora
do procesora
OPERACJE Z BEZPOŚREDNIM
OPERACJE Z BEZPOŚREDNIM
STEROWANIEM PRZEZ
STEROWANIEM PRZEZ
MIKROPROCESOR
MIKROPROCESOR
operacje z przerwaniem programu - tablica wektorów
operacje z przerwaniem programu - tablica wektorów
przerwań
przerwań
Początek IRS
Początek IRS
CS
CS
IP
IP
CS
CS
IP
IP
CS
CS
IP
IP
Pamięć
Pamięć
operacyjna
operacyjna
Numer
przerwania
Adres
Adres
początku
początku
programu
programu
obsługi
obsługi
przerwania
przerwania
Tablica
Tablica
wektoró
wektoró
w
w
przerwa
przerwa
ń
ń
CS
CS
IP
IP
CS
CS
IP
IP
Sterowni
Sterowni
k
k
przerwań
przerwań
OPERACJE Z POŚREDNIM
OPERACJE Z POŚREDNIM
STEROWANIEM PRZEZ
STEROWANIEM PRZEZ
MIKROPROCESOR (DMA)
MIKROPROCESOR (DMA)
Def. Operacje wejścia/wyjścia polegające na inicjowaniu
Def. Operacje wejścia/wyjścia polegające na inicjowaniu
operacji przez procesor i przekazaniu sterowania
operacji przez procesor i przekazaniu sterowania
specjalizowanemu układowi zwanemu
specjalizowanemu układowi zwanemu
sterownikiem DMA
sterownikiem DMA
(direct memory access)
(direct memory access)
nazywamy operacją o
nazywamy operacją o
bezpośrednim dostępie do pamięci.
bezpośrednim dostępie do pamięci.
Def. Operacje wejścia/wyjścia polegające na inicjowaniu
Def. Operacje wejścia/wyjścia polegające na inicjowaniu
operacji przez procesor i przekazaniu sterowania
operacji przez procesor i przekazaniu sterowania
specjalizowanemu układowi zwanemu
specjalizowanemu układowi zwanemu
sterownikiem DMA
sterownikiem DMA
(direct memory access)
(direct memory access)
nazywamy operacją o
nazywamy operacją o
bezpośrednim dostępie do pamięci.
bezpośrednim dostępie do pamięci.
W operacji DMA transmisja informacji przebiega pomiędzy układem we/wy a
W operacji DMA transmisja informacji przebiega pomiędzy układem we/wy a
wydzielonym obszarem pamięci pod kontrolą sterownika DMA. Po zgłoszeniu
wydzielonym obszarem pamięci pod kontrolą sterownika DMA. Po zgłoszeniu
żądania przejęcia kontroli nad magistralami (za pomocą sygnału HOLD)
żądania przejęcia kontroli nad magistralami (za pomocą sygnału HOLD)
procesor inicjuje operację i przechodzi w stan zawieszenia (odseparowanie się
procesor inicjuje operację i przechodzi w stan zawieszenia (odseparowanie się
od magistral). Po zakończeniu transmisji sterownik DMA zwraca procesorowi
od magistral). Po zakończeniu transmisji sterownik DMA zwraca procesorowi
kontrolę nad magistralami.
kontrolę nad magistralami.
Szyna adresowa
Szyna adresowa
PAMIĘĆ
PAMIĘĆ
OPERACYJNA
OPERACYJNA
STEROWNI
STEROWNI
K DMA
K DMA
I/O
I/O
MEMR
MEMR
MEMW
MEMW
MEMR MEMW
MEMR MEMW
IOR IOW
IOR IOW
IOR
IOR
IOW
IOW
CPU
CPU
HOLD
HOLD
Inicjowanie
Inicjowanie
operacji
operacji
Określa:
Określa:
•
wielkość bloku do transmisji
wielkość bloku do transmisji
•
sposób transmisji (blokowa,
sposób transmisji (blokowa,
pojedynczymi słowami, na
pojedynczymi słowami, na
żądanie)
żądanie)
•
adres pierwszej komórki
adres pierwszej komórki
bufora pamięci
bufora pamięci
•
rodzaj operacji (zapis, odczyt)
rodzaj operacji (zapis, odczyt)
zawieszenie
zawieszenie
PRACA PROCESORA W TRYBIE
PRACA PROCESORA W TRYBIE
RZECZYWISTYM I CHRONIONYM
RZECZYWISTYM I CHRONIONYM
dr inż. Jacek FLOREK
dr inż. Jacek FLOREK
Instytut Informatyki
Instytut Informatyki
Praca procesora w trybie rzeczywistym
Praca procesora w trybie rzeczywistym
Praca procesora w trybie chronionym
Praca procesora w trybie chronionym
Praca wielozadaniowa
Praca wielozadaniowa
Stronicowanie
Stronicowanie
12
PRACA PROCESORA W TRYBIE RZECZYWISTYM
PRACA PROCESORA W TRYBIE RZECZYWISTYM
W typowym procesorze 16 bitowym (8086/88) mamy:
W typowym procesorze 16 bitowym (8086/88) mamy:
•
rejestry 16 bitowe
rejestry 16 bitowe
•
magistrala danych 16 bitowa
magistrala danych 16 bitowa
•
ale szyna adresowa 20 bitowa - adres 20 bitowy
ale szyna adresowa 20 bitowa - adres 20 bitowy
20 bitowy adres pozwala zaadresować 2
20 bitowy adres pozwala zaadresować 2
20
20
=1048576B=1MB pamięci
=1048576B=1MB pamięci
operacyjnej dzielonej na segmenty
operacyjnej dzielonej na segmenty
PAMIĘ
PAMIĘ
Ć
Ć
1M
1M
B
B
Segment
Segment
programu
programu
(kodu)
(kodu)
Segment
Segment
danych
danych
Segment
Segment
stosu
stosu
Segment
Segment
danych
danych
dodatkowy
dodatkowy
ch
ch
początek segmentu wyznacza
początek segmentu wyznacza
zawartość rejestru segmentu programu
zawartość rejestru segmentu programu
CS*16 czyli
CS*16 czyli
rejestr CS
rejestr CS
000
000
0
0
3
3
0
0
15
15
0
0
początek segmentu wyznacza
początek segmentu wyznacza
zawartość rejestru segmentu danych
zawartość rejestru segmentu danych
DS*16 czyli
DS*16 czyli
rejestr DS
rejestr DS
000
000
0
0
3
3
0
0
15
15
0
0
101100100110
101100100110
1101
1101
początek segmentu wyznacza
początek segmentu wyznacza
zawartość rejestru segmentu stosu
zawartość rejestru segmentu stosu
SS*16 czyli
SS*16 czyli
rejestr SS
rejestr SS
000
000
0
0
3
3
0
0
15
15
0
0
początek segmentu wyznaczają zawartości
początek segmentu wyznaczają zawartości
rejestrów dodatkowych segmentów danych
rejestrów dodatkowych segmentów danych
ES (GS, FS) *16 czyli
ES (GS, FS) *16 czyli
rejestr
rejestr
ES(GS,FS)
ES(GS,FS)
000
000
0
0
3
3
0
0
15
15
0
0
Adres
Adres
00000
00000
H
H
Adres
Adres
FFFFF
FFFFF
H
H
PRACA PROCESORA W TRYBIE RZECZYWISTYM
PRACA PROCESORA W TRYBIE RZECZYWISTYM
Część segmentowa adresu wyznacza adres segmentu, ale aby
Część segmentowa adresu wyznacza adres segmentu, ale aby
zaadresować określoną komórkę należy posługiwać się adresem
zaadresować określoną komórkę należy posługiwać się adresem
fizycznym.
fizycznym.
Adres fizyczny (20 bitowy) określa się według reguły:
Adres fizyczny (20 bitowy) określa się według reguły:
Adres fizyczny = część segmentowa *16 + przemieszczenie (tzw.adres
Adres fizyczny = część segmentowa *16 + przemieszczenie (tzw.adres
efektywny)
efektywny)
rejestr
rejestr
segmentowy
segmentowy
000
000
0
0
15
15
CS=1011001001101
CS=1011001001101
101
101
adres
adres
efektywny
efektywny
0
0
15
15
IP=0100011111110
IP=0100011111110
011
011
wskaźnik
wskaźnik
rozkazów
rozkazów
rejestr segmentu
rejestr segmentu
programu
programu
+
+
adres
adres
fizyczny
fizyczny
0
0
19
19
1011001001101101
1011001001101101
0000
0000
0100011111110
0100011111110
011
011
CS
CS
0000
0000
IP
IP
+
+
+
+
ADRES
ADRES
FIZYCZNY
FIZYCZNY
1011011011101100
1011011011101100
0011
0011
B2D60
B2D60
+
+
47F3
47F3
B6EC3
B6EC3
0
0
H
H
=000
=000
B
B
0 3
0 3
0
0
PRACA PROCESORA W TRYBIE RZECZYWISTYM
PRACA PROCESORA W TRYBIE RZECZYWISTYM
O tym, które pary rejestrów segmentowych i wskaźnikowych zostaną
O tym, które pary rejestrów segmentowych i wskaźnikowych zostaną
użyte do określania adresu fizycznego nie decyduje przypadek lecz
użyte do określania adresu fizycznego nie decyduje przypadek lecz
pewne reguły
pewne reguły
wskaźnik rozkazów
wskaźnik rozkazów
(IP)
(IP)
zawsze: rejestr segmentu programu (CS)
zawsze: rejestr segmentu programu (CS)
wskaźnik stosu (SP)
wskaźnik stosu (SP)
zawsze: rejestr segmentu stosu (SS)
zawsze: rejestr segmentu stosu (SS)
wskaźnik bazy (BP)
wskaźnik bazy (BP)
rejestr segmentu stosu (SS)
rejestr segmentu stosu (SS)
pozostałe rejestry
pozostałe rejestry
rejestr segmentu danych (DS)
rejestr segmentu danych (DS)
rejestr indeksowy
rejestr indeksowy
przeznaczenia (DI)
przeznaczenia (DI)
rejestr dodatkowy (ES)
rejestr dodatkowy (ES)
PRACA PROCESORA W TRYBIE RZECZYWISTYM
PRACA PROCESORA W TRYBIE RZECZYWISTYM
Interpretacja adresu fizycznego:
Interpretacja adresu fizycznego:
•
zawartość rejestru segmentowego *16 podaje adres początku
zawartość rejestru segmentowego *16 podaje adres początku
segmentu
segmentu
•
od tego początku odsuwamy się o liczbę komórek podaną w adresie
od tego początku odsuwamy się o liczbę komórek podaną w adresie
efektywnym
efektywnym
•
adres efektywny jest 16 bitowy to pozwala zaadresować
adres efektywny jest 16 bitowy to pozwala zaadresować
65536B=64kB
65536B=64kB
•
pamięć jest widziana przez procesor jako 64kB okno
pamięć jest widziana przez procesor jako 64kB okno
•
okno to można przesuwać przeładowując rejestry segmentowe (skok
okno to można przesuwać przeładowując rejestry segmentowe (skok
16B bo mnożymy przez 16)
16B bo mnożymy przez 16)
początek segmentu (zawartość rejestru segmentowego*16)
początek segmentu (zawartość rejestru segmentowego*16)
PAMIĘ
PAMIĘ
Ć
Ć
1MB
1MB
adresowana
adresowana
komórka
komórka
pamięci
pamięci
Adres
Adres
00000
00000
H
H
Adres
Adres
FFFFF
FFFFF
H
H
6
4
k
B
6
4
k
B
początek segmentu
początek segmentu
(zawartość rejestru
(zawartość rejestru
segmentowego*16)
segmentowego*16)
przesunięcie adres
przesunięcie adres
efektywny)
efektywny)
okno przez
okno przez
które widziana
które widziana
jest pamięć
jest pamięć
PRACA PROCESORA W TRYBIE RZECZYWISTYM
PRACA PROCESORA W TRYBIE RZECZYWISTYM
Segmenty mogą być rozłączne lub mogą się częściowo lub całkowicie
Segmenty mogą być rozłączne lub mogą się częściowo lub całkowicie
pokrywać.
pokrywać.
Jest to sytuacja niepożądana - przyjęcie za bliskich adresów
Jest to sytuacja niepożądana - przyjęcie za bliskich adresów
segmentowych może spowodować np. zamazanie kodu programu przez
segmentowych może spowodować np. zamazanie kodu programu przez
zapisywane dane
zapisywane dane
PAMIĘ
PAMIĘ
Ć
Ć
Segment
Segment
programu
programu
(kodu)
(kodu)
Segment
Segment
danych
danych
Segment stosu i
Segment stosu i
danych
danych
dodatkowych
dodatkowych
CS=2A00
CS=2A00
H
H
DS=41FF
DS=41FF
H
H
SS=4FFF
SS=4FFF
H
H
ES=4FFF
ES=4FFF
H
H
Obszar wspólny danych, stosu i
Obszar wspólny danych, stosu i
danych dodatkowych
danych dodatkowych
Obszar wspólny stosu i danych
Obszar wspólny stosu i danych
dodatkowych
dodatkowych
PRACA PROCESORA W TRYBIE RZECZYWISTYM
PRACA PROCESORA W TRYBIE RZECZYWISTYM
Segmenty pamięci komputera z procesorem 8086
Segmenty pamięci komputera z procesorem 8086
LOGICZNY FIZYCZNY LOGICZNY FIZYCZNY
0H
0000H:0000H 00000H 0000H:FFFFH 0FFFFH Programy użytkownika
1H
1000H:0000H 10000H 1000H:FFFFH 1FFFFH Programy użytkownika
2H
2000H:0000H 20000H 2000H:FFFFH 2FFFFH Programy użytkownika
3H
3000H:0000H 30000H 3000H:FFFFH 3FFFFH Programy użytkownika
4H
4000H:0000H 40000H 4000H:FFFFH 4FFFFH Programy użytkownika
5H
5000H:0000H 50000H 5000H:FFFFH 5FFFFH Programy użytkownika
6H
6000H:0000H 60000H 6000H:FFFFH 6FFFFH Programy użytkownika
7H
7000H:0000H 70000H 7000H:FFFFH 7FFFFH Programy użytkownika
8H
8000H:0000H 80000H 8000H:FFFFH 8FFFFH Programy użytkownika
9H
9000H:0000H 90000H 9000H:FFFFH 9FFFFH Programy użytkownika
AH
A000H:0000H A0000H A000H:FFFFH AFFFFH
Pamięć ekranu
BH
B000H:0000H B0000H B000H:FFFFH BFFFFH
Pamięć ekranu
CH
C000H:0000H C0000H C000H:FFFFH CFFFFH
BIOS-rozszerzenie
DH
D000H:0000H D0000H D000H:FFFFH DFFFFH
BIOS-rozszerzenie
EH
E000H:0000H E0000H E000H:FFFFH EFFFFH
BIOS
FH
F000H:0000H F0000H F000H:FFFFH FFFFFH
BIOS
ADRES POCZĄTKU
ADRES KOŃCA
NUMER
ZASTOSOWANIE
adres logiczny
adres logiczny
zawartość rejestru segmentowego: przesunięcie
zawartość rejestru segmentowego: przesunięcie
PRACA PROCESORA W TRYBIE WIRTUALNYM CHRONIONYM
PRACA PROCESORA W TRYBIE WIRTUALNYM CHRONIONYM
Gdyby szyna adresowa miała 32 bity wówczas fizycznie można by zaadresować do
Gdyby szyna adresowa miała 32 bity wówczas fizycznie można by zaadresować do
2
2
32
32
=4GB pamięci
=4GB pamięci
w systemach z procesorem Pentium procesor rozpoczyna pracę w trybie rzeczywistym,
w systemach z procesorem Pentium procesor rozpoczyna pracę w trybie rzeczywistym,
a przejście z trybu rzeczywistego do chronionego (wirtualnego) realizowane jest przez
a przejście z trybu rzeczywistego do chronionego (wirtualnego) realizowane jest przez
ustawienie bitu PE w rejestrze MSW (jest częścią rejestru sterującego CR0).
ustawienie bitu PE w rejestrze MSW (jest częścią rejestru sterującego CR0).
Procesor wykorzystuje wówczas tzw. pamięć wirtualną tj. część pamięci masowej.
Procesor wykorzystuje wówczas tzw. pamięć wirtualną tj. część pamięci masowej.
Wówczas pamięć masowa jest przedłużeniem pamięci operacyjnej.
Wówczas pamięć masowa jest przedłużeniem pamięci operacyjnej.
Dlatego stosuje się następujący mechanizm pamięci wirtualnej:
Dlatego stosuje się następujący mechanizm pamięci wirtualnej:
•
do pamięci operacyjnej przepisuje się segmenty informacji z pamięci masowej
do pamięci operacyjnej przepisuje się segmenty informacji z pamięci masowej
•
program żąda dostępu do informacji podając adres wirtualny (logiczny)
program żąda dostępu do informacji podając adres wirtualny (logiczny)
•
sprawdzana jest obecność poszukiwanej informacji w pamięci operacyjnej
sprawdzana jest obecność poszukiwanej informacji w pamięci operacyjnej
(informacja o segmentach przechowywana jest w tablicy deskryptorów)
(informacja o segmentach przechowywana jest w tablicy deskryptorów)
•
w przypadku braku poszukiwana informacja jest przepisywana z pamięci masowej (z
w przypadku braku poszukiwana informacja jest przepisywana z pamięci masowej (z
dysku) do pamięci operacyjnej (i z pamięci operacyjnej na dysk - wymiana
dysku) do pamięci operacyjnej (i z pamięci operacyjnej na dysk - wymiana
informacji)
informacji)
•
obliczany jest adres fizyczny potrzebnej informacji w pamięci operacyjnej -
obliczany jest adres fizyczny potrzebnej informacji w pamięci operacyjnej -
translacja adresu wirtualnego na fizyczny (przy pomocy tablicy deskryptorów)
translacja adresu wirtualnego na fizyczny (przy pomocy tablicy deskryptorów)
•
poszukiwana informacja jest dostępna dla procesora z pamięci operacyjnej
poszukiwana informacja jest dostępna dla procesora z pamięci operacyjnej
Przypomnijmy:
Przypomnijmy:
Pamięć masowa
Pamięć masowa
(PM)
(PM)
Pamięć operacyjna
Pamięć operacyjna
(PAO)
(PAO)
duża pojemność, wolne działanie, niski
duża pojemność, wolne działanie, niski
koszt
koszt
mała pojemność, szybkie działanie, wysoki
mała pojemność, szybkie działanie, wysoki
koszt
koszt
Adres logiczny w trybie chronionym składa się z:
Adres logiczny w trybie chronionym składa się z:
•
16 bitowej części segmentowej (selektor segmentu)
16 bitowej części segmentowej (selektor segmentu)
•
32 bitowego przemieszczenia (adres efektywny)
32 bitowego przemieszczenia (adres efektywny)
Dwuwymiarowa budowa adresu logicznego prowadzi do podziału pamięci na
Dwuwymiarowa budowa adresu logicznego prowadzi do podziału pamięci na
segmenty zwanego
segmenty zwanego
segmentacją przestrzeni logicznej
segmentacją przestrzeni logicznej
.
.
Teoretycznie możliwe jest więc adresowanie przestrzeni logicznej o
Teoretycznie możliwe jest więc adresowanie przestrzeni logicznej o
pojemności 2
pojemności 2
48
48
adresów tj. 256TB pamięci.
adresów tj. 256TB pamięci.
Nie wszystkie jednak bajty części segmentowej są wykorzystane do
Nie wszystkie jednak bajty części segmentowej są wykorzystane do
adresowania:
adresowania:
•
bajty 0 - 13 wyznaczają numer deskryptora segmentu (tak na prawdę
bajty 0 - 13 wyznaczają numer deskryptora segmentu (tak na prawdę
jeden z tych bitów określa typ tablicy deskryptorów - lokalny lub globalny)
jeden z tych bitów określa typ tablicy deskryptorów - lokalny lub globalny)
co pozwala na wybór 16k deskryptorów segmentu
co pozwala na wybór 16k deskryptorów segmentu
•
bajty 14 - 15 określają poziom ochronny zadania żądającego dostępu do
bajty 14 - 15 określają poziom ochronny zadania żądającego dostępu do
pamięci
pamięci
i przestrzeń adresów widzianych przez program wynosi 64TB
i przestrzeń adresów widzianych przez program wynosi 64TB
Tablica zajmuje jeden segment o objętości 64kB. W tablicy deskryptorów
Tablica zajmuje jeden segment o objętości 64kB. W tablicy deskryptorów
występuje 8192 pól (tzw. deskryptorów segmentów). Każdy deskryptor
występuje 8192 pól (tzw. deskryptorów segmentów). Każdy deskryptor
zawiera następujące pola:
zawiera następujące pola:
•
adres bazowy segmentu (32 bity)
adres bazowy segmentu (32 bity)
•
wielkość segmentu (20 bitów)
wielkość segmentu (20 bitów)
- segmenty nie muszą być jednakowe
- segmenty nie muszą być jednakowe
•
atrybuty
atrybuty
•
czy segment obecny fizycznie w pamięci (1 bit)
czy segment obecny fizycznie w pamięci (1 bit)
•
pole dostępne dla programu (1 bit)
pole dostępne dla programu (1 bit)
•
poziom ochronny (2 bity)
poziom ochronny (2 bity)
•
ziarnistość segmentu (1 bit)
ziarnistość segmentu (1 bit)
•
długość słowa (1 bit)
długość słowa (1 bit)
•
czy segment w pamięci (1 bit)
czy segment w pamięci (1 bit)
•
typ segmentu (3 bity)
typ segmentu (3 bity)
•
czy segment użyty (1 bit)
czy segment użyty (1 bit)
PRACA PROCESORA W TRYBIE WIRTUALNYM CHRONIONYM
PRACA PROCESORA W TRYBIE WIRTUALNYM CHRONIONYM
deskryptor segmentu
deskryptor segmentu
deskryptor segmentu
deskryptor segmentu
deskryptor segmentu
deskryptor segmentu
Tablica deskryptorów
Tablica deskryptorów
..
.
..
.
+
+
PRACA PROCESORA W TRYBIE WIRTUALNYM CHRONIONYM
PRACA PROCESORA W TRYBIE WIRTUALNYM CHRONIONYM
Selektor segmentu
Selektor segmentu
0
0
13
13
15
15
PAMIĘĆ
PAMIĘĆ
OPERACYJNA (PAO)
OPERACYJNA (PAO)
Tablica deskryptorów
Tablica deskryptorów
deskryptor
deskryptor
Adres efektywny (przemieszczenie)
Adres efektywny (przemieszczenie)
0
0
3
3
1
1
Adres bazowy
Adres bazowy
s
e
g
m
e
n
t
s
e
g
m
e
n
t
s
e
g
m
e
n
t
s
e
g
m
e
n
t
A
d
re
s
fi
zy
c
zn
y
A
d
re
s
fi
zy
c
zn
y
Jeśli w deskryptorze istnieje adnotacja, że segmentu
Jeśli w deskryptorze istnieje adnotacja, że segmentu
nie ma w PAO to segment jest przenoszony z pamięci
nie ma w PAO to segment jest przenoszony z pamięci
masowej do operacyjnej w miejsce innego segmentu
masowej do operacyjnej w miejsce innego segmentu
Adres logiczny - 46 bitów
Adres logiczny - 46 bitów
PRACA PROCESORA W TRYBIE WIRTUALNYM CHRONIONYM
PRACA PROCESORA W TRYBIE WIRTUALNYM CHRONIONYM
Algorytm tworzenia (obliczania) 32 bitowego adresu
Algorytm tworzenia (obliczania) 32 bitowego adresu
fizycznego na podstawie adresu logicznego
fizycznego na podstawie adresu logicznego
1. Program odwołuje się do adresu logicznego składającego się z:
1. Program odwołuje się do adresu logicznego składającego się z:
•
selektora segmentu
selektora segmentu
•
adresu efektywnego (przemieszczenia)
adresu efektywnego (przemieszczenia)
2. Selektor wskazuje określony deskryptor segmentu w tablicy
2. Selektor wskazuje określony deskryptor segmentu w tablicy
deskryptorów
deskryptorów
3. Jedno z pól deskryptora określa czy segment jest obecny w PAO.
3. Jedno z pól deskryptora określa czy segment jest obecny w PAO.
Jeśli nie to następuje wczytanie segmentu do PAO z pamięci
Jeśli nie to następuje wczytanie segmentu do PAO z pamięci
masowej.
masowej.
Z deskryptora można określić również:
Z deskryptora można określić również:
•
adres początku segmentu = adres bazowy
adres początku segmentu = adres bazowy
•
adres końca segmentu = adres bazowy + wielkość segmentu
adres końca segmentu = adres bazowy + wielkość segmentu
Jeśli przemieszczenie będzie większe od wielkości segmentu to
Jeśli przemieszczenie będzie większe od wielkości segmentu to
procesor nie dopuści do zamazania sąsiednich segmentów
procesor nie dopuści do zamazania sąsiednich segmentów
przechodząc w tryb obsługi błędu (tzw. wyjątek) - to jest przewaga
przechodząc w tryb obsługi błędu (tzw. wyjątek) - to jest przewaga
trybu wirtualnego nad rzeczywistym
trybu wirtualnego nad rzeczywistym
4. Odczytanie z deskryptora adresu bazowego i dodanie do niego
4. Odczytanie z deskryptora adresu bazowego i dodanie do niego
przemieszczenia (adresu efektywnego) w celu określenia adresu
przemieszczenia (adresu efektywnego) w celu określenia adresu
fizycznego poszukiwanej komórki pamięci.
fizycznego poszukiwanej komórki pamięci.
MECHANIZM PAMIĘCI WIRTUALNEJ
MECHANIZM PAMIĘCI WIRTUALNEJ
PODSUMOWANIE
PODSUMOWANIE
Mechanizm pamięci wirtualnej polega na tym, że nie cała przestrzeń
Mechanizm pamięci wirtualnej polega na tym, że nie cała przestrzeń
adresów logicznych widzianych przez zadanie ma swoje oparcie w pamięci
adresów logicznych widzianych przez zadanie ma swoje oparcie w pamięci
fizycznej.
fizycznej.
Przestrzeń adresów logicznych (selektor segmentu: przemieszczenie)
Przestrzeń adresów logicznych (selektor segmentu: przemieszczenie)
odwołujących się do potrzebnych zadaniu segmentów kodu, danych i stosu
odwołujących się do potrzebnych zadaniu segmentów kodu, danych i stosu
jest odwzorowywana na 4GB przestrzeń 32 bitowych adresów liniowych, z
jest odwzorowywana na 4GB przestrzeń 32 bitowych adresów liniowych, z
których wszystkie mogą być użyte w zadaniu.
których wszystkie mogą być użyte w zadaniu.
Jednak ta przestrzeń nie może być cała zrealizowana w fizycznej pamięci
Jednak ta przestrzeń nie może być cała zrealizowana w fizycznej pamięci
komputera. Dlatego w praktyce zostaje podzielona na 1M stron i tylko
komputera. Dlatego w praktyce zostaje podzielona na 1M stron i tylko
część spośród nich jest jednocześnie przechowywana w pamięci fizycznej.
część spośród nich jest jednocześnie przechowywana w pamięci fizycznej.
Zarządzaniem przeładowywaniem stron pomiędzy dyskiem i pamięcią
Zarządzaniem przeładowywaniem stron pomiędzy dyskiem i pamięcią
operacyjną
zajmuje
się
system
operacyjny
za
pomocą
funkcji
operacyjną
zajmuje
się
system
operacyjny
za
pomocą
funkcji
wykonywanych przez procesor w trybie tzw. wyjątku procesora (tzn.
wykonywanych przez procesor w trybie tzw. wyjątku procesora (tzn.
przerwania generowanego przez sam procesor).
przerwania generowanego przez sam procesor).
PRACA WIELOZADANIOWA W SYSTEMIE
PRACA WIELOZADANIOWA W SYSTEMIE
JEDNOPROCESOROWYM
JEDNOPROCESOROWYM
Praca wielozadaniowa polega na przełączaniu zadań.
Praca wielozadaniowa polega na przełączaniu zadań.
1. Procesor realizuje zadanie do momentu:
1. Procesor realizuje zadanie do momentu:
•
upływu czas przeznaczonego na realizację zadania
upływu czas przeznaczonego na realizację zadania
•
w którym chwilowo brak określonych informacji
w którym chwilowo brak określonych informacji
•
żądania zmiany zadania przez użytkownika
żądania zmiany zadania przez użytkownika
2. Zapamiętanie stanu realizacji zadania
2. Zapamiętanie stanu realizacji zadania
3. Zmiana wykonywanego zadania
3. Zmiana wykonywanego zadania
itd.....
itd.....
Istnieje konieczność kontroli dostępu poszczególnych
Istnieje konieczność kontroli dostępu poszczególnych
zadań do:
zadań do:
•
informacji
informacji
•
zasobów systemu
zasobów systemu
Wielozadaniowość może być realizowana programowo,
Wielozadaniowość może być realizowana programowo,
ale procesor Pentium realizuje to sprzętowo
ale procesor Pentium realizuje to sprzętowo
wykorzystując
wykorzystując
•
systemowe segmenty stanu zadania (TSS)
systemowe segmenty stanu zadania (TSS)
•
rejestr zadań (TR)
rejestr zadań (TR)
STRONICOWANIE
STRONICOWANIE
W procesorze Pentium pracującym w trybie wirtualnym, oprócz mechanizmu
W procesorze Pentium pracującym w trybie wirtualnym, oprócz mechanizmu
segmentacji, dostępny jest także mechanizm stronicowania.
segmentacji, dostępny jest także mechanizm stronicowania.
Mechanizm stronicowania pozwala na podział pamięci wirtualnej na strony o
Mechanizm stronicowania pozwala na podział pamięci wirtualnej na strony o
stałej wielkości (4kB lub 4MB)
stałej wielkości (4kB lub 4MB)
Mechanizm stronicowania ustawia się przy pomocy bitu PG w rejestrze
Mechanizm stronicowania ustawia się przy pomocy bitu PG w rejestrze
sterującym CR0
sterującym CR0
Mechanizm stronicowania wspomaga się pomocniczą pamięcią cache -
Mechanizm stronicowania wspomaga się pomocniczą pamięcią cache -
przyspieszenie
przyspieszenie
pozycja w katalogu
pozycja w katalogu
stron
stron
pozycja w tablicy stron
pozycja w tablicy stron
pozycja na stronie
pozycja na stronie
11
11
12
12
0
0
21
21
22
22
31
31
adres tablicy
adres tablicy
stron
stron
adres strony w
adres strony w
pamięci
pamięci
adres strony w
adres strony w
pamięci
pamięci
wybiera tabelę stron
wybiera tabelę stron
wybiera stronę w pamięci
wybiera stronę w pamięci
katalog stron
katalog stron
tabele stron
tabele stron
4kB strony w
4kB strony w
pamięci
pamięci
...
...
1
1
1024
1024
1
1
1024
1024
1
1
1024
1024
1
1
1024
1024
1
1
2
2
1
1
M
M
STRONICOWANIE
STRONICOWANIE
pozycja w katalogu
pozycja w katalogu
stron
stron
pozycja na stronie
pozycja na stronie
0
0
21
21
22
22
31
31
adres strony w
adres strony w
pamięci
pamięci
wybiera stronę w pamięci
wybiera stronę w pamięci
katalog stron
katalog stron
4MB strony w
4MB strony w
pamięci
pamięci
1
1
1024
1024
dla stron 4MB
dla stron 4MB
1
1
2
2
1k
1k
Dodatki
PRACA PROCESORA W TRYBIE WIRTUALNYM CHRONIONYM
PRACA PROCESORA W TRYBIE WIRTUALNYM CHRONIONYM
przykład dla procesora 80286 (najprostszy)
przykład dla procesora 80286 (najprostszy)
Numer
Numer
bloku
bloku
1MB
1MB
1MB
1MB
1MB
1MB
1MB
1MB
1MB
1MB
1MB
1MB
1MB
1MB
1MB
1MB
Deskryptor bloku
Deskryptor bloku
5
5
00
00
0
0
00
00
1
1
01
01
0
0
01
01
1
1
10
10
0
0
10
10
1
1
11
11
0
0
11
11
1
1
01
01
1
1
0
0
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
M
B
8
M
B
PAMIĘĆ
PAMIĘĆ
MASOWA
MASOWA
1MB
1MB
1MB
1MB
5
5
3
3
PAMIĘĆ
PAMIĘĆ
OPERACYJNA
OPERACYJNA
Adres bazowy
w PAO
Bit
obecności
NR deskryptora
(nr bloku w PM)
0
000
0
001
0
010
100000H
1
011
0
100
000000H
1
101
0
110
0
111
Deskryptor bloku
Deskryptor bloku
3
3
20
20
0
0
000000H
000000H
0FFFFFH
0FFFFFH
100000H
100000H
1FFFFFH
1FFFFFH
Adresy
Adresy
pamięci
pamięci
Tablica deskryptorów
Tablica deskryptorów
1111111111111111
1111111111111111
1111
1111
= 3FFFFFH
= 3FFFFFH
20
20
2
2
0
0
0
0
selektor
selektor
przesunięcie
przesunięcie
100000H
100000H
FFFFFH
FFFFFH
+
+
1FFFFFH
1FFFFFH
Adres fizyczny =
Adres fizyczny =
23 bitowy adres pozwala zaadresować 8MB pamięci wirtualnej przydzielonej
23 bitowy adres pozwala zaadresować 8MB pamięci wirtualnej przydzielonej
realizowanemu programowi.
realizowanemu programowi.
Pamięć operacyjna posiada 2MB pojemności (pomijając obszar na system operacyjny i
Pamięć operacyjna posiada 2MB pojemności (pomijając obszar na system operacyjny i
tablicę deskryptorów), więc adres fizyczny jest 21 bajtowy
tablicę deskryptorów), więc adres fizyczny jest 21 bajtowy
Adres bazowy w
Adres bazowy w
PAO
PAO
Przesunięcie
Przesunięcie
PRACA PROCESORA W TRYBIE WIRTUALNYM CHRONIONYM
PRACA PROCESORA W TRYBIE WIRTUALNYM CHRONIONYM
przykład dla procesora 80286 (najprostszy)
przykład dla procesora 80286 (najprostszy)
1. Program odwołuje się do adresu wirtualnego 3FFFFFH składającego
1. Program odwołuje się do adresu wirtualnego 3FFFFFH składającego
się z:
się z:
•
pola selektora: w którym bloku programu znajduje się
pola selektora: w którym bloku programu znajduje się
informacja czyli którego deskryptora użyć?
informacja czyli którego deskryptora użyć?
•
przesunięcia: jak daleko od początku bloku znajduje się
przesunięcia: jak daleko od początku bloku znajduje się
informacja?
informacja?
2. Selektor (w naszym przypadku) zawiera informację o bloku nr 3
2. Selektor (w naszym przypadku) zawiera informację o bloku nr 3
3. Czy blok nr 3 jest w PAO? Czy bit obecności jest równy „1”? - w tym
3. Czy blok nr 3 jest w PAO? Czy bit obecności jest równy „1”? - w tym
przypadku jest !
przypadku jest !
4. Odczytywany jest adres bazowy bloku w PAO
4. Odczytywany jest adres bazowy bloku w PAO
5. Do adresu bazowego dodawane jest przesunięcie z adresu
5. Do adresu bazowego dodawane jest przesunięcie z adresu
wirtualnego
wirtualnego
5. Otrzymany 21 bitowy adres jest adresem fizycznym w PAO, pod
5. Otrzymany 21 bitowy adres jest adresem fizycznym w PAO, pod
którym znajduje się poszukiwana informacja
którym znajduje się poszukiwana informacja
Algorytm tworzenia (obliczania) 21 bitowego adresu fizycznego
Algorytm tworzenia (obliczania) 21 bitowego adresu fizycznego
na podstawie 23 bitowego adresu wirtualnego
na podstawie 23 bitowego adresu wirtualnego
Gdy nie ma to realizowane są dodatkowe
Gdy nie ma to realizowane są dodatkowe
czynności
czynności
PRACA PROCESORA W TRYBIE WIRTUALNYM CHRONIONYM
PRACA PROCESORA W TRYBIE WIRTUALNYM CHRONIONYM
przykład dla procesora 80286 (najprostszy)
przykład dla procesora 80286 (najprostszy)
3.1. Bloku nr 7 nie ma w PAO
3.1. Bloku nr 7 nie ma w PAO
3.2. Blok nr 7 wczytany jest do PAO w miejsce np. bloku nr 3
3.2. Blok nr 7 wczytany jest do PAO w miejsce np. bloku nr 3
3.3. Modyfikowane są deskryptory usuniętego i załadowanego bloku
3.3. Modyfikowane są deskryptory usuniętego i załadowanego bloku
Algorytm dodatkowych czynności tworzenia (obliczania) 21
Algorytm dodatkowych czynności tworzenia (obliczania) 21
bitowego adresu fizycznego na podstawie 23 bitowego adresu
bitowego adresu fizycznego na podstawie 23 bitowego adresu
wirtualnego
wirtualnego
Numer
Numer
bloku
bloku
1MB
1MB
1MB
1MB
1MB
1MB
1MB
1MB
1MB
1MB
1MB
1MB
1MB
1MB
1MB
1MB
00
00
0
0
00
00
1
1
01
01
0
0
01
01
1
1
10
10
0
0
10
10
1
1
11
11
0
0
11
11
1
1
11
11
1
1
0
0
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
M
B
8
M
B
PAMIĘĆ
PAMIĘĆ
MASOWA
MASOWA
1MB
1MB
1MB
1MB
5
5
7
7
PAMIĘĆ
PAMIĘĆ
OPERACYJNA
OPERACYJNA
Adres bazowy
w PAO
Bit
obecności
NR deskryptora
(nr bloku w PM)
0
000
0
001
0
010
100000H
0
011
0
100
000000H
1
101
0
110
100000H
1
111
20
20
0
0
000000H
000000H
0FFFFFH
0FFFFFH
100000H
100000H
1FFFFFH
1FFFFFH
Adresy
Adresy
pamięci
pamięci
Tablica deskryptorów
Tablica deskryptorów
1111000000000000
1111000000000000
00000
00000
=
=
7F0000H
7F0000H
20
20
2
2
0
0
0
0
selektor
selektor
przesunięcie
przesunięcie
100000H
100000H
F0000H
F0000H
+
+
1F0000H
1F0000H
Adres fizyczny =
Adres fizyczny =
Adres bazowy w
Adres bazowy w
PAO
PAO
Przesunięcie
Przesunięcie
PRACA PROCESORA W TRYBIE WIRTUALNYM CHRONIONYM
PRACA PROCESORA W TRYBIE WIRTUALNYM CHRONIONYM
dla procesora Pentium
dla procesora Pentium
Selektorem wybierającym odpowiednią pozycję w tablicy
Selektorem wybierającym odpowiednią pozycję w tablicy
deskryptorów jest zawartość rejestru segmentowego (14 bitów a 2
deskryptorów jest zawartość rejestru segmentowego (14 bitów a 2
bity określają poziom ochrony).
bity określają poziom ochrony).
Umożliwia to wybór 2
Umożliwia to wybór 2
14
14
=16384=16k segmentów.
=16384=16k segmentów.
Przesunięcie stanowi 32 bity więc rozmiar segmentu wynosi 2
Przesunięcie stanowi 32 bity więc rozmiar segmentu wynosi 2
32
32
=4GB
=4GB
Tak więc wielkość przestrzeni pamięci wirtualnej wynosi 16k
Tak więc wielkość przestrzeni pamięci wirtualnej wynosi 16k
x
x
4GB=64TB
4GB=64TB
PAMIĘĆ
PAMIĘĆ
OPERACYJNA
OPERACYJNA
Tablica
Tablica
deskryptorów
deskryptorów
Deskryptor segmentu
Deskryptor segmentu
rejestr
rejestr
segmentowy
segmentowy
przesunięcie
przesunięcie
31
31
0
0
15
15
0
0
adres
adres
efektywny
efektywny
0
0
31
31
+
+
adres
adres
fizyczny
fizyczny
0
0
31
31
13
13
selektor
selektor
Adres logiczny- 46
Adres logiczny- 46
bitów
bitów
adres bazowy
adres bazowy
segmentu
segmentu
Koniec Dodatki
KONCEPCJA PAMIĘCI PODRĘCZNEJ (CACHE)
KONCEPCJA PAMIĘCI PODRĘCZNEJ (CACHE)
dr inż. Jacek FLOREK
dr inż. Jacek FLOREK
Instytut Informatyki
Instytut Informatyki
Architektura komputera z pamięcią cache
Architektura komputera z pamięcią cache
Elementy systemu pamięci cache
Elementy systemu pamięci cache
Organizacja pamięci cache
Organizacja pamięci cache
13
KONCEPCJA PAMIĘCI PODRĘCZNEJ
KONCEPCJA PAMIĘCI PODRĘCZNEJ
(CACHE)
(CACHE)
Koncepcja ta jest podobna do koncepcji pamięci wirtualnej.
Koncepcja ta jest podobna do koncepcji pamięci wirtualnej.
Przypomnijmy:
Przypomnijmy:
•
pamięci statyczne są szybsze, droższe, pobierają więcej
pamięci statyczne są szybsze, droższe, pobierają więcej
energii i są trudniejsze do scalania
energii i są trudniejsze do scalania
•
pamięci dynamiczne są wolniejsze, tańsze, pobierają
pamięci dynamiczne są wolniejsze, tańsze, pobierają
mniej energii i są łatwiejsze do scalania
mniej energii i są łatwiejsze do scalania
Wniosek 1
Wniosek 1
: nie jest możliwe zbudowanie całej pamięci
: nie jest możliwe zbudowanie całej pamięci
operacyjnej z pamięci statycznych, a pamięci
operacyjnej z pamięci statycznych, a pamięci
dynamiczne są za wolne dla współczesnych
dynamiczne są za wolne dla współczesnych
procesorów i częstotliwości zegara
procesorów i częstotliwości zegara
Wniosek 2
Wniosek 2
: wprowadza się dużą pamięć operacyjną (rzędu
: wprowadza się dużą pamięć operacyjną (rzędu
kilka lub kilkaset MB) zbudowaną z pamięci
kilka lub kilkaset MB) zbudowaną z pamięci
dynamicznych i małą (kilka kilkaset kB) pamięć
dynamicznych i małą (kilka kilkaset kB) pamięć
podręczną - statyczną - znacznie szybszą (wraz ze
podręczną - statyczną - znacznie szybszą (wraz ze
sterownikiem)
sterownikiem)
Wniosek 3
Wniosek 3
: dwa rodzaje architektury:
: dwa rodzaje architektury:
•
Look-trough
Look-trough
•
Look-aside
Look-aside
ARCHITEKTURA LOOK-THROUGH
ARCHITEKTURA LOOK-THROUGH
W przypadku „chybienia”
W przypadku „chybienia”
wykorzystywana
jest
wykorzystywana
jest
magistrala
główna
z
magistrala
główna
z
koniecznymi
stanami
koniecznymi
stanami
oczekiwania
oczekiwania
CACHE
CACHE
PAMIĘĆ
PAMIĘĆ
OPERACYJNA
OPERACYJNA
ZARZĄDCA
ZARZĄDCA
MAGISTRAL
MAGISTRAL
ZARZĄDCA
ZARZĄDCA
MAGISTRAL
MAGISTRAL
MIKROPROCESO
MIKROPROCESO
R
R
W
przypadku
W
przypadku
„trafienia”
„trafienia”
główna
główna
magistrala danych nie
magistrala danych nie
jest
wykorzystywana
jest
wykorzystywana
co
dodatkowo
co
dodatkowo
przyspiesza
pracę
przyspiesza
pracę
systemu (z magistrali
systemu (z magistrali
głównej mogą w tym
głównej mogą w tym
czasie korzystać inni
czasie korzystać inni
zarządcy).
zarządcy).
Magistrala
Magistrala
lokalna
lokalna
M
a
g
is
tr
a
la
M
a
g
is
tr
a
la
g
łó
w
n
a
g
łó
w
n
a
ARCHITEKTURA LOOK-ASIDE
ARCHITEKTURA LOOK-ASIDE
Zalety:
Zalety:
•
prostsza
prostsza
konstrukcja
konstrukcja
•
szybsza realizacja w
szybsza realizacja w
przypadku
przypadku
chybienia
chybienia
Wady:
Wady:
•
nawet przy trafieniu
nawet przy trafieniu
magistrala nie jest
magistrala nie jest
dostępna dla innych
dostępna dla innych
zarządców
zarządców
CACHE
CACHE
PAMIĘĆ
PAMIĘĆ
OPERACYJNA
OPERACYJNA
ZARZĄDCA
ZARZĄDCA
MAGISTRAL
MAGISTRAL
ZARZĄDCA
ZARZĄDCA
MAGISTRAL
MAGISTRAL
MIKROPROCESO
MIKROPROCESO
R
R
W
przypadku
W
przypadku
„trafienia”
i
„trafienia”
i
„chybienia”
„chybienia”
główna
główna
magistrala danych
magistrala danych
jest
stale
jest
stale
wykorzystywana.
wykorzystywana.
M
a
g
is
tr
a
la
M
a
g
is
tr
a
la
g
łó
w
n
a
g
łó
w
n
a
ELEMENTY SYSTEMU PAMIĘCI CACHE
ELEMENTY SYSTEMU PAMIĘCI CACHE
•
Bank danych pamięci cache
Bank danych pamięci cache
(pamięć danych)
(pamięć danych)
przechowuje, umożliwia zapisywanie i odczytywanie
przechowuje, umożliwia zapisywanie i odczytywanie
informacji
informacji
•
Katalog pamięci cache
Katalog pamięci cache
(zwany TAG-RAMem)
(zwany TAG-RAMem)
umożliwia szybkie sprawdzanie czy poszukiwana
umożliwia szybkie sprawdzanie czy poszukiwana
informacja znajduje się w pamięci danych cache
informacja znajduje się w pamięci danych cache
(konkretnie: czy dany adres jest odwzorowany w pamięci
(konkretnie: czy dany adres jest odwzorowany w pamięci
cache)
cache)
•
Sterownik pamięci cache
Sterownik pamięci cache
realizuje sprawdzenie adresu w katalogu pamięci cache,
realizuje sprawdzenie adresu w katalogu pamięci cache,
organizuje współpracę pamięci cache z systemem i
organizuje współpracę pamięci cache z systemem i
zapewnia zgodność zawartości pamięci cache z pamięcią
zapewnia zgodność zawartości pamięci cache z pamięcią
główną
główną
ZAPEWNIENIE ZGODNOŚCI PAMIĘCI
ZAPEWNIENIE ZGODNOŚCI PAMIĘCI
CACHE
CACHE
Przyczyny niezgodności:
Przyczyny niezgodności:
•
nastąpił zapis do pamięci cache bez zapisu do pamięci głównej
nastąpił zapis do pamięci cache bez zapisu do pamięci głównej
(w przypadku trafienia przy zapisie do pamięci)
(w przypadku trafienia przy zapisie do pamięci)
•
nastąpił zapis do pamięci głównej bez zapisu do pamięci cache
nastąpił zapis do pamięci głównej bez zapisu do pamięci cache
(gdy z magistrali głównej korzystał inny zarządca magistrali niż
(gdy z magistrali głównej korzystał inny zarządca magistrali niż
procesor np. transmisja DMA do pamięci głównej)
procesor np. transmisja DMA do pamięci głównej)
Strategie utrzymania zgodności:
Strategie utrzymania zgodności:
•
Write-through (zapis do pamięci cache powoduje jednoczesny
Write-through (zapis do pamięci cache powoduje jednoczesny
zapis do pamięci głównej - proste ale zmniejsza szybkość, bo
zapis do pamięci głównej - proste ale zmniejsza szybkość, bo
zpisuje się informacje do wolnej pamięci głównej)
zpisuje się informacje do wolnej pamięci głównej)
•
Buforowane (opóźnione) write-through (jak wyżej ale zapis do
Buforowane (opóźnione) write-through (jak wyżej ale zapis do
bufora i dopiero później z bufora do pamięci głównej aby nie
bufora i dopiero później z bufora do pamięci głównej aby nie
spowalniać pracy)
spowalniać pracy)
•
Write-back (zawartości obu pamięci są uzgadniane gdy zajdzie
Write-back (zawartości obu pamięci są uzgadniane gdy zajdzie
taka potrzeba - operacje bardzo skomplikowane)
taka potrzeba - operacje bardzo skomplikowane)
Pewne obszary w pamięci głównej nie mogą być odzwierciedlone w
Pewne obszary w pamięci głównej nie mogą być odzwierciedlone w
pamięci cache, gdyż nie jest możliwe zapewnienie zgodności, np.
pamięci cache, gdyż nie jest możliwe zapewnienie zgodności, np.
obszar pamięci RAM karty sieciowej, gdzie zapis może realizować
obszar pamięci RAM karty sieciowej, gdzie zapis może realizować
procesor przez magistralę systemową jak i sterownik sieci (nie ma
procesor przez magistralę systemową jak i sterownik sieci (nie ma
możliwości śledzenia magistrali sieci). W systemie muszą więc istnieć
możliwości śledzenia magistrali sieci). W systemie muszą więc istnieć
układy NCA (
układy NCA (
non-cachable access
non-cachable access
) uniemożliwiające niektóre zapisy
) uniemożliwiające niektóre zapisy
do pamięci cache.
do pamięci cache.
ORGANIZACJA PAMIĘCI CACHE
ORGANIZACJA PAMIĘCI CACHE
Zestaw 1
Zestaw 1
Strona 1
Strona 1
Strona 0
Strona 0
Strona 0
Strona 0
Zestaw 2
Zestaw 2
Zestaw 3
Zestaw 3
Zestaw 4
Zestaw 4
Zestaw 5
Zestaw 5
Zestaw 1
Zestaw 1
Zestaw 2
Zestaw 2
Zestaw 3
Zestaw 3
Zestaw 4
Zestaw 4
Zestaw 5
Zestaw 5
Zestaw 1
Zestaw 1
Zestaw 2
Zestaw 2
Zestaw 3
Zestaw 3
Zestaw 4
Zestaw 4
Zestaw 5
Zestaw 5
Zestaw 1
Zestaw 1
Zestaw 2
Zestaw 2
Zestaw 3
Zestaw 3
Zestaw 4
Zestaw 4
Zestaw 5
Zestaw 5
Strona 1
Strona 1
Strona 0
Strona 0
Strona 2
Strona 2
Dane 1
Dane 1
Dane 2
Dane 2
Dane 3
Dane 3
Dane 3
Dane 3
Dane 2
Dane 2
Dane 4
Dane 4
Dane 1
Dane 1
O1
O1
O2
O2
O3
O3
Katalog cache
Katalog cache
(TAG-RAM)
(TAG-RAM)
Bank cache
Bank cache
O4
O4
Dane 4
Dane 4
Strona
Strona
2
2
•
Bank danych i katalog pamięci cache
Bank danych i katalog pamięci cache
(TAG-RAM)
tworzą
tzw.
(TAG-RAM)
tworzą
tzw.
jednoblokową pamięć asocjacyjną
jednoblokową pamięć asocjacyjną
•
Pamięć cache stanowi jeden blok
Pamięć cache stanowi jeden blok
podzielony na zestawy
podzielony na zestawy
•
Pamięć główna dzielona jest na
Pamięć główna dzielona jest na
strony
o
rozmiarze
równym
strony
o
rozmiarze
równym
rozmiarowi bloku pamięci cache.
rozmiarowi bloku pamięci cache.
Strony podobnie jak blok pamięci
Strony podobnie jak blok pamięci
cache dzielone są na zestawy
cache dzielone są na zestawy
•
Każdy zestaw w pamięci cache ma
Każdy zestaw w pamięci cache ma
swoją pozycję w katalogu (TAG-RAM)
swoją pozycję w katalogu (TAG-RAM)
- zawiera adres skąd pochodzi dany
- zawiera adres skąd pochodzi dany
zestaw
zestaw
•
Każdy zestaw jest wpisywany na
Każdy zestaw jest wpisywany na
miejsce w pamięci cache do zestawu
miejsce w pamięci cache do zestawu
o numerze zgodnym z numerem
o numerze zgodnym z numerem
zestawu w stronie
zestawu w stronie
Pamięć
Pamięć
główna
główna
ORGANIZACJA PAMIĘCI CACHE
ORGANIZACJA PAMIĘCI CACHE
•
Bank danych i katalog pamięci cache (TAG-RAM) tworzą
Bank danych i katalog pamięci cache (TAG-RAM) tworzą
tzw. jednoblokową pamięć asocjacyjną
tzw. jednoblokową pamięć asocjacyjną
•
Pamięć cache stanowi jeden blok podzielony na zestawy
Pamięć cache stanowi jeden blok podzielony na zestawy
•
Pamięć główna dzielona jest na strony o rozmiarze
Pamięć główna dzielona jest na strony o rozmiarze
równym rozmiarowi bloku pamięci cache. Strony
równym rozmiarowi bloku pamięci cache. Strony
podobnie jak blok pamięci cache dzielone są na zestawy
podobnie jak blok pamięci cache dzielone są na zestawy
•
Każdy zestaw w pamięci cache ma swoją pozycję w
Każdy zestaw w pamięci cache ma swoją pozycję w
katalogu (TAG-RAM) - zawiera adres skąd pochodzi dany
katalogu (TAG-RAM) - zawiera adres skąd pochodzi dany
zestaw
zestaw
•
Każdy zestaw jest wpisywany na miejsce w pamięci
Każdy zestaw jest wpisywany na miejsce w pamięci
cache do zestawu o numerze zgodnym z numerem
cache do zestawu o numerze zgodnym z numerem
zestawu w stronie
zestawu w stronie
PAMIĘĆ CACHE DRUGIEGO POZIOMU
PAMIĘĆ CACHE DRUGIEGO POZIOMU
Pamięć cache (zwłaszcza typu Look-through) możer występować:
Pamięć cache (zwłaszcza typu Look-through) możer występować:
•
wewnątrz procesora - pamięć cache pierwszego poziomu (L1-
wewnątrz procesora - pamięć cache pierwszego poziomu (L1-
lovel 1),
lovel 1),
•
pamięć zewnętrzna - pamięć drugiego poziomu (L2).
pamięć zewnętrzna - pamięć drugiego poziomu (L2).
Pamięć tego typu pojawiła się po raz pierwszy w procesorach
Pamięć tego typu pojawiła się po raz pierwszy w procesorach
80486.
80486.
Pamięć L2 jest znacznie większa od L1, dzięki czemu jeśli nie
Pamięć L2 jest znacznie większa od L1, dzięki czemu jeśli nie
nastąpiło „trafienie” w pamięci L1 to istnieje duża szansa
nastąpiło „trafienie” w pamięci L1 to istnieje duża szansa
trafienia do L2 (oczywiście informacja z pamięci L1 znajduje się w
trafienia do L2 (oczywiście informacja z pamięci L1 znajduje się w
pamięci L2) - przyspiesza to pracę systemu.
pamięci L2) - przyspiesza to pracę systemu.
PAMIĘĆ
PAMIĘĆ
OPERACYJNA
OPERACYJNA
ZARZĄDCA
ZARZĄDCA
MAGISTRAL
MAGISTRAL
ZARZĄDCA
ZARZĄDCA
MAGISTRAL
MAGISTRAL
8048
8048
6
6
M
a
g
is
tr
a
la
g
łó
w
n
a
M
a
g
is
tr
a
la
g
łó
w
n
a
CACHE 1-go poziomu
CACHE 1-go poziomu
Blok sterowania
Blok sterowania
magistralą
magistralą
S
y
g
n
a
ły
s
te
ru
ją
c
e
S
y
g
n
a
ły
s
te
ru
ją
c
e
CACHE 2-go poziomu
CACHE 2-go poziomu
Magistrala lokalna
Magistrala lokalna
Układy
Układy
logiczne
logiczne
NCA
NCA
Sygnały sterujące
Sygnały sterujące