2.2.3. 再充電
談及 DRAM 存取時,一個最常被忽略的主題是再充電(recharging)。如同 2.1.2 節所述,DRAM 記憶單元必須被持續地重新充電。對於系統的其餘部分來說,這並不那麼容易察覺。在對列10重新充電的時候,是不能對它存取的。在 [3] 的研究中發現「出乎意料地,DRAM 再充電的安排可能大大地影響效能」。
根據 JEDEC(聯合電子裝置工程委員會,Joint Electron Device Engineering Council)規範,每個 DRAM 記憶單元每隔 64ms 都必須重新充電。假如一個 DRAM 陣列有 8,192 列,這代表記憶體控制器平均每 7.8125μs 都得發出再充電命令(再充電命令能夠列隊等待〔queue〕,因此在實務上,兩次請求間的最大間隔能更長一些)。為再充電命令排程是記憶體控制器的職責。DRAM 模組紀錄最後一次再充電的列的位址,並且自動為新的請求增加位址計數器。
關於再充電與發出命令的時間點,程式設計師能做的真的不多。但在解釋量測結果時,務必將 DRAM 生命週期的這個部分記在心上。假如必須從正在被重新充電的列中取得一個關鍵的字組,處理器會被延誤很長一段時間。重新充電要花多久則視 DRAM 模組而定。
10. 不管 [3] 與其它文獻怎麼說,列都是這項操作的對象(見 [18])。 ↩