Bank switching

Uit Wikipedia, de vrije encyclopedie
Geheugenkaart voor een hypothetisch 64k bank-switched systeem, waar verschillende geheugenbanken voor verschillende gebruikers wordt ingezet

Bank switching is een manier om een processor meer geheugen te laten gebruiken dan door de woordbreedte van de adresbus kan worden geadresseerd. Conceptueel wordt het totale aanwezige geheugen verdeeld in twee of meer stukken (memory banks) die afzonderlijk kunnen worden geselecteerd.

Een processor met een 16-bits adresbus (bijvoorbeeld een Z-80) kan maximaal 64kiB geheugen adresseren, wat neerkomt op 65536 geheugencellen. Omdat dit in sommige gevallen te weinig is, en een processor met meer adreslijnen niet beschikbaar of te duur is, kan middels wat extra hardware een (of meer) extra adreslijnen worden gesimuleerd. Elke extra "adreslijn" verdubbelt het adresbereik.

De extra adreslijnen kunnen niet direct in een intern adres worden gecodeerd, maar vereisen een I/O-instructie om de gesimuleerde adreslijn 'hoog' of 'laag' te maken. Deze actie wordt met bank switching aangeduid.

Voor- en nadelen[bewerken | brontekst bewerken]

Zoals boven al beschreven, kan met een relatief kleine processor een relatief groot geheugenbereik worden gerealiseerd. Dit kan een voordeel zijn als grotere processoren, vanwege hun energie-dissipatie of hun prijs niet kunnen worden gebruikt. Vooral de laatste reden is voor hobbycomputers, zoals de ZX-81, de MSX of de Philips P-2000 vaak doorslaggevend en men treft deze techniek dan ook relatief vaak aan in de op microprocessoren gebaseerde hobby-computers uit de jaren '80.

Omdat de verschillende banken niet tegelijkertijd kunnen worden gebruikt, en het omschakelen extra instructies vereist, is het verplaatsen van inhoud van de ene naar de andere bank een (relatief) tijdrovende zaak. Ook zijn gegevens of subroutines die in de ene bank staan, niet beschikbaar voor processen die van een andere bank gebruikmaken. Om die reden is het gebruikelijk niet het hele geheugenbereik op deze manier te adresseren, maar slechts een gedeelte, zodat een gedeelte van het geheugen gebruikt kan worden voor gedeelde gegevens en routines.

Het grootste nadeel is echter dat de gebruikte software specifiek ontworpen moet worden voor het specifieke bank switching-mechanisme, zodat portabiliteit, dat wil zeggen overdraagbarheid van software van het ene systeem naar het andere, een probleem wordt.