8086中断流程_8086系统结构

本文详细介绍了8086 CPU的工作原理,包括CPU结构、存储器组织、CPU引脚功能以及系统配置。CPU通过段寄存器和指令指针形成20位物理地址,进行存储器寻址;CPU引脚用于与外部设备交换信息;存储器通过逻辑地址转换成物理地址进行寻址;系统配置则依赖于CPU时序确保有序工作。文章还提及了堆栈的作用和系统时钟的重要性。
摘要由CSDN通过智能技术生成

1.预览

所谓系统结构其实主要包括四大块,因为是一个系统的,所以是一个系统的流程,首先CPU是其中一块,CPU究竟是如何干事的。CPU需要的数据从哪里来呢,这也就是第二块存储器组织。处理完的结果发给谁呢,当然是发给外部设备,由于外设不是外部的独立模块,所以关于系统内部,就认为发送到相应的引线(第三块)。这三个块如何达到有秩序的高效的工作,那么也就是第四块8086系统配置。接下来就来细聊一下这四个块。

1.CPU结构

CPU究竟是真么干事的呢,如下图

4e3934f64281108666ac35247a815ac0.png

步骤:

首先上图蓝色(1)CS(代码段寄存器的基地址,存放代码的地址)+IP(下一条指令的偏移地址)在加法器中形成20位物理地址。然后通过总线控制逻辑发出存储器读信号,然后将从存储器读到的指令送到指令队列中。

然后上图红色(2)从指令队列中取指令,并经过译码,然后再执行,执行的时候如果需要访问存储器或者I/O时。需要1.先通过数据总线将偏移地址送给IP,然后又经过加法器计算出物理地址取出操作数,再通过数据总线返还回来。然后再来看这个指令到底要干嘛,经过控制器发出控制指令,对操作数进行相应的操作。然后将计算结果放到寄存器中,然后再存入存储器或者I/O口。

由于时CPU内部,存储数据的地方都是寄存器,主要包括四类寄存器:通用寄存器,指针和变量寄存器,段寄存器,指令指针和标志位寄存器。如下图:

cee52d7cb54cbedd4a47c85c0a955b0f.png

其中(1)通用寄存器用来存放地址和数据。

(2)指针和变址寄存器,用来存放,某一段内地址偏移量,用来形成操作数地址,主要用来再堆栈操作或者变址操作中使用。

(3)段寄存器,由于存储器空间是分段的。所以这些段寄存器则是每个段的首地址。

(4)指令指针寄存器,IP用来存放将要执行的下一条指令再现在代码段的偏移量,将这个偏移量+段寄存器中存放的基地址,就找到了下一条指令的地址了。标志位寄存器,用来存放计算结果的特征,这些标志位常常被用作接下来程序运行的条件。

2.CPU引脚

所谓CPU引脚,其实,就是将信息通过这些引脚输出到外部设备上,或者从外部设备读取信息用的。8086的引脚如下图:

08d061ffce0bd77a5b23bca1683f10c3.png

红色方框1中的这些引脚主要是用来传输数据和地址。红色方框2这些一起构成了20位物理地址。根据不同的状态,使用这些引脚来存储器寻址。

蓝色方框比较杂,我姑且叫他功能配置吧。当然这样叫很不专业,但很容易理解,他们的功能主要是用来说明,当前是输入还是输出,是高电平有效还是低电平有效,是读还是写,是获取还是发送,是复位还是不复位等等功能。

3.存储器组织:

回到这篇文章的第一章图片的右上角,你会发现地址线是20位的,也就是存储器大小为2的20次方,1MB。但是寄存器是16位的。也就是最多可以寻址2的16次方,64KB大小的空间。那怎么办呢?然后就将1MB空间的大小平均分成每个小块,每一块位64KB大小的空间。这样再寻址的时候只要告诉它,我是第几块的就可以了。如下图

1398b003edc6030edcf0be7948f2a826.png

那么问题来了,怎么告诉我,现在要寻址的是第几块呢,答案是,通过逻辑地址来告诉。逻辑地址是由段地址和偏移地址组成。其中段地址就是那一块(或者说那一段的起始地址)。但是它只能说明一个相对的地址,因为这个地址还是16位的。然而实际的物理地址是20位的。所以逻辑地址需要转换成物理地址。才可以真正的寻址。

聊到这里,最后再说一下堆栈的概念。其实堆栈本质上就是存储器上面的一块存储区,这块存储区用来存放需要暂时保存的数据。比如进程正常运行。突然中断来了,就去执行中断了,在去执行中断之前,先将当前的数据暂存一下,等中断程序运行完,再回来,暂存的这些数据就在堆栈中。本质就是这样,没有其他的更多的东西。

4.系统配置

所谓系统配置,其实就是让上面聊的这些东东,有秩序的工作。完成这件事的方法是通过CPU时序或者说系统时钟。很多人玩过NXP,STM32等芯片,一直会有一个疑问,为什么系统时钟是芯片的心跳。为啥使用任何一个外设或者模块都要首先配置时钟呢?这里一并说一下。其实这个要追述到数字电路这本书,因为我们当前常用的计算机都是数字计算机。数字电路中,首先是通过与或非等门电路的组合,形成了组合电路。并形成了好多模块,比如说加法器。但是这些组合电路是不存在记忆功能的。后来出现了触发器,触发器可以存储一位的0或1.后来又出现了时序电路,自此,电路就具备了记忆功能。我们知道,并不是我们每次执行动作,都要记忆下来。而是该记忆的记忆,不该记忆的,不变。那么如何来区分该不该记忆呢?其实就是当应该记忆的时候,脉冲引脚给一个CLK(脉冲)。不该记忆的时候不给这个CLK.就可以了。一块芯片中的电路元器件可是超大规模的集成电路。所以统一使用一个时钟来给不同的器件提供CLK。如果没有这个CLK,寄存器根本无法具有记忆功能(存储数据的功能)。所以系统时钟很重要,所以通常被称为芯片的心跳。

8086 是基于冯诺-依曼体系架构的计算机。ARM则是哈弗架构的计算机。

如有兴趣请参看以下链接,关于Cortex-M3基本内容:

露水:浅谈Cortex-M3 基础​zhuanlan.zhihu.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值