從4004到core i7:處理器的進(jìn)化史 (3)-1—萬(wàn)事開頭難
我們就用一個(gè)最簡(jiǎn)單的例子說(shuō)起。
本文引用地址:http://www.ex-cimer.com/article/221768.htm現(xiàn)在讓我們暫時(shí)先忘掉編程和CPU,集中精力來(lái)解下面這一道小學(xué)算術(shù)題:
1+2=?
不要以為算出答案就完事了,我們來(lái)仔細(xì)想一想我們是怎么算數(shù)的。
首先我們是有眼睛的,所以看到了上面的那道算術(shù)題。
其次我們的眼睛是有焦點(diǎn)的,也就是說(shuō)我們一般一時(shí)間只能看清一道算術(shù)題中的某一個(gè)數(shù)字符號(hào)。
然后我們會(huì)做加法。我們并非生來(lái)就會(huì)做加法,而是因?yàn)槲覀兌忌线^(guò)小學(xué),學(xué)過(guò)算數(shù)。換言之,我們被訓(xùn)練過(guò),大腦中有了相應(yīng)的突觸連接。我們只能被訓(xùn)練做有限的事情。萬(wàn)能顯然不是用來(lái)形容人類或者CPU的。
有了上面的生理基礎(chǔ)還不夠。我們還需要一支筆來(lái)書寫,一張紙來(lái)記錄。
我們先不要急著往計(jì)算機(jī)上靠攏,而是想一想我們上面究竟都弄清楚了些神馬:
我們有一個(gè)需求,即計(jì)算1+2=?我們用清楚的語(yǔ)言描述了這個(gè)需求。這叫做設(shè)計(jì)捕捉(design capture)。
我們能描述清楚滿足這種需求的流程:
用眼睛從題目的最左端向右掃視,辨認(rèn)沿途碰到的每一個(gè)符號(hào),同時(shí)將符號(hào)分成兩堆:數(shù)和運(yùn)算符。
這些符號(hào)我們可以記在大腦中,但是想象我們是某種極其健忘的生物,必須要用筆記錄在紙上。
想要完成一次運(yùn)算,我們至少得明白加法的含義,并且短暫地記住加數(shù)和被加數(shù)。
我們終于完成了運(yùn)算,趕快把結(jié)果寫在題目后面,免得忘掉了。
以上我們有了一個(gè)切實(shí)可行的算法。你可以注意到,這種算法其實(shí)是高度抽象、靈活的。比方說(shuō),我可以把眼睛換成攝像頭,把大腦換成一個(gè)最簡(jiǎn)單的那種按起來(lái)滴滴響的計(jì)算器,等等。這就是說(shuō),我們有了一個(gè)行為描述(behavioral discrption),這種描述其實(shí)并沒(méi)有指定具體的解決方案。
接下來(lái)讓我們假設(shè)我們突然獲得了有關(guān)半導(dǎo)體的知識(shí),突然明白了用MOS管可以實(shí)現(xiàn)邏輯電路。對(duì)于高效、正確地完成大量小學(xué)算術(shù)題這個(gè)任務(wù),你有什么想法呢?
算術(shù)題可以用比特表示出來(lái),因?yàn)樗阈g(shù)題的種類(加減乘除等等)是有限的,運(yùn)算數(shù)也很好用比特表示出來(lái)(請(qǐng)相關(guān)人員自行腦補(bǔ)補(bǔ)碼等內(nèi)容)。運(yùn)算這個(gè)操作十分簡(jiǎn)單、機(jī)械本身也很好用數(shù)字邏輯表示出來(lái)。為了存貯這些比特,我們可能需要一些記憶單元(類比于符號(hào)和筆紙的關(guān)系)。十分幸運(yùn)的是,這些記憶單元也非常容易用晶體管搭建出來(lái)(寄存器、緩存、內(nèi)存(主存))。
但是算術(shù)題本身卻可以千變?nèi)f化??梢允?+2,可以是2+3,可以是3+4......盡管其中每一個(gè)操作用晶體管搭出來(lái)都很簡(jiǎn)單,組合卻是沒(méi)有窮盡的。也就是說(shuō),我們最好在臨算術(shù)之前用某種方式告訴晶體管它要完成的究竟是哪一道算術(shù)題。
以上我們區(qū)分了行為描述中兩種不同的成分:固定、機(jī)械的和靈活多變、無(wú)法窮盡的。我們很自然地想到刻在硅片上的電路板極其擅長(zhǎng)前者,而后者恐怕就要由我們的更強(qiáng)大的大腦代勞了。這就是硬件/軟件劃分(hw/sw partitioning)。不要小瞧了這個(gè)劃分,在很多數(shù)字系統(tǒng)中軟硬劃分常常決定了整個(gè)工程執(zhí)行的速度??傊?,每個(gè)組件只做一件事情,但要做好。Divide and conquer.這不光是CPU的設(shè)計(jì)哲學(xué)。
軟硬劃分是億萬(wàn)程序員和相比起來(lái)寥寥無(wú)幾的CPU設(shè)計(jì)師的神圣不可侵犯的契約。這個(gè)劃分是如此的堅(jiān)固,以至于千千萬(wàn)萬(wàn)的freshman在學(xué)到C語(yǔ)言時(shí)想都不想就認(rèn)為編程是一件自然的事情。
c語(yǔ)言相關(guān)文章:c語(yǔ)言教程
評(píng)論