需要了解的知识,不影响实验
-
主存访问很慢,CPU访问很快
不妨想想我们从真实的内存(以一个DRAM(动态随机存取存储器)代替)取一个地址对应的数据(一条指令)
(关于DRAM详情ROM,RAM与Flash
更具体的在大二下的COD课程回学习)几个特征需要注意:
-
DRAM每隔一段时间就要刷新一次数据:
- 导致不一定每一个时钟能够取得一个数据(后面讲Cache与CPU会提到,这里读者需要默认,CPU要求每一个时钟都能取得一个数据)
- 以集中刷新为例,每2ms的刷新周期内,有 $ 64 微秒 $ 用于实际的刷新,无法提供数据
- 对应100Mhz的时钟,每个时钟周期为10ns,64us内有6400个时钟周期,其中有6400个时钟周期无法提供数据,CPU在这个期间无法工作。因为这里的数据就是对应PC提供的IR,没有IR,CPU不知道应该执行什么内容。
为了解决这个问题,我们引入了SRAM,特征就是,更快,而且没有刷新时间,逻辑上每一个时钟都可以出一个结果。但是更贵,所以我们只能用来做Cache,而DRAM用来做主存。
- 现在,我们不使用DRAM作为主存,使用SRAM中的BRAM
- 不使用DSRAM,原因见后
- 64位机器的内存的大小是\(2^{64}\),假设我们使用二叉树查找法,也需要通过64级选择器才能够访问到一个数据,这是不现实的,时延太长,会极大的拖延CPU的主频。
- 所以我们需要一个小一点的BRAM,它不能够作为主存,但是由于其更小,所以访问更快,使得CPU的主频更高。
- BRAM与DSRAM的对比:DSRAM(Distributed SRAM)通常每个时钟周期只提供一个地址的数据,因此它的访问延时较高。而BRAM(通常是FPGA等硬件平台中的片上存储)由于结构上采用了流水线化的设计,每个时钟周期可以提供数据,从而降低了访问延时。BRAM的访问速度比DSRAM要更快
- 至于不使用DSRAM,是因为与BRAM相比,DSRAM当周期给出地址对应的数据(对应的,BRAM就是切了一级流水,在下一个周期给出),延时极大,破坏了上面提到的增加主频(等价于减少组合逻辑的延时)的目的。