一篇簡文讓你明白CPU到底是什麼?為什麼能夠實現計算? janrs_com 發表於2021-12-01
CPU到底是什麼東西?它為什麼能夠執行數學運算?
簡單的物理電路
先來看一張初中學過的物理電路圖:
從圖中我們可以看出這是一個簡單的串聯和並聯還有反相器的電路。[注:反相器沒有按照標準來畫]
圖中的 a
和 b
代表著控制電路的開關,通過控制這兩個開關的通電狀態來控制燈泡的亮
與不亮
。
我們用數字 1
和 0
來表示開關的通電
和斷電
的狀態表示,1
表示通電
狀態,0
表示斷電
狀態。同樣的,我們也用數字 1
和 0
來表示燈泡亮
與不亮
的狀態, 1
表示燈泡亮了
,0
表示燈泡不亮
。
那麼通過我們學過的物理電路的知識,上圖中三個電路,分別有以下三種控制結果:
以上三個表格分別表示就是對應了上圖中三個電路通過對開關的控制,進而控制燈泡的亮與否。
別小看了這三個簡單的電路控制結果的表格,因為這是現代計算機產生的物理基礎。可以說,現代計算機的產生就是由這個演變而來的。一個複雜的 CPU
就是從這麼簡單的電路演變而來的。至於怎麼演變來的,接下來該是英國數學家 喬治·布林
和美國電子工程師 克勞德·艾爾伍德·夏農
登場了。
喬治·布林
喬治布林這個數學家發明了兩個概念:一個叫集合
,一個叫布林邏輯
。我們們先來看下集合。有學過數學的都知道在集合中,有存在著三種操作,分別是:交集、並集、差集。如下圖所示:
相信從上圖中,有解開一部分程式設計師的疑惑,那就是我們在寫程式碼的過程中,一直用到的 OR / AND / NOT
邏輯操作,到底是從哪裡來的。其實我們用的就是這個偉大的數學家提出的這個集合的概念以及三種最基本的運算。從上圖中可以看出,第一個就是 並集
的運算,第二個就是 交集
的集合運算,第三個就是 差集
的集合運算。而使用到的符號就是這個數學家發明的:[OR]或、[AND]與、[NOT]非
再來看下 布林邏輯
。在布林邏輯中,只使用兩個值,一個是 0
,一個是 1
。講這個布林邏輯這麼簡單到底有啥用呢?再來看下一個叫 真值表
的東西,表格如下:
這三個表格到底在表達什麼呢?可能細心的童鞋已經發現了。其實以上三個表格,就是實現了布林邏輯中,0
和 1
之間的交集和並集的運算
那麼再細心一點的童鞋又可能發現了。實際上,這三個表格的運算結果,跟上面的前三個電路控制結果的表格就是一樣的
也就是說,物理跟數學這兩個跨界的學科,找到一個相關聯的計算方式。由此奠定了數學運算用物理電路的形式實現了
。這點很重要,因為這裡數學跟物理有共通的地方,從而實現了讓物理電路從此有了數學計算的能力。至於怎麼計算的,克勞德·艾爾伍德·夏農
出現了。這個偉大的電子工程師創造了 數位電路設計
這個學科
克勞德·艾爾伍德·夏農
克勞德·艾爾伍德·夏農
原本是在1932年進入到密歇根大學學習,在這個大學裡首次接觸到了 喬治·布林
的理論,後來又進入到了麻省理工學院參與了 微分分析機
的研究工作。微分分析機
是一臺機械式的計算機,不要小看這臺機械式的計算機,這可是參與了很多重要工程,包括曼哈頓計劃,就是造原子彈的,很多計算都是靠這種早期的計算器計算出來的。在這裡不得不服我們們國家的科研人員,由於當時的技術封鎖,我們們國家的科研人員硬是用算盤敲出的原子彈,真的是硬核到不行的操作。
講了那麼多,那麼 克勞德·艾爾伍德·夏農
具體的貢獻是什麼呢。通過上面的長篇講解我們已經知道了一些東西:電子開關的通斷電可以用 1
和 0
來表示;布林邏輯也是 1
和 0
;電子開關的通斷電控制燈泡的亮與否,跟真值表的計算結果是一樣的;1
和 0
剛好是二進位制。而夏農的貢獻就是,在原來是機械式的計算機上面,引入了電子控制的方式,可以用電子開關模擬布林邏輯運算了
至於電路為什麼能夠實現運算,在這裡就不進行其他的解釋了。這已經進入到了另一個領域了,叫做《數位電路設計》
題外話
複雜的數學計算怎麼通過物理電路實現:既然計算機能夠實現簡單的1位二進位制的加法,那麼怎麼實現更加複雜的數學運算。這就要感謝數學家。數學家將複雜的數學運算簡化到數學上的加法運算【我們們國家的原子彈製造就是將複雜的函式運算用算盤打出來的】。數學家運用各種數學工具,比如傅立葉變換、平方開方微積分等等,將資料的計算都換成了加法計算
也就是說,數學上覆雜的運算可以通過各種數學工具簡化到加法運算,那麼就能通過對電路的設計來實現計算,這也就讓計算機有了更加強大的計算能力。
總結:CPU是什麼。本質上,CPU就是一堆複雜的電路。而為什麼能夠實現計算,通過對電路的設計來實現計算的
本作品採用《CC 協議》 ,轉載必須註明作者和本文連結
做人要像被壓著的彈簧一樣。時刻保持壓力,隨時準備反彈