當(dāng)前,數(shù)字計算系統(tǒng)已經(jīng)滲透到社會的各個領(lǐng)域,容錯計算理念以及與容錯計算相關(guān)的理論和應(yīng)用問題也將迅速深入到人類賴以生存的各個領(lǐng)域和環(huán)境中去。同時,人們期待著所應(yīng)用的,或者將應(yīng)用的各種數(shù)字計算系統(tǒng)都是“誠信”的愿望必將實(shí)現(xiàn)。因此,對容錯計算系統(tǒng)的設(shè)計理論和實(shí)踐環(huán)節(jié)的深入研究和開拓必將成為當(dāng)今數(shù)字系統(tǒng)研究和開發(fā)的熱點(diǎn)。
《容錯計算系統(tǒng)》共10章,可以分成兩大部分:第一部分對容錯計算以及可信系統(tǒng)各類屬性的定義和基本知識作詳細(xì)的介紹和分析(從第1章至第4章),其中包括對軟件和硬件系統(tǒng)的故障,錯誤和失效的定義和性質(zhì)的形式化描述,并對軟件和硬件系統(tǒng)中的故障和錯誤作了分析和比較;第二部分則是在對故障、錯誤和失效等主要屬性作深入研究的基礎(chǔ)上,闡述了提高系統(tǒng)可信性和可靠性以及容錯計算的基本理論、主要技術(shù)和實(shí)施方法,并且介紹了其他相關(guān)的知識(從第5章至第10章)。其中按照軟件和硬件系統(tǒng)的開發(fā)生命周期各個階段應(yīng)采取的各種策略和措施進(jìn)行詳細(xì)的分析討論,包括闡明了避錯技術(shù)和防錯技術(shù)、軟件和硬件系統(tǒng)測試技術(shù)、可測性設(shè)計技術(shù)(包括冗余與編碼技術(shù))、容錯系統(tǒng)的設(shè)計以及故障安全技術(shù)等在數(shù)字系統(tǒng)中的實(shí)施策略和實(shí)際應(yīng)用。
《容錯計算系統(tǒng)》是專為計算機(jī)科學(xué)與技術(shù)專業(yè)和信息工程專業(yè)高年級本科生和研究生以及從事容錯計算理論和應(yīng)用的有關(guān)專業(yè)人士撰寫的,是一本集數(shù)字計算軟件和硬件系統(tǒng)于一體的容錯計算理論研究和應(yīng)用與實(shí)踐并重的教材,書中吸收并介紹了大量國內(nèi)外關(guān)于容錯計算理論和技術(shù)方面的信息!度蒎e計算系統(tǒng)》與當(dāng)前其他教材相比較,從具體內(nèi)容上來看具有一定的先進(jìn)性和前瞻性,對學(xué)習(xí)和了解數(shù)字系統(tǒng)的可靠性和容錯計算系統(tǒng)的設(shè)計具有重要的意義。
自從第一臺電子計算機(jī)問世以來,計算機(jī)系統(tǒng)(包括軟件和硬件)就是在同數(shù)字系統(tǒng)的故障和錯誤的斗爭中發(fā)展、成長的?梢哉f,數(shù)字系統(tǒng)的成長史也是一部同系統(tǒng)內(nèi)外故障的斗爭史。早期的計算機(jī)由于故障多而復(fù)雜,大量的計算錯誤使得系統(tǒng)無法正常運(yùn)行。1944年貝爾(Bell)的繼電器計算機(jī)雖然使用了糾錯編碼,但是每次運(yùn)算都必須運(yùn)行兩次,并將兩次運(yùn)行結(jié)果經(jīng)過比對和檢查后才能得出最后的結(jié)果:1951年世界上公認(rèn)的第一臺商業(yè)化電子計算機(jī)UNIVACI,使用了大量的奇偶校驗(yàn)技術(shù)和雙算邏部件(ALU)并進(jìn)行所謂的匹配一比較運(yùn)算(match.and-compare)來應(yīng)付各種可能的故障。當(dāng)前,隨著信息技術(shù)和微電子技術(shù)研究開發(fā)的飛速發(fā)展,人們對數(shù)字系統(tǒng)以及相關(guān)微電子產(chǎn)品的依賴程度愈來愈大。這些技術(shù)和產(chǎn)品,不僅需要應(yīng)用于航空航天、原子核反應(yīng)堆、軍事科學(xué)、國防建設(shè)以及國民經(jīng)濟(jì)各種尖端科技領(lǐng)域,而且還直接涉及人們的生活,甚至是生命安全和人類生存等問題。因此,當(dāng)前人們在應(yīng)用這些產(chǎn)品的同時必然會提出更高的要求,即除了傳統(tǒng)意義上的要求和標(biāo)準(zhǔn)以外,還提出了更重要的評價體系——系統(tǒng)所提供服務(wù)的“可信性”(Dependability)標(biāo)準(zhǔn)問題。事實(shí)上,對任何一件產(chǎn)品(一個系統(tǒng))來說,能否為人類提供一種“可信”的服務(wù)是衡量其總體質(zhì)量最重要的標(biāo)準(zhǔn)之一。那么,什么叫可信的結(jié)果?簡而言之,就是在經(jīng)過可行的確切論證以后,認(rèn)為系統(tǒng)所提供的服務(wù)是正確無誤,而且是可以信賴的結(jié)果。問題在于什么叫可行的確切的論證,又由誰來完成這樣的論證等。對于這一系列問題,在過去,由于受到各種條件的限制,幾乎是無法實(shí)現(xiàn)的。因此,“可信計算”對數(shù)字計算系統(tǒng)領(lǐng)域中的一般科研人員和一般用戶來說,只是高不可攀的“陽春白雪”,世界上只有極少數(shù)發(fā)達(dá)國家在某些特殊要求下,才會開發(fā)和應(yīng)用它們,比如在航天飛機(jī)飛行姿態(tài)控制系統(tǒng)、原子核反應(yīng)堆控制系統(tǒng)、導(dǎo)彈防御系統(tǒng)、鐵路運(yùn)輸信號控制系統(tǒng)以及一些重癥病人監(jiān)護(hù)系統(tǒng)等需要提供十分可靠,而且只有可信的服務(wù)才能完成其所承擔(dān)的任務(wù)的系統(tǒng)中。這些控制系統(tǒng)中的任何隱患、故障和錯誤都將對系統(tǒng)和環(huán)境帶來嚴(yán)重后果,甚至給人類造成深重災(zāi)難。當(dāng)前,隨著數(shù)字計算系統(tǒng)日新月異的發(fā)展,原來的陽春白雪已經(jīng)愈來愈普及,甚至滲透到了社會各個階層,走進(jìn)了尋常百姓的生活,使人類社會更多地享受由信息技術(shù)創(chuàng)造的成果。但是,人類在享受著高新技術(shù)提供的各種前所未有的服務(wù)和樂趣的同時,卻不可避免地會經(jīng)受由于這些系統(tǒng)的不可靠和不可信所帶來的種種險惡后果和嚴(yán)峻挑戰(zhàn)。事實(shí)上,這樣的例子已經(jīng)不勝枚舉了,例如,當(dāng)你將銀行卡插入一臺ATM機(jī)后得不到任何服務(wù),或者得到錯誤的服務(wù),甚至銀行卡被“吞掉”,或者你在網(wǎng)上預(yù)訂好的機(jī)票,在登機(jī)時竟然發(fā)現(xiàn)是無效機(jī)票……這些正是人們在普通的日常生活中隨時可能遇到的不可靠和不可信服務(wù)的例子。并且有些故障或錯誤是不可逆轉(zhuǎn)的,往往使人們遭受極為嚴(yán)重的損失。因此,當(dāng)今“可信計算”已經(jīng)不再神秘,人們應(yīng)該研究和開發(fā)各種新理論、新技術(shù),來規(guī)避所有可能產(chǎn)生的不可靠和不可信的結(jié)果!叭蒎e計算”的概念是直接提高數(shù)字系統(tǒng)的可靠性和可信性最重要的理念之一。事實(shí)上,“容錯計算”的概念已經(jīng)逐漸步入人類社會,甚至已經(jīng)和人們的日常工作及生活有了緊密的聯(lián)系,因此,人們渴望著有一天可以從真正可靠和可信的數(shù)字系統(tǒng)中獲得更加便捷、優(yōu)秀的服務(wù),而避免遇到種種不良的后果。
第1章 容錯計算的基本概念
1.1 故障的定義及性質(zhì)
1.1.1 故障的定義
1.1.2 故障的產(chǎn)生
1.1.3 故障的基本性質(zhì)
1.2 故障模型
1.2.1 硬件故障模型
1.2.2 軟件故障模型
1.3 故障模型的建立
1.3.1 建立故障模型的重要性和標(biāo)準(zhǔn)
1.3.2 故障模型的局限性
1.4 錯誤的定義
1.4.1 錯誤的定義
1.4.2 錯誤的分類及其傳遞性
1.5 失效的定義
1.6 數(shù)字系統(tǒng)的可信性
1.7 容錯計算的定義及其重要功能
1.8 本章小結(jié)
1.9 思考題
第2章 數(shù)字系統(tǒng)的可靠性
2.1 數(shù)字系統(tǒng)可信性的定義
2.2 數(shù)字系統(tǒng)的可靠性
2.2.1 基本的可靠性函數(shù)和失效函數(shù)
2.2.2 可靠性的重要參數(shù)及定義
2.3 組合系統(tǒng)的可靠性
2.3.1 串行組合系統(tǒng)的可靠性評估
2.3.2 并行組合系統(tǒng)的可靠性
2.3.3 串并行/并串行系統(tǒng)的可靠性
2.3.4 非串行/非并行系統(tǒng)的可靠性
2.4 數(shù)字系統(tǒng)的可測性
2.5 數(shù)字系統(tǒng)的可維護(hù)性
2.5.1 維護(hù)的定義
2.5.2 可維護(hù)性的定義
2.6 數(shù)字系統(tǒng)的可用性
2.7 數(shù)字系統(tǒng)的安全性
2.8 數(shù)字系統(tǒng)的信息安全
2.9 數(shù)字系統(tǒng)可信性綜合分析
2.10 本章小結(jié)
2.11 思考題
第3章 冗余技術(shù)和編碼原理
3.1 功能性冗余技術(shù)的基本原理
3.1.1 靜態(tài)功能性冗余
3.1.2 動態(tài)功能性冗余技術(shù)
3.2 結(jié)構(gòu)性冗余技術(shù)
3.2.1 數(shù)字系統(tǒng)的結(jié)構(gòu)性冗余技術(shù)
3.2.2 主動冗余技術(shù)
3.2.3 被動冗余技術(shù)
3.2.4 混合冗余
3.2.5 時間冗余技術(shù)
3.3 糾錯編碼原理
3.3.1 糾錯編碼的基本原理
3.3.2 線性分組編碼原理
3.3.3 糾一/檢二海明編碼
3.4 蕭碼——實(shí)用的糾一臉二編碼
3.5 循環(huán)碼基本原理
3.5.1 循環(huán)碼基礎(chǔ)和碼多項式
3.5.2 循環(huán)碼多項式的性質(zhì)
3.5.3 循環(huán)碼的系統(tǒng)碼格式
3.5.4 使用(n-k)級線性移位寄存器編碼
3.5.5 使用七級線性移位寄存器編碼
3.6 本章小結(jié)
3.7 思考題
第4章 自校驗(yàn)邏輯設(shè)計
4.1 完全自校驗(yàn)電路的基本概念
4.2 分離碼電路及相關(guān)定義
4.2.1 強(qiáng)/弱分離碼電路
4.2.2 自校驗(yàn)電路中的術(shù)語及基本定義
4.3 無雙向錯誤的組合邏輯設(shè)計
4.4 檢測由輸入端故障產(chǎn)生的雙向錯誤
4.5 雙向錯誤排除技術(shù)
4.5.1 輸入編碼
4.5.2 輸出編碼
4.6 自對偶奇偶校驗(yàn)
4.7 模3(mod 3)留數(shù)碼自校驗(yàn)電路
4.8 本章小結(jié)
4.9 思考題
第5章 故障避免和防止技術(shù)
5.1 需求分析和規(guī)格說明階段的故障避免措施
5.1.1 確信技術(shù)
5.1.2 驗(yàn)證技術(shù)
5.2 設(shè)計階段的故障避免措施
5.2.1 故障預(yù)防——設(shè)計過程中的確信技術(shù)
5.2.2 故障檢測——設(shè)計過程中的驗(yàn)證技術(shù)
5.3 設(shè)計階段應(yīng)用的功能測試
5.4 故障防止措施
5.4.1 應(yīng)用故障防止應(yīng)注意的事項
5.4.2 應(yīng)用于硬件系統(tǒng)的故障防止措施
5.4.3 應(yīng)用于軟件系統(tǒng)的故障防止措施
5.5 本章小結(jié)
5.6 思考題
第6章 軟件可靠性模型和軟件測試
6.1 軟件可靠性的研究意義
6.2 軟件開發(fā)的生命周期
6.2.1 項目的初始階段
6.2.2 樣本設(shè)計及定型階段
6.2.3 編程階段
6.2.4 測試階段
6.2.5 變異測試
6.3 軟件可靠性及其測度
6.4 軟件測試對軟件可靠性模型的影響
6.4.1 軟件錯誤與檢錯曲線
6.4.2 軟件錯誤與檢錯模型
6.5 軟件可靠性模型
6.5.1 常數(shù)檢錯率的軟件可靠性模型
6.5.2 線性遞減型檢錯率的軟件可靠性模型
6.5.3 指數(shù)遞減型檢錯率的軟件可靠性模型
6.6 軟件可靠性模型中的常數(shù)估算
6.6.1 參數(shù)估算方法(1)——常數(shù)型檢錯率
6.6.2 參數(shù)估算方法(2)——線性遞減型檢錯率
6.6.3 參數(shù)估算方法(3)——指數(shù)遞減型檢錯率
6.7 本章小結(jié)
6.8 思考題
第7章 數(shù)字電路故障診斷
7.1 數(shù)字電路故障診斷的基本概念
7.1.1 故障等價
7.1.2 故障控制
7.2 數(shù)字電路的故障測試
7.2.1 邏輯測試的基本類型
7.2.2 邏輯測試的基本參數(shù)
7.2.3 邏輯測試的層次分類
7.2.4 邏輯測試的具體實(shí)施
7.3 組合電路的測試生成
7.3.1 邏輯電路的可控性和可觀察性
7.3.2 單固定故障測試生成
7.4 特征分析測試法
7.4.1 計“1”測試法
7.4.2 跳變計數(shù)測試法
7.4.3 征兆測試法
7.5 時序電路測試生成
7.5.1 時序電路測試的基本概念
7.5.2 狀態(tài)表驗(yàn)證和I/O校驗(yàn)序列
7.5.3 利用鑒別序列生成校驗(yàn)序列
7.5.4 無鑒別序列時序電路的校驗(yàn)序列
7.6 橋接故障測試生成
7.6.1 橋接故障模型
7.6.2 非反饋型橋接故障的測試生成方法
7.6.3 反饋型橋接故障的測試生成
7.7 本章小結(jié)
7.8 思考題
第8章 可測試性設(shè)計技術(shù)
8.1 可測試性設(shè)計思想的重要性
8.2 可測試性設(shè)計的基本原理
8.2.1 測試質(zhì)量和可測試性屬性
8.2.2 可測試性設(shè)計的意義
8.3 特定測試法
8.3.1 設(shè)置附加測試點(diǎn)
8.3.2 便于初始化設(shè)置
8.3.3 將大規(guī)模組合電路分解為松散型連接的小規(guī)模模塊
8.3.4 提高時序電路的可控性
8.3.5 軟件可測試性設(shè)計中的測試點(diǎn)技術(shù)和異常檢測技術(shù)
8.4 專用可測試性電路及可測試性軟件設(shè)計方法
8.4.1 Reed-Muller電路擴(kuò)展技術(shù)
8.4.2 控制邏輯插入技術(shù)
8.4.3 專用可測試性設(shè)計在軟件中的應(yīng)用
8.5 組合電路內(nèi)建測試(BIT)設(shè)計方法
8.5.1 PLA電路的結(jié)構(gòu)及基本故障模型
8.5.2 PLA電路的可測試性設(shè)計——PLA的奇偶校驗(yàn)BIT技術(shù)
8.6 時序電路內(nèi)建測試(BIT)設(shè)計方法
8.6.1 掃描通路設(shè)計思想
8.6.2 隔離(切換)部件的設(shè)計
8.6.3 電平觸發(fā)掃描設(shè)計(LSSD)
8.6.4 應(yīng)用掃描設(shè)計技術(shù)的成本和對系統(tǒng)開發(fā)的影響
8.7 邊界掃描內(nèi)建測試(BIT)技術(shù)
8.7.1 邊界掃描問題的提出
8.7.2 邊界掃描設(shè)計的基本原理
8.8 內(nèi)建自測試(BIST)方法
8.8.1 內(nèi)建自測試的基本概念
8.8.2 線性反饋移位寄存器與特征多項式
8.8.3 一個可測試性設(shè)計的實(shí)例——偽窮舉奇偶校驗(yàn)法及奇偶校驗(yàn)可測試性設(shè)計
8.9 本章小結(jié)
8.10 思考題
第9章 容錯計算技術(shù)和容錯系統(tǒng)
9.1 軟件系統(tǒng)的結(jié)構(gòu)性冗余技術(shù)
9.1.1 N-版本(模)冗余技術(shù)的基本概念
9.1.2 軟件系統(tǒng)N-版本冗余的實(shí)現(xiàn)方法
9.1.3 指令復(fù)抽.技術(shù)
9.2 卷回和向后恢復(fù)技術(shù)
9.2.1 向后恢復(fù)技術(shù)
9.2.2 向后恢復(fù)技術(shù)中的高速緩存
9.2.3 向后恢復(fù)技術(shù)中恢復(fù)點(diǎn)的確定
9.2.4 向后恢復(fù)技術(shù)中運(yùn)行環(huán)境的恢復(fù)
9.3 向前恢復(fù)技術(shù)
9.3.1 恢復(fù)模塊式
9.3.2 終結(jié)模式技術(shù)
9.4 N模冗余系統(tǒng)的可靠性評估
9.4.1 系統(tǒng)裁決
9.4.2 模塊分級裁決
9.4.3 裁決器的可靠性問題
9.4.4 可修復(fù)的NMR系統(tǒng)
9.5 容錯系統(tǒng)的性能和成本關(guān)系的評估
9.6 各種容錯技術(shù)的比較
9.6.1 容錯設(shè)計技術(shù)的相似性
9.6.2 容錯設(shè)計的差異性
9.7 容錯計算技術(shù)與系統(tǒng)可靠性的關(guān)系
9.8 本章小結(jié)
9.9 思考題
第10章 安全保障技術(shù)
10.1 安全保障的基本概念
10.1.1 固有安全設(shè)計確保系統(tǒng)的安全性
10.1.2 冗余結(jié)構(gòu)及故障安全技術(shù)提高系統(tǒng)的安全性
10.1.3 基于冗余結(jié)構(gòu)技術(shù)的安全保障系統(tǒng)例子
10.2 安全保障系統(tǒng)與完全自校驗(yàn)技術(shù)
10.2.1 雙軌校驗(yàn)器實(shí)現(xiàn)自校驗(yàn)功能
10.2.2 基于n取m碼完全自校驗(yàn)及校驗(yàn)器的設(shè)計和構(gòu)造
10.2.3 基于n取1碼完全自校驗(yàn)及校驗(yàn)器的設(shè)計和構(gòu)造
10.3 基于伯格碼的完全自校驗(yàn)及校驗(yàn)器
10.4 基于低耗留數(shù)碼完全自校驗(yàn)及校驗(yàn)器的設(shè)計
10.5 完全自校驗(yàn)PLA電路的設(shè)計
10.5.1 強(qiáng)故障安全PLA電路的設(shè)計
10.5.2 完全自校驗(yàn)PLA電路的設(shè)計
10.6 最終安全保障組合電路的設(shè)計
10.7 自校驗(yàn)時序電路的設(shè)計
10.7.1 時序電路中的冗余故障
10.7.2 自校驗(yàn)時序電路的設(shè)計
10.8 安全保障時序機(jī)的設(shè)計
10.9 安全保障系統(tǒng)與完全自校驗(yàn)技術(shù)的關(guān)系
10.10 本章小結(jié)
10.11 思考題
參考文獻(xiàn)
對可信性的測度評估主要可以分為兩個方面,即可信性的數(shù)量測度和質(zhì)量測度。
從數(shù)量測度觀點(diǎn)來評價一個數(shù)字系統(tǒng)的可信性,可以對系統(tǒng)可信性的多個屬性進(jìn)行全面的評估,這些評估的基礎(chǔ)就是系統(tǒng)在各個屬性上所提供服務(wù)的可“依賴程度”。由于這些屬性的不確定因素,這些依賴程度都是以概率的形式來衡量和農(nóng)示的。從宏觀上來看,一個系統(tǒng)在整個生命周期中可能在一個階段需要接受評估:第一階段為需求分析和規(guī)格說明階段,第二階段為設(shè)計階段,第三階段則是系統(tǒng)的運(yùn)行階段。
第一階段的評估是在系統(tǒng)建立之前,即在對其作規(guī)格說明階段中進(jìn)行的。主要是根據(jù)它的規(guī)格說明來分析和預(yù)測該系統(tǒng)在將來作為產(chǎn)品的可信性。即根據(jù)用戶對可信性的要求和設(shè)計者對系統(tǒng)成本和需求分析來預(yù)測系統(tǒng)的可信性,并且確保系統(tǒng)在運(yùn)行時的可信性應(yīng)該在可接受的范圍之內(nèi)。
第二階段的評估是在設(shè)計階段進(jìn)行。在設(shè)計階段應(yīng)注意要運(yùn)用必要的技術(shù)、可靠的元器件或模塊以保證系統(tǒng)在運(yùn)行時達(dá)到應(yīng)有的可信性。如在硬件系統(tǒng)中應(yīng)該盡量避免使用不可靠的元器件,因?yàn)樗鼈儠䦷碓S多隱患,導(dǎo)致系統(tǒng)不穩(wěn)定。同樣在軟件系統(tǒng)中應(yīng)盡可能避免過多使用轉(zhuǎn)向語句等結(jié)構(gòu),因?yàn)檫@些語句結(jié)構(gòu)的使用可能使程序運(yùn)行和程序調(diào)試變得十分復(fù)雜,難以控制,因而使程序容易發(fā)生錯誤。
第三階段的評估是在系統(tǒng)運(yùn)行階段進(jìn)行的。這個階段的評估主要是通過大量試驗(yàn)性的運(yùn)行來得到應(yīng)有的實(shí)驗(yàn)結(jié)果,以確定該系統(tǒng)的可信性是否在原有的設(shè)計范圍內(nèi),是否達(dá)到了應(yīng)有的標(biāo)準(zhǔn)。如對同一個程序,應(yīng)使用不同的數(shù)據(jù)輸入,并需要運(yùn)行上百次乃至幾千次,直到得到一個明確的統(tǒng)計值為止。
第一階段的評估和第二階段的部分評估工作稱為預(yù)測性評估,而第三階段和第二階段剩余部分的評估工作則稱為運(yùn)行性評估。不管哪一種評估都存在一定的難度,因?yàn)樗鼈兌紵o法提供一個確定的數(shù)值,通常只是一個概率統(tǒng)計值。因此,在一般情況下對可信性的數(shù)量評估只是一個概率值,很多情況必須視具體的系統(tǒng)而定。
從質(zhì)量測度來評價一個數(shù)字系統(tǒng)的可信性,主要是根據(jù)在系統(tǒng)中檢測到的致命性故障和錯誤的情況對系統(tǒng)可信性引起的后果的嚴(yán)重情況來測定。事實(shí)上,這種測度只是對系統(tǒng)可信性可能受到損害的嚴(yán)重程度做出的評估,而并不是對故障或錯誤造成的嚴(yán)重后果的直接測量。這種的評估可以有兩種不同的方法:順推法和逆推法。
順推法是從已經(jīng)檢測到的致命性故障和錯誤推導(dǎo)出系統(tǒng)可能出現(xiàn)的失效及其后果的嚴(yán)重性,典型方法是故障樹法。逆推法則是從可能出現(xiàn)的失效及其嚴(yán)重后果推算出可能引起系統(tǒng)失效的致命性的故障和錯誤,常用的逆推法是失效模式分析法。
本章將分別對數(shù)字系統(tǒng)可信性的幾個重要屬性分別作系統(tǒng)的定量分析及討論,主要將討論數(shù)字系統(tǒng)可靠性測度的分析和評估,因?yàn)榭煽啃詼y度是衡量和保證系統(tǒng)能夠提供可信服務(wù)最重要的因素。對其他屬性,如可測性、可用性、安全性、保密性等測度的分析將僅作簡單的介紹,以饗讀者。