Hoofdstuk 5: Exploiting memory hierarchy Flashcards
Address space
Definieert het bereik van de discrete adressen. Het bepaalt dus de hoeveelheid aan geheugen voor alle mogelijke adressen. (virtuele of fysieke)
// Aparte range van memory locaties die enkel toegankelijk is voor het programma zelf.
Explain figure 5.1
Dit is de basis structuur van een geheugenhierarchie.
De gebruiker krijgt illusie van een geheugen zo groot als het grootste niveau, met de toegankelijkheid van het snelste geheugen.
Address translation
= address mapping = het proces waarbij een virtueel adres gemapped wordt naar een fysiek adres, dat gebruikt wordt om toegang te krijgen tot het geheugen. Dit komt voor wanneer gebruik gemaakt wordt van het virtueel geheugen. Dit gebeurt met behulp van een page table. Het virtuele adres bestaat uit een pagina nummer en een offset. Het virtuele paginanummer wordt vertaald naar het fysieke pagina nummer en de offset wordt hier aangeplakt.
AMAT
= Average memory access time
= time for a hit + miss rate * miss penalty
Deze metriek wordt gebruikt voor de performantie van caches
Amazon web service
= een VM gebruikt voor cloud computing. 5 reden:
- Beschermd gebruikers tegen elkaar terwijl ze dezelfde server gebruiken
- Maakt software verdeling eenvoudiger in een warehouse-scale computer
- Makkelijk eruit stappen
- Verbergt de identiteit van de hardware, aws kan oude servers blijven gebruiken en nieuwe introduceren
- VMM controleren hoeveel de VM de processor, netwerk, geheugen ruimte verbruikt.
Availability
Maat van beschikbaarheid = meeteenheid van service accomplishment rekeninghoudend met de afwisseling tussen de 2 states van accomplishment en interruption.
Availability = MTTF / (MTTF + MTTR)
met MTTF = mean time till failure en MTTR = mean time till repair
MTTF + MTTR = MTBF (mean time between failures)
Explain figure 5.9
Cache waarden nadat elke aanvraag een miss is. De cache in initieel leeg met valid bits die af staan (N). Merk op dat de laatste aanvraag f de vorige waarde overschrijft, dit is een vorm van temporale lokaliteit.
Block or line
Minimale eenheid van informatie die aanwezig (of niet) kan zijn in de cache. Dit is dus in een two-level hiërarchie.
Software optimization via blocking
een optimalisatie om ervoor te zorgen dat alle benodigde delen in de cache passen.
Ipv. matrices te stockeren per rij of per kolom, zullen we blocked algoritmes gebruiken. Een block is een submatrix. Dit met als doel toegang tot de data in de caches te maximaliseren voordat ze vervangen moeten worden. (Temporale lokaliteit verbeteren om cache misses te verminderen)
Cache
De cache is een geheugendatastructuur dat zich hierarchisch net onder de processor bevindt. Ze bevat data die net gebruikt is door het programma, zodanig dat in de toekomst die data sneller gegeven kan worden. Caches exploiteren temporele en spatiale lokaliteit via predictie. Het bevindt zich in elke processor.
Capacity misses
Een vorm van cache miss. Er is een miss doordat de cache niet alle nodige blokken kan bevatten om aan de vraag te voldoen. Deze doen zich voor wanneer blocks vervangen worden en dan later terug opgehaald worden.
Deze kunnen verminderd worden door de cache te vergroten. Wanneer we de cache groter maken, moeten we ook wel opletten met het verhogen van de access time. vooral L2 caches worden groter, niet L1 caches
Explain figure 5.10
Een mogelijk format voor een cache. Het toont hoe het toegewezen adres opgedeeld is in een tag veld en cache index. Het volledige adres bestaat uit 64 bits, hiervan hebben we 1 bit nodig voor het valid veld, 64-(n+m+2) voor de tag grootte, en de rest voor de data. Hier zien we dat de cache 10 woorden heeft met een block size van 1 woord, worden er 10 bits gebruikt om de cache te indexeren, en blijven er dus 52 bits voor het tag veld.
Characteristics of a typical level 1 cache
vooral bezig met hit time te reduceren (zie multilevel caches)
Check yourself p. 369
Geheugen hiërarchie halt voordeel uit temporale localiteit en het laagste niveau heeft de hoogste capaciteit. Bij een read hangt de teruggegeven waarde niet af van welke blok ze komen en de duurste elementen zijn niet altijd te vinden op het hoogste niveau!
Choosing which block to replace in a cache
- Wanneer bij direct-mapped cache een miss voorkomt, kan de aangevraagde block maar in 1 positie geplaatst worden en dus wordt de block die in die posititie zit vervangen.
- Bij een associative cache kunnen we kiezen welke block vervangen wordt. Bij fully associative cache zijn alle blocken een mogelijke kanditaat, bij set-associative cache kunnen we kiezen tussen de blocken van de gekozen set. Hierbij zijn 2 methoden: random of LRU.
Vaak wordt bij de associative cache, de LRU gekozen (via extra bits opvolgen → hogere associativiteit, meer bits nodig, dus moeilijker) (zie def LRU)
Explain figure 5.47
Geoptimaliseerde c versie van DGEMM door cache blocking te gebruiken
Compare random versus LRU
- LRU = least recently used replacement scheme bij page faults. Replacement scheme waarbij de te vervangen blok diegene is die unused is voor de langste periode. Hoe meer set associativiteit toeneemt, hoe moeilijker het wordt om LRU te implementeren. → LRU te kostelijk vanaf er associativiteit komt bij kijken. Of er wordt dan gebruik gemaakt van LRU benadering, maar voor nog grotere dingen vooral wordt er gebruik gemaakt van random. LRU wordt wel altijd gebruikt in virtueel geheugen omdat daar de kost van een miss zo groot is
- Random: is eenvoudig in HW te doen en wordt vaak gebruikt voor caches en TLB’s. (wel hogere miss rate)
Compulsory misses
= cold start misses
Cache misses doordat bij de eerste toegang van een blok deze blok niet aanwezig was. Dit vermindert bij grote blokken (je haalt er meer tegelijk binnen), maar grote blokken maken miss kostelijker.
Context switch
= proces switch
Een verandering van de interne status van de processor om een ander proces toe te laten deze processor te gebruiken inclusief het opslaan van de status die nodig is om terug te keren naar het vorig proces.
Wanneer de OS beslist om van running process te veranderen Bv. wanneer een tijdrovende IO operatie moet uitgevoerd worden slaat het OS de staat van het process op en start een ander process. Wat moet er allemaal gebeuren? Page table register aanpassen en TLB leegmaken maar bij veel context switches is dit erg inefficiënt. Veel gebruikte oplossing is een procesidentificatie plakken aan het virtueel adres. Bv intrinsity fastmath heeft hiervoor 8 bits: Adres Space ID: zit in apart register en
wordt aan tag-deel van TLB geplakt => enkel hit indien zowel id als tag kloppen. Gelijkaardige problemen kunnen ook voor een cache voorkomen aangezien bij switch de cache data bevat van het lopende proces.
Cost of a page fault
= indien het naar de disk zou zijn zou het miljoenen clock cyclussen vragen → gigantische kost: wordt zeer veel rekening mee gehouden tijdens het ontwerpen van virtual memory systems
Cylinder
Dit zijn alle tracks die zich onder of boven de kop bevinden op een bepaalde plaats bij een magnetic disk.
Explain figure 5.14
Locatie van een memory block met als adress 12 in een cache met 8 blocken voor direct mapped, set associative en fully associative.
Explain figure 5.8
Een ‘direct-mapped’ cache met 8 entries → 3 bits als cache indexen, met adressen van woorden tussen 0 en 31 die mappen naar dezelfde cache locaties.
Dependability
Dependability is een kwaliteit, het is niet kwantificeerbaar. Het idee voor dependability is redundantie. Via reliability: meeteenheid voor continu succes, availability: MTTF/(MTTF + MTTR). We kunnen dit grotendeels oplossen via de kwaliteit van onze componenten/design systemen. Fault avoidance (bv. Hamming code), fault tolerance (via redundantie), fault forecasting.