当前位置:   article > 正文

计算机组成原理期末考试卷解析+重要知识点分析+计算机组成原理谭志虎第4章知识点解析(厦门大学)_计算机组成原理谭志虎习题答案

计算机组成原理谭志虎习题答案

一、第四章知识点解析:

地址线:和CPU要访问的主存容量有关。

数据线:和计算机的字长有关。

片选信号:用于选择SRAM芯片,使其进入工作状态,同时禁用其他不需要工作的芯片,以节省系统资源。

MOS存储器:金属氧化物半导体存储器。分为:静态MOS存储器(SRAM),动态MOS存储器(DRAM)。

SRAM(静态MOS存储器):采用6管MOS存储单元,信息的保持需要通过不断地提供电流,电源不断,存储元的状态就不变,读取数据也不会破坏原有的状态。速度比DRAM更快,用于制成cache。

随机存储器RAM(Random Access Memory):可以按照地址随机读写数据存储单元,且存取访问时间与存储单元位置无关。断电后信息会丢失。

只读存储器ROM(Read Only Memory):存储器内的内容不允许修改,只能读其中内容。断电后信息不会丢失。

高速缓冲存储器(cache):是隐藏在寄存器和主存之间的一个高速小容量寄存器。一般采用静态RAM构成。

主存储器:简称主存,一般由半导体存储器构成,但主存不是单一的内存,还包括BIOS和硬件端口。

上图可以看到,高速缓存的速度仅次于寄存器,且是用SRAM制成,主存由DRAM制成,断电后数据会丢失。

字扩展:容量扩展或地址总线扩展,存储芯片的存储容量不能满足存储器对存储容量的要求时,采用字扩展。

课本p121 例4.1 :设计算机字长为64位,存储器容量为128MB,采用模数位8的存储器交叉方式进行组织,存储周期T=200ns,数据总线位宽为64位,总线传输周期t=25ns,若连续读8个字,分别计算顺序访问方式和交叉访问方式下存储器的带宽。

多体交叉存储器:由多个存储模块构成,这些模块的容量和存取速度相同(因为模块的结构是相同的)。

高位多体交叉:高位地址译码产生片选信号(如下图A20~0代表地址线,A20~18是高3位,传入3:8译码器产生片选信号CS,用于选择哪一块存储模块),低位地址直接选择一个存储模块内的不同存储单元(如图A17~0是低18位,因为每个存储模块都是256KB=2^18B,所以低位用于选择存储单元)。

高位多体交叉是顺序编址模式,这一点一定要牢记。相邻的地址在同一存储体内,不同存储体中的地址不相邻。

 

低位交叉方式:低位地址译码进行片选,高位地址选择存储模块内的不同存储单元(与上面的图恰好相反),这种编址方式被称为交叉编址模式。相邻的地址处在不同的存储器内,同一存储体中的地址不相邻。如下图所示:

直接相联映射:每一个主存块地址只能映射到cache中固定的行。

区比行大,一个区通常包含大量的行。内存中数据块的大小和cache中数据块的大小是相同的。

注意cache行的第二部分不是行索引,而是区地址。

每个缓存行只能映射到主存地址的唯一一个位置。主存地址如果index相同,但tag不同,那么会产生冲突,因为index代表了cache的行,tag代表了主存的区,如果cache行相同,而tag对应的区不同,不符合cache中每个缓存行只能映射到主存地址的唯一位置。

(假如数据的地址为444,每块64B,块号=地址/每块大小=444/64约等于6.多,所以在主存中的块号为6)

主存地址长度的计算:看主存的容量(如:4MB=2^22B,主存地址长22位)。

块内偏移地址长度的计算:cache每个块的容量(如:cache块长度8个字,每个字32位,那么cache长度为8x4B=32B=2^5B,所以偏移长度5位)。

区内行地址长度的计算:cache总容量/cache每个块的容量=cache内的行数(如:cache容量4MB,cache每个块32B,2^12/2^5=2^7,所以长度为7)。

cache命中率(h)计算:Nc是命中cache的次数,Nm是从主存中访问信息的次数:

h=\frac{Nc}{Nm}

cache/主存系统的平均访问时间(ta):h是cache的命中率,tc是cache存取数据的时间,tm是主存存取数据的时间。

ta=htc+(1-h)tm

存储系统的访问效率:tc表示命中cache时访问的时间,ta表示cache/主存系统的平均访问时间。

e=\frac{tc}{ta}=\frac{tc}{htc+(1-h)tm}

组相联映射:组相联映射将cache分成固定大小的组,每组有k行,称为k-路组相联。主存数据块首先采用直接相联映射的方式定位到cache中固定的组,然后采用全相联映射的方式映射到组内任何一个cache行,组相联映射规则如下:

二、期末考试卷解析:

本次考试整体难度较高:

简答题1:第5章指令系统——指令格式

简答题2:第2章数据信息的表示——校验

简答题3:第4章存储系统——DRAM存储器

简答题4:第4章存储系统——cache

简答题5:第9章输入输出系统——程序中断控制方式

综合题1:第3章运算方法与运算器——定点乘法运算、运算器

综合题2:第4章存储系统——cache

综合题3:第6章中央处理器——cpu

综合题4:第6章中央处理器——MIPS处理器

大家可以按照这个重点复习:第4章出现:3次,第6章出现:2次,第5章出现1次,第3章出现1次,第2章出现1次,第9章出现1次。

 题1:C。解答:指令中可以只给出待访问数据的地址,然后通过地址访问数据。

题2:B。解答:CPI是每条指令要花费的时钟周期数。假设指令总数为M,时钟周期数为T。CPI=\frac{T}{M}

现在指令数减少40%(相当于原本60%)CPI增加20%(相当于原本120%)。变成下面公式:T=0.6M\cdot 1.2CPI所以T相当于原本的0.72,是7秒2。

题3:D。解答:254 的二进制表示为:11111110。接下来将 uc 的值赋给一个有符号字符变量 c,变量c仍以11111110表示,只是此时代表的是补码表示-2。由于 c 是一个有符号字符变量,我们需要将其扩展为一个无符号短整型。这是通过符号扩展完成的,将符号位(最高位,这里是1)复制到扩展的位数。i 的二进制表示转换为十进制: 11111111 11111110

题4:

题5:A。TLB命中则页一定命中,但页命中cache不一定命中,因为页载入主存和数据库载入cache并不同步。

间址寻址:形式地址给出的是操作数的间接地址。所以形式地址指向的主存单元中的内容才是操作数的有效地址。比如形式地址D,那么(D)才是操作数的地址。

变址寻址:指定一个寄存器来存放变化的地址,所以形式地址字段D增加一个变址寄存器编号字段X,变址寄存器X与形式地址D之和为操作数的有效地址。X是寄存器的编号,(X)是寄存器的内容。(X)+D。

题6:C。先间接寻址,所以D是间接地址,(D)才是形式地址,然后变址寻址,所以操作数地址是(I)+(D)。

题7:C。因为寄存器中的内容只是一个偏移地址,要加上形式地址D才是操作数的地址。

题8:C。

解答:CISC处理器特点:采用微程序控制器。指令字长不固定。一般有8个以上的通用寄存器。支持多种寻址方式。对访存指令没有限制。Intel x86处理器采用的是CISC架构,特点类似。

题9:D。

解答:,RISC处理器特点:采用硬布线控制器。指令字长固定为32位。一般只有16个左右的通用寄存器。只支持简单的寻址方式,通常只有直接寻址和间接寻址两种。只支持简单的寻址方式,通常只有直接寻址和间接寻址两种。MIPS处理器采用RISC架构,特点类似。

题10:B。控制存储器也是按地址访问。在CPU内,存储微指令,是一种只读存储器。

题11:D。显然是突发传输。

题12:D。采用复用的方式,有可能产生冲突,反倒降低传输速率。

题13:C。同步时钟信号一般由发送端提供。

题14:C。B的执行中断隐指令的说法有误,中断隐指令是一个虚拟概念,本身并不存在。

题15:B。处于开中断,才能响应中断。

 

题目2:(1)作用是发现错误并纠正错误。(2)如果是奇校验,如果校验码中1的位数为偶数位那么出错。如果是偶校验,如果校验码中的1的位数为奇数那么出错。采用异或门。(3)n=n+k\leqslant2^{r}-1,可以引入总偶校验位的方式实现。

(补充一下:海明校验码:从H1到Hn共计n位,包含原始数据D1到Dk共计k位,(n,k)码,校验位从P1到Pn,包含r个偶校验组,n=k+r。r个校验组的r位检错信息构成一个检错码G1到Gr。满足关系n=k+r\leqslant2^{r}-1。G是校验组分组,G1(P1,D1....) G2(P2,D1...)G3(P3,D2....)...P1到Pn的求法是将校验组内的数据位进行求异或运算。)

(补充:G的计算是接收的数据的响应数据位和检错位的异或运算,如果结果为0表名数据大概率正确,如果Gi哪一位为1,说明里面的数据位有错误)

第3题解答:有6条行地址线可复用,只需6根地址线管脚。需要增加行选通信号RAS和列选通信号CAS。存储器按行刷新。在刷新间隔内完成刷新操作,刷新一次的时间是一个读写周期的时间。2ms内可进行:2000/0.25=10000次刷新。刷新64行=0.25us x 64行=16us。将2ms分成64个间断,每个间断大约31.25us,将最后的0.25us。

第4题解答:32位=4B,每块4个字,所以是4 x 4 =16B=2^4B,所以块内偏移w=4。用16KB=2^14B去除2^4B,可以得到区内的行地址是10位,1MB相当于2^20B,所以用20-4-10=6位就是区地址。ABCDE H转化为2进制后就是:1010 1011 1100 1101 1110按照地址细分表示就是:101010 1111001101 1110,在cache内块号:1111001101,块内地址:14。(解题方法就是将主存地址进行细分,表示为区号、区内行地址(cache容量除以每块的容量)和块内偏移,然后在cache中的位置就是用区内行地址和块内偏移进行表示)。4路组相联,块内偏移4位,主存地址20位不变,因为是4路组相联,所以每组有4行,每行的大小为16B,每组大小64B,16KB=2^14B/2^6B=2^8,所以组索引有8位,那么标记有8位。ABCDE H按照地址细分表示就是:10101011 11001101 1110。所以在cache中组号为:11001101,偏移量为14(解题方法就是将主存地址进行细分,表示为标记、组索引(用cache容量除以每行的容量再除以组数)和块内偏移,然后在cache中的位置就是用组索引和块内偏移进行表示)。

第5题解答:(1)处理顺序:C>A>D>B 解答:简易判断标准,1越多的越是优先处理。1是屏蔽中断请求信号,0是允许发送。首先进入A,转去执行C中断,C中断执行完转回执行A中断,A中断执行完,转去执行B中断,D是0所以允许中断,转去执行D中断,AC已执行完为0不影响,所以D中断执行完,转回执行B中断。所以顺序是CADB。(2)

 

三1、在这题中,C8就相当于符号位,C7就相当于最高数据位。比如有符号数相加:1.0101+1.0100所得的结果为10.1001,该数的最高位1就是C8,次高位0就是C7,因为这两位异或所得的结果为1,所以检测出溢出,大致就是这个意思。

对于无符号数:加入01000+01100=10100,因为最高位是符号位,所以正数相加变成负数产生了溢出,所以最高位的1就是C7。

三2、(1)16行 x 128B/行=2^11B=2KB

(2)B的访问命中率为0,A的访问命中率:96.87%(因为一个int占4B,一行128B大约可装32个int数据,第1个数据缺失,载入cache,所以缺失率1/32,命中率31/32)

 三3、(1)时钟周期数100x10^6。首先算出CPU要访问磁盘多少次:10MB=10 x 1024KB=10x1024x4x256B,所以10MB就是40960个256B。然后算出每次访问的中断时间:中断占用时间1380时钟周期。最后用所有中断时间的总和去除以时钟周期的总数:40960x1380/10^8=56564800/100000000=56.56%,所以约占56.56%。(2)40960次x400个时钟周期=16384000。16384000/100000000=16.384%。所以约占16.384%。(3)结论:DMA方式要比程序中断方式占用更少的时钟周期数(占用率低),有利于提高CPU的效率和利用率(降低CPU负担)。

 

——————————————样卷2————————————————

题1:C。指令中有可能是数据的地址。

题2:C。

题3:D。每秒执行浮点运算的次数。

题4:A。short是2字节16位,65535的二进制1111 1111 1111 1111,转化为有符号数同样是16个1,因为在C语言中负数以补码表示,转化为原码是1000 0000 0000 0001所以是-1。

题5:C。k=8,要满足n=k+r\leq 2^{r}-1,只能r=4。

题6:B。只有DRAM要周期性刷新。

题7:B。CDROM是光盘,一般顺序读写。

题8:A。读取速度更快,写的时候要将先前的数据删除。

题9:A。sum被多次使用,并且具有循环。

 

题10:D。

题11:B。

题12:D。

题13:D。

题14:A。

题15:D。

 

题16:A。

题17:B。

题18:D

题19:A。

题20:B。

 

题21:D。

题22:C。

题23:A。需要等待跳转目标地址确定后才能继续执行下一条指令,要等待当前指令的计算结果完成,可能会导致流水线的阻塞。

题24:

题25:C。数据缓存寄存器和命令/状态寄存器(包括:中断请求、错误码、控制位、状态、命令)。

 

题26:C。

题27:A。

题28:B。

题29:B。

题30:D。

 

 

三1、(1)优化前:0.4x1+0.2x2+0.15x2+0.25x2=1.6。优化后:假设原本各类指令的数量为:A:40,B:20,C:15,D:25,A类指令减少一半,A:20,所以A类占比:25%,B类占比:25%,C类占比:\frac{3}{16},D类占比:\frac{5}{16}。现在的CPI=0.25+0.5+0.375+0.625=1.75。

(2)优化前:MIPS=500/1.6=312.5。优化后:MIPS=500/1.75=285.71

结论:优化失败,CPI增加,MIPS减少,原因是不能降低CPI值小的指令,而应该将降低CPI值大的指令。

三2、

设主存容量为16MB(2^24B),按字节寻址,虚拟存储器存储容量为4GB(2^32B),采用页式虚拟存储器,页面大小为4KB(2^12B)完成下列各题:(1)计算物理页号,页内偏移,虚拟页号字段各多少位。解答:物理地址总共24位,页面偏移12位,所以物理页号12位。同理虚拟页号32-12=20位。(2)计算页表中页表项的数量:页表项与虚拟页号字段的位数相关,虚拟页号的字段为20位,所以页表项数量为2^20项。(3)

虚拟存储器容量:2GB=2^{31}B,31位。主存容量:4MB=2^{22}B,22位。页大小:128KB=2^{17},17位。TLB是4路组相联,所以每组里面有4个页表项,总计4组。cache容量:16KB=2^{14}B,14位。每块8个字,每字4B,所以是32B,因此2^{5}B,是5位。cache映射同样是四路组相联。

(1)因为虚拟地址一共是31位,页内地址是17位,所以虚拟页号是14位。TLB的索引是2^2,所以是2位。TLB标记是虚拟页号(VPN)-TLB索引,所以是12位。

(2)物理地址是22位,物理地址的偏移地址和虚拟地址一样所以是17位,所以物理页号5位。

(3)cache的偏移地址是5位,组索引是7位,所以物理地址剩下的10位为cache标记。

 

(1)4420H=010001 00 00100000直接寻址 有效地址:0020H

(2)2244H=001000 10 01000100变址寄存器X2寻址 有效地址:1166H

(3)1322H=000100 11 00100010相对寻址 有效地址:1256H

(4)3521H=001101 01 00100001变址寄存器X1寻址 有效地址:0058H

三6、第一步:要分析指令的功能:将rt寄存器内的操作数左移shamt位,然后存入rd寄存器中。

第二步:看要增加或修改哪些数据通路:可以发现数据通路内部并没有左移器,所以必须要增加一个左移器(将MEM读出的数据送入左移器的数据输入端,然后将shamt送入左移器的移动位数端,然后将输出端与总线连接,方便寄存器获取)

第三步:看增加或修改哪些控制信号:考虑操作码:我们首先要为该指令分配一个新的操作码,用于执行左移操作。考虑控制信号:我们需要增加一个左移信号Shift,当Shift信号为1是,从rt寄存器中取出操作数送入左移器执行左移操作,然后将数据传入rd寄存器。可能需要增加rd寄存器的选择信号。

第四步:写出该指令执行的流程和每一步的控制信号:按照5步走:取指,译码,执行,访存,写回。

取指:首先从PC寄存器中取出指令的地址(PCout),然后送入AR寄存器(ARin),然后从MEM存储器中取出相应的指令(Read),将指令存入DR(DREin),再然后将指令存入IR(DRout),最后将指令特定位送入操作控制器。

译码:操作控制器根据指令生成相应的控制信号,选中rt寄存器的选择信号RegDst,然后将输入放到总线上。

执行:左移信号Shift为1时,左移器对shamt和需要左移的数据进行操作,实现数据的左移,然后将结果放到总线上。

访存:没有操作。

写回:寄存器接收数据,选择rd寄存器合适的位置写入(RegDst和RegWrite)。

第1步:将x,y分别表示出来。首先将x=6.25表示成二进制:110.01B。注意将小数点左移了3位,在小数点左边添上符号位(正数为0),所以结果是0.11001x2^{11},此时注意了11就是该数的移码,因为移码为5位所以在前面补3个0,所以是00011,因为最高位是阶码的符号位,因为是左移所以是负数。尾数小数点前是符号位,为正因此是0,后面是尾码,在11001后面补4个0即可。另外要注意的是尾数部分是用补码表示,因此如果是负数的话要将尾数转化为补码形式,在本题中-12.25可以先表示成12.25=(1100.01)二进制,然后将小数点左移4位,0.110001x2^{100},所以移码是在100前添上2个0,因为是左移所以是负数,结果为1,00100,尾数是0.110001000,因为12.25前是负数,所以尾数小数点前要加上1,同时小数点后要变成补码形式,取反加1,结果为:1,001111000。第2步:对阶。第3步:尾数求和。第4步:规格化。注意:尾数1.101000000此时是补码的形式,(因为前面带有1是负数),规格化一定要参照原码的真实值来,转化为原码小数点后是1.011000000,所以必须要向左规格化1位,阶码-1,因此是1,00011 1.01000000

知识点1: 小数想转化为二进制数:乘2,然后取整数部分。

知识点2:对阶的原则是:小的阶码要向大的阶码对齐,忽略符号,纯粹看大小。阶码增大小数点要向前移动一位,尾数缩小1倍,相当于是算术右移,要带符号。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号