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 =
, 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