Funkce cache paměti akcelerátorů u Apple ][

Akcelerátor musí samozřejmě obsahovat rychlejší verzi procesoru.

To je jasné, ale jak má nový rychlý procesor žít s pomalým původním osazenstvem počítače?

Je nutné dodat mu nějakou rychleji komunikující paměť.

U Apple II byly v akcelerátorech použity tři způsoby:

1) globálně nová RAM.

V tomto případě má akcelerovaný procesor vlastní obří RAM, kterou používá, emuluje na ní i případná paměťová rozšíření (která tím mateřský počítač nemusí vůbec obsahovat) a jediné, kdy se přistupuje k mateřskému paměťovému prostoru, je zápis do VRAM a přístup do slotů.

Tento způsob používá bulharský FastChip //e se svou pamětí 512/1024 KiO, částečně původní Transwarp – ten má rychlou paměť velikosti do 256 KiO, k paměťovým rozšířením nad tuto velikost pak přistupuje pomalými cykly.

2) stínová hlavní RAM.

V tomto případě má akcelerovaný procesor vlastní stínovou RAM, odpovídající velikostí základní paměti.

Chová se jako v prvním případě, jen neemuluje a neurychluje paměťová rozšíření.

Tento způsob použil Accelerator ][ se 64 KiO RAM.

Jeho příbuzný pro Apple //e, které má v základu 128 KiO RAM, Accelerator //e, je zajímavý tím, že má jen 64 KiO RAM (byť doplněných ještě o 16 KiO RAM pro uložení stínového obsahu ROM), takže nemůže akcelerovat druhou banku (druhou polovinu paměti obsažené v počítači).

Částečně tuto techniku používá Transwarp – akceleruje paměť včetně rozšíření do velikosti RAM 256 KiO, ke zbytku přistupuje nativně.

3) skutečná cache.

V tomto případě je přídavná rychlá paměť menší než paměťový prostor a používá se opravdu jen na uložení právě používaných dat z hlavní RAM.

Akcelerovaný procesor má vlastně dvě části cache RAM (u ZipChip je to 2×8 KiO, ZipGSX a Transwarp GS umí až 2×32 KiO).

Do jedné části ukládá cachovaný obsah paměti, druhá je “Tag RAM”.

V “Tag RAM” je každý bajt adresovaný 13 bity (v případě 8 KiO cache) a nese v sobě informaci o horních 3 bitech adresy, číslo paměťové banky a informaci, zda jsou zapsané informace platné.

Cache samozřejmě urychluje pouze čtení, ne zápis.

Tuto technologii použil SpeedDemon, později Zip Chip (Zip technologies ji dle rozhodnutí soudu i vlastnila), používaly ji ale i Rocket Chip, Transwarp ][, Transwarp GS, Rocket Chip a akcelerátor zabudovaný v Apple //c+ (Transwarp i Apple //c+ byly licencované od společnosti vyrábějící Rocket Chip a poté, co ta prohrála soud s výrobcem Zip Chipu, musely Applied Engineering i Apple výrobu akcelerátorů s cache taky ukončit).

Celé to pracuje jednoduše:

Má-li se zapisovat, zapíše se pomalým cyklem do původní paměti i do cache, na adresu určenou dolními bity adresy – na stejnou adresu v Tag RAM pak číslo nastránkované banky (hlavní nebo přídavná 64 KiO RAM u Apple //e, číslo 64 KiO stránky kompatibilní s RAM Works, siftswitche pro ROM a Language Card RAM), horní bity adresy a data se označí za platná.

Při čtení se, pokud v cache na příslušné adrese (tedy po naadresování dolnimi bity adresy, souhlasí-li i horní bity a číslo stránky v Tag RAM) jsou platná data (mají-li značku v TagRAM) načtena rychlým cyklem bez zpomalování procesoru.

To je taky jediný případ, kdy akcelerátor činnost počítače urychlí, v běžných programech má být ale takovýchto akcelerovaných cyklů až 90%.

Pokud při čtení nejsou v cache platná data (nebo data jsou sice označena jako platná, ale nesouhlasí horní bity adresy nebo číslo banky), provede se pomalým cyklem čtení, zároveň se načtenou hodnotou přepíše obsah dané adresy cache (jak její datové části, tak Tag RAM).

V běžných programech má být ale těchto pomalých cyklů jen asi 10%.