關於 memory 的讀書心得 #1

小記一下前陣子讀 What every programmer should know about memory 的心得。範圍為 1.1 ~ 2.1.4。我這方面相當弱, 有錯還請指正。

  • 用 DRAM 不用 SRAM 主因是造價, SRAM 要較多電晶體。文中的例子是 6 vs. 1 + 電容*1, 有更少電晶體的 SRAM, 但速度會變慢。
  • 但 DRAM 需要充電或放電來維持狀態, 因此需要較長的讀寫時間, 不如 SRAM 可以立即讀寫。
  • 不論 SRAM / DRAM, 記憶體愈大, 需要愈多的 address line, 4G 需要 32 條, 但不會有人用一個 (de)multiplexer 連接全部 cell, 那需要 2^32 輸出的線。
  • 替代方案是用 row address selection (RAS) + columns address selection (CAS) 分別表示上下 16 bit 的位置, 可大幅節省成本。
  • 更進一步, 用一組 16 條的 address line 配合另一個訊號表示這次是 RAS 或 CAS, 可再省一半的線路。
  • SRAM 多用在極需速度的地方, 像是 router, CPU cache, 視實作方式速度快慢不等, 最快可以只慢 CPU 一兩個數量級。

網友補充的內容如下:

  • (by vegafish) DRAM 需要充電的原因是由於電容在讀取data的時候會自然漏電,所以讀取的時候會同時接VDD讓還沒漏光的電容充滿,至於定期充滿的做法就是全部讀取一次。

留言

這個網誌中的熱門文章

(C/C++ ) 如何在 Linux 上使用自行編譯的第三方函式庫

熟悉系統工具好處多多

virtualbox 使用 USB 裝置