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

45
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

Upload: others

Post on 30-Dec-2021

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Virtuální paměť II + Pipeline 1. duben 2019

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

Page 2: Virtuální paměť II + Pipeline 1. duben 2019

K 13135, ČVUT FEL Praha

*

Technická knihovna v Dejvicích

- virtuální projekt

Technická knihovna v Dejvicích - realita

Page 3: Virtuální paměť II + Pipeline 1. duben 2019

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

Page 4: Virtuální paměť II + Pipeline 1. duben 2019

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.

Page 5: Virtuální paměť II + Pipeline 1. duben 2019

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

Page 6: Virtuální paměť II + Pipeline 1. duben 2019

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

Page 7: Virtuální paměť II + Pipeline 1. duben 2019

Shared Memory

B35APO Architektura počítačů 7

Page 8: Virtuální paměť II + Pipeline 1. duben 2019

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

Page 9: Virtuální paměť II + Pipeline 1. duben 2019

K 13135, ČVUT FEL Praha 9

Address Spaces

Shared

System

Space

user

process

spaces

Page 10: Virtuální paměť II + Pipeline 1. duben 2019

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

Page 11: Virtuální paměť II + Pipeline 1. duben 2019

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.

Page 12: Virtuální paměť II + Pipeline 1. duben 2019

Memory Mapped File

B35APO Architektura počítačů 12

Page 13: Virtuální paměť II + Pipeline 1. duben 2019

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.

Page 14: Virtuální paměť II + Pipeline 1. duben 2019

*

B35APO Architektura počítačů 14

Page 15: Virtuální paměť II + Pipeline 1. duben 2019

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

Page 16: Virtuální paměť II + Pipeline 1. duben 2019

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

Page 17: Virtuální paměť II + Pipeline 1. duben 2019

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…

Page 18: Virtuální paměť II + Pipeline 1. duben 2019

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

Page 19: Virtuální paměť II + Pipeline 1. duben 2019

Single Core - Intel Pentium

B35APO Architektura počítačů 19

REG

Source: Intel MP Logic = Multiprocessing logic for bus arbitration and cache coherency

Page 20: Virtuální paměť II + Pipeline 1. duben 2019

B35APO Architektura počítačů 20

*

Page 21: Virtuální paměť II + Pipeline 1. duben 2019

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

Page 22: Virtuální paměť II + Pipeline 1. duben 2019

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"

Page 23: Virtuální paměť II + Pipeline 1. duben 2019

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

Page 24: Virtuální paměť II + Pipeline 1. duben 2019

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

Page 26: Virtuální paměť II + Pipeline 1. duben 2019

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

Page 27: Virtuální paměť II + Pipeline 1. duben 2019

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

Page 28: Virtuální paměť II + Pipeline 1. duben 2019

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

Page 29: Virtuální paměť II + Pipeline 1. duben 2019

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

Page 30: Virtuální paměť II + Pipeline 1. duben 2019

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.

Page 31: Virtuální paměť II + Pipeline 1. duben 2019

• 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

Page 32: Virtuální paměť II + Pipeline 1. duben 2019

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

Page 33: Virtuální paměť II + Pipeline 1. duben 2019

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

Page 34: Virtuální paměť II + Pipeline 1. duben 2019

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

Page 35: Virtuální paměť II + Pipeline 1. duben 2019

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

Page 36: Virtuální paměť II + Pipeline 1. duben 2019

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

Page 37: Virtuální paměť II + Pipeline 1. duben 2019

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

Page 38: Virtuální paměť II + Pipeline 1. duben 2019

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

Page 39: Virtuální paměť II + Pipeline 1. duben 2019

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

Page 40: Virtuální paměť II + Pipeline 1. duben 2019

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

Page 41: Virtuální paměť II + Pipeline 1. duben 2019

Ř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

Page 42: Virtuální paměť II + Pipeline 1. duben 2019

• 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

Page 43: Virtuální paměť II + Pipeline 1. duben 2019

Ř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

Page 44: Virtuální paměť II + Pipeline 1. duben 2019

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

Page 45: Virtuální paměť II + Pipeline 1. duben 2019

Ř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