Cykl pamięci

Download Report

Transcript Cykl pamięci

Architektura systemów komputerowych
(jesień 2014)
Wykład 5
Budowa i działanie komputera
dr inż. Wojciech Bieniecki
Instytut Nauk Ekonomicznych
i Informatyki
http://wbieniec.kis.p.lodz.pl/pwsz
Działanie komputera
Podstawowa funkcja komputera – wykonywanie programów
Na najwyższym poziomie możemy opisać system
komputerowy poprzez:
Opisanie zewnętrznego zachowania każdego modułu
(danych i sygnałów kontrolnych, które wymienia on z
innymi modułami)
Podanie struktury połączeń i sterowania wymaganego
do zarządzania tą strukturą
2
Struktura logiczna komputera
MAR - rejestr adresowy pamięci - określa
adres w pamięci następnego zapisu lub
odczytu
MBR - rejestr buforowy pamięci - zawiera
dane, które mają być zapisane w pamięci
lub dane odczytane z pamięci
I/OAR - rejestr adresowy we/wy - określa
konkretne urządzenie we/wy
I/OBR - rejestr buforowy we/wy wykorzystywany do wymiany danych
między modułem we/wy a jednostką
centralną
PC - licznik rozkazu - rejestr zawierający
informacje który rozkaz ma być pobrany
IR - rejestr rozkazu - do przechowywania
pobranego rozkazu
ACC – akumulator – rejestr w którym
wykonywane są wszystkie operacje
3
arytmetyczno logiczne
Struktura fizyczna komputera
Zegar
Szyna danych
MIKROPROCESOR
Rezonator
kwarcowy
Pamięć
programu
(ROM)
Pamięć
danych
(RAM)
Progra
mowa
ne
układy
I/O
Szyny we/wy
Szyny we/wy
Urządzenia
wejścia
wyjścia
sterowanie
szyna adresowa
Szyna sterowania
4
Elementy składowe komputera
Szyna, magistrala (ang. bus) - wiązka przewodów lub zespół ścieżek na
płytce obwodu drukowanego, do wzajemnej komunikacji pomiędzy
elementami komputera:
•Procesorem
•Pamięcią operacyjną
•Urządzeniami wejścia / wyjścia
W definicji szyny, prócz samych przewodów sygnałowych, mieści się
ściśle zdefiniowany protokół, precyzujący zbiór komunikatów.
W typowym systemie komputerowym, magistrala systemowa dzieli się
na trzy szyny:
szynę danych (ang. data bus)
szynę adresową (ang. address bus);
szynę sygnałów sterujących (ang. control bus).
5
Elementy składowe komputera
Szyna, magistrala (ang. bus) - wiązka przewodów lub zespół ścieżek na
płytce obwodu drukowanego, do wzajemnej komunikacji pomiędzy
elementami komputera.
W definicji szyny, prócz samych przewodów sygnałowych, mieści się
ściśle zdefiniowany protokół, precyzujący zbiór komunikatów.
Przykłady standardów szyn: ISA, PCI, PCI express, AGP, SCSI, PCMCIA.
Jednostka centralna (ang. central processing unit, CPU) - element
komputera, który pobiera i wykonuje rozkazy.
Składa się z jednostki arytmetyczno-logicznej, jednostki sterującej,
rejestrów, dekodera rozkazów.
W przypadku komputerów jednoprocesorowych oznacza po prostu
procesor, natomiast jeśli mówimy o komputerze wieloprocesorowym,
CPU oznacza wszystkie procesory lub procesor nadrzędny.
6
Elementy składowe komputera
Pamięć danych (ang. data memory) – pamięć do zapisu i
odczytu przeznaczona do przechowywania danych.
Pamięć programu (ang. program memory) – pamięć do
odczytu przeznaczona do przechowywania kodu programu.
Układ wejścia-wyjścia (ang. input-output circuit, I/O) element komputera, służący do wymiany informacji między
komputerem a urządzeniem zewnętrznym.
7
Budowa procesora
8
Budowa procesora
Jednostka arytmetyczno-logiczna zwana również arytmometrem (ALU
ang. Arithmetic Logical Unit), część procesora wykonująca podstawowe
operacje arytmetyczne i logiczne, pobierającą argumenty działań z
rejestrów procesora lub z pamięci oraz określająca znaczniki w rejestrze
stanu procesora.
Typowe operacje wykonywane przez ALU:
•suma logiczna OR i iloczyn logiczny AND
•różnica symetryczna XOR, negacja logiczna NOT,
•Dodawanie i odejmowanie arytmetyczne liczb
•porównywanie logiczne dwóch sekwencji bitów,
•porównywanie arytmetyczne dwóch liczb,
•przesunięcia i rotacje,
•zerowanie, ustawianie, negowanie i testowanie bitów.
Jednostka sterująca (ang. control unit) - część procesora, która zapewnia
przebieg operacji zdefiniowanej kodem rozkazu, steruje przenoszeniem
danych wewnątrz procesora oraz wymianą danych i sygnałów sterujących
9
poprzez magistrale zewnętrzne.
Budowa procesora
Dekoder rozkazu (ang. instruction decoder) – dekoder tłumaczący
kod rozkazu na mikrorozkazy realizowane przez układy wewnętrzne
procesora.
Rejestr (ang. register) – część procesora przechowująca dane lub
adres.
Podstawowe rejestry procesora:
•akumulator (ang. accumulator, A, ACC),
•rejestry robocze (ang. general purpose registers),
•licznik rozkazów (ang. program counter, PC),
•wskaźnik stosu (ang. stack pointer, SP),
•rejestr stanu (wskaźników, flag) (ang. flag register, F, program status word, PSW),
•rejestr rozkazów (ang. instruction register, IR),
•pamięć podręczna (ang. cache memory) - jako zbiór rejestrów,
10
•rejestry buforowe danych i adresu (ang. buffer registers).
Operacje sprzętowe komputera
•odczyt z pamięci programu do procesora,
•odczyt z pamięci danych do procesora,
•zapis danych z procesora do pamięci danych,
•odczyt z układów wejścia-wyjścia do procesora,
•zapis danych z procesora do układów wejścia-wyjścia,
•bezpośredni odczyt z pamięci danych przez układy wejścia-wyjścia
(ang. direct memory access, DMA),
•bezpośredni zapis do pamięci danych przez układy wejścia-wyjścia
•operacje na rejestrach wewnętrznych procesora,
•obsługa przerwań.
11
Nawiązanie do historii informatyki
Maszyna Turinga
Alan Turing w 1936 opisał tok myślenia prowadzący od obliczeń
wykonywanych ręcznie do obliczeń wykonywanych przez prostą
abstrakcyjną maszynę, która była w stanie wykonywać zaprogramowaną
matematyczną operację czyli tak zwany algorytm.
Maszyna mogła wykonać jednak tylko jeden, określony algorytm.
Liczby miały być podawane maszynie za pomocą papierowej taśmy
Maszyna Turinga jest uniwersalnym modelem wszelkich obliczeń
Posiada ona obecnie olbrzymie znaczenie teoretyczne, ponieważ wszystkie
współczesne komputery dają się do niej sprowadzić
TEZA: Problem jest rozwiązalny na komputerze, jeśli da się
zdefiniować rozwiązującą go maszynę Turinga
12
Maszyna von Neumanna
Maszyna von Neumanna to konkretyzacja maszyny Turinga,
pozwalająca na zaprojektowanie rzeczywistego komputera
Maszyna von Neumanna składa się z procesora (CPU) oraz
pamięci, w której przechowywane są dane oraz rozkazy
Model działania maszyny von
Neumanna:
1. pobieranie rozkazu z pamięci
2. pobieranie danych z pamięci
wskazanych w rozkazie
3. wykonywanie rozkazu
(przetwarzanie danych)
4. zapisywanie wyniku w pamięci
5. powrót do punktu 1
13
Cykl pracy komputera
Wykonywanie programu
Program składa się z zestawu rozkazów przechowywanych w pamięci
Jednostka centralna realizuje program poprzez wykonywanie
rozkazów w nim zawartych
Cykl rozkazowy (ang. instruction cycle) - ciąg czynności, które wykonuje
układ sterowania jednostki centralnej w czasie realizowania jednego
rozkazu.
Przetwarzanie rozkazów realizowane jest przez procesor w dwóch
krokach:
Pobranie rozkazu z pamięci
Wykonanie rozkazu
14
Fazy wykonania rozkazu
Wykonanie rozkazu przez procesor można podzielić na 4/5
kolejno następujących po sobie faz:
F – pobranie kodu rozkazu z pamięci (fetch)
D – dekodowanie (decode) wraz z obliczaniem adresów
operandów i ich pobraniem
P – opcjonalne pobranie argumentu z pamięci.
E – wykonanie (execute),
W – zapamiętanie wyniku (write), w szczególności transfer
rejestr – pamięć.
15
Cykl rozkazowy - pobieranie
Licznik programu (PC – Program Counter) przechowuje
adres następnej instrukcji do wykonania
Procesor pobiera instrukcję z pamięci spod adresu
wskazywanego przez PC
Zwiększany jest licznik PC (incrementacja PC)
Instrukcja ładowana jest do rejestru rozkazowego IR
(Instruction Register)
Procesor interpretuje rozkaz i przeprowadza wymagane
działanie (przechodzi do cyklu wykonywania)
16
Cykl rozkazowy - schemat
17
Cykl rozkazowy - wykonanie
Na cykl rozkazowy składają się jeden lub kilka cykli maszynowych.
Cykl maszynowy (ang. machine cycle) – cykl, w którym następuje
przesłanie danych (odczyt lub zapis) między:
- jednostką centralną a pamięciową lub układem wejścia – wyjścia,
- rejestrami procesora.
Istnieją cztery kategorie cykli
Przesłanie procesor <-> pamięć
Przesłanie procesor <-> wejście/wyjście
Przetwarzanie danych (operacje arytmetyczne lub logiczne na
danych)
Sterowanie – zmiana sekwencji operacji np. rozkaz skoku
Kombinacja wyżej wymienionych działań
18
Cykl maszynowy i takt
Jeden cykl maszynowy wykonywany jest w czasie jednego lub
kilku/kilkunastu (w zależności od procesora i rodzaju cyklu) taktów zegara
systemowego.
Zegar systemowy (ang. system clock) – generator impulsów prostokątnych,
taktuje procesor, układy pamięciowe i układy wejścia-wyjścia.
Cykl pamięci (ang. memory cycle) - ciąg operacji składających się na jeden
dostęp (odczyt lub zapis) do pamięci.
W każdym cyklu maszynowym następuje wysłanie:
•adresu na magistralę adresową,
•danych na magistralę danych,
•sygnałów sterujących, informujących o rodzaju cyklu, na magistralę
sterującą.
Układy pamięci lub wejścia - wyjścia powinny w tym czasie wykonać
odpowiednie czynności - zapisać dane lub wysłać je na magistralę danych.
Cykl pamięci często jest utożsamiany z cyklem maszynowym.
19
Przykład wykonania programu (1)
Pobierz instrukcję spod adresu 300 wskazywanego przez
licznik programu
20
Przykład wykonania programu (2)
Pobierz i wykonaj instrukcję 1 z parametrem 940
(załadowanie liczby do akumulatora)
21
Przykład wykonania programu (3)
Pobierz i wykonaj instrukcję 5 z parametrem 941
(dodanie liczby do akumulatora)
22
Przykład wykonania programu (4)
Wynik działania jest w akumulatorze
23
Przykład wykonania programu (5)
Pobierz instrukcję 2 z parametrem 941
(przepisanie zawartości akumulatora do pamięci)
24
Przykład wykonania programu (6)
Wykonaj instrukcję
25
Graf cyklu rozkazowego
26
Inny przykład programu
Załóżmy, że R1, R2, R3 – rejestry robocze,
[R1], [R2], [R3] – adres komórki pamięci zapisanej w rejestrze
MOV R2, #n;
MOV [R1],[R3+];
Znaczenie:
Wstaw do R2 wartość n
wykonaj n-razy:
{
[R1]  [R3]
R1  R1 + 1
R3  R3 + 1
}
Jaki będzie efekt
działania?
27
Typy rozkazów procesora
Rozkazy maszynowe są przetwarzane przez procesor jako dane binarne
(zerojedynkowe).
Każdy rozkaz posiada unikatowy kod operacji (ang. opcode) oraz
opcjonalnie dodatkowe elementy:
odniesienie do argumentów źródłowych (SA ang. Source arguments),
którymi mogą być: dane bezpośrednie, adresy pamięci lub układów wewy, rejestry procesora;
odniesienie do argumentów przeznaczenia (DA ang. Destination args.)
lub wyniku (ang. result), którymi mogą być: adresy pamięci lub
układów we-wy, rejestry procesora;
odniesienie do następnego rozkazu – określa adres następnego
rozkazu, który będzie wykonany po rozkazie bieżącym.
28
Przykłady rozkazów
NOP;
nic nie rób
NOP – opcode
ADD A , R1;
A  A + R1
ADD – opcode,
A, R1 – argumenty źródłowe, A – argument przeznaczenia.
SJMP adres;
PC  adres
SJMP – opcode,
adres – adres następnego rozkazu.
29
Typowe operacje procesora – transfer danych
move skopiuj SA -> DA
store zapisz SA w pamięci
load odczytaj DA z pamięci
clear wyzeruj SDA (ustaw 0...0b)
set ustaw SDA (ustaw 1...1b)
push zachowaj SA na wierzchołku stosu
pop załaduj DA z wierzchołka stosu
30
Typowe operacje procesora – arytmetyczne
add
SDA <- SDA + SA
subtract SDA <- SDA – SA
multiply DA1...2 <- SA * SA
divide DA1...2 <- SA / SA
absolute SDA <- |SDA|
negate SDA <- - SDA
increment SDA <- SDA + 1
decrement SDA <- SDA – 1
compare SA1 – SA2
31
Typowe operacje procesora – logiczne
AND SDA <- SDA & SA
OR SDA <- SDA | SA
NOT SDA <- ~SDA
XOR SDA <- SDA ^ SA
test SA1 & SA2, (flaga Z)
compare SA1 – SA2, (flaga Z)
shift przesuń w prawo/lewo SDA
rotate obracaj w prawo/lewo SDA
32
Typowe operacje procesora – sterowanie programem
jump DA skocz pod adres [DA]
jump conditional DA skocz pod adres [DA] jeśli flaga Z=0
jump to subroutine DA skocz do podprogramu, zachowaj na stosie
adres powrotu
return pobierz ze stosu adres powrotu i wróć
execute pobierz argument i wykonaj rozkaz PC bez zmian
skip pomiń następny rozkaz
skip conditional – pomiń następny rozkaz, jeśli flaga Z=0
wait – zatrzymaj program dopóki flaga Z=0
NOP– pusta operacja
33