計算機(jī)原理概覽(2)從二進(jìn)制到ALU:數(shù)字電路的基本原理
## 從二進(jìn)制到 ALU:數(shù)字電路的基本原理
- **二進(jìn)制**
二進(jìn)制是一種數(shù)的表示法,類似于我們熟悉的十進(jìn)制。
就像十進(jìn)制只有 10 個數(shù)字(0 到 9),而二進(jìn)制只有 2 個數(shù)字(0 和 1)。
十進(jìn)制計數(shù)時,采用從右到左的順序,每一位都是右邊一位的 10 倍。
例如,十進(jìn)制數(shù) 1234 表示 1 個千、2 個百、3 個十和 4 個個,即 1 * 1000 + 2 * 100 + 3 * 10 + 4 * 1。
二進(jìn)制計數(shù)時,采用從右到左的順序,每一位都是右邊一位的 2 倍。
例如,二進(jìn)制數(shù) 1101 表示 1 個八、1 個四、0 個二和 1 個一,即 1 * 8 + 1 * 4 + 0 * 2 + 1 * 1。
每個二進(jìn)制位(bit)可以看作一個開關(guān),它可以處于開啟(表示 1)或關(guān)閉(表示 0)的狀態(tài)。
以 8 位二進(jìn)制為例,就意味著有 8 個開關(guān),可以組合出 256 種不同的狀態(tài),這被稱為一個"字節(jié)"(byte)。
計算機(jī)中的所有數(shù)據(jù),無論是數(shù)字、字符、圖像、聲音還是視頻,都是以二進(jìn)制的形式存儲的。
- **晶體管**
晶體管是數(shù)字電路的基本組件,其本質(zhì)上就是一個電子開關(guān)。
晶體管有多種類型,每種類型都具有自己獨(dú)特的結(jié)構(gòu),其中最常見的一種類型是雙極型晶體管,
它包含三個電極,分別是"基極"(base)、"發(fā)射極"(emitter)和"集電極"(collector)。
通過改變基極的電流或電壓,可以控制從發(fā)射極到集電極的電流,從而實現(xiàn)開關(guān)的功能。
晶體管非常微小,其尺寸隨著制程技術(shù)的進(jìn)步,已經(jīng)可以縮小到幾納米(一個納米是百萬分之一毫米)。
并且晶體管的開關(guān)速度極快,可以達(dá)到每秒數(shù)十億次(在實際應(yīng)用中一般在每秒幾百萬次到幾千萬次之間)。
晶體管的開關(guān)速度對于電子系統(tǒng)的性能、響應(yīng)時間、功耗和信號傳輸速度等方面都具有重要影響。
- **布爾代數(shù)**
布爾代數(shù)是一門數(shù)學(xué)分支,其主要研究關(guān)于"真"和"假"這兩種狀態(tài)的邏輯運(yùn)算。
它提供了一套嚴(yán)密的基本法則和運(yùn)算規(guī)則,用于處理邏輯運(yùn)算。
布爾代數(shù)中包含三個基本操作:非(NOT)、與(AND)和或(OR)。
通過將多個晶體管組合在一起,可以實現(xiàn)布爾代數(shù)的基本邏輯運(yùn)算,
例如,對于 NOT 門的實現(xiàn),我們只需要一個晶體管和一個電阻。
輸入信號被接到晶體管的基極,電阻則連接到晶體管的集電極和電源。
當(dāng)輸入為 1 時,晶體管導(dǎo)通,電流從發(fā)射極流向集電極,因為電阻的存在,集電極的電壓會降低,輸出為 0。
當(dāng)輸入為 0 時,晶體管截止,沒有電流從發(fā)射極流向集電極,由于沒有電流通過電阻,集電極的電壓等于電源電壓,輸出為 1。
AND:兩個晶體管串聯(lián)。只有當(dāng)兩個輸入都為 1 時,兩個晶體管都導(dǎo)通,輸出為 1。否則,只要有一個輸入為 0,對應(yīng)的晶體管就會截止,輸出為 0。
OR:兩個晶體管并聯(lián)。只要有一個輸入為 1,對應(yīng)的晶體管就會導(dǎo)通,輸出為 1。只有當(dāng)兩個輸入都為 0 時,兩個晶體管都截止,輸出為 0。
這些基本邏輯運(yùn)算又可以組合成各種復(fù)雜的邏輯運(yùn)算,例如"與非"(NAND)和"異或"(XOR)。
這些運(yùn)算被稱為"邏輯門"(logic gate)。
- **ALU(算術(shù)邏輯單元)**
ALU(Arithmetic Logic Unit)是邏輯門的組合,它是計算機(jī)中的重要部件。
ALU 承載了大部分的計算任務(wù),能夠?qū)ΧM(jìn)制數(shù)進(jìn)行包括但不限于各種算術(shù)(加減乘除)和邏輯(AND、OR、NOT)運(yùn)算。
ALU 接收來自內(nèi)存的數(shù)據(jù),包括運(yùn)算數(shù)和指令碼,并根據(jù)指令碼執(zhí)行相應(yīng)的運(yùn)算,然后將運(yùn)算結(jié)果返回到內(nèi)存中。
例如我們要進(jìn)行一個簡單的二進(jìn)制加法運(yùn)算: 1101(十進(jìn)制中的13) + 0111(十進(jìn)制中的7)。
輸入:首先,這兩個二進(jìn)制數(shù)作為輸入被送入 ALU。在這個例子中,1101 和 0111 就是輸入。
指令:然后,ALU 需要知道要進(jìn)行什么樣的運(yùn)算。這是通過指令碼來實現(xiàn)的,指令碼是一組特定的二進(jìn)制數(shù),代表了一種特定的運(yùn)算。在這個例子中,加法運(yùn)算的指令碼被送入 ALU。
運(yùn)算:接下來,ALU 根據(jù)指令碼進(jìn)行運(yùn)算。在這個例子中,ALU 進(jìn)行加法運(yùn)算,將 1101 和 0111 相加。
輸出:最后,ALU 的結(jié)果被送出。在這個例子中,加法的結(jié)果是 10100(十進(jìn)制中的20),這個結(jié)果就是 ALU 的輸出。
此外,ALU 的輸出還可以用來表示運(yùn)算的狀態(tài),例如是否溢出、是否為零、是否為負(fù)數(shù)等等。
- **數(shù)據(jù)傳輸和控制信號**
實現(xiàn)計算機(jī)操作的關(guān)鍵是通過數(shù)據(jù)傳輸和控制信號實現(xiàn)不同組件之間的交互。
數(shù)據(jù)傳輸通過內(nèi)部總線來完成,它將數(shù)據(jù)從內(nèi)存?zhèn)魉偷?ALU 進(jìn)行處理,并將結(jié)果傳送回內(nèi)存。
控制信號則由時鐘信號控制,以確保各個組件按照正確的時間序列進(jìn)行操作。
時鐘信號在每個時鐘周期內(nèi)發(fā)出脈沖,用于同步和協(xié)調(diào)計算機(jī)的各個部件。
- **數(shù)字電路的運(yùn)算過程**
在數(shù)字電路的運(yùn)算過程中,晶體管根據(jù)輸入控制電流的通斷,形成 0 和 1 兩種狀態(tài),實現(xiàn)二進(jìn)制的存儲和處理。
然后,通過組合多個晶體管,構(gòu)成更復(fù)雜的邏輯門,實現(xiàn)布爾代數(shù)中的邏輯運(yùn)算。
邏輯門的開閉并不是無序的,而是受到時鐘信號的控制。
時鐘信號像心跳一樣為電路提供了節(jié)律,控制多個邏輯門的同步開閉,因此我們可以利用時鐘信號驅(qū)動數(shù)據(jù)在電路中按照預(yù)定順序流動,這就實現(xiàn)了有序的數(shù)據(jù)處理。
最后,ALU(算術(shù)邏輯單元)就像一顆集成眾多晶體管和邏輯門的果實,實現(xiàn)了在時鐘信號控制下基于布爾運(yùn)算的數(shù)學(xué)運(yùn)算,包括加減乘除以及各種邏輯判斷,這是整個數(shù)字電路的核心。