Skip to content

2015年 408 计算机组成原理 第 18 题

计算机组成原理2015年选择题2分

题目

某计算机使用 4 体交叉编址存储器,假定在存储器总线上出现的主存地址(十进制)序列为 8005,8006,8007,8008,8001,8002,8003,8004,8000,则可能发生访存冲突的地址对是( )。

错因

A

只看到 8004 和 8008 都落在体 0(地址 mod 4 = 0),就直接判冲突——忽略了它们在序列中的位置间隔。8008 在第 4 位、8004 在第 8 位,间隔 4 个时钟周期,正好等于 4 体交叉的存储周期 。也就是说,体 0 在被 8008 启动后过 4 个时钟就恢复空闲,正好可以接 8004——不冲突。判冲突不能只看"体号相同",还要看"间隔是否 ≥ m(体数)"。

B

8002 mod 4 = 2,8007 mod 4 = 3——这俩根本不在同一个体上,怎么也冲突不了。挑 B 的人多半是没拿计算器(或心算)算各地址的体号,看到"两个地址相邻"就猜冲突。

C

8001 mod 4 = 1,8008 mod 4 = 0——也是不同体,不冲突。错答原因同 B:没用模运算算体号,凭直觉选。

总解析

核心思路:4 体交叉编址下,发生冲突的条件是 "两次访问落在同一个体" 且 "间隔 < 4 个时钟周期"——前者用 判定,后者数序列位置。

第一步:算每个地址的体号(mod 4)

序号地址mod 4落在第几体
180051体 1
280062体 2
380073体 3
480080体 0
580011体 1
680022体 2
780033体 3
880040体 0
980000体 0

体 0 出现在位置 4、8、9(共 3 次),其余每体各 2 次。

第二步:判定冲突的两个条件

4 体交叉的工作机制:单体存储周期 = ,每个时钟启动一个体,4 个时钟启动完所有 4 个体后,第 1 个体已经空闲、可被再次启动。

同体两次访问的位置间隔是否冲突
间隔 ≥ 4(体已恢复空闲)
间隔 < 4(前一次还在忙) ⚠️

第三步:检查所有"同体"配对

体 0 共 3 次:位置 4、8、9。两两组合:

同体对位置间隔是否冲突
8008(位 4) — 8004(位 8)4否(恰好等于体周期,刚恢复就接)
8008(位 4) — 8000(位 9)5否(间隔 ≥ 4)
8004(位 8) — 8000(位 9)1是 ⚠️(前一次还在忙)

体 1 两次(位 1、5),间隔 4,不冲突。 体 2 两次(位 2、6),间隔 4,不冲突。 体 3 两次(位 3、7),间隔 4,不冲突。

唯一的冲突就在 8004 与 8000 这一对。

第四步:核对各选项

选项体号间隔是否冲突
A. 8004 ↔ 80080, 04
B. 8002 ↔ 80072, 3否(根本不同体)
C. 8001 ↔ 80081, 0否(根本不同体)
D. 8000 ↔ 80040, 01

最终答案是 D(8000 和 8004)

多体交叉访存冲突判定的两步法

  1. 先用 (m = 体数)算每个地址的体号——不同体直接淘汰
  2. 同体的,看序列位置间隔——间隔 < m 才是真冲突

为什么巧妙的取序列:本题地址序列特意构造成 8005~8008、8001~8004、8000,前两段各自 4 个连续地址都落在 4 个不同体,无冲突;只有最后一个 8000 紧跟 8004(同体),间隔仅 1,才暴露出冲突。出题人显然在考"是否会区分'同体' vs '同体且间隔不足'"。

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数