[Main]
[Docs]
[Installs]
[Search]
[Team]
[Guestbook]
[Links]
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á instrukci následuje smyčka DBcc,
která je "zasmyčkována" na předchozí instrukci; žádná
další instrukce není prefetchována dokud smyčka neskončí.
- 68020
- Instruction Prefetch
jeden longword
- Instruction Cache
16 řádek á 16 bajtů = 256 bajtů
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
Burst mód přinutí načíst celé řádky z cache najednou, pokud to podporuje hardware
- 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 mód, aby donutil zápisové operace v uživatelském/supervizor vstupech hlásit se jako závadné
Burst mód nutí celé řádky z cache načíst se najednou, pokud to podporuje hardware
- 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ádnány Cache Control registrem (CACR) a 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 NonCacheable. Na
68040/68060 může být cachable WriteThrough, cachable CopyBack, NonCacheable
(imprecise) 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, slave a ExpMem využívají cache pro nejlepší výkon.
Pokud WHDLoad nepoužívá MMU, nastaví se setup s vypnutými cache, protože bez MMU
by nebylo možné nakonfigurovat odlišné nastavení pro odlišné oblasti paměti
a tím pádem, pokud je některá oblast paměti označená jako NonCacheable,
musí se vypnout všechny cache.
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 ChipNoCache/S může vylepšit výkon na 68040 a 68060,
viz níže.
Toto chování se může vyzkoušet spuštěním Speed.Slave ve složce
src/memory-speed developerského archívu.
Burst Mode
Burst mód na 68030 říká CPU, aby načetlo plnou cache řádku (16 bajtů),
pokud se neobjeví požadovaný long word. Burst mód musí být podporován
hardwarem, pokud není, Burst se nepřihodí bez časového postihu.
Burst mód může být zapnut zvlášť pro instrukční a zvlášť pro data cache.
Protože přístup k Burst trvá déle než jednoduchý přístup, Burst mód
dává výhodu ve výkonu jen když je většina vstupů v cache řádce použita
předtím než se cache spláchne. U instrukční cache Burst mód obvykle
výkon vylepší, pro data cache často jen v případech, kdy se načítá
z konsekutivní paměti. WHDLoad zapne instrukční burst společně s instrukční
cache od v18.0. Data Burst mód WHDLoad nezapíná.
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.
[Main]
[Docs]
[Installs]
[Search]
[Team]
[Guestbook]
[Links]