---
# System prepended metadata

title: Chapter_1 Introduction
tags: [Computer Architecture]

---

# 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在記憶體都有一個獨立的地址