冲杯咖啡,谈谈计算机cpu
今天晚上去了一趟圖書館,令我的心情十分地愉快。原因是我找到了一本書,這本書的譯者是華師的黃河。而碰巧的是,這本書是關(guān)于計算機結(jié)構(gòu)與設(shè)計的國外教材。恰好上了一上午的計算機組成原理,看來這么好的心情,不沖杯咖啡,談?wù)動嬎銠C是不行了。
今 天學(xué)的就是計算機的核心部件cpu的ALU(多功能算術(shù)運算器),我們平常進行的 加 減 乘 除 法在計算機中到底是怎么實現(xiàn)的。學(xué)習(xí)過電子技術(shù)的同學(xué)都知道布爾代數(shù)吧,這個東東就是各種邏輯器件的基礎(chǔ),因為0 / 1恰好代表著真和非真。非常湊巧我們的數(shù)表示成二進制之后居然可以和布爾代數(shù)完美融合起來。這樣,計算機ALU架構(gòu)起來的理論基礎(chǔ)就建立起來了。我們可以 用簡單的門來構(gòu)建加法器,可以做簡單的加法。而加法又分為兩部分——進位,本位。當然本位要與低位的進位打交道,而進位又由本位相加的結(jié)果決定。這種叫做 行波進位。本位的加可以用一個異或門實現(xiàn),而進位位則由本位通過一個與門來實現(xiàn)(很顯然)。
如上圖所示,就是一個全加器。當然減法通過轉(zhuǎn)換成補碼也可以用全加器來實現(xiàn),只不過符號位的處理單獨進行。符號位產(chǎn)生的進位結(jié)果是要舍棄的。
乘法和除法則復(fù)雜一點,對于乘法來說,結(jié)果的符號位是乘數(shù)與被乘數(shù)的異或。先用我們?nèi)祟惖姆椒?#xff0c;就是乘數(shù)的每一位分別去乘被乘數(shù)的每一位,但是結(jié)果要依次 左移。然后將結(jié)果做加法。具體實現(xiàn)肯定是很復(fù)雜的,其實我上課睡覺了,木有聽到,老師也沒有怎么講,只是說不是這樣的,而是用軟件實現(xiàn)(布斯算法——不死 算法: P)。算法就是完成某工作的運算方法,我覺得就算是硬件實現(xiàn)也是有算法的。
除法,用的是加減交替法,也就是加法和減法一視同仁,不用考慮余數(shù)是否夠除。呵
呵,看起來就挺復(fù)雜的。
而且還有個CAS這個東西不知道是什么,其實它是可控加減單元,也就是可以控制的“加法器”。看看上面那個圖,就知道要進行比較復(fù)雜的運算。現(xiàn)在也不必深究,或許它也是軟件實現(xiàn)的呢。
當然計算機里面最基本的就是加減乘除運算了,至于更多的運算比如求平方根,x的n次冪,都是用軟件來實現(xiàn)的。它們是C語言中math頭文件里面一些基本函數(shù)。
當然ALU既然是多功能的,那就必須要能做很多事,比如加法,邏輯運算,取反等等。當然必須要有信號控制cpu到底進行什么操作,里面的一些設(shè)計都是非常 的精妙的。而這些操作都與指令集里面的指令相對應(yīng),比如匯編里面的add,sub,c語言中的<< 和 >>。這些東東都是相通的。
好了,寫完收工,晚安!
對了,怎樣在思維轉(zhuǎn)不過彎的時候利用思維導(dǎo)圖解決問題。或者在知識體系模糊不清的時候用思維導(dǎo)圖的方法來理清思路,想清楚一些東西。下次專門寫一篇給自己吧。
在俺們專業(yè)發(fā)現(xiàn)了很聰明的人喲,看來要好好向他們學(xué)習(xí)了。
by bibodeng??? 2011-09-14
?
轉(zhuǎn)載于:https://blog.51cto.com/bibodeng/664598
總結(jié)
以上是生活随笔為你收集整理的冲杯咖啡,谈谈计算机cpu的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows 8 :妥协的产物
- 下一篇: VMware View 5.0 Read