把看到的關於存儲的一些東西整理一下,有些話來自於網友,因此仍是那句話,看到的人要帶着本身的思考去看,記住盡信書不如無書,fighting!!!程序員
1、基本概念編程
最熟悉的兩個詞語應該是RAM與ROM,RAM(Random Access Memory)的全名爲隨機存取記憶體,它至關於PC機上的移動存儲,用來存儲和保存數據的。它在任什麼時候候均可以讀寫,RAM一般是做爲操做系統或其餘正在運行程序的臨時存儲介質,它的一切都是最好的,惟一缺點斷電一切東西都沒有了。通常狀況下,如今移動設備也多了,咱們叫它內存,更一般的叫運行內存。還有一個熟悉的詞DDR2或DDR3,後面還會學習到的。dom
RAM 有兩大類,一種稱爲靜態RAM(Static RAM/SRAM),SRAM速度很是快,是目前讀寫最快的存儲設備了,可是它也很是昂貴,因此只在要求很苛刻的地方使用,譬如CPU的一級緩衝,二級緩衝。另外一種稱爲動態RAM(Dynamic RAM/DRAM),DRAM是經過在電容器中積累電荷來保存數據的存儲元件,電容器中充電狀態是1,放電狀態是0,因爲電容器中的電荷在一點時間後會衰減,因此DRAM須要按期從新寫入數據的Refrash操做,DRAM保留數據的時間很短,速度也比SRAM慢,不過它仍是比任何的ROM都要快,但從價格上來講DRAM相比SRAM要便宜不少,計算機內存就是DRAM的。 DRAM分爲不少種,根據訪問方式和規格的不一樣,分爲不一樣的種類常見的主要有FPRAM/FastPage、EDORAM、SDRAM、DDR RAM、RDRAM、SGRAM以及WRAM等。DDR RAM(Double-Date-Rate RAM)也稱做DDR SDRAM,這種改進型的RAM和SDRAM是基本同樣的,不一樣之處在於它能夠在一個時鐘讀寫兩次數據,這樣就使得數據傳輸速度加倍了。函數
最先的爲 FP DRAM,也稱做快頁內存,不過限於其定時刷新的工做原理,因此致使這種內存的數據存取速度並不快。可是這種內存卻意外地成爲了內存發展承上啓下的關鍵因素。由於以後的內存規範,與FP DRAM在工做原理上可謂是很是類似。隨後EDO RAM出如今衆人面前,這種內存也屬於72Pin SIMM內存的範疇,不過因爲有着更大的容量和更先進的尋址方式,因此在486時代很是盛行。這種內存與FP DRAM原理大體相同,可是因爲這種內存簡化了數據訪問的流程,因此在存取速度上要比傳統的DRAM要快上很多。速度雖然緩慢,看到了RAM的重要性,出現了SDRAM。而第一代SDRAM被稱爲SDR SDRAM(Single Data Rate SDRAM)。64bit的帶寬與當時處理器的總線寬度保持一致,這就表示一條SDRAM就可以讓電腦正常運行,這樣大大地下降了內存的購買成本。因爲內存的傳輸信號與處理器外頻同步,因此在傳輸速度上,DIMM標準SDRAM要大幅領先於SIMM內存。SDRAM出世之時恰逢Intel和AMD的主頻大戰,不管是主頻、倍頻和外頻都在不斷進行變化。倍頻和主頻的提高對於內存來講並非問題,真正的問題在於處理器外頻的提升須要SDRAM工做在更高的頻率上。因此SDRAM的頻率也通過了數次升級。從最先的PC66到PC133,從SDRAM頻率的變化就能看出處理器外頻的升級。而在超頻市場中,爲了可以讓處理器外頻達到更高的水平,市面上還出現了PC150、PC166等規格,能夠說SDRAM在頻率上更加靈活,性能也可以知足平臺的需求。DDR SDRAM英文名稱爲Dual Date Rate SDRAM,從字面意思上也能知道,這種內存比第一代的SDR SDRAM多出一倍的傳輸速率。其祕密就在於DDR SDRAM在數據傳輸中同時使用了信號的上升沿和降低沿,這樣在相同的時鐘下,DDR SDRAM的傳輸速率獲得了成倍的提升。性能
ROM(Read Only Memory)的全名爲惟讀記憶體,它至關於PC機上的硬盤,用來存儲和保存數據。ROM數據不能隨意更新,可是在任什麼時候候均可以讀取。即便是斷電,ROM也可以保留數據。可是資料一但寫入後只能用特殊方法或根本沒法更改,但這麼久了ROM已經有了很大的發展,再也不是最初的摸樣了。rom最初不能編程,出廠什麼內容就永遠什麼內容,不靈活。後來出現了prom,能夠本身寫入一次,要是寫錯了,只能換一片,自認倒黴。人類文明不斷進步,終於出現了可屢次擦除寫入的EPROM,每次擦除要把芯片拿到紫外線上照一下,想一下你往單片機上下了一個程序以後發現有個地方須要加一句話,爲此你要把單片機放紫外燈下照半小時,而後才能再下一次,這麼折騰一天也改不了幾回。歷史的車輪不斷前進,偉大的EEPROM出現了,拯救了一大批程序員,終於能夠隨意的修改rom中的內容了,這一段話就說出了ROM的發展歷程。學習
狹義的EEPROM:這種rom的特色是能夠隨機訪問和修改任何一個字節,能夠往每一個bit中寫入0或者1。這是最傳統的一種EEPROM,掉電後數據不丟失,能夠保存100年,能夠擦寫100w次。具備較高的可靠性,可是電路複雜/成本也高。它的改寫是由高電壓或者由控制端的邏輯電平來完成的。所以目前的EEPROM都是幾十千字節到幾百千字節的,絕少有超過512K的。咱們也就發現了EEPROM的確能夠實現隨意讀寫,EEPROM的全稱是「電可擦除可編程只讀存儲器」,即Electrically Erasable Programmable Read-Only Memory。可介紹的這兩種都不存在大容量而且也十分昂貴,那咱們平時見到的幾十G的存儲設備是什麼?flash就應運而生了。flash屬於廣義的EEPROM,由於它也是電擦除的rom。可是爲了區別於通常的按字節爲單位的擦寫的EEPROM,咱們都叫它flash。flash作的改進就是擦除時再也不以字節爲單位,而是以塊爲單位,一次簡化了電路,數據密度更高,下降了成本。上M的rom通常都是flash。ui
ROM的應用操作系統
對數指數、三角函數等常規計算經過寫出真值表,將自變量以地址碼的形式輸至ROM,用ROM表來實現。還有碼制轉換,例如二進制碼轉格雷碼。脈衝序列發生器,僞彩色處理電路,也就是將一幅黑白圖像變成彩色圖像顯示,將灰度圖像對應到red , green , blue三個通道上,最後將三個通道的顏色值合成爲須要顯示的RGB顏色值便可。具體可參考 https://blog.csdn.net/huixingshao/article/details/42706699 。.net
接下來講一下flash的分類,flash分爲nor flash和nand flash。nor flash數據線和地址線分開,能夠實現ram同樣的隨機尋址功能,能夠讀取任何一個字節。可是擦除仍要按塊來擦。nand flash一樣是按塊擦除,可是數據線和地址線複用,不能利用地址線隨機尋址。讀取只能按頁來讀取。NOR Flash的讀取,用戶能夠直接運行裝載在NOR FLASH裏面的代碼。NAND Flash沒有采起內存RAM的隨機讀取技術,它的讀取是以一次讀取一塊的形式來進行的,一般是一次讀取512個字節,採用這種技術的Flash比較廉價。用戶不能直接運行NAND Flash上的代碼,所以好多使用NAND Flash的開發板除了使用NAND Flah之外,還做上了一塊小的NOR Flash來運行啓動代碼。nandflash引腳上覆用,所以讀取速度比nor flash慢一點,可是擦除和寫入速度比nor flash快不少。nand flash內部電路更簡單,所以數據密度大,體積小,成本也低。所以大容量的flash都是nand型的。小容量的2~12M的flash可能是nor型的。nor flash能夠進行字節尋址,因此程序能夠在nor flash中運行。嵌入式系統多用一個小容量的nor flash存儲引導代碼,用一個大容量的nand flash存放文件系統和內核。blog