# Parallelism 平行化筆記
## DECLARATION
>現在正值期末考週,這篇文暫時以大轉「正常」範圍點到為止。期末結束之後再把內容補足。謝謝大家體諒🥲
> [name=K.Wei][time=May 29, 2022 02:12][color=red]
## Type of Parallelism 平行化種類
1. Instruction-level Parallelism (ILP) - 指令層級平行
2. Data-level Parallelism (DLP) - 資料階級平行
## Pre-knowledges Advised 建議預備知識
1. Machine Laguage 機器語言 (Ref.1 Ch2)
2. Pipeline 管線化技術 (Ref.1 Ch2)
3. 名詞部分:
- Instruction - 指令:ADD、LOAD、STORE 等
- Stage - 階段: 管線化後將指令拆解成不同階段
- Ex. 5-stage: IF、ID、EX、MEM、WB。
- 有空再另外寫一篇文說明這邊
## Overview 概述
- **ILP, Instruction-level Parallelism**
- 主要討論**指令與指令**之間的平行化
- ex. `load/store` & `add/jump` 並行處理。 (Overview Appendix)
- 演進過程:
```flow
i=>start: ILP
g1=>operation: Dual Issue
g2=>operation: Superscalar 超純量
g3=>operation: Hyper-threading/SimultaneousMultithreading (HT/SMT)
超執行緒/同時多執行緒(相同)
i->g1->g2->g3
```
- **DLP, Data-level Parallelism**
- 主要討論相同指令不同**資料**的平行化
- ex. `add R1, S1, T1` 與 `add R2, S2, T2` 並行處理。 (Overview Appendix)
- 演進過程:
```flow
i=>start: DLP
g1=>operation: SIMD (Intel AVX)
g2=>operation: Vector
g3=>operation: GPU Large Scale Vector
i->g1->g2->g3
```
## ILP, Instruction-level Parallelism
### 如何提升 ILP
- 更深的 Pipeline
- 從 5-stage 變成 n-stage, n>5
- Multiple Issue
### Multiple Issue
- Static Multiple-issue Processors
- **VLIW, Very Long Instruction Word 超長指令字**
- 在 CPU 內增加相同的線路與元件,平行化處理兩條指令(同一個 Cycle 內可以同時執行兩個相同的 Stage)
- 並搭配 Compiler 於 Compile Time 重新編排指令。
- **重新編排指令:** 此種平行方式只適用於不同 Type 的 Instruction,因此需要進行 Instruction Scheduling。
- **Instruction Scheduling:** Compiler 重新規劃指令順序。
- Dynamic Multiple-issue Processors
- Superscalar 超純量
## Reference
1. *Computer Science - an Overview*
2. *Foundations of Computer Science*
3. **Optional:** *Computer Organization and Design RISC-V edition* `(NYCU C.O. Textbook)`
---
有錯誤或相關問題歡迎來信
---
###### tags: `Computer Organization`