---
# System prepended metadata

title: Chap. 00 - Introduction
tags: [課堂筆記, 計算機組織]

---

# Chap. 00 - Introduction
> 課程內容 : 清華大學開放式課程 黃婷婷教授
> 參考書目 : Computer Organization and Design: The Hardware/Software Interface (5th), David A. Patterson, John L. Hennessy
> 
> 其他科目內容請參見 [[Here]](https://hackmd.io/@ChenZE/By4SOO6Jyl)

## 1. Basic organization of computer

### 1.1 Von Neumann Computer (馮紐曼電腦)
Von Neumann computer 是現代電腦的抽象架構表示法，目前所有的電腦都可以用這種架構來做表示

![Von_Neumann_Architecture](https://hackmd.io/_uploads/rk_-c0rtR.svg)


* CPU = CU + ALU
    * CU : 表示控制單元 (control unit)
    * ALU : 表示算數與邏輯單元(arithmetic & logoc unit)
    * 兩者共同組成電腦的 CPU (中央處理器)
* Memory : 主記憶體
* I/P : input, 輸入設備
* O/P : optput, 輸出設備

### 1.2 Basic organization
![S__2146321_0](https://hackmd.io/_uploads/ryQmth77A.jpg)

## 2. Computer architecture
計算機組織是由軟體(SW)與硬體(HW)共同組成(如下圖)，而介於軟體與硬體之間的介面稱為 **I**nstruction **S**et **A**rchitecture (ISA, 指令集架構)，用來將上層的軟體連接應用在不同的機器架構上。當剩層的軟體有需求時，可透過 ISA 呼叫下層的硬體執行任務

:::info 
:bulb: **Computer architecture = ISA + Machine organization**
:::

舉例來說，一段高階語言(Ex: C)的程式碼
```c
temp = v[k];
v[k] = v[k+1];
v[k+1] = temp;
```
執行時會先經過 compiler (編譯器) 編譯成 assembly language (組合語言)
```assebmly
lw $15, 0($2)
lw $16, 4($2)
sw $16, 0($2)
sw $15, 4($2)
```
再經過 assembler (組譯器) 組譯成 machine language (機器語言)，machine language 最後變成電腦可使用的控制訊號
而 ISA 會在 assembler 的時候介入，將組合語言組譯成機器語言，用以將上層命令翻譯成不同架構也可以讀懂的機器語言

![S__2146324](https://hackmd.io/_uploads/Bk1GC3mXA.jpg)

**常見的 ISA**
* MIPS 架構
* Intel 系列的 Pentium, X86, ...等，主要聚焦在 PC 設備
* ARM 架構，主要聚焦在手機等設備
* RISV-C (精簡指令集架構)