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:
- 68000
zadna
- 68010
- Prefetch instrukci
dvouwordovy prefetch, jednowordovy dekodovaci register
- Loop Mode
vznika, pokud jednowordova instrukce nasleduje smyckou DBcc, zadna
dalsi instrukce neni prefetchovana dokud smycka neskonci.
- 68020
- Prefetch instrukci
jeden longword
- Instruction Cache
16 lines á 16 byte = 256 bytes
muze byt aktivovana nebo vypnuta pres CACR
- 68030
- Prefetch instrukci
jeden longword
- Instruction Cache
16 lines á 16 byte = 256 byte
muze byt aktivovana nebo vypnuta pres CACR
- Data Cache
16 lines á 16 byte = 256 byte
muze byt aktivovana nebo vypnuta pres CACR
vzdy WriteThrough
volitelny Write Allocation mod
- 68040
- Instruction Prefetch
jeden long word
- Instruction Cache
256 lines á 16 byte = 4096 byte
muze byt aktivovana pres CACR
- Data Cache
256 lines á 16 byte = 4096 byte
muze byt aktivovana pres CACR
volitelne mody CopyBack/WriteThrough via MMU
- 68060
- Instruction Prefetch
jeden long word
- Instruction Cache
512 lines á 16 byte = 8192 byte
muze byt aktivovana, vypnuta nebo redukovana na pul pres CACR
- Branch Cache
muze byt aktivovana pres CACR
neovlivnovana MMU setupem!
- Superscalar Dispatch
muze byt aktivovana pres CACR
- Data Cache
512 lines á 16 byte = 8192 byte
muze byt aktivovana, vypnuta nebo redukovana na pul pres CACR
volitelne mody CopyBack/WriteThrough pres MMU
- Push Buffer
muze byt vypnuta pres PCR
- Store Buffer
muze byt aktivovana pres CACR
Stranky nesmi byt NonCachable Serialized (precise)
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.