[Main]
[Docs]
[Installs]
[Search]
[Team]
[Guestbook]
[Links]
CPU Cache áttekintés
A teljesítmény növelése érdekében a 68k processzor-család képes a memóriahozzáférést
gyorsítótárazni.
A cache mindig logikai címekhez van rendelve, beleértve a hozzáférés funkciókódját.
Ez azt jelenti, hogy a User Mode és a Supervisor Mode különböző cache bejegyzéseket
fognak generálni(a részletekért lásd a Motorola dokumentációját).
Itt következik egy áttekintés a 68k processzorok cache-kezeléséről:
- 68000
nincs
- 68010
- Instruction Prefetch
két word prefetch, egy word dekodoló regiszter
- Loop Mode
akkor történeik, ha egy egy word hosszú utasítást egy DBcc követ, a ciklus végéig
nem történik több utasítás fetch a ciklus végéig.
- 68020
- Instruction Prefetch
egy hosszú word
- Instruction Cache
16 vonal á 16 byte = 256 byte
kapcsolható be vagy álítható meg a CACR segítségével
- 68030
- Instruction Prefetch
egy hosszú word
- Instruction Cache
16 vonal á 16 byte = 256 byte
kapcsolható be vagy álítható meg a CACR segítségével
- Data Cache
16 vonal á 16 byte = 256 byte
kapcsolható be vagy álítható meg a CACR segítségével
WriteThrough mindig
választható Write Allocation mód
- 68040
- Instruction Prefetch
egy hosszú word
- Instruction Cache
256 vonal á 16 byte = 4096 byte
bekapcsolható a CACR segítségével
- Data Cache
256 vonal á 16 byte = 4096 byte
bekapcsolható a CACR segítségével
választható CopyBack/WriteThrough módok az MMU segítségével
- 68060
- Instruction Prefetch
egy hosszú word
- Instruction Cache
512 vonal á 16 byte = 8192 byte
bekapcsolható, leállítható és felére csökkenthető a CACR segítségével
- Branch Cache
bekapcsolható a CACR segítségével
nem érinti az MMU beállítást!
- Superscalar Dispatch
bekapcsolható a CACR segítségével
- Data Cache
512 vonal á 16 byte = 8192 byte
bekapcsolható, leállítható és felére csökkenthető a CACR segítségével
választható CopyBack/WriteThrough módok az MMU segítségével
- Push Buffer
kikapcsolható a PCR segítségével
- Store Buffer
bekapcsolható a CACR segítségével
A lapok beállítása: NonCachable Serialized (precise)
Az első fontos dolog az, hogy a 68030..68060 cache kezelését a Cache Control Register
(CACR) vezérli és az MMU (ha a WHDLoad használja és vezérli az MMU-t)!
A CACR-ben a cache globálisan be vagy kikapcsolható. Az MMU single Page (4 KByte a
WHDLoad-dal) jelöli majd a cache típusát.
A 68030-on a memorialap vagy Cacheable vagy NotCacheable. A 68040/68060-on lehet WriteThrough,
CopyBack, NonCachable (imprecise) vagy NonCachable Serialized (precise).
Ha az MMU-t nem használja a WHDLoad, akkor csak a CACR vezérli.
Alapértelmezett cache beállítás
Alaphelyzetben a WHDLoad, a Slave és az ExpMem területe cacheable CopyBack módban van.
A BaseMem terület NonCachable, és a Data és az Instruction Cache be van kapcsolva a
CACR-ben. Így a BaseMem területen futó program cache nélkül fut, de a WHDLoad és a Slave
használja a cache-t a teljesítmény érdekében.
Programozók cache vezérlése
Két resload funkció vezérli a cache-t: resload_SetCACR és resload_SetCPU. A resload_SetCACR a régi
rutin és teljesen lecserélhető a resload_SetCPU (a WHDLoad
belül átirányítja a resload_SetCACR opcióit és meghívja a resload_SetCPU-t) által.
A resload_SetCACR használata javasolt az olyan emberek számára, akik nem ismerik a cache
rendszert és az Amigában levő változatát. A resload_SetCACR használatával az instruction
és a data cache külön be vagy kikapcsolható. A resload_SetCACR csak a BaseMem
terület cache módjait állítja.
Felhasználó cache vezérlése
Ha a programozó jó munkát végzett, a felhasználónak nem kell semmit sem beállítania
a cache-el kapcsolatban, mivel a Slave mindent beállít.
Két oka lehet a cache beállítás kézi beállításának. Először azért, hogy ha install
túl gyorsan fut (pl. grafikus hibákat generál) és másodszor azért, hogy az installált
program gyorsabban működjön.
Egy lefagyó programot is működésre lehet bírni a NoCache opcióval. Ez az opció kikapcsolja az összes cache-t
és a memóriát NonCachable Serialized (precise) típusúnak állítja be.
Ha a gépnek van 32-bites Chip-memóriája, az még mindig gyorsabb mint az eredeti A500.
Ha az installált programot gyorsítani szeretnéd, van néhány opció a cache
bekapcsolására. Ez felülírja a Slave beállításait. 68020-on a
Cache opció állítható be. 68030-on a DCache opció is használható, amely magában foglalja a Cache
opciót is. 68060-on van még néhány egyéb opció: BranchCache,
StoreBuffer és
SuperScalar. A ChipNoCache/S opció növelheti a teljesítményt 68040-en és
68060-on, lásd később.
A Chip-memória cache vezérlése
A cache kezelését sem a CPU nem tudja beállítani (CACR), sem az MMU,
hanem egy külső hardver. A CPU tud jelezni a buszon, ha megpróbálja elérni a cache-t.
És a külső hardver tud jelezni a CPU-nak (miután a cím ki lett rakva a címbuszra
a memóriahozzáférés alatt) hogy a hozzáférést nem cache-elhető.
Az a mechanizmus, ahogy a hardver jelez a CPU-nak hogy a memória cache-elhető vagy
nem, minden olyan AMigán és turbókártyán (SZVSZ) megtalálható, ahol a CPU >= 68030
(mert ezekben van adat cache). Az egész Chip-memória és az Space (Cia/Custom/RTC) nem
cache-elhető az adat cache által. Ez azért szükséges, hogy az inkonzisztenciákat
elkerüljük, például a DMA tevékenység miatt.
A CPU válasza a nem cache-elhető hozzáférésre különbözik processzoronként.
68030-on nincs jelentősége a teljesítményre, az adatok nincsenek cache-elve. 68040-en
az olvasási hozzáférések teljes sebességgel futnak, és az írási hozzáférések (CopyBack)
le lesznek állítva és újra lesznek indítva cache nélkül, ami ötször lassabb (függ a
hardvertől és a CPU sebességétől) lesz a nem cache-elt hozzáféréssel szemben. 68060-on
az olvasási és az írási hozzáférések le lesznek állítva és újra lesznek indítva.
Az olvasási hozzáférések háromszor lesznek lassabbak és az írási hozzáférések ötször.
Az említett esetek az adat hozzáférésekre vonatkoznak. Az utasítás hozzáférések
általában nem érintettek és cache-elhetők a Chip-memórián belül.
Van néhány (valószínűleg hibás) hardver, amely nem engedi az utasítások cache-elését
a Chip-memóriában. Az ilyen hardvereken a ChipNoCache/S opciót használd a jelentős lassulás
elkerülése végett, mert egyébként kb. fele sebességel fogank zajlani az utasítások.
Ellenőrizheted a géped működését, ha futtatod a Speed.Slave programot, amely az
src/memory-speed könyvtárban található a fejlesztői csomagban.
Write Allocation
A Write Allocation vezérli a 68030 cache kezelését, amikor cache kihagyás történik
egy írási műveletnél. A Write Allocation-t be kell kapcsolni, ha az installált program
User Mode-ban fut. Ha az installált program csak Supervisor Mode-ban fut, akkor a
Write Alloction kikapcsolható, ami ad egy minimális teljesítmény-növekedést.
Branch Cache
A Branch Cache csak 68060-on érhető el. Ez egyfajta utasítás cache, az utasítások
összefogásával. De abban különbözik az utasitás cache-től, hogy független az MMU
beállítástól! Ez azt jelenti, hogy ha a megfelelő memórialap nem cache-elhetőként van
jelölve, az összefogott utasítások akkor is cache-elve lesznek, ha a Branch Cache be van
kapcsolva.
További információkért olvasd el a Motorola Microprocessors Felhasználói
Kézikönyvet.
Ha van javításod vagy egyéb információd ezzel az oldallal kapcsolatban, kérlek írj nekem.
[Main]
[Docs]
[Installs]
[Search]
[Team]
[Guestbook]
[Links]