Přepínání bank - Bank switching

Hypotetická paměťová mapa paměti s přepínáním bank pro procesor, který může adresovat pouze 64 kB. Toto schéma ukazuje 200 kB paměti, z nichž procesor může kdykoli přistupovat pouze k 64 kB. Operační systém musí spravovat operaci přepínání bank, aby zajistil, že provádění programu může pokračovat, i když část paměti není přístupná procesoru.

Přepínání bank je technika používaná v počítačovém designu ke zvýšení množství použitelné paměti nad množství přímo adresovatelné instrukcemi procesoru . Lze jej použít k různé konfiguraci systému v různých časech; například ROM potřebná ke spuštění systému z diskety lze vypnout, když již není potřeba. V systémech videoher umožnilo přepínání bank vývoj větších her pro hraní na stávajících konzolách.

Přepínání bank pochází z minipočítačových systémů. Mnoho moderních mikrokontrolérů a mikroprocesorů používá přepínání bank ke správě paměti s náhodným přístupem , energeticky nezávislé paměti, vstupních a výstupních zařízení a registrů správy systému v malých vestavěných systémech . Tato technika byla běžná v 8bitových mikropočítačových systémech. Bankovní přepínání lze také použít k obcházení omezení šířky adresové sběrnice, kde některá hardwarová omezení brání přímému přidání více adresních řádků, a k obcházení omezení v ISA , kde jsou generované adresy užší než šířka adresové sběrnice. Některé mikroprocesory orientované na řízení používají k přístupu k interním I/O a kontrolním registrům techniku ​​přepínání bank, což omezuje počet bitů adresy registru, které je nutné použít v každé instrukci.

Na rozdíl od správy paměti stránkováním nejsou data vyměňována s velkokapacitním paměťovým zařízením, jako je diskové úložiště . Data zůstávají v klidovém úložišti v paměťové oblasti, která není aktuálně přístupná procesoru (i když může být přístupná pro zobrazení videa, řadič DMA nebo jiné subsystémy počítače) bez použití speciálních předponových pokynů.

Technika

Přepínání bank lze považovat za způsob rozšíření adresního prostoru instrukcí procesoru o nějaký registr. Příklady:

  • Následný systém k procesoru s 12bitovou adresou má 15bitovou adresovou sběrnici, ale neexistuje způsob, jak přímo specifikovat tři vysoké bity na adresové sběrnici. K poskytnutí těchto bitů lze použít interní bankovní registry.
  • Následný systém k procesoru s 15bitovou adresou má 18bitovou adresovou sběrnici, ale starší instrukce mají pouze 15 adresových bitů; k poskytnutí těchto bitů lze použít interní bankovní registry. Některé nové pokyny mohou banku výslovně specifikovat.
  • Procesor se 16bitovou externí adresovou sběrnicí může adresovat pouze 2 16  = 65536 paměťových míst. Pokud byla do systému přidána externí západka , mohla by být použita k ovládání, ke kterému ze dvou sad paměťových zařízení, z nichž každé má 65536 adres, bude přístupné. Procesor by mohl změnit, která sada se aktuálně používá, nastavením nebo vymazáním západkového bitu.
    Západku může procesor nastavit nebo vymazat několika způsoby; konkrétní adresa paměti může být dekódována a použita k ovládání západky, nebo v procesorech s odděleně dekódovanými I/O adresami může být dekódována výstupní adresa. Do registru bylo možné shromáždit několik řídicích bitů přepínání bank, přičemž každý další bit v registru přibližně zdvojnásobuje dostupné paměťové prostory.
    Protože externí západka výběru banky (nebo registr) není přímo spojena s čítačem programu procesoru, nemění automaticky stav, když čítač programu přeteče; to nelze zjistit externí západkou, protože programový čítač je interní registr procesoru. Extra paměť není pro programy bezproblémově k dispozici. Interní registry procesoru zůstávají na své původní délce, takže procesor nemůže přímo pokrýt celou paměť přepínanou bankou, například zvýšením interního registru. Místo toho musí procesor explicitně provést operaci přepínání bank, aby získal přístup k velkým paměťovým objektům. Existují další omezení. Systém přepínání bank bude mít obecně jeden blok programové paměti, který je společný pro všechny banky; bez ohledu na to, která banka je právě aktivní, pro část adresního prostoru bude použita pouze jedna sada paměťových míst . Tato oblast by byla použita k uchovávání kódu, který spravuje přechody mezi bankami, a také ke zpracování přerušení .

Jedna databáze často pokrývá několik bank a vyvstává potřeba přesunout záznamy mezi bankami (pokud jde o třídění). Pokud je současně přístupná pouze jedna banka, bylo by nutné přesunout každý bajt dvakrát: nejprve do oblasti společné paměti, provést přepnutí banky do cílové banky a poté vlastně přesunout bajt do cílové banky. Pokud má počítačová architektura modul DMA nebo druhý procesor a omezení přístupu do banky se liší, měl by být použit jakýkoli subsystém, který může přenášet data přímo mezi bankami.

Na rozdíl od schématu virtuální paměti musí být přepínání bank výslovně řízeno spuštěným programem nebo operačním systémem; hardware procesoru nemůže automaticky detekovat, že jsou požadována data, která nejsou aktuálně mapována do aktivní banky. Aplikační program musí sledovat, která paměťová banka obsahuje požadovaný kus dat, a poté zavolat rutinu přepínání bank, aby byla tato banka aktivní. Přepínání bank však může přistupovat k datům mnohem rychleji než například načítání dat z diskového úložiště.

Použití mikropočítače

Přepínač výběru banky na paměťové desce Cromemco byl použit k mapování paměti do jedné nebo více z 8 různých 64 KB bank.

Procesory se 16bitovým adresováním ( 8080 , Z80 , 6502 , 6809 atd.) Běžně používané v raných herních konzolách a domácích počítačích mohou přímo adresovat pouze 64  kB . Systémy s větší pamětí musely rozdělit adresní prostor na několik bloků, které bylo možné dynamicky mapovat do částí většího adresního prostoru. Přepínání bank bylo použito k dosažení tohoto většího adresního prostoru organizováním paměti do samostatných bank až 64 kB každé. Bloky různých velikostí byly přepínány dovnitř a ven pomocí registrů bank nebo podobných mechanismů. Cromemco byl prvním výrobcem mikropočítačů, který využíval přepínání bank a ve svých systémech podporoval 8 bank po 64 kB.

Při používání přepínání bank byla nutná určitá opatrnost, aby nedošlo k poškození manipulace s podprogramovými hovory, přerušeními , zásobníkem stroje atd. Zatímco obsah paměti dočasně vypnutý z procesoru byl pro procesor nepřístupný, mohl být použit jiným hardwarem, jako je video displej, DMA , I/O zařízení atd. CP/M-80 3.0 vydané v roce 1983 a Z80-založené TRS-80 Model 4 a Model II podporoval přepínání povolit použití více než 64 kB paměti, že Z80 procesor 8080, nebo by mohly řešit banku.

Přepínání bank umožnilo přidání další paměti a funkcí do návrhu počítače bez nákladů a nekompatibility přechodu na procesor s širší adresovou sběrnicí . Například C64 používal přepínání bank, aby umožnil celých 64 KB RAM a stále poskytoval také ROM /I/O mapované v paměti . Atari 130XE by mohla umožnit jeho dva procesory (6502 a antik ) přistupovat oddělených RAM bank, což programátorům dělat velké playfields a jiných grafických objektů bez použití do paměti viditelné na CPU.

Mikrokontroléry

Mikroprocesory (mikroprocesory s významným vstupně/výstupním hardwarem integrovaným na čipu) mohou využívat přepínání bank, například pro přístup k více konfiguračním registrům nebo pro čtení/zápis do paměti na čipu. Příkladem je mikrokontrolér PIC . To umožňuje krátkým instrukčním slovům ušetřit místo během rutinního provádění programu, za cenu dodatečných instrukcí požadovaných pro přístup k relativně zřídka používaným registrům, jako jsou ty, které se používají pro konfiguraci systému při spuštění.

Počítač IBM PC

Rozšířená paměť v počítači IBM PC

V roce 1985 se společnosti Lotus a Intel představil Expanded Memory Specification (EMS) 3.0 pro použití v kompatibilních IBM PC počítačích se systémem MS-DOS . Microsoft se připojil pro verze 3.2 v roce 1986 a 4.0 v roce 1987 a specifikace se stala známou jako Lotus-Intel-Microsoft EMS nebo LIM EMS. Je to forma techniky přepínání bank, která umožňuje více než 640 kB RAM definovaných původní architekturou IBM PC tím, že se po částech zobrazí v „okně“ o velikosti 64 kB umístěném v oblasti horní paměti . 64 kB je rozděleno na čtyři 16 kB „stránky“, z nichž každou lze nezávisle přepínat. Některé počítačové hry toho využily, a přestože je EMS zastaralý, tato funkce je dnes emulována pozdějšími operačními systémy Microsoft Windows, aby byla zajištěna zpětná kompatibilita s těmito programy.

Pozdější eXtended Specifikace paměti (XMS), nyní také zastaralé, je standard pro v podstatě simuluje bankovní přepínání pro paměť nad 1 MB (nazývané „ rozšířené paměti “), která není přímo adresovatelné v reálném režimu z x86 procesorů v který MS-DOS spouští. XMS umožňuje kopírování rozšířené paměti kamkoli v konvenční paměti, takže hranice „bank“ nejsou pevné, ale v každém jiném smyslu funguje jako přepínání bank EMS , z pohledu programu, který ji používá. Pozdější verze systému MS-DOS (počínaje verzí 5.0) obsahovaly ovladač EMM386, který simuluje paměť EMS pomocí XMS, což umožňuje programům využívat rozšířenou paměť, i když byly napsány pro EMS. Microsoft Windows emuluje XMS také pro ty programy, které to vyžadují.

Konzole pro videohry

Přepínání bank bylo také používáno v některých herních konzolách . Atari 2600 , například, mohl jen adresa 4 KB ROM, takže později 2600 herní kazety obsahovaly své vlastní bankovní spínací hardware, aby bylo umožněno použití většího množství ROM a umožnit tak pro složitější hry (přes více programového kódu, a stejně důležité, větší množství herních dat, jako je grafika a různé fáze hry). Nintendo Entertainment System obsahoval upravený 6502 , ale jeho patrony někdy obsahoval megabitů nebo více ROM, řeší prostřednictvím bank přepínání nazývá Multi-Memory Controller . Patrony Game Boy používaly čip s názvem MBC (Memory Bank Controller), který nabízel nejen přepínání bank ROM, ale také přepínání bank kazety SRAM a dokonce i přístup k takovým periferiím, jako jsou infračervené odkazy nebo rachotivé motory. V pozdějších herních systémech se stále používalo přepínání bank. Několik kazet Sega Mega Drive , jako například Super Street Fighter II, mělo velikost přes 4 MB a vyžadovalo použití této techniky (4 MB je maximální velikost adresy). GP2X handheld od Gamepark Holdings využívá bankovní přepínání aby řídil počáteční adresu (nebo paměť offset) pro druhý procesor.

Zpracování videa

V některých typech počítačových video displejů lze ke zlepšení výkonu videa použít související techniku dvojitého ukládání do vyrovnávací paměti . V tomto případě, zatímco procesor aktualizuje obsah jedné sady umístění fyzické paměti, hardware pro generování videa přistupuje a zobrazuje obsah druhé sady. Když procesor dokončí aktualizaci, může signalizovat hardwaru pro zobrazení videa výměnu aktivních bank, takže přechod viditelný na obrazovce je bez artefaktů nebo zkreslení. V tomto případě může mít procesor přístup ke všem pamětem najednou, ale hardware pro zobrazení videa je mezi částmi grafické paměti přepínán bankou. Pokud dvě (nebo více) banky videopaměti obsahují mírně odlišné obrázky, rychlé cyklování (převrácení stránky) mezi nimi může vytvořit animaci nebo jiné vizuální efekty, které by jinak procesor mohl být příliš pomalý na přímé provedení.

Alternativní a nástupnické techniky

Přepínání bank bylo později nahrazeno segmentací v mnoha 16bitových systémech , které zase ustoupily jednotkám správy stránkovací paměti . Ve vestavěných systémech se však přepínání bank stále často používá pro svou jednoduchost, nízké náklady a často lepší přizpůsobení těmto kontextům než pro obecné účely.

Viz také

Reference

externí odkazy