大家好,這里是大話硬件。
上一篇文章介紹了SDRAM基礎,了解到SDRAM的發展歷程。這篇文章主要總結SDRAM內部的構造和最基礎的內存訪問周期。
打開DDR的數據手冊,在Diagram這一頁如下所示:
上面的框圖說明SDRAM內部有大量banks,即多bank架構。這個多Bank有點像圖書館里面的書架。
下面是1Gb內存DDR3手冊,可以看到有8個Banks,對應到框圖里面的Bank0~Bank7
將Bank類比成書架,如下所示
在Bank內部,存在不同的行Rows,而每一行又有很多列columns
根據上面的類比,當需要讀取或者寫入數據時,也就是要借取或者還回某本書,需要3個地址信息,分別是哪個Bank(書架),哪一行,哪一列。
那么在DDR內部,完成一次數據的操作,具體是如何進行的呢?
芯片上電完成初始化后處理idle狀態。進行數據處理,主要有3步:
第一步:activating 激活
激活命令會把數據所在的bank一行,全部復制到bank對應的緩沖行里面,這里的行緩沖區訪問速度非常快。
可以類比成你需要在圖書館找到清華大學出版的電路書籍,你在前臺發出指令,圖書館會將一推車清華大學出版的電路書籍全部送到你面前。
第二步:讀取或寫入 read/write
此時數據在高速行緩沖區,可以直接進行讀取或者寫入。你能直接找你想要的具體的一本書籍。
第三步:預充電 precharge
當讀取或者寫入完成后,需要將這一行關閉掉,使其恢復到初始化的狀態,這個動作就是預充電。
預充電完,將會發生兩個變化: 如果剛剛寫入了新的數據到緩沖行,那么預充電會把修改后的數據,復制到Bank中,使Bank的數據完成更新。另外,復制完成后,緩沖區將恢復到初始態。
此時整個Bank又回到了idle的狀態。
上面三步,就是DDR一次完整的內存訪問周期。對應下面的1,2,3。
根據上面狀態機可知,在DDR內部還有refresh的操作,即刷新。在上一篇文章中介紹了SDRAM內部最小單元是一個電容和晶體管,但是這個電容并不是理想的,會慢慢漏電。刷新的操作就是給這些電容充電,防止因為漏電導致0和1發生翻轉,導致數據錯誤。
從上面框圖看出,刷新操作是不能讀取或者寫入數據的,因為上一個狀態是idle也就是在預充電完成之后,才能進行刷新。可見刷新的頻率和時間其實會影響到SDRAM操作的效率。因為刷新是實實在在地消耗時間,不能進行任何的數據操作。
將上面的命令功能總結如下:
下一篇文章將介紹SDRAM流水線操作指令