2.2.3. 再充电
谈及 DRAM 存取时,一个最常被忽略的主题是再充电(recharging)。如同 2.1.2 节所述,DRAM 记忆单元必须被持续地重新充电。对于系统的其余部分来说,这并不那么容易察觉。在对列10重新充电的时候,是不能对它存取的。在 [3] 的研究中发现「出乎意料地,DRAM 再充电的安排可能大大地影响效能」。
根据 JEDEC(联合电子装置工程委员会,Joint Electron Device Engineering Council)规范,每个 DRAM 记忆单元每隔 64ms 都必须重新充电。假如一个 DRAM 阵列有 8,192 列,这代表memory控制器平均每 7.8125μs 都得发出再充电命令(再充电命令能够伫列等待〔queue〕,因此在实务上,两次请求间的最大间隔能更长一些)。为再充电命令排程是memory控制器的职责。DRAM 模组纪录最后一次再充电的列的地址,并且自动为新的请求增加地址计数器。
关于再充电与发出命令的时间点,程序开发者能做的真的不多。但在解释量测结果时,务必将 DRAM 生命周期的这个部分记在心上。假如必须从正在被重新充电的列中取得一个关键的字组,处理器会被延误很长一段时间。重新充电要花多久则视 DRAM 模组而定。
10. 不管 [3] 与其它文献怎么说,列都是这项操作的对象(见 [18])。 ↩