Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
CPU
2
Maszyna Turinga
3
Architektura von Neumanna
4
Architektura von Neumanna
Instrukcje i dane zapisane w tej samej pamięcie Pamięć jest sekwencyjnie adresowana Pamięć jest jednowymiarowa Znaczenie danych nie jest zapisane w pamięci znaczenie pojawia się w drodze interpretacji (np. przez CPU) W szczególności nie są rozróżniane dane i kody rozkazów
5
Architektura von Neumanna
Wczytywane jedno słowo pamięci na raz Cykl wykonania instrukcji: wczytanie kodu (Fetch) Zdekodowani i pobranie z pamięci dodatkowych argumentów (Decode) Egzekucja (Execute)
6
Operacje Opis operacji do wykonania składa się z kodu operacji i ew. argumentów I kod i dane są liczbami, ale kiedy mówimy o kodach, zazwyczaj używamy tzw. mnemoników: ADD, SUB, MUL, DIV, AND, OR, itp. Rozkaz do wykonania ma więc zazwyczaj postać: Kod_operacji [argument(y)], np.: ADD AX, 7 INC BX JMP 32
7
Operacje Argumenty czasem dane są jawni, czasem niejawnie (np.: INC AX – to dodawanie z niejawnym drugim argumentem 1, PUSHF – argumenty w ogóle niejawne)
8
Kodowanie operacji Kodowanie operacji – sposób ich zapisania jako liczby – dość ważna decyzja projektowa (później)
9
Architektura von Neumanna
Generalnie rozkazy są wczytywane z pamięci i wykonywane sekwencyjnie Pozycja, z której został wczytany aktualnie realizowany rozkaz (adres pamięci) wskazywana jest przez tzw. IP (Instruction Pointer) czy też PC (Program Counter) Wczytanie kodu rozkazu oraz ew. następujących po nim argumentów (operandów) zwiększa wartość licznika o stosowną liczbę pozycji Niektóre rozkazy (np. skoki) – dość drastycznie zmieniają IP
10
ISA Wynikiem wszystkich decyzji dotyczących tego, jaki powinien być zbiór rozkazów, jak powinny być kodowane, w jaki sposób mają być określane argumenty jest tzw. ISA – Instruction Set Architecture – Architektura Listy Rozkazów
11
Typowe składowe ISA Ilość i sposób korzystania z rejestrów
Zestaw rozkazów Tryby adresowania Sposób kodowania rozkazów Sposób kodowania danych
12
Rejestry Pamięć wewnętrzna – bardzo szybka (i bardzo droga)
Nie mylić z cache Rejestry mogą być specjalizowane lub uniwersalne Odwołania do pamięci mogą być realizowane albo bezpośrednio, albo za pomocą rejestrów
13
Dostęp do pamięci
14
Tryby adresowania Dane następujące po kodzie operacji nie muszą być bezpośrednimi wartościami Bardzo często są adresem pamięci, gdzie znajduje się wartość argumentu (koncept zmiennej) Adres nie musi być podany wprost, może być podany jako przemieszczeni, jako adres indeksowany, itp.
15
Użycie rozkazów
16
Skoki warunkowe Pozwalają na realizację takich struktur języków wyższego poziomu, jak pętle i instrukcje warunkowe, a więc – podstawowych konstrukcji programistycznych
17
Realizacja pętli repeat pp: ... ... ... mov ax, a until a > 0
cmp ax, 0 jle pp
18
Realizacja instrukcji warunkowej
mov ax, a sub ax, b jg else ... jmp end else: end: if a > b then ... else end if;
19
Zestaw rozkazów
20
Kodowanie operacji Jeśli rozkazy operują na rejestrach, a rejestrów nie jest dużo, można zastosować bardziej zwarte kodownie – nie potrzeba całych 16-tu bitów na zakodowanie jednego z ośmiu rejestrów – wystarczy 3 bity Z drugiej strony jednym z argumentów może być 16-bitowa liczba
21
Kodowanie operacji Czasem stosuje się kodowanie o zmiennej długości
W 80x86 kod operacji może mieć od 1 do 17 bajtów długości W RISC’ach stosuje się generalnie kodowanie o stałej długości To jest ważne zagadnienie – pamięć! (np. dla osadzonych – bardzo ważne)
22
Realizacja architektury von Neumanna
23
CPU
24
Jednostka kontrolna (decode & execute)
25
Jednostka kontrolna
26
Dwie magistrale
27
Magistrala danych
28
Magistrala adresowa
29
Bloki wykonawcze
30
Bloki wykonawcze ALU – jednostka arytmetyczno-logiczna – odpowiedzialna za realizację operacji arytmetyczno-logicznych: AND, ADD, OR, SUB, itp... Shifter – odpowiedzialny za realizację przesunięć bitowych – SHR, SHL, ROR, ROL Comp – odpowiedzialny za realizację komparacji używanych w skokach warunkowych: EQ, NEQ, LE, GT, GE, LT, itp. Np. skoki są w całości realizowane przez blok kontroli
31
Rejestry
32
ISA – zestaw rozkazów
33
ISA – zestaw rozkazów
34
Kodowanie rozkazów Pojedyncze słowo
35
Kodowanie rozkazów Podwójne słowo
36
Metoda top-down Najpierw architektura połączenia CPU-MEM
Po drodze – architektura MEM Ustalenie definicji wspólnych dla całego CPU Później architektura połączenia bloków wewnątrz CPU Na koniec realizacja bloków wewnątrz CPU
37
Definicje globalne
38
Definicje globalne
39
Package
40
Package body
41
Library Dwie domyślne biblioteki (nie trzeba deklarować ich użycia):
STD (bit, bit_vector, Boolean, itp...) WORK (pakiety zadeklarowane w plikach VHDL w bieżącym projekcie) – biblioteki WORK nie trzeba deklarować, ale pakiety – tak (np. use work.cpu_lib.all;)
42
Biblioteki deklaracja library nazwa; posługuje się nazwą logiczną biblioteki. To, jak związać nazwę logiczną z odpowiednimi plikami VHDL rozwiązane jest w każdym pakiecie realizującym VHDL po swojemu
43
Biblioteki w ActiveHDL
44
Biblioteki w ActiveHDL
45
Biblioteki w ActiveHDL
46
Biblioteki w ActiveHDL
47
Biblioteki w ActiveHDL
48
Biblioteki w ActiveVHDL
49
Top level
50
Pamięć
51
Pamięć
52
Pamięć
53
Transfer blokowy
54
CPU - rejestry
55
CPU - Reg
56
CPU – TriReg
57
CPU - RegArray
58
CPU - Shifter
59
CPU-Shifter
60
CPU - Shifter
61
CPU - Shifter
62
CPU - COMP
63
CPU - COMP itd. ...
64
CPU - ALU
65
CPU - ALU
66
CPU - ALU itd. ...
67
CPU - Control
68
CPU
69
CPU
70
CPU
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.