簡介 存儲器的主要功能是存儲程式和各種數據,並能在計算機運行過程中高速、自動地完成程式或數據的存取。存儲器是具有“記憶”功能的設備,它採用具有兩種穩定狀態的物理器件來存儲信息。這些器件也稱為記憶元件。在計算機中採用只有兩個
數碼 “0”和“1”的二進制來表示數據。記憶元件的兩種穩定狀態分別表示為“0”和“1”。日常使用的十進制數必須轉換成等值的
二進制數 才能存入存儲器中。計算機中處理的各種字元,例如英文字母、運算符號等,也要轉換成
二進制代碼 才能存儲和操作。
存儲器:存放程式和數據的器件
存儲位:存放一個二進制數位的存儲單元,是存儲器最小的存儲單位,或稱記憶單元
存儲字 :一個數(n位二進制位)作為一個整體存入或取出時,稱存儲字
存儲單元 :存放一個存儲字的若干個記憶單元組成一個存儲單元
存儲體:大量存儲單元的集合組成存儲體
字編址:對存儲單元按字編址
位元組編址:對存儲單元按位元組編址
定址 :由地址尋找數據,從對應地址的存儲單元中訪存數據。
以存儲體(大量存儲單元組成的陣列)為核心,加上必要的地址解碼、讀寫控制電路,即為存儲積體電路;再加上必要的I/O接口和一些額外的電路如存取策略管理,則形成存儲晶片,比如手機中常用的存儲晶片。得益於新的IC製造或晶片封裝工藝,現在已經有能力把DRAM和FLASH存儲單元集成在單晶片里。存儲晶片再與控制晶片(負責複雜的存取控制、存儲管理、加密、與其他器件的配合等)及時鐘、電源等必要的組件集成在電路板上構成整機,就是一個存儲產品,如隨身碟。從存儲單元(電晶體陣列)到存儲積體電路再到存儲設備,都是為了實現信息的存儲,區別是層次的不同。
存儲器層次框圖 構成 構成存儲器的存儲介質,
存儲元 ,它可存儲一個二進制代碼。由若干個存儲元組成一個存儲單元,然後再由許多存儲單元組成一個存儲器。一個存儲器包含許多存儲單元,每個存儲單元可存放一個
位元組 (按位元組
編址 )。每個存儲單元的位置都有一個編號,即地址,一般用十六進制表示。一個存儲器中所有存儲單元可存放數據的總和稱為它的
存儲容量 。假設一個存儲器的
地址碼 由20位二進制數(即5位
十六進制數 )組成,則可表示2的20次方,即1M個存儲單元地址。每個存儲單元存放一個位元組,則該存儲器的存儲容量為1MB。
存儲器 工作原理 這裡只介紹動態存儲器(DRAM)的工作原理。
工作原理 動態存儲器每片只有一條輸入
數據線 ,而
地址 引腳 只有8條。為了形成64K地址,必須在系統地址匯流排和晶片地址引線之間專門設計一個地址形成電路。使系統地址匯流排信號能分時地加到8個地址的引腳上,藉助晶片內部的行
鎖存器 、列鎖存器和解碼電路選定晶片內的存儲單元,鎖存信號也靠著外部地址電路產生。
當要從DRAM晶片中讀出數據時,CPU首先將
行地址 加在A0-A7上,而後送出RAS鎖存信號,該信號的下降沿將地址鎖存在晶片內部。接著將列地址加到晶片的A0-A7上,再送CAS鎖存信號,也是在信號的下降沿將列地址鎖存在晶片內部。然後保持WE=1,則在CAS有效期間
數據輸出 並保持。
當需要把數據寫入晶片時,行列地址先後將RAS和CAS鎖存在晶片內部,然後,WE有效,加上要寫入的數據,則將該數據寫入選中的存貯單元。
存儲器晶片 由於
電容 不可能長期保持
電荷 不變,必須定時對
動態存儲 電路 的各存儲單元執行重讀操作,以保持電荷穩定,這個過程稱為動態存儲器刷新。PC/XT機中DRAM的刷新是利用DMA實現的。首先套用可程式定時器8253的計數器1,每隔1⒌12μs產生一次DMA請求,該請求加在DMA
控制器 的0
通道 上。當DMA控制器0通道的請求得到
回響 時,DMA控制器送出到刷新地址信號,對動態存儲器執行讀操作,每讀一次刷新一行。
功能 存儲器
功能
定址方式
掉電後
說明
隨機存取存儲器(RAM)
讀、寫
隨機定址
數據丟失
唯讀存儲器(ROM)
讀
隨機定址
數據不丟失
工作前寫入數據
快閃記憶體(Flash Memory)
讀、寫
隨機定址
數據不丟失
先進先出存儲器(FIFO)
讀、寫
順序定址
數據丟失
先進後出存儲器(FILO)
讀、寫
順序定址
數據丟失
分類 按存儲介質
按存儲方式
隨機存儲器 :任何存儲單元的內容都能被隨機存取,且存取時間和存儲單元的物理位置無關。
順序存儲器 :只能按某種順序來存取,存取時間和存儲單元的物理位置有關。
按讀寫功能
唯讀存儲器 (ROM):存儲的內容是固定不變的,只能讀出而不能寫入的半導體存儲器。
隨機讀寫存儲器(
RAM ):既能讀出又能寫入的半導體存儲器。
各存儲器之間的關係 按信息保存性
非永久記憶的存儲器:斷電後信息即消失的存儲器。
永久記憶性存儲器:斷電後仍能保存信息的存儲器。
按用途
為了解決對存儲器要求容量大,速度快,成本低三者之間的矛盾,通常採用多級存儲器體系結構,即使用高速緩衝存儲器、主存儲器和
外存儲器 。
存儲系統的分級結構 用途特點
主存儲器 記憶體存放計算機運行期間的大量程式和數據存取速度較快,存儲容量不大
原理分類 按照與CPU的接近程度,存儲器分為
記憶體儲器 與
外存儲器 ,簡稱記憶體與外存。記憶體儲器又常稱為主存儲器(簡稱主存),屬於主機的組成部分;外存儲器又常稱為輔助存儲器(簡稱
輔存 ),屬於外部設備。CPU不能像訪問記憶體那樣,直接訪問外存,外存要與CPU或I/O設備進行數據傳輸,必須通過記憶體進行。在80386以上的高檔微機中,還配置了高速緩衝存儲器(cache),這時記憶體包括主存與
高速快取 兩部分。對於低檔微機,主存即為記憶體。
把存儲器分為幾個層次主要基於下述原因:
1、合理解決速度與成本的矛盾,以得到較高的性能價格比。半導體存儲器速度快,但價格高,容量不宜做得很大,因此僅用作與CPU頻繁交流信息的記憶體儲器。磁碟存儲器價格較便宜,可以把容量做得很大,但存取速度較慢,因此用作存取次數較少,且需存放大量程式、
原始數據 (許多程式和數據是暫時不參加運算的)和運行結果的外存儲器。計算機在執行某項任務時,僅將與此有關的程式和原始數據從磁碟上調入容量較小的記憶體,通過CPU與記憶體進行高速的數據處理,然後將最終結果通過記憶體再寫入磁碟。這樣的配置價格適中,綜合存取速度則較快。
為解決高速的CPU與速度相對較慢的主存的矛盾,還可使用高速快取。它採用速度很快、價格更高的半導體
靜態存儲器 ,甚至與
微處理器 做在一起,存放當前使用最頻繁的指令和數據。當CPU從記憶體中讀取指令與數據時,將同時訪問高速快取與主存。如果所需內容在高速快取中,就能立即獲取;如沒有,再從主存中讀取。高速快取中的內容是根據實際情況及時更換的。這樣,通過增加少量成本即可獲得很高的速度。
2、使用磁碟作為外存,不僅價格便宜,可以把存儲容量做得很大,而且在斷電時它所存放的信息也不丟失,可以長久保存,且複製、攜帶都很方便。
管理 伺服器 在存儲器環境按這樣的方法分配存儲器:在某個環境分配的存儲器可以被環境
析構器 釋放而不會影響其他環境中分配的存儲器.所有存儲器分配(通過 palloc 等)都被當作在當前環境的區域中分配存儲器.如果你試圖釋放(或再分配)不在當前環境的存儲器,你將得到不可預料的結果.
存儲器 創建存儲器環境和切換存儲器環境是 SPI 管理器中存儲器管理器的任務.
SPI 過程處理兩種存儲器環境:上層執行器存儲器環境和過程存儲器環境(如果已聯接).
在一個過程與SPI管理器聯接之前,當前存儲器環境是上層執行器環境,所以所有由過程自身通過 palloc/repalloc 或通過SPI 套用函式在聯接到SPI 管理器之前分配的存儲器都在這個環境裡.
在進行SPI_connect 調用之後,當前環境是過程自身所有的.通過 palloc/repalloc 或通過SPI 套用函式分配的存儲器(除了SPI_copytuple,SPI_modifytuple,SPI_palloc 和SPI_repalloc 以外)都在這個環境中分配.
各種存儲器 當進程與 SPI 管理器斷開(通過調用SPI_finish)後,當前環境恢復為上層執行器環境並且所有在過程存儲器環境分配的存儲器都被釋放,並且不可繼續使用!
如果你想返回一些東西給上層執行器,那么你必須為此在上層環境分配一片存儲器!
SPI 不能自動釋放在上層執行器環境裡分配的存儲器!
SPI 在查詢完成後自動釋放查詢執行期間的存儲器分配!
實體 存儲器可以是一張卡,也可以是
軟碟 ,可以是活動的,也可以是固定的,用於保存圖像。
cf快閃記憶體卡
一種袖珍
快閃記憶體卡 ,(compact flash card)。像pc卡那樣插入數位相機,它可用
適配器 ,(又稱
轉接卡 ),使之適應標準的pc卡
閱讀器 或其他的pc卡設備。cf存儲卡的部分結構採用強化玻璃及金屬外殼,cf存儲卡採用standard ata/ide接口界面,配備有專門的pcm-cia適配器(轉接卡),筆記本電腦的用戶可直接在pcmcia插槽上使用,使數據很容易在數位相機與電腦之間傳遞。
sm快閃記憶體卡
即smart media,智慧型媒體卡,一種存儲媒介。sm卡採用了ssfdg/flash記憶體卡,具有超小超薄超輕等特性,體積37(長)×45(寬)×0.76(厚)毫米,重量是1.8g,功耗低,容易升級,sm轉換卡也有pcmcia界面,方便用戶進行
數據傳送 。
外部EPROM擴展原理 memory stick duo
memory stick duo即微型
記憶棒 ,微型記憶棒的體積和重量都為普通記憶棒的三分之一左右,目前最大
存儲容量 可以達到4g。
sd快閃記憶體卡
即SecureDigital, 32×24×2.11
存儲 的速度快,非常小巧,外觀和MMC一樣,市面上較多數數位相機使用這種格式的存儲卡,市場占有率第一。
xd快閃記憶體卡
即Fuji film(富士膠捲)和OLYMPUS(奧林巴斯)聯合推出的xD-Picture卡,體形很小,傳輸速度很快,不過價格很昂貴。
擴展4k位元組EPROM的8051/8751 mmc快閃記憶體卡
即MultiMedia Card ,外型和SD完全一樣,很多時候也通用。
微硬碟
是一種比較高端的存貯產品,“Hitachi(日立)”和國產品牌“南方匯通”都推出了自己的微硬碟產品。微型
硬碟 外型和CF卡完全一樣,使用同一型號接口。
優卡
優卡是lexar公司生產的一種數位相機
存儲 介質 ,外形和一般的cf卡相同,可以用在使用cf卡的數位相機、pda、mp3等數碼設備上,同時可以直接通過usb接口與計算機系統在線上,用作移動存儲器。
一片27256的EPROM的擴展電路 數字膠捲
數字膠捲是lexar公司生產的的一種數位相機的存儲介質,同日立的sm卡、松下的sd卡、索尼的memorystick屬同類的數字存儲媒體。
pc卡轉換器
一種接外掛程式,可以把cf卡或sm卡插入其中,然後,整體作為一個pc卡插入計算機的pcmica插口,這是常用於便攜機的一種通用
擴展接口 ,可以接入pcmica記憶體卡、pcmica硬碟、pcmica
數據機 等。
選用 存儲器的類型將決定整個
嵌入式系統 的操作和性能,因此存儲器的選擇是一個非常重要的決策。無論系統是採用電池供電還是由市電供電,套用需求將決定存儲器的類型(易失性或非易失性)以及使用目的(存儲代碼、數據或者兩者兼有)。另外,在選擇過程中,存儲器的尺寸和成本也是需要考慮的重要因素。對於較小的系統,微控制器自帶的存儲器就有可能滿足系統要求,而較大的系統可能要求增加外部存儲器。為嵌入式系統選擇存儲器類型時,需要考慮一些設計參數,包括
微控制器 的選擇、電壓範圍、電池壽命、讀寫速度、存儲器尺寸、存儲器的特性、擦除/寫入的耐久性以及系統總成本。
基本原則 1.內部存儲器與外部存儲器
一般情況下,當確定了存儲程式代碼和數據所需要的存儲空間之後,設計工程師將決定是採用內部存儲器還是外部存儲器。通常情況下,內部存儲器的性價比最高但靈活性最低,因此設計工程師必須確定對存儲的需求將來是否會增長,以及是否有某種途徑可以升級到代碼空間更大的
微控制器 。基於成本考慮,人們通常選擇能滿足套用要求的存儲器容量最小的微控制器,因此在預測代碼規模的時候要必須特別小心,因為代碼規模增大可能要求更換微控制器。
市場上存在各種規模的外部存儲器器件,我們很容易通過增加存儲器來適應代碼規模的增加。有時這意味著以封裝尺寸相同但容量更大的存儲器替代現有的存儲器,或者在
匯流排 上增加存儲器。即使微控制器帶有內部存儲器,也可以通過增加外部串列EEPROM或快閃記憶體來滿足系統對非
易失性存儲器 的需求。
半導體存儲器 2.引導存儲器
在較大的微控制器系統或基於處理器的系統中,設計工程師可以利用引導代碼進行初始化。套用本身通常決定了是否需要引導代碼,以及是否需要專門的引導存儲器。例如,如果沒有外部的定址匯流排或串列引導接口,通常使用內部存儲器,而不需要專門的引導器件。但在一些沒有內部
程式存儲器 的系統中,初始化是操作代碼的一部分,因此所有代碼都將駐留在同一個外部程式存儲器中。某些微控制器既有內部存儲器也有外部定址匯流排,在這種情況下,引導代碼將駐留在內部存儲器中,而操作代碼在外部存儲器中。這很可能是最安全的方法,因為改變操作代碼時不會出現意外地修改引導代碼。在所有情況下,引導存儲器都必須是非易失性存儲器。
3.配置存儲器
對於現場可程式門陣列(FPGA)或
片上系統 (SoC),人們使用存儲器來存儲配置信息。這種存儲器必須是非易失性EPROM、EEPROM或快閃記憶體。大多數情況下,FPGA採用SPI接口,但一些較老的器件仍採用FPGA
串列接口 。串列EEPROM或快閃記憶體器件最為常用,EPROM用得較少。
4.程式存儲器
所有帶處理器的系統都採用程式存儲器,但設計工程師必須決定這個存儲器是位於處理器內部還是外部。在做出了這個決策之後,設計工程師才能進一步確定存儲器的容量和類型。當然有的時候,微控制器既有內部程式存儲器也有外部定址匯流排,此時設計工程師可以選擇使用它們當中的任何一個,或者兩者都使用。這就是為什麼為某個套用選擇最佳存儲器的問題,常常由於微控制器的選擇變得複雜起來,以及為什麼改變存儲器的規模也將導致改變微控制器的選擇的原因。
如果微控制器既利用內部存儲器也利用外部存儲器,則內部存儲器通常被用來存儲不常改變的代碼,而外部存儲器用於存儲更新比較頻繁的代碼和數據。設計工程師也需要考慮存儲器是否將被線上重新
編程 或用新的可
編程器 件替代。對於需要重編程功能的套用,人們通常選用帶有內部快閃記憶體的微控制器,但帶有內部OTP或ROM和外部快閃記憶體或EEPROM的微控制器也滿足這個要求。為降低成本,外部快閃記憶體可用來存儲代碼和數據,但在存儲數據時必須小心避免意外修改代碼。
在大多數嵌入式系統中,人們利用快閃記憶體
存儲程式 以便線上升級
固件 。代碼穩定的較老的套用系統仍可以使用ROM和OTP存儲器,但由於快閃記憶體的通用性,越來越多的套用系統正轉向快閃記憶體。
5.數據存儲器
與程式存儲器類似,
數據存儲 器可以位於微控制器內部,或者是外部器件,但這兩種情況存在一些差別。有時
微控制器 內部包含SRAM(易失性)和EEPROM(非易失)兩種
數據存儲 器,但有時不包含內部EEPROM,在這種情況下,當需要存儲大量數據時,設計工程師可以選擇外部的串列EEPROM或
串列快閃記憶體 器件。當然,也可以使用並行EEPROM或快閃記憶體,但通常它們只被用作程式存儲器。
當需要外部
高速數據 存儲 器時,通常選擇並行SRAM並使用外部串列EEPROM器件來滿足對非易失性存儲器的要求。一些設計還將快閃記憶體器件用作程式存儲器,但保留一個
扇區 作為數據存儲區。這種方法可以降低成本、空間並提供非易失性
數據存儲 器。
針對非易失性存儲器要求,串列EEPROM器件支持I2C、SPI或微線(Microwire)通訊匯流排,而串列快閃記憶體通常使用SPI匯流排。由於寫入速度很快且帶有I2C和SPI串列接口,FRAM在一些系統中得到套用。
6.易失性和非易失性存儲器
存儲器可分成易失性存儲器或者非易失性存儲器,前者在斷電後將丟失數據,而後者在斷電後仍可保持數據。設計工程師有時將易失性存儲器與後備電池一起使用,使其表現猶如非易失性器件,但這可能比簡單地使用非易失性存儲器更加昂貴。然而,對要求存儲器容量非常大的系統而言,帶有後備電池的DRAM可能是滿足設計要求且性價比很高的一種方法。
在有連續能量供給的系統中,易失性或非易失性存儲器都可以使用,但必須基於斷電的可能性做出最終決策。如果存儲器中的信息可以在電力恢復時從另一個信源中恢復出來,則可以使用易失性存儲器。
選擇易失性存儲器與電池一起使用的另一個原因是速度。儘管非易失存儲器件可以在斷電時保持數據,但寫入數據(一個
位元組 、頁或扇區)的時間較長。
7.串列存儲器和並行存儲器
在定義了套用系統之後,
微控制器 的選擇是決定選擇串列或並行存儲器的一個因素。對於較大的套用系統,
微控制器 通常沒有足夠大的內部存儲器,這時必須使用外部存儲器,因為外部定址匯流排通常是並行的,外部的程式存儲器和
數據存儲 器也將是並行的。
較小的套用系統通常使用帶有內部存儲器但沒有外部
地址匯流排 的微控制器。如果需要額外的
數據存儲 器,外部串列存儲器件是最佳選擇。大多數情況下,這個額外的
外部數據 存儲 器是非易失性的。
根據不同的設計,引導存儲器可以是串列也可以是並行的。如果微控制器沒有內部存儲器,並行的非易失性存儲器件對大多數套用系統而言是正確的選擇。但對一些高速套用,可以使用外部的非易失性串列
存儲 器件來引導
微控制器 ,並允許主代碼存儲在內部或外部高速SRAM中。
8.EEPROM與快閃記憶體
存儲器技術的成熟使得RAM和ROM之間的界限變得很模糊,如今有一些類型的存儲器(如EEPROM和快閃記憶體)組合了兩者的特性。這些器件像RAM一樣進行讀寫,並像ROM一樣在斷電時保持數據,它們都可電擦除且可程式,但各自有它們優缺點。
從軟體角度看,獨立的EEPROM和快閃記憶體器件是類似的,兩者主要差別是EEPROM器件可以逐
位元組 地修改,而快閃記憶體器件只支持扇區擦除以及對被擦除單元的字、頁或扇區進行
編程 。對快閃記憶體的重新編程還需要使用SRAM,因此它要求更長的時間內有更多的器件在工作,從而需要消耗更多的電池能量。設計工程師也必須確認在修改數據時有足夠容量的SRAM可用。
存儲器密度是決定選擇串列EEPROM或者快閃記憶體的另一個因素。市場上可用的獨立串列EEPROM器件的容量在128KB或以下,獨立快閃記憶體器件的容量在32KB或以上。
如果把多個器件級聯在一起,可以用串列EEPROM實現高於128KB的容量。很高的擦除/寫入耐久性要求促使設計工程師選擇EEPROM,因為典型的串列EEPROM可擦除/寫入100萬次。快閃記憶體一般可擦除/寫入1萬次,只有少數幾種器件能達到10萬次。
今天,大多數快閃記憶體器件的電壓範圍為2.7V到3.6V。如果不要求
位元組 定址 能力或很高的擦除/寫入耐久性,在這個電壓範圍內的套用系統採用快閃記憶體,可以使成本相對較低。
9.EEPROM與FRAM
EEPROM和FRAM的設計參數類似,但FRAM的可讀寫次數非常高且寫入速度較快。然而通常情況下,用戶仍會選擇EEPROM而不是FRAM,其主要原因是成本(FRAM較為昂貴)、質量水平和供貨情況。設計工程師常常使用成本較低的串列EEPROM,除非耐久性或速度是強制性的系統要求。
DRAM和SRAM都是易失性存儲器,儘管這兩種類型的存儲器都可以用作程式存儲器和
數據存儲 器,但SRAM主要用於數據存儲器。DRAM與SRAM之間的主要差別是
數據存儲 的壽命。只要不斷電,SRAM就能保持其數據,但DRAM只有極短的數據壽命,通常為4毫秒左右。
網路存儲器 與SRAM相比,DRAM似乎是毫無用處的,但位於
微控制器 內部的DRAM
控制器 使DRAM的性能表現與SRAM一樣。DRAM控制器在數據消失之前周期性地刷新所存儲的數據,所以存儲器的內容可以根據需要保持長時間。
由於比特成本低,DRAM通常用作程式存儲器,所以有龐大存儲要求的套用可以從DRAM獲益。它的最大缺點是速度慢,但計算機系統使用高速SRAM作為高速緩衝存儲器來彌補DRAM的速度缺陷。
10、雲儲存
和傳統存儲相比,雲存儲系統具有如下優勢:優異性能支持高並發、頻寬飽和利用。雲存儲系統將控制流和數據流分離,數據訪問時多個存儲伺服器同時對外提供服務,實現高並發訪問。自動均衡負載,將不同客戶端的訪問負載均衡到不同的存儲伺服器上。系統性能隨節點規模的增加呈線性增長。系統的規模越大,雲存儲系統的優勢越明顯, 沒有性能瓶頸。高度可靠針對小檔案採用多個數據塊副本的方式實現冗餘可靠,數據在不同的存儲節點上具有多個塊副本,任意節點發生故障,系統將自動複製數據塊副本到新的存儲節點上,數據不丟失,實現數據完整可靠;針對大檔案採用超安存(S3)編解碼算法的方式實現高度可靠,任意同時損壞多個存儲節點,數據可通過超安存算法解碼自動恢復。該特性可適用於對數據安全級別極高的場合,同時相對於副本冗餘的可靠性實現方式大大提高了磁碟空間利用率,不到40%的磁碟冗餘即可實現任意同時損壞三個存儲節點而不丟失數據。元數據管理節點採用雙機鏡像熱備份的高可用方式容錯,其中一台伺服器故障,可無縫自動切換到另一台伺服器,服務不間斷。整個系統無單點故障,硬體故障自動禁止。線上伸縮可以在不停止服務的情況下,動態加入新的存儲節點,無需任何操作,即可實現系統容量從TB級向PB級平滑擴展;也可以摘下任意節點,系統自動縮小規模而不丟失數據,並自動將再下的節點上的數據備份到其他節點上,保證整個系統數據的冗餘數。超大規模支持超大規模集群,理論容量為1024×1024×1024PB。簡單通用支持POSIX接口規範,支持Windows/Linux/Mac OS X,用戶當成海量磁碟使用,無需修改套用。同時系統也對外提供專用的API訪問接口。智慧型管理一鍵式安裝,智慧型化自適應管理,簡單方便的監控界面,無需學習即可使用。雲存儲系統所有管理工作由雲存儲系統管理監控中心完成,使用人員無需任何專業知識便可以輕鬆地管理整個系統。通過專業的分散式集群監控子系統對所有節點實行無間斷監控,用戶通過界面可以清楚地了解到每一個節點的運行情況。
小結 儘管我們幾乎可以使用任何類型的存儲器來滿足嵌入式系統的要求,但終端套用和總成本要求通常是影響我們做出決策的主要因素。有時,把幾個類型的存儲器結合起來使用能更好地滿足套用系統的要求。例如,一些PDA設計同時使用易失性存儲器和非易失性存儲器作為程式存儲器和數據存儲器。把永久的程式保存在非易失性ROM中,而把由用戶下載的程式和
數據存儲 在有電池支持的易失性DRAM中。不管選擇哪種存儲器類型,在確定將被用於最終套用系統的存儲器之前,設計工程師必須仔細折中考慮各種設計因素。
測試 存儲器測試的目的是確認在存儲設備中的每一個存儲位置都在工作。換一句話說,如果你把數50存儲在一個具體的地址,你希望可以找到存儲在那裡的那個數,直到另一個數寫入。任何存儲器測試的基本方法是,往存儲器寫入一些數據,然後根據記憶體設備的地址,校驗讀回的數據。如果所有讀回的數據和那些寫入的數據是一樣的,那么就可以說存儲設備通過了測試。只有通過認真選擇的一組數據你才可以確信通過的結果是有意義的。
當然,像剛才描述的有儲器的測試不可避免地具有破壞性。在記憶體測試過程中,你必須覆蓋它原先的內容。因為重寫非易失性存儲器內容通常來說是不可行的,這一部分描述的測試通常只適用於RAM 的測試。
常見問題 一,普通的存儲器問題
在學習具體的測試算法之前,你應該了解可能遇到的各種存儲器問題。在
軟體工程師 中一個普遍的誤解是,大部分的存儲器問題發生在晶片的內部。儘管這類問題一度是一個主要的問題,但是它們在日益減少。存儲設備的製造商們對於每一個批量的晶片都進行了各種產品後期測試。因此,即使某一個批量有問題,其中某個壞晶片進人到你的系統的可能性是微乎其微的。
你可能遇到的一種類型的
存儲晶片 問題是災難性的失效。這通常是在加工好之後晶片受到物理或者是電子損傷造成的。災難性失效是少見的,通常影響晶片中的大部分。因為一大片區域受到影響,所以災難性的失效當然可以被合適的測試算法檢測到。
存儲器出問題比較普遍的原因是電路板故障。典型的電路板故障有:
(1)在處理器與存儲設備之間的連線問題
(2)無存儲器晶片
(3)存儲器晶片的不正確插人
二,測試策略
最好有三個獨立的測試:
數據匯流排 的測試、
地址 匯流排的測試以及設備的測試。前面兩個測試針對電子連線的問題以及晶片的不正確插入;第三個測試更傾向於檢測晶片的有無以及災難性失效。作為一個意外的結果,設備的測試也可以發現
控制匯流排 的問題,儘管它不能提供關於問題來源的有用信息。
執行這三個測試的順序是重要的。正確的順序是:首先進行數據匯流排測試,接著是地址匯流排測試,最後是設備測試。那是因為地址匯流排測試假設數據匯流排在正常工作,除非數據匯流排和地址匯流排已知是正常的,否則設備測試便毫無意義。如果任何測試失敗,你都應該和一個硬體工程師一起確定問題的來源。通過查看測試失敗處的數據值或者地址,應該能夠迅速地找出電路板上的問題。
1,數據匯流排測試
我們首先要測試的就是數據匯流排。我們需要確定任何由處理器放置在數據匯流排上的值都被另一端的存儲設備正確接收。最明顯的測試方法就是寫人所有可能的數據值並且驗證存儲設備成功地存儲了每一個。然而,那並不是最有效率的測試方法。一個更快的測試方法是一次測試匯流排上的一位。如果每一個數據上可被設定成為 0 和1,而不受其他
數據位 的影響,那么數據匯流排就通過了測試。
2,地址匯流排測試
在確認數據匯流排工作正常之後,你應該接著測試地址匯流排。記住地址匯流排的問題將導致存儲器位置的重疊。有很多可能重疊的地址。然而,不必要測試每一個可能的組合。你應該努力在測試過程中分離每一個地址位。你只需要確認每一個
地址線 的管腳都可以被設定成0和 1,而不影響其他的管腳。
3,設備測試
一旦你知道地址和數據匯流排是正確的,那么就有必要測試存儲設備本身的完整性。要確認的是設備中的每一位都能夠保持住0和 1。這個測試實現起來十分簡單,但是它花費的時間比執行前面兩項測試花費的總時間還要長。
對於一個完整的設備測試,你必須訪問(讀和寫)每一個存儲位置兩次。你可以自由地選擇任何數據作為第一步測試的數據,只要在進行第二步測試的時候把這個值求反即可。因為存在沒有存儲器晶片的可能性,所以最好選擇一組隨著地址變化(但是不等於地址)的數。最佳化措施
市場上並不缺少提高
數據存儲 效率的新技術,然而這些新技術絕大多數都是關注備份和存檔的,而非主存儲。但是,當企業開始進行主存儲數據縮減時,對他們來說,了解主存儲最佳化所要求的必要條件十分重要。
存儲器 主存儲,常常被稱為1級存儲,其特徵是存儲活躍數據――即經常被存取並要求高性能、低時延和高可用性的數據。主存儲一般用於支持關鍵任務套用,如資料庫、電子郵件和交易處理。大多數關鍵套用具有隨機的數據取存模式和不同的取存要求,但它們都生成機構用來運營它們的業務的大量的數據。因此,機構製作數據的許多份拷貝,複製數據供分布使用,庫存數據,然後為安全保存備份和存檔數據。
絕大多數數據是起源於主數據。隨著數據存在的時間增加,它們通常被遷移到二級和三級存儲保存。因此,如果機構可以減少主
數據存儲 占用空間 ,將能夠在數據生命期中利用這些節省下來的容量和費用。換句話說,更少的主存儲占用空間意味著更少的數據複製、庫存、存檔和備份。
試圖減少主存儲占用空間存儲管理人員可以考慮兩種減少數據的方法:實時壓縮和數據去重。
直到不久前,由於性能問題,
數據壓縮 一直沒有在主
存儲 套用中得到廣泛套用。然而,Storwize等廠商提供利用實時、
隨機存取 壓縮/解壓技術將數據占用空間壓縮15:1的解決方案。更高的
壓縮率 和實時性能使壓縮解決方案成為主
存儲 數據 縮減的可行的選擇。
在備份套用中廣泛採用的數據去重技術也在被套用到主存儲。目前為止,數據去重面臨著一大挑戰,即數據去重處理是離線處理。這是因為確定數量可能多達數百萬的檔案中的多餘的
數據塊 需要大量的時間和存儲處理器做大量的工作,因此非常活躍的數據可能受到影響。當前,推出數據去重技術的主要廠商包括NetApp、Data Domain和Ocarina
Networks 。
解決方案 一、零性能影響
與備份或存檔存儲不同,活躍數據集的性能比能夠用某種形式的數據縮減技術節省的存儲容量更為關鍵。因此,選擇的數據縮減技術必須不影響到性能。它必須有效和簡單;它必須等價於“撥動一個開關,就消耗更少的存儲”。
活躍存儲縮減解決方案只在需要去重的數據達到非活躍狀態時才為活躍存儲去重。換句話說,這意味著實際上只對不再被存取但仍保存在活躍
存儲池 中的檔案――近活躍存儲級――進行去重。
去重技術通過建議只對輕I/O工作負載去重來避免性能瓶頸。因此,IT基礎設施的關鍵組件的
存儲 沒有得到最佳化。
數據 庫排在關鍵組件清單之首。由於它們是1級存儲和極其活躍的組件並且幾乎始終被排除在輕工作負載之外,去重處理從來不分析它們。因此,它們在主存儲中占據的空間沒有得到最佳化。
另一方面,實時壓縮系統實時壓縮所有流經壓縮系統的數據。這導致節省存儲容量之外的意外好處:存儲性能的提高。當所有數據都被壓縮時,每個I/O請求提交的數據量都有效地增加,
硬碟 空間增加了,每次寫和讀操作都變得效率更高。
主
存儲 去重的第二個好處是所有數據都被減少,這實現了包括資料庫在內的所有數據的容量節省。儘管Oracle環境的實時數據壓縮可能造成一些性能問題,但迄今為止的測試表明性能提高了。
另一個問題是對存儲控制器本身的性能影響。人們要求今天的存儲控制器除了做伺服
硬碟 外,還要做很多事情,包括管理不同的協定,執行複製和管理快照。再向這些功能增加另一個功能可能會超出
控制器 的承受能力――即使它能夠處理額外的工作負載,它仍增加了一個
存儲管理 人員必須意識到可能成為潛在I/O瓶頸的過程。將壓縮工作交給外部專用設備去做,從性能問題中消除了一個變數,而且不會給
存儲 控制器 造成一點影響。
存儲器 二、高可用性
許多關注二級存儲的數據縮減解決方案不是高可用的。這是由於它們必須立即恢復的備份或存檔
數據 不像一級存儲中那樣關鍵。但是,甚至在二級存儲中,這種概念也逐漸不再時興,高可用性被作為一種選擇添加到許多二級
存儲系統 中。
可是,高可用性在主
存儲 中並不是可選的選項。從數據縮減格式(被去重或被壓縮)中讀取數據的能力必須存在。在數據縮減解決方案中(其中去重被集成到
存儲陣列 中),冗餘性是幾乎總是高可用的存儲陣列的必然結果。
在配件市場去重系統中,解決方案的一個組件以
數據 的原始格式向客戶機提供去重的數據。這個組件就叫做讀出器(reader)。讀出器也必須是高可用的,並且是無縫地高可用的。一些解決方案具有在發生故障時在標準
伺服器 上載入讀出器的能力。這類解決方案經常被用在近活躍的或更合適的存檔
數據 上;它們不太適合非常活躍的數據集。
多數在線上壓縮系統被插入系統中和網路上,放置(邏輯上)在
交換機 與
存儲 之間。因此,它們由於網路基礎設施級上幾乎總是設計具有的高可用性而取得冗餘性。沿著這些路徑插入在線上專用設備實現了不需要IT管理人員付出額外努力的無縫的故障切換;它利用了已經在網路上所做的工作。
三、節省空間
部署這些解決方案之一必須帶來顯著的容量節省。如果減少占用容量的主存儲導致低於標準的用戶性能,它沒有價值。
主數據不具有備份數據通常具有的高
冗餘 存儲 模式。這直接影響到總體容量節省。這裡也有兩種實現主
數據 縮減的方法:數據去重和壓縮。
數據去重技術尋找近活躍檔案中的冗餘數據,而能取得什麼水平的數據縮減將取決於環境。在具有高冗餘水平的環境中,數據去重可以帶來顯著的ROI(投資回報),而另一些環境只能取得10%到20%的縮減。
壓縮對所有可用數據都有效,並且它在可以為高冗餘數據節省更多的存儲容量的同時,還為主存儲套用常見的更隨機的數據模式始終帶來更高的節省。
實際上,數據模式冗餘度越高,去重帶來的空間節省就越大。數據模式越隨機,壓縮帶來的空間節省就越高。
四、獨立於套用
真正的好處可能來自所有跨
數據類型 (不管產生這些數據是什麼套用或數據有多活躍)的數據縮減。雖然實際的縮減率根據去重數據的水平或數據的壓縮率的不同而不同,但所有數據都必須合格。
當涉及存檔或備份時,套用特有的數據縮減具有明確的價值,並且有時間為這類數據集定製縮減過程。但是對於活躍數據集,套用的特殊性將造成性能瓶頸,不會帶來顯著的容量縮減的好處。
五、獨立於存儲
在混合的廠商IT基礎設施中,跨所有平台使用同樣的數據縮減工具的能力不僅將進一步增加數據縮減的ROI好處,而且還簡化了部署和管理。每一個存儲平台使用一種不同的數據縮減方法將需要進行大量的培訓,並造成管理級上的混亂。
六、互補
在完成上述所有最佳化主存儲的工作後,當到了備份主存儲時,最好讓數據保持最佳化的格式(被壓縮或去重)。如果數據在備份之前必須擴展恢復為原始格式,這將是浪費資源。
為備份擴展數據集將需要:
使用存儲處理器或外部讀出器資源解壓數據;