1、 1 / 56第一章 计算机系统结构的基本概念 从处理数据的角度看,并行级别有位串字串,位并字串,位片串字并,全并行。位串字串和位并字串基本上构成了 SIMD。位片串字并的例子有:相联处理机 STARAN,MPP 。全并行的例子有:阵列处理机 ILLIAC IV。 从加工信息的角度看,并行级别有存储器操作并行,处理器操作步骤并行,处理器操作并行,指令、任务、作业并行。 存储器操作并行是指可以在一个存储周期内并行读出多个 CPU 字的,采用单体多字、多体单字或多体多字的交叉访问主存系统,进而采用按内容访问方式,位片串字并或全并行方式,在一个主存周期内实现对存储器中大量字的高速并行操作。例子有并行
2、存储器系统,以相联存储器为核心构成的相联处理机。 处理器操作步骤并行是指在并行性概念中引入时间因素,让多个处理过程在时间上错开,轮流重复地执行使用同一套设备的各个部分,加快硬件周转来赢得速度。例子有流水线处理机。 处理器操作并行是指一个指令部件同时控制多个处理单元,实现一条指令对多个数据的操作。擅长对向量、数组进行处理。例子有阵列处理机。 指令、任务、作业并行是指多个独立的处理机分别执行各自的指令、任务、作业。例子有多处理机,计算机网络,分布处理系统。 并行性的开发途径有时间重叠(Time Interleaving),资源重复(Resource Replication),资源共享(Resour
3、ce Sharing)。 时间重叠是指在并行性概念中引入时间因素,让多个处理过程在时间上错开,轮流重复地执行使用同一套设备的各个部分,加快硬件周转来赢得速度。例子有流水线处理机。 资源重复是指一个指令部件同时控制多个处理单元,实现一条指令对多个数据的操作。例子有阵列处理机,相联处理机。 资源共享是指用软件方法让多个用户按一定时间顺序轮流使用同一套资源以提高资源的利用率,从而提高系统性能。例子有多处理机,计算机网络,分布处理系统。 SISD:一个指令部件控制一个操作部件,实现一条指令对一个数据的操作。例子有传统的单处理机 SIMD:一个指令部件同时控制多个处理单元,实现一条指令对多个数据的操作。
4、例子有阵列处理机,相联处理机。 MIMD:多个独立的处理机分别执行各自的指令、任务、作业,实现指令、任务、作业并行的多机系统,是多个 SISD 的集合,也称多倍 SISD 系统(MSISD) 。例子有多处理机,计算机网络,分布处理系统。 exercises: 1.有一台经解释实现的计算机,可以按功能划分成 4 级,每一级为了执行一条指令,需要下一级的 N 条指令来解释。如果执行第 1 级的一条指令要 Kns 时间,那么执行第 2、第 3 和第 4 级的一条指令各需要用多少时间? 解答: 执行第 2、第 3 和第 4 级的一条指令各需要 KNns、KN2ns、KN3ns 的时间。1.有一个计算机
5、系统可按功能分成 4 级,每级的指令互不相同,每一级的指令都比其下一级的指令在效能上强 M 倍,即第 i 级的一条指令能完成第 i-1 级的 M 条指令的计算量。现若需第 i级的 N 条指令解释第 i+1 级的一条指令,而有一段第 1 级的程序需要运行 Ks,问在第 2、3 和4 级上一段等效程序各需要运行多长时间? 答: 第 2 级上等效程序需运行:(N/M)*Ks。第 3 级上等效程序需运行:(N/M)*(N/M)*Ks。第 4 级上等效程序需运行:(N/M)*(N/M)*(N/M)*Ks。 note: 由题意可知:第 i 级的一条指令能完成第 i-1 级的 M 条指令的计算量。而现在第i
6、 级有 N 条指令解释第 i+1 级的一条指令,那么,我们就可以用 N/M 来表示 N/M 表示第 i+12 / 56级需(N/M) 条指令来完成第 i 级的计算量。所以,当有一段第 1 级的程序需要运行 Ks 时,在第2 级就需要(N/M)Ks,以此类推 2.硬件和软件在什么意义上是等效的?在什么意义上又是不等效的?试举例说明。 答:软件和硬件在逻辑功能上是等效的,原理上,软件的功能可用硬件或固件完成,硬件的功能也可用软件模拟完成。但是实现的性能价格比,实现的难易程序不同。 在 DOS 操作系统时代,汉字系统是一个重要问题,早期的汉字系统的字库和处理程序都固化在汉卡(硬件)上,而随着 CPU
7、、硬盘、内存技术的不断发展,UCDOS 把汉字系统的所有组成部份做成一个软件。 3.试以实例说明计算机系统结构、计算机组成与计算机实现之间的相互关系与影响。 答:计算机系统结构、计算机组成、计算机实现互不相同,但又相互影响。 ( 1)计算机的系统结构相同,但可采用不同的组成。如 IBM370 系列有115、125、135、158、168 等由低档到高档的多种型号机器。从汇编语言、机器语言程序设计者看到的概念性结构相同,均是由中央处理机/主存,通道、设备控制器,外设 4 级构成。其中,中央处理机都有相同的机器指令和汇编指令系统,只是指令的分析、执行在低档机上采用顺序进行,在高档机上采用重叠、流水
8、或其它并行处理方式。 ( 2)相同的组成可有多种不同的实现。如主存器件可用双极型的,也可用 MOS 型的;可用 VLSI 单片,也可用多片小规模集成电路组搭。 ( 3)计算机的系统结构不同,会使采用的组成技术不同,反之组成也会影响结构。如为实现 A:=B+CD:=E*F,可采用面向寄存器的系统结构,也可采用面向主存的三地址寻址方式的系统结构。要提高运行速度,可让相加与相乘并行,为此这两种结构在组成上都要求设置独立的加法器和乘法器。但对面向寄存器的系统结构还要求寄存器能同时被访问,而对面向主存的三地址寻址方式的系统结构并无此要求,倒是要求能同时形成多个访存操作数地址和能同时访存。又如微程序控制是
9、组成影响结构的典型。通过改变控制存储器中的微程序,就可改变系统的机器指令,改变结构。如果没有组成技术的进步,结构的进展是不可能的。 综上所述,系统结构的设计必须结合应用考虑,为软件和算法的实现提供更多更好的支持,同时要考虑可能采用和准备采用的组成技术。应避免过多地或不合理地限制各种组成、实现技术的采用和发展,尽量做到既能方便地在低档机上用简单便宜的组成实现,又能在高档机上用复杂较贵的组成实现,这样,结构才有生命力;组成设计上面决定于结构,下面受限于实现技术。然而,它可与实现折衷权衡。例如,为达到速度要求,可用简单的组成但却是复杂的实现技术,也可用复杂的组成但却是一般速度的实现技术。前者要求高性
10、能的器件,后者可能造成组成设计复杂化和更多地采用专用芯片。 组成和实现的权衡取决于性能价格比等因素;结构、组成和实现所包含的具体内容随不同时期及不同的计算机系统会有差异。软件的硬化和硬件的软件都反映了这一事实。VLSI 的发展更使结构组成和实现融为一体,难以分开。 4.什么是透明性概念?对计算机系统结构,下列哪些是透明的?哪些是不透明的? 存储器的模 m 交叉存取;浮点数据表示;I/O 系统是采用通道方式还是外围处理机方式;数据总线宽度;字符行运算指令;阵列运算部件;通道是采用结合型还是独立型;PDP-11 系列的单总线结构;访问方式保护;程序性中断;串行、重叠还是流水控制方式;堆栈指令;存储
11、器最小编址单位;Cache 存储器。 答:透明指的是客观存在的事物或属性从某个角度看不到。 透明的有:存储器的模 m 交叉存取;数据总线宽度;阵列运算部件;通道是采用结合型还是独立型;PDP-11 系列的单总线结构串行、重叠还是流水控制方式;Cache 存储器。 3 / 56不透明的有:浮点数据表示;I/O 系统是采用通道方式还是外围处理机方式;字符行运算指令;访问方式保护;程序性中断;堆栈指令;存储器最小编址单位。 5.从机器(汇编)语言程序员看,以下哪些是透明的? 指令地址寄存器;指令缓冲器;时标发生器;条件寄存器;乘法器;主存地址寄存器;磁盘外设;先行进位链;移位器;通用寄存器;中断字寄
12、存器。 答:透明的有:指令缓冲器、时标发生器、乘法器、先进先出链、移位器、主存地址寄存器。 6.下列哪些对系统程序员是透明的?哪些对应用程序员是透明的? 系列机各档不同的数据通路宽度;虚拟存储器;Cache 存储器;程序状态字;“启动 I/O”指令;“执行”指令;指令缓冲寄存器。 答:对系统程序员透明的有:系列机各档不同的数据通路宽度;Cache 存储器;指令缓冲寄存器;对应用程序员透明的有:系列机各档不同的数据通路宽度;Cache 存储器;指令缓冲寄存器;虚拟存储器;程序状态字;“启动 I/O”指令。 note:系列机各档不同的数据通路宽度、Cache 存贮器、指令缓冲寄存器属于计算机组成,
13、对系统和程序员和应用程序员都是透明的。 虚拟存贮器、程序状态字、 “启动 I/O”指令,对系统程序员是不透明的,而对应用程序员却是透明的。 “执行”指令则对系统程序员和应用程序员都是不透明的。 7.想在系列机中发展一种新型号机器,你认为下列哪些设想是可以考虑的,哪些则不行的?为什么? 新增加字符数据类型和若干条字符处理指令,以支持事务处理程序的编译。 (2)为增强中断处理功能,将中断分级由原来的 4 级增加到 5 级,并重新调整中断响应的优先次序。 (3)在 CPU 和主存之间增设 Cache 存储器,以克服因主存访问速率过低而造成的系统性能瓶颈。 (4)为解决计算误差较大,将机器中浮点数的下
14、溢处理方法由原来的恒置“1” 法,改为用 ROM存取下溢处理结果的查表舍入法。 (5)为增加寻址灵活性和减少平均指令字长,将原等长操作码指令改为有 3 类不同码长的扩展操作码;将源操作数寻址方式由操作码指明改成如 VAX-11 那种设寻址方式位字段指明。 (6)将 CPU 与主存间的数据通路宽度由 16 位扩展成 32 位,以加快主机内部信息的传送。 (7)为减少公用总路线的使用冲突,将单总线改为双总线。 (8)把原 0 号通用寄存器改作堆栈指示器。 答:可以考虑的有:1,3,4,6,7。不可以考虑的有:2,5,8。 原则是看改进后能否保持软件的可移植性。 P.S.为了能使软件长期稳定,就要在
15、相当长的时期里保证系统结构基本不变,因此在确定系列结构时要非常慎重。其中最主要是确定好系列机的指令系统、数据表示及概念性结构。既要考虑满足应用的各种需要和发展,又要考虑能方便地采用从低速到高速的各种组成的实现技术,即使用复杂、昂贵的组成实现时,也还能充分发挥该实现方法所带来的好处。 8.并行处理计算机除分布处理、MPP 和机群系统外,有哪 4 种基本结构?列举它们各自要解决的主要问题。 答:除了分布处理,MPP 和机群系统外,并行处理计算机按其基本结构特征可分为流水线计算机,阵列处理机,多处理机和数据流计算机四种不同的结构。 流水线计算机主要通过时间重叠,让多个部件在时间上交划重叠地并行招待运
16、算和处理,4 / 56以实现时间上的并行。它主要应解决:拥塞控制,冲突防止,流水线调度等问题。 阵列处理机主要通过资源重复实现空间上的并行。它主要应解决:处理单元灵活、规律的互连模式和互连网络设计,数据在存储器中的分布算法等问题。 多处理机主要通过资源共享,让一组计算机在统一的操作系统全盘控制下,实现软件和硬件各级上的相互作用,达到时间和空间上的异 步并行。它主要应解决:处理机间互连等硬件结构,进程间的同上步和通讯,多处理机调度等问题。 数据流计算机设有共享变量的概念,指令执行顺序只受指令中数据的相关性制约。数据是以表示某一操作数或参数已准备就绪的数据令牌直接在指令之间传递。它主要应解决:研究
17、合适的硬件组织和结构,高效执行的数据流语言等问题。 9.计算机系统的 3T 性能目标是什么? 答:计算机系统的 3T 性能目标是 1TFLOPS 计算能力,1TBYTE 主存容量 和 1TBYTES 的 I/O带宽第二章 数据表示与指令系统 1.尾数的 rm 进制数位 m和尾数的二进制数位 m 的关系 存在 m=m/log2(rm)这种关系是因为,在机器中,一个 rm 进制的数位是用 log2(rm)个机器数位来表示的。 假设 rm=8,尾数为 20,则 m=2,八进制数 20 转换成二进制数为 10000,其二进制数位,即机器数位 m=5。2=5/log2(8) 。 note:这里的等号并不
18、表示纯粹数学意义上的“等于” 。 2.可表示的尾数个数公式 rmm(rm-1)/rm。 对于 rm 进制的数来说,每个数位均可以有 0 到 rm-1,即 rm 个码。 m个 rm 进制数位共有 rmm种编码。但课本中讨论的是规格化数,即尾数的小数点后第一个数位不为零的数,所以,应该去掉小数点后第一个数位是 0 的那些非规格化的数。显然,非规格化数的个数占了全部尾数编码总数的 1/rm 的比例,所以可表示的浮点数规格化的尾数个数应该是:rmm(1-1/rm)。 exercises: 1.某模型时机共有 7 种指令,各指令使用频率分别为0.35, 0.25, 0.20,0.10,0.05 ,0.0
19、3,0.02,有 8 个通用数据寄存器和 2 个变址寄存器。(1) 要求操作码的平均长最短,请设计操作码的编码,并计算所设计操作码的平均长。 (4 分)(2) 设计 8 位长度的寄存器寄存器型指令 3 种,16 位长度的寄存器存储器变址寻址方式指令 4 条,变址范围不小于正、负 127。请写出指令格式,并给出各字段的长度和操作码编码。(6 分) 解答: (1)全 Huffman 编码的平均码长是可用的二进制位编码中平均码长最短的编码。 全 Huffman 编码的平均码长=2*(0.35+0.25+0.20)+3*0.10+4*0.05+5*(0.02+0.03)=2.35 (2) 由于有 8
20、个通用数据寄存器和 2 个变址寄存器,所以通用寄存器用 3 位表示,变址寄存器用 1 位表示 ,8 位的寄存器-寄存器型指令,3 个操作码编码为 00、01 、10,16 位的寄存器-存储器变址寻址方式指令, 4 个操作码编码为 1100、1101、1110 、1111,2 位 3 位 3 位OP R1 R2操作码 寄存器 1 寄存器 25 / 564 位 3 位 1 位 8 位OP R1 X d操作码 寄存器 1 变址寄存器 相对位移 主存逻辑地址1.数据结构和机器的数据表示之间是什么关系?确定和引入数据表示的基本原则是什么? 答:数据表示是能由硬件直接识别和引用的数据类型。数据结构反映各种
21、数据元素或信息单元之间的结构关系。 数据结构要通过软件映象变换成机器所具有的各种数据表示实现,所以数据表示是数据结构的组成元素。不同的数据表示可为数据结构的实现提供不同的支持,表现在实现效率和方便性不同。数据表示和数据结构是软件、硬件的交界面。 除基本数据表示不可少外,高级数据表示的引入遵循以下原则: ( 1)看系统的效率有否提高,是否养活了实现时间和存储空间。 ( 2)看引入这种数据表示后,其通用性和利用率是否高。 2.标志符数据表示与描述符数据表示有何区别?描述符数据表示与向量数据表示对向量数据结构所提供的支持有什么不同? 答:标志符数据表示与描述符数据表示的差别是标志符与每个数据相连,合
22、存于同一存储单元,描述单个数据的类型特性;描述符是与数据分开存放,用于描述向量、数组等成块数据的特征。 描述符数据表示为向量、数组的的实现提供了支持,有利于简化高级语言程序编译中的代码生成,可以比变址法更快地形成数据元素的地址。但描述符数据表示并不支持向量、数组数据结构的高效实现。而在有向量、数组数据表示的向量处理机上,硬件上设置有丰富的赂量或阵列运算指令,配有流水或阵列方式处理的高速运算器,不仅能快速形成向量、数组的元素地址,更重要的是便于实现把向量各元素成块预取到中央处理机,用一条向量、数组指令流水或同时对整个向量、数组高速处理如让硬件越界判断与元素运算并行。这些比起用与向量、阵列无关的机
23、器语言和数据表示串行实现要高效的多。 3.堆栈型机器与通用寄存器型机器的主要区别是什么?堆栈型机器系统结构为程序调用的哪些操作提供了支持? 答:通用寄存器型机器对堆栈数据结构实现的支持是较差的。表现在:(1)堆栈操作的指令少,功能单一;(2)堆栈在存储器内,访问堆栈速度低;(3)堆栈通常只用于保存于程序调用时的返回地址,少量用堆栈实现程序间的参数传递。 而堆栈型机器则不同,表现在:(1)有高速寄存器组成的硬件堆栈,并与主存中堆栈区在逻辑上组成整体,使堆栈的访问速度是寄存器的,容量是主存的;(2)丰富的堆栈指令可对堆栈中的数据进行各种运算和处理;(3)有力地支持高级语言的编译;(4) 有力地支持
24、子程序的嵌套和递归调用。 堆栈型机器系统结构有力地支持子程序的嵌套和递归调用。在程序调用时将返回地址、条件码、关键寄存器的内容等全部压入堆栈,待子程序返回时,再从堆栈中弹出。 4.设某机阶值 6 位、尾数 48 位,阶符和数符不在其内,当尾数分别以 2、8、16 为基时,在非负阶、正尾数、规格化数情况下,求出其最小阶、最大阶、阶的个数、最小尾数值、最大尾数值、可表示的最小值和最大值及可表示的规格化数的总个数。 解: 依题意知: p=6 m=48 rm=2, 8, 16,m=m/log2(rm),列下表: p=6,m=48,rm=2(m=48)p=6,m=48,rm=8(m=16)p=6,m=4
25、8,rm=16(m=12)最小阶(非负阶,最小为 0) 0 0 06 / 56最大阶(2p-1) 26-1 26-1 26-1最小尾数值(rm(-1) 1/2 1/8 1/16最大尾数值(1-rm(-m) 1-2(-48)1-8(-16),即(1-2(-48)1-16(-12),即(1-2(-48)可表示的最小值 1/2 1/8 1/16可表示的最大值 263*(1-2(-48) 863*(1-8(-16) 1663*(1-16(-12)阶的个数(2p) 26 26 26可表示的尾数的个数 248*(2-1)/2 816*(8-1)/8 1612*(16-1)/16可表示的规格化数的个数 26
26、*248*(2-1)/2 26*816*(8-1)/8 26*1612*(16-1)/16note: 可表示的最小值=rm(最小阶)* 最小尾数值=rm0*rm(-1)=rm(-1); 可表示的最大值 =rm(最大阶)*最大尾数值=rm(2p-1)*(1-rm(-m); 可表示的尾数的个数=rmm*(rm-1)/rm; 可表示的规格化数的个数= 阶的个数*尾数的个数=2p*rmm*(rm-1)/rm。 5.( 1)浮点数系统使用的阶基 rp=2,阶值位数 p=2,尾数基值 rm=10,以 rm 为基的尾数位数m=1,按照使用的倍数来说,等价于 m=4, 试计算在非负阶、正尾数、规格化情况下的最
27、小尾数值、最大尾数值、最大阶值、可表示的最小值和最大值及可表示数的个数。 (2)对于 rp=2,p=2,rm=4,m=2,重复以上计算。 解: 依题意列下表: p=2,rm=10,m=1 p=2,rm=4,m=2最小尾数值 10-1=0.1 4-1=0.25最大尾数值 1-10-1=0.9 1-4-2=15/16最大阶值 2p-1=3 3可表示的最小值 0.1 0.25可表示的最大值 103*0.9=900 43*15/16=60可表示数的个数 36 48题中 “按照使用的倍数来说,等价于 m=4,” 这个 m=4,因为 231024,等价为实际要4 个二进制位,表示 RM=10 为基的一位
28、6.由 4 位数(其中最低位为下溢附加位)经 ROM 查表舍入法,下溢处理成 3 位结果,设计使下溢处理平均误差接近于零的 ROM 表,列出 ROM 编码表地址与内容的对应关系。 解: ROM 编码表地址与内容的对应关系 地址 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111内 000 001 001 010 010 011 011 100 100 101 101 110 110 111 111 1117 / 56容7.变址寻址和基址寻址各适用于何种场合?设计一种只用 6 位地址码就可
29、指向一个大地址空间中任意 64 个地址之一的寻址机构。 答:基址寻址是对逻辑地址空间到物理地址空间变换的支持,以利于实现程序的动态再定位。变址寻址是对数组等数据块运算的支持,以利于循环。将大地址空间 64 个地址分块,用基址寄存器指出程序所在块号,用指令中 6 位地址码表示该块内 64 个地址之一,这样基址和变址相结合可访问大地址任意 64 个地址之一。比如地址空间很大,为 0-1023,只用 6 位地址码就可以指向这 1024 个地址中的任意 64 个。 剖析:比如地址空间很大,1024,就是分成 16 个块,块号放在寄存器中,块内地址放在地址位中,寄存器内容和地址位结合,就能达到要求了。
30、8.经统计,某机器 14 条指令的使用频度分别为:0.01,0.15,0.12,0.03,0.02,0.04,0.02,0.04,0.01,0.13,0.15,0.14,0.11,0.03。分别求出用等长码、Huffman 码、只有两种码长的扩展操作码 3 种编码方式的操作码平均码长。 解:等长操作码的平均码长=4 位;Huffman 编码的平均码长=3.38 位;只有两种码长的扩展操作码的平均码长=3.4 位。 9.若某机要求:三地址指令 4 条,单地址指令 255 条,零地址指令 16 条。设指令字长为 12位每个地址码长为 3 位。问能否以扩展操作码为其编码?如果其中单地址指令为 254
31、 条呢?说明其理由。 答: 不能用扩展码为其编码。 指令字长 12 位,每个地址码占 3 位; 三地址指令最多是 2(12-3-3-3)=8 条, 现三地址指令需 4 条, 可有 4 条编码作为扩展码, 单地址指令最多为 42323=28=256 条, 现要求单地址指令 255 条,可有一条编码作扩展码 零地址指令最多为 1238 条 不满足题目要求 不可能以扩展码为其编码。 若单地址指令 254 条,可以用扩展码为其编码。 依据 中推导,单地址指令中可用 2 条编码作为扩展码 零地址指令为 22316 条,满足题目要求 note: 三地址指令格式: 操作码 地址码 地址码 地址码3 位 3
32、位 3 位 3 位单地址指令格式: 操作码 地址码9 位 3 位所以前面 9 位由于三地址指令用了最前面 3 位,还有中间 6 位可作为编码(也就是总共可以有 9 位作为单地址指令的指令操作码的编码)。减去 3 地址指令的 4 条,有 4*26=256 条,但由于韪目要求要有 255 条,所以剩下一个编码,已经用了 9 位的全部编码,最后零地址指令(全部 12 位都可作为操作码的编码)还有 1*23=8 (这是 12 位编码中最后三位的)若只要求254 种,则可以有(256-254)*23=16 条 8 / 5610.某机指令字长 16 位。设有单地址指令和双地址指令两类。若每个地址字段为 6
33、 位.且双地址指令有 X 条。问单地址指令最多可以有多少条? 答: 单地址指令最多为(16-X)26 P.S.双地址指令最多是 2(16-6-6)=24=16 条, 现双地址指令有 X 条, 可有(16-X) 条编码作为扩展码, 单地址指令最多为 (16-X)26=256 条 11.何谓指令格式的优化?简要列举包括操作码和地址码两部分的指令格式优化可采用的各种途径和思路。 答: 指令格式的优化指如何用最短位数表示指令的操作信息和地址信息,使程序中指令的平均字长最短。 操作码的优化 采用 Huffman 编码和扩展操作码编码。 对地址码的优化: 采用多种寻址方式; 采用 0、 1、2、3 等多种
34、地址制 ; 在同种地址制内再采用多种地址形式,如寄存器- 寄存器型、寄存器-主存型、主存-主存型等; 在维持指令字在存储器内按整数边界存储的前提下,使用多种不同的指令字长度。 12.某模型机 9 条指令使用频率为: ADD(加) 30% SUB(减) 24% JOM(按负转移) 6%STO(存) 7% JMP(转移) 7% SHR(右移) 2%CIL(循环) 3% CLA(清加) 20% STP(停机) 1%要求有两种指令字长,都按双操作数指令格式编排,采用扩展操作码,并限制只能有两种操作码码长。设该机有若干通用寄存器,主存为 16 位宽,按字节编址,采用按整数边界存储。任何指令都在一个主存周
35、期中取得,短指令为寄存器-寄存器型,长指令为寄存器-主存型,主存地址应能变址寻址。 (1)仅根据使用频率,不考虑其它要求,设计出全 Huffman 操作码,计算其平均码长; (2)考虑题目全部要求,设计优化实用的操作形式,并计算其操作码的平均码长; (3)该机允许使用多少可编址的通用寄存器? (4)画出该机两种指令字格式,标出各字段之位数; (5)指出访存操作数地址寻址的最大相对位移量为多少个字节? 解: 第(1)和 (2)中 Huffman 和扩展操作码的编码及平均码长如下表: 指令 Ii 使用频度 Pi Huffman 编码 扩展操作码编码I1I2I3I4I5I6I7I8I930%24%2
36、0%7%7%6%3%2%1%10000111001101111011110111110111111000110110001100111010110111110011101西个马 pili 2.61 2.789 / 56(3)8 个。 (4)两种指令格式如下图所示: 2 位 3 位 3 位OP R1 R2操作码 寄存器 1 寄存器 25 位 3 位 3 位 5 位OP R1 X d操作码 寄存器 1 变址寄存器 相对位移主存逻辑地址(5)访存操作数地址寻址的最大相对位移量为 32 个字节。 13.设计 RISC 机器的一般原则及可采用的基本技术有那些? 答: 一般原则: (1)确定指令系统时,只
37、选择使用频度很高的指令及少量有效支持操作系统,高级语言及其它功能的指令; (2)减少寻址方式种类,一般不超过两种; (3)让所有指令在一个机器周期内完成; (4)扩大通用寄存器个数,一般不少于 32 个,尽量减少访存次数; (5)大多数指令用硬联实现,少数用微程序实现; (6)优化编译程序,简单有效地支持高级语言实现。 基本技术: (1)按 RISC 一般原则设计,即确定指令系统时,选最常用基本指令,附以少数对操作系统等支持最有用的指令,使指令精简。编码规整,寻址方式种类减少到 1、2 种。 (2)逻辑实现用硬联和微程序相结合。即大多数简单指令用硬联方式实现,功能复杂的指令用微程序实现。 (3
38、)用重叠寄存器窗口。即:为了减少访存,减化寻址方式和指令格式,简单有效地支持高级语言中的过程调用,在 RISC 机器中设有大量寄存嚣,井让各过程的寄存器窗口部分重叠。 (4)用流水和延迟转移实现指令,即可让本条指令执行与下条指令预取在时间上重叠。另外,将转移指令与其前面的一条指令对换位置,让成功转移总是在紧跟的指令执行之后发生,使预取指令不作废,节省一个机器周期。 (5)优化设计编译系统。即尽力优化寄存器分配,减少访存次数。不仅要利用常规手段优化编译,还可调整指令执行顺序,以尽量减少机器周期等。 14.简要比较 CISC 机器和 RISC 机器各自的结构特点,它们分别存在哪些不足和问题?为什么
39、说今后的发展应是 CISC 和 RISC 的结合? 答: CISC 结构特点:机器指令系统庞大复杂。 RISC 结构特点:机器指令系统简单,规模小,复杂度低。 CISC 的问题: (1)指令系统庞大,一般 200 条以上; (2)指令操作繁杂,执行速度很低; (3)难以优化生成高效机器语言程序,编译也太长,太复杂; (4)由于指令系统庞大,指令的使用频度不高,降低系统性能价格比,增加设计人员负担。 RISC 的问题; (1)由于指令少,在原 CISC 上一条指令完成的功能现在需多条 RISC 指令才能完成,加重10 / 56汇编语言程序设计负担,增加了机器语言程序长度,加大指令信息流量。 (2
40、)对浮点运算和虚拟存储支持不很强。 (3)RISC 编译程序比 CISC 难写。 由于 RISC 和 CISC 各有优缺点,在设计时,应向着两者结合,取长补短方向发展。第三章 总线、中断与输入输出系统 中断嵌套的原则:在处理某级中断请求时,只能比它的中断处理级别高的中断请求才能中断其处理,等呼应和处理完后再继续处理原先的那个中断请求。 为了领会中断响应排队器对中断响应优先次序是用硬件固定的,以及通过由操作系统给各中断级服务程序现行程序状态字中的中断级屏蔽位设置不同的状态,可以改变中断处理(完)的次序这两个要点,下图给出了一个中断响应硬件部分的简单逻辑原理示意图。图中略去了某些实现上的具体细节,
41、因为这些已不是本课程要讨论的内容。 中断级屏蔽位是程序状态字中的一个组成部分。程序状态字是将散布于系统各部分,反映程序工作时某些关键性硬件的状态,组合在一起所构成的字,有的计算机也称其为处理器状态字或程序换道区。每类程序均在主存中指定一个区域来放置其程序状态字。运行一个程序或进程时,就会将其程序状态字从主存指定单元或区域取出送到分散于系统各部分的寄存器或计数器中,建立起运行此程序或进程的环境。一个程序或进程在退出运行时,也会将反映该程序状态的这些寄存器或计数器内容组拼成程序状态字,存回该程序或进程在主存中的指定单元或区域里。因此,程序或进程的切换,只需要通过硬件启动的交换新旧程序状态字的内容即
42、可快速完成。例如,在IBM370 系列机上,程序状态字为 64 位,等于它的长字,交换程序状态字只需硬件启动写长字和读长字两次访存即可完成。尽管中断请求是随机发出的,为了便于精确保存中断的断点以及在中断处理完后又能返回到原中断处,中断响应排队器总是在每条指令执行到最后一个机器周期的最后一个时钟周期时,对目前到达中断响应排队器入口的所有中断请求排一次队,择优进行响应。在中断响应排队器相应的输出端产生出响应信号。此信号经中断级服务程序入口地址形成硬件,生成出该级中断服务程序的程序状态字在内存区中所存放的地址。同时,经中断响应控制信号启动,进行新旧程序状态字的交换,完成程序的切换。被中断的程序的断点
43、地址(即程序计数器的内容),由硬件自动压入返回地址堆栈,予以保存。系统切换到新的程序或进程后,继续运行下去。如果新的程序或进程是一个中断服务程序,在运行结束,执行到中断返回指令时,就会从堆栈中弹出所保存的返回地址,再次交换程序状态字,系统又重新返回到原被中断的程序,恢复运行。 1.如何设置中断级屏蔽位寄存器中的中断屏蔽码? 设中断级屏蔽位“1”对应于开放,“0”对应于屏蔽。 第 i 级中断处理程序级别的各级中断级屏蔽位中应有 i-1 位设为“1” 。举例来说,第 1 级中断处理程序级别的各级中断级屏蔽位均应设为“0”。 响应级别为 n 的中断处理程序的 n 级中断级屏蔽位应设为“0” 。 设第 i2 级中断处理程序级别的中断处理级别高于第 i1 级中断处理程序级别,根据中断嵌套的原则,第 i1 级中断处理程序级别的第 i2 级中断级屏蔽位应设为 “1”,从而实现对第 i2 级中断处理程序级别的开放。 2.对 3.3.1 中中断级屏蔽位举例 1 的解释 *1,2 , 3,4 中断同时出现,进行排队器; *按中断响应优先级,1 最高,响应; *1 的屏蔽字为 0000,所以 1 中断执行到结束,回用户程序;