Materiałydowykładu Małe przypomnienie 4.1 4.Mikroprocesor Rejestry Układ współpracy zszynami sterująca Marcin Peczarski InstytutInformatyki UniwersytetWarszawski arytmetyczno- -logiczna połączeniawewnętrzne arytmetyczno- -logiczna arytmetyczno- -logiczna 6marca2008 Rejestry(1) 4.2 Rejestry(2) 4.3 danych adresowe ogólnegoprzeznaczenia specjalizowane stanu,znaczników wskaźnikstosu licznikprogramu zmiennopozycyjne wektorowe segmentowe zarządzaniapamięcią debugowania architekturabezrejestrowa minimalnyzestawrejestrów mały zestaw rejestrów specjalizowanych mały zestaw rejestrów uniwersalnych duży zestaw rejestrów uniwersalnych buforwierzchołkastosu stosowy zestaw rejestrów KodmaszynowyaAsembler 4.4 Kodmaszynowy binarnysposób opisu rozkazów procesora Każdaarchitekturamaswójunikalnykodmaszynowy. W obrębie tej samej architekturykod maszynowymoże być nieco różnydlaposzczególnychmodeliprocesorów. Asembler językprogramowanianiskiegopoziomu KażdaarchitekturamaswójunikalnyAsembler. asembler program tłumaczącyasembler na kod maszynowy KodmaszynowyaAsembler(AVR) 4.5 blinker: 00002ab68f in old_sreg,sreg 00002b930f push r16 00002c9100006c lds r16,blinker_counter 00002e950a dec r16 00002ff039 breq blinker_off 0000303300 cpi r16,blinker_half_period 000031f041 breq blinker_on blinker_end: 0000329300006c sts blinker_counter,r16 000034910f pop r16 000035be8f out SREG,old_sreg 0000369518 reti KodmaszynowyaAsembler(68000) 4.6 151413121110 9 8 7 6 5 4 3 2 1 0 OP R D S EA OP kodoperacji,np.:1000or,1001sub,1100and,1101add R numerrejestru danych,gdzie jest pierwszy argumentoperacji Jedno polecenie odpowiada zwykle jednemu rozkazowi maszynowemu. D kierunekoperacji:wynikzapisywanywpierwszym(0)lubdrugim(1)argumencie S rozmiaroperacji:00bajt,01word,10longword EA adres efektywny:opis położeniadrugiegoargumentu add.wd2,d1 d1:=d1+d2 1101 001 0 01 000010 KodmaszynowyaAsembler(IA-32) 4.7 000008DA 8DB600000000 leaesi,[esi+0x0] 000008E0 81FAFFFF0000 cmpedx,0xffff 000008E6 75EE jnz0x8d6 000008E8 C70424E0910408 movdword[esp],0x80491e0 000008EF E8A8FDFFFF call0x69c 000008F4 B948910408 movecx,0x8049148 000008F9 31D2 xoredx,edx 000008FB 894C2408 mov[esp+0x8],ecx 000008FF 89542404 mov[esp+0x4],edx 00000903 C70424C0880408 movdword[esp],0x80488c0 0000090A E8BDFDFFFF call0x6cc 0000090F 83C40C addesp,byte+0xc 00000912 C3 ret
Różnekodowania moveax,ebx KodmaszynowyaAsembler(IA-32) 4.8 Synonimy jle jng 7Eimm8 jb jnae jc 72imm8 Synonimyiróżnekodowania shleax,1 saleax,1 D1E0 89D8 8BC3 C1E001 Prefiksy movax,bx 6689D8 668BC3 jle jng 0F8Eimm32 jb jnae jc 0F82imm32 Aplikacyjne przesyłanie danych operacjearytmetyczne operacjebitowe operacjenanapisach Listainstrukcji(rozkazów) 4.9 instrukcje sterujące(skok bezwarunkowyi warunkowy,warunkowewykonanieinstrukcji,wołanieprocedury,powrótzprocedury) Systemowe(tryb uprzywilejowanylub nadzorcy) zarządzanie systemowymi strukturami danych zmianatrybupracyprocesora Sterowaniewykonaniemprogramu 4.10 Operacje dwuargumentowe 4.11 Jednoetapowe(bezznaczników) bzs1,displ ;branchifs1=0 Dwuetapowezeznacznikami cmpeax,4 ;setflags jelabel ;jumpifzf=1 Dwuetapowezpredykatami cmp.eqp1,p2=r1,r2 ;ifr1=r2 (p1)addr3=1,r3 ;thenr3:=r3+1 (p2)addr3=3,r3 ;elser3:=r3+3 Przykładowaskładnia Możliwasemantyka addr1,r2 r1:=r1+r2 addr1,r2 r2:=r1+r2 addr1,r2,r3 r1:=r2+r3 addr1,r2,r3 r3:=r1+r2 Nazwai opis natychmiastowy bezpośredni Tryby adresowania argumentów(1) 4.12 Oznaczenia Przykładyw IA-32 7$7#7 movdword[1000],7 [1000] movdword[1000],7 pośredni [[1000]] niewystępuje rejestrowy(bezpośredni) r1 moveax,[ebx] (rejestrowy)pośredni [r1] moveax,[ebx] indeksowy [r1+8] moveax,[ebx+4*ecx+8] [r1+r2] stosowy [sp] pusheax [sp+4] popeax mov[esp+2*ecx+4],eax Nazwai opis Tryby adresowania argumentów(2) 4.13 Oznaczenia Przykładyw IA-32 względny ip+8 jclabel pc+9 rejestrowypośredni z preinkrementacją [+r1] rejestrowypośredni [r1+] movs z postinkrementacją popeax rejestrowypośredni [-r1] loop z predekrementacją pusheax rejestrowypośredni [r1-] movs z postdekrementacją Cyklpracy(Z80) 4.14 Pomiarwydajności 4.15 cyklrozkazowy cykleprocesora cyklezegara 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 IPS Instructions Per Second MIPS=10 6 IPS FLOPS FloatingPointOperationsPerSecond MFLOPS=10 6 FLOPS GFLOPS=10 9 FLOPS TFLOPS=10 12 FLOPS PFLOPS=10 15 FLOPS
Metodyzwiększaniawydajności(1) 4.16 Zwiększanie częstotliwościtaktowania ograniczeniakonstrukcyjne i technologiczne wydzielanie ciepła czaspropagacji Innepomysły pobieranieinstrukcjinazakładkę kolejka(bufor)instrukcji przetwarzaniepotokowe zrównoleglanie wykonywania instrukcji Metodyzwiększaniawydajności(2) 4.17 Nienadążanie szybkość pracy pamięci za wzrostem szybkości pracy procesorów zwiększanie szerokościszyny danych wielopoziomowe pamięci podręczne,początkowo jako zewnętrzne, aobecniewjednymukładziescalonymzprocesorem pamięci umożliwiające pobieranie danych co jeden cykl zegara, anawetdwarazywjednymcykluzegara Przetwarzanie potokowe 4.18 Problemyw przetwarzaniupotokowym 4.19 I 1 I 2 I 3 I 4 I 1 I 2 I 3 I 4 F fetch D decode E execute W writeback F D E E W zależność zasobu zależność danych F D E F D F zależność sterowania Potokowe układy arytmetyczne 4.20 Zależnościmiędzydanymi 4.21 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 ) RAW odczytpozapisie load-use moveax,7 addebx,eax WAR zapispoodczycie addeax,ebx movebx,4 WAW zapispozapisie addeax,ebx andecx,edx define-use addeax,3 mulebx Zależnościsterowania 4.22 Metodyzrównoleglania 4.23 Pobieranie docelowego rozkazu z wyprzedzeniem Równoległe przetwarzanie obu gałęzi programu Predykcja skoków(przewidywanie rozgałęzień) zawszenastępujeskok nigdynienastępujeskok decyduje kod instrukcji(kompilator) jakprzyostatnimwykonaniu tablicahistoriiskoków Buforpętli Opóźnionerozgałęzianie Procesor superskalarny wektorowy (SIMD SingleInstructionMultipleData) zbardzodługimsłoweminstrukcji (VLIW VeryLongInstructionWord) Zrównoleglenie wtrakciewykonywania algorytm kompilator
Wydawanieikończenieinstrukcji 4.24 ArchitekturyRISCiCISC(1) 4.25 scheduler pipe1 pipe2 pipe3 re-order buffer RISC ReducedInstructionSet Zawierająograniczony,prosty zbiórinstrukcji. Zawierają dużą liczbę uniwersalnychrejestrów. Instrukcjearytmetyczno- -logicznewykonywanesąna rejestrach. CISC ComplexInstructionSet Występująskomplikowaneinstrukcje wspierające języki wysokiegopoziomu. Zawierająmałąliczbąrejestrów i/lubrejestryspecjalizowane. Instrukcjearytmetyczno- -logicznemogąpobieraćargumentyz pamięciiumieszczać wynikwpamięci. ArchitekturyRISCiCISC(2) 4.26 ArchitekturyRISCiCISC(3) 4.27 RISC ReducedInstructionSet CISC ComplexInstructionSet Kodyinstrukcjisąstałejdługości,typowo4bajty,imająstałe rozmieszczenie pól,co ułatwia dekodowanie. Kodyinstrukcjimajązmienną długość,typowoodjednegodo kilkunastubajtów.występuje prefiksowanieinstrukcjiutrudniającedekodowanie. Posiadająmałąliczbętrybów adresowania. Dozwolonejesttylkoadresowaniewyrównane. Posiadajądużąliczbętrybów adresowania. Dozwolonejestadresowanieniewyrównane. CISC rozkazy Translator µops RISC Genezamikroprocesora 4.28 Zbytczasochłonneprojektowanieodpodstawzbrameklogicznych nowegomodelunp.kalkulatoralubsterownikawindy Podczas projektowaniałatwopopełnić trudnydo usunięciabłąd Układuniwersalny mikroprocesor Nowafunkcjonalnośćprzezwymianęprogramu Genezamikroprogramowania 4.29 Zbytczasochłonneprojektowanieodpodstawzbrameklogicznych nowejjednostkisterującej(mikro)procesora Podczas projektowaniałatwopopełnić trudnydo usunięciabłąd Uniwersalnajednostkasterująca Nowafunkcjonalnośćprzezwymianęmikroprogramu Mikroprogramowanie 4.30 Językwysokiegopoziomu Asembler Kodmaszynowy µoperacje µprogram sprzęt Systemprzerwań 4.31 Przerwaniasprzętowe maskowalne niemaskowalne Przerwaniaprogramowe Pracakrokowa debugowanie Wyjątki ponawianie instrukcji,która spowodowaławyjątek Obsługaprzerwań tablicaprzerwań
Sprzętowe wsparcie dla systemów operacyjnych 4.32 Segmentacja 4.33 Translacjaadresów segmentacja stronicowanie,prostaiodwrotnatablicastron Poziomyochrony wewnętrzny,nadzorcy,uprzywilejowany zewnętrzny,aplikacji Wywoływanie usług systemu operacyjnego przerwania specjalnainstrukcja(syscall) pamiećwirtualna procesu1 pamięć liniowa pamiećwirtualna procesu2 Stronicowanie 4.34 pamięć fizyczna (ramki) Tablicastron 4.35 liniowyadreswirtualny nrstrony przemieszczenie tablicastron liniowa pamięć wirtualna (strony) atrybuty dysk specjalnyrejestr przemieszczenie adresfizyczny Stronicowanie wielopoziomowe 4.36 Odwróconatablicastron 4.37 liniowyadreswirtualny nrtablicy nrstrony przemieszczenie liniowyadreswirtualny nrstrony przemieszczenie katalogtablic tablicastron funkcja haszująca odwróconatablicastron nrstrony atrybuty przemieszczenie przemieszczenie specjalnyrejestr adresfizyczny adresfizyczny TLB 4.38 Urządzeniawejścia-wyjścia 4.39 Każde odwołanie do pamięci wymaga zajrzenia do tablicy stron, którasamajestprzechowywanaw pamięci. Taki mechanizm jest nieefektywny. Przy odwoływaniu się do pamięci obowiązuje zasada lokalności. Rozwiązaniem jest bufor translacjiadresów(ang.tlb Translation LookasideBuffer). Metodyadresowaniaurządzeńwejścia-wyjścia rozdzielonaprzestrzeńadresowa wspólnaprzestrzeńadresowa Przesyłaniedużychblokówdanych transmisjaprocesorowa(pio ProgrammedInput/Output) bezpośrednidostępdopamięci(dma DirectMemoryAccess) Sterownikiurządzeń hardware software
DMA 4.40 Mikroprocesorysąwszędzie 4.41 Odciąża procesor przy przesyłaniu dużych bloków danych. Dane przesyłane są bezpośrednio między sterownikiem urządzenia apamięciąoperacyjną. Przesyłanie obsługuje sterownikdma specjalizowanyukład podłączonydoszynysystemowej. Fazytransmisji: rozkazów procesorinicjujekanałdmaizapisujeparametry transmisji, danych wykonywane jest przesyłanie, statusu sterownikdmazgłaszaprzerwanie,procesorodczytuje statusizwalniakanałdma.