Öka prestanda i Shared-Cache multi-core processorer

Relevanta dokument
Hantering av hazards i pipelines

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

Hyper-Threading i Intelprocessorer

Rapport (1,5 HP) Lunds Universitet HT15

Cacheminne i en Intel Core 2 Duo-processor

Cacheprobe: programbibliotek för extrahering av cacheminnesparametrar

Aktivitetsschemaläggning för flerkärninga processorer

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

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

MESI i Intel Core 2 Duo

Jämförelse av skrivtekniker till cacheminne

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

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

Parallellism i NVIDIAs Fermi GPU

Improved-MOESI Cache koherens Protokoll

Cache coherence hos multicoreprocessorer

Snapdragon 810: Cacheminnet

32 Bitar Blir 64 Sammanfattning

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

MESI-protokollets funktion i multiprocessorer

Arm Cortex-A8 Pipeline

Schemaläggningsmetodik för multi-core inom Windows 7 OS Vad är scheduling och hur schemalägger Windows OS sina processer?

MESI-Protokollet. Richard Elvhammar. Lund Universitet 4/12-16

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

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

SYNKRONISERING I EN SHARED MEMORY MULTIPROCESSOR

Tentamen den 17 mars 2016 Datorteknik, EIT070

Datorarkitekturer med Operativsystem

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.

Parallellism i CDC 7600, pipelinens ursprung

Minnet från processorns sida Datorteknik

CE_O5. Cacheminne. Hemlaboration 2.

Cache-koherens protokoll MESI och MOSI

Operative system. LRU-algoritm (2 p) Svar: 7 fel. c) Optimal algoritm (2 p) Svar: 6 fel

En överblick på cachedesignen i Intels mikroarkitektur Nehalem

Digitalteknik och Datorarkitektur 5hp

Schemaläggnings metoderna AMP & SMP i en Multiprocessor

Parallellprogrammering i C++ 17 EDT621 Datorarkitekturer med Operativsystem Viktor Lindgren

Vad är viktigast? Sammanfattning. Processer och trådar. Processer och trådar. Flerprocessorsystem. Schemaläggning. Interprocesskommunikation.

SIMD i Intel s P5- baserade Pentium MMX

Tentamen den 18 mars svar Datorteknik, EIT070

Pipelining i Intel Pentium II

MESI protokollet och dess derivater

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

Hantering av hazards i multi-pipelines

Datorsystemteknik för E/D

4 grundregler. Minneshantering. Problemet. Windows minkrav

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

Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60)

Spekulativ exekvering i CPU pipelining

What Is Hyper-Threading and How Does It Improve Performance

Cacheminne Intel Core i7

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Pipelining i Intel 80486

Cacheminne i en AMD Opteron Processor

Datorarkitekturer med operativsystem ERIK LARSSON

Operativsystem (IS1350) :00-12:00

Komma över Memory wall med 3D stacked minne LTH Ingenjörshögskolan vid Campus Helsingborg Institutionen för datavetenskap

Pipelining: Software Optimeringar Av: Gustaf Lagerblad

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

Datorsystem. Tentamen

Exempeltentamen Datorteknik, EIT070,

F5: Högnivåprogrammering

Multithreading in Intel Pentium 4 - Hyperthreading

Anujan Balasingam IDA14 NAND flashminnen

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

F5: Högnivåprogrammering

Datorarkitekturer med operativsystem ERIK LARSSON

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

Datorarkitekturer med operativsystem ERIK LARSSON

TDDIU81. Processer och trådar. Andreas Dahlberg, Jonathan Doherty, Tony Magnusson, Patrik Ottosson, Rasmus Siljedahl

Tentamen i Realtidsprogrammering för Au3, D3, E3

Minnesisolering för virtuella maskiner en hypervisorstudie

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

Operativsystem (ID2200/06) XX XX:00-XX:00

Realtidssystem. - Schemaläggning - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 6

Försättsblad till skriftlig tentamen vid Linköpings Universitet Cover page for written exam at Linköping University

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

Diskprestanda Tester

FUZZY LOGIC. Christopher Palm chrpa087

Pipeline hos ARM Cortex-A53 och ARM Cortex-A73

Datorteknik ERIK LARSSON

Outline. Datorsystemtekni. Kravspecifikation. Kravspecifikation (forts.)

Vad är en dator? Introduktion till datorer och nätverk. Pontus Haglund Institutionen för datavetenskap (IDA) 21 augusti 2018

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Omtentamen i Realtidsprogrammering för Au3, D3, E3

Synkronisering. Föreläsning 8

Operativsystem ID2206 Tentamen TEN1 4.5 hp :00-18:00

Schemaläggning Unix. Minneshantering etc. Linux. Schemaläggning av trådar (kernel threads) Detaljer. Operativsystem - Lektion 7

TENTAMEN I REALTIDSPROCESSER OCH REGLERING TTIT62

Olika OS. Unix, Linux och Windows. Unix. Unix. En översikt av ett par OS. Titt på hur de gör. Många varianter. Mycket gemensamt. En del som skiljer

Datorsystem. Tentamen

Digitala System: Datorteknik ERIK LARSSON

Prestanda och skalbarhet

Datorteknik ERIK LARSSON

Operativsystem. Innehåll. Operativsystemets funktion. Vad är ett OS? Vart hittar men ett OS? OS hanterar processorns resurser

Fördelning. Fördelningsprinciper. Lastbalansering

Tentamen omfattar 40 poäng fördelade på 7 uppgifter. 20 poäng krävs för betyget 3, 30 poäng för betyget 4 och 36 poäng för betyget 5.

Dagens OS. Unix, Linux och Windows. Unix. Unix. En översikt av dagens OS Titt på hur de gör. Många varianter Mycket gemensamt. En del som skiljer

Transkript:

Öka prestanda i Shared-Cache multi-core processorer 1. Abstract Många processorer har nuförtiden flera kärnor. Det är även vanligt att dessa kärnor delar på högsta nivås cachen för att förbättra prestandan. Men om inte processorn utnyttjar detta till fullo kan det istället få motsatt effekt, att prestandan minskar. Därför kommer denna rapporten gå igenom två tekniker som kan utnyttja den delade cachen och öka prestandan i hela systemen, nämligen SCAS (Shared Cache contention Aware Sheduling) och MIP (Mobile Insertion Policy). 2. Introduktion I takt med att processorer får fler kärnor så måste nya tekniker appliceras för att på ett så effektivt sätt som möjligt utnyttja denna flerkärniga arkitektur. Många nya processorer använder sig av så kallat shared-cache. Det innebär att högsta nivå cachen är delad mellan de olika kärnorna. Tanken bakom detta är att ha större utrymme att lagra på, då storleken på minnet ökar desto högre nivå man kommer till. Det kan även vara så att två processorer använder sig av samma data till vissa uppgifter. Då behöver bara en av kärnorna ladda in datan i minnet, sedan kan båda använda det. Men ett delat cacheminne kan även innebära en del problem. Om flera processorer använder sig av olika data, men som har samma tag i cache-minnet, kommer dessa att skriva över varandras data vilket resulterar i fler cache missar och längre exekveringstider. Det är viktigt att hela tiden utveckla och förbättra alla delar i processorer, och den här rapporten visar två olika tekniker man kan använda för att förbättra prestandan högsta nivå cachen. Avsnitt 4.1 behandlar en algoritm som kallas SCAS-algoritmen. Denna algoritm ska effektivisera schemaläggningen för uppgifter och snabba på den totala svarstiden. Avsnitt 4.2 behandlar en insättnings policy som kallas MIP (mobile insertion policy). Denna policy ska öka hit ratesen i sista nivås cachen och därmed öka prestandan i hela systemet. Resultaten för de olika teknikerna hittas i avsnitt 5.1 och 5.2. 3. Related work Det finns redan en del schemaläggnings algoritmer som används flitigt i dagens processorer. Ett exempel är Shortest Job First (SJF) [3] som alltid väljer att exekvera den uppgift med kortast exekveringstid. Problemet med denna algoritm är att den inte är optimerad för processorer med delad högsta nivås cache. Det finns annan algoritm som kallas min-min. Denna algoritm beräknar varje sets minsta exekveringstid för varje uppgift på alla processorer. Sedan väljs det set som har den minsta totala exekveringstid och tilldelas till den valda processorn [1, p. 1080].

Det finns även flera insättnings policys, såsom Least Recently Used (LRU) [4]. Denna policy innebär att när man ska ladda in ny data i cache-minnet så väljs platsen som har varit utan referens under längst tid att lagra datan i. Denna policy är för sig ganska bra, men den har sina brister. 4. Föreslagna förbättringar 4.1. SCAS-algoritmen Denna del handlar om en algoritm som ökar prestandan genom att schemalägga uppgifter på ett effektivare sätt. Xiaoyong, T. med flera har skrivit artikeln A shared cache-aware Test scheduling strategy for multi-core systems [1]. I artikeln föreslår de en algoritm de kallar för SCAS (Shared Cache contention Aware Sheduling) som ska minska schemaläggnings tid och sänka den genomsnittliga svarstiden för Bag-of-Task (BoT) applikationer [1, p. 1081]. Detta gör den genom att först dela upp den delade cachen mellan kärnorna med så kallad set-based partitioning [1, p. 1081] för att få fram ett antal icke-överlappande partitioner av minnet. Varje kärna kan ta en andel av dessa partitioner för att utföra uppgiften, och släpper sedan dessa när det är klart. BoT uppgifterna kräver en viss andel partitioner för att vara utförbara, och har olika nivåer av partitioner som tar olika lång tid, så algoritmen försöker schemalägga dessa på bästa möjliga sätt baserat på dessa nivåer. Kortfattat så fungerar algoritmen på följande sätt: Algoritmen har en variabel som håller koll på hur många partitioner som inte används av någon kärna, som kallas AvailCache. Den har även variabler som håller koll på hur många partitioner varje kärna just nu har reserverat, pscache[k], där k anger vilken kärna det är. En BoT skickas in i algoritmen, med sina uppgifter och deras olika nivåer av krävda partitioner. Algoritmen går sedan igenom alla uppgifter nivå för nivå på varje kärna och testar om uppgiften just nu kan schemaläggas till någon kärna (det finns tillräckligt många tillgängliga partitioner i AvalCache+pSCache[k]). Om den kan det beräknas uppgiftens earliest execution finish time, eller EFT [1, p. 1083]. När den har gått igenom alla uppgifter och nivåer finns det två fall: någon uppgift kan schemaläggas eller ingen uppgift kan schemaläggas. Om fallet är att någon uppgift kan schemaläggas så hittas den uppgift med lägst beräknad EFT och tilldelas sedan aktuell kärna. AvailCache minskas med så många partitioner som behövs för uppgiften och pscache[k] ökas med korrekt värde. Om det däremot inte går att schemalägga någon uppgift så försöker algoritmen frigöra partitioner från den kärnan med lägst EFT till AvailCache. Detta gör den tills det går att schemalägga en ny uppgift. Algoritmen avslutas när det inte finns några uppgifter kvar att schemalägga. Pseudokod för algoritmen hittas nedan (Algoritm 1) och ser ut på följande sätt (direkt taget från artikeln [1, p. 1083]):

Algoritm 1. Pseudokod för SCAS-algoritmen. 4.2. Mobile Insertion Policy (MIP) Denna del handlar om en insättnings policy som ökar prestandan i den delade cachen. Abad, P med flera har skrivit en artikel som föreslår en alternativ insättnings policy som de kallar för MIP ( Mobile Insertion Policy ) [2]. För den här policyn delas alla sets i cachen in i grupper med storleken N. I dessa grupper finns det tre sets, varav två är evaluation sets [2, p. 17] och det tredje är det setet som ska optimeras. MIP använder sig av sina två evaluation sets för att bestämma var den bästa insättnings positionen är för det tredje baserat på deras hit rate. De tre seten kallas reference set, explorer set och conventional set [2, p. 17], där reference- och explorer set är evaluation sets. Reference set har den traditionella LRU (Last recent used) insättnings policyn. Dess insättnings position är vid positionen med högst prioritet (MRU, most recent used), även kallad referens positionen, genom hela

exekveringen. Detta för att i värsta fall hålla prestandan vid LRU policyns prestanda. Explorer set är det set som försöker hitta nya insättnings positioner som är bättre än Reference set positionen. Insättning börjar en position från MRU och uppdateras under hela exekveringen beroende på hit rate. Conventional set insättnings position är alltid på platsen innan explorer set. Det är det här setet som används och optimeras genom hela exekveringen. Optimeringen sker genom att insättnings positionen ändras beroende på vilket av de övriga seten som har bäst hit rate. Detta gör den genom att jämföra hit rates för de tre seten. Varje set har en räknare, HR REF, HR EXP och HR CON som visar de olika hit ratesen [2, p. 17]. Dessa jämförs efter varje update interval [2, p. 17] som är ett förbestämt intervall av referenser till cacheminnet. Om HR CON har högre eller lika hit rate som de övriga seten så ändras inte insättnings positionen, då conventional set är optimal. Om explorer set har högre hit rate än conventional- och reference set så är det denna som är mest optimal. Då flyttas insättnings positionen för conventional- och explorer set ett steg ifrån referens positionen. Om däremot reference set har högst hit rate så flyttas de ett steg närmre referens positionen. Fig. 1 visar ett exempel för hur det här kan gå till. Exemplet är direkt taget från artikeln [2, p. 17-18] där de använder sig av ett uppdateringsintervall på fyra referenser och ett referensmönster som består av ett antal block enligt följande mönster: [X1, X2, X3, X4, X5, X6, X7, X8, X1, X2, X2, X9, X10, X11, X1, X2]. Fig. 1. Exempel på hur MIP policyn uppdaterar insättnings positionen för conventional set. Bilden visar hur explorer set har bättre genomsnittlig hit rate och därför flyttas insättnings positionen för conventional set ett steg ifrån referens positionen efter andra uppdateringsintervallet. På grund av att alla referenser är unika under det första intervallet

så resulterar det i att alla set endast får missar. Då behåller conventional- och explorer set sina positioner. 5. Resultat 5.1. Resultat från SCAS-algoritmen SCAS-algoritmen presterade bättre än den såkallade min-min algoritmen i alla de testade områdena. Det som testades var schemaläggningstiden, som definieras som det högsta EFT värdet, och den genomsnittliga svarstiden, som definieras som medelvärdet av alla uppgifters EFT [1, p. 1083]. Detta testades sedan under två scenarier. Det första scenariot var att testa ett varierande antal uppgifter på 2, 4, 6 och 8 kärnor med 28 konstanta cache partitioner. I andra scenariot så var antalet partitioner varierande och testades på 4 och 8 kärnor, och antalet uppgifter som utfördes var först 100 sedan 160. I fig. 2 visas resultatet för det första scenariot på en processor med 8 kärnor. I fig. 3 och fig. 4 visas resultaten för det andra scenariot på en processor med 8 kärnor. I samtliga figurer visar (a) schemaläggningstiden och (b) visar genomsnittliga svarstiden. För att hålla rapporten kortare så togs bara figurerna som visar resultaten med 8 kärnor med. MSCAS (gröna linjen i graferna) visar resultatet för en modifierad version av SCAS som inte är aktuell för denna rapport. Fig. 2. Resultatet för testerna på 8 kärnor med 28 cache partitioner och varierande antal uppgifter. Fig. 3. Resultatet för testerna på 8 kärnor med 100 uppgifter och varierande antal cache partitioner.

Fig. 4. Resultatet för testerna på 8 kärnor med 160 uppgifter och varierande antal cache partitioner. Samtliga figurer är tagna från artikeln som behandlar området och hittas i [1, p. 1086-1087]. Om man tittar på figurerna så ser man SCAS har bättre värden än min-min inom alla områden. 5.2. Resultat från MIP Man testade MIP genom att köra ett antal applikationer och mäta den totala hit raten för alla applikationer. Dessa tester kördes flera gånger med avseende på olika värden för hit rate räknaren och uppdateringsintervallet. I fig. 5 visas resultatet, som är direkt taget från artikeln [2, p. 20]. Storleken för räknaren och uppdateringsintervallet uttrycks i bitar, så C-2 i grafen betyder att värdet för räknaren kan anta värdena 0-3 (2 2 bitar) och I-6 betyder att 64 referenser görs till sista-nivås cachen i varje uppdateringsintervall (2 6 ). Totala hit raten jämförs sedan med hit rate för LRU policyn. Fig. 5. Resultat för MIP jämfört med LRU på ett antal olika applikationer. Grafen visar maximala-, minimala- och medel ökningen gentemot LRU. Som vi ser så är det minimala lite sämre än LRU-policyn, ner mot nästan 15% sämre. Den maximala ökningen i

hit rate är i kontrast mycket högre, aldrig under 300% och når över 400%. Detta ger oss en medelökning på mellan 15% och 35%, vilket är ett bra värde. Detta medför även att prestandan i hela systemet ökar, vilket visas i fig. 6 [2, p. 21]. Fig. 6. Ökning i prestanda jämfört med LRU-policyn Med bilden ser vi en ökningen i prestanda i det flesta fallen. I de få fallen där prestandan är sämre så är den maximala förlusten under 5%. I genomsnitt så ökar MIP prestandan med nästan 5%. Prestandan beror till stor det av vad det är för applikation som exekveras, då vissa applikationer inte tar så stor fördel av sista-nivås cachen. 6. Slutsatser Det är viktigt att hela tiden jobba med att öka prestandan på processorer. Det finns många områden som kan förbättras och två av dessa är schemaläggningen av uppgifter och insättnings policyn, som har behandlats i denna rapport. Både SCAS och MIP ger förbättringar inom sina områden, vilket är positivt. Använder man dessa tillsammans så skulle det ge en ännu bättre prestanda. Utvecklingen av processorer måste fortsätta och nya tekniker måste appliceras, och jag tror SCAS och MIP är bra grundpelare som man kan utveckla och bygga vidare på inför nya system för komma närmre optimal prestanda. 7. References [1] Xiaoyong, T, Xiaopan, Y, Guiping, L, & Xinghui, Z 2016, 'A shared cache-aware Task scheduling strategy for multi-core systems', Journal Of Intelligent & Fuzzy Systems, 31, 2, pp. 1079-1088, Business Source Complete, EBSCO host, viewed 1 December 2016. [2] Abad, P, Prieto, P, Puente, V, & Gregorio, J 2015, 'Improving last level shared cache performance through mobile insertion policies (MIP)', Parallel Computing, 49, pp. 13-27, ScienceDirect, EBSCO host, viewed 1 December 2016. [3] Remzi H. Arpaci-Desseau, Adrea C. Arpaci-Dusseau. 2015. Shortest Job First (SJF). Operating Systems: Three Easy Pieces. United States: Arpaci-Desseau Books, 4-5. E-book. http://pages.cs.wisc.edu/~remzi/ostep/cpu-sched.pdf [4] David A. Patterson, John L. Hennessy. 2013. Measuring and Improving Cache Performance. Computer Organization and Design, 5th Edition, The Hardware/Software Interface, United Stats: Morgan Kaufmann, 508.