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:
- 68000
Ingenting
- 68010
- Instruktions Prehentning
to ords prehentning, ét ords dekodnings register
- Loop Mode
entreres når et en ords instruktion følges a et DBcc, Der hentes ikke flere instruktioner indtil loppet slutter
- 68020
- Instruktions Prehentning
et langt ord
- Instruktions Cache
16 linier á 16 byte = 256 byte
kan tændes eller fryses via CACR'en
- 68030
- Instruktion Prehentning
et langt ord
- Instruktions Cache
16 linier á 16 byte = 256 byte
kan tændes eller fryses via CACR'en
- Data Cache
16 linier á 16 byte = 256 byte
kan tændes eller fryses via CACR'en
altid WriteThrough
valgbar skrive allokerings metode
- 68040
- Instruktions Prehentning
et langt ord
- Instruktions Cache
256 linier á 16 byte = 4096 byte
kan tændes eller fryses via CACR'en
- Data Cache
256 linier á 16 byte = 4096 byte
kan tændes eller fryses via CACR'en
valgbare metoder CopyBack/WriteThrough via MMU
- 68060
- Instruktions Prehentning
et langt ord
- Instruktions Cache
512 linier á 16 byte = 8192 byte
Kan startes, fryses eller reduceres til det halve via CACR'en
- Branch Cache
kan tændes eller fryses via CACR'en
bliver ikke berørt af MMU setup!
- Superscalar Dispatch
Kan slås til via CARC'en
- Data Cache
512 linier á 16 byte = 8192 byte
kan tændes, fryses eller reduceres til halv størrelse via CACR'en
valgbare metoder CopyBack/WriteThrough via MMU
- Push Buffer
kan slås fra via PCR
- Store Buffer
kan slås til via CACR
Sider må ikke være NonCachable Serialiseret (præcis)
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
Ved 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 og Slaven bruger Cachen for optimal ydeevne.
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 ændre en installation 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 skal 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 også 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å a 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 activity.
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.