存儲器
存儲器,是現代信息技術中用於保存信息的記憶設備。其概念很廣,有很多層次,在數字系統中,只要能保存二進制數據的都可以是存儲器;在集成電路中,一個沒有實物形式的具有存儲功能的電路也叫存儲器,如RAM、FIFO等;在系統中,具有實物形式的存儲設備也叫存儲器,如內存條、TF卡等。計算機中全部信息,包括輸入的原始數據、計算機程序、中間運行結果和最終運行結果都保存在存儲器中。[1]
存儲器 | |
---|---|
它根據控制器指定的位置存入和取出信息。有了存儲器,計算機才有記憶功能,才能保證正常工作。計算機中的存儲器按用途存儲器可分為主存儲器(內存)和輔助存儲器(外存),也有分為外部存儲器和內部存儲器的分類方法。外存通常是磁性介質或光盤等,能長期保存信息。內存指主板上的存儲部件,用來存放當前正在執行的數據和程序,但僅用於暫時存放程序和數據,關閉電源或斷電,數據會丟失。[2]
目錄
概述
存儲器的主要功能是存儲程序和各種數據,並能在計算機運行過程中高速、自動地完成程序或數據的存取。
存儲器是具有「記憶」功能的設備,它採用具有兩種穩定狀態的物理器件來存儲信息。這些器件也稱為記憶元件。在計算機中採用只有兩個數碼「0」和「1」的二進制來表示數據。中國聯保網記憶元件的兩種穩定狀態分別表示為「0」和「1」。日常使用的十進制數必須轉換成等值的二進制數才能存入存儲器中。計算機中處理的各種字符,例如英文字母、運算符號等,也要轉換成二進制代碼才能存儲和操作。
存儲器:存放程序和數據的器件。
存儲位:存放一個二進制數位的存儲單元,是存儲器最小的存儲單位,或稱記憶單元
存儲字:一個數(n位二進制位)作為一個整體存入或取出時,稱存儲字
存儲單元:存放一個存儲字的若干個記憶單元組成一個存儲單元
存儲體:大量存儲單元的集合組成存儲體
存儲單元地址:存儲單元的編號
字編址:對存儲單元按字編址
字節編址:對存儲單元按字節編址
尋址:由地址尋找數據,從對應地址的存儲單元中訪存數據。
構成
構成存儲器的存儲介質,目前主要採用半導體器件和磁性材料。存儲器中最小的存儲單位就是一個雙穩態半導體電路或一個CMOS晶體管或磁性材料的存儲元,它可存儲一個二進制代碼。由若干個存儲元組成一個存儲單元,然後再由許多存儲單元組成一個存儲器。一個存儲器包含許多存儲單元,每個存儲單元可存放一個字節(按字節編址)。每個存儲單元的位置都有一個編號,即地址,一般用十六進制表示。一個存儲器中所有存儲單元可存放數據的總和稱為它的存儲容量。假設一個存儲器的地址碼由20位二進制數(即5位十六進制數)組成,則可表示2的20次方,即1M個存儲單元地址。每個存儲單元存放一個字節,則該存儲器的存儲容量為1MB。
分類
按存儲介質分
1、半導體存儲器:用半導體器件組成的存儲器。
2、磁表面存儲器:用磁性材料做成的存儲器。
按存儲方式分
1、隨機存儲器:任何存儲單元的內容都能被隨機存取,且存取時間和存儲單元的物理位置無關。
2、順序存儲器:只能按某種順序來存取,存取時間和存儲單元的物理位置有關。
按存儲器的讀寫功能分
1、只讀存儲器(ROM):存儲的內容是固定不變的,只能讀出而不能寫入的半導體存儲器。
2、隨機讀寫存儲器(RAM):既能讀出又能寫入的半導體存儲器。
按信息的可保存性分
1、非永久記憶的存儲器:斷電後信息即消失的存儲器。
2、永久記憶性存儲器:斷電後仍能保存信息的存儲器。
按存儲器用途分
1、根據存儲器在計算機系統中所起的作用,可分為(1)主存儲器、(2)輔助存儲器、(3)高速緩衝存儲器、(4)控制存儲器等。
2、為了解決對存儲器要求容量大,速度快,成本低三者之間的矛盾,目前通常採用多級存儲器體系結構,即使用高速緩衝存儲器、主存儲器和外存儲器。
名稱簡稱用途特點
1、高速緩衝存儲器 Cache 高速存取指令和數據存取速度快,但存儲容量小
2、主存儲器 內存存放計算機運行期間的大量程序和數據 存取速度較快,存儲容量不大
3、外存儲器 外存存放系統程序和大型數據文件及數據庫 存儲容量大,位成本低
工作原理
這裡只介紹動態存儲器(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) 讀、寫 順序尋址 數據丟失 摺疊編輯本段層次
按照與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界面,方便用戶進行數據傳送。
Memorystickduo
memory stick duo即微型記憶棒,微型記憶棒的體積和重量都為普通記憶棒的三分之一左右,目前最大存儲容量可以達到4g。
SD閃存卡
即SecureDigital, 32×24×2.11 存儲的速度快,非常小巧,外觀和MMC一樣,目前市面上較多數數碼相機使用這種格式的存儲卡,市場占有率第一。
XD閃存卡
即Fuji film(富士膠捲)和OLYMPUS(奧林巴斯)聯合推出的xD-Picture卡,體形很小,傳輸速度很快,不過價格很昂貴。
MMC閃存卡
即MultiMedia Card ,外型和SD完全一樣,很多時候也通用。
微硬盤
是一種比較高端的存貯產品,目前「Hitachi(日立)」和國產品牌「南方匯通」都推出了自己的微硬盤產品。微型硬盤外型和CF卡完全一樣,使用同一型號接口。
優卡
優卡是LEXAR公司生產的一種數碼相機存儲介質,外形和一般的cf卡相同,可以用在使用cf卡的數碼相機、pda、mp3等數碼設備上,同時可以直接通過usb接口與計算機系統聯機,用作移動存儲器。
數字膠捲
數字膠捲是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的速度缺陷。
小結
儘管我們幾乎可以使用任何類型的存儲器來滿足嵌入式系統的要求,但終端應用和總成本要求通常是影響我們做出決策的主要因素。有時,把幾個類型的存儲器結合起來使用能更好地滿足應用系統的要求。例如,一些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。
部署主存儲優化解決方案有6項要求:
一、零性能影響
與備份或存檔存儲不同,活躍數據集的性能比能夠用某種形式的數據縮減技術節省的存儲容量更為關鍵。因此,選擇的數據縮減技術必須不影響到性能。它必須有效和簡單;它必須等價於「撥動一個開關,就消耗更少的存儲」。
目前,活躍存儲縮減解決方案只在需要去重的數據達到非活躍狀態時才為活躍存儲去重。換句話說,這意味着實際上只對不再被存取但仍保存在活躍存儲池中的文件――近活躍存儲級――進行去重。
去重技術通過建議只對輕I/O工作負載去重來避免性能瓶頸。因此,IT基礎設施的關鍵組件的存儲沒有得到優化。數據庫排在關鍵組件清單之首。由於它們是1級存儲和極其活躍的組件並且幾乎始終被排除在輕工作負載之外,去重處理從來不分析它們。因此,它們在主存儲中占據的空間沒有得到優化。
另一方面,實時壓縮系統實時壓縮所有流經壓縮系統的數據。這導致節省存儲容量之外的意外好處:存儲性能的提高。當所有數據都被壓縮時,每個I/O請求提交的數據量都有效地增加,硬盤空間增加了,每次寫和讀操作都變得效率更高。
實際結果是占用的硬盤容量減少,總體存儲性能顯著提高。
主存儲去重的第二個好處是所有數據都被減少,這實現了包括數據庫在內的所有數據的容量節省。儘管Oracle環境的實時數據壓縮可能造成一些性能問題,但迄今為止的測試表明性能提高了。
另一個問題是對存儲控制器本身的性能影響。人們要求今天的存儲控制器除了做伺服硬盤外,還要做很多事
情,包括管理不同的協議,執行複製和管理快照。再向這些功能增加另一個功能可能會超出控制器的承受能力――即使它能夠處理額外的工作負載,它仍增加了一個存儲管理人員必須意識到可能成為潛在I/O瓶頸的過程。將壓縮工作交給外部專用設備去做,從性能問題中消除了一個變數,而且不會給存儲控制器造成一點影響。
二、高可用性
許多關注二級存儲的數據縮減解決方案不是高可用的。這是由於它們必須立即恢復的備份或存檔數據不像一級存儲中那樣關鍵。但是,甚至在二級存儲中,這種概念也逐漸不再時興,高可用性被作為一種選擇添加到許多二級存儲系統中。
可是,高可用性在主存儲中並不是可選的選項。從數據縮減格式(被去重或被壓縮)中讀取數據的能力必須存在。在數據縮減解決方案中(其中去重被集成到存儲陣列中),冗餘性是幾乎總是高可用的存儲陣列的必然結果。
在配件市場去重系統中,解決方案的一個組件以數據的原始格式向客戶機提供去重的數據。這個組件就叫做讀出器(reader)。讀出器也必須是高可用的,並且是無縫地高可用的。一些解決方案具有在發生故障時在標準服務器上加載讀出器的能力。這類解決方案經常被用在近活躍的或更合適的存檔數據上;它們不太適合非常活躍的數據集。
多數聯機壓縮系統被插入系統中和網絡上,放置(邏輯上)在交換機與存儲之間。因此,它們由於網絡基礎設施級上幾乎總是設計具有的高可用性而取得冗餘性。沿着這些路徑插入聯機專用設備實現了不需要IT管理人員付出額外努力的無縫的故障切換;它利用了已經在網絡上所做的工作。
三、節省空間
部署這些解決方案之一必須帶來顯著的容量節省。如果減少占用容量的主存儲導致低於標準的用戶性能,它沒有價值。
主數據不具有備份數據通常具有的高冗餘存儲模式。這直接影響到總體容量節省。這裡也有兩種實現主數據縮減的方法:數據去重和壓縮。
數據去重技術尋找近活躍文件中的冗餘數據,而能取得什麼水平的數據縮減將取決於環境。在具有高冗餘水平的環境中,數據去重可以帶來顯著的ROI(投資回報),而另一些環境只能取得10%到20%的縮減。
壓縮對所有可用數據都有效,並且它在可以為高冗餘數據節省更多的存儲容量的同時,還為主存儲應用常見的更隨機的數據模式始終帶來更高的節省。
實際上,數據模式冗餘度越高,去重帶來的空間節省就越大。數據模式越隨機,壓縮帶來的空間節省就越高。
四、獨立於應用
真正的好處可能來自所有跨數據類型(不管產生這些數據是什麼應用或數據有多活躍)的數據縮減。雖然實際的縮減率根據去重數據的水平或數據的壓縮率的不同而不同,但所有數據都必須合格。
當涉及存檔或備份時,應用特有的數據縮減具有明確的價值,並且有時間為這類數據集定製縮減過程。但是對於活躍數據集,應用的特殊性將造成性能瓶頸,不會帶來顯著的容量縮減的好處。
五、獨立於存儲
在混合的廠商IT基礎設施中,跨所有平台使用同樣的數據縮減工具的能力不僅將進一步增加數據縮減的ROI好處,而且還簡化了部署和管理。每一個存儲平台使用一種不同的數據縮減方法將需要進行大量的培訓,並造成管理級上的混亂。
六、互補
在完成上述所有優化主存儲的工作後,當到了備份主存儲時,最好讓數據保持優化的格式(被壓縮或去重)。如果數據在備份之前必須擴展恢復為原始格式,這將是浪費資源。
為備份擴展數據集將需要:
使用存儲處理器或外部讀出器資源解壓數據;
擴展網絡資源以把數據傳送給備份目標;
把額外的資源分配給保存備份數據的備份存儲設備。