9.5 单项选择题
第 3 版 · OCR 辅助 · 原书检索 · 文字用于定位,公式与图表请回原页核验 · 本次导入快照
# 9.5 单项选择题
1. 按照 Flynn 分类法给出的以下 4 种计算机体系结构中,实际不存在的是( )。
A, SISD
B, SIMD
C, MISD
D, MIMD
2. 按照 Flynn 分类法给出的以下 4 种计算机体系结构中,实际存在且是串行处理方式的是( )。
A, SISD
B, SIMD
C, MISD
D, MIMD
3. 以下关于多处理器系统的叙述中,错误的是( )。
A. 多处理器系统是共享存储多处理器系统的简称
B. 多处理器系统中所有主存储器都属于单一地址空间
C. 多处理器系统必须解决共享存储器的同步控制问题
D. 多处理器系统中各处理器对所有存储单元的访问时间一致
4. 以下关于 UMA 多处理器系统的叙述中,错误的是( )。
A. UMA 多处理器系统就是对称多处理器系统 (SMP)
B. 通过 Load/Store 指令可直接访问系统中所有主存空间
C. 每个处理器与每个共享存储器之间的相对位置是等价的
D. 通常 UMA 多处理器系统规模比 NUMA 多处理器系统规模大
5. 以下关于 NUMA 多处理器系统的叙述中,错误的是( )。
A. 所有主存模块统一编址以形成单一主存地址空间
B. 非本地主存储器模块也可通过 Load/Store 指令访问
C. 在存储访问过程中不同节点之间无须进行消息传递
D. CC-NUMA 多处理器系统必须支持 cache 一致性机制
6. 硬件多线程技术是一种共享单个处理器核内功能部件的技术。以下关于硬件多线程的叙述中,错误的是( )。
A. 每个线程实际上相当于一个指令序列
B. 多个线程可共享核内的通用寄存器组和 PC
C. 细粒度和粗粒度多线程都是指线程并发执行
D. 同时多线程(SMT)是一种多线程并行执行技术
7. 以下关于各类多处理器系统中存储器一致性问题的叙述中,错误的是( )。
A. 单核处理器采用动态流水线调度改变访存指令执行顺序,故存在存储器一致性问题
B. 多核处理器系统中所有处理器核共享一个主存储器,故必须考虑存储器一致性问题
C. 硬件多线程处理器中不同处理器核内多个线程共享主存,故必须考虑存储器一致
<!-- page: 289 -->
性问题
D. 多处理器系统所有主存储器统一编址在单一地址空间中,故必须考虑存储器一致性问题
8. 以下关于 3 种存储器一致性模型的约束要求比较的描述中,正确的是( )。
A. 顺序一致性模型 > 宽松一致性模型 > 释放一致性模型
B. 宽松一致性模型 > 顺序一致性模型 > 释放一致性模型
C. 顺序一致性模型 > 释放一致性模型 > 宽松一致性模型
D. 宽松一致性模型 > 释放一致性模型 > 顺序一致性模型
9. 以下关于集群多计算机系统的叙述中,错误的是( )。
A. 每个节点可以是普通 PC
B. 适用于构建大型 Web 服务器
C. 通过消息传递进行通信
D. 是松散耦合异构多计算机系统
10. 以下关于并行处理编程模式的叙述中,错误的是( )。
A. Pthread 采用共享存储变量并行处理编程模式,可用于多处理器系统
B. MPI 函数属于消息传递并行处理编程模式,可用于集群多计算机系统
C. OpenMP 通过在串行程序中插入编译指导命令指示编译生成并行执行程序段
D. MapReduce 是一个用于多处理器系统的并行计算编程框架和并行程序设计模型
【参考答案】
1. C
2. A
3. D
4. D
5. C
6. B
7. A
8. A
9. D
10. D
9.6 分析应用题
1. 假定 a,b,c,d 都是 int 型数组,对于 C 语言程序中的语句 “for(i=0; i<64; i++)d[i]=a[i]*b[i]+c[i];”,可以通过将以下标量指令序列执行 64 次来实现其功能。
Load R1, a[i] //R[R1]←a[i]
Load R2, b[i] //R[R2]←b[i]
Multi R3, R1, R2 //R[R3]←a[i]*b[i]
Load R1, c[i] //R[R1]←c[i]
Add R2, R3, R1 //R[R2]←a[i]*b[i]+c[i]
Store R2, d[i] //d[i]←a[i]*b[i]+c[i]
请回答下列问题:
(1)假定在采用多周期处理器的 SISD 计算机上 Load、Store、Multi、Add 指令的 CPI 分别为 5、4、10、2,在不考虑其他如对 $i$ 增量、比较跳转指令等所有额外开销的情况下,上述指令序列重复执行 64 次所需的时钟周期数是多少?
(2)假定在采用 10 级流水线的 SISD 计算机上重复执行上述指令序列 64 次,在不考虑其他如对 $i$ 增量、比较跳转等指令和流水线阻塞等所有额外开销的情况下,上述指令序列重复执行 64 次所需的时钟周期数是多少?
(3)假定在一台支持向量处理并具有 32 个宽度为 $64 \times 4B$ 向量寄存器的 SIMD 计算机上执行下列向量指令序列,向量指令 V_Load、V_Store、V_Multi、V_Add 的 CPI 分别为 10、
<!-- page: 290 -->
10、10、2,在不考虑 cache 缺失等所有额外开销的情况下,所需的时钟周期数是多少?
[tbl-52.md](tbl-52.md)
(4) 假定在一台支持向量处理并具有 32 个宽度为 $64 \times 4B$ 向量寄存器的 SIMD 计算机上执行 (3) 中给出的向量指令序列,向量指令 V_Load、V_Store、V_Multi、V_Add 等都在一个 10 级流水线中执行,在不考虑 cache 缺失等所有额外开销的情况下,所需的时钟周期数是多少?
【分析解答】
(1) 每次执行该指令序列需要 $3 \times 5 + 1 \times 4 + 1 \times 10 + 1 \times 2 = 31$ 个时钟周期,重复执行 64 次共需要 $64 \times 31 = 1984$ 个时钟周期。
(2) 在不考虑流水线阻塞的前提条件下,采用 10 级流水线的 SISD 计算机其 CPI 为 1,按照 4 条指令中最复杂的 Multi 指令所用的 10 个时钟周期为基础划分成 10 级流水线,在不考虑流水段寄存器延迟等前提下,其时钟周期宽度与 (1) 中多周期处理器的时钟周期宽度相当。重复执行 64 次指令序列,共执行 $64 \times 6 = 384$ 条指令,因此,所需时钟周期数约为 384 个。
(3) 在 SIMD 计算机上执行向量指令序列一次即可完成,在不考虑 cache 缺失等所有额外开销的情况下,所需时钟周期数为 $3 \times 10 + 1 \times 10 + 1 \times 10 + 1 \times 2 = 52$ 个。
(4) 向量指令在一个 10 级流水线中执行,在不考虑 cache 缺失等引起的所有流水线阻塞开销情况下,所需的时钟周期数大约是 $3 + 1 + 1 + 1 = 6$ 个。
<!-- page: 291 -->
# 参考文献
[1] PATTERTSON D A, HENNESSY J L. Computer Organization and Design: The Hardware/Software Interface[M]. RISC-V Edition. San Francisco: Morgan Kaufmann Publishers Inc., 2018.
[2] BRYANT R E, O'HALLARON D R. 深入理解计算机系统[M]. 龚奕利, 贺莲, 译. 北京: 机械工业出版社, 2016.
[3] 袁春风. 计算机组成与系统结构[M]. 3版. 北京: 清华大学出版社, 2022.
[4] 袁春风. 计算机组成与系统结构习题解答和教学指导[M]. 2版. 北京: 清华大学出版社, 2016.
[5] 袁春风, 余子潼. 计算机系统基础[M]. 2版. 北京: 机械工业出版社, 2018.
[6] 黄宜华, 苗凯翔. 深入理解大数据 大数据处理与编程实践[M]. 北京: 机械工业出版社, 2014.
[7] 张舒, 褚艳利. GPU高性能运算之CUDA[M]. 北京: 中国水利水电出版社, 2009.