科技原理 現代科技的基礎,晶體管如何運行代碼的?一個簡單電子開關結合起來這麼強大?

工业为什么
3粉絲
2026年5月16日
AI 生成·可能包含錯誤
晶體管是非常簡單的電子元件,本質上就是電子開關。
當我們在它的某一個引腳上加電流時,它就會導通,讓電流通過。
但就是這種簡單的行爲是如何讓電腦成爲可能的呢?
今天的視頻中,我們將學習晶體管如何實現更復雜的任務,
比如進行數學運算,甚至是解釋指令。
一個晶體管通常有三個端子,極電極,發射極和積極。
在電路中,它可以充當絕緣體,阻止電流從極電極流向發射極。
但如果我們在積極施加一個小電流,它就會變成導體,允許電流流過。
可以把晶體管看作一個開關,但它不是機械式的,而是通過電信號工作的。
在這個例子中,我們用晶體管來控制一個LED的開關。
通過把積極作爲輸入端,發射極作爲輸出端,
我們就可以用一個開關模擬輸入信號,用LED可視化輸出信號。
我們把這稱爲簡單門。
在這個簡單門中,輸入爲0,輸出也爲0,輸入爲1,輸出也爲1。
現在我們來調整一下電路。
當輸入是0時,由於電路的連接方式LED會亮。
當輸入爲1時,LED熄滅,表示輸出爲0。
這個電路通常被稱爲反向器或飛門NOT gate。
我們當然不會只用一個晶體管。
通過組合多個晶體管,我們可以實現更復雜的邏輯行爲。
比如,如果我們把兩個晶體管串聯連接,
當兩個輸入都是0時,輸出爲0。
因爲兩個晶體管都像絕緣體一樣,阻止電流通過。
同樣的,只要有一個輸入爲0,輸出也會是0。
只有當兩個輸入都是1時,兩個晶體管都導通,輸出纔是1。
這時候,我們可以引入一個非常強大的概念——抽象。
我們不再去關注晶體管的具體連接方式,而是把它們抽象爲一個白盒子,
一個根據兩個輸入穩定輸出特定結果的盒子。
這就是宇門N gate。
當且,僅當兩個輸入都是1,宇門才輸出1。
如果我們將兩個晶體管並聯連接,
當它們都像絕緣體一樣時,電流無法流動。
但只要有一個晶體管導通,電流就可以通過。
這種電路可以被抽象爲霍門OR gate。
霍門在兩個輸入都是0時輸出0,只要有一個是1,輸出就是1。
這些邏輯門非常基礎,因此我們會用符號而不是盒子來表示它們。
注意,既然輸入輸出都是電信號,
我們就可以把一個邏輯門的輸出接到另一個邏輯門的輸入。
這時我們能組合邏輯門來實現更復雜的邏輯行爲。
比如我們想要實現一個特定的輸出行爲,就可以組合邏輯門來實現它。
這就是抽象的強大之處。
雖然這些電路本質上是由晶體管組成的,
但通過邏輯門來理解它們要簡單得多。
這個電路叫做易貨門XOR gate,
在計算機科學中也非常重要,所以它有自己的專屬符號。
現在我們瞭解了邏輯門,我們可以用它們做更有用的東西了。
我們從加法器Adder開始。
其實二進制加法非常簡單,就和十進制一樣,
0加0等於0,0加1等於1,1加0等於1,1加1等於2。
但是二進制裏二無法用一個位表示,我們就稱這種情況爲溢出,
意味着我們需要多一位來表示結果。
所以我們要設計一個電路,它接收兩個輸入,輸出兩個值,
一個是和sum,一個是進位,carry。
我們先來看和的部分,我們需要一個電路,
當兩個輸入相同時輸出0,不同時輸出1。
這是不是很耳熟?這正是易貨門的功能。
所以我們已經解決了一半。
對於進位,我們要在兩個輸入都是一時輸出1,
這正是與門的行爲。
現在我們就得到了一個電路,它能計算兩個一位二進制數的加法。
那如果是多位二進制數呢?
我們可以爲每一行加法使用一個加法器,這對第一行沒問題。
但到第二行時就有問題了,上一行可能產生了一個進位,
但我們的加法器只能接收兩個輸入,它無法處理這個進位。
因此這個電路叫做半加器,half adder,在這種情況就不適用了。
我們需要的是全加器,full adder,
它能同時處理兩個加數和一個來自前一位的進位。
我們可以把這個電路封裝成一個盒子,叫做全加器。
通過全加器,我們就可以進行多位二進制加法了。
每個全加器的進位輸出直接連接到下一個全加器的進位輸入,
就像這個動畫裏展示的那樣。
如果我們要一次性加兩個n位二進制數,就需要n個全加器。
比如,加兩個8位數,就需要8個全加器。
這些數值是通過電信號表示的,而電流的速度極快,
一旦輸入變化,輸出幾乎立刻響應。
這正是晶體管特別適合這個工作的原因。
雖然我們也可以用繼電器甚至3D打印的機械結構,
比如小球、水來做邏輯門,
但這些都不如晶體管速度快,體積小。
在電路變得過於複雜之前,我們可以把它們再次封裝成爲一個8位加法器,8bit adder。
8位加法器的輸入是兩個8位數,輸出是它們的盒。
同時還提供一個溢出信號,也就是最後一個全加器的進位輸出。
這個溢出信號非常關鍵。
它告訴我們是否需要更多的存儲空間來保存結果。
比如,在這個例子中,兩個輸入都是一個字節,
但如果我們只用一個字節來存儲結果,就會丟失信息,導致結果錯誤。
通過監控溢出信號,我們可以知道是否需要另一個字節來準確存儲結果。
信不信由你,忽視溢出可能會帶來嚴重後果。
比如1996年的火箭墜毀事故,就是由於溢出位被妥善處理造成的。
我們還可以進一步抽象,如果我們要做一個遞增器incrementor,
只需要一個加法器,第二個輸入固定爲1即可。
我們今天只詳細講了加法器,但歸根結底,這一切都是由邏輯門構成的。
我們可以繼續構建比如全減器fullsubtractor,進而構建一個8位減法器,再繼續就可以搭建更復雜的系統了。
你可能已經猜到,在CPU中有一個特殊的組件負責整合這些電路,我們暫時叫它神祕組件。
那問題來了,當CPU讀取一條指令時,它是怎麼知道該調用哪個電路來執行這條指令的?
比如,加法指令怎麼對應到加法電路,減法又怎麼對應到減法電路,而有些指令甚至不是算術運算。
這就需要我們今天要講的最後一個組件,二進制解碼器binary decoder。
看看這個電路,我們來觀察各種輸入組合的輸出情況。
可以發現,每種輸入組合只激活一個輸出,其餘輸出都爲0。
換句話說,這個電路接收到一個二進制數後,會激活對應位置的輸出。
這就是二進制解碼器的功能,它接收一個輸入,只有一個輸出爲1,其餘全部爲0。
如果有3個輸入,我們可以控制8個輸出,4個輸入可以控制16個輸出,以此類推。
這太強大了,這意味着我們可以構建能從多個選項中進行選擇的電路。
請記住,彙編代碼只是機器碼的可讀版本,而真正的機器碼其實就是計算機能理解的0和1,並非所有指令都是算術運算。
有些是讀寫內存的數據操作等。
我們假設一種最簡單的架構,如果指令的前兩個比特是0,CPU就把它當作算術運算指令。
爲了識別這一點,我們可以使用或飛門進行判斷。
這個例子中,第三和第四位用於判斷是哪種算術運算,00是加法,01是減法,以此類推。
這被稱爲操作碼upcode。
每個操作碼都對應一個特定的運算。
當CPU確認這是一個算術運算時,我們的神祕組件就會接收這個操作碼,然後通過解碼器選中要執行的內部電路。
一個簡單的方式是,所有電路都接收輸入並準備輸出,而只有被解碼器選中的那個輸出會被允許通過。
當然,還有更高效的做法,但在這裏我們關注的是原理。
我們的神祕組件也可以被封裝成一個盒子,這其實就是算術邏輯單元ALU的早期形式。
我們會在未來的視頻中深入講講CPU是如何執行指令的。
但簡而言之,ALU會接收輸入值和操作碼,然後內部電路根據這個操作碼進行運算,最後輸出結果還會附帶一些額外信息,比如結果是否爲負,是否爲零,或是否發生了溢出。
以上就是關於計算機如何使用晶體管來做數學運算與執行指令的非常簡要的介紹。
當然,我們完全沒有提及另一個非常重要的概念內存,我們會在後續的系列視頻中講解,可以點擊關注下。
以上就是本期視頻的全部內容了,如果你喜歡這期視頻的話,別忘了點贊收藏關注三連轉發支持一下,這會對我們有非常大的幫助。
