您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 其它相关文档 > 计算机原理与设计习题课
计算机原理与设计习题2简述RISC和CISC的主要差别。◆CISC(ComplexInstructionSetComputer)是对那些具有复杂指令系统的CPU的总称,CISC指令系统往往提供丰富的寻址方式,每条指令长短不一,常用的指令较短,不常用的指令较长,设计CPU时往往采用微程序的方法来实现这些指令,CISC的优点是代码紧凑,使用较少的存储器,缺点是实现复杂的指令需要较多的芯片面积而且不利于流水线操作。◆RISC(ReducedInstructionSetComputer)是对那些具有简单指令系统的CPU的总称,RISC指令系统的特点有两个,一是指令长度固定,这有利于流水线CPU的设计,二是所谓的Load/Store结构。3假设我们有两台计算机M1和M2。M1的主频是1GHz,M2的主频是2GHz。每台计算机的指令都有4类,它们的CPI分别为1、2、3和4。当同样一个用高级语言编写的程序在两台机器上分别编译执行时,我们得到下表所列的结果。计算机主频CPI执行指令数1234M11GHz50%35%10%5%20200000M22GHz10%10%30%50%22000000◆其中的百分比是执行时每类指令出现的频率。试分别计算该程序在两台机器上的执行时间。如果单从执行时间上考虑,哪一台机器的性能更好?4解题思路:解:。是实指周期的时间长度要的平均的时钟周期,是每条指令执行时所需是被执行的指令总数,)()er()(cleTimesPerCyTPCnInstructioCyclesPCPInsInstructioITPCCPIIT)(0352.01021%)504%303%102%101(22000000)(03434.01011%)54%103%352%501(202000009291sTsTMM5试计算上题中两台计算机的MIPS(MillionInstructionsPerSecond),即每秒能执行多少百万条指令。解题思路:解:6610110TPCCPITIMIPS万为单位的数值即可。将计算结果转换成以百可执行的指令条数,再关键是计算出单位时间625100352.0202000005881003434.0202000006261MMMIPSMIPS6如果使用1000000个CPU构建一个并行系统并想得到单CPU系统500000倍的性能,那么程序中允许出现的串行执行的代码的比例应该不超过多少才行?解题思路:解:算机的性能加速比。也适用于计算高性能计。)(也有上限,即使则整体性能的加速比是的时间百分比为执行程序时用到该部件,的倍,即所需时间是原来假设某部件优化了LawsAmdahlSnrnrrTnrTTTTPPSrnLawsAmdahlnn'r-11)1(1)1(,n1'000009999991)1(1)1(,500000,1000000'500000CPU1000000)1(,xrnrSxrSnLawsAmdahlxx,求解可得将它们代入公式,即对比倍,,性能提升个并行系统含,例为则并行执行的代码的比例为设串行执行的代码的比7试用多个32位二选一多路器mux2x32设计一个32位的八选一多路器mux8x32。解题思路:解:架构。,即需构建三级二选一数,代表目标器件的选择项数,代表备用器件的选择项,计算选择级数38loglog2YmnmYnyS2s10s11s00a0a1s01a2a3s02a4a5s03a6a78试分别用结构描述、数据流描述和功能描述三种风格写出带有使能端的3-8译码器的VerilogHDL代码。提示:功能描述风格的语句可用e=enan。结构描述decoder3egate.v数据流描述decoder3dataf.v功能描述decoder3func.v9用VerilogHDL设计一个异步清零再加上使能端e的32位D触发器(dffe32)。参考代码dffe32.v参考代码addsub32.v试设计一个32位的加减法器,增加一个输出信号v来指出结果是否上溢。10用补码计算下列各式中两个数的和。(1)x=0.11001y=-0.10111(2)x=0.10010y=0.11000解:00010.00][][][00010.00101001.1111001.0001001.11][11001.00][1补补补补补)(xxyxyx01010.01][][][01010.0111000.0010010.0011000.00][10010.00][2补补补补补上溢)(xxyxyx11用补码计算下列各式中两个数的差。(1)x=-0.01111y=0.00101(2)x=0.11011y=-0.10010解:01100.11][][][01100.11111011.1110001.1111011.11][10001.11][1补补补补补)(yxyxyx10110.10][][][10110.100010100.1111000.0010100.][1111000.][2补补补补补上溢)(yxyxyx12用补码Booth乘法计算x=0.1010,y=-0.0110的积x*y。解:1.11000100]*[11010011.110031.101001100.111001000.11][010110.11410.11000010.00000101.00][0100.10102011.1001011.1100110.11][0111.01101001010.1000.0000001.10100.000001.101][11.0110][00.1010][111111补补补补补补补所以结果为:最后一步不移位右移一位得加右移一位得加右移一位得加右移一位得说明乘数部分积yxyyPxyyPxyyPxyyPyyyyyxxnnnnnnnnnnnn13使用功能描述风格的VerilogHDL(casex)重新设计ALU并仿真。参考代码alufunc.v在ALU中添加一位标志位v(输出),判断带符号数计算时的溢出。参考代码alu_v.v14试实现sla(ShiftLeftArithmetic)指令(算术左移、保持正负不变)。参考代码sla.v用功能描述风格的VerilogHDL设计单周期CPU。参考代码sccpu.v15假定某变量x存放在寄存器R1中为11111111111111111111101111000000B,则变量x在屏幕上用16进制显示为。若x的类型为int,则x的值为;对R1进行算术左移4位后的值在屏幕上显示为;对R1算术右移4位后为;对R1逻辑右移4位后为。0xFFFFFBC0-10880xFFFFBC000xFFFFFFBC0x0FFFFFBC以下是用C语言写的一个传统的While语句:while(save[i]==k)i+=1;假设i和k对应于寄存器$s3和$s5,数组save的基址存放在$s6中,对应的MIPS汇编代码为:假定loop的开始位置在内存80000处,则上述循环的MIPS机器码为:根据上述给出的叙述,回答下列问题。(1)上述给出的MIPS机器码中有一处错误,你能找出来吗?(2)MIPS内存空间的编址单位是多少?(3)解释为什么指令“sll$t1,$s3,2”能实现4*i的功能?(4)该循环中哪些是R-型指令?哪些是I-型指令?(5)$t0和$s6的编号各为多少?(6)Exit的值是多少?要求说明其含义和计算过程。(7)指令“jloop”的操作码是什么(用二进位表示)?(8)MIPS中分支指令和跳转指令的跳转范围分别是什么?(9)数组save的每个元素占几个字节?17(1)上述给出的MIPS机器码中有一处错误,你能找出来吗?答:第一条指令中的倒数第二个字段的值应该是2,而不是4,表示左移的位数。(2)MIPS内存空间的编址单位是多少?答:字节。从上图可看出,每条指令32位,占4个地址,所以一个地址中有8位。(3)解释为什么指令“sll$t1,$s3,2”能实现4*i的功能。答:因为这是左移指令,左移2位,相当于乘22=4。(4)该循环中哪些是R-型指令?哪些是I-型指令?答:从上图可看出,第1-2条为R-型,第3-5条为I-型。(5)$t0和$s6的编号各为多少?答:从第3和4条指令,可看出$t0的编号为8,第2条指令看出$s6的编号为22。18(6)Exit的值是多少?要求说明其含义和计算过程。答:Exit的值是80024,其含义是循环结束时跳出循环后执行的首条指令的地址,由当前条件转移指令(分支指令)的地址80012,加上4得到下条指令的地址,然后再加上相对位移量2*4得到。80012+4+2*4=80024。(如果答Exit为2也算对,此时其含义就是转移到的目标指令相对于当前条件转移指令的指令条数,所以计算时,需要将指令条数转换为地址位移量,所以要乘以4。)(7)指令“j20000”的操作码是什么(用二进位表示)?答:其操作码为“000010”。19(8)MIPS中分支指令和跳转指令的跳转范围分别是什么?答:因为分支指令(条件转移指令)的相对位移量的范围为:-215到+(215-1),但这是相对于分支指令的下条指令而言的,所以,相对于当前分支指令而言,转移范围为:-(215-1)到+215条指令。即:往前跳,最多跳到第32767条指令(相当于32767x4=131068个单元),往后跳,最多跳到第32768条指令(相当于32768x4=131072个单元)。因为无条件跳转指令的目标地址范围为:0到226-1(相对于下条指令),所以,相对于本条指令而言,其转移范围为:1到226条指令。即:相对于当前跳指令而言,最近就跳到下条指令,最远跳到后面的第226条指令。(9)数组save的每个元素占几个字节?答:因为每次循环取数,其下标地址都要乘以4,所以是4个字节。20假设各主要功能单元的操作时间为:读存储器:10ns,写存储器:5nsALU和加法器:10ns寄存器堆(读/写):5ns而MUX、控制单元、PC、扩展器和传输线路没有延迟,若各类指令的执行次数占总数的比例为:20%取数、10%存数、50%ALU、15%分支、5%跳转,则下面实现方式中,哪个更快?快多少?①每条指令在一个固定长度的时钟周期内完成;②每条指令在一个时钟周期内完成,但时钟周期是可以根据指令类型动态变化的。21解:方式(1):时钟周期由最长指令来决定,应定load指令,为40ns;一条load指令的执行时间:取指令10ns,读寄存器堆5ns,ALU计算地址10ns,读存储器10ns,写寄存器堆5ns,总的时间是40ns。方式(2):时钟周期取各条指令所需时间,计算出平均时钟周期长度为:ns75.30%510%1525%1035%2040%50303.175.3040CPU2CPU1CPU2CPU1时钟周期)的方式(时钟周期)的方式(执行时间)的方式(执行时间)的方式(性能比CPU22试比较单周期CPU与多周期CPU各自的优缺点。单周期CPU用一个时钟周期执行一条指令,而确定时钟周期的时间长度时要考虑执行时间最长的指令,以此定出CPU的时钟频率,不管指令的复杂程度如何,单周期CPU都花费相同的时间去执行,这造成了时间上的浪费;多周期CPU的中心思想是把一条指令的执行分成若干个小周期,根据每条指令的复杂程度使用不同的小周期去执行,这可以更有效利用时间,有利于流水线设计,但控制部件较单周期CPU的更复杂一些。23我们在叙述单周期CPU与多周期CPU的设计方法时使用了相同的测试程序并给出了测试结果,从而我们知道了两种CPU在执行相同的测试程序时所用的时间。假设多周期CPU的一个时钟周期是4ns,而单周期CPU的一个时钟周期比多周期CPU的5倍略短一些,比如19ns。
本文标题:计算机原理与设计习题课
链接地址:https://www.777doc.com/doc-4582053 .html