(音樂) 好 我們今天開始上課 那上一次呢 我們介紹大家這個 Computer 怎麼演進的過程 那今天我們會介紹 Abstraction 還有 Performance 就是說 我們的效能要怎麼計算 電腦的效能要怎麼計算 Abstraction 什麼意思呢 就是抽象 你看它的意思就是抽象的意思對不對 也就是說 其實我們在看一個電腦的時候 它從不同層級去看它 從比較 high level 的 比較中間的 level 那你如果比較 high level 你就可以把下面 low level 的東西 把它隱藏下來 比較了解 那你了解了以後 你再往下面一個低層去了解它 那這 abstraction 的意思就是這樣 我們看看電腦在不同的層級上面呢 我們怎麼樣去看它電腦組成的 這些 component 的元素 好 我們先看 在整個我們來講電腦 我們一定說電腦分為哪個部分 硬體 軟體 對不對 你這樣硬體 軟體 那硬體跟軟體什麼樣的關係呢 硬體 本身一個單獨硬體 它是不會動作的 對不對 那光是一個軟體也不會動作 軟體有點像是去驅動這個硬體做的事情 那軟體又分為兩種 一種叫做 application 的 program 另外一種叫 system 的 program 這什麼意思呢 就是說它的層級大概是這樣 就是這裡面呢我們可以看到是 這裡面是我們的 hardware 然後再過來是我們的 system software 再來就是 application 的 software 那 application software 就是 像我們平常這些 譬如說你現在在銀行啊 它有銀行的系統啊 飛機場有飛機場的系統啊 譬如說你的 game 你玩 game 也有 game application 的 software 這都是應用的軟體 那應用的軟體它怎麼樣去 run 呢 它是要透過 system 的 software 建設部分兩種 一種叫 compiler 一種叫 OS compiler 是幹什麼呢 它是幫你從 high level language translate 成 machine 懂的 language 就是把它 translate 經過很多步驟把它 translate 成 因為我們在第一堂上講過說 這個電腦只有01對不對 那我們叫我們這 humanbeing 我們人去寫這個01的這個 program 太麻煩了對不對 而且沒辦法寫很大 也沒辦法有很好的這個生產力 所以我們把它設計成 high level language 就用 high level language 來寫 然後透過 compiler 把它我們做 translation 然後變成 machine code 所以我需要一個 compiler 這 system software 它本身並沒有做什麼 application 它只幫忙你的 application 做 translation 那另外一個 OS operating system 因為我們在系統裡面有很多東西 那是大家共用的 譬如說 I/O 的地方 我要去處理 I/O 那你也要 我也用 那幹嘛不寫一個 code 在裡面 大家去 share 就好了 所以 OS 就類似這種功能 它 handle I/O 或者說 memory storage 比較 low level 的 我們如果用很 high level 的 view 去看它的話 大家都要去用它的話 有一個人要去操縱 管理這件事情 那就 OS 做的 那另外呢 很多的 process 可能要同時去 access 它 access 一些 resource 那我們要有一個人來決定說 誰可以先用 誰可以後用 scheduling sharing resource 那這也是 OS 做的 那所以 system software 就分為兩種 一種叫 compiler 叫 operating system 那這一個是協助 application software 做事情 那另外就是我們 hardware 所以從這個角度來看 人家以後問你 你很簡單 說 computer 就是三大部分 hardware 對 software 所以分兩個部分 一個 system software 一個 application software 那其實你將來做到研究所 走的各領域 也一定是落在這邊 你是做 application 呢 還是做 system 呢 還是要做 hardware 這是我們很出一個大的分類 好 再下來 如果我們就 program code 來講的話 我們 program 因為剛剛講說 我們寫的時候 你在大一的時候學過 可能都是 C 或者是 Java 那都是很 high level language 可是我們上次講過 這個 machine 怎麼可能看得懂 你的 high level language 呢 對不對 他只懂得 0 跟 1 只懂得 0 跟 1 在下面這個地方 0 跟 1 好 所以我們如果從 program code 我們也可以把它分很多 level 最高的當然就叫做 high level language 譬如你的 C 這些東西 然後寫法 這邊譬如有一個例子叫 swap 他寫得非常 high level 他這個呢 基本上跟你的 problem 的 domain 很像 就是他也許是數學符號 一些英文啊 參雜在裡面 你很容易就寫 那他主要 provide 什麼東西 就是這個 就是生產力 因為你要很 high level 對不對 你才可以寫很多東西 對不對 你可以寫得很快 寫得很多 如果寫成這樣 要叫你寫這樣的 code 你有辦法寫嗎 你辦法寫 對不對 所以 high level language 它提供 productivity 還有 portability 這什麼意思呢 就是說我現在不同的機器 它可能 machine code 就是 instruction code instruction set 不一樣 對不對 可是我只要寫成 high level language 都都都一樣 C 大家一樣 不管在哪一台 run 通通都一樣 然後透過那一台機器的 compiler 再把它 translate 成它的 machine code 所以它提供 可以在不同的機器可以 run 所以 high level language 最高的 level 好 那經過 compiler 之後 你就會變成這樣這樣 有點這個就是我們所謂 instruction set 一些 language 它跟 machine instruction 已經很像了 但是它使用這個 還是用比較 high level 的方式表示 譬如說 你的這個叫 LW 叫做 load 對不對 可是 load 實際上對應可能是 幾個 bit 對不對 但是它用那個 一個 symbol 讓我們很容易看得出來 所以這是到 compiler 就 translate 成 加 low level 但是我們還是可以理解的 這個叫做 assembly 的 就是跟我們的 intrusion set 很像的那樣 那樣的一個表示方法 然後再透過這個 assembler 呢 它就等於是 一對一的 translation 很簡單 譬如 load 它的 code 長怎麼樣 op code 長怎麼樣 然後多少有一個 intrusion format 我們後面會講 直接把它 translate 成 0101 的狀況 那所以這個呢 如果從 program code 那個 level 我們一看 所以 high level 然後到中間 assembly 再過來到 machine 也是不同的 level 好 再來 好 再來如果看一個 computer 的話 如果 hardware 的部分呢 那包括什麼東西呢 當然 process 的部分 process 的部分 不管你是 desktop server 或 embedded computer 我們前面講過可以分為這三類 它的 hardware 的部分 process 的部分是一定的 一樣 不管你怎麼樣做 它的 intrusion set 就不一樣 可是它一定有一個 process process 去處理你這些運算 還有 memory 要儲存的地方 那另外還有 I/O 這是這個 跟這個外面 input output device 那 I/O 我們可以分為 就 user interface device 跟我們 user 做連絡的 做溝通的 Display 啊 keyboard 啊 mouse 還有 storage device 因為我們機器 processing 處理完畢之後 它要儲存啊 存啊取啊 所以放在 storage 有哪些 device 還有 network adapter 就是說 machine 跟 machine 之間 我可以連起來 也可以做溝通啊 所以有 network adapter 那我們就來一一看這些 component 這是從最外表看 一個 component 最外表看一個 computer 對不對 它包括哪些東西呢 包括一個 display 對不對 這是 output device 它包括 keyboard 這是 input device 最外面就是這些東西嘛 mouse 它是 input device 還有一個 connector 去連接你的 network 好 那我們最外層是這樣 我們再進一層去看看 那 mouse 是長什麼樣子 再進一步去分析分解說 mouse 長什麼樣 mouse 它的運作是怎麼樣一個狀況呢 這是一個 optical 的 mouse 那跟以前對應的一個機械 如果你更早前的話 你高中或者是更早的時候 你的 mouse 可能裡面有一個圓球對不對 圓球就滾來滾去 那現在都不是那種 現在都是像這種 optical 的 光學這種 mouse 它怎麼運作呢 它有一個 LED 燈 它會照有光產生出來 照你的那個平面 然後它其實裡面就是一個小小的 camera 它每一秒鐘可以照 1500 的 張相 那它其實就是一個 process 在那邊處理你的影像 當你在移動的時候 它就看這張照片跟下一張照片 它差異在哪裡 就做 image processing 就這樣影像處理 就做影像處理 就是一個小小的 process 做影像處理 那它裡面內建一個 low resolution 的意思 就是說低解析度的 camera 然後每一秒可以照很多很多的照相 那當你在移動它就可以照相 就比對 difference 來告訴你 XY 的移動方向 那跟傳統我們這個可能大家知道說 以前是一個球在裡面 它那個怎麼運作呢 它是說當你移動的時候 它有一個 counter 有一個計數器 怎麼移動 XY 就一直 increment, decrement,加減 然後就照說你 X 方向,Y 方向 有什麼樣的變化 然後把那個再反應出來 照你這個 mouse 移動的位置 好那這是簡單這個 mouse 的運作的方式 再來看 那我們的 display 我們的螢幕是怎麼樣運作呢 就更低層以下 這就是一種 abstraction 我們最上面看到有這些東西 然後如果再深入去看 mouse 是怎麼運作 display 怎麼運作 那 display 怎麼運作呢 我們一個螢幕裡面其實是用所謂 bitmap 表示它的圖像的 就一點一點一點的去表示它的圖像 那每一點我們稱為一個 pixel 一個 pixel 如果你是黑白的話呢 就是一個點 就代表有 8 個 bit 有不同的灰階程度 就不同的灰階程度 比如說 8 個 bit 你的 0000 1111 就不同的深淺度這樣 那如果你是彩色的話 你就 3 個 要表示 3 種基本的原色 哪 3 個 我們常常說畫美術哪個 3 個是基本的 3 對 RG 紅色對不對 綠色 藍色 對 RGB 就要 3 個都是 8 個 bit 這個東西去組成 就是你這一個 pixel 要表現什麼顏色 那好 你剛剛講過什麼叫 resolution 呢 resolution 就是說它的解析度 也就是說我這一個 display 上面有多少個點 如果我點越多的話 就表示說我 pixel 越多對不對 表示我可以表示更精細的畫質對不對 如果你的點 像這個 208 640 乘 480 有這麼多個點在裡面 到 2560 乘 1680 這麼多的 pixel 當然越多的 pixel 它的解析度越好 好 那表示什麼顏色呢 其實另外一個 frame buffer frame buffer 是它對應的 譬如這個點 它對應到這個 frame buffer 這個點就對應到這個 frame buffer 這 frame buffer 就記錄這樣 digitalize 就是把你的那個資訊 就用剛剛講過這個 8 個 bit 把那個資料放在這個 frame buffer 裡面 這邊是代表什麼數字 這邊就會產生什麼樣 什麼樣的顏色的 bit 這樣 這就是我們 display 的運作大概就是這樣子 好 讓它表面上看到對不對 好 那如果我們把這個 computer 打開的話 這一個 notebook 打開的話 那裡面有什麼東西 像這個就是風扇 對不對 還有這些一些 DVD 的 driver 還有 hard drive 這個地方放電池 這個地方放 memory 放 D-RAM memory 在這邊 這個圖放大就放在這邊 那 memory 呢也是在 board 上面 把它放插進去 插槽進去這就是 memory 那這邊其實是我們的 processor CPU 就在這邊而已 你看相對起來 CPU 其實很小一塊對不對 但它是最貴的 CPU 好 那這邊有一個很重要的觀念 CPU 裡面 跟 memory 有沒有在同一個 chip 上面 跟我們的 memory 是沒有的 沒有在同一個 chip 上面 所以當你 CPU 在運作的時候 你要到 memory 拿東西的話 要到哪個東西是 off chip 就 OFF off chip 是要比較長的時間 這新的一個基本概念 好 那我們再看 在 process 裡面 就剛才那個小小的這個 這邊這麼小塊 這邊這個 CPU 這是我們的 CPU 它到底裡面有什麼東西呢 在第一堂課我們也大概介紹過 它主要包含的就是 Data pass 幫我們做運算 對不對 還有 control 告訴我們說 在哪一個時間要做什麼動作 那另外它還有一個這個 叫做 cache memory 那你說剛才不是 已經有一個 D-RAM 嗎 對不對 那現在這邊又怎麼叫做 cache 呢 Cache 是另外一種 memory 它也是另外一種 它是跟 CPU 跟這個 processor processing unit 是在一起的 它是要做什麼動作 因為這個這種的 Cache memory 它是比較小的 但它很快 為什麼 因為你在運算的時候 常常一些資料 你希望說馬上它又要用到了 馬上就要用到了 那你如果放到 剛才我們講過 memory 它是 off-chip 的 是在我們這個 processor 的外面 對不對 那你如果每次都運算完 就寫回去 要用這個讀出來 很浪費時間對不對 因為它要經過 chip 外面 到外 off 對不對 要 off-chip 所以很浪費時間 所以它就會把說 那是不是跟 processor 在一起 在同一顆 chip 上面喔 我就建一些 memory 那當然這個 memory size 不能很大 因為很大 它會把整個 CPU 速度變慢 然後它會比較貴一點 所以我們就建一個 比較小的 但比較 fast 的 我們叫 cache memory 跟 processor 在一起 所以那將來我們在後面會介紹 cache 啦 memory 啊 它是怎麼樣一個分配 讓我們的資料能夠 要的時候都可以 很快的取到 又快 又快取到 又可以看起來 看起來我們容量很大的 一個 memory 的 structure 好 那所以我們把這個整個打開來看的話 如果這是一個 processor 你看這是一個 4 個 core 4 個 core processor 這 single code 在這邊 你可以看 這邊 你看這個 data cache instruction cache 這是 level 1 的 還有 level 2 的 share 的 cache 還有 level 3 的 share cache 所以在一個 process 上面 在一個 process 上面 這有 4 個 core 其他 cache 的面積也佔了相當大 對不對 相當大 然後真正的 function 運 像這個是 floating point 的 unit 這 load store 還有這 extrusion 其實真正執行的地方 只有這一塊 在做事情的就是這一塊 integers part 可能就這一塊而已 所以 cache 在我們的 process 裡面 佔了很大的一個面積 那 cache 就是 為了我們在運算的時候 注意它是在 chip 上面 on chip 的 它在 chip 上面 所以我的速度可以很快 當我在運算的時候 我不想要把那些常常用到的資料 存回去我的 memory 的話 那那個是 off chip 我就放在 cache 裡面 好 這是 processor 過來 那這個周邊還有些什麼東西呢 除了剛才講過 memory 跟 cache 它是可以存資料 對不對 那那個我們叫做 volatile memory 什麼意思呢 就是說當你 power off 的時候 電沒有關掉的時候 它的資料就全部不見了 就全部不見了 那另外一個 non-volatile secondary memory 它是可以更大 容量更大 可是當然速度就更慢 包括 disk 這個是 flash 就是我們 裡面用的 flash 還有我們的一些 CD-ROM DVD 等等 這些都是我們 secondary 的 這個 storage 的 component 那這些資料放進去的時候 它不會因為你電 power off 就資料掉 它都一直會在那邊 但是它速度 它容量很大 但速度很慢 比較慢 好 另外當然 network 我們去 很多的 hardware 去 share 的 resource 要透過 network 來做 share resource 有短距離的 local network wire area network 或者是 wireless network Wi-Fi Bluetooth 等等這些 透過的 network 我們可以 machine 跟 machine 連接在一起 好 那剛才就是在不同的角度 我們看它的 abstraction 對不對 有的是從 program 的地方來看 有的是從 time 就看最上面的時候 我們 compute 到來包含哪些東西 有的看我們的小 component 包含哪些東西 那 abstraction 就幫助什麼 我們做什麼事情呢 我們幫助我們處理這個 complexity 因為一開始就看了很大地方 很細節 你就搞不清楚狀況 對不對 所以我們從最上面先看 先看最抽象的部分 最高階的 我有哪些 component 然後再一個一個去往下看 所以 abstraction 會幫助我們 deal with complexity 好 那這個也很重要的 introjunction architecture 其實我們在前面也介紹過 對不對 就是一種像 is assembled 的 的一個 language 它 define 一個 process 到底要能夠執行哪些的 instruction 叫 instruction set architecture 那它是一個很重要的 hardware 跟 software 之間的 interface 什麼叫 hardware software interface 就是說 hardware 因為如果說你今天 在 develop 一個 computer sofware 說你 hardware 沒做出來 我怎麼去 define 我的 software 那 hardware 說 那你 software 沒寫出來 我怎麼知道 如果這樣就變成雞跟蛋 大家都沒辦法做事 對不對 所以我們 define 中間一層 叫做 intrusion set architecture 把這個 define 出來以後呢 sofware 這麼不管你 hardware 要怎麼做 implementation 你到底怎麼樣去 不管你用什麼樣的 hardware 去做它 但是呢 一定要能夠執行這些 instruction instruction set architecture 一定要執行 那對 所以 software 人對他們來講說 我不需要 其實我不需要 知道你 hardware 怎麼做 我就可以開始 develop 的 software 那他說 因為除了 instruction set architecture 還有另外一些 像我們剛剛講 OS 那些 那些 system 的 software 你 因為我這個 sofware 發展的人呢 也不需要知道 detail 因為 OS 已經幫我處理了 我只要知道怎麼樣去做這個 叫這個 functional core system core 就好了 這兩個加起來 就 intrusion set 加上 system software 的 interface 這些東西就是 也就是那些 那些要去 OS 就要幫我們做這些 你就其實就可以 可以做 software development 所以這兩個東西 我們會稱為 application binary interface 就是寫 application 的人呢 你只要知道你的 intrusion set architecture 你只要知道 OS 怎麼樣去幫我們處理 那些 你不需要知道 detail 沒關係 你只要知道他 怎麼去 core 這 system core 就可以了 好 那對 hardware 人來講 這 software 人知道 有 instruction set 還要知道這些 他就可以發展他們 software 那對 hardware 人來講怎麼樣 我只要知道我的 instruction set 我不管你 software development 什麼東西 我就根據你的 instruction set 我就把那些 instruction implement 出來就可以了 所以 instruction set architecture 是 software 跟 hardware 很重要的一個 interface 從那邊就可以分開 往你的更 detail 去研究 好 那剛才就是 給大家大概介紹了一下 attraction 那接下來我們就來看看 performance 就是我們的效能 一個 computer 我怎麼樣去 衡量他的效能呢 我們知道說這張圖還記得 這張圖沒有 這是我們新的 我們在前面的時候 曾經介紹大家一個什麼 moore's law 對不對 moore's law 是什麼 來 (學生名) (學生名)有沒有來 (學生名) 什麼是 moore's law 最重要我上次講說 moore's law 對不對 一定要知道 至少學了那個之後 來 什麼 每一年半怎麼樣 每一年半transistor數目可以怎樣 double 對一倍 對這就是 moore's law 前面告訴我們就是說 最重要的一個就是 為什麼我們在這麼短的時間內 就 computer 發得這麼快速 對不對 就是因 moore's law moore's law 告訴我們 每一年半差不多 18個月的時候 你transistor 就可以 double 就說你的 feature size 就可以縮小一點 feature size 可以縮小一點 縮小 因為技術在進步 對不對 好 那從 moore's law 我們就知道 他這張圖就是告訴我們 technology 的 trend 對不對 這是一個 DRAM capacity 你看他不斷的 他同樣的面積可以一直 越來越大越大 他有 increase the capacity 跟 performance 越小當然就速度就越快 然後他的 cost 越低 因為越小在同一個面積 他是算面積 你去買 chip 的時候 面積越大就越貴 所以如果我們看 從歷史上來看的話 從剛開始有真空管 如果我們叫做 cost performance 1 的話 那到現在已經才 50 多年 已經 多少 10 億了 這是個十百千萬 十萬百萬千萬億 10 億了 60 億倍 他的效能增加這麼多 所以才能夠到處都是 我們 computer 到處都可以負擔的起 computer processer 在裡面 這是我們 technology trend 好 那這樣子的發展 一直發展 那我們怎麼樣去設計一個 當我們把 computer 設計出來的時候 我們要怎麼樣去衡量他 到底好還壞呢 那我們就用一個飛機 來做一個比擬好了 就是說 computer 其實用這個例子來看到說 那 computer 我們也去看 我們也要看他效能 你也可以設計 你也可以設計 大家都可以設計對不對 那我有一個成本在那邊 對不對 那我要看效率 怎麼去衡量他的效率呢 好 我們就以這個飛機來做例子 好 這是 concorde 下面是一個 747 那他有什麼特性呢 concorde 他說 他的容量可以容納 132 個人 他飛行的距離可以 4000 個 mile 就是說飛到 4000 mile 油就用完了 那另外他的速度是 1350 個 miles per hour 每小時可以飛 1350 個 mile 好 那再看 747 他是可以坐 470 個人 那這只能坐 130 但是可以坐很多人 可以坐 470 個人 他的 range 是 4150 個 mile 然後 cruising speed 是 610 個 mile per hour 那比較慢對不對 他這個 1000 的 1300 這個是到才 600 對不對 那好 我問你這兩個飛機 到底哪一個比較好 這兩個飛機 你覺得哪個飛機比較好 好 (學生名) 來 這兩個飛機你覺得哪一個比較好 然後呢 如果說你容量的話 那是 77 個人 對 你看 他就很有分析這個能力 這個(學生名)他不會直接講說 看數字大或數字小沒有 他就不同的點去跟你分析 對不對 他說如果就人數的時候是怎樣 對不對 就速度的時候是怎樣 對不對 同樣的 好 我們 computer 也是一樣 好 我們先看一看這個 如果是就這個 這個飛機來講的話 他是怎麼樣一個 performance 如果你說就 passager capacity 講 就人數來講的話 那當 77 他可以載多人對不對 我說他最好 performance 最好 那如果說 cruising range 就是說 我都不用加油 一路到底的有誰比較好 那就是 Douglas DC-8 對不對 這個可以很久都不用加油 飛到底 那如果我做他的速度來講的話呢 其實這個是 concorde 是最快的 對不對 好 那這個三個都比較 obvious 我們從那個數字就會看得出來 另外還有一個這個 這個我們會效率去衡量一下 我們會說 那是不是應該說 人數跟速度都很重要 對不對 我可以載多少人過去 我的速度也很重要 所以就有一個叫做 這個 passager 乘以 miles per hour 就是說我單位時間裡面 我可以把多少人送到多遠的地方 那這時候就是把他的人數乘以他的速度 對 有點像我在這個單位時間內 我可以做多少事情 因為我們造飛機不是只有快而已 我還希望把人送過去 對不對 所以把人數乘以你的速度 那這就是說你單位小時你能做的事情 這是另外一種衡量的標準 所以你從這個就可以看出來說 飛機有不同的 factor 我們從不同的這個 衡量標準去看它的快慢 computer 也是一樣 好 我們第一個就是 response time 有點像那個速度的 如果你要看 response time 的話 我們要去衡量說 這個 computer 到底是好還是壞 我看它的 response time 很直覺嘛 因為我把工作丟進去對不對 我希望說多久你可以東西算出來 越快越好 對不對 越快越好 那這個就是叫做 response time 也就是說我們多久要把一個工作完成 response time 好 那這個 throughput 就跟剛才那個最後一項有點像 就是說那你不是只有 response time 我希望你做很多事情 我希望你單位時間 到底能夠做多少時間 做越多事越好 所以叫 throughput 就是 total work done per unit time 所以我們常常把單位時間 你能完成的工作 這叫做 throughput 所以這兩個常常拿來衡量 一個 computer 的好還壞 好 那先問說這兩個的關係呢 是不是兩個這個好這一定好 或這個好這一定好呢 是不是這樣 當我們改進一個 computer 我把它的 response time 變好 它的 throughput 一定變好 或是說把它 throughput 變好 它的 response time 一定變好 是不是有一定的關係呢 有沒有 來 (學生名) (學生名) 來 有沒有 有沒有一定的關係 蛤 有 好 那你看一下第一個 第一個他說 如果你現在把一個 processor 把它代換成一個比較快的 processor 本來是 A 比較跑比較慢 現在換成 B 那你的 response time 有沒有變快 同樣一個 job 給它 有 好 那你的 throughput 有沒有變高 也有 因為跑快了嘛 單位時間能做更多的東西 對不對 好 對 再來 那如果你加更多的 processor 呢 加更多的 processor 本來就一個 processor 在跑 對不對 我現在加一個 processor 它的 response time 一定會變快嗎 有人搖頭了 不一定喔 對不對 我如果沒辦法分配工作的話 你還是做這樣工作對不對 那你多出來怎麼樣 你說我可能有十個工作 對不對 那你就做第一個工作 你就做第二個工作 你就做第三個工作 對不對 所以你加 processor 不見得會把 response time 增加 不見得 但是什麼會變快了 什麼會變快 那個(學生名) 蛤 蛤 這個是什麼 叫什麼 你現在兩個 processor 對不對 你做一件事 你也做一件事 那單位時間怎麼樣 同樣的時間 你 response 我丟進去我還是要 譬如說要 十個 time unit 才出來 對不對 我丟進去就十個 time unit 那所以 response 沒增加 可是我一次可以做兩個工作啊 對不對 所以什麼東西增加了 throughput 增加 所以我單位時間可以做的工作增加了 所以這兩個不見得有絕對關係 有時候你把 throughput 增加了 response time 不見得變好 所以但你要知道什麼叫 response time 什麼叫 throughput 這兩個是跟我們 computer 的效能有很大的關係 那但是我們現在以後呢 我們比較 focus 在 response time 到底丟一個 job 進去 要花多少時間出來 後面會比較專注在這個方面的衡量標準 response time 好 那即使是 response time 也就是說東西丟進去以後 我要花多少時間才可以得到它 沒有再給它細分 有一個叫做 elapsed time 就是你的時鐘 時間就過去了嘛 時間過去對不對 也就是說我現在看 現在是 10點40分 過了一分鐘它出來了 時鐘上面的 elapsed time 那這個時間包括什麼東西 當你 job 丟到 computer 裡面去對不對 它除了運算的工作之外還有什麼時間 CPU 在算對不對 還有 IO 的時間對不對 還有假如說這個 我們是好幾個 job 在同樣的 computer 在做對不對 不是只有你這個 job 時間 那有時候你要去做 IO 或者是之間什麼有 share 的關係對不對 你可能是 idle 可是你因為沒算出來 所以你就還是最後算在 elapsed 時間 所以呢 elapsed time 它包括很多 包括真正 processing 的時間 包括 IO 的時間 包括 OS OS 當然也是在 run 我們的 processor 那就是 system 的 software 還有 idle 的時間 但是這個全部可以決定 我們的 system 的 performance 就是說你這個系統 也不是只有 CPU 的問題對不對 你還有 OS 的問題 還有 IO 的問題 就是整個全部的系統的效能到底是怎麼樣 那這個我們就可以用 elapsed time 來看 但如果是我只看我的 CPU 我只要看因為我設計一個 processor 我只要看 CPU time 的話 那你就要把其他這些東西都把它拿掉 把這些它拿掉 我只專注在我的 CPU 到底 run 多快 因為我們待會我們在這堂課的話 主要會設計 CPU 嘛對不對 如果現在要去衡量一個 CPU 的話 那你就只要我說我只要看 CPU 那你就要把這些東西拿掉 只要看 CPU 的時間 那 CPU 又包括兩個部分 我們講 run application 的時候 CPU 的 user 的時間 那另外 run system 的 CPU 的時間 因為有時候你要跑到 OS 去 run run job 的一些事情對不對 那把這兩個時間加起來 就是它的 CPU 的時間 那你說 system performance 好 跟你 CPU 反而這兩個 又是不是一個絕對的關係呢 不一定對不對 有的 CPU 跑得很快 可是你的其他的地方處理不好 那 overall system performance 可能就不好了 那 system performance 好 那 CPU 也不見得很快 以後我會看很多例子 我可以用很慢的 processor 沒關係對不對 可是我可能用好多個 或其他各種組合的方式 一個 system performance 可能會好 那當然那 different program 也會 因為你的不同的 CPU 跟 system performance 有不同的表現 所以我們在後面講到 benchmark 的時候 我要衡量一個機器的時候 你到底要衡量什麼 你是要衡量 CPU 的 performance 還是說你要衡量什麼 就有不同的標準 然後讓你去衡量它 為什麼要這樣 因為我們的 application 是不一樣的 譬如說你是一個科學家對不對 那你可能希望一個什麼 你一天到晚在 run 的 program 是什麼 一天到晚在 run program 都是那些 CPU computation 很重的對不對 那你可能就要 CPU 只要測它 CPU 好不好 對不對 好那譬如說你是一個銀行對不對 你很注重 transaction 對不對 那這時候你常要 I/O 要系統 整個 system performance 比較好 那你就要看 測那樣的 benchmark 看那樣的系統 看它好不好 所以 different program 因為會不同 對 CPU 的要求跟系統不同要求 System performance 不同的要求 所以當我們在決定這個 測一個電腦好不好 要根據不同的這些標準來做測試 好那再進一步我們再看 CPU 我們再進一步再看 CPU 還沒有 在 relative performance 是什麼東西就是說 好 relative 就是說假如有兩個機器 A computer B computer 那我們要比一下說相對 我們倆到底誰好誰壞 那我們就算一個叫 relative performance 那你剛剛我們已經說過 我們現在著重的就是 response time 時間對不對 exclusion time 不管你是 system 的整個 total 的時間 還是 CPU 的時間 我們就用這個來比 那時間越長 performance 怎樣 越好越壞 時間越長 performance 越好越壞 越壞嘛對不對 所以它 performance 跟時間是一個倒數 倒數對不對 所以如果我要比 A A 跟 B A 跟 B 的 X 跟 Y 的 performance 到底誰比較好 那就把 Y 的時間放在上面 exclusion time 放上面 X 放在下面 那這樣子出來的就是 X 對 Y 的 performance 比它快多少 我們下面舉個例子好了 假如現在要 10 個 second A 這個機器要 run 這麼久 然後 15 個 second 要 run B 那 A 比 B 好多少呢 A 比 B 好多少 就把 B 的時間放在上面 B 的 exclusion time 放上面 分子 然後 A 的 exclusion time 放上面 所以算起來是 1. 5 所以 A 比 B 好 1. 5 倍 這樣 這叫做 relative performance 的計算方法 就是把 你要 A 比 B 的話呢 就把 B 的時間 exclusion time 放上面 A 的 exclusion time 放下面 分母 這樣 這第一個公式大家知道 relative performance 都很簡單 但是呢 有時候同學呢 這個越簡單的越搞不清楚 這很簡單 看一下 relative performance 再來 我們剛剛講到說 有 system 的 performance 然後我看進一步 我如果要看 CPU 的 performance 要更進一步看我的這個 CPU 到來 run 還快的時候 我們要用一個東西 我們一個叫做 clock 的東西 要利用這個東西來做東西 什麼是 clock 呢 clock 其實就是一種 一個 signal 它是 high low high low 它很規律的 這樣一直 high low high low 高低高低這樣 一直跑一直跑 很穩定的喔 而且這個不會變 如果這個是 constant rate 就是它的跑的快慢 是一定的速度 這是幹什麼 clock 是幹什麼 因為在我們設計 computer 的時候 我們是用 clock 來 control 我們的狀態 state 當你做一個 computation 做完了就是 當你 clock 完的時候 到的時候 你這個 computation 就要做完 這 computation 就要做完 或者說當你說 當我的東西從這個地方 傳到這邊的時候 對不對 當我 clock 完 一定要傳到了 因為每當 clock 的時候 就決定我下一個 state 下一個 state 的狀況是什麼 所以就是說 clock 是在 控制我的 data transfer 跟 computation 的一個 很重要的一個 signal 所以說我們常在算的時候 到底我這個要多少運算 就算你用了多少個 clock 你用了多少 clock 好 clock 現在知道說 這個是一個什麼樣的東西了 那我們要 define 什麼叫 clock 對不對 它這個 high low 這個 這是一個 我們就要稱它為 clock 的 period clock period 你如果把它拉得很長的話 對不對 clock period 很長 那表示說 你一個從 clock 開始到 clock 結束 你的時間很長 對不對 那你可以做很多的事情 對不對 你可以在裡面做很多運算 做完以後再 把下一個 state latch 到 就把下一個 state 存起來 可是如果你的 clock period 很長 它表示什麼 你跳得很慢 對不對 單位時間 譬如說你可以跳 100 下 clock 可以做 100 個動作 還是說可以做 1000 個動作 100 個 clock 那這個就叫做 clock rate clock rate clock period 跟 clock frequency clock rate 那這個就是用來我們決定 我們 computer computer 的運作的快慢 那 clock period 我們講一下就是說 從 high 到 low 這一個單位 叫 clock period 我們舉個例子來看 譬如說呢 如果是你 250 個 picosecond 的話 對不對 那就相當於 0.
25 nano second 就相當於 250 乘 10 的副 10 second 這就是 clock period 你可以 define clock period 多大 有了 clock period 之後呢 我們再 define clock frequency clock frequency 就是說 每一個 second 你可以跑多少次 多少個 clock 是一個倒數的關係 我可以跑多少個 cycle 譬如的話 你常常說你看著 你把你的 computer 打開 要告訴你的 process 是 4 個 Gigahertz 的 computer 它的意思就是說 我的 clock 跑這麼快 每一個秒鐘我可以跑這麼快 4 個 Gigahertz 這麼快 那 4 Gigahertz 多少呢 加 3 個 0 就 Megahertz 對不對 再加 6 個 0 就把 hertz 就跑這麼多下 這麼多下 4 成 10 的 9 次方 每一個 second 可以跑這麼做 也就是可以做這麼多的動作 做這麼多動作 這就是 clock 那我們常常用 clock 來 衡量 CPU 的效能 那怎麼去衡量它呢 這又來我們第二個公式 他說 CPU 的時間呢 是相當於我們的 clock cycle 有多少個 clock cycle 你就告訴我對不對 我run完了 有多少 clock cycle 然後再乘以它的 clock cycle time 就剛剛說 一個 period 要多少時間 一個 period 乘到 那當然這就是 total 的時間 是不是 我一個 clock 要多少時間 那我現在跑了 100 萬個 clock 那乘起來不就是你的時間了嗎 就是你的 CPU 時間 那 clock cycle 呢 因為是跟 clock rate 倒數的關係 對不對 所以我把這個換成 clock rate 也可以 那這個意思就是什麼 因為 clock rate 每一個 second 我可以跑幾個 clock 嘛 每一個 second 可以跑 譬如每一個 second 可以跑 100 個 clock 那我現在跑了 1000 個 clock 那請問我花多少時間 10 個 second 嘛 除一下就好了 對不對 所以 total 的 clock cycle time 除以 clock rate 也可以算出我們的 CPU 的時間 好 那好 你現在要 improve 假如我知道這公式 我要把 performance improve 的話 我可以做什麼東西呢 因為公式是這樣嘛 CPU 的 clock cycle 乘以 clock cycle time 對不對 我要把我的 hardware improve 的話 改進它的話 我要做什麼動作 我可以把這個 cycle count 對不對 把它 reduce reduce number of clock cycle 那我也可以把 clock rate 變快 就是說我單位時間 可以跑更多的 cycle 那但是呢 這兩個東西是不是一定 就是說我要 reduce number 我一定可以 所以把 clock rate 增加 就是把 clock period 變小嘛 對不對 clock period 變小 那是不是我 我只要把 clock period 變小 我就一定可以達到我的目的呢 把 clock period 變小 就一定可以把我的所需要的時間變 變就是說變快 可以嗎 好 來 找一個人 (學生名) 來 clock period 變小 我的那個效能一定變好嗎 如果說 好 我的 clock 這是 clock period 對不對 這個時間 如果變 就是 clock cycle 就是把 clock rate 變提高了嘛 對不對 我把 cycle 變短 那照理說 按照這個式子來講的話 我 CPU time 是不是一定就變好 是不是一定 一定嗎 你是說 clock cycle time 變更小嗎 對 我把 clock period 變小 就是 clock rate 提高了 就跑更快 跑更快對不對 好 那是不是我的 CPU time 就一定會變好 會不會一定變好 假如這個 CPU 的 number of clock cycle 不變的話 number of clock cycle 不變的話 當然就對了 對不對 number of clock cycle 不變 我的 clock rate 變高了 就變快了 那當然就對了 對不對 可是 number of clock cycle 會不會變 我把 clock period 變短了 對不對 clock period 變短 我的 number of clock cycle 完全不受我的影響嗎 不一定 對不對 因為本來我是 一個 clock cycle 可以做一件事情 它要做這麼久才可以做完 對不對 那現在你把 clock period 變短了 那我一個 clock cycle 做得完 做不完了 做不完了對不對 我就變什麼 我可能要變兩個 clock cycle 可能變兩個 clock cycle 所以不一定 所以不一定 所以 hardware designer 常常要 trade clock rate 跟 clock cycle count 這兩個要看看 就是你一昧的就把 clock period clock rate 一直減一減 不一定一定會增加 performance 你要看看你 clock count 就是 clock cycle count 增加的狀況 兩個互相做一個 trade off 來決定你的 hardware design 這是 CPU 的時間 好 再來 我們這邊舉一個例子來看 好他說這個 我們如果要算 computer A 它是兩個 Gigahertz clock 然後花了 10 個 second CPU time 這第一個 computer 是這樣 那第二個 computer 呢 它希望把 CPU 的時間 降低到 6 個 second 但是就跟剛剛講 它的 clock count 不見得是維持原來的 它的 clock count total cycle count 會增加 1. 2 倍 比這個 image 會增加 1. 2 倍 但是如果要達到降到 只剩下 6 個 second 的話 那我第二個 computer 它要 run 多快 它的 clock rate 要多少 這一題就是這樣 這樣懂不懂意思了 就是 A 有一個效能的規範在那邊 說我這 run 兩個 Gigahertz 我在 10 個 second 給 run完 那第二個呢 它新設計一個 它希望它的 clock rate 跑快一點 它要跑快一點呢 它希望它的 performance 會降到 6 個 second 但是它不是只有跑快 它的 cycle count 會增加 也是會增加 那我要多快 我這 clock rate 到底要多快 才能達到降到 6 個 second 就降到 6 個 second 的目的 好 我們就看 第一個我們先看 第一個 如果我要知道說這個跑得多快的話 是不是我只要把我的 B 就是我要得到的 clock rate 對不對 B 是我希望得到的 clock rate 是多少 那我已經告訴你說 我希望 clock rate 怎麼算呢 是說我希望在 6 個 second 就把它完成 我希望在 6 個 second 完成 那 clock rate 怎麼算呢 clock rate 是等於你 total 的 clock cycle 除以 clock rate 對不對 那就是你的 CPU 的時間嘛 所以這個式子有沒有問題 這個式子有沒有問題 好 沒問題 那我已經知道 CPU 的時間是 6 個 second 它給我的 given 的 但是我知道不知道我的 clock cycle 是多少 不知道 對不對 我只知道它會比 A 的增加 1.
2 倍而已 增加 1.