有什么方法可以根据数据大小计算DRAM访问延迟(周期)?

时间:2019-05-16 14:08:51

标签: memory latency

我需要使用在DRAM-SRAM之间传输的给定数据大小来计算DRAM访问延迟

将数据分离为“加载大小”和“存储大小”,并给出“加载和存储的迭代次数”。 我认为我需要考虑的功能很多,例如首次DRAM访问延迟,传输一个字延迟,地址加载延迟等。 是否有一些流行的方程式可以根据给定的信息来获取信息?

谢谢。

1 个答案:

答案 0 :(得分:0)

您的问题涉及很多部分,如果我知道最终目标,我想我可以提供更好的帮助?如果仅是为了测量访问延迟:

如果您使用的是x86处理器,那么Intel Memory Latency Checker会有所帮助

  

英特尔®内存延迟检查器(Intel®MLC)是用于测量内存延迟和黑白的工具,以及它们如何随着系统负载的增加而变化。它还为更细致的调查提供了几种选择,其中还可以测量从一组特定内核到缓存或内存的黑白和延迟。

如果不是x86,我认为您正在寻找Gem5模拟器,这里是main page,但更具体地说,对于您的需求,我认为此config for Gem5将是最有用的。

现在,关于一个流行的方程式,我能找到的最好的就是这张卡耐基·梅隆的论文,上面写着:https://users.ece.cmu.edu/~omutlu/pub/chargecache_low-latency-dram_hpca16.pdf但是,当您说它围绕核心和内存通道旋转时,它看起来像是您的主要“功能” 。本文中的等式:

Storagebits = C ∗MC ∗Entries∗(EntrySizebits +LRUbits)

用于创建一个缓存,该缓存最终(ChargeCache的目标)将减少DRAM中的访问延迟。我确定这不是您要寻找的方程式,只是难题的一部分。 LRUbits与该机制(在内存控制器中,无需修改DRAM)创建的缓存有关。

EntrySizebits由此方程EntrySizebits = log2(R)+log2(B)+log2(Ro)+1

确定
  

R,B和Ro分别是DRAM中的行数,存储体和行数

我很惊讶地发现(最近访问的)收费高的行将显着降低访问延迟。

如果这同样困扰您,也许Ulrich Drepper在2007年发表的这份题为What Every Programmer Should Know About Memory的论文将帮助您找到方程式所需的元素。我本人仍在研究本白皮书,虽然有一些过时的参考文献,但这些参考文献取决于您使用的cpu。希望这会有所帮助,因为我是该主题的新手,所以我希望在任何一个问题上得到纠正。