[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:

Cache management ve WHDLoad

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]