SRAM、DRAM、硬盘、ROM、RAM、EPROM、FLASH区别和联系
本文轉自xiaoyangger的專欄,地址為:http://blog.csdn.net/xiaoyangger/article/details/7683646
SRAM和DRAM的區別和聯系:
(電腦中的內存屬于DRAM,CPU中的二級緩存屬于SRAM)
存儲原理
RAM(Random Access Memory )隨機存取存儲器,主要的作用就是存儲代碼和數據供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 總線將不會顯示出來任何的優勢,工作的效率將會降低很多。
從“線”到“矩陣”
如果RAM 對于CPU 來說僅僅是一條“線”的話,還不能體現實際的運行情況。因為如果實際情況真的是這樣的話,在實際制造芯片的時候,會有很多實際的困難,特別是在需要設計大容量的RAM 的時候。
所以,一種更好的能夠降低成本的方法是讓存儲信息的“空格”排列 為很多行,每個“空格”對應一個bit 存儲的位置。這樣,如果要存儲1024bits 的數據,那么你只要使用32x32 的矩陣就能夠達到這個目的了。很明顯,一個32x32 的矩陣比一個1024bit 的行設備更緊湊,實現起來也更加容易。
請看下圖。
知道了RAM 的基本結構是什么樣子的,我們就下面談談當存儲字節的過程是怎樣的。
上面的示意圖 顯示的也僅僅是最簡單狀態下的情況,也就是當內存條上僅僅只有一個RAM 芯片的情況。
對于X86 處理器,它通過地址總線發出一個具有22 位二進制數字的地址編碼,其中11 位是行地址,另外11 位是列地址,這是通過RAM 地址接口進行分離的。
行地址解碼器(row decoder)將會首先確定行地址,然后列地址解碼器(column decoder)將會確定列地址,這樣就能確定唯一的存儲數據的位置,然后該數據就會通過RAM 數據接口將數據傳到數據總線。
另外,需要注意的是,RAM 內部存儲信息的矩陣并不是一個正方形的,也就是行和列的數目不是相同的,行的數目比列的數目少。
上面的示意圖 粗略的概括了一個基本的SRAM 芯片是如何工作的。
SRAM 是“static RAM(靜態隨機存儲器)”的簡稱,之所以這樣命名是因為當數據被存入其中后不會消失。
DRAM 動態隨機存儲器不同,DRAM 必須在一定的時間內不停的刷新才能保持其中存儲的數據。
一個SRAM 單元通常由4-6 只晶體管組成,當這個SRAM 單元被賦予0 或者1 的狀態之后,它會保持這個狀態直到下次被賦予新的狀態或者斷電之后才會更改或者消失。
SRAM 的速度相對比較快,而且比較省電,但是存儲1bit 的信息需要4-6 只晶體管制造成本太高了。
DRAM 只要1 只晶體管就可以實現。
SRAM 芯片
早期的SRAM 芯片采用了20 線雙列直插(DIP:Dual Inline Package)封裝技術,它們之所以具有這么多的針腳,是因為它們必須:
1) 每個地址信號都需要一根信號線;
2)一根數據輸入線和一根數據輸出線;
3)部分控制線(Write Enable, Chip Select);
4)地線和電源線。
上圖顯示的是SRAM 芯片,但是并不是下面示意圖中的SRAM 芯片。
下面的是一個16K x 1-bit SRAM 芯片的針腳功能示意圖。
1) A0-A13 是地址輸入信號引腳;
2)/CS 是芯片選擇引腳,在一個實際的系統中,一定具有很多片SRAM 芯片,所以需要選擇究竟從那一片SRAM 芯片中寫入或者讀取數據;
3)/WE 是寫入啟用引腳,當SRAM 得到一個地址之后,它需要知道進行什么操作,究竟是寫入還是讀取,/WE 就是告訴SRAM 要寫入數據;
4) Vcc 是供電引腳;
5)Din 是數據輸入引腳;
6)Dout 是數據輸出引腳;
7)GND 是接地引腳;
8)Output Enable(OE),有的SRAM 芯片中也有這個引腳,但是上面的圖中并沒有,這個引腳同/WE 引腳的功能是相對的,它是讓SRAM 知道要進行讀取操作而不是寫入操作。
從Dout 引腳讀取1bit 數據需要以下的步驟:
1) 通過地址總線把要讀取的bit 的地址傳送到相應的讀取地址引腳,這個時候/WE 引腳應該沒有激活,所以SRAM 知道它不應該執行寫入操作;
2)激活/CS,選擇該SRAM 芯片;
3)激活/OE 引腳,讓SRAM 知道是讀取操作;
第三步之后,要讀取的數據就會從DOut 引腳傳輸到數據總線。
寫入1bit 數據的過程如下:
1) 通過地址總線確定要寫入信息的位置,確定/OE 引腳沒有被激活;
2) 通過數據總線將要寫入的數據傳輸到Din 引腳;
3)激活/CS 引腳,選擇SRAM 芯片;
4)激活/WE 引腳,通知SRAM 知道要進行寫入操作。
經過上面的四個步驟之后,需要寫入的數據就已經放在了需要寫入的地方。
DRAM 芯片
DRAM 相對于SRAM 來說更加復雜,因為在DRAM 存儲數據的過程中需要對于存儲的信息不停的刷新,這也是它們之間最大的不同。
下面讓我們看看DRAM 芯片的針腳的作用。
最早、最簡單也是最重要的一款DRAM 芯片是Intel 在1979 年發布的2188 ,這款芯片是16Kx1 DRAM 18 線DIP 封裝。
“16K x 1 ”的部分意思告訴我們這款芯片可以存儲16384 個bit 數據,在同一個時期可以同時進行1bit 的讀取或者寫入操作。
上面的示意圖可以看出,DRAM 和SRAM 之間有著明顯的不同。
首先你會看到地址引腳從14 根變為7 根,那么這顆16K DRAM 是如何完成同16K SRAM 一樣的工作的呢?答案很簡單,DRAM 通過DRAM 接口把地址一分為二,然后利用兩個連續的時鐘周期傳輸地址數據,這樣就達到了使用一半的針腳實現同SRAM 同樣的功能的目的,這種技術被稱為多路技術(multiplexing)。
那么為什么好減少地址引腳呢?這樣做有什么好處呢?
前面我們曾經介紹過,存儲1bit 的數據SRAM 需要4~6 個晶體管,但是DRAM 僅僅需要1 個晶體管,那么這樣同樣容量的SRAM 的體積比DRAM 大至少4 倍。這樣就意味著你沒有足夠空間安放同樣數量的引腳(因為針腳并沒有因此減少4 倍)。
當然為了安裝同樣數量的針腳,也可以把芯片的體積加大,但是這樣就提高芯片的生產成本和功耗。
所以減少針腳數目也是必要的,對于現在的大容量DRAM 芯片,多路尋址技術已經是必不可少的了。
當然多路尋址技術也使得讀寫的過程更加復雜了,這樣在設計的時候不僅僅DRAM 芯片更加復雜了,DRAM 接口也要更加復雜。
DRAM 芯片內部結構示意圖如下:
在上面的示意圖中,你可以看到在DRAM 結構中相對于SRAM 多了兩個部分:
1) 由/RAS (Row Address Strobe :行地址脈沖選通器)引腳控制的行地址門閂線路(Row Address Latch);
2) 由/CAS(Column Address Strobe :列地址脈沖選通器)引腳控制的列地址門閂線路(Column Address Latch)。
DRAM 讀取過程如下:
1) 通過地址總線將行地址傳輸到地址引腳;
2)/RAS 引腳被激活,這樣行地址被傳送到行地址門閂線路中;
3)行地址解碼器根據接收到的數據選擇相應的行;
4)/WE 引腳被確定不被激活,所以DRAM 知道它不會進行寫入操作;
5)列地址通過地址總線傳輸到地址引腳;
6)/CAS 引腳被激活,這樣列地址被傳送到行地址門閂線路中;
7)/CAS 引腳同樣還具有/OE 引腳的功能,所以這個時候Dout 引腳知道需要向外輸出數據;
8)/RAS 和/CAS 都不被激活,這樣就可以進行下一個周期的數據操作了。
DRAM 的寫入的過程和讀取過程是基本一樣的,只要把第4 步改為/WE 引腳被激活就可以了。
DRAM 刷新
我們已經提到過,DRAM 同SRAM 最大的不同就是不能比較長久的保持數據,這項特性使得這種存儲介質對于我們幾乎沒有任何的作用。但是DRAM 設計師利用刷新的技術使得DRAM 成為了現在對于我們最有用處的存儲介質。
DRAM 內僅僅能保持其內存儲的電荷非常短暫的時間,所以它需要在其內的電荷消失之前就進行刷新直到下次寫入數據或者計算機斷電才停止。
每次讀寫操作都能刷新DRAM 內的電荷,所以DRAM 就被設計為有規律的讀取DRAM 內的內容。這樣做有下面幾個好處。
1)僅僅使用/RAS 激活每一行就可以達到全部刷新的目的;
2)用DRAM 控制器來控制刷新,這樣可以防止刷新操作干擾有規律的讀寫操作。
在文章的開始,曾經說過一般行的數目比列的數據少,原因就是:行越少用戶刷新的時間就會越少。
ROM、RAM的區別:
ROM(只讀存儲器或者固化存儲器)
RAM(隨機存取存儲器)
ROM和RAM指的都是半導體存儲器,ROM是Read Only Memory的縮寫,RAM是Random Access Memory的縮寫。ROM在系統停止供電的時候仍然可以保持數據,而RAM通常都是在掉電之后就丟失數據,典型的RAM就是計算機的內存。
RAM有兩大類,一種稱為靜態RAM(Static RAM/SRAM),SRAM速度非常快,是目前讀寫最快的存儲設備了,但是它也非常昂貴,所以只在要求很苛刻的地方使用,譬如CPU的一級緩沖,二級緩 沖。另一種稱為動態RAM(Dynamic RAM/DRAM),DRAM保留數據的時間很短,速度也比SRAM慢,不過它還是比任何的ROM都要快,但從價格上來說DRAM相比SRAM要便宜很 多,計算機內存就是DRAM的。
DRAM分為很多種,常見的主要有FPRAM/FastPage、EDORAM、SDRAM、DDR RAM、RDRAM、SGRAM以及WRAM等,這里介紹其中的一種DDR RAM。DDR RAM(Date-Rate RAM)也稱作DDR SDRAM,這種改進型的RAM和SDRAM是基本一樣的,不同之處在于它可以在一個時鐘讀寫兩次數據,這樣就使得數據傳輸速度加倍了。這是目前電腦中用 得最多的內存,而且它有著成本優勢,事實上擊敗了Intel的另外一種內存標準-Rambus DRAM。在很多高端的顯卡上,也配備了高速DDR RAM來提高帶寬,這可以大幅度提高3D加速卡的像素渲染能力。
ROM也有很多種,PROM是可編程的ROM,PROM和EPROM(可擦除可編程ROM)兩者區別是,PROM是一次性的,也就是軟件灌入后,就無法修 改了,這種是早期的產品,現在已經不可能使用了,而EPROM是通過紫外光的照射擦出原先的程序,是一種通用的存儲器。另外一種EEPROM是通過電子擦 出,價格很高,寫入時間很長,寫入很慢。
舉個例子,手機軟件一般放在EEPROM中,我們打電話,有些最后撥打的號碼,暫時是存在SRAM中的,不是馬上寫入通過記錄(通話記錄保存在EEPROM中),因為當時有很重要工作(通話)要做,如果寫入,漫長的等待是讓用戶忍無可忍的。
FLASH存儲器又稱閃存,它結合了ROM和RAM的長處,不僅具備電子可擦出可編程(EEPROM)的性能,還不會斷電丟失數據同時可以快速讀取數據 (NVRAM的優勢),U盤和MP3里用的就是這種存儲器。在過去的20年里,嵌入式系統一直使用ROM(EPROM)作為它們的存儲設備,然而近年來 Flash全面代替了ROM(EPROM)在嵌入式系統中的地位,用作存儲Bootloader以及操作系統或者程序代碼或者直接當硬盤使用(U盤)。
目前Flash主要有兩種NOR Flash和NADN Flash。NOR Flash的讀取和我們常見的SDRAM的讀取是一樣,用戶可以直接運行裝載在NOR FLASH里面的代碼,這樣可以減少SRAM的容量從而節約了成本。NAND Flash沒有采取內存的隨機讀取技術,它的讀取是以一次讀取一快的形式來進行的,通常是一次讀取512個字節,采用這種技術的Flash比較廉價。用戶 不能直接運行NAND Flash上的代碼,因此好多使用NAND Flash的開發板除了使用NAND Flah以外,還作上了一塊小的NOR Flash來運行啟動代碼。
一般小容量的用NOR Flash,因為其讀取速度快,多用來存儲操作系統等重要信息,而大容量的用NAND FLASH,最常見的NAND FLASH應用是嵌入式系統采用的DOC(Disk On Chip)和我們通常用的“閃盤”,可以在線擦除。目前市面上的FLASH 主要來自Intel,AMD,Fujitsu和Toshiba,而生產NAND Flash的主要廠家有Samsung和Toshiba。
ROM和硬盤的區別(電腦硬盤不是ROM,BIOS存在ROM當中):
只讀內存(Read-Only Memory)就是ROM,它是一塊單獨的內部存儲器,和隨機內存RAM(即平時說的內存)相似,但是只能讀取,用來存儲和保存永久數據的。ROM數據不能隨意更新,但是在任何時候都可以讀取。即使是斷電,ROM也能夠保留數據。
往ROM中注入數據需要另外的編譯器,PC上面是沒有這個功能的。一般在ROM出廠前注入信息,沒有特殊情況一般不會更改內容,也就是說通常是一輩子都是同樣的內容。
在PC中容易誤解的一點就是經常有人把ROM和HardDisk(硬盤)搞混淆,HardDisk是屬于外部存儲器,而ROM是內部存儲器。樣貌 也有很大差別,硬盤是一個立方體狀的東西,而ROM更像一個扁平固定長條狀的東西。硬盤可以輕易地改寫內容,但是ROM不可以。而且硬盤的容量比ROM大 得多。
在PC中ROM內的內容有BIOS程序和機器碼和出廠信息之類的東西。
而計算機的外部存儲器中采用了類似磁帶的裝置的東東就叫磁盤。軟盤、硬盤、U盤等都是磁盤的一種。
總結
以上是生活随笔為你收集整理的SRAM、DRAM、硬盘、ROM、RAM、EPROM、FLASH区别和联系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux命令之yum(软件的安装卸载)
- 下一篇: 浪潮存储双活方案:新疆道路运输管理局的大