Pipelining i Intel Pentium II

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

Datorarkitekturer med operativsystem ERIK LARSSON

Arm Cortex-A8 Pipeline

Närliggande allokering Datorteknik

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

Tentamen den 18 mars svar Datorteknik, EIT070

Datorarkitekturer med operativsystem ERIK LARSSON

Grundläggande datavetenskap, 4p

Datorteknik ERIK LARSSON

Datorsystemteknik DVGA03 Föreläsning 8

Pipelining i Intel 80486

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)

Datorarkitekturer med operativsystem ERIK LARSSON

Datorteknik ERIK LARSSON

Digitala System: Datorteknik ERIK LARSSON

Datorteknik ERIK LARSSON

Hantering av hazards i pipelines

Digitala System: Datorteknik ERIK LARSSON

Processor pipelining genom historien (Intel i9-intel i7)

Fetch-Execute. Datorteknik. Pipelining. Pipeline diagram (vid en viss tidpunkt)

Datorarkitekturer med operativsystem ERIK LARSSON

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

DatorsystemteknikDAVA14 Föreläsning 9

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

DEC Alpha instruktions Arkitektur

SIMD i Intel s P5- baserade Pentium MMX

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

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

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

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

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

TSEA28 Datorteknik Y (och U)

Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621

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

TSEA28 Datorteknik Y (och U)

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

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

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

Pipeline hos ARM Cortex-A53 och ARM Cortex-A73

Spekulativ exekvering i CPU pipelining

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

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

Parallellism i NVIDIAs Fermi GPU

Datorarkitekturer med operativsystem ERIK LARSSON

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

Hantering av hazards i multi-pipelines

Exempeltentamen Datorteknik, EIT070,

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

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

Intel Silverthornes front-end

Parallellism i CDC 7600, pipelinens ursprung

Program kan beskrivas på olika abstrak3onsnivåer. Högnivåprogram: läsbart (för människor), hög abstrak3onsnivå, enkelt a> porta (fly>a 3ll en annan ar

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

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

TSEA28 Datorteknik Y (och U)

Digitalteknik och Datorarkitektur

Digitalteknik och Datorarkitektur 5hp

Datorteknik ERIK LARSSON

F5: Högnivåprogrammering

F5: Högnivåprogrammering

Hyper-Threading i Intelprocessorer

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Program Datorteknik. Kontrollenhet. Exekvering av en instruktion. Abstraktionsnivå: Högnivåspråk. Assemblyspråk. Maskinspråk.

Foto: Rona Proudfoot (some rights reserved) Datorarkitektur 1. Datapath & Control. December

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

Datorteknik. Tomas Nordström. Föreläsning 2. För utveckling av verksamhet, produkter och livskvalitet.

4. Pipelining. 4. Pipelining

Program som ska exekveras ligger i primärminnet. Processorn hämtar instruk7on för instruk7on. Varje instruk7on, som är e= antal 1:or och 0:or, tolkas

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

Tentamen den 17 mars 2016 Datorteknik, EIT070

System S. Datorarkitektur - en inledning. Organisation av datorsystem: olika abstraktionsnivåer. den mest abstrakta synen på systemet

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Datorteknik ERIK LARSSON

Cacheprobe: programbibliotek för extrahering av cacheminnesparametrar

Multithreading in Intel Pentium 4 - Hyperthreading

Grunderna i stegkodsprogrammering

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

Digitalteknik och Datorarkitektur 5hp

Mikroprogrammering I

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

TSEA28 Datorteknik Y (och U)

Föreläsning 2. Operativsystem och programmering

Lösningar till tentamen i EIT070 Datorteknik

Datastrukturer och algoritmer. Föreläsning 4 Test, Stack och Kö

TSEA28 Datorteknik Y (och U)

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

Besvara de elektroniska frågorna (se kurshemsidan). Läs kapitel i kursbok.

Minnet från processorns sida Datorteknik

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

Tentamen Datorteknik D del 2, TSEA49

TSEA28 Datorteknik Y (och U)

Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte

Föreläsning 2 Datastrukturer (DAT037)

TSEA28 Datorteknik Y (och U)

IT för personligt arbete F5

Tentamen PC-teknik 5 p

Tentamen. Datorteknik Y, TSEA28

Datorarkitekturer med operativsystem ERIK LARSSON

Introduktion - LAN Design och switching concepts Basic Switch Concepts and Configuration Frågor? Referenser. Nätverksteknik 2

Transkript:

Pipelining i Intel Pentium II John Abdulnoor Lund Universitet 04/12/2017

Abstract För att en processor ska fungera måste alla komponenter inuti den samarbeta för att nå en acceptabel nivå av prestanda. Den här rapporten beskriver i helhet hur instruktioner i Intel Pentium II processorn är hanterade med pipelining teknologin. Klarläggning av de olika stegen som instruktionerna går igenom med fokus på Reorder Buffer (ROB) tekniken som hanterar och löser konflikt i processorns register när det behövs data från ett register som inte har blivit färdig med en fortfarande aktiv instruktion. Inledning När flera program körs parallellt på en dator behövs det att flera instruktioner ska vara aktiva i processorn samtidigt. Detta görs med hjälp av instruction pipelining. Intels Pentium II är en superscalar processor som producerades år 1997 och den implementerar 3 parallella pipelines (3-graders superscalar) med 4-stegs arkitektur. Processorn kan hantera upp till 3 instruktioner under en klockperiod. Pipelining i Intel Pentium II När en instruktion kommer till denna processorn går den igenom de 4 följande faserna: 1. Avhämtning (Fetch). 2. Avkodning (Decode). 3. Exekvering (Execute). 4. Förpliktelse (Commit). Avhämtningen av instruktioner med totalt 32 bytes i längd görs till en instruktions buffert med hjälp av en enhet för instruktionsavhämtning som kallas för Instruction Fetch Unit (IFU). Antalet instruktioner i bufferten varierar beroende på komplexiteten. IFU enheten delar instruktionerna i 3 steg enligt följande: 1. Ladda in 32 bytes av instruktioner till instruktions bufferten (Prefetch buffer). 2. Sätta en gräns mellan instruktionerna genom att konstruera ett block på 16 bytes. Sedan presentera branch instuktioner till en branch buffert (Branch Target Buffer) för

dynamisk prediktion (förklaras längre ner). Om en prediktion till en branch instruktion är tagen så justeras instruktions bufferten. 3. Sätta upp instruktionerna för att skicka vidare dem till lämplig avkodare. Den dynamiska prediktionen som Pentium II implementerar heter Branch Taget Buffer (BTB) och innebär att den kan prediktera nya branch instruktioner med hjälp av en tabell som håller koll på 512 redan exekverade d.v.s. äldre branch instruktioner och jämför dessa med nya som inkommer. Av dessa 512 instruktioner innehåller tabellen branch adressen, destinations adressen, samt en 4-bitar statusfält som har koll på beteendet av en branch de senaste 4 exekveringarna. Processorn använder Yehs algoritm och kan prediktera 4 branch instuktioner samtidigt med 90% noggrannhet. I branch tabellen finns dessutom en stack buffert som sparar returadressen för att påskynda returprocessen från subrutiner. Denna kallas för Return Stack Buffer (RSB). Avkodningen av instruktioner sker med hjälp av 3 avkodningsenheter. Dessa enheter avkodar varje instruktion till så kallade mikro operationer (micro-ops). Varje instruktion omvandlas till en eller flera micro-ops på 118 bitar var. Den första avkodningsenheten klarar av mer komplexa instruktioner och kan avkoda en sådan till mellan 1 och 4 microops på upp till 7 bytes medan de andra två enheterna klarar av just en micro-op per instruktion. Trots att instruktioner kommer i tur och ordning så kan processorn skicka dem i slumpvis ordning till rätt avkodare beroende på komplexiteten i varje instruktion. Det är inte förrän exekveringen av instruktionerna är klar och sista steget i pipeline är uppnådd då processorn skickar resultatet i ordning som de kom in. Programmeraren påverkas alltså inte av detta och på så sätt ökar man genomströmningshastigheten i processorn.

Figur 1 I fallet av en instruktion som består av 5 eller flera micro-ops körs sådana igenom ett mikroprogram som översätter en instruktion till en sekvens av micro-ops. Denna kallas för Micro Instruction Sequencer (MIS). När instruktioner har blivit avkodade skickas dem i programordning till en kö av avkodade instruktioner. Totala micro-ops per klockcykel får vara maximalt 6. En register-fördelningstabell; kallas Register Allocation Table (RAT) får sedan upp till 3 micro-ops per klockcykel från den förutnämnda kön. Mer om denna tabell förklaras i nästa del. Reorder Bufferten (ROB) Följande funktioner är en del av ROB i Pentium 2: Förpliktelse av instruktioner i programordning (steg 4 i pipeline). En cirkulär kö med huvud och ände samt pekare för vardera.

Rymmer 40 exekverbara instruktioner i programordning (innan förpliktelse steget). Ett fält för resultat av typen integer eller Floating Point efter färdigberäkning. Implementationen av Reorder Bufferten i Pentium II liknar den i Intels föregående Pentium Pro. En sådan buffert finns för att minska data hazards genom att tillåta data forwarding, d.v.s resultatet från ett register i en instruktion som inte har blivit färdigexekverad kan erhållas genom nästa instruktion i instruktionsbufferten. Figur 2 Den ovannämnda Register Allocation Table delar om operander som mikro-operationerna refererar till så att de pekar på rätt omdöpta registrar i ROB. Utan detta skulle inte data forwarding fungera. Dessutom finns det en så kallad Reservation Station (RS) som planerar och schemalägger resten av pipeline. Den rymmer 20 mikro-operationer och kan kopiera upp

till 5 av dessa från ROB till resten av pipeline. Samtidigt behåller RS en mikro-operation tills lämplig operand är tillgänglig vilket gör att instruktionerna inte exekveras i programordning (out of order execution). Blir två mikro-operationer redo för samma operand använder sig reservation stationen av en Först-in-Först-Ut (FIFO) algoritm för att avgöra vilken mikro-operation går först vidare. Ett resultat från ROB blir endast skriven i sitt register när dess instruktion har nått huvudet i den cirkulära kön och är i sista (Förpliktelse) steget i pipeline. Figur 3 Exekveringen av instruktioner i Pentium II är utförd av 8 exekveringsenheter. Reservation stationen från förra delen har flera av dessa enheter samt 5 portar som den kan använda sig av. De första tre enheterna finner man på port 0 i RS, nämligen complex integer, complex floating point samt simple floating point. Nästa port i RS innehåller simple integer samt branch enheter. Resterande porter, d.v.s. port 2, 3 och 4 har store, store address och load i

respektive ordning. Figur 4 Intel introducerade MMX instruktioner vid lanseringen av Pentium processorerna. Teknologin är baserad på SIMD tekniken (Single Instruction Multiple Data) och den är till för att öka prestandan i multimedia applikationer. MMX instruktionerna kräver extra steg i integer enheten för exekvering. Branch enhetens funktion är att beräkna och sedan jämföra resultat från branch instruktioner med den predikterade resultatet från branch bufferten (BTB). När en branch prediktion är exakt, resten av instruktionerna i spekulativa strömmen blir giltiga och sedan passerar förbi sista steget i pipeline, d.v.s. förpliktelsen. Skulle prediktionen inte stämma med det aktuella resultatet så töms pipeline och startas om från nya adressen och branch bufferten är uppdaterad. Reorder bufferten får in resultat samt status av instruktioner som är färdigexekverade.

Det sista steget i Pentium IIs pipeline är Förpliktelsen och handlar om att färdigställa alla exekverade instruktion i programordning så att de blir synliga för programmeraren. Detta görs med ytterligare en enhet som kallas för Retire Unit (RU) som kollar statusen av mikrooperationerna i Reorder bufferten och ser till att operationerna är giltiga samt inga missprediktioner har inträffat. När detta är gjort presenteras resultaten för programmeraren i programordning och dess värde är borttaget från Reorder bufferten. På samma sätt som i avkodningsprocessen så kan RU enheten behandla 3 operationer under en klockperiod. Slutsats Med en framgångsrik pipeline kunde Intel locka många datoranvändare till att köpa denna processor i slutet av 1900-talet samt början på 2000-talet. Prestandan var i sin tid bland den bästa man kunde få utav en processor tack vare den smarta implementeringen av pipeline bl. a. Reorder bufferten samt Out Of Order Execution tekniken. Processorn passade bra till alla sorters arbetsbelastningar och än idag säljer Intel nya och mer avancerade varianter av Pentium processorn i den familjen.

Figur 5

Källförteckning Artiklar (PDF dokument): 1. Pipelining The PowerPC and Pentium II (1999): http://ranger.uta.edu/~alkhaiy/cse3322_fall99/projects/paper/p10.pdf (Hämtad 04-12-2017) 2. Reorder Buffer: register renaming and in- order completion (sida 1): https://courses.cs.washington.edu/courses/cse471/07sp/lectures/lecture4.pdf (Hämtad 04-12-2017) 3. PENTIUM PROCESSOR WITH MMX TECHNOLOGY (1.2.1, sida 7): http://download.intel.com/support/processors/pentiummmx/sb/24318504.pdf (Hämtad 04-12-2017) Power point presentationer: 1. Reorder Buffer Implementation (Pentium Pro) (sida 1): https://courses.cs.washington.edu/courses/csep548/03sp/lectures/reorderbuf.ppt (Hämtad 04-12-2017) Bilder: Figur 1: http://images.slideplayer.com/23/6568411/slides/slide_6.jpg (Hämtad 04-12-2017) Figur 2: https://courses.cs.washington.edu/courses/cse471/07sp/lectures/lecture4.pdf (sida 2) (Hämtad 04-12-2017) Figur 3: http://slideplayer.com/slide/9550916/30/images/19/reorder+buffer.jpg (Hämtad 04-12-2017) Figur 4: http://ranger.uta.edu/~al-khaiy/cse3322_fall99/projects/paper/p10.pdf (sida 3) (Hämtad 04-12-2017) Figur 5: http://ranger.uta.edu/~al-khaiy/cse3322_fall99/projects/paper/p10.pdf (Sida 7) (Hämtad 04-12-2017)