深入解析内存原理:RAM的基本原理
1. 尋址原理概述
RAM 主要的作用就是存儲(chǔ)代碼和數(shù)據(jù)供CPU 在需要的時(shí)候調(diào)用。但是這些數(shù)據(jù)并不是像用袋子盛米那么簡(jiǎn)單,更像是圖書館中用有格子的書架存放書籍一樣,不但要放進(jìn)去還要能夠在需要的時(shí)候準(zhǔn)確的調(diào)用出來(lái),雖然都是書但是每本書是不同的。對(duì)于RAM 等存儲(chǔ)器來(lái)說(shuō)也是一樣的,雖然存儲(chǔ)的都是代表0 和1 的代碼,但是不同的組合就是不同的數(shù)據(jù)。
讓我們重新回到書和書架上來(lái),如果有一個(gè)書架上有10 行和10 列格子(每行和每列都有0-9 的編號(hào)),有100 本書要存放在里面,那么我們使用一個(gè)行的編號(hào)加一個(gè)列的編號(hào)就能確定某一本書的位置。如果已知這本書的編號(hào)87,那么我們首先鎖定第8 行,然后找到第7 列就能準(zhǔn)確的找到這本書了。在RAM 存儲(chǔ)器中也是利用了相似的原理。
現(xiàn)在讓我們回到RAM 存儲(chǔ)器上,對(duì)于RAM 存儲(chǔ)器而言數(shù)據(jù)總線是用來(lái)傳入數(shù)據(jù)或者傳出數(shù)據(jù)的。因?yàn)榇鎯?chǔ)器中的存儲(chǔ)空間是如果前面提到的存放圖書的書架一樣通過(guò)一定的規(guī)則定義的,所以我們可以通過(guò)這個(gè)規(guī)則來(lái)把數(shù)據(jù)存放到存儲(chǔ)器上相應(yīng)的位置,而進(jìn)行這種定位的工作就要依靠地址總線來(lái)實(shí)現(xiàn)了。
對(duì)于CPU 來(lái)說(shuō),RAM 就象是一條長(zhǎng)長(zhǎng)的有很多空格的細(xì)線,每個(gè)空格都有一個(gè)唯一的地址與之相對(duì)應(yīng)。如果CPU 想要從RAM 中調(diào)用數(shù)據(jù),它首先需要給地址總線發(fā)送地址數(shù)據(jù)定位要存取的數(shù)據(jù),然后等待若干個(gè)時(shí)鐘周期之后,數(shù)據(jù)總線就會(huì)把數(shù)據(jù)傳輸給CPU。下面的示意圖可以幫助你很好的理解這個(gè)過(guò)程。
上圖中的小圓點(diǎn)代表RAM 中的存儲(chǔ)空間,每一個(gè)都有一個(gè)唯一的地址線同它相連。當(dāng)?shù)刂方獯a器接收到地址總線送來(lái)的地址數(shù)據(jù)之后,它會(huì)根據(jù)這個(gè)數(shù)據(jù)定位CPU 想要調(diào)用的數(shù)據(jù)所在的位置,然后數(shù)據(jù)總線就會(huì)把其中的數(shù)據(jù)傳送到CPU。
上面所列舉的例子中CPU 在一行數(shù)據(jù)中每次只是存取一個(gè)字節(jié)的數(shù)據(jù),但是在現(xiàn)實(shí)世界中是不同的,通常CPU 每次需要調(diào)用32bit 或者是64bit 的數(shù)據(jù)(這是根據(jù)不同計(jì)算機(jī)系統(tǒng)的數(shù)據(jù)總線的位寬所決定的)。如果數(shù)據(jù)總線是64bit 的話,CPU 就會(huì)在一個(gè)時(shí)間中存取8個(gè)字節(jié)的數(shù)據(jù),因?yàn)槊看芜€是存取1 個(gè)字節(jié)的數(shù)據(jù),64bit 總線將不會(huì)顯示出來(lái)任何的優(yōu)勢(shì),工作的效率將會(huì)降低很多。
2. 從“線”到“矩陣”
如果RAM 對(duì)于CPU 來(lái)說(shuō)僅僅是一條“線”的話,還不能體現(xiàn)實(shí)際的運(yùn)行情況。因?yàn)槿绻麑?shí)際情況真的是這樣的話,在實(shí)際制造芯片的時(shí)候,會(huì)有很多實(shí)際的困難,特別是在需要設(shè)計(jì)大容量的RAM 的時(shí)候。
所以,一種更好的能夠降低成本的方法是讓存儲(chǔ)信息的“空格”排列為很多行--每個(gè)“空格”對(duì)應(yīng)一個(gè)bit 存儲(chǔ)的位置。這樣,如果要存儲(chǔ)1024bits的數(shù)據(jù),那么你只要使用32x32 的矩陣就能夠達(dá)到這個(gè)目的了。很明顯,一個(gè)32x32 的矩陣比一個(gè)1024bit 的行設(shè)備更緊湊,實(shí)現(xiàn)起來(lái)也更加容易。請(qǐng)看下圖1:
?
圖1???????????????????????????????????????????????????????? 圖2
知道了RAM 的基本結(jié)構(gòu)是什么樣子的,下面我們就談?wù)凴AM存儲(chǔ)字節(jié)的過(guò)程是怎樣的:上面的示意圖1 顯示的也僅僅是最簡(jiǎn)單狀態(tài)下的情況,也就是當(dāng)內(nèi)存條上僅僅只有一個(gè)RAM 芯片的情況。
對(duì)于X86 處理器,它通過(guò)地址總線發(fā)出一個(gè)具有22 位二進(jìn)制數(shù)字的地址編碼--其中11 位是行地址,另外11 位是列地址,這是通過(guò)RAM 地址接口進(jìn)行分離的。
行地址解碼器(row decoder)將會(huì)首先確定行地址,然后列地址解碼器(column decoder)將會(huì)確定列地址,這樣就能確定唯一的存儲(chǔ)數(shù)據(jù)的位置,然后該數(shù)據(jù)就會(huì)通過(guò)RAM 數(shù)據(jù)接口將數(shù)據(jù)傳到數(shù)據(jù)總線。
另外,需要注意的是,RAM 內(nèi)部存儲(chǔ)信息的矩陣并不是一個(gè)正方形的,也就是行和列的數(shù)目不是相同的--行的數(shù)目比列的數(shù)目少。(后面我們?cè)谟懻揇RAM的過(guò)程中會(huì)講到為什么會(huì)這樣)
上面的示意圖2 粗略的概括了一個(gè)基本的SRAM 芯片是如何工作的。SRAM 是“staticRAM(靜態(tài)隨機(jī)存儲(chǔ)器)”的簡(jiǎn)稱,之所以這樣命名是因?yàn)楫?dāng)數(shù)據(jù)被存入其中后不會(huì)消失(同DRAM 動(dòng)態(tài)隨機(jī)存儲(chǔ)器是不同,DRAM 必須在一定的時(shí)間內(nèi)不停的刷新才能保持其中存儲(chǔ)的數(shù)據(jù))。
一個(gè)SRAM 單元通常由4-6 只晶體管組成,當(dāng)這個(gè)SRAM 單元被賦予0 或者1的狀態(tài)之后,它會(huì)保持這個(gè)狀態(tài)直到下次被賦予新的狀態(tài)或者斷電之后才會(huì)更改或者消失。
SRAM 的速度相對(duì)比較快,而且比較省電,但是存儲(chǔ)1bit 的信息需要4-6 只晶體管制造成本太高了(DRAM 只要1 只晶體管就可以實(shí)現(xiàn))。
3. DRAM 基本存儲(chǔ)單元結(jié)構(gòu)
不管你相信不相信,目前主流內(nèi)存中的RDRAM(Rambus)、DDR SDRAM、SDRAM 甚至是EDO RAM 的基本結(jié)構(gòu)都是相同的,它們都是屬于DRAM(Dynamic RAM:動(dòng)態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器)。所有的DRAM 基本存儲(chǔ)單元都是由一個(gè)晶體管和一個(gè)電容組成。
這樣的基本存儲(chǔ)單元的架構(gòu)是目前最經(jīng)濟(jì)的方式,電容的狀態(tài)決定著內(nèi)存基本存儲(chǔ)單元的邏輯狀態(tài)是“0”還是“1”--充滿電荷的電容器代表邏輯“1”,“空”的電容器代表邏輯“0”,不過(guò)正是因?yàn)槭褂昧穗娙萜魉援a(chǎn)生了一些局限性。
電容存儲(chǔ)的電荷一般是會(huì)慢慢泄漏的,這也就是為什么內(nèi)存需要不時(shí)的刷新的緣故。電容需要電流進(jìn)行充電,而電流充電的過(guò)程也是需要一定時(shí)間的,一般是0.2-0.18 微秒(由于內(nèi)存工作環(huán)境所限制,不可能無(wú)限制的提高電流的強(qiáng)度),在這個(gè)充電的過(guò)程中內(nèi)存是不能被訪問(wèn)的。
從技術(shù)上講,實(shí)現(xiàn)內(nèi)存的定時(shí)刷新并不是什么難事,DRAM 廠商指出這種刷新操作必須每64ms 進(jìn)行一次,這也就意味著DRAM 基本存儲(chǔ)單元大約有1%的時(shí)間用在了刷新上。
對(duì)于DRAM 來(lái)說(shuō)最大的問(wèn)題是,讀取內(nèi)存會(huì)造成內(nèi)存基本存儲(chǔ)單元中的電荷丟失,所以每當(dāng)DRAM 被訪問(wèn)之后都要進(jìn)行刷新,以維持訪問(wèn)之前的狀態(tài),否則就會(huì)造成數(shù)據(jù)丟失。當(dāng)然拿出專門的時(shí)間進(jìn)行刷新,也就增加了訪問(wèn)時(shí)間,提高了延遲。
SRAM(Static RAM)則不存在刷新的問(wèn)題。一個(gè)SRAM 基本存儲(chǔ)單元由4 個(gè)晶體管和兩個(gè)電阻器構(gòu)成,它并不利用電容器來(lái)存儲(chǔ)數(shù)據(jù),而是通過(guò)切換晶體管的狀態(tài)來(lái)實(shí)現(xiàn)的,如同CPU 中的晶體管通過(guò)切換不同的狀態(tài)也能夠分別代表0 和1 這兩個(gè)狀態(tài)。正是因?yàn)檫@種結(jié)構(gòu),所以SRAM 的讀取過(guò)程并不會(huì)造成SRAM 內(nèi)存儲(chǔ)的的信息的丟失,當(dāng)然也就不存在什么刷新的問(wèn)題了。
SRAM 可以比DRAM 高的頻率來(lái)運(yùn)行,主要是因?yàn)楂@取前8 個(gè)字節(jié)的時(shí)間延遲大大縮短了。SRAM 需要2-3 個(gè)時(shí)鐘周期來(lái)得到想要的數(shù)據(jù)(這里我們暫時(shí)忽略CPU、芯片組和內(nèi)存DIMM 控制電路之間的延遲),不過(guò)同樣的過(guò)程DRAM 需要大約3-9 個(gè)時(shí)鐘周期。當(dāng)然因?yàn)闃?gòu)造不同,SRAM 和DRAM 存儲(chǔ)1bit 數(shù)據(jù)的成本是不同的,前者大約是后者的4 倍--因?yàn)樗乃枰木w管數(shù)目是后者的4 倍以上。SRAM 因?yàn)榇嫒⊙舆t時(shí)間非常的短,所以它的工作頻率能夠達(dá)到很高,因此可以帶來(lái)更高的帶寬。
轉(zhuǎn)載于:https://www.cnblogs.com/lzhu/p/7000487.html
總結(jié)
以上是生活随笔為你收集整理的深入解析内存原理:RAM的基本原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Unity将相机内容输出成图片
- 下一篇: Ubuntu截图快捷键