Architektura počítačových systémů
Transkript
Architektura po íta ových systém UAI/606 P ednáška blok 3 Miroslav Skrbek [email protected] Ústav aplikované informatiky P írodov decká fakulta Jiho eské univerzity v eských Bud jovicích Platné pro šk.r. 2013/2014 Elektrický obvod – opakování fyzika zš, sš spína I žárovka svítí žárovka 5V U žárovka nesvítí Zdroj nap tí (baterie) Architektury po íta III, Miroslav Skrbek 2 Tranzistor CMOS kanál N ídící elektroda 5V U CMOS Transistor kanál-N nesvítí rozepnuto D G 5V IDS Ug U D G S S svítí 5V Zdroj nap tí (baterie) U Ug > 0,7V … sepnuto (prochází proud) Ug < 0,7V … rozepnuto (neprochází proud) Architektury po íta III, Miroslav Skrbek D G sepnuto S 3 Tranzistor CMOS kanál P CMOS Transistor kanál - P S G 5V U Ug G U D IDS nesvítí D 5V Zdroj nap tí (baterie) G Ug > U-0,7V … rozepnuto (neprochází proud) 5V III, Miroslav Skrbek S D U Ug < U-0,7V … sepnuto (prochází proud) Architektury po íta S svítí 4 Logický obvod - invertor Y = ¬A (zjednodušeno) Logické úrovn 5V … logická jedni ka 1 0V … logická nula 0 Invertor (negace) 5V A A Y 0 (0V) 1 (5V) 1 (5V) 0 (0V) Y A Y 0V Architektury po íta III, Miroslav Skrbek 5 Logický obvod - NOR Y = ¬( A ∨ B ) 5V A B A B Y 0 0 1 0 1 0 1 0 0 1 1 0 Y A 0V Y B Architektury po íta III, Miroslav Skrbek 6 Kombina ní logické obvody Stavební prvky: logické obvody AND, OR, NOR (negovaný OR), AND, NAND (negovaný AND), XOR (exclusive or), invertor Pospojováním se tvo í složit jší logické funkce. A B C nor nand xor Sestrojte pravdivostní tabulku pro toto zapojení Y nor D Architektury po íta III, Miroslav Skrbek 7 Multiplexer Dvouvstupový multiplexer A 0 Y B A B S Y X X 0 ty vstupový multiplexer A 0 A B 1 B C 2 D 3 1 X X 1 S X – log. nula nebo jedna Multiplexer vybírá jeden ze dvou nebo více vstup na jediný výstup Y. M žete si tento obvod funk n p edstavit jako p epína . Vybraný vstup je ur en vstupem S. Architektury po íta III, Miroslav Skrbek S Y 2 Ozna uje dva vodi e 8 Registr Q0 D0 D1 vstup . Q1 Takto si nap íklad p edstavte registry v procesoru a CLK jako hodinový kmito et procesoru nap . 3GHz výstup Registr na obrázku je schopen si zapamatovat íslo v rozsahu 0-255, tedy má kapacitu 1 byte. . RESET . WRITE D7 CLK Sada klopných obvod D se spole ným hodinovým vstupem tvo í registr. RESET Q7 Q FFh 00h D 39h 11h 5Ah 5Ah 78h CLK WRITE Architektury po íta III, Miroslav Skrbek 9 T ístavové budi e Výstupy logických obvod nelze spojit – hrozí zkrat p i rozdílných logických úrovních. 0 1 T ístavový budi A OE A Y 0 0 Z 0 1 Z 1 0 0 1 1 1 Y OE Pokud OE=1, pak Y kopíruje logickou hodnotu na A. Pro OE=0 se budi odpojí a na výstupu Y nevynucuje žádnou logickou úrove . Mluvíme o tom, že výstup je ve t etím stavu a zna íme Z. Architektury po íta III, Miroslav Skrbek 10 Obousm rná sb rnice OE2 A B A A OE1 Y2 Y1 P enos zleva doprava: OE1=1, OE2=0 (musí být! nula, jinak zkrat), Y2 má stejnou hodnotu jako A P enos z prava doleva: OE1=0 (musí být! nula, jinak zkrat), OE2=1, Y1 má stejnou hodnotu jako B Architektury po íta III, Miroslav Skrbek 11 Klopné obvody (typ D) Jedni ka na signálu RESET nastaví Q do nuly bez ohledu na CLK a D. Používá se k inicializaci klopného obvodu. Klopný obvod D je jednobitovou pam tí. D Q Vzestupná hrana na CLK CLK CLK RESET D P i vzestupné hran signálu CLK se p epíše logická hodnota ze vstupu D na výstup Q. Mimo vzestupnou hranu na CLK se m že D m nit libovoln a na výstup Q to nemá vliv. Obvod si tedy pamatuje poslední hodnou na D zapsanou vzestupnou hranou CLK. Q Architektury po íta III, Miroslav Skrbek 12 Registr s t ístavovým budi em BUS R1 D Q Zápis hodnoty z registru R1 do registru R2 CLK OE1 CLK WRITE1 WRITE2 OE2 OE1 R2 D WRITE2 CLK OE2 Q WRITE1 BUS Nap íklad vnit ní sb rnice procesoru Architektury po íta Q(R1) T etí stav (všechny výstupy odpojeny) III, Miroslav Skrbek 13 Pam Signály OE (output enable, tení) a WR (zápis, write) RAM Adresa CS RAM WR Chip select, výb r ipu OE Ší ka adresové sb rnice (v bitech) je dána kapacitou pam ti v bytech (pokud je pam adresovatelná po bytech) Pam m že být adresovatelná po v tších jednotkách (nap . 32 nebo 64 bit ) Data Adresa Pam si p edstavte jako pole pam ových prvk , které je indexované adresou. 0 1 2 … Kapacita -1 data Architektury po íta III, Miroslav Skrbek 14 Pam ové obvody pro hlavní pam - statická pam RAM A18 A16 A14 A12 A7 A6 A5 A4 A3 A2 A1 A0 D0 D1 D2 GND SRAM 512KB Statická RAM Použití v menších po íta ových systémech (nap . pro ídící aplikace) Pam neztratí zapsaná data dokud je p ipojeno napájení Kapacita nap . 512KB Adresa (A0-A18) Data (D0-D7) tecí signál (OE) Zápisový signál (WR) Výb r ipu (CE) VDD A15 A17 WR A13 A8 A9 A11 OE A10 CE D7 D6 D5 D4 D3 Poznámka: uvedenou kapacitu pam ti považujte za p íklad. Existují pam ti i s jinými kapacitami nap . 128KB, 64KB, 32KB. U jiných kapacit se odpovídajícím zp sobem m ní po ty adresových vodi . Architektury po íta III, Miroslav Skrbek 15 tení z pam ti Vystavení adresy na adresovou sb rnici Aktivace tecího impulsu Na datové sb rnici se objeví data Ukon ení tecího impulsu trc 1 Adresa 0 Data Z 1 tení 0 tac trc – read cycle time (celková p ístupová doba do pam ti) tac – p ístupová doba od zm ny adresy as Architektury po íta III, Miroslav Skrbek 16 Zápis do pam ti Vystavení adresy na adresovou sb rnici Vystavení dat na datovou sb rnici Aktivace zápisového impulsu Ukon ení zápisového impulsu twc 1 Adresa 0 Z Data 1 Zápis 0 twc – write cycle time (celková p ístupová doba do pam ti) as Architektury po íta III, Miroslav Skrbek 17 Pam ové obvody pro hlavní pam - dynamická pam RAM (typ DDR2) DDR2 SDRAM 128MB x 8 Pouzdro: 68-ball FBGA NC NC VDD NU NC VSS NC VSSQ /DQS VDDQ DQ6 VSSQ DM DQS VSSQ DQ7 VDDQ DQ1 VDDQ VDDQ DQ0 VDDQ DQ4 VSSQ DQ3 DQ2 VSSQ DQ5 VDDL VREF VSS CLKE /WE / zna í negovaný signál NC VSSDL CK /RAS /CK ODT BA0 BA1 /CAS /CS A10 A1 A2 A0 A3 A5 A6 A4 A7 A9 A11 A8 A12 BA2 NC A13 NC VDD NC Synchronní dynamická RAM (SDRAM) Periodické obnovování obsahu externím adi em. Celá pam musí být obnovena p ibližn do 10 ms, jinak hrozí ztráta dat. Kapacita 128MB (8 bank x 224 adres) Adresa (A0-A13); kompletní 24bitová adresa se zapisuje nadvakrát sloupcová (10 bit ) a ádková (13 bit ) íslo banky (BA0-BA2) Data (DQ0-DQ7) ídící signály: RAS ( ádková adresa) CAS (sloupcová adresa) /WE (zápis) NC Architektury po íta Hodinový signál (CK a /CK) /CS výb r ipu III, Miroslav Skrbek 18 tení z pam ti CK A0- Adresa A13 ádku Adresa sloupce Adresa sloupce /RAS /CAS Data 45ns Adresa ádku 1000h 1. adresa sloupce 200h Adresa 400200h 2. adresa sloupce 328h Data z adresy 400200h 400201h 400202h 400203h Adresa 400328h Data z adresy 40032Bh 40032Ah 400329h 400328h Blok dat pro adresu 1 Architektury po íta III, Miroslav Skrbek Blok dat pro adresu 2 19 Navrhování procesor Architektury po íta III, Miroslav Skrbek 20 Blokové schéma po íta e Registry Adresová sb rnice ALU adi Opera ní pam CPU Periferie (V/V za ízení) Datová sb rnice clk ídicí signály ( teni, zápis) Architektury po íta III, Miroslav Skrbek Stavové signály (p erušení) 21 Architektura CISC Complex Instruction Set Computer (CISC) - po íta s rozsáhlým souborem instrukcí Instruk ní sada obsahuje Složité instrukce (nap . kopírování bloku dat pam ti) i jednoduché instrukce Instrukcí je hodn Typicky r zná délka instrukcí (co do zakódování, tak i trvání) Pozitiva Snížená etnost na ítání instrukcí Možnost vícenásobného využití funk ních jednotek v r zných fázích vykonání instrukce P ítomnost mikroprogramového adi e dává možnost zm nit instruk ní repertoár Negativa Složité instrukce jsou specializované, nutnost r zných variant, aby skláda ka byla úplná Velký po et instrukcí =>složitý dekodér instrukcí =>dekódování jednoduchých a obvykle nej etn jších instrukcí (nap . s ítání) trvá dlouho Nutnost mikroprogramovatelných adi Instrukce typicky trvají r zn dlouho, t žko se zavádí proudové zpracování Architektury po íta III, Miroslav Skrbek 22 Architektura RISC Reduced Instruction Set Computer (RISC) – redukovaná instruk ní sada Instrukce Jen jednoduché Typicky kódovány stejným po tem bit Typicky vykonány v jednom, nebo n kolika málo taktech Pozitiva Jednoduchost – malé množství instrukcí Jednoduchý dekodér instrukcí => rychlé dekódování instrukcí Umož uje proudové zpracování instrukcí Rychlý obvodový adi Architektury po íta III, Miroslav Skrbek 23 Zásadní otázka Kolik instrukcí musí minimáln mít po íta ? P ekvapivá odpov na dalším slajdu ! Architektury po íta III, Miroslav Skrbek 24 Jednoinstruk ní po íta subjmpifneg a, b, c ; mem(a) = mem(b) – mem(a), if (mem(a) < 0) goto c Co d lá tato sada instrukcí ? subjmpifneg tmp,tmp,pc+1 subjmpifneg a, tmp, pc+1 subjmpifneg a, b, pc+1 ; mem[tmp] = 0 ; mem[a] = -mem[a] ; mem[a] = mem[b] – (- mem[a]) Jedná se o bezregistrový po íta s jednou aritmetickou operací typu pam -pam Zpracováno dle: Patterson A., Hennessy L.: Computer organization & design: the hardware/software interface. 2nd edition, Morgan Kaufmann Publishers, Inc., 1997. ISBN 1-55860-428-6, ISBN 1-55860491-X Architektury po íta III, Miroslav Skrbek 25 Instruk ní cyklus po íta e IF (Instruction Fetch) – na tení instrukce ID (Instruction Decode) – dekódování instrukce OF (Operand Fetch) – na tení operand EX (Execute) – vykonání instrukce WB (Write Back) – zapsání výsledku) Interrupt detection (test žádosti o p erušení) Architektury po íta III, Miroslav Skrbek 26 adi procesoru Realizuje instruk ní cyklus ídí vykonávání díl ích operací v rámci instruk ního cyklu Generuje ídící signály Reaguje je stavové signály (p íznaky aritmetických operací, vstup p erušení, apod.) Relizace Obvodový adi (kone ný automat, D-klopné obvody + kombina ní logika) Mikroprogamovaný adi Realizuje složit jší instrukce Má pam pro uložení mikroinstrukcí Instrukce procesoru je realizována vykonáním sady mikroinstrukcí Architektury po íta III, Miroslav Skrbek 27 Instruction Set Architecture (ISA) Instruction Set (soubor instrukcí) tvo í rozhraní mezi hardware a software. Architektura souboru instrukcí má zásadní vliv na architekturu procesoru. ISA zahrnuje • registry procesoru • instruk ní sadu procesoru • datové typy • operace Software • specifikace operand ISA Hardware • adresní režimy • kódování instrukcí do binární podoby • adresní prostory • výjimky Architektury po íta III, Miroslav Skrbek 28 P íklad instrukcí Instrukce x86 Adresa Kód instrukce (hex) Symbolický zápis instrukce získáno p íkazem: objdump –d /bin/ls Architektury po íta III, Miroslav Skrbek 29 Typy instrukcí Aritmetické: ADD (sou et), SUB(rozdíl), MUL(násobení), DIV(d lení), CMP porovnání Logické: AND (log. sou in), OR (log. sou et), COM (negace, complement), XOR(excl. OR). Posuvy: SHL/SHR/ASR (posun vlevo, vpravo, aritmetický vpravo), ROL, ROR (rotace vlevo, vpravo), RLC, RRC (rotace vlevo, vpravo p es carry) Skokové instrukce: JMP (nepodmín ný skok), JZ, JC podmín né skoky, CALL skok do podprogramu, RET, RETI návrat z podprogramu/p erušení. P esuny MOV (p esun), XCH (exchange – vým na) Architektury po íta III, Miroslav Skrbek 30 Posuny a rotace 0 Znaménkový bit C ROR ROL registr C registr registr registr C SHR (shift right) posun všech bit vpravo, zleva se nasouvá nula, bit vpravo, který opouští registr se ukládá do carry. ASR (arithmetic shift right) posun všech bit vpravo, zleva se nasouvá znaménkový bit (nejvyšší ád), bit vpravo, který opouští registr se ukládá do carry. Používá se pro posun ísel v dopl kovém kódu (d lení dv ma) SHL (shift left) posun všech bit vlevo, zprava se nasouvá nula, bit vlevo, který opouští registr se ukládá do carry 0 C C registr RRC registr C Architektury po íta RLC III, Miroslav Skrbek 31 Program status word (PSW) PSW je registr pro uložení p íznak a stavové informace procesoru. Typické p íznaky Z (zero) – výsledek operace je nulový C (carry) – výsledek aritmetické operace zp sobil p ete ení z nejvyššího ádu, asto se užívá také v posunech V (overflow) – výsledek aritmetické operace v dopl kovém kódu je mimo rozsah (nap . v osmibitovém registru 127+1 nebo -127-2). N (negative) – výsledek je záporný I – p íznak povolení p erušení (1 povoleno, 0 – zakázáno) PSW I Nastavuje se programov ovliv uje p erušovací systém N V C Z Nastavuje ALU Architektury po íta III, Miroslav Skrbek 32 Skokové instrukce I Nepodmín né (skok na adresu proveden vždy) P ímé (adresa skoku je sou ástí instukce) Nep ímé (adresa skoku je v registru, na který se instrukce skoku odkazuje) Podmín né (skok se provede pouze pokud je spln na podmínka, tj. testovaný bit v p íznakovém registru má požadovanou hodnotu) Podmínky (EQ – equal (Z=1), NEQ – nonequal (Z=0), GE – greater or equal (C=0 pro ísla bez znaménka, N=0 pro ísla se znaménkem), LT – less than (C=1 pro ísla bez znaménka, N=1 pro ísla se znaménkem), atd. Nap íklad BEQ addr, BNEQ addr, BGE add, apod. P ímé testování p íznak JZ addr, JNZ addr, JC addr, JNC addr, JN addr (negative), JP addr (positive) apod. Architektury po íta III, Miroslav Skrbek 33 Skokové instrukce II Skoky absolutní Instrukce nebo registr udává p ímo adresu kam se sko í Realizováno jednoduše p i azením PC = <cílová adresa skoku>, nap . PC=0x0010 Skoky relativní Instrukce udává hodnotu, která se p i te k aktuální pozici PC a tak se vypo te cílová adresa skoku Relativní skok je nezávislý na p esunu programu v pam ti po íta e, tj. vypo ítané cílové adresy dopadají do správných míst i po p esunu (=> snadná relokace) Realizováno p i azením PC = PC + <posunutí> Posunutí automaticky po ítají p eklada e, programátor se o to nemusí starat Architektury po íta III, Miroslav Skrbek 34 P íklad programu 0000: 0001: 0002: 0003: 0004: 0005: 0006: MOV MOV MOV MOV ADD SUB JNZ R0, #10 R1, #3 R2, #1 R3, #0 R3, R1 R0, R2 0004 0007: STOP ; ; ; ; ; ; ; ; ; ; ; naplní R0 hodnotou 10 naplní R1 hodnotou 3 naplní R2 hodnotou 1 naplní R3 hodnotou 0 R3 = R3 + R1 R0 = R0 – R2 skok na adresu 4, pokud je výsledek p edchozí operace nenulový zastavení programu, výsledek je v R3 R0,R1,R2 a R3 jsou registry procesoru. V tomto p ípad je levý operand cílový (a zdrojový sou asn ). Architektury po íta III, Miroslav Skrbek 35 Zásobník Procesory implementují zásobník Zásobník je uložen v pam ti Jeden registr (SP-stack pointer) je vy len n jako ukazatel na vrchol zásobníku Zásobník roste shora dol (x86) nebo zdola nahoru (n které mikrokontroléry) Na zásobník se primárn ukládají návratové adresy pro skoky do podprogramu (funkce v C je podprogramem) Na zásobník také ukládají parametry funkcí a odkládají obsahy registr Architektury po íta III, Miroslav Skrbek 36 Podprogramy Instrukce CALL adr ldi r16, 10 ldi r17, 1 ldi r18, 5 ldi r19, 0 call fu_add16 … Výsledek r17:r16 0x010F ; podprogram fu_add16: ldi r16, 255 ldi r17, 2 ldi r18, 1 ldi r19, 0 call fu_add16 … Výsledek r17:r16 add r16,r18 adc r17,r19 ret Návratová adresa se ukládá na zásobník 0x0300 Architektury po íta III, Miroslav Skrbek 37 Zásobník p i volání podprogramu PC=0x0000 P íklad programu SP 0000: call 0002 0001: jmp 0001 0002: call 0005 0003: add r1, #5 0004: ret 0005: mov r1, #10 0006: ret PC=0x0005 PC=0x0002 SP 0x0001 SP PC=0x0003 0x0001 0x0003 PC=0x0001 SP SP 0x0001 Po resetu se program za ne provád t od adresy 0x0000. Na adrese 0x0000 je skok do podprogramu na adresu 0x0002, kde nastane skok do dalšího (vno eného) podprogramu na adrese 0x0005. Zde se r1 naplní hodnotou 10. Po návratu z vno eného podprogramu (RET na 0x0006), pokra uje program na adrese 00003h, kde se k r1 p i te 5. Po instrukci RET na adrese 0x0004, program pokra uje na adrese 0x0001, kde vstoupí do nekone né smy ky. Architektury po íta III, Miroslav Skrbek 38 P erušení Vyvolání podprogramu vn jší nebo vnit ní událostí Vn jší p erušení jsou asynchronní (mohou p ijít kdykoliv a v kterékoliv ásti provád ného programu) Každý procesor má typicky jeden vstup pro p erušení (pokud je více zdroj p erušení, použije se adi p erušení, který vybírá na základ priority) Architektury po íta III, Miroslav Skrbek 39 P erušení (p íklad) .dseg .org 0x100 sekundy: .byte 1 1s ldi r16, 0x55 mov r17, r16 inc r16 … .cseg ; obsluha preruseni int_T2: push in push lds inc sts pop out pop reti ldi r30, 0x58 ldi r31, 0x02 ld r18, Z+ … Architektury po íta r16 r16, SREG r16 r16, sekundy r16 sekundy, r16 r16 SREG, r16 r16 III, Miroslav Skrbek 40 Obsluhy p erušení adi p erušení, který vybral na základ priority mezi více aktivními žádostmi o p erušení informuje procesor o tom, který zdroj p erušení vybral. Na základ této informace ur uje procesor adresu obslužného podprogramu pro p erušení. Jsou dv varianty: 1. Obslužné podprogramy pro konkrétní zdroje p erušení mají pevn stanovené adresy v pam ti. astý p ípad mikrokontrolér (8051, AVR, ARM, …). 2. V pam ti je tabulka adres po átk obsluh p erušení a každému zdroji p erušení je ur ena jedna položka v této tabulce. Užito nap íklad u x86 (real mode) a dsPIC. Obdobou je IDT (interrupt descriptor table) - x86 v protected módu, Deskriptor obsahuje více informací, cílový segment a offset, privilege level apod. Architektury po íta III, Miroslav Skrbek 41 Typické vlastnosti obsluhy p erušení Musí být transparentní (po návratu nesmí zm nit hodnotu žádného registru procesoru, ani p íznakového) Za átek obsahuje adu instrukcí push, které ukládají registry použité v obsluze p erušení (v první ad p íznakového registru) Konec obsahuje adu instrukcí pop, které obnovují stav registr ze zásobníku Pro asto se opakující p erušení musí obsahovat minimum kódu, jinak se dramaticky sníží výkon celého systému, p ípadn dojde ke ztrát n kterých žádostí o p erušení Kon í instrukcí RETI, která je podobná instrukci RET, ale m že integrovat další funkce nap íklad automatické obnovení p íznak (x86) nebo informovat adi p erušení o dokon ení obsluhy p erušení a pokyn k výb ru dalšího zdroje p erušení (pokud je n jaká žádost aktivní) AVR, 8051. Architektury po íta III, Miroslav Skrbek 42 Ur ení po átk obslužných rutin pro p erušení Pevné adresy – dány p i návrhu procesoru, typicky na za átku pam ti, nap . Atmel AVR, Intel 8051, ARM Vektory p erušení – tabulka(y) v hlavní pam ti, kde pro každý zdroj p erušení se nachází adresa po átku obsluhy p erušení. Položka je vypln na softwarov p ed povolením p íslušného p erušení. X86 v reálném módu, Microchip PIC24F. Architektury po íta III, Miroslav Skrbek 43 Vstupn /výstupní operace Periferie se ovládají p es registry (nap . IDE disk má 8+2 registry) Registry se mapují bu do vyhrazeného vstupn /výstupního (IO) prostoru (PC) nebo se mapují do pam ového prostoru (AVR) Registry periferií se nesmí podléhat kešování. U vstupn /výstupních registr m že mít význam Zapsání hodnoty Zapis bez ohledu na hodnotu tení hodnoty tení bez ohledu na p e tenou hodnotu Neplatí, co zapíši to také p e tu Hodnota zapsaná do registru ovliv uje dále periferii Architektury po íta III, Miroslav Skrbek 44 Typy ISA St ada ová (mikrokontroléry) Zásobníková (Java VM) Registrová load-store (RISC procesory) register-memory (x86) memory-memory (výjime ná) Architektury po íta III, Miroslav Skrbek 45 St ada ová architektura Má jeden registr (st ada ), který je implicitn užíván aritmetickými a logickými operacemi Aritmetické a logické operace mají jako jeden operand st ada a druhý je je ten z pam ti. Výsledek je ukládán do st ada e. Jednoduchý hardware P íliš mnoho operací p esunu (MOV) p i vkládání operandu do st ada a uklízení výsledk ze st ada e do pam ti Architektury po íta III, Miroslav Skrbek 46 St ada ová ISA - p íklad St ada Instrukce A MOV A, #const Program counter PC Registr p iznak (Program Status Word) C Z MOV A, adr MOV adr, A ADD A, adr SUB A, adr SUBB A, adr ADC A,adr INC DEC INC DEC Architektury po íta A A adr adr III, Miroslav Skrbek JZ adr JNZ adr JC adr JNC adr JMP adr SHL SHR SAR AND A, adr OR A, adr XOR A, adr COM CALL adr RET RETI 47 St ada ová architektura – datové cesty a ídící signály Datová sb rnice (DB) 16 K adi i irw IR aw A K doe C Z C 16 Data src1s 3 0 2 0 moe pswsel 1 aluop 0 RAM mwr ALU ALUO Adresa 16 10h (SP) 0 16 16 3 2 aoe Architektury po íta 1 16 pcw PC psww PSW src2s P íznaky z ALU asel Adresová sb rnice (AB) III, Miroslav Skrbek 48 Microkcode I Architektury po íta III, Miroslav Skrbek 49 Registrová architektura typu load-store 32 rin irw dboe 0 1 rd 1 rn Registry regw 0 0 1 2 RAM PC pcwr aluop ALU Adresová sb rnice pcinc 1 src2 01 2 1 pcz + moe src1 0 0 rm 1 mwr 0 1 IR 32 Datová sb rnice 32 32 pswwr PSW aboe 32 Architektury po íta C III, Miroslav Skrbek Z 50 Registrová ISA (Load-Store) - p íklad Registry Instrukce R0 MOV Rd, #const R1 R2 R3 Program counter PC Registr p iznak (Program Status Word) PSW C Z LD Rn, adr ST adr, Rn LD Rd, [Rn] ST [Rn], Rm ADD Rd, Rn,Rm SUB Rd, Rn,Rm SUBB Rd, Rn, Rm ADC Rd,Rn,Rm INC Rn DEC Rn V Load-store architektu e jsou aritmetické operace provád ny pouze mezi registry. Pro p ístup do pam ti se používají instrukce load (LD) nebo store (ST). Architektury po íta III, Miroslav Skrbek JZ adr JNZ adr JC adr JNC adr JMP adr SHL Rn SHR Rn SAR Rn AND Rd, Rn, Rm OR Rd, Rn, Rm XOR Rd, Rn, Rm COM Rn CALL adr RET RETI 51 Registrová – p íklady formát instrukcí t íoperandová instruce ADD rd, rn, rm ; rd<-rn+rm OZ (opera ní znak) 01100010 rn rm rd dvouoperandová instruce ADD rd, rn ; rd<-rd+rn OZ 01100010 rn rd Rd zna í cílový registr Architektury po íta III, Miroslav Skrbek Opera ní znak odlišuje jednozna n instrukce od sebe ! 52 Reálné p íklady kódování instrukcí Mikrokontrolér ady AVR (Atmel) Architektury po íta III, Miroslav Skrbek 53 Kódování instrukcí AVR I Symbolický zápis instrukce dec r1 Strojový kód instrukce dec Cílový operand Cílový operand 1001010ddddd1010 Jméno instrukce Opera ní znak Opera ní znak P íklad : 0x941A dec r1 Architektury po íta III, Miroslav Skrbek 54 Kódování instrukcí AVR II Symbolický zápis instrukce mov r1, r2 Strojový kód instrukce mov: Cílový operand Zdrojový operand 001011 r ddddd r r r r Cílový operand Jméno instrukce Opera ní znak P íklad mov r1, r2 Architektury po íta III, Miroslav Skrbek Zdrojový operand : 0x2C12 55 Kódování instrukcí AVR III Symbolický zápis instrukce Strojový kód instrukce ldi: ldi r17, 0x54 Cílový operand R(dddd +16) P ímá konstanta 1 1 1 0KKKKd d d dKKKK Cílový operand Jméno instrukce Opera ní znak P íklad ldi R17, 0x54 Architektury po íta III, Miroslav Skrbek Konstanta : 0xE514 56 Kódování instrukcí AVR IV Strojový kód instrukce brne: Symbolický zápis instrukce brne PC-4 Cílová adresa relativního skoku Znaménko V symbolickém vyjád ení se adresa relativního skoku udává absolutn (brne 0x100, brne PC+6). P eklada si pro vygenerování instrukce relativní adresu vypo te. 111101 k k k k k k k 001 Opera ní znak P íklady Jméno instrukce P ímá relativní adresa (dopl kový kód) brne PC-4 brne PC+0xA Kód podmínky : 0xF7D9 : 0xF449 Pozor ! Absolutní adresa skoku se po ítá jako PC+k+1 Architektury po íta III, Miroslav Skrbek 57 Kódování instrukcí AVR V Symbolický zápis instrukce Strojový kód instrukce jmp: jmp 0x125 Cílová adresa skoku (absolutní) Opera ní znak Opera ní znak 1001010 k k k k k 110 k k k k k k k k k k k k k k k k k Jméno instrukce P íklad P ímá absolutní adresa jmp 0x125 : 0x940C, 0x0125 Architektury po íta III, Miroslav Skrbek 58 P íklad programu v symbolickém vyjád ení a ve strojovém kódu Tuto transformaci provádí program zvaný asembler Adresa v pam ti programu Symbolické vyjád ení programu ldi ldi mov mov mov jmp r17, r18, r16, r17, r18, 0 0x55 0x88 r17 r18 r16 0000: 0001: 0002: 0003: 0004: 0005: 0006: E515 E828 2F01 2F12 2F20 940C 0000 Toto píše programátor Obsah pam ti programu Toto je mikropo íta em na ítáno a dekódováno jako instrukce Poznámka: ml ky p edpokládáme, že strojový kód umís ujeme od adresy 0x0000. Architektury po íta III, Miroslav Skrbek 59 P eklad z vyšších programovacích jazyk Binární podoba programu v pam ti po íta e po nahrání a p ípadné relokaci souboru main.exe Jazyk C Jazyk C Jazyk symbolických instrukcí (asembler) main.c modul.c modul.as P eklada jazyka C GCC gcc –c main.c P eklada jazyka C GCC gcc –c modul.c Asembler GAS as –o modulasm.o modul.as main.o modul.o modulasm.o Linkování gcc –o main main.o modul.o modulasm.o main (.exe) Architektury po íta III, Miroslav Skrbek Spustitelný soubor 60 Adresní módy Registrový MOV R1, R2 P ímá konstanta MOV R1, #100 P ímá adresa LD R1, 100 nebo LD R1,[100] Nep ímá adresa MOV R1, [R2] s postinkrementací LD R1,[R2+] s preinkrementací LD R1,[+R2] s postdekrementací LD R1,[R2-] s predekremetací LD R1,[-R2] Nep ímá s posunutím LD R1, [R2+100] Nep ímá s indexací LD R1, [R2+R3+100] Nep ímá s indexací a m ítkem LD R1, [100+R2+R3*2] Architektury po íta III, Miroslav Skrbek 61 Registrová ISA (obecná) - p íklad Aritmetické instrukce mohou mít jeden operand z pam ti Registry R0 R1 R2 R3 Program counter PC Registr p iznak (Program Status Word) PSW C Z JZ adr JNZ adr MOV Rd, #const JC adr JNC adr MOV Rd, adr JMP adr MOV adr, Rd MOV Rd, [Rn] SHL Rd MOV [Rn], Rm SHR Rd ADD Rd, Rn SAR Rd ADD Rd, [Rn] AND Rd, Rn SUB Rd, Rn OR Rd, Rn SUB Rd, [Rn] XOR Rd, Rn SUBB Rd, Rn COM Rd ADC Rd,Rn CALL adr INC Rd RET DEC Rd RETI Instrukce Architektury po íta III, Miroslav Skrbek 62 Zásobníková architektura Operandy aritmetických operací jsou na zásobníku (vrchol a položka pod vrcholem), operandy se odstraní a výsledek se uloží na zásobník Instrukce mají krátké kódování, u aritmetických operací sta í jen opera ní znak Skokové instrukce jsou stejné jako u jiných ISA Nevýhodou je p íliš mnoho p esun mezi pam tí a zásobníkem Zásobník lze hardwarov realizovat s omezenou hloubkou, proto je nutný mechanizmus odkládání (spiling) do a znovu napl ování (filling) zásobníku z pam ti. Architektury po íta III, Miroslav Skrbek 63 Zásobníková architektura (zjednodušený p íklad) Datová sb rnice 8 SP IR TOP 8 ALU 2 RAM ALU1 PC 16 16 Adresová sb rnice Architektury po íta III, Miroslav Skrbek 64 Zásobníková - p íklad Registr (ne vždy) Zásobník TOP (vrchol) SP Pam Stack pointer SP Program counter PC Registr p iznak (Program Status Word) PSW C Z Instrukce PUSH #imm POP LOAD LOAD offset ADD SUB MUL SHL SHR AND OR XOR COM Architektury po íta III, Miroslav Skrbek JZ adr JNZ adr JC adr JNC adr JMP adr CALL adr RET RETI 65 Hierarchie pam ového podsystému Procesor Hlavní pam Pevný disk Registry R1 R2 … Rn P ístupová doba: < 1 ns Ší ka: 8, 16, 32 nebo 64 bit Pam ová kapacita všech registr : jednotky, desítky, stovky byt , maximáln jednotky kilobyt . P ístupová doba: 15ms (pr m rná) Adresovatelný po: sektorech (512 byt ) Kapacita: desítky a stovky GB Cena/MB: 0.02 k /MB (rok 2004) P ístupová doba: 45ns Adresovatelná po: slabikách (bytech) Kapacita: jednotky GB Cena/MB: 8k /MB (rok 2004) Architektury po íta III, Miroslav Skrbek 66 P íklad: pam ový podsystém po íta e PC 533MHz Procesor (Pentium 4) 133MHz Hlavní pam Pevný disk fclk=2GHz Registry Skrytá pam (Cache) sekundární EAX Skrytá pam (Cache) primární EBX … IP 16KB 512MB Disková vyrovnávací pam (disc cache) 1MB 8MB Architektury po íta III, Miroslav Skrbek 67 Vým na dat mezi procesorem a hlavní pam tí íta programu Adresová sb rnice Procesor Hlavní pam IP Adresa EBX EAX Data Instruk ní registr ti Zapiš Na tení instrukce Nahrát obsah pam ti z adresy, která je uložena v registru EBX, do EAX (nap . MOV EAX, [EBX]) Architektury po íta III, Miroslav Skrbek Datová sb rnice Signály ti a zapiš ozna ujeme jako ídící signály 68 Skrytá pam (Cache) Slouží ke zkrácení p ístupové doby hlavní pam ti P ístupová doba skryté pam ti je podstatn kratší n ž pro hlavní pam Kapacita skryté pam ti je podstatn menší než kapacita hlavní pam ti První p ístup k dat m je dán p ístupovou dobou hlavní pam ti, ale každý další p ístup k témže dat m (pokud nebyla v azena ze skryté pam ti) je dán p ístupovou dobou do skryté pam ti Skrytá pam je transparentní (z funk ního hlediska procesor nepozná, jestli je skrytá pam p ítomna nebo ne) Architektury po íta III, Miroslav Skrbek 69 Funkce skryté pam ti HIT nebo MISS Adresa Skrytá pam (Cache) Procesor Hlavní pam Data MISS (Výpadek skryté pam ti) HIT HIT – data na adrese generované procesorem jsou ve skryté pam ti (kratší p ístupová doba) MISS - data na adrese generované procesorem nejsou ve skryté pam ti a musí se na íst z hlavní pam ti (delší p ístupová doba) Architektury po íta III, Miroslav Skrbek 70 P íklad Bez skryté pam tí MOV ADD ADD ADD ADD AX, AX, AX, AX, AX, Se skrytou pam tí [1030h] [1101h] [1101h] [1101h] [1101h] Celkový as pot ebný pro komunikaci s hlavní pam tí { 45ns} { 45ns} { 45ns} { 45ns} { 45ns} -------{ 225ns} MOV ADD ADD ADD ADD AX, AX, AX, AX, AX, [1030h] [1101h] [1101h] [1101h] [1101h] { 45ns} { 45ns} { 10ns} { 10ns} { 10ns} -----{120ns} Se skrytou pam tí v tomto p ípad ušet íme 105ns V našem p íkladu je p ístupová doba do hlavní pam ti 45ns a p ístupová doba do skryté pam ti 10ns. Dále p edpokládáme, že skrytá pam je p ed provedením fragmentu programu prázdná. Architektury po íta III, Miroslav Skrbek 71 Instrukce ovliv ující skrytou pam Protože se skrytá pam se chová transparentn , není d vod zavád t speciální instrukce pro práci s ní. Existují následující výjimky: PREFETCH adr - nahraje obsah hlavní pam ti z adresy adr do skryté pam ti CLFLUSH adr - zneplatní data z adresy adr ve skryté pam ti (následuje-li tení z adr, pak se vždy data na tou z hlavní pam ti) INVD - zneplatni celý obsah skryté pam ti WBINVD - zapiš obsah skryté pam ti do hlavní pam ti a zneplatni celý obsah skryté pam ti PREFETCH a CLFLUSH se používají p i zpracování v tších objem dat. Dává se jimi pam ovému systému p edem na v domí, že ur itá data budou brzy pot eba a naopak (tj. nebudou již pot eba). Architektury po íta III, Miroslav Skrbek 72 Adresní prostor 2n-1 Souvislý rozsah adres generovaný procesorem pro p ístup k pam ti Velikost dána po tem adresních bit Velikost je vždy mocnina dvou Nejmenší adresovatelná datová jednotka v adresním prostoru m že být: 1 bit (ve speciálních p ípadech) 1 slabika (1 byte), nej ast jší (PC) 1 slovo 16-bit , 32-bit , 64-bit atp. Do fyzického adresního prostoru se mapuje fyzická pam (tj. pam v pam ových ipech) Adresní prostor nemusí být vždy celý vypln n fyzickou pam tí Pokud procesor podporuje více adresních prostor , neznamená to, že každý prostor bude mít svou vlastní adresovou sb rnici. Adresní prostory obvykle sdílí jednu adresovou sb rnici a jednotlivé adresní prostory jsou odlišeny odd lenými tecími a zápisovými signály Architektury po íta III, Miroslav Skrbek n je po et adresních vodi Adresní prostor 0 73 P íklady adresních prostor Adresní prostor programu Z tohoto adresního prostoru te procesor instrukce. asto je v povolena jen operace tení. Po et bit programu musí korespondovat s velikostí tohoto prostoru. íta e Adresní prostor dat Do toho prostoru se mapují pam ti RAM pro do asné ukládání dat. Vždy jsou povoleny ob operace, tj. tení i zápis. Maximum z po tu bit v registrech, které jsou ur eny nep ímou adresaci v tomto adresním prostoru a po tu bit p id leným p ímým adresám v instrukcích tení a zápisu dat, musí korespondovat s velikostí tohoto adresního prostoru. Vstupn /výstupní adresní prostor Do toho prostoru se mapují registry periferií. Tento prostor nebývá p íliš velký nap . 64K adres u procesor x86. Vždy jsou povoleny ob operace tení i zápis. V tomto prostoru asto neplatí základní podmínka pro pam tj. write(adr, v1), v2=read(adr); v1 == v2. Procesory, které nemají odd len vstupn /výstupní adresní prostor, mapují registry periferií do adresního prostoru dat. Fyzický adresní prostor Do tohoto adresního prostoru se p ímo mapují pam ové ipy. Velikost tohoto prostoru je ur ena ší kou adresové sb rnice procesoru (tj. po tem adresových vodi mezi procesorem a hlavní pam tí). U procesor , které nemají virtuální adresní prostory, jsou adresní prostory programu a dat sou asn fyzickými adresními prostory. V takovém p ípad mluvíme jen adresních prostorech programu a dat a jejich fyzi nost již nezd raz ujeme, protože se to automaticky p edpokládá. Virtuální adresní prostor Je to logický (opak fyzického) adresní prostor p i azený nap . jednomu procesu (programu). Do tohoto prostoru se pak p es soustavu tabulek mapuje fyzická pam z fyzického adresního prostoru. Sou et velikostí virtuálních adresních prostor všech sou asn b žících proces mnohonásobn p evyšuje velikost fyzického adresního prostoru a tudíž i instalované fyzické pam ti. Sou et fyzické pam ti namapované v daném okamžiku ve všech virtuálních adresních prostorech musí být menší nebo roven celkové velikosti instalované fyzické pam ti a velikosti odkládacího prostoru na disku (swap file nebo swap partition). Architektury po íta III, Miroslav Skrbek 74 Mapa adresního prostoru (mapa pam ti) Popisuje obsazení adresního prostoru fyzickou pam tí Mapa je asto nesouvislá (neobsazené oblasti mezi obsazenými) St ídají se pam ti r zných typ (nap . RAM, ROM) Mapa je jednou ze základních informací, kterou musí programátor v asembleru nastudovat, aby v d l, na které adresy umístit program, prom nné a zásobník. Znalost map adresních prostor je nezbytná pro programování na úrovni opera ního systému a driver O adresních prostorech se do teme v dokumentaci procesoru, ale mapu adresních prostor musíme hledat v dokumentaci po íta e, protože mapa adresního prostoru závisí na konkrétním zapojení pam ových ip v pam ovém subsystému. Architektury po íta III, Miroslav Skrbek 75 P íklady map adresních prostor Mapa adresního prostoru jednoduchého mikropo íta e Mapa fyzického adresního prostoru PC 4G 64K Nic VideoRAM Nic 32K Nic RAM 16KB (Data) 511MB RAM 1M Nic Flash (BIOS) Nic 0 ROM 8KB (Program) RESET (FFFF0h) VideoRAM RESET (0000h) 0 1 byte 640KB RAM 1 byte Architektury po íta III, Miroslav Skrbek 76 Virtuální adresní prostor stránkovaný Virtuální adresní prostor 4GB Fyzický adresní prostor Báze tabulky stránek Z tohoto adresního prostoru procesor te instrukce, te a zapisuje data 4GB Stránkovací tabulky Odkládací prostor na disku (swap file nebo swap partition) A B Stránka odložená na disku Fyzická pam Tabulky C B 0 A 0 Fyzická pam Stránka C je odložena na disku Virtuální adresní prostor je rozd len do stránek (blok pam ti o velikosti 4KB). Opera ní systém modifikuje záznamy v tabulkách a tím mapuje stránky z fyzické pam ti do stránek ve virtuálním adresovém prostoru. Každý proces má své vlastní tabulky stránek, které mapují jinou ást fyzické pam ti. Tím se zajistí, že jeden proces nem že p epsat data jinému procesu. Architektury po íta III, Miroslav Skrbek 77 Stránkování – p eklad adresy 32 11 0 Virtuální adresa Index do adresá e Index do tabulky Pozice ve stránce (offset) tabulek stránek stránek Báze adresá e tabulek stránek CR3 32 Adresá tabulek stránek 1. úrove Fyzická adresa Adresa stránky Tabulka stránek 2. úrove 11 0 Pozice ve stránce Pokud položka v tabulce stránek indikuje, že stránka je odložena na disku (tj. není v pam ti) je vygenerována výjimka a opera ní systém zpracuje tuto výjimku tak, že odloženou stránku na te z disku zp t do pam ti. Pokud není v hlavní pam ti místo, pak se nejprve odloží na disk stránka, která se dlouho nepoužívala a pak se na te stránka, která zp sobila výjimku. Architektury po íta III, Miroslav Skrbek 78 Virtuální adresní prostor segmentovaný Virtuální adresní prostor 4GB Procesor (x86) Registry segment CS Fyzický adresní prostor Segment Programu CS DS CS ES DS FS GS Segment Segment Dat Dat DS DS DS SS Tabulky SS Registry segment ur ují momentáln aktivní segmenty pro program, data a zásobník Segment Zásobníku SS Architektury po íta Fyzická pam 0GB III, Miroslav Skrbek Fyzická pam 79 Segmentace – p eklad adres Fyzický prostor je rozd len do segment (blok pam ti s r znou velikostí). Registr segmentu 32 Obsah íta e programu (IP), p ímá adresa v instrukci JMP, nep ímá adresa skoku, atp. Pozice v segmentu (offset) CS Báze tabulky deskriptor Tabulka deskriptor Po átek segmentu Index Deskriptor (popisova ) segmentu obsahuje po áte ní adresu segmentu ve fyzické pam ti a délku segmentu) 0 + 32 Fyzická adresa 0 Pozn.: toto schéma platí pro všechny segmentové registry a adresy, které se s nimi implicitn nebo explicitn párují. Uvedený CS registr považujte za p íklad. Architektury po íta III, Miroslav Skrbek 80 Význam virtuálních adresních prostor Zvyšuje stabilitu opera ního systému Adresové prostory jednotlivých proces jsou odd leny, proto chyba v programu nem že zp sobit, že jeden proces p epíše data jiného procesu. Podobn lze omezit p ístup zápisu nebo tení do n kterých ástí pam ti nastaveními v deskriptorech segment nebo v tabulkách stránek. Jakékoliv porušení t chto omezení je indikováno výjimkou. Odstra uje nutnost relokace programu Mají-li se zavést dva programy do fyzické pam ti, musí každý program za ínat na jiné adrese. Problém je, že tato adresa není p edem známa, ale p eklada tuto adresu nutn pot ebuje, aby mohl vypo ítat cílové adresy absolutních skok . Pokud se má již p eložený program p emístit na jinou adresu, musí se p epo ítat cílové adresy skok (relokovat program), p ípadn zm nit ukazatele na všechny statické datové struktury pokud poloha datové pam ti se také m ní. Naopak dva r zné programy zavedené do dvou r zných virtuálních prostor od stejné adresy mohou ležet na r zných adresách ve fyzické pam ti. Proto není relokace pot eba. Zavádí transparentní mechanismus pro mapování diskové pam ti do adresních prostor Mechanismy virtuální adresních prostor dovolují p istupovat k disku stejným zp sobem, jako když pracujeme s hlavní pam tí. B žn užívané sekven ní operace tení a zápisu do soubor jsou nahrazeny operacemi tení a zápisu do pam ti. Pam ovými operacemi m žeme zapisovat a íst z libovolného místa v souboru a v jakémkoliv po adí. Tento mechanismus se ozna uje jako pam ov mapované soubory. Architektury po íta III, Miroslav Skrbek 81 Konstrukce skryté pam ti (cache) Pln asociativní P ímo adresovaná (stupe asociativity =1) S omezenou asociativitou (stupe asociativity > 1) Architektury po íta III, Miroslav Skrbek 82 Asociativní pam - princip klí e Data in data 10 Klí 100 25 73 85 = Read ( ti) 23 65 42 33 99 ádek 0 ádek 2 ádek 5 Write (zapiš) tení (zadáme klí a pokyn pro tení a o ekáváme data na výstupu Data-out) Klí 25 85 Data out Data-out 42 99 Architektury po íta Zápis pokyn Klí 25 10 15 na 15 III, Miroslav Skrbek (zadáme klí , data-in a pro zápis) Data-in zm na_ ádku 120 2 (data na 120) 130 0 (data na 130) 11 5 (zm na klí e a dat na 11) 83 Ostra ování položek z asociativní pam ti (ze skryté pam ti) Náhodn Náhodn vybereme položku ( ádek), která bude odstran na (vymazána) a nahrazena novým obsahem (klí i data) LRU (Least Recently Used) Vy azuje se nejmén asto užívaná položka ( ádek) Realizováno íta em pro každou položku (p i každém p ístupu na danou položku se zvýší íta e všech ostatních položek o jedni ku) Architektury po íta III, Miroslav Skrbek 84 Pln asociativní pam Klí 0 (8-bit ) Data Data 0 (32-bit ) = 32 8 / Klí (tag) Klí 1 Data 1 = Architektury po íta III, Miroslav Skrbek 85 P ímo adresovaná skrytá pam (cache) Adresa Bit 31…16 tag bit 15…6 bit 5…2 index offset adr adr Pole klí 1024x16bit Data 1024x16x4byt Statická RAM = Data (32 bit ) Architektury po íta III, Miroslav Skrbek 86 Stupe asociativity 2 Adresová sb rnice (fyzická adresa) Adresa tag Adresa index offset Pole klí tag index offset Pole klí Data 0 = Data 1 = Datová sb rnice Data Data Krom stupn asociativity 2 se užívá stupe asociativity 4. Architektury po íta III, Miroslav Skrbek 87 Koherence pam ového podsystému v víceprocesorových po íta ích se sdílenou pam tí V systému je více procesor (jader) a každý z nich má skrytou pam (cache) Obsah na dané adrese (nap . 3F3Ah) m že být sou asn uložen v hlavní pam ti a jedné nebo více skrytých pam tech Pokud n který z procesor hodnotu na adrese 3F3Ah p epíše jinou hodnotou, pak je nutné aktualizovat hodnotu nejen v hlavní pam ti, ale i skrytých pam tech ostatních procesor K tomuto ú elu slouží pam ové koheren ní protokoly Architektury po íta III, Miroslav Skrbek 88 Koherence v pam ovém podsystému Procesor 2 Procesor 3 Cache 1 Cache 2 Cache 3 B5 B5 Procesor 1 Write (53h) 3F3A 3F3A data Zneplatn ní adresa Sb rnice (bus) Zápis hodnoty 53h Snooping Adresa pro hlavní pam Hlavní pam 3F3A Architektury po íta III, Miroslav Skrbek B5 89 Nej ast ji používané metody zajišt ní koherence Write-through + snooping P i zápisu do pam ti se aktualizuje skrytou pam a zárove prob hne zápisový cyklus do pam ti Ostatní skryté pam ti sledují adresovou a ídící sb rnici, rozpoznávají zápisové cykly do pam ti a adresa zápisu se shoduje s n kterou položkou ve skryté pam ti, tak položku zneplatní MESI protokol Dovoluje zpožd ný zápis dat ze skryté pam ti do hlavní pam ti, jen pokud t eba uvolnit n kterou položku ze skryté pam ti (write-back) Zvyšuje výkon systému (redukce zápisových cykl do pam ti) Složit jší na implementaci Architektury po íta III, Miroslav Skrbek 90 MESI protokol Každá položka ve skryté pam ti má p íznaky, které kódují ty i stavy. P echody mezi stavy jsou popsané následujícím kone ným automatem. cpu: read-hit bus: snoop-hit-read cpu: read-miss-shared [memory read] bus: snoop-hit-write I (invalid) bus: write-back cpu: write-miss s bu M (modified) : it-r h p oo sn d ea u cp hit e rit :w [ te da i l a inv S (shared) ] cpu: read-miss-exclusive [memory-read] bus: snoop-hit-read E (exclusive) cpu: read_hit cpu: write-hit cpu: write-hit cpu: read-hit bus: read-with-intent-to-modify Architektury po íta III, Miroslav Skrbek 91 MESI protokol - vysv tlivky cpu:read-hit Procesor te z pam ti, data jsou p ítomna ve skryté pam ti cpu:read-miss Procesor te z pam ti, data nejsou p ítomna ve skryté pam ti cpu:write-hit Procesor zapisuje do pam ti, data jsou p ítomna ve skryté pam ti cpu: write-miss Procesor zapisuje do pam ti, data nejsou p ítomna ve skryté pam ti bus:snoop-hit-read Na sb rnici probíhá tecí cyklus (jiného procesoru) a data odpovídající tecímu cyklu jsou p ítomna ve skryté pam ti bus:snoop-hit-write Na sb rnici probíhá zápisový cyklus (jiného procesoru) a data odpovídající zápisovému cyklu jsou p ítomna ve skryté pam ti bus: read-with-intent-to-modify Jiný procesor te data z pam ti za ú elem následné zm ny t chto dat (následného zápisu). Typicky na základ speciální prefetch instrukce bus: invalidate Jiný procesor zneplat uje danou položku ve skryté pam ti. Typicky na základ zápisu (zm ny položky existující položky) ve skryté pam ti. Architektury po íta III, Miroslav Skrbek 92 Architektura po íta ových systém UAI/606 P ednáška blok 4 Miroslav Skrbek [email protected] Ústav aplikované informatiky P írodov decká fakulta Jiho eské univerzity v eských Bud jovicích Platné pro šk.r. 2012/2013 Proudové zpracování instrukcí (pipeline) Máme 4 jednotky (IF, ID, EX, WB), které pracují paraleln a každá jednotka v daném taktu zpracovává sob odpovídající fázi instruk ního cyklu, ale jiné instrukce než ostatní jednotky. innost p ipomíná výrobní linku, kde každý pracovník provádí stále jednu operaci a p edává polotovar svému kolegovi. Na konci vypadne hotový výrobek. clk EX registr ID registr Tok instrukcí registr Pam IF WB Poznámka: pro zjednodušení používáme instruk ní cyklus se ty mi fázemi.P edpokládáme, že fáze ID sdružuje i fázi OF a fáze detekce p erušení je sdružena s fází WB... Architektura po íta ových systém , Miroslav Skrbek 2 Pr b h proudového zpracování instrukcí áste n zapln ná pipeline dokon ení as CLK 1. instrukce 1 IF 2. instrukce 3. instrukce 4. instrukce 5. instrukce Všechny jednotky jsou vytíženy a pracují paraleln 2 3 4 5 6 7 ID EX WB IF ID EX WB IF ID EX WB IF ID EX WB IF ID EX WB V každém taktu je zapsán výsledek jedné instrukce, výkon procesoru dosahuje špi kové hodnoty 1/fclk [MIPS]. V každém taktu získáme jeden výsledek. Architektura po íta ových systém , Miroslav Skrbek 3 Hazardy Strukturní Dané omezeními ve struktu e procesoru Omezeními vnit ního propojení P ístupem ke zdroj m (nap . dv instrukce cht jí naráz výsledek zapsat do registrové banky a technicky lze zapsat pouze jeden výsledek) Datové Vyplývají z datových závislostí mezi instrukcemi Nap íklad: druhá instrukce vyžaduje zdrojový operand, který je výsledkem první instrukce. ídící Jsou zp sobeny zm nou instruk ního toku. Typicky skokovými instrukcemi, ale i p erušením nebo výjimkami. Architektura po íta ových systém , Miroslav Skrbek 4 Datové hazardy RAW (read after write) Druhá instrukce se snaží íst data d íve, než je první instrukce zapíše do registrové banky WAW (write after write) Druhá instrukce se snaží zapsat (do téhož registru nebo téhož pam ového místa) než to u iní první instrukce WAR (write after read) Druhá instrukce zapíše data d íve, než je první instrukce p e te. První instrukce p e te chybn novou hodnotu. Architektura po íta ových systém , Miroslav Skrbek 5 Problémy v pipelinu (hazardy) Špi kového výkonu je možno dosáhnout je p i napln né pipeline. V n kterých situacích je ale nutné pipeline vypláchnout (zrušením rozpracovaných instrukcí nebo po kat na dokon ení rozpracovaných instrukcí) nebo pozastavením n kterých instrukcí v pipeline vložením ekacích takt (stall) Vkládání ekacích takt v dob napl ování, dob hu nebo pozastavení pipeline snižuje výkon procesoru Situace, které si vynucují vkládání ekacích takt se nazývají hazardy Architektura po íta ových systém , Miroslav Skrbek 6 Datové hazardy - p íklady Hazard RAW – SUB p e te hodnotu r1 d íve, než ji ADD sta í zapsat do registru Datová závislost ADD r1, r3, r7 SUB r4, r1, r2 Hazard WAW – Sou et ísel floating point (FADD) má velkou latency (trvá více takt ), proto se m že stát, že nedojde-li ke skoku, pak nedojde k p ebsání obsahu r1 instrukcí ADD, ale program pokra uje s výsledkem instrukce FADD a to neodpovídá zápisu programu. FADD r1, r2, r3 JZ loop ADD r1, r4, r2 Hazard WAR – ADD zapíše hodnotu do r1 d íve, než ji sta í instrukce ST (store) na íst z registru pro následné uložení do pam ti. Na tení m že r1 m že být v pipeline odloženo do další fáze kv li preinkrementací, kdy je nutné nejprve zvýšit r3 o jedni ku, aby se získala adresa pro uložení r1. ST (+r3), r1 ADD r1, r3, r2 Poznámka: cílový registr je ozna en podtržením, závislé registry zvýrazn ny. Architektura po íta ových systém , Miroslav Skrbek 7 ešení RAW hazad Forwarding as CLK ADD r1, r2, r3 1 2 3 4 5 6 7 IF ID EX WB IF stall stall ID EX WB IF ID EX WB IF ID EX WB SUB r6, r1, r7 Forwarding ADD r1, r2, r3 SUB r6, r1, r7 Dodate né propojení výstupu ALU se vstupem ALU (samoz ejm p es pomocný registr), je možné p edat výsledek p edchozí instrukce p ed fází WB jako operand p ímo do fáze EX následující instrukce. Díky tomu není nutné ekat až se výsledek zapíše do registru r1 a pak jej v dalším taktu z registru r1 vyzvednout. Architektura po íta ových systém , Miroslav Skrbek 8 Superskalární architektury ILP (Instruction level paralelism) paralelismus na úrovni instrukcí CPI (clock per instruction) < 1 Vydání více než jedné instrukce v jednom taktu, typicky 2-8 Více funk ních pipeline, minimáln celo íselná a floating point, m že být i více celo íselných v kombinaci s floating point Program má podobu sekven ního programu, paralelizace se provádí automaticky v hardware Optimalizující p eklada e mohou ovlivnit výkon procesoru vhodnou zm nou po adí instrukcí Architektura po íta ových systém , Miroslav Skrbek 9 Superskalární architektura Nahrávání instrukcí z pam ti (Instruction Fetch unit) Fronta instrukcí Dekódovací (ID unit) a expedi ní jednotka (dispatch unint) Integer pipeline Integer pipeline FP pipeline Architektura po íta ových systém , Miroslav Skrbek 10 Jednoduchá superskalární architektura (statické plánování) 64bit Z pam ti na ítáme dv instrukce 32bitové instrukce naráz Instruction register (IR) Pozn.: pokud instrukce mají r znou délku, je možné na íst do IR registru více než dv instrukce (proto se p ed IR p ed azuje fronta instrukcí, ze které se pak vybírá po dvojicích) Prohození instrukce (swap) FP instrukce se m že objevit vlevo a naopak Integer pipeline (Integer unit) FP Pipeline (FP unit) Pokud se v programu po dvojicích prolínají celo íselné i FP operace, je možné dosáhnout vydání dvou instrukcí ke zpracování v jednom taktu. Toto je ideální stav, který narušují datové závislosti a nevyvážený pom r mezi po tem FP a celo íselných instrukcí v daném úseku programu. Architektura po íta ových systém , Miroslav Skrbek 11 CDC6600 Rok 1964 4 FP jednotky 5 adresa ních jednotek 7 celo íselných jednotek Dynamické plánování Zpracování instrukcí mimo po adí Používá scoreboarding pro vydávání instrukcí ke zpracování Architektura po íta ových systém , Miroslav Skrbek 12 Zpracování instrukcí mimo po adí Po dekódování se instrukce adí do fronty. Odkud jsou vydávány ke zpracování podle toho, zda mohou být zpracovány (bez hazardu), tj. v jiném po adí než byly zapsány do fronty. Instrukce m že být vydána pokud je volná jí odpovídající jednotka, jsou k dispozici všechny operandy, p ípadn není zpracovávána instrukce, jejíž cílový operand je shodný se zdrojovým operandem instrukce, která se má vydat ke zpracování. Po dokon ení instrukce je aktualizován stav procesoru tak, aby byly vylou eny hazardy typu WAW a WAR. N kolik instrukcí se vždy zpracovává ve funk ních jednotkách a n kolik je p ipraveno na zpracování. Tím je ve stádiu rozpracovanosti více instrukcí (v tší úsek programu) a instrukce mohou díky tomu p eskupit tak, aby se minimalizoval po et stall takt . Pro zjiš ování závislostí mezi instrukcemi se používá obdobných technik jako v dataflow architekturách Architektura po íta ových systém , Miroslav Skrbek 13 Vícevláknové procesory Pam Vlákno 1 Vlákno 2 PC Registry IF IF ID ID Výkonné jednotky (spole né) IU Hyperthreading (Intel) IU PC Registry FP Architektura po íta ových systém , Miroslav Skrbek 14 Vícejádrové procesory adi p erušení Local APIC Jedno nebo vícevláknové procesorové jádro Jedno nebo vícevláknové procesorové jádro L1 cache L1 cache adi p erušení Local APIC ICC (Interrupt Controller Communication) L2 cache Hlavní pam Architektura po íta ových systém , Miroslav Skrbek adi p erušení IO APIC 15 Architektury VLIW Více paraleln pracujících jednotek Explicitn vyjád ený paralelismus Široké instrukce rozd lené do n kolika sub-instrukcí Pouze jedna skoková sub-instrukce na instrukci Architektura po íta ových systém , Miroslav Skrbek 16 P íklad VLIW architektury Registry Funk ní Jednotka I Funk ní Jednotka II sub-instr 1 sub-instr 2 Funk ní Jednotka III Funk ní Jednotka IV sub-instr 3 sub-instr 4 Architektura po íta ových systém , Miroslav Skrbek 17 Problémy a jejich ešení Pot eba mnohabránové registrové banky ešení separace registrových bank funk ních jednotek a omezení vým ny dat mezi bankami Nap íklad celo íselná funk ní jednotka a jednotka FP mohou mít odd lené registry Subinstrukce v rámci jedné instrukce musí být nezávislé eší p eklada sledováním závislostí v generovaném kódu a zm nou po adí vkládání subinstrukcí do jednotlivých instrukcí Nesmí být více jak jedna skoková subinstrukce v instrukci Skokové subinstrukce mají vymezen jeden daný slot Pro dosažení maximální výkonnosti musí být všechny sloty pro subinstrukce vypl né eší p eklada , pokud to lze dosáhnout Architektura po íta ových systém , Miroslav Skrbek 18 Intel Itanium VLIW architektura Instrukce 128 bit 3 sub-instrukce (3 * 41 bit + 5 bit template) Podmín né instrukce 128 registr (celo íselné, 64-bit ) registrový zásobník, rotace registr 128 FP registr Predikátové registry Registry pro adresy skok Aplika ní registry a registry pro m ení výkonnosti Režimy IA-64 a IA-32 Architektura po íta ových systém , Miroslav Skrbek 19 Celo íselné (GP) registry r0 Globální r31 Tyto registry tvo í zásobník, který se posouvá p i skoku do podprogramu r32 Lokální R0 – vždy je nula R12 – typicky ukazatel zásobníku v pam ti R14-R31 – voln k použití r127 Architektura po íta ových systém , Miroslav Skrbek 20 Aritmetické instrukce r1 = r2 + r3 + 1 add r1 = r2, r3 add r1 = r2, r3, 1 add r1 = imm, r2 sub r1 = r2, r3 sub r1 = r2, r3, 1 sub r1 = imm, r2 r1 = (r2 << count) + r3 shladd r1 = r2, count, r3 Poznámka: chybí zde instrukce násobení celých ísel, která je realizována jako instrukce floating-point jednotky pracující s FP registry. Architektura po íta ových systém , Miroslav Skrbek 21 Logické instrukce, posuvy a p esuny Logické instrukce or r1 = r2, r3 or r1 = imm8, r2 Posuvy and r1 = r2, r3 and r1 = imm8, r2 shr shr.u shr shr.u r1 r1 r1 r1 = = = = r2, r2, r2, r2, r3 r3 count count andcm r1 = r2, r3 andcm r1 = imm8, r2 shl shl r1 = r2, r3 r1 = r2, count xor r1 = r2, r3 xor r1 = imm8, r2 P esuny mov r7 = r6 mov r34 = imm22 movl r32 = imm64 Architektura po íta ových systém , Miroslav Skrbek 22 Paralelní provád ní instrukcí 127 Slot 2 41 bit Slot 1 41 bit Slot 0 41 bit 0 5 bit Template • Každý slot pojme jednu instrukci • Skupina – jedna nebo více instrukcí provedených paraleln • V rámci skupiny musí být jedno v jakém po adí se instrukce dokon í • V rámci skupiny jsou zakázány datové závislosti typu WAW, a RAW Architektura po íta ových systém , Miroslav Skrbek 23 Vytvá ení skupin add r1 = r2, r3; sub r6 = r7, r8 ; add r5 = r4, r10;; add r1 = r1, r6; sub r5 = r5, r11; nop ;; Skupiny jsou odd leny dv ma st edníky add r5 = r4, r10 sub r6 = r7, r8 add r1 = r2, r3 MII Konec skupiny add r1 = r2, r3; sub r6 = r7, r8 ;; add r5 = r4, r10; … add r5 = r4, r10 sub r6 =r7, r8 add r1 =r2, r3 MII Konec skupiny Architektura po íta ových systém , Miroslav Skrbek 24 Registrový zásobník r32 Vstupní registry Lokální registry Výstupní registry Skok do podprogramu r32 Vstupní registry Lokální registry Výstupní registry Architektura po íta ových systém , Miroslav Skrbek 96 registr 25 Predikátové registry 64 jednobitových registr Ozna ené p0-p63 p0 je vždy 1 Nastavovány porovnávacími instrukcemi V tšinu instrukcí je možno podmínit t mito registry Architektura po íta ových systém , Miroslav Skrbek 26 Porovnávací instrukce Negace výsledku porovnání Výsledek porovnání cmp.eq p4,p6=r1,r6 eq, ne; lt, le, gt, ge; ltu, leu, gtu, geu Poznámka: u zna í operaci bez znaménka Architektura po íta ových systém , Miroslav Skrbek 27 Porovnávací instrukce Nelze provést paraleln - datová závislost typu WAW cmp.eq p4,p6=r1,r6; cmp.eq p4, p6=r3, r8 cmp.eq.and p4, p6=r1, r6; cmp.eq.and p4, p6=r3, r8 ;; 1 1 p4 p6 r1 == r6 & p4 & p4 & p6 & p6 r3 == r8 Paraleln realizuje podmínku: if (r1==r6 && r3 == r8) … Architektura po íta ových systém , Miroslav Skrbek 28 Podmín né instrukce if (r7==r8) r3=r4 + r5; else r8 = r2 + r6; cmp.eq p3, p4 = r7, r8;; (p3) add r3 = r4, r5; (p4) add r8 = r2, r6;; Pokud není registr p3 nebo p4 nastaven na jedni ku odpovídající instrukce se nahradí instrukcí NOP Samotné porovnání lze také podmínit (p5) cmp.eq p3, p4 = r7, r8;; Architektura po íta ových systém , Miroslav Skrbek 29 ídící spekulace ld.s r14 = [r15] ld.s r17 = [r16] .s zna í že instrukce nevyvolá výjimku, ale nastaví NAT bit recovery1: … cmp.eq p6, p7=r16, r18 (p6) chk.s r14, recovery1 (p7) chk.s r17, recovery2 … continue: … br.ret.sptk.many b0 … Recovery code se vyvolá v p ípad , že je nastaven NAT bit u testovaného registru br.sptk.many continue recovery2: Pokud je podmínka spln na tak se dále použije se r14 jinak se použije r17 … br.sptk.many continue Poznámka: ídící spekulace nám dovoluje p ed adit instrukce load z obou v tví podmín ného p íkazu p ed vlastní vyhodnocení podmínky, aniž by výjimka ve v tvi, která se nakonec nepoužije, narušila b h programu ve v tvi, která naopak použita bude. Architektura po íta ových systém , Miroslav Skrbek 30 NaT (Not a Thing) Indikují výjimku Je to bu 65. bit gr registru nebo hodnota NaTVal uložená v FP registru Instrukce jako add, sub apod. propagují NaT hodnotu NaT bitu do cílového registru Instrukce jako fadd, fsub apod. propagují hodnotu NaTVal do cílového registru Instrukce chk (check) kontroluje NaT bit a pokud je nastaven provede skok na recovery code. Architektura po íta ových systém , Miroslav Skrbek 31 Datová spekulace .a zna í spekulativní nahrání dat (advanced load) Adresa a cílový registr se uloží jako další záznam do ALAT ld8.a r14 = [r15] … st8 [r16] = r17 chk.a r14, recovery Pokud adresa v r15 je totožná s adresou v r16, položka v ALAT odpovídající adrese je vymazána (zneplatn na) add r16=r14, r15 Recovery code se vyvolá v p ípad , že nebyla nalezena položka v ALAT odpovídající cílovému registru r14 Poznámka: místo chk.a m žeme použít ld8.c r14=[r15], která v p ípad neexistence položky v ALAT, nahraje znovu data do registru. V registru r15 musí být stejná adresa jako u ld8.a. Architektura po íta ových systém , Miroslav ALAT = Advanced Load Address Table Skrbek 32 Podpora cykl I Po et cykl - 1 mov ar.lc = 5 L1: … t lo cyklu … br.cloop L1;; Ode te jedni ku od LC, odrotuje registrovou banku, a sko í pokud lc != 0 Architektura po íta ových systém , Miroslav Skrbek 33 Podpora cykl II S rotujícími registry mov mov mov Po et cykl - 1 ar.lc = 5 Délka epilogu + 1 ar.ec = 4 pr.rot = 1<<16;; Inicializace predikátových registr p16, p17, p18, p19 L1: (p16)ld4 r32 = [r5], 4 (p18)add r35 = r34, r9 (p19)st4 [r6] = r36, 4 Pipe-line sekce 3 br.ctop L1;; Pipe-line sekce 4 Pipe-line sekce 1 Ode te jedni ku od LC (v epilogu od EC), odrotuje registrové banky, a sko í pokud EC != 0 Architektura po íta ových systém , Miroslav Skrbek 34 Podpora cykl III Cyklus 0 Prolog 1 2 3 Kernel 4 5 6 Epilog 7 8 9 M ld4 ld4 ld4 ld4 ld4 ld4 nop nop nop I nop nop add add add add add add nop M nop nop nop st4 st4 st4 st4 st4 st4 B br br br br br br br br br p16 1 1 1 1 1 1 0 0 0 0 p17 0 1 1 1 1 1 1 0 0 0 p18 0 0 1 1 1 1 1 1 0 0 Architektura po íta ových systém , Miroslav Skrbek p19 LC EC 0 5 4 0 4 4 0 3 4 1 2 4 1 1 4 1 0 4 1 0 3 1 0 2 1 0 1 0 0 0 35 SIMD architektury v procesorech Architektura po íta ových systém , Miroslav Skrbek 36 Technologie SSE, SSE2, SSE3 Streaming SIMD Extensions Vyvinuta firmou Intel Poprvé implementováno v procesorech Pentium III Ur eno pro podporu 2D a 3D grafiky Architektura po íta ových systém , Miroslav Skrbek 37 SSE registry 128 0 XMM0 XMM1 XMM2 XMM3 Sada XMM registr je odd lenou sadou registr , která se nesdílí s žádnými jinými registry. Proto je nap íklad možno bez problém míchat SSE a FP instrukce. XMM4 XMM5 XMM6 XMM7 Architektura po íta ových systém , Miroslav Skrbek 38 Datové typy I SSE 127 96 95 64 63 32 31 0 SSE2 SSE3 • IEEE 32-bitový formát ísla v plovoucí ádové árce, single-precision floating point (SP FP) • Odpovídající datový typ v jazyce C je typ float 127 96 95 64 63 32 31 0 SSE2 SSE3 • IEEE 64-bitový formát ísla v plovoucí ádové árce, double-precision floating point • Odpovídající datový typ v jazyce C je typ double Architektura po íta ových systém , Miroslav Skrbek 39 Datové typy II (jen SSE2 a SSE3) 127 1 BYTE 0 127 1 WORD 0 Packed BYTE Packed WORD 127 1 DWORD 0 Packed DWORD 127 1 QWORD 0 Packed QWORD Architektura po íta ových systém , Miroslav Skrbek 40 SIMD a skalární FP operace SSE zavádí krom SIMD také skalární FP operace nad XMM registry Skalární FP operace se vykoná pouze nad jedním FP íslem, které leží na nejnižších 32(64) bitech registru. D vodem pro zavedení t chto operací je zachování stejného registrového modelu pro SIMD a skalární operace. Bez skalárních instrukcí je programátor nucen p ejít na standardní 64-bitové FP instrukce, kde se ale používá zásobníkový model. Architektura po íta ových systém , Miroslav Skrbek 41 Aritmetické Instrukce SSE, SSE2, SSE3 SSE2, SSE3 ADDPS, ADDSS; ADDPD, ADDSD SUBPS, SUBSS; SUBPD, SUBSD MULPS, MULSS; MULPD, MULSD DIVPS, DIVSS; DIVPD, DIVSD RCPPS, RCPSS; RCPPD, RCPSD SQRTPS, SQRTSS; SQRTPD, SQRTSD MAXPS, MAXSS; MAXPD, MAXSD MINPS, MINSS; MINPD, MINSD [ADD|MUL|…][P|S][S|D] S – single, D – double P – packed, S – scalar operace ADDPS ADDPS xmmreg1, xmmreg2/mem128 xmm0, xmm1 Architektura po íta ových systém , Miroslav Skrbek 42 Logické instrukce ANDPS; ANDPD ANDNPS; ANDNPD ORPS; ORPD XORPS; XORPD Architektura po íta ových systém , Miroslav Skrbek 43 Instrukce porovnání CMPPS,CMPSS; CMPPD,CMPSD COMISS ; COMISD UCOMISS ; UCOMISD CMP[P|S][S|D] S – single, D – double P – packed, S – scalar operace porovnání pro FP CMPPS xmmreg1, xmmreg2/mem128 {U}COMIS[S|D] CMPPS ísla S – single, D – double skalární operace porovnání pro FP s výsledkem uloženým do EFLAGS U – tolerantn jší p i generování výjimek pro ísla typu NaN) Architektura po íta ových systém , Miroslav xmmreg1, xmmreg2/mem128 Skrbek ísla 44 Konverze I SHUFPS ; SHUFPD SHUFP[S|D] S – single, D – double SHUFPS xmmreg1, xmmreg2/mem128, imm8 Ší ka 2 bity imm8 XMM1 0 0 0 0 XMM0 XMM0 shufps xmm0, xmm1, 0x00 Architektura po íta ových systém , Miroslav Skrbek 45 Konverze II PUNPCKHPS, PUNPCKLPS; PUNPCKHPD, PUNPCKLPD PUNPCKLPS xmm0, xmm1 xmm0 xmm1 xmm0 Poznámka: konverze s H pracují s horní polovinou zdrojových operand . po hodnotami. íta ových systém , Miroslav Konverze s D pracují s 64Architektura bitovými Skrbek 46 Konverze III CVTPI2PS, CVTPS2PI; CVTPI2PD, CVTPD2PI CVTSI2SS, CVTSS2SI; CVTSI2SD, CVTSD2SI CVT[P|S]I2[P|S][S|D] S – single, D – double P – packed, S – scalar konverze celých ísel v mmx registru na FP ísla do xmm registru CVTPI2PS xmmreg1, mmreg2/mem64 CVT[P|S][S|D]2[P|S]I P – packed, S – scalar S – single, D – double opa ná konverze FP -> integer CVTPS2PI xmmreg1, mmreg2/mem64 Poznámka: existují instrukce CVTT…, které nahrazují zaokrouhlení useknutím (truncation) Architektura po íta ových systém , Miroslav Skrbek 47 Konverze IV ; CVTPS2PD, CVTPD2PS ; CVTDQ2PD, CVTPD2DQ CVTP[S|D]2P[S|D] CVTPS2PD S – single, D – double konverze packed double na packed single a zp t xmmreg1, mmreg2/mem128 CVTDQ2PD – konverze packed dword na packed double CVTPD2DQ – konverze packed dword na packed double CVTPDDQ xmm0, xmm1 Architektura po íta ových systém , Miroslav Skrbek 48 Jiné SIMD implementace AltiVec PowerPC, Motorola SunVis Sparc, SUN PA-RISC Multimedia Instructions Architektura po íta ových systém , Miroslav Skrbek 49 Cell Broadband Engine History 2000 IBM, SCEI/Sony Toshiba Alliance 2001 Design Center 2005 Disclosure of Technical Documentation Highlights Supercomputer on a chip Multi-core processor (9 cores) 3.2 GHz clock frequency Architektura po íta ových systém , Miroslav Skrbek 50 Cell Broadband Engine SPE SPE SPE SPE DRAM and IO interface EIB PPE SPE SPE SPE SPE EIB (Element Interconnect Bus) Architektura po íta ových systém , Miroslav Skrbek 51 PowerPC Processor Element (PPE) General purpose processor 64-bit RISC, dual-thread Conforms to the PowerPC architecture version 2.02 Alitvec (Vector/SIMD Multimedia Extensions) 32 integer GPR (64-bit registers), 32 floating point registers (64-bit registers) 32 vector registers (128-bit registers) Architektura po íta ových systém , Miroslav Skrbek 52 Synergic Processor Element (SPE) SPE GPR Execution Units MMIO Registers Local Storage 256KB DMA MFC (Memory Flow Controller) EIB (Element Interconnect Bus) Architektura po íta ových systém , Miroslav Skrbek 53 SPE Registers GPR 127 GPR are 128-bit registers They are used for both integer and floating point operations FP status register 0 FPSCR Architektura po íta ových systém , Miroslav Skrbek 54 Instruction Format Three-operand arithmetic instructions Instruction code rb ra rt 11 bits 7 bits 7 bits 7 bits 32 bits Example: a $1,$2,$3 ; $1 $2 + $3 |00011000000|0000011|0000010|0000001| Architektura po íta ových systém , Miroslav Skrbek 55 Integer Addition ah rt,ra,rb ahi rt,ra,value ; rt ; rt ra + rb (8 x halfword) ra + value (8 x halfword) a rt,ra,rb ai rt,ra, value ; rt ; rt ra + rb (4 x word) ra + value (4 x word) addx rt ; rt ra + rb + rtlsb cg rt,ra,rb cg rt,ra,rb ; rt ; rt carry_out(ra + rb) (carry is lsb) carry_out(ra + rb + rtlsb) 64-bit addition a $31,$21,$23 cg $30,$21,$23 addx $30,$20,$22 r20 r22 r30 + = r21 r23 r31 Architektura po íta ových systém , Miroslav Skrbek 56 Integer Subtaction sfh rt,ra,rb sfhi rt,ra,value ; rt ; rt rb - ra (8 x halfword) value - ra (8 x halfword) sf rt,ra,rb sfi rt,ra, value ; rt ; rt rb - ra (4 x word) value - ra (4 x word) sfx rt,ra,rb ; rt rb - ra – rtlsb bg rt,ra,rb bgx rt,ra,rb ; rt ; rt borrow_of(rb - ra) borrow_of(rb - ra - rtlsb) Task: explain usage of the bgx instruction. Architektura po íta ových systém , Miroslav Skrbek 57 Integer Multiplication mpy rt,ra,rb ; rt mpyu rt,ra,rb ; rt ra * rb (word halfword * halfword) ra * rb (unsigned) mpyi rt,ra,value ; rt mpyiu rt,ra,value ; rt ra * value ra * value (unsigned) mpya rt,ra,rb,rc ; rt ; word mpyh rt,ra,rb ; rt mpys rt,ra,rb ; rt mpyhh rt,ra,rb ; rt mpyhhu rt,ra,rb ; rt mpyhha rt,ra,rb ; rt mpyhhau rt,ra,rb ; rt ra * rb + rc halfword * halfword + word (ra >> 16) * rb (for 32-bit mpy) (ra * rb) >> 16 (ra >> 16)*(rb >> 16) (ra >> 16)*(rb >> 16) (unsigned) (ra >> 16)*(rb >> 16) + rt; (ra >> 16)*(rb >> 16) + rt; (unsigned) Architektura po íta ových systém , Miroslav Skrbek 58 Logical Instructions AND AND with immediate AND with complement OR OR with immediate OR with complement OR cross (or for all word in a qword) XOR XOR with immediate NAND NOR Equivalent (XOR NOT) Architektura po íta ových systém , Miroslav Skrbek 59 Special Logical Operations I selb rt,ra,rb,rc ; bit selection rax rbx 0 1 The x index denotes the bit, on which the operation is applied rcx rtx The celb instruction can be used for if-then-else or ?: operator implementation Architektura po íta ových systém , Miroslav Skrbek 60 Special Logical Operations II shufb rt,ra,rb,rc Each byte of the rc register selects one byte from the concatation of the ra and rb registers. The result is stored into a byte in the rt register. The resulting byte location corresponds to its selector in the rc register. Three special values of the selector byte store one of the 00h, ffh, 80h values into the resulting byte. Architektura po íta ových systém , Miroslav Skrbek 61 Shift and Rotate Instructions Shift left (halfword, word, quadword) Rotate left/right Rotate (arithmetic) left/right Architektura po íta ových systém , Miroslav Skrbek 62 Floating Point Operations ADD, SUB, MUL (Single, Double) Multiply and add (Single, Double) Multiply and subtract (Single, Double) Division implemented by the reciprocal function (steps: estimate, interpolate, Newton-Raphson) Square root implemented by reciprocal square root (steps: estimate, interpolate, Newton-Raphson) Architektura po íta ových systém , Miroslav Skrbek 63 Communication (SPE PPE, SPE SPE) Mailboxes Signals Architektura po íta ových systém , Miroslav Skrbek 64 DMA transfers (SPE MEMORY, SPE SPE SPE PPE EA Efective address (EA) SMU MMU Real address SMU a MMU perform address translation (segmentation and paging) SPE) Real address Memory Architektura po íta ových systém , Miroslav Skrbek 65 Programming GCC based tools for PPE and SPE Software Development Kit Cell Broadband Engine Simulator Architektura po íta ových systém , Miroslav Skrbek 66 Application partitioning Parallel processing PPE Pipelining PPE SPE SPE SPE SPE SPE SPE Architektura po íta ových systém , Miroslav Skrbek 67 Implementace neuronových sítí Neuro ipy Architektura po íta ových systém , Miroslav Skrbek 68 Neuronové sít Neuron Vstupy x1 Výstup w1 y w2 x2 w3 x3 Váhy Nelineární výstupní funkce N Perceptron y = S( (Frank Rosenblatt, 50 léta 20. století) wi xi + Θ) i =1 Práh N RBF Neuron ( xi − wi ) 2 ) y = G( i =1 Architektura po íta ových systém , Miroslav Skrbek 69 Výstupní funkce neuronu Odezva neuronu se dv ma vstupy Výstupní funkce - Sigmoida y 1.0 0.8 0.6 Perceptrony 0.4 0.2 5 x2 5 y = S ( x) = 1 1 + e −γ . x x1 Výstupní funkce – Gaussova k ivka y 1.0 RBF neurony 0.8 0.6 0.4 0.2 3 2 1 1 2 y = G ( x) = e x2 3 x2 − 2 2σ Architektura po íta ových systém , Miroslav Skrbek x1 70 Neuro ipy Neuro ipy jsou integrované obvody pro implementaci neuronových sítí. Integrují n kolik jednotek, desítek maximáln stovek neuron . Implementují vztahy na p edchozích slidech. Podle typu implementace rozlišujeme • analogové - hodnoty jsou reprezentovány spojitou veli inou – nap tí nebo proud) • íslicové – hodnoty binárn kódované jako v po íta ích • hybridní – výpo et probíhá analogov , uložení dat je íslicové • pulsní – hodnoty jsou kódovány do frekvence a asového posuvu impulz (blízké lidským neuron m) Architektura po íta ových systém , Miroslav Skrbek 71 Analogové neuro ipy x2 x2*w2 u Analogová ty kvadrantová násobi ka x1 Intel 80170NX ETANN i Výstupní funkce (S( )) x1*w1 u Programovací elektrody i w1 Nelineární funkce využívá nelinearit tranzistor Sou tový uzel y Neuron se u í tak, že se programovacími elektrodami p idává nebo odebírá náboj na ídící elektrod EEPROM tranzistor a tím se ovliv uje proud tekoucí tranzistory. Rozdíl proud kóduje hodnotu váhy. Dv EEPROM pam ové bu ky (jako ve FLASH pam ti) Architektura po íta ových systém , Miroslav pracující v analogovém režimu Skrbek 72 Hybridní neuro ip Analogová násobi ka Výstupní funkce (S( )) x*w x y Sou tový uzel Váha je uložena registru jako binární hodnota. Digitáln -analogovým (D/A) p evodníkem je p evedena na analogovou veli inu (nap tí nebo proud) a v analogové násobi ce vynásobena se vstupem. Ostatní ásti jsou stejné jako u analogového neuro ipu. D/A 8bit Registr váhy WR 8bit 8 bit Vnit ní datová sb rnice Architektura po íta ových systém , Miroslav Skrbek 73 íslicové neuro ipy s perceptrony N −1 íslicová násobi ka xi 8 bit wi xi xi*wi i =0 16 bit 8 bit registr 32 bit wi + 32 b 32b 32bit íta vstup (i) adresa Pam vah (statická RAM) Výstupní funkce 8 bit Výstupní funkce je realizována tabulkou nebo tabulkou v kombinaci s lineární aproximací 32b clk Architektura po íta ových systém , Miroslav Skrbek 74 ® ZISC 36 - neuro ip 36 neuron typu RBF v jednom ipu 64 vstup neomezen rozši itelné v po tu neuron vestav ný algoritmus u ení rychlé u ení i vybavování (~µs) produkt IBM (Francie) Architektura po íta ových systém , Miroslav Skrbek 75 Metriky neuron Neuron Actual Influence Field NAIF NAIF DIST DIST x2 x2 P2 P2 P1 x1 DIST Max xi pi P1 x1 DIST i xi pi i Architektura po íta ových systém , Miroslav Skrbek 76 Struktura neuronu NWR registr vah neuronu 64x8 bit NCR kontext neuronu ... GCR aktuální kontext = Data po složkách 64x8 bit VCR registr komponent vstupního vektoru výpo et povolen Výpo et vzdálenosti DIST CAT registr kategorie DIST < NAIF NAIF < Interní sb rnice Architektura po íta ových systém , Miroslav Skrbek 77 Klasifikace Zapsat 64 složek klasifikovaného vektoru Neurony s DIST < NAIF se stanou aktivní P e íst výsledek klasifikace Identifikován (identified) Neklasifikován (unclassified) Aktivní neurony pat í do stejné kategorie Aktivní neurony pat í do r zných kategorií Architektura po íta ových systém , Miroslav Skrbek Neklasifikován (no activity) Žádný z neuron není aktivní 78 P íklad klasifikace pro dva vstupy Kategorie 1 255 Kategorie 2 x2 1 Kategorie 3 Kategorie 4 4 6 2 3 Bod 1 2 3 4 5 6 5 0 0 x1 Architektura po íta ových systém , Miroslav Skrbek Kategorie(výsl.) 4 ?? kolize(1,4) ?? kolize(1,2) 2 2 3 255 79 U ení Zapsat 64 (nebo mén ) složek u eného vektoru Zapsat kategorii P íklad trénovací množiny pro dva vstupy x1 5 200 50 100 … x2 10 30 40 25 Složky kategorie 1 2 1 3 Kategorie Architektura po íta ových systém , Miroslav Skrbek 80 Princip u ení Kat. 1 Kat. 2 U ený vzor (viz. bod) polohou spadá do kategorie 2 a je to vzor kategorie 2, proto se nestane nic. Nov vytvo ená sféra vlivu Kat. 4 Kat. 1 U ený vzor (viz. bod) polohou spadá do kategorie 2 ale je to vzor kategorie 1. NAIF (sféra vlivu) neuronu kategorie 2 se zmenší a v u eném bod se vytvo í nový neuron se sférou vlivu omezenou na minimální vzdálenost od st ed všech ostatních neuron . U ený vzor (viz. bod) polohou nespadá do sféry vlivu žádného neuronu, proto se vytvo í nový neuron se st edem v u eném bod a se sférou vlivu omezenou na minimální vzdálenost od st ed všech ostatních neuron . Architektura po íta ových systém , Miroslav Skrbek 81 Implementa ní platformy neuronových sítí Neuro ipy (zákaznické integrované obvody) Signálové procesory (DSP) Obvody FPGA (Field-programmable Gate Array) Simulace neuronových sítí na po íta ích Architektura po íta ových systém , Miroslav Skrbek 82 Grafické procesory (GPU) Slouží pro akceleraci grafických výpo t Jsou integrovány p imo do grafických karet Využívají masivní paralelismus Po ty tranzistor šplhají ke 3 miliardám Poskytují programovatelné vertex shadery (manipulace s 3D modely) a pixel shadery (rasterizace) Programování p es OpenCL, CUDA, DirectX Používají se i pro negrafické výpo ty Architektura po íta ových systém , Miroslav Skrbek 83 NVIDIA Tesla 1.31 teraflops(double) 3.95 teraflops(float) (TESLA K20X) 2668 CUDA Cores 6GB Memory 250GB/s p enosová rychlost pro pam Architektura po íta ových systém , Miroslav Skrbek 84 Princip programování Pro skupinu vláken píšeme jeden program v jazyce C Program, který je spušt n v n kterém vlákn dostane identifikátor vlákna, podle kterého se p íkazy if ur í konkrétní innost programu v daném vlákn . Maximálního výkonu se obvykle dosahuje pokud všechna vlákna zpracovávají stejný kód (SIMD), nicmén se architektura jeví jako MIMD. Vyššího výkonu se dosahuje pro výpo ty v omezené p esnosti (SP, float, 32-bit ) než pro datový typ double (DP, double, 64-bit ) Architektura po íta ových systém , Miroslav Skrbek 85 P íklad programu kernel void sectiVektory(global const float* a, global const float* b, global float* c, int size) { int id = get_global_id(0); if (id >= size) { return; } // se ti vektory po složkách c[id] = a[id] + b[id]; } Architektura po íta ových systém , Miroslav Skrbek 86
Podobné dokumenty
Actavia: Implementace - Redakční systém Actavia
InDesign import je cesta, jakou přímo z InDesignu budete publikovat své
články v Actavii. InDesign je nesmírně rozsáhlý nástroj. Neděláme si iluze
o tom, že někdy budeme importovat články „na první...
šroubové kompresory Albert
přinášejí uživateli při obsluze či servisních pracích značný
komfort a zvyšují celkovou užitnou hodnotu kompresoru.
FNM 16. 9. 2011
Jako první soupeř mi byl přidělen R/U/G Birthing Pod se Splinters Twin kombem. Hod kostkou jsem
vyhrál já a s mým balíčkem by byl hřích nezačínat. Počáteční ruka vypadala slibně, 2×Inkmoth
Nexusy, ...
grafická karta - Základní Škola Nová Bystřice
využíváno pro tvorbu počítačových her, multimediálních aplikací i grafického uživatelského
prostředí (viz Windows Aero). Původně měla API samostatná jména (a dodnes mají)
například Direct3D, Direct...
nejen - Computer Media sro
První díl je zaměřen na stěžejní celky informatiky – na seznámení s počítačem, detailnější výklad hardwaru a základní kancelářské aplikace. Nechybí ani významná část věnovaná internetu a e-mailu.
•...
1/2 Dodatek ke smlouvě JDLink týkající se služby John Deere
device that has suitable Internet access (e.g. desktop, PC/tablet etc.). John Deere Remote Display Access uses a communication
modem/control unit (MTG), a cellular antenna and an inbuilt Ethernet c...