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)的動作保持電容儲存的資料。
▲SRAM 單一位元儲存區的構造。
▲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,接下來就一一說明這些部分。
▲主記憶體由大至小,由上往下可做這樣的拆分。
▲主記憶體從 channel 至 chip 的相對應關係。
▲chip 往下拆分為 bank。
▲bank 往下拆就是 1 個個的儲存單元,橫向 1 排稱之為 row,直向 1 排稱之為 column,每排 column 的下方都有個 row buffer,用以暫存讀出來的 row 排資料。
▲單一 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。
▲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。
▲1 個 bank 的讀取操作。
▲1 個 bank 的寫入操作。
下一頁:記憶體的讀寫方式
留言列表