[Main]
[Docs]
[Installs]
[Search]
[Team]
[Guestbook]
[Links]
Prehľad CPU Cache
Niektoré procesory z radu 68k sú schopné
používať cache počas prístupu k pamäti, čo zlepšuje výkon.
Na cache sa vždy odkazuje pomocou logických adries, vrátane funkčného kódu pre
prístup. To znamená, že prístupy v Užívateľskom móde a Supervisor móde budú
vytvárať odlišné cache položky do (pre viac informácií si preštudujte
dokumentáciu od Motoroly).
Nasleduje prehľad CPU 68k:
- 68000
žiadna
- 68010
- Instruction Prefetch
dvojwordový prefetch, jednowordový dekódovací register
- Loop Mode
vzniká, ak je jednowordová inštrukcia nasledovaná DBcc, žiadna ďalšia inštrukcia sa už neobjaví, kým sa cyklus neskončí
- 68020
- Instruction Prefetch
jeden longword
- Instruction Cache
16 lines á 16 byte = 256 bytes
môže byť aktivovaná alebo vypnutá cez CACR
- 68030
- Instruction Prefetch
jeden longword
- Instruction Cache
16 lines á 16 byte = 256 bytes
mmôže byť aktivovaná alebo vypnutá cez CACR
- Data Cache
16 lines á 16 byte = 256 bytes
môže byť aktivovaná alebo vypnutá cez CACR
vždy WriteThrough
voliteľný Write Allocation mód
- 68040
- Instruction Prefetch
jeden longword
- Instruction Cache
256 lines á 16 byte = 4096 bytes
môže byť aktivovaná cez CACR
- Data Cache
256 lines á 16 byte = 4096 bytes
môže byť aktivovaná cez CACR
voliteľné módy CopyBack/WriteThrough cez MMU
- 68060
- Instruction Prefetch
jeden longword
- Instruction Cache
512 lines á 16 byte = 8192 bytes
môže byť aktivovaná, vypnutá alebo redukovaná na polovicu cez CACR
- Branch Cache
môže byť aktivovaná cez CACR
nie je ovplyvniteľná cez MMU setup!
- Superscalar Dispatch
môže byť aktivovaná cez CACR
- Data Cache
512 lines á 16 byte = 8192 bytes
môže byť aktivovaná, vypnutá alebo redukovaná na polovicu cez CACR
voliteľné módy CopyBack/WriteThrough cez MMU
- Push Buffer
môže byť vypnutá cez PCR
- Store Buffer
môže byť aktivovaná cez CACR
Stránky nesmú byť nastavené ako NonCachable Serialized (precise)
Prvou dôležitou vecou je pochopenie, že cache na 68030..68060 je ovládaná
cez Cache Control Register (CACR) a MMU (za
predpokladu, že WHDLoad používa a ovláda MMU)!
V CACR budú Cache globálne zapnuté alebo vypnuté. Používaním stránkovania MMU
(4 KBytes s WHDLoad) bude určené, ako majú pracovať.
Na 68030 môže byť pamäťová stránka Cacheable alebo NotCacheable. Na 68040/68060
môže byť Cachable WriteThrough, cachable CopyBack, NonCachable (imprecise)
alebo NonCachable Serialized (precise).
Ak WHDLoad nepoužíva MMU, ovláda cache len CACR.
Štandardné nastavenie Cache
Štandartne sú oblasti programu WHDLoad, Slave a ExpMem označené ako Cachable CopyBack.
BaseMem oblasť je označená ako NonCachable a dátová a inštrukčná Cache sú zapnuté v CACR.
Takže program v BaseMem oblasti beží bez Cache, ale WHDLoad a Slave používajú Cache
na dosiahnutie najlepšieho výkonu.
Kontrola Cache programátorom
Existujú dve resload funkcie na ovládanie Cache a to:
resload_SetCACR a resload_SetCPU. Resload_SetCACR je historicky staršia
rutina a resload_SetCPU ju môže plne nahradiť. (WHDLoad interne mapuje argumenty resload_SetCACR
a volá resload_SetCPU). Každopádne, použitie resload_SetCACR sa doporučuje pre všetkých, ktorí
toho o správaní cache príliš nevedia. Používaním resload_SetCACR môžu byť jednotlivo vypnuté
alebo zapnuté inštrukčné a dátové cache. Resload_SetCACR ovplyvňuje len schopnosť používať
Cache BaseMem oblasti.
Kontrola Cache užívateľom
Ak programátor odviedol dobrú prácu, užívateľ sa nemusí o cache vôbec starať,
pretože všetko zariadi nastavenie Slave.
Môžu sa však vyskytnúť dva dôvody na zmenu nastavenia cache. Prvým je spojazdnenie
inštalačky, ktorá má nejaké problémy, pretože beží príliš rýchlo (napr. grafické chyby)
a druhým je urýchlenie nainštalovaného programu.
Na spojazdnenie inštalačky môže byť použitá voľba
NoCache. Táto voľba vypne všetky Cache a označí pamäť ako NonCachable Serialized.
Ak má ale stroj 32-bitovú Chip RAM, bude ešte stále rýchlejší než pôvodná A500.
Na urýchlenie programu môžete nastaviť niektoré voľby, ktoré cache zapnú. Tie majú väčšiu prioritu ako
nastavenie v Slave. Na 68020 môže byť použitá voľba Cache. Pre CPU 68030 je určená voľba
DCache ktorá je už ale obsiahnutá vo voľbe Cache
Pre 68060 existuje viac volieb: BranchCache,
StoreBuffer a
SuperScalar. Voľba ChipNoCache/S môže vylepšiť výkon na 68040 a 68060, pozri nižšie.
Použitie Cache na pamäť typu Chip
Použitie cache nemusí byť zapnuté len samotným
procesorom (CACR) a nastavením MMU, ale i externým hardvérom. CPU na
zbernici signalizuje, že sa pokúša použiť cache na prístupy. A externý hardvér
môže odpovedať (po tom, ako adresa bola počas pamäťového prístupu vložená
do adresy zbernice), že na tento prístup sa chache nesmie použiť. Tento
mechanizmus, kedy hardvér pre CPU signalizuje, či sa na danú pamäť dá použiť cache
alebo nie, je podľa mojich znalostí použitý na všetkých Amigách a doskách
s procesorom 68030 a vyšším (pretože tie majú dátovú cache).
Ovplyvnená je celá Chip pamäť a IO-Space (CIA/Custom/RTC), na ktorý však
nesmie byť použitá dátová cache. Toto je dôležite kvôli vyvarovaniu sa cache
nekozistencii, napríklad kvôli aktivite DMA.
Ak hardvér odmietne použitie cache, reakcia
procesoru je rôzna v závislosti na CPU. Na 68030 sa to neodrazí vo
výkonnosti, na dáta jednoducho nebude použitá cache. Na 68040 prístupy typu
read budú vykonávané v plnej rýchlosti, zatiaľ čo write prístupy
(CopyBack) budú zrušené a reštartované bez použitia cache. To sa prejaví
približne päťnásobným spomalením rýchlosti (závisí to na hardvéri
a rýchlosti CPU). Na 68060 budú zrušené a reštartované oba druhy
prístupov. Čítanie sa spomalí trikrát a zapisovanie päťkrát.
Spomenuté poznámky majú vzťah k dátovej
cache. Inštrukčné prístupy sú týmto procesom zvyčajne nedotknuté a je na
ne možné použiť cache i v rámci Chip pamäte. Existuje však hardvér
(pravdepodobne vadný), ktorý to nedovoľuje. Potom treba použiť voľbu ChipNoCache/S, pomocou ktorej sa vyhneme
výraznému spomaleniu chodu programu. V opačnom prípade budú inštrukčné
prístupy dvakrát pomalšie.
Toto správanie si môžete preveriť spustením Speed.Slave,
ktorý sa nachádza v src/memory-speed adresári v developerskom archíve.
Write Allocation
Write Allocation kontroluje ovládanie cache na
68030, keď sa prihodí zlyhanie cache pri zápise. Write Allocation musí byť
zapnutá, keď časti nainštalovaného programu bežia v Užívateľskom móde. Ak
nainštalovaný program beží v Supervisor móde, môže byť Write Allocation
vypnutá, čo poskytne jemné zvýšenie výkonu.
Branch Cache
Branch Cache je dostupná len na 68060. Je to druh inštrukčnej
Cache pre Branch inštrukcie. Ale na rozdiel od inštrukčnej Cache však nie je
ovplyvniteľná cez nastavenie MMU! To znamená, že i keď je zodpovedajúca stránka
pamäte označená ako NonCachable, na Branch inštrukcie bude vždy použitá cache
(ak je Branch Cache zapnutá).
Prečítajte si Motorola Microprocessors User
Manuals pre ďalšie informácie. Ak máte pripomienky, čo sa týka tejto stránky,
prosím píšte na e-mail.
Prípadné nejasnosti najprv konzultujte
s anglickým originálom. To platí pre väčšinu odborných statí tejto dokumentácie.
[Main]
[Docs]
[Installs]
[Search]
[Team]
[Guestbook]
[Links]