---
tags: 計算機組織與結構
---
# 第一章 計算機的基本概要與技術
## 一、計算機的進步
### (一)過去可能是科幻,如今都實現了。
#### 1、車載計算機:有倒車距離緊示,車道偏離警告、安全氣囊發生碰撞時對乘客的保護等。
#### 2、手機:在每個角落都可以自由的通信
#### 3、DNA配對:隨著計算機運算功能變快後,配對DNA上的價格也會隨之下降
#### 4、網際網路:亦作WWW、Web,是一個透過網際網路存取的,由許多互相連結的超文字組成的系統。
#### 5、搜尋引擎:能夠在網路上快速的找到所需信息
### (二)計算機的應用及分類
#### 1、個人計算機(Personal Computer, PC)
##### 用於個人使用的計算機,通常包含圖形顯示器、鍵盤和滑鼠等。
#### 2、伺服器(server)
##### 用於多用戶運行的大型程序計算機,通常由多個用戶並行使用,並且一般通過網路來造訪。
##### 超級計算機(supercomputer):運算功能極強的伺服器。
#### 3、嵌入式計算機(embedded computer)
##### 數量最多應用最廣的一類計算機,包括汽車、電視中的微處理器等。
#### 4、補充說明(單位換算表)
##### KB、MB、GB...等(以10為基底)
##### KiB、MiB、GiB...等(以2為基底)

### (三)時代進步慢慢取代
#### 1、個人移動設備(Personal Mobile Device , PMD)
##### 手機性能逐年加強,以慢慢取代個人電腦(pc),不論是在價格上親民外,觸碰螢幕也取代滑鼠及鍵盤,體積小使用也不限地點,許多App應用程式增加方便性。
#### 2、雲端運算
##### 在網絡上提供大量的伺服器及不同的服務,再配合各公司營運出租不同的雲端伺服器,漸而取代了傳統的伺服器,
### (四)練習題

#### 1、
#### 2、
| Term | Algorithm<br>(演算法) | Programming Language<br>(程式語言) | Compiler<br>(編譯器) | Instruction set architecture<br>(指令集) | Computer organization <br>(電腦組織架構) | VLSI technology<br> (VLSI 技術) |
|:-----------------:|:---------------------:|:----------------------------------:|:--------------------:|:----------------------------------------:|:----------------------------------------:|:-------------------------------:|
| Instruction count | V | V | V | V | | |
| CPI | V | V | V | V | V | V |
| Clock cycle time | | | | V | V | V |
## 二、計算機的8個重要理念
### (一)摩爾定律 (Moore'Law)
#### 摩爾定律指每過18-24個月(1.5-2年)IC(積體電路)上可容納的電晶體數目會增加一倍。
### (二)使用抽像簡化設計 (Use Abstraction to Simplify Design)
#### 例如像陣列與佇列,不看他底層的程式如何運行,只要理解它的功用及操作,雖然簡化但可以加快設計的進程
### (三)快速處理常見案例 (Make the Common Case Fast)
#### 最佳化加快常執行的部分,效益遠大於最佳化加快不常執行的部分
### (四)計算機並行提高效能 (Performance via Parallelism)
#### 透過並行處理加快效能,不用等一個程序結束後才開始新的程序,在程序休息或等待IO時,即可切換其他的程序執行。
### (五)流水線流程提供效能 (Performance via Pipelining)
#### 像洗衣服一樣,若有1台洗衣機含洗(30Min)、脫(30Min)、烘(30Min),功能,一次洗1籃衣服,3Hr,可以洗2籃衣服。
#### 若洗衣機功能分成,洗衣機、脫水機、烘乾機,那此時第1籃衣服洗完丟入脫水機時,第2籃衣服即可以丟入洗衣機中,3Hr,可以洗4籃衣服。
### (六)好的預測提高效能(Performance via Prediction)
#### 像branch指令進入流水線流程時,需要跳轉至別處,後面跟隨進來流水線的指令將作廢,會額外犧牲一些時間,但如果我們預測的好,可以減少犧牲時間的次數,而不是每次遇到branch皆需要犧牲時間。
### (七)儲存裝置階層化(Hierarchy of Memories)
#### 儲存裝置速度:暫存器<快閃記憶體<記憶體<硬碟,為了加快速度離CPU越近的儲存裝置越快(資料可儲存少多),越遠的儲存裝置越慢(資料可儲存較多),有點像各司其職,將運算快的裝置放在最需要運算的地方,最需要大量儲存資料的地放置硬碟裝置。
### (八)透過備援來增加可靠度(Dependability via Redundancy)
#### 計算機不只要求運算快還需要可靠,可透過多餘設備來增加可靠度,例如使用多餘的硬碟做資料的備援,倘若資料損毀,還可以從備援硬碟復原資料。
## 三、從使用者至計算機
### (一)簡單分類
```cpp=
1 [使用者(應用程式)] 透過
↓↓↓↓↓↓↓↓↓↓↓↓↓
2 [作業系統]來操作
↓↓↓↓↓↓↓↓↓↓↓↓↓
3 [計算機(電腦)]
可以想成作業系統是使用者與電腦間的翻譯員 //實際上作業系統的功用就不在此處贅述
```
### (二)翻譯過程
```cpp=
1 使用者(user) 撰寫高階語言
↓↓↓↓↓↓↓↓↓↓↓↓↓
2 編譯器(Complier)翻譯成組合語言
↓↓↓↓↓↓↓↓↓↓↓↓↓
3 連結器(linker)組合語言 + 函式庫 翻譯成機器語言
↓↓↓↓↓↓↓↓↓↓↓↓↓
4 載入器(loader) 將機器語言載入記憶體
↓↓↓↓↓↓↓↓↓↓↓↓↓
5 給電腦執行
```
### (三)語言翻譯如下示意圖

## 四、簡易記憶體介紹
| | Advantage<br>優點 | Disadvantage<br>缺點 | | 備註
| --- | ----------------- | -------------------- | --- |
| 靜態隨機存取記憶體<br>Static Random Access Memory<br>SRAM | 1.速度比快<br>2.耗電量較低<|1.揮發性記憶體(Volatile memory),斷電後資料就會消失<br>2.價格高<br>3.占用面積較大 通常使用在快取記憶體(Cache) | |
| 動態隨機存取記憶體<br>Dynamic Random Access Memory<br>DRAM | 1.價格較低<br>2.體積較小 = 密度高<br> | 1.揮發性記憶體(Volatile memory),斷電後資料就會消失<br>2.速度較慢<br>3.耗電量較高 | 通常使用在主記憶體(Main Memory) |
## 五、晶片製作過程

##### 公式如下:
###### 晶片價格、晶片數、良率

## 六、性能
### (一)說明比較
#### 1、時間角度切入:兩台不同的計算機(電腦),執行一樣的程序,完成時間(response time,execution time)越短的效能越好。
#### 2、產量角度切入:兩台不同的計算機(電腦),在一樣的時間內,誰執行完的程序較多(throughput)效能越好。
#### 3、練習題
### (二)性能計算
#### 1、反應時間(response time)
##### 泛指CPU執行時間 = 使用者使用CPU時間(user CPU time) + 系統使用CPU時間(system CPU time),但使用者使用時間(user CPU time),難以衡量比較,故CPU time 通常討論的都是系統使用CPU時間(system CPU time)。
#### 2、練習題

### (三)性能計算(時間)
#### 1、依上面說明,以時間角度切入,故需要先定義電腦的時間,clock(時脈) =頻率倒數( 1sec電腦經過多少次clock )
#### 2、公式
##### 使用時間越短效能越好


##### 程式的CPU執行時間 = 為程式的CPU時脈週期 x 時脈週期的時間

##### 程式的CPU執行時間 = 為程式的CPU時脈週期數量 / 時脈頻率
#### 3、練習題

### (四)指令性能(生產量)
#### 1、依上面說明,以生產量角度切入,當時間固定情形下,我們則需要判斷執行指令需要花多少clock。
#### 2、公式

##### CPU時脈週期數 = 程式的指令數 x 每個指令的平均時脈週期數
##### CPI = 平均一個指令所需要的時脈週期數

##### CPU時間 = 指令數 x CPI x 時脈週期的時間

##### CPU時間 = (指令數 x CPI) / 時脈頻率
#### 3、練習題


### (五)性能評估謬誤
#### 1、MIPS (million instructions per second)
##### (1)一秒可以執行幾百萬個指令數
##### (2)公式

##### MIPS = 指令數 / 執行時間x10^6^

##### MIPS = 指令數 /( (指令數xCPI) / 時脈頻率x10^6^)
#### 2、阿姆達爾定律(Amdahl’s Law)

##### (1)公式
##### 執行時間的改善 = (受影響的執行時間/加速幾倍) + 未受影響的執行時間
#### 七、習題 (15題目)