Spekulativ exekvering i CPU pipelining

Relevanta dokument
Datorarkitekturer med operativsystem ERIK LARSSON

Hantering av hazards i pipelines

Närliggande allokering Datorteknik

Hantering av hazards i multi-pipelines

Pipeline hos ARM Cortex-A53 och ARM Cortex-A73

Pipelining i Intel Pentium II

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

Grundläggande datavetenskap, 4p

Digitala System: Datorteknik ERIK LARSSON

TSEA28 Datorteknik Y (och U)

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär:

Datorarkitekturer med operativsystem ERIK LARSSON

Pipelining i Intel 80486

Arm Cortex-A8 Pipeline

TSEA28 Datorteknik Y (och U)

Digitala System: Datorteknik ERIK LARSSON

Tentamen den 18 mars svar Datorteknik, EIT070

Parallellism i CDC 7600, pipelinens ursprung

Moment 2 Digital elektronik. Föreläsning Inbyggda system, introduktion

Parallellism i NVIDIAs Fermi GPU

Processor pipelining genom historien (Intel i9-intel i7)

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

CDC en jämförelse mellan superskalära processorer. EDT621 Campus Helsingborg av: Marcus Karlsson IDA

Datorsystem 2 CPU. Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur. Visning av Akka (för de som är intresserade)

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

Hur det går att minska effektutvecklingen i en processor genom att ändra pipeline

IBM POWER4, den första flerkärniga processorn och dess pipelines.

Datorsystemteknik DVGA03 Föreläsning 8

Digitalteknik och Datorarkitektur 5hp

Datorteknik. Föreläsning 6. Processorns uppbyggnad, pipelining. Institutionen för elektro- och informationsteknologi, LTH. Mål

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Pipelining i RISC-processorn. Joakim Lindström Institutionen för informationsbehandling Åbo Akademi E-post: jolindst@abo.fi

Datormodell. Datorns uppgifter -Utföra program (instruktioner) Göra beräkningar på data Flytta data Interagera med omvärlden

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Cacheminne i en AMD Opteron Processor

Aktivitetsschemaläggning för flerkärninga processorer

Multithreading in Intel Pentium 4 - Hyperthreading

4 grundregler. Minneshantering. Problemet. Windows minkrav

Utvecklingen från en 8 bitars till en 16 bitars mikroprocessor

Emil Kristiansson Kurs: EDT621 Delmoment: Rapport. En introduktion till Smart cache

Föreläsningsanteckningar 5. Cacheminnen

std_logic & std_logic_vector

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp

Multi-ported cache En rapport om några lösningar till att få flera minnesaccesser simultant.

Lösningar till tentamen i EIT070 Datorteknik

What Is Hyper-Threading and How Does It Improve Performance

DEC Alpha instruktions Arkitektur

Hyper Threading Intels implementation av SMT. Datorarkitekturer med operativsystem - EITF60. Felix Danielsson IDA2

Vad bör göras? Steg 1. RISC => pipelining. Parallellism. Pipelining. Nya LDA 13. RISC(reduced instruction set computer) Öka klockfrekvensen

Tentamen den 17 mars 2016 Datorteknik, EIT070

Öka prestanda i Shared-Cache multi-core processorer

SIMD i Intel s P5- baserade Pentium MMX

Datorarkitektur I. Tentamen Lördag 10 April Ekonomikum, B:154, klockan 09:00 14:00. Följande gäller: Skrivningstid: Fråga

c a OP b Digitalteknik och Datorarkitektur 5hp ALU Design Principle 1 - Simplicity favors regularity add $15, $8, $11

Cacheminne i en Intel Core 2 Duo-processor

Cache coherence hos multicoreprocessorer

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

DatorsystemteknikDAVA14 Föreläsning 9

1. Varje bevissteg ska motiveras formellt (informella bevis ger 0 poang)

MESI i Intel Core 2 Duo

Mekanismer. (implementation)

LABORATION DATORTEKNIK D. Pipelining. Namn och personnummer. Version: (OS,OVA,AN)

Cacheminne Intel Core i7

Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60)

Forskning och utveckling inom språkteknologi Uppgift 3: Projektförslag Parallelliserad dependensparsning i CUDA

Pipelining: Software Optimeringar Av: Gustaf Lagerblad

Föreläsning 1 Datastrukturer (DAT037)

Föreläsning 2 Datastrukturer (DAT037)

Superscalar Bra: Hårdvaran löser allt: Hårdvara detekterar poten6ell parallellism av instruk6oner Hårdvara försöker starta exekvering (issue) av så

32 Bitar Blir 64 Sammanfattning

Tentamen i Digitala system - EDI610 15hp varav denna tentamen 4,5hp

Tentamen PC-teknik 5 p

Lösningar till tentamen i EIT070 Datorteknik

VHDL testbänk. Mall-programmets funktion. Låset öppnas när tangenten 1 trycks ned och sedan släpps. William Sandqvist

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

Omtentamen i CDT204 - Datorarkitektur

Användarhandbok. MHL to HDMI Adapter IM750

InstalationGuide. English. MODEL:150NHighGain/30NMiniUSBAdapter

Fö 7: Operativsystem. Vad är ett operativsystem? Målsättning med operativsystem. Styr operativsystemet datorn?

Tentamen den 14 januari 2015 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016

Mönster. Ulf Cederling Växjö University Slide 1

0.1. INTRODUKTION Instruktionens opcode decodas till en språknivå som är förstålig för ALUn.

TDDI16 Datastrukturer och algoritmer. Algoritmanalys

Beijer Electronics AB 2000, MA00336A,

Datorteknik ERIK LARSSON

Datorteknik ERIK LARSSON

Tentamen PC-teknik 5 p

SVAR TILL TENTAMEN I DATORSYSTEM, HT2013

Hannes Larsson - IDA 2, LTH Campus Helsingborg. NEC V R 4300i. Interlock-handling EDT621

Introduktion till programmering

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Tentamen. Datorteknik Y, TSEA28

MMA132: Laboration 2 Matriser i MATLAB

Datorteknik ERIK LARSSON

Uppgift 1: a) u= a c + a bc+ ab d +b cd

Minnet från processorns sida Datorteknik

DESIGN AV SEKVENTIELL LOGIK

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

In- och Utenheter. Fö 3: In/Ut matning och kopplingsstruktur. Några exempel. Egenskaper. In- och Utenheter. Styrning.

Transkript:

Spekulativ exekvering i CPU pipelining Max Faxälv Datum: 2018-12-05 1

Abstrakt Speculative execution is an optimisation technique used by modern-day CPU's to guess which path a computer code will take, and optimistically start executing code in-advance before knowing if it is the right decision or not. In case of a correct guess the CPU can achieve signicant speed improvement, however in case of a faulty guess the CPU gets a penalty by having to undo the wrong path and instead execute the correct code. Spekulativt exekvering är en optimeringsteknik som används av moderna processorer för att gissa vilken väg en datorkod ska ta och optimistiskt börja exekvera kod i förväg innan den vet om det är rätt beslut eller ej. Vid en korrekt gissning kan CPU'n uppnå betydande hastighetsförbättringar, men i händelse av felaktig gissning får CPU en stratid genom att kasta bort dom felaktiga instruktionerna och istället utföra den korrekta koden. Innehåll 1 Introduktion 3 2 Varianter 3 2.1 Static branch prediction..................... 3 2.2 Dynamic branch prediction.................... 3 2.2.1 One-level prediction................... 3 2.2.2 Two-level prediction................... 4 2.2.3 Loop-identiering..................... 4 2.3 Neural branch prediction..................... 4 3 Sammanfattning 4 2

1 Introduktion Syftet med detta dokument är att ge en bättre inblick i hur CPU-pipelines använder spekulativ exekvering för att uppnå högre prestanda för instruktionsexekvering. Moderna mikroprocesser använder pipelines för att implementera parallellitet på instruktionsnivå inom en enda processor genom att dela upp instruktionerna i separata steg och genom att försöka hålla alla delar av processorn upptagen. Svårigheten att genomföra pipelining uppstår när koden innehåller en villkorlig gren, och processorn måste i förväg bestämma vilken väg som ska börja körs innan man vet vilken väg som faktiskt är korrekt. 2 Varianter Exempel på spekulativa exekveringsmetoder: 2.1 Static branch prediction Statiskt branch prediction är den mest simpla gissningstekniken p.g.a att den inte förlitar sig på dynamisk information (information vid körning). Enkel statisk har ingen som helst analysering och antar alltid att hoppet aldrig tas, och därmed att nästa instruktion alltid laddas. Mer avancerad statisk gissning analyserar destinationsaddressen och antar att hoppet alltid tas om utrycket hoppar bakåt i koden"(tidigare address) och att hoppet aldrig tas om utrycket har en address längre fram i koden. Detta för att optimisera för loopar som ofta hoppar tillbaka och är mer ofta tagen. 2.2 Dynamic branch prediction Dynamisk branch prediction samlar information vid körning av programmet om tidigare tagna val och gissar därutifrån baserat på vad som tidigare hade varit rätta val. 2.2.1 One-level prediction En 1-bit's räknare kommer ihåg vilket val var det rätta vid förra hoppet, och tar samma igen vid framtida hopp. Detta har en mycket hög miss-ratio. En 2-bit's räknare är en tillståndsmaskin som kommer ihåg dom två sista hoppen, och är därför minde kännslig mot mindre avvikelser. Två hopp tagna och ett hopp inte taget resulterar i att nästa hopp fortfarande tas p.g.a det tidigare mönstret. 3

2.2.2 Two-level prediction Andragrads gissning sparar tidigare tagna val i en histora-tabell som är i formen av ett shift register. Fördelen med andragrads analysering är att den snabbt kan lära sig nya repetitiva mönster. Historietabellen sparar dom n senaste valen och använder en förstagradsräknare för varje möjlig mod 2, n historiekombination. 2.2.3 Loop-identiering I en villkorlig loop identieras den sista hopp-instruktionen i loopen. Om loopen repeterar N antal gånger så tas den sista instruktionen N-1 gånger och sedan inte. Ett avbrott som identieras att hoppas många gånger och sedan en gång inte identieras som ett loop-hoppinstruktion, vars beteende kan enkelt identieras men en enkel räknare. 2.3 Neural branch prediction Neurala-nät gissningar använder maskinlärning med vektormatematik för att abstrakt identiera mönster och smart kunna välja om ett hopp ska tas eller inte. Fördelen med att använda förtränad AI är att kunna utnyttja längre historik och intensiv för-träning medans endast kräva linjär resursanvändning. Klassiska problem som andragrads dynamisk identiering kräver exponensiell resursförbrukning. Nackdelen med maskinseende för att avgöra val är fördröjningen vid exekvering av kretsen. Exekveringstiden av neurala nätet är relativt hög jämfört med enkla aritmetiska uträkningar. 3 Sammanfattning Spekulativ exekvering är en optimiseringsteknik som avänder olika sorters analyser för att försöka spå vilken kod som i framtiden kommer exekveras. Detta för att mer eektivt kunna fylla upp CPU'ns pipeline och undvika att processorn måster rulla tillbaka och därmed undvika borttappad tid. 4

Referenser [1] Kocher, P, Genkin, D, Gruss, D, Haas, W, Hamburg, M, Lipp, M, Mangard, S, Prescher, T, Schwarz, M & Yarom, Y 2018, 'Spectre Attacks: Exploiting Speculative Execution', viewed 5 December 2018. [2] Lee, JH, Lee, SE, Yu, HC & Suh, T 2012, 'Pipelined CPU Design With FPGA in Teaching Computer Architecture' IEEE Transactions on Education, vol. 55, no. 3, pp. 341348, viewed 5 December 2018,. [3] 'Computer Architecture and Implementation' 2001, Measurement Science and Technology, vol. 12, no. 10, p. 1744, viewed 5 December 2018. 5