Přepínání bank

Přepínání bank je způsob, jak zvýšit množství použité paměti ve srovnání s množstvím, které může procesor adresovat přímo [1] [2] . Tuto metodu lze použít ke změně konfigurace systému: například ROM potřebnou pro zavedení systému z diskety lze deaktivovat, když již není potřeba. U videoherních konzolí umožňuje přepínání bank vyvíjet větší hry pro použití na současné generaci konzolí.

Přepínání bank se poprvé objevilo v minipočítačích [3] . Mnoho moderních mikrokontrolérů a mikroprocesorů používá přepínání bank k ovládání RAM , ROM, I/O zařízení a registrů řízení systému v malých vestavěných systémech . Tato metoda byla široce používána v 8bitových mikropočítačích . Přepínání bank lze také použít, pokud je šířka adresové sběrnice uměle omezena a existují hardwarová omezení, která neumožňují zvýšit počet adresních linek. Některé mikrokontroléry podporují přepínání bank v hardwaru, což snižuje počet adresových bitů používaných v instrukcích.

Na rozdíl od „ stránkovacího “ mechanismu nejsou data stránkována na úložné zařízení (pevný disk). Data zůstávají nezměněna v oblasti paměti, která je aktuálně pro procesor nepřístupná (ačkoli tato oblast může být přístupná pro řadič videa , řadič DMA nebo jiné počítačové subsystémy).

Jak to funguje

Přepínání bank lze chápat jako způsob, jak rozšířit adresovou sběrnici procesoru o externí registr . Například procesor s 16bitovou externí adresovou sběrnicí může adresovat 2 16 = 65536 paměťových míst. Pokud je do systému přidán externí spouštěč , lze jej použít k ovládání, ke které ze dvou sad paměťových bloků 65536 buněk bude každý přistupovat. Procesor může přepínat sadu použitých bloků nastavením nebo zrušením klopného obvodu.

Spouštěč lze resetovat nebo nastavit několika způsoby: přístupem ke konkrétní adrese paměti nebo, u procesorů s vyhrazenými I/O instrukcemi , přístupem ke specifickému I/O portu. Několik klopných obvodů řídících přepínání bank lze spojit do registru, přičemž každý bit registru může přibližně zdvojnásobit počet adresovatelných buněk.

Protože spouštěč výběru banky (registr) přímo nesouvisí s programovým čítačem procesoru, nemění automaticky svůj stav, když čítač programu přeteče . Přetečení nemůže být detekováno externím spouštěčem, protože programový čítač je interní registr procesoru. Programy nemohou používat dodatečnou paměť bez úprav. Vzhledem k tomu, že se délka vnitřních registrů procesoru nemění, nemůže procesor např. z důvodu přírůstku vnitřního registru přímo adresovat paměťové buňky všech bank [4] . Místo toho musí procesor explicitně provést operaci přepínání bank pro přístup k LOBům v paměti. Existují i ​​další omezení. Typicky bude systém s přepínáním bank obsahovat jednu programovou paměť sdílenou všemi bankami. Bez ohledu na aktuálně vybranou banku bude část adresního prostoru mapována do stejné oblasti paměti. Tato oblast bude obsahovat kód, který řídí přepínání bank a zpracovává přerušení .

Na rozdíl od technologie virtuální paměti musí být přepínání bank explicitně řízeno spouštěným programem nebo operačním systémem. Hardware procesoru nemůže automaticky určit, že jsou vyžadována data, která nejsou aktuálně dostupná prostřednictvím vybrané banky. Aplikační program musí sledovat, která paměťová banka obsahuje požadovaná data, a zavolat rutinu přepínání bank, aby byla tato banka aktivní [5] . Přepínání bank zároveň umožňuje rychlejší přístup k datům než například načítání stránek z disku.

Použití v mikropočítačích

Procesory s 16bitovou adresovou sběrnicí ( Z80 , 6502 , 6809 a další), široce používané v prvních herních konzolích a domácích počítačích, mohly přímo adresovat pouze 64 KB . Na systémech s větší pamětí musel být adresní prostor rozdělen do bloků, které bylo možné dynamicky mapovat do bloků v rámci většího adresního prostoru. Paměťové bloky různých velikostí byly spojovány a odpojovány pomocí bankovních výběrových registrů nebo podobných mechanismů. Obvykle byly nějaké bloky vždy k dispozici. Bylo třeba dbát na to, aby nebyla narušena správnost volání podprogramů , zpracování přerušení, integrita zásobníku volání a podobně. Zatímco se obsah deaktivovaného paměťového bloku stal pro procesor nedostupný, mohl být použit jiným hardwarem, jako je video řadič, DMA řadič, I/O zařízení . Poslední verze CP/M , vydaná v roce 1982, podporovala přepínání bank za účelem využití více než 64 KB paměti, která by mohla adresovat procesory 8080 a Z80 [6] .

Přepínání bank umožnilo přidat do návrhu počítače další paměť a funkce, aniž by bylo nutné přejít na procesor s širší adresovou sběrnicí , s tím související náklady a problémy s nekompatibilitou. Například počítač Commodore 64 používal přepínání bank k použití plných 64 KB RAM a stále používal mapování ROM a paměťových I/O registrů . Atari 130XE umožnil procesoru 6502 a video řadiči ANTIC přístup k samostatným bankám RAM, přičemž hlavní procesor mohl připravit grafické objekty v paměťové bance a poté ji vypnout, a video řadič tyto objekty nadále používal, ačkoli paměť banka již nebyla pro hlavní procesor viditelná.

Rover Sojourner používá procesor 80C85 s obvodem pro přepínání externích bank, který umožňuje adresovat více než 512 KB paměti prostřednictvím stránek o velikosti 16 KB [7] . Další prototyp roveru používá mikrokontrolér 80C51 s externím přepínacím obvodem banky pro přístup k 256 KB statické RAM [8] .

Použití v počítačích kompatibilních s IBM PC

V roce 1985 společnosti Lotus Software a Intel představily specifikaci rozšířené paměti ( EMS ) verze 3.0 pro použití v počítačích kompatibilních s IBM PC se systémem MS-DOS . S vydáním verzí 3.2 v roce 1986 a 4.0 v roce 1987 se k této skupině připojil Microsoft a specifikace se stala známou jako Lotus-Intel-Microsoft EMS nebo LIM EMS [5] [9] [10] . Extended Memory je paměťová karta se sběrnicí ISA , která využívá přepínání bank a umožňuje více než 640 KB paměti RAM, kterou umožňuje původní architektura IBM PC. K rozšířené paměti se přistupuje přes "okno" v adresním prostoru 64 KB umístěném v " oblasti vysoké paměti " [11] . Těchto 64 KB je rozděleno do čtyř 16 KB „stránek“, které lze nezávisle přepínat. Mnoho aplikačních programů a počítačových her vydaných před začátkem 90. let používalo rozšířenou paměť. Přestože je EMS nyní zastaralou technologií, je stále podporována v 32bitových verzích operačního systému Microsoft Windows . 

Později byla standardizována specifikace přídavné paměti ( anglicky  eXtended Memory Specification, XMS ), která je v současnosti rovněž zastaralá. XMS umožňuje aplikacím MS-DOS v reálném režimu přístup k paměti za prvním megabajtem adresního prostoru. Bloky přídavné paměti mohou být zkopírovány do hlavní paměti a zpět a také zobrazeny v horní oblasti paměti, což simuluje přepínání bank („banky“ v tomto případě mohou mít libovolnou velikost). Aby byla zajištěna kompatibilita s aplikacemi, které používají paměť EMS, počínaje verzí 4.01 zavedl MS-DOS ovladač EMM386, který používá paměť XMS k simulaci techniky přepínání paměťových bank EMS. Podpora XMS je zachována v aktuálních 32bitových verzích operačního systému Microsoft Windows .

Použití v herních konzolích

Přepínání bank se také používá v některých herních konzolích [12] . Například Atari 2600 dovolovalo adresovat pouze 4 KB ROM, takže pozdější herní kazety od 2600 obsahovaly vlastní schémata přepínání bank, aby bylo možné použít více ROM, a tak se vešly složitější (za cenu většího kódu a herní data, jako je grafika a úrovně) hry [13] . Nintendo Entertainment System obsahoval upravený procesor 6502 , ale jeho kazety někdy obsahovaly megabit nebo více ROM adresovatelné přes obvod přepínání banky nazývaný Multi-Memory Controller. Kazety Game Boy používaly čip zvaný MBC (Memory Bank Controller), který nejen prováděl přepínání ROM bank, ale také interní přepínání SRAM bank a dokonce i přístup k externím zařízením, jako jsou infračervené porty nebo vibrační motory. Přepínání bank bylo také použito v pozdějších herních systémech.

Použití ve video adaptérech

Některé typy grafických adaptérů mohou používat podobnou techniku ​​dvojitého ukládání do vyrovnávací paměti ke zlepšení přehrávání videa . V tomto případě, zatímco procesor aktualizuje obsah jedné oblasti video paměti, zobrazovací obvod čte a zobrazuje obsah druhé oblasti. Když procesor dokončí aktualizaci, vyšle signál do obvodu grafického adaptéru pro přepnutí aktivních bank, takže okamžik změny obrazu není doprovázen artefakty nebo deformacemi. V tomto případě může mít procesor přístup k celé video paměti, ale obvody grafického adaptéru používají přepínání bank pro přístup k různým oblastem video paměti. Pokud dvě nebo více bank videopaměti obsahují mírně odlišné obrázky, rychlé přepínání (přepínání) mezi nimi umožňuje vytvářet animace nebo jiné vizuální efekty, které výkon procesoru nemusí být schopen přímo provést.

Alternativní metody a vývoj

Přepínání bank bylo v mnoha 16bitových systémech nahrazeno segmentací paměti , která zase ustoupila řídicím jednotkám stránkovací paměti . Ve vestavěných systémech je však přepínání bank stále oblíbené díky své jednoduchosti, nízkým nákladům a často většímu významu v této oblasti než u počítačů pro všeobecné použití.

Počítače využívající přepínání bank

Poznámky

  1. D. Givone, R. Rosser. Mikroprocesory a mikropočítače. Úvodní kurz = Mikroprocesory/Mikropočítače Úvod. - M .: Mir, 1983. - S. 367. - 464 s.
  2. D. Aspinall, William Allan Clark. Mikroprocesor a jeho aplikace: kurz pro pokročilé . - Cambridge University Press, 1978. - S.  47 -50. — 420 s. — ISBN ISBN 0-521-22241-9 .
  3. C. Gordon Bell, Allen Newell. Počítačové struktury: čtení a příklady . - McGraw-Hill, 1971. - S.  156 . — 668 s.
  4. Steve Heath. Návrh vestavěných systémů . - Druhé vydání. - Newnes, 2003. - S. 242. - 430 s. — ISBN ISBN 0-7506-5546-1 .
  5. 12 Scott Mueller . Upgrade a opravy PC . - Druhé vydání. - Que Books, 1992. - S.  699 -700. - ISBN ISBN 0-88022-856-3 .
  6. Paul Freiberger. Digital Research nabízí upgrade CP/M  // Info World. - InfoWorld Media Group, 1982. - V. 4 , č. 42 . - S. 1 . — ISSN 0199-6649 .
  7. Jake Matijevic et al. "Mars Pathfinder Frequently Asked Questions: Sojourner Rover" Archivováno 29. prosince 2014 na Wayback Machine . 1997.
  8. Edward W. Tunstel, Richard V. Welch, Brian H. Wilcox. Vestavěné ovládání miniaturního vědeckého roveru pro průzkum planet . - 1998. - doi : 10.1.1.52.8645 .
  9. Christine McGeever. Nový 1-2-3 Získává 4 MB paměti, Lotus, Intel Break PC-DOS Memory Barrier  // InfoWorld. - InfoWorld Media Group, 1985. - V. 7 , č. 17 . - S. 15 . — ISSN 0199-6649 .
  10. Jeff Angus. Aktualizace EMS poskytuje DOS vylepšený multitasking  // InfoWorld. - InfoWorld Media Group, 1987. - V. 9 , č. 33 . - S. 5 . — ISSN 0199-6649 .
  11. Příručka softwaru pro inženýry a vědce / ed. Paul W Ross. - CRC Press, 1995. - S. 26. - ISBN ISBN 0-8493-2530-7 .
  12. Charles W., Jr. Carey. Američtí vynálezci, podnikatelé a obchodní vizionáři. - Infobase Publishing, 2002. - S. 322-324. — ISBN 0-8160-4559-3 .
  13. Joe Grand, Kevin D. Mitnick, Ryan Russell. Hackování hardwaru: bavte se při ztrátě záruky . - Syngress, 2004. - S. 229. - 448 s. — ISBN 1-932266-83-6 .

Externí odkazy