[Main] [Docs] [Installs] [Search] [Team] [Guestbook] [Links]

CPU Cache Overzicht

Om de prestatie te verbeteren, kunnen sommige CPU's van de 68000 familie de geheugen toegangen cachen.
De Caches worden altijd geschreven met logische adressen, inclusief de functie code van de toegang. Dat betekent dat toegangen in UserMode en SupervisorMode verschillende Cache notities maken (lees de Motorola documentatie voor meer informatie).

Hier volgt een overzicht van de mogelijkheden van caches van de 68000 familie processoren:

Cache management in WHDLoad

Het eerste belangrijke ding is om te begrijpen dat de caches op; 68030, 68040 en 68060 gestuurd worden door de CacheControlregister (CACR) en de MMU!
In de CACR zullen de caches globaal in en uitgeschakeld zijn. Met de MMU worden single pagina`s (4 KByte met WHDLoad) gemarkeerd hoe ze gecached kunnen worden.
Op de 68030 kan een geheugen pagina wel of Niet te Cache zijn. Op een 68040/68060 kan het cachable WriteThrough, cachable CopyBack, niet mogelijk te Cache (Imprecise) of niet mogelijk cache Serialized (Precise) te zijn.

Als de MMU niet gebruikt wordt door WHDLoad, bestuurd het alleen de CACR.

Standaard Cache Setup

Standaard zijn de gebieden van WHDLoad, de Slave en ExpMem gemarkeerd als cacheable CopyBack. Het BaseMem gebied is gemarkeerd als niet mogelijk te Cache, en de Data en Instructie -Cache zijn ingeschakeld in de CACR. Zodat het programma aanwezig in het BaseMem gebied kan werken zonder Caches, maar WHDLoad, de Slave en ExpMem gebruiken Caches om de beste prestatie te geven. Als de MMU niet gebruikt word door WHDLoad dan worden beide caches uitgezet, omdat zonder de MMU er geen meerdere programma`s in het geheugen met verschillende Cache instellingen kunnen werken en daarom moet als het gebied is gemarkeerd als NonCacheable alle caches uitgezet worden.

Programmeurs Cache Regelen

Er zijn twee resload functies om de Caches te besturen: resload_SetCACR en resload_SetCPU. De resload_SetCACR is de oudere routine en kan helemaal vervangen worden door resload_SetCPU (WHDLoad verwerkt intern de argumenten van resload_SetCACR en roept op resload_SetCPU). Maar hoe dan ook, het gebruik van resload_SetCACR is aanbevolen voor alle mensen die geen verstand hebben van Caches en hun werking in een Amiga systeem. Gebruik resload_SetCACR om de data cache apart aan te zetten of uit te zetten. resload_SetCACR heeft alleen invloed op de cache mogelijkheid van de BaseMem gebied.

Gebruikers Cache Regelen

Als de programmeur goed werk heeft geleverd dan hoeft de gebruiker niets te doen betreffend tot Caches omdat alle benodigde instellingen al gemaakt zijn door de Slave.
Niettemin kunnen er twee redenen zijn om handmatig de Cache instellingen te veranderen. ten eerste om een install werkend te krijgen welke problemen geeft omdat het te snel draait (bijv. maken van grafische fouten) en ten tweede om een geïnstalleerd programma sneller te maken.

Om een programma dat steeds vastloopt werkend te krijgen kan NoCache worden gebruikt. Deze optie schakelt alle caches uit en markeert alle geheugen als niet mogelijk te Cache Serialized (precies). Als de computer 32-bit ChipGeheugen heeft zal het nog steeds sneller zijn dan een originele A500.

Om een geïnstalleerd programma sneller te maken kunnen sommige opties worden ingesteld welke de Cache inschakelt. Dat zal de instellingen overschrijven door de Slave. Op de 68020 kan de optie Cache ingeschakeld worden. Op de 68030 kan ook de optie DCache gebruikt worden dat de Cache optie bevat. Op de 68060 zijn er nog wat meer opties: BranchCache, StoreBuffer en SuperScalar. De optie ChipNoCache/S kan de prestaties verbeteren op de 68040 en 68060, zie hieronder.

cache mogelijkheid van het ChipGeheugen

De cache mogelijkheid en de MMU instellingen kan niet alleen ingesteld worden door de CPU zelf (CACR) maar ook via externe hardware. De CPU signaleert op de bus of er poging tot een toegang voor te cachen gedaan word. En een externe hardware kan de CPU een sein geven (nadat een adres is ingevoerd in de adresbus tijdens een geheugentoegang) dat de toegang niet gecached moet worden.
Het mechanisme dat hardware signalen geeft aan de CPU dat geheugen niet cacheable is of helemaal niet gebruikt word (AFAIK) Amigas en CPU-Kaarten die CPU's >= 68030 bevatten (omdat ze een datacache hebben). Het hele Chipgeheugen en IO-Space (CIA/Custom/RTC) worden beïnvloed en welke niet gecached mogen worden door de datacache. Dit is nodig om cache inconsistenties te voorkomen, bijvoorbeeld DMA activiteiten.
De reactie van de CPU op een hardware afwijzing van een mogelijke cache toegang varieert op verschillende processoren. Op de 68030 is er geen impact op de prestatie van de toegang, de data wordt simpel niet gecached. Op de 68040 worden leestoegangen uitgevoerd in volle snelheid maar schrijftoegangen (CopyBack) worden gestopt en herstart zonder cache mogelijkheid, wat resulteert in ongeveer 5 keer (ligt aan de hardware en de CPU snelheid) langzamere toegang vergeleken met een niet cacheable toegang. Op de 68060 worden lees en schrijf -toegangen gestopt en herstart. Leestoegangen worden ongeveer drie keer langzamer en schrijf toegangen tot ongeveer 5 keer.
De genoemde problemen zijn gerelateerd aan datatoegangen. Instructietoegangen worden meestal niet beïnvloed en ook cacheable binnen het ChipGeheugen. Er is wat (misschien gebroken) hardware welke niet toestemming geeft om instructies te cachen in het ChipGeheugen. Met zulke hardware moet de optie ChipNoCache/S gebruikt worden om een grote vertraging in de uitvoerbare snelheid te voorkomen omdat ergens anders instructie toegangen 2 keer langzamer worden.
Dit gedrag kan gecontroleerd worden met het uitvoeren van de Speed.Slave dit bestand bevind zich in de src/memory-speed directory van het developer-archief.

Burst Mode

De Burstmode op de 68030 verteld de processor om altijd een volle cachelijn (16 bytes) te lezen als een cache mis loopt inplaats van alleen het longword welke opgevraagd was. De Burstmode moet ondersteund zijn door de hardware, als er geen burst ontstaat zonder tijd verlies. De Burstmode kan apart geactiveerd worden voor de instructie en data -cache. Omdat een Burst toegang langer nodig heeft dan een enkele toegang, de Burstmode geeft daarom alleen een prestatie verbetering als de meeste invoer in de cachelijnen zijn gebruikt voordat de cachelijnen overschreven worden. Voor de instructie-cache geeft de Burstmode meestal een prestatieverbetering. Voor de datacache meestal alleen in scenarios waar op 1 volgende geheugenplaatsen gelezen worden. WHDLoad activeert de instructieBurst samen met de instructiecache beginnend van versie 18.0. De data Burst wordt niet geactiveerd door WHDLoad.

Schrijf Toewijzing

De Schrijf Toewijzing bestuurt de cache afhandeling op de 68030 wanneer een cache gemist plaatsvindt tijdens het schrijven. Schrijf Allocatie moet ingeschakeld zijn wanneer delen van het geïnstalleerde programma draaien in Gebruikers Mode. Als het geïnstalleerde programma draait in alleen Supervisor Mode kan Schrijf Allocatie uitgeschakeld zijn, wat een kleine prestatie voordeel geeft.

Branch Cache

De Branch Cache is alleen beschikbaar in de 68060. Het is een soort van instructie cache voor branch instructies. Maar in verschil tot de instructie cache is het niet beïnvloed door de MMU setup! Dat betekend dat zelfs als het geschikte geheugenPagina is gemarkeerd als geen Cache mogelijkheid, worden branch instructies gecached als de Branch Cache is ingeschakeld.


Lees de Motorola Microprocessors Gebruikers Handleiding voor meer informatie. Als u correcties of aanvullende informatie heeft voor deze pagina Email mij alsublieft.
[Main] [Docs] [Installs] [Search] [Team] [Guestbook] [Links]