(完整word版)《计算机组成原理》课后题答案清华大学出版秦磊华吴非·· 下载本文

内容发布更新时间 : 2024/11/14 15:08:35星期一 下面是文章的全部内容请认真阅读。

由于页大小为128KB,故页内偏移地址的位数为17位

所以虚拟地址的高14位表示的是虚页号,低17位表示的是页内偏移地址

TLB采用四路组相联方式,共有16个页表项,所以索引需要2位,故虚拟页号的高12位为TLB标记,低2位为TLB索引

(2)物理内存中包含的页数为:4MB/128KB=32,故物理页号占5位,页内偏移地址的位数为17位

所以物理地址中高5位表示物理页号,低17位表示页内偏移地址

(3)主存容量为4MB,访问该主存需要22根地址线,块大小为32B,故块内字节偏移地址为5位, Cache采用四路组相联,Cache共分成16KB/32B = 512个组,故索引字段需要9位,剩下的22-5-9 = 8位为标记。 则主存地址划分如下: 17 主存组号(标记) 组内块号(索引) 块内地址 8 9 5 4.19某磁盘存储器共有6个记录面,盘面内圈直径为1英寸,外圈直径为5英寸,道密度为50TPI,位密度为 2000BPI,转速为 3000r/min,平均找道时间为 10ms。试问: (l)该存储器的存储容量是多少? (2)平均存取时间是多少? (3)共有多少个圆柱面? (4)数据传输率是多少? (5)如果某文件的长度超过了一个磁道的容量,其超过部分应记录在同一记录面上,还是记录在同一回柱面上? 解:(l)该磁盘存储器6个记录面,最外两个记录面不记录内容,则该磁盘驱动器的总磁道数为:[(5-1)/2]*50TPI*4=400 由于位密度一般指磁盘内圈上的信息记录密度,故每个磁道的存储位数为: 3.14*2000BPI=6280位 则该磁盘存储器的存储容量为:400*6280/8=306KB (2)磁盘转半圈用时:60s*0.5/3000r/min=10ms 平均存取时间是:10ms+10ms=20ms (3)圆柱面的个数为:[(5-1)/2]*50TPI=100 (4)该磁盘的最大数据传输率:3000*6280/(60*8) =38KB/s (5)记录在同一柱面上,这样可以省掉一次寻道时间.

4.20 写入代码为011001,画出RZ,NRZ,PE和FM制记录方式的写电流波形。 解:

0 1 1 0 0 1 RZ NRZ PEFM

第五章 指令系统 习 题 五

5.1解释下列名词

指令 指令系统 操作码 地址码 寻址方式 程序计数器PC 有效地址 地址码扩展 CISC RISC 存储器堆栈 寄存器堆栈 基址寄存器 变址寄存器

解:(1)指令:控制计算机执行某种操作(如加、减、传送、转移等操作)的命令称为指令。 (2)指令系统:一台计算机中所有指令的集合称为该计算机的指令系统。

(3)操作码:指令中用于控制指令操作性质的字段称为操作码。不同功能的指令其操作码编码不同,如可用0001表示加法操作,0010表示减法操作。

(4)地址码:指令中用于定参与指令操作的操作数的地址或偏移量地址的字段。 (5)寻址方式:寻找指令或操作数有效地址的方法。

(6)程序计数器PC:程序计数器是用于存放下一条指令所在单元的地址的寄存器。 (7)有效地址:表示操作数所在主存单元的物理地址。

(8)地址码扩展:将指令的操作码字段向不用的地址码字段扩展,从而在指令长度不变的情况下支持更多的指令。

(9)CISC:CISC是复杂指令系统计算机(ComplexInstructionSetComputer)的简称,这类计算机指令系统复杂,寻址方式种类较多,指令执行效率低。

(10)RISC:RISC是精简指令集计算机(reduced instruction set computer,)的简称,这类计算机指令系统简单,寻址方式种类少,指令执行效率高。

(11)存储器堆栈:以先进后出的方式存储数据,在内存空间开辟堆栈区,该类堆栈容量大,速度慢,栈顶移动而堆栈中的数据不动。 (12)寄存器堆栈:以先进后出的方式存储数据,利用寄存器开辟的堆栈区,该类堆栈容量小,速度块,栈顶不动,出栈和入栈操作设计栈内所有数据的移动。 (13)基址寄存器:基址寻址方式下用于存放基地址的寄存器。 (14)变址寄存器:变址寻址方式下,用于存放变化的地址的寄存器。

5.2 简要回答下列问题

(1)什么叫指令?什么叫指令系统?

(2)计算机中为什么要设置多种操作数寻址方式? (3)操作数寻址方式在指令中如何表示?

(4)基址寻址和变址寻址的作用是什么?分析它们的异同点. (5)RISC处理器有何特点?

(6)比较定长指令与变长指令的优缺点。

(7)指令的地址码与指令中的地址码含义有何不同?

解:(1) 指令是指控制计算机执行某种操作(如加、减、传送、转移等操作)的命令,而一台计算机中所有指令的集合称为该计算机的指令系统。

(2) 这是为了在效率和方便性以及寻址空间大小保持平衡。 用于快速访问的寻址方式:立即数寻址、寄存器寻址等

扩大寻址范围的寻址方式:间接寻址、寄存器间接寻址、基址寻址等 便于程序设计灵活性的寻址方式:变址寻址、相对寻址、直接寻址等

既扩大寻址范围,又由利于指令执行速度提高的寻址方式:寄存器间接寻址 另外,多种复合寻址寻址方式使得寻址更加灵活。

(3)由于不同指令可能采用不同的寻址方式获得操作数,因此,一般情况下,指令的格式会进一步细分出寻址方式字段。下图所示的为包含寻址方式字段的单地址指令结构。

其中,OP为操作码,I为寻址方式特征码。D为形式地址,或称偏移量。寻址过程就是把I和D的不同组合变换成有效地址的过程。I与操作数寻址方式相关。

(4) 基址寻址面向系统,主要用于程序的重定位和扩展寻址空间。变址寻址是面向用户的,主要解决程序循环问题。 两者相同点:在形式上以及计算操作数的有效地址的方法上,变址寻址和基址寻址中是相似的,都是把个寄存器的内容加上指令字中的形式地址而形成操作数有有效地址。

不同点:两者有着不同的用途。首先,在采用了基址寻址的计算机系统中,基址是不变的,程序中的所有地址都是相对于基地址来变化的。而对于变址寻址来说则相反,指令中的地址字段的形式地址给出的是一个存储器地址基准,变址寄存器X中存放的是相对于该基准地址的偏移量。不同的变址寄存器给出的不同的单元。第二,在基址寻址中,偏移量位数较短,而在变址寻址中,偏移量位数足以表示整个存储空间。第三,基址寻址主要是解决程序逻辑空间与存储器物理空间的无关性,而变址寻址主要是为了可以编写出高效访问一片存储空间的程序。

(5) RISC具有如下特点:使用等长指令、寻址方式少且简单、只有取数和存数指令访问存储器、指令数量和指令格式少于、指令功能简单、CPU内部设置了大量的寄存器、控制器多采用硬布线方式、大多数指令可在一个时钟周期内完成、支持指令流水并强调指令流水的优化使用。

(6) 定长指令的优点:定长指令具有结构规整,有利于简化硬件,尤其是指令译码部件的设计。

定长指令的缺点:定长指令平均长度长、容易出现冗余码点和指令不易扩展等不足。 变长指令的优点:变字长指令结构灵活,能充分利用指令中的每一位,所以指令码点冗于少,指令的平均长度短,易于扩展。

变长指令的缺点:变长指令的格式不规整,不同指令的取指时间可能不同,导致控制复杂。 (7) 指令的地址码通常指定参与操作的操作数的地址。指令中的地址码字段的作用随指令类型和寻址方式的不同而不同,它可能作为一个操作数、也可能是操作数的地址(包括操作数所在的主存地址、寄存器编号或外部设备端口地址)、也可能是一个用于计算地址的偏移量。

5.3 根据操作数所在的位置,指出其寻址方式(填空) (1) 操作数在指令中为(A)寻址方式。

(2) 操作数地址(主存)在指令中为(B)寻址方式。 (3) 操作数在寄存器中为(C)寻址方式。 (4) 操作数地址在寄存器中为(D)寻址方式。

解:A:立即数寻址 B:直接寻址 C: 寄存器寻址 D: 寄存器间接寻址

5.4 某计算机字长16位,运算器16位,有16个通用寄存器,8种寻址方式,主存64KW,指令中操作数地址码由寻址方式字段和寄存器号字段组成。试问, (1) 单操作数指令最多有多少条? (2) 双操作数指令最多有多少条? (3) 变址寻址的范围多大?

解:由令中操作数地址码由寻址方式字段和寄存器号字段组成可知:16个通用寄存器,需要4位表示,8种寻址方式需3位表示。 (1)单操作数指令操作码位数16-4-3=9位

OP I D

所以:最多有29=512条。

(2)双操作数的操作码位数:16-2*(4+3)=2位 所以:最多有22=4条

(3)变址寻址,因为寄存器为16位,所以寻址范围为:64K

5.5 假设某计算机的指令长度固定为16位,具有双操作数,单操作数和无操作数三类指令,每个操作数地址规定用6位表示。

(1)现已设计出m条双操作数指令,n条无操作数指令,在此情况下,这台计算机最多可设计出多少条单操作数指令?

(2)当双操作数指令取最大数,且在此基础上,单操作数指令条数也取最大值,试计算这3类指令最多可拥有多少条指令?

解:根据题目提交,该指令格式包含两个操作数字段(各6位)和一个操作码字段(4位),单操作数指令通过将指令的OP字段向不用的一个地址码字段扩展,零操作数指令在单操作数指令的基础上继续向另一个不用的地址码字段扩展。在扩展的过程中要注意留出扩展标志。

(1)可通过扩展的方式将操作码向地址码扩展。 则计算机最多有24=16条指令双操作数指令 这里,双操作数指令为m条,此时,操作码字段还有(16-m )种扩展标志,用于表示操作码向一个地址字段扩展。

本题目中已知道无操作数指令为n条,首先要知道,无操作数指令是在一操作数指令的基础上,通过将操作码向最后一个地址字段扩展得到的,加上扩展的过程中用到了y个扩展标志,则n = y? 64 (每种扩展标志下,最后地址字段的6位全部标志无操作数指令),由此,可以得到y = n / 64 所以:单操作数的指有(16-m)*64- n / 64条。 (2)双操作数指令取最大数:24 -1=15条 单操作数指令取最大数:26 -1=63条 无操作数指令最大有:26=64条

5.6设相对寻址的转移指令占三个字节,第一个字节是操作码,第二个字节是相对位移量(补码表示)的低8位,第三个字节是相对位移量(补码表示)的高8位,每当CPU从存储器取一个字节时,便自动完成(PC)+1?PC: (1)若PC当前值为256(十进制),要求转移到290(十进制),则转移指令第二、三字节的机器代码是什么(十六进制)?

(2)若PC当前值为128(十进制),要求转移到110(十进制),则转移指令第二、三字节的机器代码又是什么(十六进制)?

解:根据相对寻址有效地址的计算公式 EA=(PC)+ D 可知 D = EA - (PC)

对于相对寻址而言,关键是要求出计算有效地址时PC的当前值。

(1) 根据题意,采用相对寻址指令的地址为256,PC在取指令完成后修改,则取指令完成后PC=256+3=259 (因为指令长度为3个字节) 所以:D = 290-259 =(31)10= 001FH

故:转移转移指令第二字节为:1FH,第三字节为:00H。

(2) 根据题意,采用相对寻址指令的地址为128,PC在取指令完成后修改,则取指令完成后PC=128+3=131