关于X86架构的 Gate A20相关理解

关于X86架构的 Gate A20相关理解
由于8086在设计时没有考虑会成为一个开放的平台,后来因为虽然因为种种原因,成为了一个开放的平台。因为当时设计时的局限性,现在的之后的X86系列架构为了兼容之前的架构版本留下了 Gate A20这个历史问题。
关于X86的来源,我想就不用了多说了,8086在设计时,设置的地址总线为20根,于是显而易见,当时的8086能够访问的内存地址也就只有1M,由于段寄存器大小只有16位,也就是说只能存放地址为64k,所以8086使用“起始地址*16 + 偏移量”的方式来凑够20位,这个时候从寄存器获取到的地址实际上就是0 ~ 10FFEF,这样就有了能访问1M大小的数据地址。
后来随着技术的发展,1M的访问地址明显已经不够用了,地址总线也增加到了32根,但是X86毕竟是一个开放的架构啊,大家都在用,不能说你升级了,之前的版本就不兼容了,毕竟有了新欢也不能丢了旧爱啊。为了兼容老的版本,就出现了Gate A20,也有了实模式跟保护模式的划分。
关于Gate A20,下面这段话,我觉得描述的非常清楚:
在PC及其兼容机的第20根地址线比较特殊,计算机系统中一般安排一个“门”控制该地址线是否有效。为了访问1M以上的存储单元,应该打开A20"门"。这种设置与实模式下只使用低端1M字节存储空间有关,与处理器是否工作在实方式还是保护方式无关,即是关掉A20,也可以进入保护模式。----《80x86汇编语言程序设计》。
通过这段话,我理解在X86架构的芯片中,有一个叫做Gate A20门的结构,当它打开时编号为20(从0开始数)的这个地址线是有效的,也就是说这种情况下,这跟地址线,可高可低。
- 实模式下:
- Gate A20 打开 : 寻址100000 ~ 10FFEF会真正访问
- Gate A20 关闭 :回绕到 0 ~ FFEF
- 保护模式下:
- Gate A20 打开 : 可连续访问内存
- Gate A20关闭 : 只能访问到奇数的1M段,即 00000-FFFFF, 200000-2FFFFF,300000-3FFFFF…
也就是说,在 Gate A20关闭是,编号为20的这地址线,不管在什么模式,都是无效的,且读到的值为0,同时进不进保护模式实际上,跟Gate A20 没有必然的关系,你打开了能进,关闭了也能进。

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值