Conmutación de bancos de memoria
Laconmutación de bancos de memoria[1] es una técnica utilizada en el campo del diseño de computadoras para aumentar la cantidad dememoria principalaccesible. Por ejemplo, una computadora que utilice unaunidad central de procesamiento (CPU)con unbusde direcciones de 16 bits y un bus de datos de 8 bits es capaz de direccionar directamente 216bytes de memoria (64 KiB). Sin embargo, cuando una computadora con esta CPU además es capaz de conmutar bancos de memoria, podría seleccionar entre varios bancos de hasta 64 KiB cada uno. De esta forma, una CPU con la capacidad de direccionar directamente 64 KiB podría acceder a 512 KiB de memoria principal si utilizara ocho bancos de memoria de 64 KiB, aunque en un instante dado solo podría acceder a un banco (el seleccionado en ese momento).[2]
En ocasiones, la conmutación de bancos de memoria es llamada paginación, y los bancos de memoria son llamados páginas.[3] Sin embargo, la conmutación de bancos de memoria no debe ser confundida con lapaginación de memoria,ya que en la paginación de memoria son los programas los que se dividen en bloques del mismo tamaño (páginas) y estas pueden ser guardadas y recuperadas dealmacenamiento secundario,permitiendo, por ejemplo, que para un programa aparentemente haya másmemoria principaldisponible de la que queda libre de forma contigua.[4]
Historia
[editar]El uso de la conmutación de bancos de memoria empezó en la época de las minicomputadoras a mediados de la década de 1960.[5] La CDC-160, por ejemplo, era una minicomputadora con un bus de direcciones de 12 bits, lo que le permitía direccionar directamente 212(4096) posiciones de memoria. La CDC-160 fue mejorada en 1962 con el lanzamiento del modelo CDC-160A que tenía la habilidad de direccionar más memoria que la CDC-160 gracias a la conmutación de bancos de memoria. La CDC-160A implementaba varios bancos de memoria (8 como máximo), lo que le permitía acceder hasta a 32,768 posiciones de memoria.[6][7]
La capacidad de conmutar bancos de memoria llegó a ser aún más importante con la introducción de lasmicrocomputadorasa mediados de la década de 1970.
Usos
[editar]Cromemco
[editar]La primera microcomputadora que utilizó la conmutación de bancos de memoria era laCromemco Z-1lanzada en 1976.[9] Esta microcomputadora utilizó el microprocesadorZ80que era capaz de direccionar directamente 64 KiB deRAM.Cada tarjeta de memoria en esta microcomputadora tenía un 8interruptores DIPpara elegir cuales eran los bancos donde la tarjeta residía. Cada banco tenía la capacidad de 64 KiB, por eso cuando disponía de ocho bancos de memoria, la capacidad de memoria de la microcomputadora aumentaba a 512 KiB. Mediante la ejecución de una instrucción de entrada/salida del microprocesador Z80 se podía seleccionar el banco activo.[2]
IBM
[editar]La computadoraIBM PCfue lanzada en 1981. La IBM PC utilizó el microprocesador8088que tenía 20 líneas de direcciones y, por eso, podía direccionar directamente 220posiciones (1 MiB) de memoria principal. En 1985 se creó la “especificación de memoria expandida”para definir la conmutación de bancos de memoria en la IBM PC. Como resultado la memoria de la IBC PC pudo ser expandida, no estando limitada a 1 MiB.[10]
ZX Spectrum 128K
[editar]Las microcomputadoras ZX Spectrum 128K (1985) yZX Spectrum 128 +2(1986) utilizan un procesador Z80. Este procesador tiene un bus de direcciones de 16 bits y un bus de datos de 8 bits (1 bytes), los cuales le permiten direccionar solamente 64 KiB (216) de memoria principal en total. Para ampliar esta cantidad de memoria accesible estas microcomputadoras usan la técnica de conmutación de bancos de memoria, dividiendo la memoria en bancos de 16 KiB. En concreto disponen de 128 KiB de RAM (en 8 bancos) y 32 KiB de ROM (en 2 bancos). Para una configuración dada de los bancos, el procesador solo puede acceder al banco de memoria ROM seleccionado, el 0 o el 1 (a través de las direcciones de la 0x0000 a la 0x3FFF en hexadecimal), al banco 5 de RAM (direcciones de la 0x4000 a la 0x7FFF), al banco 2 de RAM (direcciones de la 0x8000 a la 0xBFFF) y a un banco de RAM seleccionado de entre todos los disponibles (direcciones de la 0xC000 a la 0xFFFF). Para seleccionar a qué banco de ROM y qué banco de RAM se quiere acceder, un programa escribe en el puerto de entrada/salida 0x7FFD.
Las microcomputadorasZX Spectrum 128 +3(1987) y ZX Spectrum 128 +2A (1988) tienen el mismo procesador y utilizan la técnica de conmutación de bancos de memoria para acceder a 128 KiB de RAM y 64 KiB de ROM.[11]
Microcontroladores
[editar]Algunosmicrocontroladores(microprocesadores que incluyen en el mismo circuito integrado una considerable circuitería de entrada/salida y habitualmente incluso memoria principal) usan la conmutación de bancos de memoria, por ejemplo, para acceder a múltiples bancos de registros de configuración o de memoria principal. Un ejemplo es elmicrocontrolador PIC16F, el cual, divide su memoria RAM en bancos. Esto permite que las instrucciones del procesador sean más cortas, disminuyendo el espacio que ocupa el programa en memoria. Sin embargo, se requiere añadir instrucciones adicionales para acceder a algunos registros que se usan con menos frecuencia.[12]
NASA
[editar]Un ejemplo del uso de la conmutación de bancos de memoria en unsistema embebidoocurrió en la misión a Marte llamadaMars Pathfinderen 1997. Esta misión de NASA llevó a Marte un pequeño vehículo de seis ruedas, unMars roverque se llamó Sojourner, para explorar y sacar fotos del planeta. Sojourner fue controlado por un microprocesador 80C85 que podía direccionar directamente 64 KiB de memoria. El Sojourner tenía 256 KiB de memoria estática (SRAM) distribuida en 4 bancos de 64 KiB cada uno y utilizaba una instrucción de entrada/salida del microprocesadorla para seleccionar el banco de memoria activo.[13]
Referencias
[editar]- ↑Garzón Villar, Mª Luisa; Sampalo de la Torre, Mª de los Ángeles; Leyva Cortés, Esteban; Prieto Tinoco, Ignacio (2004).Informática. Temario de oposiciones al cuerpo de profesores de enseñanza secundaria2.Editorial MAD. p. 34.ISBN84-665-1150-4.
- ↑abGarland, Harry(1982).Diseño de sistemas microprocesadores.Madrid, España: Paraninfo. pp. 95-96.ISBN84-283-1157-9.
- ↑«Historia de los ordenadores Sinclair».computeremuzone.com.29 de junio de 2009.Consultado el 3 de mayo de 2023.
- ↑Silva, Martín (2015).«Capítulo 3:Memoria».Sistemas Operativos(1ª edición). Marcombo, S.A. p. 93.ISBN9788426722768.
- ↑Bell, Gordon; Newell, Allen (1971).Computer structures: readings and examples.Mc Graw Hill. p.156.
- ↑160 Computer Programming Manual.Control Data Corporation. 1960.Consultado el 14 de enero de 2015.
- ↑Control Data 160-A Computer Programming Manual.Control Data Corporation. 1963.Consultado el 14 de enero de 2015.
- ↑Garland, Harry(1977).«Design Innovations in Personal Computers».Computer(IEEE Computer Society)10(3): 25.doi:10.1109/c-m.1977.217669.«An eight-position DIP switch on such cards is used to select one (or more) of eight banks of memory».
- ↑Hogan, Thom (1981).«Share and Share Alike: Multiuser Hardware Explained».InfoWorld3(11): 18. «Cromemco was the first microcomputer manufacturer to refine and exploit bank switching.»
- ↑Duncan, Ray (1986).«Lotus/Intel/Microsoft Expanded Memory».Byte(en inglés)10(11): 168.
- ↑Romero, Santiago (marzo de 2009).«Paginación de memoria 128K».Magazine ZX(17).Consultado el 30 de abril de 2023.
- ↑Verle, Milan.«3.1 Características Básicas del PIC16f887».Microcontroladores PIC – Programación en C con ejemplos.MikroElektronika.
- ↑E. Tunstel, R. Welch, B. Wilcox (1998),Embedded control of a miniature science rover for planetary exploration.