X86系列 CPU 内存管理

本文介绍了X86系列CPU的内存管理,从8086的实地址模式到80286的保护模式,再到80386的32位地址空间和分页机制。通过段寄存器、段描述符表和分页目录,详细阐述了线性地址到物理地址的映射过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

所谓X86系列,是指Intel从16位微处理器8086开始的整个CPU芯片系列,系列中的每种型号都保持和以前的各种型号兼容,主要有8086、8088、80186、80286、80386、80486以及以后的Pentium芯片。

在X86系列中,8086和8088是16位处理器,而从80386开始为32位处理器,80286则是该系列从8088到80386,也就是从16位到32为过渡时的一个中间步骤。80286虽然仍然是16位处理器,但是在寻址方式开始了从“实地址模式”到“保护模式”的过渡。

我们说CPU是“16位”或“32位”,指的是处理器中“算术逻辑单元(ALU)”的宽度。系统总线中的数据线部分,称为“数据总线”,通常与ALU具有相同的宽度(但有例外)。那么“地址总线”的宽度呢?最自然的地址总线宽度是与数据总线一致。

但是,从8位CPU的寻址能力角度考虑,这是不现实的,因为一个8位CPU的地址只能用来访问256个不同的地址单元,这显然是不够的。所以,一般8位CPU的地址总线都是16位的。这也造成了8位CPU在内部结构上的不均匀。当CPU从8位发展到16位的时候,本来地址总线的宽度与数据总线一致了,但是当时觉得16位地址所决定的地址空间(64K)还是太小,还应该加大,Intel决定采用1M字节,也就是64K的16倍。

既然Intel决定了在其16位CPU,即8086中采用1M字节的内存地址空间,地址总线的宽度也就确定了,那就是20位,但是CPU中ALU的宽度只有16位,如何来填补这个空隙呢?

Intel设计了分段的方法,即在8086CPU中设置了四个“段寄存器”:CS、DS、SS、ES,分别用可执行代码即指令、数据、堆栈、和其他。每个寄存器都是16位的对应地址总线中的高16位。每条“访内”指令中的“内部地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值