您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>電子百科>主機(jī)配件>cpu>

通俗易懂講故事版本的CPU工作原理

2020年05月14日 09:32 與非網(wǎng)電路城論壇 作者:與非網(wǎng)電路城論壇 用戶評(píng)論(0

上二年級(jí)的小明正坐在教室里?,F(xiàn)在是數(shù)學(xué)課,下午第一節(jié),窗外的蟬鳴、緩緩旋轉(zhuǎn)的吊扇讓同學(xué)們昏昏欲睡。此時(shí),劉老師在黑板上寫下一個(gè)問(wèn)題:

小明抬頭看了一眼,覺(jué)得這兩個(gè)數(shù)字挺眼熟。他昨天翹課去網(wǎng)吧了,因此錯(cuò)過(guò)了劉老師講的豎式計(jì)算加法。

“同學(xué)們算一算這道題?!眲⒗蠋熀吞@可親地說(shuō)道。

小明盯著黑板懵逼。

小學(xué)二年級(jí)的他面對(duì)這樣一道世界級(jí)難題,束手無(wú)策。小明伸出了自己的左手,打算用一個(gè)古老而深邃的方法--掰手指--嘗試一下。

小明發(fā)現(xiàn)他的每只手只能輸入0-5中的正整數(shù),和的范圍僅限于0-10,離6324還十分遙遠(yuǎn)。

“慢著!”小明看向了自己的左手。他發(fā)現(xiàn),事情有一點(diǎn)不對(duì)勁。

我們也來(lái)看看小明的左手。這只左手有5根手指,我們把5根手指都伸開(kāi)來(lái)記為11111,5根手指握拳記為00000,手背面向我們,左手小指是第一個(gè)1/0。

小明緊緊地握拳,然后伸出大拇指,此時(shí)的左手為00001?!叭绻?,”小明想,“這樣是1”。

他縮回拇指,伸出食指,此時(shí)的左手為00010;“這樣是2”。

他又伸出拇指,此時(shí)的左手為00011;“那么這樣是3”。

他縮回拇指和食指,伸出中指,此時(shí)的左手為對(duì)著自己豎中指00100;“這樣就是4!”

.....小明的左手飛速運(yùn)動(dòng)著,直到五根手指都伸直,像是鋼鐵俠射了一發(fā)掌心炮11111;“這樣就是31!一只手可以表示0-31中的任意正整數(shù)!”

小明為自己的發(fā)現(xiàn)感到激動(dòng)??伤恢涝趺幢硎炯臃?。

小明的同桌,英語(yǔ)課代表小紅,看他擺弄了半天左手,忍不住問(wèn)他在干什么。小明解釋了他的發(fā)現(xiàn)。小紅聽(tīng)了小明的一番高論,若有所思,提筆在數(shù)學(xué)書的封底畫了一個(gè)表格:

通俗易懂講故事版本的CPU工作原理

小紅畫的表格

“如果我們能造一個(gè)機(jī)器,給它三個(gè)輸入,它能返回兩個(gè)結(jié)果,那我們就能算出這道題!”小紅激動(dòng)地說(shuō)。

“啥叫進(jìn)位啊美女?”小明問(wèn)道。

“就是你列豎式的時(shí)候畫的一小撇”,小紅回答。

“獵術(shù)士是什么,我知道獵魔人和古爾丹。”

小紅于是講解了一下怎么列豎式計(jì)算十進(jìn)制加法?!拔叶??!?/p>

小明說(shuō)著,拿過(guò)小紅的數(shù)學(xué)書,補(bǔ)全了表格:

小明試著補(bǔ)全表格

“是這樣嗎?”小明問(wèn)小紅。

小紅拿過(guò)來(lái)看了看,說(shuō):“最后一行寫錯(cuò)了,輸出結(jié)果應(yīng)該是1。你想啊,1+1+1應(yīng)該等于11,左邊這一位是輸出進(jìn)位,右邊這一位是輸出結(jié)果,都是1,所以輸出結(jié)果應(yīng)該是1。”

“噢?!毙∶饔帜眠^(guò)書來(lái),拿起橡皮鉛筆改正:

小明改好了

“那為什么這個(gè)機(jī)器能算加法?我還是不懂?!毙∶鲉?wèn)。

“假設(shè)我們已經(jīng)造出來(lái)了這么個(gè)機(jī)器,長(zhǎng)這樣”小紅繼續(xù)在封底上畫著:

小紅畫的機(jī)器

“等會(huì)等會(huì),怎么變成英文了,我英語(yǔ)不好。”小明叫道。

“hmmm看來(lái)你沒(méi)讀雙語(yǔ)幼兒園。左邊這三個(gè)是輸入,右邊是輸出,C是進(jìn)位,C-in是輸入進(jìn)位,C-out是輸出進(jìn)位,Sum是和的意思,明白了么?”小紅解釋道。

“噢好?!?/p>

“假設(shè)我們已經(jīng)造出來(lái)了這么個(gè)機(jī)器,造了好幾個(gè),我們這么連起來(lái)...誒紙不夠大,我寫不下了。”

小明一聽(tīng),趕緊從書桌膛里翻出來(lái)一本草稿紙,生怕同桌變成費(fèi)馬。

“謝謝。先這么連起來(lái):”

小紅畫圖中

“哦哦哦我懂了,A和B就是兩只手,最右邊這個(gè)one-bit-adder計(jì)算的是最小位數(shù)的和!”小明說(shuō)道。

“正確!”

“你這樣連的話,是說(shuō)最小位的輸出進(jìn)位就是下一位的輸入進(jìn)位,下一位的輸出又是下下一位的輸入!天啊,這跟列豎式好像?!毙∶黧@叫。

“Absolutely!”小紅回答道。

小明又拿過(guò)草稿紙,接著畫起來(lái):

小明畫圖中

“把對(duì)應(yīng)的每一位連到每一個(gè)adder里...”小明念念有詞,“...再匯總一下輸出”:

小明畫的加法器

“成了!這個(gè)東西可以算兩只手加法的結(jié)果!”小明高興極了。

“不不不!你在掰手指的時(shí)候有沒(méi)有發(fā)現(xiàn),每多一根指頭,能表示的數(shù)就會(huì)多出來(lái)一大堆,我覺(jué)得只要加那么十幾個(gè)就夠了!1根指頭能表示2個(gè)數(shù)(0,1),2根指頭四個(gè)數(shù)(0,1,2,3),3根8個(gè)...”

“是2的倍數(shù)!”小紅接道,“小明,我覺(jué)得你的這個(gè)記數(shù)方法很有意思,要不叫小明式吧!”小紅凝望小明的目光中有了一絲羞澀。

“二進(jìn)制。”

身后忽然傳來(lái)低沉的聲音。兩人同時(shí)回頭,發(fā)現(xiàn)數(shù)學(xué)課代表小剛正直勾勾地盯著那張草稿紙。他好像已聆聽(tīng)多時(shí)了。

“叫二進(jìn)制吧,我看藍(lán)貓?zhí)詺馊?wèn)講過(guò)這個(gè),一模一樣,藍(lán)貓說(shuō)這是二進(jìn)制?!毙傃a(bǔ)充道。

小剛的數(shù)學(xué)成績(jī)是班里最好的,一進(jìn)學(xué)而思就上的超常班。小紅只能上尖子班,小明一般去網(wǎng)吧。

“那就叫二進(jìn)制吧。”小明說(shuō)。

他和小紅轉(zhuǎn)過(guò)身來(lái),老師讓小組討論的時(shí)候他們就這么坐。

小剛又道:“可是,怎么造出這個(gè)one-bit-adder呢?”他的眉頭皺成一團(tuán),眼鏡片看起來(lái)更厚了。

小明和小紅也陷入了沉默,三人一籌莫展,陷入僵局。這時(shí),小剛的同桌,物理課代表小蘭入局。

她忽然說(shuō)道:“我聽(tīng)物理辦公室的陳老師吹牛,他當(dāng)年在大學(xué)里讀電子工程,GPA一直是4.3,用實(shí)驗(yàn)室的導(dǎo)線開(kāi)關(guān)和小燈泡就能造一個(gè)32位的加法器,不知道是怎么做到的。他還說(shuō)什么與門是and,或門是or,再加一個(gè)非門not,用它們表示邏輯,就能造出世間千千萬(wàn)萬(wàn)的計(jì)算機(jī)?!?/p>

小明聽(tīng)迷糊了,“等會(huì)等會(huì),什么門?金拱門?”另兩人也露出迷茫的表情。

小蘭從桌子里掏出一個(gè)黑盒子?!斑@是下節(jié)課要用的教具,陳老師讓我先拿著?!?/p>

她打開(kāi)盒子,取出三個(gè)零件和一個(gè)說(shuō)明書。

“喏,你們看看這個(gè)”,她拿起第一個(gè)零件,“這個(gè)叫與門,有兩個(gè)輸入和一個(gè)輸出。如果我們把輸出連上小燈泡,接上電源,兩個(gè)輸入分別連上開(kāi)關(guān),那么是這么個(gè)情況:”

小蘭畫的表格

“就是說(shuō),只有兩個(gè)開(kāi)關(guān)都閉合了,小燈泡才亮,有點(diǎn)像串聯(lián)電路?!毙√m補(bǔ)充道。

“誒,有意思了...”小剛扶了扶眼鏡,似乎打算說(shuō)什么,大家都看向他。

“沒(méi),沒(méi)什么,我還在想,小蘭你接著說(shuō)?!?/p>

“那好?!毙√m接著拿起第二塊零件?!斑@個(gè)叫或門,有一個(gè)開(kāi)關(guān)開(kāi)著燈泡就會(huì)亮...”

“等下!”小剛忽然打斷,拿起筆在自己的白紙上畫起來(lái):

小剛畫的表格

“是不是這樣!”小剛激動(dòng)地說(shuō),“如果0是關(guān)1是開(kāi),0是滅1是亮的話,或門的輸入輸出是不是這樣?”

小蘭看了看道:“正是”。

她拿起第三個(gè)零件,“最后這個(gè)叫非門,只有一個(gè)輸入,一個(gè)輸出。它會(huì)輸出一個(gè)相反的結(jié)果:輸入有電流,輸出就沒(méi)有;輸入沒(méi)有電流,輸出就有電流。用小剛的話來(lái)說(shuō),輸入0輸出則為1,輸入1輸出則為0。太簡(jiǎn)單了,懶得畫表了?!?/p>

小蘭把非門放在桌上。小剛說(shuō)道:“這三個(gè)門可以表示三種邏輯。如果A、B是輸入, A or B 就是經(jīng)過(guò)或門的結(jié)果, A and B就是經(jīng)過(guò)與門的結(jié)果, not A 則是A經(jīng)過(guò)非門的結(jié)果?!?/p>

三人紛紛點(diǎn)頭。“可是,這和加法有什么關(guān)系呢?”小明問(wèn)道。

四人再度陷入沉默。

沉默。

忽然,小明拿起筆,一邊畫一邊說(shuō)道:“如果我們回去看小紅畫的表格,”

左三列是輸入,右二列是輸出

“Sum可以寫成A、B、Cin的邏輯關(guān)系!”

“你們看,把 A and B 記作 AB,A or B 記作 A + B,not A 記作 A 上面畫個(gè)橫線。Sum 輸出為1只出現(xiàn)在表格的2、3、5、8行,也就是三個(gè)輸入中1的個(gè)數(shù)為奇數(shù)的時(shí)候。我們把這4種情況記下來(lái),那么這個(gè)式子...”

“可以拿邏輯門實(shí)現(xiàn)!?。 彼娜水惪谕暤慕械?。

小紅搶過(guò)草稿紙,又看了看物理教具的說(shuō)明書,邊畫邊說(shuō)了起來(lái):“說(shuō)明書上寫,這個(gè)火車頭形狀的符號(hào)表示 and gate;這個(gè)B2轟炸機(jī)形狀的是or gate;這個(gè)小人形狀的是not gate...”

小紅畫的與門,或門,非門

她又看了一眼小明的式子,說(shuō)道:“這個(gè)式子的第一項(xiàng)可以這樣...”

小紅畫的輸出和的第一項(xiàng)

"你們看你們看,這個(gè)不就是

嘛!"小紅自豪地說(shuō)。

小明補(bǔ)全了電路:

“先把與門都畫了”

“再把或門都加上,搞定。這東西可以算出Sum了,接下來(lái)用一樣的辦法把C-out弄出來(lái)?!毙∶鳒?zhǔn)備繼續(xù)畫。

“你們看,這里還有幾個(gè)零件?!毙√m指著說(shuō)明書說(shuō)道:

與非,或非,異或,同或

“與非門:一個(gè)與門的輸出和一個(gè)非門相連,英文是not and,NAND gate。那個(gè)小圈圈代表一個(gè)非門。

或非門是或門 + 非門,not or,NOR gate。

第三個(gè)叫異或門,只有兩個(gè)輸入中一個(gè)為1一個(gè)不為1時(shí),才會(huì)輸出1,exclusive-or,XOR gate。

第四個(gè)是同或門,也就是一個(gè)異或門加上一個(gè)非門?!?/p>

“啊哈!”小剛靈機(jī)一動(dòng),抓起筆來(lái)道:“我有一個(gè)絕妙的點(diǎn)子。”

小剛簡(jiǎn)化后的電路

“小明的方案,要用17個(gè)門。我只要2個(gè)異或門就搞定了,牛逼吧?”

三人瞪大了眼睛,仔細(xì)思考后紛紛點(diǎn)頭道:“牛逼,牛逼?!?/p>

小剛隨即畫出了完整的one-bit-adder電路:

小剛的one-bit-adder

小明從教具盒里拿出電源、小燈泡、開(kāi)關(guān)和邏輯門,按照設(shè)計(jì)圖制作出了全加器:

看到小剛的設(shè)計(jì)被完整的實(shí)現(xiàn),小明欣喜:“啊哈哈哈,吾有上將小剛,則霸業(yè)可成,漢室可興??!”

他把黑盒子里的零件全拿了出來(lái),四人忙碌地工作著。很快,他們擁有了5個(gè)全加器,基于小紅的設(shè)計(jì)連了起來(lái):

小紅設(shè)計(jì)實(shí)現(xiàn)

“二進(jìn)制的01100等于十進(jìn)制的12,01010等于10,12+10=22,等于16+4+2,也就是二進(jìn)制的10110...”

四人人往代表輸出結(jié)果的5個(gè)小燈泡望去:亮,滅,亮,亮,滅;正是10110!

“成了?。?!”

大家激動(dòng)的拍打課桌為了計(jì)算黑板上那道題,四人一共制作了32個(gè)一位全加器,將它們連接后,一個(gè)三十二位加法器便誕生了。

他們歷經(jīng)艱辛,踩著自然規(guī)律和人類智慧的肩膀,把自己從枯燥的加法計(jì)算中解放出來(lái)!

窗外的蟬鳴漸漸平息,頭頂?shù)牡跎炔辉俎D(zhuǎn)動(dòng)。

他和小紅、小剛、小蘭分別對(duì)視了一眼,收獲了堅(jiān)定的目光。

這目光,連同面前的32位加法器,如同新的轉(zhuǎn)機(jī)和閃閃星斗,正在綴滿沒(méi)有遮攔的天空。

劉老師點(diǎn)了點(diǎn)頭,欣慰的說(shuō)道:“很好,看來(lái)四位同學(xué)對(duì)這部分知識(shí)掌握的不錯(cuò)!我們?cè)賮?lái)看幾道題!”

他轉(zhuǎn)過(guò)身,拿起板擦,把黑板擦了個(gè)精光,又從黑板槽里拾起半截粉筆,寫了起來(lái):

3. 17 * 45 = ?

4. 3 / 2 = ?

一連四道題,讓四人組陷入了深思:如何讓自己的機(jī)器運(yùn)算減法?乘法?除法?浮點(diǎn)數(shù)?

劉老師并沒(méi)有停下,手中的粉筆運(yùn)動(dòng)得越來(lái)越快:

5. Fibonacci 數(shù)列的第103項(xiàng)?

6. 一圈共有N個(gè)人,開(kāi)始報(bào)數(shù),報(bào)到M的人出列,然后重新開(kāi)始報(bào)數(shù),問(wèn)最后出列的人是誰(shuí)?.

.....

疑惑越來(lái)越多了:如何存儲(chǔ)?怎樣實(shí)現(xiàn)分支?保證效率?

劉老師仍未停下,黑板快被寫滿了:

103. 方程ζ(s)=0的所有有意義的解都在一條直線上嗎?

104. 大于2的偶數(shù)都可以寫成兩個(gè)質(zhì)數(shù)的和嗎?

......

134. 生命,宇宙及所有事物的答案?

劉老師放下了粉筆,半截粉筆已經(jīng)變成硬幣的厚度。

“這些問(wèn)題,我們能造個(gè)機(jī)器回答么?”小明撐著頭,喃喃自語(yǔ)。

非常好我支持^.^

(89) 100%

不好我反對(duì)

(0) 0%

( 發(fā)表人:黃飛燕 )

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?