Re: [請問] 想要了解CPU 的原理和設計 要看什麼書?
※ 引述《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
11/09 22:06, 1F
推
11/09 22:06, , 2F
11/09 22:06, 2F
→
11/09 22:06, , 3F
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
11/09 22:23, 6F
→
11/09 22:29, , 7F
11/09 22:29, 7F
→
11/09 22:29, , 8F
11/09 22:29, 8F
推
11/09 22:36, , 9F
11/09 22:36, 9F
推
11/09 22:47, , 10F
11/09 22:47, 10F
推
11/09 23:28, , 11F
11/09 23:28, 11F
推
11/11 02:52, , 12F
11/11 02:52, 12F
ask 近期熱門文章
PTT職涯區 即時熱門文章
209
330