(音樂) 好 那我們現在就開始 今天給大家介紹一下 今天的這個Compute Icad 大概我們的這個 這學期要教什麼東西 然後同時呢這個 對各位同學他有什麼要求 好 第一個 我們先看 為什麼電腦不用十進位 而用二進位 好 這是電腦跟我們想像中 最大的差異就是 他是用二進位 他們是用十進位 為什麼 那我們看這個 其實我們用這個Signal 就表示一個Information 我們是用一個Signal 就表示我們所要呈現的Information 這個Information也許是instruction 也許是一個Number 也許是一些資訊 那這個Signal呢 它的Voltage 它的電壓 就是我們把它區分成High跟Low 我們有一個Threshold 所以大於這個呢 我們就叫做High 低於這個值呢 我們就稱為Low 那因為這樣的表示方法呢 所以我們的一個Signal 就只有High跟Low 那也就是只有兩種狀況啦 兩種State 這種兩種State 你說它是High、Low 你說是對、錯 你是True、False、是1、0 都可以 所以就是說我們的Signal呢 就表示我們的Information呢 它只有兩種State 那這Signal其實就是我們所謂的Bit 有沒有聽過Bit 一個Bit 所以一個Bit就只有0跟1 這0跟1 你要給它一個另外一個名字也可以 所以一個Signal只有兩種狀態 那這個Signal呢 我們要怎麼樣去 有點像我們的Data 去運作它 怎麼樣 我們需要一個 叫做最基本的元件 叫一個電子開關 叫一個Switch 那Switch是怎麼做成呢 我們需要一個叫做Transistor的東西 Transistor 那Transistor呢 這是一個Nmos Transistor 這是Nmos Transistor 那這是一個怎麼樣的一個Structure呢 我們可以看喔 這下面呢 這是一個P-type silicon Silicon就是矽 它是一個半導體 我可以把它變成P-type P-type就是Positive charged 就是它電洞比較多 或者呢 我也可以把它叫紅色的地方呢 就是叫做N-type silicon 它就是Negative charged 電子比較多 電子比較多 我可以透過一些 步驟化學的作用 把它變成P-type silicon 或者N-type silicon
那它的這個Switch 就N-type Transistor這樣的一個結構呢 就是在底座的地方 我們有P-type silicon 然後這兩個好像島的一樣 我們叫做N-type silicon 那這中間呢 有一個Oxide Insulator 就是一個氧化的絕緣 絕緣的物質 氧化絕緣的東西 在上面就是一個金屬層 這是我們稱為Gate 叫做Gate 那這個呢 就是一個基本的Switch 就是一個基本的Switch 就是我們的Transistor 我們就靠這個東西把它組合之後 就可以把Signal 剛好我們的Data做一個運作 就可以產生我們的 就可以建成我們的Computer 那當然你看到這邊是叫做 NMOS的Transistor 相對一定有一個叫做 PMOS的Transistor 因為這是N跟P嘛 對不對 看到這邊是NP 相反 如果這下面的地方呢 下面的地方是N-type的話 silicon 那紅色的地方是P-type的話 那就叫做P-type的Transistor 那我們就透過NMOS 跟PMOS的Transistor 我們就可以形成我們的Gate 我們就形成Gate之後呢 我們就可以建我們的Computer 好 我們來看 那怎麼樣Transistor怎麼工作呢 我們看剛才講到說 這個圖當然是 剛才那個圖一樣 但是這是一個剖面圖一樣的 這下面是P-type的silicon 然後這是N-type 那我們把這三個點 很重要這三個點 我們叫三個Terminal 一個叫做Source 一個叫做Drain 一個叫做Gate 透過這三個的運作呢 我們加壓加不同的Voltage 0 剛剛說一個High一個Low 我們就可以把它變成 一個開關 一個Working的Transistor 好 它怎麼做呢 剛才講說 下面是一個P-type的Cyclone 所以它是Positive Charge 所以它很多的電洞在裡面 比較多的電洞 這兩個島呢 是Negative Charge的 所以是很多的Electron在裡面 好 那怎麼去讓它運作呢 我們看 當我們在Gate的時候 這邊加一個High Voltage 在這個地方 那這時候呢 因為這是High 我就會把很多的Electron 就是吸附在 就是這個叫做 Attract很多的Electron 在這下面 在這下面就是在Drain跟Source 以及Gate的下面這邊 就把很多的Electron 吸附在這邊 如果你加一個High Voltage 在這個地方
那就形成一個Channel 叫做Channel的地方 Electron的Channel 就Between這個Drain跟Source之間 在這個Gate的下面 就形成Channel 那Channel其實這時候就已經導通了 就是已經導通了對不對 那我們這時候呢 只要在Source跟Drain之間 加一個電位差 那就會產生什麼 就電流可以產生了 就是形成開的狀況了 好 那再過來 如果我把這個Gate的Voltage拿走以後 那這個Channel就不見了 這Channel不見了 那就形成一個關的狀態 所以剛才這個就可以描述 我們告訴我們說 這個NMOS要怎麼樣去運作 透過這個三個Terminal 我們就加壓 加不同的Voltage 然後就可以開關 把我們的Signal傳來傳去 那這一門課呢 這個內容呢 這門學問呢 主要是在我們這個電路與電子教過 大家同學應該修過這門課 那這是比較Low Level的 如果你要修更進階的話 可以在超大型機體電路設計這門課來修 好 那現在我們已經有了開關了 對不對 我們開關怎麼表示呢 右邊這張圖 我們來表示我們的開關 像下面這個就是一個NMOS Transistor 代表一個NMOS Transistor 那代表什麼意思 也是三個Terminal Drain Source跟Gate 三個Terminal在這裡 那這個有一個圈圈的呢 就表示是PMOS Transistor 那NMOS Transistor它的功用是 當你給它Gate是給1的時候 它就導通了 就通了 就開了 給0的時候就是關 那這個PMOS Transistor是給什麼 相反嘛 你看這邊外面一個圈圈的意思就是說 給0的時候它是導通的 給0的時候導通 給1的時候就是不通 就是關 好 那我們把這個 這些PMOS Transistor跟NMOS Transistor 把它連接一下 像這個就是說 把NMOS Transistor Inserial連接起來 對不對 然後上面是Imperial 然後上面接到VDD 就High的那個Voltage 下面接到Ground 就Low的那個Voltage 好 那這樣子 我們看這樣是一個什麼樣一個 這個做什麼動作呢 那這個input的地方 我們就接在Gate 接到Gate 那output的地方 我們就接在這個C的地方 那我們就把它的各種狀況 看一看它到底做什麼動作 假設AB是我們的input對不對 我們有各種狀況 00、01、10、11
我們看它的output會得到 C的地方會得到什麼狀況 00的時候是怎麼運作 A給0 B給0 那也就是A給0 B給0 這下面也是A給0 B給0 那A給0 B給0的時候 下面會不會通 下面會不會導通 不會通對不對 0不會通對不對 那上面會不會導通 上面導通了對不對 所以上面導通 C就會得到一個什麼值 導通了 所以VDD就會到C對不對 Charge到C 所以C就得到1 那再來看 0跟1的時候 只有一條線導通 是A是導通的 B是不導通 可是下面因為是transition in series 也是不通的對不對 所以這邊也是VDD會連到C 所以我們也得到1 那同理呢 10也是得到1 那我們再看11的部分 11的時候呢 這個A跟B是不導通的 對不對 因為我們說到0的時候 一個圈圈是要0的時候才導通 所以上面是不導通的 那下面呢 transition in series 因為兩個都是1都通了 所以C跟grounds導通的 所以C是什麼 就是0 所以你看 我們這些transitions這樣連接之後 我們就可以 根據input不同的狀況 我就得到output不同的狀況 那這是一個什麼東西呢 這剛好是一個NAND gate 這是一個NAND gate 那我們通常在畫的時候 就畫成一個這樣的狀況 叫一個NAND gate 那NAND可以做 當然我們也可以做NOR 我們可以做NOT 可以做不同的GATE 那其實我只會做一個NAND gate 我們知道在邏輯設計學過的時候 NAND gate是什麼 functionally complete 那functionally complete什麼意思 就是說你給一個truth table 你任何一個boolean function 你把它描述出來 我都可以用NAND gate 把它兜出來 把它組合成這個 你要做的function 所以呢 我們有了邏輯閘之後 有NAND gate之後 我可以做我的function unit 譬如這個就是一個bit的加法的動作 譬如這是一個sum 就是我們把三個bit相加 叫做什麼 full adder
知道不知道 邏輯設計 有沒有學過 做一個full adder 一個bit的full adder 我們有三個input對不對 我們會產生兩個output對不對 一個output是做sum 一個就是carry 對不對 所以這個就是sum的bit 然後這就是carry out的bit 我們有了這個基本的邏輯閘 我就可以做一個bit的加法器 對不對 那一個bit的加法器會做 那會不會做16個bit 會啊 重複嘛 對不對 因為閘不是每個bit都一樣嗎 對不對 那會做16個bit 就會做32個bit啦 好 那會做加法器的 那我會不會做乘法 也會啦 因為乘法就是shift and add 對不對 shift然後加 你會不會做乘法 乘法是不是 就是把partial product 不是 還好就把它加起來 對不對 你會做加 你會做shift shift就把它搬移位置嘛 對不對 你就會做乘了 對不對 所以你會做這個 一個bit的加法器 就會做很多很多的function unit 好 那這個是 通常是我們運作的部分 運作的部分 那你說 我們的computer是要 一定要儲存才行啊 對不對 那有邏輯閘 可以幫我們做儲存 也可以 它可以做一個記憶元件 就是我們 你知道把兩個 這四個o 就cross coupled 這就是一個rs latch 對不對 在邏輯設計我們學過 latch它可以存一個bit inform 就是說你如果要存1 它裡面就 你離開的時候 它還是1在裡面 0它就存的0 所以這是一個 一個bit可以存的東西 那你把一個bit 擴展到16個bit 32個bit 就做一個register 對不對 就可以做一個儲存的單位 所以你可以做 運算的動作 你可以做記憶的部分 那其實大體上 你的computer的元件 通通可以做出來了 好 那這門學問在什麼地方 我們學到呢 這門學問是在 數位邏輯設計裡面學到的
這跟我們最有關係的 所以如果 待會我會講說 如果你沒有學這門課 你怎麼辦 好 過來 好 有了剛剛講過 你這些component 全部都建出來了 對不對 好 那我們就可以 基本的架構就是這樣子 我們有暫存器 記憶體 那整個運作是怎麼樣子呢 我們可以從記憶體 去拿一個instruction 如果你寫過程式的話 你大概知道說 我們要執行一個程式 要先告訴我 這個instruction要做什麼動作 根據你的instruction 我在做動作 每個instruction 一個一個一個 就把它執行完畢 那其實computer 基本就是這樣一個架構 我從記憶去拿instruction instruction拿的時候呢 我放在instruction register 然後我decode 要看說你到底要做什麼事情啊 因為每個instruction 是代表不同的意思 對不對 然後做decoding之後呢 然後我們就控制器 就發出一些控制信號來 就從暫存器裡面 拿data出來 經過運算以後呢 就存回暫存器 基本的架構就是 把computer就做出來了 好 那所以基本的organization 任何一個compute 都是基本上都是這樣的架構 我們有一個processor processor 包括兩個部分 一個叫data path 一個叫control 一個叫control control data path是什麼呢 就是說我們data怎麼走的 你看他的名字嘛 data path對不對 所以他應該是說 這些data可能是從register file 拿出來 經過一些運算單位 經過運算之後 我再寫回去register file 基本上架構都是這樣子 他架構一定是走這個路徑 那這就是我們的data path 但是什麼時間 你知道每個instruction 其實都是做不一樣的事情啊 對不對 每一個時間 每一個clock 做不一樣的事情啊 那我們誰來控制呢 我們有一個control 來告訴他說 你現在要做加 你現在要做卷 你要做shift 你要做什麼 或你不要做動作 就是control來控制 所以這個control跟data path 兩個就構成我們的process 最重要的這個部分
那另外呢 那我們有data 我們這邊當然是有一個register file 可以存少量的資料 可是通常我們會有很大量的資料 我們要存哪裡呢 我們就存在memory裡面 存在memory裡面 那memory可以存的data 可以存program在這裡面 那除了memory這之外呢 這是整個核心 就是process跟memory 但是我們不能compute 自己運算運算 運算完要幹嘛 對不對 你要跟人溝通啊 對不對 是你要用他的啊 是你要叫他幫你運算啊 你要叫他 算完之後給你結果啊 對不對 所以我們需要有io 有io 那input呢 就東西給他 包括keyboard mouse 那output 包括我們display printer 這都是output 那另外還有disk 也可以算一種io 因為有時候我們資料量實在太大了 memory也擺不下 那我們就擺在disk裡面 disk呢 可以算是我們的io的一種 因為它可以input也可以output disk也是用io的一種 那這個叫做我們的organization computer的organization 基本的organization 那organization學什麼東西呢 我們這邊看 他說 他告訴我們各式各樣的function unit 他到底是做什麼工作 他的performance好還是壞 譬如說後面我們會介紹大家說 加法有各式各樣的加法 有carry report adder 還是carry look ahead adder 他的不同的結構 他其實要不同的hardware 不同的resource 要不同的快慢 對不對 所以我們看每個function unit computer organization 會介紹你他的 他能做什麼事情 他performance怎麼樣子 然後呢 我們就把這些component 把他連接起來 剛好不是說把他連接起來 那就是他的structure 一些interconnected structure 然後我data就在這邊轉來轉去 data flow在這邊轉來轉去 那在這轉的過程當中 有時候要做這有時候要做那 是由control來控制它 那這種描述 我們常常在用一個high level 的description language 叫register transfer level description描述這個狀態 描述一個computer organization 這個叫做computer
organization 好 但是我們這門課叫什麼 architecture architecture 對 那computer organization 跟computer architecture 一不一樣呢 不太一樣 computer organization 剛才是organization 你是就告訴你長這個樣子 你就去把它完成 對不對 那computer architecture 是什麼東西呢 好 我們就做一個比喻 就像建築師跟營造商一樣 建築師譬如說你現在 我們台達管是剛建好的 對不對 我們這一塊地一拿過來說 我們要建教室 對不對 我們要建一個building 要幾層要做什麼 幾層要做什麼 要幾個演講廳 要幾個教室 對不對 好 那設計師就會把你 就把他設計出來 對不對 那設計師出來之後 那誰要來建呢 誰建 營造商要建 他要根據設計師的狀態 他設計好 把他建好 對不對 好 那同樣的 computer architecture 應該包括兩個部分 一個是要設計 一個設計 也就是說 我不同的應用的話 我其實叫不同的processor 不同的processor 譬如說你要做scientific 你要做科學運算很大 你可能要floating point 要很強大 對不對 譬如你只要處理影像 處理一些多媒體的動作 你可能不需要floating point 對不對 你只要整數的運算 那不同的運算 你可能要不同的processor 那你不同的instruction 就要設計出來嘛 那所以呢 這個computer architecture 它是什麼東西呢 它是介於software跟hardware之間的 我們稱為instruction set architecture 以及computer organization 這兩個東西加起來 才叫我們的computer architecture 也就是說 你根據你不同的 這個instruction set architecture 然後呢 就像是設計師設計出來的結構 對不對 然後organization是根據這些instruction set 然後來設計你的硬體 當然不一定是這個
所以computer architecture instruction set architecture 加上machine的organization 所以這個部分 instruction set architecture 是很重要的 是跟你organization不一樣 organization只是告訴你說 就是長這樣就對了 你把它熟悉就好 可是computer architecture 會有一個trade off 就是說要這樣子呢 還是要這樣子呢 或者是它的成本是多少呢 它的效益是多少 是有一個衡量的 然後一旦設計出來instruction set之後 然後我們才設計organization 然後再來看看 instruction set architecture 它又可以看成什麼東西呢 它也很重要 它可以當成是software 跟hardware之間的一個interface 也就是說 在我們在develop 一個process的時候呢 我們一定先把它instruction set設計出來 我還沒有hardware 我也沒有software 我要先把我的instruction set設計出來 我怎樣的instruction set先設計出來 設計出來之後呢 好 那software的就做它software的事情 它不知道你hardware要怎麼做 它不知道你hardware要怎麼做 但是它知道你有這樣的instruction之後 它就根據你的instruction develop 去發展它的software 往上發展 那下面的hardware也是一樣 它也不知道你到底software要執行哪些程式 我只知道你只可以最後會要執行這些instruction就對了 那hardware就根據說你需要哪些instruction呢 我就幫你hardware設計出來 那所以它是在software跟hardware之間 很重要的interface 它把它做整這個連繫的工作 好 我們從這個 當然在hardware不一定 這邊講說不一定一定是hardware 因為可能你可以emulate 你可以模擬它 你可以用software去模擬它 那基本架構就是說 用不同的instruction 不同的hardware去模擬另外一個instruction 另外一個type instruction 那這後面我們再介紹到 好 那從另外一個角度來看看 那什麼是instruction set 這是我們high level language 如果我們看 這個是我們high level language 對應到它 可能是一個C可能Java 不管怎樣high level language 你做compiler做translate之後 你就會得到一個這樣的東西 這樣的東西什麼 low store 加等等這些東西 把它分解成一個小小的instruction
那這個透過這個compiler 得到assembly language 再做assembler 就會得到我們的machine language 得到這個 這個步驟到這個步驟 只是一個直接的轉換 比如low我的代表是 它的binary code是什麼 就直接把它轉換過來 那這些這個也是一樣直接轉換 那這個呢就是我們的instruction set 你有怎麼樣的instruction set呢 你就會產生怎麼樣的assembly 這樣了解嗎 那不同的process 其實你有不同最後產生的 這個最後的assembly code 是不一樣的 那變成這樣01 01之後呢 然後呢就相當於 就是control signal 我們剛剛不是講說signal是01 就靠著這些東西 就可以產生這些我們的 這個control signal 然後data的互相運作 所以instruction set 如果從這個角度來看的話呢 它其實就是assembly language的 的一個這個集合這樣 好 那所以從這個 software的角度來看呢 software所以我不管你hardware是什麼 我software對一個software的人來看 它就是一個conceptual structure 跟functional behavior 我不知道你到底怎麼去implement它 怎麼去實作它 但是舉個例子來講 譬如說我只知道說 假如這個instruction是 三個out print的 那就表示說我可以把兩個out print 加到第三個out print 或者是這個instruction 它都加了它只準有兩個out print 它只準有兩個out print 就是說加的時候 對不對 我要幾個out print 它要幾個out print 有的instruction設計出來是說 我可以有三個out print 好那我就把 那也就是跟我們很像對不對 我們講第一個out print加第二個out print 放到第三個out print對不對 可是有的instruction說 我沒有我一個instruction 只有兩個out print 我只有兩個out print 那代表什麼意思 就表示說你可能要做兩個instruction 才可以把兩個數字相加 對不對 你要第一次呢 先把你第一個out print 放到一個destination去對不對 第二個是再把你的out print 放到第二個
你只能放兩個out print嘛 所以目標跟source destination跟source是一樣的 所以你就要更多的instruction去完成它 所以你的instruction設計不同的話 你需要不同的instruction 也需要不同的hardware去完成它 但是對software的人來看 對一個computing的system來看 他只知道你有哪些function 好你有哪些function 就夠了 他不管你hardware怎麼樣去implement它 好那這些包括什麼東西呢 instruction set他可以specify什麼東西 他可以描述你的stories的部分 你要怎麼organize 你是16個register呢 還是32個register 都是影響很大啊 因為你16個的話 你的數量比較少 對不對 你要可以做的動作比較少 但是16個他可能速度比較快啊 那sensor有不同的結構 所以不同的organization 那另外你data要長什麼 encoding要怎麼表示啊 譬如一個複數你要怎麼表示 正數複數複數 複數你要用twos complement的 還是ones complement還是怎麼樣 因為你不同的表示方法 是不是你的+就要不同設計的方法 因為+要去對這些number做加減 對不對就不同的方法 所以有不同representation 好instruction set 有的instruction他可能沒有乘法的喔 因為他根本不常做乘法 他幹嘛要設計一個instruction做乘法 因為你一旦設計一個乘法的instruction 其實代表什麼意思 你就要一個乘法器在那邊 乘法器可能一個很大 它的hardware要很多resource 才有辦法應付每一個乘法 那如果不常用乘法 我幹嘛要乘法器 對不對 那我可能就用很多的加減去模擬它 可能你去模擬它 你的後果是什麼 你可能要很多的cycle 要很多的時間才可以做一個乘法 才可以做一個乘法 所以就你的instruction set 哪些instruction是允許的 這跟你的hardware 跟你的這個成本 這個performance有關係的 再來instruction format 還有你怎麼樣去拿你的data 怎麼樣去拿你的data 還有一些其他的部分 就在一個instruction set才會模擬 那這門課呢 我們會用這個MIPS R3000的instruction set 來做一個基本的範例 在前面的部分就會介紹這個instruction set 然後後面呢 就會根據這個instruction set 然後來看它的hardware 如果這樣的instruction set 我的hardware要怎麼樣去把它建構出來 那在這個MIPS裡面呢 它當然有instruction的 各式各樣的instruction registered 還有一個很重要的特點 就是它只有三種format 三種format很少的 很少 只有三個format 就把所有的instruction 通通描述出來
只有三種format 在後面我們都會一一的給大家介紹 好 那instruction set architectural 其實有各式各樣的 instruction set architectural 當然這是後面 這是以前比較發展出來了 那現在還存在很popular 就是intel跟ARM的 對不對 intel的processer就是你們這個 PC上面常用的intel 從286 386這樣一直到IA64 等等有不同的version 每一次它的version 就會把加更多的instruction 更powerful 隨著你的需求 就一直加一些instruction 加instruction當然就要加hardware 這是intel的processer 另外一個ARM 它已經有到第八個version了 ARM用在哪裡 ARM的processer用在哪裡 你說 你知道嗎 手持式裝置 哪裡 手持式裝置 對 你的手機裡面都是用ARM 你的手機裡面 不是用intel的x86 不是用intel 是用ARM 90%可能是用ARM的call 其實這兩個也代表兩個大陣營 intel叫cisc cisc complex intrusion set computer ARM是reduced intrusion set computer 我們的MIPS也是ARM的一種 類似只是有些變形 就是根據你的 intrusion set出來 有的是這樣子 有的是那樣子不太一樣 這兩個就是目前最popular的 兩個intrusion set 為什麼要學computer architecture 因為它很快的變化 為什麼 雖然基本的架構是一樣 可是隨著你的應用不一樣 你剛剛看到好多version 一直加上去對不對 一直加上去 所以我們了解這門課之後 將來我要設計processer的話 我就可以很快的進入這領域 這很exciting 更重要的是說在各個領域裡面 你看什麼地方不要processer 我們下一次就會介紹 無所不在 processer 我學過之後 我就會設計一個processer 好 那過來是我們這堂課的 一些要注意的事項 那我是黃婷婷 我的辦公室在資電館的442 這是我的電話還有email 如果你們要跟我約時間的話 就先寄一個email給我 然後我們再約時間 那另外我們有助教 有四個助教 那這邊有他的office hour office hour是你不用跟他約時間的 你就直接去找他找助教
大家一定要好好利用你的助教 助教是學校付錢給他的對不對 所以你不要覺得不好意思 上課聽不懂 問助教 助教一定非常樂意給你解答 office hours你不需要約時間 你就可以直接進去 但是如果你其他時間 你想要找他也可以 你就先寄一個email給他 跟他約時間 那藍色的意思就是說 有些更正你們把它改一下 那上課時間呢 我們是禮拜二跟禮拜四 禮拜四這個地方 我也把它畫一個藍色 正常我們這課表上面是 禮拜四是只有10點到11點 對不對 那因為有時候如果我剛好有缺課的話 那我就要補課的話 我就會利用這個下面的這個時間 就10點到12點的時間做補課 所以各位同學後面不要安排課 那個按照課表的話 上面應該是沒有課的嘛 對不對 對不對是不是 是不是這樣 所以你不要排一個時間是要去跳舞 這個要練歌什麼之類的 這個地方你要把它空下來 那我們上課時間是這個 在這個地方 好那這就是我的網頁 剛剛講過說 如果你沒有拿到投影片的話 你就上網去這個 course 地方 往下走就會看到我們的投影片 你就把它 download 下來 好再來我們的 textbook 好這是我們的 textbook 這樣 有沒有班代 還是有沒有人要自願 在這一班有沒有 沒有自願的喔 那班代有沒有 也沒有班代在這一班啊 那有沒有什麼長的 學術股長還是什麼 康樂股長有沒有 也沒有啊 你們這班都沒有任何的那個啊 好找一個人好了 大家都不敢看我了是不是 來找你好了 你負責 幫大家買書可以嗎 所以要買書的話就找他登記 那因為這個有點奇怪 就是這本書呢 這本書 textbook 還沒把那個 我們的那個作者介紹一下 這個我們的這個作者呢 是 Patterson 跟 Hennessey 這個呢 RISC 就是他們最先提出來的 然後我們的 Disk 有很重要的 Charter Rate 也是他提出來的 另外一個呢 Hennessey 現在是 Stanford 的校長 他們兩個同時把這個 RISC 這個東西提出來 也是第一次把這個 Computer Architecture
用這種的寫法寫出來 就是 Instruction set 講完之後 怎麼樣去做 Organization 這本書如果你讀熟的話 你就可以真的設計一個 Processor 那剛剛講說這個 要注意的事情是這樣 因為這本書是一個 ARM 的 這個版本 ARM 剛剛已經學到什麼叫 ARM 對不對 但是它的 Hardware 的部分是 MIPS 它的 Hardware 的部分是 MIPS 那我們就跟書商講說 這樣怎麼教啊 因為以前的時候 它是前面是 ARM 這個 Instruction set 是很重要沒有錯 對不對 ARM 是很重要的 Instruction 我們當然也可以學它的 Instruction 可是如果你前面是 ARM 的 Instruction 你後面就應該是 ARM 的 Implementation 啊 對不對 可是後面又是 MIPS 的 Implementation 這樣 這本書 所以我們就要求說 那這樣不行 我們不要用你的書了這樣 所以那書商就只好再去印了這一本 再印了這一本 那這一個就是小本 是 MIPS 的 Instruction 這樣 所以你去買的時候 一定要注意說是兩本喔 兩本 一本是這個 裡面它雖然裡面是 ARM 的Instruction set 1110 00:31:02,000 --> 00:31:04,000 但它會給你另外一本 是這個 MIPS 的 Instruction 這樣 了解嗎 好 這就是我們這學期要用的教科書 好 那會 cover 哪些 topic 那其實基本上面呢 我就是按照這個課本的這些次序 但是大家可以看到這邊有星號 這星號的意思就是說
可能不會到 cover 到 如果按到過去的進度的話 只會到這個 memory 如果有時間的話 我們再去 cover 後面的部分 基本上就是按照課本的次序 把它每一個章節 cover 好 那剛剛講過說 在這門課是不是要先修的基本的知識 那基本的知識就是邏輯設計 Logic Design 那如果你沒有修過怎麼辦呢 可不可以修這門課呢 就看你自己的努力了 如果你很努力呢 就把它補起來了 OK 如果你想說不理它 那告訴你絕對不行的 因為剛才已經介紹了一些 Logic Design 的基本的東西對不對 什麼加法器 Latch 啊 Control 啊 將來還有什麼 Mux 什麼 如果你通通不知道你怎麼學呢 對不對 所以如果沒有修過 Logic Design 你自己要把它補起來 尤其在譬如說還有 Number of Representation 什麼叫 Once Compliment 什麼叫 Two Compliment 這些都要補起來 好 所以這是邏輯設計 一定要有一個基本的知識在裡面 那當然我知道你們學完之後 就一定通通還給老師了 所以用到的時候我還會再提醒你們的 會提醒你們的 如果忘記 實在不知道我在講什麼 一定要發問 好 好 最後這最重要的 你要怎樣你才能夠得到這個學分 那我們會學 MIPs 的 Instruction set 然後呢 會寫簡單的 Assembly 本來 Assembly 這是有 我們本來另外一門課會 Cover 可是那個課把它取消變到三年級去了 所以變成說我們這門課就要先學 Assembly 這門課 這個 Instruction 然後怎樣用 Assembly 去寫程式 那我們會有幾個簡單的 Program 去讓大家寫 所以你要學 用這個 Process Emulator 去測試
看你的 Instruction Assembly 寫得怎麼樣 然後再來呢 除了這個之外呢 我們會有 Homework 就 Written 的 Homework 就寫的 發出去寫的 Homework 那大概是每一個章節都有一到二 的 Homework 那最後還有一個 Final Project Final Project Software Project 寫程式的 我們就我們的系統 我們來 Define 一些東西 讓大家寫一個 Software 這 Final Project 那我們的 Assignment 都會在網頁上公告 不會發給同學的紙本 就直接會宣布之後 大家自己到網頁上去 Download 那除了 Homework 之外呢 我們會有一個 期中考 一個 Final 那所占的比例呢 大概 Homework 跟 Final Project 是 30% 然後 Midterm是 35% Final 35% 然後時間我已經訂出來了 時間訂出來了 有意見的話要早點表達 不要到時候 等到時間到了 還說我不能參加 所以 先講先贏對不對 我們先講的話 所以 以後你們有衝突的話 要別的課去改 好 這樣有問題 好 沒有 好 最後 還有一個很重要的就是說 這個 我如果沒來考試 可不可以補考 不可以 我如果 Homework 沒交 可不可以補交 不可以 不允許 這兩個都不允許的 好 那最後一個最重要 什麼叫作作弊 當然考試那個不用講了 對不對 那你偷看別人 當然是作弊了對不對 作業可不可以抄別人的
可不可以 可不可以 不可以抄別人的 抄別人就是一種作弊 作弊的話就是零分 好 但是呢 你說我可不可以跟別人討論 我可以不可以 可以 大家鼓勵你 歡迎你跟同學討論 討論之後 最後你說我已經 我本來不會的 經過討論之後 我知道答案了 沒關係 很好 但是你一定要自己寫 一定要自己寫 你只要自己寫的 不是抄了別人自己寫 是說不要看別人的 自己寫 那就是 ok 的 所以這一定要做 如果你被抓到作業抄襲的話 就是零分 就這樣 這樣 這個大概就是 這個這門課對同學的要求 有沒有什麼問題 好 如果沒有的話 那我們今天就上課到這邊 好 謝謝大家