virtuální paměť ii + pipeline 1. duben 2019

Post on 30-Dec-2021

6 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

top related