https://m.toutiao.com/is/DmkARUx/ 大家好,我是呼嚕嚕,在先前的一篇文章計算機(jī)中數(shù)值和字符串怎么用二進(jìn)制表示?中,我們知道了計算機(jī)為什么會采用 0 和 1 組成的二進(jìn)制,來表示所有的信息,比如機(jī)器指令、數(shù)字、字符串、聲音、圖片、視頻等等。我們本篇文章來看看計算機(jī)在硬件層面究竟是怎么表示二進(jìn)制的,CPU究竟是怎么實現(xiàn)的?通過本文的學(xué)習(xí),我們也可以反過來明白為什么計算機(jī)會采用二進(jìn)制了。 開關(guān)我們在生活中,處處都是開關(guān),比如控制燈的開關(guān) 我們可以發(fā)現(xiàn)一個很簡單的現(xiàn)象:
我們以最簡單的2個數(shù),0和1來舉個例子,寫出其布爾代數(shù)的真值表: 電報和繼電器在人類信息傳遞發(fā)展的歷史上,長途信息傳遞一直是非常困難的時,當(dāng)時常見的方式有,比如人騎馬送信,訓(xùn)練信鴿、點(diǎn)燃烽火,但信息傳遞的效率都非常低效。直到電報的出現(xiàn),電報思想的正式成形是在19世紀(jì)早期,它的讓人類傳遞信息的效率得到極大的提升。 電報利用電的特性來傳遞信息,早期設(shè)計復(fù)雜且不穩(wěn)定,傳遞的信息復(fù)雜度又比較低,1837年美國人摩爾斯通過電磁感應(yīng)改良了發(fā)報機(jī),并發(fā)明了摩爾斯電碼。他將電報劃分為2種信號,短促的'點(diǎn)信號'和長一點(diǎn)的'劃信號', 將把“點(diǎn)”當(dāng)成“1”,把“劃”當(dāng)成“0”(這不就是二進(jìn)制嘛),并編寫了個“字典”將字母及數(shù)字編碼一一對應(yīng),這樣就能傳遞復(fù)雜的信息,在未來產(chǎn)生了巨大影響力,意味著現(xiàn)代通信的開始。 由于早期的電報傳輸,需要鋪設(shè)電線,但是隨著電線越長,其電阻就越大,電信號常常傳輸過程中被消耗點(diǎn),這樣接受方就無法接收到信息了。幸運(yùn)的是,工程師發(fā)明了繼電器,其原理就是接收微弱的信號,然后不斷地通過新的電源重新放大已經(jīng)開始衰減的原有信號,最后把它增強(qiáng)后發(fā)送出去。 當(dāng)開關(guān)是打開的話,燈泡是不亮的;但當(dāng)開關(guān)是閉合的話, 電流流過圍繞在鐵棒上的線圈,會發(fā)生電磁效應(yīng),鐵棒就具有了磁性,會將彈簧片吸下來,右邊電路就通了,燈泡就會亮了。這樣通過繼電器,一段段放大信號,電報就能長距離傳輸信息了。 雖然繼電器有放大信號的作用,但和開關(guān)一樣繼電器也可以串聯(lián)或并聯(lián)以執(zhí)行邏輯中的簡單任務(wù),繼電器比起普通的開關(guān)的優(yōu)勢在于繼電器無需直接被輸入者控制,可以被其他繼電器控制,這樣就可以組合完成更復(fù)雜的操作。比如我們可以通過繼電器實現(xiàn): 當(dāng)我們閉合開關(guān)時,燈泡關(guān)閉;當(dāng)我們打開開關(guān)時,燈泡去點(diǎn)亮這種燈泡的狀態(tài)和開關(guān)的閉合狀態(tài)相反的操作,普通開關(guān)是無法實現(xiàn)這種操作的。這些電路物理的表象下隱藏的邏輯關(guān)系,一直沒有被人發(fā)現(xiàn)。 直到1938年,克勞德·香農(nóng)在麻省理工學(xué)院所寫的碩士論文《A Symbolic Analysis of Relay and Switching Circuits》中闡述了繼電器和開關(guān)電路中的符號分析之間的關(guān)系,他將開關(guān)、繼電器、二進(jìn)制、布爾代數(shù)聯(lián)系起來。也就是發(fā)現(xiàn)人類可以通過開關(guān)和繼電器這些普通的電路,直接就能實現(xiàn)布爾代數(shù)各種邏輯運(yùn)算操作。這些繼電器的組合被稱為邏輯門,他們構(gòu)造基本的邏輯電路,也叫門電路。 門電路上面是3種最最基本的門:
這些門其實就是一個個'開關(guān)'的抽象, 以后我們需要的各種復(fù)雜的邏輯都可以通過這3個門來實現(xiàn),真的是非常奇妙 我們再來看一個常見的門:異或門XOR 我們先寫出其真值表(真值表是在邏輯中使用的一類數(shù)學(xué)表,用來確定一個表達(dá)式是否為真或有效):
其表達(dá)式也就是: 通過表達(dá)式我們就能知道,把非A與B的值 和非B與A的值 通過或門加起來就能得到異或門了 材料學(xué)的發(fā)展上世紀(jì)材料學(xué)的發(fā)展也大力推動了計算機(jī)的蓬勃發(fā)展,計算機(jī)的硬件出現(xiàn)了3次大的更新?lián)Q代 繼電器與哈佛Mark1號在1944年,為了給美國曼哈頓計劃跑模擬,IBM建造出來首臺自動按序控制計算機(jī)哈弗Mark1號,有76萬五千個組件,300萬個連接點(diǎn)和500英里長的導(dǎo)線,重達(dá)4500公斤,占地面積有房間那么大。其大腦是由繼電器組成的,其一秒能做3次加或減,乘法花費(fèi)6秒,除法花費(fèi)15秒 由于繼電器的金屬臂有“質(zhì)量”,無法快速開關(guān),1940年一個好的繼電器一秒鐘可以翻轉(zhuǎn)50次,但是任何會動的機(jī)械都會隨著時間出現(xiàn)物理磨損,部件會損壞,隨著繼電器數(shù)量增加,故障概率也會增加。真的是又慢又容易壞的大家伙,但瑕不掩瑜,其依舊具有跨時代的意義。 真空管與巨人一號在1904年,英國物流學(xué)家弗萊明就已經(jīng)開發(fā)了一種新的電子組件,叫做真空管,也就是把兩個電極裝在一個氣密的玻璃燈泡里,但弗萊明的這個電子部件,電流只能單向流動,俗稱稱為 '二極管'。要想制作計算機(jī),需要能夠控制電子的流動的東西。 在 1906 年,美國發(fā)明家'李·德富雷斯特'在'弗萊明'設(shè)計的兩個電極之間,加入了第三個'控制'電極(一 種柵欄式的金屬網(wǎng),形成電子管的第三個極),向'控制'電極施加正電荷,它會允許電子流動;但如果施加負(fù)電荷,它會阻止電子流動。被命名為真空三極管,這樣就能形成一個'開關(guān)',可以“斷開或閉合電路”。 由于真空管內(nèi)沒有會動的組件,想較于機(jī)械裝置,磨損更少,又沒有金屬臂的限制,每秒可以開閉數(shù)千次,繼電器一秒鐘只能翻轉(zhuǎn)50次左右,效率大大的提升。 第一個大規(guī)模使用真空管的計算機(jī)是'巨人1號',標(biāo)志著計算機(jī)從機(jī)電轉(zhuǎn)向電子,電子計算機(jī)的大門自此打開。由工程師Tommy Flowers設(shè)計,完工于1943年12月,用于二戰(zhàn)時破解德國軍事通訊密碼。 晶體管與IBM608雖然真空管做計算機(jī)的大腦,解決了繼電器許多缺陷,但是其還是容易損壞,就像燈泡一樣燒壞。到1950年代,真空管計算機(jī)都達(dá)到了極限。 1947年,貝爾實驗室發(fā)明了晶體管,其成為了新的'開關(guān)',也標(biāo)志著一個全新的計算機(jī)時代到來。晶體管不僅體積小,響應(yīng)速度快(每秒切換開關(guān)能達(dá)到上百萬次),而且使用壽命也非常悠遠(yuǎn),準(zhǔn)確 性高,穩(wěn)定性好,不易損壞。關(guān)鍵它可以做得非常小,一塊集成電路即可容納十幾億到幾十億 個晶體管。
IBM608第一個完全用晶體管,消費(fèi)者也可以買的起計算機(jī)。該計算機(jī)有3000個晶體管,每秒執(zhí)行4500次加法,80次左右的乘除法。 計算機(jī)2大特性:計算能力和記憶能力通過本文的閱讀,我們知道了開關(guān)是一個生活中很普通的東西,但香農(nóng)將開關(guān)、布爾代數(shù)聯(lián)系的一起后,產(chǎn)生了化學(xué)反應(yīng)??梢杂靡粋€個開關(guān)組合起來,成為門電路,從而能夠造成CPU。 隨著材料學(xué)等發(fā)展,開關(guān)也從繼電器到真空管,再到晶體管,相應(yīng)速度,提交,使用壽命,成本都得到了明顯的改善。他們制造出來的計算機(jī)也慢慢的變成了我們現(xiàn)在熟悉的計算機(jī)。 計算機(jī)的大腦就是CPU,我們知道CPU內(nèi)最重要的2個部件是寄存器和計算單元,那么如何用開關(guān)來讓計算機(jī)擁有計算能力和記憶能力?大家可以思考一下,后面的文章讓我們拋開硬件,通過抽象出來的邏輯門來一步步設(shè)計和實現(xiàn)一個CPU。 參考資料: 《深入理解計算機(jī)系統(tǒng)》 《編碼:隱匿在計算機(jī)軟硬件背后的語言》 《深入淺出計算機(jī)組成原理》 《數(shù)字電子技術(shù)基礎(chǔ)》 《穿越計算機(jī)的迷霧》 百度百科 本篇文章到這里就結(jié)束啦,如果我的文章對你有所幫助,還請幫忙一鍵三連:點(diǎn)贊、關(guān)注、收藏,你的支持會激勵我輸出更高質(zhì)量的文章,感謝! 計算機(jī)內(nèi)功、JAVA源碼、職業(yè)成長、項目實戰(zhàn)、面試相關(guān)等更多高質(zhì)量文章,首發(fā)于公眾號「小牛呼嚕?!梗覀兿缕谠僖姟?/span> |
|