j9游會真人游戲第一品牌:1.2:從芯片說起~芯片是如何工作的
作者:j9九游會發(fā)布時間:2025-01-02
前面一小節(jié)介紹了芯片是什么。我們雖然知道了芯片是個什么東西,但是仍然不知道芯片是如何工作的。我們還是要了解芯片的具體工作原理,才能真正理解編譯器設(shè)計機器碼、中間代碼的原因。下面我們就從學(xué)習(xí)一個最簡單的8位CPU的設(shè)計原理,來搞懂芯片到底是如何工作的。當前CPU設(shè)計已經(jīng)很復(fù)雜了,原理也和本文的內(nèi)容有很大差異,但是萬變不離其宗,最基本的原理還是一致的。
注:本小節(jié)內(nèi)容主要是對《But How Do It Know? - The Basic Principles of Computers for Everyone》一書的理解總結(jié),這本書目前還沒人翻譯。建議英文條件好的同學(xué)都去買英文原本看下,或者網(wǎng)上也有電子書。
芯片電路圖
學(xué)過數(shù)字電路的同學(xué)是不是感覺上面的電路圖并不復(fù)雜?目測就一百多個門電路和封裝好的譯碼器、移位器等拼一塊兒竟然就成了一個8位CPU芯片九游會j9官網(wǎng)真人游戲第一品牌。最右邊是輸入機器碼的地方。紅色是每個時鐘電路的通路。
記住這一點:CPU芯片本質(zhì)上只是在不斷的重復(fù)取指令、計算、輸出結(jié)果,而取值、計算、輸出本質(zhì)上就是芯片內(nèi)部的不同通路。而不同通路的選擇以及值的傳遞靠的是門電路。下面我們就來從頭開始DIY自己的8位CPU芯片,借此理解芯片的工作原理。
開始動手DIY芯片之前,我們要了解一下基礎(chǔ)的數(shù)字電路。這些并不復(fù)雜,只要你懂基本的邏輯運算就可以。門電路只不過換了一種符號體系來表示數(shù)學(xué)運算。
與非門
c = !(a & b),其中c是輸出,a、b是輸入。這個計算公式表達的含義就是將a、b做與運算后再取非。注意:a和b都是一根線,換句話說都是一個bit。對應(yīng)數(shù)字電路的與非門:
與非門
真值表
請各位同學(xué)記?。哼@是這個芯片里面最重要的基本電路。
非門
c = !(a & a)。與非門大家看懂了,這個就沒啥好說的了。純粹就是拿與非門實現(xiàn)了非門電路
非門
1bit存儲單元
來了,重點來了,我們開始用基本的門電路搭建一bit的存儲單元。數(shù)字電路有很多的穩(wěn)定的狀態(tài)(簡稱穩(wěn)態(tài)),有的穩(wěn)態(tài)輸出0,有的穩(wěn)態(tài)輸出1。輸出從0切換為1,或者從1切換為0,都只不過是外部條件觸發(fā)從一個問題切換到另一個穩(wěn)態(tài)。
廢話不再多說,上電路圖:
1bit存儲單元
我們來分析下電路的輸出:
1.i=0 s=1。此時a=1,b=0,c=1,o=0。
2.i=1 s=1。此時a=0,b=1,o=1,c=0。
規(guī)律1:當s=1時,o的值和i保持一致。i就是輸入,o就是輸出。
3.i=0, s=0。此時a=1,b=1,o和c的值既可以是0,也可以是1,或者說保持原有值。
4.i=1, s=0。此時a=1,b=1,o和c的值既可以是0,也可以是1,或者說保持原有值。
規(guī)律2:當s=0時,o的值維持自己的值不變,無論i怎么變化。
看到?jīng)]?。。∫?guī)律1+規(guī)律2是不是造就了一個可以保存輸入值的電路,這就是1bit內(nèi)存單元。支持寫入,支持讀取。
8bit存儲單元
1bit我們做好了,8bit就是集合8個1bit單元。用一個開關(guān)位控制(如果多個開關(guān)位也可以,那就表示CPU支持位操作指令)
8bit存儲單元

總線
我們先來介紹一個新的電路,由多個與門電路組成。這個電路當e關(guān)閉時,無論i輸入怎么變化,輸出的值都是0。當e打開時,輸出和輸入保持一致。
使能電路
我們把這個電路和前一個電路串聯(lián)起來,得到下面這個電路,這個就是我們后面要用到的8bit寄存器了。這個電路很重要,前面的B允許我們讀取輸入并保存起來(無論輸入后面怎么變化)。后面的E允許我們該輸出的時候才輸出:
寄存器電路
再來加入一個關(guān)鍵概念總線:
我們把8bit線的連接用“=”符號替換,這就是總線了j9九游會。這里也能看出一個重要概念,總線其實是有位數(shù)的概念的。
簡化后的表達
其他表示方法
譯碼器
再來最后一個譯碼器電路。其實就是將abc的值,翻譯成具體的值。
譯碼器
好了,我們可以繼續(xù)了。有了這些背景知識,你就可以做一個CPU了。下個小節(jié)我們正式開始