• 沒有找到結果。

中 華 大 學

N/A
N/A
Protected

Academic year: 2022

Share "中 華 大 學"

Copied!
58
0
0

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

全文

(1)

中 華 大 學 碩 士 論 文

題目: 以錯誤注入實驗來預估容錯高效能處理器 的錯誤涵蓋率

Experimental Assessment of Fault Coverage for Fault-Tolerant High-Performance Processors

系 所 別 : 資訊工程學系碩士班

學號姓名 : M09402004 石孟儒

指導教授 : 陳永源 博士

(2)

中文摘要

近年來實驗的結果顯示晶片製造進入了深次微米的時代以後,晶片受到輻射 線影響造成暫時性錯誤(Transient Fault)的機率越來越高。然而智慧型系統在運作 時需要相當高的可靠度,例如智慧型行車系統或智慧型機器人等等。這樣的因素 使得高效能處理器需要加入容錯技術,好讓系統達到其可靠度的要求。本篇論文 中我們提供了一個完整且可以應用在高效能處理器的容錯架構,包含了錯誤偵測 (Fault Detection) 、 捲 回 錯 誤 回 復 (rollback error recovery) 以 及 架 構 重 整 (Reconfiguration)。錯誤偵測是基於指令複製的觀念來偵測錯誤。捲回錯誤回復 是利用檢查點機制來克服暫時性錯誤,若錯誤無法被克服就會啟動架構重整隔離 壞掉的元件,若系統隔離壞掉的元件後此時系統會進入可用資源較少的狀態。我 們利用一個以 VHDL 硬體描述語言撰寫的超長指令集架構並且加上了我們提供 的容錯技術,探討此技術對硬體的負擔與效能的影響。此系統其硬體負擔約為 29%。實驗方面提供兩個型態的實驗,一個是在每一個模擬過程中注入一個錯誤 的實驗,另一個則是在每一個模擬過程中注入兩個錯誤的實驗(注意這兩個錯誤 的持續時間不會重疊。),用這兩個實驗來探討錯誤持續時間(fault duration)、錯 誤允許回復次數(number of times allowed for rollback recovery)以及不同的測試程 式對錯誤偵測涵蓋率(fault coverage)、隔離發生機率(reconfiguration-occurring probability)以及錯誤回復所造成的效能下降程度(recovery-induced performance overhead)等容錯參數造成的影響。其中注入兩個錯誤的實驗主要是在探討進入隔 離狀態的系統對錯誤的容忍度為何。最後從這些實驗的結果可以得到一個很重要 的結論,就是我們提出的容錯方法是適合智慧型系統中需要高可靠度的高效能處 理器。

(3)

Abstract

Intelligent systems, such as intelligent car driving systems or intelligent robots, require a stringent dependability while the systems are in operation. The recent experimental data show that the rate of radiation-induced soft errors increases rapidly especially in combinational logic while the chip fabrication enters the very deep submicron technology. Such influences raise the urgent need to incorporate the fault tolerance into the high-performance microprocessors and systems so as to achieve the dependability requirements. In this study, we develop a comprehensive fault-tolerant framework for high-performance processors, which consists of the fault detection, rollback error recovery and reconfiguration. Fault detection is based on the concept of instruction duplication to detect the errors. Rollback error recovery exploits the checkpointing scheme to overcome the transient faults and if the faults cannot be recovered during the recovery process, then the reconfiguration is activated to isolate the failed component. Since then, the system performs at degraded mode. An experimental VLIW architecture based on the proposed fault-robust methodology is developed and implemented in VHDL to analyze the impacts of our technique on hardware overhead and performance. The hardware overhead in this case study is about 29%. Two types of experiments, one for single fault injection, and the other for two fault’s injection in each simulation campaign, are conducted to characterize the effects of the fault duration, number of times allowed for rollback recovery and workload variations on the fault coverage and other interesting design metrics, like reconfiguration-occurring probability and recovery-induced performance overhead.

The two faults for the experiment of two fault’s injection in each simulation campaign will not overlap. The purpose of two fault’s injection campaigns is to investigate the

(4)

reconfiguration in order to isolate the failed component which cannot be recovered by the recovery process. A paramount finding observed from the experiments is that our fault-tolerant methodology is feasible for the high-performance microprocessors applicable to the intelligent systems.

(5)

致謝

在研究所生活裡,有著許多位學長、同學、朋友一路陪伴著我、支持我。讓 我在短短的兩年中,學習到了很多寶貴的經驗,也讓我得到了一個熱忱的心追求 知識。本篇論文能夠順利完成,特別感謝指導教授陳永源老師的指導,在課業與 研究上所遇到的困難,都能給予我最大的幫助。此外也感謝上帝讓我在最軟弱的 時候幫助我,讓我有安靜的心來完成這個學業。

求學期間,感謝實驗室的學長-呂昆龍、葉昭宗、林立文、賴世軒、陶尚宇 等人的指教,以及同學陳志偉、張坤鈞、吳耿偉在實驗上的討論與鼓勵,最後謹 將此篇論文獻給小 Mo、家人、師長、同學及朋友們,共同分享這得來不易的榮 耀。

石孟儒 謹致 中華民國九十六年七月於新竹風城

(6)

目 錄

中文摘要... i

Abstract ... ii

致謝... iv

目 錄...v

圖 表 目 錄 ... vii

表 格 目 錄 ... viii

第一章 簡介...1

第二章 容錯系統介紹 ...4

2-1. 錯誤的介紹 ...4

2-1-1. 錯誤分類 (Fault、Error and Failure)...4

2-1-2. 引起錯誤(Fault)的原因 ...5

2-1-3. 錯誤(Fault)發生的情形與種類 ...6

2-2. 容錯技術介紹 ...6

2-3. 硬體冗餘 (Hardware Redundancy)...7

第三章 超長指令集處理器介紹 ...9

第四章 超長指令集容錯處理器演算法 ...11

4-1. 容錯步驟 ... 11

4-1-1 錯誤偵錯 (fault detection) ...11

4-1-2 檢查點(checkpoint)系統狀態儲存...15

4-1-3 捲回錯誤回復(Rollback Error Recovery)狀態 ...15

4-1-4 架構重整 (Reconfiguration) ...16

4-1-5 安全性失敗 (Safe Failure)...16

4-2. 補強技術 ...16

4-3. 提升偵錯頻率的演算法 ...18

第五章 容錯處理器之硬體實踐 ...20

5-1. 指令格式介紹 ...20

(7)

5-2. 硬體實踐 ...22

5-3. 架構的優化與比較 ...28

第六章 錯誤注入實驗前置作業 ...32

6-1. 錯誤注入的地點選擇與錯誤發生機率的決定 ...32

6-2. 錯誤注入工具使用說明 ...33

6-3. 錯誤注入實驗流程 ...37

第七章 模擬結果與分析 ...38

7-1. 實驗參數定義 ...38

7-2. 實驗環境設定 ...39

7-3. 分析與比較結果 ...41

第八章 結論、貢獻與未來展望 ...47

參 考 文 獻...48

(8)

圖 表 目 錄

圖 1-1 VLIW-1S T容 錯 處 理 器 ...2

圖 2-1 錯誤的分類與關係 ...5

圖 2-2 引起錯誤(FAULT)的原因 ...5

圖 2-3 無效性錯誤(NON-EFFECTIVE FAULT)...6

圖 2-4 N 模組冗餘(N-MODULAR REDUNDANCY) ...8

圖 3-1 超長指令集處理器 ...9

圖 4-1 一道邏輯運算指令的偵錯方式 ...12

圖 4-2 (A)(B)(C)兩道邏輯運算指令在不同時間週期中輪流檢查的偵錯方式...13

圖 4-3 (A)(B)(C)一道指令在不同算術邏輯運算器被隔離的執行狀況 ...14

圖 4-4 (A)(B)(C)二道指令在不同算術邏輯運算器被隔離的執行狀況 ...14

圖 4-5 捲回錯誤回復示意圖 ...15

圖 4-6 補強機制狀況圖 ...17

圖 4-7 提升偵錯頻率演算法之有線狀態機 ...18

圖 5-1 VLIW-1S T超長指令集處理器架構...20

圖 5-2 超長指令集處理器的長指令格式 (LONG INSTRUCTION FORMAT) ...22

圖 5-3 容錯超長指令集硬體架構圖 ...23

圖 5-4 檔案暫存器主要輸出輸入 ...25

圖 5-5 容錯電路之比較器(CMP) ...26

圖 5-6 容錯電路之三模組冗餘(TMR)...26

圖 5-7 指標暫存器主要輸出輸入 ...27

圖 5-8 資料記憶體主要輸出輸入 ...28

圖 5-9 安全資料備份與錯誤回復細部架構圖 ...29

圖 6-1 算術邏輯運算器指令的部份 ...32

圖 6-2 算術邏輯運算器資料的部份 ...33

圖 6-3 產生錯誤注入檔案案個數示意圖 ...34

圖 6-4 錯誤注入目標與元件面積(GATE COUNT) ...35

圖 6-5 錯誤環境參數設定 ...35

圖 6-6 錯誤維持時間設定 ...36

圖 6-7 錯誤的 WEIBULL分佈 ...36

圖 6-8 驗證流程圖 ...37

圖 7-1 容錯系統錯誤處理流程圖 ...38

圖 7-2 實驗分析圖 Χ =1,2,3...40

圖 7-3 隔離狀態錯誤容易造成不安全性失敗示意圖 ...43

(9)

表 格 目 錄

表 5-1 R-TYPE指令格式 ...21

表 5-2 I-TYPE指令格式...21

表 5-3 J-TYPE指令格式 ...22

表 5-4 容錯處理器的面積與效能比較 ...30

表 5-5 系統效能下降 ...31

表 5-6 提升偵錯頻率演算法之錯誤偵測頻率 ...31

表 7-1 錯誤偵測涵蓋率(

C

edet) ...41

表 7-2 沒有偵測到錯誤且進入不安全性失敗狀態的機率(

P

f − unsdet) ...42

表 7-3 錯誤回復涵蓋率(

C

erec) ...42

表 7-4 錯誤被偵測到且進入不安全失敗狀態的機率(

P

tdet f uns) ...43

表 7-5 錯誤被偵測到且進入安全失敗狀態的機率(

P

tdet f s) ...44

表 7-6 系統從正常狀態進入隔離狀態的機率(

P

norrecon)與 ...45

表 7-7 三組實驗的效能下降程度(第一組

PD _ 1

、第二組

PD _ 2

、...46

(10)

第一章 簡介

隨著深次微米時代的來臨,晶片設計的領域中,中央處理器(CPU)不再單純 的追求效能,轉而發展多功能、高可靠度之設計。此外經由最近的一些實驗數據 顯示組合邏輯電路在深次微米製程中越來越容易受到輻射線的影響而引起暫時 性錯誤[1,2]。並且由於近年來需要高可靠度系統的興起,例如:智慧型行車系統、

智慧型機器人、醫療系統、飛行導航系統等等,這些需要高可靠度的系統一旦有 錯誤發生,就會造成非常嚴重的後果,為了這些安全性的考量使得可靠度的需求 也就日益增加。容錯理論恰好就是為了解決這樣的問題而存在,因此大家就開始 注意到了系統必須要加入容錯技術的重要性[3-7],藉由容錯技術的特性諸如:高 可靠性、高可用性、高安全性、高效能、可維修性、可測性來達到大家的需求。

本實驗室的第一版容錯處理器是參考德州儀器 C60[8]系列與 MIPS 指令集架 構,提出了 VLIW-1st處理器[9],並在其中加入容錯技術。一道長指令中最多可 包含三道算術邏輯運算指令與三道記憶體存取指令,超長指令集架構中包含了三 個算術邏輯運算器(ALU)、兩個比較器和兩個多數權投票器(majority voter),如圖 1-1。

VLIW-1st處理器中使用檢查點(checkpoint)與多模組冗餘(NMR)容錯技術,每 一道長指令皆經由超長指令集編譯器(compiler)所編排完成,使一道長指令中的 每個短指令皆可以同時執行,但是程式中會有危障(hazard)問題,可想而知並不 是每一道長指令中的短指令皆能同時排滿並且同時執行,因此在一道長指令中只 有包含一道算術邏輯運算指令的情形發生時,對此容錯系統而言就是一個檢查 點。系統立即將運算指令複製並分派給三個算術邏輯運算器執行,最後交由三模 組冗餘(TMR)來判斷算術邏輯運算器是否發生錯誤,若有錯誤被三模組冗餘判斷 出來,則系統將會讀出先前安全狀態(safe-state)所保留的檢查點狀態再繼續執行 程式,若沒有發生錯誤則將目前的狀態儲存,被儲存的狀態稱為安全狀態 (safe-state)。

(11)

Write Back Control Data

Memory Register

File Instruction

Memory

control

IF ID EXE MEM WB

voter

Comparator

voter

Comparator ALU

unit L/S unit

ALU

unit

ALU

unit L/S unit L/S unit

L/S unit

ALU

unit L/S unit L/S unit

ALU

unit

ALU

unit

ALU

unit DISPATCH

1.next sequential address 2.address of

checkpoint 3.jump address 4.branch address

L/S unit

ALU

unit L/S unit L/S unit

ALU

unit

ALU

unit

ALU

unit path A

path B

path C

Dispatch Unit Next Address

Selector

圖 1-1 VLIW-1s t 容 錯 處 理 器

在此我們將 VLIW-1st 所擁有的優缺點歸納如下,優點為:充份利用現有資 源。而缺點為:1.需要大量的記憶體空間來存放安全狀態(safe-state)造成面積負 擔過高; 2.需要大量的時間來回復(recovery)系統正確的狀態; 3.在實驗方面由 於是我們的第一個版本,在錯誤注入方面的技術還不是很成熟,因此採用人工的 方法來注入錯誤,並且將錯誤注入在檢查點一定可以克服的時間點,透過這種實 驗方法所得到的結果,對於現實生活中實際會發生的狀況不太客觀; 4.實驗探 討的測試程式有點過於單調,不太能夠代表系統會遇到的所有狀況; 5.只有提 供一道指令的錯誤涵蓋率以及系統隔離的機率,而對其它的容錯參數沒有加以討 論。

透 過 上 面 的 描 述,可 以 得 知 第 一 版 的 容 錯 技 術 可 以 改 進 的 地 方 相 當 多。因 此 本 篇 論 文 中 將 會 以 改 進 第 一 版 容 錯 技 術 為 目 標,其 中 包 括

(12)

利 用 資 源 共 享 的 觀 念 來 設 計 硬 體 , 降 低 硬 體 負 荷 以 及 成 本 ; 3.使 用 新 的 錯 誤 注 入 實 驗 方 法,將 錯 誤 大 量 且 平 均 的 注 入 到 程 式 中 不 同 的 執 行 時 間 點 , 以 提 高 實 驗 的 可 信 度 以 及 實 驗 模 擬 的 真 實 性 ; 4.此 外 還 會 利 用 十 分 多 變 的 環 境 參 數 來 詳 細 探 討 錯 誤 與 參 數 之 間 的 關 係,其 參 數 包 括 了: 錯 誤 的 回 復 次 數、 測 試 檔 案、 錯 誤 的 持 續 時 間 以 及 錯 誤 的 個 數 ; 5.利 用 各 種 不 同 的 容 錯 參 數 來 做 為 第 四 點 的 探 討 依 據 , 例 如 錯誤的偵測涵蓋率(Cedet)、沒有偵測到錯誤且進入不安全性失敗狀態的機率

(

P

f − unsdet)、回復涵蓋率(

C

erec)、偵測到錯誤且進入不安全失敗狀態的機率

(

P

tdet f uns)、偵測到錯誤且進入安全失敗狀態的機率(

P

tdet f s)、系統從 正常狀態進入隔離狀態的機率(

P

norrecon)、錯誤回復時造成的效能下降程度 (Performance Degradation:

PD

)。

在接下來的章節中,會依序的介紹第二章 容錯系統簡介、第三章 超長指令 集處理器介紹、第四章 超長指令集容錯處理器演算法、第五章 容錯處理器之硬 體實踐、第六章 錯誤注入實驗前置作業、第七章 模擬結果與第八章 結論、貢 獻與未來展望。

(13)

第二章 容錯系統介紹

由於現在科技的進步,在許多的工作環境上都使用了電腦做大量的計算,例 如:智慧型系統、醫療配備、國家防衛系統、航空導航系統、太空計劃或自動提 款機等等。以上這些類型的系統,在實際的應用上需要相當的高可靠度、精準度 以及可用度。因此不能使用現今一般規格的複合式系統晶片,一旦這些晶片的訊 號被干擾,將會有許多重大意外傷亡發生。容錯系統就是為了解決這樣的問題所 存在。在系統晶片中加入容錯技術後,就可以提升系統的可靠度、精準度以及可 用度,大大的降低危險發生。本章節將先對錯誤做一些基本的介紹,再介紹容錯 的基本概念。

2-1. 錯誤的介紹

了解上述介紹容錯系統的重要性,本節將介紹錯誤的分類、引起錯誤的原因 以及錯誤的發生情形與種類。

2-1-1. 錯誤分類 (Fault、Error and Failure)

整個容錯系統中對於錯誤的定義,在不同情況下會有不同的意義。分成圖 2-1 這三種類別:

1. 元件錯誤 (Fault):此元件錯誤(Fault)是最基本的一種錯誤型態,指物理 上的缺點,可以發生在一些硬體或軟體的元件上。硬體的錯誤包括元件 的短路或斷路等,軟體方面則包括無窮迴圈等。

2. 資料錯誤 (Error):此資料錯誤(Error)是由元件出錯造成的結果,在這 裡指的是系統裡元件與元件之間傳輸的資料發生錯誤。並不是每一個錯 誤(Fault)都會造成錯誤(Error),例如當電路發生短路則該線路呈現永久 都是高電位的狀態,若此時元件運算結果為高電位,此時資料正確,則 不會產生資料錯誤(Error)。

失敗 (Failure):失敗表示系統執行的結果與預期不同,是由錯誤(Error)

(14)

(Failure)。

一般來說失敗(Failure)是由錯誤(Error)造成的,而錯誤(Error)又是由錯誤 (Fault)產生的。由此可以看出錯誤(Fault)是造成錯誤(Error)和失敗(Failure)的主 因,因此下一章節介紹引起錯誤(Fault)的原因。

元件損壞

錯誤 (fault) 錯誤 (error) 失敗 (failure)

資料錯誤 系統失敗

圖 2-1 錯誤的分類與關係

2-1-2. 引起錯誤(Fault)的原因

圖 2-2 得知造成於損壞的原因為下列四點

1. 規格過失 (Specification Mistake):::包含了不正確的演算法、架構、硬: 體以及軟體等會引起硬體或軟體錯誤的設計。

2. 實作過失 (Implementation Mistake):::此錯誤會發生在硬體或軟體轉換: 成實體硬體電路或實際軟體的過程中,造成實作的結果和原本定的架 構不同。

3. 元件缺陷 (Component Defects)::::電路設計的缺點以及下線製造時所發 生的錯誤造成元件錯誤。

4. 外部干擾 (External Disturbance):::系統外部的影響引起硬體和軟體的錯: 誤。例如:電磁波等外部環境影響。

規格過失

(Specification Mistake)

實作過失

(Implementation Mistake)

元件缺陷

(Component Defect)

外部干擾

(External Disturbance)

硬體錯誤

(Hardware Faults)

軟體錯誤

(Software Faults)

錯誤

(Errors)

系統失敗

(System Failure)

圖 2-2 引起錯誤(Fault)的原因

(15)

2-1-3. 錯誤(Fault)發生的情形與種類

錯誤依照其發生的狀況分為:起作用的錯誤(Active Fault)與不起作用的錯誤 (Inactive Fault)。例如訊號線原為 1 而錯誤發生後變為 0,稱之為起作用的損壞,

反之在同樣的狀況下,錯誤發生後變為 1,稱之為不起作用的錯誤。

在起作用的錯誤當中,又以對系統的影響性分為有效性錯誤(Effective Fault) 與無效性錯誤(Non- Effective Fault)。以圖 2-3 的 OR 閘來說,當一端輸入訊號 a 為 1,而另一端訊號線 b 因為錯誤由 0 變為 1 (此為起作用的錯誤),但輸出 o 依 然不變,此種情形的錯誤即為無效性錯誤,反之若輸出改變了即為起作用的錯誤。

圖 2-3 無效性錯誤(Non- Effective Fault)

錯誤(Fault)又因為存在時間(Fault Duration)分成三種:分成永久性錯誤 (Permanent Fault) , 暫 時 性 錯 誤 (Transient Fault) 以 及 週 期 性 錯 誤 (Intermittent Fault)。永久性錯誤表示此錯誤已經無法消失了,如電路斷路。暫時性錯誤指的 是錯誤從發生到結束的時間很短,例如電路受到附近的電流影響,只影響一瞬間 又馬上恢復。週期性錯誤此錯誤是以頻率的方式出現及消失,一直不斷的循環,

就像一個電路中有可能一條線沒有接好,在週期循環時,錯誤有可能出現或消 失,呈現不穩定的狀態。

2-2. 容錯技術介紹

一個完整的容錯系統要包含錯誤偵測(Detect)、錯誤封鎖(Containment)、錯 誤定位(Locate)、錯誤回復(Recovery)以及錯誤遮蓋(Masking)這幾項因素。一般為 了讓系統擁有這些因素,就必須加入冗餘(Redundancy)這個觀念。冗餘可以簡單 的分成下列四種形式:

(16)

1. 硬體冗餘 (Hardware Redundancy):在系統中加入一些原先不需要的硬體 達到容錯功能,而這部分的硬體並不是原本就在我們的設計當中。一般 來說會使得製造成本增加。

2. 軟體冗餘 (Software Redundancy):在原來執行程式的後面增加額外的軟 體程式或功能,用來偵測或容忍錯誤。

3. 資料冗餘 (Information Redundancy):主要是在原來的程式中加寬資料達 到容錯的目的,最常見的有偵錯碼(ECC:Error Correcting Code)與同位元 檢查(Parity Check),這兩種方法當資料發生錯誤的時候可以發現並對資料 加以修正,在記憶體的應用上十分普遍。

4. 時間冗餘 (Time Redundancy):為了容錯而增加程式執行的時間。利用多 一點的時間檢查系統是否有錯誤發生在我們的電腦,而達到錯誤偵測或 錯誤容忍。

在本論文中主要是使用硬體冗餘(Hardware Redundancy)來達到容錯效果,因 此在下一節中將會對硬體冗餘做一個詳細的說明。

2-3. 硬體冗餘 (Hardware Redundancy)

硬體冗餘原先最大的限制為增加了額外的硬體後對成本的負擔,但是由於近 年來半導體產業的進步,元件越做越小、功能越來越多以及大量的製造大大降低 了額外增加的硬體成本,因此目前容錯技術大多採用硬體冗餘的方式。

硬體冗餘(Hardware Redundancy)共有三種型態:

1. 被動式硬體冗餘 (Passive Hardware Redundancy):主要概念是利用投票 (Voting)系統來達到錯誤遮蓋(Fault Masking)。優點是不需要偵測以及回 復,並且可以容忍錯誤發生。

2. 主動式硬體冗餘 (Active Hardware Redundancy):主動式硬體冗餘主要 是利用錯誤偵測(Detect)、錯誤回復(Recovery)以及錯誤隔離(Reconfigure) 來達到容錯目的。

3. 組合式硬體冗餘 (Hybrid Hardware Redundancy):組合式硬體冗餘即為 上述的被動式硬體冗餘以及主動式硬體冗餘混合使用之冗餘技術。

在本篇論文中,使用組合式硬體冗餘(Hybrid Hardware Redundancy)技術。利

(17)

用投票機制(Voting Machine)來遮蓋(Masking)系統的錯誤,並且主動偵測錯誤,

一旦錯誤發生就回復到正常的狀態,若無法回復則隔離。我們使用的投票機制電 路有三模組冗餘(TMR:Triple Module Redundancy)以及比較器(CMP:Compare) 兩種,這種電路皆歸類為 N 模組冗餘(N-Modular Redundancy)。圖 2-4 為 N 模組 冗餘的示意圖。

圖 2-4 N 模組冗餘(N-Modular Redundancy)

若 N 為奇數,以三模組冗餘(TMR,N=3)為例,最多可以容忍一個錯誤的出 現。假設三模組冗餘的一個模組的訊號與另外兩個的不同,但另外兩個訊號相 同,此時多數權投票器就會選擇多數的答案,並且可以鎖定出錯地點。依此類推 當 N 為奇數且數量越大時,可容忍的錯誤就越多。而 N 若為偶數時,以比較器 (CMP)為例,錯誤一旦發生,比較器(CMP)頂多知道錯誤發生,而不能容忍及鎖 定錯誤。由上述這些例子可以得知 N 的數字越大容錯能力越好,並且 N 盡量選 擇奇數,如此一來才可以實行多數輸出的協定。

簡介完容錯的基本概念之後,我們將介紹本論文以何種處理器架構為基礎加 入容錯技術。

(18)

第三章 超長指令集處理器介紹

現今半導體的製造技術日益成熟,以處理器的角度來看多以提高系統效能和 降低晶片面積為主。其中提高系統效能方面包括設計高頻率的處理器並且提高其 總處理能力(throughput)。但受限於系統工作頻率的限制,可以提高處理能力的範 圍有限。因而衍生出了超長指令集(VLIW)與超純量(Superscalar)技術提升系統的 工作頻率。

超長指令集(VLIW)技術的總處理能力(throughput)會優於其他同時脈的處理 器,是因為超長指令集(VLIW)技術加入了指令層級平行化(ILP:Instruction Level Parallel)的概念,可以在相同的時間週期中處理多種不同的指令,因此就效能方 面來說,超長指令集(VLIW)是一個相當不錯的架構,如圖 3-1。

Instruction memory

Fetch

&

Dispatch

Register File

Function Unit Function

Unit Function

Unit Function

Unit Function

Unit

Memory

Write Back Control MEM

EXE ID

IF

圖 3-1 超長指令集處理器

超長指令集(VLIW)與超純量(Superscalar)處理器[10][11]的不同在於,超長指 令集(VLIW)將危障(Hazard)問題以及指令平行度都交由編譯器來處理。在程式執 行前,會先利用超長指令集(VLIW)的編譯器,把原來的程式轉換成超長指令集 (VLIW)格式,透過編譯器可將資料獨立的短指令合成一道長指令。在每一道長 指令中的短指令皆可以同時執行,並且排除了危障(Hazard)問題。而類似的超純 量處理器(Superscalar Processor)並不是整個程式都能同時執行,因為超純量處理 器把指令平行度的部份交由硬體來處理,在硬體資源的限制之下,檢視指令平行

(19)

無形之中反而造成了硬體資源的浪費。但對超長指令集處理器(VLIW Processor) 來說,由於編譯器能將指令編排出最好的平行處理模式,使得超長指令集處理器 有著極高的處理能力。由此可以看出超長指令集處理器的硬體複雜度比同類型的 超純處理器低,並且處理效能又可以比較高,真可謂一舉數得。

超長指令集處理器(VLIW Processor)的優點在於可以大幅降低硬體需求,尤 其 當 指 令 的 平 行 度 越 來 越 高 時 , 此 項 優 點 相 較 於 超 純 處 理 器 (Superscalar Processor)更加明顯。可想而知超長指令集處理器需要一個功能強大的編譯器,

如果編譯器本身的功能不足,硬體就無法達到指令層級平行化(ILP:Instruction Level Parallel)的優勢[12]。整體而言超長指令集(VLIW)技術屬於新一代處理器的 架構,改進了超純量(Superscalar)技術的缺點,更加入了超純量技術所沒有的優 點,最重要的是大幅提升執行效能、降低硬體設計的複雜度以及降低生產成本。

目前生產處理器的各家公司也都有生產此類處理器的計畫,例如英代爾(Intel)與 惠普(HP)共同合作的 IA-64[11][13];德州儀器的 C60 晶片皆為超長指令集(VLIW) 類型的處理器,也說明了世界各大廠商對此架構深感信心。

接下來我們將以超長指令集處理器為架構,使用 VHDL 硬體描述語言設計 出我們的硬體。

(20)

第四章 超長指令集容錯處理器演算法

在這個章節將介紹我們的容錯演算法,先介紹容錯的步驟,再介紹對其缺失 補強的機制,最後是整個演算法的流程。

4-1. 容錯步驟

我們透過 2-3 節的硬體冗餘(Hardware Redundancy)以及檢查點(Checkpoint) 容錯技術使系統達到容錯處理的功能。系統在容錯處理方面共分成三個步驟,首 先進行錯誤偵測(Fault Detection),一旦錯誤被偵測到就馬上執行捲回錯誤回復 (rollback error recovery),用來克服暫時性錯誤(Transient Fault)。假使錯誤依然無 法 克 服 或 該 錯 誤 為 永 久 性 錯 誤 (Permanent Fault) , 則 需 要 進 行 架 構 重 整 (reconfiguration),先將錯誤的電路單元從系統架構中隔離出來(也表示接下來指 令的運算都不會經過被隔離的元件),再執行捲回錯誤恢復步驟,將系統回復到 先前正確的狀態繼續執行。接下來將會分別介紹系統如何偵測錯誤、捲回錯誤回 復以及架構重整。

4-1-1 錯誤偵錯 (fault detection)

在超長指令集處理器的平行架構中(圖 3-1),並不是所有的算術邏輯運算單 元在每一個執行時間週期都有指令可執行。利用這些沒有用到的資源(稱之為冗 餘 Redundancy)來使系統具有偵錯的能力。在設計上將朝向不影響指令執行的效 能及不增加記憶體的需求之下來達到偵錯的目的。當某一類型運算單元在目前的 執 行 時 間 週 期 中 只 有 執 行 一 或 兩 個 指 令 時 , 先 利 用 指 令 分 派 與 分 配 電 路 (Instruction Dispatch & Partition)分派與分配複製好的指令,接著指令才進入到算 術邏輯運算器執行。

先前所實踐的超長指令集容錯處理器,主要是利用 2-3 節中介紹的多模組冗 餘偵錯元件來偵測錯誤,但其偵察方式方適用於一個執行時間週期中,只有一道 算術邏輯運算指令的狀況,而一個執行時間週期中有兩道或三道算術邏輯運算指 令就無法檢查。如此一來會造成系統的檢查頻率過低,容易使系統因為錯誤而失 敗。因此為了解決這個問題,我們透過指令分派與分配電路配合三模組冗餘(TMR)

(21)

與比較器(CMP)的多種組合,提出了一個新的錯誤偵測方法。透過這個新的錯誤 偵測方法可以大大改善錯誤偵測頻率過低的缺點。

我 們 將 系 統 分 成 兩 種 狀 態 : 1. 正 常 狀 態 (Normal Mode) ; 2. 隔 離 狀 態 (Reconfiguration Mode)。正常狀態就是系統處於健全的狀態下沒有元件被隔離,

可以充分的利用各種資源來偵測錯誤。在此狀態下,一道長指令的算術邏輯運算 指令最多會有三道,因此我們依照算術邏輯指令的個數,分成三種情形來討論:

一道指令: 一道算術邏輯指令的偵測錯誤方式利用三模組冗餘(TMR)如圖 4-1,先將一道指令透過指令分派與分配電路將指令複製成三份,

交給三個算術邏輯運算器運算,運算完之後再交由三模組冗餘檢 查。這種情形稱為偵錯點,倘若此時檢查結果正確則視為檢查點,

若錯誤被此偵錯元件檢查到,則會記錄出錯地點。

ALU_A

ALU_B

ALU_C

TMR Instruction

ALU_A

ALU_B

ALU_C

TMR Instruction

圖 4-1 一道邏輯運算指令的偵錯方式

二道指令: 二道算術邏輯指令的偵測錯誤方式受限於系統資源,因此只能使用 比較器(CMP)來檢查錯誤如圖 4-2(a),先將一道指令透過指令分派 與分配電路將指令複製成兩份,交給兩個算術邏輯運算器運算,運 算完之後再交由比較器檢查。但是這種方法還是會漏掉檢查另一個 算術邏輯運算器,為了解決這個問題我們讓這三個算術邏輯運算器 在不同的指令執行週期中輪流檢查,第一次檢查如圖 4-2(a),第二 次檢查如圖 4-2(b),第三次檢查如圖 4-2(c),藉以提升偵錯頻率,

而這種情形稱為偵錯點。注意!此時系統無法明確的知道哪一個算 術邏輯運算器出錯。

(22)

ALU_A

ALU_B

ALU_C

CMP Instruction 1

Instruction 2

ALU_A

ALU_B

ALU_C

CMP Instruction 1

Instruction 2

(a) (b)

ALU_A

ALU_C

ALU_B

CMP Instruction 1

Instruction 2

(c)

圖 4-2 (a)(b)(c)兩道邏輯運算指令在不同時間週期中輪流檢查的偵錯方式

三道指令: 由於容錯處理器只有三個算術邏輯運算器,三道算術邏輯指令同時 要運算的話會無法偵測錯誤,因此我們對於此狀況做特殊的處理,

方法是將此情形分成兩個時間週期來偵測錯誤。第一個時間週期執 行一道算術邏輯指令的檢查如圖 4-1,第二個時間週期則執行二道 算術邏輯指令的檢查,如圖 4-2。

隔離狀態即為系統處於一個算術邏輯運算器被隔離的狀態,此時的系統只能 用比較器來偵測錯誤。在此狀態的指令個數與正常狀態一樣,一道長指令最多擁 有三個算術邏輯指令,在此和正常狀態一樣,依照算術邏輯運算指令的個數分成 三種情形來討論:

一道指令: 這種狀況由於一個算術邏輯運算器被隔離無法像正常狀態一樣,將 一道指令複製三份運算完後交給三模組冗餘檢查錯誤,因此這裡的 偵測錯誤模式只能使用比較器(CMP)來偵測錯誤如圖 4-3,先將一 道指令透過指令分派與分配電路將指令複製成兩份,交給剩餘的算 術邏輯運算器運算,運算完之後再交由比較器檢查。若算術邏輯運 算器 A 被隔離就用剩下兩個運算器檢查,其它的狀況依此類推。這

(23)

查正確則視為檢查點,檢查到錯誤則無法像 TMR 明確的記錄出錯 地點。

ALU_A

ALU_B

ALU_C

CMP Instruction

ALU_A

ALU_C

ALU_B

CMP Instruction

(a) (b)

ALU_A

ALU_B

ALU_C

CMP Instruction

(c)

圖 4-3 (a) (b) (c)一道指令在不同算術邏輯運算器被隔離的執行狀況 二道指令: 由於系統以處於一個算術邏輯運算器被隔離的狀況,若系統將這種

狀況拆成兩個時間週期來檢查,則會造成系統效能下降太多,因此 當系統遇到這種狀況將不會檢查錯誤。圖 4-4 為不同的算術邏輯運 算器被隔離後遇到兩道指令的執行狀況。

三道指令: 這種狀況的處理方式和在正常狀態類似,一樣要拆成兩個時間週期 來執行,第一個時間週期執行一道算術邏輯指令的檢查如圖 4-3,

第二個時間週期則執行二道算術邏輯指令的檢查,如圖 4-4。不過 與正常狀態相比偵測頻率降低很多。

ALU_A

ALU_B

ALU_C Instruction 1

ALU_A

ALU_C ALU_B Instruction 1

(a) (b)

ALU_A

ALU_B

ALU_C Instruction 1

(c)

Instruction 2 Instruction 2

Instruction 2

(24)

4-1-2 檢查點(checkpoint)系統狀態儲存

為了避免錯誤發生而影響到系統正常運作,甚至影響到後方指令執行的正確 性,因此必須在適當的時候將系統的狀態儲存起來,此時的狀態我們稱為安全狀 態(safe state)。而這個時機最好是在系統執行指令並且透過偵錯元件測試無誤時 (這裡是指 4-1-1 節中的檢查點),把該檢查點的資料寫回檔案暫存器並且備份檢 查點時的程式計數器(Program Counter)、指標暫存器(Flag Register)以及暫存器檔 案(Register File)。

4-1-3 捲回錯誤回復(Rollback Error Recovery)狀態

捲回錯誤回復指的是,錯誤一旦被檢查到,會花一些時間將系統回復到上一 個檢查點的狀態。錯誤若發生在 checkpoint 2 的下一道長指令(圖 4-5),系統必須 進行錯誤回復的動作,但此時 checkpoint 2 的資料還在第四級管線中,系統的安 全狀態還未被更新(參考 4-1-2 節),安全狀態的值仍是 checkpoint 1 所存的安全 值,若此時立即將系統回復到 checkpoint 2 而檔案暫存器中所存回的值卻是 checkpoint 1 的安全值,如此再執行下去會讓系統造成不安全性的失敗。且 checkpoint 2 是檢查點,因此不需要執行捲回錯誤回復,而只要花一個時間週期 等 checkpoint 2 正確的資料寫入暫存器檔案及清空指標暫存器即可。若錯誤不是 發生在檢查點的下一道長指令則直接回復成上一個檢查點。

checkpoit 1

checkpoint 2

error occur 第一道長指令

roll back 第二道長指令

第三道長指令

圖 4-5 捲回錯誤回復示意圖

在 2-1-3 節中提到錯誤因為存在的時間分成暫時性錯誤(Transient Fault)與永 久性錯誤(Permanent Fault)兩種,在這裡我們利用捲回錯誤回復次數,來分辨若

(25)

使計數器的紀錄歸零。若錯誤持續到規定的回復次數範圍之外則視為永久性錯 誤。

4-1-4 架構重整 (Reconfiguration)

在 4-1-3 節當中錯誤一旦被視為永久性錯誤時,系統會自動執行架構重整,

將錯誤的元件隔離,使其不能再被系統使用。對於超長指令集處理器而言,硬體 設計上是不該出現對指令做排序或調動的任何改變,因為所有的指令在經過編譯 器編譯的時後都已經將資料相依的問題排除。但在這裡的指令排序卻是針對於有 一個執行單元被判定成永久性錯誤的情形,最多可以執行的指令個數少了一個,

此時極可能會有資源衝突(Resource Conflict)的現象發生,因此必須要將三道算術 邏輯指令分成兩個執行時間週期來執行。透過主控制器(Main Control)、位址選擇 器(Address Selector)以及指令分派與分配(Instruction Dispatch & Partition)等元件 解決指令重新排序的問題。

解決的方法是當指令重新排序發生時,主控制器發送執行同一個指令的選擇 訊號給位址選擇器,再由主控制器發送控制訊號讓指令分派與分配單元選擇該發 出哪一組算術邏輯運算指令(如 4-1-1 節的隔離狀態)。此解決方法的優點為 1.不 需更改編譯器,2.硬體複雜度低,容易設計; 其缺點為程式執行效能會稍為降 低,但這是容錯系統為了提高可靠度所必須付出的代價。

4-1-5 安全性失敗 (Safe Failure)

當系統已經進入了架構重整狀態以後,此時發生錯誤,系統將會執行 4-1-3 節的捲回錯誤回復狀態,倘若錯誤持續時間,依然高過所設定的回復次數範圍,

此時錯誤對系統已經造成了重大的傷害,因此系統將不再繼續運作進入安全性失 敗的狀況。

4-2. 補強技術

由於資源有限在 4-1-1 節當中提到,當系統在正常狀況下遇到兩道算術邏輯 運算指令時,只有兩個算術邏輯運算器能被檢查,雖然加入了邏輯運算器輪流檢

(26)

4-6。我們先介紹圖中的狀況,此圖包含了三道長指令,第一與第三道長指令是 檢查點(checkpoint)、有效性錯誤(Effective Fault)只有在執行第二道長指令時被激 發在算術邏輯運算器 A 上。當第二道長指令的有效性錯誤經由比較器(CMP)檢查 到,進行錯誤回復(Rollback),回復到上一個檢查點,而指令繼續執行到第二道 長指令,若此時輪到邏輯運算器 B 和 C 檢查時,有效性錯誤將會透過沒有檢查 的算術邏輯運算器 A 感染資料。

SI1 SI1

SI2 SI1 SI2 SI1

SI : Short Instruction noneffective

effective on ALU_A

detect error

rollback

escape detecting error error

noneffective

SI1 SI1 第一道長指令

第二道長指令 第三道長指令

圖 4-6 補強機制狀況圖

為了改善這樣的問題,當錯誤在系統檢查兩道指令時被檢查到,此時我們會 鎖定發生錯誤的那組算術邏輯運算器,取消輪流執行算術邏輯運算器的技術。以 圖 4-6 為例,在錯誤回復過程中,若比較器發現任何不一致的情況發生,系統會 記錄此時所被執行的算術邏輯運算器是哪一組,接下來偵測錯誤就透過此組邏輯 運算器重複執行。在錯誤回復的過程後錯誤分成兩種狀態:1.在檢查點激發且被 檢查到;2.只有在兩個檢查點之間的指令會被激發檢查到,而在檢查點時沒有激 發且沒有被檢查到。上述第一點可以藉由三模組冗餘(TMR)鎖定出錯地點,若錯 誤在可允許的回復次數內克服成功才繼續輪流檢查,失敗則隔離被鎖定的元件,

反之第二點在檢查點時無法透過三模組冗餘鎖定出錯地點,和第一點一樣在可允 許的回復次數內克服成功繼續輪流檢查,失敗則進入安全性失敗的狀態。

(27)

4-3. 提升偵錯頻率的演算法

S0 S2_1 S1

S3 start

S2_2

圖 4-7 提升偵錯頻率演算法之有線狀態機

4-1 與 4-2 節為容錯處理器的設計概念以及補強技術,接下來將描述整個容 錯系統面對錯誤的整個流程如圖 4-7,其中 S0:系統為健全狀態,所有元件都可 以正常運作; S1:系統為隔離重整狀態,有一個算術邏輯運算器被隔離無法使 用; S2_1:錯誤被偵測後系統在隔離前的回復狀態; S2_2:錯誤被偵測後系統 在隔離後的回復狀態; S3:系統的元件已無法正常運作的狀態。此狀態圖表示 系統一開始的狀態為健全的狀態 S0,此時遇到錯誤會進入回復狀態 S2_1,錯誤 在 S2_1 克服成功系統會回到 S0,若克服失敗則會進入隔離狀態 S1,系統在 S1 時若又遇到錯誤得會進入回復狀態 S2_2,錯誤在 S2_2 克服成功系統會回到 S1,

若克服失敗則會進入安全性失敗狀態 S3。注意系統在克服錯誤的過程中都有機 會進入安全性失敗狀態 S3,此外系統一旦進入了隔離狀態 S1 就無法回復到健全 的狀態 S0。接下來我們將系統會遇到的狀況分為三種:

狀況一:一道長指令中只有一道算術邏輯短指令,在系統為健全狀態(S0)中,這 道算術邏輯運算指令將會複製成三份交由三個算術邏輯運算器(ALU) 運算如 4-1-1 節中正常狀態所述,運算完透過三模組冗餘(TMR)偵測錯 誤。若此時檢查結果正確則稱之為檢查點(checkpoint)並且進行 4-1-2 節 的系統狀態儲存。錯誤一旦在這個狀態被檢查到,系統將進入隔離前的

(28)

Recovery)來克服暫時性錯誤(Transient Fault)。若此錯誤屬於持續時間較 短的暫時性錯誤,則該錯誤將會在系統經過幾次的錯誤回復後消失,接 下來系統將能正確的運行。若錯誤經過幾次的錯誤回復後還一直存在,

這個錯誤極有可能為永久性錯誤(Permanent Fault),因此系統將會把鎖 定的出錯元件隔離,進入隔離重整狀態(S1),系統一旦進入了此狀態就 只能透過比較器(CMP)來檢查錯誤如 4-1-1 節中隔離狀態所述,檢查結 果正確視為檢查點,不正確則會進入隔離後的回復狀態(S2_2),由於比 較器無法鎖定出錯元件,若錯誤經過幾次的錯誤回復後還一直存在,系 統將會進入無法正常運作的狀態(S3)。

狀況二:一道長指令中有二道算術邏輯短指令,基於受限的可用元件數目,兩道 指令無法同時被檢查。在系統為健全狀態(S0)中,其偵錯方式如 4-1-1 節中正常狀態所述將一道指令交由比較器(CMP)檢查,透過輪流檢查來 提升偵錯頻率,並且加上 4-2 節的補強技術來增加系統的可靠度。然而 這樣的檢查方式還是無法成為檢查點(checkpoint),因為在同一個執行時 間週期中並不是每一個算術邏輯比較器都被檢查到,檢查結果正確則系 統繼續運行,若檢查到錯誤則進入隔離前的回復狀態(S2_1)並進行 4-1-1 節的動作。若錯誤將在系統經過幾次的錯誤回復後消失,則系統繼續進 行運算。若錯誤經過幾次的錯誤回復後還一直存在,則利用 4-2 節所述 的方法來決定系統要進入隔離重整狀態(S1)還是無法正常運作的狀態 (S3)。若系統為隔離重整狀態(S1),此時的系統由於只剩下兩個算術邏 輯運算器,因此無法檢查錯誤。

狀況三:一道長指令中有三道算術邏輯短指令,由於三道指令在原來的演算法中 無法被檢查,為了解決此問題我們將這三道指令分成兩個執行時間週期 來執行,第一個時間週期執行一道指令如狀況一,第二個時間週期執行 剩下的指令如狀況二。如此一來明顯的提升了錯誤偵測頻率,但會造成 執行效能的下降。

由上述的狀況一可以得知錯誤回復次數太多會造成系統效能下降,太少又使 得系統可用資源容易被隔離而變少,因此決定錯誤的回復次數是相當重要的,我 們將在後面的實驗部分對此深入探討。透過本章節知道了改進過後的架構之後,

(29)

第五章 容錯處理器之硬體實踐

接下來將介紹本篇論文在硬體方面的實踐部份,我們將第四章所提到的演算 法以及補強技術以[9]的容錯架構(圖 5-1)為基礎加以實踐。在實踐之前我們會先 介紹指令格式,依照此指令格式來規劃硬體元件,接著是硬體的實踐最後是硬體 架構的優化並且會與第一版容錯系統比較。

Write Back Control Data

Memory Register

File Instruction

Memory

control

IF ID EXE MEM WB

voter

Comparator

voter

Comparator ALU

unit L/S unit

ALU

unit

ALU

unit L/S unit L/S unit

L/S unit

ALU

unit L/S unit L/S unit

ALU

unit

ALU

unit

ALU

unit DISPATCH

1.next sequential address 2.address of

checkpoint 3.jump address 4.branch address

L/S unit

ALU

unit L/S unit L/S unit

ALU

unit

ALU

unit

ALU

unit path A

path B

path C

Dispatch Unit Next Address

Selector

圖 5- 1 VLIW-1s t 超長指令集處理器架構

5-1. 指令格式介紹

本論文採用 MIPS-R2000 的指令集格式設計為超長指令集處理器,超長指令 集的指令為超長指令,是結合 MIPS-R2000 的指令集所得到。我們從 MIPS-R2000 的指令集中萃取出 25 道基本指令稱之為短指令共分為下列三種不同的形式:

(30)

R-類型 (R-type)

OP Rs Rt Rd Shamt Func 6 5 5 5 5 6

Shift right logical

表 5-1 R-type 指令格式

運算碼 (Opcode 6bits):短指令的 31 位元到 26 位元。

Rs:短指令的 25 位元到 21 位元,第一運算元。

Rt:短指令的 20 位元到 16 位元,第二運算元。

Rd:短指令的 15 位元到 11 位元,運算結果目的位置。

Shamt:短指令的 10 位元到 6 位元,移位數目是多少。

Func:短指令的 5 位元到 0 位元,告知處理器下一個要作何動作。

本論文所用到的 R-類型指令:sll、srl、jalr、multl、multh、add、sub、

and、or、xor 與 slt。

I-類型 (I-type)

OP Rs Rt Immediate 6 5 5 16

Addition immediate 表 5-2 I-type 指令格式

運算碼 (Opcode 6bits):短指令的 31 位元到 26 位元。

Rs:短指令的 25 位元到 21 位元,第一運算元。

Rt:短指令的 20 位元到 16 位元,第二運算元。

Immediate:短指令的 15 位元到 0 位元,運算結果目的位置。

本論文所用到的 I-類型指令:bne、bgtz、addi、slti、andi、ori、xori、

lw、sw 與 sb。

(31)

J-類型 (J-type) OP Target 6 26

Jump

表 5-3 J-type 指令格式

運算碼 (Opcode 6bits):短指令的 31 位元到 26 位元。

目的位置 (Target Address):短指令的 25 位元到 0 位元。

本論文所用到的 J-類型指令:j、jal、jr、jalr。

另外超長指令如圖 5-2 的部份,本論文所設定的超長指令集格式為 192 位 元,即包含了六道短指令。本論文利用 I1、I2、I3、I4、I5 與 I6 依序表示六個短 指令,I1~I6 皆為 32 位元,其中 I1、I2 與 I3 只能為算術邏輯單元(ALU)指令,I4、

I5 與 I6 只能為記憶體存取(Memory Access)指令,另外跳躍指令只能放在 I6。透 過第三章所述的編譯器來編輯超長指令,使得一個執行時間週期中最多會有六道 指令同時運算,其餘沒有運算的部份就會放置空指令(null)。

I1 I2 I3 I4 I5 I6

圖 5- 2 超長指令集處理器的長指令格式 (Long Instruction Format)

5-2. 硬體實踐

這一章節我們將介紹本論文所提出的超長指令集處理器,利用 VHDL 硬體 描述語言所建構的架構及元件。架構方面利用管線(Pipeline)技術將處理器分為 IF&ID、DRF、EXE、MEM、WB 五級,其 硬 體 架 構 如 圖 5-3 所 示 :

(32)

圖 5- 3 容錯超長指令集硬體架構圖

(33)

接下來將描述超長指令集容錯處理器各級管線的基本功能及其所包含的元 件。描述如下:

第一級包含了指令抓取(Instruction Fetch)以及指令的分派與分配(Instruction Dispatch & Partition)。指令抓取(Instruction Fetch)是選擇指令的執行位址。指令的 分派與分配則是將不同的指令分派以及分配到它們各自合適的單元處理。其中包 含了三種元件:

1. 指令記憶體(Instruction Memory):此架構的指令記憶體大小為 192×n 位 元,最多可以同時處理六道 32 位元的短指令,其中包含了三道算術邏 輯運算指令和三道記憶體存取的指令。

2. 位 址 選 擇 器 (Address Selector) : 主 要 的 功 能 在 於 選 擇 指 令 記 憶 體 (Instruction Memory) 要 執 行 的 位 址 , 包 括 依 據 程 式 計 數 器 (Program Counter) 的 指 令 位 址 、 跳 躍 (Jump) 指 令 位 址 或 者 在 進 行 資 料 回 復 (Recovery)後的位址。

3. 指令分派與分配器:這個元件包含了兩個電路,一為分派單元(Dispatch Unit)負責分派指令,另一則為分配單元(Partition Unit)負責指令的複製 與重排。這兩個元件乃是為了達到容錯目的所額外加入的元件。

第二級指令解碼層級(DRF),主要的功能為透過讀取檔案暫存器(Register File) 得到進入下一級管線(Pipeline)的資料以及產生算術邏輯控制(ALU Control)訊號 線。其中包含了三種元件:

1. 錯誤計數器(Error Counter):紀錄各個算術邏輯運算器的出錯次數,一 旦有一個算術邏輯運算器達到可允許回復次數的上限,則通知主控制器 (Main Control)隔離該算術邏輯運算器。其中分為兩種狀態:1.正常狀 態:包含了四個錯誤計數器,分別統計三個算術邏輯運算器的出錯次數 以及比較器的出錯次數;2.隔離狀態:在此只統計比較器的出錯次數。

(34)

2. 算術邏輯運算控制器(ALU Control):負責下一級管線中多工器的控制訊 號線。

3. 檔案暫存器(Register File):檔案暫存器的容量大小為 32x32 bits,為了 達到容錯目的,所需要的檔案暫存器屬於特殊規格,如圖 5-4,擁有六 個 1 位元的寫入訊號線、六個 5 位元的位址輸入端、六個 32 位元的資 料輸入端以及十二個 5 位元的資料位址輸入端,十二個 32 位元的資料 輸出端,並且可以同時讀取寫入六道短指令。

Register File

6x5 6x32 12x5

12x32 Write Address

Write Data Read Address

Data Output 6x1

Write Signal

圖 5- 4 檔案暫存器主要輸出輸入

第三級指令執行層級(EXE),將上一級管線中從檔案暫存器讀出的資料,依 據指令的編碼執行不同的運算,並且在此偵測錯誤。其中包含了五種元件:

1. 正 向 電 路 (Forwarding) : 此 元 件 主 要 是 在 解 決 資 料 相 依 危 障 (Data Dependent Hazard)的問題,直接回傳第四級或第五級運算完的指令。

2. 算術邏輯運算單元(ALU):此類型的運算單元共有三個,最多可以同時 處理三個算術邏輯指令。算術邏輯指令分成兩種:一種為算術運算指 令,例如加法(Add)、減法(Sub)以及乘法(Mult)等指令,其中乘法器是 32x32 bits。另一種則為邏輯運算指令,例如 AND、OR 以及 XOR 等指 令。

3. 記憶體存取(LW/SW)單元:此類型的運算單元也有三個。包括了將資料 從第二級管線中檔案暫存器(Register File)存取到第四級管線中資料記 憶體(Data Memory)之存取指令(Store Word:SW),以及將第四級管線中

(35)

資料記憶體內的資料讀取到第二級管線中檔案暫存器之讀取指令(Load Word:LW)。

4. 跳躍(Jump)單元:這類型的運算單元只有一個。也代表了一道長指令當 中只能擁有一道跳躍指令。包括了一些 Jump 以及 Branch 類型的指令。

5. 偵測錯誤元件:包括了一個比較器(CMP)可藉由兩個相同的算術邏輯運 算器的運算結果互相比較,若答案相同則輸出答案,若兩者不同則不能 輸出結果,並發出錯誤訊號線(Not Equal)通知系統 idle 並且回復錯誤,

如圖 5-5。以及一個三模組冗餘(TMR)可藉由三個相同的邏輯運算器運

Function Unit

Function Unit

CMP

Output Not Equal

圖 5- 5 容錯電路之比較器(CMP)

算的結果互相比較只要有兩個以上相同的答案則三模組冗餘可輸出答 案,因此三模組冗餘可以容忍一個電路的錯誤,並且有能力知道錯誤的 邏輯運算器是哪一個,也就是容錯中的錯誤定位(Fault Location),一旦 發生一個錯誤時,則會藉由不符合(Nomatch)訊號通知系統暫停(idle)並 且紀錄出錯地點及回復錯誤(圖 5-6),發生兩個以上的錯誤則無法鎖定 出錯地點。這兩個元件是為了使系統達到容錯目的所額外加入的元件。

Function Unit

Function Unit

Function Unit

TMR Output

Nomatch

(36)

第四級資料記憶體級(MEM),資料記憶體(Data Memory)的讀取或寫入以及 備份檔案暫存器(Register File)在安全狀態的資料皆在此完成。包含了三種元件:

1. 指標暫存器(Flag Register):如圖 5-7 指標暫存器的大小為 32x1 bit 擁有 一個 1 位元的檢查點(Check Point)輸入訊號、六個 5 位元的位址輸入端、

六個 1 位元的指標讀取端以及六個 1 位元的指標輸出端。當檢查點被確 認正確指標暫存器會清空,清完之後在檔案暫存器(Register File)被寫入 新的資料前,先將舊的資料位址傳到指標暫存器並且觀察指標暫存器中 相同位址的指標,若為 1 則表示資料記憶體(Data Memory)內的備份資 料已經寫入,此時指標暫存器保持不變,若為 0 則表示資料記憶體內的 備份資料未被寫入,此時指標暫存器設為 1。

Flag Register

6x5 Address

6x1

Output 6x1

Flag Read 1 Check Point

圖 5- 7 指標暫存器主要輸出輸入

2. 多工器(Multiplexer):由於演算法的關係,一道長指令最多可以執行兩 道不同的邏輯運算指令,因此透過此多工器(Multiplexer)選擇要輸出哪 些資料降低繞線面積。

3. 資料記憶體(Data Memory):如圖 5-8 大小為 1024x32 bits,並且我們保 留前 32 個空間備份檔案暫存器(Register File) 在安全狀態的資料。資料 記憶體與檔案暫存器都能同時處理多筆資料存取的動作,但不同的地方 是此記憶體擁有八個 1 位元的寫入訊號輸入端、五個 5 位元的備分寫入 位址輸入端、五個 32 位元的備份資料輸入端、三個 32 位元的資料位址 輸入端、三個 32 位元的資料輸入端、六個 5 位元的回復位址輸入端、

(37)

輸入端及三個 32 位元的資料輸入端來資料存入(SW)或讀取(LW)。而另 外五個 5 位元的備分寫入位址輸入端及五個 32 位元的備份資料輸入 端,則是為了在正常狀態中備份檔案暫存器(Register File)在安全狀態的 資料。一旦進入了回復狀態,則透過六個 5 位元的回復位址輸入端將備 份在資料記憶體的安全資料讀回到檔案暫存器。

Data Memory

8x1 Write Signal

5x5 Backup Write Address

6x32

Output 5x32

Backup Write Data 3x32 Write Address

3x32 Write Data

6x5 Recovery Address

圖 5- 8 資料記憶體主要輸出輸入

第五級寫回級(WB),當運算單元所運算出來的結果及記憶體所讀出的資料 會在這一級中寫回暫存器。

另外還有兩個元件在管線(Pipeline)之外,一為主控制器(Main Control)另一則 為錯誤分析器(Error Analysis)。主控制器(Main Control)即為控制整個處理器在運 作的行為,例如程式計數器(Program Counter)的選擇、跳躍指令的步驟以及錯誤 回復時的步驟等等。錯誤分析器(Error Analysis)則為錯誤注入實驗時才會使用 到,一般狀況並不會包含在處理器當中。

5-3. 架構的優化與比較

在實踐完硬體架構以後,我們針對第一版容錯系統架構的缺點進行優化的動 作。優化下列兩點:1.安全資料的備分與錯誤回復;2.系統架構。

1. 安全資料備份與錯誤回復:首先我們利用合成器(design compiler)合成出 每一級管線中的元件,接下來再分析超長指令集容錯處理器在共同架構 (圖 5-1)中的關鍵路徑(critical path),得知其關鍵路徑位於第三級管線

(38)

級管線的檔案暫存器包含了安全資料備份與錯誤回復的電路(如圖 5-9),此電路包括了兩個檔案暫存器(Share Register File & Save Register File)、一個控制單元(Control Unit)以及一個指標暫存器(Flag Register),

而最花時間的地方在兩個檔案暫存器存取的時間,因而關鍵路徑發生在 此。況且這兩個檔案暫存器佔了系統相當大的面積,所以我們決定將安 全檔案暫存器(Save Register File)以及指標暫存器(Flag Register)全部轉 移到第五級管線(MEM),並且把安全檔案暫存器利用資源共享(Source Sharing)的觀念與資料記憶體(Data Memory)結合,把資料記憶體中的前 32 個位元當作安全檔案暫存器如圖 5-3 中的第二級與第四級。除此之外 還把控制單元與主控制器(Main Control)合併。改良後的優點包括:1.

減少原來系統面積的負荷;2.減少關鍵路徑的時間提升處理器的執行速 度。

Share Register

File 32x32

Flag Register

32x1

Save Register

File 32x32

6x1 write signal

6x1 write signal 6x1 write signal

6x5 write address

6x5 write address 6x5 write address

6x32 backup data

12x32 read output 12x5 read address

6x32 write data

6x1 flag output

Control Unit

6x32 save data

6x5 save address 6x1 flag output

6x1 write signal

6x5 write address 6x32 write data

checkpoint recovery

圖 5- 9 安全資料備份與錯誤回復細部架構圖

2. 系統架構:超長指令集容錯處理器經過第一點的改進,再將改進後的架 構經過效能分析,結果關鍵路徑(critical path)落在指令執行(EXE)這級管 線,此外經過測試還發現把第一級與第二級管線合併後的架構,其關鍵

(39)

路徑還是位於指令執行級,為了減少硬體負擔我們決定將這兩級合併,

因而得到現在五級管線的硬體架構(參考圖 5-3)。

由上述得知我們利用資源共享(Source Sharing)的觀念改良系統。表 5-4 提供 系統在三種型態的比較:沒有容錯技術(Non F-T)、有容錯技術沒有使用資源共 享(F-T Without Source Sharing)以及有容錯技術使用資源共享(F-T With Source Sharing)。系統合成使用聯電.18 微米製程(UMC 0.18µm),不包括資料記憶體與 錯誤分析器,在相同效能下的條件下可明顯看出使用資源共享的負載從 42.509%

下降到 29.268%。

表 5-4 容錯處理器的面積與效能比較

由於新的演算法會造成系統的效能下降,因此我們利用七種測試程式來測試 效能的下降程度如表 5-5,測試程式包括: 1.堆積排序(Heap Sort); 2.快速排序 (Quick Sort) ; 3. 複 利 葉 轉 換 (FFT) ; 4. 五 乘 五 矩 陣 相 乘 (Matrix 5x5) ; 5.

= 5

1

* 2

i

bi

ai

; 6.階乘(Factorial); 7.反離散餘弦函數轉換(IDCT)。結果顯示大約 介於 0.366%到 36.99%之間。會導致如此結果的原因為指令平行度,指令平行度 越高則效能下降越大,即代表三道邏輯運算指令在同一道長指令中的機率越高效 能下降越大。

Total Area (

µ m

2) Total Area Overhead Performance Non F-T VLIW 11,852,769 128 MHz

F-T VLIW

Without Source Sharing 16,891,294 42.509% 128 MHz F-T VLIW

With Source Sharing 15,321,886 29.268% 128 MHz

(40)

Program Degradation Heap Sort (n=10) 0.366%

Quick Sort (n=10) 3.5%

FFT 3.685%

Matrix 5x5 23.61%

= 5

1

* 2

i

bi

ai

25%

Factorial (n=10) 35.71%

IDCT 36.99%

表 5-5 系統效能下降

錯誤偵測頻率方面參考表 5-6 可以得知我們的演算法其檢查點頻率以及偵測 頻率為多少。檢查點頻率是大約介於 2.11 到 3.3 個時間週期,偵測頻率方面由於 演算法中兩道指令也會偵測錯誤,所以偵測頻率會比檢查點的頻率高一點,大約 介於 1.81 到 2.95 個時間週期。從中可以明顯得知我們所提出的技術使得偵測頻 率相當的密集,增加系統檢查錯誤的機率。

Program type Size (bits)

Checkpoint number

Checkpoint frequency

Detect number

Detect frequency

Execution time (clocks) Heap Sort (n=10) 71*192 415 3.3 clocks 464 2.95 clocks 1370 Quick Sort (n=10) 62*192 592 2.54 clocks 641 2.35 clocks 1507 FFT 93*192 266 2.43 clocks 346 1.86 clocks 647 Matrix 5x5 198*192 292 2.81 clocks 398 2.06 clocks 822

= 5

1

* 2

i

bi

ai 11*192 9 2.22 clocks 11 1.81 clocks 20

Factorial (n=10) 9*192 9 2.11 clocks 9 2.11 clocks 19 IDCT 157*192 3007 2.16 clocks 3455 1.85 clocks 6395

表 5-6 提升偵錯頻率演算法之錯誤偵測頻率

在介紹和比較完我們的容錯架構之後,接下來要先介紹錯誤注入實驗的前置

(41)

第六章 錯誤注入實驗前置作業

本章節將會介紹三項錯誤注入實驗前的前置作業,第一項錯誤注入的地點選 擇與錯誤發生機率的決定,第二項錯誤注入工具使用說明,第三項錯誤注入實驗 流程。這三項前置作業非常的重要。

6-1. 錯誤注入的地點選擇與錯誤發生機率的決定

為了更加真實的模擬錯誤在實際的硬體上會發生的狀況,我們需要選擇錯誤 注入的地點以及決定錯誤的發生機率。為什麼要選擇錯誤注入的地點呢?原因在 於選擇了有效的錯誤注入地點可以有效的提升有效性錯誤的發生機率,以增加實 驗的成功率。那為什麼需要知道錯誤的發生機率?原因在於每一個元件的出錯機 率並不一樣,如果錯誤注入產生器(6-2 節)產生出來錯誤的機率都一樣,則無法 真實的模擬出系統在現實環境會遇到的狀況,因此藉由錯誤的發生機率更加真實 的模擬系統在現實狀態中的情形。

先介紹如何選擇錯誤注入的地點,由於本實驗主要的目的在保護系統中的資 料流(data flow),從圖 5-3 當中將指令執行時所經過各個元件的關係分析如圖 6-1、6-2。結果發現可以將把算術邏輯運算器(ALU)的錯誤注入地點分成兩個部 份 : 1.算術邏輯運算器的輸入部分;2.算術邏輯運算器的輸出部分,透過這兩部 分即可對應到指令執行時經過的元件中發生的錯誤,其中算術邏輯運算器的輸入 部分還包括了運算指令(圖 6-1)與運算資料(圖 6-2)這兩部份。而經過了上述的分 析之後,可知把錯誤注入在這兩個地方就可以對應出大部分系統會出錯的可能 性。

ALU (op,func,shamt) partition (op,func,shamt)

Instruction Dispatch

Instruction memory

(42)

ALU (data) ALU Control

Forwarding

Register File wb mux Data Memory partition (rs,rt,rd)

Instruction Dispatch Instruction memory

圖 6-2 算術邏輯運算器資料的部份

接下來是決定錯誤的發生機率,在[4]中表示錯誤大多發生在組合邏輯電 路,因此我們利用元件面積大小做為錯誤機率評估的考量,面積越大錯誤發生的 機率也相對的越高。透過累計上一步驟所得到的元件面積如圖 6-1、6-2,結果得 到了算術邏輯運算器輸入(指令部分):算術邏輯運算器輸入(資料部分):算術邏 輯運算器輸出 = 10:60:1。

6-2. 錯誤注入工具使用說明

當我們硬體電路設計完成後,必須進行錯誤注入實驗來驗證容錯能力,要進 行實驗之前,我們必需先要產生錯誤注入檔案,錯誤注入檔案的產生是採用本實 驗室使用 Borland C++ Builder 5.0(BCB)開發出錯誤注入工具。

錯誤注入檔案所需要的基本參數:

1、target:決定錯誤注入的地點。

2、產生錯誤個數:當輸入錯誤注入的地點後,還需要決定注入錯誤(fault) 的總 個數,與每個區域(section)的錯誤個數,為了讓我們模擬更接近真實,錯誤個 數的分佈,會依面積大小隨機分佈在我們決定的錯誤注入地點如 6-1 節所述。

3、錯誤發生時間:我們必需決定錯誤發生的時間,錯誤發生的時間是採用

參考文獻

相關文件

The construction was part of an intense competition in  New York for the title of "world's tallest building". Two  other  projects  fighting  for  the 

For each skills category under any regional skills competition, national skills competition for physically and mentally challenged or National Team Selection, one chief judge and

The construction was part of an intense competition in  New York for the title of "world's tallest building". Two  other  projects  fighting  for  the 

The natural structure for two vari- ables is often a rectangular array with columns corresponding to the categories of one vari- able and rows to categories of the second

In this paper, we would like to characterize non-radiating volume and surface (faulting) sources for the elastic waves in anisotropic inhomogeneous media.. Each type of the source

In BHJ solar cells using P3HT:PCBM, adjustment of surface energy and work function of ITO may lead to a tuneable morphology for the active layer and hole injection barrier

在雲中街文創聚落中營運中的「凹凸 咖啡館」是利用當時遺留下的建築群

In this thesis, we develop a multiple-level fault injection tool and verification flow in SystemC design platform.. The user can set the parameters of the fault injection