计算机组成原理试题解析
1.下列选项中,描述浮点数操作速度指标的是 A.MIPS B.CPI C.IPC D.MFLOPS
2.float 型数据通常用IEEE 754 单精度浮点数格式表示。若编译器将float 型变量x 分配在一个32 位浮点寄存器FR1 中,且x = -8.25,则FR1 的内容是 A.C104 0000H B.C242 0000H C.C184 0000H D.C1C2 0000H 考查浮点数的表示。 x的二进制表示为-1000.01﹦-1.000 01×211,根据IEEE 754,标准隐藏最高位的“1”,又E-127=3,所以E=130=1000 0010B,还因数据存储顺序为1位数符+8位阶码(含阶符)+23位尾数。 故,FR1内容为1 10000 0010 0000 10000 0000 0000 0000 000 即,1100 0001 0000 0100 0000 0000 0000 0000=C104000H。
3.下列各类存储器中,不采用随机存取方式的是 A.EPROM B.CDROM C.DRAM D.SRAM 考查随机存取存储器。 随机存取方式是指存储器的任何一个存储单元的内容都可以存取,而且存取时间与存储单元的物理位置无关。选项A、C、D均采用随机存取方式,CD-ROM即光盘,采用串行存取方式。
考查存储器的编制。 按字节编址,64MB的主存地址空间,MAR的寻址范围是64M,故而是26位,而实际的主存的空间不能代表MAR的位数。 4.某计算机存储器按字节编址,主存地址空间大小为64 MB,现用4M × 8 位的RAM 芯片组 成32 MB 的主存储器,则存储器地址寄存器MAR 的位数至少是 A.22 位 B.23 位 C.25 位 D.26 位 考查存储器的编制。 按字节编址,64MB的主存地址空间,MAR的寻址范围是64M,故而是26位,而实际的主存的空间不能代表MAR的位数。
5.偏移寻址通过将某个寄存器内容与一个形式地址相加而生成有效地址。下列寻址方式中,不属于偏移寻址方式的是 A.间接寻址 B.基址寻址 C.相对寻址 D.变址寻址 考查寻址方式。 间接寻址不需要寄存器,EA=(A)。基址寻址:EA=A+基址寄存器内同;相对寻址:EA﹦A+PC内容;变址寻址:EA﹦A+变址寄存器内容。
6.某机器有一个标志寄存器,其中有进位/借位标志CF、零标志ZF、符号标志SF 和溢出标志OF,条件转移指令bgt(无符号整数比较大于时转移)的转移条件是 A.CF+OF=1 B.SF+ZF =1 C.CF+ZF =1 D.CF+SF =1 考查条件转移指令。 无符号整数比较A>B的情况,bgt指令会将两个无符号数进行比较,也就是将A和B相减。A-B无进位/借位,也不为0(为0时表示两数相同),故而CF和ZF均为0。
7.下列给出的指令系统特点中,有利于实现指令流水线的是 I. 指令格式规整且长度一致 II.指令和数据按边界对齐存放 III.只有Load/Store 指令才能对操作数进行存储访问 A.仅I、II B.仅II、III C.仅I、III D.I、II、III 考查指令流水线的优化。 指令定长、对齐、仅Load/Store指令访存,以上3个都是RISC的特征,使取指令、取操作数操作简化且时间长度固定,能够有效地简化流水线的复杂度。
8.假定不采用Cache 和指令预取技术,且机器处于“开中断”状态,则在下列有关指令执行的叙述中,错误的是 A.每个指令周期中CPU 都至少访问内存一次 B.每个指令周期一定大于或等于一个CPU 时钟周期 C.空操作指令的指令周期中任何寄存器的内容都不会被改变 D.当前程序在每条指令执行结束时都可能被外部中断打断 考查指令周期。 A由于没有采用指令预取技术,故而取指令要访存;B时钟周期对指令是不可分割的;C空指令能够使PC寄存器自动加1,故而不正确;D在指令执行结束时刻,CPU查询是否有中断请求,故而可能被中断。
9.在系统总线的数据线上,不可能传输的是 A.指令 B.操作数 C.握手(应答)信号 D.中断类型号 考查总线的特点。 数据线可能传输指令,当取指令时,指令便是在数据线上传输的;操作数显然在数据线上传输。中断类型号是用以指出中断向量地址的,CPU响应中断请求后,将中断应答信号(INTR)发回到数据总线上,CPU从数据总线上读取中断类型号后,就可以通过这个中断类型号在中断向量表上找到该设备的中断服务程序入口地址,转入中断服务程序,而握手(应答)信号应该在通信总线上传输。
考查中断屏蔽字。 高优先级置0表示可被中断,比该中断优先级低(相等)的置1表示不可被中断,只能屏蔽L3和其自身。 10.某计算机有五级中断L4 ~ L0,中断屏蔽字为M4M3M2M1M0,Mi=1(0≤i≤4)表示对Li级中断进行屏蔽。若中断响应优先级从高到低的顺序是L0→L1→L2→L3→L4,且要求中断处理优先级从高到低的顺序为L4→L0→L2→L1→L3,则L1 的中断处理程序中设置的中断屏蔽字是 A.11110 B.01101 C.00011 D.01010 考查中断屏蔽字。 高优先级置0表示可被中断,比该中断优先级低(相等)的置1表示不可被中断,只能屏蔽L3和其自身。
A.0.02% B.0.05% C.0.20% D.0.50% 考查程序查询方式。 11.某计算机处理器主频为50 MHz,采用定时查询方式控制设备A 的I/O,查询程序运行一次所用的时钟周期数至少为500。在设备A 工作期间,为保证数据不丢失,每秒需对其查询至少200 次,则CPU 用于设备A 的I/O 的时间占整个CPU 时间的百分比至少是 A.0.02% B.0.05% C.0.20% D.0.50% 考查程序查询方式。 每秒200次查询,每次500个时钟周期,则每秒最少占用200×500﹦10 0000个时钟周期,占CPU时间比为100000÷50M=0.20%。
假定在一个8 位字长的计算机中运行如下类C 程序段: unsigned int x = 134; unsigned int y = 246; int m = x; int n = y; unsigned int z1 = x–y; unsigned int z2 = x+y; int k1 = m–n; int k2 = m+n; 若编译器编译时将8 个8 位寄存器R1 ~ R8 分别分配给变量x、y、m、n、z1、z2、k1和k2。请回答下列问题。(提示:带符号整数用补码表示) (1)执行上述程序段后,寄存器R1、R5 和R6 的内容分别是什么?(用十六进制表示) (2)执行上述程序段后,变量m 和k1 的值分别是多少?(用十进制表示) (3)上述程序段涉及带符号整数加/减、无符号整数加/减运算,这四种运算能否利用 同一个加法器及辅助电路实现?简述理由。 (4)计算机内部如何判断带符号整数加/减运算的结果是否发生溢出?上述程序段中, 哪些带符号整数运算语句的执行结果会发生溢出?
【答案解析】此题考察的知识点是程序编译运行时各寄存器的运用与变化。 (1)寄存器R1 存储的是134,转换成二进制为1000 0110B,即86H。寄存器R5 存储的是x-y 的内容,x-y=-112,转换成二进制为1001 0000B,即90H。寄存器R6存储的是x+y 的内容,x+y=380,转换成二进制为1 0111 1100B(前面的进位舍弃),即7CH。由于计算机字长为8 位,所以无符号整数能表示的范围为0~255。而x+y=380,故溢出。 (2)m 二进制表示为1000 0110B,由于m 是int 型,所以最高位为符号位,所以可以得出m 的原码为:1111 1010(对1000 0110 除符号位取反加1),即-122。同理n的二进制表示为1111 0110B,故n 的原码为:1000 1010,转成十进制为-10。所以k1=-122-(-10)=-112.
(3)可以利用同一个加法器及辅助电路实现。因为无符号整数都是以补码形式存储,所以运算规则都是一样的。但是有一点需要考虑,由于无符号整数和有符号整数的表示范围是不一样的,所以需要设置不一样的溢出电路。 (4)带符号整数只有k2 会发生溢出。分析:8 位带符号整数的补码取值范围为:-128~+127,而k2=m+n=-122-10=-132,超出范围,而k=-112,在范围-128~+127之内。三种方法可以判断溢出:双符号位、最高位进位、符号相同操作数的运算后与原码操作数的符号不同则溢出。
某计算机存储器按字节编址,虚拟(逻辑)地址空间大小为16 MB,主存(物理)地址空间大小为1 MB,页面大小为4 KB;Cache 采用直接映射方式,共8 行;主存与Cache 之间交换的块大小为32 B。系统运行到某一时刻时,页表的部分内容和Cache的部分内容分别如a 图、b 图所示,图中页号及标记字段的内容为十六进制形式。 请回答下列问题。 (1)虚拟地址共有几位,哪几位表示虚页号?物理地址共有几位,哪几位表示页框号 (物理页号)? (2)使用物理地址访问Cache 时,物理地址应划分成哪几个字段?要求说明每个字段 的位数及在物理地址中的位置。 (3)虚拟地址001C60H 所在的页面是否在主存中?若在主存中,则该虚拟地址对应的 物理地址是什么?访问该地址时是否Cache 命中?要求说明理由。
1 2 3 4 5 6 7 1 2 3 4 5 6 7 虚页号 有效位 页框号 。。。 虚页号 有效位 页框号 。。。 1 06 ... 虚页号 有效位 页框号 。。。 虚页号 有效位 页框号 。。。 1 2 3 4 5 6 7 1 06 ... 04 15 02 -- 2B 32 1 2 3 4 5 6 7 1 020 ... -- 01D 105 064 14D 27A 图a 页表的部分内容 图b cache的部分内容 (4)假定为该机配置一个4 路组相联的TLB,该TLB 共可存放8 个页表,若其当前内容(十六进制)如题44-c 图所示,则此时虚拟地址024BACH 所在的页面是否在主存中?要求说明理由。 图c TLB的部分内容
【答案解析】此题考察的知识点是计算机的地址管理。 (1)由于虚拟地址空间大小为16MB,且按字节编址,所以虚拟地址共有24 位(224=16M)。由于页面大小为4KB(212=4K),所以虚页号为前12 位。由于主存(物理)地址空间大小为1MB,所以物理地址共有20 位(220=1M)。由于页内地址12 位,所以20-12=8,即前8 位为页框号。
(2)由于Cache 采用直接映射方式,所以物理地址应划分成3 个字段,如下: 12位 3位 5位 主存字块标记 cache字块标记 字块内地址 分析:由于块大小为32B,所以字块内地址占5 位。Cache 共8 行,故字块标记占3 位,所以主存字块标记占 20-5-3=12 位。
(3)虚拟地址001C60H 的虚页号为前12 位,即001H=1。查表可知,其有效位为1,故在内存中。虚页号为1 对应页框号为04H,故物理地址为04C60H。由于采用的是直接映射方式,所以对应Cache 行号为4。尽管有效位为1,但是由于标记位04CH≠064H,故不命中。
(4)由于采用了4 路组相联的,所以Cache 被分为2 组,每组4 行。所以物理地址应划分成3 个字段,如下: 11位 1位 12位 标记位 组号 页内地址 将024BACH 转成二进制为:0000 0010 0100 1011 1010 1100,可以看出组号为0,标记为 0000 0010 010,换成十六进制为0000 0001 0010(高位补一个0),即012H,从图c 中的0 组可以看出,标记为012H 页面的页框号为1F,故虚拟地址024BACH 所在的页面在主存中。