前言
文章主要内容:分析物理地址及其组成,16位结构的CPU,探讨8086 CPU如何生成物理地址。
1. 物理地址
CPU访问内存单元时,要给出内存单元的地址。所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间中都有唯一的地址,我们将这个唯一的地址称为物理地址。
CPU通过地址总线送入存储器的,必须是一个内存单元的物理地址。在CPU向地址总线上发出物理地址之前,必须要在内部先形成这个物理地址。不同的CPU可以有不同的形成物理地址的方式。我们现在讨论8086CPU是如何在内部形成内存单元的物理地址的。
2. 16位结构的CPU
我们说 8086CPU的上一代CPU(8080、8085)等是8位机,而8086是16位机,也可以说8086是16位结构的CPU。那么什么是16位结构的CPU呢?
8086是16位结构的CPU,这也就是说,在8086内部,能够一次性处理、传输、暂时存储的信息的最大长度是16位的。内存单元的地址在送上地址总线之前,必须在CPU中处理、传输、暂时存放,对于16位CPU,能一次性处理、传输、暂时存储16位的地址。
3. 8086CPU给出物理地址的方法
8086CPU有20位地址总线,可以传送20位地址,达到1MB寻址能力。
8086CPU是16位结构,在内部一次性处理、传输、暂时存储的地址为16位。从8086CPU的内部结构来看,如果将地址从内部简单地发出,那么它只能送出16位的地址,表现出的寻址能力只有64KB。
那么,8086CPU如何用内部16位的数据转换成20位的地址呢?
8086CPU 采用一种在内部。相关部件的逻辑结构如下图所示。
如上图所示,当8086CPU要读写内存时,进行如下步骤:
(1)CPU中的相关部件提供两个16位的地址,一个称为段地址,另一个称为偏移地址
(2)段地址和偏移地址通过内部总线送入一个称为地址加法器的部件
(3)地址加法器将两个16位地址合成为一个20位的物理地址;
(4)地址加法器通过内部总线将20位物理地址送入输入输出控制电路
(5)输入输出控制电路将20位物理地址送上地址总线
(6)20位物理地址被地址总线传送到存储器
例如,8086CPU要访问地址为123C8H的内存单元,此时,地址加法器的工作过程如下图所示(图中数据皆为十六进制表示)。
4. 由段地址×16引发的血案……
我们看一个例子,一个数据为2H,二进制形式为10B,对其进行左移运算:
我们通过观察移位次数和各种形式数据的关系:
(1)一个数据的二进制形式左移1位,相当于该数据乘以2;
(2)一个数据的二进制形式左移N位,相当于该数据乘以2的N次方;
(3)地址加法器如何完成段地址×16的运算? 就是以二进制形式存放的段地址左移4位。
经过进一步的思考,我们可以看出:
- 一个数据的十六进制形式左移1位,相当于乘以16
- 一个数据的十进制形式左移1位,相当于乘以10
- 一个数据的X进制形式左移1位,相当于乘以X。
结语
今天的分享到这里就结束啦!如果觉得文章还不错的话,可以三连支持一下。
也可以点点关注,避免以后找不到我哦!
Crossoads主页还有很多有趣的文章,欢迎小伙伴们前去点评,您的支持就是作者前进的动力!