人類做算術,心智的活動是很自由的,但是處理器不行,處理器一次只能做一步簡單的運算,所以剛接觸電腦的人,大多會覺得難以理解,「這東西的運作方法怎麼這麼怪?」 假設存在一個32位元加法器,要設法讓它幫我們不斷的計算A+B,那只需要讓數字在加法器後面排隊,照順序饋入加法器,加法器就會一個一個把結果算出來。
這是一個典型的「磨坊-穀倉」系統,加法器就是「磨」,不斷饋入的數字是「穀物」,算出的結果就是「穀粉」。這裡要引入一個概念,就是「穀倉」的必要性。
|
簡單的加法系統 |
從「加法器」擴展到「處理器」 接著我們來擴展這個系統,想一想處理器會是個怎樣的系統
● 加法器只能做加法,這不夠好,我們得設計個全功能的處理器,能作加法、減法、乘法、除法、各種邏輯運算……,而且都是越快越好。
● 原來的加法器因為只做加法,所以我們放在記憶體裡面的「數字」就只是依序排隊饋入即可──因為反正只有加法動作要做而已。但是既然有了更複雜的處理器,後面排隊的就不能只是數字(不能只有運算子),還得有「運算方式」(運算元),得設計處理器讓它判斷該怎麼處理後面排隊的「穀物」(我是說,數字)。
這裡有個重要的概念,「你不能用人類的想法去操作處理器,你得用處理器的方式」。
人類習慣的做法是,3 + 5 = 8,很單純的計算加法,但處理器沒辦法。
處理器的做法(以80x86為例)是:
MOV AX, 03
ADD AX, 05
第一行的「MOV AX, 03」,就是「把16進位的3搬到AX暫存器裡面」的意思,第二行的「ADD AX, 05」,則是指「把16進位的5和AX目前的值加起來,並把結果存到AX裡面」。
是,有沒有覺得「這真是『微言大義』啊!」,每個處理器都像是筆削春秋的孔子,一個指令就蘊含著多麼深奧的奧義在裡頭啊!
全文>>