Pankin vaihto

Pankkivaihto on tapa lisätä käytetyn muistin määrää verrattuna siihen määrään, jonka prosessori pystyy käsittelemään suoraan [1] [2] . Tällä menetelmällä voidaan muuttaa järjestelmän kokoonpanoa: esimerkiksi ROM , joka tarvitaan järjestelmän käynnistämiseen levykkeeltä, voidaan poistaa käytöstä, kun sitä ei enää tarvita. Videopelikonsoleissa pankin vaihtaminen mahdollistaa suurempien pelien kehittämisen käytettäväksi nykyisen sukupolven konsoleissa.

Pankkivaihto ilmestyi ensimmäisen kerran minitietokoneissa [3] . Monet nykyaikaiset mikro -ohjaimet ja mikroprosessorit käyttävät pankin vaihtoa RAM- , ROM-, I/O-laitteiden ja järjestelmän ohjausrekisterien ohjaamiseen pienissä sulautetuissa järjestelmissä . Tätä menetelmää käytettiin laajalti 8-bittisissä mikrotietokoneissa . Pankkivaihtoa voidaan käyttää myös, jos osoiteväylän leveyttä on keinotekoisesti rajoitettu ja laitteistorajoitukset eivät salli osoiterivien määrän lisäämistä. Jotkut mikro-ohjaimet tukevat pankin vaihtoa laitteistossa, mikä vähentää käskyissä käytettävien osoitebittien määrää.

Toisin kuin hakumekanismissa , tietoja ei sivuta tallennuslaitteeseen (kiintolevylle). Tiedot pysyvät muuttumattomina sellaisella muistialueella, johon prosessori ei tällä hetkellä pääse käsiksi (vaikka tämä alue voi olla videoohjaimen , DMA - ohjaimen tai muiden tietokonealijärjestelmien käytettävissä).

Kuinka se toimii

Pankkivaihtoa voidaan ajatella tapana laajentaa prosessorin osoiteväylää ulkoisella rekisterillä . Esimerkiksi prosessori, jossa on 16-bittinen ulkoinen osoiteväylä, voi osoittaa 2 16 = 65536 muistipaikkaa. Jos järjestelmään lisätään ulkoinen laukaisu , sitä voidaan käyttää ohjaamaan, kumpaa kahdesta 65536 solun muistilohkojoukosta käytetään. Prosessori voi vaihtaa käytettyjä lohkoja asettamalla tai tyhjentämällä flip-flopin.

Liipaisin voidaan nollata tai asettaa useilla tavoilla: käyttämällä tiettyä muistiosoitetta tai prosessoreissa, joissa on omat I/O-ohjeet , käyttämällä tiettyä I/O-porttia. Useita pankkien vaihtoa ohjaavia kiikkuja voidaan yhdistää rekisteriksi, jolloin jokainen rekisterin bitti voi noin kaksinkertaistaa osoitettavien solujen määrän.

Koska pankkivalinnan liipaisin (rekisteri) ei liity suoraan prosessorin ohjelmalaskuriin, se ei muuta tilaansa automaattisesti, kun ohjelmalaskuri ylivuotetaan . Ylivuotoa ei voi havaita ulkoisella laukaisulla, koska ohjelmalaskuri on sisäinen prosessorirekisteri. Ohjelmat eivät voi käyttää ylimääräistä muistia ilman muutoksia. Koska prosessorin sisäisten rekisterien pituus ei muutu, prosessori ei voi suoraan osoittaa kaikkien pankkien muistisoluja esimerkiksi sisäisen rekisterin lisäyksen vuoksi [4] . Sen sijaan prosessorin on suoritettava nimenomaisesti pankinvaihtotoiminto päästäkseen muistissa oleviin LOBeihin. Muitakin rajoituksia on. Tyypillisesti pankkikytkentäinen järjestelmä sisältää yhden kaikkien pankkien yhteisen ohjelmamuistin. Valitusta pankista riippumatta osa osoiteavaruudesta kartoitetaan samalle muistialueelle. Tämä alue sisältää koodin, joka hallitsee pankin vaihtoa ja käsittelee keskeytyksiä .

Toisin kuin virtuaalimuistitekniikka , pankkien vaihtoa on ohjattava erikseen suorittavan ohjelman tai käyttöjärjestelmän toimesta. Prosessorilaitteisto ei voi automaattisesti määrittää, tarvitaanko tietoja, jotka eivät ole tällä hetkellä saatavilla valitun pankin kautta. Sovellusohjelman on seurattava, mikä muistipankki sisältää tarvittavat tiedot ja kutsuttava pankinvaihtorutiini aktivoidakseen pankin [5] . Samaan aikaan pankin vaihtaminen mahdollistaa tietojen käsittelyn nopeammin kuin esimerkiksi sivujen lataaminen levyltä.

Käyttö mikrotietokoneissa

Prosessorit, joissa oli 16-bittinen osoiteväylä ( Z80 , 6502 , 6809 ja muut), joita käytettiin laajalti ensimmäisissä pelikonsoleissa ja kotitietokoneissa, pystyivät käsittelemään vain 64 kilotavua suoraan . Järjestelmissä, joissa oli enemmän muistia, osoitetila oli jaettava lohkoihin, jotka voitiin dynaamisesti kartoittaa lohkoiksi suuremmassa osoiteavaruudessa. Erikokoisia muistilohkoja yhdistettiin ja irrotettiin pankkivalintarekistereillä tai vastaavilla mekanismeilla. Yleensä joitain lohkoja oli aina saatavilla. Vaatii varovaisuutta, jotta ei loukattu alirutiinikutsujen oikeellisuutta , keskeytysten käsittelyä, puhelupinon eheyttä ja vastaavia. Vaikka prosessori ei pääse käsiksi käytöstä poistetun muistilohkon sisältöön, muut laitteet, kuten videoohjain, DMA-ohjain, I/O-laitteet , saattoivat käyttää sitä . CP/M : n viimeisin versio , joka julkaistiin vuonna 1982, tuki pankin vaihtoa yli 64 kt:n muistin käyttämiseksi, joka voisi käsitellä 8080- ja Z80-suorittimia [6] .

Pankkien vaihtaminen mahdollisti lisämuistin ja toimintojen lisäämisen tietokonesuunnitteluun ilman tarvetta siirtyä prosessoriin, jossa on leveämpi osoiteväylä , mikä aiheutti kustannuksia ja yhteensopivuusongelmia. Esimerkiksi Commodore 64 -tietokone käytti pankin vaihtoa käyttääkseen täyttä 64 kilotavua RAM-muistia ja käyttääkseen edelleen ROM- ja muistin I/O-rekisterikartoitusta . Atari 130XE antoi 6502-prosessorille ja ANTIC-videoohjaimelle pääsyn erillisiin RAM-pankkeihin, jolloin pääprosessori saattoi valmistella grafiikkaobjekteja muistipankkiin ja sammuttaa sen, ja videoohjain jatkoi näiden objektien käyttöä, vaikka muisti pankki ei enää näkynyt pääprosessorille.

Sojourner-mönkijä käyttää 80C85- prosessoria, jossa on ulkoinen pankkikytkentäpiiri , joka mahdollistaa yli 512 kilotavun muistin käsittelemisen 16 kilotavun sivujen kautta [7] . Toinen roverin prototyyppi käyttää 80C51 -mikro-ohjainta ulkoisella pankkikytkentäpiirillä päästäkseen käsiksi 256 kilotavua staattista RAM-muistia [8] .

Käytä IBM PC -yhteensopivissa tietokoneissa

Vuonna 1985 Lotus Software ja Intel esittelivät Expanded Memory Specification ( EMS ) -version 3.0 käytettäväksi IBM PC -yhteensopivissa tietokoneissa , joissa on MS- DOS . Kun versiot 3.2 julkaistiin vuonna 1986 ja 4.0 vuonna 1987, Microsoft liittyi tähän ryhmään ja spesifikaatiosta tuli nimillä Lotus-Intel-Microsoft EMS tai LIM EMS [5] [9] [10] . Extended Memory on ISA -väylämuistikortti, joka käyttää pankinvaihtoa ja sallii yli 640 kt RAM-muistia alkuperäisen IBM PC -arkkitehtuurin salliman. Laajennettuun muistiin päästään "ikkunan" kautta 64 kilotavun osoiteavaruudessa, joka sijaitsee " korkean muistin alueella " [11] . Nämä 64 kilotavua on jaettu neljään 16 kilotavun "sivuun", joita voidaan vaihtaa itsenäisesti. Monet ennen 90-luvun alkua julkaistut sovellusohjelmat ja tietokonepelit käyttivät laajennettua muistia. Vaikka EMS on nyt vanhentunut tekniikka, sitä tuetaan edelleen Microsoft Windows -käyttöjärjestelmän 32-bittisissä versioissa. 

Myöhemmin standardisoitiin lisämuistin spesifikaatio ( English  eXtended Memory Specification, XMS ), joka on myös tällä hetkellä vanhentunut. XMS sallii reaalitilan MS-DOS-sovellusten käyttää muistia osoiteavaruuden ensimmäisen megatavun yli. Lisämuistin lohkoja voidaan kopioida päämuistiin ja takaisin, ja ne voidaan myös näyttää ylemmällä muistialueella, simuloiden pankkien vaihtoa ("pankit" voivat tässä tapauksessa olla mielivaltaisen kokoisia). Varmistaakseen yhteensopivuuden EMS-muistia käyttävien sovellusten kanssa versiosta 4.01 alkaen MS-DOS esitteli EMM386-ohjaimen, joka simuloi EMS-muistipankin vaihtotekniikkaa XMS-muistin avulla. XMS-tuki säilyy Microsoft Windows -käyttöjärjestelmän nykyisissä 32-bittisissä versioissa .

Käytä pelikonsoleissa

Pankin vaihtoa on käytetty myös joissakin pelikonsoleissa [12] . Esimerkiksi Atari 2600 salli vain 4 KB:n ROM-muistin käsittelemisen, joten 2600:n myöhemmät pelikasetit sisälsivät omat pankinvaihtojärjestelmänsä, jotta enemmän ROM-muistia voidaan käyttää ja siten mahtua monimutkaisempiin (enemmän koodin kustannuksella). ja pelitiedot, kuten grafiikat ja tasot) pelit [13] . Nintendo Entertainment System sisälsi muunnetun 6502-prosessorin , mutta sen kasetit sisälsivät joskus megabitin tai enemmän ROM-muistia, joka oli osoitettavissa monimuistiohjaimeksi kutsutun pankinvaihtopiirin kautta. Game Boy -kasetit käyttivät sirua nimeltä MBC (Memory Bank Controller), joka ei vain suorittanut ROM-pankkien vaihtoa, vaan myös sisäistä SRAM -pankkien vaihtoa ja jopa pääsyä ulkoisiin laitteisiin, kuten infrapunaportteihin tai tärinämoottoreihin. Pankinvaihtoa käytettiin myös myöhemmissä pelijärjestelmissä.

Käytä videosovittimissa

Jotkin videosovittimet voivat käyttää samanlaista kaksoispuskurointitekniikkaa videon toiston parantamiseksi . Tässä tapauksessa, kun prosessori päivittää videomuistin yhden alueen sisältöä, kuvantamispiiri lukee ja näyttää toisen alueen sisällön. Kun prosessori saa päivityksen valmiiksi, se lähettää signaalin videosovittimen piiriin vaihtamaan aktiivisia pankkeja, jotta kuvan vaihtohetkeen ei liity artefakteja tai vääristymiä. Tässä tapauksessa prosessorilla voi olla pääsy koko videomuistiin, mutta videosovitinpiiri käyttää pankin vaihtoa päästäkseen videomuistin eri osiin. Jos kahdessa tai useammassa videomuistipankissa on hieman erilaisia ​​kuvia, voit nopeasti vaihtaa niiden välillä antaa mahdollisuuden luoda animaatioita tai muita visuaalisia tehosteita, joita prosessorin suorituskyky ei välttämättä pysty suorittamaan suoraan.

Vaihtoehtoiset menetelmät ja kehitys

Pankkikytkentä on syrjäytynyt monissa 16-bittisissä järjestelmissä muistin segmentoinnilla , mikä puolestaan ​​on väistynyt hakumuistin ohjausyksiköille . Sulautetuissa järjestelmissä pankin vaihto on kuitenkin edelleen suosittua sen yksinkertaisuuden, alhaisten kustannusten ja usein suuremman merkityksen vuoksi kuin yleiskäyttöisissä tietokoneissa.

Pankkivaihtoa käyttävät tietokoneet

Muistiinpanot

  1. D. Givone, R. Rosser. Mikroprosessorit ja mikrotietokoneet. Johdantokurssi = Mikroprosessorit/Mikrotietokoneet Johdanto. - M .: Mir, 1983. - S. 367. - 464 s.
  2. D. Aspinall, William Allan Clark. Mikroprosessori ja sen sovellus: syventävä kurssi . - Cambridge University Press, 1978. - S.  47-50 . - 420 s. — ISBN ISBN 0-521-22241-9 .
  3. C. Gordon Bell, Allen Newell. Tietokonerakenteet: lukemat ja esimerkit . - McGraw-Hill, 1971. - s  . 156 . — 668 s.
  4. Steve Heath. Sulautettujen järjestelmien suunnittelu . - Toinen painos. - Newnes, 2003. - S. 242. - 430 s. — ISBN ISBN 0-7506-5546-1 .
  5. 12 Scott Mueller . PC-tietokoneiden päivitys ja korjaus . - Toinen painos. - Que Books, 1992. - S.  699-700 . - ISBN ISBN 0-88022-856-3 .
  6. Paul Freiberger. Digital Research tarjoaa CP/M-päivityksen  // Info World. - InfoWorld Media Group, 1982. - V. 4 , nro 42 . - S. 1 . — ISSN 0199-6649 .
  7. Jake Matijevic et al. "Mars Pathfinder Frequently Asked Questions: Sojourner Rover" Arkistoitu 29. joulukuuta 2014 Wayback Machinessa . 1997.
  8. Edward W. Tunstel, Richard V. Welch, Brian H. Wilcox. Sisäänrakennettu miniatyyri tiedekuljettaja planeettatutkimusta varten . - 1998. - doi : 10.1.1.52.8645 .
  9. Christine McGeever. Uusi 1-2-3 saa 4 megatavua muistia, Lotus-, Intel Break PC-DOS -muistiesteen  // InfoWorld. - InfoWorld Media Group, 1985. - V. 7 , nro 17 . - S. 15 . — ISSN 0199-6649 .
  10. Jeff Angus. EMS-päivitys parantaa DOS:n moniajoa  // InfoWorld. - InfoWorld Media Group, 1987. - V. 9 , nro 33 . - S. 5 . — ISSN 0199-6649 .
  11. Ohjelmistokäsikirja insinööreille ja tutkijoille / toim. Paul W Ross. - CRC Press, 1995. - S. 26. - ISBN ISBN 0-8493-2530-7 .
  12. Charles W., Jr. Carey. Amerikkalaiset keksijät, yrittäjät ja yritysvisionäärit. - Infobase Publishing, 2002. - S. 322-324. — ISBN 0-8160-4559-3 .
  13. Joe Grand, Kevin D. Mitnick, Ryan Russell. Laitteiston hakkerointi: pidä hauskaa, kun peruutat takuusi . - Syngress, 2004. - S. 229. - 448 s. — ISBN 1-932266-83-6 .

Ulkoiset linkit