專利名稱:任意精度運算器、任意精度運算方法和電子設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及進行加減法運算的運算器,尤其涉及適合于不限于編譯程序(compiler)能夠處理的精度的任意精度的可變長度數(shù)據(jù)的運算的任意精度運算器。
背景技術(shù):
在過去,在處理器內(nèi)部進行加減法運算的運算器以對固定長度的整數(shù)進行處理為前提。比如,8位CUP(中央運算裝置)采用算術(shù)四則運算用的8位固定長度的全加器,或可并用于地址生成的16位固定長度的全加器。
另外,在可變長度數(shù)據(jù)通過軟件描述而指定的情況下,軟件語言的編譯程序按照可通過對固定長度的全加器的反復運算來實現(xiàn)可變長度數(shù)據(jù)的運算的方式生成命令設(shè)定。
構(gòu)成為通過這樣的編譯程序處理,即使如上所述,在使用通過硬件而能處理的字長度被規(guī)定的固定長度的全加器的情況下,仍可執(zhí)行對可變長度數(shù)據(jù)進行處理的運算。
但是,由于對于每種編程語言,可進行處理的數(shù)據(jù)的精度(字長度)是確定的,故難于進行超過能處理的精度的運算。即使在可變長度數(shù)據(jù)能處理的情況下,仍無法實現(xiàn)位數(shù)極大的運算。
比如,即使在實施10000位的數(shù)字之間的運算的情況下,在過去的計算裝置中,超過可通過編譯程序提供的計算算法進行運算的精度,無法應對。為了應對該情況,需要根據(jù)數(shù)值的位數(shù),即,根據(jù)所處理的數(shù)值的精度,以可進行特別的數(shù)值的處理的方式,改變計算算法,但是如果采取這樣的措施,則編程復雜化。
當然,通過增加運算器能夠暫時處理的固定長度的方式,從而可以進行處理的數(shù)據(jù)的位數(shù)也增加。但是,在該情況下,硬件以較大程度變得復雜。并未解決不得不從某位數(shù)起改變計算算法的本質(zhì)問題。
發(fā)明內(nèi)容
于是,本發(fā)明的課題在于,以比較簡單的構(gòu)成實現(xiàn)一種無論數(shù)據(jù)的精度如何,均可采用同一計算算法進行運算的任意精度運算器。
為了解決上述課題,本發(fā)明的任意精度運算器包括主處理部,其從低位起、每次N(N為自然數(shù))位地對第1任意精度數(shù)值和第2任意精度數(shù)值的每個值進行分割,并作為N位長度的第1輸入值和第2輸入值依次輸出。另外,本發(fā)明的任意精度運算器包括N位運算器,其實施所供給的該第1輸入值和該第2輸入值的運算,每當運算結(jié)束時,向該主處理部請求下一N位的運算,并且將通過該運算產(chǎn)生的進位添加到下一N位的運算中。
比如,在主處理部中,實施下述的任意精度運算方法,其中包括從低位起、每次N(N為自然數(shù))位地對第1任意精度數(shù)值和第2任意精度數(shù)值的每個值進行分割的步驟;將分割后的該第1任意精度數(shù)值作為N位長度的第1輸入值、將該第2任意精度數(shù)值作為N位長度的第2輸入值依次輸出的步驟;每當請求下一N位的運算時,允許下一N位的該第1輸入值和該第2輸入值的輸出的步驟;另外,比如,在N位運算器中,實施下述的任意精度運算方法,其中包括實施從低位起、每次N(N為自然數(shù))位地將第1任意精度數(shù)值進行分割而供給的N位長度的第1輸入值,與從低位起、每次N位地將第2任意精度數(shù)值進行分割而供給的N位長度的第2輸入值的運算的步驟;每當該運算結(jié)束時,請求下一N位的運算的步驟;將通過該運算產(chǎn)生的進位添加到下一N位的運算中的步驟。
根據(jù)上述構(gòu)成或步驟,在主處理部中,從低位側(cè)(LSB)起依次將任意精度的、比如非常多的位數(shù)的數(shù)值分割為設(shè)置于該系統(tǒng)中的N位的固定長度的數(shù)據(jù),并從低位的N位起發(fā)送給N位運算器。在N位運算器中,執(zhí)行所供給的N位的數(shù)值的運算,如果產(chǎn)生進位,則以添加到下一發(fā)送的N位的數(shù)值中的方式進行保持。另外,每當N位運算結(jié)束時,向主處理部,請求下一N位數(shù)值的供給。在主處理部中,接受該請求,允許下一N位的輸出。根據(jù)該構(gòu)成,依次從低位起每次N位地供給數(shù)值,不影響固定長度(N位)或編譯程序的處理精度,對精度極高、即位數(shù)多的數(shù)值的運算也能進行處理。由于硬件僅僅為N位的運算器就足夠了,故在硬件結(jié)構(gòu)也極簡單的狀態(tài)下,就可以進行高精度的運算。
本發(fā)明的任意精度運算器包括N位全加器,其對從低位起、每次N(N為自然數(shù))位地將第1任意精度數(shù)值進行分割而供給的N位長度的第1輸入值,和從低位起、每次N位地將第2任意精度數(shù)值進行分割而供給的N位長度的第2輸入值進行加法運算;保持電路,其保持為能將通過上述N位全加器的加法運算產(chǎn)生的進位加到下一N位的運算中的最低位的位上。
該構(gòu)成與N位運算器的構(gòu)成相對應。在N位全加器中進行加法運算,產(chǎn)生的進位保持于保持電路中。保持于保持電路中的進位與下一N位數(shù)值的最低位的位進行加法運算。由此,可通過進位連接每次N位地分割后的數(shù)值之間,同時在任何級都可反復進行該處理。
本發(fā)明的任意精度運算器包括產(chǎn)生該第2輸入值的邏輯非的邏輯“非”電路;選擇電路,其在指示是加法還是減法的算符表示減法的情況下,將邏輯非的第2輸入值輸出到該N位全加器。
該構(gòu)成表示N位運算器的構(gòu)成,其進行動作,以便在進行減法運算的情況下,通過選擇電路選擇第2輸入值的邏輯非,在N位運算器中與第1輸入值進行加法運算,結(jié)果實施兩個輸入值的減法運算。
在這里,最好構(gòu)成為保持電路在表示算符是減法的情況下,在運算開始后的最初的N位運算時,將值1供給到N位全加器,在其以后的N位運算時,將通過上次的加法運算產(chǎn)生的進位供給到N位全加器。在從第1輸入值中減去第2輸入值的情況下,正確地對第2輸入值的2的補數(shù)進行運算,將該2的補數(shù)與第1輸入值相加。根據(jù)該N位運算器用的構(gòu)成,在算符表示減法的情況下,最初在加法器中加值1,并與作為1的補數(shù)表現(xiàn)的第2輸入值的邏輯非值相加,其結(jié)果是,將第2輸入值的2的補數(shù)與第1輸入值相加。由此,僅僅通過向保持電路輸出算符,便可進行正確的減法運算。
另外,本發(fā)明也可包括鎖存電路,其從同一輸入線輸入第1輸入值和第2輸入值,分別對其進行鎖存,并將其供給到N位全加器。該構(gòu)成屬于變形例,鎖存電路從同一輸入線按照時間差,輸入第1輸入值和第2輸入值,并對每個值進行鎖存后輸出,由此,可限制輸入線數(shù)量,實現(xiàn)小型(compact)的構(gòu)成。
此外,鎖存電路也可構(gòu)成為還輸入算符,將該算符供給到選擇電路后,將第1輸入值和第2輸入值鎖存。是首先對算符進行鎖存,切換到加法減法中的另一者后,分別對輸入值進行鎖存。
本發(fā)明包括分割機構(gòu),其為了進行任一精度的運算,從低位起、每次N(N為自然數(shù))位地對第1任意精度數(shù)值和第2任意精度數(shù)值的每個值進行分割;輸出機構(gòu),其將分割完的該第1任意精度數(shù)值作為N位長度的第1輸入值,將該第2任意精度數(shù)值作為N位長度的第2輸入值,依次輸出到N位運算器。
該構(gòu)成表示主處理部的構(gòu)成。從低位起、每次N位地將雙方的任意精度數(shù)值進行分割,輸出分別分割完的第1輸入值和第2輸入值。由于即使輸入了任意精度的數(shù)值,在固定長度(N位)的運算器中也變形為可照原樣運算的形式后輸出,故可進行任意精度的運算。
在這里,最好,每當從N位運算器請求下一N位的運算時,輸出下一N位的第1輸入值和第2輸入值。按照該構(gòu)成,由于接受N位運算的結(jié)束后輸出下一N位的數(shù)值,故也可不根據(jù)運算器的速度來改變輸入值的輸出定時,特別是,由于采用伴隨請求的發(fā)生而進行輸出的信號交換(handshake)形式,故適合于非同步式電路結(jié)構(gòu)。
另外,最好構(gòu)成為能夠輸出表示使N位運算器進行加法運算還是減法運算的算符,在最高位的N位的運算結(jié)束的情況下,作為該算符,輸出表示任意精度運算的結(jié)束的識別信息。根據(jù)該構(gòu)成,可通過在N位運算器側(cè)監(jiān)視算符,而識別任意精度數(shù)值的運算結(jié)束。
在本發(fā)明中,最好輸入輸出信息中的至少1個以上根據(jù)雙線編碼方式進行編碼。根據(jù)雙線編碼方式,不需要另外的時鐘就可進行數(shù)據(jù)的發(fā)送接收,電路結(jié)構(gòu)可簡化。
此外,最好本發(fā)明包括通過信號交換方式而被驅(qū)動的非同步式電路結(jié)構(gòu)。本發(fā)明的處理是反復進行相同的處理的請求和輸出,在通過信號交換而被執(zhí)行的非同步式的處理中,可最大限度地提高性能。由此,即使任意精度數(shù)值的位數(shù)增多,也可以高速地進行處理。
還有,本發(fā)明也可包括通過全局時鐘(global clock)而被驅(qū)動的同步式電路結(jié)構(gòu)。是即使根據(jù)同步式電路結(jié)構(gòu)也可以確實地實施的構(gòu)成。
再有,本發(fā)明也可為具備本發(fā)明的任意精度運算器的電子設(shè)備。由于通過具備本發(fā)明的任意精度運算器,可以以簡單的電路實現(xiàn)高精度的運算,故一般對于需要粗略的運算的裝置,有用性高。
圖1為本發(fā)明的任意精度運算器的系統(tǒng)圖;圖2為實施方式1的N位運算器的框圖;圖3為實施例1的N位運算器的框圖;圖4為實施例1的非同步1位全加器的框圖;圖5為Null檢測電路的電路圖;圖6為z_1輸出電路的結(jié)構(gòu)圖;圖7為z_0輸出電路的結(jié)構(gòu)圖;圖8為Cout_1輸出電路的結(jié)構(gòu)圖;圖9為Cout_0輸出電路的結(jié)構(gòu)圖;圖10為實施例2的1位運算器的框圖;圖11為實施例2的N位運算器的時序圖;圖12為實施方式2的N位運算器的框圖;圖13為實施方式3的電子設(shè)備的例子。
圖中1、1b、1c-位運算器;2-主處理部;10-N位全加器;10(0)、10(N-1)、10(n)、10b-非同步1位全加器;11-選擇電路;12-邏輯“非”電路;13-保持電路;14-鎖存電路;21-分割機構(gòu);22-輸出機構(gòu);100、120、140、160-輸出電路;101~113、121~133、141~153、161~173-晶體管;114、134、154、174-反相器;180-檢測電路;1000-個人計算機;1001-液晶顯示器;1002-鍵盤;1004-微處理器電路;Carry-進位;Cin-進位輸入;Cout-進位輸出;D-輸入線;In-輸入值;Operator-算符;Out-輸出值;PC-預充電信號;Vdd-高電位電源;Vss-接地電位;x、x(0)、x(1)、x(N-1)、X1、X2、Xm-第1輸入值;X-第1任意精度數(shù)值;y、y(0)、y(1)、y(N-1)、Y1、Y2、Ym-第2輸入值;Y-第2任意精度數(shù)值;z、z(0)、z(1)、z(N-1)、Z-輸出值。
具體實施例方式
下面參照附圖,對本發(fā)明的實施形式進行描述。
以下的實施形式為本發(fā)明的例示,并不限于其公開內(nèi)容,本發(fā)明可變形為各種形式來采用。
(實施方式1)本發(fā)明的實施方式1涉及采用N位(N為1以上的整數(shù))的固定長度加法器來構(gòu)成任意精度運算器的實例。
圖1表示本發(fā)明的任意精度運算器的系統(tǒng)圖。如圖1所示,本任意精度運算器由主處理部2和N位運算器1構(gòu)成。
主處理部2構(gòu)成為從低位起、每次N位地對第1任意精度數(shù)值X和第2任意精度數(shù)值Y的每個值進行分割,并作為N位長度的第1輸入值(X1、X2、…Xm)和第2輸入值(Y1、Y2、…Ym)依次輸出。該N位運算器1實施所供給的第1輸入值(X1、X2、…Xm)和第2輸入值(Y1、Y2、…Ym)的運算。另外,每當運算完畢時,向主處理部2輸出請求下一N位的運算的信號PC,并且將通過該運算產(chǎn)生的進位添加于下一N位的運算中。
另外,在本說明書中,以大寫字符標記為“X”的情況下表示原始的任意精度數(shù)值,在記載為“Xn”(1≤n≤m)時,表示從任意精度數(shù)值分割后的、N位長度的各N位塊。另外,在以小寫字符記載為“xn”(1≤n≤N-1)的情況下表示N位塊中的第n位的位數(shù)據(jù),記載為“x_1”,“x_0”的情況下表示位數(shù)據(jù)按照雙線編碼方式(Dual-rail Encoding)而被編碼的、雙線的每個數(shù)據(jù)。
具體來說,主處理部2包括分割機構(gòu)21和輸出機構(gòu)22。分割機構(gòu)21從低位起、每次N位地對第1任意精度數(shù)值X和第2任意精度數(shù)值Y的每個值進行分割,按照N倍數(shù)對其進行規(guī)格化處理。第1任意精度數(shù)值X和第2任意精度數(shù)值Y這兩者,每次N位地按照同一數(shù)m(m為1以上的整數(shù))進行分割。比如,如圖2所示,設(shè)第1任意精度數(shù)值X為P位(N<P≤m×N),第2任意精度數(shù)值Y為Q位(P<Q)。在從低位起、每次N位地進行分割的情況下,針對Y,向第m個N位塊分配MSB。將第m個的N位中、MSB以上的位數(shù)的位設(shè)為“0”。然而,由于第1任意精度數(shù)值X的位數(shù)小于第2任意精度數(shù)值Y的位數(shù),故X的MSB設(shè)置于中間(比如,第m-2個)的N位塊中。與Y相同,將任意精度數(shù)值X的第m-2個的MSB以上設(shè)為“0”。此外,剩余的第m-1個和第m個的N位塊均全部設(shè)為“0”。
輸出機構(gòu)22將分割后的第1任意精度數(shù)值X作為N位長度的第1輸入值(X1、X2、…Xm),將第2任意精度數(shù)值Y作為N位長度的第2輸入值(Y1、Y2、…Ym),依次輸出到N位運算器1。在這里,輸出機構(gòu)22每當從N位運算器1請求下一N位的運算時,輸出下一N位的第1輸入值和第2輸入值。即,輸出機構(gòu)22每當發(fā)送作為來自N位運算器1的請求信號的預充電信號PC(Pre Charge)時,輸出下一N位塊。
另外,主處理部2構(gòu)成為能夠輸出表示使N位運算器進行加法運算還是進行減法運算的算符Operator。該算符Operator構(gòu)成為在最高位的N位的運算結(jié)束的情況下,作為算符Operator,輸出表示任意精度運算的結(jié)束的識別信息Null。
根據(jù)上述主處理部2的構(gòu)成,由于接受N位運算的結(jié)束如圖輸出下一N位的數(shù)值,故也可不根據(jù)N位運算器1的處理速度來改變輸出機構(gòu)22的輸出定時。特別是,由于為伴隨請求的發(fā)生而進行輸出的信號交換方式,故適合于非同步式電路結(jié)構(gòu)。該結(jié)構(gòu)的具體內(nèi)容將在后面進行描述。
此外,如果不通過主處理部,則無法得知m個N位塊的運算結(jié)束的情況,但是根據(jù)該主處理部2的構(gòu)成,通過在N位運算器1中監(jiān)視算符Operator,從而能識別任意精度數(shù)值的運算結(jié)束。
圖2中表示N位運算器1的結(jié)構(gòu)圖。該N位運算器1既可由同步式電路結(jié)構(gòu)構(gòu)成,也可由非同步式電路結(jié)構(gòu)構(gòu)成。
圖2所示的N位運算器1包括N位全加器10、選擇電路11、邏輯“非”電路12和保持電路13。N位全加器10將從低位起、每次N位地對第1任意精度數(shù)值X進行分割后供給的N位長度的第1輸入值(X1、X2、…Xm),和從低位起、每次N位地對第2任意精度數(shù)值Y進行分割后供給的N位長度的第2輸入值(Y1、Y2、…Ym)相加。該加法器為固定長度(N位)的加法器。邏輯“非”電路12生成第2輸入值(Y1、Y2、…Ym)的邏輯“非”。即,對第2輸入值的1的補數(shù)進行運算。選擇電路11在指示是加法還是減法的算符Operator表示減法運算的情況下,代替第2輸入值,而將從邏輯“非”電路12供給的、邏輯非運算出的第2輸入值輸入到N位全加器10中。算符Operator指定計算開始和運算方法。比如,在為“0”的情況下表示“加法運算”,在為“1”的情況下表示“減法運算”。選擇電路11為所謂的多路轉(zhuǎn)換器(multiplexer),在算符Operator為“0”的情況下,直接輸出未進行邏輯非運算的、從主處理部2供給的第2輸入值,在算符Operator為“1”的情況下,輸出經(jīng)過邏輯非運算的第2輸入值。根據(jù)該構(gòu)成,僅在N位全加器10側(cè)實施加法運算,就可實現(xiàn)加法運算和減法運算。保持電路13作為鎖存電路發(fā)揮作用,其保持為能將通過N位全加器10的加法運算產(chǎn)生的進位Carry加到下一N位的運算的最低位的位上。最好,在算符Operator中將“1”定義為減法運算的情況下,在最初的N位運算時,將算符的值“0”作為進位輸入Cin而添加。減法運算通過將減數(shù)的2的補數(shù)與被減數(shù)相加而實施。在邏輯“非”電路12中,由于生成1的補數(shù),故如果將算符OPerator的“1”與其相加,則可以生成2的補數(shù),可實施正確的減法運算。
另外,在圖2的電路中,算符Operator直接到供給選擇電路11,但是也可構(gòu)成為暫時將算符Operator輸入到保持電路13,經(jīng)由該保持電路13,或經(jīng)由另外的鎖存電路,供給到選擇電路11。比如,在供給通過后述的雙線編碼方式而被編碼的算符Operator的情況下,算符形成2位的結(jié)構(gòu),獲得4個值(參照表1)。其中,比如,將作為無效代碼字的“Null”規(guī)定為非運算時的識別符,將作為有效代碼字的“0/1”規(guī)定為指示運算內(nèi)容是加法運算還是減法運算的識別符。另外,在算符變?yōu)椤癗ull”以外的有效代碼字時,對該有效代碼字進行鎖存,用該有效代碼字所表示的運算內(nèi)容,開始運算。保持該有效代碼字,直至接著向算符輸出無效代碼字“Null”。通過這樣的構(gòu)成,從而可借助算符Operrator的控制,同時指示運算開始和運算內(nèi)容。保持算符Operrator的電路,與保持進位Carry的保持電路13既可為同一電路,也可為不同的電路。
根據(jù)上述N位運算器1的構(gòu)成,由于具有邏輯“非”電路12,在選擇電路11中,可根據(jù)算符Operrator的值,選擇是直接輸出第2輸入值,還是對其進行邏輯“非”后輸出,故可通過算符Operrator來指定進行加法運算還是減法運算。
另外,根據(jù)上述N位運算器1的構(gòu)成,由于保持電路13構(gòu)成為將通過前一次的加法而產(chǎn)生的進位Carry供給到N位全加器10,故可通過進位連接每次N位地被分割的輸入值,同時在任何級反復進行。由此,與位數(shù)無關(guān),可以自由地進行任意精度的數(shù)值的加減法運算。
實施例1圖3中表示以非同步式電路結(jié)構(gòu)構(gòu)成N位運算器的實施例。
如圖3所示,實施例的N位運算器1,作為N位全加器10,將N個非同步1位全加器10(0)~10(N-1)連接而構(gòu)成。選擇電路11并行地輸出N位長度的第2輸入值y(0)~y(N-1)。邏輯“非”電路12(0)~12(N-1)針對每位而設(shè)定。
非同步1位全加器10(n)、選擇電路11、邏輯“非”電路12(n)、保持電路13的全部電路結(jié)構(gòu)包括非同步式電路結(jié)構(gòu)。按照雙線編碼方式對各電路的各位輸入輸出進行編碼,非同步地進行動作。除了非同步1位全加器10(n)或邏輯“非”電路12(n)分別對按照雙線編碼方式而被編碼的1位數(shù)據(jù)進行處理以外,基本的動作與圖2的情況相同。在本實施例1中,如以普通的同步型電路結(jié)構(gòu)構(gòu)成各數(shù)據(jù)線的情況那樣,按照通過1根信號線構(gòu)成的方式給出,但是也可按照雙線編碼方式進行編碼處理。在采用雙線編碼方式的編碼處理的情況下,各信號線按照2根扎束。即,在圖中,比如,表述為X(n)的數(shù)據(jù)線由經(jīng)過編碼的Xn_1和Xn_0的2根構(gòu)成。
表1表示按照雙線編碼方式對位b進行編碼處理的情況的真值表。
表1
如表1所示,位數(shù)據(jù)b通過雙線式編碼,變換為{b_1,b_0}。位數(shù)據(jù)b取作為有效代碼字的“0”或“1”,與作為無效代碼字的“Null”的值。作為有效代碼字的“0”變換為{0,1},“1”變換為{1,0},作為無效代碼字的“Null”變換為{0,0}。數(shù)據(jù)的輸入輸出采用有效代碼字而進行,但是,無效代碼字“Null”除了表示非運算時以外,還用于數(shù)據(jù)間的區(qū)別。即,如果同一有效代碼字連續(xù)地輸入到非同步1位全加器10中,則由于在接收電路中不能識別數(shù)據(jù)的到達,故通過交替地傳送有效代碼字和無效代碼字,可識別有效代碼字。
比如,4位的數(shù)據(jù)“1”、“1”、“0”、“1”通過雙線編碼,分別編碼為[1,0]、[1,0]、
、[1,0]后輸入。該編碼方式只是例示,其不構(gòu)成對編碼方法的限定,希望為可至少對有效代碼字“1”與“0”和無效代碼字“Null”進行編碼處理的方式。
另外,[1,1]通常是不準許的狀態(tài),假設(shè)在輸入這樣的值的情況下,考慮在電路側(cè)排除。在檢測時刻停止動作并輸出異常發(fā)生警報,在誤動作的通報和防止錯誤數(shù)據(jù)的傳播方面是優(yōu)選的。
如果將這樣的雙線編碼方式的編碼處理與非同步式電路結(jié)構(gòu)并用,則可構(gòu)成即使在位間的數(shù)據(jù)到達中產(chǎn)生時間差,也允許該情況的電路。即,其原因在于構(gòu)成為即使在由于每個位數(shù)據(jù)的信號線的元件延遲和布線延遲,數(shù)據(jù)在不同的時間到達的情況下,由于在非同步式電路中,全部的輸入仍致地輸出,故等待本質(zhì)上最后的數(shù)據(jù)的到達而進行動作。
根據(jù)表1那樣的圖表(scheme),對圖3所示的各位數(shù)據(jù)進行編碼處理。即,第1輸入值X的位數(shù)據(jù)輸入值x(n)通過雙線編碼,變換為{x_1,x_0}。同樣,第2輸入值Y的位數(shù)據(jù)、進位輸入Cin(n)、加法運算輸出z(n)、進位輸出Cout(n)均同樣通過雙線編碼,變換為{y_1,y_0}、{Cin_1,Cin_0}、{z_1,z_0}、{Cout_1,Cout_0}。
表2表示每個的非同步1位全加器10(n)的真值表。
表2
在非同步1位全加器10(n)中,輸入按照雙線編碼方式編碼過的第1輸入值X的位數(shù)據(jù)輸入值x(n)與第2輸入值Y的位數(shù)據(jù)y(n),將將從下1級的非同步1位全加器10(n-1)輸入的進位Cout(n-1)作為進位輸入Cin(n)而進行加法運算。作為最下級的非同步1位全加器10(0)的進位輸入Cin(0),對通過保持電路13保持的、上一N位塊的加法運算的最終進位輸出,即來自最上級的非同步1位全加器10(N-1)的進位輸出Cout(N-1)進行加法運算。在產(chǎn)生的進位為“1”的情況下,將進位Carry編碼為{1,0},在產(chǎn)生的進位為“0”的情況下,將進位Carry編碼為{0,1}。如果在輸入值x(n),y(n),Cin(n)中的任意一個中,“Null”(=
),則輸出z(n)、Cout(n)的值均為“Null”(=
)。在向全部的輸入中輸入作為有效代碼字的“0”或“1”的情況下,非同步1位全加器10(n)在經(jīng)過一定的延遲時間后,根據(jù)表2的真值表,向輸出z(n)和Cout(n)輸出“0”或“1”。
如果將第1輸入值x(n)、第2輸入值y(n)和進位輸入Cin(n)作為輸入值,將和輸出z(n)與進位輸出Cout(n)作為輸出值,則在1位全加法運算中,式(1)及式(2)成立。
z(n)=x(n)(+)y(n)(+)Cin(n)
(1)Cout(n)=X(n)·Y(n)+Y(n)·Cin(n)+Cin(n)·X(n)(2)在這里,(+)表示“按位加”。表2是式(1)和式(2)的真值表,表示輸入輸出之間的全部組合。
圖4中示出非同步1位全加器10(n)的框圖,圖5中示出Null檢測電路的電路圖,圖6~圖9中示出Z_1、Z_0、Cout_1、Cout_0的各自的輸出電路的電路圖。這些電路只是例示,可進行各種變更而構(gòu)成。
如圖4所示,非同步1位全加器10(n)比如構(gòu)成為包括Null檢測電路170、Z_1輸出電路100、Z_0輸出電路120、Cout_1輸出電路140、Cout_0輸出電路160。各電路包括非同步式電路結(jié)構(gòu)。
圖5所示的Null檢測電路170在全部的輸入值x(n)、y(n)、Cin(n)為“Null”的情況下,向預充電信號PC(Pre-Charge)輸出低電平,在其以外的情況下,輸出高電平。在非運算時和數(shù)據(jù)之間的分割區(qū)間,全部的輸入值為“Null”。如根據(jù)圖6~圖9的電路圖而知道的,在各輸出電路中,在該預充電狀態(tài)下輸出變?yōu)榈碗娖?,因此向全部的輸出z(n)和Cout(n)輸出“Null”。
分別如圖示的那樣,在圖6所示的Z_1輸出電路100中連接晶體管101~113,在圖7所示的Z_0輸出電路120中連接晶體管121~133,在圖8所示的Cout_1輸出電路140中連接晶體管141~153,在圖9所示Cout_0輸出電路160中連接晶體管161~173。反相器(inverter)114、134、154、174分別形成使邏輯反轉(zhuǎn)的反相電路。
被輸入預充電信號PC的晶體管101、121、141、161由P溝道MOSFET構(gòu)成,輸入預充電信號PC的狀態(tài)(在輸入值全部為“Null”的情況下)輸出為低電平,在其以外的情況下,根據(jù)各輸入值所示的有效代碼字(“0”或“1”)來確定輸出。其以外的晶體管由N溝道MOSFET構(gòu)成,在輸入值為高電平的情況下導通,在低電平的情況下處于截止狀態(tài)。由此,級聯(lián)連接的晶體管,比如圖6的Z_1輸出電路100中的晶體管102~104在輸入值X_1、y_0,Cin_0全部為高電平的情況下,即在輸入值X_1、y_0、Cin_0為{1,1,1}的情況下,被施加低電位電源,Z_1變?yōu)閧1}。通過這種構(gòu)成,按照表2的真值表規(guī)定輸出。
另外,希望以作為P溝道MOSFET從導通變?yōu)榻刂沟亩〞r不慢于至少某N溝道MOSFET從截止變?yōu)閷ǖ亩〞r的方式考慮,貫通電流不從高電位電源Vdd向接地電位Vss流動。另外,也可根據(jù)需要,對N溝道MOSFET的連接關(guān)系進行最佳化,削減晶體管的數(shù)量。比如,晶體管104和107可由單一的晶體管代替。此外,如從式(2)可以明確的,在輸入值x(n)、y(n)為“1“時,與進位輸入Cin的值無關(guān),進位輸出Cout必定為“1”,由此,也可在x_1與y_1分別為“1”時,以與Cin_0是“1”還是“0”無關(guān),Cout_1變?yōu)椤?”的方式構(gòu)成組合電路。另外,作為輸出電路,也可采用由多個P溝道MOSFET構(gòu)成的電路網(wǎng),來代替N溝道MOSFET的電路網(wǎng)。
表3中表示邏輯“非”電路12(n)的真值表。
表3
如表3所示,在輸入值In為無效代碼字的“Null”的情況下,同樣以“Null”作為輸出值Out,但在輸入值In為有效代碼字的“0”或“1”的情況下,將其邏輯反轉(zhuǎn),輸出“1”和“0”。
從主處理器2供給的算符Operator也按照雙線編碼方式進行編碼,在加法運算的情況下為“0”,在減法運算的情況下為“1”,在一個任意精度數(shù)值X和Y的運算全部結(jié)束的非運算期間(運算結(jié)束時)輸出“Null”。由于選擇電路11在算符Operator為作為有效代碼字的“0”的情況下,進行加法運算,故選擇未經(jīng)過邏輯“非”電路12(n)的第2輸入值y(n)。由于在算符Operator為作為有效代碼字的“1”的情況下進行減法運算,故選擇經(jīng)過邏輯“非”電路12(n),按照表3的真值表而被邏輯反轉(zhuǎn)的第2輸入值y(n)。另外,選擇電路11在算符Operator為“Null”的情況下,使全部輸出為“Null”。
實施例2圖10表示在本發(fā)明的N位運算器中,作為N=1而構(gòu)成的1位運算器的實施例。
如圖10所示,在該1位運算器1b中,僅僅對1位數(shù)據(jù)進行處理,由此,僅僅按照雙線編碼方式編碼的第1輸入值x_1、x_0、第2輸入值y_1、y_0和算符Operator、Operator_1、Operator_0變?yōu)檩斎霐?shù)據(jù)。因此,在1位運算器1b中,僅僅設(shè)置1個在實施例1中描述的非同步1位全加器10b。該非同步1位全加器10b的結(jié)構(gòu)與在實施例1中描述的相同(參照圖4~9),沒有特別的變化。即,根據(jù)表2的真值表而動作。
邏輯“非”電路12也僅僅設(shè)置1個,以便與1位數(shù)據(jù)相對應。除了僅僅對1位數(shù)據(jù)進行處理的方面以外,選擇電路11的其它方面與實施例1相同。即,選擇電路11由算符{Operator_1、Operator_0}來控制。在算符Operator為{0,1}的情況下,第2輸入值y不反轉(zhuǎn)就輸出,在算符Operator為{1,0}的情況下,輸出通過邏輯“非”電路12進行邏輯反轉(zhuǎn)的輸入值。在算符Operator為{0,0}的情況下,即在“Null”輸入的情況下,輸出“Null”。
保持電路13在作為算符Operator,輸入作為無效代碼字的“Null”的情況下,輸出“0”,在輸入作為從“Null”起最初輸入的有效代碼字的“0”的情況下,輸出“0”,在輸入“1”的情況下,輸出“1”。通過將該值“1”和輸入值y的邏輯反轉(zhuǎn)疊加,從而可正確地進行減法運算。即,減法運算通過嚴格地將2的補數(shù)表現(xiàn)的值相加而實施。如果算符Operator從“Null”變?yōu)橛行Тa字,則開始運算。在運算開始后立即輸入的算符的值代替進位Cin,而添加到同步1位全加器1b中。在算符為表示加法運算的“0”的情況下,對“0”進行進位輸入Cin,但是,由于為“0”輸入,故不改變加法運算值。然而,在算符為表示減法運算的“1”的情況下,對“1”進行進位輸入Cin。該進位輸入Cin與通過邏輯“非”電路12生成的第2輸入值y的1的補數(shù)表現(xiàn)同時進行加法運算。因此,其結(jié)果是,等同于在非同步1位全加器10b中,添加2的補數(shù)表現(xiàn)的第2輸入值y的情況。由此,實施等同于從第1輸入值x中減去第2輸入值y的情況的運算。
在保持電路13中,另外直接輸入非同步1位全加器10b的進位輸出Cout_1和Cout_1。在運算開始后,進行將算符Operator添加于進位輸入Cin中的最初的1位運算,若輸入作為其結(jié)果的進位輸出Cout,則保持電路13鎖存該進位輸出Cout。接著,如果為了進行下一位的運算,進位輸出Cout暫時變?yōu)椤癗ull”,則之后將保存在保持電路13中的上次的運算的進位輸出Cout與進位輸入Cin進行加法運算。
另外,該保持電路的算符Operator的鎖存不是必需的。在允許作為誤差的值1的情況下,不對算符Operator的值進行鎖存,因此也可構(gòu)成為在運算開始后,在最初的運算中,進位輸入Cin始終為“0”。
即使在主處理部2中,也構(gòu)成為對應于該1位運算器1b,依次輸出1位數(shù)據(jù)。即,在圖1的主處理部2中,設(shè)N=1,分割機構(gòu)21每次1位地對任意精度數(shù)值X和Y進行分割,輸出機構(gòu)22每次1位地,從低位起讀出任意精度數(shù)值X和Y,對應于預充電信號PC,將其輸出。
圖11表示采用本實施例的1位運算器1b,進行4位精度的加減法運算的情況的時序圖。
如圖11所示,在該時序圖中,采用4相信號交換的圖表。即,在運算開始前,主處理部2向全部的輸入輸出“Null”。在運算開始后,以下的I~IV的順序針對每位運算,反復進行4次。
(I)向輸入值x和y輸出該位數(shù)據(jù);(II)在經(jīng)過規(guī)定時間后,由加法器輸出,輸出值z和進位輸出Cout;(III)在外部獲取輸出值z,將進位輸出Cout取入保持電路13后,然后,向輸入值x和y輸出“Null”;(IV)在經(jīng)過規(guī)定時間后,向加法器的輸出值z和進位輸出Cout,輸出“Null”。
在圖11中,作為第1輸入值x、第2輸入值y和算符Operator,給出下述的實例。
輸入值x“1101”=({1,0},{1,0},{0,1},{1,0});輸入值y“1000”=({1,0},{0,1},{0,1},{0,1});算符Operator“0”={0,1}(加法運算)。
從圖11的時序圖可以判明,在本實施例中,主處理部2每次進行1位運算時,禁止向算符Operator輸出“Null”。通過這樣構(gòu)成主處理部2的處理,從而保持電路13在算符Operator從作為無效代碼字的“Null”的狀態(tài)變?yōu)橛行Тa字時,對該有效代碼字(在該時序圖中,為“0”)僅鎖存一次,接著保持該狀態(tài),直至向算符輸出“Null”。根據(jù)該構(gòu)成,如果在最初向算符輸出指定是加法運算還是減法運算的“0”或“1”,則可持續(xù)該運算內(nèi)容,直至位運算結(jié)束。另外,可通過向算符Operator輸出“Null”,而將位運算結(jié)束通知給1位運算器1b。
另外,根據(jù)該實施方式1,即使通過N位的反復運算、極端地如實施例描述的那樣以1位為單位的反復運算,也能進行任意精度數(shù)值的加減法運算。
根據(jù)本實施方式1,由于將算符Operator的“Null”輸出用作表示任意精度運算的結(jié)束的識別信息,故通過在N位運算器側(cè)監(jiān)視算符,從而可識別任意精度數(shù)值的運算結(jié)束。
根據(jù)本實施方式1,保持電路13在算符Operator表示減法運算時,向N位全加器輸出“1”,并與其中一個輸入值的邏輯反轉(zhuǎn)進行加法運算,由此,算符Operator除了指示減法運算以外,還包括在減法運算時添加的數(shù)值信息。由此,可通過簡單的電路實現(xiàn)正確的減法運算。
根據(jù)本實施方式1,既可用同步式電路構(gòu)成,也可用非同步式電路構(gòu)成。特別是在具有非同步式電路結(jié)構(gòu)的情況下,沒有在以全局時鐘動作的同步式電路中容易產(chǎn)生的時鐘延遲、時鐘脈沖相位差(clock skew)、時鐘偏差(clock jitter)等問題。
在非同步式電路中,最小功能電路通過事件驅(qū)動而被控制,僅僅在判定為需要自主動作的情況,以及在判定為需要外界支配地動作的情況下進行動作。即,各最小功能電路可獨立于其它的最小功能電路而并列動作,不必等待到其它的最小功能電路的處理結(jié)束。最小功能電路可在執(zhí)行所希望的處理的準備結(jié)束的階段,進行處理。由此,非同步式電路結(jié)構(gòu)適合于通過反復進行純加減法運算而能進行任意精度運算的本發(fā)明這樣的電路。由此,即使任意精度數(shù)值的位數(shù)增多,也可以高速地進行處理。
(實施方式2)本發(fā)明的實施方式2涉及減少N位運算器的輸入線數(shù)的構(gòu)成。
圖12中表示實施方式2的N位運算器1c的結(jié)構(gòu)圖。
如圖12所示,本實施例2的N位運算器1c具備在圖2所描述的實施方式1的N位運算器1的構(gòu)成中添加了鎖存電路14的構(gòu)成。鎖存電路14由同一輸入線D輸入第1輸入值X和第2輸入值Y,并對其分別進行鎖存,供給到N位全加器10。另外,鎖存電路14構(gòu)成為還輸入算符Operator,將該算符供給到選擇電路11后,將第1輸入值X和第2輸入值Y鎖存。算符Operator也可通過輸入線D傳送。其它的構(gòu)成與實施方式1的相同。
即,鎖存電路14構(gòu)成為分別對從同一輸入線D按照具有時間差的方式傳送來的算符Operator、第1輸入值X、第2輸入值Y進行鎖存,并將其輸出到相應的電路。
在主處理部2中,構(gòu)成為對應于該N位運算器1c,依次送出算符Operator、第1輸入值X、第2輸入值Y。在各數(shù)據(jù)之間,通過輸出“Null”,從而可以區(qū)分第1輸入值、第2輸入值的每個值。通過預定數(shù)據(jù)送出的順序,從而可以正確地反映每個數(shù)據(jù)。比如,如果按照第1輸入值X、第2輸入值Y的順序送出值,則在主處理部中,根據(jù)從“Null”起算符Operator是加法運算還是減法運算,送出“0”或“1”,切換選擇電路11。接著,送出“Null”,然后輸出第1輸入值X。從鎖存電路14向N位全加器10輸出第1輸入值X。接著,送出“Null”后輸出“Null”,接著輸出第2輸入值Y。如果通過算符Operator表示加法運算,則選擇電路11選擇未進行邏輯非運算的第2輸入值,將正邏輯的Y供給到N位全加器10。如果通過算符Operator表示減法運算,則選擇電路11選擇進行過邏輯非運算的第2輸入值Y,向N位全加器10供給負邏輯的Y。
另外,也可構(gòu)成為包括于輸入線D,輸出算符。該情況下,算符Operator、第1輸入值X、第2輸入值Y分別按照時間差,供給到鎖存電路14。
根據(jù)本實施方式2的構(gòu)成,不但實現(xiàn)與上述實施方式1相同的效果,而且由于鎖存電路從同一輸入線,以時間差輸入第1輸入值和第2輸入值,并分別進行鎖存后輸出,故可限制輸入線數(shù)量,實現(xiàn)小型的結(jié)構(gòu)。
(實施方式3)本發(fā)明的任意精度運算器可適用于任意的計算機裝置,可應用于組裝了這種計算機的任意電子設(shè)備。
圖13中表示作為這種電子設(shè)備的一例的筆記本型個人計算機的外觀圖。該筆記本型個人計算機1000包括液晶顯示器1001、鍵盤1002,在其內(nèi)部具有微處理電路1004。本發(fā)明的任意精度運算器可用作這樣的微處理電路1004的運算器。
此外,本發(fā)明的任意精度運算器一般可用于需要進行粗略運算的設(shè)備,除了用于筆記本型個人計算機裝置等計算機以外,比如,還可應用于臺式電子計算器、電子記事本、便攜式信息終端(PDA)、移動電話、IC卡、智能卡(smart card)等。由于通過設(shè)置本發(fā)明的任意精度運算器,從而可通過簡單的電路來實現(xiàn)高精度的運算,故一般對于需要粗略的運算的裝置,有用性較高。
權(quán)利要求
1.一種任意精度運算器,其特征在于,該任意精度運算器包括主處理部,其為了進行任意精度的運算,從低位起,每次N(N為自然數(shù))位地對第1任意精度數(shù)值和第2任意精度數(shù)值的每個值進行分割后,作為N位長度的第1輸入值和第2輸入值順次輸出;N位運算器,其實施所供給的該第1輸入值和該第2輸入值的運算,每當運算結(jié)束時,向上述主處理部請求下一N位的運算,同時將通過該運算中產(chǎn)生的進位添加到下一N位的運算中。
2.一種任意精度運算器,其特征在于,該任意精度運算器包括N位全加器,其對從低位起、每次N(N為自然數(shù))位地將第1任意精度數(shù)值進行分割后供給的N位長度的第1輸入值,和從低位起、每次N位地將第2任意精度數(shù)值進行分割后供給的N位長度的第2輸入值進行加法運算;保持電路,其保持為能將通過上述N位全加器的加法運算產(chǎn)生的進位加到下一N位的運算中的最低位的位上。
3.根據(jù)權(quán)利要求1或2所述的任意精度運算器,其特征在于,該任意精度運算器還包括邏輯“非”電路,其產(chǎn)生該第2輸入值的邏輯非;選擇電路,其在指示是加法還是減法的算符表示減法的情況下,將進行過邏輯非的第2輸入值輸出到該N位全加器。
4.根據(jù)權(quán)利要求3所述的任意精度運算器,其特征在于,上述保持電路在表示上述算符是減法的情況下,在運算開始后的最初的N位運算時,將值1供給到N位全加器,在其以后的N位運算時,將通過上次的加法運算產(chǎn)生的進位供給到上述N位全加器。
5.根據(jù)權(quán)利要求4所述的任意精度運算器,其特征在于,該任意精度運算器還包括鎖存電路,其從同一輸入線輸入上述第1輸入值和上述第2輸入值,分別對其進行鎖存,并將其供給到上述N位全加器。
6.根據(jù)權(quán)利要求5所述的任意精度運算器,其特征在于,上述鎖存電路還輸入上述算符,將該算符供給到上述選擇電路后,將上述第1輸入值和第2輸入值鎖存。
7.一種任意精度運算器,其特征在于,該任意精度運算器包括分割機構(gòu),其為了進行任意精度的運算,從低位起、每次N(N為自然數(shù))位地對第1任意精度數(shù)值和第2任意精度數(shù)值的每個值進行分割,;輸出機構(gòu),其將分割完的該第1任意精度數(shù)值作為N位長度的第1輸入值,將該第2任意精度數(shù)值作為N位長度的第2輸入值,依次輸出到N位運算器。
8.根據(jù)權(quán)利要求1或7所述的任意精度運算器,其特征在于,每當從上述N位運算器請求下一N位的運算時,輸出下一N位的第1輸入值和第2輸入值。
9.根據(jù)權(quán)利要求8所述的任意精度運算器,其特征在于,構(gòu)成為能夠輸出表示使上述N位運算器進行加法運算還是減法運算的算符,在最高位的N位的運算結(jié)束的情況下,作為該算符,輸出表示任意精度運算的結(jié)束的識別信息。
10.根據(jù)權(quán)利要求1~9中任一項所述的任意精度運算器,其特征在于,輸入輸出信息中的至少1個以上根據(jù)雙線編碼方式進行編碼。
11.根據(jù)權(quán)利要求1~10中任一項所述的任意精度運算器,其特征在于,該任意精度運算器還包括通過信號交換方式而被驅(qū)動的非同步式電路結(jié)構(gòu)。
12.根據(jù)權(quán)利要求1~10中任一項所述的任意精度運算器,其特征在于,該任意精度運算器還包括通過全局時鐘而被驅(qū)動的同步式電路結(jié)構(gòu)。
13.一種電子設(shè)備,其中,該電子設(shè)備包括權(quán)利要求11或12所述的任意精度運算器。
14.一種任意精度運算方法,其特征在于,該任意精度運算方法包括從低位起,每次N(N為自然數(shù))位地對第1任意精度數(shù)值和第2任意精度數(shù)值的每個值進行分割的步驟;將分割完的該第1任意精度數(shù)值作為N位長度的第1輸入值,將該第2輸入值作為N位長度的第2輸入值,依次將它們輸出的步驟;每當請求下一N位的運算時,允許下一N位的該第1輸入值和該第2輸入值的輸出的步驟。
15.一種任意精度運算方法,其特征在于,該任意精度運算方法包括實施從低位起、每次N(N為自然數(shù))位地將第1任意精度數(shù)值進行分割后供給的N位長度的第1輸入值,和從低位起、每次N位地將第2任意精度數(shù)值進行分割后供給的N位長度的第2輸入值的運算的步驟;每當該運算結(jié)束時,請求下一N位的運算的步驟;將通過該運算產(chǎn)生的進位添加到下一N位的運算中的步驟。
全文摘要
本發(fā)明提供一種通過較簡單的構(gòu)成即可實現(xiàn)無論數(shù)據(jù)的精度如何,均可采用同一計算算法進行運算的任意精度運算器。該任意精度運算器包括主處理部(2),其從低位起、每次N(N為自然數(shù))位地對第1任意精度數(shù)值和第2任意精度數(shù)值的每個值進行分割,并作為N位長度的第1輸入值和第2輸入值依次輸出。該任意精度運算器還包括N位運算器(1)其實施所供給的第1輸入值(X)和第2輸入值(Y)的運算,每當運算結(jié)束時,向主處理部(2)請求下一N位的運算,并且將通過該運算產(chǎn)生的進位(Carry)添加到下一N位的運算中。
文檔編號G06F7/48GK1773451SQ200510120279
公開日2006年5月17日 申請日期2005年11月9日 優(yōu)先權(quán)日2004年11月12日
發(fā)明者唐木信雄 申請人:精工愛普生株式會社