複製鏈接
請複製以下鏈接發送給好友

硬錯誤

鎖定
內存錯誤根據其原因可分為硬錯誤和軟錯誤。硬錯誤是由於硬件的損壞或缺陷造成的,因此數據總是不正確的,此類錯誤是無法糾正的;軟錯誤是隨機出現的,例如在內存附近突然出現電子干擾等因素,可能造成內存軟錯誤的出現。操作系統或程序訪問內存地址不在當前物理內存中,而在磁盤上的頁面文件內的情況。
中文名
硬錯誤
外文名
Hard fault /Page fault
對應問題
軟錯誤
別    名
頁面錯誤
起    因
硬件的損壞或缺陷
結    果
性能的下降

硬錯誤定義

Hard faults are also known as page faults. Despite the negative connotation of the name, this is not an error condition. Rather, it represents an instance where a block of memory needed by the operating system or an application has to be fetched from the page file on the hard disk instead of from physical memory. A consistently high number of hard faults per second indicates a large—perhaps excessive—reliance on virtual memory, with consequent adverse performance effects. [1] 
Win7 資源監視器 Win7 資源監視器
硬錯誤”也名為“頁面錯誤”。儘管字面上是負面的含義,但並非表示一種故障狀態。它表示操作系統或應用程序訪問的內存地址不在當前物理內存中,而在磁盤上的頁面文件中的情況。每秒發生的“硬錯誤”數量長期處於較高説明系統過度依賴於虛擬內存,隨之引起的是性能的下降。
內存中的數據在工作過程中難免會出現錯誤,而對於穩定性要求高的用户來説,比如完成一項需要連續求解30天的分析項目,內存中的數據錯誤可能會引起致命性的問題(死機藍屏、重啓、數據丟失)和白白浪費寶貴的時間。內存錯誤根據其原因可分為硬錯誤和軟錯誤。硬錯誤是由於硬件的損壞或缺陷造成的,因此數據總是不正確的,此類錯誤是無法糾正的;軟錯誤是隨機出現的,例如在內存附近突然出現電子干擾等因素,可能造成內存軟錯誤的出現。 [2] 

硬錯誤處理方法

硬錯誤針對MS-DOS

MS-DOS處理硬錯誤的方法是相當直接的,當MS-DOS已運行到一定程度時發現上述的硬錯誤,就會與磁盤驅動器通訊。驅動器報告這個問題,MS-DOS就在屏幕上顯示“Abort,Retry,Ignore?”信息。通常,用户糾正一下錯誤並給系統予以應答。MS-DOS然後按用户指定的動作行動,完成其任務,並返回到應用級。應用程序常常並不要系統自動地處理硬錯誤。或許,它們擔心數據的完整性並要求直到寫磁盤問題,或者它們要防止用户指明“Ignore”,或者它們並不想叫MS-DOS在不通知它們的情況下就在屏幕上顯示。為了處理這些情形,MS-DOS讓應用程序將硬錯誤處理程序的地址存放在INT24向量中。如果有這一硬錯誤處理程序,MS-DOS就調用它,而不調用自己的硬錯誤處理程序。 [3] 
當系統處理MS-DOS硬錯誤時,系統處於的狀態並不一般,應用程序起動通過INT21向量調用MS-DOS,MS-DOS然後在其內調用較深的幾層,在這裏有一個MS-DOS內部過程即將硬錯誤處理程序調用到應用程序。因為MS-DOS通常不是可再入的,所以這時應用程序就不能通過INT21再調用MS-DOS,否則這樣做就意味着在同一時刻已調用二次MS-DOS了。應用程序很可能在處理硬錯誤時,需要做屏幕和鍵盤I/O操作,所以MS-DOS被做成是部分可再入的。因起始調用包含磁盤I/O操作,所以MS-DOS可通過屏幕/鍵盤I/O調用再進入而不會產生問題。 [3] 

硬錯誤針對OS/2

對於OS/2,有一些問題使我們不能按照MS-DOS的方法來做。首先,和單任務MS-DOS不同,OS/2不能在操作系統調用應用程序期間(這樣的調用或許在很長時間內部不能返回)將操作暫停下來。第二,主要技術和安全性問題都包含在從0級(有特權的核心方式)到第3級(應用方式)的調用中。第三,在MS-DOS環境下,OS/2就不那麼容易了,這是因為可能有多個進程使磁盤FAT扇區或磁盤目錄被編輯,由於OS/2所使用的緩衝技術也會在沒有進程做I/O操作時導致硬錯誤的出現。最後一點,即使我們解決了所有這些問題,引起硬錯誤的應用程序也會在後台屏幕組裏運行,它不能顯示信息或利用鍵盤。即使該應用程序在前台屏幕組內,如果它不是正控制屏幕和鍵盤的進程,它也不能使用屏幕和鍵盤。 [3] 

硬錯誤ECC功能

為了提高內存中數據的可靠性,引入了ECC技術。ECC是Error Correcting Code的簡寫,中文名稱是“錯誤檢查和糾正”。ECC內存就是應用了這種技術的內存,一般多應用在服務器和圖形工作站上,這將使整個電腦系統在工作時更趨於安全穩定。 [2] 

硬錯誤ECC糾錯算法

ECC內存技術是在數據位上額外的位存儲一個用數據加密的代碼,當數據被寫入內存時相應的ECC代碼同時也被保存下來,當重新讀回剛才存儲的數據時保存下來的ECC代碼就會和讀數據時產生的ECC代碼作比較,如果兩個代碼不相同,則他們會被以確定數據中的哪一位是不正確的,然後這個錯誤位將會被拋棄,內存控制器會釋放出正確的數據。被糾正的數據很少會被放回內存。假如相同的錯誤數據再次被讀出,則糾正過程再次被執行。重寫數據會增加處理過程的開銷,會導致系統性能的明顯降低。一般而言,同等性能等級的內存,當加入了ECC校驗技術後會導致整體性能下降10%或更多。不過,這種糾錯對大規模有限元分析等需要長期高負荷運行、時刻保持高度穩定性的應用來説是十分重要的。帶ECC校驗技術的內存價格一般會比普通內存貴一些。 [2] 

硬錯誤ECC內存認識誤區

一談到服務器內存,大家一般都一致強調要買ECC內存,認為ECC內存速度快,其實這是一種錯誤的認識。ECC內存的成功之處並不是因為它的速度快,而是因為它有特殊的糾錯能力,使服務器保持穩定。ECC本身並不是一種內存型號,也不是一種內存專用技術,它是廣泛應用於各種計算機指令區域的一種指令糾錯技術。之所以説它並不是一種內存型號,是因為它並不是一種影響內存結構和存儲速度的技術。它可以用到不同的內存類型中,就像“奇偶校驗”內存,它也不是一種單純的硬件。 [2] 
帶ECC校驗的內存還要主板支持,並在BIOS中進行相應的設置,應用到大多數服務器主板上,一些廠商推出的入門級低端服務器使用的多是普通內存,無ECC功能,在選購時應該注意這個指標。由於ECC技術會增加成本,並且大多數家用計算機並不要求高度的可靠性,所以除XEON(志強)系列外,Intel公司的桌面級CPU(G、I3、I5、I7系列等)都不支持ECC內存。XEON(志強)CPU對內存的要求是向下兼容的,也就是説支持ECC內存也支持非ECC內存。 [2] 
參考資料
  • 1.    Tip: Make Sense of Memory Management and Key Memory Measurements   .Microsoft TechNet[引用日期2016-11-11]
  • 2.    劉笑天編著.ANSYS Workbench結構工程高級應用.北京:水利水電出版社,2015:394-396
  • 3.    中國科學院希望高級電腦技術公司 .OS/2結構分析與設計.北京:中國科學院希望高級電腦技術公司 ,1991:145-147