Arm Cortex-A8 Pipeline

Relevanta dokument
Pipelining i Intel Pentium II

Hantering av hazards i pipelines

Datorarkitekturer med operativsystem ERIK LARSSON

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

Närliggande allokering Datorteknik

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

Datorarkitekturer med operativsystem ERIK LARSSON

Digitala System: Datorteknik ERIK LARSSON

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)

Tentamen den 18 mars svar Datorteknik, EIT070

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

Digitala System: Datorteknik ERIK LARSSON

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

Parallellism i NVIDIAs Fermi GPU

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

Datorteknik ERIK LARSSON

Datorteknik ERIK LARSSON

Processor pipelining genom historien (Intel i9-intel i7)

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

Pipeline hos ARM Cortex-A53 och ARM Cortex-A73

Datorteknik ERIK LARSSON

Parallellism i CDC 7600, pipelinens ursprung

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

SIMD i Intel s P5- baserade Pentium MMX

Datorarkitekturer med operativsystem ERIK LARSSON

TSEA28 Datorteknik Y (och U)

Spekulativ exekvering i CPU pipelining

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

Grundläggande datavetenskap, 4p

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

Datorarkitekturer med operativsystem ERIK LARSSON

DEC Alpha instruktions Arkitektur

Öka prestanda i Shared-Cache multi-core processorer

Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621

TSEA28 Datorteknik Y (och U)

Hantering av hazards i multi-pipelines

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

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

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

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

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

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

32 Bitar Blir 64 Sammanfattning

Datorarkitekturer med operativsystem ERIK LARSSON

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Snapdragon 810: Cacheminnet

Digitalteknik och Datorarkitektur 5hp

Datorsystemteknik DVGA03 Föreläsning 8

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

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

Cacheprobe: programbibliotek för extrahering av cacheminnesparametrar

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

Intel Silverthornes front-end

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

Tentamen den 17 mars 2016 Datorteknik, EIT070

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

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

Minnet från processorns sida Datorteknik

Rapport (1,5 HP) Lunds Universitet HT15

Hyper-Threading i Intelprocessorer

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

Minnesisolering för virtuella maskiner en hypervisorstudie

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

Föreläsningsanteckningar 4. Pipelining

Effektivitetsmätning av multitrådning på ARM Cortex-A53 mikroarkitektur

Cacheminne i en Intel Core 2 Duo-processor

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

Jämförelse av skrivtekniker till cacheminne

Jacquards vävstol, 1801

Datorteknik. Föreläsning 7 Historia och framtid. Institutionen för elektro- och informationsteknologi, LTH

Introduktion till ARM Cortex-M4

TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1

Datorsystem. Tentamen

Datorarkitektur. Fö 9: Datorarkitektur. Datororganisation. Typiska Arkitekturattribut. Introduktion till datorarkitektur.

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

Datorsystemteknik för E/D

Central Processing Unit

Digitalteknik och Datorarkitektur

Prestandapåverkan på databashanterare av flertrådiga processorer. Jesper Dahlgren

Datorteknik ERIK LARSSON

Bank Switching. Att nå multipla adressrymder. Av: Drazen Mijatovic

Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60)

Datorsystem. Exempeltentamen

En processor kan ha en klockfrekvens på flera GHz. Det går alltså a9 exekvera en instruk=on väldigt for, givet a9 instruk=onen finns i processorn.

Datorhistorik. Föreläsning 3 Datorns hårdvara EDSAC. Eniac. I think there is a world market for maybe five computers. Thomas Watson, IBM, 1943

Valet mellan CISC och RISC processorn

4. Pipelining. 4. Pipelining

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

Improved-MOESI Cache koherens Protokoll

Datorteknik och datornät. Case Study Topics

Cacheminne Intel Core i7

HF0010. Introduktionskurs i datateknik 1,5 hp

MESI i Intel Core 2 Duo

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

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

Cache-koherens protokoll MESI och MOSI

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

Datorarkitekturer med Operativsystem

SVAR TILL TENTAMEN I DATORSYSTEM, HT2013

Transkript:

Marcus Havrell Dahl - 941206 Arm Cortex-A8 Pipeline Sammanfattning Arm Cortex-A8 processorn är en energisnål men samtidigt kraftfull enhet. Beroende på implementationen kan den ha en klockhastighet på 1GHz och samtidigt en energiförbrukning på endast 2W (Patterson & Hennessey, 2014), vilket innebär att processorn är lämpad för mobila enheter som till exempel surfplattor, spelkonsoler eller mobiltelefoner. Den höga prestandan är en följd av att den använder många nya eller förbättrade teknologier, som till exempel NEON SIMD, Thumb2 och en 13-stegs pipeline. Pipelinen är en 13 steg djup superscalar dual-in order issue integer pipeline. Uppdelad i tre delar kan de olika stegen namnges enligt: fetch instruction, decode instruction och execute instruction där Fetch Instruction delen består av tre steg, Decode Instruction består består av 5 steg och Execute Instruction delen består det 6 steg. En pipeline i sig behöver inte betyda en stor förbättring för processorn då en djup men dåligt designad pipeline inte alls behöver göra processorn snabbare. Därför finns det i Arm Cortex-A8 tillhörande teknologier för att förstärka den djupa pipelinen och processorn än mer. Inledning ARM Cortex-A8 processorn var den första av Cortex-designerna från ARM Holdings, där ARM står för Advanced RISC Machine, att bli anammad på en stor skala för hemelektronik, såsom mobiltelefoner, spelkonsoler och surfplattor (Gupta, 2013). Processorns prestanda har ett stort spann beroende på implementationen. Detta på grund av att ARM endast skapar designen och licensierar den, för att sedan lämna själva implementationen till olika partners. Beroende på implementationen kan den leverera över 2000 DMIPS (Dhrystone MIPS, som anses vara ett slags mått för CPU-prestanda (Weiss, 2002)) för hög-krävande consumer applications, medans den å andra sidan för mobila apparater, där energiförbrukning har ett stort fokus, endast behöver förbruka 300mW (ARM Developer).

ARM Cortex-A8 är den första ARM processorn att inkorporera all nya teknologier tillgängliga i ARMv7 arkitekturen. Några av dom nya teknologierna är till exempel NEON SIMD, Jazelle RCT och en 13-stegs pipeline. Jämfört med äldre modeller, som bara haft en integer pipeline (Design & Reuse, 2018), ser Arm Cortex-A8s pipeline annorlunda ut. Förutom att den är 13 steg djup har den även tillhörande enheter som förstärker pipelinen, bland annat en två-nivå global history branch predictor som används för att minimera förluster kopplade till branching. Eftersom hela processorn och alla nya teknologier är alldeles för omfattande att skriva om kommer därför en begränsning att ske till att innefatta processorns pipeline. Pipeline Arm Cortex-A8 processorn används oftast i batteridrivna portabla enheter som till exempel mobiltelefoner eller surfplattor. Eftersom processorn har en Reduced Instruction Set Computing(RISC) -arkitektur behöver den en signifikant mängd färre transistorer jämfört med andra traditionella processorer som finns i datorer. På grund av de relativt få antalet transistorer krävs det därför en minimal mängd kraft för att driva processorn, endast 2 Watt, jämfört med till exempel en Intel Core i7 920 som använder 130 Watt (Patterson & Hennessy, 2014). Som tidigare nämnt kommer fokus läggas på pipelinen i processorn. Arm Cortex-A8 har en 13-stegs pipeline med superscalar arkitektur, med förmågan att dynamiskt behandla flera instruktioner åt gången. Pipelinen är även av typen static in-order, i den benämningen att instruktioner hämtas, exekveras och skickas i den ordningen. Detta för att hålla nere energiförbrukningen, då andra exekveringspolicies som out-of-order, kan kräva omfattande mängder logik som i sin tur höjer energiförbrukningen. Som syns på bilden har pipelinen 13 steg, vilka kan delas upp i tre delar: tre stycken Fetch Instruction steg, fem Decode Instruction, och slutligen sex stycken Execute Instruction steg, med load och store inkluderat. Anledningen till att pipelinen bara anses har 13 steg istället för 14 som uppmärksamma läsare kanske har märkt, är på grund av att detta första fetch-steget, F0, inte räknas med eftersom det endast genererar adresser (Design & Reuse, 2018).

Källa: ARM Developer 2018 Tack vare superscalar arkitekturen kan de tre första stegen hämta 2 instruktioner åt gången, vilket i sin tur ökar potentialen för en högre instruktion per cykel ratio. Instruktionerna hämtas från en 12-instruction entry prefetch buffer som processorn försöker hålla fylld för att öka prestandan. Prefetch buffern fungerar på så sätt att den hämtar instruktioner från ett långsammare minne till sig självt, då instruktioner kan läsas snabbare från buffern. Efter instruktionerna har hämtats, läggs de i en buffer för framtida konsumtion av decode pipelinen. I den andra delen av pipelinen som består av fem steg, hämtas de lagrade instruktionerna och avkodas för att processorn skall veta vad instruktionerna innebär. I denna delen bestäms beroenden mellan de nyligen hämtade instruktionerna, vilket i sådana fall skulle innebära att de behövs exekveras sekventiellt. Här bestäms också till vilken pipeline i execute-delen som instruktionerna skall skickas.

Den sista delen (Execute Instruction) består av sex steg. I denna delen finns det en adress generator för load och store instruktioner, två symmetriska Arithmetic Logical Unit(ALU) pipelines och en pipeline för multiplikation. Exekveringsenheten genererar också virtuella adresser för load och store, bidrar med formaterad data för stores, och forwardar data och flaggor. Den kan även bearbeta branches och andra ändringar i instruktionsflödet för att sedan utvärdera villkoren för dessa. Sista stegen i exekveringsdelen består av load/store pipelinen. Här är instruktionernas ändstation där datan som genererades av instruktionerna antingen sparas undan i andra delar av processorn, till exempel ett långsammare minne (store) eller används för att till exempel laddas in i register för snar framtida användning (load). Detta känns igen genom instruktioner som LOAD F1, (R2) eller STORE (R1), F4. Branch Prediction För att förbättra prestandan hos en processor genom en pipelining, är en djupare pipeline inte det enda som spelar roll. Signifikant speedup av processorn genom pipelining erhålls bara om pipelinen är konstruerad på rätt sätt. Några saker som innefattar hur bra en pipeline är kan anses vara balanseringen mellan stegen, alltså att tiden för varje steg är lika, då långsamma steg skulle skapa en förstoppning. En annan avgörande del av prestandan hos en pipeline är en enhet för branch predictions. Eftersom en pipeline delar upp en instruktion i flera delar kan det uppstå olika problem, hazards i pipelinen. Dessa problem innefattar Strukturella hazards, data hazards och kontroll hazards. Den klassiska formeln för speed-up genom pipelining lyder enligt: Tid mellan instruktioner = tid mellan instruktioner (ej pipelined) / antal pipeline steg. Men denna formel kan intetsägas av tidigare nämnda problem som obalans och hazarder. ARM Cortex-A8 processorn innehåller Program Flow Prediction hårdvara, även känt som Branch Prediction (BP). BP används för att gissa när branches tas och inte tas, för att undvika hazarder som orsakar stalls eller stop i pipelinen. Med BP avaktiverat resulterar alla tagna branches i en 13-cykel förlust, medans en aktiverad BP innebär att all felgissade branches också resulterar i en 13-cykel förlust. Förlusten innebär att det blir en pipeline flush vilket innebär att pipelinen töms, och all följande instruktioner invalideras.

För att minimera förlusten skapat av olika problem sitter BP:ns hårdvara i början av instruktionspipelinen. Denna hårdvaran består av en 512 entry 2-level set associative Branch Target Buffer (BTB). BTB är en slags cache som används för att säkerställa att instruktionen som skall utföras verkligen är en branch-instruktion och inget annat. En annan del av hårdvaran är en 4K Global History Buffer (GHB) som används av en möjlig prefetch algoritm för att reducera utdaterad data, öka chansen för rätt gissning och för att reducera trafik till minnet genom att innehålla en historik över tidigare missar (Nesbit, Smith, 2004). Det finns även en 8-entry Return Stack (RS) som används för return-adresser till subrutiner. Slutsats Arm Cortex-A8 var under tiden då den först kom ut på marknaden den mest energieffektiva och snabbaste processorn som skapats, jämfört med andra ARM modeller. Detta tack vare många nya mikro arkitekturer som till exempel den integrerade level-2 cachen, NEON SIMD eller den nya dual issue, in-order superscalar pipeline som var betydligt djupare än i föregående ARM processorer. En bra designad pipeline är uppenbarligen något som ökar prestandan i processorer signifikant. Dock krävs det inte bara en djupare pipeline för att förbättra prestandan utan även rätt kringutrustning, som till exempel branch prediction units. Källförteckning Alan R. Weiss - Dhrystone Benchmark: History, Analysis, Scores and Recommendations - 2002. Rahul Gupta 2013 - ARM Cortex: The force that drives mobile devices. https://www.themobileindian.com/news/arm-cortex-the-force-that-drives-mobile-devices-7980 Kyle J. Nesbit, James E. Smith - Data cache prefetching using a global history buffer - 2004.

David A. Patterson, John L. Hennesey - Computer Organization and Design - The Hardware/Software Interface 5th Edition 2014. ARM Developer 2018. Cortex-A8 Technical Reference Manual. Hämtad 2018-12-05. https://developer.arm.com/docs/ddi0344/k Design & Reuse 2018. Architecture and Implementation of the ARM Cortex-A8 Microprocessor. Hämtad 2018-12-05. https://www.design-reuse.com/articles/11580/architecture-and-implementation-of-the-arm-cortex -a8-microprocessor.html