第一章 概述 第一章 单元测验: 计算机系统概述 1、关于cpu主频、cpi、mips、mflops说法正确的是:
a、cpu主频指cpu系统使用的时钟脉冲频率,cpi是平均每条指令执行所需cpu时钟的个数
b、cpu主频是指cpu系统执行指令的频率,cpi是执行一条指令平均使用的频率
c、cpi是执行一条指令平均使用cpu时钟的个数,mips描述一条cpu指令的平均时间
d、mips是描述cpu执行指令的频率,mflops是计算机系统执行浮点数指令的频率
2、下列关于机器字长、指令字长和存储字长的说法中,正确的是( ) i. 三者在数值上总是相等的 ii.三者在数值上可能不等 iii. 存储字长是存放在一个存储单元中的二进制代码位数 iv. 机器字长就是mdr的位数
a、ii, iii
b、i, iii
c、i, iv
d、iii, iv
3、若一台计算机的机器字长为4字节,则表明该机器( )
a、能处理的数值最大为4位十进制数
b、在cpu中能够作为一个整体处理32位的二进制代码
c、能处理的数值最多为4位二进制数
d、在cpu中运算的结果最大为
4、从用户观点看,评价计算机系统性能的综合参数是( )
a、主存容量
b、主频率
c、指令系统
d、吞吐率
5、用一台主频为40mhz的处理器执行标准测试程序, 测试程序的指令条数(i)一共5000条。它所包含的混合指令数和响应所需的时钟周期如下表给出。这个处理器的mips数和程序的执行时间分别为: 指令类型 cpi 指令占比 算术和逻辑 1 60% 高速缓存命中的访存 2 18% 转移指令 4 12% 高速缓存失效的访存 8 10%
a、17.9, 2.8* 秒
b、2.24, 112* 秒
c、89.6, 112* 秒
d、2.24, 2.8* 秒
6、一般8位的微型机系统以16位来表示地址,该计算机系统的地址空间有多少个?
a、65535
b、65536
c、256
d、1024
7、存放欲执行指令的寄存器是
a、mar
b、mdr
c、ir
d、pc
8、下列部件哪一个可以区分存储单元中存放的是指令还是数据。
a、存储器
b、运算器
c、控制器
d、输入设备
9、将高级语言翻译成机器语言程序需借助于
a、解释程序
b、链接程序
c、编译程序
d、汇编程序
10、将汇编语言翻译成机器语言需借助于
a、解释程序
b、链接程序
c、汇编程序
d、编译程序
11、下列选项中,哪一个是冯.诺依曼计算机工作方式的基本特点?
a、多指令多数据流
b、超标量
c、多线程
d、存储程序
12、关于冯诺依曼计算机结构的描述,错误的是:
a、指令按地址访问,所访问的所有数据在地址中给出
b、计算机由运算器、控制器、存储器、输入设备、输出设备组成
c、程序由指令和数据组成,存放在存储器中
d、指令由操作码和地址码两部分组成,一般情况下,指令按顺序自动执行,只有在满足特定条件时,指令执行顺序会变化。
13、mar和mdr的位数分别为
a、地址码的长度、存储字长
b、存储字长、存储字长
c、地址码的长度、地址码的长度
d、存储字长、地址码的长度
14、程序p在机器m上的执行时间是20秒,编译优化后,p执行的指令数减少到原来的80%,而cpi增加到原来的1.1倍,则p在m上的执行时间是
a、17.6
b、16.8
c、16
d、22
15、64位计算机指该计算机所用的cpu
a、具有64个寄存器
b、能同时处理64位的二进制数
c、能同时处理64个字符
d、存储字长为64位
16、cpu的cpi与下列哪个因素无关?
a、时钟频率
b、指令集
c、计算机系统结构
d、计算机内部组织
17、假设某个使用桌面客户端和远程服务器的应用受到网络性能的限制,那么对于下列方法,哪个是同时改进了吞吐率和响应时间的?
a、在客户端和服务器之间增加一条额外的网络信道(现在有两条网络信道了)
b、改进网络软件,从而减少网络通信延迟,但并不增加吞吐率
c、增加计算机内存
d、更换运算速度更快的处理器
18、假设一个程序在一台计算机上运行需要100秒,其中80秒的时间用于乘法操作。如果要把程序的运行速度提高到5倍,乘法操作的速度应该改进多少?
a、5倍
b、20倍
c、100倍
d、无论怎么改进乘法,都无法将性能提高到5倍
第二章(1)整数的表示与运算 整数的表示与运算- 单元测验 1、某字长为 8位的计算机中,已知整型变量 x、y的机器数分别为[x]补=1 1110100,[y]补=1 0110000。若整型变量 z=2*x y/2,则 z的机器数为
a、0010 0100
b、1010 1010
c、溢出
d、1100 0000
2、-1029的16位补码用十六进制表示为
a、0405h
b、7bfbh
c、8405h
d、fbfbh
3、由3 个“1”和5 个“0”组成的8 位二进制补码,能表示的最小整数
a、-126
b、-125
c、-32
d、-3
4、某八位计算机中,假定x和y是两个带符号整数变量,用补码表示,[x]补=44h,[y]补=dch,则x-2y的机器数以及相对应的溢出标志of分别是:
a、68h,0
b、68h,1
c、8ch,0
d、8ch,1
5、若定点整数64位,含一位符号位,采用补码表示,所能表示的绝对值最大负数为( )。
a、
b、
c、
d、
6、若[x]补=,其中取0或1,若要x>-32,应该当满足( )。
a、x1为0,其他各位任意
b、x1为1,其他各位任意
c、x1为1,x2……x6中至少有一位为1
d、x1为0,x2……x6中至少有一位为1
7、判断加减法溢出时,可采用判断进位的方式,如果符号位的进位是c0,最高位的进位c1, 产生溢出的条件是: ①c0产生进位 ②c1产生进位 ③c0和c1都产生进位 ④c0和c1都不产生进位 ⑤c0产生进位,c1不产生进位 ⑥c0不产生进位,c1产生进位
a、①和②
b、③
c、④
d、⑤和⑥
8、若[x]补=,其中x0为符号位,x1为最高位,若( ),则当补码左移时,会发生溢出。
a、x0=x1
b、x0≠x1
c、x1=0
d、x1=1
9、有如下c语言程序段: short si= -32767; unsigned short usi=si; 执行上述语句后,usi的值是
a、32769
b、32768
c、32767
d、-32767
10、假定编译器规定int和short型长度分别为32位和16位,执行下列c语言语句, unsigned short x=65530; unsigned int y = x; 得到y的机器数为
a、0000 7ffah
b、0000 fffah
c、ffff 7ffah
d、ffff fffah
11、x 和y 的类型都是 int. 对以下表达式,找出永远为真的表达式
a、(x ˆ (x>>31)) - (x>>31) > 0
b、((x >> 31) 1) >= 0
c、(!x | !!y) == 1
d、((x >> 31) & 0x1 )== x
12、假定一次alu运算需要1个时钟周期,移位一次用1个时钟周期,则最快的32位原码一位乘法所需的时钟周期数大约为
a、64
b、32
c、96
d、100
13、假定有4个整数用8位补码分别表示: r1=feh、r2=f2h、r3=90h、r4=f8h. 若运算结果放置在一个8位寄存器中,下列运算会发生溢出的是
a、r2 × r3
b、r1 × r2
c、r1 × r4
d、r2 × r4
14、alu和核心部件是
a、多路选择器
b、加法器
c、移位器
d、寄存器
第二章(2) 浮点数的表示与运算 浮点数的表示与运算- 单元测验 1、下列有关浮点数加减运算的叙述中,正确的是: ⅰ. 对阶操作不会引起阶码上溢或下溢 ⅱ. 右规和尾数舍入都可能引起阶码上溢 ⅲ. 左规时可能引起阶码下溢 ⅳ. 尾数溢出时结果不一定溢出
a、ⅰ、ⅱ、ⅲ、 ⅳ
b、仅ⅱ、ⅲ
c、仅ⅰ、ⅲ、 ⅳ
d、仅ⅰ、ⅱ、 ⅳ
2、按照ieee754标准规定的32位浮点数用16进制表示为:41a4c000, 对应的十进制数为:
a、20.59375
b、4.59375
c、-20.59375
d、-4.59375
3、float型数据常用ieee754单精度浮点格式表示。假设两个float型变量x和y分别存放在32位寄存器f1和f2中, 若(f1)=cc900000h,(f2)=b0c00000h,则x和y之间的关系为
a、x
b、x c、x>y且符号相同 d、x>y且符号不同 4、假定变量i,f的数据类型分别是int、float。已知i=12345,f=1.2345e3,则在一个32位机器中执行如下表达式,结果为假的是 a、i==(int)(float)i b、i==(int)(double)i c、f==(float)(int)f d、f==(float)(double)f 5、某计算机存储器按字节存储,采用小端方式存放数据。假定编译器规定int型和short型长度分别为32位和16位,并且数据按边界对齐存储。某c语言程序段如下: struct { int a; char b; short c;} record; record.a = 273; 若record变量的首地址为0xc008,则地址0xc008中内容及record.c的地址分别为 a、0x00, 0xc00d b、0x00, 0xc00e c、0x11, 0xc00d d、0x11, 0xc00e 6、采用规格化的浮点数最主要是为了 a、增加数据的表示精度 b、增加数据的表示范围 c、方便浮点运算 d、防止运算时数据溢出 7、在ieee754标准规定的64位浮点数格式中,符号位为1位,阶码11位,尾数52位,它能表示的最小规格化负数为: a、 b、 c、 d、 8、对于ieee754单精度浮点数加减运算,只要对阶时得到的两个阶码之差的绝对值, 大于等于( ),就无须继续进行后续处理,此时运算结果直接取阶大的那个数 a、24 b、25 c、126 d、128 9、假定某计算机按字节编址,采用小端方式,有一个float型变量x的地址为 ffff c000h,x=1234 5678h,则在内存单元ffff c001h中存放的内容 a、1234h b、5678h c、34h d、56h 10、ieee754标准中的最近舍入模式可以用于二进制数,也可以用于十进制数。若要舍入成为有两个有效数字的形式,十进制数12.5 应该被舍入为: a、11 b、12 c、13 d、10第三章 存储系统(一) 存储系统(一)单元测验 1、需要定时刷新的半导体存储器芯片是 a、dram b、sram c、flash memory d、eprom 2、采用行、列地址引脚复用的半导体存储器芯片是 a、flash memory b、dram c、sram d、eprom 3、存储容量为16k*4的dram芯片,其地址引脚和数据引脚各是 a、14, 4 b、7, 4 c、14, 1 d、7, 1 4、哪种情况能很好的发挥cache的作用? a、程序具有较好的局部性 b、程序中不含过多的输入输出操作 c、程序的大小不超过实际的存储容量 d、程序的指令间相关度不高 5、假定采用多模块交叉存储器组织方式,存储器芯片和总线支持突发传送(burst),cpu通过存储器总线读取数据的过程为:发送首地址和读命令需1个时钟周期,存储器准备第一个数据需8个时钟周期(即cas潜伏期=8),随后每个时钟周期总线上传送1个数据,可连续传送8个数据(即突发长度=8)。若主存和cache之间交换的主存块大小为64b,存储宽度和总线宽度都为8b,则cache的一次缺失损失(缺失开销)至少为()个时钟周期。 a、17 b、20 c、33 d、65 6、假定cpu通过存储器总线读取数据的过程为:发送地址和读命令需1个时钟周期,存储器准备一个数据需8个时钟周期,总线上每传送1个数据需1个时钟周期,若主存和cache之间交换的主存块大小为64b,存取宽度和总线宽度都为8b,则cache的一次缺失损失(缺失开销)至少为( )个时钟周期。 a、80 b、64 c、72 d、160 7、在程序的执行过程中,高速缓存(cache)与主存的地址映射是由 a、编译器执行的 b、操作系统来管理的 c、程序员调度的 d、硬件自动完成的 8、缓存的地址映射中,若主存中的任一块均可映射到缓存内到任一块到位置上,称作 a、直接映射 b、组相联映射 c、全相联映射 d、自动映射 9、缓存到地址映射中_______比较多的采用“按内容寻址”的相联存储器来实现 a、全相联映射 b、组相联映射 c、直接映射 d、自动映射 10、主存和cpu之间增加cache的目的是 a、增加内存容量; b、加快信息访问速度 c、提高内存可靠性; d、增加内存容量,同时加快访问速度; 11、假设某计算机按字编址,cache有4个行(数据块),cache和主存之间交换的块大小为2个字。若cache的内容初始为空,采用2路组相联映射方式和lru替换策略,访问的主存的字地址依次为0,1,2,3,4,5,6,7,8时,命中cache的次数是 a、2 b、4 c、6 d、8 12、当访问cache系统失效时,通常不仅主存向cpu传送信息,同时还需要将信息写入cache,在此过程中传送给cpu和写入cache信息的数据宽度各为 a、块、页; b、字、字; c、字、块; d、块、块; 13、某32位计算机的cache容量为16kb,cache行的大小为16b,若主存与cache地址映像采用直接映像方式,则主存地址为0x1234e8f8的单元装入cache的地址是 a、00010001001101; b、01000100011010; c、10100011111000; d、11010011101000; 14、有效容量为128kb的cache,每块16字节,采用8路组相联,字节地址为1234567h的单元调入该cache,则其tag应为 a、1234h b、2468h c、048dh d、12345h 15、关于高速缓存,以下的说法哪个正确? a、全相联映射的高速缓存缺失率低,直接映射高速缓存访问延迟短 b、全相联映射的高速缓存(fully associative caches)访问延迟(latency)短, 直接映射高速缓存(direct-mapped caches) 缺失率(miss rate)低 c、直接映射高速缓存在缺失率和访问延迟方面都表现得更好 d、两者在缺失率和访问延迟上表现相似第三章 存储系统(二) 第五周 存储系统(二)单元测验 1、采用虚拟存储器的目的是 a、提高主存的访问速度; b、扩大辅存的存取空间; c、扩大存储器的寻址空间; d、增加存储系统结构的层次性 2、有如下c语言程序段: for(k=0; k<1000; k ) a[k] = a[k] 32; 若数组a及变量k均为int型,int型数据占4b,数据cache采用直接映射方式,数据区大小为1kb,块大小为16b,该程序段执行前cache为空,则该程序段执行过程中访问数组a的cache缺失率为 a、1.25% b、2.5% c、12.5% d、25% 3、给定一个32位 linux 系统,系统中有一个数据容量为128 bytes的2路组关联映射cache,每个cache block的大小为32 bytes. long long 数据类型的长度为8 bytes, int数据类型的长度为4 bytes. 对如下程序,假设 table数组的内存起始地址是0x0. int i, int j; int table[4][8]; for (j = 0; j < 8; j ) for (i = 0; i < 4; i ) table[i][j] = i j; table中元素的访问,cache缺失率为多少? a、1/8 b、1/4 c、1/16 d、1 4、tlb和页表中的内容如下: 另外: 1. 页(page)的大小为4kb 2. tlb有4行,采用全相联映射(4-entry, fully-associative) 3. tlb 采用真正的lru(least-recently-used)替换算法 假定页表寄存器的内容为0,访问的虚拟地址为: (msb) 1100 0010 0010 0100 (lsb) 转换到的物理地址是多少? a、0111 0010 0010 0100 b、1001 0010 0010 0100 c、1111 0010 0010 0100 d、页面失效 5、假设有三个小的cache,每个cache都有4个块,块的大小为1个字。第一个cache是全相联映射,第二个是2路组相联,第三个是直接映射。除了直接映射,另外两个cache使用的都是lru替换算法。如果按以下字地址0,8,0,6,8依次访问,求每个cache的缺失次数 a、第一个3次,第二个4次,第三个5次 b、第一个2次,第二个3次,第三个4次 c、第一个1次,第二个2次,第三个3次 d、第一个2次,第二个3次,第三个3次 6、选出正确的说法: 1)tlb是页表的cache; 2)主存是磁盘的cache; 3)tlb采用一般使用全相联映射; 4)如果发生tlbmiss, 就一定会发生cache miss a、1) b、1)和2) c、1) 2) 4) d、全对 7、有关多级cache的设计,下面哪些是错误的? a、一级cache更关注命中时间,二级cache更关注缺失率 b、一级cache更关注缺失率,二级cache更关注命中时间 c、多级cache是指存储系统有多级cache组成,而不是仅仅只有一个主存和一个cache d、采用一个大的二级cache来处理一级cache的缺失,可以降低缺失代价,从而降低平均存储器访问延迟 8、高速缓存的缺失(miss)可以分为三类: 1)强制缺失(compulsory miss),也称为cold start miss. 是在没有对cache中出现过的块第一次访问时发生的缺失。 2)冲突缺失(conflict miss). 在组相联或者直接映射cache中,很多块竞争同一个组导致的缺失。这种缺失在使用相同大小的全相联映射中是不存在的。 3)容量缺失(capacity miss), 是由于cache在全相联时都不可能容纳所有请求的块而导致的缺失。 关于这几种缺失的描述,正确的有哪些? a、增加cache 容量,可以减少容量缺失;提高关联度,可以减少冲突缺失; b、 全相联映射没有冲突缺失 c、没有减少冲突缺失的方法 d、在减少缺失方面,关联度比容量更重要 a、a b、a和b c、a、b、c d、全对 9、主存地址为32位,按字节编址,主存和cache之间采用直接映射方式,主存块大小为4个字,每个字32位,采用回写(write back)方式,则能存放4k字数据的cache的总容量的位数是 a、146k 位 b、147k 位 c、148k 位 d、158k 位 10、下列命中组合情况中,一次访存过程中不可能发生的是 a、tlb命中、cache命中、内存page命中 b、tlb未命中、cache命中、内存page命中 c、tlb未命中、cache未命中、内存page命中 d、tlb未命中、cache命中、内存page未命中 11、假设某计算机按字编址,cache有4个行(数据块),cache和主存之间交换的块大小为2个字。若cache的内容初始为空,采用2路组相联映射方式和lru替换策略,访问的主存的字地址依次为0,1,2,3,4,5,6,7,8时,命中cache的次数是 a、2 b、4 c、6 d、8 12、存储器容量为64mb,存储字长为64位,体(bank)数m = 8,分别用顺序方式和交叉方式进行组织。一个存储周期t = 100ns,数据总线宽度为64位,总线周期$\sigma$σ = 10ns 。 各从顺序存储器和交叉存储器读出8个字,传输率(单位:位/秒)各是多少? a、 , b、, c、, d、, 13、如果虚实地址转换(virtual-to-physical address translation)花费了大约几十到100个时钟周期,导致这么长的延迟最可能的原因是什么? a、tlb miss b、高速缓存失效(cache miss) c、页面失效(page fault) d、读磁盘第四章 指令系统 指令系统 单元测验 1、寄存器中的值有时是地址,有时是数据,在指令中,它们在形式上没有差别,只有通过( )才能识别它是数据还是地址。 a、寄存器编号 b、判断程序 c、指令操作码或寻址方式位 d、时序信号 2、关于标志寄存器(例如:intel x86的eflags寄存器)的叙述,错误的是 a、可以用它来存放执行指令得到的各种标志信息 b、可以通过指令直接访问标志寄存器、并修改它的值 c、条件转移指令根据其中的一些的标志位来确定pc的值 d、不需要像通用寄存器那样,对标志寄存器进行编号 3、对于运算类指令或传送类指令,通常需要在指令中指出操作数或操作数所在的位置。通常,指令中指出的操作数不可能出现在( )中。 a、指令 b、通用寄存器 c、存储单元 d、程序计数器 4、ia-32中指令“leal 8(�x, %esi, 4), �x”的功能是 a、r[edx] r[esi]*4 8<-r[edx] b、r[esi] r[edx]*4 8<-r[edx] c、r[edx]<-r[edx] r[esi]*4 8 d、r[edx]<-r[esi] r[edx]*4 8 5、以下是c语言赋值语句"x=a*b c;”对应的x86-64汇编代码: movslq �x, %rdx movsbl %sil, %esi imull �i, %esi movslq %esi, %rsi leaq (%rdx, %rsi), %rax 已知x,a,b和c分别在rax,rdi,rsi和rdx对应宽度的寄存器中,根据上述汇编指令序列,推测x,a,b和c的数据类型分别为: a、x:long a:long b:char c:int b、x:long a:int b:char c:int c、x:long a:long b:char c:long d、x:long a:int b:char c:long 6、假设有两个变量定义为 int *a 和 int n. 如果�x存放a的值,�x存放n的值, 以下ia-32汇编代码哪个最适合表达c语言中的 return a[n] ? a、ret (�x,�x,4) b、leal (�x,�x,4),�x ret c、mov (�x,�x,4),�x ret d、mov (�x,�x,1),�x ret 7、有以下c语言声明语句: int array[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; 假设编译器将array 放在�x寄存器. 怎样将array[3]移入�x寄存器? 假设�x中的值是3. a、leal 12(�x),�x b、leal (�x,�x,4),�x c、movl (�x,�x,4),�x d、movl 8(�x,�x,2),�x e、leal 4(�x,�x,1),�x 8、对一个x86-64处理器上的64位linux系统, 以下说法哪个是错误的? a、%rax 用作函数的返回值 b、拥有比32位系统更多的寄存器 c、所有的函数参数都通过栈传递 d、�x 和 �x 可以如同在32位系统上一样使用 9、程序p中有两个unsigned类型变量i和j,被分别分配在寄存器eax和edx中,p中存在以下if语句: if(i < j) {...} 该if语句对应的指令序列一定不会是: a、cmpl �x, �x jbe 804847c b、cmpl �x, �x jb 8048460 c、cmpl �x, �x ja 8048380 d、cmpl �x, �x jae 8048480 10、在mips处理器中,假定int型变量f 、g、h、i和j,依次分配到寄存器$s0, $s1, $s2, $s3, $s4中,假设int型数组a和b的基地址依次放置寄存器$s6和 $s7中, 下面那段代码表示 f=g h b[4] ? a、lw $s0, 16($s7) add $s0, $s0, $s1 add $s0, $s0, $s2 b、lw $s0, 0($s7) add $s0, $s0, $s1 add $s0, $s0, $s2 c、lw $s0, 4($s7) add $s0, $s0, $s1 add $s0, $s0, $s2 d、lw $s0, 16($s6) add $s0, $s0, $s1 add $s0, $s0, $s2 11、在mips处理器中,假定int型变量f 、g、h、i和j,依次分配到寄存器$s0, $s1, $s2, $s3, $s4中,假设int型数组a和b的基地址依次放置寄存器$s6和 $s7中 下面那段代码表示 f=g-a[b[4]] ? a、lw $t0, 16($s7) add $t0, $t0, $s6 lw $s0, 0($t0) sub $s0, $s1,$s0 b、lw $t0, 16($s7) lw $s0, 0($t0) sub $s0, $s1,$s0 c、lw $t0, 4($s7) add $t0, $t0, $s6 lw $s0, 0($t0) sub $s0, $s1,$s0 d、lw $t0, 16($s7) sll $t0, $t0, 2 add $t0, $t0, $s6 lw $s0, 0($t0) sub $s0, $s1,$s0 12、已知:寄存器$t0中的值位0x55555555, 执行以下mips指令后,寄存器$t2中的值为多少? sll $t2, $t0, 4 andi $t2, $t2, -1 a、0x55555550 b、0xffffffff c、0xfefffede d、0x57755770 13、给定寄存器$t0和$t1的值分别为: $t0 = 1010 1101 0001 0000 0000 0000 0000 0010 (二进制) $t1 = 0011 1111 1111 1000 0000 0000 0000 0000 (二进制) 执行以下mips指令后,寄存器$t2的值为多少? slt $t2, $t0, $t1 beq $t2, $zero, else j done else: addi $t2, $zero , 2 done: a、0 b、1 c、2 d、以上答案都不对第五章 处理器设计 处理器设计单元测验 1、下列说法哪个是正确的? a、指令周期等于机器周期 b、指令周期大于机器周期 c、指令周期是机器周期的2倍 d、机器周期等于时钟周期 2、cpu中控制器的完整功能是 a、产生时序信号 b、从主存中取出指令 c、完成对指令的译码 d、完成对指令的译码,并产生控制信号 3、假设不考虑中断和异常处理(这个内容在以后的章节介绍),关于程序计数器pc的叙述中,哪个是错误的? a、每条指令执行后,pc的值都会改变 b、指令顺序执行时,pc的值会改变为下一条指令的地址,在mips中,pc的值自动加4 c、无条件转移指令(jump)指令执行后,pc的值一定是跳转到的目标地址 d、条件转移指令(例如:beq)指令执行后,pc的值一定是跳转到的目标地址 4、cpu取出一条指令并执行所用的时间被称为: a、时钟周期 b、cpu周期 c、机器周期 d、指令周期 5、有关指令周期的叙述,错误的是: a、指令周期的第一个阶段是取指令阶段 b、乘法指令的加法指令的指令周期一样长 c、一个指令周期由若干个机器周期或时钟周期组成 d、单周期处理器的指令周期就是一个时钟周期 6、下面有关处理器时钟信号的叙述,错误的是: a、处理器总是在一个时钟信号来到时,就开始执行一条新的指令 b、边沿触发的状态单元,总在时钟的上升沿或下降沿开始改变状态 c、每个时钟周期被称为一个节拍,机器的主频就是时钟周期的倒数 d、时钟周期以相邻状态单元之间最长的组合逻辑延迟为基准来确定 7、下列关于处理器数据通路的叙述,错误的是: a、数据通路由若干组合逻辑组件和状态单元组件连接而成 b、数据通路所实现的功能由控制器发出的控制信号决定 c、alu是组合逻辑单元,用于执行各类算术与逻辑运算 d、通用寄存器是状态单元,但独立于处理器的数据通路,不包含在数据通路中 8、下面关于多周期处理器与单周期处理器的比较,错误的是 a、单周期处理器的cpi总比多周期处理器的cpi大 b、单周期处理器的时钟周期比多周期处理器的时钟周期长 c、一条指令执行过程中,单周期处理器中的控制信号取值不改变,而多周期处理器中的控制信号可能会发生改变 d、一条指令执行过程中,单周期处理器中每个部件只能被使用一次,而多周期处理器中同一个部件可以使用多次 9、下面是有关mips架构的r-型指令数据通路设计的描述: 在r-型指令数据通路中,一定会有一个具有读口和写口的通用寄存器组 在r-型指令数据通路中,一定有一个alu用于对读寄存器读出数据进行运算 在r-型指令数据通路中,一定存在一条路径使alu输出被送到某个寄存器 执行r-型指令时,通用寄存器堆的“写使能(regwrite)”控制信号一定为“1” 以上叙述中,正确的有() a、1, 2,3 b、1, 2, 4 c、2, 3,4 d、全部 10、下面是有关mips架构的beq指令的单周期数据通路设计的叙述,哪些是正确的? 在beq指令的执行过程中,alu的两个输入都来自寄存器堆 在beq指令数据通路中,alu的控制信号一定为“sub”(即alu做减法) 在beq指令数据通路中,一定有一个加法器用于计算目标转移地址 在beq指令的执行过程中,数据不会流经符号扩展部件 a、1,2,3 b、2,3,4 c、1,3,4 d、全部 11、下面有关mips架构的lw/sw指令数据通路设计的叙述,哪些是正确的? 在lw/sw指令数据通路中,一定有一个符号扩展部件用于偏移量的扩展 在lw/sw指令数据通路中,alu的控制信号一定为“add”(即alu做加法) 寄存器堆的“写使能(regwrite)”信号在lw指令执行时为“1”,在sw指令执行时为“0” 数据存储器的“写使能(memwrite”信号在lw指令执行时为“0”,在sw指令执行时为“1” a、全对 b、1,2 c、2,4 d、1,3 12、某计算机指令集中包含rr型运算指令(源操作数和目的操作数都是寄存器)、取数指令load,、存数指令store,、条件分支指令branch和直接跳转指令jump。 如果采用单周期数据通路实现该指令系统,各主要功能部件的操作时间为:指令存储器和数据存储器都是2ns; alu和加法器都是1ns; 寄存器文件的读和写都是0.5ns. 在不考虑多路选择器、控制器、pc、符号扩展单元和传输延迟的情况下,该计算机的时钟周期至少为多少? a、5ns b、6ns c、7ns d、8ns第六章 流水线处理器 流水线处理器 单元测验 1、以下是一段mips指令序列: addi ﹩t1, ﹩zero, 20 #r[﹩t1]<-20 lw ﹩t2, l2(﹩a0) #r[﹩t2]<-m[r[﹩a0] 12] add ﹩v0, ﹩t1, ﹩t2 #r[﹩v0]<-r[﹩t1] r[﹩t2] 以上指令序列中,第1和第3,第2和第3条指令之间发生数据相关。假定采用“取指、译码/取数、执行、访存、写回”这种5段流水线方式,并控制在时钟的前半周期写寄存器堆,后半周期读寄存器堆,那么不采用“转发”技术时,需要在第3条指令前加入多少条空操作(nop)指令才能使这段程序不发生数据冒险。 a、1 b、2 c、3 d、4 2、以下关于流水线数据通路的描述中,错误的是 a、每个流水段由执行指令子功能的功能部件和流水段寄存器组成 b、控制信号仅作用在功能部件上,时钟信号仅作用在流水段寄存器上 c、在没有阻塞的情况下,pc的值在每个时钟周期都会改变 d、在有阻塞的情况下,一条指令可以停留在某个功能部件上超过一个时钟周期 3、以下关于流水段的功能部件的描述中,错误的是 a、所有功能部件都要用组合逻辑实现 b、同一个功能部件可以在不同的流水段中被使用 c、每个功能部件在每条指令中都只被使用一次 d、寄存器写口只能在指令结束时的“写回”阶段被使用 4、以下给定的情况中,不会引起指令流水线阻塞的是 a、访存冲突 b、指令数据相关 c、执行空操作指令 d、cache缺失 5、以下情况中,不会引起指令流水线阻塞的是 a、数据旁路(转发) b、tlb缺失 c、条件转移 d、高速缓存不命中 6、以下是关于结构冒险的叙述: 1. 结构冒险是指同时有多条指令使用同一个资源 2. 避免结构冒险的基本做法是使每个指令在相同流水段中使用相同的部件 3. 重复设置功能部件可以避免结构冒险 4. 数据cache和代码cache分离可解决两条指令同时分别访问数据和指令的冒险 以上叙述中,正确的有: a、1,2,4 b、1,2,3 c、1,3,4 d、全部 7、以下是关于数据冒险的叙述: 1. 数据冒险是指后面指令用到的数据还未来得及由前面指令产生 2. 在发生数据冒险的指令之间插入空操作指令能避免数据冒险 3. 采用转发(旁路)技术可以解决一部分数据冒险现象 4. 通过编译器调整指令顺序可解决部分数据冒险 以上叙述中,正确的有()。 a、1,2,4 b、1,2,3 c、1,3,4 d、全部 8、以下是一段mips指令序列: loop:add ﹩t1, ﹩s3, ﹩s3 #r[﹩t1]<-r[﹩s3] r[﹩s3] add ﹩t1, ﹩t1, ﹩t1 #r[﹩t1]<-r[﹩t1] r[﹩t1] lw ﹩t0, 0(﹩t1) #r[﹩t0]<-m[r[﹩t1] 0] bne ﹩t0, ﹩s5, exit #if(r[﹩t0]!=r[﹩s5]) then go to exit add ﹩s3, ﹩s3, ﹩s4 #r[﹩s3]<-r[﹩s3] r[﹩s4] j loop #go to loop exit: 以上指令序列中,第()条指令产生了一个分支控制冒险。 a、2 b、4 c、5 d、6 9、以下是一条mips指令序列: add ﹩t1, ﹩t0, ﹩t1 #r[﹩t1]<-r[﹩t0] r[﹩t1] lw ﹩t0, 0(﹩t1) #r[﹩t0]<-m[r[﹩t1] 0] bne ﹩t0, ﹩s5, exit #if(r[﹩t0]!=r[﹩s5]) then go to exit add ﹩s3, ﹩s5, ﹩s4 #r[﹩s3]<-r[﹩s5] r[﹩s4] exit: 以上指令序列中,( )指令之间产生数据相关。 a、1和2,2和3 b、1和2,2和3,3和4 c、1和2,1和3 d、1和2,1和3,2和3 10、以下关于流水段寄存器的叙述中,正确的是 a、指令译码得到的控制信号需要经过流水段寄存器传递到下一段 b、每个流水段之间的流水段寄存器位数相同 c、每个流水段之间的流水段寄存器存放的信息相同 d、用户程序可以通过指令指定访问哪个流水段寄存器 11、以下是关于控制冒险的叙述: 条件转移指令执行时有可能会发生控制冒险 直接转移指令(无条件转移指令)不会发生控制冒险 在分支转移指令后加入若干空操作指令可避免控制冒险 采用转发(旁路)技术可以解决部分控制冒险 通过编译器调整指令可解决所有的控制冒险 流水线段数的深度与控制冒险引发的开销无关 以上叙述中,正确的是: a、1,3,5 b、1,2,3 c、1,3,4 d、2,4,6 e、全部 12、下面来讨论五级流水线的效率问题,有同学指出并非所有流水段中的指令都是活动的。在忽略冒险的情况下,以下几个断言,其中哪些是正确的? a、跳转、分支、alu指令使用比5段(load指令使用的流水段数)更少的段数,将在所有情况下增加流水线的性能 b、允许一些指令使用更少的段数并不能提高性能,因为吞吐率是有时钟周期决定的。每条指令所需的流水线段数仅影响它的延迟时间,而并影响流水线的吞吐率 c、不可能减少alu指令所需的时钟周期数,因为它们需要写回结果。不过分支和跳转指令是可以减少时钟周期数的,因此存在性能改善的机会 d、相对于尝试减少指令所需的时钟周期数,我们可以延长流水线的段数。虽然每条指令花费更多的时钟周期数,但时钟周期的长度变短了,这样才能提高性能期末考试 期中考试 1、下面关于冯诺依曼计算机特点的描述,错误的是哪一个? a、计算机由运算器、控制器、存储器、输入设备和输出设备5个基本部件组成。 b、采用存储程序的方式,程序和数据放在同一个存储器中,都以二进制码表示。指令和数据一样都可以从存储器送到运算器中运算。 c、指令在存储器中按顺序存放,由指令计数器(即程序计数器 pc)指明要执行的指令所在的单元地址,一般按顺序递增,但可按运算结果和外界条件而改变。 d、以运算器为中心,输入输出设备与存储器之间的数据传送都经过运算器。自冯诺依曼计算机问世70多年来,计算机技术发展和变化很大,但这个特点一直没有改变。 2、假设同一套指令集用不同的方法设计了两种机器m1和m2。机器m1的时钟周期为0.8ns,机器m2的时钟周期为1.2ns。某个程序p在机器m1上运行时的cpi为4,在m2上的cpi为2。对于程序p来说,哪台机器的执行速度更快?快多少? a、m2 比 m1 快,快25% b、m1 比 m2快,快25% c、m2 比 m1 快,快33% d、m1 比m2快,快33% 3、计算机操作的最小时间单位是 a、时钟周期 b、指令周期 c、cpu周期 d、中断周期 4、只有当程序执行时才将源程序翻译成机器语言,并且一次只能翻译一行语句,边翻译边执行的是( )程序,把汇编语言源程序转变成机器语言程序的过程是( )程序。 ⅰ编译 ⅱ 目标 ⅲ 汇编 ⅳ 解释 a、ⅰ和 ⅱ b、ⅳ 和 ⅱ c、ⅳ 和ⅰ d、ⅳ 和 ⅲ 5、假设一台计算机的i/o处理占整个系统运行时间的10%, 当cpu性能改进到原来的10倍,而i/o性能仅改进为原来的两倍时,系统总体性能改进获得的加速比为多少? a、7.14倍 b、10倍 c、2倍 d、5.26倍 6、设主存储器容量为64k*32位,并且指令字长,存储字长,机器字长三者均相等,请问mar,pc、mdr,ir 等寄存器的位数分别为多少位? a、mar 、pc、mdr 、 ir 都是16位 b、mar 、pc为16位,mdr 、 ir均为32位 c、mar 、pc为32位,mdr 、 ir均为16位 d、mar 、pc、mdr 、 ir 都是32位 7、关于计算机系统性能和程序执行时间,以下说法哪些是正确的? 机器的时钟频率越高,机器的速度就越快 计算机的mips数越大,性能就越好 计算机系统性能的主要衡量指标包括:响应时间和吞吐率 基准测试程序执行得越快,说明机器性能越好 一个程序的执行时间,不仅仅是执行这个程序所有指令所用的时间,因为在程序执行过程中,还会执行操作系统代码或者其他用户程序,也可能等待i/o操作。 a、1、3、5 b、3、4、5 c、3、5 d、全部正确 8、假定带符号数整数采用补码表示,若int型变量x和y的机器数分别为ffff ffdfh 和 0000 0041h,则x、y的值以及x-y的机器数分别是: a、x=-65, y=-41, x-y的机器数溢出 b、x=-33,y=65, x-y的机器数为 ffff ff9dh c、x=-33,y=65, x-y的机器数为 ffff ff9eh d、x=-65, y=41, x-y的机器数为 ffff ff96h 9、某32位计算机按字节编址,采用小段(little endian)方式存储。若语句" int i=0 ; " 对应的指令机器代码为 c7 45 fc 00 00 00 00, 那么语句" int i = - 64 ;" 对应的指令机器代码是: a、c7 45 fc c0 ff ff ff b、c7 45 fc 0c ff ff ff c、c7 45 fc ff ff ff c0 d、c7 45 fc ff ff ff 0c 10、执行以下代码后,哪些变量的值为0? unsigned int a = 0xffffffff; unsigned int b = 1; unsigned int c = a b; unsigned long d = a b; unsigned long e = (unsigned long)a b; (假定 int 型数据长度为32 位,long型数据长度为64位.) a、没有一个为0 b、c c、c 和 d d、c 、d 和 e 11、无符号整数变量ux和uy的声明和初始化如下: unsigned ux=x; unsigned uy=y; 若sizeof(int)=4,则对于任意int型变量x和y,判断以下表达式哪些为永真 i. x*4 y*8==(x<<2) (y<<3) ii. x*y==ux*uy iii. (x*x)>=0 iv. x/4 y/8==(x>>2) (y>>3) a、i b、i 和 ii c、i 和 iii d、全部正确 12、对于一个n(n≥8)位的变量x,根据c语言中按位运算的定义,下面的c语言表达式,哪一个的功能是: “x的最高有效字节不变,其余各位全变为0”? a、(x>>(n-8))<<(n-8) b、x & 0xff c、((x^~0xff)>>8)<<8 d、x | 0xff 13、考虑以下c语言程序代码: int func1(unsigned word) { return (int) (( word <<24) >> 24); } int func2(unsigned word) { return ( (int) word <<24 ) >> 24; } 假设在一个32位机器上执行这些函数,该机器使用二进制补码表示带符号整数。无符号数采用逻辑移位,带符号整数采用算术移位。 如果参数word 的机器数是0000 00ffh, func1和func2返回的结果分别是多少? a、 255 255 b、 255 -1 c、0 0 d、 128 -128 14、下面哪一个不是整数加减运算判断溢出的方法? a、符号相同的两个数相加,结果符号与加数(或被加数)的符号不同,为溢出 b、任意符号的两个数相加,如果数值部分最高位的进位与符号位的进位不同,为溢出 c、采用双符号位f2f1,正数符号位为00,负数符号位为11,符号位参与运算。相加结果的两个符号位不同,即f2不等于f1,为溢出。 d、运算结果的最高位有进位或者借位,为溢出。 15、假定有两个整数用8位补码表示为 r1=f5h, r2=eeh. 如果将运算结果存放在一个8位寄存器中,则下列运算中会发生溢出的是: a、r1&r2 b、r1 r2 c、r1-r2 d、r1*r2 16、ieee单精度浮点数中,最小的规格化正数是: a、 b、 c、 d、 17、下面一个8 位的浮点数 ,其中1位符号位(sign), 3位阶码(exponent), 4位尾数位(fraction),下列编码哪个表示nan? a、1 000 1111 b、0 111 1111 c、0 100 0000 d、1 111 0000 18、float型数据一般用ieee754单精度浮点格式表示。假设两个float型变量x和y分别存放在32位寄存器f1和f2中,若(f1)=cc900000h,(f2)=b0c00000h,则x和y之间的关系为: a、x b、x c、x>y且符号相同 d、x>y且符号不同 19、计算机在进行浮点数的加减运算之前先进行对阶操作,若x的阶码大于y的阶码,则应将: a、y的阶码扩大至与x的阶码相同,且使y的尾数部分进行算术右移 b、x的阶码缩小至与y的阶码相同,且使x的尾数部分进行算术左移 c、x的阶码缩小至与y的阶码相同,且使x的尾数部分进行算术右移 d、y的阶码扩大至与x的阶码相同,且使y的尾数部分进行算术左移 20、假定变量i和f 的数据类型分别是 int和float. 已知i=23456, f=2.3456e3, 则在一个32位机器中执行下列表达式,结果为假的是: a、i == (int)(float) i b、i == (int)(double) i c、f == (float)(int) f d、f== (float) (double) f 21、某数采用 ieee 754单精度浮点数格式表示为 c660 0000 h,则该数的值是: a、 b、 c、 d、 22、在ieee 754浮点数运算中,判断浮点运算的结果是否溢出的描述,哪些是正确的? 浮点运算结果是否溢出,并不以尾数溢出来判断,而主要看阶码是否溢出。 尾数溢出时,可通过规格化操作进行纠正。 阶码上溢时,说明结果的数值太大,无法表示;阶码下溢时,说明结果数值太小,可以把结果近似为0。 在进行对阶、规格化、舍入和浮点数的乘/除运算等过程中,都需要对阶码进行加、减运算,可能会发生阶码上溢或阶码下溢。 a、1,2,3 b、2,3,4 c、1,3,4 d、全对 23、一个128*128结构的dram芯片,每隔2ms要刷新一次,采用异步刷新方式,且刷新是按顺序对所有128行存储元进行内部读操作和写操作实现的。设存取周期为0.5μs,求刷新开销(即刷新操作的时间所占的百分比) a、6.4% b、3.2% c、12.8% d、1.6% 24、假定高速缓存有如下特性: cache 容量 (c) : 512 bytes (数据容量,不包括标记位) 替换算法: lru (least-recently used) 初始时,cache为空 假设以下访存地址序列 0, 2, 4, 8, 16, 32 在cache的命中率是0.33. 高速缓存的数据块(block)为多大? a、b = 4 bytes b、b = 8 bytes c、b = 16 bytes d、以上都不对. 25、某容存储器由若干16m×4的dram芯片构成,该dram芯片的地址引脚和数据引脚总数是 a、16 b、22 c、26 d、30 26、ddr3 sdram 芯片内部核心频率是133.25mhz, 与之相连的存储总线每次传输8b,下面描述错误的是: a、存储器总线的时钟频率是1066mhz b、芯片内部输入输出缓冲采用8位预取技术 c、存储器器总线每秒传1066m次数据 d、存储器总线带宽约为8.5gb每秒 27、多模块存储器之所以能高速进行读写,是因为: a、采用了高速元器件 b、各模块有独立的读写电路 c、采用了信息预取技术 d、模块内各单元的地址是连续的 28、某计算机主存按字节编址,由4个64m*8位的dram芯片采用交叉编址方式构成,并与宽度为32位的存储器总线相连。主存每次最多读写32位数据。若double型变量x的主存地址位804 001ah, 则读取x需要的存储周期数为: a、1 b、2 c、3 d、4 29、主存地址为32位,按字节编址,主存和cache之间采用直接映射方式,主存块大小为4个字,每个字32位,采用回写(write back)方式,则能存放总共4k字数据的cache的总容量的位数是: a、146k 位 b、147k位 c、148k位 d、158k位 30、假定主存按字节编址,cache 共64行,采用直接映射方式,主存块大小为32字节,所有编号都从0开始。问主存第2626号(字节地址)单元所在主存块对应的cache行号是: a、18 b、2 c、36 d、62 31、假定主存按字节编址,cache 共64行,采用4路组关联映射方式,主存块大小为32字节,所有编号都从0开始。问主存第2626号(字节地址)单元所在主存块对应的cache组号是: a、18 b、2 c、16 d、61 32、给定一个32位 linux 系统,系统中有一个数据容量为128 bytes的2路组关联映射cache,每个cache block的大小为32 bytes. long long 数据类型的长度为8 bytes, int数据类型的长度为4 bytes. 对如下程序,假设 table数组的内存起始地址是0x0. int i; int j; long long table[4][8]; for (j = 0; j < 8; j ) { for (i = 0; i < 4; i ) { table[i][j] = i j; } }对上面的程序,高速缓存缺失率为多少? a、100% b、25% c、33% d、50% 33、某计算机主存地址空间大小为256 mb,按字节编址。虚拟地址空间大小为4 gb,采用页式存储管理,页面大小为4 kb,tlb(快表)采用全相联映射,有4个页表项,内容如下表所示。 有效位 标记 页框号 … 0 ff180h 0002h … 1 3ff1h 0035h … 0 02ff3h 0351h … 1 03fffh 0153h … 则对虚拟地址03ff f180h进行虚实地址变换的结果是 : a、015 3180h b、003 5180h c、tlb缺失 d、缺页 34、假定某处理器可通过软件对高速缓存设置不同的写策略,那么,当处理器主要运行包含大量存储器写操作的数据访问密集型应用时,cache 命中时应设置成什么写策略? a、采用写回(write back)策略 b、采用写直达(write through)策略 c、采用按写分配( write allocated)策略 d、采用不按写分配(no write allocated)策略 35、以下事件中,不需要异常处理程序进行处理的是 : a、tlb miss(缺失) b、cache miss(缺失) c、访存地址越界 d、除数为0 36、关于快表(tlb)的描述,错误的是 : a、快表中存放的是当前进程的常用页表项 b、在快表命中时,l1 cache一定命中 c、快表是一种高速缓存,一定在cpu 中 d、出现tlb miss时,不一定会出现cache不命中 37、假设有两个变量定义为 int *a 和 int n. 如果�x存放a的值,�x存放n的值, 以下x86汇编代码哪个最适合表达c语言中的 return a[n] ? 注:mov 和 lea 汇编指令的格式都是: 指令码 源操作数 目的操作数 a、ret (�x,�x,4) b、leal (�x,�x,4),�x ret c、mov (�x,�x,4),�x ret d、mov (�x,�x,1),�x ret 38、x86指令 mov 0x10(%rax,%rcx,4),%rdx 对应的c语言表达式是哪一个? 注:mov 和 lea 汇编指令的格式都是: 指令码 源操作数 目的操作数 a、rdx = rax rcx 4 10 b、*(rax rcx 4 10) = rdx c、rdx = *(rax rcx*4 0x10) d、rdx = *(rax rcx 4 0x10) 39、x86指令 leal 0x10(%rax,%rcx,4),%rdx 对应的c语言表达式是哪一个? 注:mov 和 lea 汇编指令的格式都是: 指令码 源操作数 目的操作数 a、rdx = 10 rax rcx 4 b、rdx = 0x10 rax rcx*4 c、rdx = *(0x10 rax rcx*4) d、*(0x10 rax rcx 4) = rdx 40、x86指令 mov %rax,%rcx 对应的c语言表达式是哪一个? 注:mov 和 lea 汇编指令的格式都是: 指令码 源操作数 目的操作数 a、rcx = rax b、rax = rcx c、rax = *rcx d、rcx = *rax 41、x86 体系结构中,一个应用程序其栈(stack)的增长方向是: a、高内存地址向低内存地址方向增长 b、低内存地址向高内存地址方向增长 c、向低内存地址方向增长 和向高内存地址方向增长都有可能,依照实际使用情况决定 d、栈的大小是固定的,不会增长 42、以下这段mips代码执行完后,共执行了多少条指令? addi $t1, $0, 100 loop: lw $s1, 0($s0) add $s2, $s2, $s1 addi $s0, $s0, 4 subi $t1, $t1, 1 bne $t1, $0, loop a、500 b、501 c、6 d、26 43、假设$s0中存放着数组a的起始地址 数组a的定义为:int a[400]; 以下这段mips代码的功能是什么? addi $t1, $s0, 1600 addi $s2 $zero, 0 addi loop: lw $s1, 0($s0) add $s2, $s2, $s1 lw $s1, 4($s0) add $s2, $s2, $s1 addi $s0, $s0, 8 bne $t1, $s0, loop a、int result=0; for (i=400; i>0; i--) { result = a[i]; } b、int result=0; for ( i=0; i<400; i =2 ) { result = a[i]; result = a[i 1]; } c、int result=0; for (i=400; i>0; i-=2) { result = a[i]; result = a[i 1]; } d、int result=0; for ( i=0; i<1600; i =8 ) { result = a[i]; result = a[i 4]; } 44、以下mips程序段是某个过程对应的指令序列。入口参数int a和int b分别置于$a0和$a1中,返回参数是该过程的结果,置于$v0中。该过程的功能是什么? add $t0, $zero, $zero loop: beq $a1, $zero, finish add $t0, $t0, $a0 sub $a1, $a1, 1 j loop finish: addi $t0, $t0, 100 add $v0, $t0, $zero a、计算 100 a b b、计算 100 a c、计算 100 a×b d、计算 100 b 45、关于risc特征的描述,错误的是: a、采用简化的指令系统,指令集只包括常用指令;指令格式规整,寻址方式少 b、配置的通用寄存器数目不多 c、运算类指令的操作数不访问存储器,只有load和store指令才能访问存储器 d、采用流水化的方式执行指令,并采用优化的编译技术 46、有关调用指令(过程、函数调用)的叙述中,错误的是: a、与高级语言源程序中的过程调用相对应,一次过程调用对应一条指令 b、指令执行时必须保留返回地址,调用指令随后一条指令的地址是返回地址 c、嵌套调用时,返回地址通常保存在栈中,非嵌套调用时,可以保存在特定寄存器中 d、指令执行时,无条件转移到目标地址处,转移目标地址不需要在指令中明显给出 47、假设某计算机采用小端方式存储,按字节编址。一维数组a有100个元素,其类型为float, 存放在地址c000 1000h开始的连续区域中,则最后一个数组元素的msb(most significant bit)所在的地址为: a、c000 1396h b、c000 1399h c、c000 118ch d、c000 118fh 48、图中单周期数据通路对应的控制逻辑发生错误,使得在任何情况下控制信号regdst总是为0,则哪些指令不能正确执行? a、所有r-型指令都不能正确执行 b、所有非r-型指令都不能正确执行 c、所有需要写结果到寄存器的指令(如:r-型指令、load指令等)都不能正确执行 d、不需要写结果到寄存器的指令会出错(如store,分支,转移指令等) 49、关于cpu执行指令的过程,以下描述哪一个是错误的? a、cpu的工作过程就是周而复始地执行指令。cpu不会停下来什么也不做,只是有时候指令的执行过程被阻塞了一段时间、执行了没有产生结果的指令。 b、在指令执行的过程中,cpu还要定时采样对应的引脚来查询有没有中断请求或者dma请求。查询或者响应中断请求和dma请求的过程都包含在一条指令的执行过程中。 c、cpu中的寄存器分为:用户可访问的寄存器和用户不可见寄存器。通用寄存器一般有一个编号,指令可以通过编号标识并访问到通用寄存器。用户不可见的寄存器一般是没有编号、不能通过程序直接访问,如指令寄存器ir,存储器地址寄存器mar、存储器数据寄存器mdr。 d、程序计数器pc是专用寄存器,没有编号也不能在指令中明确指定,它的值在程序顺序执行时自动增长,用户程序不可以改变pc的值。 50、假定执行最复杂的指令需要完成6个子功能,分别由对应的功能部件a~f来完成,每个功能部件所花的时间分别为80ps、40ps、50ps、70ps、20ps、30ps,流水段寄存器延时为20ps, 现在把最后两个功能部件e和f合并,产生一个5段流水线。该5段流水线的时钟周期至少是( )ps a、70 b、80 c、90 d、100 51、以下一段mips指令序列: i. addi $t1, $zero, 20 #r[$t1]←20 ii. lw $t2, 12($a0) #r[$t2]←m[r[$a0] 12] iii. add $v0, $t1, $t2 #r[$v0] ←r[t1] r[t2] 以上指令序列中,第ⅰ和ⅲ、第ⅱ和第ⅲ条指令之间发生数据相关。假定采用“取指、译码/取数、执行、访存、写回”这5段流水线方式,那么在采用“转发(前向通路, forwarding, bypassing)”技术时,需要在第3条指令前加入多少条空操作(nop)指令才能使这段程序不发生数据冒险? a、0 b、1 c、2 d、3 52、关于cpu时钟信号的描述,错误的是: a、处理器总是每来一个时钟信号,就开始执行一条新的指令 b、边沿触发指状态单元总在时钟上升沿或者下降沿开始改变状态 c、时钟周期以相邻状态单元之间最长的组合逻辑的延迟为基准确定 d、每个时钟周期称为一个节拍,机器的主频就是时钟周期的倒数 53、对于mips处理器中,有关取指操作部件的叙述,错误的是: a、取指令操作的延迟主要是由存储器访存延迟决定的 b、取指令操作可以和下条指令地址的计算同时进行 c、单周期数据通路中,需要一个指令寄存器,用于存放从指令存器器中取出的指令 d、pc寄存器在单周期数据通路中,不需要“写使能”控制信号 54、假定有一个程序的指令序列为“lw, add, lw, add, …”。add指令仅依赖它前面的lw指令,而lw指令也仅依赖它前面的add指令,寄存器写口和寄存器读口分别在一个时钟周期的前、后半个周期内独立工作。请问:在带转发(forwarding , bypassing) 的五段流水线中执行该程序,其cpi为多少? a、1.5 b、3 c、2 d、1 55、假设有一台risc机器,cpu采用流水线结构,cache 采用哈佛结构(即指令cache和数据cache分离),只有load和store指令可以访存,他们占指令总数的40%, 不命中时损失25个时钟周期,存取数据的不命中率为2%,取指令全部命中,假设采用的写入策略是“命中时写入cache不写主存、不命中时写入主存”。请问:如果取指令和存取数据全部命中时cpi是2.0,那么这台机器实际运行时的cpi是多少?(cpi: cycles per instruction 执行一条指令所需要的周期数) a、2 b、2.2 c、2.5 d、3 56、下列关于外部输入输出中断的叙述中,正确的是 : a、中断控制器按所接收中断请求的先后次序进行中断优先级排队 b、cpu响应中断时,通过执行中断隐指令完成对通用寄存器的保护 c、cpu只有在处于中断允许状态时,才能响应外部设备的中断请求 d、有中断请求时,cpu立即暂停当前指令执行,转去执行中断服务程序 57、对于一个五阶段流水线mips cpu的异常和中断处理,以下描述哪些是正确的? “算术溢出”异常在r-型指令的执行(exe)周期进行检测 “无效指令”异常在取数/译码(id)周期进行检测 "无效指令地址”、“缺页”和“访问越权”异常在取指令(if)周期检测 “无效数据地址”、“缺页”和“访问越权”异常在存储器访问(mem)周期检测 “ 中断”可在每条指令的最后一个周期(wb)的最后进行检测 一旦检测到中断或者异常立即处理,才能保证“精确中断” a、1,2,3,4,5 b、全对 c、1,2,3,4 d、1,2,3,4,6猜你喜欢 2022-12-05 21:23 2022-12-05 21:18 2022-12-05 20:26 2022-12-05 20:13 2022-12-05 19:29 2022-12-05 19:15 2022-12-05 19:06 2022-12-05 19:01 2022-12-05 18:57 2022-12-05 18:51