DRAM非常重要,但是我发现我并没有真正的懂DRAM的整个架构与执行流程。
image.png上图为DRAM的硬件结构,右图CAP为电容,WL表示一个晶体管。若要DRAM密度变大,则会使得取CAP数据的难度加大,所以DRAM不能无限扩容。
image.png image.png image.pngimage.png
整个DRAM的结构如上图所示,其中Chip、Bank以及Row/Column的概念比较重要。
image.png读取数据的时候,开始Row Decoder会将一个row读到Sense Amps(row buffer)中,然后由Column decoder读具体的数据cell。
image.png操作包括三个步骤:Activate、读写、充电(读取的时候会破坏数据,所以需要重写)。
而这里我们疑惑,到底一个<row,column>对应的数据量有多大呢?
image.png根据上图所知,一个行列选中的cell中包括了1B(8bit)的数据。
image.png而如果需要找一个cache line,那么需要通过八个Chip分别找对应<Row-0, Col-1>的数据8*8B=64B(这样快很多)。而这里要注意,我们的Chip是并行读取数据,然而一个Chip中其实包括了8个Bank,但是一个Chip中我只能读一个Bank上的数据,而不是并行,是或的关系。操作流程如下:
image.png首先我想读取64B的cache line,那么我需要将任务分担给8个Chip。
image.png image.png一个Chip中分了8Byte的读取任务,此时,我需要在一个Chip中找到一个Bank,我需要从这个Bank中读出这8Byte数据。如上两图。
image.png此外,这里DRAM的最小读写粒度为64bit。
http://web.cecs.pdx.edu/~zeshan/hw2_sol.pdf这个网页中也贴出来了许多DRAM的参数计算方式,包括Row、Column的个数等。
真实硬件:
image.png其中黑色的颗粒就是我们所说的Chip。
网友评论