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