• 沒有找到結果。

數個不相關(或平行)的指令,若處理器的有足夠的功能模組,則這些平行的指令 可以在同一個時間週期被執行,以提升系統效能,這種指令間可能出現的平行現象就稱 為指令層級平行度(Instruction-level Parallelism,ILP)。如下圖 2-1:

1. e = a + b 2. f = c + d 3. g = e * f

圖 2-1 Illustrative Code Sequence

第 3 個運算會取決於第 1 個和第 2 個運算完的結果,然而第 1 個運算與第 2 個運算並不 相依於其他運算,所以第 1 個與第 2 個的運算可以同時被執行; 第 1 或 2 個與第 3 個運 算之間存在了資料相依的特性,因此不可以同時被執行。

發掘(Exploit)指令間平行的方法有(1) Dynamic Scheduling: 以硬體的方式 Run-time 發掘隱藏在程式中的平行的指令,如 Tomasulo’s Algorithm 用於 Superscalar Processor 中;

(2) Static Scheduling: 以軟體排程的方式,在 Compiler-time 發掘並決定可同時執行的平 行指令,如 VLIW Processor。

Exploiting ILP 的技巧,一直是過去 5~10 年中處理器效能增進的主要原因。但指令 間的平行度有限。在論文[3][4]中指出,於無限的硬體資源下,依照各個應用程式的不 同,平均的指令間平行度約為 7。而在論文[5 的研究裡指出,現今高效能 Multiple-issue VLIW DSP 處理器,通常配置 8 到 16 個功能模組(Functional Units),而其平均可同時 分派的指令卻只有 4~8。換句話說,DSP 的利用率都低於 50%,有些甚至更低。

有限的指令層級平行度,使得現今高效能處理器的設計朝向具更高平行度的發展邁 進:如資料層級平行度(Data-level Parallelism,DLP):如 MMX、SIMD 等,以及多執 行緒層級平行度(Thread-level Parallelism,TLP):執行緒為一段連續執行的程式,它可 獨立於程式的其他部分而平行的去執行。多重執行緒(Multithreading)處理器在單一的 管線內,可以同時執行多個不同執行緒的指令[9]。不同於 ILP 需利用軟體或硬體方式來 探尋具平行化的指令,DLP 與 TLP,顯而易見的,不同的 Data Block 與 Data Block 之間、

或不同的 Thread 與 Thread 之間,其本身具有相當高的平行度。

多重執行緒處理器依照執行緒切換的方式,可分成以下兩種:

1. 指令交錯多執行緒架構(Interleaved Multithreading Architecture, IMT)

指令交錯多執行緒架構,其執行緒切換為以 TDM (Time-division Multiplexing)

的模式,以每一時間週期為基礎,各執行緒以依序、循環的(Round Robin)方式進行 切換。在適當設計下,IMT 處理器中的 Thread 執行,可以接近類似 Sequential Processor 的 Behavior,具有 Zero Instruction Latency 的特性。處理器因不需多餘的回饋(Forwarding)

路徑,可以使得處理器的 Datapath 設計更為簡單。此外,因每個執行緒以每一個時間週 期為基礎做切換,若以一 8-Thread IMT DSP 為例,執行緒中的指令可以有 8-Cycle 的執 行 時 間 。 因 此 , 在 設 計 上 允 許 於 執 行 緒 中 執 行 一 Complicated Instruction ( 如 Multiply+Shift+Accumulation 等)。

基於 IMT 架構,因 Zero Instruction Latency 的特性,可避免因指令延遲時間所產生 的管線延遲(Pipeline Stalls),且因每個時間週期做不同執行緒的切換,如此可以降低程 式中 Long Stalls 對處理器利用率的影響;但也因為其執行緒切換的方式為 Cycle-by-Cycle 模式,對個別執行緒而言,其效能會降低。

2. 塊狀交錯多執行緒架構(Blocked Multithreading Architecture, BMT)

塊狀交錯多執行緒架構,不同於 IMT 架構,其執行緒切換的方式為以事件驅動

(Even Driven)的模式,當遇到一個很長的時間延遲,如 L2 Cache Miss 時,其延遲時 間大於執行緒切換所需的代價(Cost)時,才進行執行緒的切換。BMT 架構,因以事件 驅動的模式做執行緒的切換,所以仍須處理 Instruction Latency 的問題; 但因執行緒切換 的頻率(相較於 IMT 架構)不高,因此單一執行緒的處理效能不會被減慢(Slow Down)。 但另一方面,因執行緒的切換後,仍須付出管線的起始代價(Pipeline Start-up Cost),

因此,若執行緒常做切換,系統效能會降低。另外,值得一提的是,在 BMT 架構中,

為顧及各個執行緒的使用機會均等,作業程式會設定每個執行緒一個固定執行時間(可 用 Timer 來設定),當 Timer Expire 時,會強制做執行緒的切換。

  除了 IMT 以及 BMT 架構之外,還有結合 ILP 與 TLP 的同時多執行緒架構

(Simultaneous Multithreading Architecture,SMT)。SMT 以超純量處理器(Superscalar)

為基礎,利用超純量處理器內多重發派(Multiple-issue)、動態排程(Dynamic Scheduling)

和暫存器重新命名(Register Renaming)的技巧,它可在同一個週期中執行多個執行緒 內的指令,來增加處理器運算單元(Functional Unit)的使用率。但 SMT 架構非常複雜,

同時在多個執行緒中探詢平行指令,造成設計上的困難。SMT 架構,常被運用在伺服 器的處理器市場中。

  我們認為,IMT 的架構可讓 DSP Processor 的 Datapath 設計簡單,如果能維持高 使用率,其 Zero Instruction Latency 的功能,可使 IMT DSP 效能達到滿載。唯一需解決

的問題是,應用程式中 Thread 的產生,以及如何維持 DSP 的高使用率。

相關文件