A20总线

A20 或地址线 20 是构成基于 x86 的计算机系统的系统总线的电线之一。 A20 总线特别用于传输地址总线上的第 21 位。

微处理器的地址线数通常等于其物理地址空间中字数的以二为底的对数。 例如,具有 4 GB 字节可寻址物理空间的处理器需要 32 行 (log2(4 GB) = 232),它们被命名为 A0 到 A31。 这些线以它们正在传输的地址中从零开始的位数命名。 最低有效位在前,因此编号为位 0 并在线 A0 上发出信号。 A20 传输第 20 位(第 21 位)并在地址达到 1 MB 或 220 时变为活动状态。

概览

Intel 8086、Intel 8088 和 Intel 80186 处理器有 20 条地址线,编号为 A0 到 A19; 有了这些,处理器可以访问 220 字节或 1 MB。 这种处理器的内部地址寄存器只有 16 位。 要访问 20 位地址空间,外部存储器引用由 16 位偏移地址加上 16 位段号组成,移动 4 位以产生 20 位物理地址。 结果地址等于段×16+偏移量。 有许多段和偏移量的组合可以产生相同的 20 位物理地址。 因此,有多种方法可以寻址内存中的同一字节。

当 IBM 设计 IBM PC AT (1984) 机器时,它决定使用新的更高性能的 Intel 80286 微处理器。 80286 在保护模式下最多可以寻址 16 MB 的系统内存。 然而,CPU 应该在实模式下模拟 8086 的行为,即它的启动模式,以便它可以运行不是为保护模式编写的操作系统和程序。 然而,80286 并没有强制 A20 总线在实模式下归零。 因此,组合 F800:8000 将不再指向物理地址 0x00000000,而是指向地址 0x00100000。 结果,依赖于地址环绕的程序将不再工作。 为了与此类程序保持兼容,IBM 决定纠正主板上的问题。

这是通过在处理器和系统总线之间的 A20 总线上插入一个逻辑门来实现的,该逻辑门被命名为 Gate-A20。 可以通过软件启用或禁用 Gate-A20,以允许或阻止地址总线接收来自 A20 的信号。 它被设置为不通过以执行依赖环绕的旧程序。 在启动时,BIOS 在计数和测试所有系统内存时首先启用 Gate-A20,然后在将控制权移交给操作系统之前将其禁用。

最初,逻辑门是连接到 Intel 8042 键盘控制器的门。 控制它是一个相对缓慢的过程。 此后添加了其他方法,以允许对需要访问所有系统内存的程序进行这种环绕的程序进行更高效的多任务处理。 有多种方法可以控制 A20 总线。

断开 A20 不会包裹所有超过 1 MB 的内存访问,只是那些在 1–2 MB、3–4 MB、5–6 MB 等范围内的内存访问。 实模式软件只关心略高于 1 MB 的区域,因此 Gate-A20 总线就足够了。

启用 Gate-A20 总线是保护模式 x86 操作系统在启动过程中执行的xxx步,通常是在控制权从引导程序传递给内核之前。

A20总线

Intel 80386 引入的虚拟 8086 模式允许使用处理器的虚拟内存设施模拟 A20 环绕; 物理内存可以映射到多个虚拟地址。 因此,在xxx兆虚拟内存中映射的内存可能会再次映射到第二兆虚拟内存中。 操作系统可能会拦截对Gate A20的更改,并对虚拟内存地址空间进行相应的更改,这也使得Gate-A20总线切换的效率变得无关紧要。

A20门

在 IBM PC 架构发展的某个阶段,控制 A20 总线是一项重要功能,因为它在实模式下增加了对额外 65,520 字节(64 KB − 16 字节)内存的访问,而无需对软件进行重大更改。

0

点评

点赞

相关文章