首页 > 试题广场 >

某计算机主存按字节编址,由4个64M×8位的DRAM芯片采用

[单选题]
某计算机主存按字节编址,由 4 个 64M×8 位的 DRAM 芯片采用交叉编址方式构成,并与宽度为 32 位的存 储器总线相连,主存每次最多读写 32 位数据。若 double 型变量 x 的主存地址为 804 001AH,则读取 x 需要的存储周期数是

  • 1
  • 2
  • 3
  • 4
发表于 2022-10-03 15:04:29 回复(1)
网上找答案看了很多回答,感觉找不到自己能完全理解的解释,以下整理了两种出现的多的方法以及我自己的一些理解

首先 double 的存储在芯片中是下图这么存的


方法1:
读取双精度浮点型数据就是读取64位数据,即从M2开始按交叉编址的顺序往后读 8 个字,在这里就晓得这种解法可以和具体地址无关

题目的问题问的是,存取周期数而不是存取时间,存取周期 = 存取时间 + 恢复时间 

按流水线的算法算出总时间 t = T + 7 * T / 4 = 2 * T + 3 * T / 4 ≈ 3T(根据题意显然是向上取整)


方法2:
另外一种解法大概就是利用题目所说每次最多读写 32 位数据+边界不对齐这两点来判断解题的思路,所以得先从 M0 开始读取,读三行,每行时间读取时间为 T,所以总共需要三个存取周期。


个人看法1:
如果让我反驳方法2认可方法1的话,我认为题目中的最多 32 位这个条件就是为了说明使多体并行的结构成立,也就是 4 个存储器,每个存储器的存储单元为 8 bit,4 * 8 = 32,而多体并行存储器的并行是按流水线的算法来运作的,也就是并不是真正的同时运行,只是在读取过程中最多有 4 个存储周期在时序上重叠而已。实际上存储器的占用和释放都是错开的,不是同时的。所可能不能简单地理解为我每次读多少个内存块,每次花多少时间。

个人看法2:
如果让我反驳方法1认可方法2的话,我的想法是,4个DRAM芯片最后是连到宽度为32位的数据总线上的,所以不需要采取每个模块按流水线的方法来交替激活和释放,可以每次直接同时选择四个芯片进行传输
发表于 2022-06-11 21:46:13 回复(6)
不是,一次读取32位说明是低位交叉编址,4个芯片,四体并行低位交叉存储器总共就4个模块,不存在2-9,低位交叉编址后两位为模块体的体号,(A=10%4=2,体号从0开始)double是64位也就是8B字节,按字节编址,要读8个字节,每次可读32位也就是4个字节,低位交叉编址第一轮是(模块2-模块3)第二轮是(0-3)最后一轮是(模块0-1)就读完了
发表于 2021-08-17 17:38:28 回复(0)
考时序的,和地址没有关系,两个周期取不完,
连续存取m个字所需的时间为t=T+(m-1)*r,T为存取周期,r为总线传输周期=1/4T
发表于 2021-10-26 19:37:39 回复(2)
这题答案不应该是2嘛?每次读32位难道不需要花2个周期?从第一个周期开始M2开始到第二个周期的M1正好两个周期,而且题目问的不正好是存储周期数吗?存储周期定义为模块存取一个字的周期T(定义在王道计算机组成原理24年P89第四行)。很显然这里的一个字为32位,double64位需要2个T。我想T为2更合理一些。
发表于 2024-05-23 20:56:07 回复(0)
我的猜想是,由于题目说的交叉编址,读取804 001A的数据要连续读出23456789地址的数,那么第一个周期读出23,第二个周期4567,第三个周期89。也有可能不是这样,只是猜想
发表于 2021-04-01 00:23:33 回复(0)