Podstawowe pojęcia architektury i organizacji
komputerów
Można wyróżnić 3 poziomy opisu komputera:
architektura
co robi?
organizacja
jak działa?
implementacja
z czego jest zrobiony?
Architektura komputera jest opisem zbioru funkcji, cech i elementów
komputera, które są istotne z punktu widzenia programisty. Architektura odnosi
się do tych atrybutów systemu, które mają bezpośredni wpływ na logiczne
wykonywanie programu.
Przykładami atrybutów architektury są:
- lista
rozkazów,
- liczba bitów wykorzystywanych do przedstawiania różnych typów danych
(np. liczb całkowitych, znaków),
- metody adresowania pamięci.
Organizacja komputera odnosi się do jednostek operacyjnych i ich połączeń,
które stanowią realizację specyfikacji typu architektury. Projektant, na tym
poziomie, dokonuje wyboru sposobu połączeń pomiędzy blokami, sposobu
kodowania przesyłanej informacji, wyboru zasady działania układów
sterujących itp.
Do atrybutów organizacyjnych należą rozwiązania sprzętowe niewidzialne dla
programisty, takie jak:
- sygnały sterujące,
- interfejsy
między komputerem a urządzeniami peryferyjnymi,
- wykorzystywana
technologia
pamięci.
Na poziomie implementacji projektant dokonuje wyboru elementów, z których
będzie budowany komputer, różnego ich rozmieszczenia, zasilania, chłodzenia
itp.
KOMPUTER JAKO SYSTEM ZŁOŻONY
Kluczem do opisu systemu jest rozpoznanie jego hierarchicznej struktury.
System hierarchiczny
System hierarchiczny jest układem wzajemnie powiązanych podsystemów,
z których każdy również ma strukturę hierarchiczną, aż do osiągnięcia
najniższego poziomu – podsystemu elementarnego.
Hierarchiczna struktura złożonych systemów ma podstawowe znaczenie
zarówno dla ich projektowania, jak i opisu. Na każdym poziomie abstrakcji
projektant zajmuje się struktura i funkcjami składników systemu.
!"
S t r u k t u r a to sposób wzajemnego powiązania składników (elementy i
relacje między nimi).
!"
F u n k c j e określają działanie poszczególnych składników, jako części
struktury.
Dwa podejścia:
- zbudowanie kompletnego opisu począwszy od poziomu najniższego,
- rozpoczęcie od obrazu systemu widzianego na poziomie najwyższym oraz
dekompozycja systemu na podsystemy.
Działanie
Podstawowe funkcje, które może realizować komputer:
!"
przetwarzanie danych,
!"
przechowywanie danych,
!"
przenoszenie (przesyłanie) danych,
!"
sterowanie.
Struktura
Główne składniki struktury komputera:
J e d n o s t k a c e n t r a l n a ( C P U ) . Steruje ona działaniem komputera
i realizuje jego funkcję przetwarzania danych. Często jest po prostu nazywana
procesorem.
P a m i ę ć g ł ó w n a . Przechowuje dane.
W e j ś c i e - w y j ś c i e . Przenosi dane między komputerem a jego otoczeniem
zewnętrznym.
P o ł ą c z e n i a s y s t e m u . Mechanizmy zapewniające łączność między
procesorem, pamięcią główną a wejściem-wyjściem.
Struktura komputera
Urządzenia peryferyjne
Komputer
Jednostka
centralna
Komputer
Jednostka
centralna
Pamięć
główna
Połączenia
systemowe
Wejście-
wyjście
Jednostka
centralna
Procesor (CPU)
Jednostka
sterująca
Jednostka
arytm.-log.
(ALU)
Połączenia
wewnętrzne
Rejestry
Jed
Komputer
PAO
We-
wy
Magistrala
CPU
Podstawowe zespoły funkcjonalne mikroprocesora
Szyna sterowania
Rejestr instrukcji
Dekoder
Układ
sterujący
Multiplekser
Licznik rozkazów
Zespół rejestrów
ogólnego
przeznaczenia
Układ
realizujący
operację
±
1
Akumulator
ALU
Szyna danych
Układ arytmetyczno-logiczny (ALU)
Zespół rejestrów
Rejestr
rozkazów,
dekoder i układ
sterujący
Szyna adresowa
Rejestr bitów
warunków
(znaczników)
Inne układy
(pamięci,
układy wej/wyj)
Rejestr R
0
Rejestr R
N
Rejestr
przejściowy
ALU
.......
Szyna danych B (przesyłanie wyników)
Szyna danych A
Budowa mikroprocesora dwuszynowego
Inne układy
(pamięci,
układy wej/wyj)
Rejestr R
0
Rejestr R
N
ALU
.......
Szyna D
Szyna A
Szyna B
Budowa mikroprocesora trójszynowego
∑
Przemieszczenie
0 0 0 0
Segment
0 0 0 0
Adres efektywny
Adres bazowy segmentu
0
0
15
15
Adres fizyczny
20 bitowy
Generacja adresu fizycznego
Do realizacji funkcji przechowywania, przenoszenia, przetwarzania i sterowania
komputera potrzebne są tylko dwa typy podstawowych składników:
!"
bramki
!"
komórki pamięci.
B r am k a jest przyrządem, który realizuje prostą funkcję logiczną, taką jak,
„ILOCZYN LOGICZNY A, B”. Jeśli A i B są prawdziwe, to prawdziwe jest C.
K o m ó r k a p am i ę c i jest przyrządem, który może przechowywać pojedynczy
bit danych, oznacza to, że przyrząd ten w określonym czasie może znajdować
się w jednym z dwóch stabilnych stanów.
Schematy podstawowych elementów wykorzystywanych do budowy
podzespołów komputera:
Zapis
Wejście
Funkcja
logiczna
Boole’a
Wyjście
(a) bramka
(b) komórka
pamięci
Wejście
Komórka
pamięci
binarnej
Wyjście
Odczyt
PARAMETRY KOMPUTERÓW
- moc
obliczeniowa
•
MIPS
•
MFLOPS
- szybkość transmisji danych do/z różnych urządzeń
- niezawodność
•
MTBF
- koszt
- ....
Szybkość mikroprocesorów
W przypadku mikroprocesorów dodawanie nowych układów oraz zwiększanie
szybkości wynikające ze zmniejszenia odległości między nimi poprawiało
wydajność 4-krotnie w ciągu każdych 3 lat (prawo Moore’a).
Aby wykorzystać potencjalne możliwości mikroprocesora, należy zapewnić jego
„zasilanie” ciągłym strumieniem zadań (rozkazów). Dlatego projektanci
procesorów wykorzystują coraz bardziej wymyślne rozwiązania jak:
!"
przewidywanie rozgałęzienia (ang. branch prediction),
!"
analiza przepływu danych,
!"
spekulatywne wykonywanie rozkazów.
Równowaga wydajności
Podczas gdy moc procesorów rosła z zawrotną szybkością, rozwój innych
krytycznych zespołów komputera był zbyt wolny. Powstała potrzeba znalezienia
r ó w n o w a g i w y d a j n o ś c i :
dostosowanie organizacji i architektury w celu skompensowania niezgodności
między możliwościami różnych zespołów komputera.
P r o b l e m k r y t y c z n y : interfejs między procesorem a pamięcią główną.
P r z y k ł a d o w e s p o s o b y r o z w i ą z a n i a t e g o p r o b l e m u :
!"
zwiększanie liczby bitów, które są jednocześnie wprowadzane
(projektowanie „szerokich” układów DRAM),
!"
stosowanie bardziej efektywnych interfejsów pamięci DRAM przez
umieszczanie układów buforowanych w strukturach DRAM,
!"
redukowanie częstości odwołań do pamięci głównej przez wprowadzanie
efektywnych struktur pamięci podręcznych (ang. cache) między procesorem
a pamięcią główną.
GENERACJE KOMPUTERÓW
- komputery
pierwszej
generacji
technologia lamp elektronowych
- komputery drugiej generacji (lata 50-te)
technologia tranzystorów
- komputery trzeciej generacji (połowa lat 60-tych)
układy scalone SSI (ang. small scale integration),
układy scalone MSI (ang. medium scale integration)
- komputery czwartej generacji (połowa lat 70-tych)
układy LSI (ang. large scale integration), era minikomputerów
- komputery
piątej generacji (połowa lat 80-tych)
układy VLSI, wiele kierunków w rozwoju komputerów,
architektury potokowe, RISC, systemy wieloprocesorowe
HISTORIA
1627 Wilhelm Schickald - stworzył pierwsze dwa urządzenia do sumowania kilkucyfrowych
liczb;
1642 B. Pascal - opracował jeden z pierwszych szeregowych sumatorów/subtraktorów
(urządzeń dodających i odejmujących);
1694 C. W. Leibnitz - buduje pierwszy arytmometr czterodziałaniowy ( wcześniej, w 1671
zbudował sumator równoległy );
1833 Ch. Babbage - realizuje projekt maszyny analitycznej, którą można uznać za
pierwowzór późniejszych komputerów;
1920 - zbudowano arytmometr elektryczny;
1937-1944 - pod kierunkiem H. Aikena zbudowano przekaźnikowy, całkowicie
zautomatyzowany Mark I ( komputer generacji 0);
1945 J. von Neuman - określa zasadę obowiązującą we wszystkich powstających później
komputerach (poza ENIAC’em): program maszynowy realizujący działania zlecone
przez programistę zapisany jest w pamięci komputera;
1946 J. W. Manchly i J. P. Eckert - budują ENIAC (Electronic Numerical Integrator and
Computer - generacja 1): zawierał 18000 lamp i 1500 przekaźników, ważył 30 ton,
pobierał 150kW mocy; czas wykonywania operacji: dodawanie w 0.2 ms, mnożenie w
2.8 ms dla liczb dziesiętnych;
1950 - powstaje EDVAC (Electronic Delay Storage Automatic Computer) z pamięcią na
rtęciowych liniach opóźniających;
1968 - po raz pierwszy użyto myszki jako urządzenia wskazującego;
1970 - pierwsze komputery, które można zaliczyć do 4-tej generacji, m. in. PDP11 (układy
LSI i VLSI); wyprodukowanie, przez Intel, pierwszej kości dynamicznej pamięci RAM;
1971 - Intel sprzedaje pierwszy układ procesora (CPU), 4-bitowy, 108 kHz o oznaczeniu
4004, technologia 10
µ
;
1972 - Intel wprowadza procesor 8008, technologia 10
µ
, częstot. 108KHz, który może
obsługiwać 16 KB pamięci RAM, czyli mniej więcej 1/1000 zasobów potrzebnych dla
Windows 98;
1974 - Intel buduje kolejny procesor, 8-bitowy 8080, technologia 6
µ
, częstot. 2MHz, zdolny
obsłużyć 64KB RAM;
1977 - Intel wprowadza procesor 8086, technologia 3
µ
, częstot. 5MHz;
1981 - sprzedany zostaje IBM PC z systemem operacyjnym Microsoftu i kompilatorem
BASIC’a, firma Osborn Computers tworzy pierwszy przenośny komputer osobisty
bazujący na IBM PC. Ma on 64KB RAM i waży 10kg;
1983 - Intel wprowadza procesor 80286, technologia 1,5
µ
, częstot. 8MHz;
1985 - Microsoft wprowadza Windows 1.0, Intel wprowadza procesor 80386DX, technologia
1
µ
, częstot. 16MHz;
1987 - Microsoft sprzedaje 2 miliony egzemplarzy Windows 2.0;
1989 - Intel wprowadza procesor 80486DX, technologia 1
µ
, częstot. 25MHz,
1,2 mln tranzystorów;
1990 - Microsoft wypuszcza Windows 3.0;
1991 - Microsoft wypuszcza Windows 3.1;
1992 - Intel wprowadza procesor 80486DX2, technologia 1
µ
, częstot. 50MHz,
1,2 mln tranzystorów;
1993 - pojawia się wczesna wersja alfa produktu Microsoftu o nazwie Chicago -
Win 95, Intel wprowadza procesor PENTIUM, technologia 0,8
µ
, częstot.
60MHz, 3,1 mln tranzystorów;
1995 - Microsoft wprowadza Windows 95 oraz Windows NT 3,51, Intel
wprowadza procesor PENTIUM Pro, technologia 0,6
µ
, częstot. 150 -
200MHz, 5,5 mln tranzystorów;
1996 - wchodzi Windows NT 4.0;
1997 - Intel wprowadza procesor PENTIUM MMX, technologia 0,35
µ
, częst.
150 - 200MHz, 4,5 mln tranzystorów, w maju wprowadza PENTIUM II,
technologia 0,35
µ
, częstot. 150 - 200MHz, 4,5 mln tranzystorów ;
1998 - Microsoft wprowadza Windows 98, Intel wprowadza procesor
CELERON, który jest odpowiednikiem PENTIUM II bez pamięci Cache
L2;
1999 – Pentium III, częstotliwość taktowania 450-700 MHz, technologia 0,25
lub 0,18
µ
;
1999-2000 AMD K7 Athlon, częstotliwość taktowania 1GHz;
2000 – Intel Itanium, 64-bitowa architektura, min. częstotliwość 800 MHz,
VLIW, 1 MB cache L2, 2-4 MB cache L3;
2001 – Intel ELBRUS 2000, AMD SLEDGEHAMMER
2002 –
2003 – minimalna częstotliwość 3 GHz, technologia 0,08
µ
;
?
Architektura von Neumanna
1.
Wspólna pamięć do przechowywania zarówno rozkazów jak i danych.
2.
Pamięć jednowymiarowa, złożona z kolejno ponumerowanych komórek o
jednakowej wielkości.
3.
Brak jawnego rozróżniania rozkazów i danych.
4.
Brak jawnej specyfikacji typów danych.
5.
Praca sekwencyjna - przed rozpoczęciem wykonywania kolejnego
rozkazu musi zostać zakończone wykonywanie rozkazu chronologicznie
poprzedniego. Każdy rozkaz określa jednoznacznie adres następnego.
Procesor
Pamięć
operacyjna
(PAO)
Urządzenia
wej/wyj
Progra-
mowane
układy
wej/wyj
Szyna adresowa
Szyna danych
Szyna sterowania
Szyna wej/wyj
Sterowanie
Schemat blokowy komputera
Pamięć
0 move
4
1 add
5
2 store
6
3 stop
4
1
5 2
6
?
. . .
Język
wewnętrzny
Język
asemblera
Język
wysokiego
poziomu
1011 0000
0000 0101
MOV CL, 5
1010 0000
0000 0000
0000 1111
MOV A, [B2, B3]
0000 0000
1100 1000
ADD CL, A
A = A + 5
1110 0110
1010 1010
OUT [B2]
Pamięć główna
adres
WE
O/Z
Sekwencje czynności procesora w czasie wykonywania instrukcji
Przykład.
Hipotetyczny komputer o następujących własnościach:
Rozkazy i dane są słowami 16-bitowymi.
a) format rozkazu
b) format liczby całkowitej
c) wewnętrzne rejestry procesora
Licznik rozkazów (PC)
/
adres rozkazu
Rejestr rozkazów (IR)
/
wykonywany rozkaz
Akumulator
(AC)
/
tymczasowe przechowywanie wyniku
d) częściowa lista kodów operacji
0001
/
Ładuj AC z pamięci
0010
/
Zapisz AC do pamięci
0101
/
Dodaj zawartość komórki pamięci do AC
Faza pobrania
rozkazu
Dekodowanie
rozkazu
Cykl maszynowy
Cykl maszynowy
Faza pobrania
argumentu (ów)
Faza wykonania
rozkazu
Cykl instrukcyjny
0
3 4
Kod operacji
Adres
0 1
S
Wartość
Powyższy fragment programu dodaje zawartość słowa pamięci o adresie 940H
do zawartości słowa zapisanego pod adresem 941H oraz zapisuje wynik pod
adres 941H. Wykonywane są 3 rozkazy, które zostały opisane jako 3 cykle
rozkazowe. W każdym cyklu pokazano fazę pobrania i wykonania rozkazu.
Pamięć
300
1 9 4 0
301
5 9 4 1
302
2 9 4 1
940
0 0 0 3
941
0 0 0 2
Krok 1
Rejestry
CPU
3 0 0
PC
AC
1 9 4 0
IR
Pamięć
300
1 9 4 0
301
5 9 4 1
302
2 9 4 1
940
0 0 0 3
941
0 0 0 2
Krok 2
Rejestry
CPU
3 0 1
PC
0 0 0 3
AC
1 9 4 0
IR
Pamięć
300
1 9 4 0
301
5 9 4 1
302
2 9 4 1
940
0 0 0 3
941
0 0 0 2
Krok 3
Rejestry
CPU
3 0 1
PC
0 0 0 3
AC
5 9 4 1
IR
Pamięć
300
1 9 4 0
301
5 9 4 1
302
2 9 4 1
940
0 0 0 3
941
0 0 0 2
Krok 4
Rejestry
CPU
3 0 2
PC
0 0 0 5
AC
5 9 4 1
IR
Pamięć
300
1 9 4 0
301
5 9 4 1
302
2 9 4 1
940
0 0 0 3
941
0 0 0 2
Krok 5
Rejestry
CPU
3 0 2
PC
0 0 0 5
AC
2 9 4 1
IR
Pamięć
300
1 9 4 0
301
5 9 4 1
302
2 9 4 1
940
0 0 0 3
941
0 0 0 5
Krok 6
Rejestry
CPU
3 0 3
PC
0 0 0 5
AC
2 9 4 1
IR
3
16
+ 2
16
= 5
Przerwania i cykl rozkazowy
Przekazywanie sterowania za pomocą przerwań
Program użytkownika
1
2
#
#
#
#
#
#
i
i+1
#
#
#
#
M
Program obsługi
przerwania
#
#
#
Tutaj następuje
przerwanie
Cykl rozkazu z przerwaniami
Przerwania wielokrotne
W przypadku obsługi wielu urządzeń możliwe jest, że przerwanie wywołane
przez jedno z urządzeń nastąpi w czasie, w którym jest przetwarzane przerwanie
spowodowane przez inne urządzenie.
Sposoby postępowania z przerwaniami wielokrotnymi:
!"
blokowanie przerwań – procesor będzie ignorował sygnał żądania
przerwania w czasie obsługi danego przerwania;
!"
określenie priorytetów przerwań – przerwanie o wyższym priorytecie
powoduje przerwanie programu obsługi przerwania o niższym priorytecie.
Start
Pobierz
następny
rozkaz
Wykonaj
rozkaz
Sprawdź, czy nie
ma przerwania;
przetwórz
przerwanie
Stop
Przerwania dozwolone
Przerwania zablokowane
Struktury połączeń
Zbiór ścieżek łączących moduły (procesor, pamięć, wejście-wyjście) nazywamy
strukturą połączeń.
Dane
Pamięć
N słów
0
#
#
#
N-1
Adres
Dane
Odczyt
Zapis
Sygnały
przerwań
Dane
zewnętrzne
Zapis
Odczyt
Dane
wewnętrzne
Moduł
wejścia-wyjścia
M portów
Adres
Dane
wewnętrzne
Dane
zewnętrzne
Dane
Sygnały
sterujące
Procesor
Rozkazy
Dane
Sygnały
przerwań
Struktura połączeń musi umożliwiać przesyłanie danych:
!"
Z p a m i ę c i d o p r o c e s o r a . Procesor odczytuje z pamięci rozkazy lub
jednostki danych.
!"
Z p r o c e s o r a d o p a m i ę c i . Procesor zapisuje jednostki danych w
pamięci.
!"
Z u r z ą d z e ń w e j ś c i a - w y j ś c i a d o p r o c e s o r a . Procesor odczytuje
dane z urządzenia wejścia-wyjścia za pośrednictwem modułu wejścia –
wyjścia.
!"
Z p r o c e s o r a d o u r z ą d z e ń w e j ś c i a – w y j ś c i a . Procesor wysyła
dane do urządzenia wejścia – wyjścia.
!"
Z u r z ą d z e ń w e j ś c i a – w y j ś c i a d o p a m i ę c i l u b n a o d w r ó t .
W tych przypadkach zezwala się modułowi wejścia – wyjścia na
bezpośrednią wymianę danych z pamięcią, bez pośrednictwa procesora, przy
wykorzystaniu bezpośredniego dostępu do pamięci (DMA).
Klasyfikacja komputerów
W modelu von Neumana zakłada się, że komputer wykonuje program,
umieszczony w jego pamięci i operujący na danych, które także
znajdują się w pamięci.
Zwiększenie efektywności (szybkości) działania komputerów można
osiągnąć:
- poprzez zastosowanie nowych technologii,
- zastosowanie nowych rozwiązań w architekturze komputerów.
Zwiększenie szybkości pracy komputera można uzyskać poprzez
wprowadzenie zwielokrotnienia zarówno ciągu danych, jak i
instrukcji.
Klasyfikacja Flynna [1966]
SISD
SIMD
MISD
MIMD
Pojedynczy
ciąg danych
Wielokrotny
ciąg danych
Pojedynczy ciąg
instrukcji
Wielokrotny
ciąg instrukcji
Klasyfikacja Treleavena i Lima [1984]
Opiera się na pojęciu bloku obliczeniowego.
Blokiem obliczeniowym nazywa się wykonywaną operację wraz z jej
argumentami i wynikami. Wykonywany program można przedstawić
jako ciąg bloków obliczeniowych, których kolejność i momenty
rozpoczęcia ich wykonywania są sterowane przez tzw. mechanizm
sterujący.
Wyróżnia się 4 rodzaje mechanizmów sterujących:
1) samosterujące (ang. control driven),
2) sterowane argumentami (ang. data driven),
3) sterowane żądaniami (ang. demand driven),
4) sterowane wzorcem (ang. pattern driven).
Mechanizmy wymiany danych:
1) mechanizm wspólnych danych (ang. shared data),
2) mechanizm przesłań komunikatów (ang. message passing).
WSPÓLNE
DANE
PRZESYŁANIE
KOMUNIKATÓW
SAMOSTERUJĄCY
COSH
COME
STEROWANE DANYMI
DASH
DAME
STEROWANE ŻĄDANIAMI
DESH
DEME
STEROWANE WZORCEM
PASH
PAME