Cambio de banco - Bank switching

Un mapa de memoria hipotético de la memoria conmutada por banco para un procesador que solo puede direccionar 64 KB. Este esquema muestra 200 KB de memoria, de los cuales el procesador solo puede acceder a 64 KB en cualquier momento. El sistema operativo debe administrar la operación de cambio de banco para garantizar que la ejecución del programa pueda continuar cuando parte de la memoria no sea accesible para el procesador.

El cambio de banco es una técnica utilizada en el diseño de computadoras para aumentar la cantidad de memoria utilizable más allá de la cantidad directamente direccionable por las instrucciones del procesador . Puede usarse para configurar un sistema de manera diferente en diferentes momentos; por ejemplo, una ROM necesaria para iniciar un sistema desde un disquete podría cambiarse cuando ya no se necesite. En los sistemas de videojuegos, el cambio de banco permitió desarrollar juegos más grandes para jugar en las consolas existentes.

El cambio de banco se originó en sistemas de miniordenadores . Muchos microcontroladores y microprocesadores modernos utilizan la conmutación de bancos para administrar la memoria de acceso aleatorio , la memoria no volátil, los dispositivos de entrada y salida y los registros de administración del sistema en pequeños sistemas integrados . La técnica era común en los sistemas de microcomputadoras de 8 bits . La conmutación de banco también se puede utilizar para evitar las limitaciones en el ancho del bus de direcciones, donde algunas restricciones de hardware impiden la adición directa de más líneas de direcciones, y para evitar las limitaciones en el ISA , donde las direcciones generadas son más estrechas que el ancho del bus de direcciones. Algunos microprocesadores orientados al control utilizan una técnica de conmutación de bancos para acceder a los registros de control y E / S internos, lo que limita el número de bits de dirección de registro que deben utilizarse en cada instrucción.

A diferencia de la administración de memoria por paginación , los datos no se intercambian con un dispositivo de almacenamiento masivo como el almacenamiento en disco . Los datos permanecen en almacenamiento inactivo en un área de memoria que actualmente no es accesible para el procesador (aunque puede ser accesible para la pantalla de video, el controlador DMA u otros subsistemas de la computadora) sin el uso de instrucciones especiales de prefijo.

Técnica

La conmutación de banco se puede considerar como una forma de ampliar el espacio de direcciones de las instrucciones del procesador con algún registro. Ejemplos:

  • El sistema de seguimiento a un procesador con una dirección de 12 bits tiene un bus de direcciones de 15 bits, pero no hay forma de especificar directamente los tres bits más altos en el bus de direcciones. Se pueden utilizar registros bancarios internos para proporcionar esos bits.
  • El sistema de seguimiento a un procesador con una dirección de 15 bits tiene un bus de direcciones de 18 bits, pero las instrucciones heredadas solo tienen 15 bits de dirección; Se pueden utilizar registros bancarios internos para proporcionar esos bits. Algunas instrucciones nuevas pueden especificar explícitamente el banco.
  • Un procesador con un bus de direcciones externas de 16 bits solo puede direccionar 2 16  = 65536 ubicaciones de memoria. Si se agregó un pestillo externo al sistema, podría usarse para controlar a cuál de los dos conjuntos de dispositivos de memoria, cada uno con 65536 direcciones, se puede acceder. El procesador podría cambiar qué conjunto está en uso actual estableciendo o borrando el bit de pestillo.
    El procesador puede configurar o borrar el pestillo de varias formas; una dirección de memoria particular puede decodificarse y usarse para controlar el pestillo o, en procesadores con direcciones de E / S decodificadas por separado, puede decodificarse una dirección de salida. Se podrían reunir varios bits de control de conmutación de banco en un registro, duplicando aproximadamente los espacios de memoria disponibles con cada bit adicional en el registro.
    Debido a que el pestillo (o registro) de selección de banco externo no está conectado directamente con el contador de programa del procesador, no cambia automáticamente de estado cuando el contador de programa se desborda; esto no puede ser detectado por el pestillo externo ya que el contador del programa es un registro interno del procesador. La memoria adicional no está perfectamente disponible para los programas. Los registros internos del procesador permanecen en su longitud original, por lo que el procesador no puede abarcar directamente toda la memoria conmutada por banco, por ejemplo, incrementando un registro interno. En cambio, el procesador debe realizar explícitamente una operación de cambio de banco para acceder a grandes objetos de memoria. Existen otras limitaciones. Generalmente, un sistema de conmutación de bancos tendrá un bloque de memoria de programa que es común a todos los bancos; Independientemente del banco que esté activo actualmente, para parte del espacio de direcciones solo se utilizará un conjunto de ubicaciones de memoria . Esta área se usaría para contener el código que administra las transiciones entre bancos y también para procesar las interrupciones .

A menudo, una sola base de datos abarca varios bancos y surge la necesidad de mover registros entre bancos (como para ordenar). Si solo se puede acceder a un banco a la vez, sería necesario mover cada byte dos veces: primero al área de memoria común, realizar un cambio de banco al banco de destino y luego mover el byte al banco de destino. Si la arquitectura de la computadora tiene un motor DMA o una segunda CPU, y sus restricciones de acceso bancario difieren, se debe usar cualquier subsistema que pueda transferir datos directamente entre bancos.

A diferencia de un esquema de memoria virtual , el cambio de banco debe ser administrado explícitamente por el programa en ejecución o el sistema operativo; el hardware del procesador no puede detectar automáticamente que se requieren datos que no están mapeados actualmente en el banco activo. El programa de aplicación debe realizar un seguimiento de qué banco de memoria contiene un dato requerido y luego llamar a la rutina de cambio de banco para activar ese banco. Sin embargo, el cambio de banco puede acceder a los datos mucho más rápido que, por ejemplo, recuperar los datos del almacenamiento en disco.

Uso de microcomputadoras

Se utilizó el interruptor de selección de banco en la placa de memoria Cromemco para mapear la memoria en uno o más de 8 bancos distintos de 64 KB.

Los procesadores con direccionamiento de 16 bits ( 8080 , Z80 , 6502 , 6809 , etc.) comúnmente utilizados en las primeras consolas de videojuegos y computadoras domésticas pueden direccionar directamente solo 64  KB . Los sistemas con más memoria tenían que dividir el espacio de direcciones en varios bloques que podían mapearse dinámicamente en partes de un espacio de direcciones más grande. Se utilizó la conmutación de bancos para lograr este espacio de direcciones más grande mediante la organización de la memoria en bancos separados de hasta 64 KB cada uno. Los bloques de varios tamaños se activaron y desactivaron mediante registros de selección de banco o mecanismos similares. Cromemco fue el primer fabricante de microcomputadoras en utilizar conmutación bancaria, admitiendo 8 bancos de 64 KB en sus sistemas.

Al usar el cambio de banco, se requirió cierta precaución para no dañar el manejo de llamadas a subrutinas , interrupciones , la pila de la máquina , etc. Si bien el contenido de la memoria temporalmente desconectada de la CPU era inaccesible para el procesador, podría ser utilizado por otro hardware, como pantalla de video, DMA , dispositivos de E / S , etc. CP / M-80 3.0 lanzado en 1983 y el Los TRS-80 basados ​​en Z80, el Modelo 4 y el Modelo II admitían la conmutación de banco para permitir el uso de más de los 64 KB de memoria que el procesador 8080 o Z80 podría abordar.

La conmutación de banco permitió agregar memoria y funciones adicionales a un diseño de computadora sin el gasto y la incompatibilidad de cambiar a un procesador con un bus de direcciones más amplio . Por ejemplo, el C64 usó conmutación de banco para permitir 64 KB completos de RAM y aún proporcionar ROM y E / S mapeadas en memoria también. El Atari 130XE podría permitir que sus dos procesadores (el 6502 y el ANTIC ) accedan a bancos de RAM separados, permitiendo a los programadores crear campos de juego grandes y otros objetos gráficos sin usar la memoria visible para la CPU.

Microcontroladores

Los microcontroladores (microprocesadores con hardware de entrada / salida significativo integrado en el chip) pueden usar la conmutación de banco, por ejemplo, para acceder a múltiples registros de configuración o memoria de lectura / escritura en el chip. Un ejemplo es el microcontrolador PIC . Esto permite que las palabras de instrucción breves ahorren espacio durante la ejecución del programa de rutina, a costa de las instrucciones adicionales necesarias para acceder a los registros que se utilizan con poca frecuencia, como los que se utilizan para la configuración del sistema al inicio.

La PC de IBM

Memoria ampliada en IBM PC

En 1985, las empresas Lotus e Intel introdujeron la Especificación de memoria expandida (EMS) 3.0 para su uso en computadoras compatibles con IBM PC que ejecutan MS-DOS . Microsoft se unió para las versiones 3.2 en 1986 y 4.0 en 1987 y la especificación se conoció como Lotus-Intel-Microsoft EMS o LIM EMS. Es una forma de técnica de cambio de banco que permite más de los 640 KB de RAM definidos por la arquitectura original de IBM PC, al permitir que aparezca por partes en una "ventana" de 64 KB ubicada en el área de memoria superior . Los 64 KB se dividen en cuatro "páginas" de 16 KB que se pueden cambiar de forma independiente. Algunos juegos de computadora hicieron uso de esto, y aunque EMS es obsoleto, la función es emulada hoy en día por los sistemas operativos posteriores de Microsoft Windows para proporcionar compatibilidad con esos programas.

La posterior eXtended Memory Specification (XMS), también ahora obsoleta, es un estándar para, en principio, simular la conmutación de bancos para memoria por encima de 1 MB (llamada " memoria extendida "), que no es directamente direccionable en el modo real de los procesadores x86 en que ejecuta MS-DOS. XMS permite copiar la memoria extendida en cualquier lugar de la memoria convencional, por lo que los límites de los "bancos" no son fijos, pero en todos los demás aspectos funciona como el cambio de banco de EMS , desde la perspectiva de un programa que lo utiliza. Las versiones posteriores de MS-DOS (a partir de la versión 5.0) incluían el controlador EMM386, que simula la memoria EMS mediante XMS, lo que permite que los programas utilicen memoria extendida incluso si se escribieron para EMS. Microsoft Windows emula también XMS, para aquellos programas que lo requieran.

Juegos de consolas

El cambio de banco también se utilizó en algunas consolas de videojuegos . El Atari 2600 , por ejemplo, solo podía abordar 4 KB de ROM, por lo que los cartuchos de juegos 2600 posteriores contenían su propio hardware de conmutación de banco para permitir el uso de más ROM y, por lo tanto, permitir juegos más sofisticados (a través de más código de programa e igualmente cantidades importantes y mayores de datos del juego, como gráficos y diferentes etapas del juego). El sistema de entretenimiento de Nintendo contenía un 6502 modificado, pero sus cartuchos a veces contenían un megabit o más de ROM, direccionado a través de un cambio de banco llamado controlador de memoria múltiple . Los cartuchos de Game Boy usaban un chip llamado MBC (Memory Bank Controller), que no solo ofrecía conmutación de banco de ROM, sino también conmutación de banco de SRAM de cartucho , e incluso acceso a periféricos como enlaces infrarrojos o motores de vibración. El cambio de banco todavía se usaba en sistemas de juego posteriores. Varios cartuchos de Sega Mega Drive , como Super Street Fighter II, tenían más de 4 MB de tamaño y requerían el uso de esta técnica (4 MB es el tamaño máximo de dirección). La computadora de mano GP2X de Gamepark Holdings utiliza la conmutación de banco para controlar la dirección de inicio (o compensación de memoria) para el segundo procesador.

Procesamiento de video

En algunos tipos de pantallas de video por computadora , se puede usar la técnica relacionada de almacenamiento en búfer doble para mejorar el rendimiento del video. En este caso, mientras el procesador actualiza el contenido de un conjunto de ubicaciones de memoria física, el hardware de generación de vídeo accede y muestra el contenido de un segundo conjunto. Cuando el procesador ha completado su actualización, puede enviar una señal al hardware de visualización de video para intercambiar bancos activos, de modo que la transición visible en la pantalla esté libre de artefactos o distorsión. En este caso, el procesador puede tener acceso a toda la memoria a la vez, pero el hardware de visualización de video se cambia de banco entre partes de la memoria de video. Si los dos (o más) bancos de memoria de video contienen imágenes levemente diferentes, un ciclo rápido (cambio de página) entre ellos puede crear animaciones u otros efectos visuales que, de lo contrario, el procesador podría ser demasiado lento para realizar directamente.

Técnicas alternativas y sucesoras

El cambio de banco fue reemplazado posteriormente por la segmentación en muchos sistemas de 16 bits , que a su vez dio paso a las unidades de gestión de memoria de paginación . Sin embargo, en los sistemas integrados, la conmutación de bancos se sigue utilizando a menudo por su simplicidad, bajo costo y, a menudo, una mejor adaptación a esos contextos que a la informática de propósito general.

Ver también

Referencias

enlaces externos