# Introduction ## 1. 關於 Processor ### 1.1 Processor 是什麼 負責執行計算機程序中的指令,包括算術運算、邏輯運算、控制指令流和數據傳輸等基本操作 - Arithmetic Logic Unit (ALU): Executes arithmetic and logical operations. - Control Unit (CU): Decodes instructions and controls all the components. - Registers: High-speed storage units, used for temporarily storing data and instructions. - Cache: storage component between register and main memory. - Bus: Data transmission channel used to connect the processor with other hardware components. ### 1.2 影響 Process Performance 的因素 ![Untitled (1)](https://hackmd.io/_uploads/BJcVVdAU0.png) 因素: Program, Compiler, Instruction Set, Organization, Technology 指標: Instruction Count, CPI(Cycle per instruction), Clock Rate,這些指標結合起來可以用來計算總體的性能表現 每一個因素都可能影響到以上三個關於性能的指標 ! 有些版本顯示 ISA 也會影響到 clock rate > 分析 1. **Program(程序)**:程序的設計和演算法效率可以直接影響到 Instruction Count 和 CPI ex: 更高效的演算法可能需要更少的指令來完成相同的任務 2. **Compiler(編譯器)**:編譯器的優化水平可以影響到生成的code的效率,從而影響指令數和 CPI ex: 高度優化的編譯器可以減少執行程序所需的指令數和降低 CPI 3. **Instruction Set(指令集)**:不同的指令集設計(例如RISC-V、x86、ARM等)會對指令數、CPI 和 Clock Rate 有不同的影響。一些指令集可能設計為較少指令數但每指令的週期數可能較多 RISC vs. CISC 4. **Organization(組織結構)**:指的可能是處理器的微架構,包括如何組織 pipeline, cache等,這些因素會影響 CPI 和Clock Rate 5. **Technology (Moore's law)(技術,摩爾定律)** 摩爾定律: 半導體元件的密度每兩年增加一倍 更高的元件密度意味著transistor之間的距離變短,減少了訊號傳遞的延遲,就可以提高數據傳輸的速度,從而提升整體的 Clock Rate ### 1.3 processor performance 的演進 ![processor 演進](https://hackmd.io/_uploads/rykcV_RLC.png) ### 1.4 ISA (Instruction set Architecture) <img src="https://hackmd.io/_uploads/Bkh5EOR80.png" width="60%"> - 目標: 夠軟體用,且硬體寫得出來 - CISC v.s. RISC ++CISC (complex instruction set computer)++ 早期memory貴,而CISC一條指令做很多事,instruction memory較小 缺點: 硬體難做 ++RISC (reduced instruction set computer)++ 需要compiler將complex instruction compile成simple instruction (C、java… → assembly language) ## 2. Uni-processor to Multi-processor ### 2.1 Parallelism 目的: 提高speed 1. **Instruction-level parallelism** 在一個 processor 中同時執行多條指令 2. **Data-level parallelism** - 單指令多數據 (SIMD) : 單個指令在多個數據元素上同時操作 - Vector Processors - GPU: 擁有大量的並行處理單元,專為Data-level parallelism 設計 3. **Thread-level parallelism** 多處理器系統(Multi-Processor Systems)和多核處理器(Multi-Core Processors) 通過多個處理單元同時執行不同任務來提高性能 4. **Request-level parallelism (不討論)** 同時處理多個獨立的請求,這些請求之間沒有相互依賴關係。RLP 主要應用於伺服器、資料庫管理系統和高性能計算等場景,以提高系統的吞吐量和資源利用率。 ### 2.2 Flynn’s Taxonomy 高效能計算機的分類方式,分類計算機系統的parallelism 這種分類基於兩個基本維度:指令流(instruction streams)和數據流(data streams) <img src="https://hackmd.io/_uploads/B10QBu0LA.png" width="70%"> 1. **單指令流單數據流(SISD)** - Single Instruction stream, Single Data stream - 每個時間單位只處理一個指令和一個數據流。在SISD系統中,每個操作是順序執行的,沒有並行處理。(早期) 2. **單指令流多數據流(SIMD)** - Single Instruction stream, Multiple Data streams - 單一指令操作多個數據流。 - 常用在GPU,非常適合於data parallelism 的任務 3. **多指令流單數據流(MISD)** - Multiple Instruction streams, Single Data stream - 少見 4. **多指令流多數據流(MIMD)** - Multiple Instruction streams, Multiple Data streams - 允許多個獨立處理的指令流同時操作多個數據流 - 多核和多處理器系統(如伺服器、高性能計算機和現代個人電腦)中最常見的parallel方式。 - Thread parallelism ## 3. 關於IC ### 3.1 Cost of an IC <img src="https://hackmd.io/_uploads/rJ_4rd0UA.png" width="80%"> ### 3.2 評估 module/system 的 dependability (可靠性) * Mean Time to Failure(MTTF): run 多久碰到 failure * Mean Time to Repair(MTTR): 平均修復時間 * Mean Time between Failure(MTBF): MTTF + MTTR,平均故障的間隔時間 * Availability = MTTF/MTBF * FIT (failures in time) = 1/MTTF, the rate of failures ### 3.3 評估 speed 1. Time **Wall Clock Time** - 也稱為 "real time" 或 "elapsed time",指的是從**程式開始執行到結束所經過的實際時間**。這包括所有程序執行時所花費的時間,例如計算時間、系統呼叫、I/O操作,甚至其他程式的干擾等,ex: 檔案讀寫、介面操作 - 實際反映了一個用戶等待程式完成所需的時間。 **CPU Time**: - 指的是CPU實際上花費在你的程式上的時間,不包括等待系統資源(如I/O操作或等待其他程序執行)的時間。 <img src="https://hackmd.io/_uploads/S14rSd080.png" width="80%"> - relation between CPI and CPU Time <img src="https://hackmd.io/_uploads/rksSH_0UC.png" width="80%"> 2. benchmark 提供一個公平且一致的方法來比較不同CPU之間的性能 ### 3.4 Principle of Computer Design <img src="https://hackmd.io/_uploads/rJK8rd0UC.png" width="80%"> Locality: 1. **temporal locality**(locality in time), 2. **spatial locality**(locality in space) ## 附註 - word 的大小取決於所使用的處理器和系統的位數。例如,在現代的 64位系統中,一個 word 通常是 8 bytes。 - byte-addressable: 每個byte在記憶體都有一個獨立的地址