Академический Документы
Профессиональный Документы
Культура Документы
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.