Schimbarea de bancă

Schimbarea băncilor este o modalitate de creștere a cantității de memorie utilizată în comparație cu cantitatea pe care procesorul o poate adresa direct [1] [2] . Această metodă poate fi folosită pentru a schimba configurația sistemului: de exemplu , ROM-ul necesar pentru a porni sistemul de pe o dischetă poate fi dezactivat atunci când nu mai este necesar. În consolele de jocuri video, comutarea bancare permite dezvoltarea unor jocuri mai mari pentru a fi utilizate pe generația actuală de console.

Comutarea băncilor a apărut pentru prima dată în minicalculatoare [3] . Multe microcontrolere și microprocesoare moderne folosesc comutarea băncilor pentru a controla RAM , ROM, dispozitivele I/O și registrele de control ale sistemului în sistemele încorporate mici . Această metodă a fost utilizată pe scară largă în microcalculatoarele pe 8 biți . Comutarea băncii poate fi utilizată și dacă lățimea magistralei de adrese este limitată artificial și există limitări hardware care nu permit creșterea numărului de linii de adrese. Unele microcontrolere acceptă comutarea băncilor în hardware, ceea ce reduce numărul de biți de adresă utilizați în instrucțiuni.

Spre deosebire de mecanismul de „ paging ” , datele nu sunt trimise către un dispozitiv de stocare (hard disk). Datele rămân neschimbate într-o zonă de memorie care este în prezent inaccesibilă procesorului (deși această zonă poate fi accesibilă controlerului video , controlerului DMA sau altor subsisteme computerizate).

Cum funcționează

Comutarea băncilor poate fi gândită ca o modalitate de a extinde magistrala de adrese a procesorului cu un registru extern . De exemplu, un procesor cu o magistrală de adrese externă de 16 biți poate adresa 2 16 = 65536 locații de memorie. Dacă la sistem este adăugat un declanșator extern , acesta poate fi utilizat pentru a controla care dintre cele două seturi de blocuri de memorie de 65536 de celule va fi accesat fiecare. Procesorul poate schimba setul de blocuri utilizate prin setarea sau ștergerea flip-flop-ului.

Un declanșator poate fi resetat sau setat în mai multe moduri: accesând o anumită adresă de memorie sau, pe procesoare cu instrucțiuni I/O dedicate , accesând un anumit port I/O. Mai multe bistabile care controlează comutarea băncilor pot fi combinate într-un registru, în care fiecare bit al registrului poate dubla aproximativ numărul de celule adresabile.

Deoarece declanșatorul de selectare a băncii (registrul) nu este direct legat de contorul de program al procesorului, nu își schimbă automat starea când contorul de program depășește . O depășire nu poate fi detectată de un declanșator extern, deoarece contorul de program este un registru intern al procesorului. Programele nu pot folosi memoria suplimentară fără modificări. Deoarece lungimea registrelor interne ale procesorului nu se modifică, procesorul nu se poate adresa direct celulelor de memorie ale tuturor băncilor din cauza, de exemplu, unui increment de registru intern [4] . În schimb, procesorul trebuie să efectueze în mod explicit o operație de comutare a băncii pentru a accesa LOB-urile din memorie. Există și alte restricții. De obicei, un sistem cu comutare de bancă va conține o memorie de program partajată de toate băncile. Indiferent de banca selectată în prezent, o parte a spațiului de adrese va fi mapată în aceeași zonă de memorie. Această zonă va conține codul care gestionează schimbarea băncii și gestionează întreruperi .

Spre deosebire de tehnologia memoriei virtuale , schimbarea băncilor trebuie controlată în mod explicit de programul de execuție sau de sistemul de operare. Hardware-ul procesorului nu poate determina automat că sunt necesare date care nu sunt disponibile în prezent prin banca selectată. Programul de aplicație trebuie să țină evidența care bancă de memorie conține datele necesare și să apeleze rutina de comutare a băncii pentru a activa banca respectivă [5] . În același timp, schimbarea băncilor vă permite să accesați date mai rapid decât, de exemplu, încărcarea paginilor de pe disc.

Utilizare în microcalculatoare

Procesoarele cu o magistrală de adrese pe 16 biți ( Z80 , 6502 , 6809 și altele), utilizate pe scară largă în primele console de jocuri și computere de acasă, puteau adresa doar 64 KB direct . Pe sistemele cu mai multă memorie, spațiul de adrese a trebuit să fie împărțit în blocuri care puteau fi mapate dinamic în blocuri în spațiul de adrese mai mare. Blocurile de memorie de diferite dimensiuni au fost conectate și deconectate folosind registre de selectare a băncii sau mecanisme similare. De obicei, unele blocuri erau întotdeauna disponibile. A fost nevoie de grijă pentru a nu încălca corectitudinea apelurilor subrutine , gestionarea întreruperilor, integritatea stivei de apeluri și altele asemenea. În timp ce conținutul blocului de memorie dezactivat a devenit inaccesibil pentru procesor, acesta putea fi utilizat de alt hardware, cum ar fi un controler video, controler DMA, dispozitive I/O . Ultima versiune a CP/M , lansată în 1982, a suportat comutarea băncilor pentru a utiliza mai mult de 64 KB de memorie care ar putea aborda procesoarele 8080 și Z80 [6] .

Schimbarea băncilor a permis adăugarea de memorie și funcționalități suplimentare la designul unui computer fără a fi nevoie să treceți la un procesor cu o magistrală de adrese mai largă , cu costurile și problemele de incompatibilitate asociate. De exemplu, computerul Commodore 64 a folosit comutarea de bancă pentru a folosi totalul de 64 KB de RAM și încă folosește maparea ROM-ului și a registrului I/O de memorie . Atari 130XE a permis procesorului 6502 și controlerului video ANTIC să acceseze bănci separate de RAM, prin care procesorul principal putea pregăti obiecte grafice în banca de memorie și apoi o poate opri, iar controlerul video a continuat să folosească aceste obiecte, deși memoria banca nu mai era vizibilă pentru procesorul principal.

Rover- ul Sojourner folosește un procesor 80C85 cu un circuit extern de comutare a băncii care permite ca mai mult de 512 KB de memorie să fie adresate prin pagini de 16 KB [7] . Un alt rover prototip folosește un microcontroler 80C51 cu un circuit extern de comutare a băncii pentru a accesa 256 KB de RAM statică [8] .

Utilizare în computere compatibile cu PC-uri IBM

În 1985, Lotus Software și Intel au introdus Expanded Memory Specification ( EMS ) versiunea 3.0 pentru utilizare în computerele IBM compatibile cu PC-uri care rulează MS-DOS . Odată cu lansarea versiunilor 3.2 în 1986 și 4.0 în 1987, Microsoft s-a alăturat acestui grup și specificația a devenit cunoscută ca Lotus-Intel-Microsoft EMS sau LIM EMS [5] [9] [10] . Extended Memory este o cartelă de memorie magistrală ISA care utilizează comutarea băncilor și permite mai mult de 640 KB de RAM permisă de arhitectura originală IBM PC. Memoria extinsă este accesată printr-o „fereastră” într-un spațiu de adrese de 64 KB situat în „ zona de memorie înaltă[11] . Aceste 64 KB sunt împărțite în patru „pagini” de 16 KB care pot fi comutate independent. Multe aplicații și jocuri pe calculator lansate înainte de începutul anilor 90 foloseau memorie extinsă. Deși EMS este acum o tehnologie învechită, este încă acceptată în versiunile pe 32 de biți ale sistemului de operare Microsoft Windows . 

Ulterior, specificarea memoriei suplimentare ( English  eXtended Memory Specification, XMS ) a fost standardizată, care este, de asemenea, învechită în acest moment. XMS permite aplicațiilor MS-DOS în mod real să acceseze memoria dincolo de primul megaoctet al spațiului de adrese. Blocurile de memorie suplimentară pot fi copiate în memoria principală și înapoi și, de asemenea, afișate în zona superioară a memoriei, simulând schimbarea băncilor („băncile” în acest caz pot avea dimensiuni arbitrare). Pentru a asigura compatibilitatea cu aplicațiile care folosesc memoria EMS, începând cu versiunea 4.01, MS-DOS a introdus driverul EMM386, care utilizează memoria XMS pentru a simula tehnica de comutare a băncilor de memorie EMS. Suportul XMS este păstrat în versiunile actuale pe 32 de biți ale sistemului de operare Microsoft Windows .

Utilizare în console de jocuri

Comutarea băncilor a fost folosită și în unele console de jocuri [12] . De exemplu, Atari 2600 a permis doar abordarea a 4 KB de ROM, astfel încât cartușele de joc ulterioare de la 2600 au inclus propriile scheme de comutare a băncilor pentru a permite utilizarea mai multor ROM și astfel să se potrivească celor mai complexe (cu prețul mai multor coduri). și date de joc precum grafică și niveluri) jocuri [13] . Sistemul de divertisment Nintendo conținea un procesor 6502 modificat , dar cartușele sale conțineau uneori un megabit sau mai mult de ROM adresabil printr-un circuit de comutare a băncilor numit Controller Multi-Memory. Cartușele Game Boy foloseau un cip numit MBC (Memory Bank Controller) care nu numai că efectuează comutarea băncilor ROM, ci și comutarea internă a băncilor SRAM și chiar accesul la dispozitive externe, cum ar fi porturi infraroșu sau motoare cu vibrații. Schimbarea băncilor a fost folosită și în sistemele de jocuri ulterioare.

Utilizare în adaptoare video

Unele tipuri de adaptoare video pot folosi o tehnică similară de tamponare dublă pentru a îmbunătăți redarea video . În acest caz, în timp ce procesorul actualizează conținutul unei zone a memoriei video, circuitul de imagini citește și afișează conținutul celei de-a doua zone. Când procesorul finalizează actualizarea, trimite un semnal către circuitul adaptorului video pentru a comuta băncile active, astfel încât momentul schimbării imaginii să nu fie însoțit de artefacte sau distorsiuni. În acest caz, procesorul poate avea acces la întreaga memorie video, dar circuitele adaptorului video utilizează comutarea băncilor pentru a accesa diferite zone ale memoriei video. Dacă două sau mai multe bănci de memorie video conțin imagini ușor diferite, comutarea rapidă între ele vă permite să creați animații sau alte efecte vizuale pe care performanța procesorului ar putea să nu le poată realiza direct.

Metode alternative și dezvoltare

Schimbarea băncilor a fost înlocuită în multe sisteme pe 16 biți prin segmentarea memoriei , care, la rândul său, a făcut loc unităților de control al memoriei de paginare . Cu toate acestea, în sistemele încorporate, schimbarea băncilor este încă populară datorită simplității, costului scăzut și, adesea, a relevanței mai mari în domeniu decât în ​​computerele de uz general.

Calculatoare care folosesc comutarea bancilor

Note

  1. D. Givone, R. Rosser. Microprocesoare și microcalculatoare. Curs introductiv = Microprocesoare/Microcalculatoare O introducere. - M . : Mir, 1983. - S. 367. - 464 p.
  2. D. Aspinall, William Allan Clark. Microprocesorul și aplicația sa: un curs avansat . - Cambridge University Press, 1978. - S.  47 -50. — 420 p. — ISBN ISBN 0-521-22241-9 .
  3. C. Gordon Bell, Allen Newell. Structuri computerizate: lecturi și exemple . - McGraw-Hill, 1971. - P.  156 . — 668 p.
  4. Steve Heath. Proiectarea sistemelor încorporate . - A doua editie. - Newnes, 2003. - S. 242. - 430 p. — ISBN ISBN 0-7506-5546-1 .
  5. 12 Scott Mueller . Actualizarea și repararea PC-urilor . - A doua editie. - Que Books, 1992. - S.  699 -700. - ISBN ISBN 0-88022-856-3 .
  6. Paul Freiberger. Digital Research oferă upgrade CP/M  // Info World. - InfoWorld Media Group, 1982. - V. 4 , Nr. 42 . - S. 1 . — ISSN 0199-6649 .
  7. Jake Matijevic și colaboratorii „Mars Pathfinder Frequently Asked Questions: Sojourner Rover” Arhivat 29 decembrie 2014 la Wayback Machine . 1997.
  8. Edward W. Tunstel, Richard V. Welch, Brian H. Wilcox. Control încorporat al unui rover științific în miniatură pentru explorarea planetară . - 1998. - doi : 10.1.1.52.8645 .
  9. Christine McGeever. Noul 1-2-3 primește 4 megaocteți de memorie, Lotus, Intel Break PC-DOS Memory Barrier  // InfoWorld. - InfoWorld Media Group, 1985. - V. 7 , Nr. 17 . - S. 15 . — ISSN 0199-6649 .
  10. Jeff Angus. Actualizarea EMS ofera DOS multitasking imbunatatit  // InfoWorld. - InfoWorld Media Group, 1987. - V. 9 , Nr. 33 . - S. 5 . — ISSN 0199-6649 .
  11. Manualul de software pentru ingineri și oameni de știință / ed. Paul W Ross. - CRC Press, 1995. - P. 26. - ISBN ISBN 0-8493-2530-7 .
  12. Charles W., Jr. Carey. Inventatori, antreprenori și vizionari în afaceri americani. - Editura Infobase, 2002. - S. 322-324. — ISBN 0-8160-4559-3 .
  13. Joe Grand, Kevin D. Mitnick, Ryan Russell. Hacking hardware: distrați-vă în timp ce vă anulați garanția . - Syngress, 2004. - S. 229. - 448 p. — ISBN 1-932266-83-6 .

Link- uri externe