GATE 2017 CS 组 1

2024年8月30日 | 阅读7分钟

49) 考虑一个 RISC 机器,其中每条指令的长度恰好为 4 字节。条件和无条件分支指令使用 PC 相对寻址模式,偏移量以字节为单位指定到分支指令的目标位置。此外,偏移量总是相对于程序序列中下一条指令的地址。考虑以下指令序列

指令编号指令
iadd R2, R3, R4
i+1sub R5, R6, R7
i+2cmp R1, R9, R10
i+3beq R1, Offset

如果分支指令的目标是 i,那么 Offset 的十进制值是 __________。

  1. -16
  2. -18
  3. 16
  4. 18

答案: A

说明

在此,我们假设第一条指令的地址从 2000 开始。

地址指令编号指令
2000iadd R2, R3, R4
2004i + 1sub R5, R6, R7
2008i + 2cmp R1, R9, R10
2012i + 3beq R1, Offset
2016下一条指令

根据问题,分支指令的目标是 'i'
所以,我们需要从当前指向的地址 2016 转到地址 2000,2016 - 2000 = 16
现在,根据程序计数器 (PC) 相对模式,
有效 PC 地址 = 下一条指令地址 + 偏移量 = 16 + 偏移量
因此,偏移量 = - 16

因此,选项(A)是正确答案。


50) 处理器中的指令执行分为 5 个阶段:指令获取 (IF)、指令译码 (ID)、操作数获取 (OF)、执行 (EX) 和写回 (WB)。这些阶段分别需要 5、4、20、10 和 3 纳秒 (ns)。处理器的流水线实现需要在每对连续阶段之间进行缓冲,延迟为 2ns。考虑了处理器的两种流水线实现:

(i) 一个具有 5 个阶段的朴素流水线实现 (NP),以及
(ii) 一个高效的流水线 (EP),其中 OF 阶段被分为 OF1 和 OF2 两个阶段,执行时间分别为 12ns 和 8ns。

在执行 20 条独立指令且无冲突的情况下,EP 相对于 NP 的加速比(精确到小数点后两位)为 ________________。

  1. 1.50-1.51
  2. 1.51-1.52
  3. 1.52-1.53
  4. 1.53-1.54

答案: A

说明

给定,总指令数 = 20

情况 1:对于朴素流水线 (NP)
阶段数 = 5
时钟周期时间 = max { (阶段延迟 + 缓冲延迟) } = { 7, 6, 22, 12, 5 } = 22 ns
执行时间 (Enp) = ( 阶段数 + 指令数 - 1 ) * 时钟周期时间
       = ( 5 + 20 - 1)* 22 = 528 ns

情况 2:对于高效流水线 (EP)
阶段数 = 6 (延迟为 20 ns 的阶段被分为 12 ns 和 8 ns)
时钟周期时间 = max { (阶段延迟+缓冲延迟) } = { 7, 6, 14, 10, 14, 5 } = 14 ns
执行时间 (Enp) = ( 阶段数 + 指令数 - 1 ) * 时钟周期时间
       = ( 6 + 20 - 1 )* 14 = 350 ns
所以,加速比 = (Enp) / (Eep) = 528 / 350 = 1.508

因此,选项(A)是正确答案。


51) 考虑一个 2 路组相联缓存,具有 256 个块,并使用 LRU 替换策略。最初缓存为空。冲突未命中是由于多个块争用同一缓存集而导致的未命中。强制未命中是由于第一次访问块而发生的未命中。以下内存块访问序列

(0,128,256,128,0,128,256,128,1,129,257,129,1,129,257,129)

重复 10 次。缓存遇到的冲突未命中次数为 ___________。

  1. 78
  2. 76
  3. 74
  4. 80

答案: B

说明

第 1 次迭代:{ 0,128,256,128,0,128,256,128 }

块 ID类型Set0 内容
0强制未命中0
128强制未命中0 128
256强制未命中128 256
128Hit256 128
0冲突未命中128 0
128Hit0 128
256冲突未命中128 256
128Hit256 128

所以,Set0 中的总冲突未命中次数 = 2
类似地,对于:{1,129,257,129,1,129,257,129}
Set1 中的总冲突未命中次数 = 2
因此,第 1 次迭代中的总冲突未命中次数 = 2+2 = 4
第 2 次迭代:{0,128,256,128,0,128,256,128}

块 ID类型Set0 内容
0冲突未命中128 0
128Hit0 128
256冲突未命中128 256
128Hit256 128
0冲突未命中128 0
128Hit0 128
256冲突未命中128 256
128Hit256 128

Set1 中的总冲突未命中次数 = 4。
类似地,对于:{1,129,257,129,1,129,257,129}
Set1 中的总冲突未命中次数 = 4
所以,第 2 次迭代中的总冲突未命中次数 = 4 + 4 = 8
现在,对于迭代 3...10,每个集合的内容都是相同的。因此,剩余的每次迭代也将有 8 次冲突未命中。
因此,总体冲突未命中次数 = 4 + 8 * 9 = 76

因此,选项(B)是正确答案。


52) 考虑表达式 (a-1) * ((( b + c ) / 3 )) + d))。设 X 为具有负载/存储架构的优化代码生成(无寄存器溢出)算法所需的最小寄存器数,其中

(i) 只有加载和存储指令可以有内存操作数,并且
(ii) 算术指令只能有寄存器或立即数操作数。

X 的值是 ________。

  1. 2
  2. 1
  3. 4
  4. 3

答案: A

说明

使用负载/存储架构,汇编代码可以写成如下:
Load R1, b
Load R2, c
ADD R1, R2
Div R1, 3
Load R2, d
Add R1, R2
Load R2, a
Sub R2, 1
Mul R2, R1
这里,只使用了两个寄存器(R1 和 R2)。因此选项()是正确答案。


53) 考虑以下 C 程序。

回想一下,strlen 在 string.h 中定义为返回 size_t 类型的值,这是一个 unsigned int。程序的输出是 _________。

  1. 2
  2. 3
  3. 4
  4. 5

答案: B

说明

((strlen(s) - strlen(t)) > c) ? strlen (s): strlen (t)
= (3 - 5 > 0)
= (-2 > 0)
从上面的代码可以看出,三元运算符 "?" 总是返回 strlen(s) 的值,即 3,并赋值给 len,因为三元运算符在条件为真时返回第一个值,否则返回第二个值。所以最终打印的值将是 3。

因此,选项 (B) 将是正确答案。


54) 要设计一个容量为 N 字、块大小为 B 字的缓存单元。如果它被设计为直接映射缓存,则 TAG 字段的长度为 10 位。如果缓存单元现在被设计为 16 路组相联缓存,则 TAG 字段的长度为 ______ 位。

  1. 12
  2. 14
  3. 16
  4. 18

答案: B

说明

直接映射

Tag 字段 - 10行号 (Log N/B)偏移量 (Log B)

16 路组相联

在这里,tag 字段大小 = 10 + log216 = 14 位,因为对于 k 路组相联映射设计,需要比直接映射设计中 tag 字段的位数额外增加 log2k 位。

Tag 字段 - 10集合号 (Log N/16B)偏移量 (Log B)

因此,选项 (B) 是正确答案。


55) 执行以下 C 程序的输出是 ________。

  1. 23
  2. 24
  3. 26
  4. 27

答案: A

说明

根据问题,数字是:5->0101, 4->0100, 3->0011, 2->0010, 1->0000

所以,1 的计数是

在数字(5)中 -> 计数 = 2
在数字(4)中 -> 2+1 = 3, 计数 = 3
在数字(3)中 -> 3+2 = 5, 计数 = 5
在数字(2)中 -> 5+1 = 6, 计数 = 6
在数字(1)中 -> 6+1 = 7, 计数 = 7

在主块中,它将累加外循环的所有值,即 2+3+5+6+7 = 23

因此,选项 (A) 是正确答案。


56) 罗杰特·乔拉从印度尼西亚航行归来后,他 ______ 去坦贾武尔的寺庙。

  1. was wishing
  2. is wishing
  3. wished
  4. had wished

答案:C

说明

根据规则:如果主句是过去式或过去完成时,从句也应该是过去式或过去完成时。

因此,选项 (C) 是正确选项。


GATE 2017 CS 组 1-1
GATE 2017 CS Set 1-2
GATE 2017 CS Set 1-3
GATE 2017 CS Set 1-4
GATE 2017 CS Set 1-5
GATE 2017 CS Set 1-6
GATE 2017 CS Set 1-8