Вы находитесь на странице: 1из 4

El A20 , o línea de direccionamiento 20 , es una de las líneas eléctricas que forman

el bus del sistema de un sistema informático basado en x86 . La línea A20 en particular se
utiliza para transmitir el bit 21 en el bus de direcciones .
Un microprocesador normalmente tiene un número de líneas de direccionamiento igual
al logaritmo de base dos de su espacio de direccionamiento físico. Por ejemplo, un
procesador con 4 GB de espacio físico direccionable en bytes requiere 32 líneas, que se
denominan de A0 a A31. Las líneas se nombran después 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 el bit 0 y se señala en la línea A0. A20 transmite el bit 20 (el bit 21) y se
activa cuando las direcciones alcanzan 1 MB o 2 20 .

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

Contenido

 1historia
 2puertas A20
 Manejador3A20
 4ver también
 5referencias
 6Lectura adicional

Historia [ editar ]
Ver también: segmentación de memoria x86.
Los primeros 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 dirección internos de dichos procesadores solo tenían 16 bits. Para
acceder a un espacio de direcciones de 20 bits, una referencia de memoria externa estaba
compuesta por una dirección de desplazamiento 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 al segmento × 16 + desplazamiento. 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. Por
ejemplo, aquí hay cuatro de las 4096 combinaciones diferentes de segmento:
desplazamiento, todas ellas que hacen referencia al byte cuya dirección física es
0x000FFFFF (el último byte en 1 MB de espacio de memoria):
F000: FFFF
FFFF: 000F
F555: AAAF
F800: 7FFF
Con referencia a la última forma, un aumento de uno en el desplazamiento
produce F800: 8000, que es una dirección adecuada para el procesador,
pero como se traduce a la dirección física 0x00100000 (el primer byte de
más de 1 MB), el procesador necesitará otra dirección línea para el
acceso real a ese byte. Como no hay una línea de este tipo en la línea de
procesadores 8086, el bit 21st de arriba, mientras está establecido, se
cae, lo que hace que la dirección F800: 8000 se "ajuste" y apunte a la
dirección física 0x00000000.
Para mejorar el rendimiento, algunos programadores
de BIOS y DOS utilizaron un truco para tener un segmento que tiene
acceso a los datos del programa (por ejemplo, desde F800: 0000 a F800:
7FFF, apuntando a las direcciones físicas 0x000F8000–0x000FFFFF), así
como los datos de E / S (como el búfer del teclado) que se ubicaron en el
primer segmento de memoria (con las direcciones F800: 8000 a F800:
FFFF apuntando a las direcciones físicas 0x00000000 a
0x00007FFF). Este truco fue utilizado por IBM / Microsoft Pascal , así
como por los programas compilados con él, [1] [2] [3] [4] incluido el MASM de
Microsoft . [4] Otra utilidad de desarrollo de uso común que usó esta fue
Microsoftcompresor ejecutable EXEPACK . [4] La envoltura de dirección
también fue utilizada por MS-DOS , para implementar el punto de entrada
CALL 5 en el Prefijo de segmento de programa ; el manejador de CALL 5
estaba en la dirección física 0x000000C0, pero para la compatibilidad CP /
M , su desplazamiento tenía que coincidir con el tamaño del segmento
(generalmente 0xFEF0). La única forma de conciliarlos era elegir un valor
de segmento que, al agregarse a 0xFEF0, resultara en una dirección física
de 0x001000C0, que se ajustaría a 0x000000C0.
Cuando IBM diseñó la máquina IBM PC AT , decidió utilizar el
nuevo microprocesador Intel 80286 de mayor rendimiento . El 80286
podría direccionar hasta 16 MB de memoria del sistema en modo
protegido . Sin embargo, se suponía que la CPU emulaba el
comportamiento de un 8086 en modo real , su modo de inicio, para que
pudiera ejecutar sistemas operativos y programas que no estaban escritos
para el modo protegido. Sin embargo, el 80286 no forzó la línea A20 a
cero en modo real. Por lo tanto, la combinación F800: 8000 ya no
apuntaría a la dirección física 0x00000000, sino a la dirección correcta
0x00100000. Como resultado, algunos programas de DOS ya no
funcionarán. Para seguir siendo compatibles con dichos programas, IBM
decidió corregir el problema en elplaca base .
Esto se logró al insertar una puerta lógica en la línea A20 entre el
procesador y el bus del sistema, que recibió el nombre de Gate-A20 . El
software puede activar o desactivar la puerta A20 para permitir o evitar
que el bus de direcciones reciba una señal de A20. Se establece en no
pasable para la ejecución de programas anteriores que se basan en el
entorno. En el momento del arranque, el BIOS primero habilita el Gate-
A20 cuando cuenta y prueba toda la memoria del sistema, y luego lo
desactiva antes de transferir el control al sistema operativo.
Originalmente, la puerta lógica era una puerta conectada al controlador de
teclado Intel 8042 . Controlarlo fue un proceso relativamente lento. Desde
entonces, se han agregado otros métodos para permitir una multitarea
más eficiente de los programas que requieren esta combinación con
programas que acceden a toda la memoria del sistema. Existen múltiples
métodos para controlar la línea A20. [5]
Desconectar A20 no envolvería todos los accesos de memoria por encima
de 1 MiB, solo aquellos en los rangos 1–2 MiB, 3–4 MiB, 5–6 MiB,
etc. El software en modo real solo se preocupaba por el área ligeramente
por encima de 1 MiB, por lo que la línea Gate-A20 era suficiente.
Habilitar la línea Gate-A20 es uno de los primeros pasos que realiza
un sistema operativo x86 en modo protegido en el proceso de inicio, a
menudo antes de que el control se haya pasado al kernel desde
el inicio (en el caso de Linux, por ejemplo).
El modo virtual 8086 , introducido con el Intel 80386 , permite simular el
envolvente A20 mediante el uso de las funciones de memoria virtual del
procesador; La memoria física se puede asignar a varias direcciones
virtuales. Por lo tanto, la memoria asignada en el primer mebibyte de la
memoria virtual puede ser asignada nuevamente en el segundo mebibyte
de la memoria virtual. El sistema operativo puede interceptar cambios en
la Puerta A20 y realizar los cambios correspondientes en el espacio de
direcciones de la memoria virtual, lo que también hace irrelevante la
eficiencia de la conmutación de líneas de la Puerta A20.

Puerta A20 [ editar ]


El control de la línea A20 fue una característica importante en una etapa
del crecimiento de la arquitectura de PC de IBM, ya que agregó acceso a
65520 bytes adicionales (64 KiB - 16 B) de memoria en modo real , sin
cambios significativos en el software.
En lo que podría decirse que era un "hack", la compuerta A20
originalmente era parte del controlador del teclado en la placa base, que
podía abrirla o cerrarla según el comportamiento deseado. [6]
La compuerta A20 todavía está presente en muchas PC modernas, y la
compuerta se cierra inicialmente justo después del arranque. Los sistemas
operativos modernos en modo protegido normalmente abren la compuerta
A20 temprano durante el proceso de arranque y nunca la vuelven a
cerrar. Tales sistemas operativos no tienen las razones de compatibilidad
para mantenerlos cerrados, y obtienen acceso a la gama completa de
direcciones físicas disponibles al abrirlos.
El Intel 80486 y el Pentium agregaron un pin especial llamado A20M # ,
que cuando se afirma de forma baja obliga a que el bit 20 de la dirección
física sea cero para todos los accesos de memoria caché o externa en el
chip. Era necesario, ya que el 80486 introdujo un caché en el chip y, por lo
tanto, ya no era posible ocultar este bit en la lógica externa. El software
aún necesita manipular la compuerta y aún debe tratar con periféricos
externos (el conjunto de chips ) para eso. [7]
El soporte para la puerta A20 se cambió en la microarquitectura
Nehalem (algunas fuentes afirman incorrectamente que se eliminó el
soporte A20). En lugar de que la CPU tenga un pin A20M # dedicado que
recibe la señal de si debe enmascarar o no el bit A20, se ha virtualizado
para que la información se envíe desde el hardware periférico a la CPU
utilizando ciclos de bus especiales. [ cita requerida ] Desde el punto de vista del
software, el mecanismo funciona exactamente igual que antes, y un
sistema operativo aún debe programar hardware externo (que a su vez
envía los ciclos de bus mencionados a la CPU) para deshabilitar el
enmascaramiento A20. [ cita requerida ]
Intel ya no admite la puerta A20, empezando por Haswell . Página 271 del
Manual del Sistema Intel. 3A de junio de 2013 dice: "La funcionalidad de
A20M # se usa principalmente en sistemas operativos más antiguos y no
en los sistemas operativos modernos. En los procesadores Intel 64 más
nuevos, A20M # puede estar ausente". [8]

Controlador A20 [ editar ]


El controlador A20 es un software de administración de memoria de PC
de IBM que controla el acceso al área de memoria
alta (HMA). Los administradores de memoria extendida usualmente
proveen esta funcionalidad. Los controladores A20 llevan el nombre de la
línea 21 de dirección del microprocesador, la línea A20.
En DOS , los administradores de HMA como HIMEM.SYS tienen la "tarea
adicional" de administrar A20. HIMEM.SYS proporcionó una API para abrir
/ cerrar A20. El propio DOS podría usar el área para algunas de sus
necesidades de almacenamiento, liberando así más memoria
convencional para los programas. Esa funcionalidad fue habilitada por
las directivas DOS=HIGH o HIDOS=ON en el archivo de
configuración CONFIG.SYS .

Вам также может понравиться