• 沒有找到結果。

中 華 大 學

N/A
N/A
Protected

Academic year: 2022

Share "中 華 大 學"

Copied!
54
0
0

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

全文

(1)

中 華 大 學

碩 士 論 文

題目:運用簽名監督的技術於 VLIW 處理器

系 所 別:資訊工程學系碩士班 學號姓名:M09102042 陳昆鋒 指導教授:陳永源 博士

中華民國九十三年七月

(2)
(3)
(4)
(5)

摘 要

目前市面上正被廣泛使用的 watchdog, 大都是應用於 Embedded

System 中, 因為在 Embedded System 中通常有 Embedded Software

在裡面,而在執行這些軟體時有可能會發生 bug,例如是進入無窮迴

圈中, 最後致使整個系統當掉, 為了避免這類似的情形發生 ,

watchdog timer 就是被用來解決這個問題, 利用自動 reset 系統的

機制, 使系統自動重生。

而我們所開發的 Watchdog for VLIW Processor 則有別於上面所

說的功能, 是用來偵測 CPU 執行指令時所可能產生的順序錯誤, 利

用之前我們所提出的 Hybrid Signature Monitoring 技術, 把它實作

在 Watchdog 中。

另外 , 之前我們也曾經開發過一顆 Watchdog for Pipelined

Processor,VLIW_Watchdog 和 Pipeline_Watchdog 的差異在於 VLIW

Processor 一個 clock 所抓到的指令是一行長指令,裡面包含了六個

短指令 , 所以最多有可能一個 clock 執行 6 個指令,因此 Watchdog

如何跟上 VLIW 的執行速度, 將是 VLIW Watchdog 的設計重點。

(6)

Abstract

This paper presents the architecture of watchdog

processor using hybrid signature-monitoring technique

to detect the control-flow errors occurring in the VLIW

processor. The hybrid signature-monitoring technique

combines the vertical signature scheme with the

horizontal signature scheme. The detailed designs of

watchdog processor that include the synchronous issue

between watchdog processor and VLIW processor are

discussed. We then implement and validate the proposed

watchdog processor in VHDL. The fault simulation is

conducted to justify the error-detection coverage and

latency.

(7)

誌 謝

此 篇 論 文 能 夠 順 利 的 完 成 , 要 特 別 感 謝 指 導 教 授 陳 永 源 博

士 辛 勤 的 指 導,使 我 在 學 識 的 增 長 以 及 研 究 方 法 的 精 進 上 有 很

大 的 幫 助 , 以 及 顏 金 泰 博 士 在 二 年 的 研 究 過 程 中 的 協 助 與 指

導 , 使 我 受 益 良 多 。

感 謝 求 學 過 程 中 陪 我 一 起 走 過 這 二 年 的 同 學 - 李 政 曄 、 戴

正 中、李 佳 芳、陳 彥 翔、陳 逢 銘,在 平 日 問 題 的 討 論 與 課 業 上

的 協 助。感 謝 賴 鴻 銓 學 長 給 我 研 究 過 程 中 的 建 議 與 提 醒。也 感

謝 學 弟 呂 昆 龍、林 勝 茂、張 雲 斌、賴 世 軒、葉 昭 松 和 林 立 文 。

最 後 要 感 謝 家 人 的 全 力 支 持 , 讓 我 在 求 學 過 程 中 無 後 顧 之

憂 能 夠 專 心 的 完 成 碩 士 學 位 。

謹 將 此 篇 論 文 獻 給 家 人 、 師 長 、 同 學 及 朋 友 們 , 共 同 分 享

這 得 來 不 易 之 榮 耀 。

陳 昆 鋒

謹 致

中 華 民 國 九 十 三 年 七 月 於 新 竹

(8)

目 錄

1. 簡介 ... 1

2. 混合簽名監督技術 ... 3

2.1. Signature-Monitoring 歷史 ... 3

2.2. Signature-Monitoring 基本原理 ... 3

3. VLIW Watchdog 硬體架構設計 ... 7

3.1. VLIW 處理器... 8

3.2. Block 狀態分析 ... 12

3.3. 設計考量: Vertical Signature 部分 ...18

3.4. 設計考量: Horizontal Signature 部分...28

4. VLIW Watchdog 實現與模擬結果 ... 31

4.1. 測試程式...31

4.2. 模擬結果...35

5. 結論 ... 37

6. 未來工作 ... 38

7. 參考文獻 ... 40

8. 附錄 ... 43

(9)

圖 表 目 錄

圖一. SIGNATURE WORD 結構...4

圖二.(A) 指令區塊……….…..5

圖二.(B)VERTICAL SIGNATURE-GENERATING FUNCTION……….…..5

圖二.(C)經由座標移動所得到的VERTICAL SIGNATURE結果……….….5

圖三.VLIWWATCHDOG架構圖……….8

圖四.VLIWWATCHDOG和 VLIW 處理器的位置關係圖………...12

圖五.VERTICAL SIGNATURE 計算和檢查電路……….20

圖六.VERTICAL SIGNATURE 指令分配電路……….21

圖七.一個長指令中含有兩個SIGNATURES……….………25

圖八.一個長指令中含有兩個BRANCH……….………...26

圖九.所有 BLOCK的排列情形………27

圖十.BLOCK狀態轉換圖……….28

圖十一.HS 和 VS 時間關係圖……….30

圖十二.FIFO 緩衝器………31

(10)

圖 表 目 錄

表一. 模擬結果………...35

表二.程式 BLOCK長度分析………36

表三.WATCHDOG和 VLIWPROCESSOR COMMUNICATION 協定………....43

(11)

1. 簡介

現 在 的 製 程 已 經 邁 向 了 奈 米 階 段,一 顆 SOC 晶 片 所 含 的 電

晶 體,已 經 有 達 到 上 百 萬 顆 ,未 來 可 能 更 多,然 而 在 這 麼 複 雜

的 晶 片 當 中 , 很 可 能 會 因 為 一 些 電 子 物 理 現 象 , 像 是

Crosstalk 、 IR Drop ,導 致 晶 片 中 出 現 暫 時 性 的 錯 誤 , 甚

至 是 永 久 性 的 錯 誤 , 而 且 ,十 分 不 幸 的 是 這 些 錯 誤 都 是 隨 機

出 現 的 , 有 可 能 發 生 在 Register 中 , ALU 中 , 或 是 Memory

中 , 而 如 果 是 出 現 在 Program Counter 的 話 , 就 會 產 生 所

謂 的 " Control Flow Error " [1][2][3][4] , 這 也 就 是 我

們 今 天 提 出 這 項 技 術 , 所 想 要 解 決 的 問 題 。

本 技 術 所 提 出 的 Watchdog 主 要 是 用 來 偵 測 Control-Flow

Error, 例 如 當 Program Counter 發 生 錯 誤 時 , 就 會 導 致 CPU

執 行 指 令 的 順 序 產 生 錯 誤 , 利 用 signature 的 技 術 把 它 實 現

在 watchdog 上,就 可 以 達 到 監 督 CPU 是 否 有 做 錯 指 令 的 嫌 疑

本 篇 論 文 使 用 的 實 驗 機 器 為 P-III800 的 CPU、 256M 記 憶

體 , 電 路 合 成 工 具 為 Synopsys Design Compiler, 晶 片 製 程

採 用 的 是 台 積 電 0.35um cell library , 模 擬 器 為

(12)

Modelsim_5.7SE。

本 篇 論 文 的 第 二 章 介 紹 的 是 Signature-Monitoring 技 術

簡 介 , 第 三 章 介 紹 的 是 VLIW Watchdog 的 硬 體 架 構 , 第 四 章

介 紹 的 是 利 用 灌 錯 技 術 所 產 生 的 模 擬 結 果 , 第 五 章 為 結 論 ,

第 六 章 為 未 來 工 作 。

(13)

2. 混合簽名監督技術

2.1. Signature-Monitoring 歷史

従 以 前 到 現 在 signature-monitoring 的 技 術 已 經 發 展 了

數 十 年 之 久 , 而 大 部 分 的 人 , 都 把 這 項 技 術 實 作 成 一 顆

Watchdog, 這 是 把 signature-monitoring 技 術 用 硬 體 去 實

現,去 監 督 CPU 的 控 制 流 程 是 否 有 發 生 錯 誤,像 是 Ohlsson[5]

就 做 出 一 顆 on-chip Watchdog, 用 來 監 督 Pipelined CPU。

另 外 一 方 面 也 有 人 把 signature-monitoring[6][7] 技

術 用 軟 體 方 式 去 實 現 ,像 是 史 丹 佛 大 學 的 McCluskey[8]大

師 已 經 有 提 出 一 項 解 決 方 案 ,叫 做 Control Flow Checking by

Software Signatures。 不 過 在 硬 體 方 面 ,到 目 前 為 止 , 還 沒

有 看 到 有 人 專 門 為 VLIW CPU[9][10]設 計 一 顆 Watchdog 硬

體 , 以 硬 體 實 現 監 督 CPU Control Flow Error 的 好 處 是 ,

可 以 達 到 即 時 偵 錯 的 效 果 , 但 是 缺 點 會 增 加 CPU 的 面 積 ,

因 為 必 須 額 外 再 多 設 計 Watchdog 這 塊 硬 體 。

2.2. Signature-Monitoring 基本原理

這 顆 具 有 能 夠 監 控 VLIW Processor Control-Flow Error

(14)

的 Watchdog,他 所 根 據 的 演 算 法 是 之 前 我 們 所 提 出 的 Hybrid

Signature Monitoring 技 術 , 它 結 合 了 Vertical Signature

和 Horizontal Signature 功 能,因 此 他 具 有 比 一 般 watchdog

更 強 大 的 能 力 。

在 這 裡 我 們 只 描 述 一 下 Hybrid Signature Monitoring

技 術 的 基 本 觀 念 , 至 於 更 詳 細 的 一 些 細 節 請 參 考 [11] ,

Hybrid Signature Monitoring 技 術 結 合 了 Vertical

Signature 和 Horizontal Signature 兩 種 方 法 , 因 此 , 我 們

可 以 把 Vertical Signature 和 Horizontal Signature 和

Block Length 整 合 進 一 個 signature word 之 中 , 所 以 , 一

個 block 的 signature word 可 以 分 成 三 個 部 分,第 一,Block

Lenght , 第 二 , Horizontal Signature , 第 三 , Vertical

Signature, 如 圖 一 所 示 , 其 中 一 個 signature word 的 位 元

長 度 是 32 bits。

Block Length

BL=5 bits

Horizontal Signature

HS=16 bits

Vertical Signature

VS=11 bits

圖 一 . signature word 結 構

由 於 Hybrid Signature Monitoring 技 術 十 分 複 雜 , 因

此,我 們 在 此 使 用 一 個 例 子 加 以 說 明,如 圖 二 所 示,圖 二 (a)

(15)

顯 示 的 是 一 個 含 有 四 道 指 令 的 指 令 區 塊 , 而 每 一 道 指 令 的 長

度 是 8 bits。

定 義 : S = (s1, s2, s3, s4) =

( ( ) ( ) ( ) ( )

00 , 10 , 10 , 11

)

= ( → ← ↓ ↑, , , ). 我 們 定 義 vertical

signature-generating function ⎟⎟

⎜⎜

+ 1 Ii

Ii

= ⎟⎟

⎜⎜ ⎞

+ +

+

+ i i j i w

i

w i j

i i

i

I I

I I

I I

I I

, 1 ,

1 2

, 1 1 , 1

, ,

2 , 1 ,

. .

. .

=

(

vi +1 1, , ,Λ vi +1,j,Λvi +1,W

)

, 其 中

(

vi +1 1, , ,Λ vi +1,j,Λvi +1,W

)

叫 做 狀 態 向 量, andvi +1 ,j ∈S , 1≤ ≤i BL−1, 1≤ ≤j W .

Vertical signature generating function 對 每 一 對 指 令 所

產 生 出 來 的 結 果 如 圖 二 (b)所 示 , 而 經 由 座 標 的 移 到 所 得 到

最 後 的 vertical signature 結 果 (-5,-5)如 圖 二 (c)所 示 。

0 1 1 1 1 0 1 1 :

1 1 1 1 0 0 0 0 :

0 0 0 0 1 0 1 0 :

1 1 0 1 0 1 0 1 :

4 3 2 1

I I I

I

( )

( )

(

)

⎟⎟

⎜⎜

⎟⎟

⎜⎜

⎟⎟

⎜⎜

: : :

4 3 3 2 2 1

I I I I I I

(-5,-5)

X Y

(a) (b)

(c)

圖二. (a) 指令區塊. (b) Vertical signature-generating function. (c)經

由座標移動所得到的vertical signature結果.

Vertical Signature 可 以 檢 查 Block 中 的 指 令 是 否 有 按

照 順 序 執 行 , 而 Horizontal Signature 則 可 以 用 來 檢 查 指

(16)

令 中 間 的 bit 是 否 有 發 生 bit error 的 情 形 發 生 ,值 得 一 提

的 是 , 假 如 一 個 Block 的 指 令 執 行 是 一 開 始 就 發 生 錯 誤 ,但

是 如 果 使 用 Vertical Signature 技 術 ,則 必 須 要 等 到 Block

全 部 執 行 完 ,去 比 對 Reference Vertical Signature 之 後 才

能 發 現 是 否 有 錯 誤 產 生 ,但 是 結 合 了 Horizontal Signature

技 術 後 , 可 以 提 早 發 現 錯 誤 的 產 生 ,減 少 錯 誤 偵 測 所 要 花

的 時 間 , 使 error detection latency 降 低 ,及 時 通 知 CPU

有 錯 誤 出 現 。

(17)

3. VLIW Watchdog 硬體架構設計

在 這 一 個 章 節 之 中 , 我 們 將 進 一 步 討 論 VLIW Watchdog

處 理 器 如 何 利 用 Signature-Monitoring 技 術 來 設 計 電 路 架

構 , 並 且 設 計 VLIW Watchdog 處 理 器 比 我 們 之 前 所 設 計 的

Pipeline Watchdog 處 理 器 來 的 複 雜 許 多 , 其 中 最 主 要 的 設

計 關 鍵 是 在 於 VLIW Watchdog 處 理 器 如 何 和 VLIW 處 理 器 達

到 指 令 處 理 速 度 上 的 同 步 , 整 個 VLIW Watchdog 處 理 器 的 架

構 如 圖 三 所 示 , 從 圖 三 我 們 可 以 發 現 , VLIW Watchdog 主 要

包 含 三 個 主 要 的 元 件 :

1. vertical signature-monitoring part

2. horizontal signature-monitoring part

3. communication interface to VLIW processor.

(18)

Instruction R O M

Long Instruction

V ertical Signature Instruction

D ispatch

Horizontal Signature Instruction

D ispatch

V ertical Signature Com putation &

Check C ircuit error

error Interm ediate

V ertical Signature

Clock (200 M H z) V LIW Processor

Interface &

Block State Transition C ontroller

H orizontal Signature Instruction

D ispatch Controller

H orizontal Signature Com putation &

Check C ircuit Protocol from

V LIW Processor

..

2

圖 三 .VLIW Watchdog 架 構 圖

3.1. VLIW Processor

超 長 指 令 ﹙ Very Long Instruction Word﹚ 處 理 器 的 優

點 是 能 提 高 系 統 的 效 能 , 因 為 超 長 指 令 處 理 器 是 利 用

ILP(Instruction Level Parallel) 的 架 構 可 以 在 一 個 時 脈

中 同 時 處 理 多 道 不 同 的 指 令 , 因 此 在 效 能 方 面 , 超 長 指 令 處

理 器 是 個 非 常 效 能 的 處 理 器 架 構 。

超 長 指 令 處 理 器 除 了 有 優 越 的 執 行 效 能 之 外 , 它 本 身 的

硬 體 架 構 也 相 當 適 合 加 入 某 些 容 錯 技 術 , 例 如 : 擁 有 多 個 運

算 單 元 的 特 性 可 以 讓 超 長 指 令 處 理 器 在 執 行 階 段 , 利 用 現 有

的 硬 體 資 源 在 加 入 一 些 點 單 的 容 錯 技 術 來 達 到 容 錯 的 目 的

, 這 樣 的 一 個 設 計 方 式 可 以 大 幅 減 少 使 用 額 外 硬 體 的 比 例 ,

(19)

換 句 話 說 , 超 長 指 令 處 理 器 僅 需 付 出 些 許 的 硬 體 冗 餘

(Hardware Redundancy) 即 可 有 效 的 提 升 系 統 可 靠 度 。 目 前

生 產 處 理 器 之 各 公 司 皆 有 計 劃 生 產 此 類 之 處 理 器 , 如 Intel

與 HP 合 作 設 計 之 IA-64; 德 州 儀 器 所 生 產 之 C60 晶 片 皆 是

超 長 指 令 處 理 器 , 其 中 IA-64 也 已 經 俱 備 一 些 簡 單 的 容 錯 技

術 , 這 說 明 了 各 家 廠 商 對 於 此 架 構 深 具 信 心 。

Pipeline 處 理 器 在 一 個 clock cycle 只 能 處 理 一 道 指

令 , 但 是 VLIW 處 理 器 在 一 個 clock cycle 卻 能 處 理 多 道 指

令 , VLIW 處 理 器 的 指 令 格 式 是 屬 於 超 長 指 令 , 也 就 是 說 每

一 行 超 長 指 令 包 含 了 許 多 的 短 指 令 , 像 是 branch,

Load/Store, Integer 運 算 等 等 , 而 且 這 些 短 指 令 在 同 一 個

clock cycle 都 可 以 同 時 被 執 行 , 我 們 現 在 利 用 一 個 32 位 元

的 VLIW 處 理 器 當 作 設 計 的 對 象 , 示 範 如 何 把

Signature-Monitoring 技 術 嵌 入 到 VLIW 處 理 器 中,在 我 們

示 範 的 這 一 顆 VLIW 處 理 器 之 中 , 每 一 道 機 器 碼 的 寬 度 是 32

位 元 , 而 且 每 一 道 長 指 令 總 共 包 含 了 六 道 短 指 令 , 如 下 圖 所

示 :

I1 Flag I2 Flag I3 Flag I4 Flag I5 Flag I6 Flag 其 中 I1 到 I6 是 32 位 元 的 短 指 令 , “ Flag" 占 了 1 個 位 元

空 間 , 編 譯 器 可 以 使 用 “ Flag" 欄 位 把 具 相 依 性 或 獨 立 性 的

(20)

指 令 都 放 在 同 一 行 長 指 令 中 , 也 不 會 造 成 執 行 上 的 混 淆 , 因

為 當 Flag=1 時 , 表 示 下 一 道 指 令 和 目 前 這 一 道 指 令 可 以 在

同 一 時 間 被 執 行 , 相 反 的 , 當 Flag=0 時 , 表 示 下 一 道 指 令

必 須 要 等 到 下 一 個 clock cycle 才 能 被 執 行 , 利 用 這 一 種 指

令 格 式 , 程 式 的 記 憶 體 空 間 可 以 節 省 很 多 。

VLIW 處 理 器 每 次 從 記 憶 體 中 抓 一 行 長 指 令 , 我 們 所 設 計

的 VLIW 處 理 器 在 每 個 clock cycle 最 多 可 以 發 出 六 個 短 指

令 , 因 此 在 長 指 令 當 中 的 短 指 令 有 很 多 種 不 同 的 執 行 可 能 性

, 舉 例 來 說 , 這 六 道 短 指 令 可 以 在 同 一 個 clock cycle 同 時

被 執 行 , 或 者 這 六 道 短 指 令 需 要 分 別 被 執 行 , 也 就 是 說 需 要

六 個 clock cycle, 因 此 執 行 一 道 長 指 令 的 最 短 時 間 和 發 出

六 道 短 指 令 所 需 的 時 間 是 相 同 的 , 也 就 是 說 VLIW Watchdog

的 速 度 必 須 要 跟 上 VLIW 處 理 器 執 行 一 道 長 指 令 的 最 短 時 間

, 所 以 VLIW Watchdog 在 一 個 VLIW 處 理 器 的 clock cycle

之 中 必 須 要 完 成 一 行 長 指 令 的 vertical signature 和

horizontal signature 檢 查 , 以 便 能 夠 和 VLIW Processor

達 到 指 令 執 行 上 的 同 步 。

從 上 面 的 討 論 可 以 發 現 , VLIW Watchdog 在 一 個 VLIW 處

理 器 的 clock cycle 之 中 需 要 執 行 五 次 的 Vertical

(21)

signature 產 生 電 路 , 和 VLIW Watchdog 相 比 , Pipeline

Watchdog 在 一 個 Pipeline 處 理 器 的 clock cycle 之 中 只 需

要 執 行 一 次 的 Vertical signature 產 生 電 路 , 假 如 我 們 假

設 VLIW 處 理 器 和 Pipeline 處 理 器 的 clock cycle 一 樣,則

VLIW Watchdog 的 效 能 需 求 則 必 須 要 比 Pipeline Watchdog

來 的 高 很 多 , 所 以 設 計 一 顆 符 合 效 能 需 求 的 VLIW Watchdog

是 一 個 很 大 的 挑 戰 , 此 外 , 計 算 horizontal signature 需

要 intermediate vertical signature, 因 此 我 們 也 必 須 要

同 時 考 慮 到 vertical signature 和 horizontal signature

計 算 上 的 資 料 一 致 性 問 題 , 另 外 一 個 在 設 計 VLIW Watchdog

必 須 要 考 慮 到 的 問 題 就 是 Watchdog 如 何 在 長 指 令 中 抓 到 正

確 的 Block Signature, 最 後 , 我 們 必 須 要 發 展 一 些 溝 通 協

定 用 來 使 VLIW 處 理 器 和 VLIW Watchdog 指 令 執 行 同 步 , 並

且 利 用 這 個 協 定 也 可 以 幫 助 Watchdog 找 到 Block Signature

的 位 置 , 總 之 , VLIW Watchdog 的 設 計 複 雜 度 比 Pipeline

Watchdog 大 上 許 多 。

圖 四 說 明 了 VLIW Watchdog 是 接 在 VLIW 處 理 器 的 哪 一

個 部 分,從 圖 中 可 以 清 楚 的 發 現 Watchdog 是 接 在 VLIW 處 理

器 的 Instruction Bus 上 。

(22)

Write Address (6 address) Write Data (6 data)

圖 四 .VLIW Watchdog 和 VLIW 處 理 器 的 位 置 關 係 圖

(23)

3.2. Block 狀態分析

在此篇論文中,我們切割 Block 的依據是根據 branch 指令,或

是 當 Block Length 大 於 32 時 , 就 進 行 Block 的 切 割 , 每 執

行 一 道 指 令 Block Length 就 減 一,一 直 遞 減 到 Block Length

等 於 零 , 則 表 示 Block 終 止 , 準 備 執 行 下 一 個 Block, 而

Block 的 大 小 根 據 在 signature word 中 的 Block Length 而

定 , 因 為 我 們 把 Block Length 訂 為 5 bits, 所 以 在 此 我 們

的 Block 最 長 為 32 道 指 令 。

當 Block 執行結束 , 有兩種情形會發生 ,如下圖所示, 第一 :

branch 指令發生跳躍 , 第二 : branch 指令不發生跳躍 , 如果是

branch 發生跳躍的話 , 則 CPU 要告知 watchdog 所跳躍的目的 block

位在哪一個長指令 , 以及 signature location 位在那一個短指令 ,

好讓 watchdog 順利執行下一個 block 的檢查 ; 假使 branch 不發生

跳躍的話 , 則下一個 block 的 signature 則由 watchdog 自行判斷 。

(24)

剛才有提到,當 VLIW Processor 告 知 Watchdog 分 支 指 令 不 跳

躍 , 則 Watchdog 就 必 須 自 己 找 到 下 一 個 Block 的

Signature, 所 根 據 的 演 算 法 如 下 表 所 示 :

下面左圖顯示的內容為經過 compile 過後 , 含有 signature 的 ROM

內容 , 左邊則顯示找尋 signature 演算法實際上的運作方式 : BL = sig_BL //把 signature 中 Block Length 的值存在 BL 中

While ( not end of program ) If (BL ≦ 5 ) then

Case a . 指令循序執行 Next VLIW has signature

BL = BL + 1 //BL 指向 signature 所在的指令位置。

X = 6 – BL //X 指此 VLIW 去除舊 Block 指令數後 , 新 Block 在此 VLIW //所含的指令數。

BL = New_BL – X //新 Block 的短指令數減掉新 Block 在 first VLIW 所包 //含的指令數 , 所得到的 BL 再當作判斷 Next VLIW 有 //無 signature 的根據。Îdepend on jump or not jump!

Case b. branch 指令發生跳躍, 根據 Watchdog 和 VLIW Processor Communication 協定找出 signature 所在位置 ,

再套用 Case a 的處理方法 ELSE

BL = BL -6

(25)

Init NOP NOP NOP NOP Sig1

I1 I2 Branch Sig2 I1 I2

I3 I4 I5 I6 I7 I8

I9 I10 I11 Branch Sig3 I1

I2 I3 Branch Sig4

有一點必須特別注意的是 , Block 中最多只能儲存 32 個指令 , 因

為 Block Length 只有 5 個 bits , 因此超過 32 個指令以上的 Block

必須要做硬切的動作 , 也就會造成一個 Block 會切成兩個 Block ,

因此會有 Block 沒有 Branch 在裡面的情形發生。因此接在被硬切的

Block 後面的 Block 一定是循序執行。如下所示 :

Case a . 指令循序執行

Branch sig

Normal sig Case b. branch 指令發生跳躍

Branch sig

而且如果當 Branch 發生跳躍 , 則所跳到的長指令會有以下幾種不

同的情形 , 下面做一一的分析 :

a. 一行 VLIW 最多只能有一個 branch 指令 , 因為我們判斷新 Block

的 Signature 的機制是利用解碼出 branch 指令的方法 , 利用

Sig1 的 BL=3 , 因 BL≦5 , 故 next VLIW 含有 signature

Sig2_loc=3+1=4 , X=6–4=2 , Sig2 的 BL=12 , BL=12–2=10 , 不滿足 BL≦5 的條件 , 故 next VLIW 沒有 signature

BL=10–6=4 ,故 next VLIW 含有 sig , Sig3_loc=4+1=5 , X=6–5=1 , Sig3 的 BL=4 , BL=4–1=3 , 故 next VLIW 含有 signature

(26)

Signature 恆跟隨在 branch 後面的特性去得知 Signature 的位置。

而解碼 branch 的動作 , 我們是交由 CPU 執行 , 如果有兩個以上的

branch 在同一個 VLIW 長指令的話 , 會造成無法判斷新 Block 到底

是哪一個的情形發生。

b. 一行 VLIW 可能包含兩個 signatures。如果 branch taken , 則跳

到其他 VLIW 時 , signature 可能所在的位置分析。

branch

Case1 :

Branch Sig Case2 :

Sig Case3 :

Sig1 I1 I2 Branch Sig2 I1 |---Block 1---|---Block2--|

Case1 : 跳到 Signature 所在的 VLIW 長指令 , 先對 6 個短指令作解

碼 , 結果發現有 Branch , 則 signature 就跟在後面。

Case2 : 跳到 Signature 所在的 VLIW 長指令 , 先對 6 個短指令作解

碼 , 結果發現沒有 Branch , 則有兩種情形發生

a. signature 就在最前面。其實 branch 是在上一個長指令的最後一

個位置。

b. 如果是硬切 , 則 sig_loc 可能在 I1 ~ I6 , 造成辨別的困難

(27)

SolutionÎCompiler Phase , 在硬切後面的指令都填入 NOP , 使新

Block 的 Signature 一定是位在 Next VLIW 的 I1 位置。

Case3 : 如果按照 Case1 找尋 signature 的方法 , 則在 Case3 會產

生誤抓 signature 的情況發生。而且跳到 Case 3 後 , 到底是要抓

Sig1 或 Sig2 , Compiler 自己能夠知道。

Case3-a Solution : 假如要抓 Sig2 , 則使用 Case 1 的方法即可

解決。

Case3-b Solution : 假如要抓 Sig1 , 則使用 Compiler Phase , For example :

Original:

Sig1 I1 I2 Branch Sig2 I1 Compiler Result:

Sig1 I1 I2 NOP NOP NOP

Branch Sig2 I1

產生的結果是 Case3 變成 Case2 , 不過必須付出一些代價 , 即插入

NOP 會有 memory space overhead。Memory space overhead analysis :

while number of instructions in a block is ≦5 ,

則當 No. of instruction = 1 時 , 要塞入 5 個 NOPs。

當 No. of instruction = 2 時 , 要塞入 4 個 NOPs。

當 No. of instruction = 3 時 , 要塞入 3 個 NOPs。

當 No. of instruction = 4 時 , 要塞入 2 個 NOPs。

(28)

3.3. 設計考量: Vertical Signature 部分

VLIW Watchdog 的 Vertical Signature 電 路 中 一 共 包 含

了 三 個 部 分 , 第 一 , VLIW Processor interface and block

state transition controller, 簡 稱 IBSTC, 第 二 , 指 令 分

配 單 元,第 三,vertical signature 計 算 與 檢 查 單 元,IBSTC

最 主 要 是 負 責 控 制 指 令 分 配 單 元 , 告 知 指 令 何 時 要 進 入

vertical signature 計 算 與 檢 查 單 元 , 之 前 有 提 到 說 , 一 行

超 長 指 令 需 要 執 行 vertical signature 計 算 與 檢 查 單 元 五

次,根 據 我 們 利 用 TSMC 0.35um 製 程 所 設 計 出 來 的 結 果 顯 示

, 每 一 次 計 算 需 要 花 10 ns, 因 此 , 執 行 完 一 行 超 長 指 令 的

vertical signature 檢 查 總 共 需 要 花 費 50 ns 的 時 間 , 在

paper [6]當 中,我 們 在 VLIW 處 理 器 的 執 行 單 元 中 加 入 了 容

錯 技 術 , 然 而 為 了 達 到 容 錯 的 目 的 , 設 計 者 必 須 要 在 效 能 上

妥 協 , 也 就 是 說 我 們 現 在 至 少 需 要 兩 個 clock cycle 才 能 執

行 完 一 道 VLIW 超 長 指 令 , 容 錯 的 VLIW 處 理 器 同 樣 的 也 使 用

台 積 電 0.35um 製 程 所 設 計 , 它 每 一 個 clock cycle 所 要 花

費 的 時 間 是 20 ns, 這 意 味 著 一 行 超 長 指 令 必 須 要 花 費 至 少

40 ns 才 能 完 全 把 六 道 短 指 令 都 執 行 完 畢 。

分析:

(29)

I5 I6 Î 10ns

I4 I5 Î 10ns

I3 I4 Î 10ns

I2 I3 Î 10ns

I1 I2 Î 10ns

如 果 只 有 一 份 vertical signature 產 生 電 路,總 共 需 要 50 ns

才 能 執 行 完 一 行 長 指 令 的 vertical signature 檢 查Î not

meet!

從 上 面 的 分 析 , 我 們 觀 察 到 vertical signature 電 路

的 計 算 速 度 比 VLIW 處 理 器 慢 了 一 點 , 所 以 , 這 樣 會 有 速 度

同 步 的 問 題 產 生 , 有 關 這 個 同 步 問 題 , 我 們 所 採 用 的 解 決 方

法 是 把 vertical signature 計 算 與 檢 查 單 元 多 複 製 一 份 ,

如 圖 五 所 示 , 結 果 證 明 兩 份 vertical signature 產 生 電 路

可 以 平 行 被 計 算 處 理 , 因 此 , 我 們 只 需 要 30 ns 就 可 以 完 成

一 行 超 長 指 令 的 vertical signature 檢 查 , 由 圖 五 中 可 以

看 到 , 左 邊 的 部 分 和 右 邊 的 部 分 分 別 是 負 責 x 和 y 的

vertical signature 產 生 , 當 block 執 行 結 束 時 , Check

Control 訊 號 線 就 會 被 致 能 , 並 且 判 斷 run-time vertical

signature 和 reference vertical signature 是 否 相 同 , 另

(30)

外 , HS1, FIFO1, HS2, FIFO2 是 vertical signature 計 算

與 檢 查 單 元 在 計 算 算 過 程 當 中 所 產 生 出 來 的 intermediate

vertical signature , 而 這 些 值 都 要 被 送 到 horizontal

signature 計 算 單 元 。

s1~s4 counter:

cs1~cs4

s1~s4 counter:

cs1~cs4

cs1 - cs2 cs1 - cs2 Register X

12-bit Adder 1

12-bit Adder 2

cs4 - cs3 Register Y

12-bit Adder 3

12-bit Adder 4 cs4 - cs3

Adder Adder

Vertical Signature Comparator

480 480

Vertical Reference Signature

Check Control HS1

FIFO 1

HS2

FIFO 2

Error Signal

圖 五 .vertical signature 計 算 和 檢 查 電 路

(31)

nop

nop

Last_VLIW I6 Case 1-5 I6

I1 I2 I3 I4 I5 I6

Vertical Signature

Register D Register C Register B Register A

I1 I2 I3 I4 I5 I6

Nop Last_VLIW I6

I1 I2 I3 I4 I5 I6

Nop Last_VLIW I6

I1 I2 I3 I4 I5 I6

Nop Last_VLIW I6

I1 I2 I3 I4 I5 I6

Nop Last_VLIW I6

Signature Register I1

I2 I3 I4 I5 I6

BL A

B

C

D

E

Vertical Signature The selection signals of 1~5 are sent from “ VLIW Processor Interface and

Block state transition controller"

Connect to Last_VLIW I6 of Mux A B C D

Program ROM

Instruction Register

1

2

3

4

5

Instruction Stream Speed

Controller

圖 六 .vertical signature 指 令 分 配 電 路

(32)

圖 六 顯 示 vertical signature 指 令 分 配 電 路 負 責 從 VLIW 超

長 指 令 當 中 抓 取 block signature 並 且 儲 存 到 signature

register 當 中 ,同 時 分 配 兩 雙 指 令 給 vertical signature 計

算 與 檢 查 電 路 , 指 令 分 配 電 路 主 要 的 功 能 是 提 供 正 確 的 指 令

執 行 順 序 給 vertical signature 計 算 與 檢 查 電 路 , 從 圖 六

中 我 們 可 以 看 到,多 工 器 A 到 多 工 器 E 的 選 擇 訊 號 是 從 IBSTC

發 送 出 來 的 , 並 且 被 用 來 控 制 指 令 的 分 配 順 序 , 值 得 注 意 的

是 , vertical signature 電 路 單 元 是 一 個 2 stage 的

pipeline 架 構,其 中 第 一 個 stage 是 指 令 分 配,第 二 個 stage

是 vertical signature 計 算 和 檢 查 單 元 , 每 一 個 stage 的

clock cycle 是 10 ns, 因 此 , 一 行 長 指 令 包 含 了 六 個 短 指

令 需 要 4 個 clock cycle 一 共 40 ns 才 能 執 行 完 vertical

signature 的 檢 查。

IBSTC 的 目 的 有 兩 個 , 第 一 個 是 接 收 來 自 VLIW 處 理 器

所 傳 送 過 來 的 通 訊 協 定 , 另 一 個 則 是 產 生 vertical

signature 的 指 令 分 配 訊 號,VLIW 處 理 器 使 用 通 訊 協 定 正 確

的 幫 助 Watchdog 找 到 signature,通 訊 協 定 的 目 的 如 下 面 所

示 , 第 一 , 告 訴 Watchdog 程 式 開 始 執 行 , 第 二 , 告 知 分 支

跳 躍 指 令 跳 或 是 不 跳 , 第 三 , block signature 位 在 長 指 令

(33)

的 位 置 , 第 四 , 告 知 程 式 執 行 到 一 半 進 入 idle 狀 態 以 及 程

式 重 新 開 始 執 行。

我 們 描 述 block 的 特 性 是 根 據 block 的 長 度 和 block

signature 在 長 指 令 中 所 在 的 位 置 , 以 及 signature 在 一 行

長 指 令 所 含 有 的 個 數 , 和 branch 指 令 在 一 行 長 指 令 所 含 有

的 個 數 , 由 於 block 長 度 可 能 不 同 , 因 此 , block 可 能 包 含

了 一 個 或 者 多 個 長 指 令 , 而 當 block 執 行 完 的 時 候 , branch

跳 或 是 不 跳 的 結 果 會 影 響 到 找 尋 下 一 個 block signature 的

方 法 , 當 branch 不 跳 的 情 形 發 生 , 下 一 個 要 被 執 行 block

的 signature 就 跟 在 branch 指 令 後 面 , 當 branch 跳 的 情 形

發 生 , 則 處 理 的 方 法 就 比 不 跳 的 情 形 複 雜 , 我 們 注 意 到

Watchdog 並 不 知 道 下 一 個 要 被 執 行 的 block , 它 的 block

signature 在 哪 裡 , 之 前 有 提 到 的 通 訊 協 定 就 是 用 來 解 決 這

一 個 問 題 , VLIW 處 理 器 就 是 負 責 用 來 告 訴 Watchdog 是 否

branch 指 令 跳 躍 或 是 不 跳,如 果 分 支 發 生 跳 躍 的 話,有 兩 種

情 形 必 須 考 慮,一 種 情 形 是 跳 到 的 長 指 令,含 有 一 個 branch

指 令 , 另 外 一 種 情 形 是 跳 到 的 長 指 令 , 沒 有 包 含 任 何 的

branch 指 令 , 假 如 VLIW 處 理 器 傳 送 一 個 溝 通 協 定 給

Watchdog, 這 個 協 定 的 意 思 是 說 分 支 發 生 跳 躍 , 而 且 所 跳 躍

(34)

到 的 長 指 令 沒 有 包 含 branch 指 令 , 這 個 意 思 就 是 告 訴

Watchdog 說 signature 位 於 所 跳 到 長 指 令 的 起 頭 位 置,另 一

種 情 形 就 是 , VLIW 處 理 器 會 告 知 Watchdog 說 branch 指 令

位 在 長 指 令 中 的 哪 一 個 短 指 令 位 置 , 這 一 種 情 形 之 下 ,

signature 的 位 置 就 會 跟 隨 在 branch 指 令 的 後 面,根 據 程 式

的 特 性 和 程 式 撰 寫 的 風 格 , 一 個 長 指 令 可 能 包 含 一 個 以 上 的

signature 或 是 branch 指 令,這 個 部 分 會 在 後 面 的 章 節 再 加

以 深 入 去 討 論。

圖 七 顯 示 一 行 長 指 令 包 含 了 兩 個 signature, 換 句 話 說

, 這 個 block 是 非 常 短 的 以 致 於 一 行 長 指 令 包 含 了 超 過 一 個

以 上 的 block, 基 於 之 前 提 到 的 方 法 , 假 如 所 要 跳 到 的 長 指

令 含 有 一 個 以 上 的 block, 而 且 如 果 是 要 跳 到 的 block 是 位

於 第 一 個 , 則 照 之 前 提 出 的 解 法 , Watchdog 會 產 生 抓 錯

signature 的 情 形 , 因 而 執 行 到 第 二 個 block, 像 是 圖 七 這

一 種 情 形 並 不 容 易 解 決 , 因 為 VLIW 處 理 器 沒 有 辦 法 辨 別

block1 的 signature 所 在 的 位 置,為 了 簡 化 硬 體 設 計 的 複 雜

度 , 我 們 多 了 一 些 記 憶 體 空 間 , 但 是 相 對 的 , 使 得 硬 體 上 的

設 計 變 的 比 較 簡 單 , 也 就 是 說 , 我 們 利 用 編 譯 器 自 動 偵 測 此

種 情 形 的 發 生 , 進 而 插 入 NOP 指 令 於 記 憶 體 中 , 例 如 假 設 編

(35)

譯 器 偵 測 到 下 一 個 要 被 執 行 的 是 Block 1, 所 以 編 譯 器 接 下

來 的 動 作 就 會 插 入 NOP, 一 直 把 Block 1 的 branch 指 令 擠 到

下 一 個 長 指 令 的 起 頭 為 止 , 因 此 , 程 式 在 記 憶 體 中 的 編 排 將

會 重 新 受 到 編 排 , 然 後 所 產 生 出 來 的 程 式 碼 就 可 以 被 之 前 所

提 到 方 法 去 順 利 找 到 所 需 要 的 block signature, 而 且 所 增

加 的 記 憶 體 空 間 只 有 一 點 點 而 已。

B

sig1 I1 I2 B sig2 I1 Compiler Result

sig1 I1 I2

NOP NOPNOP

B sig2 I1

圖 七 .一 個 長 指 令 中 含 有 兩 個 signatures

圖 八 說 明 了 一 行 長 指 令 裡 面 出 現 了 超 過 一 個 以 上

branch 指 令 的 情 形,在 這 篇 論 文 中,我 們 提 供 了 兩 個 方 法 去

解 決 這 種 情 形 , 第 一 種 方 法 是 使 用 編 譯 器 去 插 入 NOP 指 令 ,

類 似 上 面 提 到 的 方 法,這 樣 子 做 的 好 處 是,Watchdog 可 以 對

這 種 code 的 排 列 進 行 正 確 signature 的 抓 取 , 另 一 種 方 法

則 是 程 式 設 計 者 在 寫 程 式 的 過 程 當 中 , 盡 量 去 避 開 branch

(36)

指 令 靠 太 近 的 情 形 發 生 , 另 外 , 值 得 一 提 的 是 , 這 一 種 情 形

發 生 的 機 會 並 不 高 , 因 此 , 對 於 增 加 記 憶 體 空 間 的 影 響 , 可

以 說 是 微 乎 其 微 , 可 以 加 以 省 略 , 所 以 , 根 據 以 上 的 討 論 ,

很 明 顯 的 可 以 清 楚 知 道 在 我 們 的 程 式 中 , 每 一 行 長 指 令 最 多

只 含 有 一 個 branch 指 令 , 因 此 , 像 在 圖 七 的 情 形 , 最 後

signature 的 位 置 一 定 都 是 位 在 長 指 令 的 起 頭 , 而 像 圖 八 的

情 形 , 則 是 編 譯 器 會 把 含 有 一 個 以 上 branch 的 長 指 令 給 拆

開 , 個 別 放 在 單 獨 的 一 行 長 指 令 之 中。

B

B sig1 I1 B sig2 I1 Compiler Result

B sig1 I1

NOPNOPNOP

B sig2 I1

圖 八 .一 個 長 指 令 中 含 有 兩 個 branch

圖 九 則 顯 示 了 所 有 的 情 形,假 如 一 個 block 包 含 了 至 少

五 個 短 指 令 , 而 且 signature 的 位 置 剛 好 又 是 在 長 指 令 的 起

頭 的 話 , 則 這 個 block 就 是 屬 於 Case1-1 的 狀 態 , 其 他 的

Case1-2, Case1-3, Case1-4, Case1-5, Case1-6 的 情 形 都

(37)

類 似 於 Case1-1, Block 狀 態 改 變 控 制 器 由 圖 十 說 明 , 由 此

圖 可 以 包 含 了 所 有 的 block 狀 態 改 變 的 情 形 , 舉 例 來 說 , 一

個 block 可 能 包 含 了 很 多 的 長 指 令 , 因 此 , block 狀 態 可 能

從 Case1-n 開 始 , 其 中 n 可 能 是 1 到 6 的 其 中 任 何 一 個 值 ,

然 後 可 能 再 轉 移 狀 態 Case2, 而 block 可 能 會 在 Case2 停 留

了 好 幾 次 , 然 後 在 進 入 最 後 一 個 狀 態 , Case3。

sig I1 I2 I3 I4 I5 Case 1-1

sig I1 I2 I3 I4 Case 1-2

sig I1 I2 I3 Case 1-3

sig I1 I2 Case 1-4

sig I1 Case 1-5

I3 I4 I5 I6 Case 2

B sig Case 3-2

B sig Case 3-3

B sig Case 3-4

sig Case 3-5

sig Case 3-6

I1 I2 In-1

In-2 In-1 In-3 In-2 In-1 B In-4 In-3 In-2 In-1 B sig Case 1-6

圖 九 .所 有 Block 的 排 列 情 形

(38)

Block_start

Case 1-1

Case 2

Case 1-5 Case 1-4

Case 1-3 Case 1-2

Case 3-6 Case 3-5

Case 3-4 Case 3-3

Case 3-2

Case 1-6

圖 十 .Block 狀 態 轉 換 圖

由 上 面 的 分 析 可 以 知 道 VLIW Watchdog 的 設 計 的 確 比

Pipeline Watchdog 的 設 計 來 的 複 雜 許 多 , 不 僅 是 在 指 令 的

分 配 上 或 是 找 尋 Block Signature 的 方 面 , 都 必 須 注 意 , 另

外 因 為 Block 在 Program ROM 的 排 列 情 形 很 多,所 以 設 計 VLIW

Processor 編 譯 器 的 人 需 要 知 道 這 些 Block 的 排 列 規 則,才

能 自 動 產 生 適 合 VLIW Watchdog 的 Program ROM。

(39)

3.4. 設計考量: Horizontal Signature 部分

每 一 道 機 器 指 令 需 要 計 算 Horizontal Signature 並 且

檢 查 是 否 和 Reference Horizontal Signature 一 樣 ,

Horizontal Signature 的 計 算 需 要 用 到 intermediate

vertical signature 的 幫 忙 , 因 此 , 我 們 必 須 完 成 在

Vertical Signature 和 Horizontal Signature 兩 個 電 路 之

間 的 時 間 分 析 , 圖 十 一 就 是 顯 示 這 個 分 析 結 果 , 從 圖 十 一 我

們 可 以 看 到 , 每 一 計 算 和 檢 查 horizontal signature 的 動

作 須 要 花 費 5 ns, 根 據 我 們 Hybrid Signature 的 方 法 , 每

一 個 block 裡 面 的 第 一 個 和 第 二 個 機 器 指 令 並 不 需 要

intermediate vertical signature 來 幫 忙 計 算 產 生

horizontal signature , 而 是 從 第 三 個 機 器 指 令 開 始 ,

Horizontal Signature 的 計 算 才 需 要 用 到 intermediate

vertical signature 的 幫 忙 , 在 圖 十 一 中 , ivs 代 表 的 是

intermediate vertical signature 的 縮 寫 , 關 於 圖 十 一 ,

在 Vertical Signature 和 Horizontal Signature 兩 個 電 路

之 間 存 在 著 一 個 同 步 的 問 題,我 們 可 以 看 到 第 三 個 指 令 在 20

ns 時 候 開 始 計 算 它 的 horizontal signature, 而 且 它 需 要

I1 到 I2 的 intermediate vertical signature 來 幫 忙 計 算

(40)

產 生 horizontal signature , 從 圖 十 一 中 可 以 看 見 因 為

vertical signature 計 算 電 路 在 18 ns 時 , 就 可 以 產 生 I1

到 I2 的 intermediate vertical signature, 所 以 對 於 I3

指 令 在 計 算 horizontal signature 時 , 時 間 上 沒 有 問 題 ,

問 題 出 在 I4 指 令 在 25 ns 時 才 開 始 計 算 horizontal

signatur,但 是 它 在 計 算 上 所 需 要 的 intermediate vertical

signature 早 在 19 ns 的 時 候 就 產 生 出 來 了 , 相 同 的 , I6 和

I8 也 有 類 似 的 問 題,為 了 解 決 這 一 個 問 題,我 們 必 須 要 加 入

兩 個 FIFO 電 路 , 一 個 是 給 x 座 標 使 用 , 另 外 一 個 則 是 給 y

座 標 使 用 , 用 此 方 法 來 解 決 Vertical Signature 和

Horizontal Signature 兩 個 電 路 之 間 同 步 的 問 題。

need (I1~I2) ivs need (I1~I3) ivs need (I1~I4) ivs need (I1~I5) ivs HS | | | | | | | |

0 5 10 15 20 25 30 35 (ns) I1 I2 I3 I4 I5 I6 VS | | | | | | | | | |

0 1819 20 28 29 30 38 39 40 (ns)

(I1~I2) (I1~I3) (I1~I4) (I1~I5) (I1~I6) (I1~I7) done done done done done done

圖 十 一 .HS 和 VS 時 間 關 係 圖

圖 十 二 所 顯 示 的 是 FIFO 緩 衝 器 : 主 要 是 將 Vertical

Signature 計 算 單 元 所 產 生 的 暫 時 性 Vertical Signature 依

順 序 放 到 FIFO 緩 衝 器 , 然 後 Horizontal Signature 計 算 單

元 會 依 序 取 出 暫 時 性 Vertical Signature, 來 產 生 每 一 個 短

指 令 的 Horizontal Signature。 因 為 Vertical Signature

(41)

在 計 算 過 程 當 中 會 產 生 暫 時 性 的 Vertical Signature 值 ,

而 這 些 值 必 須 要 送 給 Horizontal Signature 計 算 單 元 來 使

用。 但 是 因 為 計 算 Vertical Signature 的 電 路 有 兩 份 , 但

是 計 算 Horizontal Signature 的 電 路 只 有 一 份 , 所 以

Horizontal Signature 讀 暫 時 性 Vertical Signature 的 值

會 有 來 不 及 處 理 的 情 形 發 生 , 因 此 為 了 解 決 這 個 問 題 ,

這 兩 個 電 路 中 間 必 須 要 安 插 FIFO 緩 衝 器 , 以 便 讓 值 能 夠 暫

存 而 不 至 於 消 失 不 見 或 是 被 覆 蓋 掉 。

FIFO 1

FIFO1 Xivs

mux

a

mux b

0 HS1

圖 十 二 .FIFO 緩 衝 器

(42)

4. VLIW Watchdog 實現與模擬結果

4.1. 測試程式(Benchmarks)

這 一 章 我 們 使 用 了 一 些 測 試 程 式 來 驗 證 VLIW Watchdog

的 執 行 能 力 , 這 裡 所 用 到 的 測 試 程 式 一 共 有 四 個 , 包 含 5x5

矩 陣 相 乘 、 N!、 快 速 排 序 。

由 前 面 的 章 節 可 以 知 道 , 這 些 測 試 程 式 在 放 在 Program

ROM 被 執 行 之 前 , 必 須 先 經 過 一 連 串 的 編 譯 工 作 , 包 含 檢 查

是 否 分 支 跳 躍 所 到 的 長 指 令 出 現 了 一 個 以 上 的 signatures

, 或 是 block 前 面 沒 有 branch 指 令 , 因 為 這 些 問 題 在

Watchdog 執 行 的 過 程 當 中,有 可 能 會 產 生 錯 誤 結 果,所 以 必

須 事 先 克 服 。

VLIW Watchdog 所 使 用 的 實 驗 錯 誤 環 境 參 數 如 下 所 述 :

錯 誤 注 入 目 標 (Fault target list) : 與 控 制 流 程 相 關 的 訊

號 線 (永 久 性 錯 誤 )、 指 令 記 憶 體 的 輸 出 (暫 時 性 錯 誤 ), 錯 誤

維 持 時 間 : 1Clk~3Clk, 模 擬 時 間 : 依 不 同 程 式 而 異 , 永 久

性 錯 誤 機 率 : 如 果 錯 誤 注 入 目 標 為 與 控 制 流 程 相 關 的 訊 號 線

則 該 錯 誤 為 永 久 性 錯 誤 , Weibull 錯 誤 發 生 頻 率 階 段 參 數 α

< 1 且 α = 1(Burn-in+Useful-life), 錯 誤 發 生 頻 率 參 數 λ

= 0.001。

(43)

總 共 灌 錯 的 次 數 為 1000 次 , 分 別 在 Program Counter .

Instruction Bus 各 灌 500 個 錯 , 而 錯 誤 的 型 態 是 暫 時 性 錯

誤 , Fault duration 為 30 ns, Bit error range 為 1~3 bits

舉 例 說 明 如 下 :

10 階乘排成的 ROM : 原始未經編譯的程式

Init NOP NOP NOP NOP Sig1

I1 I2 I3 I4 I5 branch

Sig2 I1 I2 I3 branch Sig3

I1 I2 branch Sig4 I1 I2

Sig5 I1 Branch Sig6 I1 I2

I3 Sig7 I1 I2 branch Step1:

10 階乘排成的 ROM : Î塞入第一種 NOP

Init NOP NOP NOP NOP Sig1

I1 I2 I3 I4 I5 branch

Sig2 I1 I2 I3 branch Sig3

I1 I2 branch Sig4 I1 I2

Sig5 I1 Nop Nop Nop Nop

Branch Sig6 I1 I2 I3 Sig7

(44)

I1 I2 Branch

Step2:

10 階乘排成的 ROM : Î塞入第二種 NOP

Init NOP NOP NOP NOP Sig1

I1 I2 I3 I4 I5 branch

Sig2 I1 I2 I3 branch Sig3

I1 I2 branch Sig4 I1 I2

Sig5 I1 Nop Nop Nop Nop

Branch Sig6 I1 I2 I3 Nop

Sig7 I1 I2 Nop Nop nop

branch

PS:

第 一 種 NOP : 為 了 避 免 產 生 在 同 一 行 長 指 令 中 , 含 有 兩 個

signature,產 生 跳 錯 block 的 情 形

第 二 種 NOP: 為 了 解 決 block 前 面 沒 有 branch 指 令 ,而 插 入

的 NOP

Memory Overhead 算 法 = ( signature 個 數 +NOP1 個 數 +NOP2

個 數 ) / 原 始 程 式 指 令 數

(45)

4.2. 模擬結果

我 們 使 用 VHDL 語 言 去 開 發 VLIW Watchdog 處 理 器 , VLIW

Watchdog 的 總 共 面 積 是 6250 個 gate counts,使 用 的 是 TSMC

0.35 um 製 程 , 而 VLIW Watchdog 的 效 能 是 200 MHz, 另 外

, 加 入 signature 和 NOP 指 令 所 造 成 的 記 憶 體 空 間 的 負 擔 如

表 一 所 示 , 很 明 顯 的 可 以 看 出 來 , 記 憶 體 空 間 負 擔 的 大 小 和

程 式 有 很 大 的 關 係 , 表 一 說 明 了 當 程 式 中 包 含 了 很 多 的 小

block, 則 會 導 致 產 生 很 多 的 NOP 指 令 , 此 外 , 表 一 也 提 供

了 VLIW Watchdog 的 錯 誤 偵 測 率 和 錯 誤 偵 測 時 間。

5x5 Matrix Multiplication

Quick Sort N!

Number of NOPs 11 17 8

Number of signatures

13 19 7

No. of original instructions

175 89 17

Memory overhead 14% 41% 88%

Coverage (%)

Latency (ns)

99.5 25.8 100 22.6 100 18.3

表 一 .模 擬 結 果

従 表 一 可 以 知 道 只 有 5x5 矩 陣 相 乘 的 錯 誤 偵 測 率 是 99.5%,

其 他 Quick Sort 和 N!都 是 100%, 這 跟 程 式 中 的 Block 長 度

有 關, instruction bus 發 生 的 查 不 到 的 機 會 通 常 是 出 現 在

Block 長 度 大 於 16 且 正 在 執 行 的 指 令 順 序 又 恰 巧 大 於 16 的

(46)

狀 況 之 下 , 這 種 狀 況 是 VLIW Watchdog 錯 誤 偵 測 技 術 較 為 薄

弱 的 地 方 , 因 為 VLIW Watchdog 錯 誤 偵 測 技 術 是 採 用 混 合 式

的 簽 名 監 督 技 術 , 它 包 含 了 垂 直 簽 名 監 督 技 術 以 及 水 平 簽 名

監 督 技 術 , 其 中 垂 直 簽 名 監 督 技 術 可 以 監 督 整 個 程 式 區 塊 之

中 的 指 令 執 行 順 序 是 否 有 錯 誤 發 生 , 但 是 它 的 故 障 偵 測 延 遲

時 間 (Error detection latency) 會 較 長 , 這 是 因 為 垂 直 簽

名 監 督 技 術 只 會 在 程 式 區 塊 結 束 時 才 比 較 是 否 有 錯 誤 發 生

, 而 水 平 簽 名 監 督 技 術 則 會 在 每 一 道 指 令 執 行 時 便 檢 查 該 指

令 是 否 為 正 確 的 指 令 順 序 , 但 是 此 一 水 平 簽 名 監 督 技 術 僅 能

監 督 程 式 區 塊 小 於 17 的 程 式 區 塊,若 程 式 區 塊 大 於 17(包 含

17), 則 17 後 面 的 指 令 都 不 在 水 平 監 督 技 術 的 保 護 之 下 。 所

以 , 可 以 從 表 二 知 道 為 何 Quick Sort 和 N!的 錯 誤 偵 測 率 比

5x5 矩 陣 相 乘 來 高 的 原 因 。

Block≦8 8<Block≦16 16<Block≦32

Quick sort 18 1 0

N! 7 0 0

5x5 4 4 4

表 二 .程 式 Block 長 度 分 析

(47)

5. 結論

在 本 篇 論 文 中 , 我 們 提 出 了 一 顆 Watchdog 處 理 器 , 它

可 以 嵌 入 VLIW 處 理 器 並 且 同 步 去 偵 測 處 理 器 在 控 制 流 程 中

所 產 生 的 錯 誤 , 這 顆 VLIW Watchdog 的 設 計 複 雜 度 比

Pipelined Watchdog 設 計 複 雜 度 來 的 困 難 許 多 , 我 們 已 經 分

析 過 所 有 可 能 出 現 的 block 情 形 和 組 合 , 並 且 使 用 硬 體 和 軟

體 的 方 法 去 解 決 不 同 的 情 況 。

(48)

6. 未來工作

這一顆 VLIW Watchdog 是針對我們目前所正在開發的 VLIW

Processor 所量身訂做的 , 因此 , 讀者並無法直接使用在其他

VLIW 架構上 , 除非經過 Re-Design , 在此我們提供一些 Re-Design

時 , 所需要注意到的一些 issues :

1. Watchdog 與 VLIW Processor 在速度上的搭配 : 事實上 ,這個問

題是設計 VLIW Watchdog 所遇到最棘手的問題 , 因為 CPU 常常會

因為 Hazard 的問題 , 導致需要 Stall , 因此 , CPU 必須通知

Watchdog 等他 , 這樣雙方才能達到速度上的一致。

2. Vertical Signature 和 Horizontal Signature 速度上搭配的問題 :

在 Signature Check 的演算法中 , 計算 Vertical Signature 時

所 產 生 的 暫 時 性 Vertical Signature 必 須 傳 給 Horizontal

Signature 做計算 , 以便提高 Fault Coverage , 但是 , 因為

Vertical Signature 一次處理三個短指令 , 所以會同時產生兩個

暫時性 Vertical Signature , 又因為 Horizontal Signature 無

法一次接收兩個暫時性 Vertical Signature , 必須分批接收 ,

所以 Vertical Signature 和 Horizontal Signature 之間就必須

建立起類似 Buffer 的暫存電路 , 好讓 Horizontal Signature 能

在正確的時間收到正確的暫時性 Vertical Signature。

(49)

目前我們已經得到 VLIW Watchdog 的硬體以及效能的大小。未來

的目標則是整合至我們所開發的 VLIW Processor 做最後的驗證分

析,比如錯誤偵測涵蓋率和錯誤偵測延遲時間等等。

(50)

7. 參考文獻

[1]. A. Mahmood and E. J. McCluskey, "Concurrent error

detection using watchdog processor -A survey, " IEEE Trans.

on Computers, Vol. 37, No. 2, pp. 160-174, Feb. 1988.

[2]. A. Benso, S. Di Carlo, G. Di Natale, P. Prinetto, “ A

Watchdog Processor to Detect Data and Control Flow

Errors," 9th IEEE On-Line Testing Symposium, pp. 144 – 148,

July 2003.

[3]. J. Huck, D. Morris, J. Ross, A. Knies, H. Mulder and R.

Zahir, “ Introducing the IA-64 Architecture," IEEE Micro,

vol. 20, issue: 5, pp. 12-23, Sep.-Oct. 2000.

[4]. C. Constantinescu, “ Impact of Deep Submicron

Technology on Dependability of VLSI Circuits," Proc. of

the Int' l Conf. on Dependable Systems and Networks, pp.

205-209, 2002.

[5]. J. Ohlsson, M. Rimen, and U.Gunneflo, “ A Study

of the Effects of Transient Fault Injection into a

32-bit RISC with Built-in Watchdog" , in Proc. 22nd

IEEE FTCS, 1992, pp. 316-325.

(51)

[6]. Yung-Yuan Chen, Shi-Jinn Horng and Hung-Chuan Lai, “ An

Integrated Fault-Tolerant Design Framework for VLIW

Processors," 18th IEEE International Symposium on Defect

and Fault Tolerance in VLSI Systems, pp. 555-562, Nov. 2003.

[7]. J. Hennessy, D. Patterson, “ Computer Architecture: A

Quantitative Approach" , Morgan Kaufmann, Second Edition,

1996.

[8]. Oh, N., P.P. Shirvani, and E.J. McCluskey, "Error

Detection by Duplicating Instructions in Super-scalar

Processors," CRC TR 00-5, Apr. 2000.

[9]. K. Wilken and J. Shen, "Continuous signature

monitoring: Efficient concurrent detection of

processor control errors, " in Proc. 18th Int. Test

Conf., 1988, pp. 914-925.

[10]. John G. Holm and Prithviraj Banerjee, "Low Cost

Concurrent Error Detection in a VLIW Architecture

Using Replicated Instructions," Proc. Int'l Conf.

on Parallel Processing, Vol. I, pp. 192-195, Aug.

1992.

(52)

[11]. Yung-Yuan Chen, “ Concurrent Detection of Processor

Control Errors by Hybrid Signature Monitoring," Third

European Dependable Computing Conference, pp.437-454, Sept.

1999.

(53)

8. 附錄

Watchdog 和 VLIW Processor Communication 協定 :

External Signal 定義 :

0000 Program Start , 第一個 block 的 signature 位置在 I6 0001 Block Start , 且 branch not jump

0010 Block Start , 且 branch jump , 且跳到的長指令含沒有 branch 指令 , 則 watchdog 知道 sig_loc=I1 , 對 MuxE 發出 001 訊號

0011 Block Start , 且 branch jump , 且跳到的長指令有 branch 指令 , 且 Branch 的位置在 I1

0100 Block Start , 且 branch jump , 且跳到的長指令有 branch 指令 , 且 Branch 的位置在 I2

0101 Block Start , 且 branch jump , 且跳到的長指令有 branch 指令 , 且 Branch 的位置在 I3

0110 Block Start , 且 branch jump , 且跳到的長指令有 branch 指令 , 且 Branch 的位置在 I4

0111 Block Start , 且 branch jump , 且跳到的長指令有 branch 指令 , 且 Branch 的位置在 I5

1000 Block Start , 且 branch jump , 且跳到的長指令有 branch 指令 , 且 Branch 的位置在 I6 , 則 watchdog 知道 sig_loc=I1

1001 從第二個短指令之後都是 NOP , Watchdog 必須 skip 過去, 5 個 nop 1010 從第三個短指令之後都是 NOP , Watchdog 必須 skip 過去, 4 個 nop 1011 從第四個短指令之後都是 NOP , Watchdog 必須 skip 過去, 3 個 nop 1100 從第五個短指令之後都是 NOP , Watchdog 必須 skip 過去, 2 個 nop 1101 Block idle

1110 Block Restart 1111 Reserved

表三. Watchdog 和 VLIW Processor Communication 協定

(54)

Watchdog 和 VLIW Processor Communication Protocol , 1001~1100 分析 : 1.

Sig1 Branch Sig2 I1 I2 I3

Sig1 Nop Nop Nop Nop nop

Branch Sig2 I1 I2 I3 I4

2.

Sig1 I1 Branch Sig2 I1 I2

Sig1 I1 Nop Nop Nop nop

Branch Sig2 I1 I2 I3 I4

3.

Sig1 I1 I2 Branch Sig2 I1

Sig1 I1 I2 Nop Nop nop

Branch Sig2 I1 I2 I3 I4

4.

Sig1 I1 I2 I3 Branch Sig2

Sig1 I1 I2 I3 Nop nop

Branch Sig2 I1 I2 I3 I4

5.

Sig1 I1 I2 I3 I4 branch

沒改變 , 保持原狀

若 conditional branch 是要跳到 block1 , 則原長指令的指令編排 方式 , 會誤導抓到 sig2 , 故經 編排後 , 發現 VLIW 長指令沒 有 branch 指令,則 signature 必定 位在第一個短指令

參考文獻

相關文件

本計劃旨在根據修訂初中中國歷史課程的調適 課程大綱,發展適合非華語生使用的學與教資

圖 4.7 是場景一的俯視圖,可以由圖中得知牆壁出現在自走車的左側,而 自走車根據所在位置定義直走是 Y 軸方向,而右轉是 X 軸方向。初始位置自走車

Wi-Fi 定位即利用無線網路來傳遞信號,根據各種網路參數和算法可以找出使用

類神經網路 ( Artificial Neural Network ),根據 DARPA Neural Network

CD Hybrid 的方法大致如下,當物件進出某個 Anchor 的感測圓時,使用 DCTT 的方法產生的評估位置當作物件的評估位置。當 Anchor 感測到物件但又沒有進 出任何其他

依學理而言,「大學招生的主要任務,一方面在於為大學選擇

中華大學應用數學研究所 研 究 生:黃仁性 敬啟 指導教授:楊錦章 教授 中華民國九十六年..

本規定所寫教學活動,指教師為 達成教學目標,帶領學生所從事 的活動項目,如在同步教學中的