Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
B35APO Architektura počítačů
České vysoké učení technické, Fakulta elektrotechnická
Architektury počítačů
Ver.3.00
Virtuální paměť II + Pipeline
1. duben 2019
1
K 13135, ČVUT FEL Praha
*
Technická knihovna v Dejvicích
- virtuální projekt
Technická knihovna v Dejvicích - realita
Virtuální paměť a soubory na disku…
B35APO Architektura počítačů 3
• Virtuální paměť rozšiřuje fyzickou paměť o prostor na disku tím, že
automaticky odkládá/načítá stránky na disk (swapování). Toho lze využít…
• Načtení programů a knihoven do paměti:
• Programy a knihovny jsou uloženy na disku jako binární soubory
obsahující instrukce a data
• Když chceme spustit nový program:
• Jádro OS alokuje souvislou množinu virtuálních stránek
(dostatečně velký prostor pro uchování vlastního programu a dat)
• Poté OS aktualizuje Page table procesu (Page tables pak odkazují
na soubory na disku)
• Položky Page table jsou označeny jako Valid=0 (na disku)
• Jakmile program běží, správa virtuální paměti načte program do paměti
automaticky…
• Viz mmap() – funkce alokuje virtuální stránky a nastaví položky Page
table tak, aby odkazovaly na soubor na disku
What Every Programmer Should Know About Memory
B35A
PO
Archi
tektu
4
Jak využít cache a virtuální paměť
http://www.akkadia.org/drepper/cpumemory.pdf
Poznámka
• Počáteční části popisují paměti i cache, a možno všem
doporučit.
• Programátorské příklady ale cílí na velmi pokročilé uživatele,
a začátečníky spíš zmatou.
Virtuální paměť - stránkování
• Každé virtuální stránce může odpovídat nejvýš jedna fyzická
stránka, obráceně to neplatí, takže:
• Na jednu konkrétní fyzickou stránku může být namapováno
několik virtuálních stránek. Co to přináší?
• Můžeme sdílet paměť napříč různými procesy nebo vlákny
(data nebo kód – OS načte sdílené knihovny jenom jednou),
můžeme poskytnout jiná oprávnění (přístupová práva).
• Pokud se program snaží přistoupit do stránky způsobem,
který neodpovídá jeho oprávněním, CPU generuje General
protection fault
• handler pro General protection fault – typická reakce je
ukončení procesu
B35APO Architektura počítačů 5
Reserving and Committing of Address Space
B35APO Architektura počítačů 6
Page Tables
Physical Memory
Invalid
Address space
of a process
Committed
Pages
Committed
Pages
R e s e r v e d
Invalid
Shared Memory
B35APO Architektura počítačů 7
K 13135, ČVUT FEL Praha 8
2 GB
User
process
space
2 GB
System
Space
32-bit x86 Address Space
3 GB
User
process
space
1 GB
System Space
Default Windows 3 GB Linux user space
or Extended Windows
• 32-bits = 4 GB
K 13135, ČVUT FEL Praha 9
Address Spaces
Shared
System
Space
user
process
spaces
K 13135, ČVUT FEL Praha 10
Address Spaces
Shared
System
Space
User
process
spaces
Shared
user's
libraries
Exe files and other read only files are only mapped into address spaces
Memory Mapped Files
B35APO Architektura počítačů 11
view1 0 GB
file
view2
Notes:
• Memory mapped files are approximately from 1.5 to 3 times slower than
file streams in case of fully sequential reads or writes because they
need the construction of page table entries.
• Memory mapped files are much faster than file streams only if we need
random access to file data. In such case, we can also gain benefits from
cache.
Memory Mapped File
B35APO Architektura počítačů 12
Mapping of Hardware in Linux
B35APO Architektura počítačů 13
int fd = open("/dev/mem", /* we ask for physical memory addresses */
O_RDWR /* with read and write access */
| O_SYNC /* and non-cached for /dev/mem */
);
unsigned char *mem = (unsigned char *) mmap(
NULL, /* kernel selects virtual address */
0x4000 /* our required size*/,
PROT_READ | PROT_WRITE, /* allow read and write*/
MAP_SHARED, /* visible to other processes*/
fd, /* handle of an already opened file */
0x43c40000 /* offset in file, here I/O physical base address*/
);
It is simplified part of the code that you use in your semester project
Note: For simplification, we have supposed that the size and offset are already align to page size.
*
B35APO Architektura počítačů 14
Některé problémy hierarchických pamětí?
• Koherence pamětí. Definice viz další slajd
• Jednoprocesorové (jednojádrové) stroje.
• Řeší D-bit a migrační strategie Write-back.
• Multiprocesory se společnou i sdílenou pamětí –
řešení je mnohem složitější. Používá se mj.
• Společná sběrnice: Snooping (s odposlechem,
slíděním), MESI protokol,
• Broadcast (s rozesíláním),
• Directories (adresáře).
• Je obsahem předmětu A4M36PAP.
B35APO Architektura počítačů 15
Definice koherence
• Řekneme že multiprocesorový paměťový systém je
koherentní, jestliže výsledek jakéhokoli provádění
programu je takový, že pro každé paměťové místo je
možné sestavit myšlené sériové pořadí čtení a zápisů
k tomuto paměťovému místu, a platí:
• 1. Paměťové operace k danému paměťovému místu pro
každý proces jsou provedeny v pořadí, ve kterém byly
spuštěny tímto procesem.
• 2. Hodnoty vracené každou operací čtení jsou hodnotami
naposledy provedené operace zápis do daného
paměťového místa vzhledem k sériovému pořadí. B35APO Architektura počítačů 16
Problém koherence
Vlákno 0:
…
x=1;
…
if(x==1)
B35APO Architektura počítačů 17
CPU 0 Cache
CPU 1 Cache
paměť zajištění
koherence
Vlákno 1:
…
x=3;
…
Vlákno 0:
…
y[1]=1;
…
y[3]=3;
…
y[5]=5;
Vlákno 1:
…
y[0]=0;
…
y[2]=2;
…
y[4]=4;
Příklad A: Příklad B:
Nechť x je sdílená proměnná, y sdílené pole.
x
y
Proto je důležité, aby byl
systém paměťově koherentní
– viz cache coherence
Nicméně i v paměťově
koherentním systému může
nevhodný programátorský
styl vést k značnému
zpomalení běhu programu…
Srovnání Virtual memory versus Cache
• Pozn.: TLB virtuální paměti může být plně asociativní, ale pro větší
TLB typicky bývá jen 4-cestná.
• Rozumíte pojmům?
• Co je oběť?
• Závěr: každé adjektivum vyjadřuje něco jiného…
B35APO Architektura počítačů 18
Virtuální paměť TLB Cache
Stránka Blok/řádek
Page Fault Read/Write Miss
Velikost stránky: 512 B – 8 KB (4kB ) Velikost bloku: 8 – 128 B (64B)
Plně asociativní, N-cestná (DM), N-cestná, plně asociativní
Výběr oběti: LRU LRU, ARC, CAR
Write Back Write Back
LRU - Last Recently Used
ARC - Adaptive Replacement Cache (LRU+LFU)
CAR - Clock (improvement of FIFO) with Adaptive Replacement
Single Core - Intel Pentium
B35APO Architektura počítačů 19
REG
Source: Intel MP Logic = Multiprocessing logic for bus arbitration and cache coherency
B35APO Architektura počítačů 20
*
Definice DCOT
DON'T CARE-OUTPUT TASKS
Definice DCOT
• celá úloha či její část, v níž se počítá něco, co
nikoho nezajímá, avšak nelze to nespočítat.
• Musí se tedy vykázat náročnost k dosažení
celkového zdárného vyřešení,
• ale nikdo si výsledek nikdy pořádně nepřečte.
• DCOT výpočty zatěžují životní prostředí zvýšenou
spotřebou energie, což vede k nárůstu globálního
oteplení,
• a tak potřebujeme způsob šetrnější k životnímu
prostředí.
B35APO Architektura počítačů 21
Uložení výsledků DCOT
• starší způsob WOM, Write-Only Memory, viz Signetics 25120 WOM
datasheet
B35APO Architektura počítačů 22
Nevýhody:
• potřeba střídavého
žhavícího napětí
VFF=~6.3 V
• nutnost i Drain
odvodu pro časté
"memory leaks"
Palindromická paměť pro DCOT
• další varianta je využití palindromů ke snížení paměti pro DCOT úlohy,
viz např. Kolář J.: Čísla palindromická z pohledu výpočetní techniky,
Palindromická konference 2002 PAKO OKAP 2002, ČVUT 2002
• Uložení palindromu potřebuje jen poloviční paměť, takže opakováním
palindromizace lze teoreticky dosáhnout i ekologického bezpaměťového
počítače. Zde bude však nutný ještě další výzkum.
B35APO Architektura počítačů 23
Procesory Aprilum-Cat® se SISC jádrem
Praktičtější způsob se opírá o neuronové překladače, které v úlohách
DCOT části, ty pošlou je do SISC jádra (Single Instruction Set Core) a poté
jen vygenerují výsledky. V SISC jádru:
• úplně odpadá instrukční cache a lze vynechat i datovou a stránkování,
• čímž se dosáhne extrémně vysokého zrychlení výpočtu,
které se leckde blížící až Exa-NIPS [Nop-Instructions Per Second]
SISC jádro bude zahrnuto v procesorech řady Aprilum-Cat®
B35APO Architektura počítačů 24
Předběžné benchtesty úloh na prototypech Aprilum-Cat®
GigaNIPS
TeraNIPS
PetaNIPS
ExaNIPS
B35APO Architektura počítačů 25
*
Source: Chinesse Press Automation
Další část dnešní přednášky
• Modifikujeme jednocyklový procesor z 2. přednášky na
zřetězený procesor.
• Procesor bude podporovat instrukce: add, sub, and, or, slt, addi, lw, sw a beq
B35APO Architektura počítačů 26
Typ 31… 0
R opcode(6), 31:26 rs(5), 25:21 rt(5), 20:16 rd(5), 15:11 shamt(5) funct(6), 5:0
I opcode(6), 31:26 rs(5), 25:21 rt(5), 20:16 immediate (16), 15:0
J opcode(6), 31:26 address(26), 25:0
Nezřetězené vykonávaní instrukcí
I nezřetězený MIPS procesor má dva cykly:
1. Instruction Fetch – poslání PC do paměti a vybrání aktuální instrukce.
Aktualizace PC = PC+4
2. Vlastní provedení instrukce
B35APO Architektura počítačů 27
Instruction Fetch Vykonání instrukce
Nezřetězené vykonávání
B35APO Architektura počítačů 28
4
PC’ PC Instr 25:21
20:16
20:16
15:11
15:0
SrcA
SrcB
Zero
AluOut
WriteData WriteReg
SignImm PCBranch
ReadData
Result
PCPlus4
Rt
Rd
Instr.
Memory
A RD
Data
Memory
A RD
WD
WE
Reg.
File
A1 RD1
A2 RD2
A3
WD3
WE3
+
+
0 1
0 1
0 1
0 1
Sign Ext <<2
ALU
Z přednášky č.2
v obrázku označuje hodinový vstup reagující na náběžnou hranu
Delay Slot
B35APO Architektura počítačů 29
o Define branch to take place after the next instruction
o MIPS defines one delay slot
o Compiler fills the branch delay slot
o By selecting an independent instruction
from before the branch
o Must be okay to execute instruction in the
delay slot whether branch is taken or not
o If no suitable instruction is found
o then the compiler fills delay slot with a NOP
label:
. . .
add $2,$3,$4
beq $1,$0,label
Delay Slot
label:
. . .
beq $1,$0,label
add $2,$3,$4
Delay slot…
• Úkolem kompilátoru je tedy zabezpečit, že následující instrukce nacházející
se v branch delay slotu budou platné a užitečné. Na níže uvedených
obrázcích jsou ilustrovány tři alternativy jak je možné plnit delay slot.
B35APO Architektura počítačů 30
Nejsnadnější způsob (zároveň nejméně efektivní) spočívá ve vyplnění delay slot
prázdnou instrukci – nop.
• Jaká může být maximální frekvence procesoru?
• Zpoždění na kritické cestě – instrukce lw:
Tc = tRFread + tALU + tMem + tMux + tRFsetup
Jedno-cyklový procesor – výkon: IPS = IC / T = IPCstr.fCLK
B35APO Architektura počítačů 31
PC’ Result
SrcB
15:0
25:21 PC
4
Instr
20:16
20:16
15:11
SrcA Zero
AluOut
WriteData WriteReg
SignImm PCBranch
ReadData
PCPlus4
Rt
Rd
Instr.
Memory
A RD
Data
Memory
A RD
WD
WE
Reg.
File
A1 RD1
A2 RD2
A3
WD3
WE3
+
+
0 1
0 1
0 1
0 1
Sign Ext <<2
ALU
Jedno-cyklový procesor – výkon: IPS = IC / T = IPCstr.fCLK
• Předpokládejme:
tPC = 30 ns tMem = 300 ns
tRFread = 50 ns tALU = 200 ns
tMux = 20 ns tRFsetup = 20 ns
B35APO Architektura počítačů 32
Při Tfetch prováděném paralelně s Tprocessor,
jelikož je vždy 30+300=Tfetch < Tprocesso = 50+200+300+20+20
= 590 ns = 1.69 MHz -> IPS = 1 690 000
Zřetězené vykonávaní instrukcí
Předpokládejme, že i vykonání instrukce můžeme rozdělit do dalších stupňů:
IF – Instruction Fetch, ID – Instruction decode (and Operand Fetch),
EX – Execute, MEM – Memory Access, WB – Write Back
a dále = max { i }ki=1, kde i je čas šíření (propagation delay) v i-tém stupni.
IF – poslání PC do paměti a vybrání aktuální instrukce. Aktualizace PC = PC+4
ID – dekódování instrukce a načtení registrů specifikovaných v instrukci, provedení
testu na rovnost registrů (kvůli možnému větvení), znaménkové rozšíření offsetu,
výpočet cílové adresy pro případ větvení (zn. rozš. offset + PC)
EX – operace ALU
MEM – v případě instrukce load /store – čtení/zápis do paměti
WB – v případě instrukcí typu register-register nebo instrukce load – zápis výsledku
do RF (výsledek může přicházet z ALU nebo paměti)
B35APO Architektura počítačů 33
IF ID EX MEM WB
Nezřetězené vykonávání
B35APO Architektura počítačů 34
4
PC’ PC Instr 25:21
20:16
20:16
15:11
15:0
SrcA
SrcB
Zero
AluOutM
WriteDataE WriteRegE
SignImm
PCPlus4D
PCBranch
WriteDataM
PCPlus4E
WriteRegM WriteRegW
AluOutW
ReadData
Result
PCPlus4F
Rt
Rd
Instr.
Memory
A RD
Data
Memory
A RD
WD
WE
Reg.
File
A1 RD1
A2 RD2
A3
WD3
WE3
+
+
0 1
0 1
0 1
0 1
Sign Ext <<2
Fetch Decode Execute Memory WriteBack
ALU
Zřetězené vykonávání
B35APO Architektura počítačů 35
4
PC’ PC Instr 25:21
20:16
20:16
15:11
15:0
SrcA
SrcB
Zero
AluOutM
WriteDataE WriteRegE
SignImm
PCPlus4D
PCBranch
WriteDataM
PCPlus4E
WriteRegM WriteRegW
AluOutW
ReadData
Result
PCPlus4F
Rt
Rd
Instr.
Memory
A RD
Data
Memory
A RD
WD
WE
Reg.
File
A1 RD1
A2 RD2
A3
WD3
WE3
+
+
0 1
0 1
0 1
0 1
Sign Ext <<2
Fetch Decode Execute Memory WriteBack
ALU
MemWrite
MemToReg
Branch ALUControl 2:0
ALUScr
RegDest
RegWrite
31:26
5:0
Control
Unit
Opcode
Funct
Zřetězené vykonávání
B35APO Architektura počítačů 36
4
PC’ PC Instr 25:21
20:16
20:16
15:11
15:0
SrcA
SrcB
Zero
AluOutM
WriteDataE WriteRegE
SignImm
PCPlus4D
PCBranch
WriteDataM
PCPlus4E
WriteRegM WriteRegW
AluOutW
ReadData
Result
PCPlus4F
Rt
Rd
Instr.
Memory
A RD
Data
Memory
A RD
WD
WE
Reg.
File
A1 RD1
A2 RD2
A3
WD3
WE3
+
+
0 1
0 1
0 1
0 1
Sign Ext <<2
Fetch Decode Execute Memory WriteBack
ALU
Totéž, pouze zmenšeno a překresleno…
B35APO Architektura počítačů 37
0 1
Instruction
Memory
A RD
0 1
1 0
Data
Memory
A RD
WD
WE
<<2
Sign Ext
+
0 1
Control
unit
RegWriteD
MemToRegD MemWriteD ALUControlD ALUSrcD RegDstD BranchD
RegWriteE
MemToRegE MemWriteE ALUControlE ALUSrcE RegDstE
RegWriteM
MemToRegM MemWriteM
RegWriteW
MemTo
RegW
PCSrcM
31:26
5:0
25:21
20:16
20:16 15:11
15:0 SignImmD SignImmE
RtD RdD
RtE RdE
SrcAE
SrcBE
WriteDataE
WriteRegE 4:0
WriteDataM
ALUOutM
WriteRegM 4:0 WriteRegW 4:0
ALUOutW
ReadDataW
ResultW
PCPlus4D
PCBranchD
PCPlus4F
4
InstrD PC´ PC
Op
Funct
Reg.
File
A1 RD1
A2 RD2
A3
WD3
WE3
+
Zero
BranchE BranchD
ALU
• Pracovní registry (Register File) – přístup v dvou fázích (Decode,
WriteBack) – zápis v první polovině cyklu, čtení ve druhé..
• RAW hazard…
• Jak je možné řešit tento hazard a nedegradovat výkon pipeline?
B35APO Architektura počítačů 38
Vznik datových hazardů
Řešení datových hazardů přeposíláním (forwarding)
B35APO Architektura počítačů 39
• Pokud výsledek vzniká dřív, než jej následující instrukce skutečně potřebují, pak lze
tento hazard vyřešit přeposíláním (forwarding)
• Dochází k němu, když se použité zdrojové registry instrukce ve stupni E shodují s
cílovým registrem ve stupni M nebo WB,
• přičemž se vyhodnotí, zda se skutečně jedná o cílový registr – viz instr. lw vs. sw
• Obsah registrů se z uvedených stupňů posílá do Hazard Unit,
Stávající procesor
B35APO Architektura počítačů 40
0 1
Instruction
Memory
A RD
0 1
1 0
Data
Memory
A RD
WD
WE
<<2
Sign Ext
+
0 1
Control
unit
RegWriteD
MemToRegD MemWriteD ALUControlD ALUSrcD RegDstD BranchD
RegWriteE
MemToRegE MemWriteE ALUControlE ALUSrcE RegDstE
RegWriteM
MemToRegM MemWriteM
RegWriteW
MemTo
RegW
PCSrcM
31:26
5:0
25:21
20:16
20:16 15:11
15:0 SignImmD SignImmE
RtD RdD
RtE RdE
SrcAE
SrcBE
WriteDataE
WriteRegE 4:0
WriteDataM
ALUOutM
WriteRegM 4:0 WriteRegW 4:0
ALUOutW
ReadDataW
ResultW
PCPlus4D
PCBranchD
PCPlus4F
4
InstrD PC´ PC
Op
Funct
Reg.
File
A1 RD1
A2 RD2
A3
WD3
WE3
+
Zero
BranchE BranchD
ALU
Řešení datových hazardů přeposíláním (forwarding)
B35APO Architektura počítačů 41
0 1
Instruction
Memory
A RD
0 1
1 0
Data
Memory
A RD
WD
WE
<<2
Sign Ext
+
0 1
Control
unit
Hazard unit
RegWriteD
MemToRegD MemWriteD ALUControlD ALUSrcD RegDstD BranchD
RegWriteE
MemToRegE MemWriteE ALUControlE ALUSrcE RegDstE
RegWriteM
MemToRegM MemWriteM
RegWriteW
MemTo
RegW
PCSrcM
31:26
5:0
25:21
20:16
25:21 20:16 15:11
15:0 SignImmD SignImmE
RsD RtD RdD
RsE RtE RdE
SrcAE
SrcBE
WriteDataE
WriteRegE 4:0
WriteDataM
ALUOutM
WriteRegM 4:0 WriteRegW 4:0
ALUOutW
ReadDataW
ResultW
PCPlus4D
PCBranchD
PCPlus4F
4
InstrD PC´ PC
Op
Funct
Forward AE
Forward BE RegWriteM
RegWrite
W
Reg.
File
A1 RD1
A2 RD2
A3
WD3
WE3 00
10 01
00 01 10
+
ALU
Zero
BranchE BranchD
• Pokud následující instrukce potřebují výsledek dřív, než skutečně vzniká, lze
hazard řešit také jinou metodou, a to pozastavením (stall)
• Pozastavení (stall) pipeline je prostředkem řešení hazardů; nezvyšuje však
propustnost systému
• Stupně pipeline předcházející stupni, kde hazard vzniká, jsou pozastaveny
do doby, než jsou k dispozici výsledky požadované následujícími instrukcemi
– ty jsou pak přeposílány (forwarding)
Řešení datových hazardů pozastavením (stall)
B35APO Architektura počítačů 42
Řešení datových hazardů pozastavením (stall)
B35APO Architektura počítačů 43
• pozastavení se dosáhne podržením hodnoty mezistupňových registrů
• výsledky z kolizního stupně se musejí „ztratit“ – řídicí signály umožňující
měnit stav (kontext) procesoru (zápis pracovních registrů nebo do paměti,
řízení povolení větvení) se nulují
• obojí se dosáhne přidáním řídicích vodičů k mezistupňovým registrům
umožňujících měnit/uchovat nebo nulovat jejich obsah
lw: typ I, rs – bázová adresa, imm – offset, rt – kde uložit
Stávající procesor
B35APO Architektura počítačů 44
0 1
Instruction
Memory
A RD
0 1
1 0
Data
Memory
A RD
WD
WE
<<2
Sign Ext
+
0 1
Control
unit
Hazard unit
RegWriteD
MemToRegD MemWriteD ALUControlD ALUSrcD RegDstD BranchD
RegWriteE
MemToRegE MemWriteE ALUControlE ALUSrcE RegDstE
RegWriteM
MemToRegM MemWriteM
RegWriteW
MemTo
RegW
PCSrcM
31:26
5:0
25:21
20:16
25:21 20:16 15:11
15:0 SignImmD SignImmE
RsD RtD RdD
RsE RtE RdE
SrcAE
SrcBE
WriteDataE
WriteRegE 4:0
WriteDataM
ALUOutM
WriteRegM 4:0 WriteRegW 4:0
ALUOutW
ReadDataW
ResultW
PCPlus4D
PCBranchD
PCPlus4F
4
InstrD PC´ PC
Op
Funct
Forward AE
Forward BE RegWriteM
RegWrite
W
Reg.
File
A1 RD1
A2 RD2
A3
WD3
WE3 00
10 01
00 01 10
+
ALU
Zero
BranchE BranchD
Řešení datových hazardů pozastavením (stall)
B35APO Architektura počítačů 45
0 1
Instruction
Memory
A RD
0 1
1 0
Data
Memory
A RD
WD
WE
<<2
Sign Ext
+
0 1
Control
unit
Hazard unit
RegWriteD
MemToRegD MemWriteD ALUControlD ALUSrcD RegDstD BranchD
RegWriteE
MemToRegE MemWriteE ALUControlE ALUSrcE RegDstE
RegWriteM
MemToRegM MemWriteM
RegWriteW
MemTo
RegW
PCSrcM
31:26
5:0
25:21
20:16
25:21 20:16 15:11
15:0 SignImmD SignImmE
RsD RtD RdD
RsE RtE RdE
SrcAE
SrcBE
WriteDataE
WriteRegE 4:0
WriteDataM
ALUOutM
WriteRegM 4:0 WriteRegW 4:0
ALUOutW
ReadDataW
ResultW
PCPlus4D
PCBranchD
PCPlus4F
4
InstrD PC´ PC
Op
Funct
Forward AE
Forward BE RegWriteM
RegWrite
W
Reg.
File
A1 RD1
A2 RD2
A3
WD3
WE3 00
10 01
00 01 10
+
ALU
Zero
BranchE BranchD
EN
Stall F
EN
Stall D
CLR F
lush
E
Mem
To
Reg
E