Bankváltás

A bankváltás egy módja annak, hogy növeljük a felhasznált memória mennyiségét ahhoz képest, amelyet a processzor közvetlenül meg tud szólítani [1] [2] . Ezzel a módszerrel módosítható a rendszer konfigurációja: például a rendszer hajlékonylemezről történő indításához szükséges ROM letiltható, ha már nincs rá szükség. A videojáték-konzolokon a bankváltás lehetővé teszi nagyobb játékok fejlesztését a jelenlegi generációs konzolokon való használatra.

A bankváltás először a miniszámítógépekben jelent meg [3] . Sok modern mikrovezérlő és mikroprocesszor bankváltást használ a RAM , ROM, I/O eszközök és rendszervezérlő regiszterek vezérlésére kis beágyazott rendszerekben . Ezt a módszert széles körben használták a 8 bites mikroszámítógépekben . A bankváltás akkor is használható, ha a címbusz szélessége mesterségesen korlátozott, és hardveres korlátok vannak, amelyek nem teszik lehetővé a címsorok számának növelését. Egyes mikrokontrollerek hardverben támogatják a bankváltást, ami csökkenti az utasításokban használt címbitek számát.

A lapozási mechanizmussal ellentétben az adatok nem lapozódnak tárolóeszközre (merevlemezre). Az adatok változatlanok maradnak azon a memóriaterületen, amely jelenleg nem érhető el a processzor számára (bár ez a terület elérhető a videovezérlő , a DMA-vezérlő vagy más számítógépes alrendszerek számára).

Hogyan működik

A bankváltást úgy lehet felfogni, mint a processzor címbuszának külső regiszterrel történő bővítését . Például egy 16 bites külső címbusszal rendelkező processzor 2 16 = 65536 memóriahelyet tud megcímezni. Ha külső triggert adnak a rendszerhez , akkor ezzel szabályozható, hogy a két 65536 cellából álló memóriablokk közül melyik legyen elérhető. A processzor a flip-flop beállításával vagy törlésével tudja váltani a használt blokkok halmazát.

A triggert többféleképpen lehet alaphelyzetbe állítani vagy beállítani: egy adott memóriacím elérésével, vagy a dedikált I/O utasításokkal rendelkező processzorokon egy adott I/O port elérésével. Több bankváltást vezérlő flip-flop összevonható egy regiszterbe, így a regiszter minden bitje megközelítőleg megkétszerezheti a címezhető cellák számát.

Mivel a bankválasztó trigger (regiszter) nem kapcsolódik közvetlenül a processzor programszámlálójához, nem változtatja meg automatikusan az állapotát, amikor a programszámláló túlcsordul . A túlcsordulás nem észlelhető külső triggerrel, mivel a programszámláló egy belső processzorregiszter. A programok nem használhatják az extra memóriát módosítás nélkül. Mivel a processzor belső regisztereinek hossza nem változik, a processzor nem tudja közvetlenül megcímezni az összes bank memóriacelláját például egy belső regiszter növekmény miatt [4] . Ehelyett a processzornak kifejezetten bankváltási műveletet kell végrehajtania a memóriában lévő LOB-okhoz való hozzáféréshez. Vannak más korlátozások is. Általában egy bankkapcsolt rendszer egy programmemóriát tartalmaz, amelyet minden bank megoszt. Az aktuálisan kiválasztott banktól függetlenül a címtér egy része ugyanarra a memóriaterületre lesz leképezve. Ez a terület tartalmazza a bankváltást és a megszakításokat kezelő kódot .

A virtuális memória technológiával ellentétben a bankváltást kifejezetten a végrehajtó programnak vagy operációs rendszernek kell vezérelnie. A processzor hardvere nem tudja automatikusan megállapítani, hogy olyan adatokra van szükség, amelyek jelenleg nem állnak rendelkezésre a kiválasztott bankon keresztül. Az alkalmazási programnak nyomon kell követnie, hogy melyik memóriabank tartalmazza a szükséges adatokat, és fel kell hívnia a bankváltási rutint, hogy az adott bank aktív legyen [5] . Ugyanakkor a bankváltás lehetővé teszi az adatok gyorsabb elérését, mint például az oldalak lemezről történő betöltése.

Használata mikroszámítógépekben

Az első játékkonzolokban és otthoni számítógépekben széles körben használt, 16 bites címbusszal rendelkező processzorok ( Z80 , 6502 , 6809 és mások) csak 64 KB -ot tudtak közvetlenül megcímezni . A több memóriával rendelkező rendszereken a címteret blokkokra kellett felosztani, amelyek dinamikusan leképezhetők a nagyobb címtéren belüli blokkokra. A különböző méretű memóriablokkokat bankkiválasztó regiszterek vagy hasonló mechanizmusok segítségével csatlakoztatták és bontották le. Általában néhány blokk mindig elérhető volt. Ügyelni kellett arra, hogy ne sértse meg a szubrutinhívások helyességét , a megszakítások kezelését, a hívásverem integritását és hasonlókat. Míg a letiltott memóriablokk tartalma elérhetetlenné vált a processzor számára, más hardverek, például videovezérlő, DMA vezérlő, I/O eszközök használhatták . A CP/M utolsó , 1982-ben kiadott verziója támogatta a bankváltást, hogy több mint 64 KB-os memóriát használjon, amely a 8080-as és Z80-as processzorokat képes kezelni [6] .

A bankváltás lehetővé tette további memória és funkcionalitás hozzáadását a számítógépes kialakításhoz anélkül, hogy szélesebb címbusszal rendelkező processzorra kellett volna áttérni, ami a kapcsolódó költségekkel és inkompatibilitási problémákkal járt. Például a Commodore 64 számítógép bankváltást használt a teljes 64 KB RAM használatához, és továbbra is használja a ROM és a memória I/O regiszter leképezését . Az Atari 130XE lehetővé tette a 6502-es processzor és az ANTIC videóvezérlő számára, hogy külön-külön RAM-bankokhoz férhessenek hozzá, így a főprocesszor grafikus objektumokat készíthetett a memóriabankban, majd kikapcsolta, a videovezérlő pedig továbbra is használta ezeket az objektumokat, bár a memória bank már nem volt látható a főprocesszor számára.

A Sojourner rover 80C85 -ös processzort használ külső bankkapcsoló áramkörrel, amely lehetővé teszi több mint 512 KB memória megcímzését 16 KB-os oldalakon keresztül [7] . Egy másik prototípus rover egy 80C51 mikrokontrollert használ külső bankkapcsoló áramkörrel, hogy hozzáférjen 256 KB statikus RAM-hoz [8] .

Használata IBM PC-kompatibilis számítógépeken

1985-ben a Lotus Software és az Intel bemutatta az Expanded Memory Specification ( EMS ) 3.0-s verzióját az IBM PC-kompatibilis , MS-DOS rendszert futtató számítógépeken való használatra . A 3.2-es verzió 1986-ban és a 4.0-s verzió 1987-es kiadásával a Microsoft csatlakozott ehhez a csoporthoz , és a specifikáció Lotus-Intel-Microsoft EMS vagy LIM EMS néven vált ismertté [5] [9] [10] . Az Extended Memory egy ISA busz memóriakártya , amely bankváltást használ, és több mint 640 KB RAM-ot tesz lehetővé az eredeti IBM PC architektúra által megengedett. A kiterjesztett memória a " magas memóriaterületen " [11] található 64 KB-os címtérben található "ablakon" keresztül érhető el . Ez a 64 KB négy 16 KB-os „oldalra” van osztva, amelyek egymástól függetlenül válthatók. Számos , a 90-es évek eleje előtt kiadott alkalmazásprogram és számítógépes játék bővített memóriát használt. Bár az EMS mára elavult technológia, a Microsoft Windows operációs rendszer 32 bites verziói továbbra is támogatják . 

Később szabványosították a kiegészítő memória specifikációját ( English  eXtended Memory Specification, XMS ), amely jelenleg szintén elavult. Az XMS lehetővé teszi a valós módú MS-DOS alkalmazások számára, hogy a címtér első megabájtján túl is hozzáférjenek a memóriához. A kiegészítő memória blokkjai a fő memóriába és vissza másolhatók, és a felső memóriaterületen is megjeleníthetők, szimulálva a bankváltást (a „bankok” ebben az esetben tetszőleges méretűek lehetnek). Az EMS memóriát használó alkalmazásokkal való kompatibilitás biztosítása érdekében a 4.01-es verziótól kezdődően az MS-DOS bevezette az EMM386 illesztőprogramot, amely XMS memóriát használ az EMS memóriabank váltási technikájának szimulálására. Az XMS támogatás megmarad a Microsoft Windows operációs rendszer jelenlegi 32 bites verzióiban .

Használata játékkonzolokon

A bankváltást egyes játékkonzolokon is alkalmazták [12] . Például az Atari 2600 csak 4 KB ROM megszólítását tette lehetővé, így a későbbi 2600-as játékkazetták saját bankváltási sémákat tartalmaztak, hogy több ROM-ot lehessen használni, és így bonyolultabbak is elférjenek (több kód árán). és játékadatok, például grafikák és szintek) játékok [13] . A Nintendo Entertainment System egy módosított 6502-es processzort tartalmazott , de a kazettái néha egy megabites vagy több ROM-ot tartalmaztak, amely a Multi-Memory Controller nevű bankkapcsoló áramkörön keresztül címezhető. A Game Boy kazetták egy MBC-nek (Memory Bank Controller) nevezett chipet használtak, amely nemcsak a ROM bankváltást, hanem a belső SRAM bankváltást is végrehajtotta , és még külső eszközökhöz is hozzáfért, például infravörös portokhoz vagy vibrációs motorokhoz. A bankváltást a későbbi játékrendszerekben is alkalmazták.

Használata videoadapterekben

Egyes típusú videoadapterek hasonló kettős pufferelési technikát alkalmazhatnak a videolejátszás javítása érdekében . Ebben az esetben, amíg a processzor frissíti a videomemória egyik területének tartalmát, a képalkotó áramkör beolvassa és megjeleníti a második terület tartalmát. Amikor a processzor befejezi a frissítést, jelet küld a videoadapter áramkörének az aktív bankok váltására, hogy a képváltás pillanatát ne kísérje műtermékek vagy torzulások. Ebben az esetben a processzor hozzáférhet a teljes videomemóriához, de a videoadapter áramköre bankváltást használ a videomemória különböző területeinek eléréséhez. Ha két vagy több videomemóriabank kissé eltérő képeket tartalmaz, a köztük lévő gyors váltás (lapozás) lehetővé teszi olyan animációk vagy más vizuális effektusok létrehozását, amelyeket a processzor teljesítménye nem tud közvetlenül végrehajtani.

Alternatív módszerek és fejlesztés

A bankváltást sok 16 bites rendszerben felváltotta a memóriaszegmentáció , amely viszont átadta helyét a lapozó memóriavezérlő egységeknek . A beágyazott rendszerekben azonban a bankváltás továbbra is népszerű egyszerűsége, alacsony költsége és a területen gyakran nagyobb relevanciája miatt, mint az általános célú számítógépeknél.

Bankváltást használó számítógépek

Jegyzetek

  1. D. Givone, R. Rosser. Mikroprocesszorok és mikroszámítógépek. Bevezető tanfolyam = Mikroprocesszorok/Mikroszámítógépek Bevezetés. - M . : Mir, 1983. - S. 367. - 464 p.
  2. D. Aspinall, William Allan Clark. A mikroprocesszor és alkalmazása: haladó tanfolyam . - Cambridge University Press, 1978. - S.  47 -50. — 420 p. — ISBN ISBN 0-521-22241-9 .
  3. C. Gordon Bell, Allen Newell. Számítógépes szerkezetek: olvasmányok és példák . - McGraw-Hill, 1971. -  156. o . — 668 p.
  4. Steve Heath. Beágyazott rendszerek tervezése . - Második kiadás. - Newnes, 2003. - S. 242. - 430 p. — ISBN ISBN 0-7506-5546-1 .
  5. 12 Scott Mueller . PC-k frissítése és javítása . - Második kiadás. - Que Books, 1992. - S.  699 -700. - ISBN ISBN 0-88022-856-3 .
  6. Paul Freiberger. A Digital Research CP/M frissítést kínál  // Info World. - InfoWorld Media Group, 1982. - V. 4 , 42. szám . - S. 1 . — ISSN 0199-6649 .
  7. Jake Matijevic és társai "Mars Pathfinder Frequently Asked Questions: Sojourner Rover" Archivált 2014. december 29-én a Wayback Machine -nél . 1997.
  8. Edward W. Tunstel, Richard V. Welch, Brian H. Wilcox. Miniatűr tudományos rover beágyazott vezérlése bolygókutatáshoz . - 1998. - doi : 10.1.1.52.8645 .
  9. Christine McGeever. Az új 1-2-3 4 megabájt memóriát kap, Lotus, Intel Break PC-DOS memóriakorlát  // InfoWorld. - InfoWorld Media Group, 1985. - V. 7 , 17. szám . - S. 15 . — ISSN 0199-6649 .
  10. Jeff Angus. Az EMS frissítés javítja a DOS-os többfeladatos működést  // InfoWorld. - InfoWorld Media Group, 1987. - V. 9 , 33. szám . - S. 5 . — ISSN 0199-6649 .
  11. A szoftver kézikönyve mérnököknek és tudósoknak / szerk. Paul W Ross. - CRC Press, 1995. - P. 26. - ISBN ISBN 0-8493-2530-7 .
  12. Charles W., Jr. Carey. Amerikai feltalálók, vállalkozók és üzleti látnokok. - Infobázis Kiadó, 2002. - S. 322-324. — ISBN 0-8160-4559-3 .
  13. Joe Grand, Kevin D. Mitnick, Ryan Russell. Hardveres feltörés: érezd jól magad a garancia érvénytelenítése közben . - Syngress, 2004. - S. 229. - 448 p. — ISBN 1-932266-83-6 .

Külső linkek