1、第 1 章 计算机系统结构的基本概念 1.1 解释下列术语 层次机构:按照计算机语言从低级到高级的次序, 把计算机系统按功能划分成 多级层次结构 ,每一层以一种不同的语言为特征。这些层次依次为:微程序机器级,传统机器语言机器级,汇编语言机器级,高级语言机器级,应用语言机器级等。 虚拟机:用软件实现的机器。 翻译 :先用转换程序把高一级机器上的程序转换为低一级机器上等效的程序,然后再在这低一级机器上运行,实现程序的功能。 解释 :对于高一级机器上的程序中的每一条语句或指令,都是转去执行低一级机器上的一段等效程序。执 行完后,再去高一级机器取下一条语句或指令,再进行解释执行,如此反复,直到解释执行
2、完整个程序。 计算机系统结构:传统机器程序员所看到的计算机属性,即概念性结构与功能特性。 在计算机技术中,把这种本来存在的事物或属性,但从某种角度看又好像不存在的概念称为透明性 。 计算机组成 :计算机系统结构的逻辑实现,包含物理机器级中的数据流和控制流的组成以及逻辑设计等。 计算机实现 :计算机组成的物理实现,包括处理机、主存等部件的物理结构,器件的集成度和速度,模块、插件、底板的划分与连接,信号传输,电源、冷却及整机装配技 术等。 系统加速比:对系统中某部分进行改进时,改进后系统性能提高的倍数。 Amdahl 定律: 当对一个系统中的 某 个 部件 进行改进后,所能 获得的 整个 系统性能
3、 的提高 ,受限于该部件 的执行时间占总执行时间的百分比 。 程序的 局部性原理 :程序执行时所访问 的 存储器地址不是随机分布的,而是相对地簇聚 。包括 时间局部性 和 空间局部性 。 CPI:每条指令执行的平均时钟周期数。 测试程序套件:由各种不同的真实应用程序构成的一组测试程序,用来测试计算机在各个方面的处理性能。 存储程序计算机: 冯 诺依曼结构计算机 。其基本点是指令 驱动。程序预先存放在计算机存储器中,机器一旦启动,就能按照程序指定的逻辑顺序执行这些程序,自动完成由程序所描述的处理工作。 系列机 :由同一厂家生产的具有相同系统结构、但具有不同组成和实现的一系列不同型号的计算机。 软
4、件兼容 :一个软件可以不经修改或者只需少量修改就可以由一台计算机移植到另一台计算机上运行。差别只是执行时间的不同。 向上(下)兼容 : 按某档计算机编制的程序,不加修改就能运行于比它高(低)档的计算机。 向 后 ( 前 )兼容 : 按某个时期投入市场的某种型号计算机编制的程序,不加修改地就能运行于在它之 后 ( 前 )投入市场的计算机。 兼容机:由不同公司厂家生产的具有相同系统结构的计算机。 模拟 :用软件的方法在一台现有的计算机(称为宿主机)上实现另一台计算机(称为虚拟机)的指令系统。 仿真 :用一台现有计算机(称为宿主机)上的微程序去解释实现另一台计算机(称为目标机)的指令系统。 并行性
5、:计算机系统在同一时刻或者同一时间间隔内进行多种运算或操作。只要在时间上相互重叠,就存在并行性。它包括同时性与并发性两种含义。 时间重叠 :在并行性概念中引入时间因素,让多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件 设备的各个部分,以加快硬件周转而赢得速度。 资源重复 :在并行性概念中引入空间因素,以数量取胜。通过重复设置硬件资源,大幅度地提高计算机系统的性能。 资源共享 :这是一种软件方法,它使多个任务按一定时间顺序轮流使用同一套硬件设备。 耦合度 :反映多机系统中各计算机之间物理连接的紧密程度和交互作用能力的强弱。 紧密耦合系统: 又称直接耦合系统。在这种系统中,计算机之间的物理
6、连接的频带较高,一般是通过总线或高速开关互连,可以共享主存。 松散耦合系 统:又称间接耦合系统,一般是通过通道或通信线路实现计算机之间的互 连,可以共享外存设备(磁盘、磁带等)。计算机之间的相互作用是在文件或数据集一级上进行。 异构型多处理机系统:由多个不同类型、至少担负不同功能的处理机组成,它们按照作业要求的顺序,利用时间重叠原理,依次对它们的多个任务进行加工,各自完成规定的功能动作。 同构型多处理机系统:由多个同类型或至少担负同等功能的处理机组成,它们同时处理同一作业中能并行执行的多个任务。 1.2 试用实例说明计算机系统结构、计算机组成与计算机实现之间的相互关系。 答: 如在设计主存系统
7、时,确定主存容量、编址方式、寻址范围等属于计算 机系统结构。确定主存周期、逻辑上是否采用并行主存、逻辑设计等属于计算机组成。选择存储芯片类型、微组装技术、线路设计等属于计算机实现。 计算机组成是计算机系统结构的逻辑实现。计算机实现是计算机组成的物理实现。一种体系结构可以有多种组成。一种组成可以有多种实现。 1.3 计算机系统结构的 Flynn 分类法是按什么来分类的?共分为哪几类? 答: Flynn 分类法是按照指令流和数据流的多倍性进行分类。把计算机系统的结构分为: ( 1) 单指令流单数据流 SISD ( 2) 单指令流多数据流 SIMD ( 3) 多指令流单数据流 MISD ( 4) 多
8、指令流多数据 流 MIMD 1.4 计算机系统设计中经常使用的 4 个定量原理是 什么?并说出它们的含义。 答:( 1) 以经常性事件为重点 。 在计算机系统的设计中,对经常发生的情况 ,赋予它优先的处理权和资源使用权,以 得到更多的总体上的改进 。( 2) Amdahl 定律。加快某部件执行速度所获得的系统性能加速比,受限于该部件在系统中所占的重要性。( 3) CPU 性能公式。 执行 一个 程序 所需 的 CPU 时间 = IC CPI 时钟周期时间。 ( 4)程序的局部性原理。程序在执行时所访问地址的分布不是随机的,而是相对地簇聚。 1.5 分别从执行程序的 角度和处理数据的角度来看,计
9、算机系统中并行性等级从低到高可分为哪几级? 答: 从处理数据的角度来看,并行性等级从低到高可分为: ( 1)字串位串:每次只对一个字的一位进行处理。这是最基本的串行处理方式,不存在并行性; ( 2)字串位并:同时对一个字的全部位进行处理,不同字之间是串行的。已开始出现并行性; ( 3)字并位串:同时对许多字的同一位(称为位片)进行处理。这种方式具有较高的并行性; ( 4)全并行:同时对许多字的全部位或部分位进行处理。这是最高一级的并行。 从执行程序的角度来看,并行性等级从低到高可分为: ( 1)指令内部并行:单条指令中各微操作之间的并行; ( 2)指令级并行:并行执行两条或两条以上的指令; (
10、 3)线程级并行:并行执行两个或两个以上的线程,通常是以一个进程内派生的多个线程为调度单位; ( 4)任务级或过程级并行:并行执行两个或两个以上的过程或任务(程序段),以子程序或进程为调度单元; ( 5)作业或程序级并行:并行执行两个或两个以上的作业或程序。 1.6 某 台 主频为 400MHz 的 计算机执行标准测试程序,程序中指令类型、执行数量和平均时钟周期数如下: 指令类型 指令执行数量 平均时钟周期数 整数 45000 1 数据传送 75000 2 浮点 8000 4 分支 1500 2 求该计算机的有效 CPI、 MIPS 和程序执行时间。 解:( 1) CPI (45000 1 7
11、5000 2 8000 4 1500 2) / 129500 1.776 ( 2) MIPS 速率 f/ CPI 400/1.776 225.225MIPS ( 3)程序执行时间 = (45000 1 75000 2 8000 4 1500 2) 400=575s 1.7 将计算机系统中某一功能的处理速度加快 10 倍,但该功能的处理时间 仅为整个系统运行时间的 40%,则采用此增强功能方法后,能使整个系统的性能提高多少? 解 由题可知: 可改进比例 = 40% = 0.4 部件加速比 = 10 根据 Amdahl 定律可知: 5 6 2 5.110 4.04.01 1 系统加速比采用此增强功
12、能方法后,能使整个系统的性能提高到原来的 1.5625 倍。 1.8 计算机系统中有三个部件可以改进,这三个部件的部件加速比 为 : 部件加速比 1=30; 部件加速比 2=20; 部件加速比 3=10 ( 1) 如果部件 1 和部件 2 的可改进比例均为 30%,那么当部件 3 的可改进比例为多少时,系统加速比 才 可以达到 10? ( 2) 如果三个部件的可改进比例分别为 30%、 30%和 20%,三个部件同时改进,那么系统中不可加速部分的执行时间在总执行时间中占的比例是多少? 解:( 1)在多个部件可改进情况下, Amdahl 定理的扩展: iiin SFFS )1( 1已知 S1 3
13、0, S2 20, S3 10, Sn 10, F1 0.3, F2 0.3,得: )()( 10/20/0.330/0.30.30.3-1 110 33 FF 得 F3 0.36,即部件 3 的可改进比例为 36%。 ( 2)设系统改进前的执行时间为 T, 则 3 个部件改进前的执行时间为:( 0.3+0.3+0.2)T = 0.8T, 不可改进部分的执行时间为 0.2T。 已知 3 个部件改进后的加速比分别为 S1 30, S2 20, S3 10,因此 3 个部件改进后的执行时间为: TTTTT n 04 5.0102.0203.0303.0 改进后整个系统的执行时间为: Tn = 0.
14、045T+0.2T = 0.245T 那么系统中不可改进部分的执行时间在总执行时间中占的比例是: 82.0245.0 2.0 TT 1.9 假设某应用程序中有 4 类操作,通过改进,各操作获 得不同的性能提高。具体数据如 下表 所示 : 操作类型 程序中的数量 改进前的执行时间 改进后的执行时间 (百万条指令) (周期) (周期) 操作 1 10 2 1 操作 2 30 20 15 操作 3 35 10 3 操作 4 15 4 1 ( 1)改进后,各类操作的加速比分别是多少? ( 2)各类操作单独改进后,程序获得的加速比分别是多少? ( 3) 4 类操作均改进后,整个程序的加速比是多少? 解:
15、 根据 Amdahl 定律SeFeFeS n )1( 1可得 操作类型 各类操作的 指令条数在程序中所占的比例 Fi 各类操作的加速比 Si 各类操作单独改进后, 程序获得的加速比 操作 1 11.1% 2 1.06 操作 2 33.3% 1.33 1.09 操作 3 38.9% 3.33 1.37 操作 4 16.7% 4 1.14 4 类操作均改进后,整个程序的加速比 : 2 .1 6)1( 1 iiin SFFS第 2 章 指令集结构的分类 2.1 解释下列术语 堆栈型机器 : CPU 中存储操作数的单元是堆栈的机器。 累加器型机器 : CPU 中存储操作数的单元是累加器的机器。 通用寄
16、存器型机器 : CPU 中存储操作数的单元是通用寄存器的机器。 CISC:复杂指令集计算机 RISC:精简指令集计算机 寻址方式:指令系统中如何形成所要访问的数据的地址。一般来说, 寻址方式 可以 指明指令中的操作数是一个常数、一个寄存器操作数或者是一个存储器操作数。 数据表示 : 硬件结构能够识别、指令系统可以直接调用的那些数据结构。 2.2 区别不同指令集结构的主要因素是什么?根据这个主要因素可将指令集结构分为哪3 类? 答:区别不同指令集结构的主要因素是 CPU 中用来 存储操作数的存储单元。 据此可将指令系统结构 分为 堆栈结构、累加器结构和通用寄存器结构。 2.3 常见的 3 种通用
17、寄存器型 指令集结构 的优缺点有哪些? 答: 指令 系统 结构类型 优 点 缺 点 寄存器 -寄存器型 ( 0, 3) 指令字长固定 ,指令结构简洁 ,是一种简单的代码生成模型,各种指令的执行时钟周期数相近 。 与 指令中含存储器操作数的指令系统结构相比,指令条数多, 目标代码不够紧凑, 因而 程序占用的空间比较大。 寄存器 -存储器型 ( 1, 2) 可以 在 ALU 指令中 直接对存储器操作数进行 引用,而不必先用 load 指令进行加载。 容易对指令进行编码,目标代码 比较紧凑。 由于有一个操作数的内容将被破坏,所以 指令中的 两个 操作数 不对称 。在一条指令中同时对寄存器操作数和存储
18、器操作数进行编码, 有可能 限制指令所能够表示的寄存器个数。指令的执行时 钟周期数 因 操作数 的来源(寄存器或存储器) 不同而差别比较大。 存储器 -存储器型 ( 2, 2) 或 ( 3, 3) 目标代码 最紧凑 , 不需要设置 寄存器 来 保存变量 。 指令字长 变化很大,特别是 3 操作数指令 。 而且每条指令 完成的工作也差别很大。 对存储器的频繁访问 会使 存储器 成为 瓶颈 。这种类型的指令系统现在已不用了。 2.4 指令集 应满足哪几个基本要求? 答: 对指令集的基本要求是:完整性、规整性、高效率和兼容性。 完整性是指在一个有限可用的存储空间内,对于任何可解的问题,编制计算程序时
19、,指令集所提供的指令足够使用。 规整性 主要包括对称性和均匀性。对称性是指所有与指令集有关的存储单元的使用、操作码的设置等都是对称的。均匀性是指对于各种不同的操作数类型、字长、操作种类和数据存储单元,指令的设置都要同等对待。 高效率是指指令的执行速度快、使用频度高。 2.5 指令集结构设计所涉及的内容有哪些? 答: (1) 指令集功能设计:主要有 RISC和 CISC 两种技术发展方向; (2) 寻址方式的设计:设置寻址方式可以通过对基准程序进行测试统计,察看各种寻址方式的使用频率,根据适用频率设置必要的寻址方式。 (3) 操作数表示和操作数类型:主要的操作数类型和操作数表示的选择有:浮点数据
20、类型、整型数据类型、字符型、十进制数据类型等等。 (4) 寻址方式的表示:可以将寻址方式编码于操作码中,也可以将寻址方式作为一个单独的域来表示。 (5) 指令集格式的设计:有变长编码格式、固定长度编码格式和混合型编码格式 3 种。 2.6 简述 CISC 指令集结构功能设计的主要目标。从当前 的计算机技术观点来看, CISC指令集结构的计算机有什么缺点? 答: 主要目标 是增强 指令功能, 把越来越多的功能交由 硬件 来实现,并且指令的数量也是越来越多。 缺点: (1) CISC 结构的指令 集 中,各种指令的使用频率相差悬殊。( 2) CISC 结构指令的复杂性带来了计算机体系结构的复杂性,
21、这不仅增加了研制时间和成本,而且还容易造成设计错误。( 3) CISC 结构指令集的复杂性给 VLSI 设计增加了很大负担,不利于单片集成。( 4) CISC 结构的指令集中,许多复杂指令需要很复杂的操作,因而运行速度慢。 (5) 在CISC 结构的 指令集中,由于各条指令的功能不均衡性,不利于采用先进的计算机体系结构技术(如流水技术)来提高系统的性能。 2.7 简述 RISC 指令集结构 的 设计原则。 答 ( 1) 选取使用频率最高的指令,并补充一些最有用的指令;( 2)每条指令的功能应尽可能简单,并在一个机器周期内完成;( 3)所有指令长度均相同;( 4)只有 Load 和 Store操
22、作指令才访问存储器,其它指令操作均在寄存器之间进行; (5) 以简单有效的方式支持高级语言。 2.8 指令中表示 操作数类型 的方法有哪几种? 答:操作数类型有两种表示方法:( 1)操作数的类型由操作码的 编码指定,这是最常见的一种方法;( 2)数据可以附上由硬件解释的标记,由这些标记指定操作数的类型,从而选择适当的运算。 2.9 表示寻址方式的主要方法有哪些?简述这些方法的优缺点。 答: 表示寻址方式有两种常用的方法:( 1)将寻址方式编于操作码中,由操作码在描述指令的同时也描述了相应的寻址方式。这种方式译码快,但操作码和寻址方式的结合不仅增加了指令的条数,导致了指令的多样性,而且增加了 C
23、PU 对指令译码的难度。( 2)为每个操作数设置一个地址描述符,由该地址描述符表示相应操作数的寻址方式。这种方式译码较慢,但操作码和寻 址独立,易于指令扩展。 2.10 通常有哪几种指令格式,请简述其适用范围。 答: (1) 变长编码格式。如果系统结构设计者感兴趣的是程序的目标代码大小,而不是性能,就可以采用变长编码格式。( 2)固定长度编码格式。如果感兴趣的是性能,而不是程序的目标代码大小,则可以选择固定长度编码格式。 (3) 混合型编码格式。需要兼顾降低目标代码长度和降低译码复杂度时,可以采用混合型编码格式。 2.11 根据 CPU 性能公式简述 RISC 指令集结构计算机和 CISC 指
24、令集结构计算机的性能特点。 答: CPU 性能公式 : CPU 时间 IC CPI T 其中, IC 为目标程序被执行的指令条数, CPI 为指令平均执行周期数, T 是时钟周期的时间。 相同功能的 CISC 目标程序的指令条数 ICCISC 少于 RISC 的 ICRISC,但是 CISC 的 CPICISC和 TCISC都大于 RISC 的 CPIRISC和 TRISC,因此, CISC 目标程序的执行时间比 RISC 的更长。 第 3 章 流水线技术 3.1 解释下列术语 流水线 : 将一个重复的时序过程,分解成为若干个子过程,而每一个子过程都可有效地在其专用功能段上与其它子过程同时执行
25、。 单功能流水线 :指流水线的各段之间的连接固定不 变、 只能完成一种固定功能的流水线 。 多功能流水线 :指 各段可以进行不同的连接 ,以实现不同的功能的流水线。 静态流水线 :指 在同一时间 内 , 多功能 流水线 中 的各段只能按同一种功能的连接方式工作 的流水线 。当流水线要切换到另一种功能时,必须等前面的任务都流出流水线之后,才能改变连接。 动态流水线 :指 在同一时间内, 多功能 流水线 中 的各段 可以按照不同的方式连接,同时执行多种功能的流水线。它允许在 某些段正在实现某种运算时,另一些段却在实现另一种运算。 部件级流水线 : 把处理机 中 的部件 进行 分段 ,再把这些部件分
26、段相互连接而成。 它 使得 运算操作能够 按 流水 方式进行。 这种流水线也称为 运算操作流水线 。 处理机级流水线 : 又 称 指令流水线 。 它是把指令的 执行 过程按照流水方式 进行 处理 ,即把一条指令的执行过程分解为若干个子过程,每个子过程在独立的功能部件中执行。 处理机间流水线:又称为 宏流水线 。它 是 把多个 处理机串行 连接起来,对 同一数据流进行处理,每个处理机完成 整个任务中的一部分。前一个处理机的输出结果存入存储器中,作为后一个处理机的输入 。 线性流水线:指各段串行连接、没有反馈回路的流水线。数据通过流水线中的各段时,每一个段最多只流过一次。 非 线性流水线:指各段除
27、了有串行的连接外,还有反馈回路的流水线。 顺序流水线:流水线输出端任务流出的顺序与输入端任务流入的顺序完全相同。 乱序流水线:流水线输出端任务流出的顺序与输入端任务流入的顺序可以不同,允许后进入流水线的任务先完成。这种流水线又称为无序流水线、错序流水线、异步流水线。 吞吐率 : 在单位时间内流水线所完成的任务数 量 或输出结果的数量。 流水线的加速比:使用顺序处理方式处理一批任务所用的时间与按流水处理方式处理同一批任务所用的时间之比。 流水线 的 效率 : 即流水线 设备 的 利用率 ,它 是指流水线 中 的 设备实际使用时间与整个运行时间的比值 。 数据相关 : 考虑两条 指令 i 和 j,
28、 i 在 j 的前面 ,如果 下述条件之一成立, 则 称 指令 j 与指令i 数据相关 : ( 1) 指令 j 使用指令 i 产生的结果 ; ( 2) 指令 j 与指令 k 数据相关, 而 指令 k 又 与指令 i 数据相关。 名相关 : 如果两条指令使用 了 相同的名,但是它们之间并没有数据流 动 ,则称 这两条指令存在 名相关。 控制相关 : 是指由分支指令引起的相关。它需要根据分支指令 的 执行结果来确定后 面该执行哪个分支上的指令 。 反相关 :考虑两条 指令 i 和 j, i 在 j 的前面 , 如果 指令 j 所 写的名 与 指令 i 所 读的名 相同,则称 指令 i 和 j 发生
29、了 反相关 。 输出相关:考虑两条 指令 i 和 j, i 在 j 的前面 ,如果指令 j 和指令 i 所写的名相同,则称 指令 i 和 j 发生了 输出相关 。 换名技术 : 名相关的 两条 指令之间 并 没有数据 的传送,只是使用了相同的名。可以把其中 一条指令 所使用 的名 换成别的 , 以此来 消除名相关。 结 构冲突 :因 硬件资源满足不了指令重叠执行的要求 而 发生 的冲突。 数据冲突 :当指令在流水线中重叠执行时,因 需要用到前面指令的执行结果 而发生的冲突 。 控制冲突 : 流水线遇到分支指令 或 其 它 会改变 PC 值的指令 所引起的冲突 。 定向 :用 来解决 写后 读冲
30、突的 。 在发生写后读相关的情况下,在计算结果尚未出来之前,后面等待使用该结果的指令 并不 见得是马上就要用 该结果 。 如果能够将该计算结果从其产生的地方直接送到其 它 指令需要它的地方 , 那么就可以避免 停顿 。 写后读冲突 : 考虑两条指令 i 和 j,且 i 在 j 之前进入流水线, 指令 j 用到 指令 i 的计算结果 ,而且在 i 将结果写入寄存器之前就去读该寄存器,因 而 得到的是旧值 。 读后写冲突 : 考虑两条指令 i 和 j,且 i 在 j 之前进入流水线, 指令 j 的目的寄存器 和 指令 i的 源操作数寄存器相同,而且 j 在 i 读 取 该寄存器 之前就先对 它 进行 了 写操作,导致 i 读到的值是错误的。 写 后写冲突 : 考虑两条指令 i 和 j,且 i 在 j 之前进入流水线, ,指令 j 和 指令 i 的 结果单元(寄存器或存储器单元)相同 , 而且 j 在 i 写入之前就先 对该单元 进行 了 写 入 操作,从而导致写入顺序错误 。这时 在 结果单元 中留下的是 i 写入的值,而不是 j 写入的。 链接 技术 : 具有先写后读相关的两条指令,在 不出现功能部件冲突和 Vi 冲突 的情况下,可