Cacheprobe: programbibliotek för extrahering av cacheminnesparametrar

Relevanta dokument
Öka prestanda i Shared-Cache multi-core processorer

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

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)

Snapdragon 810: Cacheminnet

Hyper-Threading i Intelprocessorer

Cacheminne i en AMD Opteron Processor

Multithreading in Intel Pentium 4 - Hyperthreading

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

Hantering av hazards i pipelines

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

MESI protokollet och dess derivater

Minnet från processorns sida Datorteknik

Cacheminne i en Intel Core 2 Duo-processor

Datorteknik ERIK LARSSON

Digitala System: Datorteknik ERIK LARSSON

Datorarkitekturer med operativsystem ERIK LARSSON

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

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.

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

MESI i Intel Core 2 Duo

Datorarkitekturer med Operativsystem

Digitalteknik och Datorarkitektur 5hp

Pipelining i Intel Pentium II

TSEA28 Datorteknik Y (och U)

CE_O5. Cacheminne. Hemlaboration 2.

Grundläggande datavetenskap, 4p

Arm Cortex-A8 Pipeline

Jämförelse av skrivtekniker till cacheminne

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

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

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

Rapport (1,5 HP) Lunds Universitet HT15

Digitala System: Datorteknik ERIK LARSSON

Tentamen den 17 mars 2016 Datorteknik, EIT070

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

4 grundregler. Minneshantering. Problemet. Windows minkrav

Digital- och datorteknik, , Per Larsson-Edefors Sida 1

Datorsystem. Tentamen

Tentamen den 18 mars svar Datorteknik, EIT070

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

DEC Alpha instruktions Arkitektur

Datorarkitekturer med operativsystem ERIK LARSSON

Datorsystem. Tentamen

Minnets komponenter. Digitala System: Datorteknik. Programexekvering. Programexekvering. Enhet för utdata. Enhet för indata CPU.

CE_O8. Cacheminne. Hemlaboration 2.

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1

Några gamla tentamensuppgifter: Minneshantering

Dugga 1 status 41 godkända 39 ej godkända ERIK LARSSON

Filsystem - Inode. Datorteknik. Minnets komponenter. Programexekvering. Enhet för indata. Enhet för utdata CPU. Primärminne.

Digitala projekt rapport

Datorsystemteknik för E/D

Datorarkitekturer med operativsystem ERIK LARSSON

Minnesisolering för virtuella maskiner en hypervisorstudie

PARALLELLISERING AV ALGORITMER PROCESSORER FÖR FLERKÄRNIGA

Datorteknik ERIK LARSSON

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

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

HF0010. Introduktionskurs i datateknik 1,5 hp

Datorteknik ERIK LARSSON

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

SIMD i Intel s P5- baserade Pentium MMX

Datorteknik ERIK LARSSON

Fö 8: Operativsystem II. Minneshantering. Minneshantering (1) Minneshantering (2) Minneshantering och Virtuelltminne.

32 Bitar Blir 64 Sammanfattning

Processor pipelining genom historien (Intel i9-intel i7)

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

Pipelining i Intel 80486

En överblick på cachedesignen i Intels mikroarkitektur Nehalem

Exempeltentamen Datorteknik, EIT070,

Grundläggande logik och modellteori

Generell säkerhet. Loggning - Hur mycket ska man logga? Inloggningsrutinerna i Unix. Loggning fortsättning

Agenda. Syfte med datorbygge Datorns delar. Datorbygge. Moderkort Processor Minne och hårddisk Instickskort Övrigt

Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621

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

SYNKRONISERING I EN SHARED MEMORY MULTIPROCESSOR

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

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

Innehållsförteckning. Figur- och tabellförteckning. Figure 1 Blockschema över hårdvaran...4 Figure 2 Blockschema över programet...

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

Föreläsning 2. Operativsystem och programmering

Närliggande allokering Datorteknik

Mer datorarkitektur. En titt I datorn Minnen

Hantering av hazards i multi-pipelines

Datorhårdvaruteknik 1DV426 - Seminarie 1

Parallellism i CDC 7600, pipelinens ursprung

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

Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60)

KUNDCASE. Inovia gjorde sin AI-utveckling 10 gånger snabbare med Power-plattformen

Tentamen den 14 januari 2015 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

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

Improved-MOESI Cache koherens Protokoll

Cacheminne Intel Core i7

Datorarkitekturer med operativsystem ERIK LARSSON

What Is Hyper-Threading and How Does It Improve Performance

Att köpa ny dator SeniorNet Lidingö Februari-2019

Parallellism i NVIDIAs Fermi GPU

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

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

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

Transkript:

Cacheprobe: programbibliotek för extrahering av cacheminnesparametrar Gabriel Gerhardsson Cacheprobe p.1/38

Abstract Kan analytiskt ta reda på associativitet, line storlek och storlek på processorns cacheminnen Analyserar tidtagna minnesläsningar vid olika minnesanvändningsmönster Många arkitekturer - en algoritm Open source Genomfört på institutionen Handledare: Robert Granat Cacheprobe p.2/38

Innehåll Bakgrund, problem, målsättning Teori Implementation Testresultat Problem, framtida förbättringar Slutsats Opponering Frågor Cacheprobe p.3/38

Bakgrund RAM-minnen har relativt processorer tappat prestanda genom åren Prestandakrävande program behöver därför utnyttja cacheminnena till fullo Måste då veta storleken på cachen Finns inget standardiserat sätt att få reda på detta Cacheprobe p.4/38

Målsättning med Cacheprobe Ska kunna ta reda på: Cache-associativitet Cache line-storlek Cache-storlek Ska använda samma algoritm på alla moderna arkitekturer, en för varje parameter Cacheprobe p.5/38

Teori: Innehåll Gemensam teori Alla tre algoritmer använder samma penalty Kort genomgång av varje algoritm Cacheprobe p.6/38

Cacheminnen Utvecklingen har gått snabbt för processorer Mindre snabbt för RAM-minnen Mer än 100 processorklockcykler för en läsning Cacheminnen: Små men väldigt snabba minnen Nära processorn, oftast direkt på samma chip Lagrar det data som används just nu...samt data som kan tänkas användas snart Hanterar block av data, cache line Cacheprobe p.7/38

Cache-organisation Olika sätt att organisera en cache: Direkt-mappad Set-associativ Andra metoder tas inte upp här Cacheprobe p.8/38

Direkt-mappad cache RAM-Minne a b c d e f g h i j k l m n o p q r s 0 1 2 3 4 5 6 7 8 9 10 11 Cache Varje minnesposition kan ligga i exakt ett ställe i cachen Både a och m hamnar i 0 Cacheprobe p.9/38

Set-associativ cache a b c d e f g h i j k l m n o p q r RAM-Minne Set Way 1 Way 2 Cache 0 1 2 3 4 5 Varje minnesposition kan ligga i exakt ett set i cachen Både a, g och m hamnar i 0 Just denna cache är 2-vägs set-associativ I varje set finns två olika ways som kan användas Cachen måste välja vilken av de två som ska användas Cacheprobe p.10/38

En minnesläsning Vi har en minnesadress x som inte finns i någon cache En förfrågan om x skickas till RAM-minnet Efter en viss tid svarar RAM-minnet med en cache-line Den läggs i cachen. Om cachen är set-associativ: Cachen vet direkt vilket set som ska användas Men måste välja vilken way som ska användas Least Recently Used (LRU) Gammalt innehåll flyttas till eventuell högre nivå cache Cacheprobe p.11/38

Framtvingad set -konkurrens Läs en rad minnespositioner med ett stort, jämnt avstånd Vid rätt avstånd kommer dom konkurrera om samma set Läs fler positioner än cachens set kan rymma Någon, redan läst, position kommer puttas ut ur cachen Enligt LRU väljs den way som varit oanvänd längst tid Penalty Alla tre extraheringsalgoritmerna använder denna effekt Cacheprobe p.12/38

Cache associativitet Använder nämnda effekt rakt av Läs in en referensposition till cachen Ta tid på en läsning av referenspositionen från cachen Läs en rad minnespositioner med lämpligt avstånd Ta tid på en läsning av referenspositionen Om tiden ökat har referenspositionen puttats ur cachen Vi kan då räkna ut cachens associativitet Det som ändras är antalet minnespositioner Cacheprobe p.13/38

Cache associativitet figurer Minnespositioner för test av associativitet 4, 8 och 16 Cacheprobe p.14/38

Cache line-storlek Samma algoritm som för associativitet, med en ändring Alla minnespositioner förutom referenspositionen flyttas framåt byte för byte Minnespositionerna kommer till slut till nästa cache line Referenspositionen kommer då inte längre puttas ut ur cachen Vi kan då räkna ut cachens line-storlek Det som ändras är hur många byte positionerna flyttas Cacheprobe p.15/38

Cache line-storlek figurer Minnespositioner för test av cache line storlek 2, 4 och 8 Just denna cache är 16-vägs set-associativ Det är först vid storlek 8 som minnespositionerna kommer till nästa cache line Referenspositionen (grön markering) puttas då ej ut Cacheprobe p.16/38

Cache storlek Samma algoritm som för associativitet, med en ändring Det lämpliga avståndet ändras, från mycket litet till stort När avståndet är för litet kommer minnespositionerna inte konkurrera om samma set Referenspositionen kommer därför inte puttas ut När avståndet blir tillräckligt stort kommer referenspositionen bli utputtad Vi kan då räkna ut cachens storlek Det som ändras är alltså det lämpliga avståndet Cacheprobe p.17/38

Cache storlek figurer Minnespositioner för test av cache storlek 1, 2 och 4 KiB Just denna cache är 4-vägs set-associativ Det är först vid storlek 4 KiB som alla minnespositioner kommer konkurrera om ways i samma set Referenspositionen (grön markering) puttas då ut Cacheprobe p.18/38

Implementation Designkrav Samma algoritmimplementation på alla arkitekturer Ska funka på alla moderna processorer Vald design Själva extraheringsfunktionaliteten i ett bibliotek Gör det enkelt för program att använda funktionaliteten Ett testprogram som använder biblioteket Skrivna i C, för att underlätta användning Cacheprobe p.19/38

Biblioteket Biblioteket delat i två delar Arkitekturoberoende del: Utgör nästan hela implementationen Implementation av extraheringsalgoritmerna Analys av resultat Arkitekturberoende del: Små, men viktiga, funktioner som används av den arkitekturoberoende delen T.ex.: Tidtagning av minnesläsning Skrivna i assembly för maximal kontroll Cacheprobe p.20/38

Arkitekturer Arkitekturberoende del portad till: Alpha, IA64, MIPS32, MIPS64, MIPS III, PA-RISC, Power, PowerPC, PowerPC64, Sparc, Sparc64, x86 och x86-64. Varav följande arkitekturer inte har kunnat testas (ej tillgång till hårdvara): MIPS32, MIPS64, PowerPC64 och Sparc64 Begränsad användbarhet av MIPS III och PA-RISC pga brister i hårdvaran Cacheprobe p.21/38

Bibliotekets interface Initiering av biblioteket: int cp_init() Allokering av resultatsdatastruktur: int cp_allocate_info_struct(cp_info_t **ret) Helt automatisk parameterextrahering: int cp_probe_all(cp_info_t *ret) Resultaten finns nu i cp_info_t-datastrukturen Avallokering av resultatsdatastruktur: int cp_free_info_struct(cp_info_t **ret) Avinitiering av biblioteket: int cp_cleanup() Cacheprobe p.22/38

Resultat Varierande resultat Vissa arkitekturer visar väldigt stabila och bra resultat Vissa ger bra resultat under rätt omständigheter Klarar inte av konkurrerande användning av systemet Vissa ger fel resultat Vissa ger inga resultat alls Cacheprobe p.23/38

Resultat: Stabilt och bra Tid 16 14 12 10 8 6 4 2 0 2 4 8 16 32 64 Cache associativitet AMD Opteron (arkitektur: x86-64) Mycket stabila och bra resultat Detta är innan post processing av resultaten Cacheprobe p.24/38

Resultat: Behöver filtreras Tid 70 60 50 40 30 20 10 0 2 4 8 16 32 64 Cache associativitet Alpha EV67 (arkitektur: Alpha) Korrekta resultat, men behöver filtreras Detta är före post processing av resultaten Cacheprobe p.25/38

Resultat: Behöver filtreras (forts) Tid 70 60 50 40 30 20 10 0 2 4 8 16 32 64 Cache associativitet Detta är efter post processing av resultaten Cacheprobe p.26/38

Resultat: Känsligt Tid 140 120 100 80 60 40 20 0 2 4 8 16 32 64 Cache associativitet SUN UltraSparc III (arkitektur: SPARC) Korrekta resultat, men känslig för konkurrerande användning Detta är efter post processing av resultaten Cacheprobe p.27/38

Resultat: Fel resultat Tid 60 50 40 30 20 10 0 64 96 128 192 256 384 512 Cache storlek (KiB) AMD Athlon (arkitektur: x86) Fel storlek på L2 cachen (korrekt: 512 KiB), allt annat korrekt 768 1024 1536 Detta är efter post processing av resultaten 2048 Cacheprobe p.28/38

Resultat: Inget resultat Tid 35 30 25 20 15 10 5 0 2 4 8 16 32 64 Cache associativitet Intel Pentium 4 (arkitektur: x86) Inga slutsatser kan dras från timingdata, fel profil Detta är efter post processing av resultaten Cacheprobe p.29/38

Resultat: Sammanfattning Extrahering fungerar på en majoritet av de testade systemen Ett fåtal system har stora problem Cacheprobe p.30/38

Testprogram: Matrismultiplikation Många teknisk-vetenskapliga beräkningar kan dra nytta av att veta cacheparametrar Ett bra exempel är matrismultiplikationer Tre implementationer testade: En optimerad, normal matrismultiplikation En optimerad, blockad matrismultiplikation. Använder L1 cachen fullt ut En optimerad, två-nivåers blockad matrismultiplikation. Använder både L1 och L2 cacheminnena fullt ut Cacheprobe p.31/38

Testprogram: Resultat Testat på en AMD Athlon 2500+ med följande cacheminnen: Cache Associativitet Line storlek Storlek L1 2 64 64 KiB L2 16 64 512 KiB Följande blev resultaten: Implementation Tid (sekunder) Normal 101 Blockad 51 Två-nivåers blockad 39 Cacheprobe p.32/38

Problem Mindre problem (buggar i kompilatorer, etc.) Sämre resultat i slutliga versionen på vissa arkitekturer Intel Pentium 4 Cacheprobe p.33/38

Problem: Intel Pentium 4 Timingresultaten följer inga normala mönster och saknar logik Normalt: vid test av associativitet börjar tiderna lågt och ökar eftersom Pentium 4: startar högt och minskar eftersom Endast en av de tre algoritmerna ger korrekta resultat: cache line storlek Cacheprobe p.34/38

Problem: Intel Pentium 4 (forts) En huvudsaklig möjlig orsak till problemen. Alla andra teorier har kunnat avskrivas Simultaneous Multithreading (hyper threading) Flera exekveringstrådar kan exekvera exakt samtidigt på samma processor. Delar på processorresurser Hindrar repeterbarhet Gör resultaten osäkra Gör cacheminnenas beteendemönster komplexa Cacheprobe p.35/38

Framtida förbättringar En kernel-mode port av cacheprobe Möjliggör ökad kontroll över hårdvaran Garanterat konsekutiv minnesregion Vissa minnesmanupilationsmetoder skulle dra nytta av bättre generella implementationer Slutliga versionen funkade sämre på vissa processorer Den statistiska analysen skulle kunna förbättras Cacheprobe p.36/38

Slutsats Mål: en algoritm - många arkitekturer Målet kunde inte uppfyllas fullt ut Slutsatsen blir att det inte går att göra en implementation som fungerar på alla processorer Beteendemönstren på dagens moderna processorer blir mer och mer komplexa Går ej att analysera alla med en och samma implementation Cacheprobe p.37/38

Slut Ladda ner: www.cs.umu.se/ dva99ggn/thesis.html Opponent Frågor Cacheprobe p.38/38