<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一個故事講完 CPU 的工作原理

          共 5188字,需瀏覽 11分鐘

           ·

          2022-02-22 12:40

          點擊上方小白學視覺”,選擇加"星標"或“置頂

          重磅干貨,第一時間送達

          來自 |?知乎? ?作者 |?柳兩叢?

          www.zhihu.com/question/40571490/answer/718942643
          上二年級的小明正坐在教室里?,F(xiàn)在是數學課,下午第一節(jié),窗外的蟬鳴、緩緩旋轉的吊扇讓同學們昏昏欲睡。此時,劉老師在黑板上寫下一個問題:

          6324 + 244675 = ?

          小明抬頭看了一眼,覺得這兩個數字挺眼熟。他昨天翹課去網吧了,因此錯過了劉老師講的豎式計算加法。

          “同學們算一算這道題?!眲⒗蠋熀吞@可親地說道。

          小明盯著黑板懵逼。

          小學二年級的他面對這樣一道世界級難題,束手無策。小明伸出了自己的左手,打算用一個古老而深邃的方法--掰手指--嘗試一下。

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

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

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

          小明緊緊地握拳,然后伸出大拇指,此時的左手為00001。“如果,”小明想,“這樣是1”。

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

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

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

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

          小明為自己的發(fā)現(xiàn)感到激動。可他不知道怎么表示加法。

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

          小紅畫的表格

          “如果我們能造一個機器,給它三個輸入,它能返回兩個結果,那我們就能算出這道題!”小紅激動地說。

          “啥叫進位啊美女?”小明問道。

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

          “獵術士是什么,我知道獵魔人和古爾丹?!?/span>

          小紅于是講解了一下怎么列豎式計算十進制加法?!拔叶恕!?/span>

          小明說著,拿過小紅的數學書,補全了表格:
          小明試著補全表格

          “是這樣嗎?”小明問小紅。

          小紅拿過來看了看,說:“最后一行寫錯了,輸出結果應該是1。你想啊,1+1+1應該等于11,左邊這一位是輸出進位,右邊這一位是輸出結果,都是1,所以輸出結果應該是1?!?/span>

          “噢。”小明又拿過書來,拿起橡皮鉛筆改正:

          小明改好了

          “那為什么這個機器能算加法?我還是不懂。”小明問。

          “假設我們已經造出來了這么個機器,長這樣”小紅繼續(xù)在封底上畫著:

          小紅畫的機器

          “等會等會,怎么變成英文了,我英語不好?!毙∶鹘械馈?/span>

          “hmmm看來你沒讀雙語幼兒園。左邊這三個是輸入,右邊是輸出,C是進位,C-in是輸入進位,C-out是輸出進位,Sum是和的意思,明白了么?”小紅解釋道。

          “噢好?!?/span>

          “假設我們已經造出來了這么個機器,造了好幾個,我們這么連起來...誒紙不夠大,我寫不下了?!?/span>

          小明一聽,趕緊從書桌膛里翻出來一本草稿紙,生怕同桌變成費馬。

          “謝謝。先這么連起來:”

          小紅畫圖中

          “哦哦哦我懂了,A和B就是兩只手,最右邊這個one-bit-adder計算的是最小位數的和!”小明說道。

          “正確!”

          “你這樣連的話,是說最小位的輸出進位就是下一位的輸入進位,下一位的輸出又是下下一位的輸入!天啊,這跟列豎式好像。”小明驚叫。

          “Absolutely!”小紅回答道。

          小明又拿過草稿紙,接著畫起來:

          小明畫圖中

          “把對應的每一位連到每一個adder里...”小明念念有詞,“...再匯總一下輸出”:

          小明畫的加法器

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

          “可是離6324和244675還是太遠了,輸入5位遠遠不夠呀。”小紅皺了皺眉頭。

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

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

          “二進制?!?/span>

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

          “叫二進制吧,我看藍貓?zhí)詺馊栔v過這個,一模一樣,藍貓說這是二進制。”小剛補充道。

          小剛的數學成績是班里最好的,一進學而思就上的超常班。小紅只能上尖子班,小明一般去網吧。

          “那就叫二進制吧?!毙∶髡f。

          他和小紅轉過身來,老師讓小組討論的時候他們就這么坐。

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

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

          她忽然說道:“我聽物理辦公室的陳老師吹牛,他當年在大學里讀電子工程,GPA一直是4.3,用實驗室的導線開關和小燈泡就能造一個32位的加法器,不知道是怎么做到的。他還說什么與門是and,或門是or,再加一個非門not,用它們表示邏輯,就能造出世間千千萬萬的計算機?!?/span>

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

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

          她打開盒子,取出三個零件和一個說明書。

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

          小蘭畫的表格

          “就是說,只有兩個開關都閉合了,小燈泡才亮,有點像串聯(lián)電路?!毙√m補充道。

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

          “沒,沒什么,我還在想,小蘭你接著說。”

          “那好?!毙√m接著拿起第二塊零件?!斑@個叫或門,有一個開關開著燈泡就會亮...”

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

          小剛畫的表格

          “是不是這樣!”小剛激動地說,“如果0是關1是開,0是滅1是亮的話,或門的輸入輸出是不是這樣?”

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

          她拿起第三個零件,“最后這個叫非門,只有一個輸入,一個輸出。它會輸出一個相反的結果:輸入有電流,輸出就沒有;輸入沒有電流,輸出就有電流。用小剛的話來說,輸入0輸出則為1,輸入1輸出則為0。太簡單了,懶得畫表了。”

          小蘭把非門放在桌上。小剛說道:“這三個門可以表示三種邏輯。如果A、B是輸入,? A or B 就是經過或門的結果,? A and B就是經過與門的結果,? not A 則是A經過非門的結果?!?/span>

          三人紛紛點頭?!翱墒?,這和加法有什么關系呢?”小明問道。

          四人再度陷入沉默。

          沉默。

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

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

          “Sum可以寫成A、B、Cin的邏輯關系!”


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

          “可以拿邏輯門實現(xiàn)?。?!”四人異口同聲的叫道。

          小紅搶過草稿紙,又看了看物理教具的說明書,邊畫邊說了起來:“說明書上寫,這個火車頭形狀的符號表示 and gate;這個B2轟炸機形狀的是or gate;這個小人形狀的是not gate...”

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

          她又看了一眼小明的式子,說道:“這個式子的第一項可以這樣...”


          小紅畫的輸出和的第一項

          "你們看你們看,這個不就是
          嘛!"小紅自豪地說。

          小明補全了電路:


          “先把與門都畫了”


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

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


          與非,或非,異或,同或

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

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

          第三個叫異或門,只有兩個輸入中一個為1一個不為1時,才會輸出1,exclusive-or,XOR gate。

          第四個是同或門,也就是一個異或門加上一個非門。

          “啊哈!”小剛靈機一動,抓起筆來道:“我有一個絕妙的點子。”

          小剛簡化后的電路

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

          三人瞪大了眼睛,仔細思考后紛紛點頭道:“牛逼,牛逼。”

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

          小剛的one-bit-adder

          小明從從教具盒里拿出電源、小燈泡、開關和邏輯門,按照設計圖制作出了全加器:


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

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

          小紅設計實現(xiàn)

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

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

          “成了?。?!”

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

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

          窗外的蟬鳴漸漸平息,頭頂的吊扇不再轉動。

          “劉老師,答案是250999!”小明站了起來,聲若洪鐘大呂,震懾天地。

          他和小紅、小剛、小蘭分別對視了一眼,收獲了堅定的目光。

          這目光,連同面前的32位加法器,如同新的轉機和閃閃星斗,正在綴滿沒有遮攔的天空。

          劉老師點了點頭,欣慰的說道:“很好,看來四位同學對這部分知識掌握的不錯!我們再來看幾道題!”

          他轉過身,拿起板擦,把黑板擦了個精光,又從黑板槽里拾起半截粉筆,寫了起來:?

          1. 244675 - 6324 = ??
          2. 3.14159 + 5.535897 = ??
          3. 17 * 45 = ??
          4. 3 / 2 = ?

          一連四道題,讓四人組陷入了深思:如何讓自己的機器運算減法?乘法?除法?浮點數?

          劉老師并沒有停下,手中的粉筆運動得越來越快:

          5. Fibonacci 數列的第103項?
          6. 一圈共有N個人,開始報數,報到M的人出列,然后重新開始報數,問最后出列的人是誰?.

          .....

          疑惑越來越多了:如何存儲?怎樣實現(xiàn)分支?保證效率?

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

          103. 方程ζ(s)=0的所有有意義的解都在一條直線上嗎?
          104. 大于2的偶數都可以寫成兩個質數的和嗎?

          ......

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

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

          “這些問題,我們能造個機器回答么?”小明撐著頭,喃喃自語。

          下載1:OpenCV-Contrib擴展模塊中文版教程
          在「小白學視覺」公眾號后臺回復:擴展模塊中文教程,即可下載全網第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內容。

          下載2:Python視覺實戰(zhàn)項目52講
          小白學視覺公眾號后臺回復:Python視覺實戰(zhàn)項目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數、添加眼線、車牌識別、字符識別、情緒檢測、文本內容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學校計算機視覺。

          下載3:OpenCV實戰(zhàn)項目20講
          小白學視覺公眾號后臺回復:OpenCV實戰(zhàn)項目20講即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學習進階。

          交流群


          歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據研究方向邀請進入相關微信群。請勿在群內發(fā)送廣告,否則會請出群,謝謝理解~


          瀏覽 55
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  三级片的网站 | 日韩精品免费在线观看 | 青青草公开无码好屌色 | 黄色日逼视频免费看 | 中国一区二区 |