第一章
名称解析:
程序的局部性原理:
程序执行时所访问的存储器地址不是随机分布的,而是相对地簇
聚。包括时间局部性和空间局部性。软件兼容:
一个软件可以不经修改或者只需少量修改就可以由一台计算机移植到另一
台计算机上运行。差别只是执行时间的不同。时间重叠
:在并行性概念中引入时间因素,让多个处理过程在时间上相互错开,轮流
重叠地使用同一套硬件设备的各个部分,以加快硬件周转而赢得速度。资源重复
:在并行性概念中引入空间因素,以数量取胜。通过重复设置硬件资源,大
幅度地提高计算机系统的性能。
实现软件可移植的方法:
采用系列机方法
,只能在具有相同系统结构的各种机器之间实现软件移植,
般是 一个厂家生产的机器。采用模拟与仿真的方法
,可在不同系统结构的机器之间相互移植软件,对于使
用频 率较高的指令,尽可能用仿真方法以提高运算速度,而对于使用频率低且难于用
仿真实现的指令则用模拟方法来实现。采用统一的高级语言方法
,可以解决结构相同或完全不同的各种机器上的软件
移植, 但是,要统一高级语言,语言的标准化很重要,但难以在短期内解决。
第二章
2.1解释下列术语
堆栈型机器
:CPU中存储操作数的单元是堆栈的机器。累加器型机器:
CPU中存储操作数的单元是累加器的机器通用寄存器型机器:
CPU中存储操作数的单元是通用寄存器的机器。CISC:
复杂指令集计算机RISC:
精简指令集计算机寻址方式
:指令系统中如何形成所要访问的数据的地址。一般来说,寻址方式可以指明指
令中的操作数是一个常数丶一个寄存器操作数或者是一个存储器操作数数据表示:
硬件结构能够识别、指令系统可以直接调用的那些数据结构。
2.2 区别不同指令集结构的主要因素是什么?根据这个主要因素可将指令集结构分为哪3类?
答:区别不同指令集结构的主要因素是CPU中用来存储操作数的存储单元。据此可将指令
系统结构分为堆栈结构
、累加器结构
和通用寄存器结构
。
2.3 指令集结构设计所涉及的内容有哪些?
指令集功能设计
:主要有RISC和CISC两种技术发展方向;寻址方式的设计
:设置寻址方式可以通过对基准程序进行测试统计,察看各种寻址方式的使用频率,根据适用频率设置必要的寻址方式。操作数表示和操作数类型
:主要的操作数类型和操作数表示的选择有:浮点数据类型、整型数据类型、字符型、十进制数据类型等等。址方式的表示
:可以将寻址方式编码于操作码中,也可以将寻址方式作为一个单独的域来表示。指令集格式的设计
:有变长编码格式、固定长度编码格式和混合型编码格式3种。
2.10 通常有哪几种指令格式,请简述其适用范围。
变长编码格式
。如果系统结构设计者感兴趣的是程序的目标代码大小,而不是性能,就可以采用变长编码格式。固定长度编码格式
。如果感兴趣的是性能,而不是程序的目标代码大小,则可以选择固定长度编码格式。混合型编码格式
。需要兼顾降低目标代码长度和降低译码复杂度时,可以采用混合型编码格式。
第三章
3.1 名词解析
静态流水线
:指在同一时间内,多功能流水线中的各段只能按同一种功能的连接方式工作的流
水线。当流水线要切换到另一种功能时,必须等前面的任务都流出流水线之后,才能改变连接。换名技术
:名相关的两条指令之间并没有数据的传送,只是使用了相同的名。可以把其中一条
指令所使用的名换成别的,以此来消除名相关。写后写冲突
:考虑两条指令 i 和 j,且 i 在 j 之前进入流水线,指令 j 和指令 i 的结果单元(寄存
器或存储器单元)相同,而且 j 在 i 写入之前就先对该单元进行了写入操作,从而导致写入顺序
错误。这时在结果单元中留下的是 i 写入的值,而不是 j 写入的。
3.2 简述流水线技术的特点
- 流水线把一个处理过程分解为若干个子过程,每个子过程由一个专门的功能部件来实现。
因此,流水线实际上是把一个大的处理功能部件分解为多个独立的功能部件,并依靠它们的并
行工作来提高吞吐率。 - 流水线中各段的时间应尽可能相等,否则将引起流水线堵塞和断流。
- 流水线每一个功能部件的前面都要有一个缓冲寄存器,称为流水寄存器。
- 流水技术适合于大量重复的时序过程,只有在输入端不断地提供任务,才能充分发挥流
水线的效率。 - 流水线需要有通过时间和排空时间。在这两个时间段中,流水线都不是满负荷工作。
第四章
4.1名词解析
-
纵向处理方式:将整个向量按相同的运算处理完毕之后,再去执行其他运算。适合对向量进行流水处理,向量运算指令的源/目向量都放在存储器内,使得流水线运算部件的输入、输出端直接与存储器相联,构成M-M型的运算流水线。
-
分段开采:当向量的长度大于向量寄存器的长度时,必须把长向量分成长度固定的段,然后循环分段处理,每一次循环只处理一个向量段。
-
向量长度临界值:向量流水方式的处理速度优于标量串行方式的处理速度时所需的向量长度的最小值。
4.2 简述三种向量处理方式,它们对向量处理机的结构要求有何不同?
- 横向处理方式:若向量长度为N,则水平处理方式相当于执行N次循环。若使用流水线,在每次循环中可能出现数据相关和功能转换,不适合对向量进行流水处理。
- 纵向处理方式:将整个向量按相同的运算处理完毕之后,再去执行其他运算。适合对向量进行流水处理,向量运算指令的源/目向量都放在存储器内,使得流水线运算部件的输入、输出端直接与存储器相联,构成M-M型的运算流水线。
- 纵横处理方式:把长度为N的向量分为若干组,每组长度为n,组内按纵向方式处理,依次处理各组,组数为「N/n」,适合流水处理。可设长度为n的向量寄存器,使每组向量运算的源/目向量都在向量寄存器中,流水线的运算部件输入、输出端与向量寄存器相联,构成R-R型运算流水线。
第五章
5.1 名词解析
-
指令级并行:简称ILP。是指指令之间存在的一种并行性,利用它,计算机可以并行执行两条或两条以上的指令。
-
指令的动态调度:是指在保持数据流和异常行为的情况下,通过硬件对指令执行顺序进行重新安排,以提高流水线的利用率且减少停顿现象。是由硬件在程序实际运行时实施的。
-
BHT:分支历史表。用来记录相关分支指令最近一次或几次的执行情况是成功还是失败,并据此进行预测。
-
超标量:一种多指令流出技术。它在每个时钟周期流出的指令条数不固定,依代码的具体情况而定,但有个上限。
5.3 记分牌算法中,记分牌中记录的信息由哪三部分组成?
- 指令状态表=:记录正在执行的各条指令已经进入
到了哪一段; - 功能部件状态表:记录各个功能部件的状态;
- 结果寄存器状态表 Result:每个寄存器在该表中有一项,用于指出哪个功能部件(编号)将把结果写入该寄存器。
第六章
6.1 解析下列名词:循环展开 全局指令调度 踪迹调度 循环携带相关 VLIW
- 循环展开 :是一种增加指令间并行性最简单和最常用的方法。它将循环展开若干遍后,通过
重命名和指令调度来开发更多的并行性。 - 全局指令调度: :在循环体内的多个基本块间移动指令,扩大那些执行频率较高的基本块的体
积;在保持原有数据相关和控制相关不变的前提下,尽可能地缩短包含分支结构的代码段的
总执行时间。 - 踪迹调度 :由一个或多个基本块组成的指令序列,通过移动指令优化执行频率高的 trace,
减少其执行开销,包括踪迹选择和踪迹压缩两步。 - 循环携带相关 :是指一个循环的某个叠代中的指令与其他叠代中的指令之间的数据相关。
- VLIW :一种多指令流出技术。VLIW 处理机在每个时钟周期流出的指令条数是固定的,这
些指令构成一条长指令或者一个指令包,在这个指令包中,指令之间的并行性是通过指令显
式地表示出来的。
6.2 简述踪迹调度和超块调度的基本过程
- 踪迹调度:包括踪迹选择和踪迹压缩。
- 踪迹选择:从程序的控制流图中选择执行频
率较高的路径,每条路径就是一条 trace; - 踪迹压缩:对已生成的 trace 进行指令调度和
优化,尽可能地缩短其执行时间,跨越 trace 内部的入口或出口调度指令时必须非常小心,
有时还需要增加补偿代码 。
- 踪迹选择:从程序的控制流图中选择执行频
- 超块调度:增加对 trace 拓扑结构的约束,将其限制为只能更拥有一个入口,但可以拥
有多个出口的结构。压缩超块时,只需要考虑跨越超块出口移动指令的情形,而且对于那些
只有一个出口的计算循环控制,经过循环展开后得到的超块只有一个入口和一个出口。
第七章
7.1
- 多级存储层次: :采用不同的技术实现的存储器,处在离 CPU 不同距离的层次上,各存储器
之间一般满足包容关系,即任何一层存储器中的内容都是其下一层(离 CPU 更远的一层)
存储器中内容的子集。目标是达到离 CPU 最近的存储器的速度,最远的存储器的容量。 - 组相联映像: :主存中的每一块可以放置到 Cache 中唯一的一组中任何一个地方(Cache 分成
若干组,每组由若干块构成)。 - LRU :选择最近最少被访问的块作为被替换的块。实际实现都是选择最久没有被访问的块
作为被替换的块。 - 写回法: 只把信息写入 Cache 中相应块,该块只有被替换时,才被写回主存。
- 冲突不命中:在组相联或直接映象 Cache 中,若太多的块映象到同一组(块)中,则会出现
该组中某个块被别的块替换(即使别的组或块有空闲位置),然后又被重新访问的情况。
7.2 简述“Cache-主存”层次与“主存-辅存”层次的区别
- “cache-主存”指 在 CPU 和主存之间增加一级速度快、但容量较小且每位价格较高的高速缓冲存储Cache
- “主存-辅存”层次的目的是为了弥补主存容量的不足。它是在主存外面增加一个容量更大、每位价格更 低、但速度更慢的存储器