資源描述:
《第四課:算術(shù)邏輯單元docx》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、一:算術(shù)邏輯單元——(ALU)1)比如二進(jìn)制的00101010是十進(jìn)制的42,所以表示儲存數(shù)字是計算機(jī)的重要功能,但真正的目標(biāo)是計算,有意義的處理數(shù)字:比如把“兩個數(shù)相加”這些操作由計算機(jī)的“算術(shù)邏輯單元”處理,簡稱“ALU”2)ALU是計算機(jī)的數(shù)學(xué)大腦,ALU*就是*計算機(jī)里負(fù)責(zé)運(yùn)算的組件,基本其他所有部件都用到它。3)最著名的ALU——英特爾——74181,1970年,它是第一個封裝在單個芯片的完整ALU。4)用布爾邏輯做個簡單的ALU電路,功能和74181一樣,用它從頭做出一臺電腦二:ALU有兩個單元,1個算術(shù)單元和一個邏輯單元1)算術(shù)單元:它負(fù)責(zé)計算機(jī)里
2、的所有數(shù)字在操作,例:加減法。它還會做很多其他的事情,比如給某個數(shù)字加1,“把兩個數(shù)字相加”這叫增量運(yùn)算2)最簡單的加法電路:是拿2個bit加在一起(bit是0或1);有2個輸入:A和B,一個輸出,就是兩個數(shù)字的和,需要注意的是:A,B,輸出,這3個都是單個(bit)(0或1)1)輸入只有4種可能:前三個是0+0=01+0=10+1=1(記住在二進(jìn)制里面,1與true相同,0與false相同。2)這組輸入和輸出,和XOR門的邏輯完全一樣,AXORB所以我們可以把XOR用作1位加法器(adder)INPUTOUTPUTABSUM000101011但第四個輸入組合,
3、1+1,是個特例。1+1=2(顯然)但二進(jìn)制里面沒有2,二進(jìn)制里1+1的結(jié)果是0,1進(jìn)到下一位,和是10(二進(jìn)制)XOR的輸出。只對了一部分。1+1輸出0,但我們需要一根額外的線代表“進(jìn)位”只有輸出是1和1時,進(jìn)位才是true因為算出來的結(jié)果用一個bit存不下,方便的是,我們剛好有個邏輯門能做這個事,“AND”門,只有當(dāng)兩個輸入為“true”的輸出才為“true”所以我們把它加到電路中。這個電路叫叫“半加器”INPUTOUTPUTABCarrySUM0000100101011110半加器就是兩個邏輯門組成的電路ATRUEBTRUEXORFALSEANDTRUE再
4、簡化就變成如下圖AHALFADDERSUMBCARRY1)把半加器封裝成一個單獨(dú)組件:兩個輸入A和B都是1位,兩個輸出“總和”和“進(jìn)位”2)如果想處理超過1+1的運(yùn)算,我們需要全加器,半加器輸出了進(jìn)位,意味著我們算下一列的時候,還有之后的每一列,我們的加3個位在一起,并不是2個1)全加器表格ABCCARRY進(jìn)位SUM總和00000001010100110001011101101011111有3個輸入:A,B,C都是1個bit所以最大可能是1+1+1“總和1”進(jìn)位“1”所以要兩條線輸出“總和”和“進(jìn)位”我們可以用半加器做全加器我們先用半加器將A和B相加,把C輸入到
5、第二個半加器,最后用一個OR門檢查進(jìn)位是不是true全加器=半加器+半加器+OR(檢查)AAhalfCcarryBBadderDAhalfCORCBadderDSUM再提升一層抽象,全加器,作為獨(dú)立組件,全加器會把“A”“B”“C”三個輸入加起來,輸出“總和”和“進(jìn)位”AFULLCARRYBADDERSUMC有了新組件,可以相加兩個8位數(shù)字,叫兩個數(shù)字A和B我們從A和B的第一位開始,叫A0和B0,現(xiàn)在不用處理任何進(jìn)位,因為是第一位加法,我們可以用半加器來加這個數(shù)字,輸出叫sum0,現(xiàn)在加A1和B1,因為A0和B0的結(jié)果有可能進(jìn)位,所以這次要用全加器,除了A1和B
6、1,還要連上進(jìn)位,然后,把這個全加器的進(jìn)位連到下個全加器的輸入,處理A2,和B2,以此類推,把8個bit搞定A0sum0B0halfadderSUM1A1FULLADDERB1SUM2A2FULLADDERB2SUM3A3FULLADDERB3SUM4A4FULLADDERB4SUM5A5FULLADDERB5SUM6A6FULLADDERB6SUM7A7FULLADDERB7SUM8A8FULLADDERB8CARRY注意每個進(jìn)位是怎么連接到下一個全加器的,所以這個叫“8位行波進(jìn)位加法器”,注意最后一個全加器有進(jìn)位的輸出.如果第9位有進(jìn)行,代表著2個數(shù)字的和太
7、大了,超過來8位,這叫“溢出”,一般來說,“溢出”的意思是:兩個數(shù)字的和太大了,超過了用來表示的位數(shù),這會導(dǎo)致錯誤和不可預(yù)期的結(jié)果。著名例子:吃豆人用8位在當(dāng)前關(guān)卡數(shù),如果你過了256關(guān)(8位bit最大表示255),ALU會溢出,造成一連串錯誤和亂碼,使當(dāng)前關(guān)卡無法進(jìn)行。這個bug成了厲害吃豆人吃豆人玩家的代表,如果想避免溢出,我們可以加更多全加器,可以操作16或32位數(shù)字,讓溢出更難發(fā)生,但代價是更多邏輯門,另外一個缺點(diǎn)是,每次進(jìn)位都需要一點(diǎn)時間現(xiàn)代計算機(jī)(加法電路)電子移動很快,但如今的量級是每秒幾十億運(yùn)算,所以會造成影響。叫“超前進(jìn)加位器”把二進(jìn)制相加,A
8、LU的算術(shù)單元,也能做一