上一講,咱們看到了如何經過電路,在計算機硬件層面設計最基本的單元,門電腦,我給你看的門電路很是簡單,只能作簡單的「與(AND)」「或(OR)」「NOT(非)」和「異或(XOR)」,學習
這樣最基本的單比特邏輯運算。下面這些門電路的標你須要很是熟悉,後續的電路都是由這些門電路組合起來的。
spa
這些基本的門電路,是咱們計算機硬件端的最基本的「積木」,就好像了高積木裏面最簡答的小方塊,看似不起眼但把他們組合起來滿最終能夠搭出一個星際大戰裏面千年年隼這樣的大玩意兒。設計
咱們今天包含十億級別晶體管的現代 CPU,都是由這樣一個一個的門電路組合而成的。
3d
一、2個8位整數的加法blog
一、2排8個開關加法獲得結果基礎
二、須要1排8位的開關原理
二、其實加法器就是像一個辦法把三排開關電路連起來
bfc
三、咱們人在計算加法的時候通常會怎麼操做
打包
四、爲何咱們須要異或?軟件
其實異或就是一個最簡單的整數加法,所須要使用的基本電路
五、進位
那這個就對應一個與門,也就是有且只有在加數和被加數都是1的時候,咱們的進位纔是1
六、半加器
因此、經過一個異或們計算機出個位,經過一個與或門計算出是否僅爲,咱們就經過電腦算出了一位數的加法、因而、咱們把兩個門電路打包,給它取一個名字,就叫作半加器
七、半加器的電路演示
一、解決了什麼問題?
二、存在什麼問題?
咱們在寫程序的時候如何知道本身的計算機結果是否會溢出?
看到全加器的電路設計,相信你應該明白,在整個加法器的結果中,咱們其實有一個電路的信號,會標識出加法的結果是否溢出。咱們能夠把這個對應的信號,
輸出給到硬件中其餘標誌位裏,讓咱們的計算機知道計算的結果是否溢出。而現代計算機也正是這樣作的。這就是爲何你在撰寫程序的時候,可以知道你的計算結果是否溢出在硬件層面獲得的支持。
相信到這裏,你應該已經體會到了,經過門電路來搭建算數計算機的一個小功能,就好像搭樂高積木同樣
咱們用兩個門電路,搭出一個半加器,就好像咱們拿兩塊樂高,疊在一塊兒,變成一個長方形的樂高,這樣咱們就有了一個新的積木組件,柱子。
咱們再用兩個柱子和一個長條的積木組合一下,就變成一個積木橋。而後幾個積木橋串接在一塊兒,又成了積木樓梯。
當咱們想要搭建一個摩天大樓,咱們須要不少不少樓梯。可是這個時候,咱們已經再也不關注最基礎的一節樓梯是怎麼用一塊塊積木搭建起來的。
這其實就是計算機中,不管軟件仍是硬件中一個很重要的設計思想,分層。
從簡單到複雜,咱們一層層搭出了擁有更強能力的功能組件。在上面的一層,咱們只須要考慮怎麼用下一層的組件搭建出本身的功功能,而不須要下沉到更低層的其餘組件。
就像你以前並無深刻學習過計算機組成原理,同樣能夠直接經過高級語言撰寫代碼,實現功能
在硬件層面,咱們經過門電路、半加器、全加器一層層搭出了加法器這樣的功能組件。咱們把這些用來作算術邏輯計算的組件叫做 ALU,也就是算術邏輯單元。當進一步打造強大的 CPU 時,
咱們不會再去關注最細顆粒的門電路,只須要把門電路組合而成的 ALU,當成一個可以完成基礎計算的黑盒子就能夠了。
以此類推,後面咱們講解 CPU 的設計和數據通路的時候,咱們以 ALU 爲一個基礎單元來解釋問題,也就夠了。