Architektura počítačů Zvyšování výkonnosti

Podobné dokumenty
Architektura počítačů Zvyšování výkonnosti

Principy počítačů a operačních systémů

Architektura počítačů Implementace procesoru

Architektury VLIW M. Skrbek a I. Šimeček

Strojový kód k d a asembler procesoru MIPS SPIM. MIPS - prostředí NMS NMS. 32 ks 32bitových registrů ( adresa registru = 5 bitů).

Pohled do nitra mikroprocesoru Josef Horálek

Procesor. Procesor FPU ALU. Řadič mikrokód

Assembler RISC RISC MIPS. T.Mainzer, kiv.zcu.cz

Procesor. Základní prvky procesoru Instrukční sada Metody zvýšení výkonu procesoru

Architektury CISC a RISC, uplatnění v personálních počítačích

Charakteristika dalších verzí procesorů v PC

Techniky zvýšení výkonnosti procesoru, RISC a CISC procesory

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Další aspekty architektur CISC a RISC Aktuálnost obsahu registru

Architektura počítačů Logické obvody

CHARAKTERISTIKA MODERNÍCH PENTIÍ. Flynnova klasifikace paralelních systémů

Základy informatiky. 2. Přednáška HW. Lenka Carr Motyčková. February 22, 2011 Základy informatiky 2

Proudové zpracování instrukcí I. Celočíselná pipeline RISC

Proudové zpracování instrukcí II. Hazardy v proudovém zpracování Proudové zpracování FP instrukcí

Procesor Intel Pentium (1) Procesor Intel Pentium (3) Procesor Intel Pentium Pro (1) Procesor Intel Pentium (2)

Řetězené zpracování. INP 2008 FIT VUT v Brně

Architektura Intel Atom

Architektura počítačů Logické obvody

Kubatova Y36SAP procesor - control unit obvodový a mikroprogramový řadič RISC Y36SAP-control unit 1

Princip funkce počítače

Architektura procesorů PC shrnutí pojmů

Architektura počítačů

V 70. letech výzkumy četnosti výskytu instrukcí ukázaly, že programátoři a

Principy počítačů I - Procesory

Přednáška. Strojový kód a data. 4. Přednáška ISA J. Buček, R. Lórencz

Architektura Pentia úvod

CHARAKTERISTIKA PROCESORU PENTIUM První verze:

PROCESOR. Typy procesorů

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

2.8 Procesory. Střední průmyslová škola strojnická Vsetín. Ing. Martin Baričák. Název šablony Název DUMu. Předmět Druh učebního materiálu

Provádění instrukcí. procesorem. Základní model

Charakteristika dalších verzí procesorů Pentium

CISC A RISC PROCESORY Jak pracují procesory CISC:

Architektura počítačů

NSWI /2011 ZS. Principy cpypočítačůčů aoperačních systémů ARCHITEKTURA

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Struktura a architektura počítačů (BI-SAP) 7

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Intel (2) Intel (1) Intel (3) Intel (4) Intel (6) Intel (5) Nezřetězené zpracování instrukcí:

Procesory, mikroprocesory, procesory na FPGA O. Novák, CIE 11 1

Řízení IO přenosů DMA řadičem

Pokročilé Architektury Procesorů

Architektura počítačů. Instrukce a návrh instrukční sady. Lubomír Bulej KDSS MFF UK

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Architektury CISC a RISC, uplatnění v personálních počítačích - pokračování

Pokročilé architektury počítačů

Strojový kód. Instrukce počítače

Sběrnicová architektura POT POT. Jednotlivé subsystémy počítače jsou propojeny sběrnicí, po které se přenáší data oběma směry.

Úvod do architektur personálních počítačů

Architektury CISC a RISC, uplatnění rysů architektur RISC v personálních počítačích - pokračování

2010/2011 ZS. operačních systémů. Copak je po jméně? Co růži zvou, i zváno jinak vonělo by stejně. William Shakespeare

Technické prostředky počítačové techniky

Struktura a architektura počítačů

Principy komunikace s adaptéry periferních zařízení (PZ)

Architektury CISC a RISC, uplatnění rysů architektur RISC v personálních počítačích - pokračování

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Principy počítačů I ZVYŠOVÁNÍ VÝKONU PROCESORŮ. Sériové zpracování. Pipeline. Úspora při použití pipeline. Problém 1: přístup k datům.

Architektury počítačů a procesorů

Úvod do architektur personálních počítačů

Architektura procesoru ARM

Základní principy konstrukce systémové sběrnice - shrnutí. Shrnout základní principy konstrukce a fungování systémových sběrnic.

Vývoj architektur PC 1

a operačních systémů

Akademický rok: 2004/05 Datum: Příjmení: Křestní jméno: Osobní číslo: Obor:

Představení a vývoj architektur vektorových procesorů

RISC a CISC architektura

Architektura počítačů Agenda

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Kubatova Y36SAP 9. Strojový kód ISA architektura souboru instrukcí střadačově, zásobníkově orientovaná, GPR Kubátová Y36SAP-ISA 1

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Procesor z pohledu programátora

Počítač jako prostředek řízení. Struktura a organizace počítače

Architektura počítače

Architektura Pentia 1

Luděk Matyska. Jaro 2015

Jan Nekvapil ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická

SEKVENČNÍ LOGICKÉ OBVODY

Pohled do nitra mikroprocesoru

Přidělování paměti II Mgr. Josef Horálek

Pokročilé architektury počítačů

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit

Struktura a architektura počítačů (BI-SAP) 1

Cache paměť - mezipaměť

Y36SAP

ARCHITEKTURA PROCESORŮ

Architektura počítačů

MSP 430F1611. Jiří Kašpar. Charakteristika

Úvod do problematiky návrhu počítačových systémů. INP 2008 FIT VUT v Brně

Přerušovací systém s prioritním řetězem

Úvod. Instrukce musí obsahovat: typ operace adresu operandu (operandů) typ operandů modifikátory adresy modifikátory operace POT POT

Architektura počítačů Výkonnost počítačů

Roman Výtisk, VYT027

Obecné výpočty na GPU v jazyce CUDA. Jiří Filipovič

Přednáška. Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Principy počítačů. Optimalizace. Martin Urza

Transkript:

Architektura počítačů Zvyšování výkonnosti http://d3s.mff.cuni.cz/teaching/computer_architecture/ Lubomír Bulej bulej@d3s.mff.cuni.cz CHARLES UNIVERSITY IN PRAGUE faculty of mathematcs and physics

Faktory omezující výkon procesoru Délka strojového cyklu Omezení délkou nejsložitější fáze nejsložitější instrukce Zrychlení: Přechod od jednocyklové datové cesty k vícecyklové datové cestě Jednoduché instrukce lze provést rychleji než složitější instrukce insn0.fetch, dec, exec insn0.fetch, dec, exec insn0.fetch insn0.dec insn0.exec0 insn0.exec1 insn1.fetch insn1.dec insn1.exec0 insn1.exec1 insn1.exec2 2/75

Faktory omezující výkon procesoru (2) Clock per instructon (CPI) Omezení počtem zpracovávaných instrukcí v jednom okamžiku I vícecyklová datová cesta v každý okamžik zpracovává pouze jednu instrukci Latence vs. propustnost Latence jedné instrukce je odvozena od délky strojového cyklu (tuto délku nemůžeme zkracovat neomezeně) Propustnost posloupnost instrukcí (celého programu) zvýšíme paralelním zpracováním více instrukcí současně 3/75

4/75 Zřetězené zpracování instrukcí Pipelining Při zahájení 2. kroku instrukce zahájí datová cesta současně 1. krok následující instrukce Paralelismus na úrovni instrukčních kroků (zachování sekvenčního modelu) Latence (doba zpracování) jednotlivých instrukcí se nemění, zvyšuje se propustnost insn0.fetch insn0.dec insn0.exec0 insn0.exec1 insn1.fetch insn1.dec insn1.exec0 insn1.exec1 insn1.exec2 insn0.fetch insn0.dec insn0.exec0 insn0.exec1 insn1.fetch insn1.dec insn1.exec0 insn1.exec1 insn1.exec2

5/75 Výkon zřetězeného procesoru Hrubý odhad Zpracování n instrukcí, délka cyklu t, k kroků na instrukci T =n (k t ) Zřetězené zpracování s k-stupňovou pipeline První instrukce opust pipeline po k taktech, každá další po 1 taktu T p =k t+(n 1) t Zrychlení Speedup= T T p = Zrychlení pro n >> k k+(n 1) n Speedup k n (k t) k t +(n 1) t = n k k +(n 1)

Datová cesta pro zřetězené zpracování Základní myšlenka Základem jednocyklová datová cesta Oddělená paměť pro instrukce a data Pomocné sčítačky (ALU se nesdílí) Prvky vícecyklové datové cesty Zpracování instrukce v oddělených krocích Registry pro mezivýsledky jednotlivých kroků (výstupy z instrukční a datové pamět, registrového pole a ALU) 6/75

0 1 1 0 7/75 Datová cesta pro zřetězené zpracování (2) Branch 4 Jump add Shl 2 Shl 2 ALUOp add PC Addr Insn IM IR [25:0] [15:0] [25:21] [20:16] [15:11] RegDst 1 0 Sign ext. RS RT RD WD RF A B A B 1 0 ALUSrc ALU O Addr Data DM MemWrite 1 0 D MemToReg RegWrite

1 0 0 1 Datová cesta pro zřetězené zpracování (3) Branch 4 Jump add Shl 2 Shl 2 ALUOp add PC Addr Insn IM IR [25:0] [15:0] [25:21] [20:16] [15:11] RegDst 1 0 Sign ext. RS RT RD WD RF A B A B 1 0 ALUSrc ALU O Addr Data DM MemWrite 1 0 D MemToReg RegWrite Fetch Decode Execute Memory access Write back 8/75

Datová cesta pro zřetězené zpracování (4) Datová cesta rozdělena do k úseků (stupňů, stages) V každém úseku jiná instrukce Nejpomalejší úsek určuje rychlost pipeline Mezi jednotlivými úseky registry (latches) Stav instrukce, operandy, řídící signály Instrukce uvnitř datové cesty jsou v různých stavech Ideální stav: CPI = 1 V každém hodinovém cyklu opust pipeline jedna instrukce Latence instrukcí zvyšuje režii, ne propustnost Reálně: CPI > 1 (zpoždění pipeline) 9/75

1 0 0 1 0 1 Datová cesta pro zřetězené zpracování (5) Branch PCSrc Jump MemToReg PC 4 add Addr Insn IM IF/ID PC+4 [25:0] [15:0] [25:21] [20:16] [15:11] 1 0 Shl 2 Sign ext. RS RT RD WD A B ID/EX PC+4 imm A B Shl 2 1 0 ALUSrc add ALUOp ALU EX/MA O R MA/WB O D Addr Data DM 1 0 RegDst RF MemWrite RegWrite Fetch Decode Execute Memory access Write back 10/75

1 0 0 1 0 1 Datová cesta pro zřetězené zpracování (6) Branch PCSrc Jump MemToReg PC 4 add Addr Insn IM IF/ID PC+4 [25:0] [15:0] [25:21] [20:16] [15:11] Kolize 1 0 RegDst Shl 2 Sign ext. RS A RT B RD WD RF ID/EX PC+4 imm A B Shl 2 1 0 ALUSrc add ALUOp ALU EX/MA O R MA/WB O D Addr Data DM MemWrite 1 0 RegWrite Fetch Decode Execute Memory access Write back 11/75

1 0 0 1 0 1 Datová cesta pro zřetězené zpracování (7) Branch PC 4 PCSrc add Addr Insn IM RegDst IF/ID PC+4 [25:0] [15:0] [25:21] [20:16] [15:11] Jump 1 0 Shl 2 Sign ext. RegWrite RS RT RD WD RF A B ID/EX PC+4 imm Shl 2 1 0 ALUSrc add ALUOp Fetch Decode Execute A B RD ALU EX/MA O R RD Addr Data DM MemWrite Memory access MemToReg MA/WB O D RD 1 0 Write back 12/75

Terminologie Skalární pipeline (scalar pipeline) V každém úseku se zpracovává pouze 1 instrukce Superskalární pipeline (superscalar pipeline) V některých úsecích (ne nutně všech) lze zpracovávat více instrukcí současně (ne nutně všechny kombinace) Více ALU, složitější řízení Více pipeline vedle sebe, které sdílejí některé zdroje Pipeline U a V u původního Penta 13/75

Terminologie (2) Zpracování podle pořadí (in-order pipeline) Instrukce vstupují do pipeline podle pořadí v pamět Zpracování mimo pořadí (out-of-order pipeline) Pipeline může prohazovat pořadí provádění instrukcí Typické pro superskalární pipeline Cílem je vždy využít všechny ALU, které jsou k dispozici Předdekódování instrukcí pro zjištění jejich typu 14/75

15/75 Terminologie (3) Délka/hloubka pipeline, počet stupňů pipeline (pipeline depth) Počet úseků (stages) pipeline U jednodušších RISCových procesorů bývá počet úseků odvozen od logických kroků instrukce U složitějších (superskalárních, out-of-order) procesorů trend používat více stupňů pipeline Obvykle lehce více než 10 stupňů 14-19 u Haswell/Broadwell/Skylake/Kaby Lake Mikroarchitektura NetBurst (Pentum 4) Hyper Pipelined Technology 20 stupňů od Willamete, 31 stupňů od Prescot

1 0 0 1 0 1 Zpracování 3 instrukcí, krok 1 Branch PCSrc Jump MemToReg 4 IF/ID ID/EX add MA/WB PC add Addr Insn IM PC+4 [25:0] [15:0] [25:21] [20:16] [15:11] Shl 2 Sign ext. RegWrite RS A RT B RD PC+4 imm A B Shl 2 1 0 ALUOp ALU EX/MA O R Addr Data O D RD 1 0 RegDst 1 0 WD ALUSrc DM RF RD RD MemWrite add $3, $2, $1 16/75

1 0 0 1 0 1 Zpracování 3 instrukcí, krok 2 Branch PCSrc Jump MemToReg 4 IF/ID ID/EX add MA/WB PC add Addr Insn IM PC+4 [25:0] [15:0] [25:21] [20:16] [15:11] Shl 2 Sign ext. RegWrite RS A RT B PC+4 imm A B Shl 2 1 0 ALUOp ALU EX/MA O R Addr Data O D RD 1 0 RegDst 1 0 ALUSrc DM RF RD RD MemWrite lw $4, 0($5) add $3, $2, $1 17/75

1 0 0 1 0 1 Zpracování 3 instrukcí, krok 3 Branch PCSrc Jump MemToReg 4 IF/ID ID/EX add MA/WB PC add Addr Insn IM PC+4 [25:0] [15:0] [25:21] [20:16] [15:11] Shl 2 Sign ext. RegWrite RS A RT B PC+4 imm A B Shl 2 1 0 ALUOp ALU EX/MA O R Addr Data O D RD 1 0 RegDst 1 0 ALUSrc DM RF RD RD MemWrite sw $6, 0($7) lw $4, 0($5) add $3, $2, $1 18/75

1 0 0 1 0 1 Zpracování 3 instrukcí, krok 4 Branch PCSrc Jump MemToReg 4 IF/ID ID/EX add MA/WB PC add Addr Insn IM PC+4 [25:0] [15:0] [25:21] [20:16] [15:11] Shl 2 Sign ext. RegWrite RS A RT B PC+4 imm A B Shl 2 1 0 ALUOp ALU EX/MA O R Addr Data O D RD 1 0 RegDst 1 0 ALUSrc DM RF RD RD MemWrite sw $6, 0($7) lw $4, 0($5) add $3, $2, $1 19/75

1 0 0 1 0 1 Zpracování 3 instrukcí, krok 5 Branch PCSrc Jump MemToReg 4 IF/ID ID/EX add MA/WB PC add Addr Insn IM PC+4 [25:0] [15:0] [25:21] [20:16] [15:11] Shl 2 Sign ext. RegWrite RS A RT B RD PC+4 imm A B Shl 2 1 0 ALUOp ALU EX/MA O R Addr Data O D RD 1 0 RegDst 1 0 WD RF RD ALUSrc RD DM MemWrite sw $6, 0($7) lw $4, 0($5) add $3, $2, $1 20/75

1 0 0 1 0 1 Zpracování 3 instrukcí, krok 6 Branch PCSrc Jump MemToReg 4 IF/ID ID/EX add MA/WB PC add Addr Insn IM PC+4 [25:0] [15:0] [25:21] [20:16] [15:11] Shl 2 Sign ext. RegWrite RD PC+4 imm A B Shl 2 1 0 ALUOp ALU EX/MA O R Addr Data O D RD 1 0 RegDst 1 0 WD RF RD ALUSrc RD DM MemWrite sw $6, 0($7) lw $4, 0($5) 21/75

1 0 0 1 0 1 Zpracování 3 instrukcí, krok 7 Branch PCSrc Jump MemToReg 4 IF/ID ID/EX add MA/WB PC add Addr Insn IM PC+4 [25:0] [15:0] [25:21] [20:16] [15:11] Shl 2 Sign ext. RegWrite RS A RT B RD PC+4 imm A B Shl 2 1 0 ALUOp ALU EX/MA O R Addr Data O D RD 1 0 RegDst 1 0 WD RF RD ALUSrc RD DM MemWrite sw $6, 0($7) 22/75

Řízení pipeline Různé přístupy Využit jednocyklového řadiče Signály je potřeba aktvovat postupně Kombinační obvod nebo ROM dekóduje operační kód instrukce Stejně jako datová cesta je i cesta pro řídící signály zřetězena pomocí latch registrů pro jednotlivé úseky Každá instrukce si nese řídící signály s sebou Využit vícecyklového řadiče Komplikované řešení Jeden složitý konečný automat Hierarchické konečné automaty (pro každý úsek pipeline) 23/75

24/75 Řízení pipeline (2) PCSrc Jump Control RegWrite MemToReg MemWrite WB ALUSrc MA WB ALUOp Branch EX EX MA MA WB WB IF/ID ID/EX EX/MA MA/WB

25/75 Výkonnost zřetězené datové cesty Jednocyklová datová cesta takt = 50ns, CPI=1 50ns na instrukci Vícecyklová datová cesta 20% branch (3T), 20% load (5T), 60% ALU (4T) takt = 11ns, CPI (20% 3) + (20% 5) + (60% 4) = 4 44ns na instrukci Zřetězená datová cesta takt = 12ns (cca 50ns/5 kroků) CPI = 1 (v každém cyklu je dokončena 1 instrukce) 12ns na instrukci? Ve skutečnost CPI = 1 + režie > 1 CPI = 1.5 18ns na instrukci

Proč nelze dosáhnout CPI = 1? Reálná pipeline CPI = 1 + penalizace za zpoždění Penalizace odvozena z frekvence výskytu zpoždění a počet taktů zpoždění Ani velké penalizace nevadí, pokud nenastávají příliš často Penalizace ovlivňuje ideální počet stupňů pipeline Zpoždění (stall) je prázdný krok v pipeline Vložen s cílem ošetřit hazard pipeline Hazard Situace, která ohrožuje iluzi nezávislost jednotlivých instrukcí 26/75

Typy hazardů v pipeline Strukturální hazard Hardware nepodporuje danou kombinaci instrukcí Současné použit sdíleného prostředku z více stupňů pipeline Řešení v našem případě: Oddělení instrukční a datové pamět Reálně: Oddělená instrukční a datová cache 27/75

Typy hazardů v pipeline (2) Datový hazard Instrukce nemá k dispozici data pro vykonání Hodnoty argumentů jsou výsledky operací instrukce, která je ještě stále v pipeline Nutnost počkat na předchozí instrukce Řídící hazard Nutno učinit rozhodnut před vykonáním instrukce Podmíněný skok je zpracováván až ve 3. kroku V té době už pipeline zpracovává 2 další instrukce 28/75

29/75 Pipeline diagramy Zjednodušená reprezentace pipeline Všechny úseky trvají právě 1 cyklus Diskrétní čas v hodinových cyklech pořadí provádění instrukcí lw $10, 20($1) sub $11, $2, $3 add $13, $3, $4 lw $13, 24($1) add $14, $5, $6 1 2 3 4 5 6 7 8 9 čas [cykly]

Datový hazard Závislost mezi operandy instrukcí Operand je výsledek operace předchozí instrukce Operand je obsah pamět čtený předchozí instrukcí Zjišťování závislost (při návrhu) Graf Vrcholy = aktvní prvky pipeline v čase Hrany = řídící nebo datové signály Závislost = hrany vedoucí dopředu v čase Zjišťování závislost (v hardwaru) Vyhodnocování čísel registrů a paměťových adres všech instrukcí právě prováděných v pipeline 30/75

31/75 Datový hazard (2) pořadí provádění instrukcí sub $2, $1, $3 IF 1 2 3 4 5 6 7 8 9 ID EX MA WB čas [cykly] and $12, $2, $5 or $13, $6, $2 and $14, $2, $2 sw $15, 64($2)

32/75 Ošetření datových hazardů Na úrovni překladače (sofware interlock) Řazení instrukcí tak, aby došly do pipeline až v okamžiku, kdy mají k dispozici všechny operandy Mezi dvojici závislých instrukcí vložit nezávislou instrukci (nepotřebují žádný registr, který je předmětem závislost) V nejhorším případě použit prázdné instrukce (nop) Nevhodné řešení z hlediska kompatbility MIPS = Microprocessor without Interlocked Pipeline Stages

Ošetření datových hazardů (2) Forwarding/bypassing Poskytnut mezivýsledku následující instrukci Je-li výsledek v některém z následujících pipeline registrů (pro předchozí instrukci), lze jej přečíst přímo z tohoto pipeline registru a nečekat na registrové pole Forwarding unit Zdrojový operand vykonávané instrukce je cílový operand výsledku dřívější instrukce EX/MA.RD := ID/EX.RS EX/MA.RD := ID/EX.RT MA/WB.RD := ID/EX.RS MA/WB.RD := ID.EX.RT 33/75

34/75 Datový hazard forwarding/bypassing pořadí provádění instrukcí sub $2, $1, $3 IF 1 2 3 4 5 6 7 8 9 ID EX MA WB čas [cykly] and $12, $2, $5 or $13, $6, $2 and $14, $2, $2 sw $15, 64($2)

Ošetření datových hazardů (3) Zpoždění instrukce v pipeline V případě použit operandu (registru) bezprostředně po jeho načtení z pamět (load/use dependency) Hazard detecton unit Testování, zda zdrojový operand dekódované instrukce je cílový operand dřívější instrukce čtení z pamět ID/EX.MemRead && (ID/EX.RT == IF/ID.RS ID/EX.RT == IF/ID.RT) 35/75

36/75 Datový hazard load/use závislost pořadí provádění instrukcí lw $2, 20($1) IF 1 2 3 4 5 6 7 8 9 ID EX MA WB čas [cykly] and $4, $2, $5 or $8, $2, $6 and $9, $4, $2 slt $1, $6, $7

37/75 Datový hazard load/use a forwarding pořadí provádění instrukcí lw $2, 20($1) IF 1 2 3 4 5 6 7 8 9 ID EX MA WB čas [cykly] and $4, $2, $5 or $8, $2, $6 and $9, $4, $2 slt $1, $6, $7

38/75 Datový hazard zpoždění pipeline pořadí provádění instrukcí lw $2, 20($1) IF 1 2 3 4 5 6 7 8 9 ID EX MA WB čas [cykly] and $4, $2, $5 nop IF ID and $4, $2, $5 or $8, $2, $6 and $9, $4, $2

39/75 Datový hazard zpoždění pipeline (2) pořadí provádění instrukcí lw $2, 20($1) IF 1 2 3 4 5 6 7 8 9 ID EX MA WB čas [cykly] and $4, $2, $5 nop IF ID and $4, $2, $5 or $8, $2, $6 and $9, $4, $2

40/75 Datový hazard zpoždění pipeline (3) pořadí provádění instrukcí lw $2, 20($1) IF 1 2 3 4 5 6 7 8 9 ID EX MA WB čas [cykly] and $4, $2, $5 nop IF ID and $4, $2, $5 or $8, $2, $6 and $9, $4, $2

Řídící hazard Odkud číst další instrukci Hodnota PC ovlivněna podmíněnými a nepodmíněnými skoky Rozhodnut závisí na výsledku, který bude k dispozici o několik taktů později, než je potřeba Výjimky a přerušení Ošetření řídícího hazardu Forwarding není možný Cílová adresa skoku může být známa, ale vyhodnocení podmínky ne Cíl: Minimalizovat zpoždění pipeline 41/75

42/75 Řídící hazard větvení pořadí provádění instrukcí 40: beq $1, $3, 28 IF 1 2 3 4 5 6 7 8 9 ID EX MA WB čas [cykly] 44: and $12, $2, $5 48: or $13, $6, $2 52: and $14, $2, $2 72: lw $4, 50($7)

Ošetření řídícího hazardu Zpozdit pipeline do dokončení skoku Snaha udržet stále plnou pipeline Odkud číst další instrukce? Zrychlené vyhodnocení skoku Přesun výpočtu adresy skoku a vyhodnocení podmínky z úseku EX do úseku ID Forwardování mezivýsledků Předpokladem je jednoduchá podmínka skoku (např. test na rovnost) Zpoždění 1 cyklus při skoku Zpožděný skok (branch delay slot) Vždy se vykoná 1 instrukce po instrukci skoku 43/75

Ošetření řídícího hazardu (2) Snaha udržet stále plnou pipeline Odkud číst další instrukce? Branch target bufer Cache cílových adres specifckých instrukcí Spekulatvní provádění instrukcí Provádění instrukcí naslepo bez vyhodnocení podmínky skoku Pokud se později zjist, že se má provádět jiná varianta, pipeline se vyprázdní (rollback) U složitých procesorů může znamenat částečnou virtualizaci registrového souboru a store buferů (zápisy do pamět) 44/75

Predikce skoku Statcká predikce Predikce nezávisí na historii Bez nápovědy Heuristka určena hardwarem Obvykle se předpokládá, že se skok neprovede Méně často složitější heuristky (vzdálenost skoku apod.) S nápovědou Pravděpodobnější chování skoku určeno bitem v instrukci 45/75

Predikce skoku (2) Dynamická predikce Predikce na základě historie Branch predicton bufer (history table) Predikce stejného chování jako v minulost Cykly většinou skáčí na začátek 2 špatné predikce Iniciální chování může být vylepšeno nápovědou 2-bitový prediktor Musí se dvakrát splést, než změní názor 46/75

Branch history table Základní prediktor Tabulka bitů predikce indexována část PC Rozšíření Vícebitový prediktor Korelující prediktor Soutěžící prediktor Branch target bufer Podmíněné instrukce Vadí aliasing (různé hodnoty PC se stejnými nižšími bity)? Jak je to s vnořenými cykly? h 2 predikce T or NT T or NT T or NT PC [31:10] [9:2] [1:0] 47/75

48/75 2-bitový prediktor skoků taken not taken 10 predict: taken taken 11 predict: taken taken 01 predict: not taken not taken taken 00 predict: not taken not taken not taken

Zřetězené zpracování a výjimky V pipeline je k instrukcí současně Která instrukce způsobila výjimku? Informace se musí propagovat v pipeline registrech Když nastane více výjimek, kterou obsloužit dříve? Tu, která patří k instrukci dříve v pořadí Obsluha výjimky Důraz na zachování konzistentního stavu procesoru Data z pipeline registrů se nikam nezapisují (registrový soubor a paměť obsahují hodnoty před výskytem výjimky) Před obsluhou nutno vyprázdnit pipeline (rollback) Stejná logika jako při spekulatvním provádění skoků 49/75

Prodlužování pipeline Trend: Delší pipeline 486 (5 stupňů), Pentum (7 stupňů), Pentum III (12 stupňů), Pentum 4 (20 31 stupňů), Core (14 stupňů) Důsledky Vyšší taktovací frekvence Zvýšení není lineární, od určité délky způsobuje pokles výkonu Pentum 4 na 1 GHz je pomalejší než Pentum III na 800 MHz Obecně vyšší CPI Vyšší penalizace za špatně predikované skoky Zpoždění u hazardů, které nelze vyřešit bypassem 50/75

Zvyšování počtu pipeline Flynn botleneck Teoretcké omezení skalární pipeline V každém stupni pouze 1 instrukce CPI = IPC = 1 V praxi není možné ji dosáhnout (hazardy) Výnosy z prodlužování pipeline rychle klesají Superskalární (multple issue) pipeline Dnešní procesory typicky 4 pipeline Využit paralelismu na úrovni instrukcí Nezávislé instrukce se dají vykonávat současně 51/75

Paralelismus na úrovni instrukcí Optmální plánování instrukcí překladačem Nutné i pro skalární pipeline (omezení hazardů) Pro superskalární pipeline složitější Kolik nezávislých proudů instrukcí lze v programu najít? Ideální případ: Kopírování bloku pamět Při rozbalení smyčky dostáváme spoustu nezávislých instrukcí V běžných programech zdaleka ne tolik Alternatva: Simultaneous multthreading (SMT) 52/75

Simultaneous multthreading Zpracování více nezávislých vláken současně Na úrovni superskalární pipeline Kódy nezávislých vláken by na sobě měly být z defnice nezávislé, takže využijí vícenásobnou pipeline efektvněji Energetcky efektvnější než implementace více jader Zvětšení registrového souboru a logiky čtení instrukcí Ostatní logika procesoru zůstává praktcky nezměněna Detekovatelná sofwarem (logické procesory) Nevýhody: Implicitně sdílené zdroje (cache, přístup do pamět) Intel Hyper-Threading Technology 53/75

Temporal multthreading Úprava principu SMT pro jednu pipeline Pragmatcky: Přepínání vláken na úrovni procesoru Jemné (fne-grained) Přepnut vlákna s každou instrukcí Niagara (Sun UltraSPARC T1) Hrubé (coarse-grained) K přepnut dojde tehdy, pokud zpracování aktuální instrukce způsobí zpozdění (pipeline stall, cache miss, page fault) Montecito (Intel Itanium 2) 54/75

55/75 Typická superskalární pipeline Čtení instrukcí Celý blok cache (16, 32 nebo 64 bytů), 4 16 instrukcí Predikce jednoho skoku v každém cyklu Paralelní dekódování instrukcí Detekce závislost a hazardů Víceportové, vícenásobné registrové pole Více výkonných jednotek Různé ALU, forwarding/bypassing logika mezi nimi Přístup do pamět

Statc multple issue Plánování superskalární pipeline překladačem Issue packet Sada instrukcí, které se mají provést současně Sloty v issue packetu nejsou ortogonální Very Long Instructon Word (VLIW) Explicit Parallel Instructon Computer (EPIC) Výkon silně závisí na překladači Vhodné plánování instrukcí (plnění instrukčních slotů) Některé nebo všechny důsledky datových a řídících hazardů řeší překladač Statcká predikce skoků 56/75

57/75 Příklad: Multple issue MIPS pořadí provádění instrukcí 1 2 3 4 5 6 7 8 9 ALU / branch load / store ALU / branch load / store ALU / branch load / store ALU / branch load / store ALU / branch load / store čas [cykly]

Příklad: Multple issue MIPS (2) Změny oprot single issue Načítání 64bitových instrukcí, zarovnání na 8 bytů Nevyužitý slot může obsahovat NOP Registrové pole pro přístup z obou slotů Samostatná sčítačka pro výpočet efektvní adresy Nevýhody Vyšší latence při použit výsledků Registrové operace 1 instrukce, load 2 instrukce Složitější plánování instrukcí překladačem Penalizace v důsledku hazardů jsou dražší 58/75

59/75 Příklad: Multple issue MIPS (3) Jak naplánovat následující kód? Loop: lw $t0, 0($s1) addu $t0, $t0, $s2 sw $t0, 0($s1) addi $s1, $s1, -4 bne $s1, $zero, Loop ALU or branch insn Data transfer insn Clock cycle Loop: lw $t0, 0($s1) 1 addi $s1, $s1, -4 2 addu $t0, $t0, $s2 3 bne $s1, $zero, Loop sw $t0, 4($s1) 4 Výkonnost? 5 instrukcí, 4 takty CPI = 0.8 (místo ideálních 0.5)

Příklad: Multple issue MIPS (4) Program po rozbalení 4 iterací cyklu ALU or branch insn Data transfer insn Clock cycle Loop: addi $s1, $s1, -16 lw $t0, 0($s1) 1 Přejmenování registrů (překladačem) lw $t1, 12($s1) 2 addu $t0, $t0, $s2 lw $t2, 8($s1) 3 addu $t1, $t1, $s2 lw $t3, 4($s1) 4 addu $t2, $t2, $s2 sw $t0, 16($s1) 5 addu $t3, $t3, $s2 sw $t1, 12($s1) 6 sw $t2, 8($s1) 7 bne $s1, $zero, Loop sw $t3, 4($s1) 8 nutné k odstranění falešných závislost vzniklých při rozbalení cyklu místo $t0 překladač použil jiný registr pro každou iteraci 60/75

Příklad: Itanium (IA-64) Hlavní rysy Mnoho registrů 128 general purpose, 128 foatng point, 8 branch, 64 conditon Registrová okna s podporou přetečení do pamět EPIC instructon bundle Svazek instrukcí vykonávaný současně Pevný formát, explicitní závislost Stop bit: Indikace, zda následující bundle závisí na aktuálním Podpora spekulace a eliminace větvení Instrukce se provede, ale teprve později se rozhodne, zda její efekt bude trvalý (provede se rollback) 61/75

Příklad: Itanium (IA-64) (2) Další zajímavé vlastnost Instructon group Skupina instrukcí bez datových závislost Odděleny instrukcí se stop bitem Kvůli dopředné kompatbilitě (rozšíření počtu pipelines) Struktura instructon bundle 5 bitů template (použité výkonné jednotky) 3 41 bitů instrukce Většina instrukcí může záviset na podmínkovém registru 62/75

Dynamic multple issue Dynamické plánování instrukcí v pipeline Optmální využit paralelismu, eliminace hazardů a prostojů Zpracování instrukcí mimo pořadí Zachování iluze sekvenčního pořadí Překladač se snaží procesoru plánování usnadnit Spekulatvní provádění instrukcí Provedení instrukcí s potenciálně špatnými operandy nebo bez zaručení využit výsledku Mechanismus rollbacku podobně jako při predikci skoků 63/75

64/75 Příklad: dynamické plánování instrukcí

Out-of-order executon Procesor je řízen datovými závislostmi Kolize mezi jmény registrů v instrukcích RAW (Read Afer Write, true data dependency) Výsledek instrukce je používán jako operand následující WAW (Write Afer Write, output dependency) Dvě instrukce zapisují do stejného registru (výsledek musí odpovídat pozdější instrukci) WAR (Write Afer Read, ant-dependency) Zatmco jedna instrukce zpracovává data, další instrukce tato data změní WAW a WAR lze vyřešit přejmenováním registrů Procesor má více fyzických registrů než defnuje architektura 65/75

66/75 Příklad: Eliminace WAW Kód z pohledu procesoru (po přerovnání) move r3, r7 add r3, r4, r5 move r1, r3 Po přejmenování registrů move r3, r7 add fr8, r4, r5 move r1, fr8

67/75 Dynamic multple issue (2) In-order issue Instructon fetch Instructon decode Instructon scheduler Reservaton staton Reservaton staton Reservaton staton Reservaton staton Integer ALU Integer ALU FP ALU Load/Store Commit unit In-order commit

Out-of-order a výjimky Komplikovanější než skalární pipeline Při zpracování mimo pořadí není snadné defnovat místo přerušení výpočtu Instrukce následující po instrukci, která vykonala výjimku, nesmí ovlivnit stav stroje Některé takové instrukce už mohly být vykonány Nesmí existovat nezpracované starší instrukce Všechny výjimky způsobené staršími instrukcemi jsou už vyřízeny Přesné (precise) vs. nepřesné (imprecise) výjimky OOE + register renaming poprvé implementováno v IBM 360/91 (1969), masové nasazení až v 90. letech Důvody: nepřesné výjimky + vyšší efektvita jen pro malou třídu programů 68/75

Spekulatvní provádění instrukcí Odhadnut vlastnost/výsledku instrukce Umožňuje zahájení zpracovávání závislých instrukcí Logika pro ošetření nesprávného výsledku Při překladu Speciální kód pro opravu chybných spekulací V procesoru Spekulatvní výsledky neovlivňují stav stroje, dokud nejsou potvrzeny Spekulatvně provedené instrukce nevyvolávají výjimky nebo vyvolávají speciální výjimky 69/75

Příklad: IA-32 Intel Pentum Pro až Pentum 4 CISC instrukční sada implementována pomocí mikrooperací na post-risc jádře Instrukce rozkládány na mikrooperace Pipeline provádí mikrooperace Superskalární, out-of-order spekulatvní provádění instrukcí (včetně predikce skoků a přejmenování registrů) Pentum 4 Trace cache pro urychlení dekódování instrukce 70/75

71/75 Příklad: Skylake Zjednodušený pohled na mikroarchitekturu procesorů rodiny Skylake Instrukce dekódovány do mikrooperací (μops) μops vykonánány out-of-order pomocí výkonných jednotech v Executon Engine Reorder Bufer zodpovědný za alokaci registrů, přejmenování registrů a dokončení instrukcí Navíc eliminuje přesuny mezi registry a nulovací idiomy Scheduler forwarduje μops výkonným jednotkám podle dostupnost dat Zdroj: M. Lipp et al. Meltdown.

72/75 Návrh optmální instrukční sady Statstka využit instrukcí (IBM 360) Skupina Zastoupení přesuny dat 45,28 % řízení 28,73 % aritmetka 10,75 % porovnávání 5,92 % logické operace 3,91 % posuny, rotace 2,93 % bitové operace 2,05 % I/O a ostatní 0,43 %

73/75 Návrh optmální instrukční sady (2) Další pozorování (IBM 360) 56 % konstant je v rozsahu ±15 (5 bitů) 98 % konstant je v rozsahu ±511 (10 bitů) 95 % podprogramů potřebuje pro předání argumentů méně než 24 bytů Další pozorování (DEC Alpha) Typický program používá 58 % instrukční sady Pro 98 % instrukcí stačí 15 % frmwaru (PAL)

74/75 Návrh optmální instrukční sady (3) Historické priority Rozsáhlé instrukční sady, složité operace Překlenut sémantcké mezery mezi assemblerem a vyšším programovacím jazykem Aktuální priority Malé instrukční sady, jednoduché instrukce Rychlejší provádění instrukcí, snadnější optmalizace (při překladu i při provádění)

Post-RISC procesory Postupná konvergence CISC a RISC architektur Přidání užitečných složitějších CISCových instrukcí do RISCové instrukcní sady Superskalární zpracování Agresivní přerovnávání instrukcí při zpracování Out-of-order speculatve executon Odklon od závislost na optmalizacích překladače Nové specializované jednotky, větší míra paralelismu 75/75