línea A20


El A20 , o línea de dirección 20 , es una de las líneas eléctricas que componen el bus del sistema de un sistema informático basado en x86 . La línea A20 en particular se usa para transmitir el bit 21 en el bus de direcciones .

Un microprocesador normalmente tiene una cantidad de líneas de dirección igual al logaritmo de base dos de la cantidad de palabras en su espacio de direcciones físicas . Por ejemplo, un procesador con 4 GB de espacio físico direccionable por bytes requiere 32 líneas, que se denominan A0 a A31. Las líneas reciben el nombre del número basado en cero del bit en la dirección que están transmitiendo. El bit menos significativo es el primero y, por lo tanto, se numera como bit 0 y se señaliza en la línea A0. A20 transmite el bit 20 (el bit 21) y se activa una vez que las direcciones alcanzan 1 MB o 2 20 .

Los procesadores Intel 8086 , Intel 8088 e Intel 80186 tenían 20 líneas de dirección, numeradas de A0 a A19; con estos, el procesador puede acceder a 2 20 bytes, o 1 MB. Los registros de direcciones internas de tales procesadores solo tenían 16 bits. Para acceder a un espacio de direcciones de 20 bits, una referencia de memoria externa se compuso de una dirección de compensación de 16 bits agregada a un número de segmento de 16 bits , desplazada 4 bits para producir una dirección física de 20 bits. La dirección resultante es igual a segmento × 16 + desplazamiento . [1]Hay muchas combinaciones de segmento y desplazamiento que producen la misma dirección física de 20 bits. Por lo tanto, había varias formas de direccionar el mismo byte en la memoria. [2] Por ejemplo, aquí hay cuatro de las 4096 combinaciones diferentes de segmento:compensación, todas haciendo referencia al byte cuya dirección física es 0x000FFFFF (el último byte en 1 MB de espacio de memoria):

Con la última referencia, un aumento de uno en el desplazamiento produce F800:8000, que es una dirección adecuada para el procesador, pero dado que se traduce en la dirección física 0x00100000 (el primer byte de más de 1 MB), el procesador necesitaría otra dirección línea para el acceso real a ese byte. Dado que no existe tal línea en la línea de procesadores 8086, el bit 21 anterior, mientras está configurado, se descarta, lo que hace que la dirección F800:8000 se "envuelva" [1] y apunte realmente a la dirección física 0x00000000.

Cuando IBM diseñó la máquina IBM PC AT (1984), decidió utilizar el nuevo microprocesador Intel 80286 de mayor rendimiento . El 80286 podría abordar hasta 16 MB de memoria del sistema en modo protegido . Sin embargo, se suponía que la CPU emularía el comportamiento de un 8086 en modo real., su modo de inicio, para que pudiera ejecutar sistemas operativos y programas que no fueron escritos para el modo protegido. Sin embargo, el 80286 no forzó la línea A20 a cero en modo real. Por tanto, la combinación F800:8000 ya no apuntaría a la dirección física 0x00000000, sino a la dirección 0x00100000. Como resultado, los programas que se basan en el ajuste de dirección ya no funcionarán. Para seguir siendo compatible con este tipo de programas, IBM decidió corregir el problema en la placa base .

Eso se logró insertando una puerta lógica en la línea A20 entre el procesador y el bus del sistema, que se denominó Gate-A20 . Gate-A20 se puede habilitar o deshabilitar mediante software para permitir o evitar que el bus de direcciones reciba una señal de A20. Está configurado como no aprobado para la ejecución de programas más antiguos que se basan en el ajuste. En el momento del arranque, el BIOS primero habilita Gate-A20 cuando cuenta y prueba toda la memoria del sistema y luego lo desactiva antes de transferir el control al sistema operativo.


El área de memoria alta solo está disponible en modo real en los procesadores 80286 si la puerta A20 está habilitada.