Materiały do wykładu 4. Mikroprocesor Marcin Peczarski Instytut Informatyki Uniwersytet Warszawski 19 marca 2007
Małe przypomnienie 4.1 Rejestry Układ współpracy z szynami Jednostka sterująca połączenia wewnętrzne Jednostka arytmetyczno- -logiczna Jednostka arytmetyczno- -logiczna Jednostka arytmetyczno- -logiczna
Rejestry (1) 4.2 danych adresowe ogólnego przeznaczenia specjalizowane stanu, znaczników licznik programu zmiennopozycyjne wektorowe segmentowe zarządzania pamięcią debugowania
architektura bezrejestrowa minimalny zestaw rejestrów mały zestaw rejestrów specjalizowanych mały zestaw rejestrów uniwersalnych duży zestaw rejestrów uniwersalnych bufor wierzchołka stosu stosowy zestaw rejestrów Rejestry (2) 4.3
Kod maszynowy a Asembler 4.4 Kod maszynowy binarny sposób opisu rozkazów procesora Każda architektura ma swój unikalny kod maszynowy. W obrębie tej samej architektury kod maszynowy może być nieco różny dla poszczególnych modeli procesorów. Asembler język programowania niskiego poziomu Jedno polecenie odpowiada zwykle jednemu rozkazowi maszynowemu. Każda architektura ma swój unikalny Asembler. asembler program tłumaczący Asembler na kod maszynowy
Kod maszynowy a Asembler (68000) 4.5 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OP R D S EA OP kod operacji, np.: 1000 or, 1001 sub, 1100 and, 1101 add R numer rejestru danych, gdzie jest pierwszy argument operacji D kierunek operacji: wynik zapisywany w pierwszym (0) lub drugim (1) argumencie S rozmiar operacji: 00 bajt, 01 word, 10 long word EA adres efektywny: opis położenia drugiego argumentu add.w d2, d1 d1 := d1 + d2 1101 001 0 01 000010
Kod maszynowy a Asembler (IA-32) 4.6 Różne kodowania mov eax, ebx 89 D8 8B C3 Synonimy jle jng 7E imm8 jb jnae jc 72 imm8 Synonimy i różne kodowania shl eax, 1 sal eax, 1 D1 E0 C1 E0 01 Prefiksy mov ax, bx 66 89 D8 66 8B C3 jle jng 0F 8E imm32 jb jnae jc 0F 82 imm32
Aplikacyjne: przesyłanie danych, operacje arytmetyczne, operacje bitowe, operacje na napisach, Lista instrukcji (rozkazów) 4.7 instrukcje sterujące (skok warunkowy, warunkowe wykonanie instrukcji). Systemowe (tryb uprzywilejowany lub nadzorcy): zarządzanie systemowymi strukturami danych, zmiana trybu pracy procesora.
Sterowanie wykonaniem programu 4.8 Jednoetapowe (bez znaczników) bz s1, displ ; branch if s1 = 0 Dwuetapowe ze znacznikami cmp eax, 4 ; set flags je label ; jump if zf = 1 Dwuetapowe z predykatami cmp.eq p1, p2 = r1, r2 ; if r1 = r2 (p1) add r3 = 1, r3 ; then r3 := r3 + 1 (p2) add r3 = 3, r3 ; else r3 := r3 + 3
Operacje dwuargumentowe 4.9 Przykładowa składnia add r1, r2 add r1, r2 add r1, r2, r3 add r1, r2, r3 Możliwa semantyka r1 := r1 + r2 r2 := r1 + r2 r1 := r2 + r3 r3 := r1 + r2
Tryby adresowania argumentów (1) 4.10 Nazwa i opis Oznaczenia Przykłady w IA-32 natychmiastowy 7 $7 #7 mov dword [1000], 7 bezpośredni [1000] mov dword [1000], 7 pośredni [[1000]] nie występuje rejestrowy (bezpośredni) r1 mov eax, [ebx] (rejestrowy) pośredni [r1] mov eax, [ebx] indeksowy [r1+8] mov eax, [ebx+4*ecx+8] [r1+r2] stosowy [sp] push eax [sp+4] pop eax mov [esp+2*ecx+4], eax
Tryby adresowania argumentów (2) 4.11 Nazwa i opis Oznaczenia Przykłady w IA-32 względny ip+8 jc label pc+9 rejestrowy pośredni z preinkrementacją [+r1] rejestrowy pośredni [r1+] movs z postinkrementacją pop eax rejestrowy pośredni [-r1] loop z predekrementacją push eax rejestrowy pośredni [r1-] movs z postdekrementacją
Cykl pracy (Z80) 4.12 cykl rozkazowy cykle procesora cykle zegara INC [HL] pobranie odczyt zapis T 1 T 2 T 3 T 4 T 1 T 2 T 3 T 1 T 2 T 3
Pomiar wydajności 4.13 IPS Instructions Per Second MIPS = 10 6 IPS FLOPS Floating Point Operations Per Second MFLOPS = 10 6 FLOPS GFLOPS = 10 9 FLOPS TFLOPS = 10 12 FLOPS PFLOPS = 10 15 FLOPS
Metody zwiększania wydajności (1) 4.14 Zwiększanie częstotliwości taktowania: ograniczenia konstrukcyjne i technologiczne, wydzielanie ciepła, czas propagacji. Inne pomysły: pobieranie instrukcji na zakładkę, kolejka (bufor) instrukcji, przetwarzanie potokowe, zrównoleglanie wykonywania instrukcji.
Metody zwiększania wydajności (2) 4.15 Nienadążanie szybkość pracy pamięci za wzrostem szybkości pracy procesorów: zwiększanie szerokości szyny danych; wielopoziomowe pamięci podręczne, początkowo jako zewnętrzne, a obecnie w jednym układzie scalonym z procesorem; pamięci umożliwiające pobieranie danych co jeden cykl zegara, a nawet dwa razy w jednym cyklu zegara.
Przetwarzanie potokowe 4.16 I 1 I 2 I 3 I 4 I 1 I 2 I 3 I 4 F D E W F D E W F D E W F D E W F D E W F D E W F D E W F D E W F fetch D decode E execute W write back
Problemy w przetwarzaniu potokowym 4.17 F D E W F D E E W zależność zasobu F D E W F D E W zależność danych F D E W F D E F D F zależność sterowania F D E W F D E W
Potokowe układy arytmetyczne 4.18 F = h g f f µ g µ h x t f(x t ) x t+1 f(x t+1 ) f(x t ) g(f(x t )) x t+2 f(x t+2 ) f(x t+1 ) g(f(x t+1 )) g(f(x t )) F (x t ) x t+3 f(x t+3 ) f(x t+2 ) g(f(x t+2 )) g(f(x t+1 )) F (x t+1 )
Zależności między danymi 4.19 RAW odczyt po zapisie load-use define-use mov eax, 7 add eax, 3 add ebx, eax mul ebx WAR zapis po odczycie add eax, ebx mov ebx, 4 WAW zapis po zapisie add eax, ebx and ecx, edx
Zależności sterowania 4.20 Pobieranie docelowego rozkazu z wyprzedzeniem. Równoległe przetwarzanie obu gałęzi programu. Predykcja skoków (przewidywanie rozgałęzień): zawsze następuje skok, nigdy nie następuje skok, decyduje kod instrukcji (kompilator), jak przy ostatnim wykonaniu, tablica historii skoków. Bufor pętli. Opóźnione rozgałęzianie.
Metody zrównoleglania 4.21 Procesor superskalarny wektorowy (SIMD Single Instruction Multiple Data) z bardzo długim słowem instrukcji (VLIW Very Long Instruction Word) Zrównoleglenie w trakcie wykonywania algorytm kompilator
Wydawanie i kończenie instrukcji 4.22 pipe 1 scheduler pipe 2 re-order buffer pipe 3
Architektury RISC i CISC (1) 4.23 RISC Reduced Instruction Set Computers Zawierają ograniczony, prosty zbiór instrukcji. Zawierają dużą liczbę uniwersalnych rejestrów. Instrukcje arytmetyczno- -logiczne wykonywane są na rejestrach. CISC Complex Instruction Set Computers Występują skomplikowane instrukcje wspierające języki wysokiego poziomu. Zawierają małą liczbą rejestrów i/lub rejestry specjalizowane. Instrukcje arytmetyczno- -logiczne mogą pobierać argumenty z pamięci i umieszczać wynik w pamięci.
Architektury RISC i CISC (2) 4.24 RISC Reduced Instruction Set Computers Kody instrukcji są stałej długości, typowo 4 bajty, i mają stałe rozmieszczenie pól, co ułatwia dekodowanie. Posiadają małą liczbę trybów adresowania. Dozwolone jest tylko adresowanie wyrównane. CISC Complex Instruction Set Computers Kody instrukcji mają zmienną długość, typowo od jednego do kilkunastu bajtów. Występuje prefiksowanie instrukcji utrudniające dekodowanie. Posiadają dużą liczbę trybów adresowania. Dozwolone jest adresowanie niewyrównane.
Architektury RISC i CISC (3) 4.25 CISC rozkazy Translator µops RISC
Geneza mikroprocesora 4.26 Zbyt czasochłonne projektowanie od podstaw z bramek logicznych nowego modelu np. kalkulatora lub sterownika windy. Podczas projektowania łatwo popełnić trudny do usunięcia błąd. Układ uniwersalny mikroprocesor. Nowa funkcjonalność przez wymianę programu.
Geneza mikroprogramowania 4.27 Zbyt czasochłonne projektowanie od podstaw z bramek logicznych nowej jednostki sterującej (mikro)procesora. Podczas projektowania łatwo popełnić trudny do usunięcia błąd. Uniwersalna jednostka sterująca. Nowa funkcjonalność przez wymianę mikroprogramu.
Mikroprogramowanie 4.28 Język wysokiego poziomu Asembler Kod maszynowy µoperacje µprogram sprzęt
System przerwań 4.29 Przerwania sprzętowe: maskowalne, niemaskowalne. Przerwania programowe. Praca krokowa: debugowanie. Wyjątki: ponawianie instrukcji, która spowodowała wyjątek. Obsługa przerwań: tablica przerwań.
Sprzętowe wsparcie dla systemów operacyjnych 4.30 Translacja adresów: segmentacja, stronicowanie, prosta i odwrotna tablica stron. Poziomy ochrony: wewnętrzny, nadzorcy, uprzywilejowany, zewnętrzny, aplikacji. Wywoływanie usług systemu operacyjnego: przerwania, specjalna instrukcja (syscall).
Segmentacja 4.31 pamieć wirtualna procesu 1 pamięć liniowa pamieć wirtualna procesu 2
Stronicowanie 4.32 pamięć fizyczna (ramki) liniowa pamięć wirtualna (strony) dysk
liniowy adres wirtualny nr strony przemieszczenie tablica stron Tablica stron 4.33 atrybuty nr ramki nr ramki specjalny rejestr nr ramki przemieszczenie adres fizyczny
Stronicowanie wielopoziomowe 4.34 liniowy adres wirtualny nr tablicy nr strony przemieszczenie katalog tablic tablica stron nr ramki nr ramki nr ramki specjalny rejestr nr ramki przemieszczenie adres fizyczny
liniowy adres wirtualny nr strony przemieszczenie Odwrócona tablica stron 4.35 funkcja haszująca odwrócona tablica stron nr strony atrybuty nr ramki przemieszczenie adres fizyczny
TLB 4.36 Każde odwołanie do pamięci wymaga zajrzenia do tablicy stron, która sama jest przechowywana w pamięci. Taki mechanizm jest nieefektywny. Przy odwoływaniu się do pamięci obowiązuje zasada lokalności. Rozwiązaniem jest bufor translacji adresów (ang. TLB Translation Lookaside Buffer).
Urządzenia wejścia-wyjścia 4.37 Metody adresowania urządzeń wejścia-wyjścia: rozdzielona przestrzeń adresowa, wspólna przestrzeń adresowa. Przesyłanie dużych bloków danych: transmisja procesorowa (PIO Programmed Input/Output), bezpośredni dostęp do pamięci (DMA Direct Memory Access). Sterowniki urządzeń.
Mikroprocesory są wszędzie 4.38