Si está tratando de controlar la memoria desde una CPU, entonces si usa dos bancos en lugar de uno, puede eliminar la primera línea de dirección. Si usa cuatro bancos, también puede eliminar el segundo. ¿Por qué es esto?
Creo que la respuesta de W5VO es una excelente descripción de un sistema de memoria moderno, pero en realidad no describe el cambio de banco .
Desea cambiar de banco cuando tiene un bus de direcciones estrecho (como 8 o 16 bits) y desea agregar más memoria. Luego puede usar líneas GPIO separadas para cambiar chips de memoria tal como escribió W5VO. Debe tener cuidado porque todos sus punteros siguen siendo de 8 bits y el cambio es manual, por lo que puede causar un desastre fácilmente.
Esta técnica era/es popular en micros pequeños, pero también en DOS de 16 bits (nació en el 80286) y en procesadores modernos de 32 bits para manejar más de 4 GB de memoria (pero aquí el truco se hace de manera invisible por el kernel y un programa solo pueden ver 4GB).
Asumiré que está hablando de memoria paralela, y que cuando dice "use dos bancos en lugar de uno" está usando dos chips que tienen la misma memoria total, pero cada uno es la mitad de grande.
Aquí está la cosa: en realidad no puedes eliminar esa línea de dirección de tu CPU. Es posible que no vaya directamente al chip de memoria, pero si lo quita, no hay forma de distinguir entre los dos chips. El ingrediente que falta es la función de "selección de chip". La mayoría de los chips de memoria tendrán un pin o un conjunto de pines que se utilizan básicamente para decirle a ese chip de memoria en particular que el procesador solo quiere comunicarse con ese chip.
Consideremos un ejemplo simple: 256 palabras de memoria. Esto da como resultado un bus de direcciones de 8 bits.
Este es un ejemplo realmente simple, pero escala bien. Este es básicamente el procedimiento para hacer que varios chips de memoria trabajen juntos para aumentar el espacio de direcciones.
Si uno tiene medio egabyte de memoria direccionable por bytes, tiene que haber una forma de generar una dirección de 19 bits. Un buen enfoque fácil es tener una CPU cuyo bus de direcciones tenga 19 o más líneas de dirección (por ejemplo, un 8088). Otro enfoque es hacer que algunas de las líneas de dirección sean generadas por algo que no sea el bus de direcciones de la CPU. Por ejemplo, supongamos que uno tiene una CPU con un bus de direcciones de 16 bits y desea construir un sistema con 32 KB de RAM y ~512 KB de ROM. Se podría usar un AND de 13 entradas para detectar un acceso a la dirección 0xFFF0-0xFFFF (una entrada del AND estaría vinculada a una señal de 'dirección válida'), y un pestillo de 4 bits para agarrar los 4 bits inferiores de tal DIRECCIÓN. Quince de los bits de dirección de la ROM estarían conectados al bus de direcciones de la CPU; los otros cuatro bits estarían conectados a salidas de pestillo.
Tenga en cuenta que dicho sistema no tendría 512 KB de ROM utilizable, ya que acceder a cualquiera de los últimos 16 bytes de cada banco de 32K cambiaría a un banco de 32K en particular. Así, 0xFFF0 solo estaría disponible en el banco 0, 0xFFF1 en el banco 1, etc. Además, en muchos casos, uno terminaría teniendo que duplicar algún código en diferentes bancos. Aún así, dicho sistema sería bastante práctico y, de hecho, es muy similar a lo que se hizo en muchas cosas, como los juegos de arcade de los años 80.
nick t