Re: [請問] 想要了解CPU 的原理和設計 要看什麼書?

看板ask (問板)作者 (我不配)時間16年前 (2009/11/09 22:04), 編輯推噓7(705)
留言12則, 10人參與, 最新討論串1/1
※ 引述《lprsdmn (ziv)》之銘言: : 圖書館搜尋打上CPU或處裡器 : 幾乎找不到我要的資料 : 我想這可能是某本書的其中一個標題 : 請問我要看哪方面的書呢? 恁爸又要衝文章數了,不用找書,我直接跟你扯。 必須先選好是什麼CPU呀。 以一般家用電腦的CPU來說 (簡稱x86),要懂他的原理,就要學他的語言:x86 指令集 不只知道怎麼用,還要知道怎麼來。 首先就是,原本寫在紙上的語言文字怎樣數位化 (數字化) 變成一連串的數字? 這就叫做編碼、解碼,常見的就是英文字母編成的 ASCII 碼。 編碼後將這些數字存入硬碟,進而在電子電路上流通,送給CPU去解讀數字的本意。 然後人類為了要跟CPU能夠對話、能夠操縱他,而設計出CPU的語言,也就是指令集。 所謂指令集,就是指令的集合,x86有加法的指令add、有減法的指令sub... 其他CPU未必會有減法的指令sub,因為利用二的補數代表負數的話,就只需要加法指令add即可。 把x86存在的這些指令全部聚集起來,就叫x86指令集。 因為硬體的設計規格,由 x86 指令集構成的程式碼們,都會先放到主記憶體去排成直線 一個位置就是一個記憶體位置。 位置寬度是訂成 1 Byte,有1024個位置 (0~1023) 就是有 1KB。 電腦開機後,首先會到主機板上一塊記憶區域,取出一段叫做BIOS的程式碼到主記憶體去 再由這BIOS的程式碼第一行開始執行。 BIOS跑完後會到使用者設定的裝置,比如硬碟去抓取作業系統的程式碼。 CPU 在電腦通電後,其實是到「暫存器」中叫做程式計數器 (program counter) 那裡 去抓出一個記憶體位置來,然後 CPU 再命令主記憶體把這個位置的資料吐出「一個指令」 來給CPU閱讀。換言之,最簡單、原始的CPU一次會處理一個指令。 處理完某指令後,只要該指令沒有命令CPU更改PC值的話,那CPU就會自動累加PC值 (程式計數器值) 因此CPU永遠、隨時隨地都會有處理不完的指令直到電源關閉。 預設的記憶體位置呢,就是BIOS載入主記憶體後的第一行程式碼所在。 當讀完指令後,CPU有一個電路裝置叫做控制單元,這個單元就專門出一張嘴 在分配任務用的。 他事先就大家說好一個指令大小是 32 個位元,也就是 32 個二進位0101數字。 若3個位元是 000 時,就代表指令 add;如果是 001 就代表指令是 sub。 這也是一種編碼,實際上當然不是只用三個位元來代表指令意義。因為如果這樣的話 x86 指令集就被限制成只有 000~111 這 8 種而已。 如果控制單元判斷目前的指令是比如 jump 到某位置,那他就叫大家都不 要亂動,直接更改PC值,然後等主記憶體繼續吐出下個指令。 如果他判斷出目前的指令是 add ax,3 也就是把 x86 CPU 上的某顆叫ax的暫存器加3 那他就會一邊命令ax暫存器吐出他的值給ALU的輸入端1,一邊又丟3給ALU的輸入端2。 (ALU的作用參考上上篇,ALU原理的話就數位邏輯、數位系統; 更底層、更現實的電路原理要讀電子電路、電子學、物理) 簡單來說ALU是個蠢貨,只會加減乘除、邏輯運算,但是聽不懂人話,只會乖乖做事而已。 然後控制單元這嘴砲王等到ALU把結果算出來後,繼續嘴砲的命令電路把結果寫回ax暫存器 再命令PC值自己遞增,然後等主記憶體把下個指令送進來。 簡單來說你學 x86 指令集:http://home.comcast.net/~fbui/intel.html 這個語言, 就是要跟控制單元對話,所以你要知道 x86 有哪些暫存器,大小分別有多少,知道 控制單元叫別人做加法時,頂多有哪幾種變化。不然你亂扯一句他根本做不到的事 也就是亂寫一個指令給CPU時,根本就強人所難。 當你學會這個語言,也就大致瞭解CPU的底細跟原理...也只是這顆CPU而已,換一顆 講外語的、用不同指令集的,你就要重學一個語言。 資工所入學考試的計算機組織聖經本,也就是白算盤,基本上是講MIPS指令集, 這個指令集比起x86算比較簡潔,所以比較適合學術教學。 x86被認為先天不良,原本的設計不夠好,但後來又很受歡迎賣很好, Intel跟AMD不願意砍掉重練 (代價太大),所以在原本基礎上去改良它,使得 要搞懂x86原理比較難。 還好,後來有個傢伙叫 compiler 他很擅長把「人話」轉成各種CPU的各種指令集, 所以沒事就不太需要去懂 CPU 的指令集 (組合語言)。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.8.137.241

11/09 22:06, , 1F
M了XDDD
11/09 22:06, 1F

11/09 22:06, , 2F
專業推
11/09 22:06, 2F

11/09 22:06, , 3F
才剛想這篇該M的說XDD
11/09 22:06, 3F

11/09 22:10, , 4F
我以為這裡是問版(茫
11/09 22:10, 4F

11/09 22:10, , 5F
需要看書的話 試試搜尋 "微算機"原理與應用 之類的
11/09 22:10, 5F

11/09 22:23, , 6F
居然 m 了... 而且這篇居然值 762 元...
11/09 22:23, 6F

11/09 22:29, , 7F
嗚嗚... PowerPC 被屏除在家用電腦的外面了...
11/09 22:29, 7F

11/09 22:29, , 8F
Apple 賈不死 哭哭 Q<>Q
11/09 22:29, 8F

11/09 22:36, , 9F
Apple也開始用x86架構了...自找的
11/09 22:36, 9F

11/09 22:47, , 10F
簡單說:CPU=ALU+CU+暫存器
11/09 22:47, 10F

11/09 23:28, , 11F
專業到看不懂!!
11/09 23:28, 11F

11/11 02:52, , 12F
專業好懂一定要推 XD
11/11 02:52, 12F
文章代碼(AID): #1A-25Zju (ask)
文章代碼(AID): #1A-25Zju (ask)