Cambio de banco

El cambio de banco es una forma de aumentar la cantidad de memoria utilizada en comparación con la cantidad que el procesador puede direccionar directamente [1] [2] . Este método se puede utilizar para cambiar la configuración del sistema: por ejemplo , la ROM necesaria para iniciar el sistema desde un disquete se puede desactivar cuando ya no se necesita. En las consolas de videojuegos, el cambio de banco permite desarrollar juegos más grandes para usar en la generación actual de consolas.

El cambio de banco apareció por primera vez en las minicomputadoras [3] . Muchos microcontroladores y microprocesadores modernos utilizan la conmutación de bancos para controlar la RAM , la ROM, los dispositivos de E/S y los registros de control del sistema en pequeños sistemas integrados . Este método fue muy utilizado en microcomputadoras de 8 bits . La conmutación de bancos también se puede utilizar si el ancho del bus de direcciones está artificialmente limitado y existen limitaciones de hardware que no permiten aumentar el número de líneas de direcciones. Algunos microcontroladores admiten la conmutación de bancos en el hardware, lo que reduce la cantidad de bits de dirección utilizados en las instrucciones.

A diferencia del mecanismo de " paginación " , los datos no se envían a un dispositivo de almacenamiento (disco duro). Los datos permanecen sin cambios en un área de la memoria que actualmente es inaccesible para el procesador (aunque esta área puede ser accesible para el controlador de video , el controlador DMA u otros subsistemas de la computadora).

Cómo funciona

La conmutación de banco se puede considerar como una forma de ampliar el bus de direcciones del procesador con un registro externo . Por ejemplo, un procesador con un bus de direcciones externo de 16 bits puede direccionar 2 16 = 65536 ubicaciones de memoria. Si se agrega un disparador externo al sistema , se puede usar para controlar a cuál de los dos conjuntos de bloques de memoria de 65536 celdas se accederá cada uno. El procesador puede cambiar el conjunto de bloques utilizados configurando o borrando el flip-flop.

Un disparador se puede restablecer o configurar de varias maneras: accediendo a una dirección de memoria específica o, en procesadores con instrucciones de E/S dedicadas , accediendo a un puerto de E/S específico. Varios flip-flops que controlan la conmutación de bancos se pueden combinar en un registro, por lo que cada bit del registro puede duplicar aproximadamente el número de celdas direccionables.

Dado que el disparador de selección de banco (registro) no está directamente relacionado con el contador del programa del procesador, no cambia automáticamente su estado cuando el contador del programa se desborda . Un disparador externo no puede detectar un desbordamiento, ya que el contador de programa es un registro de procesador interno. Los programas no pueden utilizar la memoria extra sin modificaciones. Dado que la longitud de los registros internos del procesador no cambia, el procesador no puede dirigirse directamente a las celdas de memoria de todos los bancos debido, por ejemplo, a un incremento de registro interno [4] . En su lugar, el procesador debe realizar explícitamente una operación de cambio de banco para acceder a los LOB en la memoria. También hay otras restricciones. Por lo general, un sistema de cambio de banco contendrá una memoria de programa compartida por todos los bancos. Independientemente del banco seleccionado actualmente, parte del espacio de direcciones se asignará a la misma área de memoria. Esta área contendrá el código que gestiona el cambio de banco y maneja las interrupciones .

A diferencia de la tecnología de memoria virtual , el cambio de banco debe ser controlado explícitamente por el programa de ejecución o el sistema operativo. El hardware del procesador no puede determinar automáticamente que se requieren datos que no están disponibles actualmente a través del banco seleccionado. El programa de aplicación debe realizar un seguimiento de qué banco de memoria contiene los datos requeridos y llamar a la rutina de cambio de banco para activar ese banco [5] . Al mismo tiempo, cambiar de banco le permite acceder a los datos más rápido que, por ejemplo, cargar páginas desde el disco.

Uso en microcomputadoras

Los procesadores con bus de direcciones de 16 bits ( Z80 , 6502 , 6809 y otros), muy utilizados en las primeras videoconsolas y ordenadores domésticos, solo podían direccionar directamente 64 KB . En los sistemas con más memoria, el espacio de direcciones tenía que dividirse en bloques que pudieran asignarse dinámicamente a bloques dentro del espacio de direcciones más grande. Los bloques de memoria de diferentes tamaños se conectaban y desconectaban mediante registros de selección de banco o mecanismos similares. Por lo general, algunos bloques siempre estaban disponibles. Se requería cuidado para no violar la corrección de las llamadas a subrutinas , el manejo de interrupciones, la integridad de la pila de llamadas y similares. Si bien el contenido del bloque de memoria deshabilitado se volvió inaccesible para el procesador, podría ser utilizado por otro hardware, como un controlador de video, un controlador DMA, dispositivos de E/S . La última versión de CP/M , lanzada en 1982, admitía el cambio de banco para usar más de 64 KB de memoria que podían abordar los procesadores 8080 y Z80 [6] .

El cambio de banco permitió agregar memoria y funcionalidad adicionales a un diseño de computadora sin la necesidad de cambiar a un procesador con un bus de direcciones más amplio , con el costo asociado y los problemas de incompatibilidad. Por ejemplo, la computadora Commodore 64 usó el cambio de banco para usar los 64 KB completos de RAM y aún usa la asignación de registro de E/S de memoria y ROM . El Atari 130XE permitió que el procesador 6502 y el controlador de video ANTIC accedieran a bancos separados de RAM, por lo que el procesador principal podía preparar objetos gráficos en el banco de memoria y luego apagarlo, y el controlador de video continuó usando estos objetos, aunque la memoria banco ya no era visible para el procesador principal.

El rover Sojourner utiliza un procesador 80C85 con un circuito de conmutación de banco externo que permite direccionar más de 512 KB de memoria a través de páginas de 16 KB [7] . Otro prototipo de rover utiliza un microcontrolador 80C51 con un circuito de conmutación de banco externo para acceder a 256 KB de RAM estática [8] .

Uso en computadoras compatibles con IBM PC

En 1985, Lotus Software e Intel introdujeron la especificación de memoria expandida  ( EMS ) versión 3.0 para su uso en computadoras IBM compatibles con PC que ejecutan MS-DOS . Con el lanzamiento de las versiones 3.2 en 1986 y 4.0 en 1987, Microsoft se unió a este grupo y la especificación se conoció como Lotus-Intel-Microsoft EMS o LIM EMS [5] [9] [10] . Extended Memory es una tarjeta de memoria de bus ISA que utiliza conmutación de banco y permite más de 640 KB de RAM permitidos por la arquitectura de PC IBM original. Se accede a la memoria extendida a través de una "ventana" en un espacio de direcciones de 64 KB ubicado en el " área de memoria alta " [11] . Estos 64 KB se dividen en cuatro "páginas" de 16 KB que se pueden cambiar de forma independiente. Muchos programas de aplicaciones y juegos de computadora lanzados antes de principios de los 90 usaban memoria extendida. Aunque EMS ahora es una tecnología obsoleta, todavía es compatible con las versiones de 32 bits del sistema operativo Microsoft Windows .

Posteriormente, se estandarizó la especificación de memoria adicional ( English  eXtended Memory Specification, XMS ), que también se encuentra obsoleta en estos momentos. XMS permite que las aplicaciones de MS-DOS en modo real accedan a la memoria más allá del primer megabyte del espacio de direcciones. Los bloques de memoria adicional se pueden copiar a la memoria principal y viceversa, y también se pueden mostrar en el área de memoria superior, simulando el cambio de banco ("bancos" en este caso pueden ser de tamaño arbitrario). Para garantizar la compatibilidad con aplicaciones que usan memoria EMS, a partir de la versión 4.01, MS-DOS presentó el controlador EMM386, que usa memoria XMS para simular la técnica de cambio de banco de memoria EMS. La compatibilidad con XMS se conserva en las versiones actuales de 32 bits del sistema operativo Microsoft Windows .

Uso en consolas de juegos

El cambio de banco también se ha utilizado en algunas consolas de juegos [12] . Por ejemplo, el Atari 2600 solo permitía direccionar 4 KB de ROM, por lo que los cartuchos de juegos posteriores del 2600 incluyeron sus propios esquemas de cambio de banco para permitir el uso de más ROM y así adaptarse a los más complejos (a costa de más código). y datos de juegos como gráficos y niveles) juegos [13] . El sistema de entretenimiento de Nintendo contenía un procesador 6502 modificado , pero sus cartuchos a veces contenían un megabit o más de ROM direccionable a través de un circuito de cambio de banco llamado controlador de memoria múltiple. Los cartuchos de Game Boy usaban un chip llamado MBC (Controlador de banco de memoria) que no solo realizaba el cambio de banco de ROM, sino también el cambio de banco SRAM interno e incluso acceso a dispositivos externos como puertos infrarrojos o motores de vibración. El cambio de banco también se utilizó en sistemas de juego posteriores.

Uso en adaptadores de video

Algunos tipos de adaptadores de video pueden usar una técnica similar de doble almacenamiento en búfer para mejorar la reproducción de video . En este caso, mientras el procesador actualiza el contenido de un área de la memoria de video, el circuito de imágenes lee y muestra el contenido de la segunda área. Cuando el procesador completa la actualización, envía una señal al circuito del adaptador de video para cambiar los bancos activos, de modo que el momento de cambiar la imagen no esté acompañado de artefactos o distorsiones. En este caso, el procesador puede tener acceso a toda la memoria de video, pero el circuito del adaptador de video usa la conmutación de banco para acceder a diferentes áreas de la memoria de video. Si dos o más bancos de memoria de video contienen imágenes ligeramente diferentes, el cambio rápido entre ellos le permite crear animaciones u otros efectos visuales que el rendimiento del procesador tal vez no pueda realizar directamente.

Métodos alternativos y desarrollo

El cambio de banco ha sido suplantado en muchos sistemas de 16 bits por la segmentación de memoria , que a su vez ha dado paso a las unidades de control de memoria de paginación . Sin embargo, en los sistemas integrados, el cambio de banco sigue siendo popular debido a su simplicidad, bajo costo y, a menudo, mayor relevancia en el campo que en las computadoras de propósito general.

Computadoras que usan conmutación de banco

Notas

  1. D. Givone, R. Rosser. Microprocesadores y microcomputadoras. Curso Introductorio = Microprocesadores/Microcomputadoras Una Introducción. - M. : Mir, 1983. - S. 367. - 464 p.
  2. D. Aspinall, William Allan Clark. El Microprocesador y su aplicación: un curso avanzado . - Cambridge University Press, 1978. - S.  47 -50. — 420 págs. — ISBN ISBN 0-521-22241-9 .
  3. C. Gordon Bell, Allen Newell. Estructuras informáticas: lecturas y ejemplos . - McGraw-Hill, 1971. - Pág  . 156 . — 668 pág.
  4. Steve Heath. Diseño de sistemas embebidos . - Segunda edicion. - Newnes, 2003. - S. 242. - 430 p. — ISBN ISBN 0-7506-5546-1 .
  5. 12 Scott Müller . Actualización y reparación de PC . - Segunda edicion. - Que Libros, 1992. - S.  699 -700. - ISBN ISBN 0-88022-856-3 .
  6. Paul Freiberger. Digital Research ofrece actualización de CP/M  // Info World. - InfoWorld Media Group, 1982. - V. 4 , No. 42 . - S. 1 . — ISSN 0199-6649 .
  7. Jake Matijevic y otros "Mars Pathfinder Frequently Asked Questions: Sojourner Rover" Archivado el 29 de diciembre de 2014 en Wayback Machine . 1997.
  8. Edward W. Tunstel, Richard V. Welch, Brian H. Wilcox. Control integrado de un rover científico en miniatura para la exploración planetaria . - 1998. - doi : 10.1.1.52.8645 .
  9. Christine McGeever. El nuevo 1-2-3 obtiene 4 megabytes de memoria, Lotus, Intel rompe la barrera de memoria de PC-DOS  // InfoWorld. - InfoWorld Media Group, 1985. - V. 7 , No. 17 . - S. 15 . — ISSN 0199-6649 .
  10. Jeff Angus. La actualización de EMS mejora la multitarea de DOS  // InfoWorld. - InfoWorld Media Group, 1987. - V. 9 , No. 33 . - S. 5 . — ISSN 0199-6649 .
  11. Manual de software para ingenieros y científicos / ed. Paul W Ross. - CRC Press, 1995. - Pág. 26. - ISBN ISBN 0-8493-2530-7 .
  12. Charles W. Jr. Carey. Inventores, empresarios y visionarios empresariales estadounidenses. - Editorial Infobase, 2002. - S. 322-324. — ISBN 0-8160-4559-3 .
  13. Joe Grand, Kevin D. Mitnick, Ryan Russell. Hackeo de hardware: diviértete mientras anulas tu garantía . - Syngress, 2004. - S. 229. - 448 p. — ISBN 1-932266-83-6 .

Enlaces externos