加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

圖解RAM結構與原理,系統記憶體的Channel、Chip與Bank(zz)

(2018-11-30 12:32:48)
分类: IC设计
https://www.techbang.com/posts/18381-from-the-channel-to-address-computer-main-memory-structures-to-understand

bank、rank、channel這些關於記憶體的名詞是否已困繞許久,疑似了解卻又說不出個所以然來。就讓我們一步步拆解記憶體的面紗,從架構到讀寫方式逐步揭開記憶體的秘密。

揮發性記憶體分 2 種,SRAM 和 DRAM

RAM(Ramdom Access Memory)隨機存取記憶體,之所以稱作「隨機存取」,是因為相較於早期的線性儲存媒體(磁帶)而言,因為磁帶的存取是線性的,存取時間會依目前磁帶位置和欲存取位置的距離而定,需轉動磁帶至應有的位置,距離越長、轉得越久、存取時間也就越久。而 RAM 沒有這種煩惱,存取時間為固定值,不會因為資料在記憶體的位置而影響存取時間。

而 RAM 在電腦裡又可大致上分為 2 種:SRAM 和 DRAM,兩者的基礎原理差不多,都是將電荷儲存至內部,藉由改變不同的電荷儲存 0 或是 1。SRAM(Static Random Access Memory)靜態隨機存取記憶體和 DRAM(Dynamic Random Access Memory)有著幾點不同,SRAM 的結構較複雜、單位面積的容量較少、存取速度快,DRAM 則是構造簡單、單位面積內的容量較多、存取時間較 SRAM 慢,同時 DRAM 也因為構造較簡單的關係,儲存的電荷會隨著時間漸漸消失,因此需要有個再充電(Refresh)的動作保持電容儲存的資料。

https://cdn0.techbang.com/system/images/164313/original/66659bce5ad5205147d2b08a1ebe8e12.jpg?1401350005
SRAM 單一位元儲存區的構造。

https://cdn2.techbang.com/system/images/164601/original/2f4e6d1288b5a1c50b8a3f37cf59855f.jpg?1401477894
DRAM 單一位元儲存區的構造。

由圖中 SRAM 和 DRAM 構造可得知,SRAM 採用正反器(flip-flop)構造儲存,DRAM 則是採用電容儲存。因為 SRAM 和 DRAM 種種的特性不同,SRAM 適合做為暫存器和 CPU 快取使用,DRAM 則是適合做為主記憶體或是其他裝置間的快取使用。

揮發與非揮發性記憶體

揮發性記憶體(Volatile Memory)和非揮發性記憶體(Non-Volatile Memory)之間的差異在於,斷電之後是否可保存內部資料,揮發性記憶體的資料會隨著失去電力供應而消失,而非揮發性記憶體依然可以保有內部資料。

揮發性記憶體包含了SRAM和DRAM,而非揮發性記憶體包含ROM(Read-Only Memory)和Flash Memory快閃記憶體。

主記憶體子系統

DRAM 由於製造簡單、高密度,作為電腦內部的主記憶體再適合不過了。但是由於主記憶體擺放在 CPU 之外,從工廠出來的晶粒需要封裝和組合之後才可和 CPU 連結,因此從 CPU 至 DRAM 晶粒之間依據層級由大至小為 channel>DIMM>rank>chip>bank>row/column,接下來就一一說明這些部分。

https://cdn0.techbang.com/system/images/164318/original/8f04a1f57fe07692327b9269ba484ce4.jpg?1401354086
主記憶體由大至小,由上往下可做這樣的拆分。

https://cdn1.techbang.com/system/images/164600/original/9db89369284749feaa291ef48931618d.jpg?1401477760
主記憶體從 channel 至 chip 的相對應關係。

https://cdn0.techbang.com/system/images/164316/original/93ec9064210ad7d3091dbf8569b680be.jpg?1401353131

chip 往下拆分為 bank。

https://cdn0.techbang.com/system/images/164317/original/a7e04928ab16fb4cef18df7739f26c0f.jpg?1401354037
bank 往下拆就是 1 個個的儲存單元,橫向 1 排稱之為 row,直向 1 排稱之為 column,每排 column 的下方都有個 row buffer,用以暫存讀出來的 row 排資料。

https://cdn1.techbang.com/system/images/164602/original/236a3b14df3a455ee7d783645f11a0f2.png?1401479387
單一 DRAM 晶片的內部功能區塊圖(圖片取自Micron)

channel 和 DIMM

從記憶體控制器出來之後,最先遇到的就是 channel,每個 channel 需要配有 1 組記憶體控制器、2 個 channel 配置 2 組……以此類推。而每個 channel 中能夠擁有許多組 DIMM(Dual In-line Memory Module),DIMM 也就是目前消費者能夠在市場上買到的記憶體模組,因為多年前的主機板必須購買記憶體顆粒(chip)直接插在主機板上,而後發展出 SIMM(Single In-line Memory Module),將多組記憶體顆粒焊在 1 片電路板上,成為記憶體模組,再將此電路板插在主機板上。接著為了增加資料吞吐量,將 1 條記憶體模組的頻寬從 SIMM 的 32bit 改換成 DIMM 的 64bit,這設計依然沿用至今。

從記憶體顆粒過度到 SIMM 的時代,坊間出現了替使用者將記憶體顆粒焊到 SIMM 電路板上的服務,因為當時記憶體非常昂貴,花一些小錢就可以把記憶體延用至新的電腦上。

rank 和 chip

rank 指的是連結到同 1 個CS(Chip Select)的記憶體顆粒 chip,記憶體控制器能夠對同 1 rank 的 chip 進行讀寫操作,而在同 1 rank 的 chip 也分享同樣的控制訊號。以目前的電腦來說,因為 1 組 channel 的寬度為 64bit,所以能夠同時讀寫 8byte 的資料,如果是具有 ECC 功能的記憶體控制器和 ECC 記憶體模組,那麼 1 組 channel 的寬度就是 72bit。

https://cdn1.techbang.com/system/images/164319/original/d3183967a313519b728ad070ec71aa17.jpg?1401356864
rank 1 和 rank 2 共享同組 address/comand 訊號線,利用 chip select 線選擇欲讀取或是寫入的那一組,之後將資料經由 MUX 多工器送出。

有些人會有錯誤觀念,以 chip 的數量或是以記憶體模組的單、雙面進行 rank 的判斷,但其實要以記憶體控制器和記憶體顆粒的規格進行判斷,目前家用 PC 的記憶體控制器通道絕大部分都是 64bit 寬,記憶體顆粒則是 8bit 寬,因此 8 顆並聯即可滿足記憶體控制器的需求,也就是 1 組 rank。但偶爾也有以 16bit 寬的記憶體顆粒製成的記憶體模組,此時 4 個 chip 就是 1 組 rank。

這在採用 Intel H61/H81 晶片組和傳統單channel的主機板時須特別注意,因為 Intel 限制 H61/H81 每個 channel 僅能支援 2 組 rank,而不是 4 組 rank,部分主機板每個 channel 又做了 2 組記憶體模組插槽,造成部分使用者同組 channel 放入 2 條記憶體模組時能夠辨識全部的記憶體容量(雙面單 rank 的記憶體模組),部分使用者則是僅能辨識一半的容量(雙面雙 rank 的記憶體模組)。

bank、row、column

bank 再往下分拆就是實際儲存位元的電路,一般來說橫向選擇排數的線路稱為 row(row enable、row select、word line),直向負責傳遞訊號的線路為column(bitline),每組 bank 的下方還會有個 row buffer(sense amplifier),負責將獨出的 row 資料暫存,等待 column 位址送到後輸出正確的位元,以及判斷儲存的資料是 0 還是 1。

https://cdn1.techbang.com/system/images/164376/original/8b5f20f18325626d9b01a7d489395306.jpg?1401360280
1 個 bank 的讀取操作。

https://cdn2.techbang.com/system/images/164443/original/8463bd3e8722955476902b61ba2f4eaf.jpg?1401370331

1 個 bank 的寫入操作。



記憶體的讀寫方式

上圖標明了記憶體的讀寫方式,讀取時首先記憶體控制器會將 1 組位址由位址線傳到記憶體上,控制線跟著傳送控制訊號;如果是多 rank 的安裝情形,CS 也會送出對應的訊號選擇目標 rank。接著由於每個 rank 由許多 chip 組成,1 個 chip 僅負責部分的資料讀取,chip 接收到位址訊號後,將位址丟入內部的 row/column 解碼器找出相對應的 bank 位址(每家每款產品的內部 bank 組合有可能不同,因此對應也會有所不同),接著開啟 row 線,同 1 排 row 的內部資料就會流到 row buffer 內部,row buffer 判斷訊號為 0 或是 1 之後就輸出資料。

寫入時除了位址資料外,還會傳送欲寫入的資料至晶片內部的 input buffer,同樣的也是依照 row/column 解碼器找出對應位置之後寫入。

https://cdn0.techbang.com/system/images/164533/original/daabc6d73ae47f6909ab26ab5a5fc0e6.jpg?1401443446
記憶體控制器和 DIMM 之間線路的關係。

越多越好,加速讀寫能力

家用電腦的記憶體控制器已經進入雙通道記憶體控制器多年,加速原理為增加資料匯流排寬度,達到同時讀寫更多資料的能力。

另一種增加頻寬的方法就是減少延遲,利用多個 chip 或是 bank 達成。一般的記憶體讀取延遲為命令下達+記憶體讀取延遲+輸出資料,如果命令下達延遲為 2ns、記憶體讀取延遲為 10ns、輸出資料延遲為 2ns,那麼讀取 2 筆資料的總延遲就會是(2+10+2)×2=24ns。

如果現在能夠將資料拆分至 2 顆記憶體上,那麼 2 筆讀取延遲將降低至 16ns,因為不需等到前筆資料讀取完成才發出下一筆的讀取命令,在第一筆資料進入記憶體讀取時即可發出。這種概念也可應用到目前最夯的 SSD 上,較多CE(Chip Enable)封裝的快閃記憶體晶片,通常都比較少 CE 封裝的晶片來得快。

https://cdn0.techbang.com/system/images/164534/original/387eb4106c7b1f96eb83ab98af6d940d.jpg?1401446040
由時序圖可得知,下方此種盡量分拆記憶體空間的作法,可大幅減少延遲。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有