国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

運算器中全加器標志位的邏輯設計與應用

2017-07-03 15:28:26湯龍梅陳敏許雪林
福建工程學院學報 2017年3期
關(guān)鍵詞:標志指令運算

湯龍梅, 陳敏, 許雪林

(福建工程學院 信息科學與工程學院, 福建 福州 350118)

運算器中全加器標志位的邏輯設計與應用

湯龍梅, 陳敏, 許雪林

(福建工程學院 信息科學與工程學院, 福建 福州 350118)

介紹全加器實現(xiàn)邏輯基礎,給出4個常用標志位的生成邏輯,重點分析借位標志和溢出標志的生成邏輯,并給出標志位在MACH芯片中的實現(xiàn)過程。最后給出標志位在比較轉(zhuǎn)移等指令中的應用方法。

計算機; 組成原理; 全加器; 標志位; 邏輯設計

運算器的核心部分是對數(shù)據(jù)信息進行加工處理的算術(shù)邏輯運算單元(arithmetic logic unit, ALU),而ALU除了給出處理結(jié)果,還應給出結(jié)果的某些特征,如溢出否、有無進/借位輸出等[1]。這些特征以狀態(tài)標志位的形式提供,是CPU程序狀態(tài)字的一部分。因此,運算器設計乃至CPU設計應包含標志位生成電路的設計。隨著大規(guī)模集成電路制造技術(shù)的迅速發(fā)展,電子系統(tǒng)設計技術(shù)發(fā)生了很大的變化,將EDA和可編程邏輯器件設計與計算機組成原理授課相結(jié)合,讓學生將理論應用于實踐,已經(jīng)在很多院校嘗試[2-3]。多數(shù)計算機組成原理類教材詳細介紹了ALU中全加器的設計原理[4-7],但對標志位的生成邏輯并沒有深入分析。文獻[8-10]介紹了ALU處理邏輯的實現(xiàn)或優(yōu)化方法,但沒有給出除進位標志以外的標志位的實現(xiàn)過程。事實上,有些標志位如借位標志和溢出標志的生成邏輯并不像其概念那么直接。在全加器/全減器設計基礎上,介紹了4個常用標志位的生成邏輯,重點分析了借位標志和溢出標志的生成邏輯,并給出了4個標志位在MACH芯片中的實現(xiàn)過程;最后給出了標志位在一些常用指令中的應用方法。

1 全加器/全減器的設計

圖1 1位全加器邏輯電路圖Fig.1 Logic circuit of 1-bit full adder

由于定點數(shù)中的小數(shù)點并沒有被編碼成二進制位,因此,小數(shù)點對全加器而言是透明的。例如,二進制數(shù)0010b和1010b可表示十進制純整數(shù)2和10,也可表示純小數(shù)0.125和0.625(省略最左邊的0.),將這兩個二進制數(shù)輸入到4位全加器上進行相加:0010b+1010b=1100b。1100b既是12的二進制形式,也是0.75的二進制表示的小數(shù)部分(1100b左邊補上0.即得0.75),說明同一個全加器既可以實現(xiàn)無符號定點小數(shù)(小數(shù)點隱藏在最右邊)相加,也可以實現(xiàn)無符號定點整數(shù)(小數(shù)點隱藏在最左邊)相加,使用者自己明白小數(shù)點的位置即可。

對于有符號定點數(shù),除了數(shù)值部分需要被編碼,符號也需要被編碼為二進制。常用的有符號數(shù)編碼有原碼、反碼和補碼等。由于采用補碼表示時,中符號位可以與數(shù)值位一起參與運算,并且可以將減法轉(zhuǎn)換為加法進行運算,因此計算機中一般均采用補碼進行加減運算[4-7]。有符號定點小數(shù)與有符號定點整數(shù)的小數(shù)點對加法器而言,仍然是透明的。為避免重復,以下式子或示例均以定點整數(shù)為闡述對象。n位二進制整數(shù)補碼(含1位符號位、n-1位數(shù)值位)加、減法公式分別見式(1)和式(2)[4-7]。

(1)

[x-y]補=[x]補+[-y]補(mod 2″)

(2)

式(1)說明兩個數(shù)和的補碼等于各自補碼相加后的和。在運算結(jié)果未超出范圍時,對2n求模只需將進位直接舍棄即可得到。仍以上述0010b+1010b=1100b為例,這3個數(shù)可以分別是+2、-6和-4的4位補碼表示,符合式(1)。當然如果當作定點小數(shù)處理,它們也可以是+0.25、-0.75和-0.5的4位補碼表示(省略了最左邊的0.)。

式(2)說明減法運算可轉(zhuǎn)化成加上減數(shù)相反數(shù)的運算,式中[[y]補]求補是將[y]補連同符號位在內(nèi)全部按位取反再加1。在全加器中增加一組非門將減數(shù)取反,并從最低進位位輸入1,就可實現(xiàn)減法運算,因而不需另外設計減法器。Intel的74LS181和AMD的AM2901內(nèi)部都是利用全加器和補碼來實現(xiàn)減法運算的。

2 標志位生成邏輯分析

表征數(shù)據(jù)處理結(jié)果的特征很多,其中零標志ZF、符號標志SF、進/借位標志CF、溢出標志OF是最常用的4個標志位。下面依次對它們的生成邏輯進行分析。為便于描述,假設待運算數(shù)據(jù)為二進制數(shù)串X(X=XnXn-1…X2X1)和Y(Y=YnYn-1…Y2Y1),運算結(jié)果為F(F=FnFn-1…F2F1),低進位輸入為C0,高進位輸出為Cn。

2.1 零標志ZF

ZF標志是表征運算結(jié)果是否為零值。當FnFn-1…F2F1全為零時,ZF取值1,否則ZF取值0??刹捎檬?3)來實現(xiàn)。

(3)

2.2 符號標志SF

SF標志表征運算結(jié)果是正數(shù)還是負數(shù),結(jié)果為正數(shù)時,SF取值0,否則SF取值1。有符號數(shù)運算與無符號數(shù)運算使用的是同一個加法器,區(qū)別只是把最高位看作符號位而不是數(shù)值位,因此SF直接取Fn即可。若Fn為1即SF為1,表示結(jié)果為負數(shù),反之為非負數(shù)。

2.3 進/借位標志CF

CF標志用來表示加法運算是否產(chǎn)生進位,或減法運算是否產(chǎn)生借位,只對無符號數(shù)運算有意義。加法的進位標志取全加器的最高進位輸出位Cn即可。串行進位加法的進位生成邏輯比較簡單,此處主要討論借位生成邏輯。

由于減法運算是借助加法來實現(xiàn)的,如果直接采用全加器的進位輸出作為借位標志,則與借位定義正好相反。這一點在AM2901和74LS181上都可以得到體現(xiàn),下面對此進行分析。

根據(jù)[[y]補]求補的運算規(guī)則,將[y]補按位取反等效于(2n-1)-[y]補,根據(jù)式(2),可得:

[x-y]補= [x]補+ (2n-1) - [y]補+ 1=

[x]補- [y]補+ 2n.

由于此時的x和y都是無符號數(shù),故:

若x≥y,則[x]補≥[y]補,故[x]補- [y]補+ 2n≥ 2n,因而產(chǎn)生進位;

若x

分別以減法2-3=-1和3-2=1予以例證。為簡便起見,補碼采用4位二進制(下同)。運算器中2-3的運算過程是:2的補碼0010b和3的補碼0011b分別輸入全加器,0011b按位取反得1100b,最低進位位送入1,最后三者相加:0010b+1100b+1 =1111b。1111b正好是-1的補碼,說明運算結(jié)果正確,但Cn=0,與實際有借位剛好相反。

3-2的運算過程是:3的補碼0011b和2的補碼0010b送入全加器,0010b按位取反得1101b,最后0011b+1101b+1=10001。0001b正好是1的補碼,但Cn=1,與實際無借位剛好相反。

根據(jù)上式分析,生成符合一般意義上的進/借位標志的生成邏輯見式(4),其中ADD和SUB分別表示加法和減法運算。

(4)

文獻[1]基于AM2901運算器芯片設計了16位運算器,將最高位AM2901的進位輸出Cn+4直接作為CF,因此后續(xù)將CF用作借位標志時要作相應處理。

2.4 溢出標志OF

OF標志用于表示當兩個有符號數(shù)進行加、減運算時,運算結(jié)果是否超出了范圍。若超出,則OF取值1,否則取值0。常用的溢出判斷方法有3種:雙進位判斷法、單符號位判斷法和雙符號位判斷法[11]。這些方法在某些場合并不完全等價,但相關(guān)文獻并未給出它們的區(qū)別。下面予以對比分析。

2.4.1 雙進位判斷法

將最高進位Cn與次高進位Cn-1異或得到OF。雙進位法對于加法溢出的判斷沒有問題,但對借助加法實現(xiàn)的減法溢出判斷而言,直接將Cn?Cn-1作為OF輸出是有局限性的。以4位二進制補碼實現(xiàn)-1-(-8)=7和+1-(-8)=9為例,-1-(-8)的運算過程是:-1的補碼1111b和-8的補碼1000b送入運算器,1000b按位取反得0111b,低進位位送入1,最后1111b+0111b+1 =10111b。0111b正好為+7的補碼,而次高進位為0,最高進位為1,故OF=1,與實際無溢出相反。類似的,可得到+1-(-8)的運算結(jié)果為1001b,為-7的補碼,顯然結(jié)果溢出了,但此時OF卻為0。

之所以出現(xiàn)上述情況仍然是由于對第二操作數(shù)取反導致的。4位二進制補碼數(shù)的范圍為[-8,+7],-8的相反數(shù)為+8,已經(jīng)超出范圍了。上例中減去(-8)運算實際變?yōu)榧由?-8)的運算,導致最后溢出標志出錯。因此,當減數(shù)為-2n-1時,需對原溢出標志取反,增加了處理電路的復雜性,見式(5)。

(5)

2.4.2 單符號判斷法

若兩操作數(shù)的符號相同,而結(jié)果符號與操作數(shù)符號相反,表示結(jié)果超出范圍??梢岳斫鉃檎龜?shù)與正數(shù)相加,結(jié)果得負數(shù);或負數(shù)與負數(shù)相加,結(jié)果得正數(shù)。這兩種情況都是不可能的,故出現(xiàn)了溢出。

對減法運算溢出判斷可以描述為:若兩操作數(shù)符號相異,而結(jié)果符號與減數(shù)符號相同(與被減數(shù)符號相反),則溢出??梢岳斫鉃檎龜?shù)減負數(shù),結(jié)果為負數(shù);或負數(shù)減正數(shù),結(jié)果為正數(shù)。這兩種情況也都是不可能的。

綜合兩種情況,OF的生成邏輯見式(6)。

(6)

該方法依據(jù)取反前的數(shù)據(jù)符號以及結(jié)果符號進行判斷,對第二操作數(shù)取反后是否溢出不影響最終的OF,因此不會出現(xiàn)方式(1)中的特殊情況,但仍然比較復雜。

2.4.3 雙符號判斷法

操作數(shù)和運算結(jié)果均采用雙符號,如果運算結(jié)果的兩個符號位相異,則說明出現(xiàn)了溢出,因此只需將雙符號進行異或即可生成OF。如上例,-1-(-8)的運算過程是:-1的補碼11111b和-8的補碼11000b送入運算器,11000b按位取反得00111b,最后執(zhí)行:11111b+00111b+1=100111b,雙符號位為00,故沒有溢出。而1-(-8)的運算過程為:00001b + 00111b+1=01001,結(jié)果溢出,此時雙符號位01中的0表示實際的符號,1是結(jié)果的最高數(shù)據(jù)位,因而正確的結(jié)果是+9。

在本方法中,全加器需要額外增加一位,即n位二進制補碼數(shù)相加減需要n+1位全加器。雖然增加了硬件開銷,但簡化了OF的生成邏輯,且容易獲取正確的運算結(jié)果。要注意的是,雙符號由ALU內(nèi)部產(chǎn)生用于溢出判斷,對用戶來說是透明的,其他標志位仍按原有邏輯。

3 標志位的實現(xiàn)

筆者用計算機組成原理實驗箱TEC-2000A上的iM4A5-128/64芯片作為可編程邏輯器件,采用LATTICE公司的ispLEVEL開發(fā)環(huán)境和ABEL語言,設計了一個包含4個標志位的4位全加器。利用實驗板上的撥動開關(guān)輸入X1~X4和Y1~Y4、低進位C0以及運算功能選擇M(輸入0給M表示做加法,輸入1給M表示做減法),將運算結(jié)果F1~F5和各狀態(tài)位送往LED指示燈進行顯示,測試結(jié)果符合上述分析。主要語句如下:

EQUATIONS

//5-bit串行進位ALU,M=0加法,M=1減法

F1 = X1 $ (Y1$M) $ C0;

C1 =(X1&(Y1$M)) # (X1&C0) # ((Y1$M)&C0);

F2 = X2 $ (Y2$M) $ C1;

C2 =(X2&(Y2$M)) # (X2&C1) # ((Y2$M)&C1);

F3 = X3 $ (Y3$M) $ C2;

C3 =(X3&(Y3$M)) # (X3&C2) # ((Y3$M)&C2);

F4 = X4 $ (Y4$M) $ C3;

C4 =(X4&(Y4$M)) # (X4&C3) # ((Y4$M)&C3);

F5 = X4 $ (Y4$M) $ C4; //雙符號位高位,把X4和Y4當成X5和Y5;

C5 =(X4&(Y4$M)) # (X4&C4) # ((Y4$M)&C4);

ZF = !(F1#F2#F3#F4); //零標志

SF = F4; //符號標志

CF =(!M &C4) # (M&!C4); //進位/借位標志

//OF1~OF3均為溢出標志

OF1 = (!M&(C4$C3))

#(M&((Y==[1,0,0,0])$(C4$C3)));

OF2 = !M&(X4&Y4&!F4 # !X4&!Y4&F4)

#M&(X4&!Y4&!F4 # !X4&Y4&F4);

OF3 = F5$F4。

在上述代碼中,$、#、&和!分別是異或、或、與和非這4種常見邏輯運算。為對比不同溢出標志生產(chǎn)方式,此處實現(xiàn)了雙符號位運算,因此,4位二進制的加減運算需要5位全加器,F(xiàn)1~F4為相加或相減后對應的和或差的輸出。ZF為零標志,從它的邏輯表達式可以看出,只有當F1~F4全為0,ZF才會輸出1。SF為運算結(jié)果的符號位,直接取自F4。CF為加法進位輸出或者減法的借位輸出,當執(zhí)行減法操作時,需要對C4取反才是正確的借位標志值。OF1、OF2、OF3分別是雙進位溢出判斷法、單符號溢出判斷法和雙符號溢出判斷法。從邏輯表達式上看,OF3表達式最簡單。

4 標志位的應用

用戶通過計算機指令來獲取或使用標志位所代表的含義,而指令的執(zhí)行要依靠CPU,因此CPU設計者需要根據(jù)指令功能正確選擇標志位來控制指令的執(zhí)行。與標志位相關(guān)的指令數(shù)目眾多,此處選取了Intel8086匯編指令系統(tǒng)中比較容易混淆的帶進位減法和比較轉(zhuǎn)移類指令[12]來分析如何應用上述4個標志位控制指令的執(zhí)行,表1是這些指令應用標志位情況的匯總說明。當然,本研究的控制方法是實驗性的,與Intel8086CPU的實現(xiàn)方法沒有直接關(guān)聯(lián)。

表1 常用轉(zhuǎn)移指令標志位取值要求

4.1 帶借位減法指令SBB Dest,Src

該指令的功能是Dest←Dest-Src-CF,CF為當前借位標志值。不帶借位減法運算由ALU內(nèi)部將減數(shù)取反、低進位位補1后再執(zhí)行全加運算。若低進位補0,則相當于CF為時的帶借位減法操作;而若低進位補1,則相當于CF為0時的帶借位減法操作。故CPU在控制SBB指令執(zhí)行時,需將借位標志CF取反,再送往全加器最低進位。

4.2 無符號數(shù)比較判斷指令

根據(jù)指令功能,無符號比較的4類指令可以分為條件正好相反的兩組:JA/JNBE與JNA/JBE為一組,JB/JNAE與 JNB/JA為一組,因此,確定組內(nèi)一方的判斷條件后,另一方判斷條件只需將對方條件取反即可。

若CF=1,表示兩數(shù)相減產(chǎn)生了借位,說明被減數(shù)小于減數(shù),對應JB和JNAE的轉(zhuǎn)移條件。反之,若CF=0,表示沒有借位,說明被減數(shù)不小于減數(shù),對應JNB/JAE的轉(zhuǎn)移條件。

若CF=0且ZF=0,說明被減數(shù)不小于減數(shù)且兩數(shù)之差非零,故符合JA/JNBE的判斷要求。反之,若CF=1或ZF=1即為JNA/JBE的判斷要求。

根據(jù)指令含義,也有將JAE指令的判斷條件設為CF=0或ZF=1,將JB的判斷條件設為CF=1且ZF=0。實際上,滿足ZF=1的情形是滿足CF=0情形的子集,相應的若CF=1,則ZF不可能為1。因此這兩條指令的判斷條件只需根據(jù)CF的取值即可。

要注意的是,由于無符號數(shù)中的最高位是數(shù)值位而不是符號位,故符號標志SF不宜用于無符號比較轉(zhuǎn)移指令的轉(zhuǎn)移判斷依據(jù)。例如1100b和0000b(分別對應無符號十進制數(shù)12與0)相減后得1100b,這種情形下SF=1,CF=0。很明顯,CF=0表示12減1不需借位,故能正確判斷兩數(shù)誰大誰小。若根據(jù)SF=1判斷差為負數(shù),進而說明不夠減,顯然是錯誤的。

4.3 有符號數(shù)比較判斷指令

對于有符號數(shù)比較,需分溢出和不溢出兩情況。若沒有溢出,則SF為正確的結(jié)果符號;若有溢出,雖然運算結(jié)果不正確,但大小關(guān)系仍然可以判斷。此時,SF取值與實際符號正好相反。與無符號數(shù)比較指令分組類似,指令JG/JNLE和JNG/JLE是一組,指令JL/JNGE和JNL/JGE是另一組。

若OF=0且SF=0,或者OF=1且SF=1,都表示被減數(shù)不小于減數(shù),即SF=OF對應指令JNL和JGE的轉(zhuǎn)移條件。相應的OF≠SF對應指令JL和JNGE的轉(zhuǎn)移條件。

若OF=0且SF=0且ZF=0,或者OF=1且SF=1且ZF=0。表示被減數(shù)大于減數(shù),即SF=OF且ZF=0對應JG和JNLE的轉(zhuǎn)移條件。相應的OF≠SF或ZF=1對應JNG和JNLE的轉(zhuǎn)移條件。

5 結(jié)論

標志位與運算器、指令系統(tǒng)、CPU以及匯編程序設計關(guān)系密切。

通過對常用標志位ZF、SF、CF和OF生成邏輯的分析、實現(xiàn)及應用的詳細闡述,可以更好地了解運算器的工作原理及設計方法,進一步理解運算器、指令系統(tǒng)以及控制器3者之間的聯(lián)系,提高匯編程序設計能力。

[1] 王誠,宋佳興.計算機組成與結(jié)構(gòu)[M].2版.北京:清華大學出版社,2011.

[2] 秦磊華,王小蘭,管軍.EDA仿真在組成原理設計性實驗中的應用[J].實驗室研究與探索,2009,28(4):79-82.

[3] 張磊,鄭榕,張軍峰.計算機組成原理理論實驗教學無縫結(jié)合的新方法[J].實驗室研究與探索,2013,32(5):168-171.

[4] 白中英.計算機組成與系統(tǒng)結(jié)構(gòu):第五版(立體化教材)[M].北京:科學出版社,2011.

[5] 裘雪紅,李伯成.計算機組成與體系結(jié)構(gòu)[M].北京:高等教育出版社,2009.

[6] 唐朔飛.計算機組成原理[M].2版. 北京:高等教育出版社,2010.

[7] 王愛英.計算機組成與結(jié)構(gòu)[M].5版. 北京:清華大學出版社,2013.

[8] 袁波,李樹榮,姚素英.一種8位單片機中ALU 的改進設計[J].微電子學與計算機,2006,23(4):71-74.

[9] 朱一杰,張曦,俞軍.算術(shù)邏輯單元的優(yōu)化設計[J].微電子學與計算機,2004,21(9):155-157.

[10] 宋文強.12位RISC計算器設計[D].成都:電子科技大學,2011.

[11] 齊廣玉,鄒建偉.計算機組成原理[M].北京:兵器工業(yè)出版社,1997.

[12] 沈美明.IBM PC匯編語程序設計[M].北京:清華大學出版社,1996.

(特約編輯:黃家瑜)

Logical design and application of flags for ALU’s full-adder

Tang Longmei, Chen Min, Xu Xuelin

(College of Information Science and Engineering, Fujian University of Technology, Fuzhou 350118, China)

The logical basis of the implementation of full-adder was described. The generation logic of 4 commonly used flags was presented based on the circuit logic of the full-adder. The generation logic of carrying flag and overflow flag were analysed. Then the implementation of the flags in a MACH chip was focused. Finally, the application of the flags in some instructions such as transfer instruction was discussed.

computer; composition principle; full-adder; flag; logical design

10.3969/j.issn.1672-4348.2017.03.018

2017-01-07;

2017-03-25

福建省教育科學“十二五”規(guī)劃課題(FJJKCG15-180)

湯龍梅(1977-),女,江西永新人,講師,碩士,研究方向:嵌入式技術(shù)、機器學習。

TP303; G642

A

1672-4348(2017)03-0289-05

猜你喜歡
標志指令運算
聽我指令:大催眠術(shù)
多功能標志桿的使用
體育教學(2022年4期)2022-05-05 21:26:58
重視運算與推理,解決數(shù)列求和題
有趣的運算
認標志
首都的標志是只熊
ARINC661顯控指令快速驗證方法
LED照明產(chǎn)品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
“整式的乘法與因式分解”知識歸納
撥云去“誤”學乘除運算
财经| 沙洋县| 墨竹工卡县| 上犹县| 岢岚县| 三江| 叙永县| 遂川县| 富平县| 多伦县| 孟津县| 会理县| 建宁县| 修武县| 宁津县| 师宗县| 门源| 河北区| 大余县| 平乡县| 志丹县| 罗定市| 南通市| 石泉县| 南平市| 乳源| 华蓥市| 栖霞市| 宣武区| 舞阳县| 精河县| 永康市| 南充市| 同心县| 望江县| 汝南县| 新和县| 锡林郭勒盟| 北碚区| 从江县| 合水县|