• No results found

Organisatievormen

In document Voorwoord bij de eerste uitgave (pagina 83-87)

2.11 Voorgeheugens

2.11.2 Organisatievormen

In het voorgeheugen wordt dus een kopie bijgehouden van een deel van het hoofdgeheugen.

Om maximaal van het lokaliteitsprincipe te kunnen profiteren worden bij een misser ook de naburige geheugenregisters opgehaald. Zowel het voorgeheugen als het hoofdgeheugen wor-den daarom opgedeeld in regels; de grootte van zo’n regel wordt regellengte genoemd en bedraagt typisch 8 tot 32 bytes. Alleen volledige regels worden in het voorgeheugen geplaatst.

Veronderstel dat we op de DRAMA-machine een voorgeheugen voorzien van 100 geheugenre-gisters (met adressen 00 t.e.m. 99). De regellengte is 10, d.w.z. dat we telkens 10 opeenvol-gende geheugenregisters uit het hoofdgeheugen ophalen en deze in het voorgeheugen plaatsen.

De verschillende regels zijn met een verschillende achtergrond weergegeven: regel 0 begint op adres 00 en eindigt op adres 09, regel 1 begint op adres 10 en eindigt op adres 19, enz.

Bij elk voorgeheugen hoort boekhoudkundige informatie, die aangeeft (a) of een bepaalde regel in het voorgeheugen een kopie van het hoofdgeheugen bevat (zie “Geldig?”: 1 betekent waar; 0 is onwaar, d.w.z. deze regel bevat geen kopie van het hoofdgeheugen), en zo ja (gel-dig): (b) welke regel uit het hoofdgeheugen in deze regel gekopieerd is (dit wordt aangeduid in het label-veld; zie verder).

Er bestaan drie manieren om regels uit het hoofdgeheugen toe te wijzen naar plaatsen in het voorgeheugen:

elke regel heeft een vaste plaats in het voorgeheugen (direct afgebeeld voorgeheugen),

elke regel kan op elke plaats in het voorgeheugen voorkomen (associatief voorgeheugen),

elke regel kan op enkele plaatsen in het voorgeheugen voorkomen (set-associatief voorge-heugen).

2.11 Voorgeheugens

76

Direct afgebeeld voorgeheugen

Elk geheugenblok heeft een vaste plaats in het voorgeheugen. Figuur 2-67 illustreert dit. Elk blok stelt een regel voor. De achtergrondkleur van elke regel in het hoofdgeheugen komt over-een met de achtergrondkleur van zijn vaste plaats in het voorgeheugen.

De meeste voorgeheugens zijn van dit type. Het is eenvoudig te implementeren en men kan zeer gemakkelijk nagaan of een regel al dan niet in het voorgeheugen zit. Het adres van het te lezen geheugenregister wordt in drie delen opgedeeld: het tweede deel (het groepnummer) bepaalt op welke plaats in het voorgeheugen de regel geplaatst moet worden. Indien de Geldig-bit op 1 staat, moet het label vergeleken worden met het eerste deel van het adres. Zijn ze gelijk, dan hebben we een treffer, en bepaalt het laatste deel van het adres welk deel van de regel uit het voorgeheugen moet opgehaald worden. Zijn ze verschillend of staat de Geldig-bit op 0, dan hebben we een misser, en zal de betreffende regel vervangen worden door de beno-digde regel uit het hoofdgeheugen op te halen.

Een belangrijk nadeel van direct afgebeeld voorgeheugen is dat het voorgeheugen onmogelijk twee verschillende regels van dezelfde groep kan bijhouden. Bijvoorbeeld, stel dat het pro-gramma een lus uitvoert met instructies die zich in geheugenregisters met adressen 0100..0105 bevinden, en dat deze instructies gegevens nodig hebben uit geheugenregisters met adressen 0200..0203, dan zal de eerste regel in het voorgeheugen voortdurend moeten vervangen wor-den. Het spreekt vanzelf dat we in dat geval beter af waren zonder voorgeheugen: nu worden immers voor elke misser telkens 10 geheugenregisters opgehaald uit het geheugen, i.p.v. één!

0000..0009

Groep: bepaalt “regel” in een blok Voorgeheugenadres

0 8

breedte: 10 Geldig?

Label

Label: geeft aan over welke specifieke regel het gaat Nummer van geheugenregister in een regel Groep

FIGUUR 2-67. Direct afgebeeld voorgeheugen.

2.11 Voorgeheugens

Associatief voorgeheugen

Hier kan een regel uit het hoofdgeheugen om het even waar in het voorgeheugen geplaatst wor-den. Elke regel zal dus een uniek labelveld moeten hebben. De eerste drie cijfers van het adres zijn uniek voor elke regel. Zie ook figuur 2-69 (pag. 78).

Het labelveld (de eerste drie cijfers) uit het adres moet nu met alle labels die in de aanwezig-heidslijst van het voorgeheugen staan vergeleken worden om na te gaan of de gezochte regel ergens in het voorgeheugen aanwezig is. De vergelijking gebeurt gelijktijdig en incrementeel, anders zou er teveel tijd verloren gaan: eerst wordt het eerste cijfer vergeleken, daarna het tweede cijfer, enz. Zie ook figuur 2-68. In een binaire computer gebeurt de vergelijking bit per bit. Na elke stap vallen een aantal mogelijke kandidaten weg. Op het einde houden we ofwel nog één kandidaat (treffer) over ofwel geen enkele meer (misser). Bij een misser zal de nodige regel uit geheugen gehaald worden en ergens in het voorgeheugen geplaatst worden. Waar-schijnlijk zal hierdoor een andere regel moeten vervangen worden. Hiervoor kunnen verschil-lende strategieën gebruikt worden. Bijvoorbeeld, wordt de regel die al het langst niet meer gebruikt is vervangen (is niet zo eenvoudig te implementeren), of de regel die al het langst in het voorgeheugen zit (is zeker niet de beste strategie), of gewoon een willekeurig gekozen regel, ...

Associatieve voorgeheugens zijn de duurste, en leveren daarom niet altijd betere prestaties dan direct afgebeelde voorgeheugens. Immers een slimme vertaler kan er voor zorgen dat instruc-ties en gegevens zodanig in het geheugen geplaatst worden dat er weinig conflicten optreden (de vertaler zorgt er bijvoorbeeld voor dat de instructies en de variabelen die ze nodig hebben niet in dezelfde groep zitten).

1

FIGUUR 2-68. Het gelijktijdig vergelijken van de labels (cijfer per cijfer).

2.11 Voorgeheugens

78

Set-associatief voorgeheugen

Dit is een compromis tussen de twee vorige technieken. Elke regel uit het hoofdgeheugen kan nu op enkele verschillende plaatsen (bijvoorbeeld 2 of 4) in het voorgeheugen gebracht wor-den, maar niet om het even waar1. Het adres bepaalt dus in welke deelverzameling (set) van het voorgeheugen de regel geplaatst mag worden. Eenmaal de deelverzameling bepaald is (vaak 2 of 4 plaatsen), moet de hardware slechts een beperkt aantal labels vergelijken. Zie figuur 2-70:

het voorgeheugen hebben we verder onderverdeeld in 5 deelverzamelingen (sets). De achter-grondkleur geeft aan waar elke lijn uit het hoofdgeheugen in het voorgeheugen geplaatst kan worden.

Merk op dat indien adressen binair geschreven worden, het labelnummer en het setnummer strikt gescheiden zijn. Hier zijn we verplicht om het cijfer waarvan het set-nummer is afgeleid (door de rest bij deling door 5 te berekenen) toch op te nemen in het labelveld.

1. Indien een regel op n verschillende plaatsen in het voorgeheugen kan geplaatst worden, spreekt men van een n-weg set-associatief voorgeheugen.

Label: geeft aan over welke regel van het hoofdgeheugen het gaat Nummer van het geheugenregister in een regel

FIGUUR 2-69. Associatief voorgeheugen.

2.11 Voorgeheugens

In document Voorwoord bij de eerste uitgave (pagina 83-87)