Prehled CPU Cache

(autor prekladu se omlouva za hruznost nekterych technickych slov v ceskem zneni) Aby se zlepsil vykon, nektera CPU z radu 68k jsou schopna cachovat pristup k pameti.
Cache se vzdycky pouzivaji pres logicke adresy, vcetne funkcniho kodu pro pristup. To znamena, ze pristupy v uzivatelskem modu a supervizoru vytvori odlisne vstupy do Cache (pro vice informaci vyhledejte dokumentace Motoroly).

Nasleduje prehled CPU 68k:

Cache management ve WHDLoad

Prvni dulezita vec je pochopit, ze cache na 68030..68060 jsou ovladany pres Cache Control Register (CACR) a the MMU (berte v uvahu, ze WHDLoad pouziva a ovlada MMU)!
V CACR budou cache globalne zapnuty nebo vypnuty. Pouzivanim strankovani MMU (4 KBytes s WHDLoadem) bude urceno, jak maji pracovat.
Na 68030 muze byt pametova stranka Cacheable nebo NotCacheable. Na 68040/68060 muze byt cachable WriteThrough, cachable CopyBack, NonCachable (impercise) nebo NonCachable Serialized (precise).

Standartni setup cache

Ve WHDLoad jsou standartne slave a ExpMem poznaceny jako cachovatelna CopyBack. BaseMem oblast je poznacena jako necachovatelna, a datova a instrukcni cache jsou zapnuty v CACR. Takze program v BaseMem oblasti bezi bez cache, ale WHDLoad a slave pouzivaji cache pro nejlepsi vykon.
Jestlize WHDLoad nepouziva MMU, ovlada Cache jenom pres CACR.

Programatorska kontrola cache

Jsou dve resload funkce na ovladani cache: resload_SetCACR a resload_SetCPU. Resload_SetCACR je stara rutina a resload_SetCPU ji muze plne nahradit. (WHDLoad interne mapuje parametry resload_SetCACR a vola resload_SetCPU). Kazdopadne, pouziti resload_SetCACR se doporucuje pro vsechny, kdo nic nevi o cache a jejich chovani v Amiga systemu. Pouzivanim resload_SetCACR muzou byt vypnuty nebo zapnuty instrukcni a datova cache. resload_SetCACR ovlivnuje pouze cachovatelnost BaseMem pameti.

Ovladani cache uzivatelem

Jestli programator odvedl dobrou praci, uzivatel se nemusi o cache nijak starat, protoze vsechno zaridi setup slavu.
Ale mohou se vyskytnout dva duvody pro zmenu setupu cache. Prvni je zpojizdnit instalacku, ktera ma nejake problemy, protoze bezi prilis rychle (napr. graficke chyby) a druhy je urychlit nainstalovany program.

K lepsi funkci problematickeho programu, je tu volba NoCache. Tato volba vypne vsechny cache a oznaci pamet jako necachovatelnou Serialized. Jestli ma ale stroj 32-bitovou Chip RAM, bude porad jeste rychlejsi nez puvodne na A500.

K urychleni programu muzete nastavit volby pro zapinani cache. Ty maji vetsi prioritu nad setupem slave. Na 68020 muze byt pouzita volba Cache. Pro 68030 je volba DCache, kterou ale volba Cache zahrnuje take. Pro 68060 existuje vic voleb: BranchCache, StoreBuffer a SuperScalar. Volba NoChipCache/S muze vylepsit vykon na 68040 a 68060, viz nize.

Write Allocation

Write Allocation kontroluje ovladani cache na 68030, kdyz se prihodi selhani cache pri zapisu. Write Allocation musi byt zapnuta, kdyz casti nainstalovaneho programu bezi v uzivatelskem modu. Jestli nainstalovany program bezi jenom v supervizor modu, muze byt Write Alloction vypnuta, coz je minimalni vyhoda pro vykon.

Branch Cache

Branch Cache je pouze na 68060. Je to druh instrukcni cache pro branch instrukce. Ale na rozdil od instrukcni cache neni ovlivnovatelna MMu setupem! To znamena, ze i kdyz je stranka pameti oznacena jako necachovatelna, branch instrukce budou cachovany, pokud je zapnuta Branch Cache.


Prectete si Motorola Microprocessors User Manualy pro dalsi informace. Jestli protestujete nebo chcete neco dodat, piste mi na e-mail.