Architektura počítačových systémů

Transkript

Architektura počítačových systémů
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

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í...

Více

šroubové kompresory Albert

š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.

Více

FNM 16. 9. 2011

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

Více

grafická karta - Základní Škola Nová Bystřice

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...

Více

nejen - Computer Media sro

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. •...

Více

1/2 Dodatek ke smlouvě JDLink týkající se služby John Deere

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...

Více