--- 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為基底) ![](https://i.imgur.com/4HXxv1x.jpg) ### (三)時代進步慢慢取代 #### 1、個人移動設備(Personal Mobile Device , PMD) ##### 手機性能逐年加強,以慢慢取代個人電腦(pc),不論是在價格上親民外,觸碰螢幕也取代滑鼠及鍵盤,體積小使用也不限地點,許多App應用程式增加方便性。 #### 2、雲端運算 ##### 在網絡上提供大量的伺服器及不同的服務,再配合各公司營運出租不同的雲端伺服器,漸而取代了傳統的伺服器, ### (四)練習題 ![](https://i.imgur.com/dOg9Otu.jpg) #### 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 給電腦執行 ``` ### (三)語言翻譯如下示意圖 ![](https://i.imgur.com/0CZY3Xz.jpg) ## 四、簡易記憶體介紹 | | 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) | ## 五、晶片製作過程 ![](https://i.imgur.com/2xf8oD2.jpg) ##### 公式如下: ###### 晶片價格、晶片數、良率 ![](https://i.imgur.com/iC5s7H8.jpg) ## 六、性能 ### (一)說明比較 #### 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、練習題 ![](https://i.imgur.com/PbJ5ctf.jpg) ### (三)性能計算(時間) #### 1、依上面說明,以時間角度切入,故需要先定義電腦的時間,clock(時脈) =頻率倒數( 1sec電腦經過多少次clock ) #### 2、公式 ##### 使用時間越短效能越好 ![](https://i.imgur.com/qLUQkm1.jpg) ![](https://i.imgur.com/6CqcHYM.jpg) ##### 程式的CPU執行時間 = 為程式的CPU時脈週期 x 時脈週期的時間 ![](https://i.imgur.com/cLzQ6NM.jpg) ##### 程式的CPU執行時間 = 為程式的CPU時脈週期數量 / 時脈頻率 #### 3、練習題 ![](https://i.imgur.com/mw6wJIn.jpg) ### (四)指令性能(生產量) #### 1、依上面說明,以生產量角度切入,當時間固定情形下,我們則需要判斷執行指令需要花多少clock。 #### 2、公式 ![](https://i.imgur.com/fXEWf98.jpg) ##### CPU時脈週期數 = 程式的指令數 x 每個指令的平均時脈週期數 ##### CPI = 平均一個指令所需要的時脈週期數 ![](https://i.imgur.com/iO48Vqy.jpg) ##### CPU時間 = 指令數 x CPI x 時脈週期的時間 ![](https://i.imgur.com/95X6Ce1.jpg) ##### CPU時間 = (指令數 x CPI) / 時脈頻率 #### 3、練習題 ![](https://i.imgur.com/lTaPu3z.jpg) ![](https://i.imgur.com/VmSFWP1.jpg) ### (五)性能評估謬誤 #### 1、MIPS (million instructions per second) ##### (1)一秒可以執行幾百萬個指令數 ##### (2)公式 ![](https://i.imgur.com/RFEsIpi.jpg) ##### MIPS = 指令數 / 執行時間x10^6^ ![](https://i.imgur.com/GmSknW9.jpg) ##### MIPS = 指令數 /( (指令數xCPI) / 時脈頻率x10^6^) #### 2、阿姆達爾定律(Amdahl’s Law) ![](https://i.imgur.com/6bvgInP.jpg) ##### (1)公式 ##### 執行時間的改善 = (受影響的執行時間/加速幾倍) + 未受影響的執行時間 #### 七、習題 (15題目)