Lesing i arbeidslager blir gjort både for å hente inn neste instruksjon og når en instruksjon leser en operand (et dataord) i arbeidslager. Dataordet har en adresse. Hvis dataordet finnes i cache leses det derfra, hvis ikke hentes det i arbeidslager. Testen på om ordet finnes i cache og forberedelsen til lesing i arbeidslager foregår parallelt, slik at en ikke mister tid.
Når ordet ikke finnes i cache blir en ny cachelinje som inneholder det adresserte ordet lastet inn. En cachelinje inneholder et antall ord etter hverandre, for eksempel 4 eller 8. Den gamle cachelinjen blir overskrevet. Dette åpner også for mer effektiv bruk av buss og arbeidslager, per ord er det mer effektivt å overføre etterfølgende ord enn vilkårlig adresserte enkeltord. Cachelinjen må ha et dataord som inneholder arbeidslageradressen til første ord i den aktuelle cachelinjen.
Cachelageret er mye mindre enn arbeidslageret, og det er bare de sist brukte dataordene som får plass i cache. Testen på om et ord finnes i cache må ta liten tid. En enkel metode er å dividere arbeidslageradressen med cachelagerets størrelse, og bruke divisjonsresten som adresse i cachelageret. Når cachelagerstørrelsen er en potens av 2 – 2k, betyr det at cachelageradressen utgjøres av de siste k bit i arbeidslageradressen. En cachelinje består av 2m byte, den aktuelle cachelinjeadresse blir da de siste k bit i arbeidslageradressen, derav strykes de siste m bit.
Kommentarer
Kommentaren din publiseres her. Fagansvarlig eller redaktør svarer når de kan.
Du må være logget inn for å kommentere.