Přehled CPU Cache
(autor překladu se omlouvá za hrůznost některých technických slov v českém znění)
Aby se zlepšil výkon, některá CPU z řádu 68k jsou schopna cachovat přístup
k paměti.
Cache se vždycky používají přes logické adresy, včetně funkčního kódu
pro přístup. To znamená, že přístupy v uživatelském módu a supervizoru vytvoří
odlišné vstupy do Cache (pro více informací vyhledejte dokumentace Motoroly).
Následuje přehled CPU 68k:
- 68000
žádná
- 68010
- Instruction Prefetch
dvouwordový prefetch, jednowordový dekódovací register
- Loop Mode
vzniká, pokud jednowordová instrukce následuje smyčkou DBcc, žádná
další instrukce není prefetchována dokud smyčka neskončí.
- 68020
- Instruction Prefetch
jeden longword
- Instruction Cache
16 lines á 16 byte = 256 bytes
může být aktivována nebo vypnuta přes CACR
- 68030
- Instruction Prefetch
jeden longword
- Instruction Cache
16 lines á 16 byte = 256 byte
může být aktivována nebo vypnuta přes CACR
- Data Cache
16 lines á 16 byte = 256 byte
může být aktivována nebo vypnuta přes CACR
vždy WriteThrough
volitelný Write Allocation mod
- 68040
- Instruction Prefetch
jeden long word
- Instruction Cache
256 lines á 16 byte = 4096 byte
může být aktivována přes CACR
- Data Cache
256 lines á 16 byte = 4096 byte
může být aktivována přes CACR
volitelné módy CopyBack/WriteThrough via MMU
- 68060
- Instruction Prefetch
jeden long word
- Instruction Cache
512 lines á 16 byte = 8192 byte
může být aktivována, vypnuta nebo redukována na půl přes CACR
- Branch Cache
může být aktivována přes CACR
neovlivňována MMU setupem!
- Superscalar Dispatch
může být aktivována přes CACR
- Data Cache
512 lines á 16 byte = 8192 byte
může být aktivována, vypnuta nebo redukována na půl přes CACR
volitelné módy CopyBack/WriteThrough přes MMU
- Push Buffer
může být vypnuta přes PCR
- Store Buffer
může být aktivována přes CACR
Stranky nesmi byt NonCachable Serialized (precise)
První důležitá věc je pochopit, že cache na 68030..68060 jsou ovládány
přes Cache Control Register (CACR) a the MMU
(berte v úvahu, že WHDLoad používá a ovládá MMU)!
V CACR budou cache globálně zapnuty nebo vypnuty. Používáním stránkování
MMU (4 KBytes s WHDLoadem) bude určeno, jak mají pracovat.
Na 68030 může být paměťová stránka Cacheable nebo NotCacheable. Na
68040/68060 může být cachable WriteThrough, cachable CopyBack, NonCachable
(impercise) nebo NonCachable Serialized (precise).
Standartní setup cache
Ve WHDLoad jsou standartně slave a ExpMem označeny jako cachovatelná
CopyBack. BaseMem oblast je označena jako necachovatelná a datová
a instrukční cache jsou zapnuty v CACR. Takže program v BaseMem oblasti
běží bez cache, ale WHDLoad a slave používají cache pro nejlepší výkon.
Jestliže WHDLoad nepoužívá MMU, ovládá Cache jenom přes CACR.
Programátorská kontrola cache
Jsou dvě resload funkce na ovládání cache: resload_SetCACR a resload_SetCPU. Resload_SetCACR je stará
rutina a resload_SetCPU ji může plně nahradit. (WHDLoad interně mapuje parametry
resload_SetCACR a volá resload_SetCPU).
Kazdopádně, použití resload_SetCACR se doporučuje pro všechny, kdo nic neví
o cache a jejich chování v Amiga systému. Používáním resload_SetCACR mohou být
vypnuty nebo zapnuty instrukční a datové cache. resload_SetCACR ovlivňuje pouze
cachovatelnost BaseMem paměti.
Ovládaní cache uživatelem
Jestliže programátor odvedl dobrou práci, uživatel se nemusí o cache nijak starat,
protože všechno zařídí setup slavu.
Ale mohou se vyskytnout dva důvody pro změnu setupu cache. První je zpojízdnit
instalačku, která má nějaké problémy, protože běží příliš rychle (např. grafické
chyby) a druhý je urychlit nainstalovaný program.
K lepší funkci problematického programu je tu volba NoCache.
Tato volba vypne všechny cache a označí pamět jako necachovatelnou Serialized.
Pokud má ale stroj 32-bitovou Chip RAM, bude pořád ještě rychlejší než původně na A500.
K urychlení programu můžete nastavit volby pro zapínání cache. Ty mají větší
prioritu nad setupem slave. Na 68020 může být použita volba Cache.
Pro 68030 je volba DCache, kterou ale volba Cache zahrnuje
také. Pro 68060 existuje víc voleb: BranchCache,
StoreBuffer a SuperScalar.
Volba NoChipCache/S může vylepšit výkon na 68040 a 68060,
viz níže.
Write Allocation
Write Allocation kontroluje ovladaní cache na 68030, když se přihodí selhaní cache
při zápisu. Write Allocation musí být zapnuta, když části nainstalovaného programu běží
v uživatelském módu. Pokud nainstalovaný program běží jenou v supervizor módu,
může být Write Allocation vypnuta, což je minimální výhoda pro výkon.
Branch Cache
Branch Cache je pouze na 68060. Je to druh instrukční cache pro branch instrukce.
Ale narozdíl od instrukční cache není ovlivňovatelná MMu setupem! To znamená,
že i když je stránka paměti označena jako necachovatelná, branch instrukce budou
cachovány, pokud je zapnuta Branch Cache.
Přečtěte si Motorola Microprocessors User Manualy pro další informace.
Jestli protestujete nebo chcete něco dodat, pište mi na e-mail.