文章目录
1. 计算机的基本构成
- 处理器:控制计算机操作,执行数据处理等功能。
- 内存:存储数据和程序,是易丢失的。
- 输入/输出模块(I/O): 在计算机和外部环境之间移动数据。外部环境有各种外部辅助设备,比如硬盘,显示器,鼠标。
- 系统总线:在处理器,内存,输入输出设备之间提供通信的设施。
1.1 cpu概览
cpu处理器的一种功能是和存储器交换数据,因此他通常使用两个内部寄存器:
1.存储器地址寄存器(Memory Address Register):用于确定下一次读写的存储器地址。
2.存储器缓冲寄存器(Memory Buffer Register): 存放从存储器读进来的数据或者是要写入到寄存器中的数据。
同样,还有一组寄存器用来和输入和输出设备
1.输入输出地址寄存器(I/O Address Register ): 用于确定一个特定的输入输出设备
2.输入输出缓冲寄存器(I/O Buffer Register): 用于在输入输出模块和处理器间交换数据
还有两个比较重要的寄存器
1.程序计数器PC
2.指令寄存器IR
2. 指令的执行过程
2.1 指令周期
处理器执行的程序都是由一些列的指令构成的。最简单的指令处理包括两步,
1.处理器从存储器中一次读取一条指令。
2.然后执行这条指令。
程序的执行就是不断的取指令和执行指令的过程。指令的执行过程可能有很多操作,这个取决于指令。
上面描述的单个指令需要的处理称为一个指令周期。每个指令周期分为取指阶段和执行阶段。
在每个指令周期开始的时候,处理器从存储器读取一条指令,这条指令在存储器中的地址在PC(程序计数器)中保存。在典型的处理器当中,程序计数器总是保存下一条指令在存储器的地址。
一般一条完整的指令包括:取指周期、执行周期、中断周期。
CPU采用中断方式实现主机与I/O交换信息时,CPU在每条指令执行阶段结束前, 都要发中断查询信号,以检测是否有某个I/O提出中断请求。如果有请求,CPU则要进入中断响应阶段,又称中断周期。在这阶段, CPU必须将程序断点保存到存储器中。
下面讲中断的时候会再介绍到这一点
可以参考这篇文章加深对取指周期,执行周一的理解
指令周期
2.2 指令分类
指令可以大体分为以下几类
- 处理器存储器数据交换
- 处理器I/O设备数据交换
- 数据处理,处理器执行很多于数据相关的算术操作或者逻辑操作
- 控制,某些指令可以改变执行的顺序,设置PC中的地址
2.3 指令的格式
指令包括两个部分,操作码+操作数,总长一般是cpu能够处理的字的长度。
作码定义了cpu将对操作数做怎样的识别和操作。
2.4 参考其他周期
指令周期 :CPU从内存取出一条指令并执行这条指令的时间总和。
CPU周期 :又称机器周期,CPU访问一次内存所花的时间较长,因此用从内存读取一条指令字的最短时间来定义。
时钟周期: 通常称为节拍脉冲或T周期。一个CPU周期包含若干个时钟周期
3. 中断
3.1 中断的分类
- 程序中断:在某些条件下由指令执行的结果产生,如算术溢出,除数为0,试图执行一些非法的机器指令及访问不允许的存储器的位置
- 时钟中断:由处理器内部的计时器产生,控制操作系统以一定的规律执行函数
- I/O中断:由IO控制器产生,用于发信号通知一个操作正常完成或出现的各种错误条件
- 硬件失效中断:由一些比如掉电或者发生存储器奇偶校验错误之类的故障产生
中断最初是用于提高cpu使用率的一种手段。
3.2 中断和指令周期
中断要想得到生效,cpu就必须要响应中断,为了适应中断的产生,cpu的指令周期中增加一个中断检测的阶段。
过程是: 取指周期–> 执行周期—>中断检测周期—>取指周期
在取指周期和执行周期阶段,因为cpu不会响应中断,所以这个阶段程序也是不会被打断的。处理器在响应中断前一定结束了当前指令的执行。
当然,cpu也是可以设置屏蔽中断的,设置了屏蔽中断,就不会响应中断了,这个在单核计算机中可以用来做原子操作。因为不会发生线程的切换了。
3.3 中断响应的一般过程
以I/O操作举例
- 设备给处理器发起一个中断信号
- 处理器在响应中断前结束当前指令的执行
- 处理器进行中断测试,确定存在未响应的中断,并给提交中断的设备发送确认信号,确认信号允许该设备取消他的中断信号
- 保护断点,即保存下一将要执行的指令的地址,就是把这个地址送入堆栈。
- 寻找中断入口,根据5个不同的中断源所产生的中断,查找5个不同的入口地址。以上工作是由计算机自动完成的,与编程者无关。在这5个入口地址处存放有中断处理程序(这是程序编写时放在那儿的,如果没把中断程序放在那儿,就错了,中断程序就不能被执行到)。将中断程序入口的地址放入程序计数器。
- 执行中断处理程序。
- 中断返回:执行完中断指令后,就从中断处返回到主程序,继续执行。
3.4 多个中断
处理多个中断的时候,有两种选择。
- 在处理中断的时候屏蔽对别的中断的响应。
- 中断分级,级别高的中断可以再中断级别低的中断。
4. 缓存
缓存一般都是做了分级处理,越快越贵,缓存对于操作系统来说是透明的,是由硬件来管理的。
在多核计算机或者对称多处理器中,每个处理器至少有一个专用的一级缓存,高速缓存就带来了一些新的问题,由于每个本地缓存包含了一部分内存的副本,如果修改了高速缓存中的一个字,就会使该字在其他缓存中也变得无效。
为了避免这种情况,在发生更新的时候必须告诉其他处理器发生了更新。这个问题称为高速缓存一致性问题。通常通过硬件而非操作系统来解决这个问题。
这篇文章介绍了cpu缓存结构和MESI协议,该协议用来保证高速缓存的一致性。
5. 直接内存存取DMA技术
DMA技术主要是应对为了在内存和io之间传输数据的时候必须要经过cpu这个中间人,而cpu实际上不做任何工作,因此可以通过DMA模块来辅助完成,效率更高,而且cpu也被解放出来了。
6. 计算机的并行处理手段
6.1. 对称多处理器SMP:
6.1.1 SMP的架构
- 具有两个及其以上的性能相当的处理器
- 这些处理器共享内存和IO设备,并通过总线或其他内部互联方式互联,因此每个处理器的大体访存的时间大体相同
- 所有处理器合一执行相同的功能,因此是对称的
- 整个系统由一个统一的操作系统控制,该操作系统为多个处理器极其程序提供作业,进程,文件,数据元素等各个级别的交互。
6.1.2 SMP的优点
性能好,可伸缩性好,等等
6.1.3 SMP各自拥有独立的缓存导致的数据一致性问题:
这个在上面介绍缓存的时候也已经介绍过了,需要从硬件层面进行保证
这里介绍的也很好。
6.2. 多核计算机
多核计算机是将多个处理器组装在同一片硅上的计算机。又称为芯片多处理器。每个核上通常包含了一个独立处理器的所有零件,如寄存器,ALU,流水线硬件,控制单元,以及L1缓存和数据高速缓存器。
6.2.1 多核和smp之间的区别
smp是个处理器:多个单核处理器,就是说电脑和处理器有多个,但是这个电脑的处理器是单核的;
多核处理器:单个多核处理器,也就是说电脑有一个处理器芯片,但是这个处理器芯片上是多核的;
二者的主要区别实际上体现在处理器的通信效率上面:
对于多个处理器而言,它们在执行命令的时候多个处理器之间的通信手段是电脑主板上的总线;
而对于多核处理器而言,多个核心处理器之间通信时通过CPU内部总线进行信息的交互的(快速通道互联QPI),核与核之间实现的是点对点的连接,每次传输16位的情况下,可以实现12.8g/s的传输速度。
来源:CSDN
作者:夜月行者
链接:https://blog.csdn.net/u013200380/article/details/104561990