我們都知道,人類進行運算的本質是查表,并且我們存儲的表是有限的。那么,計算機是怎樣進行四則運算的呢?也是查表嗎?答案肯定不是!今天,我們就來說說CPU是如何計算1+1的。
現代計算機又叫電子計算機,肯定是由電路和電子元件來實現的。我們都知道,一臺計算機的核心就是處理器(CPU),它的職責就是運算。CPU是一塊超大規模的集成電路,我們要想弄清楚計算機的運算機制,就要了解集成電路是如何具有運算能力的,而集成電路是由大量晶體管等電子元件封裝而成的。
所以,探究計算機的計算能力,先要從晶體管的功能入手。
晶體管如何表示0和1
從第一臺計算機到EDVAC,這些計算機使用的都是電子管和二極管等元件,利用這些元件的開關特性實現二進制的計算。然而電子管元件有許多明顯的缺點。例如,在運行時產生的熱量太多,可靠性較差,運算速度不快,價格昂貴,體積龐大,這些都使計算機發展受到限制。于是,晶體管開始被用來作計算機的元件。
晶體管利用電訊號來控制自身的開合,而且開關速度可以非常快,實驗室中的切換速度可達100GHz以上。使用了晶體管以后,電子線路的結構大大改觀,進入了晶體管為代表的第二代電子計算機時代。
1947年貝爾實驗室的肖克利等人發明了晶體管,又叫做三極管。下圖是晶體管的電路符號。需要說明的是,晶體管有很多種類型,每種類型又分為N型和P型,下面圖中的電路符號就是一個N型晶體管。
晶體管電路有導通和截止兩種狀態,這兩種狀態就可以作為“二進制”的基礎。從模電角度來說晶體管還有放大狀態,但是我們此處考慮的是晶體管應用于數字電路,只要求它作為開關電路,即能夠導通和截止就可以了。
如上圖所示,當b處電壓>e處電壓時,晶體管中c極和e極截止;當b處電壓
換句話說,這個三極管的b極電壓相對e極為低電平時三極管就會導通,相對e極為高電平時三極管就會截止。從這里可以看出,晶體管的導通與截止這兩種狀態對外可以使用b極電壓的相對高低來表示,進而說明了我們可以使用高電平或者低電平狀態來表示二進制。也就是說b極是一個輸入量(自變量),可以作為變量存儲兩個數值:高電平或低電平;相應的輸出值(因變量)就是電路實際的變化:導通或截止。
就上面這個N型晶體管而言,高電平截止,低電平導通。假如此時,我們把高電平作為“1”,低電平作為“0”。那么b極輸入1,就會導致電路截止,如果這個電路是控制計算機開關機的,那么就會把計算機關閉。這就是機器語言的原理。
實際用于計算機和移動設備上的晶體管大多是MOSFET(金屬-氧化物半導體場效應晶體管),它也分為N型和P型,NMOS就是指N型MOSFET,PMOS指的是P型MOSFET。注意,MOS中的柵極Gate可以類比為晶體管中的b極,由它的電壓來控制整個MOS管的導通和截止狀態。
NMOS電路符號如下圖:
PMOS電路符號如下圖:
NMOS在柵極高電平的情況下導通,低電平的情況下截止。所以NMOS的高電平表示“1”,低電平表示“0”;PMOS相反,即低電平為“1”,高電平為“0”。到了這個時候,你應該明白“1”和“0”只是兩個電信號,具體來說是兩個電壓值,這兩個電壓可以控制電路的通斷。
門電路
一個MOS只有一個柵極,即只有一個輸入;而輸出只是簡單的電路導通、截止功能,不能輸出高低電壓信號,即無法表示“1”或“0”,自然無法完成計算任務。此時就要引入門電路了(提示:電壓、電平、電信號在本文中是一回事)。
門電路是數字電路中最基本的邏輯單元。它可以使輸出信號與輸入信號之間產生一定的邏輯關系。門電路是由若干二極管、晶體管和其它電子元件組成的,用以實現基本邏輯運算和復合邏輯運算的單元電路。這里只介紹最基礎的門電路:與門、或門、非門、異或門。
1、與門
與門電路是指只有在一件事情的所有條件都具備時,事情才會發生。
下面是由MOS管組成的電路圖。A和B作為輸入,Q作為輸出。
例如A輸入低電平、B輸出高電平,那么Q就會輸出低電平;轉換為二進制就是A輸入0、B輸出1,那么Q就會輸出0,對應的C語言運算表達式為0&&1=0。
2、或門
或門電路是指只要有一個或一個以上條件滿足時,事情就會發生。
下面是由MOS管組成的電路圖。A和B作為輸入,Q作為輸出。
例如A輸入低電平、B輸入高電平,那么Q就會輸出高電平;轉化為二進制就是A輸入0、B輸出1,那么Q就會輸出1,對應的C語言運算表達式為0||1=1。
3、非門
非門電路又叫“否”運算,也稱求“反”運算,因此非門電路又稱為反相器。下
面是由MOS管組成的電路圖。非門只有一個輸入A,Q作為輸出。
例如A輸入低電平,那么Q就會輸出高電平;轉換為二進制就是A輸入0,那么Q就會輸出1;反之A輸入1,Q就會得到0,對應的C語言運算表達式為!0=1。
4、異或門
異或門電路是判斷兩個輸入是否相同,“異或”代表不同則結果為真。即兩個輸入電平不同時得到高電平,如果輸入電平相同,則得到低電平。
下面是由MOS管組成的電路圖。A和B作為輸入,Q作為輸出。
例如A輸入低電平、B輸入高電平,那么Q輸出高電平;轉換為二進制就是A輸入0,B輸出1,那么Q就會輸出1,對應的C語言運算表達式為0^1=1。
通過這些門電路,我們可以進行布爾運算了。
半加器和全加器
通過門電路,我們可以進行邏輯運算,但還不能進行加法運算。要進行加法運算,還需要更復雜的電路單元:加法器(加法器有半加器和全加器)。加法器就是由各種門電路組成的復雜電路。
假如我們要實現一個最簡單的加法運算,計算二進制數1+1等于幾。我們這時候可以使用半加器實現。半加器和全加器是算術運算電路中的基本單元,它們是完成1位二進制相加的一種組合邏輯電路;這里的1位就是我們經常說的“1byte=8bit”里的1bit,即如果我們想完成8位二進制的運算就需要8個全加器 。半加器這種加法沒有考慮低位來的進位,所以稱為半加。下圖就是一個半加器電路圖。
半加器由與門和異或門電路組成,“=1”所在方框是異或門電路符號,“&”所在方框是與門電路符號。這里面A和B作為輸入端,因為沒有考慮低位來的進位,所以輸入端A和B分別代表兩個加數。輸出端是S和C0,S是結果,C0是進位。
比如,當A=1,B=0的時候,進位C0=0,S=1,即1+0=1。當A=1,B=1的時候,進位C0=1,S=0,即1+1=10。這個10就是二進制,換成十進制就是用2來表示了,即1+1=2。到了這里,你應該明白了晶體管怎么計算1+1=2了吧。
然后我們利用這些,再組成全加器。下面是一個全加器電路圖,同樣只支持1bit計算。Ai和Bi是兩個加數,Ci-1是低位進位數,Si是結果,Ci是高位進位數。
如果我們將4個加法器連接到一起就可以計算4位二進制,比如計算2+3,那么4位二進制就是0010+0011,下表就是利用加法器計算的值。和普通加法一樣,從低位開始計算。加數A代表0010,B代表0011。
結果Si:0101,就是十進制5,加法器實現了十進制運算2+3=5。
結 語
現在我們可以想到,CPU的運算單元是由晶體管等各種基礎電子元件構成門電路,在由多個門電路組合成各種復雜運算的電路,在控制電路的控制信號的配合下完成運算,集成的電路單元越多,運算能力就越強。
原文標題:CPU工作原理:最簡單的元器件,構成了最復雜的運算
文章出處:【微信公眾號:凡億PCB】歡迎添加關注!文章轉載請注明出處。
審核編輯:湯梓紅
-
集成電路
+關注
關注
5382文章
11396瀏覽量
360953 -
cpu
+關注
關注
68文章
10829瀏覽量
211193 -
晶體管
+關注
關注
77文章
9641瀏覽量
137876
原文標題:CPU工作原理:最簡單的元器件,構成了最復雜的運算
文章出處:【微信號:FANYPCB,微信公眾號:凡億PCB】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論