计算机体系结构
1. 计算机体系结构分类🔥
Flynn分类法🔥 (其实就是按照指令、数据流来分类)
体系结构类型 | 结构 | 关键特性 | 代表 |
---|---|---|---|
单指令流单数据流SISD | 控制部分1个、处理器1个、主存模块1个 | 单处理器系统 | |
单指令流多数据流SIMD | 控制部分1个、处理器多个、主存模块多个 | 各处理器以异步的形式执行同一条指令 | 并行处理机、阵列处理机、超级向量处理机 |
多指令流单数据流MISD | 控制部分多个、处理器1个、主存模块多个 | 被证明不可能,至少是不实际🔥 | 目前没有,有文献称流水线计算机为此类 |
多指令流多数据流MIMD | 控制部分多个、处理器多个、主存模块多个 | 能够实现作业、指令等任务、各级全面并行 | 多处理机系统、多计算机 |
【记忆】
指令
就是控制
,单指令流对应1个控制部分,多指令流对应多个控制部分处理器
用来处理数据流
,单处理器对应1个处理器、多处理器对应多个处理器- 主存模块用来存储,
既存储指令也存储数据
,所以控制部分和处理器有一个是多个,主存模块就是多个 单
对应Simple
的S,多
对应Multi
的M
🍉【例题】Flynn分类法根据计算机在执行程序的过程中 ( ) 的不同组合,将计算机分为4类。当前主流的多核计算机属于 ( ) 计算机。
【第一个空】
A.指令流和数据流 B.数据流和控制流 C.指令流和控制流 D.数据流和总线带宽
【第二个空】
A.SISD B.SIMD C.MISD D.MIMD
【答案】A ;D(主流多核计算机)
2. 计算机指令
一条指令由操作码和操作数两部分组成,操作码决定要完成的操作,操作数指参加运算的数据及其所在的单元地址。例如,操作码是加法运算,操作数则是加数与被加数。操作码和地址码(整条指令)以二进制编码的形式存放在存储器中。
计算机指令执行过程:取指令一一分析指令一一执行指令。首先将程序计数器PC中的指令地址取出,送入地址总线,CPU依据指令地址去内存中取出指令内容存入指令寄存器IR;而后由指令译码器进行分析,分析指令操作码;最后执行指令,取出指令执行所需的源操作数。
2.1 指令寻址方式
即这条指令执行完如何执行下一条指令
- 顺序寻址方式:当执行一段程序时,一条指令接着一条指令地顺序执行
- 跳跃寻址方式:本条指令直接给出下一条指令的地址码,而不是由程序计数器PC给出。程序跳跃后,按新的指令地址开始顺序执行,并更新程序计数器的值,以便跟踪执行的位置。
2.2 指令操作数的寻址方式
- 立即寻址方式:指令的地址码字段指出的不是地址,而是操作数本身
- 直接寻址方式:在指令的地址字段中直接指出操作数在主存中的地址
- 间接寻址方式:指令地址码字段所指向的存储单元中存储的是操作数的地址
- 寄存器寻址方式:指令中的地址码是寄存器的编号
2.3 指令系统🔥
指令系统类型 | 指令 | 寻址方式 | 实现方式 | 其它 |
---|---|---|---|---|
C ISC(复杂 指令系统) | 数量多,兼容性强,使用频率差别大,可变长格式 | 支持多种 | 微程序控制技术(微码) | 研制周期长 |
RISC(精简 指令系统) | 数量少,使用频率接近,定长格式,大部分为单周期指令,操作寄存器,只有Load/Store操作内存 | 支持方式少 | 主要依靠硬件实现,增加了通用寄存器,以硬布线逻辑控制为主;适合采用流水线 | 优化编译,有效支持高级语言 |
🍉【例题】以下关于复杂指令集计算机(Complex Instruction Set Computer,CISC)的叙述中正确的是 ( )
A. 只设置使用频度高的一些简单指令,不同指令执行时间差别很小
B. CPU 中设置大量寄存器,利用率低
C. 常采用执行速度更快的组合逻辑实现控制器
D. 指令长度不固定,指令格式和寻址方式多
【答案】D
【解析】增加了通用寄存器,即有大量寄存器的是精简指令系统RISC;CISC是使用微程序控制实现的,而不是组合逻辑实现控制器;指令长度不固定,即指令长度为可变长格式
2.4 指令流水线
(1) 指令流水线原理
将指令分成不同段,每段由不同的部分去处理,因此可以产生叠加的效果,所有的部件去处理指令的不同段,如下图所示:
(2) 流水线的相关计算🔥
- 流水线周期:指令分成不同执行段,其中执行时间最长的段为流水线周期
- 流水线执行时间:1条指令总执行时间 + (总指令条数 - 1)✖ 流水线周期
- 流水线吞吐率(即:单位时间内指令的条数或完成的任务数):总指令条数 / 流水线执行时间
- 流水线加速比(即:不使用流水线总执行时间比使用流水线总执行时间慢多少,加速比越大,流水线的执行效率就越高):不使用流水线总执行时间 / 使用流水线总执行时间
- 超标量流水线技术:常规流水线是度为1的,即每个流水线阶段只执行一个部分。当度大于1时,就是超标量技术,当度为3时,相当于3条流水线并行执行,即取指、分析、执行每个阶段都同时处理3条指令,因此,当题目提到度的概念时,计算时需要将: 指令条数 = 指令条数 / 度,然后再套流水线执行时间的公式
🍉【例题】流水线的吞吐率是指流水线在单位时间里所完成的任务数或输出的结果数。设某流水线有5段,有1段的时间为2ns ,另外4段的每段时间为1ns,利用此流水线完成 100 个任务的吞吐率约为
( )个s。
A.500 ✖ 106
B.490 ✖ 106
C.250 ✖ 106
D.167 ✖ 106
【解析】
- 流水线的吞吐率 =
总指令条数
/ 流水线执行时间,其中总指令条数是100个任务
,即100 - 流水线执行时间 =
1条指令总执行时间
+ (总指令条数 - 1)✖流水线周期
,其中一条指令总执行时间是由5段组成,有1段的时间为2ns ,另外4段的每段时间为1ns,所以一条指令总执行时间 = 2 + 4 = 6 ns
,而流水线周期是指执行时间最长的段
,即2ns
- 所以吞吐率 = 100 / [ 6 + (100 -1 ) ✖ 2ns ] = 100 / 204
ns
= 100 / 204 ✖ 10-9s
= (100 / 204) ✖ 109 = 490 ✖ 106 s,注意:1s = 109ns(纳秒)
【答案】B
🍉【例题】流水线技术是通过并行硬件来提高系统性能的常用方法。对于一个k段流水线,假设其各段的执行时间均相等(设为t) ,输入到流水线中的任务是连续的理想情况下,完成n个连续任务需要的总时间为 ( ) 。若某流水线浮点加法运算器分为5段,所需要的时间分别是6ns、7ns、8ns、9ns和6ns,则其最大加速比为 ()
【第一空】
A. nkt B. (k+n-1)t C. (n-k)kt D. (k+n+1)t
【第二空】
A.4 B.5 C.6 D.7
【解析】第一空求完成n个连续任务需要的总时间,即求流水线执行时间,流水线执行时间 = 1条指令总执行时间 + (总指令条数 - 1)✖ 流水线周期 = kt + (n - 1) ✖ t = kt + nt - t = (k+n-1)t
PS:指令 = 任务 = 执行 = 流水线,1条流水线被分为了k段,每段的时间分别是........,完成n个连续任务即完成n条流水线(n条指令)
第二空并不知道有多少条总指令,假设有n条总指令,则流水线执行时间 = 36 + ( n - 1) ✖ 9 = 9n + 27,而不使用流水线执行时间 = 36n,最大加速比 = 36n / (9n + 27),因为是最大加速比,所以当n为无穷大时,加速比才最大,当n无穷大的时候,27可以忽略不计,因此最大加速比 = 不使用流水线总执行时间 / 使用流水线总执行时间 = 36n / 9n = 4
【答案】B;A