计算机组成原理
【金山文档 | WPS云文档】 计算机组成原理
https://kdocs.cn/l/cd92cJZDGkUW
还是和上次一样,很多图没显示,还是很懒,主要是学习要紧,理图太拖学习进度了,请各位观众老爷骂轻点
文章内容挺多的,参考学习了7-9篇文档,整理到word里,很多没来得及留下出处,主要是以学习为主,分享学习内容,请多包涵。
前言
一、冯诺依曼的三个要点
- 所有种类的计算机都有相同的五大部件:运算器、控制器、存储器、输入和输出。
比如CPU运算部分(运算器);内存(存储器);键盘(输入);显示器(输出);CPU中的指令解码,解读指令的具体功能(控制器)
(2)采用二进制
(3)程序和原始数据先存入存储器,然后再启动计算机工作。(存储程序和数据)
二、MIPS(每秒百万条指令)
MIPS实际上表示的是,每秒能执行多少条指令,是一种衡量计算机处理器性能的指标。
比如1.8MIPS,表示的是1.8(百万条/秒),即1.8x106 (条/秒)
所以MIPS的计算公式是:
本质上就是将执行速度除以106 单位转换成 百万条/秒。
三、CPU执行时间和CPI
对于一个任务,CPU执行时间是指运行在该任务在CPU上花的时间。
响应时间(执行时间):计算机完成某任务所需要的总时间。<用户真正感受到的时间>
吞吐率指的是单位时间完成的任务数量。
CPU执行时间=总时钟周期数×时钟周期时间
CPI是平均每条指令的平均时钟周期数
CPU执行时间=总指令数×CPI×时钟周期时间
四、计算机系统概述
计算机的功能部件
总线
总线是连接各个部件的信息传输线,是各个部件共享的传输介质
为什么要用总线
早期计算机外部设备少时大多采用分散连接方式,不易实现随时增减外部设备。
为了更好地解决I/0设备和主机之间连接的灵活性问题,计算机的结构从分散连接发展为总线连接。
引入总线会导致什么问题?如何解决?
引入总线后,总线上的各个设备分时共享同一总线,当总线上多个设备同时要求使用总线时就会导致总线的冲突。为解决多个主设备同时竞争总线控制权的问题,应当采用总线仲裁部件,以某种方式选择一个主设备优先获得总线控制权,只有获得了总线控制权的设备才能开始数据传送。
传输周期(总线周期): 一次总线操作所需时间, 包含申请阶段, 寻址阶段, 传输阶段等
总线时钟周期: 即机器时钟周期
总线的工作频率: 总线周期的倒数
总线的时钟频率: 时钟周期的倒数
总线宽度: 数据总线的根数
总线带宽: 总线宽度 x 总线工作频率
主设备: 发出总线请求且获得总线控制权的设备
从设备: 指被主设备访问的设备
总线分类:
按功能
系统总线:
数据总线: 双向传输总线, 位数与机器字长、存储字长有关。
地址总线: 指明CPU访问的存储单元或I/O端口的地址, 单向传输, 位数与存储单元有 关。
控制总线: 用来发出各种控制信号的传输线, 单向传输。
片内总线: CPU内部各寄存器之间及ALU的连接。
通信总线:用于计算机系统之间或计算机系统与其他系统(如控制仪表、移动通信等)之间的通信
按数据传输格式
总线结构
1) 单总线结构
特点:
1) 结构简单, 成本低, 易于接入新的设备。
2) 带宽低, 负载重, 多个部件只能争用唯一的总线。
2) 双总线结构
特点:
- 将较低速的I/O设备从单总线上分离出来
- 需要增加通道等硬件设备
3) 三总线结构
特点:
1) 提高了I/O设备的性能, 提高系统吞吐量
2) 系统工作效率较低
4) 四总线结构
总线控制
总线上连接了多个设备,当多个设备同时向总线发出占用总线的请求,而总线在同一时刻只能由一对设备使用,这时就需要解决一个问题:判优控制。这对设备占用总线后要进行通信,如何完成这个通信过程,这就是另外一个问题:通信控制。
总线仲裁(总线判优)
总线控制器:需要有一个控制器来决定总线的使用权和对总线进行管理
将总线上所连接的各类设备按其对总线有无控制功能分为:
主设备:
获得总线控制权的设备。
从设备:
被主设备访问的设备,只能响应从主设备发来的各种总线命令。
为什么要仲裁?
总线作为一种共享设备,不可避免地会出现同一-时刻有多个主设备竞争总线控制权的问题。
总线仲裁的定义:
多个主设备同时竞争主线控制权时,以某种方式选择-一个主设备优先获得总线控制权称为总线仲裁
控制方式
①集中式
将总线的判优逻辑做到一部件上,如做到CPU中。集中式的总线判优控制又包含三种方法:
----链式查询
链式查询方法中,共包含5条总线:
数据线、地址线、BS(Bus State,总线状态线)、BR(Bus Request,总线请求线)、BG(Bus Grant,总线响应线)。
特征:各个接口都发出占用总线的申请,优先级由连接方式决定。如果一个I/O设备优先权 较低,那么它就排在较后,很可能它提出的总线占用请求一直都不会应答。
特点:结构简单,扩展容易(不管设备为多少,仅需三根控制线即可)
对故障敏感(某个设备出错,其后的所有设备均无法操作)
远端响应机会小(存在饥饿现象),远端响应延迟大
----计数器定时查询
特点:扩展受地址线位数限制(如设备地址线仅3位,则最多设备数为8个)
对故障不敏感
各设备优先级相同(请求时设备地址线数值随机)
响应的延迟可能小,亦可能大(响应时间无法预期)
----独立请求方式
②分布式
总线通信控制
目标:解决通信双方协调配合问题
数是否送到总线上、对方是否接收、数是否撤销、下一次是否开始
总线传输周期
总线传输周期 总线通信的四种方式
同步传输
读数据操作时序关系
同步式数据输出
在T1时钟上升前,主设备必须要给出地址信号。
在T1时钟下降前,必须要给出数据。
在T2时钟上升前,必须要给出写命令。
在T3时钟做数据写入操作。
在T4时钟上升前,主设备撤销数据、撤销写命令。
在T4时钟结束前,撤销地址信息。
异步通信
半同步通信(同步、异步结合)
同步:发送方用系统时钟前沿发信号,接收方用系统时钟后沿判断、识别。
异步: 允许不同速度的模块和谐工作,增加一条 “等待”响应信号WAIT
①主模块发地址 、命令。这个过程需要占用总线
②从模块准备数据。这个过程不占用总线,总线是空闲的,这对总线资源来说是一种浪费。
③从模块向主模块发数据。这个过程需要占用总线
分离式通信
分离式通信可以充分挖掘系统总线每个瞬间的潜力,一个总线传输周期被分为两个子周期。
①子周期1:主模块 申请 占用总线,使用完后即 放弃总线 的使用权
②子周期2:从模块 申请 占用总线,将各种信息送至总线上
将总线传输周期化分成两个子周期就将总线空闲的那一段让出来了
分离式通信的特点
①各模块有权申请占用总线
②采用同步方式通信,不等对方回答
③各模块准备数据时,不占用总线
④总线被占用时,无空闲
存储系统
存储器的分类
(1)按层次进行分类
(2)按传输介质进行分类
半导体:主存、Cache
磁表面存储器: 磁盘,磁带
光存储器
(3)按存取方式进行分类
相联存储器:可以按照内容检索到存储位置进行读写。
随机存取存储器(RAM):读写任何一个存储单元所需的时间都相同,与位置无关。(内存 )
顺序存取存储器(SAM):读写一个存储单元所需的时间取决于存储单元所在的位置。(磁带)串行访问
直接存取存储器(DAM):既有随机存取特性,也有顺序存取特性。先直接选取信息所在区域,然后按顺序方式进行存取。(机械硬盘)串行访问
(4)按信息的可更改性进行分类
读写存储器:可读可写(如内存,硬盘等)
只读存储器:只能读,不能写(如电影使用的光碟)
(5)按信息的可保存性进行分类
易失性存储器:断电后数据消失(主存,Cache)
非易失性存储器:断电依然保存(磁盘、光盘)
破坏性读出:读出数据后要进行重写(如DRAM芯片)
非破坏性读出:读出数据后原数据没被破坏(如SRAM芯片、磁盘、光盘)
存储器的性能指标
存储容量:存储字数 x 存储字长(如 1M x 8位 )。
MAR反映存储字数,MDR反映了存储字长。
单位成本:每位价格 = 总成本/总容量
(某条内存条价格为259,容量为8GB,则单位成本 = 259 / (8*8) )。
存储速度:数据传输率 = 数据的宽度/存储周期
存取时间:存取时间 + 恢复时间 = 存取周期,计算机进行一次读写操作后需要 一段恢复时间才能进行下一次的读写操作。
主存带宽:就是上面的数据传输率,表示每秒从主存进出信息的最大数量,单位 为字/秒,字节/秒,位/秒。
主存储器
存储单元
地址寄存器和数据寄存器
通过 译码器来选择哪一个存储单元进行读写。
并通过数据总线传送数据。
控制电路
控制电路控制着 MAR,译码器和MDR的数据处理。
同时存储芯片还需要对外提供片选线,读选择线,写选择线。
片选线:芯片的总开关,低电平有效时表示选择了这块芯片进行工作了。
读选择线,写选择线:分别用来控制是读还是写。有时候会将这两根线合为一条,用低电平表示写,用高电平表示读。
随机存取存储器RAM
RAM主要分为两种:
SRAM:静态RAM,用于Cache
DRAM:动态RAM,用于主存
1.存储元件不同导致的特性差异
DRAM芯片:使用栅极电容来存储信息
SRAM芯片:使用双稳态触发器来存储信息
(1)栅极电容:
破坏性读出:电容放电后相当于电荷跑了出来,导致信息破坏,所以读出后需要有重写操作,也称为再生。这也是DRAM读写速度比SRAM慢的原因。
电容内的电荷只能维持2ms,即便不断电,2ms后信息也会消失。所以在2ms之内必须刷新一次,给电容充电。
1:电容内存储了电荷
0:电容内未存储电荷
每个存储元制造成本更低,集成度高,功耗低。
- 双稳态触发器:
1:A处为高电平并且B处为低电平
0:A处为低电平并且B处为高电平
非破坏性读出:读出数据后,触发器状态保持稳定,无需重写。读写速度更快。
只要不断电,触发器的状态就不会改变。
每个存储元制造成本更高,集成度低,功耗高。
DRAM的刷新
(1)多久刷新一次:一般为2ms
(2)每次刷新多少个存储单元:以行为单位,每次刷新一行存储单元。
存储器中存储单元的排列是由 行地址译码器 和 列地址译码器 共同选择。
(3)如何刷新:有硬件支持,读出一行的信息后重新写入,占1个读/写周期。
(4)什么时候进行刷新?
DRAM的地址线复用技术
由于DRAM存储容量较大,存储单元数目多,所需地址线也就比较多,为了简化硬件,采用地址线复用技术,行地址和列地址分成两次进行传送到译码器中。
只读存储器ROM
主存储器和CPU的连接
Cache
Cache和主存的映射方式
(1)全相联映射
任何一个主存块可以放在Cache的任意位置。
给每一个Cache块增加一个标记位,记录对应的主存块号。
还需要一个有效位,有效位为1时表示标记位有效,有效位为0时表示标记位无效。
(2)直接映射
每个主存块只能放到特定的一个位置:Cache块号 = 主存块号 % Cache总块数。
优点:只需要对比一个标记,速度最快。
缺点:Cache存储空间不充分,命中率低。
(3)组相联映射
将Cache块分为若干组,每个主存块可放到特定分组中的任意一个位置。
每个主存块对应的组号 = 主存块号 % 分组数
替换算法
写策略
虚拟存储系统
页式存储
有时候一个程序比较大,无法将它顺序地存放在主存中的各个块中,因此操作系统会将它分成若干个页面,页面的大小和块的大小相同,每个页面可以离散地放入不同的主存块中。
逻辑地址(虚地址):程序员看到的地址。
物理地址(实地址):实际在主存中的地址。
对于一条机器指令:000001 001000000011(操作码+地址码),
其地址码所使用的就是 逻辑地址。
页表:记录了每个逻辑页面存放在哪个主存块中,页表的数据放在主存中。
虚拟存储器
虚拟存储系统:辅存中的数据并不是一次性全部加载到主存中的,而是和 Cache——主存 类似,根据局部性原理加载一部分数据到主存中。
举例:打游戏时的“Loading”界面背后可能就是在 将游戏地图相关数据调入内存中。
1.页式虚拟存储器
和Cache、主存类似,辅存中数据也被分为一个一个的块。
为了实现只加载一部分数据到主存中,需要对页表补充一些信息。
逻辑页号:逻辑地址中的页号
主存块号:物理地址中的主存块号
外存块号:辅存中对应的块号
有效位:这个页面是否被调入主存中
访问位:用于页面替换算法,主存也有用完的时候,需要进行替换,例如可以使用最不经常使用算法,统计访问次数。
脏位:这个页面是否被修改过,修改主存后会导致主存和辅存之间数据不一致。
2.段式虚拟存储器
按照功能模块进行拆分。
例如:#0段是自己的代码,#1段是库函数的代码,#2段是变量。
3.段页式虚拟存储器
把程序先按功能模块分段,每段再划分为固定大小的页,主存空间也划分为大小相等的页。
程序对主存的调入,调出仍然以页为基本传送单位,每个程序对应一个段表,每段对应一个页表。
虚拟地址:段号 + 段内页号 + 页内地址。
具体详情请看操作系统内容。
输入输出系统
基本概念
·外部设备:包括输入/输出设备及通过输入/输出接口才能访问的外存储设备。
·接口:在各个外设与主机之间传输数据时进行各种协调工作的逻辑部件。协调包括传输过程中速度的匹配、电平和格式转换等。
·输入设备:用于向计算机系统输入命令和文本、数据等信息的部件。
·输出设备:用于将计算机系统中的信息输出到计算机外部显示、交换等的部件。
·外存设备:指除计算机内存及CPU缓存等以外的存储器。硬磁盘、光盘等是最基本的外存设备。
·I/O软件:包括驱动程序、用户程序、管理程序、升级补丁等。通常采用I/O指令和通道指令实现CPU与I/O设备的信息交换。
·I/O硬件:包括外部设备、设备控制器和接口、I/O总线等。通过设备控制器来控制I/O设备的具体动作,通过I/O接口与主机(总线)相连。
I/O接口
I/O接口(I/O控制器)是主机和外设之间的交接界面,通过接口可以实现主机和外设之间的信息交换。主机和外设具有各自的工作特点,它们在信息形式和工作速度上具有很大的差异,接口正是为了解决这些差异而设置的。
功能
·实现主机和外设的通信联络控制。解决主机与外设时序配合问题,协调不同工作速度的外设和主机之间交换信息,以保证整个计算机系统能统一、协调地工作。
·进行地址译码和设备选择。CPU送来选择外设的地址码后,接口必须对地址进行译码以产生设备选择信息,使主机能和指定外设交换信息。
·实现数据缓冲。CPU与外设之间的速度往往不匹配,为消除速度差异,接口必须设置数据缓冲寄存器,用于数据的暂存,以避免因速度不一致而丢失数据。
·信号格式的转换。外设与主机两者的电平、数据格式都可能存在差异,接口应提供计算机与外设的信号格式的转换功能,如电平转换、并/串或串/并转换、数/模转换或模/数转换等。
·传送控制命令和状态信息。CPU要启动某一外设时,通过接口中的命令寄存器向外设发出启动命令;外设准备就绪时,则将状态信息送回接口中的状态寄存器,并反馈给CPU。
基本结构
I/O接口在主机侧通过I/O总线与内存、CPU相连。通过数据总线,在数据缓冲寄存器与内存或CPU的寄存器之间进行数据传送。同时接口和设备的状态信息被记录在状态寄存器中,通过数据线将状态信息送到CPU。CPU对外设的控制命令也通过数据线传送,一般将其送到I/O接口的控制寄存器。状态寄存器和控制寄存器在传送方向上是相反的。
接口中的地址线用于给出要访问的I/O接口中的寄存器的地址,它和读/写控制信号一起被送到I/O接口的控制逻辑部件,其中地址信息用以选择和主机交换信息的寄存器,通过控制线传送来的读/写信号确认是读寄存器还是写寄存器,此外控制线还会传送一些仲裁信号和握手信号。
接口中的I/O控制逻辑还要能对控制寄存器中的命令字进行译码,并将译码得到的控制信号通过外设界面控制逻辑送到外设,同时将数据缓冲寄存器的数据发送到外设或从外设接收数据到数据缓冲寄存器。另外,它还要具有收集外设状态到状态寄存器的功能。
对数据缓冲寄存器、状态/控制寄存器的访问操作是通过相应的指令来完成的,通常称这类指令为I/O指令,I/O指令只能在操作系统内核的底层I/O软件中使用,是一种特权指令。
端口是指接口电路中可以进行读/写的寄存器,若干端口加上相应的控制逻辑才可以组成接口。
类型
按照数据传送的方式
可以分为并行接口(一字节或一个字的所有位同时传送)和串行接口(一位一位地传送), 接口要完成数据格式的转换。
【这里所说的数据传送方式是指外设和接口一侧的传送方式,而在主机和接口一侧,数 据总是并行传送的。】
按主机访问I/O设备的控制方式
程序查询接口、中断接口和DMA接口等。
按功能选择的灵活性
可编程接口和不可编程接口。
I/O端口
I/O端口是指接口电路中可被CPU直接访问的寄存器,主要有数据端口、状态端口和控制端口,若干端口加上相应的控制逻辑电路组成接口。通常,CPU能对数据端口执行读写操作,但对状态端口只能执行读操作,对控制端口只能执行写操作。
编址
统一编址又称存储器映射方式
是指把I/O端口当作存储器的单元进行地址分配,这种方式CPU不需要设置专门的I/O 指令,用统一的访存指令就可以访问I/O端口。
独立编址又称I/O映射方式
I/O端口的地址空间与主存地址空间是两个独立的地址空间,因而无法从地址码的形式 上区分,需要设置专门的I/O指令来访问I/O端口。
I/O控制方式
程序查询方式
信息交换的控制完全由主机执行程序实现,程序查询方式接口中设置一个数据缓冲寄存器(数据端口)和一个设备状态寄存器(状态端口)。主机进行I/O操作时,先发出询问信号,读取设备的状态并根据设备的下一步操作究竟是进行数据传送还是等待。
程序中断方式
程序中断是指在计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后CPU又自动返回到现行程序的断点处,继续执行原程序。
DMA方式
DMA全称直接存储器存取(Direct Memory Access),他是一种数据传输方式,特点是I/O设备与主存之间有一条直接数据通路,可以在不占用CPU资源的情况下,直接将数据从外部设备(如硬盘、网卡等)传输到内存中,或从内存中传输到外部设备中。这种方式可以大大提高数据传输的效率。在计算机内部,DMA通常由DMA控制器来管理和实现。
DMA方式是一种完全由硬件进行成组信息传送的控制方式,它具有程序中断方式的优点,即在数据准备阶段,CPU与外设并行工作。DMA方式在外设与内存之间开辟一条“直接数据通道”,信息传送不再经过CPU,降低了CPU在传送数据时的开销,因此称为直接存储器存取方式。由于数据传送不经过CPU,也就不需要保护、恢复CPU现场等繁琐操作。
DMA方式的特点
在DMA方式中,由于DMA接口与CPU共享主存,这就有可能出现两者争用主存的冲突。为了有效地分时使用主存,通常DMA与主存交换数据时采用如下三种方法
(1)停止CPU访问主存
当外设需要传送一批数据时,便会由DMA接口向CPU发一个停止信号,要求CPU放弃总线的使用权,交给DMA。在DMA接口获得总线控制权后,开始进行数据传送,在数据传送结束后,DMA接口通知CPU可以使用主存,并把总线控制权交还给CPU。
这种方式的优点在于控制简单,适用于数据传输率很高的I/O设备实现成组数据的传送,缺点是DMA接口在访问主存时,CPU处于不工作状态或保持状态,未能充分发挥CPU对主存的利用率。
(2)周期挪用(或周期窃取)---(访问周期)
每当I/O设备发出DMA请求时,I/O设备便挪用或窃取总线占用权的一个或多个主存周期,不请求时,CPU继续访问主存。
I/O设备请求DMA传送会遇到三种情况:
·CPU此时不访存。I/O设备不会与CPU发生冲突
·CPU正在访存。此时必须等待存取周期结束,再获取总线占有权
·CPU与DMA同时请求访存。存在访问冲突,但是I/O访存优先于CPU访存,以防I/O 设备不立即访问主存就可能丢失数据。这样做就意味着CPU在执行访问主存指令过程 中插入了DMA请求。
这种方式即实现了I/O传送,又较好地发挥了主存与CPU的效率,是一种广泛采用的方法。
(3)DMA与CPU交替访问
这种方法适用于CPU的工作周期比主存存取周期长的情况。
这种方式不需要总线使用权的申请、建立和归还过程,总线使用权是通过C1和C2分别控制的。CPU与DMA接口各自有独立的访存地址寄存器、数据寄存器和读/写信号。实际上总线变成了在C1和C2控制下的多路转化器,具有很高的DMA传送速率。
不需要DMA来申请建立和归还总线使用权。硬件逻辑相比于上述两方法变得更为复杂。在DMA和CPU交替访问时,如果DMA和CPU同时访问一个地址,可能会产生冲突,导致数据传输失败。
DMA接口的功能与组成
DACK(Dma ACKnowledge DMA响应信号)
DREQ(Dma REQuest DMA请求信号)
HRQ(Hold ReQuest 保持请求信号)
HLDA(HoLD Acknowledge 保持响应信号)
AR(Address Register 主存地址寄存器)
用于存放主存中需要交换数据的地址。
WC(Word Counter 字计数器)
用于记录传送数据的总字数,通常以交换字数的补码值预置。
BR(Buffer Register 数据缓冲寄存器)
用于暂存每次传送的数据。通常DMA接口与主存之间采用字传送,而DMA与设备之 间可能是字节或位传送。因此DMA接口中还可能包含装配和拆卸字信息的硬件逻辑。 如:数据移位缓冲寄存器、字节计数器等。
DMA控制逻辑
负责管理DMA的传输过程,由控制电路、时序电路及命令状态控制寄存器等组成。
中断机构
当字计数器溢出(全"0")时,表示一批数据交换完毕,由"溢出信号"通过中断机构向CPU 提出中断请求,请求CPU作DMA操作的后处理。
DAR(Device Address Register 设备地址寄存器)
用以存放I/O设备的设备码或表示设备信息存储区的寻址信息,如磁盘数据所在的区号、 盘面号和柱面号。
DMA接口与系统的连接方式
DMA接口与系统的连接方式有两种,可结合总线判优控制中的链式查询方式与独立请求方式进行阅读。
- 具有公共请求线的DMA请求
若干个DMA接口通过一条公用的DMA请求线向CPU申请总线控制权。CPU发出响应 信号后用链式查询方式通过DMA接口,第一个被选中的获得总线控制权
(2)独立的DMA请求
每一个DMA接口各有一对独立的DMA请求线和DMA响应线。每个DMA接口可以独 立发送请求,由CPU的优先级判别机构裁决首先响应哪个设备。
DMA的接口类型
1.选择型DMA接口
在物理上可连接多个设备,在逻辑上只允许连接一个设备。
在某一时间内,DMA接口只能为一个设备服务,关键是在预处理时将所选设备的设备号送入设备地址寄存器。
2.多路型DMA接口
在物理上可连接多个设备,在逻辑上允许多个设备同时工作
各个设备采用字节交叉的方式通过DMA接口进行数据传送。每个与它连接的设备都设置了一套寄存器,分别存放各自的传送参数。
数值及运算(运算细节b站王道考研)
计算机中的数值
有符号数与无符号数 (即没有符号的数) 不同, 区分正负;最高位用"0"表示正, "1" 表示负号。
·机器数: 把符号"数字化"的数称为机器数。
·真值: 带 "+" 或 "-" 符号的数称为真值。
·原码: 符号位"0"表示正数, "1"表示负数。数值位即真值的绝对值。
·反码: 通常用来作为原码求补码, 或补码求原码的中间过渡。正数反码是其正数本身。
·补码: 可以将减法操作化作加法操作。正数的补码是其本身, 负数的补码可以看作对其原码除符号位外, 每位求反, 末位加1。特别地, [x]补 经过符号位和数值位按位取反+1 得到[-x]补。
·移码: 针对补码无法直接比较大小而引出的一种表示法, 即对补码加上一个 , 即将最高位符号位取反。
· 除0: 故障
·长字节转短字节: 截断高位
·短字节转长字节: 符号扩展
算术逻辑单元
·OF: 有符号数的加减运算是否发生了溢出, OF=1时, 说明有溢出。(次高进位异或最高位的进位)
·SF: 有符号数加减运算结果的正负性。SF=0时表示运算结果为正 (最高位生成)
·ZF: 加减运算结果是否为0, ZF=1表示运算结果为0
·CF: 无符号数加减法运算是否发生了溢出, CF=1时说明发生了溢出 (Sub异或Cout)
指令系统
机器指令
机器语言由一条条语句构成, 习惯把每一条机器语言的语句称为机器指令, 将全部的机器指令的集合称为机器的指令系统。
常见的指令集
x86 指令集(复杂指令集)
ARM 指令集(精简指令集)
MIPX指令集(复杂指令集):在1990年代是比较先进的一个指令集,当时就能够支持 64位 的计算机系统,但是由于市场没做好,基本破产。现在只有中科院在做,基本上已经成为我们自己的具有独立自主知识产权的一款指令集。
risc - V指令集(复杂指令集)
指令格式
指令字长度
指令字长度:一个指令字中包含二进制代码的位数。
机器字长:计算机能直接处理的二进制数据的位数,它决定了计算机的运算精度。(64位操作系统、32位操作系统)。
·单字长指令:指令字长等于机器字长度的指令。
·半字长指令:指令字长等于半个机器字长度的指令。
·双字长指令:指令字长等于两个机器字长度的指令。
·多字长指令:指令字长等于几个机器字长度的指令。
使用多字长指令,目的在于提供足够的地址位来解决访问内存任何单元的寻址问题。其主要缺点是必须两次或多次访问内存才能取出一整条指令,降低了的运算速度,又占用了更多的存储空间。
操作码
设计计算机时,对指令系统的每一条指令都要规定一个操作码。
指令的操作码 OP 表示该指令应进行什么性质的操作,如进行加法、减法、乘法、除法、取数、存数等。不同的指令用操作码字段的不同编码来表示,每一种编码代表一 种指令。
按操作码的位数是否固定可分为:
固定长度的操作码:所有指令长度均相同。特点是控制简单,速度
快,适用于指令条数不多的场合。
可变长度的操作码:
频繁使用的指令用位数较少的操作码,不常使
用的指令可利用操作码扩展技术进行扩展。
精简指令集一般使用固定长度的操作码
复杂指令集一般使用可变长度的操作码。
地址码数目分类:
四地址指令:
该指令完成(A1)OP(A2) -->A3的操作, 4个地址各占6位, 直接寻址范围为=64。共需访问4次存储器(取指令一次, 取两个操作数两次, 存放结果一次)。
三地址指令:
一般的操作数有被操作数、操作数及操作结果这三种数
其中操作数A1、A2、A3可以是内存单元的地址,也可以是运算器中通用寄存器的地址,如果三地址指令中A1、A2、A3都是内存单元,则指令需要4次访问存储器,存储器的寻址范围28 = 256。为了提高指令执行的速度和扩大寻址范围出现了两地址指令和一地址指令。
二地址指令:
二地址指令常称为双操作数指令,它的两个地址码字段分别指明参与操作的两个数在内存中或运算器中通用寄存器的地址,A1作存放操作结果的地址,称为目的操作数(D),A2称为源操作数(S)。
一地址指令:
一地址指令常称为单操作数指令。通常这种指令以运算器中累加寄存器 AC 中的数据为被操作数,指令字的地址码字段所指明的数为操作数,操作结果又放回累加寄存器 AC 中。(AC:通用寄存器中的第一个R0)
0地址指令:
无地址码部分, 如空操作, 停机, 中断返回等指令, 或是操作数的地址隐含在堆栈指针SP中。
寻址方式
指令寻址
顺序寻址
由于指令在内存中是顺序存放,当执行一段程序时,通常是一条指令接一条指令的顺序执行。为了能够指示下一条欲执行指令的指令地址,CPU内部有
一个程序计数器 PC (指令指针寄存器IP),每执行一条指令其值自动加1,指向下一条欲执行指令的指令地址。这种程序顺序执行的过程我们称为指令的顺序寻址。PC 就是用来做指令追踪
跳跃寻址方式
当程序执行循环指令或者转移指令时,指令的寻址就采取跳跃寻址方式。所谓跳跃,是指下条指令的地址不是由程序计数器PC加1产生,而是将本条指令给出的目标地址装入PC作为下条指令的地址。
操作数寻址
形式地址是指令字中的地址,有效地址是操作数的内存地址。寻址过程就是通过寻址特征位把操作数的形式地址,变换为有效地址的过程。
立即寻址
地址码部分的形式地址 A就是操作数D,而不是操作数的地址
寻址特征位:#
例:mov R0,#10H
把二进制数10直接取出到R0中
直接寻址
直接内存寻址特点是:在指令格式的形式地址 A 中直接指出操作数的有效地址EA。由于操
作数地址直接给出而不需要变换,称为直接寻址方式。
寻址特征位:无
例:mov R0,10H
把内存编号为 10 里的内容取出到R0中。
间接寻址(基本不采用,效率太低)
间接寻址的情况下,指令地址字段中的形式地址A不是操作数的有效地址EA,A单元的内容才是操作数的有效地址EA。虽然可以扩大寻址范围,但是需要至少访问 2 次内存。效率低下。
寄存器寻址
当操作数不放在内存中,而是放在CPU的通用寄存器中时,可采用寄存器寻址方式。此时指令中给出的操作数地址不是内存的地址单元号,而是通用寄存器的编号。
优点:执行阶段只访问寄存器,执行速度快。寄存器的个数有限,所以指令 的字长一般都很短。
寻址特征位:Ri
例:mov R0,R1
把寄存器R1中的内容取出到R0中
寄存器间接寻址
寄存器间接寻址方式与寄存器寻址方式的区别在于:指令中的操作数地址指示出的寄存器中内容不是操作数,而是操作数的有效地址EA。
便于编制循环程序
寻址特征位:@或()
例:mov R0,@R1 或 mov R0,(R1)
偏移寻址(了解)
寻址特征位:+
例:mov R0,@(BR + 100H)
1、相对寻址方式
相对寻址是把程序计数器PC的内容加上形式地址A形成操作数的有效地址。程序计数器的内容就是当前指令的地址.形式地址A通常称为偏移量。
2、基址寻址方式
基址寻址方式是将CPU中基址寄存器的内容加上指令格式中的形式地址A而形成操作数的有效地址EA。
它的优点是可以扩大寻址能力。同形式地址相比,基址寄存器的位数可以设置得很长,从而可以在较大的存储空间中寻址。在程序的执行过程中BR内容不变,由操作系统指定,形式地址A可变。
3、变址寻址方式
变址寻址方式与基址寻址方式计算有效地址的方法十分相似,它把CPU中某个变址寄存器的内容与形式地址A相加来形成操作数有效地址。
堆栈寻址
中央处理器
CPU的功能和基本结构
CPU的功能
组成
中央处理器(CPU)由运算器和控制器组成。
·控制器的功能是负责协调并控制计算机各部件执行程序的指令序列,包括取指令、分 析指令和执行指令;
·运算器的功能是对数据进行加工
功能
1)指令控制。完成取指令、分析指令和执行指令的操作,即程序的顺序控制。
2)操作控制。一条指令的功能往往由若干操作信号的组合来实现。CPU管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作。
3)时间控制。对各种操作加以时间上的控制。时控制要为每条指令按时间顺序提供应有的控制信号。
4)数据加工。对数据进行算术和逻辑运算。
5)中断处理。对计算机运行过程中出现的异常情况和特殊请求进行处理。
CPU的基本结构
运算器
功能:
接收从控制器送来的命令并执行相应的动作,对数据进行加工处理。
组成:
算术逻辑单元(ALU)
主要功能是进行算术/逻辑运算。
暂存寄存器
用于暂存从主存读来的数据,该数据不能存放在通用寄存器中,否则会破坏其原有内容。 暂存寄存器对应用程序员是透明的。
累加寄存器(ACC)
它是一个通用寄存器,用于暂时存放ALU运算的结果信息,可以作为加法运算的一个 输入端。
通用寄存器组
如AX、BX、CX、DX、SP等,用于存放操作数(包括源操作数、目的操作数及中间结果) 和各种地址信息等。SP是堆栈指针,用于指示栈顶的地址。
程序状态字寄存器(PSW)
保留由算术逻辑运算指令或测试指令的结果而建立的各种状态信息,如溢出标志(OF)、 符号标志(SF)、零标志(ZF)、进位标志(CF)等。PSW中的这些位参与并决定微操 作的形成。
移位器
对操作数或运算结果进行移位运算。
计数器(CT)
控制乘除运算的操作步数。
控制器
功能:
协调并控制计算机各部件执行程序的指令序列,基本功能如下:
分析指令:操作码译码(分析本条指令要完成什么操作);产生操作数的有效地址。
执行指令:根据分析指令得到的“操作命令”和“操作数地址”,形成操作信号控制序列,控制 运算器、存储器以及I/O设备完成相应操作
中断处理:管理总线及输入输出;处理异常情况(如掉电)和特殊请求(如打印机请求打印 字符)。
组成:
程序计数器(PC)
用于指出欲执行指令在主存中的存放地址。CPU根据PC的内容去主存中取指令。因程 序中指令(通常)是顺序执行的,所以PC有自增功能。容量:log2存储容量
指令寄存器(IR)
用于保存当前正在执行的那条指令。容量:指令字长
指令译码器
仅对操作码字段进行译码,向控制器提供特定的操作信号。
存储器地址寄存器(MAR)
用于存放要访问的主存单元的地址。容量:log2存储容量
存储器数据寄存器(MDR)
用于存放向主存写入的信息或从主存读出的信息。容量:存储字长
时序系统。
用于产生各种时序信号,它们都由统一时钟(CLOCK)分频得到。
微操作信号发生器
根据IR的内容(指令)、PSW的内容(状态信息)及时序信号,产生控制整个计算机系 统所需的各种控制信号,其结构有组合逻辑型和存储逻辑型两种。
用户可见寄存器:通用寄存器组、程序状态字寄存器、程序计数器;可对这类寄存器编程
用户不可见的寄存器:存储器地址寄存器、存储器数据寄存器、指令寄存器、暂存寄存器;不可对这类寄存器编程
指令
指令周期:CPU从主存中取出并执行一条指令的时间称为指令周期,不同指令的指令周期可能不同。
机器周期:也称节拍或T周期,指令周期常用若干机器周期来表示,它是CPU操作的最基本单位。
时钟周期:一个机器周期包含若干时钟周期。
指令周期流程
一个完整的的指令周期应包括取指、间址、执行和中断4个周期。
指令周期的数据流
取指周期
任务:取指周期的任务是根据PC中的内容从主存中取出指令代码并存放在IR中
PC-①->MAR-②->地址总线-③->主存
当前指令地址送至存储器地址寄存器,
记做:(PC)→ MAR
CU发出读命令-④->控制总线-⑤->主存
CU发出读信号,经控制总线传到主存
记做:1→R
主存-⑥->数据总线-⑦->MDR-⑧->IR (存放指令)
将MAR所指主存内容经数据总线送入MDR,记做:M(MAR)→MDR
将MDR中的内容(此时是指令)送入IR,记做:(MDR)→IR
CU发出控制信号-⑨->PC内容加1
CU发出控制信号,形成下一条指令地址,记做:(PC)+1→PC
间址周期
任务:间址周期的任务是取操作数有效地址。
Ad(IR/MDR)-①->MAR-②->地址总线-③->主存
将指令的地址码送入MAR,记做:
Ad(IR)→ MAR或Ad(MDR)→ MAR
CU发出读命令-④->控制总线-⑤->主存
CU发出控制信号,启动主存做读操作,
记做:1→R
主存-⑥->数据总线-⑦->MDR (存放有效地址)
将MAR所指主存中的内容经数据总线送入MDR,记做:M(MAR)→ MDR
将有效地址送至指令的地址码字段,记做:(MDR)→ Ad(IR)
其中,Ad(IR)表示取出IR中存放的指令字的地址字段
执行周期
执行周期的任务是根据IR中的指令字的操作码和操作数通过ALU操作产生执行结果。
不同指令的执行周期操作不同,因此没有统一的数据流向。
中断周期
任务:处理中断请求。暂停当前任务去完成其他任务,为了能够恢复当前任务,需要保存断点。
一般使用堆栈来保存断点,这里用SP表示栈顶地址,假设SP指向栈顶元素,进栈操作是先修改指针,后存入数据。
CU控制将SP减1,SP-①->MAR-②->地址总线-③->主存
CU控制将SP减1,修改后的地址送入MAR
记做:(SP)-1 → SP,(SP)→ MAR
本质上是将断点存入某个存储单元,假设其地址为a,故可记做:a→MAR
CU发出写命令-④->控制总线-⑤->主存
CU发出控制信号,启动主存做写操作,记做:1→ W
PC-⑥->MDR-⑦->数据总线-⑧->主存 (程序断点存入主存)
将断点(PC内容)送入MDR,记做:(PC)→ MDR
CU (中断服务程序的入口地址) -⑨->PC
CU控制将中断服务程序的入口地址(由向量地址形成部件产生)送入PC,
记做:向量地址→PC
指令执行方案
一个指令周期通常要包括几个时间段(执行步骤),每个步骤完成指令的一部分功能,几个依次执行的步骤完成这条指令的全部功能。
单指令周期
特点:对所有指令都选用相同的执行时间来完成,指令之间串行执行。
指令之间串行执行,即下一条指令只能在前一条指令执行结束后才能启动。
时钟周期:时钟周期取决于执行时间最长的指令的执行时间。
对于那些本来可以在更短时间内完成的指令,要使用较长的周期来完成,会降低整个系统的运行速度。
多指令周期
特点:对不用类型的指令选用不同的执行步骤来完成,指令之间串行执行。
时钟周期:可选用不同个数的时钟周期来完成不同指令的执行过程,需要更复杂的硬件设计。
流水线方案
特点:指令之间并行执行。
时钟周期:在每一个时钟周期启动一条指令,尽量让多条指令同时运行,但各自处在不同的执行步骤中。
数据通路的功能和基本结构
数据通路的功能
·数据通路:数据在功能部件之间传送的路径。
数据通路描述了信息从什么地方开始,中间经过哪个寄存器或多路开关,最后传送到哪个寄存器,这些都需要加以控制。
·构成:包括数据通路上流经的部件,如ALU、通用寄存器、状态寄存器、异常和中断处理逻辑等。
数据通路由控制部件控制,控制部件根据每条指令功能的不同生成对数据通路的控制信号。
·功能:实现CPU内部的运算器与寄存器及寄存器之间的数据交换。
数据通路的基本结构
基本结构类型
·CPU 内部单总线方式:将所有寄存器的输入和输出端连接到一条公共通路上
结构比较简单,但数据传输存在较多的冲突现象,性能较低
·CPU内部三总线方式:将所有寄存器入的输入和输出端连接到多条公共通路上
同时在多个总线上传送不同的数据,效率提高
·专用数据通路方式:根据指令执行过程中的数据和地址的流动方向安排连接线路
避免使用共享的总线,性能较高,但硬件量大
CPU内部单总线数据通路(给个例子)
控制器
结构
下图介绍了计算机硬件系统的五大功能部件及其连接关系。它们通过数据总线、地址总线和控制总线连接在一起,其中点画线框内的是控制器部件。
·运算器部件通过数据总线与内存储器、输入设备和输出设备传送数据。
·输入设备和输出设备通过接口电路与总线相连接。
·内存储器、输入设备和输出设备从地址总线接收地址信息,从控制总线得到控制信号,通过数据总线与其他部件传送数据。
·控制器部件从数据总线接收指令信息,从运算器部件接收指令转移地址,送出指令地址到地址总线,还要向系统中的部件提供它们运行所需要的控制信号。
控制的功能
从主存中取出一条指令,并指出下一条指令在主存中的位置。
对指令进行译码或测试,产生相应的操作控制信号,以便启动规定的动作。
指挥并控制 CPU、主存、输入和输出设备之间的数据流动方向。
异常和中断机制
异常和中断的基本概念
异常:由CPU内部产生的意外事件被称为异常,有些教材中也称内中断。
是CPU执行一条指令时,由CPU在其内部检测到的、与正在执行的指令相关的同步事件;
中断:由来自CPU外部的设备向CPU发出的中断请求被称为中断,通常用于信息的输入和输出,有些教材中也称外中断。
是一种典型的由外部设备触发的、与当前正在执行的指令无关的异步事件。
异常和中断的分类
异常的分类
故障(Fault)
·定义:指在引起故障的指令启动后、执行结束前被检测到的异常事件。
例:指令译码时,出现“非法操作码”;取数据时,发生**“缺段”或“缺页"**;执行整数除法指令时,发现“除数为0”等。
·处理:内核程序修复后会把CPU使用权还给应用程序,让它继续执行。(如缺页中断)
·对于“非法操作码”和“除数为0”等,因为无法通过异常处理恢复故障,必需终止程序。
自陷(Trap)
·定义:也称陷阱或陷入,它是预先安排的一种“异常”事件,就像预先设定的陷阱一样。
例:“断点调试”、单步跟踪、系统调用
·处理:CPU在执行完自陷指令后,自动根据不同“陷阱”类型进行相应的处理,然后返回到自陷指令的下一条指令执行。注意,当自陷指令是转移指令时,并不是返回到下一条指令执行,而是返回到转移目标指令执行。
·故障和自陷异常属于软件中断(程序性异常);终止和外中断属于硬件中断
终止(Abort)
定义:由致命错误起,内核程序无法修复该错误,一股直接终止该应用程序。
例:控制器出错、存储器校验错误、总线错误等;此时,只能调出中断服务程序来重启系统。
中断的分类
中断是指来自CPU外部、与CPU执行指令无关的事件引起的中断,包括IO设备发出的IO中断(如键盘输入、打印机缺纸等),或发生某种特殊事件(如用户按Esc键、定时器计数时间到)等。
外部I/O设备通过特定的中断请求信号线向CPU提出中断请求,CPU每执行完一条指令就检查中断请求信号线,如果检测到中断请求,则进入中断响应周期。
可屏蔽中断
指通过可屏蔽中断请求线INTR向CPU发出的中断请求。CPU可以通过在中断控制器中设置相应的屏蔽字来屏蔽它或不屏蔽它,被屏蔽的中断请求将不被送到CPU。
不可屏蔽中断
指通过专门的不可屏蔽中断请求线NMI向CPU发出的中断请求,通常是非常紧急的硬件故障,如电源掉电等。这类中断请求信号不可被屏蔽,以让CPU快速处理这类紧急事件。
中断和异常的不同点
·“缺页”或“溢出”等异常事件是由特定指令在执行过程中产生的
·中断不和任何指令相关联,也不阻止任何指令的完成。
·异常的检测由CPU自身完成,不必通过外部的某个信号通知CPU。
·对于中断,CPU必须通过中断请求线获取中断源信息,才能知道哪个设备发生了何种中断。
异常和中断响应过程
CPU对异常和中断响应的过程可分为:关中断、保存断点和程序状态、识别异常和中断并转到相应的处理程序。
关中断
在保存断点和程序状态期间,不能被新的中断打断,因此要禁止响应新的中断,即关中断。
·通常通过设置**“中断允许”(IF)触发器**来实现,
若IF置为1,则为开中断,表示允许响应中断;
若IF置为0,则表示关中断,表示不允许响应中断。
保存断点和程序状态
为了能在异常和中断处理后正确返回到被中断的程序继续执行,必须将程序的断点(返回地址)送到栈或特定寄存器中。通常保存在栈中,这是为了支持异常或中断的嵌套。
异常和中断处理后可能还要回到被中断的程序继续执行,被中断时的程序状态字寄存器PSWR的内容也需要保存在栈或特定寄存器中,在异常和中断返回时恢复到PSWR中。
识别异常和中断并转到相应的处理程序
软件识别方式
指CPU设置一个异常状态寄存器,用于记录异常原因。操作系统使用一个统一的异常或中断查询程序,按优先级顺序查询异常状态寄存器,以检测异常和中断类型,先查询到的先被处理,然后转到内核中相应的处理程序。
硬件识别方式 向量中断
异常或中断处理程序的首地址称为中断向量,所有中断向量都存放在中断向量表中。每个异常或中断都被指定一个中断类型号。在中断向量表中,类型号和中断向量一一对应,因而可以根据类型号快速找到对应的处理程序。
指令流水线(无冒险)
指令流水线的基本概念
可从两方面提高处理机的并行性:
①时间上的并行技术,将一个任务分解为几个不同的子阶段,每个阶段在不同的功能部件上并行执行,以便在同一时刻能够同时执行多个任务,进而提升系统性能,这种方法被称为流水线技术。
②空间上的并行技术,在一个处理机内设置多个执行相同任务的功能部件,并让这些功能部件并行工作,这样的处理机被称为超标量处理机。
指令流水的定义
一条指令的执行过程可以分为以下5个阶段:
取指(IF):从指令存储器或Cache 中取指令。
译码/读寄存器(ID):操作控制器对指令进行译码,同时从寄存器堆中取操作数。
执行/计算地址(EX):执行运算操作或计算地址。
访存(MEM):对存储器进行读写操作。
写回(WB):将指令执行结果写回寄存器堆。
把k+1条指令的取指阶段提前到第k条指令的译码阶段,从而将第k+1条指令的译码阶段与第k条指令的执行阶段同时进行,如图所示
理想情况下,每个时钟周期都有一条指令进入流水线,每个时钟周期都有一条指令完成,每条指令的时钟周期数(即CPI)都为1。
为了利于实现指令流水线,指令集应具有如下特征:
1)指令长度应尽量一致,有利于简化取指令和指令译码操作。否则,取指令所花时间长短不一,使取指部件极其复杂,且也不利于指令译码。
2)指令格式应尽量规整,尽量保证源寄存器的位置相同,有利于在指令未知时就可取寄存器操作数,否则须译码后才能确定指令中各寄存器编号的位置。
3)采用Load/Store指令,其他指令都不能访问存储器,这样可把Load/Store指令的地址计算和运算指令的执行步骤规整在同一个周期中,有利于减少操作步骤。
4)数据和指令在存储器中“对齐”存放。这样,有利于减少访存次数,使所需数据在一个流水段内就能从存储器中得到。
流水线的数据通路
IF段包括程序计数器(PC)、指令存储器、下条指令地址的计算逻辑;
ID段包括操作控制器、取操作数逻辑、立即数符号扩展模块;
EX段主要包括算术逻辑单元(ALU)、分支地址计算模块;
MEM段主要包括数据存储器读写模块;
WB段主要包括寄存器写入控制模块。
每个流水段后面都需要增加一个流水寄存器,用于锁存本段处理完成的数据和控制信号,以保证本段的执行结果能在下个时钟周期给下一流水段使用。
流水线指标
流水线的吞吐率(TP)
吞吐率是指在单位时间内流水线所完成的任务数量,或是输出结果的数量。其公式如下:
任务数n / 完成任务n所用的时间Tk
N—> 无穷 tp=1/@t
流水线的加速比(S)
完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比。
不使用流水线时间 / 使用流水线时间
N—> 无穷 s=k
效率
流水线的设备利用率称为流水线的效率。
在时空图上,流水线的效率定义为完成n个任务占用的时空区有效面积与n个任务所用的时间与k个流水段所围成的时空区总面积之比。
高级流水线技术
超标量流水线技术
也称动态多发射技术,每个时钟周期内可并发多条独立指令,以并行操作方式将两条或多条指令编译并执行。
要配置多个功能部件
指令是按顺序发射执行,不能调整指令的执行顺序
通过编译优化技术,把可并行执行的指令搭配起来
超长指令字技术
也称静态多发射技术,由编译程序挖掘出指令间潜在的并行性,将多条能并行操作的指令组合成一条具有多个操作码字段的超长指令字(可达几百位),为此需要采用多个处理部件
超流水线技术
在流水线一个时钟周期再划分多个功能段,通过提高流水线主频的方式来提升流水线性能。
多处理器
单指令流单数据流(SISD)结构
特性:在一段时间内仅执行一条指令,按指令流规定的顺序串行执行指令流中的若干条指令。
各指令序列只能并发、不能并行,每条指令处理一两个数据;不是数据级并行技术
硬件构成:传统的串行计算机结构,一个处理器和一个存储器;若采用指令流水线,需设置多个功能部件,采用多模块交叉存储器
前面介绍的内容多属于SISD结构
单指令流多数据流(SIMD)结构
特性:一个指令流同时对多个数据流进行处理,一般称为数据级并行技术。
各指令序列只能并发、不能并行,但每条指令可同时处理很多个具有相同特征的数据
硬件组成:一个指令控制部件(CU)+多个处理单元/执行单元(如ALU)+多个局部存储器+一个主存储器
每个处理单元虽然执行的都是同一条指令,但是每个单元都有自己的地址寄存器,这样每个单元就都有不同的数据地址。不同处理单元执行的同一条指令所处理的不同数据。
SIMD在使用for循环处理数组时最有效,比如,一条分别对16对数据进行运算的SIMD指令,如果在16个ALU中同时运算,则只需要一次运算时间就能完成运算。
SIMD在使用case或switch语句时效率最低,此时每个执行单元必须根据不同的数据执行不同的操作。
多指令流单数据流(MISD)结构
多条指令并行执行,处理同一个数据。现实中不存在这种计算机。
多指令流多数据流(MIMD)结构
MIMD是指同时执行多条指令分别处理多个不同的数据,MIMD分为多计算机系统和多处理器系统。
特性:各指令序列并行执行,分别处理多个不同的数据;是一种线程级并行、甚至是线程级以上并行技术
多计算机系统
特性:各计算机之间,不能通过存取指令直接访问对方的存储器,只能通过“消息传递”相互传送数据
硬件组成:由多台计算机组成,因此拥有多个处理器+多个主存储器;每台计算机拥有各自的私有存储器,物理地址空间相互独立
多处理器系统
特性:各处理器之间,可以通过存取指令,访问同一个主存储器,可通过主存相互传送数据
硬件组成:一台计算机内,包含多个处理器+一个主存储器;多个处理器共享单一的物理地址空间
向量处理器
向量处理器是SIMD的变体,是一种实现了直接操作一维数组(向量)指令集的CPU,而串行处理器只能处理单一数据集。
基本理念:将从存储器中收集的一组数据按顺序放到一组向量寄存器中,然后以流水化的方式对它们依次操作,最后将结果写回寄存器。
向量处理器在特定工作环境中极大地提升了性能,擅长对向量型数据并行计算、浮点数运算,常被用于超级计算机中,处理科学研究中巨大运算量
硬件组成:多个处理单元,多组“向量寄存器”;主存储器应采用“多个端口同时读取”的交叉多模块存储器;主存储器大小限定了机器的解题规模,因此要有大容量的、集中式的主存储器
多核处理器的基本概念
多核处理器是指将多个处理单元集成到单个CPU中,每个处理单元称为一个核(core)。
每个核可以有自己的Cache,也可以共享同一个Cacheo所有核一般都是对称的,并且共享主存储器,因此多核属于共享存储的对称多处理器。下图是不共享Cache的双核CPU结构。
多核上的多个线程是在物理上并行执行的,是真正意义上的并行执行,在同一时刻有多个线程在并行执行。而单核上的多线程是一种并发的多线程交错执行,实际上在同一时刻只有一个线程在执行。
共享内存多处理器的基本概念
定义
具有共享的单一物理地址空间的多处理器被称为共享内存多处理器(SMP)。
处理器通过存储器中的共享变量互相通信,所有处理器都能通过存取指令访问任何存储器的位置。注意,即使这些系统共享同一个物理地址空间,它们仍然可在自己的虚拟地址空间中单独地运行程序。
分类
统一存储访问(UMA)多处理器
定义:每个处理器对所有存储单元的访问时间是大致相同的,即访问时间与哪个处理器提出访存请求及访问哪个字无关。
结构:CPU通过前端总线和北桥芯片相连,越来越多的CPU对前端总线的争用使得前端总线成为瓶颈。
分类:根据处理器与共享存储器之间的连接方式,分为基于总线、基于交叉开关网络和基于多级交换网络连接等几种处理器。
非统一存储访问(NUMA)多处理器
定义:某些访存请求要比其他的快,具体取决于哪个处理器提出了访问请求以及访问哪个字,这是由于主存被分割并分配给了同一机器上的不同处理器或内存控制器。
结构:内存控制器被集成到CPU内部,每个CPU都有独立的内存控制器。每个CPU都独立连接到一部分内存,CPU直连的这部分内存被称为本地内存。
分类:处理器中不带高速缓存时,被称为NC-NUMA;处理器中带有一致性高速缓存时,被称为CC-NUMA。
在NUMA架构下,内存的访问出现了本地和远程的区别,访问本地内存明显要快于访问远程内存。
硬件多线程的基本概念
为了减少线程切换过程中的开销,便诞生了硬件多线程。在支持硬件多线程的CPU中,必须为每个线程提供单独的通用寄存器组、单独的程序计数器等,线程的切换只需激活选中的寄存器,从而省略了与存储器数据交换的环节,大大减少了线程切换的开销。
细粒度多线程
·多个线程之间轮流交叉执行指令,多个线程之间的指令是不相关的,可以乱序并行执行。
·处理器能在每个时钟周期切换线程。
粗粒度多线程
·仅在一个线程出现了较大开销的阻塞时,才切换线程,如Cache 缺失。
·阻塞时,新线程的指令开始执行前需要重载流水线,线程切换的开销比细粒度多线程更大。
同时多线程
·同时多线程(SMT)在同一个时钟周期中,发射多个不同线程中的多条指令执行。
·Intel 处理器中的超线程(Hyper-threading)就是同时多线程SMT,即在一个单处理器或单个核中设置了两套线程状态部件,共享高速缓存和功能部件。