• 沒有找到結果。

中 華 大 學

N/A
N/A
Protected

Academic year: 2022

Share "中 華 大 學"

Copied!
58
0
0

加載中.... (立即查看全文)

全文

(1)

中 華 大 學

碩 士 論 文

題目:嵌入式微處理器的弱點分析模型 An Analytical Model of Vulnerability for

Embedded Microprocessors

系 所 別:資訊工程學系碩士班 學號姓名:M09502002 許書豪 指導教授:陳永源 博 士

中華民國 九十七 年 八 月

(2)

中文摘要

隨著製程的不斷精進,在超深次微米 (very deep submicron) 技術逐漸成熟的 今日,電晶體因為製程良率的提高,進而具有更高的精密度。而邏輯閘因為通道 長度(channel length)縮短的關係,也越做越小,當一個晶片可以放入更多電路功 能的同時,晶片的設計複雜度亦隨著提升。因此晶片內部元件發生錯誤的機率相 對的增高,也衍生出晶片可靠度的問題。

在近幾年來,嵌入式系統以及嵌入式微處理器已經遇到可靠度的挑戰,因為 軟性錯誤(soft error)發生的機會有提升的趨勢。當這些系統被用於安全性的應用 以及設計時,就必須考慮容錯設計的需求。且對於複雜的嵌入式系統或者 IP 層 級的系統晶片 (SoC) 設計者, 它們不切實際和不節省成本的去保護整個系統或 系統晶片(SoC),導致效能與成本的浪費。所以我們必須分析系統的脆弱度,不 僅能幫助設計者在較少的資源中投資在最重要的地方上而且更能從中瞭解到投 資的價值。

在本篇文章裡我們提出一個弱點分析模型,對一個嵌入式微處理器的系統內 部元件分析其弱點。從我們分析的結果,元件脆弱度的排行可從微處理器內部的 元件造成系統失敗率的總和中獲得。

因此本篇論文我們透過一個主流微處理器VLIW 作為一個例子,透過示範 藉此來證明我們弱點分析模型在實際上的一般性與正確性。最後經由實驗結果分 析證明此模型的可用性與一般性。

(3)

Abstract

Embedded systems, and also the embedded microprocessors, have encountered the reliability challenge because the occurring probability of soft errors has a rising trend. When they are applied to safety-critical applications, designs with the fault tolerant consideration are required. For the complicated embedded systems or IP-based system-on-chip (SoC), it is unpractical and not cost-effective to protect the entire system or SoC.

Analyzing the vulnerability of systems can help designers not only invest limited resource on the most crucial region but also understand the gain derived from the investment. In this paper we propose a model to fast estimate the microprocessor’s vulnerability with only slight simulation effort. From our assessment results, the rank of component vulnerability related to the probability of causing the microprocessor failure can be acquired.

By choosing one of the mainstream microprocessors — VLIW (Very Long Instruction Word) processor — as an example, the practical usefulness of our estimation model is demonstrated.

(4)

致 謝

在研究所生活裡,有著許多位學長、同學、朋友一路陪伴著我、支持我。讓 我在這兩年碩士生活中,學習到很多寶貴的經驗,也讓我增進許多寶貴的知識。

本篇論文能夠順利完成,特別感謝指導教授陳永源老師的教導,在課業、研究與 生活上所遇到的困難,都能給予本人最大的幫助。此外也感謝爸媽全力支持我,

讓我全心來完成這個學業。

在求學期間,感謝師長顏金泰老師與連振昌老師的教導與幫助,以及實驗室 的學長-呂昆龍、張坤君、陳志偉、石孟儒、吳耿偉、黃詩芩、吳名原等人的指 教,以及同學與學弟彭建閔、汪碩彥、陳信宇、周義翔、胡淳皓、呂凱平、宋東 彥、許仲賢、汪宜強與柯祥霖在實驗上的討論與鼓勵,最後謹將此篇論文獻給家 人、師長、同學及朋友們,共同分享這得來不易的榮耀。

(5)

目 錄

中文摘要... I Abstract ... II 致 謝... III 目 錄... IV 圖表目錄... VI 表格目錄... VII

第一章 簡介... 1

1-1 背景介紹 ... 2

1-1-1 錯誤型態 ... 2

1-1-2 錯誤注入簡介 ... 4

第二章 相關研究、研究動機及問題定義... 8

2-1 相關研究 ... 8

2-2 研究動機 ... 11

2-3 問題定義 ... 12

第三章 弱點估測模型... 14

3-1 失效模式與其效應分析(Failure Model and Effect Analysis) ... 14

3-1-1 定義 ... 14

3-1-2 FMEA 起源與發展 ... 14

3-1-3 設計 FMEA 及製程 FMEA ... 15

3-1-4 FMEA 作業程序 ... 16

3-1-5 失效風險評價與決策 ... 19

3-2 弱點分析模型 ... 21

3-2-1 定義 ... 21

3-2-2 弱點分析模型 ... 22

第四章 實驗設定與實驗結果分析... 24

4-1 實驗架構介紹 ... 24

4-1-1 VLIW 處理器架構 ... 24

4-1-2 實際硬體模擬設定 ... 26

4-2 實驗流程 ... 27

4-2-1 錯誤注入流程 ... 27

4-2-2 參數取得流程 ... 32

4-3 實驗結果分析 ... 33

4-3-1 One Cycle ... 33

  以各個測試程式分析... 33

(6)

  以測試程式的類別分析... 36

  從各個參數探討... 38

  整體結果分析... 40

4-3-2 Four Cycles ... 42

  以各個測試程式分析... 42

  以測試程式的類別分析... 44

  整體結果分析... 45

第五章 結論與未來展望... 47

參考文獻... 49

(7)

圖表目錄

圖1-1 有效性錯誤示意圖 ... 3

圖1-2 有效性錯誤及非有效性錯誤說明圖 ... 3

圖1-3 錯誤之間的關係圖 ... 4

圖 2-1AMBABUSARCHITECTURE ... 8

圖 3-1 風險評估示意圖 ... 21

圖 4-1VLIW3RD處理器架構圖 ... 25

圖 4-2 錯誤注入流程 ... 31

圖 4-3 錯誤模擬流程圖 ... 32

圖 4-4 所有測試程式的 SESCI ... 39

圖 4-5 所有測試程式的UCI ... 39

圖 4-6 所有元件的ARCI ... 39

圖 4-7 各元件的平均系統失敗率(VCI)分布圖 ... 41

圖 4-8IDCT&QUICK SORT 元件的系統失敗率 ... 42

(8)

表格目錄

表 1-1 硬體錯誤注入與軟體錯誤注入比較表 ... 6

表 3-1 失效模式與效應分析表例 ... 18

表 3-2 發生度(SF) ... 19

表 3-3 難檢度(SD) ... 20

表 3-4 嚴重度(S) ... 20

表 4-1VLIW 處理器指令集 ... 25

表 4-2 灌錯實驗的主要元件 ... 27

表 4-3 測試程式 ... 27

表 4-4IDCT 造成各元件的系統失敗率(ONE CYCLE) ... 34

表 4-5MATRIX 5X5 造成各元件的系統失敗率(ONE CYCLE) ... 34

表 4-6HEAP SORT造成各元件的系統失敗率(ONE CYCLE) ... 35

表 4-7QUICK SORT 造成各元件的系統失敗率(ONE CYCLE) ... 36

表 4-8 運算類程式造成各元件的系統失敗率(ONE CYCLE) ... 37

表 4-9 資料搬移類程式造成各元件的系統失敗率(ONE CYCLE) ... 37

表 4-10 各元件的系統平均失敗率(ONE CYCLE) ... 41

表 4-11IDCT 造成各元件的系統失敗率(FOUR CYCLES) ... 43

表 4-12MATRIX 5X5 造成各元件的系統失敗率(FOUR CYCLES) ... 43

表 4-13HEAP SORT造成各元件的系統失敗率(FOUR CYCLES) ... 44

表 4-14QUICK SORT造成各元件的系統失敗率(FOUR CYCLES) ... 44

表 4-15 運算類程式造成各元件的系統失敗率(FOUR CYCLES) ... 45

表 4-16 資料比較與搬移類程式造成各元件的系統失敗率(FOUR CYCLES) .... 45

表 4-17 各元件的系統平均失敗率(FOUR CYCLES) ... 46

(9)

第一章 簡介

當現在的科技越來越進步,許多產品都要求面積要越做越小且速度要越來越 快。過去產品是利用許多單晶片透過 FPGA 互相連接溝通,這樣的作法不但會 造成產品面積過大且速度也會因為晶片之間的溝通而降低。但隨著製程技術進展 入到深次微米時代[1-3],晶片中可放入的電晶體數目越來越多,因此可將越來越 多的功能整合到單顆晶片中,形成目前最流行的系統晶片(System On Chip)設計 概念。但晶片密度上升的同時也帶來了許多額外的效應,像是發生外部輻射線的 干擾、電壓突波、漏話干擾(crosstalk)…等問題的機率也跟著上升。當這些機率 提高至不可忽視的程度時,就可能會造成系統晶片(system-on-chip)發生暫時性的 錯誤。為了保護系統晶片不會因為這些錯誤而造成嚴重的損害,需在設計過程中 加入所謂容錯設計(Fault Tolerant Design)的考量,其意謂在系統晶片中增加容忍 錯誤的機制,藉此提升晶片的可靠度。

在近幾年,高階處理器已成為高效能的嵌入式系統主要架構之ㄧ[4]。像是 ARM[5]、Intel、HP 合作開發的 IA-64[6], TI 公司的 TMS320C62x/67x DSP 裝置 [7]和 Fujitsu 公司的 FR500[8][9]皆為其中非常具有代表性的上市產品。因此本篇 論文選用VLIW 為主要的測試平台。當系統晶片開始大量應用在嵌入式智慧型 系統,比如汽車電子或是智慧型機器人的控制網路節點上時,可靠度將是系統晶 片能否在這些高安全度系統應用上,成功與否的關鍵因素。如何評估系統的可靠 度,和分析元件失敗對系統可靠度的影響,將是嵌入式系統設計者所要面臨的問 題。高可靠度嵌入式系統設計流程應包含: 利用驗證平台實施系統 FMEA(Failure Mode Effects Analysis)/FTA(Fault Tree Analysis)的分析,建立元件失敗對系統可靠 度影響程度的數據,提出可靠度改善的有效方案。接下來使用容錯設計的觀念來 提升系統的可靠度,並再重新執行驗證分析與改善流程,直到所有可靠度的問題 解決為止。

(10)

以往若在系統晶片開發的初期考慮加入容錯的機制時,有兩種方法可以提供 具有參考價值的依據,第一種方法為先執行錯誤注入模擬實驗,藉此找出系統晶 片中最容易出錯的地方,並決定如何加入容錯的機制,避免增加太多的開發成本。

加入容錯機制之後,可以再執行錯誤注入模擬實驗,去驗證所加入的容錯機制是 否符合預期。這種方法是因為透過錯誤注入的方法模擬真實系統發生錯誤時的反 應,因此所得的系統中各元件對錯誤的敏感度分析較為精確。但相對需執行大量 的實驗結果符合信賴度(confidence level),在分析所需的時間會較為冗長。第二 種方法是透過系統的錯誤敏感度模型(Soft Error Sensitivity Model)找出系統中對 錯誤較敏感的元件。與第一種方法比較,利用模型可以避免執行大量的錯誤注入 實驗,但相對其結果也較不精確。

在本篇論文中,我們提出兩種方法的折衷,先利用少量的錯誤注入實驗取得 初步的分析結果,再提出一個錯誤敏感度評估模型,並以上步的結果作為主要參 數之ㄧ,代入後求得最後各元件之間的錯誤敏感度排名,找出系統中最值得投入 容錯機制的部分。

1-1 背景介紹

因為本篇論文所提出的方法第一步需要先執行錯誤注入,因此以下將對其基 本概念做一簡單的介紹,另外也可了解錯誤如何在系統內部產生,並擴散傳遞至 整個系統都受其影響,此觀念將為我們所提出的錯誤敏感度評估模型最重要的理 論基礎。

1-1-1 錯誤型態

在容錯設計中常將錯誤的定義分為三種,分別為 fault、error、failure。fault 是錯誤的最基本模式,系統上發生的錯誤皆是由 fault 引起的。fault 產生原因有 可能是在原本實體的電路中製造時不小心造成的缺陷,最常見的就是開路或短路。

除了內部製造的缺陷之外,fault 也可能是受到外部的干擾而產生,像是電壓跳動

(11)

(Power jitter)或是電磁波干擾(Electro-magnetic interface)等,以上這些因素 都有可能是fault 的發生原因。而 error 則是 fault 的一種延伸,error 是由 fault 所 導致的,然而並不是每一個fault 都會導致 error 發生。以下我們將舉一個 OR 閘 來說明錯誤的型態如下圖1-1,當 OR 閘的輸入端發生一個 fault 時,導致 OR 閘 的輸出發生error,若是最後這一個 error 導致整個系統輸出不正確的訊息,則會 使系統發生失敗(failure)。

圖1-1 有效性錯誤示意圖

再以圖 1-2 為例,當 AND 閘的一個輸入端因為 fault 的關係,產生持續的高電 位,此時若另一個輸入端送進來的資料為低電位時,因為及AND 閘的動作為當 兩個輸入端都為高電位時,才會輸出高電位。因此這時候 fault 會因為另一個輸 入端輸入為低電位,而無法對其輸出造成任何影響。這種現象稱為錯誤遮蔽(Fault Masking)。反之若另一個輸入端為高電位,而 fault 把原本的低電位變為高電位 進而影響輸出結果也從低電位變為高電位,則error 產生。

圖1-2 有效性錯誤及非有效性錯誤說明圖

由上面介紹可以知道 fault 的型態有很多種,而且並不是每一個 fault 都會引 發成error。當 error 發生,並不一定會造成 failure。舉例來說,當 error 發生使得 記憶體內的資料發生錯誤,但是現在系統未必使用到此記憶體位址,所以系統不 會造成影響,反之如果系統使用到這記憶體位址導致讀取到錯誤的資料,最後就 會造成系統failure。由下圖 1-3 可以了解錯誤之間的關係。

(12)

圖1-3 錯誤之間的關係圖

經由上述介紹可知錯誤注入的方式主要可以分為fault 或 error 注入兩種,視 設計者的需求決定注入哪一種錯誤。

在此論文中,我們主要探討的是系統內部各元件的輸出 error 與系統失敗之 間的關聯,因此執行錯誤注入實驗時將以各元件的輸出為主要注入目標。

1-1-2 錯誤注入簡介

當系統要加入容錯系統設計時,若沒有先經過錯誤注入,判斷系統中真正 需要加入容錯機制的地方,有可能會將成本投入在對提昇系統的可靠度沒有太大 幫助的地方。另一方面,當容錯系統設計完成時也需要藉由錯誤注入實驗幫助我 們了解容錯機制是否有發揮功用及其有效性,並檢查是否還有需要增加容錯機制 的地方。因此不管是容錯機制還是驗證流程裡,錯誤注入都扮演著非常重要的角 色。

接下來,我們將介紹目前的錯誤注入方法主要分類方式,且各自又有何優缺 點:

1、 硬體錯誤注入(Physical fault injection)

將已經設計好的系統,以晶片或是可規劃邏輯陣列(FPGA)實做出來後,

再直接進行錯誤注入。利用實際硬體實驗出來的結果,也代表著真實系統的 反應。若發現系統的可靠度不如預期且必須修改原始設計時,將會是一個非 常耗時且大幅增加製造成本的過程。其主要的實踐方法如下所列:

(1) 晶片腳位層級錯誤注入(IC pin level fault injection)

將製造出來的晶片,透過測試平台對晶片的pin 腳注入錯誤,

藉此觀察當錯誤發生時,晶片會有何種反應[15]。

(2) 輻射線照射錯誤注入(Radiation fault injection)

(13)

將設計好的晶片,放置在一個特殊的平台上。此平台是事先設 計好可以產生雜訊或是輻射線的環境。測試當晶片受到雜訊或輻射 線影響時,會產生何種反應[16]。

(3) 硬體基礎錯誤注入(Hardware-based fault injection)

利用在開發系統雛型(system prototype)時,常會使用到的硬體 輔助設備可規劃邏輯陣列(FPGA),使用這個平台可以讓系統設計 者在上面直接進行錯誤注入。

在這三種硬體注入錯誤的技術中,晶片腳位層級錯誤注入以及輻射線照射錯 誤注入這兩種技術,除了要將晶片設計出來,還需要建置專業的錯誤注入環境,

因此需要較高的硬體成本。再加上這兩種錯誤注入技術,只能在pin 腳或是外部 環境干擾,其錯誤注入的可控制性(Controllability)相對較低,而且因為錯誤是發 生在晶片的內部,其可觀察性(Observablility)也相對較低。而硬體基礎錯誤注入 技術,因為使用可規劃邏輯陣列(FPGA),不需經過實體晶片的製造過程,所以 其硬體成本並不像前兩項技術一樣高,而且其可控制性及可觀察性也比之前兩項 技術高。

2、 軟體錯誤注入(Software fault injection)

此種技術是利用程式在編譯或執行的時候,執行設計好的錯誤注入軟體 程式,去修改硬體中記憶體或是暫存器內部的值,藉此讓硬體在執行時發生 錯誤。

3、 模擬基礎錯誤注入(Simulation-based fault injection)

在模擬基礎錯誤注入技術中,因為不像硬體錯誤注入技術一樣,需要將 晶片製造出來,也不需要建置錯誤注入環境,只需要使用硬體描述語言 (Hardware Description Language)將對應設計層級的錯誤注入方法描述出來,

所以模擬基礎錯誤注入技術在成本上是比較節省的。除此之外,模擬基礎 錯誤注入技術還可以應用在各個不同的設計層級上,像是:邏輯閘層級(gate level)、暫存器傳輸層級(register transfer level)、甚至是更高的系統層級

(14)

(system level)及抽象層級(abstraction level)…等,只需要針對不同設計 層級去設計錯誤注入的方法。使用模擬基礎錯誤注入技術還有一個優點是,

可以在系統設計的前期就對系統的容錯能力進行測試,如此一來就可以在 最短的時間內判斷系統的容錯能力,並針對不足的部份進行修改。

此種技術是模擬器在進行電路模擬時,利用模擬器內建的指令(build-in commands),或是在電路內加入錯誤注入的電路,在系統內實現錯誤注入的 目的。

在軟體實現錯誤注入技術、模擬基礎錯誤注入、及硬體錯誤注入技術的 比較中,模擬基礎錯誤注入擁有較高的可控制性及可觀察性,開發成本上 也比較節省,三種不同錯誤注入技術之間的比較如表1-1。在本篇論文中,

將使用模擬基礎錯誤注入技術(simulation-based fault injection),此種技術擁 有較高的可控制性及可觀察性。

錯誤注入 技術 項目

硬體錯誤注入

軟 體 實 現 錯誤注入

模 擬 基 礎 錯誤注入 晶 片 腳 位

注入錯誤

輻射線照射 錯誤注入

硬 體 基 礎 錯誤注入

可控制性 低 低 中 中 高

可觀察性 低 低 中 中 高

付出成本 高 高 中 低 低

電路相似度 高 高 高 中 中

表 1- 1 硬體錯誤注入與軟體錯誤注入比較表

本篇論文的架構如下,第二章將針對過去弱點分析模型提出的方法做介紹,

並且提出這些方法的優缺點。接著將提出我們的研究動機及目的,並且將在驗證 弱點分析模型而執行的錯誤注入實驗方法會遇到的問題做一個問題定義,第三章 我們將簡單介紹FMEA,並且針對本論文定義的弱點分析模型做介紹。第四章將

(15)

會詳細介紹我們所提出的錯誤注入實驗方法,並且將提出弱點分析模型各個參數 取得的方法。最後我們將針對本篇論文做個結論,並且針對還可以改良的地方提 出未來展望。

(16)

第二章 相關研究、研究動機及問題定義

2-1 相關研究

在第一章已針對錯誤注入方式與其分類做過簡單的介紹。以下我們將介紹相 關文獻[13-15]所提出的系統弱點分析方法與其評估模型。

首先在[15]中提出的評估模型主要是以 AMBA 為其分析目標其架構示意圖 如下所示:

圖 2- 1 AMBA BUS Architecture

其 錯 誤 注 入 目 標 以 AMBA protocol 所 採 用 的 傳 遞 訊 息 為 主 , 例 如 HBURST[2:0]、HWRITE、HREADY、HADDR[31:0]等,由於這些訊號在 AMBA Bus 上使用非常頻繁,所以以此為目標的錯誤注入實驗,才會得到真正有意義的

(17)

數據。

在定義其系統估測模型之前,作者先將這些訊號線發生錯誤時可能會產生的 失敗類型分成以下四種:

z Fatal Error

意味著系統發生無法復原的嚴重失敗情形,主要可能有以下三種:

„ 錯誤發生導致訊息的傳送位址無法對應到任何存在的 slave。

„ 對存放指令的位址進行寫入的動作。

„ 核心微控制單元接收到在某狀態下不可能接收到的訊息。舉例來說,

核 心 微 控 制 單 元 處 在 停 止 運 作 的 狀 態下 , 卻 依 然 收 到 仲 裁 器

(Arbiter)同意其對 AMBA 做存取的訊息。

z Deadlock

主要指錯誤發生因而導致系統陷入某種狀態而永遠無法離開,最典型的 例子像是:迴圈的終止判斷條件永遠無法符合,因而形成無窮迴圈;另 外在AMBA 系統中,若仲裁器發生錯誤導致所有的 Master 都無法取得 AMBA 的使用權,也會造成 Deadlock 的情形產生。在[15]中將其可能 會遇到的Deadlock 情形分成以下兩類:

„ 程式計數器(Program counter) 的計算錯誤:指當程式計數器指到一 個未知的位址時的情形。在此情況下,微控制器發現讀取到是一道 非法指令,因而重覆發出對此位址進行讀取的請求。

„ AMBA 陷入未知狀態,此時所有的 Master 與 Salve 都在等待 AMBA 送出回覆訊息,因而陷入Deadlock。

z Silent Data Corruption

雖然模擬過程有錯誤產生,但卻沒有導致系統陷入 Deadlock 或無法運 行的狀態,而此錯誤最後造成模擬結果不正確。在AMBA 系統中,SDC 主要是由錯誤的HADDR 所導致。一旦某元件因此存取到不正確的資料,

模擬的結果也會跟著改變。

(18)

z No Effect

錯誤發生但是沒有影響到系統。

接下來以這些失敗類型為主定義其錯誤估測模型,值得注意的是在其提出的 估測模型中加入了使用率的概念分為讀取與寫入兩部分,並且將寫入與讀取兩部 分得出的數據相加。所推導的估測模型如下所列:

r T P p read

w T P p Write

P

f

signals all

i f

signals all

i

sf

= % × ∑ × = + % × ∑ × =

(2.1)

其中 Psf定義為當有錯誤發生會導致系統發生嚴重性錯誤的機率;pi定義為 某傳送訊息發生錯誤的機率;Pf|T=w 定義為在一個寫入的傳輸過程中錯誤發生 並導致系統發生嚴重性錯誤的機率;Pf|T=r 定義為在一個讀取的傳輸過程中錯誤 發生並導致系統發生嚴重性錯誤的機率。

從此篇文章中我們可以知道使用率對弱點估測模型的建立是一個很重要的 參數。由於這個模型是運用在較高層級的系統上面,所以得到使用率的方式會因 為不同的層級而有所不同。

例如在[14]這篇論文提到 Data Cache 的弱點分析模型,它是針對 cache 而設 計的弱點分析模型,TVF 稱為一個短暫的弱點係數( temporal vulnerability factor),

如下方程式:

TVFDC __ E __T (2.2) Cache 的 TVF 定義為在脆弱的階段過程中數據項的平均資料項除以在資料 Cache 所可能容納在施行期間的總資料項。

這個弱點評估模型缺點有以下幾點:

z 此評估模型針對 Cache 開發,需考慮在其它系統中這些參數取得的難易 度。

z 只有考慮到資料這個參數,比較不客觀。

下一節將會提出促使我們研究的動機,進而產生出我們要的弱點評估模型。

(19)

2-2 研究動機

動機一:提供一套計算失敗率的弱點預估模型

在過去相關的研究針對弱點估測模型是利用錯誤注入後的結果當作一個元 件造成失敗的機率,至於系統總失敗率則是將所有元件造成系統的失敗率加總起 來而求得。本篇論文就這個缺點進行改良。原因是因為一個元件錯誤注入後的結 果並不能真正代表一個元件造成系統的失敗率,必須與其他相關的參數像是使用 率、元件本身出錯的機率等一起考量(以上兩篇相關文獻也提出相同的論點且已 實踐在其弱點預估模型上)。但因為[14]與[15]所提出的預估模型只分別適用在 AMBA 的系統。本篇論文則希望提出一個針對嵌入式微處理器核心的預估模 型。

動機二:提供任何系統風險度的排名

這本篇論文中加入了一個觀念,就是所謂的失效模式效應分析(Failure Model and Effect Analysis, FMEA),它可以提供很多種不一樣的風險度計算方式,如以 下所列:

z 風險優先數法(Risk Priority Number) z 評點法(Criticality Score Evaluate) z 風險水準法(Level of Risk)

z 關鍵性分析與關鍵性矩陣法

本論文利用裡面的一些定義來實現這個風險度的排名,例如風險優先數法裡 的參數發生度、難檢度、嚴重度等等。從這些參數為出發點以及利用這套理論當 作基礎,使用我們自己定義的參數再套用以上各種方法,就可以將風險度排名提 供給需要的使用者。

這些風險度的排名,對於之後的容錯設計方針,是一個很重要的參考依據,

(20)

但是並不是風險度排名最高的就一定要保護,還必須評估加入容錯設計所需增加 的成本(Cost)、複雜度以及加入容錯設計後是否有讓失敗率產生實際上的降低,

或者是加入容錯之後失敗率與成本的考量不成正比,等其它因素。這也是知道風 險度排名後需繼續深入探討的地方。

動機三: 找出造成此系統失敗的原因

在失效模式效應分析(FMEA)裡提到評點法裡面的評點方式就是利用各個元 件的錯誤原因依照嚴重度分類,然後利用這些分類等級去求出風險度,所以找出 系統失敗的原因是必須的。

在要求得微處理器失敗率之前,必須要先從各個元件下手,對我們要探討的 元件進行錯誤注入實驗,從實驗結果針對各個元件分析,得知各個元件發生錯誤 時可能會導致什麼種類的失敗模式。接著再針對這些失敗模式的產生過程(錯誤 的傳遞過程)進行追蹤,找出造成系統失敗的主要原因。

動機四:一般化

在過去有關弱點預估模型的相關研究中,皆有一些相同的問題,那就是一般 化以及可擴充性。因為之前的相關研究都比較屬於針對某一些特定的環境所開發 出的預估模型,因此無法延用至其他不同的系統或元件上。雖然本篇論文所提出 的弱點分析模型主要是針對嵌入式微處理器而設計,但在設計時我們會盡量避免 用到太過特殊的參數,讓此模型可適用於更廣泛的系統上。

2-3 問題定義

在介紹完相關研究及研究的動機之後,接著針對設計弱點預估模型時會遇到 的情況作問題的定義。在設計弱點預估模型時會遇到及需要解決的問題有下列幾 項:

(21)

1. 系統的元件選取

本論文提出的弱點分析模型,可讓使用此模型的設計者自行挑選所 要測試的元件。主要仰賴設計者對其設計系統的了解程度,判斷出其系 統中最重要的元件有哪些,作為弱點分析模型主要目標。若使用者無法 自行判斷,則粗略的判斷準則可以使用元件面積大小來選擇,而使用者 沒有挑選的元件則視為不會發生錯誤。

2. 失敗的分類

利用與[15]類似的觀念,將微處理器內部元件發生錯誤會造成的失 敗做分類,並找出各元件的錯誤與其造成的失敗類型做連結。將來若設 計者可以判斷何種失敗類型所導致的傷害最大,就可間接判斷出最需保 護的元件有哪些。

3. 弱點分析模型的各項係數取得方式

在制定弱點分析模型中的各項參數時,需考量參數取得的方便性與 此參數的重要性,若能盡量選擇可透過EDA 工具取得的參數,對 模型的實用性將會有很大的幫助。

(22)

第三章 弱點估測模型

3-1 失效模式與其效應分析(Failure Model and Effect Analysis)

3-1-1 定義

失效模式與效應分析(Failure Mode and Effects Analysis),簡稱為FMEA,是 一種預防性之可靠度設計分析技術[16]。使用結構化的系統程序方法,可及早發 現產品潛在的失敗模式,探討其失敗原因,及失敗發生後該失敗對上一層分系統、

次系統和系統所造成的影響,並採取適當的預防措施和改進方案。

3-1-2 FMEA 起源與發展

在五十年代由於美軍戰鬥機油壓裝置與電氣裝置的可靠度不高導致失事頻 繁,機毀人亡嚴重,格魯曼(Grumman)飛機公司首先將FMEA的觀念用於飛機主 操縱系統的失敗分析。到了六十年代,美國甘迺迪總統簽署阿波羅計劃,推動太 空研發工作,美國國家航空暨太空總署(NASA)針對任務的需要,於1963 年發佈

「NPC 250-1」之可靠度計劃,明定製造商必須實施設計審查(Design Review),

且在設計審查時必須應用FMEA的技術,因此FMEA在此時期被成功的被應用在 太空計劃上[14]。同時,美國軍方也跟著開始應用FMEA的技術,並於1974年出 版軍用標準MIL-STD-1629規定FMECA(Failure Mode,Effects and Criticality Analysis)作業程序,1980年將此標準修訂改版為MIL-STD-1629A,沿用至今 [17-19]。

1977 年福特汽車公司在教育手冊[17]中公佈FMEA的作業標準並且推廣使 用,隨後美國各大汽車廠陸續採用,並依應用對象分成「設計FMEA」及「製程 FMEA」,除公司內實施FMEA外,且要求供應商對所供應的零件進行設計(Design) 及製程(Process)的FMEA。

(23)

1985 年國際電工委員會(International Electrotechnical Commission,IEC)出版 關於系統可靠度的FMEA 技術標準,「IEC812」是參考美軍標準MIL-STD-1629A 加以修改而成的FMEA作業程序,其內容除對電子、機械及油壓等設備或零件的 FMEA 做說明之外,同時提到能將FMEA應用在軟體及人員功能的可靠度分析上 [16]。

1993年美國汽車業所實施的品質系統QS 9000,也將FMEA的技術應用在設 計及製程管制上,而歐盟市場所實施的CE標誌認證,也是利用FMEA 的技術實 施產品安全風險分析[21-22]。

3-1-3 設計 FMEA 及製程 FMEA

FMEA 分成設計FMEA及製程FMEA兩種,說明如下。

1. 設計FMEA (Design Failure Mode Effects Analysis , DFMEA)

將FMEA技術應用在研發新的產品或零組件等系統之可靠度分析稱為「設計 FMEA」。設計FMEA是指從概念定義到設計完成的整個研究發展過程中的一項 分析手法,目的在預先發現出潛在的失敗模式,再檢討、評估不同失敗模式,對 產品功能所造成的影響程度,以便來決定改進設計的優先順序,並有效的防止失 敗發生。為求達成其效益,設計FMEA必須配合設計的發展程序反覆進行。主要 目的在於發現系統設計中的缺點,透過嚴謹的分析作業,確認所有失敗模式於系 統設計中,所有會造成嚴重失敗的原因與可能性,以便儘早提出設計變更或修改,

使產品的設計最佳化。

2. 製程FMEA (Process Failure Mode Effects Analysis , PFMEA)

將FMEA技術應用在製造與組裝過程之分析稱為「製程FMEA」。製程FMEA 以新製程或經修改之製程為對象,並在正式生產開工前,在品質規劃階段中實施。

主要目的在利用FMEA技術分析製程中每一步驟可能的潛在失敗模式及影響程 度,並找出失敗模式發生的原因與發生的機率,尋找各種可能的方法以避免失敗 發生或降低其發生率,減少其影響程度或提高製程的偵錯能力,以利生產出合乎

(24)

品質、成本與時間所要求的產品。

3-1-4 FMEA 作業程序

失敗模式與效應分析通常應用在高可靠性的產品、設備或製程的開發,不論 是設計FMEA或製程FMEA,程序大致上相同。此分析可能會因應欲分析的系統 不同而有所調整,但一般來說,大致可分為以下八個實施步驟:[16,17]

1. 確認系統或子系統所要完成的功能

從設計要求或設計規格書等資料,確認欲實施FMEA 的系統或子系統之 任務。FMEA 是以設計完成產品的任務達成為首要考量,其功能描述的不夠 明確將造成無法實施具有可靠度的分析結果,所以此步驟是實施FMEA 的最 重要程序。

2. 決定分解準則

系統的FMEA 通常是分解成子系統或元件的準則實施,所以必須決定適 合的分解準則才能使分析獲得最好的效果。若是缺乏經驗的分析者,往往想 把相當複雜的系統細分至零件組的解析層級,但因為分解的複雜度太高,導 致半途發現不可行而放棄。但若分解的分析層級太過粗糙,也可能導致最後 的分析結果無法達到足夠的精確度,因此定制分解的準則亦是影響分析結果 的重要因素。由於嵌入式系統的多樣性,使得此程序的執行還是仰賴有經驗 的分析者根據不同的系統需求來制定恰當的分解準則。

3. 決定功能別方塊

一個系統,依其功能加以分類。例如中央控制單元或微控制器、記憶體、

周邊或是匯流排等等,記憶體又可細分成唯讀記憶體、隨機存取記憶體以及 快閃記憶體。一般而言,簡單的副系統可以歸納成三至五種功能,但複雜的 系統,可能內含十種以上的功能,解析的困難度也較不容易。所以,若能將

(25)

幾個功能合併成一個較大的功能區塊,使功能區塊盡量不要超過六個,有助 於節省後續的分析時間。

4. 可靠性方塊圖

為了使FMEA 有效的實施,作成合適的可靠性方塊圖是很重要的一步,

可靠性方塊圖基本上根據功能分類作成,由於它是有功能類別方塊圖組合而 成,所以配置的串聯、並聯,並不見的要與可靠性方塊圖的串聯、並聯一致。

依功能分類作成方塊圖,再根據功能的串聯或並聯結合成可靠性方塊圖,但 是若將各個方塊再細分為子方塊,然後從個別的子方塊再依功能做串聯、並 聯的結合,可靠度方塊圖可以分別表現出來。

5. 列舉並選出對系統有影響的故障模式

對每一個功能類別方塊或子方塊,指出其故障模式並列舉之。應活用類 似系統的故障模式,收集實驗中的故障模式或使用者的使用中故障模式,之 後從列舉的故障模式中,選定做為FMEA 實驗對象的故障模式。若在此程序 中有所遺漏,就可能造成系統在實際運作時,未被選上的故障會經常發生,

此設計就變成一個不可靠的系統。所以為了選出真正會對系統造成影響的故 障模式,系統設計者要再三的檢查確認,並調查過去的故障事件,並且推定 當此故障發生而沒有任何的補救機制時,對系統影響的嚴重程度。

6. 列舉故障的推定原因

一旦選定故障模式後,再以每一種故障模式為出發點,推定造成故障的 原因為何。以一個嵌入式系統為例,可以反推出若是該元件或是子系統發生 錯誤時,就可能導致故障發生,並給定一個發生的容易度針對其可能會導致 的系統故障,若是同一元件或子系統出錯可能會造成一種以上的故障模式發 生,且對系統有很嚴重的影響時,那麼此元件或子系統就可能被認定為需要 被優先保護的部分。

(26)

7. 將要點記載於 FMEA 的紀錄表格 I. 編號:記入可靠性的方塊圖編號。

II. 元件名稱:各元件的名稱分別記入。

III. 元件功能:各元件的功能。

IV. 故障模式:記入第 5 項所選定的故障模式。

V. 推定原因:記入第 6 項所檢討的推定原因。

VI. 故障對系統的影響:故障發生時,在那些範圍內,會造成多大的影 響,檢討後記入。盡量避免複雜的表現方式。

8. 故障等級

總和之前程序的結果判斷故障所造成的影響大小分級,然後訂定保護的 對策及實施的優先度。故障等級是由設計者所訂定的,根據系統應用的不同,

對系統元件或子系統的影響進行評價。最後產生的對應表格如下所示:

系統:

F M E A

日期:

製表者:

承認者:

查閱者:

編號 元件名 稱

元件功 能

故障模 式

推定原 因

故障對系統的影 響

故障等 級

備註

表 3- 1 失效模式與效應分析表例

為了驗證注入錯誤方法的可行性與 FMEA 結果的價值,必須藉由將技 術應用到實際的嵌入式系統雛型中,藉此得知例如加入注入錯誤方法的難易 度、此方法適用範圍的廣泛與否、使模擬時間延長多久時間等,而藉由FMEA

(27)

結果來加入保護機制並且重新執行可靠度的驗證分析,由其改善的程度可以 得知用此FMEA 方法所做的分析是否能真正對系統設計者產生幫助。

3-1-5 失效風險評價與決策

利用FMEA的技術來對系統的問題做改善的決策,必須以問題的嚴重性為依 據,來排行優先解決的順序。其決策的方法,可依據風險優先數或關鍵值的大小。

本節將綜合歸類FMEA失效風險評價與決策方法,分別說明如下。

z 風險優先數法(Risk Priority Number)

福特教育手冊[20]對於FMEA的失效風險評價方法最為傳統,目前仍被 各行業普遍所採用。其方法是採用風險優先數(RPN)的數據,來做風險評估 (Risk Assessment)。其風險評估的因子由下列組成:

S :發生度-失敗發生的機率。

S :難檢度-失敗發生會被檢測出來的機率。

S:嚴重度-失敗後產生的後果。

以上三個因子依程度大小,分別以1至10的分數來衡量,如表3-2 表3-4,

分別為三個因子程度的等級與分數的對照表。

發生的機會 等級 發生機率

幾乎不可能 1 0

很低 2

3

1/20000 1/10000

中 4

5 6

1/2000 1/1000 1/200

高 7

8

1/100 1/20

很高 9

10

1/10 1/2 表 3- 2 發生度(S)

(28)

失敗的難檢等級 分數 缺陷的機率(%)

幾乎不可能 1 0-5

很低 2

3

6-15 16-25 中

4 5 6

26-35 36-45 46-55

高 7

8

56-65 66-75

很高 9

10

76-85 86-100 表 3- 3 難檢度(S )

嚴重等級(對顧客) 分數

可能沒有注意 1

稍覺得有困擾 2

3

不滿意 4

5 6

高度不滿意 7

8

危急到生命 9

10 表 3- 4 嚴重度(S)

風險優先數(RPN)是由發生度、難檢度及嚴重度三者相乘而得,如以式子可 表示如(3.1)式。對於風險優先數的決策因子數,可依FMEA的應用而定出不同 的決策因子與分數評定準則。圖 3-1 為風險評估示意圖。

RPN S S S (3.1) 本論文所提出的弱點分析模型是以Sf參數為基礎,其他的失效風險的決策可 參考[16]。

(29)

圖 3- 1 風險評估示意圖 3-2 弱點分析模型

3-2-1 定義

當系統下有一個元件的集合C , , . . . , ,在每個元件下會有不同的失 敗模式的集合F , , . . . , ,所以不同的元件C 會各自對應到不同的F 。對於 我們要如何去挑選這些元件,本篇論文是選擇較重要的元件當作此弱點分析模型 參數的依據,至於哪些元件是較為重要的,就要依據設計者的設計謹慎去評估,

所找出來的元件就是日後要做為容錯設計的元件。

本篇論文的弱點分析模型是採用單一錯誤(single fault)的注入方式。在本篇 論文定義一個微處理器的弱點:

VMP P 造成系統失敗 單一個錯誤發生在某個元件

我們可以使用 VMP去塑造整個過程從分組的錯誤到整體微處理器的失敗。因此我 們定義以下三個參數:

z SESC :稱為C 的錯誤敏感度(soft error sensitivity)。

P 導致元件造成系統失敗 錯誤有效的傳遞 。

z UC:為C使用率,代表元件的訊號被更改的頻率。

z ARC:為C 的面積比例,代表錯誤出現在某個元件的機率。

z NC F (系統失敗的次數):在程式執行中,當錯誤產生造成系統失敗

(30)

的次數。

z N (有效傳遞的錯誤次數):當錯誤發生且有效的傳遞至其他元件。

z NC (元件使用多少 clock cycle):在測試程式中元件使用的次數。

z N (測試程式的總執行 clock cycle) :在測試程式中程式執行的 cycle 數。

z AC:各個元件的面積。

3-2-2 弱點分析模型

要求出一個系統的失敗率,就必須從系統中各個元件來著手,所以系統失敗 率就是代表這系統裡面的元件所有失敗率的總合。以下我們探討弱點分析模型各 個參數的方程式。

當一個錯誤(fault)發生,它會落在系統中某個特定元件的機率,我們定義ARC 為使用元件占總面積的比例,如以下方程式3.2:

AR

C ACA

C (3.2)

當錯誤落在系統中的特定元件下,這元件當下是否被系統所使用,而導致這 個錯誤發生傳遞的效應,這實際上就跟元件在系統中的使用率有關係,所以我們 定義使用率UC是在測試程式中各元件執行的cycles 數的比例,如以下方程式 3.3:

U

C NC

N (3.3)

經過錯誤注入的實驗我們可以得知,當錯誤如果被傳遞是否會導致系統失敗,

我們定義錯誤敏感度SESC為當錯誤有效的傳遞下各元件造成系統失敗的比例,

如以下方程式3.4:

SES

C NNC F (3.4)

經過以上步驟,我們可以得知各個參數的關係。某個元件造成系統失敗率VC 我們定義為當一個錯誤發生,它會落在特定元件下,假如當時這個元件被系統使 用,並且錯誤有效的傳遞,而預期元件會造成系統失敗的機率。我們將某個元件

(31)

造成系統失敗率VC加總起來就能求得整個系統的失敗率,如以下方程式3.5:

VMP ∑ VC , where VC ARC UC SESC (3.5)

由方程式3.5 我們可以得知本弱點分析模型是往一般化的方向來設計,模型 中所需的參數在任何的系統中都能很輕易的得到,所以對於弱點分析就變得比較 容易,這也是本論文提出這個弱點分析模型最重要的貢獻。在下章節我們會利用 VLIW 這個微處理器系統來驗證我們提出的弱點分析模型,進而利用這個模型得 到元件的VC排名。

(32)

第四章 實驗設定與實驗結果分析

4-1 實驗架構介紹

在本論文中利用VLIW 處理器當作要驗證此預估模型的實驗架構,利用這 個架構再加上錯誤注入的工具輔助,來建立整個實驗平台,由以下各點來說明。

4-1-1 VLIW 處理器架構

在本論文中所引用的微處理器是一個32 位元的管線式微處理器(32 bits Pipeline Processor)[23],主要是參考 MIPS R2000 處理器的架構與指令集改良而 來的VLIW 處理器。VLIW 處理器與超純量(Superscalar)處理器設計不同的地方 在於,超純量是用硬體來實現指令的排程,而VLIW 則是利用編譯器(Compiler) 來處理指令排程的問題。除了指令排程的不同,超純量處理器還有Data Hazard、

Control Hazard、Instruction Out of Order 等問題,VLIW 微處理器的指令排程全 都交由編譯器來處理,也因為這樣使得硬體設計的複雜度大幅度的降低,因此提 高了VLIW 處理器的效能。而其採用的指令集主要參考 MIPS R2000 指令集從中 挑選必須的指令。指令介紹由下(表格 4-1)簡述之。

指令名稱

(Instruction Name) 指令說明(Instruction Description)

Sll 邏輯式左移,處理資料往左位移

srl 邏輯式右移,處理資料往右位移

sra 數學式右移,將數字資料右移

multl,multh 乘法,分為高 32 bit 乘法以及低 32bit 乘法 add, addi 加法,與指令中的資料做加法

sub 減法

and, andi 邏輯AND 指令,有分為兩種資料來源 or, ori 邏輯OR 指令,有分為兩種資料來源

(33)

xor, xori 邏輯XOR 指令,有分為兩種資料來源 slt, slti 比較大小,與指令中的資料比較

J 無條件跳躍,跳躍到指定的位址

Jal 無條件跳躍到指定的位址,並將目前位址儲存

Jr 無條件跳躍到暫存器所指定的位址

Beq 比較兩個暫存器,如果相等就跳躍到特定的位址

Bne 比較兩個暫存器,如果不相等就跳躍到特定的位址

Lw 將指定位址中的資料讀取到暫存器中

Sw 將暫存器中的資料回存到指定位址中

表 4- 1 VLIW 處理器指令集

一個基本的不含任何容錯設計的管線式處理器架構可由下面的基本架構圖 說明:

圖 4- 1 VLIW 3rd處理器架構圖 VLIW 3rd 處理器有以下特點:

管線暫存器(Pipeline Registers) 中具有重置更新(re-flash)的功能。設計這個

(34)

功能其主要原因是設計時沒有將分歧預測的功能實作於此微處理器內,所以 必須使用重置更新的功能來處理。

使用靜態分歧衝突的解決方法(static branch hazard solution):

無條件的分歧(ex: jump)是使用停滯(stall)的方式等待新的位址被計算出來才 會去讀取新的指令。

有條件的分歧(ex: beq)則是使用固定停滯(stall)一個時脈週期(clock cycle)的 方式來處理。如此一來所有的分歧或跳躍指令後面跟隨的指令都會使用停滯 (stall)的方式來處理,直到分歧或跳躍的位址被計算出來才能繼續執行接下 來的指令。

資料衝突(data hazard)針對衝突情況分成下列三種解決方法:

算數運算單元(ALU)發生資料衝突時,使用提前引用(Forwarding)的方法,將 剛剛運算完的資料立即引用到算數運算單元中使用。

資料記憶體(Data Memory)存取發生資料衝突時,則使用停滯(stall)、提前引 用(forwarding)與重新執行(re-execute)三種方法混用來解決。

資料讀取後立即引用於分歧指令的資料衝突時,則不建議使用提前引用 (Forwarding)的方法來處理,而使用停滯(stall)兩個時脈週期(clock cycle)來解 決。

4-1-2 實際硬體模擬設定

根據之前的研究發現,元件發生錯誤的機會跟元件面積成正比,因此本次實 驗的主要目標在於微處理器中,選擇較為複雜或是面積較大的元件。其中由於指 令切割的關係,我們把ALU 分成三個子元件,所以我們分開來探討,灌錯的主 要七大元件為:

(35)

元件 描述

ALU_A 算術邏輯單元

ALU_B 算術邏輯單元

ALU_C 算術邏輯單元

Main_Control 控制單元,控制所有處理器內的元件運行

Branch 跳躍單元,負責運算下一個程序計數器(program counter)的 位置

Forwarding 主要是解決危障(Hazard) Instruction_Dispatch 抓取要執行的長指令

表 4- 2 灌錯實驗的主要元件

再來測試程式的挑選,我們使用兩種不同類型的測試程式:

z 數學運算 z 資料搬移

分類的目的在於,二種不同種類的測試程式皆有不同的特性,譬如數學運算 是大量使用ALU中的乘法器,加法器。排序是大量的資料比對以及對資料的搬移 動作、運算等。觀察相同的元件是否在不同指令特性下的錯誤注入實驗,會有不 同的排名結果。以下(表4-3)為實驗所選的測試程式:

測試程式 描述

Matrix 5x5 五乘以五的矩陣相乘

IDCT 反向離散餘弦轉換 (Inverse Discrete Cosine Transform)。

一種採用數學運算方式的 DVD 解碼及空間壓縮技術。

Heap Sort 堆積排序,在此是做數字1-10的排列與組合。

Quick Sort 快速排序,在此是做數字1-10的排列與組合。

表 4- 3 測試程式 4-2 實驗流程

4-2-1 錯誤注入流程

本論文是採用軟體模擬錯誤注入技術,因為可以大幅的縮短系統開發時間、

(36)

較低的成本花費而且能有效的提升錯誤注入能力等。在執行錯誤注入時,需注意 下列幾項參數:

1. 硬體描述語言模組(HDL models)

在本篇論文當中所採用的硬體描述語言模組為VHDL 模組,在錯 誤注入中有使用到兩樣重要的技術將會與該模組有關:

(1). VHDL 語言的特徵

當一個系統利用VHDL 語言的階層式架構方法撰寫,其中的元 件互相會藉由訊號線(Signal)來做連結,VHDL 語言允許同ㄧ條訊 號線可以讓多個元件驅動(Drive)並提供解答函數(resolution

function)來決定當此訊號線有多個來源端在推動時,哪一個元件所 產生的值才是正確,這條訊號線被稱為解答訊號線(Resolve signal),

它可以被用來模擬真實電路上面的匯流排或是金屬連線,我們可以 藉由此特性來產生錯誤發生區域。

(2). 模擬器內建的指令

目前市面上的EDA 工具提供了很多模擬功能,而這些工具大 部份都有提供內建指令(每種模擬工具所提供的內建指令都不盡相 同),而這些指令當中有一部份可以被使用在錯誤注入技術,使用 模擬工具的內建指令可以避免修改VHDL 原始碼即可達到錯誤注 入的目的,它只需要考慮訊號線(Signal)以及變數(Variable)的操作,

但是這個技術只適合用在有提供這方面指令的模擬工具。

2. 錯誤發生地點(fault targets):

當執行錯誤注入時,首先就是要決定錯誤發生地點。在本篇論文中錯誤 發生地點可分為三種資料物件(Data object)型態:輸出/輸入腳位(I/O port)、

訊號線、變數。再藉由VHDL 模組中的特徵以及模擬工具內建指令來達到 錯誤發生地點執行錯誤注入的動作,而錯誤注入的方式主要是依據所屬的物 件型態的不同而有所區分,本篇論文採用輸出訊號的錯誤注數方式,其主要

(37)

的參數有:

z 錯誤發生地點(Error target) z 錯誤的值(Error value)

z 錯誤發生時間(Error instant time) z 錯誤結束時間(Error end time)

輸出腳位以及訊號可以指定錯誤結束時間。

3. 錯誤模組(fault model):

錯誤模組主要是用來決定所要注入錯誤的值,目前錯誤模組所包含的種 類相當的廣泛,其中有:Stuck-at 錯誤模組、Stuck-if 錯誤模組,高阻抗 (High-impedance)錯誤模組、未知值(Indetermination)錯誤模組…等,在本篇 論文當中採用Stuck-at 錯誤模組。

4. 錯誤類型(fault types):

錯誤類型分為兩類:

z 暫時性錯誤(Transient errors):所謂的暫時性錯誤指的是錯誤有一定 的週期性,在經過若干時間之後錯誤便會消失。

z 永久性錯誤(Permanent errors):這類型的錯誤並沒有結束時間,當 錯誤一發生便會一直存在系統當中。

在本篇論文中,注入錯誤的目的是為了觀察微處理器內部元件受外 界環境因素干擾後的影響,所以在注入錯誤的時候只考慮暫時性錯誤。

5. 錯誤分佈 (fault distribution):

錯誤分布模組的主要功能是為了決定錯誤發生時間,為了要模擬電子產 品實際發生錯誤的情況,在本論文錯誤注入工具中採用了Weibull 分佈機率 函數,因為Weibull 分佈機率函數能精確的模擬出電子產品整個生命週期的 錯誤發生率。它將電子產品的生命週期分為三個部份:

z Burn-in:利用高溫、高壓的方法加速其老化的速度,將較差的電 子產品淘汰。

(38)

z Useful-life:電子產品處於一個較穩定的狀態,發生錯誤的機率較 低。

z Wear-out:當電子產品經過一定時間的使用後,發生錯誤的機率又 開始逐漸升高,這是因為晶片內部的接點逐漸老化,影響到產品的 穩定度。

6. 錯誤週期(fault duration):

錯誤發生到錯誤結束這段時間稱為錯誤週期,用來決定所要注入的錯誤 存在時間。本論文的目的是探討暫時性錯誤對元件造成的影響,本論文採用 一個時脈週期的長度來做實驗,此種錯誤週期應已足夠讓我們觀察元件輸出 腳位上的錯誤(Error)傳遞到後續的元件,並且對系統造成影響的情況。如果 有需要的話之後的研究,可以讓錯誤的時脈週期拉長。以觀察在不同的錯誤 時脈長度下,元件的造成系統失敗的結果有何不同。

7. 注入的錯誤總數(Total fault numbers):

顧名思義,注入的錯誤總數即為發生錯誤(fault)的總數,它與模擬時間 以及錯誤週期之間的關係會影響到錯誤分佈密度(Fault distribution density),

如果錯誤注入總數高的話那錯誤分佈密度就會比較高。理想的錯誤分佈密度 是錯誤總數乘以錯誤週期約為模擬時間為佳,過長或過短容易造成錯誤分布 不均勻。

8. 模擬時間(Simulation workload):

錯誤模擬時間代表的是這次模擬實驗的時間長度,它是根據測試程式 (Benchmark)長度而不同,同時他也會影響錯誤分佈密度。

9. 失敗的分類(failure classification):

z Fatal failure

程式執行時,因為錯誤導致資料記憶體(Data memory)錯誤、資料 產生溢位(overflow)或指令記憶體(instruction rom)指令產生錯誤導致系 統異常中斷。

(39)

1

z Infin

造成

z Data

成系 於這 0. 錯誤

在錯 入錯誤描 結果,敘 z 無注 沒有錯誤 正確的模 z 注入 包含一次 段模擬一 模擬

nite loop fai 程式執行時 成無窮迴圈導

a incorrect f 去除以上兩 系統的失敗 這個類別。

誤模擬(Error

錯誤模擬階段 描述檔(Fault 敘述如下所示 注入錯誤描述 誤(fault free)正 模擬實驗結果

入錯誤描述檔 次實驗所有錯 一個有錯誤產 擬實驗開始後

ilure 時,因為錯

導致系統失

failure 兩種失敗模

。在該產生

r Simulation

圖 4- 段,如圖4-2

t free)以及注 示:

述檔:

正常執行的 果,以作為

檔:

錯誤的命令 產生的注入 後,將兩個

錯誤注入影響 失敗。

模式,因為錯 生正確資料

n)

2 錯誤注入 2 所示主要 注入錯誤描

的命令描述檔 為錯誤模擬比

令描述檔,用 入實驗結果

個個別運行的

響到程式計

錯誤的注入導 料的時間點上

入流程 要是利用錯誤

描述檔,使用

檔,以便在 比較的依據

用來在錯誤

的硬體輸出

計數器(Progr

導致最後資 上未出現正

誤注入階段 用模擬工具

在錯誤模擬階 據。

誤模擬(Error

出到比較器

ram Counte

資料不正確而 正確的資料就

段所產生的無 具產生模擬實

階段產生一

r Simulation

器(comparato er)而

而造 就屬

無注 實驗

一個

n)階

or)硬

(40)

體來做比對,以利於錯誤分析,詳細的錯誤模擬流程圖如圖4-3 所示。

圖 4- 3 錯誤模擬流程圖

在實驗時會將錯誤注入於VLIW(C) 這顆處理器中,然後同時讓沒有注 入錯誤的 VLIW(G)處理器一起跑同一組測試程式。將兩個微處理器的訊號 輸出至比較器(Comparator)做比較,然後將波型圖輸出成文字檔,由分析軟 體來做紀錄與分類。

錯誤注入工具常見的資訊參數:

z α=1 (useful-life) z Failure rate (λ) = 0.001

z Probability of permanent fault occurrence = 0 z Fault duration = 1 clock cycles

z Fault numbers =2000 4-2-2 參數取得流程

(41)

由問題定義可知,參數取得對於弱點分析模型是一個很重要的步驟,以下為 本論文弱點預測模型各項參數取得的方法:

z 使用率(

Ci

U ):使用模擬工具執行 Fault free 的波形圖,然後以一個 clock cycle 為單位,分別計算各個測試程式使用的總 clock cycles 數與各個元 件所使用的clock cycles 數。

z 面積(

Ci

AR ):利用 Physical Compiler 軟體工具,將 RTL 的程式語言 VHDL,

降成電晶體型式的Gate 階層計算各個元件所占的面積(mm2)。

z 錯誤的敏感度(SESCi):利用 4-2-1 這節的錯誤注入流程,並使用 Stack-at 1 or 0 的錯誤模組,將錯誤注入各個元件當中,並收集實際上有錯誤傳 導的結果,再來分析這些有錯誤傳導結果的資料中,確實造成系統失敗 的個數,就是這元件的錯誤敏感度。

4-3 實驗結果分析

實驗結果我們分成兩個部份,錯誤的持續時間一個循環以及四個循環分別用 以下幾個方式來探討:

z 分別以各個測試程式分析 z 以測試程式的類別分析 z 從各個參數探討

z 整體結果分析

使用不同的分類方法,來探討在各種情況下系統失敗的機率,可以提供系統 在執行什麼樣類型的程式造成元件的失敗率較高,所以以下我們用實驗數據來探 討。

4-3-1 One Cycle

‹ 以各個測試程式分析

(42)

1. 反向離散餘弦轉換(IDCT)

C SESC UC ARC VC

Instruction_Dispatch 0.713155292 0.917945906 0.190410894 12.465%

Alu_A 0.687344913 0.848135965 0.092064275 5.367%

Alu_B 0.935294118 0.519188596 0.092064275 4.471%

Alu_C 0.976878613 0.342653509 0.092064275 3.082%

Branch 0.919220056 0.034356725 0.017283826 0.055%

Forwarding 0.492842536 0.887061404 0.367792303 16.079%

Main_Control 0.515297907 0.917945906 0.148320152 7.016%

表 4- 4 IDCT 造成各元件的系統失敗率(One Cycle)

由於反向離散餘弦轉換(IDCT)這個測試程式,是以大量的運算指令為主的測 試程式,所以當我們將錯誤注入至這個程式裡我們發現以下幾點:

z 由表 4-4 我們會發現在 forward 裡注入錯誤會造成系統失敗的機率很高,因 為forward 是在處理 hazard,一旦 forwarding 元件出錯,就會使暫存器讀到 錯誤的資料,導致最後的資料不正確或是使得資料發生溢位(overflow) ,最 後造成系統失敗(failure)。

z 處理運算的元件高錯誤敏感度,主要也是因為程式特性造成的。

2. 矩陣相乘(Matrix 5x5)

C SESC UC ARC VC

Instruction_Dispatch 0.949086162 0.871279762 0.190410894 15.745%

Alu_A 0.972972973 0.848958333 0.092064275 7.605%

Alu_B 0.792079208 0.023809524 0.092064275 0.174%

Alu_C 0.785714286 0.014136905 0.092064275 0.102%

Branch 0.994029851 0.003720238 0.017283826 0.006%

Forwarding 0.351206434 0.865327381 0.367792303 11.178%

Main_Control 0.781914894 0.871279762 0.148320152 10.105%

表 4- 5 Matrix 5x5 造成各元件的系統失敗率(One Cycle)

由於矩陣相乘(Matrix 5x5)也是屬於運算指令較多的測試程式,其實驗結果 如上表4-5 所示從中我們發現以下幾點:

z 能證明在運算指令較多的程式下,對於錯誤注入呈現都是在讀取指令、

(43)

解決hazard 與控制的這些元件下反應出來。

z Instruction Dispatch 元件造成系統失敗的機率是最高的。

z 至於 Branch 的高錯誤敏感度主要是因為錯誤有效傳遞的次數少。在此 狀況下,只要有系統失敗的發生,就會擁有高錯誤敏感度的結果。

3. 堆積排序(Heap sort)

C SESC UC ARC VC

Instruction_Dispatch 0.528513238 0.503534957 0.190410894 5.067%

Alu_A 0.795918367 0.31264729 0.092064275 2.291%

Alu_B 0 0 0.092064275 0.000%

Alu_C 0 0 0.092064275 0.000%

Branch 0.977011494 0.102120974 0.017283826 0.172%

Forwarding 0.1375 0.423409269 0.367792303 2.141%

Main_Control 0.568181818 0.503534957 0.148320152 4.243%

表 4- 6 Heap Sort 造成各元件的系統失敗率(One Cycle)

z 由於 Heap sort 沒有使用到 alu2 與 alu3 這兩個元件,由表 4-6 可得知這 兩個元件的SESC與UC都沒有值。因為弱點分析模型的各個參數都是一 個很重要的指標,所以當一個參數等於零時表示該元件出錯不會造成系 統失敗。

z 由於這個測試程式是屬於資料搬移類別的程式所以可以看得出來 Branch 的錯誤敏感度比運算類的高了很多,但是因為微處理器執行指 令時最常用到的還是指令讀取元件,所以指令讀取元件造成失敗的機率 (VC) 在這測試程式裡還是排第一。

(44)

4. 快速排序(Quick Sort)

C SESC UC ARC VC

Instruction_Dispatch 0.357920193 0.778856526 0.190410894 5.308%

Alu_A 0.563063063 0.351132686 0.092064275 1.820%

Alu_B 0.705882353 0.074433657 0.092064275 0.484%

Alu_C 0.727272727 0.03613808 0.092064275 0.242%

Branch 0.925 0.067961165 0.017283826 0.109%

Forwarding 0.581632653 0.44012945 0.367792303 9.415%

Main_Control 0.531468531 0.778856526 0.148320152 6.140%

表 4- 7 Quick Sort 造成各元件的系統失敗率(One Cycle)

由表4-7 我們可以發現:

z 雖然 branch 元件造成系統失敗的機率相對於其它元件還是很低,但是 在對於前面測試程式來說,已經確實提高許多。因為在這測試程式中使 用較多的跳躍指令,所以當錯誤產生較容易傳遞,因此branch 的失敗 率才會提高。

z 每個元件造成系統失敗的機率(VC)都在 10%以下,錯誤(fault)對於這個 程式的影響比較平均。

下一節我們將程式分成兩類來分析。

‹ 以測試程式的類別分析

我們將程式分成兩種類別,運算類與資料搬移類,根據程式的指令的不同而 分類,我們看出在某些元件的排名會稍有不同。以下針對這兩類型的程式進行結 果的分析:

(45)

1. 運算類程式

C SESC ARC UC VC Rank

Instruction_Dispatch 0.831120727 0.190410894 0.894613 14.158% 1 Alu_A 0.830158943 0.092064275 0.848547 6.485% 4 Alu_B 0.863686663 0.092064275 0.271499 2.159% 5 Alu_C 0.881296449 0.092064275 0.178395 1.447% 6 Forwarding 0.422024485 0.367792303 0.876194 13.600% 2 Branch 0.956624953 0.017283826 0.019038 0.031% 7 Main_Control 0.6486064 0.148320152 0.894613 8.606% 3

表 4- 8 運算類程式造成各元件的系統失敗率(One Cycle)

上表4-8 是兩個運算類別的測試成是平均算出來的資料,我們可以發現以下 幾點:

z 元件造成系統的失敗率(VC)很高,因為這個元件在任何程式都扮演很重 要的角色,在進行容錯設計前是主要的評估重點。

z 由表 4-8 證明在運算類別這個元件是很重要的,因為運算指令較多,相 對發生資料相依性的情形也較多,導致較容易發生危障(hazard),所以 更能證明在這系統中這個元件的重要性。

z 在表 4-8 的 branch 這個元件在這類別是排名最後,我們可以在下一個 類別的分析看到不一樣的變化。

2. 資料比較與搬移類程式

C SESC ARC UC VC Rank

Instruction_Dispatch 0.443216716 0.190410894 0.641196 5.411% 3 ALU_A 0.679490715 0.092064275 0.33189 2.076% 4 ALU_B 0.352941176 0.092064275 0.037217 0.121% 6 ALU_C 0.363636364 0.092064275 0.018069 0.060% 7 Forwarding 0.432386364 0.367792303 0.431769 6.866% 2 Branch 0.841446924 0.017283826 0.085041 0.124% 5 Main_Control 0.746590909 0.148320152 0.641196 7.100% 1

表 4- 9 資料搬移類程式造成各元件的系統失敗率(One Cycle)

(46)

‹

由表4-9 z branc

很明 制元 z 這個 都明 z 由圖 而資 看出 高。

z 比較 都比 來探

從各個參

我們可以很 ch 這個元件 明顯降低許多 元件造成的錯 個類別可以看 明顯偏高。

圖4-8、圖 4-9 資料搬移類程 出在高密度運

較兩個類型的 比資料搬移類 探討,運算類

參數探討

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

很明顯發現 件比起在運 多。由於資料 錯誤敏感度 看出其失敗

9 可得知,運 程式的系統

運算的指令

的結果,我 類程式的系 類程式中的

現以下幾點 運算類別高出

料搬移類也 度躍居第一名 敗率(VC )都很

運算類程式 統總失敗率(V

令下造成失

我們發現在運 系統失敗率(V 的指令大多以

出4 倍之多 也使用了許多

名。

很平均,而運

式的系統總失 VMP)為 21.7 失敗的機率

運算類程式 VC)要來的 以加法、減

,而其它的 多控制的指

運算類程式

失敗率(VMP 76%,由此 率比在資料搬

式的元件系 的高。其原因 減法、乘法為

的元件的失敗 指令,所以在

式的失敗率(

P)為 46.49%

此數據我們可 搬運時要來

系統失敗率(

因可由指令特 為主。

Idct Matr Heap Quick

敗率 在控

(VC)

%,

可以 來的

(VC ) 特性

rix 5x5 p Sort

k Sort

參考文獻

相關文件

這種電磁波存在大自然中,而人眼 只能看到其中的一部份,也只有那 裡的光線讓人眼視覺和大腦的交互

是由兩個相等的碳原子均等地共用兩個鍵結電子 然而 有很多化學鍵結不是完全的離子鍵,也不是完全的共價 鍵,而是介於這兩種極端之間,這種鍵結稱為極性共價 鍵(polar

磁性墨水字體是一種具有磁性 , 可以經由電子機器辨認 處理的文字符號 , 將這種磁性字體鍵印在票據上 , 以往靠 人工辦理票據交換作業 , 便可以改由電腦自動處理。. 磁性墨水字體辨認

在上圖中,最上層的物件是 Root,代表電腦的桌面(Desktop),而 每個桌面可以有多個 MATLAB 圖形視窗(Figures),所以我們通常 定義 Figure 是 Root 的孩子(Child),而 Root

Web of Science Core Collection(簡稱 WOS)為引用文獻索引資料庫,可同時檢索 Science Citation Index Expanded(簡稱 SCIE,即通稱的 SCI)、 Social Sciences Citation

了解電腦網路的原理,學習使用 個人網誌及簡易的網頁設計,具 備電子商務的觀念、網路安全以 及網路犯罪與相關法規.

因為我們的學員年齡層是大概 75~80 歲左右,那這些中高齡(老師)的來跟

 BayesTyping1 can tolerate sequencing errors, wh ich are introduced by the PacBio sequencing tec hnology, and noise reads, which are introduced by false barcode identi cations to