首页 >> 大全

为什么设计CS:IP寄存器?

2023-12-29 大全 31 作者:考证青年

认识寄存器

寄存器的官方叫法有很多,Wiki 上面的叫法是 , 也可以称为 CPU ,计算机中经常有一个东西多种叫法的情况,反正你知道都说的是寄存器就可以了。

认识寄存器之前,我们首先先来看一下 CPU 内部的构造。

CPU 从逻辑上可以分为 3 个模块,分别是控制单元、运算单元和存储单元,这三部分由 CPU 内部总线连接起来。

几乎所有的冯·诺伊曼型计算机的 CPU,其工作都可以分为5个阶段:取指令、指令译码、执行指令、访存取数、结果写回。

计算机架构中的寄存器

寄存器是一块速度非常快的计算机内存,下面是现代计算机中具有存储功能的部件比对,可以看到,寄存器的速度是最快的,同时也是造价最高昂的。

我们以 intel 8086 处理器为例来进行探讨,8086 处理器是 x86 架构的前身。在 8086 后面又衍生出来了 8088 。

在 8086 CPU 中,地址总线达到 20 根,因此最大寻址能力是 2^20 次幂也就是 1MB 的寻址能力,8088 也是如此。

在 8086 架构中,所有的内部寄存器、内部以及外部总线都是 16 位宽,可以存储两个字节,因为是完全的 16 位微处理器。8086 处理器有 14 个寄存器,每个寄存器都有一个特有的名称,即

AX,BX,CX,DX,SP,BP,SI,DI,IP,FLAG,CS,DS,SS,ES

这 14 个寄存器有可能进行具体的划分,按照功能可以分为三种

_设计寄存器流水灯的目的和意义_寄存器设计方法及步骤

接下来我们将焦点放在CS:IP寄存器上。

CS:IP 寄存器 为什么设计CS:IP寄存器?

初学者可能会有疑问,为什么要这么折腾?为什么不直接设计一个寄存器取代CS和IP寄存器?这就涉及到CPU的发展历史了,这里我们先说一句特别的感悟:CPU的发展是连续迭代的过程,新的设计要兼容旧的设计。之前一直不明白这句话的含义,或者是忽略了这句话,我们知道CPU是一种神奇的发明,可以说,CPU是现代所有科技的大脑和帮手,每一代的CPU都会有数以千万级的硬件产品使用,除非是上帝,任何人也不能说一下子就能设计永远不过时的架构,所以CPU是一个逐步迭代的产品,迭代的原因就是旧的架构或资源过时了,需要新的架构或者优化,但是我们在设计新的CPU架构时,必须也不得不考虑兼容性,兼容上一代的产品,这虽然给设计人员增加了设计难度,但是也是不得已为之,好了,上面说了很多正确的废话,接下来简单的说下为什么需要CS和IP寄存器,我们先说一下历史,不严谨的说:

在上古CPU中,类似于现在的小型单片机,是没有CS和IP寄存器的,因为内存少的可怜,比如16位的CPU,最大就能访问2^16 byte,即64Kb的内存,也就是地址线、数据线、寄存器都是16位,访问内容完全都是统一的,一点都不会乱,而且那会儿64Kb的内存空间已经足够用了。

随着应用程序的发展,对内存的需求也更多了(2021年,4G内存都沦落到乞丐配置了),所以相比上一代的64Kb,8086处理器的设计目标是1M的大内存空间,相当于提升到上一代的16倍,1M的空间对应的地址总线就是20位。

如上所属,愿望是很好的,一个很现实的问题就摆在Intel设计人员面前,地址线宽度是20位,但是CPU中的算数逻辑运算单元(ALU) 仍然是16位,而且很尴尬的是,当时的制造技术很难把ALU加工到20位,即便是有能力加工到20位,也无法兼容上一代的CPU了,当然也有其他的方案,比如增设一些20位的指令和寄存器,专门用于地址的运算和操作,但是那样又造成CPU内存结构的不均匀,基于上面的原因,Intel的工程师设计了一种在当时看来很巧妙的方法,即分段方法。也就是前面提到的CS:IP结合的算法,CS和IP都是16位,CS左移4位,然后与IP相加,得到20位的地址。这样就实现了从16位内存地址到20位实际地址的转换。

参考文章

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了