In dit hoofdstuk wordt cachegeheugen behandeld alsmede
oplsooingen die bijdragen tot het optimaal laten werken van een pipeline.
Er betsaan levels.
Instructies en data kunnen geschidene of gecombineerd worden.
(split cache en verenigde cache).
We onderschieden drie typen:
- Direct mapping cache. Gebaseerd op conventioneel geheugen.
Een geheugenplaats bevat data en extra informatie over de geheugenplaats waar die
data vandaan komt. Dit is niet het hele adres, maar alleen de hogere adresbits.
De lagere adresbits kiezen de cachelocatie, zoals bij gewoon geheugen.
Voordeel te maken met snel standaard gehuegen.
Nadeel: een geheugenlocatie kan maar op een cahcelokatie terecht komen.
- associatieve cache
Gebaseerd op associatief geheugen. Een locatie wordt geselecteerd op inhoud
(in ons geval een adres) als dit aanwezig is verschijnen de met dit adres
geassocieerde tagbits (de data) op de uitgang.
Voordeel: optimaal gebruik van geheugenlocaties.
Nadeel: duur associatief geheugen.
- setassociative cache een combinatie van bovenstaande technieken.
Combineert beide voordelen in zekere mate.
Voor meer info lees ook in Computersystemen en -netwerken het stukje over
cache geheugen.
Verrder is van belang het repalcement algoritme (wat te doen als de cache vol is). Gebuikelijk is LRU of bij direct mapping cache geen keuze mogelijk.
Ee tweede aspect is schrijven in geheugen wat gecached is.
Write through en write back (write deferred) zij twee mogelijkheden.
Om de pipeline optimaal te laten functioneren is sprongvoorspelling
belangrijk. Bij een pijplijn moet de reeks instructies bekend zijn.
Het gaat hierbij om conditionele sprongen (voorwaardelijke
sprongen). Van deze sprongen is niet op voorhand bekend of ze al dan niet genomen
gaan worden.
Er zijn twee mogelijkheden:
- statische sprongvoorspelling
- dynamische sprongvoorspelling
Bij statische sprongvoorspelling kan de compiler gebruik maken van informatie
over het te verwachten spronggedrag.
Bij dynamische sprongvoorspelling wordt tijdens het uitvoeren van een programma
de voorspelling gedaan. Dit kost extra hardware en die bestaat dan
onder meer uit een spronghistory tabel, waarin met een of meer bits per
sprongadres wordt bijgehouden of de sprong de vorige keer wel of niet uitgevoerd is.
Een tweede probleem bij pipelining is het gebruik van CPU resources
met name registers.
Belangrijke begrippen die hiermee samenhangen zijn:
- RAW-afhankelijkheid (Read after Write)
- Scorebord (overzicht van gebruik van resources)
- Herbenoemen van registers (mogelijke oplossing voor afhankelijkheden)
- Out of order execution (volgorde van instructies wijzigen voor betere
pipelining)
Elementaire blokken zijn verzamelingen van isntructies die
spronvrij zijn dus een ingang en een uitgang kennen.
Het uitvoeren van code voordat bekend is of deze echt nodig is heet speculatieve
uitvoering.
Een probleem dat daarbij kan optreden is dat er een trap of fout ontstaat
die niet echt van toepassing zal blijken te zijn. Een mogelijke oplossing
hiervoor het het poison bit.
Samenvatting COSY2
This document was generated using the
LaTeX2HTML translator Version 2002 (1.62)
Copyright © 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999,
Ross Moore,
Mathematics Department, Macquarie University, Sydney.
The command line arguments were:
latex2html -split 2 tan4.tex
The translation was initiated by Leo van Moergestel on 2003-05-11
Leo van Moergestel
2003-05-11