EITF60 Datorarkitekturer med operativsystem Intel Silverthornes front-end Jonas Persson 4 december 2017 Sammanfattning I denna rapport undersöks designalternativ för att minska en processors energiförbrukning med avseende på dess pipeline. Detta görs genom att ta reda på hur Intel designat pipelinen på deras processor Silverthorne, rapportens fokus läggs på processorns front-end block.
Innehåll 1 Inledning och bakgrund 1 1.1 Syfte och metod............................. 1 2 Teori 2 2.1 Silverthorns front-end.......................... 2 2.2 fetch............................ 3 2.3 decode........................... 4 2.4 Prestanda vs. energiförbrukning.................... 4 3 Diskussion och slutsats 5 4 Referenser 6
1 INLEDNING OCH BAKGRUND 1 Inledning och bakgrund På grund av mobila enheters begränsade batterikapacitet och att nästan varannan människa äger en smartphone idag (Poushter 2016) finns det en stor marknad för energieffektiva processorer. För att uppnå god prestandanivå använder sig i princip alla processorer sedan 1985 av pipelining (Hennesy et al. 2007) det gäller även Intel Silverthorne, som är första mikroprocessorn i Intel Atom familjen. Innan denna processor lanserades 2008 lade Intel inte så mycket fokus på energieffektivitet, därför saknade de en processor som matchade mobilmarknadens krav på energieffektivitet, värmeutveckling och fysisk storlek. Intels Silverthorne designades från grunden med målen att minska energiförbrukning, behålla full x86 kompabilitet samt uppnå acceptabel prestanda. För att uppnå deras mål fick högprestanda funktioner som out-of-order exekvering, microoperation transformation samt aggressiv spekulativ exekvering väljas bort. Silverthorne skiljer sig därför en hel del från Intels tidigare processorer (wikichip.org 2017). 1.1 Syfte och metod Syftet med denna rapport är att undersöka vad som kan göras för att minska en processors energiförbrukning vad gäller dess pipeline. Detta görs genom att ta reda på hur Intel designat pipelinen på deras processor Silverthorne, fokus kommer läggas på processorns front-end block, mer specifikt instruction fetch och instruction decode. 1
2 TEORI 2 Teori Most low-power, low-performance processors, such as Cortex-A7/A53 and Atom, are in-order designs because OOO logic consumes a lot of power for a relatively small performance gain. (Patterson 2015) Som nämndes i inledningen fick hög-prestanda funktioner som t ex out-of-order exekvering väljas bort. Silverthorne består alltså av en in-order men även dual-issue pipeline, denna 16-19 stegs superscalar pipeline är illustrerad i F ig. 1. Med dualissue menas att processorn kan hantera två instruktioner samtidigt, detta fungerar dock endast om dessa två instruktioner redan finns i instruktions cache L1 (Geyer et al. 2011). IF1 IF2 IF3 ID1 ID2 ID3 SC IS IRF AG DC1 DC2 EX1 FT1 FT2 IWB / DC1 Fetch Decode Dispatch Source Operand Read Data Cache Access Execute Exception & MT Handling Commit IP1 IP2 PreDecode Fig. 1 Silverthornes pipeline - (BCD 2017) / CC BY-NC-ND 3.0 2.1 Silverthorns front-end För samtliga x86-baserade processorer har front-end delen av en pipeline två huvudsakliga uppgifter, att hämta instruktioner ( Fetch) och att avkoda instruktioner ( Decode) (Cepeda 2011). Jämfört med Intels högprestanda arkitekturer är Silverthornes front-end (som kan ses i F ig. 2) ganska simpel, som nämnts tidigare har funktioner valts bort, men även decode-delen har förenklats. Processorn har stöd för Simultaneous multithreading (SMT) vilket var ovanligt för energieffektiva processorer på denna tiden. För Silverthornes front-end innebär detta att instruktionskön och prefetch buffern har fördubblats för varje tråd, resten av resurserna får trådarna tävla om. Trådarna får alltså samsas om instruktionscacheminnet L1. Enligt Intel förbättras prestandan med 30-50 procent med SMT medan energiförbrukningen ökar med 15-20 procent (wikichip.org 2017). 2
2.2 fetch 2 TEORI UROM Branch Prediction Unit Front-End Cluster Per-thread Queues XLAT/ FL XLAT/ FL 2-wide Inst. Length Decoder Per Thread Prefetch Buffers Cache Inst. TLB Per thread FP Register File Per thread Integer Register File Memory Execution Cluster AGU AGU DL1 prefetcher ALU Shuffle SIMD multiplier FP multiplier FP move FP ROM FP divider ALU FP adder ALU Shifter Data Cache ALU JEU Integer Execution Cluster Data TLBs PMH Fill Buffers Fault/ Retire L2 Cache BIU APIC Bus Cluster FSB FP store FP/SIMD execution cluster Fig. 2 Block diagram av Silverthorne med front-end cluster högst upp - (Gerosa et al. 2008) 2.2 fetch Silverthornes Fetch (IF) del är indelad i tre pipeline steg och kan gå igenom 8 bytes per tråd under en klockcykel. Instruktionsflödet kommer från L1 som är ett 8-way set associative, 32KB stort instruktions cache, därefter passerar instruktionerna en serie prefetch buffers vidare till avkodningsdelen (Wang 2009). Aggressiv spekulation har valts bort när Silverthorne togs fram, men processorn har en two-level adaptive branch predictor med en 4096 posters Branch History Table (BHT) och en 128 posters Branch Target Buffer (BTB). Branch predictorn registrerar alltid-tagna och aldrig-tagna hopp medan ovillkorliga hopp ej registreras. Eftersom BTB är mycket mindre än BHT kan det hända att ett hopp är korrekt gissat som taget men det saknas en post i BTB för var hoppet ska tas, i detta fall blir straffet cirka sju klockcykler. Skulle en felgissning (misprediction) uppstå är straffet 11-13 klockcykler (wikichip.org 2017)(Fog 2017). 3
2.3 decode 2 TEORI 2.3 decode Även Decode (ID) delen är indelad i tre pipeline steg och kan avkoda instruktioner med upp till tre prefixes varje klockcykel, det tar dock många fler cykler för komplexa instruktioner. Silverthornes avkodningsdel skiljer sig nämnvärt från de flesta moderna x86 arkitekturer (wikichip.org 2017). Moderna x86 arkitekturer omvandlar komplexa x86 instruktioner till mindre så kallade micro-operations (µops), den komplexa logiken som behövs för detta är hyfsat energikrävande (Solomon et al. 2003). Silverthorne gör nästan ingen sådan omvandling. Dess pipeline är anpassad så att den kan exekvera vanliga x86 instruktioner som enkla atomiska operationer bestående av ett destinationsregister och upp till tre källregister. Med atomiska operationer menas i princip operationer som säger till processorn gör detta och tillåt inga avbrott under tiden (Atomic Operations in Hardware 2007). Processorn kan även göra så kallade lockstep instruktioner vilket innebär att den exekverar instruktioner som utför en minnesaccess och en aritmetisk operation som två separata instruktioner under en klockcykel. Komplexa x86 instruktioner som t ex cosinus-beräkningar blir fortfarande omvandlade till µops (genom att skickas till MicroCode ROM - MSROM) till kostnaden av två cykler. Alla instruktioner som har fler än tre prefixes eller är längre än 8 bytes långa blir direkt skickade till MSROM (wikichip.org 2017). Enligt Intel är detta inga problem eftersom cirka 96 procent av alla instruktioner exekveras som direkt översatta (1:1) macro-ops eller sammanslagna enkla µops (Wasson 2008). Eftersom processorn är designad att hantera instruktioner av varierande längd får Silverthornes två identiska avkodare hjälp av en föravkodare (predecoder) som fastställer gränser för var en instruktion börjar och slutar genom att markera en bit. Det tar två klockcykler att föravkoda och lagra i L1-cachen, markeringen av instruktionens gränser sparas i L1 så att upprepade operationer inte föravkodas mer än en gång. Anledningen till att Silverthorns pipeline varierar mellan 16 och 19 steg är att en cache miss kostar tre extra steg. De tre extra stegen är för att komma ikapp och att räkna ut gränserna för instruktionen. Det går dock att undvika dessa tre extra steg i de fall processorn samtidigt kan avkoda nästa instruktion (wikichip.org 2017). 2.4 Prestanda vs. energiförbrukning Jämfört med Intel Pentium M 705 från 2003, vars prestanda är på samma nivå som Intel Silverthorne enligt notebookcheck.net, förbrukar den sistnämnda betydligt mindre energi. Pentium processorn har en TDP (Thermal Design Power) på 24,5 W medan Silverthornes TDP är 0,65 W. 4
3 DISKUSSION OCH SLUTSATS 3 Diskussion och slutsats Med undantag för vilken prestandavinst och energiförbrukning som SMT bidrar med, har denna rapport dessvärre inte lyckats att på mätbart sätt visa hur mycket energieffektivitet just Silverthornes front-end har bidragit med. Däremot visar rapportens granskning av Silverthorne hur processorns front-end designats för att uppnå energieffektivitet. De flesta åtgärder som gjorts för att minska energiförbrukning är att exkludera komplex prestandahöjande logik. Att exkludera prestandahöjande funktioner kan tyckas vara mindre imponerande, dock presterar Silverthorne likvärdigt med den fem år äldre Pentium M 705 fast med betydligt mindre energiförbrukning, vilket är ett framsteg i sig. Intel har trots detta inte lyckats så bra på marknaden för mobila enheter, den domineras istället av ARM processorer (vox.com 2016), vad det beror på ligger utanför denna rapports ramar. Det bör nämnas att information till rapporten till viss del hämtats ifrån wikichip.org. På denna sida har allmänheten möjlighet att redigera innehåll och kan därför anses som mindre trovärdig källa. Anledning till att denna källa används trots detta var avsaknaden av information i form av vetenskapliga artiklar. Med facit i hand skulle studie av en ännu äldre processor valts eftersom det finns mer trovärdig information om dessa, detta är något som kommer dras lärdom ifrån till framtida rapporter. 5
4 REFERENSER 4 Referenser Geyer, R, Georgi, A, and Nagel, W 2011, Coarse Grained Parallelized Scientific Applications on a Cost Efficient Intel Atom Based Cluster, Procedia Computer Science, 4, Proceedings of the International Conference on Computational Science, ICCS 2011, pp. 1977-1986 Solomon, B, Mendelson, A, Ronen, R, Orenstien, D, and Almog, Y 2003, Micro-operation cache: a power aware frontend for variable instruction length ISA, IEEE Transactions On Very Large Scale Integration (VLSI) Systems, 11, 5, pp. 801-811 Fog, Agner, 2017, The microarchitecture of Intel, AMD and VIA CPUs An optimization guide for assembly programmers and compiler makers, Technical University of Denmark Wang, P, Collins, D, Weaver, C, Kuttanna, B, Salamian, S, Chinya, G, Schuchman, E, Schilling, O, Doil, T, Steibl, S, Wang, H, 2009, Intel Atom Processor Core Made FPGA-Synthesizable, In Proceedings of the ACM/SIGDA international symposium on Field programmable gate arrays (FPGA 09), ACM, pp. 209-218 Wasson, S, 2008, Intel s Atom processor unveiled, The Tech Report, Available at: https://techreport.com/review/14458/intel-atom-processor-unveiled Patterson, J, 2015, Modern Microprocessors - A 90-Minute Guide!, Lighterra.com, Available at: http://www.lighterra.com/papers/modernmicroprocessors/ wikichip.org, 2017, Bonnell - Microarchitectures - Intel, Available at: https://en.wikichip.org/wiki/intel/microarchitectures/bonnell Cepeda, S, 2017, Pipeline Speak: Learning More About Intel R Microarchitecture Codename Sandy Bridge Intel R Software, software.intel.com, Available at: https://software.intel.com/en-us/blogs/2011/11/22/pipeline-speak-learning-moreabout-intel-microarchitecture-codename-sandy-bridge Poushter, Jacob, 2016, Smartphone Ownership and Internet Usage Continues to Climb in Emerging Economies - But advanced economies still have higher rates of technology use, Pew Research Center Gerosa, G, Curtis, S, D Addeo, M, Kuttanna, B, Merchant, F, Patel, B, Taufique, M, Samarchi, H, A Sub-1W to 2W Low-Power IA Processor for Mobile Internet Devices and Ultra-Mobile PCs in 45nm Hi-K Metal Gate CMOS 2008, 2008 IEEE International 6
4 REFERENSER Solid-State Circuits Conference - Digest Of Technical Papers, Solid-State Circuits Conference, 2008. ISSCC 2008. Digest Of Technical Papers. IEEE International, p. 256 Hennessy, J, Patterson, D, Arpaci-Dusseau, A, 2007, Computer architecture : a quantitative approach, 4. uppl., Elsevier, Inc. Vox.com, 2016, Intel made a huge mistake 10 years ago. Now 12,000 workers are paying the price, Available at: https://www.vox.com/2016/4/20/11463818/intel-iphone-mobile-revolution Notebookcheck.net, 2017, Intel Atom Z500, Available at: https://www.notebookcheck.net/intel-atom-z500-notebook-processor.23741.0.html Atomic Operations in Hardware, Lecture 25, Computer Science and Engineering, CSE 378, University of Washington, 2007, Available at: https://courses.cs.washington.edu/courses/cse378/07au/lectures/l25-atomic- Operations.pdf 7