1、吉林大学15级计算机组成原理复习题二吉林大学2015级计算机组成原理复习题二二班计组题 选择题 1.某程序在处理器上运行时长为20秒,经过优化之后,使其编译产生的指令数量是以前的50%,同时使CPI增加为原来的倍,请问此程序在之后的编译程序中运行速度是多少 ( B ) /50% 50% 50%/ 2.如果计算机A运行一个程序只需要5秒 B需要10秒,求A比B快多少 倍 倍 倍 D.无法计算 3.计算机操作的最小单位是 A.时钟周期 B.指令周期 周期D.微指令周期 4.下面哪个不是寻址方式 A 寄存器寻址 B 立即数寻址 C 基址寻址 D 机械寻址 5.下面这个32位二进制补码数对应的十进制数
2、是多少 1111 1111 1111 1111 1111 1111 1101 0010 A.-46 B.-210 C.-456.将oxab20转成十进制7.下列哪条指令在发生溢出时不会产生异常 A.加法 B.无符号加法 C.减法 D.立即数加法 8.假设只能存储4个十进制有效数字和2个十进制指数,用科学计数法表示的两个数相加为?10?10为: ?10 ?10 ?10 9.单精度浮点数的取值范围是10.指令寄存器的作用是 A.保存当前指令的地址 B.保存当前正在执行的指令C.保存下一条指令 D.保存上一条指令 11.直接、间接、立即三种寻址方式指令的执行速度,快至慢的排序 A.直接、立即、间接B
3、.直接、间接、立即C.立即、直接、间接D.立即、间接、直接 12.对于一个简单的数据通路,在执行R型指令时,每条指令寄存器堆的操作是 A.读入两个数据字,每个数据字寄存器堆输入一个要读的寄存器号,输出一个结果 B.读入两个个数据字,写入一个数据字;读时每个数据字寄存器堆输入一个要读的寄存器号,输出一个结果,写时输入一个要读的寄存器号和一个数据。 C.读入两个个数据字,写入一个数据字;读时每个数据字寄存器堆输入一个要读的寄存器号和一个数据,输出一个结果,写时输入一个要读的寄存器号和一个数据 D.读入两个个数据字,写入一个数据字;读时每个数据字寄存器堆输入一个数据,输出一个结果,写时输入一个要读的
4、寄存器号 【考点:R型指令在数据通路建立时和寄存器堆的关系】 13.一个cache之中有32个块,每块的大小为32字节,那么字节地址83232将会被映射到cache的哪一块 解析:字节地址为83232,则其对应的块地址为83232/32=2601 对应块号即为(2601 mod 32 )=9 14.假设一个直接映射的cache。有16kiB的数据,块的大小是4个字,地址32位,那么22,2 _,2_ ,2 解析:页表项数=2 /2 = 2_,页表容量=2_*4/1=2_ 16.多个处理器上运行一个作业使用术语 A.任务级并行 B.数据级并行 C.并行处理程序 D.进程级并行 简答题 时间可以用
5、什么方法计算? 答:cpu时钟周期数时钟周期时间 指令数cpi时钟周期时间 18.寄存器的功能是什么? 答:寄存器在运算时用于保存运算数据和中间运算结果,以提高运算数度。此外,寄存器还可以存放指令、指令地址、程序运行状态等。寄存器还可以作为数据缓存。 19.两个规格化浮点数求和、差,最后对结果规格化时能否确定右规的次数?能否确定需要左规的次数? 答:两个n位数相加、减,其和、差最多为n+1位,因此可能需要右规,但右规最多一次。于异号数相加或同号数相减,其和、差的最少位无法确定,因此左规次数也无法确定,但次数最多不会超过尾数的字长,即n次 20.当遇到什么情况时,流水线会受阻,举例说明 流水线受
6、阻一般有三种情况 (1)在指令重叠执行过程中,硬件资源满足不了指令重叠执行的要求,发生资源冲突。如在同一时间,几条重叠执行的指令分别要取指令、取操作数和存结果,都需要访存,就会发生访存冲突 (2)在程序的相邻指令之间出现了某种关联,如当一条指令需要用到前面指令的执行结果,而这些指令均在流水线中重叠执行,就会引起数据相关 (3)当流水线遇到分支指令时,如一条指令要等前一条(或几条)指令作出转移方向的决定后,才能进入流水线时,便发生控制相关。 21.主存的基本组成哪些部分?各部分的主要功能是什么? 答:主存储器的基本组成: 存储信息的存储体。一般是一个全体基本存储单元按照一定规则排列起来的 存储阵
7、列。存储阵列是存储器的核心。 信息的寻址机制。地址寄存器和地址译码器。地址译码器完成地址译码, 地址寄存器具有地址缓冲功能。 存储器数据寄存器MDR。在数据传送中科院起数据缓冲作用。 写入信息需要的能源,即写入线路,驱动器等。 读出所需的能源和读出放大器,即读出线路,读驱动器和读出放大器。 存储器控制部件。包括主存序列时序线路,时钟脉冲电路,读逻辑控制电路, 写或重写逻辑控制线路以及动态存储器的定时刷新线路等,这些线路总称为存储器控制部件 22.简要概括硬件多线程及其两种实现方法 答: 硬件多线程:在线阻塞时处理器可切换到另一线程的实现,支持多个线程以重叠方式共享处理器的功能单元。 方法一:
8、细粒度多线程:在每条指令执行后都进行线程切换,结果就是在多个线程之间交叉执行。 方法二: 粗粒度多线程:仅在高开销阻塞时才进行线程切换,如二级缓存缺失。 计算题 CPU 2006的基准程序在AMD Barcelona处理器执行的总指令数为?1012,执行时间750s,参考时间为9650s。(10分) 1 如果时钟周期时间为,求CPI值。(2分) 2 如果基准程序的指令数增加10%,CPI不变,求CPU时间增加多少?(2分) 3 如果基准程序的指令数增加10%,CPI增加5%,求CPU时间增加多少? (2分) 4 假设开发了一款新的AMD Barcelona处理器,其工作频率是4GHZ,在其指令
9、集增加了一些新的指令,使指令数目减少了15%,程序的执行时间减少到了70%,求新的CPI。 (2分) 5 在指令数和CPI保持不变的情况下,如果再将CPU时间进一步减少10%,求时钟频率?(原时钟频率为3GHZ) (1分) 6 在指令数保持不变的情况下,如果将CPI降低15%,CPU时间减少20%,求时钟频率?(原时钟频率为3GHZ) (1分) 答: 1 CPI=CPU时间/(指令数?时钟周期时间) CPI=750/(?1012?10-9) = 2 CPU时间=CPI?指令数?时钟周期时间 CPI和时钟周期时间不变,指令数增加10%,则CPU时间增加10%。 3 CPI和指令数未变时: CPU
10、时间=CPI?指令数?时钟周期时间 CPI和指令数改变后:CPU时间=?CPI?指令数?时钟周期时间 ?=,CPU时间增加%。 4 CPU时间=CPI?指令数/时钟周期频率 CPI=700?4?109/(?1012)= 5 CPU时间=CPI?指令数/时钟周期频率 时钟周期频率=CPI?指令数/CPU时间 CPU减少后,时钟周期频率=CPI?指令数/(CPU时间?)=原时钟周期频率/= 6 时钟周期频率=CPI?指令数/CPU时间 CPU和CPI改变后, 时钟周期频率=?CPI?指令数/(CPU时间?) =原时钟周期频率?/ = 24.现有下面这条机器指令:00af8020hex (1)写出对
11、应的二进制指令(2分) 解:0000 0000 1010 1111 1000 0000 0010 000 (2)写出对应的类型和汇编语言指令(8分) 解:当3128位且2826位都是000时,它是R型指令,所以将上面的二进制指令按照R型指令字段重新排列,即 oprsrtrdshamtfunct 000000 00101 01111 1000010000 100000 于53位是100,20位是000因此该二进制指令为add指令。 rs字段的十进制值是5,rt是15,rd是16,sharmt未使用,这些数字指令分别表示寄存器$a1,$t7和$s0。所以所得的汇编指令是add $s0,$a1,$t
12、7 下表给出十进制数(共10分)。a. b. .写出这些十进制数的二进制表达式。采用IEEE754单精度格式。(2分) .写出这些十进制数的二进制表达式。采用IEEE754双精度格式。(2分) .写出这些十进制数的二进制表达式。设采用IBM单精度格式储存。(3分) 2. (3分)如下表: A a. X 10_b.X 10_ 问: 手算A的积,设A以16位NVIDIA格式存储。假设有保护位,舍入位和粘贴位,并采用向最靠近的偶数舍入的模式。分别以16位模式和十进制写出你的答案。你的结果精确吗?和你用计算器取得的结果相比呢? 答案: 1. (1)a. 10_= 110 0100 2_ normali
13、ze, move binary point 10 to the left 110 0100 2_= 2 sign = negative, exp = 128 + 10 = 138 Final bit pattern: 11000101010010010011000000000000 b. 10_= 2_ normalize, move binary point 9 to the left 2 sign = negative, exp = 128 + 9 = 137 Final bit pattern: 11000100111010101011010000000000 (2) 10_= 110
14、0100 2_ normalize, move binary point 10 to the left 110 0100 2_= 2 sign = negative, exp = 1024 + 10 = 1034 Final bit pattern: 110000001010100100100110000000000000000000000000000000000000 b. 10_ = 2_ normalize, move binary point 9 to the left 2 sign = negative, exp = 1024 + 9 = 1033 Final bit pattern
15、: 1100000010011101010101101000000000000000000000000000000000000000 (3)a. 10_= 2_ = 16_ move hex point 3 hex digits to the left 0110 0100 2_ = .0110010010011 16_ sign = negative, exp = 64 + 3 = 67 Final bit pattern: 11000011011001001001100000000000 b. - 10_ = 2_ = 16_ normalize, move hex point 3 to the left .0011 1010 1010 1101 16_ sign = negative, exp = 64 + 3 = 67 Final bit pattern: 1100001100111010101011010000