深入解析內存原理:RAM的基本原理

FROM:https://www.cnblogs.com/lzhu/p/7000487.html

1. 尋址原理概述
RAM 主要的作用就是存儲代碼和數據供CPU 在需要的時候調用。但是這些數據並不是像用袋子盛米那麼簡單,更像是圖書館中用有格子的書架存放書籍一樣,不但要放進去還要能夠在需要的時候準確的調用出來,雖然都是書但是每本書是不同的。對於RAM 等存儲器來說也是一樣的,雖然存儲的都是代表0 和1 的代碼,但是不同的組合就是不同的數據。
讓我們重新回到書和書架上來,如果有一個書架上有10 行和10 列格子(每行和每列都有0-9 的編號),有100 本書要存放在裏面,那麼我們使用一個行的編號加一個列的編號就能確定某一本書的位置。如果已知這本書的編號87,那麼我們首先鎖定第8 行,然後找到第7 列就能準確的找到這本書了。在RAM 存儲器中也是利用了相似的原理。
現在讓我們回到RAM 存儲器上,對於RAM 存儲器而言數據總線是用來傳入數據或者傳出數據的。因爲存儲器中的存儲空間是如果前面提到的存放圖書的書架一樣通過一定的規則定義的,所以我們可以通過這個規則來把數據存放到存儲器上相應的位置,而進行這種定位的工作就要依靠地址總線來實現了。
對於CPU 來說,RAM 就象是一條長長的有很多空格的細線,每個空格都有一個唯一的地址與之相對應。如果CPU 想要從RAM 中調用數據,它首先需要給地址總線發送地址數據定位要存取的數據,然後等待若干個時鐘週期之後,數據總線就會把數據傳輸給CPU。下面的示意圖可以幫助你很好的理解這個過程。


上圖中的小圓點代表RAM 中的存儲空間,每一個都有一個唯一的地址線同它相連。當地址解碼器接收到地址總線送來的地址數據之後,它會根據這個數據定位CPU 想要調用的數據所在的位置,然後數據總線就會把其中的數據傳送到CPU。
上面所列舉的例子中CPU 在一行數據中每次只是存取一個字節的數據,但是在現實世界中是不同的,通常CPU 每次需要調用32bit 或者是64bit 的數據(這是根據不同計算機系統的數據總線的位寬所決定的)。如果數據總線是64bit 的話,CPU 就會在一個時間中存取8個字節的數據,因爲每次還是存取1 個字節的數據,64bit 總線將不會顯示出來任何的優勢,工作的效率將會降低很多。
2. 從“線”到“矩陣”
如果RAM 對於CPU 來說僅僅是一條“線”的話,還不能體現實際的運行情況。因爲如果實際情況真的是這樣的話,在實際製造芯片的時候,會有很多實際的困難,特別是在需要設計大容量的RAM 的時候。
所以,一種更好的能夠降低成本的方法是讓存儲信息的“空格”排列爲很多行--每個“空格”對應一個bit 存儲的位置。這樣,如果要存儲1024bits的數據,那麼你只要使用32x32 的矩陣就能夠達到這個目的了。很明顯,一個32x32 的矩陣比一個1024bit 的行設備更緊湊,實現起來也更加容易。請看下圖1:

  
圖1                                                         圖2
知道了RAM 的基本結構是什麼樣子的,下面我們就談談RAM存儲字節的過程是怎樣的:上面的示意圖1 顯示的也僅僅是最簡單狀態下的情況,也就是當內存條上僅僅只有一個RAM 芯片的情況。
對於X86 處理器,它通過地址總線發出一個具有22 位二進制數字的地址編碼--其中11 位是行地址,另外11 位是列地址,這是通過RAM 地址接口進行分離的。
行地址解碼器(row decoder)將會首先確定行地址,然後列地址解碼器(column decoder)將會確定列地址,這樣就能確定唯一的存儲數據的位置,然後該數據就會通過RAM 數據接口將數據傳到數據總線。
另外,需要注意的是,RAM 內部存儲信息的矩陣並不是一個正方形的,也就是行和列的數目不是相同的--行的數目比列的數目少。(後面我們在討論DRAM的過程中會講到爲什麼會這樣)
上面的示意圖2 粗略的概括了一個基本的SRAM 芯片是如何工作的。SRAM 是“staticRAM(靜態隨機存儲器)”的簡稱,之所以這樣命名是因爲當數據被存入其中後不會消失(同DRAM 動態隨機存儲器是不同,DRAM 必須在一定的時間內不停的刷新才能保持其中存儲的數據)。
一個SRAM 單元通常由4-6 只晶體管組成,當這個SRAM 單元被賦予0 或者1的狀態之後,它會保持這個狀態直到下次被賦予新的狀態或者斷電之後纔會更改或者消失。
SRAM 的速度相對比較快,而且比較省電,但是存儲1bit 的信息需要4-6 只晶體管制造成本太高了(DRAM 只要1 只晶體管就可以實現)。
3. DRAM 基本存儲單元結構
不管你相信不相信,目前主流內存中的RDRAM(Rambus)、DDR SDRAM、SDRAM 甚至是EDO RAM 的基本結構都是相同的,它們都是屬於DRAM(Dynamic RAM:動態隨機訪問存儲器)。所有的DRAM 基本存儲單元都是由一個晶體管和一個電容組成。


這樣的基本存儲單元的架構是目前最經濟的方式,電容的狀態決定着內存基本存儲單元的邏輯狀態是“0”還是“1”--充滿電荷的電容器代表邏輯“1”,“空”的電容器代表邏輯“0”,不過正是因爲使用了電容器所以產生了一些侷限性。
電容存儲的電荷一般是會慢慢泄漏的,這也就是爲什麼內存需要不時的刷新的緣故。電容需要電流進行充電,而電流充電的過程也是需要一定時間的,一般是0.2-0.18 微秒(由於內存工作環境所限制,不可能無限制的提高電流的強度),在這個充電的過程中內存是不能被訪問的。
從技術上講,實現內存的定時刷新並不是什麼難事,DRAM 廠商指出這種刷新操作必須每64ms 進行一次,這也就意味着DRAM 基本存儲單元大約有1%的時間用在了刷新上。
對於DRAM 來說最大的問題是,讀取內存會造成內存基本存儲單元中的電荷丟失,所以每當DRAM 被訪問之後都要進行刷新,以維持訪問之前的狀態,否則就會造成數據丟失。當然拿出專門的時間進行刷新,也就增加了訪問時間,提高了延遲。
SRAM(Static RAM)則不存在刷新的問題。一個SRAM 基本存儲單元由4 個晶體管和兩個電阻器構成,它並不利用電容器來存儲數據,而是通過切換晶體管的狀態來實現的,如同CPU 中的晶體管通過切換不同的狀態也能夠分別代表0 和1 這兩個狀態。正是因爲這種結構,所以SRAM 的讀取過程並不會造成SRAM 內存儲的的信息的丟失,當然也就不存在什麼刷新的問題了。
SRAM 可以比DRAM 高的頻率來運行,主要是因爲獲取前8 個字節的時間延遲大大縮短了。SRAM 需要2-3 個時鐘週期來得到想要的數據(這裏我們暫時忽略CPU、芯片組和內存DIMM 控制電路之間的延遲),不過同樣的過程DRAM 需要大約3-9 個時鐘週期。當然因爲構造不同,SRAM 和DRAM 存儲1bit 數據的成本是不同的,前者大約是後者的4 倍--因爲它的所需要的晶體管數目是後者的4 倍以上。SRAM 因爲存取延遲時間非常的短,所以它的工作頻率能夠達到很高,因此可以帶來更高的帶寬。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章