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

CPU Cache Overblik

For at øge ydelsen er nogle CPU'er i 68k familien i stand til at cache hukommelses adgangen.
Cachen bliver altid refereret ved at bruge logiske adresser, inklusiv adgangens funktions kode. Dette betyder at adgang i bruger mode og supervisor mode vil oprette forskellige Cache opslag (konsulter venligst Motorola dokumentationen for mere info).

Her følger et overblik over mulighederne i caching på 68k CPU'erne:

Cache håndtering i WHDLoad

Det vigtigste er at forstå at cachen på 68030..68060 kontrolleres af Cache Control Registeret (CACR) og MMU (forudsat at WHDLoad bruger og kontrollerer MMU)!
I CARC bliver cacherne global slået til eller fra. Ved at bruge MMU single Pages (4 KByte with WHDLoad) vil de blive markeret hvordan de kan caches.
På 68030'eren kan en memory page være Cacheable eller NotCacheable. På en 68040/68060 kan den være cachable WriteThrough, cachable CopyBack, NonCachable (upræcis) eller NonCachable Serialized (præcis).

Hvis MMU ikke bruges af WHDLoad, kontrollerer den kun CACR.

Default Cache Setup

Som standard bliver WHDLoad, Slaven og ExpMem områderne markeret som cacheable CopyBack. BaseMem området er markeret som NonCachable, og Data og Instruction Cache er slået til in CACR. Så programmet i BaseMem områderne kører uden Cache men WHDLoad, Slaven og ExpMem bruger Cachen for optimal ydeevne. Hvis WHDLoad ikke bruger MMU'en vil det resultere i at begge cache bliver slet fra fordi uden MMU vil et andet setup med andre hukommelses regioner ikke kunne konfigureres og derfor vil alle caches blive slet fra hvis der er nogle regioner der er markeret som NonCacheable.

Programmørernes Cache Control

Der er to resload funktioner til at kontrollere cacherne.: resload_SetCACR og resload_SetCPU. Resload_SetCACR er historiks set den ældste rutine og kan fuld ud erstattes af resload_SetCPU (WHDLoad kæder internt argumenterne fra resload_SetCACR og kalder resload_SetCPU). Alligevel anbefales det at bruge resload_SetCACR hvis man ikke ved alt om cache'r og deres opførsel i et Amiga system. Ved brug af resload_SetCACR kan instruktions og data cachen blive slået til og fra uafhængigt af hinanden. resload_SetCACR berører kun cache muligheden af BaseMem området.

Bruger Cache Kontrol

Hvis programmøren har gjort et godt arbejde skal brugeren ikke røre cachen da al nødvendig opsætning allerede er gjort af Slaven.
Ikke desto mindre er der to grunde for manuelt at ændre Cache opsætningen. For det første for at f en installation til at virke der har problemer fordi den køre for hurtigt (f.eks. genererer grafik fejl) og for det andet for at få et installeret program til at køre hurtigere.

For at få et program der går ned til at virke kan valgmuligheden NoCache bruges. Denne valgmulighed slår alle cache fra og markerer all hukommelse som NonCachable Serialized (præcis). Hvis maskinen har en 32-bit Chip-Memory vil den satdig være hurtigere end en original A500.

For at få et installeret program til at køre hurtigere kan der ændres i nogle opsætningsmuligheder som slar cache til. Dette vil overskrive opsætningen fra Slave'n. På 68020 kan valgmuligheden Cache blive slået til. På 68030 kan valgmuligheden DCache blive slået til. Denne inkluderer også option Cache. På 68060 er der lidt flere muligheder: BranchCache, StoreBuffer og SuperScalar. Valgmuligheden ChipNoCache/S kan øge ydelsen på 68040 og 68060, se herunder.

Chip-Memory mulighed for caching

cache muligheden kan ikke kun sættes af CPU'en selv (CARC) og MMU opsætningen men også ekstern hardware. CPU'en signalerer på bussen hvis den prøver at cache en tilgang. Og en ekstern hardware kan signalere CPU'en (efter en addresse er tilføjet addresse bussen under en hukkomelses tilgang) at en tilgang ikke må blive cachet.
Mekanismen som hardware signalerer CPU'en at hukommelse ikke er cachebar eller ikke bliver brugt på alle (AFAIK) Amiga'er og CPU-kort indeholdende CPU'erne >= 68030 (fordi de har data cache). Berørt er hele Chip-hukkommelses og IO-Space (Cia/Custom/RTC) som ikke må blive cached af data cachen. Dette er nødvendigt for at forhindre cache inkonsistens, bl.a. p.g.a. DMA aktivitet.
CPU'ens reaktion når et hardware afviser en cache adgang varierer på de forskellige CPU'er. På 68030 berører det ikke tilgangs ydelsen, data vil simpelthen ikke blive cachet. På 68040 vil læse adgang blive udført i fuld hastighed men skrive adgang (CopyBack) vil blive afbrudt og genstartet uden cachmuligheder som resulterer i ca 5 timers (afhængig af hardware og CPU hastighed). Langsommere adgang sammenlignet med en ikke cachemulig adgang. På 68060 vil læse og skrive adgang blive afbrudt og genstartet. Læse adgang vil være omkring 3 gange langsommere og skrive adgang 5 gange.
De nævnte emner er relateret til data adgang. Instruktions adgange er normalt ikke berørt og også cachemulige inde i Chip-Memory. Der er noget (måske ødelagte) hardware som ikke tillader at instruktioner bliver cachet i Chip-Memory. På sådannet hardware bør muligheden ChipNoCache/S blive brugt for at undgå hele systemet bliver langsomt i eksekverings hastighed da instruktions adgang vil være omkring 2 gange så langsom.

Du kan teste denne opførsel ved at køre Speed.Slave som er indeholdt i src/memory-speed folderen i udvikler arkivet.

Write Allocation

Skrive allokerings kontrollerer cachen på 68030 når en cache fejler sker der en skrive operation. Skrive allokering skal være slået til når dele af det installerede program kører i User Mode. Hvis det installerede program kun kører i Supervisor Mode kan Write Alloction blive slået fra, som måske giver en minimalt ydelses fordel.

Branch Cache

Branch Cache er kun tilgængelig på 68060. Det er en form for instruktions cache for branch instruktioner. Men i modsætning til instruktions cache bliver den ikke berørt af MMU opsætningen! Dette gælder også selvom den tilhørende memory Page er markeret som Non Cacheable, branch instructions vil blive caced hvis Branch Cache er slået til.


Læs Motorola Microprocessors Bruger Manualen for videre information. Hvis du har rettelser eller tilføjelser til denne side contact mig.
[Main] [Docs] [Installs] [Search] [Team] [Guestbook] [Links]