Flynn分类法
Flynn分类法是1966年,M. J. Flynn提出的根据指令流、数据流的多倍性特征对计算机系统的分类方法。
- 指令流为机器执行的指令序列。
- 数据流是由指令调用的数据序列。包括输入数据和中间结果,不包括输出数据
分类
Flynn把计算机系统的结构分为4类
记法:列个表格(看上图),纵列代表Data数据,横向代表Instruction指令
单指令流、单数据流(Single Instruction stream Single Data stream,SISD)
SISD机器是一种传统的串行计算机,它的硬件不支持任何形式的并行计算,所有的指令都是串行执行。并且在某个时钟周期内,CPU只能处理一个数据流。因此这种机器被称作单指令流单数据流机器。在早期的计算机都是SISD机器,如冯诺.依曼架构中的IBM PC机,早期的巨型机和许多8位的家用机等。
单指令流、多数据流(Single Instruction stream Multiple Data stream,SIMI)
SIMD是采用一个指令流处理多个数据流。这类机器在数字信号处理、图像处理、以及多媒体信息处理等领域非常有效。早期的单核计算机用的就是这种结构,另外需要额外注意GPU(显卡)采用的也是这样的品牌。
多指令流、单数据流(Multiple Instruction stream Single Data stream,MISD)
只是作为理论模型出现,没有投入到实际应用中。(需要额外记一下)
多指令流、多数据流(Multiple Instruction stream Multiple Data stream,MIMD)
当前主流计算机都是用的这种架构,比如Intel和AMD的双核处理器等都属于这个类型
总结
体系结构类型 | 说明 |
---|---|
单指令流单数据流 SISD | 一种传统的串行计算机, 比如:冯诺.依曼架构,IBM PC机,早期的巨型机。 |
单指令流多数据流 SIMD | 单核计算机、GPU, 在数字信号处理、图像处理、以及多媒体信息处理等领域非常有效。 |
多指令流单数据流 MISD | 只是作为理论模型出现,没有投入到实际应用中 |
多指令流多数据流 MIMD | 当前主流计算机, 如Intel和AMD的多核处理器。 |
练习题
Flynn分类法根据计算机在执行程序的过程中( )的不同组合,将计算机分为4类。当前主流的多核计算机属于( )计算机。
A.指令流和数据流
B.数据流和控制流
C.指令流和控制流
D.数据流和总线带宽
A.SISD
B.SIMD
C.MISD
D.MIMD
答案:A D
CISC与RISC
指令系统:CISC(Complex Instruction Set Computer,复杂指令集计算机)和RISC(Reduced Instruction Computer,精简指令集计算机)
这部分内容在考试中考得不会太深,大家只需要掌握下列表格里的CISC和RISC的比对特点就可以了
指令系统类型 | 指令 | 寻址方式 | 实现方式 | 其他 | 代表 |
---|---|---|---|---|---|
CISC(复杂) | 数量多,使用频率差别大,可变长格式 | 支持多种 | 微程序控制技术 (微码) | 研制周期长 | X86 |
RISC(精简) | 数量少,使用频率接近,定长格式,大部分为单周期指令,操作寄存器, 只有Load/Store操作内存 | 支持方式少 | 增加了通用寄存器;硬布线逻辑控制为主; 更适合采用流水线 | 优化编译,有效支持高级语言,例如JAVA | RISC-V ARM |
练习题
以下关于RISC和CISC的叙述中,不正确的是( )(2022年上半年)
A.RISC的大多指令在一个时钟周期内完成
B.RISC普遍采用微程序控制器,CISC则普遍采用硬布线控制器
C.RISC的指令种类和寻指方式相对于CISC更少
D.RISC和CISC都采用流水线技术
答案:B
流水线
前面提到的CISC和RISC都采用流水线。其中RISC更适合流水线,那什么是流水线呢?
流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。
各种部件同时处理是针对不同指令而言的,它们可同时为多条指令的不同部分进行工作,以提高各部件的利用率和指令的平均执行速度。
看上图,我们将一个指令的具体过程分成取指、分析、执行三个步骤。每个步骤都会用到不同的硬件,取指有取指设备,分析有分析设备,执行有执行设备。
假设取指、分析、执行每一个步骤都用的时间都是1ms,那顺序来看的话,我们把它就做顺序执行过程。
在这个过程当中,第一条指令我们用红色标记,取指、分析、执行这一段时间用了3ms。然后紧接着又开始了第二条指令,我们用蓝色标记,它从第3ms开始取指、分析、执行也是用了3ms。第三条指令我们用黄色标记,在第二条指令结束后,马上就开始了取指、分析和执行,也用了3ms。一共用了9ms的时间。
每一条指令一次顺序执行形成一个指令串,看起来好像是新云流水,没有任何空闲,但是放大拉开来看,我们用时空图(上图右下角)来看。我们会发现这里有时间空余,那都是空出来的时间。
假如我们把这些步骤左移,把这些空余时间都利用起来,那么就形成了新的时空图(上图左下角)。它也是取指、分析和执行,但是会显得更加紧凑。首先它把各个设备空余的时间片都利用起来,其次它提高了每个部件的执行效率,而最关键的是从时空图可以看到同样是执行三条指令只需要5ms,而刚刚按顺序执行需要9ms。所以使用流水线的执行效率是非常高的。
针对每个部件来看:我们的空闲时间都减少了,每个部件的利用率也都会显著的提高。
那流水线执行的过程来看:在某一个时间点上看会发现第一、第二、第三条指令在不同的部件上同时运行起来了(左下角时序图的2-3ms之间)。
在取指、分析、执行三个设备上同时运行起来的过程就就做准并行
。准并行并不是真正的并行,大家齐头并进同时开始,而这里它并没有同时开始只是在某个时间上在不同的部件上形成了准并行的结构
流水线计算公式
流水线周期为执行时间最长的一段
流水线计算公式为:
第1条指令执行时间+(指令条数-1)* 流水线周期
- 理论公式:(t1+t2+…+tk)+(n-1)*t
K是一条指令可以分解为K个步骤
t是流水线周期
考试默认用理论公式,若没有答案再用实践公式 - 实践公式:K*t+(n-1)*t
题目
一条指令的执行过程可以分解为取指、分析和执行三步,在取指时间t取指=3△t、分析时间t分析=2△t、执行时间t执行=4△t的情况下,若按串行方式执行,则10条指令全部执行完需要( )△t;若按流水线的方式执行,流水线周期为( )△t,则10条指令全部执行完需要( )△t。
答案:
(3△t+2△t+4△t)*10
4△t
(3△t+2△t+4△t)+ (10-1) * 4△t
吞吐率和加速比
流水线的吞吐率
(Though Put rate,TP)是指在单位时间内流水线所完成的任务数量或输出的结果数量。
计算流水线吞吐率的最基本公式如下:
T P = 指令条数 流水线执行时间 TP=\frac{指令条数}{流水线执行时间} TP=流水线执行时间指令条数
流水线最大吞吐率
:(记住,考试直接使用)
T P m a x = lim n → ∞ n ( k + n − 1 ) t = 1 t TP_{max}=\begin{aligned} \lim_{n\to \infty} \tfrac{n}{(k+n-1)t} \end{aligned}=\frac{1}{t} TPmax=n→∞lim(k+n−1)tn=t1
流水线的加速比
是指完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比。
S = 不使用流水线执行时间 使用流水线执行时间 S=\frac{不使用流水线执行时间}{使用流水线执行时间} S=使用流水线执行时间不使用流水线执行时间
练习题
执行指令时,将每一节指令都分解为取指、分析和执行三步。已知取指时间5△t,分析时间2△t,执行时间3△t,如果按照取指、分析、执行重叠的流水线方式执行指令,从头到尾执行完500条指令需( )△t。(2019年下半年)
A. 2500
B. 2505
C. 2510
D. 2515
答案:B
理论公式 (5△t+2△t+3△t)+(500-1)*5△t = 2505△t
实践公式3 * 5△t +(500-1)*5△t = 2510△t
默认用理论公式
冯诺依曼结构和哈佛结构
在考试当中,偶尔会出一道选择题
冯诺依曼结构
冯·诺伊曼结构也称普林斯顿结构,在1946年第一台计算机诞生,人类从此进入了计算机时代。后来由美籍的匈牙利数学家:冯.诺依曼提出了计算机“存储程序”的计算机设计理念,也就是将计算机指令进行编码后存储在计算机的存储器中,需要的时候可以顺序地执行程序代码,从而控制计算机运行,这就是冯.诺依曼计算机体系的开端。
冯.诺依曼结构的核心设计思想主要体现在如下三个方面:
- 程序、数据的最终形态都是二进制编码。程序和数据都是以二进制方式存储在存储器中的,二进制编码也是计算机能够所识别的可执行编码。
- 程序、数据和指令序列都是事先存在内存当中,以便计算机在工作时能够高速地从内存当中取得指令并加以分析和执行。
- 确定了计算机的五个基本组成部分分别是运算器、控制器、存储器以及输入设备和输出设备(I/O设备)
冯诺依曼结构是一种将程序指令存储器和数据存储器合并在一起的存储器结构。另外哈佛结构是将程序指令存储器和数据存储器分开的存储器结构。这个区别需要记住
特点:
- 冯诺依曼结构一般用于PC处理器,我们的电脑基本上都是冯诺依曼结构。无论CPU是AMD、英特尔的酷睿i3,i5,i7处理器,都属于冯诺依曼结构
- 指令与数据存储器合并在一起
- 指令与数据都通过相同的数据总线传输。这一点也和哈佛结构有区别
哈佛结构
哈佛架构(Harvard architecture)是一种计算机体系结构,与冯·诺依曼架构相对。它以哈佛大学计算机实验室在20世纪40年代开发的哈佛Mark I计算机为基础,并以其命名。
- 一种将程序指令存储和数据存储分开的存储器结构。
- 一种并行体系结构,主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。
特点:
- 一般用于嵌入式系统处理器(DSP)数字信号处~(DSP,Digital SignalProcessing)~ (历年考过)
- 指令与数据分开存储,可以并行读取,有较高数据的吞吐率;
- 四条总线:指令和数据的数据总线与地址总线。
总结
区别:如何处理指令和数据
冯诺依曼结构:指令和数据存放在同一个存储器当中。CPU只能执行一条指令,因为需要等待指令和数据都被读取到CPU当中
哈佛结构:指令和数据存储在不同的存储器当中。CPU可以同时的访问指令和数据的内存,因此可以同时执行多条指令
冯诺依曼结构
缺点:
- 在同时存储指令和数据的情况下,会导致存储器和处理器之间效率相对于哈佛结构低一些
- 在存储器当中,指令和数据是合并在一起存储的。指令可以被当做数据进行处理。因此程序可以动态的修改自身的代码,这样就容易收到病毒和恶意程序的攻击。
- 位宽需要相同
优点:简单,易于设计,所以是当前主流PC的处理器
哈佛结构:有两个单独的处理器,就像多车道一样
优点:
- 因为程序和数据可以单独运行,运行效率会更高一些
- 指令和数据分开存储,因此程序无法直接修改自身的代码,这样会更加安全
- 位宽可以不同
缺点:实现复杂,只能适用于一些特定的领域比如DSP
冯·诺伊曼结构 | 哈佛结构 |
---|---|
也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。 | 一种将程序指令存储和数据存储分开的存储器结构。 一种并行体系结构,主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。 |
(1)一般用于PC处理器,如AMD、英特尔的酷睿i3,i5,i7处理器; (2)指令与数据存储器合并在一起; (3)指令与数据都通过相同的数据总线传输。 | (1)一般用于嵌入式系统处理器(DSP)数字信号处~(DSP,Digital SignalProcessing);~ (2)指令与数据分开存储,可以并行读取,有较高数据的吞吐率; (3)四条总线:指令和数据的数据总线与地址总线。 |
练习题
- 目前处理器市场中存在CPU、GPU和DSP多种类型处理器,分别用于不同场景,这些处理器具有不同的体系结构,DSP采用( )。
A. 冯.诺依曼结构
B. 哈佛结构
C. FPGA结构
D. 与GPU相同结构
答案:B
以下关于冯诺依曼计算机的叙述中,不正确的是( )(2022年上半年)
A.程序指令和数据都采用二进制表示
B.程序指令总是存储在主存中,而数据则存储在高速缓存中
C.程序的功能都由中央处理器(CPU)执行指令来实现
D.程序的执行工作由指令进行自动控制
答案:B