Materiały do wykładu. 4.Mikroprocesor. Marcin Peczarski. Instytut Informatyki Uniwersytet Warszawski. 5 kwietnia 2009



Podobne dokumenty
Materiały do wykładu. 4. Mikroprocesor. Marcin Peczarski. Instytut Informatyki Uniwersytet Warszawski

Model von Neumanna 0.1

4.Mikroprocesor. Małe przypomnienie 4.1. Marcin Peczarski. Rejestry(2) 4.3. Rejestry(1) 4.2. KodmaszynowyaAsembler(AVR) 4.5. KodmaszynowyaAsembler 4.

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Architektura komputerów

Technika mikroprocesorowa I Wykład 2

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Organizacja typowego mikroprocesora

Architektura komputerów

Architektura komputerów. Asembler procesorów rodziny x86

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski

Projektowanie. Projektowanie mikroprocesorów

Architektura komputerów

Struktura i działanie jednostki centralnej

ARCHITEKTURA PROCESORA,

2 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/ / 24

Architektura systemów komputerowych

Budowa Mikrokomputera

Programowalne układy logiczne

UTK Można stwierdzić, że wszystkie działania i operacje zachodzące w systemie są sterowane bądź inicjowane przez mikroprocesor.

Architektura Systemów Komputerowych

Budowa komputera Komputer computer computare

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Wydajność obliczeń a architektura procesorów. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Mikroprocesor Operacje wejścia / wyjścia

Architektura komputerów

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa Wstęp... 11

Logiczny model komputera i działanie procesora. Część 1.

Architektura mikroprocesorów TEO 2009/2010

Witold Komorowski: RISC. Witold Komorowski, dr inż.

Programowanie Niskopoziomowe

Przetwarzanie potokowe pipelining

Budowa i zasada działania komputera. dr Artur Bartoszewski

Architektura komputerów

organizacja procesora 8086

Wprowadzenie do architektury komputerów. Model programowy procesora i jego struktura Procesory CISC i RISC

Architektura mikroprocesorów z rdzeniem ColdFire

Architektura potokowa RISC

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania

Architektura komputerów

Architektura systemów komputerowych. dr Artur Bartoszewski

LEKCJA TEMAT: Zasada działania komputera.

LEKCJA TEMAT: Współczesne procesory.

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Magistrala systemowa (System Bus)

Pośredniczy we współpracy pomiędzy procesorem a urządzeniem we/wy. W szczególności do jego zadań należy:

dr inż. Jarosław Forenc

architektura komputerów w. 4 Realizacja sterowania

Architektura typu Single-Cycle

Budowa systemów komputerowych

Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle. Krzysztof Banaś, Obliczenia wysokiej wydajności.

Schematy zarzadzania pamięcia

Architektura komputerów. Komputer Procesor Mikroprocesor koncepcja Johna von Neumanna

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

Działanie systemu operacyjnego

Działanie systemu operacyjnego

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów

Podstawy Techniki Mikroprocesorowej

dr inż. Rafał Klaus Zajęcia finansowane z projektu "Rozwój i doskonalenie kształcenia i ich zastosowań w przemyśle" POKL

Działanie systemu operacyjnego

Podstawy techniki cyfrowej Mikroprocesory. Mgr inż. Bogdan Pietrzak ZSR CKP Świdwin

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/ / 24

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

Architektura systemów komputerowych. Lista instrukcji procesora

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386

drklaus 1 Model funkcjonalny komputera struktura, funkcje, komputer dr inż. Rafał KLAUS STRUKTURA I DZIAŁANIE KOMPUTERA

Pytania. W obecnie wykorzystywanych komputerach osobistych jest stosowana architektura: jednoszynowa. pamięciowo-centryczna.

Wydajność obliczeń a architektura procesorów

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

Podstawy techniki mikroprocesorowej. Dr inż. Grzegorz Kosobudzki p.311a A-5. Tel

Sprzęt i architektura komputerów

Architektura Systemów Komputerowych

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86

Stronicowanie w systemie pamięci wirtualnej

Podstawy techniki cyfrowej i mikroprocesorowej II. Urządzenia wejścia-wyjścia

Podstawy techniki cyfrowej Układy wejścia-wyjścia. mgr inż. Bogdan Pietrzak ZSR CKP Świdwin

Programowanie Niskopoziomowe

Lista instrukcji mikroprocesora Programowanie w assemblerze

Programowanie Niskopoziomowe

Architektura komputera. Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt

Architektura systemów komputerowych. dr Artur Bartoszewski

Język programowania: Lista instrukcji (IL Instruction List)

Działanie systemu operacyjnego

Procesor i jego architektura (CISC, RISC, 32/64 bity). Systemy wieloprocesorowe. wer Wojciech Myszka 16 pa«zdziernika 2008

Architektura komputerów egzamin końcowy

Programowanie Niskopoziomowe

Technika mikroprocesorowa I Wykład 1

Praktycznie całe zamieszanie dotyczące konwencji wywoływania funkcji kręci się w okół wskaźnika stosu.

Architektura Systemów Komputerowych

MIKROKONTROLERY I MIKROPROCESORY

2. Architektura mikrokontrolerów PIC16F8x... 13

Pamięć wirtualna. Przygotował: Ryszard Kijaka. Wykład 4

Systemy operacyjne III

Technika mikroprocesorowa I Wykład 1

Lista rozkazów mikrokontrolera 8051

System pamięci. Pamięć wirtualna

3 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/ / 22

Transkrypt:

Materiały do wykładu 4.Mikroprocesor Marcin Peczarski Instytut Informatyki Uniwersytet Warszawski 5 kwietnia 2009

Architektura mikroprocesora 4.1 Rejestry Układ współpracy zszynami Jednostka sterująca połączenia wewnętrzne Jednostka arytmetyczno- -logiczna Jednostka arytmetyczno- -logiczna Jednostka arytmetyczno- -logiczna

Kod maszynowy a Asembler 4.2 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

Dlaczego Z80? 4.3 Jeden z najpopularniejszych mikroprocesorów 8-bitowych Nadal produkowany i używany Bezpośredni wpływ na najpopularniejszą obecnie architekturę x86 Kompromisy projektowe, kompatybilność z 8080 Wystarczająco prosty

Z80 rejestry 4.4 A F A F B C B C D E D E H L H L PC SP IX IY I IFF R

Z80 przesyłanie danych 8-bitowych(1) 4.5 LDd,s 01 d s d, s argument 000 B 001 C 010 D 011 E 100 H 101 L 110 (HL) 111 A NiemarozkazuLD(HL),(HL);kod01110110torozkazHALT!

Z80 przesyłanie danych 8-bitowych(2) 4.6 LDd,n 00 d 110 n d argument 000 B 001 C 010 D 011 E 100 H 101 L 110 (HL) 111 A

Z80 przesyłanie danych 8-bitowych(3) 4.7 LD(p),A LDA,(p) 000pd010 LD(aa),A LDA,(aa) 0011d010 aal aah p para rejestrów 0 BC 1 DE d kierunek 0 z akumulatora do pamięci 1 z pamięci do akumulatora

Z80 rejestry indeksowe(1) 4.8 LDr,(HL) LDr,(i+d) 01 r 110 11 i 11101 01 r 110 d r rejestr 000 B 001 C 010 D 011 E 100 H 101 L 111 A i rejestr indeksowy 0 IX 1 IY

Z80 rejestry indeksowe(2) 4.9 LD(HL),n LD(i+d),n 00110110 11 i 11101 n 00110110 d n i rejestr indeksowy 0 IX 1 IY

Z80 rejestry primowane 4.10 EXAF,AF 00001000 EXX 11011001

Z80 rejestr znaczników 4.11 S Z AC P/V N CY S najstarszy bit wyniku operacji, wynik ujemny Z wynikoperacjizerowy AC pomocnicze przeniesienie z pozycji 3, arytmetyka BCD P/V znacznik parzystości dla operacji logicznych i nadmiaru(ang. overflow) dla operacji arytmetycznych N znacznik zerowany przy wykonywaniu dodawania i ustawiany przy wykonywaniu odejmowania, arytmetyka BCD CY znacznik przeniesienia(pożyczki przy odejmowaniu)

Z80 8-bitowe operacje arytmetyczno-logiczne 4.12 10 op s 11 op 110 n s argument 000 B 001 C 010 D 011 E 100 H 101 L 110 (HL) 111 A op operacja 000 ADDA,y 001 ADCA,y 010 SUBA,y 011 SBCA,y 100 ANDA,y 101 ORA,y 110 XORA,y 111 CPA,y y {s,n}

Z80 rotacje i przesunięcia bitów 4.13 RLx CY x RRx CY x RLCx CY x RRCx CY x SLAx x CY 0 SRL x 0 x CY SRA x x CY x {A,B,C,D,E,H,L,(HL),(IX+d),(IY+d)}

Z80 operacje na adresach(1) 4.14 Ładowanie LDp,nn LDp,(aa) LD(aa),p gdziep {BC,DE,HL,SP,IX,IY} Zamiana EXDE,HL Inkrementacja i dekrementacja INCp DECp gdziep {BC,DE,HL,SP,IX,IY}

Arytmetyka 16-bitowa ADDHL,p ADCHL,p SBCHL,p gdziep {BC,DE,HL,SP} Z80 operacje na adresach(2) 4.15 Dodawanie i odejmowanie wartości w rejestrach indeksowych ADDIX,p gdziep {BC,DE,SP,IX} ADDIY,p gdziep {BC,DE,SP,IY}

Z80 stos(1) 4.16 Zajmuje pewien obszar w pamięci. Rejestr SP wskazuje wierzchołek stosu ostatni zajęty bajt. Stosrośniewdół wkierunkumniejszychadresów.

PUSHp Z80 stos(2) 4.17 Odkłada na stos najpierw starszy, potem młodszy bajt argumentu(little-endian). ZmniejszaSPo2. p {AF,BC,DE,HL,IX,IY} POPp Zdejmuje ze stosu najpierw młodszy, potem starszy bajt i umieszcza je w argumencie. ZwiększaSPo2. p {AF,BC,DE,HL,IX,IY}

Inicjowanie wskaźnika stosu LDSP,nn LDSP,(aa) LDSP,p gdziep {HL,IX,IY} Manipulowanie wierzchołkiem stosu INCSP DECSP EX(SP),p gdziep {HL,IX,IY} Z80 stos(3) 4.18

Z80 skoki i podprogramy 4.19 JP aa CALL aa RET 11000011 11001101 11001001 aal aal aah aah JPwykonujeskokpodpodanyadres(wpisujeaadoPC). CALL odkłada na stos adres następnego rozkazu(adres powrotu) i wykonuje skok pod podany adres. RETzdejmujezestosuadrespowrotuiwykonujeskokpodten adres.

Z80 rozkazy warunkowe 4.20 JPw,aa CALLw,aa RETw 11 w 010 11 w 100 11 w 000 aal aah aal aah w skrót warunek skoku 000 NZ Z=0 001 Z Z=1 010 NC CY=0 011 C CY=1 100 PO P/V=0 101 PE P/V=1 110 P S=0 111 M S=1

Z80 skoki względne 4.21 JRd JRv,d 00011000 001 v 000 d d v skrót warunek skoku 00 NZ Z=0 01 Z Z=1 10 NC CY=0 11 C CY=1 SkokwzględnydodajedoPCwartośćdtraktowanąjakoliczbaze znakiem.

Z80 przykład procedury 4.22 MUL: PUSH AF ; Nie modyfikuj rejestrów roboczych. PUSHBC ;wbicargumenty LD HL,0 ;whlwynik LD A,B LD B,H ;wyzerowanieb MULTST:CP A,0 JR Z,MULEND SRL A JR NC, MUL2BC ADD HL,BC MUL2BC: SLA C ; pomnożenie BC RL B ; przez2 JR MULTST MULEND: POP BC ; przywrócenie wartości POP AF ; rejestrom roboczym RET

Z80 przekazywanie argumentów przez stos 4.23 LDH,(x) ;drugi(ostatni)argument LD L, 5 ; pierwszy(przedostatni) argument PUSH HL ; argumenty na stosie od ostatniego CALL MUL INC SP ; czyszczenie stosu przez INC SP ; procedurę wołającą LD(y),HL;zapisaniewyniku MUL: PUSHIX LDIX,3 ADDIX,SP... ;(IX+1)-pierwszyargument... ;(IX+2)-drugiargument POPIX RET

Z80 przekazywanie argumentów przez stos 4.24 LDH,5 ;pierwszyargument LDL,(x) ;drugiargument PUSH HL ; argumenty na stosie od pierwszego CALL MUL LD(y),HL;zapisaniewyniku MUL: LDIX,4 ADDIX,SP... ;(IX-1)-pierwszyargument... ;(IX-2)-drugiargument POP IY ; zdjęcie adresu powrotu LDSP,IX ;stosczyściprocedurawołana JP(IY) ;powrótzprocedury

Z80 cykl pracy 4.25 cykl rozkazowy cykle procesora cykle zegara ADDA,E pobranie T 1 T 2 T 3 T 4 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 Liczą się tylko dostępy do pamięci!

Z80 przerwania 4.26 Służą do sygnalizowania procesorowi, że jakieś urządzenie wymaga obsługi, np.: wciśnięto klawisz, odebrano pakiet danych. Niemaskowalne zawsze aktywne Maskowalne włączane rozkazem EI ustawienie przerzutnika przerwań IFF wyłączane rozkazem DI wyzerowanie IFF trzy tryby, ustawiane odpowiednio rozkazami: IM0, IM1, IM2 Tryby0i1sąodziedziczonepo8080,omówimytylkotryb2.

Z80 zgłaszanie przerwań 4.27 Urządzenie chcąc zgłasić przerwanie, podaje stan niski na wejście NMIlubINT. Procesor testuje stan tych wejść w ostatnim takcie zegara każdego cyklu rozkazowego. Jeśli wejście NMI ma stan niski, zamiast wykonywać kolejny rozkaz, procesor przechodzi do obsługi przerwania niemaskowalnego. Jeśli wejście INT ma stan niski i przerwanie maskowalne jest włączone, zamiast wykonywać kolejny rozkaz, procesor przechodzi do obsługi przerwania maskowalnego.

Z80 obsługa przerwania niemaskowalnego 4.28 Zapamiętywany jest aktualny stan IFF. Przerwania maskowalne są wyłączane IFF jest zerowany. Wykonywany jest skok do podprogramu obsługi rozpoczynającego sięodadresu(66) 16. Zakończenie obsługi polega na wykonaniu rozkazu RETN. RozkazRETNzdejmujezestosuadrespowrotuiwpisujegodoPC oraz przywraca poprzednią wartość IFF.

Z80 obsługa przerwania maskowalnego(1) 4.29 Procesor generuje zmodyfikowany cykl pobrania rozkazu. W tym cyklu wystawia sygnał potwierdzenia przyjęcia przerwania. Urządzenie zgłaszające przerwanie po rozpoznaniu potwierdzenia wystawia na szynę danych numer przerwania b. Wartość PC jest odkładana na stosie. Przerwanie maskowalne jest wyłączane. Z tablicy przerwań pobierany jest adres obsługi przerwania. Tablica przerwań jest wskazywana przez rejestr przerwań I.

Z80 obsługa przerwania maskowalnego(2) 4.30 Adres początku procedury obługi przerwania numer b znajduje się podadresami28 I+b(młodszybajt),28 I+b+1(starszybajt). Do PC wpisywany jest adres początku procedury obługi przerwania. Przed zakończeniem obsługi zwykle włącza się ponownie przyjmowanie przerwań rozkazem EI. Zakończenie obsługi polega zwykle na wykonaniu rozkazu RETI. RozkazRETIzdejmujezestosuadrespowrotuiwpisujegodoPC. Do manipulowania rejestrem przerwań służą rozkazy LDI,A LDA,I

Z80 szkielet procedury obsługi przerwania 4.31 INT: EXAF,AF EXX... EXX EXAF,AF EI RETI

Komunikacja z urządzeniami, np.: Z80 wejście-wyjście 4.32 odczytanie kodu wciśniętego klawisza, odczytanie odebranego pakietu danych, sterowanie wyświetlaczem. Oddzielna przestrzeń adresowa wejścia-wyjścia Rozkazy INA,(n) OUT(n),A INr,(C) OUT(C),r gdzier {A,B,C,D,E,H,L}

Z80 pozostałe rozkazy(1) 4.33 Arytmetyczno-logiczne INCx DECx BITb,x SETb,x RESb,x RLD RRD CPL NEG CCF SCF DAA gdzieb {0,1,...,7}, x {A,B,C,D,E,H,L,(HL),(IX+d),(IY+d)}

Z80 pozostałe rozkazy(2) 4.34 Skoki DJNZd JP(p) gdzied { 128, 127,...,127},p {HL,IX,IY} Operacje na ciągach bajtów w pamięci LDI LDD LDIR LDDR CPI CPD CPIR CPDR

Z80 pozostałe rozkazy(3) 4.35 Przesłania blokowe z wejścia i na wyjście INI IND INIR INDR OUTI OUTD OUTIR OUTDR Przerwania programowe RSTa gdziea {0,8,16,...,56}

Z80 pozostałe rozkazy(4) 4.36 Inne NOP HALT LDR,A LDA,R Nieudokumentowane EXDE,IX EXDE,IY SLLx/SL1x...

Małe podsumowanie(1) 4.37 Z punku widzenia programisty wszystkie mikroprocesory działają podobnie do opisanego. Poszczególne architektury różnią się m.in.: porządkiem bajtów, liczbą i przeznaczeniem rejestrów, listą oferowanych instrukcji(rozkazów), semantyką operacji dwuargumentowych, sposobem realizacji sterowania programem, trybami adresowania, systemem przerwań.

Dalsze różnice: Małe podsumowanie(2) 4.38 rozdzielne lub wspólne przestrzenie adresowe: danych i programu (architektury typu Princeton lub Harward), wejścia-wyjścia, mechanizmy ochrony pamięci(brak, segmentacja, stronicowanie). Żeby móc działać szybciej, współczesne mikroprocesory mają zupełnie inną organizację(budowę) niż opisany.

Rejestry(1) 4.39 danych adresowe ogólnego przeznaczenia specjalizowane stanu, znaczników wskaźnik stosu 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.40

Aplikacyjne przesyłanie danych operacje arytmetyczne operacje bitowe operacje na blokach danych Lista instrukcji(rozkazów) 4.41 instrukcje sterujące(skok bezwarunkowy i warunkowy, warunkowe wykonanie instrukcji, wołanie procedury, powrót z procedury) Systemowe(tryb uprzywilejowany lub nadzorcy) zarządzanie systemowymi strukturami danych zmiana trybu pracy procesora

Operacje dwuargumentowe 4.42 Przykładowa składnia Możliwa semantyka addr1,r2 addr1,r2 addr1,r2,r3 addr1,r2,r3 r1:=r1+r2 r2:=r1+r2 r1:=r2+r3 r3:=r1+r2

Sterowanie wykonaniem programu 4.43 Jednoetapowe(bez znaczników) bzs1,label jecxzlabel Dwuetapowe ze znacznikami CPA,0 JRZ,MULEND cmpeax,0 jzmulend ;branchifs1=0 ;jumpifecx=0 ;setflags ;jumpifz=1 ;setflags ;jumpifzf=1 Dwuetapowe z predykatami cmp.eqp1,p2=r1,r2 ;ifr1=r2 (p1)addr3=1,r3 ;thenr3:=r3+1 (p2)addr3=3,r3 ;elser3:=r3+3

Tryby adresowania argumentów(1) 4.44 Nazwa Z80 IA-32 natychmiastowy LD B, 7 mov ebx, 7 bezpośredni LD A,(1000) mov eax,[1000] rejestrowy(bezpośredni) ADD A, B add eax, ebx (rejestrowy) pośredni ADD A,(HL) add eax,[ebx] indeksowy LD A,(IX+8) mov eax,[ebx+4*ecx+8] stosowy PUSH AF push eax POP AF pop eax EX(SP), HL xchg[esp+8*ecx], eax względny JR Z, MULEND jz mulend

Tryby adresowania argumentów(2) 4.45 Nazwa Oznaczenia Z80 IA-32 rejestrowy pośredni [+r1](+r1) z preinkrementacją rejestrowy pośredni [r1+](r1+) LDI movs z postinkrementacją @r1+ POP AF pop eax rejestrowy pośredni [-r1](-r1) DJNZ d loop d z predekrementacją PUSH AF push eax rejestrowy pośredni [r1-](r1-) LDD z postdekrementacją @r1- movs

System przerwań 4.46 Przerwania sprzętowe maskowalne niemaskowalne Przerwania programowe Praca krokowa debugowanie Wyjątki ponawianie instrukcji, która spowodowała wyjątek Element tablicy przerwań adres procedury obsługi instrukcja skoku do procedury obsługi deskryptor procedury obsługi

Pomiar wydajności 4.47 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.48 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.49 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, anawetdwarazywjednymcykluzegara

Przetwarzanie potokowe 4.50 I 1 I 2 I 3 I 4 I 1 I 2 I 3 I 4 F D E MW F D E MW F D E MW F D E MW F D E MW F D E MW F D E MW F D E MW F fetch D decode E execute M memoryaccess W writeback

Potokowanie rozkazów 4.51 Rozkazy procesora takiego jak Z80 źle się potokuje: kodrozkazuzajmujeod1do4bajtów,cowymagado4dostępów do pamięci; rozkaz może wykonywać skomplikowane operacje na argumentach w pamięci, co może wymagać kilku kolejnych odwołań. Listę rozkazów należy przeprojektować tak, aby wszystkie rozkazy: miały kod tego samego rozmiaru, wykonywały podobną liczbę operacji, potrzebowały co najwyżej jednego dodatkowego dostępu do pamięci(oprócz wczytania kodu rozkazu).

Klasy rozkazów 4.52 Ograniczamy repertuar rozkazów do następujących klas. Odczytzpamięcidorejestru(ang.load),np.: r1:=(r2+offset) Zapiszrejestrudopamięci(ang.store),np.: (r2+offset):=r1 Arytmetyczno-logiczne tylko na rejestrach, np.: r1:=r2+r3 Rozgałęzienia jednoetapowe, np.: branchtolabelifr1=r2

Podział rozkazów na etapy 4.53 Rozważamy przykładowy potok piecioetapowy. F pobraniekodurozkazuzpamięci D zdekodowanie rozkazu i pobranie argumentów z rejestrów E wykonanie operacji arytmetyczno-logicznych, obliczenie adresu M odczytaniedanychzpamięcilubzapisaniedanychdopamięci W zapisaniewynikudorejestru

Przykładowe czasy wykonania 4.54 klasa instrukcji F D E M W razem odczytzpam. 200ps 100ps 200ps 200ps 100ps 800ps zapisdopam. 200ps 100ps 200ps 200ps 700ps arytm.-logiczne 200ps 100ps 200ps 100ps 600ps rozgałęzienia 200ps 100ps 200ps 500ps Rozkazmusiprzebywaćwjednymetapiepotoku200ps. Czas wykonania jednego rozkazu wynosi 1000 ps, czyli dłużej niż najdłuższy czas wykonania rozkazu wykonywanego niepotokowo. Czaswykonanianrozkazówwynosi200(n+4)ps.

Zależności zasobów, strukturalne 4.55 Potok może zostać wstrzymany, gdy rozkazy będące na różnych etapach wykonania potrzebują dostępu do tego samego sprzętu. Przykładoworozkazchcewykonaćodczytdanychzpamięci,awtym samym czasie trzeba pobrać kod kolejnego rozkazu. F D E MW F D E MW F D E MW F D E MW Zależności strukturalne usuwa się przez dołożenie sprzętu. Dlatego m.in. współczesne mikroprocesory mają oddzielne pamięci podręczne pierwszego poziomu dla kodu i danych.

Zależności danych typu define-use 4.56 Potok może zostać wstrzymany, gdy rozkaz potrzebuje wyniku poprzedniego rozkazu. r1:=r2+r3 r4:=r1-r5 F D E MW F D D D E MW Takie zależności usuwa się przez data forwarding lub data bypassing. Wynik obliczony na etapie E pierwszego rozkazu przesyła się bezpośrednio do etapu E drugiego rozkazu, zanim zostanie zapisany do rejestru wynikowego. r1:=r2+r3 r4:=r1-r5 F D E MW F D E MW

Zależności danych typu load-use 4.57 Potok może zostać wstrzymany, gdy rozkaz potrzebuje danych ładowanych z pamięci przez poprzedni rozkaz. r1:=(r2+4) r4:=r1-r5 F D E MW F D D D E MW Data forwarding nie zawsze jest w stanie usunąć taką zależność. r1:=(r2+4) r4:=r1-r5 F D E MW F D D E MW Dodatkowe opóźnienie wprowadzane przez rozkaz, gdy następny rozkaz potrzebuje jego wyniku, nazywa się latency. Kompilator może usuwać latency, zmieniając kolejność rozkazów.

Zależności sterowania 4.58 Potok musi być opróżniony, gdy rozkaz warunkowy wykona skok. branch F D E MW F D F F D E MW W rozważanym przykładzie dodatkowe opóźnienie(latency) wynosi dwa takty.

Rozwiązywanie zależności sterowania 4.59 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 Opóźnione rozgałęzianie

Przykład potoku trzyetapowego Budowa potoku 4.60 f µ fg g µ gh h Każdyetappotokutoukładsekwencyjny,narysunkusątof,g,h. Stan przetwarzania pomiędzy etapami jest zapamiętywany w rejestrachpotokowych,narysunkuµ fg iµ gh.

Metody zrównoleglania 4.61 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

Przetwarzanie wielopotokowe 4.62 pipeline 1 scheduler pipeline 2 re-order buffer pipeline 3 Wydawanie/wykonywanie rozkazów w zmienionej kolejności(ang. out of order issue/execution)

Zależności danych przy out of order issue 4.63 RAW odczytpozapisie load-use mov eax,[ecx+4] addebx,eax WAR zapispoodczycie addeax,ebx movebx,4 WAW zapispozapisie addeax,ebx andecx,edx define-use add eax, ecx addebx,eax Zależności RAW rozwiązuje się jak poprzednio przez data forwarding lub data bypassing. Zależności WAR i WAW są zależnościami fałszywymi i rozwiązuje się je przez przemianowanie rejestrów.

Architektury RISC i CISC(1) 4.64 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.65 RISC Reduced Instruction Set Computers Kody instrukcji są stałej długości,typowo4bajty,imają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.66 CISC rozkazy Translator µops RISC

Geneza mikroprocesora 4.67 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.68 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.69 Język wysokiego poziomu Asembler Kod maszynowy µoperacje µprogram sprzęt

Sprzętowe wsparcie dla systemów operacyjnych 4.70 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.71 pamieć wirtualna procesu 1 pamięć liniowa pamieć wirtualna procesu 2

Stronicowanie 4.72 pamięć fizyczna (ramki) liniowa pamięć wirtualna (strony) dysk

liniowy adres wirtualny nr strony przemieszczenie tablica stron Tablica stron 4.73 atrybuty nr ramki nr ramki specjalny rejestr nr ramki przemieszczenie adres fizyczny

Stronicowanie wielopoziomowe 4.74 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.75 funkcja haszująca odwrócona tablica stron nrstrony atrybuty nr ramki przemieszczenie adres fizyczny

TLB 4.76 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).

DMA Direct Memory Access 4.77 Odciąża procesor przy przesyłaniu dużych bloków danych. Dane przesyłane są bezpośrednio między sterownikiem urządzenia a pamięcią operacyjną. Przesyłanie obsługuje sterownik DMA specjalizowany układ podłączony do szyny systemowej. Fazy transmisji: rozkazów procesor inicjuje kanał DMA i zapisuje parametry transmisji, danych wykonywane jest przesyłanie, statusu sterownik DMA zgłasza przerwanie, procesor odczytuje status i zwalnia kanał DMA.

Mikroprocesory są wszędzie 4.78