當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 程序員小灰
[導(dǎo)讀]十進(jìn)制數(shù)可以轉(zhuǎn)換成二進(jìn)制數(shù),而二進(jìn)制數(shù)又可以對(duì)應(yīng)到門電路的輸入端與輸出端。

我和小宇早戀了,我們家住隔壁。


一、編碼與電路——信號(hào)的轉(zhuǎn)換

晚上父母會(huì)把手機(jī)沒收,但我們還想繼續(xù)聊天,又不敢發(fā)出聲音,于是我們想到了這個(gè)辦法...

我們把所有的中文都用燈泡的亮滅組合來表示,同時(shí)約定好每隔一秒讀取一次燈泡的狀態(tài)并記錄下來,這是我們的暗號(hào)。

:亮亮滅滅亮

:滅亮亮滅滅

:亮滅亮滅亮

:亮亮亮滅滅

這樣,我們雖然沒有了手機(jī),依然可以日以繼日地聊天,雖然效率很低,但依然很快樂。

我和小宇就這樣在不經(jīng)意間,將語(yǔ)言轉(zhuǎn)換成為了燈泡的亮滅組合,這個(gè)過程叫做編碼。

二、門電路——信號(hào)的關(guān)聯(lián)

我和小宇就這樣一直秘密保持著通話,直到上了大學(xué),父母再也管不了我們用手機(jī)了。

但這么多年的小燈泡通話,使我們總覺得事情沒那么簡(jiǎn)單,于是我們開始了一些新的探索。

我們?cè)黾恿艘粋€(gè)開關(guān)。此時(shí)當(dāng)兩個(gè)開關(guān)同時(shí)閉合時(shí),燈泡才會(huì)亮。

這樣兩個(gè)開關(guān)與燈泡之間,不再是之前簡(jiǎn)單的對(duì)應(yīng)關(guān)系了,而是有了邏輯。

開關(guān)的斷開與閉合分別對(duì)應(yīng)著電路的斷開與連通。而小燈泡的不亮與亮,也分別對(duì)應(yīng)著電路的斷開與連通。那這兩者就可以統(tǒng)一,不再依賴于具體的實(shí)物表現(xiàn)了。

還有,開關(guān)的連通與斷開,是主動(dòng)的。而小燈泡的連通與斷開,是被動(dòng)的,是結(jié)果。

我們把開關(guān)這里的連通與斷開稱為輸入端,把燈泡的連通與斷開稱為輸出端,并且將整個(gè)電路都封裝在一個(gè)圖形里,可以得到如下抽象:

我們決定把這種電路叫做門電路, 上面這個(gè)叫與門

為了今后更為抽象的探索,我們將電路連通表示為數(shù)字 1,電路斷開表示為數(shù)字 0。

我們將這種表示方式稱為二進(jìn)制。

輸入 A

輸入 B

輸出

0

0

0

0

1

0

1

0

0

1

1

1

慢慢地,我們發(fā)現(xiàn)了越來越多的玩法。

上面這種電路,我把他抽象成如下門電路形狀,叫做或門。

之后便一發(fā)不可收拾,我和小宇設(shè)計(jì)了越來越多的門電路,我們發(fā)現(xiàn),只要是我們能想到的邏輯關(guān)系,都可以設(shè)計(jì)成對(duì)應(yīng)的門電路。


三、加法器——信號(hào)的計(jì)算

十進(jìn)制數(shù)可以轉(zhuǎn)換成二進(jìn)制數(shù),而二進(jìn)制數(shù)又可以對(duì)應(yīng)到門電路的輸入端與輸出端。

于是我和小宇有了一個(gè)大膽的想法,能不能設(shè)計(jì)一個(gè)計(jì)算加法的電路呢?

我們首先從最簡(jiǎn)單的一位二進(jìn)制數(shù)相加開始:

0+0=0;0+1=1;1+0=1;1+1=10

變成一張表格如下

加數(shù) A

加數(shù) B

加和

進(jìn)位輸出

0

0

0

0

0

1

1

0

1

0

1

0

1

1

0

1


即我們需要設(shè)計(jì)出一種電路,可以達(dá)到表中的輸入與輸出效果。

經(jīng)過不懈努力,終于發(fā)現(xiàn)這個(gè)電路可以由異或門與門兩個(gè)門電路組成。

這個(gè)裝置實(shí)現(xiàn)了二進(jìn)制的一位加法,但它并不完美,因?yàn)橹豢紤]了這兩個(gè)數(shù)的進(jìn)位輸出,但沒有考慮上一位的進(jìn)位,所以只能叫半加器

如果將前一個(gè)進(jìn)位考慮進(jìn)來,只需再多一個(gè)半加器,并且拼接一個(gè)或門即可。

此時(shí)我們已經(jīng)建立好了一個(gè)完美的一位加法器,并自豪地稱之為全加器。

全加器做出來之后,無論多少位的加法器就都可以做出來了,只需將全加器逐個(gè)拼起來即可。我們嘗試做一個(gè)八位加法器

OK,大功告成,有了加法器,理論上就可以實(shí)現(xiàn)任何的數(shù)學(xué)運(yùn)算了。

因?yàn)槲覀冎莱朔梢赞D(zhuǎn)換成加法,除法可以轉(zhuǎn)換成減法,而減法又可以轉(zhuǎn)換成補(bǔ)碼的加法?,F(xiàn)在我們可以自豪地稱這個(gè)部件為,算術(shù)邏輯單元 ALU。


四、時(shí)鐘——信號(hào)的震蕩

我和小宇都非常高興,終于用電路的方式實(shí)現(xiàn)了計(jì)算功能。

但慢慢的覺得沒什么意思了,于是我們又突發(fā)奇想,設(shè)計(jì)了如下詭異的電路。

當(dāng)閉合開關(guān) A 時(shí),整個(gè)電路聯(lián)通,開關(guān) B 將會(huì)被吸下來,整個(gè)電路斷開,電磁鐵失去磁性,開關(guān) B 又會(huì)彈上去,此時(shí)電路又聯(lián)通,開關(guān) B 又被吸下來。

就這樣,開關(guān) B 不斷地快速地在開和閉之間循環(huán)進(jìn)行,而我們始終沒有去干預(yù)這個(gè)電路,因此該電路有了自反饋的特性。

由于開關(guān) B 的來回震蕩,我們將這種電路稱為振蕩器,由于它可以產(chǎn)生不斷變化的電信號(hào),就像時(shí)鐘一樣不停且規(guī)律地跑著,我們將這個(gè)裝置又稱為時(shí)鐘。它所產(chǎn)生的交替的電信號(hào)稱為時(shí)鐘信號(hào)。

五、RAM——保存信號(hào)

雖然有了加法器,但是輸入的數(shù)字從哪里來?能不能先保存在某個(gè)地方呢?

我和小宇經(jīng)過多次實(shí)驗(yàn),發(fā)明了一個(gè)非常復(fù)雜的電路:

如果輸入端為 1,改變"某控制端"信號(hào)(信號(hào)由 0 變化到 1 這個(gè)瞬間),則輸出端變?yōu)?1,之后輸出端仍然保持(存儲(chǔ))著剛剛的 1。 如果輸入端為 0,改變"某控制端"信號(hào),則輸出端變?yōu)?0,之后輸出端仍然保持(存儲(chǔ))著剛剛的 0。

如果想不明白也沒關(guān)系,只要記住這個(gè)電路的設(shè)計(jì),實(shí)現(xiàn)了一位的存儲(chǔ)功能!我們叫它 1 位鎖存器。

然后我們把多個(gè)鎖存器組合起來,再加上一些 3-8 譯碼器,8-1 選擇器等電路,就可以實(shí)現(xiàn)一個(gè)能保存 8 位二進(jìn)制的存儲(chǔ)器,并且可以隨機(jī)地讀寫它, 我們把它叫做 RAM,簡(jiǎn)稱為內(nèi)存。

這個(gè)組件通過再次組合,可以形成 N × M 的 RAM 陣列。比如我們可以表示一個(gè) 1024 * 8 的 RAM 陣列。

這表示存儲(chǔ)容量為 1024 個(gè)單位,每個(gè)單位占 8 位。

為了更方便地表示,我們規(guī)定 1024 = 1K,8 位 = 1 字節(jié)(8 bit = 1 byte),那么我們就可以說,這個(gè) RAM 的存儲(chǔ)容量為 1K 個(gè)單位,每個(gè)單位占 1B?;蛘哒f,地址空間為 1K,存儲(chǔ)容量是 1KB。

此時(shí)這個(gè) RAM 模塊已經(jīng)近乎完美了,我們甚至可以單獨(dú)對(duì)其進(jìn)行使用,將數(shù)據(jù)存入某個(gè)地址,將某個(gè)地址中的數(shù)據(jù)讀出。

怎么方便人操作呢?只需要將地址輸入、數(shù)據(jù)輸入、寫操作端分別接入一個(gè)控制面板,由開關(guān)來控制這些信號(hào)的輸入是 1 還是 0 即可,然后再將數(shù)據(jù)輸出接入一些燈泡方便觀察,這樣一個(gè)單獨(dú)的可以手動(dòng)操作的存儲(chǔ)裝置,就搞定啦。(下圖中有彩蛋~)

有了可讀寫的內(nèi)存,我們就可以事先把幾個(gè)數(shù)字存儲(chǔ)內(nèi)存中了,接下來,我們能否讓算術(shù)邏輯單元 ALU 自動(dòng)地讀取這個(gè)數(shù)字,進(jìn)行加法運(yùn)算呢?

六、程序——自動(dòng)化

我們先引入一個(gè)新的組件,10 位計(jì)數(shù)器,這里的 Clk 就接入我們?cè)诘谒牟糠种v的時(shí)鐘信號(hào),Clr 是清零端,具體效果下面動(dòng)圖一目了然。

計(jì)數(shù)器的輸出就是 0,1,2,3,4,5,可以當(dāng)作內(nèi)存中的地址。

我們把這個(gè)計(jì)數(shù)器,以及上面講的 ALU 與 RAM 全部連在一起,嘗試實(shí)現(xiàn)一個(gè)可以累積求和的裝置。

我們想計(jì)算的是 1+2+3+4+5+6+7,   這個(gè)自動(dòng)化的計(jì)算器是這么運(yùn)行的

1、用控制面板在 RAM 的地址 0~6 處存上 1~7 這幾個(gè)數(shù)字的,在上一節(jié)已經(jīng)實(shí)現(xiàn)了。 2、當(dāng)計(jì)數(shù)器的值是 0 時(shí),數(shù)據(jù) 1 被輸出到加法器進(jìn)行計(jì)算,此時(shí)加法器 A=1,B=0,計(jì)算結(jié)果為 1,但記住鎖存器存儲(chǔ)的是上一次的加法器輸出 0,這次的計(jì)算結(jié)果要等下一次鎖存器遇到上升沿信號(hào)。 3、當(dāng)計(jì)數(shù)器的值是 1 時(shí), 數(shù)據(jù) 2 被輸入到加法器,此時(shí)鎖存器存儲(chǔ)了上一次的計(jì)算結(jié)果 1,并將這個(gè) 1 輸出給小燈泡,并同時(shí)回傳到加法器的B,所以此時(shí)加法器 A=2,B=1,計(jì)算結(jié)果為 3 4、當(dāng)計(jì)數(shù)器的值是 3 時(shí),以此類推,請(qǐng)看下圖

我們將累加求和這個(gè)過程自動(dòng)化了!之后如果想計(jì)算累加和,只需要用控制面板事先在內(nèi)存里存好數(shù)據(jù)就可以了!是不是很方便?

七、程序指令

我們還想要更多的自動(dòng)化!

現(xiàn)在這個(gè)裝置,只能無腦地將 RAM 中的數(shù)據(jù)從頭到尾一直累加下去,無法選擇加哪個(gè)不加哪個(gè),也無法選擇什么時(shí)候停止。

比如我們 RAM 中的數(shù)據(jù)是這樣的。

地址(16 進(jìn)制)

數(shù)據(jù)(10進(jìn)制)

0x00

...

0x01

10

0x02

...

0x03

20

0x04

30

0x05

...

...

...

我們只想讓 RAM 藍(lán)色地址處的數(shù)據(jù)進(jìn)行累加,其他地方的數(shù)據(jù)忽略,并且到 RAM 0x05 處就停止,該怎么做呢?

我們可以再增加一個(gè) RAM,這個(gè) RAM 里存放的數(shù)據(jù),表示"指令"的含義!

我們先發(fā)明三種指令。

add :把 RAM 這個(gè)位置處的值進(jìn)行累加 nop :忽略此處的值(也就是什么都不做)
halt 停止(禁止計(jì)數(shù)器的值加一)

那么要想達(dá)到上述功能,相應(yīng)的這個(gè)指令 RAM 中的數(shù)據(jù)應(yīng)該是這樣的。

注意:下面指令 RAM 的地址和上面數(shù)據(jù) RAM 的地址之間有一一對(duì)應(yīng)關(guān)系!

地址

(16 進(jìn)制)

指令RAM的值


指令含義

0x00

nop

什么都不做

0x01

add

累加

0x02

nop

什么都不做

0x03

add

累加

0x04

add

累加

0x05

halt

停止

...

...

...

我們需要引入一個(gè)控制單元,放在如下位置。

遇到 nop 指令(0x00),那輸出就將鎖存器的 W 位禁止,不允許鎖存器寫操作,這樣累加結(jié)果就不會(huì)錄入。

再比如遇到輸入為 halt 指令(0x05),就將計(jì)數(shù)器的 EN 位禁止,不允許計(jì)數(shù)器 +1,這樣就達(dá)到了停止的效果。

此時(shí)再讓時(shí)鐘信號(hào)震蕩起來,就可以達(dá)到有選擇地求和過程,并且在指定位置懸停。那現(xiàn)在我們就讓時(shí)鐘信號(hào)震動(dòng)起來,看看這個(gè)過程吧。(此處只留關(guān)鍵組件)

這個(gè)控制單元該怎么實(shí)現(xiàn)呢?我們知道,只要給出輸入,給出輸出,任何組件都可以造出來。本文就不再展開了。

有了三個(gè)指令,我們知道了通過指令這種方式,配合各種復(fù)雜的控制器,即可實(shí)現(xiàn)將所有操作統(tǒng)統(tǒng)自動(dòng)化。

接下來我們需要做的,就是設(shè)計(jì)控制器,以及約定好一大堆指令,使得通過這一大堆指令的排列組合,可以實(shí)現(xiàn)任何自動(dòng)化的計(jì)算操作。


我們將設(shè)計(jì)好的一大堆指令

稱作指令集

我們將指令排列組合后可以實(shí)現(xiàn)的功能

稱作程序

我們將指令的排列組合這個(gè)過程

稱作編程

我們將排列組合這些指令的人

稱作程序員

而我們將承載這一切的裝置,叫做什么呢?

沒錯(cuò),這個(gè)破玩意,就是


計(jì)

機(jī)


免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問題,請(qǐng)聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉