文章目录
- 一、概论
- 二、数据表示寻址方式与指令系统
- 三、存储、中断、中线与I/O系统
- 四、存储体系
- 五、标量处理机
- 六、向量处理机
- 七、多处理机
- 八、数据流计算机和归约机
一、概论
1、计算机系统的层次结构
层级结构:
从使用语言的角度,一台由软、硬件组成的通用计算机系统可以被看成是按功能划分的多层机器级组成的层级结构
层级结构由高到低依次:
应用语言机器级、高级语言机器级、汇编语言机器级、操作系统机器级、传统机器语言机器级和微程序机器级
固件:
具有软件功能的硬件
Tip:
将软件固化在只读存储器这种大规模集成电路的硬,器件上,就是一种固件。
虚拟机
以软件为主实现的机器,以区别于由硬件或固件实现的实际机器
Tip:
虚拟机也不一定全由软件实现,有些操作也可用固件或硬件实现。
翻译技术 (高转低)
先用转换程序将高一级机器级上的程序整个地变换成低一级机器级上等效的程序,然后在低一级机器级上实现的技术。
解释技术 (低转高)
在低级机器级上用它的一串语句或指令来仿真高级机器级上的一条语句或指令的功能,是通过对高级机器级语言程序中的每条语句或指令逐条解释来实现的技术。
2、计算机系统结构、计算机组成和计算机实现
计算机系统结构也称为计算机系统的体系结构,它只是系统结构中的一部分,指的是传统机器语言机器级的系统结构。
- 其界面之上包括:操作系统级、汇编语言级、高级语言级和应用语言级中所有软件的功能
- 该界面之下包括:所有硬件和固件的功能。
计算机系统结构的属性
(1)硬件能直接识别和处理的数据类型及格式等的数据表示。
(2)最小可寻址单元、寻址种类、地址计算等的寻址方式。
(3)通用/专用寄存器的设置、数量、字长、使用约定等的寄存器组织。
(4)二进制或汇编指令的操作类型、格式、排序方式、控制机构等的指令系统。
(5)主存的最小编址单位、编址方式、容量、最大可编址空间等的存储系统组织
(6)中断的分类与分级中断处理程序功能及入口地址等的中断机构。
(7)系统机器级的管态和用户态的定义与切换。
(8)输入/输出设备的连接,使用方式,流量、操作结束、出错指示等的机器级 I/O结构
(9)系统各部分的信息保护方式和保护机构等属性
计算机组成设计要确定的方面
(1)数据通路宽度
数据总线一次并行传送的信息位数
(2)专用部件的设置
是否设置乘除法、浮点运算、字符处理、地址运算等专用部件、设置的数量与机器要达到的速度、价格及专用部件的使用频率等有关
(3)各种操作对部件的共享程度
分时共享使用程度高,虽然限制了速度,但价格更便食设置部件多降低共享程度,因操作并行度提高,可提高速度,但价格也会提高
(4)功能部件的并行度
是用顺序串行,还是用重叠、流水或分布式控制和处理
(5)控制机构的组成方式
用硬件还是微程序控制,是单机处理还是多机或功能分布处理
(6)缓冲和排队技术
部件间如何设置及设置多大容量的缓冲器来协调它们的速摩差。是用随机、先进先出、先进后出、优先级,还是用循环方式来安排事件处理的顺序
(7)预估、预判技术
用什么原则为优化性能预测未来行为
(8)可靠性技术
用何种冗余和容错技术来提高可靠性
3、计算机系统的软、硬件取舍及定量设计原理
软件的功能可以用硬件或固件完成,硬件的功能也可以用软件模拟完成,只是它们在性能、价格、实现的难易程度上是不同的。
计算机系统的软、硬件功能分配比例
软、硬件取舍的基本原则
(1)应考虑在现有硬、器件(主要是逻辑器件和存储器件)条件下,系统要有高的性能价格比,主要从实现费用、速度和其他性能要求来综合考虑。
(2)要考虑准备采用和可能采用的组成技术,使之尽可能不要过多或不合理地限制各种组成、实现技术的采用。
(3)不能仅从“硬”的角度考虑如何便于应用组成技术的成果和便于发挥器件技术的进展,还应从“软”的角度把如何为编译和操作系统的实现以及为高级语言程序的设计提供更多、更好的硬件支持放在首位。
Amdahl(阿姆达尔定律)定律
该定律可用于确定对系统中性能瓶颈部件采取措施提高速度后系统性能改进的程度,即系统加速比 Sp。系统加速比 Sp定义为系统改进后的性能与未改进时的性能的比值,或者定义为系统未改进时的程序执行时间 Told与改进后的程序执行时间 Tnew的比值。系统加速比Sp,与两个因素有关,即性能可改进比fnew和部件加速比rnew。
性能可改进比 fnew 是系统性能可改进部分占用的时间与未改进时系统总执行时间的比值,0 ≤fnew≤ 1。部件加速比 rnew 是系统性能可改进部分在改进后性能提高的比值rnew >1。
系统加速比:
S p = T o l d T n e w = 1 ( 1 − f n e w ) + f n e w / r n e w Sp = \frac{Told}{Tnew} = \frac{1}{(1-fnew)+fnew/rnew} Sp=TnewTold=(1−fnew)+fnew/rnew1
当系统性能可改进比fnew为0时Sp=1;而当部件加速比 rnew 趋向无穷大时,分母中fnew/rnew 将趋于0
S p = 1 1 − f n e w Sp = \frac{1}{1-fnew} Sp=1−fnew1
性能提高的幅度受限于性能改进部分所占的比例大小,而性能改善的极限又受到性能可改进比fnew的约束。
例子:
如果系统中某部件处理速度提高到10倍,即rnew=10,但该功能的处理时间仅占整个系统运行时间的 40%,则改进后,整个系统的性能加速比为:
S
p
=
1
(
1
−
0.4
)
+
0.4
/
10
=
1
0.64
≈
1.56
Sp = \frac{1}{(1-0.4)+0.4/10}=\frac{1}{0.64}≈1.56
Sp=(1−0.4)+0.4/101=0.641≈1.56
程序执行时,90%的时间只访问整个程序的 10%那一部分,而其余10%的时间访问另外90%的那部分程序。
从多级层次结构出发,计算机系统的设计按多级层次结构的由上、下、中开始设计可以有“由上往下”、“由下往上”“由中间开始”3种不同的设计方法。
4、软件、应用、器件的发展对系统结构的影响
实现软件移植的技术
- 统一高级语言
- 采用系列机
- 模拟和仿真
仿真和模拟的主要区别在于解释用的语言:
仿真用的是微程序解释,其解释程序存储于控制存储器中
而模拟是用机器语言程序解释,其解释程序存储于主存中
虚拟机器语言
如果要求原来在 B机器上运行的应用软件,能移植到有不同系统结构的A机器上,根据层次结构的概念,可把B机器的机器语言看成是在A机器的机器语言级之上的一个虚拟机器语言。
模拟
在A机器上用虚拟机概念来实现B机器的指令系统。B机器的每条机器指令用A机器的一段机器语言程序解释,如同A机器上也有 B机器的指令系统一样。这种用机器语言程序解释实现软件移植的方法称为模拟。
宿主机:
进行模拟的A机器
虚拟机:
被模拟的B机器
非用户片
也称为通用片,其功能是由器件厂家生产时固定的,器件的用户只能使用,不能改变器件内部功能。
5、系统结构中的并行性开发及计算机系统的分类
从计算机系统执行程序的角度来看,并行性等级由低到高可分为四级:
- 指令内部
一条指令内部各个微操作之间的并行执行。
- 指令之间
多条指令的并行执行。
- 任务或进程之间
多个任务或程序段的并行执行。
- 作业或程序之间
多个作业或多道程序的并行执行
从计算机系统中处理数据的角度来看,并行性等级从低到高可分为四级:
- 字 word
- 位 bit b
- 字节 Byte B
1word = 4B = 32b
- 位串字串
同时只对一个字的一位进行处理,这通常是指传统的串行单处理机,没有并行性。
- 位并字串
同时对一个字的全部位进行处理,这通常是指传统的并行单处理机,开始出现并行性。
- 位片串字并
同时对许多字的同一位(称位片)进行处理,开始进入并行处理领域。
- 全并行
同时对许多字的全部或部分位组进行处理。
并行性是贯穿于计算机信息加工的各个步骤和阶段的,从这个角度来看,并行性等级又可分为:
- 存储器操作并行
可用单体单字、多体单字或多体多字方式在一个存储周期内访问多个字,进而采用按内容访问方式在一个存储周期内用位片串字并或全并行方式实现对存储器中大量字的高速并行比较、检索、更新、变换等操作。典型的例子就是并行有储器系统和以相联存储器为核心构成的相联处理机。
- 处理器操作步骤并行
指令的取指、分析、执行,浮点加法的求阶差、对阶、尾加、舍入、规格化等操作,执行步骤在时间上重叠流水地进行。典型的例子是流水线处理机。
- 处理器操作并行
通过重复设置大量处理单元,让它们在同一控制器控制下按同一指令要求对向量、数组中各元素同时操作。典型的例子是阵列处理机。
- 指令、任务、作业并行
这是较高级的并行。指令级以上的并行是多个处理机同时对多条指令和相关的多数据组进行处理,操作级并行是对同一条指令及其相关的数据组进行处理。前者属于多指令流多数据流计算机,后者属于单指令流多数据流计算机典型的例子是多处理机。
时间重叠
在并行性概念中引入时间因素,让多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备的各个部分,加快硬件周转来赢得速度。
资源重复
在并行概念中引入空间因素,通过重复设置硬件资源来提高可靠性或性能。双工系统是通过使用两台相同的计算机完成同一任务来提高可靠性的。
资源共享
用软件方法,让多个用户按一定时间顺序轮流使用同一套资源来提高资源利用率,相应地也就提高了系统的性能。
一般用耦合度反映多机系统中各机器之间物理连接的紧密度和交叉作用能力的强弱。
有最低耦合、松散耦合和紧密耦合之分。
二、数据表示寻址方式与指令系统
1、数据表示
数据表示:能由计算机硬件识别和引用的数据类型,表现在它对真正类型的数据进行操作的指令和运算部件。
数据结构:通过软件映像,变换成计算机中所具有的数据表示来实现的。
不同的数据表示可为数据结构的实现提供不同的支持,表现为实现效率和方便性的不同。
高级数据表示
1)自定义数据表示。
自定义数据表示包括标识符数据表示和数据描述符两类。
2)向量、数组数据表示。
为向量、数组数据结构的实现和快速运算提供更好的硬件支持的方法是增设向量、数组数据表示,组成向量机。有向量数据表示的处理机就是向量处理机,如向量流水机、阵列机、相联处理机等。
引入向量,数组数据表示不仅能加快形成元素地址,更重要的是便于实现把向量各元素成块预取到中央处理机,用一条向量、数组指令流水或同时对整个向量、数组高速处理.
3)堆栈数据表示。
堆栈数据结构在编译和子程序调用中很有用,为高效实现,不少计算机都设有堆栈数据表示。有堆栈数据表示的计算机称为堆栈计算机。
标志符数据表示的主要优点
(1)简化了指令系统和程序设计。
由于指令通用于多种数据类型的处理,减少了指令系统中指令的种类,因此简化了程序设计。
(2)简化了编译程序。
在一般计算机中,目的代码的形成需要进行细致的语义分析例如,当编译程序遇到“十”算子时,必须检查是哪种加法指令。而在带标志符的计算机中,编译程序只需形成通用的加法指令,编译程序缩短,编译过程加快,编译效率提高。
(3)便于实现一致性校验。
可由计算机硬件直接快速检测出多种程序设计错误,,提供了类型安全环境。
(4)能由硬件自动变换数据类型。
如果操作数相容但长度不同时,硬件能自动转换然后计算。
(5)支持数据库系统的实现与数据类型无关的要求
是程序不用修改即可处理多种不同类型的数据。
(6)为软件调试和应用软件开发提供了支持。
由于可用软件定义的捕捉标志位设置了断点,因此便于程序的跟踪和调试。加上类型安全环境的提供,为应用软件开发提供了良好的支持。
浮点数
当计算机字长相同时,用浮点数表示实数比用定点数表示有更大的可表示数范围。
“浮点”的“点”指的是小数点,而“浮”指的是小数点的移动
浮点数的一般格式
浮点数尾数的基
用
r
m
r_m
rm来表示浮点数尾数的基。在计算机中,一个rm进制的数位是用
[
l
o
g
2
r
m
]
[log_2r_m]
[log2rm]个计算机位数来表示的。尾数的计算机位数为m时,相当于rm进制的尾数有m个位数,其位权由小数点向右依次为r其中
r
m
−
1
r_m^-1
rm−1,
r
m
−
2
r_m^-2
rm−2,…
r
m
−
m
′
r_m^-m'
rm−m′其中
m
′
=
m
/
[
l
o
g
2
r
m
]
m'=m/[log_2r_m]
m′=m/[log2rm]例如
r
m
=
2
r_m=2
rm=2时
m
=
m
′
m=m'
m=m′;
r
m
=
8
r_m=8
rm=8时
m
′
=
m
/
3
m'=m/3
m′=m/3;
r
m
=
16
r_m=16
rm=16时
m
′
=
m
/
4
m'=m/4
m′=m/4;
r
m
=
10
r_m=10
rm=10时,
m
′
=
m
/
4
m'=m/4
m′=m/4。当
r
m
r_m
rm为2的整数次幂时就有特例:
r
m
(
m
′
)
=
2
m
r_m^(m')=2^m
rm(m′)=2m
以
r
m
r_m
rm为尾数基值的浮点数是当其尾数右移一个
r
m
r_m
rm 进制数位时,为保持数值不变阶码才增 1。
规格化正尾数
所谓规格化正尾数,就是正尾数小数点后的第1个
r
m
r_m
rm 进制数位不是0的数。因为尾数为全“0”的数是机器零,不作为计算机中可表示的数。所以,最小正尾数值应当是
r
m
r_m
rm 进制尾数的小数点后第1个
r
m
r_m
rm 进制数位为“1”,其余数位为全“0”的数值,即
1
∗
r
m
−
1
1*r_m^-1
1∗rm−1 。最大正尾数值当然是
r
m
r_m
rm 进制尾数各数位均为
r
m
−
1
r_m-1
rm−1 。可以设想,在小数点后,
r
m
r_m
rm 进制的第
m
′
m'
m′ 个数位上加上1,即加上
r
m
(
m
′
)
r_m^(m')
rm(m′) ,就会使整个尾数值变为1。所以,可表示的最大尾数值应当为
1
−
r
m
(
m
′
)
1-r_m^(m')
1−rm(m′) 。
由于是非负阶,最小阶应当是阶值部分为全“0”,所以,最小阶为 0。最大阶应当是阶值部分户位为全“1”,所以,最大阶为
2
p
−
1
2^p-1
2p−1 。阶的个数由阶值0到
2
p
−
1
2^p-1
2p−1 ,共有
2
p
2^p
2p 个。
按浮点数表示格式的含义
浮点数的值应当是
r
m
(
阶值
)
∗
尾基数
r_m^(阶值) *尾基数
rm(阶值)∗尾基数 。可表示浮点数的最小值应当是阶为非负阶的最小值 0,尾数为规格化最小正尾数值,所以,可表示浮点数的最小值应当为
r
m
0
∗
r
m
−
1
=
r
m
−
1
r_m0*r_m^-1 = r_m-1
rm0∗rm−1=rm−1;可表示浮点数的最大值应当是阶为正的最大值
2
p
−
1
2^p-1
2p−1,尾数为规格化正尾数量大值,所以,可表示浮点数的最大值应当为
r
m
(
2
p
−
1
)
∗
(
1
−
r
m
(
−
m
′
)
)
r_m^(2^p-1)*(1-r_m^(-m'))
rm(2p−1)∗(1−rm(−m′))。
浮点数规格化数的总个数
可表示的浮点数规格化数的总个数应当是可表示阶的个数与可表示尾数的个数的乘积。由于尾数
m
′
m'
m′个
r
m
r_m
rm进制数位中,每个数值均可以为
0
到
(
r
m
−
1
)
0 到 (r_m-1)
0到(rm−1),共有
r
m
r_m
rm个码,所以尾数的编码总个数为
r
m
(
m
′
)
r_m^(m')
rm(m′)个,但应当去掉小数点后第1个
r
m
r_m
rm 进制数位是的那些非规格化数。显然;非规格化尾数的个数占了全部尾数可编码总数的
1
/
r
m
1/r_m
1/rm的比例。所以,可表不的浮点数规格化数的总个数就为
2
p
∗
r
m
(
m
′
)
(
1
−
1
/
r
m
)
2^p*r_m(m')(1-1/r_m)
2p∗rm(m′)(1−1/rm)。
浮点数尾数的下溢处理方法
(1)截断法(把小数后面的都不要)
(2)舍入法(四舍五入)
(3)恒置“1"法 (小数后面的都置为1)
(4)查表舍入法
2、寻址方式
寻址方式:指令按什么方式寻找(或访问)到所需的操作数或信息的。多数计算机都将主存、寄存器、堆栈分类编址分别有面向主存、而向寄存器和面向堆栈的寻址方式。
面向主存的寻址主要访问主存,少量访同寄存器。面向寄存器的寻址主要访问寄存器,少量访问主存和堆栈。面向堆栈的寻址主要访问堆栈,少量的访同主存或奇存器。
程序在主存中的定位技术
(1)静态再定位
(2)动态再定位
(3)虚实地址映像表
3、指令系统的设计和优化
在设计新的指令系统时,一般要按以下步骤反复多次进行,直至指令系统的效能达到很高为止。
步骤
(1)根据应用,初拟出指令的分类和具体的指令。
(2)试编出用该指令系统设计的各种高级语言的编译程序。
(3)对各种算法编写大量的测试程序并进行模拟测试,看指令系统的操作码和寻址方式效能是否都比较高。
(4)将程序中高频出现的指令串复合改成一条强功能新指令,即改用硬件方式实现;而将频度很低的指令的操作改成用基本的指令组成的指令串来完成,即用软件方式实现
哈夫曼编码
哈夫曼压缩概念的基本思想是:当各种事件发生的概率不均等时,采用优化技术,对发生概率最高的事件用最短的位数(时间)来表示(处理),而对出现率较低的事件允许用较长的位数(时间)来表示(处理),就会使表示(处理)的平均位数(时间)缩短。
eg:
现假设某模型机共有 n(n=7)条指令,使用频度如表2-1所示。若操作码用定长码来表示需要 [ l o g 2 n ] [log_2n] [log2n](即3)位。操作码的信息(信息源所含的平均信息量)H=2.17,说明表示这7种指令的操作码平均只需 2.17位即可。现在用3位定长码表示,信息几余为 实际平均码长 − H 实际平均码长 = 3 − 2.17 3 ≈ 0.28 \frac{实际平均码长-H}{实际平均码长}=\frac{3-2.17}{3} \approx0.28 实际平均码长实际平均码长−H=33−2.17≈0.28(或28%)相当大,为减少冗余,改用哈夫曼编码。
利用哈夫曼算法构造哈夫曼树。将所有7条指令的使用频度由小到大排序,每次选择其中最小的两个频度合并成一个频度,作为它们二者之和的新结点。再按该频度大小桶到余下未参与结合的频度值中。如此继续进行,直到全部频度结合完毕形成根结点为止。之后,对每个结点向下延伸分出两个分支、分别用一位代码的“0"【右边分支】或“1”【左边分支】来表示。说样,从报结点开始,沿线到达各额度指令所经过的代码序列就构成该频度指令的哈夫曼编码。
Tip:
由于哈大曼编码中的短码不可能是长码的前级、从而保证了解码的唯一性和实时性。
操作码的哈夫曼编码及扩展操作码编码
指令 | 频度Pi | 操作码 OP 使用哈夫曼编码 (分支的编码组合) | OP长度Li(分支的长度) | 利用哈夫曼概念的 扩展操行码 | OP长度Li(采用两种或三种统一的长度) |
---|---|---|---|---|---|
L1 | 0.40 | 0 | 1 | 00 | 2 |
L2 | 0.30 | 10 | 2 | 01 | 2 |
L3 | 0.15 | 110 | 3 | 10 | 2 |
L4 | 0.05 | 11100 | 5 | 1100 | 4 |
L5 | 0.04 | 11101 | 5 | 1101 | 4 |
L6 | 0.03 | 11110 | 5 | 1110 | 4 |
L7 | 0.03 | 11111 | 5 | 1111 | 4 |
哈夫曼编码并不是唯一的。当有多个相同的最小频度时,由于频度结合的次序不同使树的形状不同,编码也不同。但只要采用完全的哈大曼编码,操作码的平均码长肯定是的,而且可用二进制位编码平均码长最短的编码。本例中,操作码的平均码长: ∑ i = 1 7 p i L i = 2.20 位 \sum_{i=1}^7 p_iL_i = 2.20 位 ∑i=17piLi=2.20位。这种编码的信息冗余是 2.20 − 2.17 2.20 ≈ 0.0136 \frac{2.20-2.17}{2.20}\approx0.0136 2.202.20−2.17≈0.0136(或1.36%)
完全的哈夫曼编码是最优化的编码。但这种编码的码长种类太多,7 种指令就有4种码长,不便于译码,因而不易实现。为此,结合用一般的二进制编码。
二进制编码
把使用频度高的L1 、L2、L3 用两位操作码的00、01、10 表示,之后用高两位为11表示将操作码扩展成4位,其中低两位有 4 种状态可以分别表示L4~L7。这种表示法的平均长度
∑
i
=
1
7
p
i
L
i
=
2.30
位
\sum_{i=1}^7 p_iL_i = 2.30 位
∑i=17piLi=2.30位,信息冗余为 5.65%,虽比哈夫曼编码的大,但比定长3位码的28%小得多,是一种实际可用的优化编码。
4、指令系统的发展和改进(CISC和 RISC)
面向目标程序的优化实现改进,就是对已有机器的指令系统进行分析,看哪些功能仍用基本指令串实现,哪些功能改用新指令实现,可以提高包括系统软件和应用软件在内的各种机器语言目标程序的实现效率。该方法既能减少目标程序占用的存储空间,减少程序执行中的访存次数,缩短指令的执行时间,提高程序的运行速度,又使实现更为容易。
面向高级语言的优化实现改进就是尽可能缩短高级语言和机器语言的语义差距,支持高级语言编译,缩短编译程序长度和编译时间。
CISC【复杂指令集计算机】存在的问题
一般指复杂指令集计算机。 复杂指令集计算机,Complex Instruction Set Computer。简称_CISC_
(1)指令系统庞大,一般指令在 200 条以上。许多指令的功能异常复杂,需要有多种寻址方式、指令格式和指令长度。
(2)许多指令的操作繁杂,执行速度很低,甚至不如用几条简单、基本的指令组合实现。
(3)由于指令系统庞大,使高级语言编译程序选择目标指令的范围太大,因此,难以优化生成高效机器语言程序,编译程序也太长,太复杂。
(4)由于指令系统庞大,各种指令的使用频度都不会太高,且差别很大,其中相当一部分指令的利用率很低。
采用 RISC【精简指令集计算机】技术的好处
精简指令集计算机(RISC:Reduced Instruction Set Computer RISC)是一种执行较少类型计算机指令的微处理器,
(1)简化指令系统设计,适合 VLSI实现。
由于指令条数少,寻址方式简单,指令格式规整划一,与CISC结构相比,控制器的译码和执行硬件相对简单。
超大规模集成电路(Very Large Scale Integration Circuit,VLSI)
(2)提高计算机的执行速度和效率。
指令系统的精简可以加快指令的译码。控制器的简化可以缩短指令的执行延迟。访问次数的大大减少可以提高程序的执行速度。
(3)降低设计成本
提高系统的可靠性采用相对精简的控制器,缩短了设计周期,减少了设计错误和产品设计中被作废的可能性,这些均会使设计成本降低,系统的可靠性提高。
(4)可直接支持高级语言的实现,简化编译程序的设计。
指令总数的减少,缩小了编译过程中对功能类似的机器指令进行选择的范围,减轻了对各种寻址方式的选择、分析和变换的负担,不用进行指令格式的变换,易于更换或取消指令。
三、存储、中断、中线与I/O系统
1、存储系统的基本要求和并行主存系统
对存储系统的基本要求:大容量,高速度和低价格
存储器容量
S
m
=
W
∗
L
∗
m
S_m=W*L*m
Sm=W∗L∗m。
其中,W为存储体的字长(单位是位或字节);L为存储体的字数;m为并行工作的存储体数。速度可用访问时间 TA、存储周期TM 和频宽(也称带宽)Bm描述。其中TA是存储器从接收访存读申请至信息被读到数据总线上的时间,是处理机启动访存后必须等待的时间,它是确定处理机与存储器时间关系的一个重要参数;TM 是连续启动一个存储体所需要的间隔时间,它一般比 TA大;存储器频宽 Bm是存储器可提供的数据传送速率,用每秒传送的信息位数或字节数衡量,又有最大频宽(或极限频宽)和实际频宽之分,最大频宽Bm。是存储器连续访问时的频宽。单体的 B m = W / T M B_m=W/T_M Bm=W/TM,m个存储体并行的最大频宽 B m = W ∗ m / T M B_m=W*m/T_M Bm=W∗m/TM,。
并行主存系统
能并行读出多个CPU字的单体多字和多体单字、多体多字的交叉访问主存系统。
公式
设访存申请队的转移概率 λ 为 25%,比较在模 32 和模 16 的多体单字交叉存储器中,每个周期能访问到的平均字数。
根据每个存储周期能访问到的平均字数
B
=
1
−
(
1
−
λ
)
m
λ
B=\frac{1-(1-λ)^m}{λ}
B=λ1−(1−λ)m
将λ = 25%,
m
=
32
m=32
m=32代入上式,可求得:
B
=
1
−
(
1
−
λ
)
m
λ
=
1
−
(
1
−
0.25
)
(
32
)
0.25
=
4
B=\frac{1-(1-λ)^m}{λ} =\frac{1-(1-0.25)^(32)}{0.25}=4
B=λ1−(1−λ)m=0.251−(1−0.25)(32)=4。即每个存储周期平均能访问到4个字。
将λ = 25%,
m
=
16
m=16
m=16代入上式,可求得:
B
=
1
−
(
1
−
λ
)
m
λ
=
1
−
(
1
−
0.25
)
(
16
)
0.25
=
3.96
B=\frac{1-(1-λ)^m}{λ} =\frac{1-(1-0.25)^(16)}{0.25}=3.96
B=λ1−(1−λ)m=0.251−(1−0.25)(16)=3.96。即每个存储周期平均能访问到 3.96 个字。
2、中断系统
中断服务
函数:传入传出都是void (都是空:没有参数也没有返回值)
中断基本概念
可用轮询通信来替换中断处理
缺点:请求时间不确定,会经常浪费时间
而中断是发生之后通过硬件进行处理
中断的处理比轮询的性能要高很多
发出信号:硬件
响应(接到指令):软件
中断
CPU中止正在执行的程序,转去处理随机提出的请求,待处理完后,再回到原先被打断的程序继续恢复执行的过程。
中断分类
内部中断、外部中断和软件中断
内部中断由CPU内的异常引起;外部中断由中断信号引起;软件中断由自陷指令引起,用于供操作系统服务。外部中断又分为可屏蔽中断和不可屏蔽中断。
中断源
引起中断的各种事件称为中断源。
中断请求
中断源向中断系统发出请求中断的申请。
中断系统需按事先确定的中断响应优先次序对优先级高的中断请求予以响应。
中断响应的次序用排队器硬件实现,次序是由高到低固定的。为了能根据需要,由操作系统灵活改变实际的中断处理次序,很多计算机都设置了中断级屏蔽位寄存器,以决定某级中断请求能否进入中断响应排队器。只要能进入的,总是让高级别的优先响应。
eg:
假设某系统有四个中断级,相应地每一级中断处理程序的现行 PSW 中都有4位中断级屏蔽位。如果中断级屏蔽位为“1”,则表示对该级中断开放,允许其进入中断响应排队器;如果中断级屏蔽位为“0”,则对该级的中断屏蔽,不让其进入中断响应排队器。那么,要让各级中断处理次序和各级中断响应次序都一样,都是1->2->3->4,就只需按下表设置好各级中断处理程序现行程序状态字中的中断级屏蔽位即可。
中断系统的功能包括中断请求的保存和清除,优先级的确定,中断断点及现场的保存、对中断请求的分析和处理以及中断返回等。中断系统的软、硬件功能分配实质上是中断处理程序软件和中断响应硬件的功能分配。
3、总线系统
总线
用于互连计算机、CPU、存储器、I/0接口及外围设备、远程通信设备间信息传送通路的集合。
总线系统
总线与其相配合的附属控制电路统称为总线系统。
按信息传送功能、性能的不同
有数据线,地址线,命令、时序和中断信号等控制/状态线,电源线,地线及备用线等。
总线按在系统中的位置
芯片级(CPU芯片内的总线)、板级(连接插件板内的各个组件,也称局部总线或内部总线)和系统级(系统间或主机与I/O接口或设备之间的总线)等3级
总线允许信息传送的方向
单向传输和双向传输两种
总线按用法
为专用和非专用两类
信息在总线上的传送方法
同步和异步两种
(1)同步通信。
部件间的信息传送由定宽、定距的系统时标同步。信息的传送率高、受总线长度的影响小,时钟在总线上的时滞可能会造成同步误差,时钟线上的干扰信号易引起误同步。
(2)异步通信。
由于I/O总线一般是为有不同速度的许多I/O设备所共享,因此宜于采用异步通信。异步通信又分单向源控和请求/回答双向控制两种。
数据宽度是I/O设备取得I/O总线后所传送数据的总量。它不同于数据通路宽度。数据通路宽度是数据总线的物理宽度,即一个时钟周期所传送的信息量。数据宽度有单字(单字节)、定长块,可变长块,单字加定长块和单字加可变长块等之分。
4、I/O系统
I/O(输入/输出)系统
- 输入/输出设备
- 设备控制器
- 与输入/输出操作有关的软、硬件
根据通道数据传送期中信息传送方式的不同
可分为:
- 字节多路
- 数组多路
- 选择
3类通道
(1)字节多路通道
字节多路通道适用于连接大量的像光电机等字符类低速设备,它们传送一个字符(字节)的时间很短,但字符(字节)间的等待时间很长。因此,通道数据宽度为单字节。以字节交叉方式轮流为多台低速设备服务,使效率提高。
(2)数组多路通道
数组多路通道适合于连接多台磁盘等高速设备。这些设备的传送速率很高,但传送开始前的寻址辅助操作时间很长。
(3)选择通道
选择通道适合于连接优先级高的磁盘等高速设备,让它独占通道,只能执行一道通道程序。数据传送以不定长块方式进行。相当于数据宽度为可变长块,一次对N个节全部传送完。所以,在数据传送期内只选择一次设备。
通道流量
通道在数据传送期内,单位时间内传送的字节数。它能达到的最大流量称通道极限流量。通道的极限流量与其工作方式、数据传送期内选择一次设备时间Ts和传送一个字节的时间 TD 的长短有关。( 1 时间 求和 \frac{1}{时间} 求和 时间1求和)
eg:
假设有一个字节多路通道,它有 3 个子通道:“0”号、“1"号高速印字机各占一个子通道,"0"号打印机、“1”号打印机和“0”号光电输入机合用一个子通道。假定数据传送期内高速印字机每隔25μs(微秒) 发送一个字节请求,低速打印机每隔 150μs(微秒) 发送一个字节请求,光电输入机每隔800μs(微秒) 发送一个字节请求则,这5台设备要求通道的流量为:
f b y t e . j = ∑ i = 1 5 f i . j = 1 25 + 1 25 + ( 1 150 + 1 150 + 1 800 ) ≈ 0.095 M B . s − 1 f_byte.j = \sum_{i=1}^5 f_i._j = \frac{1}{25} +\frac{1}{25} +(\frac{1}{150}+\frac{1}{150} +\frac{1}{800} ) \approx0.095MB._s^-1 fbyte.j=∑i=15fi.j=251+251+(1501+1501+8001)≈0.095MB.s−1
四、存储体系
1、基本概念
存储体系的含义如下:
存储体系(即存储层次)是让构成存储系统的几种不同的存储器(M1~Mn)之间,配上辅助软、硬件或辅助硬件,使之从应用程序员角度来看,它们在逻辑上是一个整体,让存储层次的等效访问速度是接近于 M1 的,容量是 Mn的,每位价格是接近于Mn的,基本的二级存储体系是虚拟存储器和 Cache存储器,这是存储体系的两个不同的分支。
虚拟存储器
因主存容量满足不了要求而提出来的。
在主存和辅存之间,增设辅助的软、硬件设备,让它们构成一个整体,所以也称为主存一辅存存储层次。
Cache 存储器
因主存速度满足不了要求而引出了 Cache 存储器。
在 CPU 和主存之间设高速、小容量、每位价格较高的 Cache,用辅助硬件将 Cache 和主存构成整体,称为Cache 存储器(或称为Cache一主存存储层次)
2、虚拟存储器
虚拟存储器:通过增设地址映像表机构来实现程序在主存中的定位。
根据存储映像算法的不同,可有多种不同的存储管理方式的虚拟存储器,其中主要有段式、页式和段页式3种。
(1)段式管理
段表长度字段指明该道程序所用段表的行数,即程序的段数
(2)页式管理
页式存储是把主存空间和程序空间都机械地等分成固定大小的页(页面大小随计算机而异,一般在 512B到几 KB之间),按页顺序编号。这样,任一主存单元的地址np就有实页号 nv,和页内位移nr 两个字段组成。每个独立的程序也有自己的虚页号顺序。
(3)段页式管理
段页式存储是把实(主)存机械地等分成固定大小的页,程序按模块分段,每个段又分成与实主存员面大小相同的页。每道程序通过一个段表和相应的一组页表进行定位。段表中的每一行对应一个段。其中,“装入位”表示该段是否已装入主存。
在虚拟存储器中,每访问一次主存都要进行一次程序地址向实(主)存地址的转换。段页式的主要问题是地址变换过程至少需要查表两次,即查段表和页表。
提高页表的空间利用率的方法:
整个多用户虚存空间可对应 2 n 2^n 2n个用户(程序)。但主存最多同时只对其中N个用户(N道程序)开放。由于 N ∗ 2 ( N p ) > = 2 v n N*2^(N_p)>=2^n_v N∗2(Np)>=2vn中使得页表绝大部分行中的实页号nv字段及其他字段都无用,这会大大降低页表的空间利用率。
1、将页表中装入位为“0”的行用实页号nv字段存放该程序此虚页在辅存中的实地址,以便调页时实现用户虚页号到辅存实地址的变换。
2、把页表压缩成只存放在已装入主存的那些虚页与实页位置nv的对应关系,该表最多为 2 v n 2^n_v 2vn行我们称它为相联目录表法,简称目录表法。该表采用按内容访问的相联存储器构成。
替换算法
替换算法的确定主要看主存是否有高的命中率,也要看算法是否便于实现,辅助软、硬件成本是否低。
目前已研究过多种替换算法,如随机算法、先进先出算法、近期最少使用(近期最久未用过)算法等
(1)先进先出算法(First-In First-Out,FIFO)
选择最早装入主存的页作为被替换的页。这种方法实现方便,只要在操作系统为主存管理所设的主存页面表中给每个实页配一个计数器字段。当每一页装入主存时,让该页的计数器清零,其他已装入主存的那些页的计数器都加“1”。需要替换时,计数器值最大的页的页号就是最先进入主存而现在准备替换掉的页号。虽然它利用了主存使用的“历史”信息,但不一定能正确地反映出程序的局部性。因为最先进入的页很可能正是现在经常使用的页。
(2)近期最少使用算法(Least Recently Used,LRU)
选择近期最少访问的页作为被替换页。这种算法能比较正确地反映程序的局部性。一般来说,当前最少使用的页,未来也将很少被访问。但完全按此算法实现比较困难,需要为每个实页都配一个字长很长的计数器。所以一般用其变形把近期最久未访问过的页作为被替换页、将“多”和“少”变成“有”和“无”,实现就方便多了。
(3)根据未来实际使用情况将未来的近期里不用的贞替换出去
一定会有最高的主存命中率,这种算法称为优化替换算法(Optimnal,OPT)。它是在时刻t找出主存中每个页将要用到的时刻 ti 然后选择其中 ti+t 最大的那一页作为替换页,优化算法是一种理想算法,可以被用来作为评价其他算法好坏的标准。
eg:
设A 是长度为L的任意一个页地址流,t 为已处理过t-1个页面的时间点,n为分配给该地址流的主存页数, B t ( n ) B_t(n) Bt(n)表示在 t 时间点、在页的主存中的页面集合,L1表示到 t 时间点已遇到过的地址流中相异页的页数。如果换算法满足
N < L 1 时, B t ( n ) < B t ( n + 1 ) N<L_1 时,B_t(n)<B_t(n+1) N<L1时,Bt(n)<Bt(n+1)
N > = L 1 时, B t ( n ) = B t ( n + 1 ) N>=L_1 时,B_t(n)=B_t(n+1) N>=L1时,Bt(n)=Bt(n+1)
则属堆栈型的替换算法
页面失效频率(PFF)算法
根据各道程序运行中的主存页面失效率超过某个值时,就自动增加分配给法道程序的主存页数,以提高其命中率;而当主存页面失效率低于某个值时,就自动减少分配给该道程序的主存页数,以便释放出这部分主存页面位置供其他程序用,从而使整个系统 总的主存命中率和主存利用率得到提高。我们称此算法为页面失效频率(PFF)算法。
3、高速缓冲(Cache)存储器
高速缓冲(Cache)存储器
为弥补主存速度的不足,在处理机和主存之间设置一个高速、小容量的 Cache,构成 Cache一主存存储层次,使之从CPU 角度来看,速度接近于Cache,容量却是主存的。
对 Cache存储器而言,
地址的映像:就是将每个主存块按某种规则装入 Cache中;
地址的变换:就是每次访Cache 时怎样将主存地址变换成 Cache地址。
提高Cache存储器的预取算法:
Cache所用的取算法基本上是按需取进法,即在 Cache失效时才将要访问的字所在的块取进。适当选择好Cache的容量、块的大小、组相连的组数和组内块数,是可以保证有较高的命中率的。如再采用在信息块要用之前就预取进 Cache 的预取算法,还可能进步提高命中率。
4、三级存储体系
多数的计算机系统既有虚拟存储器又有 Cache 存储器。程序用虚地址访存,要求速度接近于Cache,容量是辅存的。这种三级存储体系可以有3种形式:
(1)物理地址Cache
物理地址 Cache是由“Cache一主存”和“主存一辅存”两个独立的存储层次组成
CPU用程序虚地址访存,经存储管理部件(MMU)中的地址变换部件变换成主存物理地址访Cache。如果命中 Cache,就访 Cache;如果不命中Cache,就将该主存物理地址的字和含该字的主存的一个块与 Cache 某相应块交换,而所访问的字直接与CPU交换。
(2)虚地址Cache
虚地址 Cache是将 Cache一主存一辅存直接构成三级存储层次形式,
CPU访存时,直接将虚地址送存储管理部件 MMU和Cache。如果 Cache命中,数据与指令就直接与 CPU 传送,如果 Cache 不命中,由存储管理部件将虚地址变换成主存物理地址访主存、将含该地址的数据块或指令块与 Cache 交换的同时,将单个指令和数据与CPU之间传送。
(3)全Cache
全Cache是最近出现的组织形式,尚不成熟,尚未商品化。它没有主存,只用 Cache 与辅存中的一部分构成“Cache一铺存”存储体系。全Cache存储系统的等效访问时间要接近于 Cache的、容量是虚拟地址空间的容量。
五、标量处理机
1、重叠方式
顺序解释
各条指令之间顺序串行(执行完一条指令后才取下条指令)地进行,每条指令内部的各个微操作也顺序串行地进行。解释一条机器指令的微操作可归并成取指令、分析和执行三部分。
- 取指是按指令计数器的内容访主存,取出该指令送到指令寄存器。
- 指令的分析是对指令的操作码进行译码,按寻址方式和地址字段形成操作数真地址,并用此真地址去取操作数(可能访主存,也可能访寄存器),为取下一条指令还要形成下一条指令的地址。
- 指令的执行则是对操作数进行运算、处理,或存储运算结果(可能要访主存)。
实现指令的重叠解释必须在计算机组成上满足以下几点要求
(1)要解决访主存的冲突。
(2)要解决“分析”与“执行”操作的并行。
(3)要解决“分析”与“执行”操作控制上的同步。
(4)要解决指令间各种相关的处理。
“一次重叠”的定义和好处有:
任何时候都只是“执行k”与“分析k+1"重叠。就是说,即使“分析k+1”比“执行k"提前结束,“执行k+1”也不紧接在“分析k+1”之后与“执行k”重叠进行;同样,即使“执行k"比“分析k+1"提前结束,“分析k+2”也不紧接在“执行k”之后与“分析k+1"重叠进行。称这种指令分析部件和指令执行部件在任何时候都只有相邻的两条指令在重叠解释的方式为“一次重叠”。“一次重叠”的好处是节省硬件,计算机内指令分析部件和指令执行部件均只需一套,也简化了控制。设计时应适当安排好微操作,使"分析"和“执行"的时间尽量等长,重叠方式才能有较高的效率。
指令相关
因为机器指令【机器指令(Machine Instructions)是CPU能直接识别并执行的指令】允许修改而引出的。如果规定在程序运行过程中不准修改指令,指令相关就不可能发生。
2、流水方式
流水与重叠的含义
流水与重叠在概念上没有什么差别,流水可以看成是重叠的引申。二者的差别只在于”一次重叠“是把一条指令的解释分为两个子过程,而流水是分为更多个子过程。前者可同时解释两条指令;后者可同时解释4条指令。显然,如果能将一条指令解释分解为时间相等的m个子过程,则每隔t=T/m 就可以处理一条指令。因此,流水的最大吞吐率取决于子过程的经过时间 t,t 越小流水线的最大吞吐率就越高,流水的最大吞吐率是指流水线满负荷每隔 t流出一个结果时所达到的吞吐率。实际吞吐率总是低于其最大吞吐率。
流水的分类
(1)流水按处理的级别可分为部件级、处理机级和系统级。
(2)从流水具有功能的多少,可以分为单功能流水线和多功能流水线。
(3)按多功能流水线的各段能否允许同时用于多种不同功能连接流水,可把流水线分为静态流水线和动态流水线。
(4)从计算机所具有的数据表示角度,可以把流水线处理机分为标量流水机和向量流水机。
(5)从流水线中各功能段之间是否有反馈回路的角度,可以把流水线分为线性流水线和非线性流水线。
标量流水线的性能与计算
标量流水处理机的性能主要是吞吐率 Tp、加速比Sp,和效率η。
吞吐率
吞吐率是流水线单位时间里能流出的任务数或结果数。
由于各个子过程进行的工作不同,所经过的时间也就不一定相同,所以在子过程间设置了接口锁存器,让各锁存器都受同一时钟同步。时钟周期会直接影响流水线的最大吞吐率,总希望它越小越好。如果各个子过程所需的时间分别为t1 、t2、t3、t4,时钟周期应当为 max{t1,t2,t3,t4},
即流水线的最大吞吐率为:
T
p
(
m
a
x
)
=
1
m
a
x
(
t
1
,
t
2
,
t
3
,
t
4
)
Tp_(max)=\frac{1}{max(t1,t2,t3,t4)}
Tp(max)=max(t1,t2,t3,t4)1
受限于流水线中最慢子过程经过的时间。流水线中经过时间最长的子过程称为瓶预子过程。
时间利用率
流水线的效率是指流水线中设备的实际使用时间占整个运行时间之比,也称流水线设备的时间利用率。
任务在流水线中流动顺序的安排和控制可以有两种方式
顺序流动方式或同步流动方式
让任务(指令)流出流水线的顺序保持与流入流水线的顺序一致,称为顺序流动方式或同步流动式。
异步流动方式
让流出流水线的任务(指令)顺序可以和流入流水线的顺序不同,称为异步流动方式
标量流水机对局部性相关的处理一般采用总线式分布方式控制管理:
(1)相关的判断主要是靠分布于各寄存器的”忙位”标志来管理。
(2)在分散于各流水线的入、出端设置若干保存站来缓存信息。
(3)用站号控制公共数据总线的连接作相关专用通路,使之可为多个子过程的相关所共用。
(4)一旦发生相关,用更换站号来推后和控制相关专用通路的连接。
(5)采用多条流水线,每条流水线入端有多组保存站。以便发生相关后,可以采用异步的流动方式。
全局性相关
全局性相关指的是以进入流水线的转移指令(尤其是条件转移指令)和其后续指令之间相关。
常用的处理方法:
(1)使用猜测法。
(2)加快和提前形成条件码。
(3)采取延迟转移。
(4)加快短循环程序的处理。
eg:
在一个 4段的流水线处理机上需经 7 拍才能完成一个任务,其预约表如下:
分别写出延迟禁止表 F、冲突向量 C;画出流水线状态转移图;求出最小平均延迟及流水线的最大吞吐率及其调度时的最佳方案,按此调度方案,输入6个任务,求实际的吞吐率。
此例可得延迟禁止表F={2,4,6},初始冲突向量C=(101010)。
状态转移图和各种调度方案及其相应的平均延迟如下:
调度方案及其相应的平均延迟
最小平均延迟为4拍。
此时流水线的最大吞吐率Tp_max,=1/4(任务/拍)
最佳调度方案宜选其中按(1,7)周期性调度的方案
按(1,7)调度方案输入6个任务,全部完成的时间为1+7+1+7+1+7=24(拍),实际吐率Tp=6/24(任务/拍)。
若按(3,5)调度方案输入6个任务,全部完成的时间为3+5+3+5+3+7=26(拍),实际吞吐率Tp=6/26(任务/拍)。
若按(5,3)调度方案输入6个任务,全部完成的时间为5+3+5+3+5+7=28(拍),实际吞吐率Tp=6/28(任务/拍)
可见、最佳的方案应为(1,7)调度方案,输入6个任务的实际吞吐率较其他方案要更高些。
3、指令级高度并行的超级处理机
自20世纪80年代RISC兴起之后,出现了提高指令级并行的高性能超级处理机,让单处理机在每个时钟周期里可解释多条指令。代表性的例子是超标量处理机、超长指令字处理机(VLIW)、超流水线处理机和超标量超流水线处理机。
(1)超标量处理机。
超标量处理机采用多指令流水线,每个t 同时流出 m 条指令(称为度m)。在超标量流水线处理机中配置多套功能部件、指令译码电路和多组总线,寄存器也备有多个端口和多组总线。
(2)超长指令字处理机。
超长指令字结构是将水平型微码和超标量处理两者相结合指令字长可达数百位,多个功能部件并发工作,共享大容量寄存器堆。
(3)超流水线处理机。
超流水线处理机不同于超标量处理机和VLTW处理机,每个 t 只流出一条指令,但它的 t 值小。一台度为m的超水线处理机的 t 只是基本机器周期t的1/m。因此,一条指令需花 kmt 的时间,k为一条指令所含的基本机器周期数。只要流水线性能得以充分发挥,其并行度就可达m。
超标量处理机利用资源重复,设置多个执行部件寄存器堆端口、超流水线处理机则着重开发时间并行性在公其的硬件上采用较短的时钟周期,深度流水来提高速度,需使用多相时钟,时钟额率高达100~500MHz。没有高速时钟机制,超流水线处理机是无法实现的。
(4)超标量超流水线处理机。
超标量超流水线处理机是超标量流水线与超流水线处理机的结合。在一个t(等于t/n)发射了k条指令(超标量),而每次发射时间错开t(超流水)相当于每拍t流出了n*k 条指令,即并行度m=kn。
六、向量处理机
1、向量的流水处理与向量流水处理机
向量处理机是由向量数据表示的处理机,分向量流水处理机和阵列处理机两类。向量流水处理机是以时间重叠途径开发的,而阵列处理机是以资源重复途径开发的。
eg:
计算 D=A*(B+C),其中 A、B、C、D 都有个元素的向量,应该采用什么方式处理才能充分发挥流水线的效能?
如果采用逐个求 D向量元素的方法,即访存取ai、bi、ci元素求di,再取a_(i+1)、b_(i+1)、c_(i+1)求d_(i+1),这种处理方式称为横向(水平)处理方式。横向处理方式宜于在标量处理机上用循环实现,但却难以使流水线连续流动。尽管整个运算只需用一个单元之来存放中间结果,但会频繁出现先写后读的操作数相关,每次只有等加法结果出来才能开始乘法,因而流水的吞吐率会下降。这时只有采用对整个向量按相同操作都执行完之后再执行别的操作,才能较好地发挥流水处理的效能。也就是说,处理方式改为先执行bi+ci->ki(i=1,2,…,N),再执行kiai->di(i=1,2,…,N)称这种方式为纵向(垂直)处理方式。在计算机B+C时,因为是对向量 B、C的所有元素都执行相同的加法操作,且无相关,流水线就能连续流动,从而使其效能得以发挥。计算机kA时也是如此。
分组纵横处理方式
若向量的长度N太长,超出了向量寄存器组中寄存器的个数,可以将该向量分割成如若干组,使每组都能装得进向量寄存器组中。这样,每一组内均按纵向方式处理,而组和组之间则采用软件方法编制循环程序的方式依次循环处理。我们称这种处理方式为分组纵横处理方式。有了这种方式,就可以对向量长度 N的大小不加限制。
Vi冲突
所谓Vi冲突指的是并行工作的各向量指令的源向量或结果向量使用了相同的Vi.
CRAY-1
CRAY-1 向量处理的一个显著特点是只要不出现功能部件使用冲突和源向量寄存器使用冲突,通过链接机构可使有数据相关的向量指令仍能大部分时间并行执行。
链接技术
链接技术是提高计算机整体运算速度的一个非常重要的措施。
2、阵列处理机的原理
单指令流多数据流的阵列处理机
阵列处理机的构形
分布式存储器阵列处理机的构形
各处理单元有局部存储器(PEM)存放被分布的数据,只能被本处理单元直接访问。在控制部件内还有一个存放程序和数据的主存储器,整个系统是在控制部件的控制下运行用户程序和部分系统程序的。在执行主存储器中的用户程序时,所有指令都在控制部件中进行译码,把只适合串行处理的标量或控制类指令留给控制部件自己执行,而把适合于并行处理的向量类指令“播送”给各个PE,控制处于“活跃”的那些 PE 并行执行。
集中式共享存储器的阵列处理机构形
系统存储器是由K 个存储分体(MM_0MM_k-1)集中组成,经ICN为全部N个处理单元(PE_0PE_N-1)所共享。为使各处理单元对长度为N的向量中各个元素都能同时并行处理,存储分体个数K 应等于或多于处理单元数N。各处理单元在访主存时,为避免发生分体冲突,也要求有合适的算法能将数据合理地分配到各个存储分体中。
阵列处理机与流水处理机的比较
阵列处理机的单指令流多数据流处理方式和由它产生的特殊结构是以诸如有限差分、矩阵、信号处理、线性规划等一系列计算问题为背景发展起来的。这些计算问题利用多个处理单元对向量或数组所包含的各个分量同时计算,从而易于获得很高的处理速度。
阵列处理机
与同样擅长于向量处理的流水线处理机相比,阵列处理机利用的是资源重复。而不是时间重叠;利用的是并行性中的同时性,而不是并发性。它的每个处理单元要同等地担负起各种运算功能,但其设备利用率却可能没有多个单功能流水线部件的那样高。因此,只有在硬件价格有了大幅度下降以及系统结构有了较大改进的情况下,阵列处理机才能有好的性能价格比。阵列处理机提高速度主要是靠增大处理单元数,比起向量流水处理机主要靠缩短时钟周期来说,速度提高的潜力要大得多。
与流水线处理机不同的另一个方面是阵列处理机使用简单、规整的互连网络来确定处理单元间的连接。互联网络的结构形式限定了阵列处理机可用的解题算法,也会对系统多种性能指标产生显著影响,因此,互联网络的设计是重点。
阵列处理机在机间互连上比固定结构的单功能流水线灵活,使相当一部分专门问题上的工作性能比流水线处理机高得多,专用性强得多。
阵列处理机实质上是由专门应对数组运算的处理单元阵列组成的处理机、专门从事处理单元阵列的控制及标量处理的处理机和专门从事系统输入/输出及操作系统管理的处理机组成的一个异构型多处理机系统。
SIMD计算机的互连网络
单指令流多数据流 (Single Instruction Multiple Data,缩写:SIMD)是一种采用一个控制器来控制多个处理器,同时对一组数据(又称“数据向量”)中的每一个分别执行相同的操作从而实现空间上的并行性的技术
SIMD系统的互联网络的设计目标
- 结构不要过分复杂,以降低成本;
- 互联要灵活以满足算法和应用的需要;
- 处理单元间信息交换所需的传送步数要尽可能少,以提高速度性能;
- 能用规整单一的基本构件组合而成,或者经多次通过或者经多级连接来实现复杂的互联,使模块性好,以便于用 VLSI实现并满足系统的可扩充性。
超大规模集成电路(Very Large Scale Integration Circuit,VLSI)是一种将大量晶体管组合到单一芯片的集成电路,其集成度大于大规模集成电路。
互连函数
为反映互连性,每种互连网络可用一组互连函数定义。如果把互连网络的N个入端和N 个出端(N=2^n)各自用0,1,…,N-1 的整数编号代表,则互连函数就是表示互连网络的出端号和入端号的一一对应关系。
互连函数可以直接用结点间的连线图表示。但有时显得烦琐,也难以体现出连接上的内在规律。因此,常用另一种简单的函数式表示,即把所有入端x和出端f(x)都用二进制编码。从两者的二进制编码上找出其函数规律。
在确定PE之间通信的互联网络时,需要对操作方式控制策略、交换方法和网络的拓扑结构作出抉择。
操作方式
- 同步
- 异步
- 同步与异步组合
现有的列阵处理机根据其SIMD性质,均采用同步操作方式,让所有 PE 按时钟同步操作。异步或组合操作方式一般多用于多处理机。
交换方法
- 线路交换
- 包交换
- 线路与包交换组合
静态拓扑与动态拓扑的比较
网络的拓扑结构是指互连网络入、出端可以连接的模式,有静态和动态两种。在静态拓扑结构中,两个 PE 之间的链是固定的,总线不能重新配置成与其他 PE相连。
而动态拓扑结构中,两个PE 之间的链通过置定网络的开关单元状态可以重新配置。
静态拓扑有一维的线型,二维的环型、星型、树型、胖树型、网络型、脉动阵列型;三维的改环型、立方体型、环立方体型,以及其他复杂的连接形式。由于静态网络的灵活性,适应性差,很少使用。
动态网络有单级和多级两类。
动态单级网络只有有限的几种连接,必须经循环多次通过,才能实现任意两个处理单元之间的信息传送,故称此动态单级网络为循环网络。动态多级网络是由多个单级网络串联组成的,以实现任意两个处理单元之间的连接。将多级互连网络循环使用,可实现复杂的互连,称循环多级网络或多级循环网络。
基本的单级互连网络
(1)立方体单级网络。
立方体(Cube)单级网络的每个顶点(网络的结点)代表一个处理单元,共有8个处理单元,用zyx 三位二进制码编号。它所能实现的入、出端连接如同立方体各顶点间能实现的互连一样,即每个处理单元只能直接连到其二进制编码的某一位取反的其他3个处理单元上。
(2)PM2I单级网络。
PM2I单级网络是“加减2i”单级网络的简称。能实现与j号处理单元直接相连的是号为j土2i 的处理单元,即
P
M
2
(
+
i
)
(
j
)
=
j
+
2
i
m
o
d
N
或
P
M
2
(
−
i
)
(
j
)
=
j
−
2
i
m
o
d
N
PM2_(+i)(j)=j+2^i mod N 或 PM2_(-i)(j)=j-2^i mod N
PM2(+i)(j)=j+2imodN或PM2(−i)(j)=j−2imodN
式中,
0
≤
j
≤
N
−
1
,
0
≤
i
≤
n
−
1
,
n
=
l
o
g
2
N
0≤j≤N-1,0≤i≤n-1,n=log_2N
0≤j≤N−1,0≤i≤n−1,n=log2N。它共有 2_n 个互连函数。对于N=8的三维PM2I互连网络的互连函数,有 PM2_(+0)、PM2_(-0)、PM2_(+1)、PM2_(-1)、PM2_(±2);等五个不同的互连函数它们分别为:
PM2_(+0):(0 1 2 3 4 5 6 7)
PM2_(-0):(7 6 5 4 3 2 1 0)
PM2_(+1):(0 2 4 6)(1 3 5 7)
PM2_(-1):(6 4 2 0)(7 5 3 1)
PM2_(±2):(0 4)(1 5)(2 6)(3 7)
其中,(0 1 2 3 4 5 6 7)表示0连到1,与此同时,1连到2,…,7连到0。
(3)混洗交换单级网络。
混洗交换单级网络包括两个互连网络,一个是全混,另一个是交换。全混连接的规律是把全部按编码顺序排列的处理单元从当中分为数目相等的两半,前一半和后一半在连接至出端时正好一一隔开。
(4)螺形单级网络的互连函数。
蝶形单级网络的互连函数为:
B
u
t
t
e
r
f
l
y
(
P
(
n
−
1
)
P
(
n
−
2
)
.
.
.
P
1
P
0
)
=
P
0
P
(
n
−
2
)
.
.
.
P
1
P
(
n
−
1
)
Butterfly(P_(n-1)P_(n-2)...P_1P_0)=P_0P_(n-2)...P1P_(n-1)
Butterfly(P(n−1)P(n−2)...P1P0)=P0P(n−2)...P1P(n−1)即将二进制地址的最高位和最低位相互交换位置。
它实现的是0->0,1->4,2->2,3->6,4->1,5->5,6->3,7->7的同时连接。
N=8的多级PM2I网络的结构包含n级单元间连接,每一级都是把前后两列各N=2n个单元按PM2I拓扑相互连接起来。从第i级(0≤i≤n-1)来说,每一个人单元j(0≤j≤N-1)都有3根连接线分别通往单元j,j+2imodN和j-2^i modN。
基准网络与二进制立方体网络的逆网络相似,只是在第1级的级间连接不同。它采取从输入到输出的级间互连为恒等、逆全混、子逆全混和恒等置换,所用交换单元均为二功能的,采取单元控制。
4、共享主存构形的阵列处理机中并行存储器的无冲突访问
实现方阵或长方阵数组的无冲突访间的要求
对于二维数组(结论也适用于多维数组)而言,假设主存有m个分体并行,从中访同有n个元素的数组子集。这n个元素的变址跳距对于二维数组的行、列、主对角线,次对角线都是不一样的,但要求都能实现无冲突访同。
eg
如果设m=n=4,一个4X4的二维数组直接按行存储的方案,虽然同时访问某一行、主对角线或次对角线上的所有元素时,都可以无冲突施访问,但要同时访问某一列的元素时、由于它们集中存放在同一存储分体内;会产生访存冲突,因此,每次只能访问其中的一个元素,使实际频宽降低到1/4。
并行存储器中数组大小不固定的无冲突访问的要求
有n个处理单元的并行处理机,为了能并行访问n个元素,且适应任意规模的数组,可以先将多维数组或者非nXn方阵的二维数组按行或列的顺序变换为一维数组,形成一个一维线性地址空间,地址用a表示。然后,将地址a所对应的元素存放在体号地址j=amod m,体内地址为i=[a/n] 的单元中,就可以满足无冲突访问的要求。
5、脉动阵列流水处理机
脉动阵列结构
由一组处理单元(PE)构成的阵列。每个PE的内部结构相同,一般由一个加法/逻辑运算部件或加法/乘法运算部件再加上若干锁存器构成,可完成少数基本的算术逻辑运算操作。阵列内所有处理单元的数据锁存器都受同一个时钟控制。运算时数据在阵列结构的各个处理单元间沿各自的方向同步向前推进,形象的称其为脉动阵列结构。
脉动阵列结构特点
(1)结构简单、规整,模块化强,可扩充性好,非常适合用超大规模集成电路实现。
(2)PE间数据通信距离短、规则,使数据流和控制流的设计、同步控制等均简单规整。
(3)脉动阵列中所有 PE能同时运算,具有极高的计算并行性,可通过流水获得很高的运算效率和吞吐率。输入数据能被多个处理单元重复使用,大大减轻了阵列与外界的I/O通信量,降低了对系统主存和I/O系统频宽的要求
(4)脉动阵列结构的构形与特定计算任务和算法密相关,具有某种专用性,限制了应用范围,这对VLSI是不利的。
造成脉动阵列处理机应用范围有限的关键因素
受阵列结构的通用性及I/O带宽约束所限制的阵列结构的规模大小
发展通用脉动阵列结构的途径
(1)通过增设附加的硬件,对阵列的拓扑结构和互连方式用可编程开关进行重构,即经程序重新配置阵列的结构。
(2)用软件把不同的算法映像到固定的陈列结构上,该方法依赖于面向并行运算所采用的程序语言、操作系统、编译程序和软件开发工具的设计。
(3)探寻与问题大小无关的脉动处理方法,以及 VLSI运算系统的分割矩阵算法,使它们可以克服阵列只能求解固定大小题目的缺陷,同时探寻发展适合一类计算问题的通用算法和相应的设置方案。
七、多处理机
1、多处理机的概念、问题和硬件结构
多处理机是指有两台以上的处理机,共享I/O子系统,机间经共享主存或高速通信网络通信,在统一操作系统控制下,协同求解大而复杂问题的计算机系统。
多处理机与阵列处理机的比较
多处理机是属于多指令流多数据流的系统。它与单指令流多数据流的阵列处理机相比,有很大的差别。其差别主要来源于并行性的等级不同,阵列处理机主要是针对向量数组处理,实现向量指令操作级的并行,是开发并行性中的同时性。多处理机实现的则是更高一级的作业或任务间的并行,是开发并行性中的并发性。因此,在硬件结构上,它的多个处理机要用多个指令部件分别控制,通过共享主存或机间互联网络实现异步通信;在算法上,不限于向量、数组处理,还要挖掘和实现更多通用算法中隐含的并行性;在系统管理上,要更多的依靠操作系统等软件手段,有效地解决资源分析和管理,特别是任务分配、处理机调度、进程的同步和通信等问题。
多处理机有紧耦合和松耦合两种不同的构形
(1)紧耦合多处理机。(合)
紧耦合多处理机是通过共享主存来实现处理机间通信的,其通信速率受限于主存频宽。各处理机与主存经互联网络连接,处理机数受限于互联网络带宽及各处理机访主存冲突的概率。
(2)松耦合多处理机。(分)
松耦合多处理机中,每台处理机都有一个容量较大的局部存储器,用于存储经常用的指令和数据,以减少紧耦合系统中存在的访主存冲突。不同处理机间或者通过通道互联实现通信,以共享某些外围设备;或者通过消息传送系统(MTS)来交换信息,这时各台处理机可带有自己的外围设备。消息传送系统常采用分时总线或环形、星型、树形等拓扑结构。松耦合多处理机较适合做粗粒度的并行计算。
在紧耦合多处理机中就各处理机而言,又有同构对称型和异构非对称型两种。当多处理机用于并行任务时,常采用同构对称型的紧耦合多处理机。采用异构非对称型多处理机时,其主处理机不同于从处理机。
多处理机的互连
多处理机的互连一般采用总线、环形互连、交叉开关、多端口存储器或蠕虫穿洞寻径网络等几种形式。
访问公用总线的冲突的总线仲裁算法
为解决多个处理机同时访问公用总线的冲突,研制了静态优先级、固定时间片、动态优先级、先来先服务等多种总线仲裁算法。
环形互连的缺点
由于环形互连是点点连接,不是总线连接,其物理参数容易得到控制,非常适合于有高通信带宽的光纤通信。光纤通信是很难用在总线式互连系统上的。环形互连的缺点是信息在每个接口处都会有一个单位的传输延迟,当互连的处理机机数增加时,环中的信息传输延迟将增大。令牌环可看成是一种周期短、延迟长的流水线。
多端口存储器形式的中心是多端口存储器模块。多个存储器模块的相应端口连接在一起、每一个端口负责处理一个处理机P或I/O通道的访存请求。
蠕虫穿洞寻径网络的含义
机间采用小容量缓冲存储器、用于消息分组寻径存储转发。在蠕虫网络中,将消息分组又分割成一系列更小的小组,同一分组中所有小组以异步流水方式按序不间断地传送,并且同一分组中的所有小组,只有头部的小组知道其所在整个分组传送的目的地,用硬件方式进行传送的应答。各个分组允许交叉传送,但不同分组中的各个小组不能相互混在一起传送。利用虚拟通道思想,使存在于发送和接收结点之间的一条物理通道能被多个虚拟通道分时共享。
2、紧耦合多处理机多Cache的一致性问题
多Cache的一致性问题的产生原因
在多处理机中,情况比较复杂。由于每个处理机都有自己的专用Cache,当主存中同个信息块在多个Cache中都有时,会出现多个 Cache之间的相应信息块的内容不一致的间题。使用写直达法,处理机进行写操作,可以保证其 Cache 与主存的内容一致、但不能保证有此副本的其他处理机的 Cache中的信息块与主存中的一致。而且,在多处理机上,为了提高系统的效率,有时还允许进程迁移,将一个尚未执行完而被挂起的进程调度到另一个空闲的处理机上去执行,使系统中处理的负荷保持均衡,这样做也会造成Cache与主存间的不一致。因为被迁移的进程中最近修改过的信息只保留在原处理机的 Cache中。迁到新的处理机后,该进程就会使用主存中已过期的旧信息,使进程不能正确地得到恢复而出错。另外,当系统发生绕过 Cache 的输入/输出操作时,也会导致多 Cache块之间及Cache与主存对应块的内容不一致。
多Cache的一致性问题的解决办法
(1)解决进程迁移引起的多Cache 之间的不一致性。
对于进程迁移引起的多Cache之间的不一致性同题,可以通过禁止进程迁移的办法予以解决,也可以在进程挂起时,靠硬件方法将 Cache中该进程改写过的信息块强制写回主存相应位置的办法来解决。
(2)以硬件为基础实现多Cache 的一致性。
以硬件为基础实现多Cache的一致性的办法有多种。最普遍采用的办法叫做监视 Cache 协议法,即各个处理机中的 Cache 控制器随时都在监视着其他Cache的行动。监视 Cache 协议法实现简单,但只适用于总线互连的多处理机。而且不管是写作废还是写更新,都要占用总线不少时间。因此,只能用于机数少的多处理机中。商品化的多处理机大多采用此法。
(3)以软件为基础实现多Cache的一致性。
以硬件为基础的做法将增大对互连网络的通信量,处理机数很多时硬件也非常复杂。因此,提出了一些以软件为基础的做法。它们都是靠软件来限制的,不把一些公用的可写数据存人Cache中。
以软件为基础解决 Cache一致性的做法,主要优点是可以降低硬件的复杂性,降低对互连网络通信量的要求,因而性能价格比可以较高,比较适用于处理机数多的多处理机。
3、多处理机的并行性和性能
分类
- 按运算基本对象,并行算法可分为数值型和非数值型两类。
- 按并行进程间的操作顺序不同,并行算法又分为同步型、异步型和独立型3种。
- 根据各处理机计算任务的大小(即任务粒度)不同,并行算法又分为细粒度、中程度和粗粒度3种。
程序并行性的分析
(1)数据相关。
如果P_i的左部变量在P_j的右部变量集内,且P_j必须取出P_i运算的结果来作为操作数,就称P_j“数据相关"于P_i。相当于流水中发生的“先写后读”相关。
(2)数据反相关。
如果P_i的左部变量在P_j的右部变量集内,且当P_i未取用其变量的值之前,是不允许被P_j所改变的,就称P_i“数据反相关”与 P_j。相当于流水中发生的“先读后写”相关。
(3)数据输出相关。
如果P_i的左部变量也是P_j的左部变量,且P_j存人其算得的值必须在P_i存人之后,则称P_j,“数据输出相关”与P_i。
除了上述3种相关外,如果两个程序段的输入变量互为输出变量,同时具有“先写后读”和“先读后写”两种相关,以交换数据为目的,则两者必须并行执行,既不能顺序串行也不能交换串行。
如果两个程序段之间不存在任何一种数据相关,既无共同变量,或共同变量只出现在右部的源操作数。则两个程序段可以无条件地并行执行,也可以顺序串行或交换串行。
并行算法
并行算法需要用并行程序来实现。为了加强程序并行性的识别能力、就要使用并行程序设计语言。并行程序设计语言的基本要求是:能使程序员在其程序中灵活、方便地表示出各类并行性,能在各种并行/向量计算机系统中高效地实现。并行进程的特点是这些进程在时间上重叠地执行,一个进程未结束,另一个进程就已开始。
并行任务的派生
并行任务的派生是使一个任务在执行的同时,派生出可与它并行执行的其他一个或多个任务。分配给不同的处理机完成。
衡量任务粒度大小的依据
衡量任务粒度大小的一个依据是程序用于有效计算的执行时间E与处理机间的通信等辅助开销的时间C的比值。只有 E/C的值较大时,开发并行性才有好处。如果最大并行度会带来最大的通信等辅助开销,倒不如增大任务粒度,降低并行度来减少辅助开销。因此,为获得最佳的性能,必须对并行性和额外开销进行权衡。
4、多处理机的操作系统
主从型操作系统
主从型操作系统的优点
主从型操作系统的结构比较简单;整个管理程序只在一个处理机上运行,除非某些需递归调用或多重调用的公用程序,一般都不必是可再入的;只有一个处理机访问执行表,不存在系统管理控制表格的访问冲突和阻塞,简化了管理控制的实现。所有这些均使操作系统能最大限度地利用已有的单处理机多道程序分时操作系统的成果,只需要对它稍加扩充即可。因此,实现起来简单、经济、方便,是目前大多数多处理机操作系统所采用的方式。
主从型操作系统的缺点
对主处理机的可靠性要求很高。一旦发生故障,很容易使整个系统瘫痪,这时必须由操作员干预才行。如果主处理机不是设计成专用的,操作员可用其他处理机作为新的主外理机来重新启动系统。整个系统显得不够灵活,同时要求主处理机必须能快速执行其管理功能,提前等待请求,以便及时为从处理机分配任务,否则将使从处理机因长时间空闲而显著降低系统的效率。即使主处理机是专门的控制处理机,如果负荷过重,也会影响整个系统的性能,特别是当大部分任务都很短时,由于频繁地要求主处理机完成大量的管理性操作,系统的效率将会显著降低。
主从型操作系统的适用场合
主从型操作系统适用于工作负荷固定,从处理机能力明显低于主处理机,或由功能相差很大的处理机组成的异构型多处理机。
各自独立型操作系统
各自独立型操作系统的优点
很适应分布处理的模块化结构特点,减少对大型控制专用处理机的需求;某个处理机发生故障,不会引起整个系统的瘫痪,有较高的可靠性;每台处理机都有其专用控制表格,使访问系统表格的冲突较少,也不会有许多公用的执行表,同时控制进程和用户进程一起进行调度,能取得较高的系统效率。
各自独立型操作系统的缺点
实现复杂。尽管每台处理机都有自己的专业控制表格,但仍有一些共享表格,会增加共享表格的访问冲突,导致进程调度的复杂性和开销的加大。某台处理机一旦发生故障,要想恢复和重新执行未完成的工作比较困难。每台处理机都有自己专用的输入/输出设备和文件,使整个系统的输入/输出结构变换需要操作员干预。各处理机负荷的平衡比较困难。各台处理机需有局部存储器存放管理程序副本,降低了存储器的利用率。
各自独立型操作系统的适用场合
各自独立型操作系统适用于松耦合多处理机。
浮动型操作系统
是介于主从型和各自独立型操作系统之间的一种折中方式,其管理程序可以在处理器之间浮动。在一段较长的时间里指定某一台处理机为控制处理机,但是具体指定哪一台处理机以及担任多长时间控制处理都是不固定的。
5、多处理机的发展
机群系统(集群系统)
机群系统是将多个高性能的工作站或高档微型计算机,使用高速的通信网络加以互连组成的系统。
机群系统中的主机和网络可以是同构的,也可以是异构的。主机间的通信主要采用消息传递。从结构和结点间的通信来看,是一种分布式存储方式;从用户来看,表示的是一个完整的并行系统。
机群系统比起传统的并行处理系统有如下明显的优点
(1)系统有高的性能价格比。
(2)系统的开发周期短。
(3)系统的可扩展性好
(4)系统的资源利用率高
(5)用户投资风险小。
(6)用户编程方便。
八、数据流计算机和归约机
1、数据流计算机
数据驱动的数据流方式
数据驱动的数据流方式指的是,只要一条或一组指令所要求的操作数全部准备就绪,就可以立即激发相应的指令或指令组执行。执行结果的输出将送往等待这数据的下一条或下一组指令。
控制流方式与数据流方式的比较
控制驱动的控制流方式的特点是:通过访问共享存储单元让数据在指令之间传递;指令执行的顺序性隐含于控制流中,但却可以显式地使用专门的控制操作符来实现并行处理;指令执行的顺序受程序计数器控制,也就是受控制令牌所支配的。数据驱动的数据流方式则不同,它没有通常的共享变量的概念,即没有共享存储数据的概念;指令执行顺序只受指令中数据相关性的制约;数据是以数据令牌方式直接在指令之间传递的。
数据流
数据流是基于异步性和函数性的一种计算模型。
异步性
所谓异步性,是指一旦操作数到齐就开始操作,这是数据流计算机开拓并行性的基础。
函数性
所谓函数性,是指每一数据流操作都是消耗一组输入值,产生一组输出值而不发生副作用,具有变量出现在赋值语句左边仅一次的单赋值特性,从而保证任何两个并发操作可以按任意次序执行,而不会相互干扰。
数据流程序可以看成是数据流机器语言
数据流程序可以看成是数据流机器语言。它有多个结点,并用一些弧把它们连接而成。每一个结点用圆圈或三角形或其他特殊符号表示,认为是一种处理部件。结点内的符号或字母表示一种操作,所以也称操作符。弧代表数据令牌在结点间的流向。在数据流计算机中,根据这些数据流程序图,通过一个分配器或分配程序,不断分配适当的处理部件来实现操作符的操作。下图表示了计算 z=(a十b)*(a-b)的数据流程序图。
为了满足数据流计算机程序设计的需要,还需进一步引入许多常用的其他结点。这些结点可分别表示
(1)常数产生结点:
没有输入端,只产生常数。激发后输出带常数的令牌
(2)算逻运算操作结点:
主要包括常用的十、-、*、/、乘方、开方等算术运算及非、与、或、异或、或非等布尔逻辑运算。激发后输出带相应操作结果的令牌。
(3)复制操作结点:
可以是数据的多个复制,也可以是控制量的多个复制。
(4)判定操作结点:
对输入数据按某种关系进行判断和比较,激发后在输出控制端给出带逻辑值真(T)或假(F)的控制令牌。
(5)控制类操作结点:
控制类操作结点的激发条件需要加到布尔控制端。可以把控制类操作结点细分为常用的4种:T门控结点、F门控结点、开关门控结点和归并门控结点。
根据对数据令牌处理的方式不同,可以把数据流计算机的结构分成静态和动态两类。
(1)静态数据流计算机。
静态数据流计算机的数据令牌没加标号。为正确工作,任意给定时刻,当结点操作时,其任何一条输入弧上只能有一个数据令牌。只有当结点的所有输入弧上都有数据令牌时,该结点才被激活来执行相应的操作。由于数据令牌没有加标号,如果给定时间里允许一条弧上同时出现两个以上的数据令牌的话,结点对于送达各输入端的一批数据就无法区分出它们中哪些是属于同一批的操作数。因此,在静态数据流计算机中,为了满足迭代要求,除要多次重复激活同一操作结点外,还必须另设控制令牌,以识别数据令牌由一个结点传送到另一个结点的时间关系,从而区分属于不同迭代层次的各批数据,所以,静态数据流计算机不支持递归的并发激活,只支持一般的循环。
(2)动态数据流计算机。
动态数据流计算机最主要的特点是让令牌带上标记,使得在任意给定时刻,数据流程序图任何一条弧上允许出现多个带不同标记的令牌。令牌的标记是令牌附带的一个能识别该令牌时间先后相对关系的标号,有的计算机上也称其为颜色。所以,不需要像静态数据流计算机那样用控制令牌来对指令间数据令牌的传送加以认可。对于需要多组(次)数据令牌的指令,则是通过对令牌标记的配对来识别。为此,需要相应硬件将标记附加到数据令牌上,并完成对标记的匹配工作。
数据流计算机在提高并行处理效能上有着非常显著的特点,但也存在一些问题:
(1)数据流计算机的主要目的是为了提高操作级并行的开发水平,但如果题目本身数据相关性很强,内涵并行性成分不多时,就会使效率反而比传统的 Von Neumann型机的还要低。
(2)在数据流计算机中为给数据建立、识别、处理标记,需要花费较多的辅助开销和较大的存储空间。但如果不用标记,则无法递归并会降低并行能力。
(3)数据流计算机不保存数组。
(4)数据流语言的变量代表数值,而不是存储单元位置,使程序员无法控制存储分配。
(5)数据流计算机互联网设计困难,输入/输出系统仍不够完善。
(6)数据流计算机没有程序计数器,给诊断和维护带来了困难。
2、归约机
归约机和数据流计算机一样,都是基于数据流的计算模型,只是其采用的驱动方式不同。数据流计算机采用数据驱动,执行的操作序列取决于输入数据的可用性;归约机则是需求驱动、执行的操作序列取决于对数据的需求,对数据的需求又来源于函数式程序设计语言对表达式的归约。
归约机的特点
(1)归约机应当是面向函数式语言,或以函数式语言为机器语言的非 Neumann型机器,其内部结构应不同于Neumann型机器。
(2)具有大容量物理存储器并采用大虚存容量的虚拟存储器,具有高效的动态存储分配和管理的软、硬件支持,满足归约机对动态存储分配及所需存储空间大的要求。
(3)处理部分应当是一种有多个处理器或多个处理机并行的结构形式,以发挥函数式程序并行处理的特长。
(4)采用适合于函数式程序运行的多处理器(机)互连的结构,最好采用树形方式的互连结构或多层次复合的互连结构形式。
(5)为减少进程调度及进程间的通信开销,尽量把运行进程的结点机紧靠该进程所需用的数据安排,并使运行时需相互通信的进程所占用的处理机也靠近,让各处理机的负荷平衡。
根据计算机所用归约方式的不同相应就有串归约机和图归约机两类
(1)串归约机可看成是一种特殊的符号串处理机,函数定义、表达式和目标都以字符串的形式存储于计算机中。函数式语言源程序可以不经翻译,直接在串归约机上进行处理。
(2)图归约机采取将函数定义、表达式和目标以图的形式存储于计算机中,图是其处理对象。最常用的图是二叉树和N叉树
注:本博客仅供学习和参考,内容较多,难免会有错误,请大家多多包涵哈🌸🌸
欢迎您在评论区留下您宝贵的建议
完结撒花啦~~~🌸🌸