專(zhuān)利名稱(chēng):執(zhí)行算術(shù),邏輯與有關(guān)運(yùn)算的方法及數(shù)值算術(shù)單元的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種對(duì)數(shù)值元素執(zhí)行算術(shù),邏輯與有關(guān)運(yùn)算的方法以及在一臺(tái)處理器中的一個(gè)數(shù)值算術(shù)單元(ALU)。
一臺(tái)計(jì)算機(jī)中的算術(shù)邏輯單元是在其中對(duì)信息元素進(jìn)行算術(shù),邏輯,與有關(guān)運(yùn)算的部件。這些操作是根據(jù)提交給該ALU的算術(shù)指令規(guī)定的。在多數(shù)傳統(tǒng)的ALU與累加器與/或緩沖寄存器或其他種類(lèi)的寄存器合作用來(lái)暫存數(shù)值。
本發(fā)明的主要目的是提供一種能以一種簡(jiǎn)易的方法化簡(jiǎn)數(shù)值表達(dá)式的方法或ALU。
本發(fā)明的另一目的是提供一種在其運(yùn)算中不需要與一個(gè)暫時(shí)存儲(chǔ)器合作便能進(jìn)行工作的ALU。
本發(fā)明的又一目的是提供一種使用為其運(yùn)算而提交給它的信息中的算術(shù)指令的ALU。
本發(fā)明的又另一目的是提供一種能夠處理具有可控制地可變劃分?jǐn)?shù)值部分與冪指數(shù)部分的作為運(yùn)算數(shù)的浮點(diǎn)數(shù)值的ALU。
本發(fā)明的又另一目的是提供一種能夠處理具有浮點(diǎn)數(shù)值作為運(yùn)算數(shù)及一個(gè)給現(xiàn)劃分?jǐn)?shù)值部分與同指數(shù)部分的信息的碼段的總線(xiàn)上的比特(bit)信息的ALU。
本發(fā)明的又國(guó)一目的是提供一種能夠處理為其在總線(xiàn)上的運(yùn)算數(shù)給出的算術(shù)指令的ALU,這些指令是在可變碼長(zhǎng)的碼段中提供的。
本發(fā)明的又一個(gè)目的是提供一種具有作為浮點(diǎn)數(shù)解釋與作為整數(shù)解釋之間進(jìn)行改變的ALU。碼的密度也是所需要的。
為了至少實(shí)現(xiàn)上述主要目的,本發(fā)明一般性地構(gòu)思了一種在數(shù)值元素上執(zhí)行算術(shù),邏輯與有關(guān)運(yùn)算的方法,它包括下述步驟a)提供一張包括要處理的數(shù)值元素與指令信息的輸入表,b)使用指令信息直接控制與執(zhí)行輸入表上的數(shù)值元素的一個(gè)運(yùn)算,c)每一數(shù)值元素提供一個(gè)具有予定比特長(zhǎng)度的字,最大字?jǐn)?shù)等于輸入表所能夠提供的最大元素?cái)?shù),d)處理設(shè)備以改寫(xiě)輸入表中的元素執(zhí)行一個(gè)計(jì)算,e)從處理設(shè)備提交結(jié)果輸出表。
輸入表與輸出表中的元素的最大數(shù)目最好是四個(gè)。這樣,便可用一個(gè)指令字表示來(lái)提供一個(gè)表元素,用兩個(gè)數(shù)值表示中的各個(gè)來(lái)提供兩個(gè)表元素,而用一個(gè)中間計(jì)算結(jié)果來(lái)提供另一個(gè)表元素,該中間計(jì)算結(jié)果是在重復(fù)循環(huán)改寫(xiě)輸入元素若干次所作的計(jì)算中得到的。
該表最好包含一個(gè)函數(shù)應(yīng)用,其中其元素之一是一個(gè)指令碼而其余的則為該指令的變?cè)?。一條指令碼到輸入表中來(lái)執(zhí)行的直到達(dá)到一個(gè)最后的結(jié)果,在每一次改寫(xiě)時(shí),如果對(duì)實(shí)際計(jì)算適合,在表的改寫(xiě)中可包括一個(gè)改變了的指令碼字,后面跟著適當(dāng)?shù)闹底帧?br>
在實(shí)際處理以前,將數(shù)值字以一種編碼的形式提供是適當(dāng)?shù)?。最好,表示?shù)值字的字是用一種將該數(shù)值設(shè)定為一種稠密表示的編碼來(lái)提供,即一個(gè)值的每一個(gè)編碼表示只對(duì)應(yīng)于一個(gè)解釋后的值??梢詾楸硎疽粋€(gè)整數(shù)值的二進(jìn)制字規(guī)定一種第一編碼。可以為表示一個(gè)浮點(diǎn)值的二進(jìn)制字規(guī)定一種第二編碼。這些編碼最好是這樣的,經(jīng)過(guò)編碼浮點(diǎn)值后的表示是以與整型值表示相同的次序提供的。在這一方法中,兩種表示中任何一種都無(wú)須是二進(jìn)制數(shù)字形式的。這樣,便可提供一種硬件按照給定的規(guī)則只須隱含地在變形后的位模式上進(jìn)行計(jì)算即可,即無(wú)須了解所作出的解釋。
一種簡(jiǎn)易地實(shí)現(xiàn)具有可變冪指數(shù)寬度的浮點(diǎn)值表示方法是使該二進(jìn)制編碼的浮點(diǎn)值表示包含一個(gè)代碼段,一個(gè)冪指數(shù)段,及一個(gè)數(shù)值段,代碼段中有一個(gè)關(guān)于冪指數(shù)段與數(shù)值段之間的分界位置的指示,使得冪指數(shù)段與數(shù)值段能具有可變的長(zhǎng)度。該稠客表示中可規(guī)定包含一個(gè)虛擬的“1”,即在表示中并不實(shí)際地提供一個(gè)“1”,它位于該字中浮點(diǎn)值表示的數(shù)值部分的段的前面。
下面是一張?jiān)诒菊f(shuō)明書(shū)中使用的詞及它們的保留含義的表閉包(closure)定義一個(gè)過(guò)程的一個(gè)分層結(jié)構(gòu)的實(shí)體。所有閉包都有唯一地定義該閉包的一個(gè)根。一臺(tái)歸約機(jī)器的歸約工作是在閉包上進(jìn)行的。機(jī)器的整體狀態(tài)是由歸約變換的。
目標(biāo)(goal)要執(zhí)行(即歸約)的一個(gè)閉包。
半字節(jié)(group)半字節(jié)由四個(gè)二進(jìn)制位組成。每一個(gè)字由若干半字節(jié)組成。
片(slice)一個(gè)或若干個(gè)字。一片包含諸如兩個(gè)字的最低位組成的二個(gè)比特(bit)。
對(duì)準(zhǔn)(align)保證要使用的比特在一個(gè)字中是正確地定位的。
冗余(redundancy)為了檢測(cè)錯(cuò)誤的目的而附加的數(shù)據(jù)或比特。
規(guī)范碼(normalizcd code)一種用下述方法表示的浮點(diǎn)值,對(duì)于正值,其數(shù)值部分的最高位為一個(gè)虛擬的“1”,而對(duì)于負(fù)值,則為一個(gè)虛擬的“0”。
二進(jìn)制表示(binary represenfation)在任何數(shù)字系統(tǒng)或編碼中表示一個(gè)數(shù)的“0”與/或“1”的一個(gè)組合。
二進(jìn)制數(shù)字形式(binary digit form)基數(shù)為2的數(shù)字系統(tǒng)。
H碼(H-code)根據(jù)本發(fā)明的ALU中所使用的一種特定碼,用于表示數(shù)字。也稱(chēng)作H值。
整型H值用于表示整型值的一種特定的碼。
浮點(diǎn)H值用于表示浮點(diǎn)值的一種特定的碼。
稠密表示每一個(gè)二進(jìn)制組合(位模式)對(duì)應(yīng)于一個(gè)唯一的數(shù)值。
為了對(duì)本發(fā)明的更全面了解以及為了其進(jìn)一步的目的與優(yōu)點(diǎn),現(xiàn)在對(duì)結(jié)合附圖所作的下述說(shuō)明進(jìn)行參照,其中
圖1A為根據(jù)本發(fā)明的ALU的一個(gè)示意圖;
圖1B為圖1A中所示的ALU的時(shí)鐘信號(hào)及某些基本控制信號(hào)的示圖;
圖2為根據(jù)本發(fā)明的ALU的一個(gè)實(shí)施例的示意性框圖;
圖3為算術(shù)表示中的比特段劃分的示意表示;
圖4A為整數(shù)的代碼的圖形表示;
圖4B為浮點(diǎn)值的代碼的圖形表示;
圖4C為用于說(shuō)明提供在一條7比特總線(xiàn)上的一個(gè)算術(shù)表示的建立的一個(gè)示意表示;
圖5A-5B示出根據(jù)圖4提供的一張數(shù)據(jù)表;
圖6為根據(jù)本發(fā)明的ALU的一個(gè)實(shí)施例的電路圖;
圖7A至C示出在不同定時(shí)序列中根據(jù)本發(fā)明的數(shù)值A(chǔ)LU的一個(gè)輸入/輸出緩沖器的一個(gè)實(shí)施例;
圖8示出圖6中所示的電路中所包含的一個(gè)運(yùn)算數(shù)單元的輸出組合連同為提供不同的輸出組合而用于控制包含在該運(yùn)算數(shù)單元中的一個(gè)元件的助記碼的一個(gè)示例圖;
圖9作為一個(gè)例子示出圖6中所示的電路中所包含的一個(gè)精度譯碼器在輸入總線(xiàn)之一上的一個(gè)字的輸出;
圖10示出了作為例子的一個(gè)二進(jìn)制數(shù)值部分比特組合的不同解釋的一個(gè)例子;
圖11與12示出支持兩個(gè)浮點(diǎn)數(shù)相加的一個(gè)例子的說(shuō)明的示圖;
圖13為圖6中所示的電路中所包含的一個(gè)精度譯碼器的實(shí)施例的電路圖;
圖14A示出了圖4中所示的電路中的整字加法器的一個(gè)實(shí)施例的框圖;
圖14B示出了圖14A中的加法器的一個(gè)精度片的框圖;
圖14C圖14B中的精度片的一個(gè)比特片的框圖;
圖15示出了圖6中所示電路中的一個(gè)加1器中一個(gè)精度片的一個(gè)實(shí)施例,以及圖16示出了圖6中所示的電路中的運(yùn)算數(shù)電路中的選擇器所包含的一個(gè)基本選擇器比特片的一個(gè)實(shí)施例的電路圖。
圖1A圖1A中示意性地示出的數(shù)值算術(shù)邏輯單元ALU包括一個(gè)控制驅(qū)動(dòng)單元1a與在特定的輸入/輸出V0,V1,V2,及V3上執(zhí)行算術(shù)運(yùn)算的一個(gè)算術(shù)單元陣列2a,各輸入/輸出是具有多條(M條)傳輸線(xiàn)的傳輸一個(gè)M比特的值的一條總線(xiàn),M例如為32。該ALU最好是一臺(tái)中央處理單元(CPU)的一部分并且是由一個(gè)控制單元CU從外部控制的。該ALU與該外部控制單元CU以下術(shù)信號(hào)進(jìn)行通信一個(gè)時(shí)鐘信號(hào)輸入CALU,一個(gè)占用輸出ABUSY,一個(gè)控制輸入ACNTL,一個(gè)狀態(tài)輸出ASTATE,以及一個(gè)譯碼后的指令輸出A1NS。
總線(xiàn)輸入/輸出V0,V1,V2,V3可以連接到結(jié)構(gòu)算術(shù)單元(未示出,以后稱(chēng)作核心處理器)中的特定寄存器上,稱(chēng)作目標(biāo)寄存器或CT寄存器,在其中處理歸約類(lèi)指令。然而,總線(xiàn)輸入/輸出信號(hào)也能由與一臺(tái)計(jì)算設(shè)備(最好是歸約類(lèi)型的)協(xié)作的其它類(lèi)型的配置來(lái)提供,除了歸約類(lèi)型的計(jì)算設(shè)備以外其它類(lèi)型的計(jì)算設(shè)備也是十分可能的。同樣,雖然在圖1A中所示選擇了4條輸入/輸出總線(xiàn)V0,V1,V2,V3,但總線(xiàn)的數(shù)目可任意選擇。然而,隨著輸入/輸出總線(xiàn)V0,V1,V2,V3的數(shù)目的增加,ALU的復(fù)雜性可觀(guān)地增加。
輸入/輸出總線(xiàn)V0,V1,V2,V3傳輸一張字表。一個(gè)字是一個(gè)數(shù)值或一條指令。并不是每次都使用所有總線(xiàn)的。未使用的一條總線(xiàn)上的一個(gè)字可以被忽視。輸入與/或輸出表具有一個(gè)最大長(zhǎng)度,即包含一個(gè)最大數(shù)目的字?jǐn)?shù),例如4,即每條輸入/輸出總線(xiàn)一個(gè)表元素。一個(gè)數(shù)值是一個(gè)字,它是在若干條線(xiàn)上傳輸?shù)?。同樣,在一條總線(xiàn)上的一條指令也是一個(gè)字。輸入/輸出V0,V1,V2,V3上的輸入表是用于控制與執(zhí)行一次計(jì)算的,即該表包含一條有關(guān)所規(guī)定的計(jì)算的種類(lèi)以及要計(jì)算的值的特性的信息,并且控制驅(qū)動(dòng)器1a在控制陣列2a中的不同部件時(shí)導(dǎo)出這一信息。一個(gè)計(jì)算是以改寫(xiě)輸入表中的內(nèi)容的一個(gè)經(jīng)特或半字節(jié)的方式提供的,即對(duì)一個(gè)字中分另具有相同位置的比特或?qū)σ粋€(gè)字中以“片方式”提供的由比特組成的半字節(jié),并作為一張輸出表提供結(jié)果。應(yīng)注意的是,在輸出上提交最終的輸出表以前,有可能通過(guò)內(nèi)部電路進(jìn)行若干次值的重復(fù)循環(huán)。在重復(fù)循環(huán)中在輸出上出現(xiàn)一張瞬時(shí)輸出表但它只是作為一張瞬時(shí)輸入表插入的。
該表可以包括一個(gè)函數(shù)應(yīng)用連同要處理的值或者其它類(lèi)型的表,諸如只包括至少一個(gè)整型值或浮點(diǎn)值的一張表。當(dāng)它包括一個(gè)函數(shù)應(yīng)用時(shí),在輸入/輸出V0上提供的第一表元素包含該指令碼,即要求進(jìn)行的處理類(lèi)型的信息,而其它表元素則為該指令的變?cè)@一點(diǎn)將在下面更詳細(xì)地說(shuō)明。
一條指令是以在一步或若干步中改寫(xiě)該指令而執(zhí)行的,使之最終得到其結(jié)果。在A(yíng)LU內(nèi)部使用了微指令與狀態(tài)信號(hào)。這些是ALU內(nèi)部的獨(dú)立的控制驅(qū)動(dòng)器1a用來(lái)控制陣列2a的。當(dāng)一次改寫(xiě)直接引導(dǎo)出結(jié)果時(shí),該值便被放入輸出表中。當(dāng)所進(jìn)行的是逐步改寫(xiě)時(shí),在改寫(xiě)該表時(shí)保持同一指令碼,或者改寫(xiě)成一個(gè)新的或稍加改變的指令碼,而在大多數(shù)情況下在該指令碼的后面跟隨著一個(gè)或多個(gè)值。需要指出的是,在若干周期中進(jìn)行改寫(xiě)操作的最佳方式是在整個(gè)操作中保持指令碼原封不動(dòng),因?yàn)樵谶@種情況下,控制單元將較為簡(jiǎn)單。然而,在一個(gè)多周戎操作開(kāi)始時(shí)具有一種指令碼而在其余周期中稍為改變這一指令碼之類(lèi)的情況也是方便的。
返回至圖1A,時(shí)鐘信號(hào)CALU是用于向算術(shù)邏輯單元ALU提供時(shí)鐘脈沖的,而ALU在準(zhǔn)備就緒接受時(shí)鐘脈沖時(shí)在輸出ABUSY上給定一個(gè)就緒信號(hào)。
總線(xiàn)輸入/輸出V0,V1,V2,V3是連接到一個(gè)目標(biāo)寄存器中的主寄存器單元上的,該輸入/輸出具有指令或數(shù)值內(nèi)容。數(shù)值內(nèi)容最好以編碼的格式提供給ALU,這種格式取決于該數(shù)值內(nèi)容表示一個(gè)浮點(diǎn)值或一個(gè)整數(shù)而有所不同。每一個(gè)目標(biāo)寄存器單元包含和數(shù)值的每一個(gè)輸入/輸出同樣多的比特(即,在所示的全子中為32),但還有若干比特,例如6,用于設(shè)置標(biāo)記位。這些標(biāo)記位并未包含在認(rèn)為是本發(fā)明的最佳方式的實(shí)施例中在總線(xiàn)輸入/輸出上所提供的信息中。反之,標(biāo)記位信息是饋給外部控制單元CL的,而單元CU本身又控制ALU控制單元1a。
然而,將標(biāo)記位包括在輸入/輸出上所提供的信息中使得該標(biāo)記位信息直接饋送給控制驅(qū)動(dòng)單元或ALU控制也屬于本發(fā)明的范圍之內(nèi)。當(dāng)該ALU是用作一個(gè)與傳統(tǒng)型式的處理器協(xié)作的單元時(shí),這也是驅(qū)動(dòng)根據(jù)本發(fā)明的ALU的最佳方式。
控制輸入ACNTL是用于控制ALU的數(shù)值運(yùn)算的。這一運(yùn)算可使用若干時(shí)鐘周期。
在每次運(yùn)算以后,一個(gè)輸出ASTATE返回到控制單元CU。在輸出AINS上的指令碼是總線(xiàn)V0所連接的目標(biāo)核心單元中的指令碼的壓縮。
圖1B參見(jiàn)圖1B,控制單元CU為處理器提供的基本時(shí)鐘為C1-0,例如具有10ns(毫微秒)的周期。一個(gè)ALU運(yùn)算是在一個(gè)或多個(gè)這樣的時(shí)鐘周期中執(zhí)行的。連接到ALU的核心處理器可能以比ALU的周期長(zhǎng)(例如兩倍)的周期來(lái)控制,即如果C10的周期為10ns則以具有20ns周期的時(shí)仲信號(hào)C2然而,相反地,它也可能以一個(gè)較短的周期來(lái)進(jìn)行控制。用于具有較短周期有設(shè)備(即所示實(shí)施例中的ALU,或者在另一情況中的核心處理器)的基本控制信號(hào)CALU因此而在每條指令結(jié)束時(shí)延長(zhǎng),使之能與具有較長(zhǎng)周期的時(shí)鐘信號(hào)C20同步。只要ALU需要更多的C10型時(shí)鐘周期來(lái)執(zhí)行一條指令,它便返回一個(gè)高電平信號(hào)ABUSY。上述延長(zhǎng)是在信號(hào)ABUSY變?yōu)榈碗娖胶筇峁┑?,這在圖1B中看得很清楚。
圖2中所示的本發(fā)明的實(shí)施例包括一個(gè)ALU控制電路10,作為一個(gè)對(duì)其輸入上的信號(hào)進(jìn)行變換與組合使之適用于電路提供輸出表元素的中央部件。ALU控制電路10包含一種布爾門(mén)陣列。圖2對(duì)應(yīng)于圖1A的右側(cè)部分。
每一條輸入/輸出總線(xiàn)V0,V1,V2,V3都是具有諸如32根線(xiàn)的多線(xiàn)總線(xiàn),它們是連接到一個(gè)輸入緩沖器電路11的輸入上的。緩沖器電路11是由其時(shí)鐘輸入上的時(shí)鐘信號(hào)定時(shí)來(lái)將其輸入信號(hào)傳輸?shù)絻?nèi)部輸入總線(xiàn)V0,V1,V2,V3的。一個(gè)輸出緩沖器16由在其時(shí)鐘輸入上的一個(gè)反相時(shí)鐘信號(hào)定時(shí)來(lái)將在輸出總線(xiàn)V000T,V100T,V200T,V300T上的信息傳輸?shù)捷斎?輸出總線(xiàn)V0,V1,V2,V3的。雖然在圖2中所示的緩沖器配置11與16是包括兩個(gè)獨(dú)立的肝沖器的,但緩沖器配置11與16最好是一個(gè)組合的輸入/輸出緩沖器電路。
若干計(jì)算電路12A至12N(N為電路的數(shù)目)連到內(nèi)部輸入總線(xiàn)V0,V1,V2,V3中的至少兩條上,每一計(jì)算電路對(duì)它們所連接的內(nèi)部輸入總線(xiàn)V0,V1,V2,V3上的信息進(jìn)行單獨(dú)的一種簡(jiǎn)單計(jì)算,例如在不同群集中的加法或減法。計(jì)算電路12A至12N是十分省時(shí)的,因?yàn)樵诟鶕?jù)本發(fā)明的ALU作為其一部分的應(yīng)用中,它們可以是這樣選定的,使得每一個(gè)可能要求進(jìn)行的簡(jiǎn)單計(jì)算可以隨時(shí)立即提供。然后,ALU控制電路10只經(jīng)從這些用于特定類(lèi)型運(yùn)算的計(jì)算電路中選擇適當(dāng)?shù)囊粋€(gè)或多個(gè)直接取其輸出用于進(jìn)一步的處理目的即可。每一個(gè)計(jì)算電路的尺寸都是小的并且不是特別消耗電能的。從而,即使在某一時(shí)刻只使用它們中的一個(gè)的輸出,也不在乎若干電路進(jìn)行并行計(jì)算。,計(jì)算電路的輸出饋送到運(yùn)算數(shù)單元OP1與OP2,這將在下面說(shuō)明。
同樣,來(lái)自單元12A至12N的信號(hào)在某些情況下也可用于控制。每一個(gè)計(jì)算電路12A至12N有一第二輸出,在其上提供的一個(gè)進(jìn)位信號(hào)用指示溢出。這一第二輸出饋送給ALU控制電路10的一個(gè)單獨(dú)的輸入。單元12A至12N是受ALU控制電路10以及ALU中給出在其輸入上所表示的字的類(lèi)型信息的其它電路控制的,即例如是否該字表示一個(gè)數(shù),如果是一個(gè)數(shù),則該數(shù)是一個(gè)整數(shù)還是一個(gè)浮點(diǎn)數(shù),并且,如果它是一個(gè)浮點(diǎn)值,則給出有關(guān)這一數(shù)的性質(zhì)的信息,下面將進(jìn)一步說(shuō)明。
若干監(jiān)視電路13A至13M(M為電路的數(shù)目)各自連接到輸入總線(xiàn)V0i,V1i,V2i,V3i中至少單獨(dú)的一個(gè)上。這些監(jiān)視電路能夠,例如,監(jiān)視總線(xiàn)的信息的意義,或者比較總線(xiàn)的信息。某些監(jiān)視電路可以被提供與電路12A至12N相同的控制信息,如僅為電路13A示出的那樣。監(jiān)視電路13A至13M的輸出饋送給ALU控制電路10的輸入。
三至四個(gè)性質(zhì)供給電路14A至14D連接到至少總線(xiàn)V1i,V2i與V3i并且從一部分總線(xiàn)供給的關(guān)于總線(xiàn)上其他信息的性質(zhì)的信息中取得信息。連接到總線(xiàn)V3i的性質(zhì)供給電路14D在乘法情況中取得至少在總線(xiàn)V3i上的最低二進(jìn)制位。這一點(diǎn)下面將進(jìn)一步說(shuō)明。一個(gè)性質(zhì)供給電路14A可同時(shí)連接到總線(xiàn)V0i,擋在一條外部控制總線(xiàn)EXT至ALU控制驅(qū)動(dòng)電路上的一個(gè)信息指示在總線(xiàn)V0i上的信息表示一個(gè)數(shù)時(shí),它得到某些預(yù)定的信息。
例如,如果在一條總線(xiàn)上的信息是一個(gè)浮點(diǎn)值,連接到該總線(xiàn)的性質(zhì)供給電路給出有關(guān)該值的符號(hào),冪指數(shù)的符號(hào)以及某些數(shù)值比特(例如最高位)的信息。應(yīng)當(dāng)指出的是,當(dāng)提供了一個(gè)性質(zhì)供給電路14D時(shí),從V3i供給而饋送到ALU控制電路10的一個(gè)電路輸入的性質(zhì)類(lèi)型沒(méi)有必要和來(lái)自V0i與V2i的一樣,它可以例如,較為簡(jiǎn)單。同樣的推論也適用于用于總線(xiàn)V0i的性質(zhì)供給電路14A。
ALU控制電路10向外部控制單元CU提供一個(gè)輸出A-STATE(見(jiàn)圖1A),主要是來(lái)自單元12A至12N與13A至13M的輸入。
為了向ALU控制驅(qū)動(dòng)電路10提供了一個(gè)指令電路15來(lái)監(jiān)視總線(xiàn)V0i上的全部信息。
如圖2所示,總線(xiàn)V0i上的信息可以直接饋送給連接到輸出緩沖器16上的一條輸出總線(xiàn)V000T,如上所述,最好是以一個(gè)結(jié)合在一起的反相地由時(shí)鐘信號(hào)定時(shí)的輸入/輸出緩沖器11,16的總線(xiàn)連接方式。使這一總線(xiàn)具有指令表元素并保持這一指令表元素不變是方便的。來(lái)自ALU的其它輸出總線(xiàn)V100T,V200T,V300T也連接到緩沖器16,并且所有輸出總線(xiàn)上的信息是同時(shí)由時(shí)鐘脈沖輸出到輸入/輸出總線(xiàn)V0,V1,V2,V3上的上的。ALU控制電路10向ALU中的其它電路提供控制信號(hào)C1,C2,C3,C5。
然而,它可依賴(lài)于一個(gè)多周期運(yùn)算中的實(shí)際周期作出某些改變并將改變后的指令表元素饋送給總線(xiàn)V000T(未示出)。
具有基本上相同類(lèi)型的兩個(gè)運(yùn)算數(shù)單元OP1與OP2分別提供輸出V100T與V200T。如圖2所示的實(shí)施例中那樣具有兩個(gè)運(yùn)算數(shù)單元雖非必要但卻是實(shí)用的。從只有一個(gè)到若干個(gè)不同數(shù)目的運(yùn)算數(shù)單元可用于根據(jù)本發(fā)明有不同應(yīng)用中,然而,為了進(jìn)行一次加法或一次減法只需要一個(gè)運(yùn)算數(shù)單元,因?yàn)檫@種運(yùn)算是在電路12A至12N之一上進(jìn)行并且是在該運(yùn)算數(shù)單元的輸入之一上提供并且可以在A(yíng)LU控制電路10控制的運(yùn)算數(shù)單元的輸出上提供的。為了同時(shí)進(jìn)行若干不同種類(lèi)的加法與減法運(yùn)算,可使用若干運(yùn)算數(shù)單元。需要指出的是,每一運(yùn)算數(shù)單元有一條輸出總線(xiàn)VOUTi,其中i表示一個(gè)任意的數(shù),因此,輸入/輸出,輸入與輸出總線(xiàn)的數(shù)目取決于A(yíng)LU中運(yùn)算數(shù)單元的數(shù)目。
具有另一類(lèi)型的一個(gè)運(yùn)算數(shù)單元OP3可提供來(lái)用于乘法或除法運(yùn)算方面并將其輸出饋送到輸出總線(xiàn)V300T上。乘法與除法運(yùn)算是在若干循環(huán)步驟中執(zhí)行的。運(yùn)算數(shù)單元OP3的輸出是V300T。應(yīng)當(dāng)指出的是,同樣可以有不是一個(gè)而是不同數(shù)目的運(yùn)算數(shù)單元OP3。
關(guān)于浮點(diǎn)算術(shù)如上所述并將在下面進(jìn)一步討論的,至少在一些步驟中,至少在本發(fā)明的一個(gè)實(shí)施例中,冪指數(shù)的長(zhǎng)度是可以選擇的。所以,為每一運(yùn)算數(shù)單元OP1與OP2分別提供了一個(gè)精度譯碼器PD1與PD2。精度譯碼器向其所隸屬的運(yùn)算數(shù)單元提供有關(guān)冪指數(shù)部分的長(zhǎng)度的控制信號(hào)。忱可以從二進(jìn)制字中的一個(gè)特定的代碼段中得到,如下面將進(jìn)一步說(shuō)明的。如上所述,它也可向ALU電路的其它部分提供控制信號(hào)。
有關(guān)一個(gè)值是一個(gè)整數(shù)或一個(gè)浮點(diǎn)值的傳送給ALU的信息最好由外部控制單元CU(見(jiàn)圖1A)在A(yíng)LU控制電路10的一個(gè)控制輸入EXT上提供,但也可從總線(xiàn)V0i至V3i上得到。
從上面可以清楚地看到,令輸入總線(xiàn)具有不同的但意義明確的算術(shù)運(yùn)算任務(wù)是方便的。所以,或者直接從饋入裝置(例如較好的是上述目標(biāo)寄存器)向輸入總線(xiàn)提供具有所述定義的任務(wù)的信息,或者ALU本身將輸入總線(xiàn)上的信息改變成適用于一個(gè)內(nèi)部周期,然后使用總線(xiàn)V0i上有關(guān)其它總線(xiàn)上的信息的信息。總線(xiàn)V0i可一數(shù)據(jù)段,該段具有關(guān)于在輸入/輸出總線(xiàn)V0,V1,V2,V3上提供的表上的信息的類(lèi)型的信息。然而,這一信息也可由外部控制單元CU提供。
從上面可知,根據(jù)本發(fā)明的ALU沒(méi)有內(nèi)部存儲(chǔ)器。這便導(dǎo)致一個(gè)多周期運(yùn)算的每一個(gè)周期的結(jié)果只受緊接著的前一個(gè)周期的結(jié)果的輸出的影響,這便是適用于進(jìn)行處理的輸入。
如上所述,根據(jù)本發(fā)明的ALU所期望的一個(gè)目的是在一個(gè)浮點(diǎn)表示系統(tǒng)中的冪指數(shù)與數(shù)值部分之間有一條可變的界限。這樣,在第一方面,對(duì)于小的數(shù),其數(shù)值部分中可能有許多比特,這提供了具有高精度的優(yōu)點(diǎn)。在另一方面,極大的數(shù)可以得到處理。
為了簡(jiǎn)要地給出對(duì)根據(jù)本發(fā)明的ALU的理解,在這里給出了關(guān)于兩個(gè)整數(shù)的乘法的一個(gè)例子。進(jìn)一步將給出關(guān)于在計(jì)算浮點(diǎn)值時(shí)的ALU的運(yùn)算的例子。
整數(shù)乘法例如可以用下述方法提供。在第一周期中,要相乘的兩個(gè)數(shù)被提供,一個(gè)在輸入總線(xiàn)V2上另一個(gè)在總線(xiàn)V3上??偩€(xiàn)V0上有信息“0”。第一類(lèi)型的運(yùn)算數(shù)單元之一,例如OP1,被控制來(lái)將V2上的信息直接傳送到其輸出上。另一個(gè)運(yùn)算數(shù)單元OP2被控制來(lái)將V2上的信息向左移位一步并將位移后的結(jié)果提交在其輸出上。在下一個(gè)周期中,首先提到的運(yùn)算數(shù)單元OP1被控制來(lái)將該信息從其連接的輸入之一傳送給電路12A至12N之一作出對(duì)總線(xiàn)V1i與V2i上的數(shù)字的一次加法運(yùn)算。另一個(gè)運(yùn)算數(shù)單元OP2則衩控制來(lái)取得V2i上的信息并將它向左移位一步與將它提交在其輸出上。
在此后的各周期中,第一個(gè)所述運(yùn)算單元OP1,如果在總線(xiàn)V3i上的信息的最后二進(jìn)制位為“1”則被控制來(lái)傳送對(duì)總線(xiàn)V1與V2上的信息進(jìn)行加法運(yùn)算的電路的輸出,否則取總線(xiàn)V1i上的信息。這一給ALU控制電路10的信息是提供在電路14P的輸出上的。在運(yùn)算數(shù)單元OP3時(shí)輸入上提供的總線(xiàn)V3i上的上的數(shù)字信息被控制來(lái)將其向右移位一步,使得最低二進(jìn)制位被取走。
至少運(yùn)算數(shù)電路OP1與OP2可具有向ALU控制電路10提供一個(gè)指示內(nèi)部移件已導(dǎo)致一個(gè)進(jìn)位的返回信號(hào)(未示出在圖2中)的能力。每一周期是在兩步中執(zhí)行,其中第一步是在時(shí)鐘信號(hào)的前半周期中進(jìn)行而另一步則是在第二半周期中進(jìn)行的。
圖3如圖3中示意地所示,在具有一個(gè)數(shù)值的一條總線(xiàn)上的各比特模式是因此最好以在比特串的最高位幾個(gè)比特的一個(gè)短的比特段提供的,在這一比特段中具有該值的符號(hào)的信息,冪指數(shù)的符號(hào)的信息,以及一個(gè)關(guān)于該數(shù)值的冪指數(shù)與數(shù)值部分之間的分界位置(見(jiàn)圖3中右方箭頭)的代碼。需要指出的是,該比特段的代碼部分的長(zhǎng)度也是可變的,而代碼段與冪指數(shù)段之間的分界位置的所在也是由該代碼段確定的,如圖3中左方箭頭所示。
下面將討論三種表示十進(jìn)制數(shù)的方法Ⅰ二進(jìn)制數(shù)字格式基數(shù)為2的數(shù)值系統(tǒng)。
Ⅱ整型H值用于表示整數(shù)的一種二進(jìn)制碼。
Ⅲ浮點(diǎn)H值用于表示浮點(diǎn)值的一種二進(jìn)制碼。
根據(jù)本發(fā)明的ALU另一個(gè)所期望的目的是以與同一個(gè)數(shù)的整數(shù)解釋相同的次序來(lái)提供該數(shù)有浮點(diǎn)值。從而具有同一比特模式的浮點(diǎn)值與整數(shù)值是完全不同的。
然而,這一目的可以這樣來(lái)達(dá)到,即如果該表示是作為一個(gè)浮點(diǎn)值來(lái)解釋則有一個(gè)用于該比特串的第一解釋公式,而如果該表示是作為一個(gè)整數(shù)值來(lái)解釋則有一個(gè)用于該比特串的第二解釋公式。從而,兩種表示都不必要是二進(jìn)制位格式的,至少兩者之一,最好兩者都是以編碼格式的。比特模式變換是自動(dòng)進(jìn)行的,而機(jī)器中的硬件只是隱含地依照給定的規(guī)則在變換后的比特模式上進(jìn)行計(jì)算,即無(wú)需了解這種解釋是如何進(jìn)行的。
根據(jù)本發(fā)明的一個(gè)較佳實(shí)施例,為浮點(diǎn)值提供一種稠密表示作出了努力,即不應(yīng)當(dāng)有兩種比特模式可以解釋為同一個(gè)數(shù)。名詞“稠密表示”表示每一個(gè)十進(jìn)制數(shù)對(duì)應(yīng)于一個(gè)唯一的二進(jìn)制組合。
圖4A,整數(shù)表示圖4A示出了根據(jù)本發(fā)明的整型值的代碼的圖形表示,稱(chēng)作整型H值。二進(jìn)制表示是沿水平軸給出的,而H值則沿垂直軸。最高位比特表示該值的符號(hào),它是正的還是負(fù)的。從圖4A中可知,當(dāng)二進(jìn)制表示為全“0”時(shí),H值為最大的負(fù)值,而在其二進(jìn)制表示的中點(diǎn)具有零值,即,當(dāng)最高位比特從“0”變到“1”,而當(dāng)二進(jìn)制表示為全“1”時(shí)為其最大正值。從而,H碼中的一個(gè)二進(jìn)制組合的值以與其二進(jìn)制位格式相同的方式增加。當(dāng)一個(gè)二進(jìn)制位格式的一個(gè)字的二進(jìn)制組合為“1”時(shí),它也具有其最大值。整型碼是一條直線(xiàn)。
圖4B,浮點(diǎn)值表示圖4B示出根據(jù)本發(fā)明的浮點(diǎn)值的代碼的一個(gè)圖形表示,稱(chēng)為浮點(diǎn)H值。二進(jìn)制表示是沿水平軸給出的,而H值則是沿垂直軸的,這里該軸是畫(huà)在通過(guò)浮點(diǎn)H值改變符號(hào)的點(diǎn)上。在這一表示中最高位比特同樣表示該值的符號(hào)。浮點(diǎn)值表示必須滿(mǎn)足通用的要求。對(duì)于一定的精度,該值的量級(jí)必須是任意變化的。從而極小與極大的值應(yīng)都能表示。浮點(diǎn)H值的標(biāo)度是對(duì)數(shù)的。對(duì)數(shù)H值可在每一個(gè)因子2和直線(xiàn)近似來(lái)簡(jiǎn)化。結(jié)果是一種典型的浮點(diǎn)碼。如圖4B所示,用于表示在-1與+1之間的H值的二進(jìn)制表示是在二進(jìn)制表示段的中央給出的并且包含該段的一半。
在整個(gè)值域內(nèi),一個(gè)值的相對(duì)精度是恒定的。對(duì)數(shù)值具有一定的精度與值域。如果量級(jí)應(yīng)為任意大,則必須有可能調(diào)整對(duì)數(shù)的值域。
對(duì)數(shù)值可再一次或者甚至更多次地作用于對(duì)數(shù)函數(shù)。從而,有可能表示極大的數(shù)。然而,在大量級(jí)上精度降低,但在低量級(jí)上精度得以保持甚至稍為提高。
由于兩種表示的兩種比特模式以同一方式出現(xiàn),一個(gè)整數(shù)大小比較器同樣可用于浮點(diǎn)值表示。這意味著可以免去一個(gè)特殊的浮點(diǎn)值比較器。這進(jìn)而意味著,在僅僅一個(gè)周期中進(jìn)行比較運(yùn)算的整數(shù)大小比較器可用于浮點(diǎn)值,這是一個(gè)大優(yōu)點(diǎn)。傳統(tǒng)類(lèi)型的浮點(diǎn)值比較器必須用許多周期來(lái)進(jìn)行運(yùn)算。
在傳統(tǒng)的算術(shù)邏輯單元中若干種比特模式可能解釋為同一個(gè)數(shù),并且要進(jìn)行一次規(guī)范化來(lái)選擇這些比特模式中的一個(gè)。根據(jù)本發(fā)明,不需要進(jìn)行規(guī)范化,至少在實(shí)際計(jì)算中是這樣。規(guī)范化可在一次計(jì)算操作的前后進(jìn)行。由于在浮點(diǎn)值之間具有稠密表示相似性,一次浮點(diǎn)值計(jì)算,例如比較,可以在僅僅一個(gè)周期中確定。具有稠密表示的一個(gè)優(yōu)點(diǎn)是可獲得最大數(shù)目的浮點(diǎn)值,即在一個(gè)系列的值中沒(méi)有受排斥的與不可用的值。
為什么在傳統(tǒng)的應(yīng)用中若干個(gè)比特模式可能解釋為同一個(gè)數(shù)的原因是為了產(chǎn)生一個(gè)值是將該值的冪數(shù)部分與數(shù)值部分相乘而得出的。例如值1.0可以是211/2,即其冪指數(shù)比特模式01與數(shù)值部分比特模式100,或者22×1/4,即具有冪數(shù)比特模式10與數(shù)值部分比特模式010,冪指數(shù)比特模式與數(shù)值部分比特模式互相跟隨。
根據(jù)本發(fā)明的一個(gè)實(shí)施例,稠密表示是在正值的數(shù)值部分的比特模式前面隱含地(即不實(shí)際存在)提供一個(gè)“1”,而在負(fù)值隱含地提供一個(gè)“0”。傳統(tǒng)上,數(shù)質(zhì)部分是規(guī)定為一個(gè)-1與+1之間的一個(gè)值。根據(jù)本發(fā)明,取決于其符號(hào),二進(jìn)制編碼的數(shù)值部分是規(guī)定為在值域(1.0至2.0)或(-2.0至-1)中的一個(gè)值。
整數(shù)模式是明確地確定的,而浮點(diǎn)表示必須與整數(shù)解釋具有相同的連接順序,這是一種非常困難的限制。
圖4C,5A與5B,浮點(diǎn)值表示的進(jìn)一步信息對(duì)這一問(wèn)題的一個(gè)有利解法示意性地示出出在圖4C中。圖5A與5B示出了根據(jù)圖4C所示的原理提供一張字的數(shù)據(jù)表。圖5A與5B中最右邊列表示對(duì)應(yīng)于最左邊一列中的二進(jìn)制組合的十進(jìn)制浮點(diǎn)值。圖4C示出了浮點(diǎn)碼的一個(gè)示意性圖形闡述,在垂分界線(xiàn)LIN的左側(cè)示出二進(jìn)制表示,而在其右側(cè)則示出浮點(diǎn)H值。直線(xiàn)LIN示出為指向較高值的一根軸。對(duì)于二進(jìn)制表示與H值表示兩者都是適應(yīng)的。從線(xiàn)LIN兩側(cè)向外延伸示出了表示與H值。最靠近線(xiàn)LIN是圖4B中的圖中的軸的展示。H值軸在右而二進(jìn)制表示軸在左。
在軸的表示的外側(cè)第一個(gè)段中,右邊是sh左邊是s,表示最高位比特。對(duì)于負(fù)值為“0”,對(duì)于正值為“1”。
在這外側(cè)的第二段,分別為seh與se表示次最高比特。這是冪指數(shù)的符號(hào)位?!?”表示負(fù)號(hào),“1”表示正號(hào)。
第三段至少一個(gè)比特具有比次最高位低的位次,如果該二進(jìn)制段是低的則只有一個(gè)比特,如在所示的只有七個(gè)比特的情況中,而如果該二進(jìn)制段是高的則含有多于一個(gè)比特,如在下面將要說(shuō)明的具有32比特的情況中。
在圖4C,5A與5B所示的例子中,示出了用于七比特字的編碼,而不是在實(shí)際中更常用的32比特字。緊靠在圖4C中的中線(xiàn)左側(cè)的二進(jìn)制表示將被解釋為具有H值-1024至+768。需要指出的是,H值-1與+1是分別放在值0與極端值-1024與768的中點(diǎn)上的。第一二進(jìn)制位分別是s與sh,對(duì)于表示與H值還是一個(gè)負(fù)值。
第二個(gè)二進(jìn)制位是冪指數(shù)的符號(hào),即絕對(duì)值是大于1還是小于1。從而,H值冪指數(shù)符號(hào)位在-1024與-1之間是正的,在-1與+1之間是負(fù)的,然后在+1與+768之間又是正的。從圖4C中左側(cè)可明顯地看出二進(jìn)制表示的冪指數(shù)符號(hào)位在二進(jìn)制序列的第一個(gè)四分之一中是負(fù)的,在第二個(gè)四分之一中是正的,在第三個(gè)中是負(fù)的,而在第四個(gè)中是正的。seh位可表示為,如果s=1則seh=se,否則seh=1-se。
因此,在二進(jìn)制表示中表示字符符號(hào)的最高位比特變化最慢,表示冪指數(shù)符號(hào)的次最高位比特具有次最低變化,即字符符號(hào)位變化速度的兩倍。下一位置上的比特是代碼比特C其變化速度是冪指數(shù)比特的兩倍。在圖4C與5A,5B的例子中這一代碼只包含一個(gè)經(jīng)特。在其它例子中該代碼段可包含多個(gè)比特。該代碼控制冪指數(shù)的長(zhǎng)度并且是考慮進(jìn)前面的符號(hào)比特來(lái)對(duì)待的。
要實(shí)現(xiàn)的浮點(diǎn)H值,即浮點(diǎn)記數(shù)法以一種更特別的方法提供代碼段ch。從圖4C中的eh部分可見(jiàn),eh部分是直接給出冪指數(shù)H值的,值eh從一個(gè)大的正值下降到0,那里H值是-1,從那里再到一個(gè)大的負(fù)值,這時(shí)H值為0,從那里再到值0,這時(shí)H值為+1,再?gòu)哪抢锏揭粋€(gè)大的正值,這時(shí)H值為768。ehabs部分示出了冪指數(shù)的絕對(duì)H值并且是以?xún)蓷l曲線(xiàn)表示的,它們互相并排在一起,每一條曲線(xiàn)的兩端都在一個(gè)大的正值上而其中點(diǎn)則置于0上。H值的代碼段ch是設(shè)計(jì)成反映值ehabs的,所以示出為具有以虛線(xiàn)表示的相同的形狀,并且示出了如果該代碼段只包含一個(gè)比特時(shí)它將具有的以連續(xù)的線(xiàn)表示的形狀。因而,當(dāng)代碼ch只包含一比特時(shí),若se=1則ch=c,否則ch=1-c。
到目前為止,對(duì)圖5A與5B中所提供的表的百列是容易觀(guān)察的,因?yàn)楦鞅忍囟蝧,sh,se,seh,c,與ch都只包含一個(gè)比特,因而圖4中與圖5A與5B中的表示之間的對(duì)照是顯而易見(jiàn)的,圖5A與5B中的第一列是一個(gè)順序的從0000000至1111111的表面其在十進(jìn)制記的數(shù)系統(tǒng)中的直接對(duì)應(yīng)物則提供在第二列中。箭頭列的右側(cè)示出了表示的變換后的數(shù)字以及H值。為了便于與圖4C中的展示進(jìn)行對(duì)照,在該表中為表示代碼段的每一次轉(zhuǎn)換提供了連續(xù)的水平線(xiàn)。在ch右側(cè)的列中包含表示的冪指數(shù)值e的十進(jìn)制表示,這后面是H值的冪指數(shù)值eh的十進(jìn)制表示。后面兩列分別示出值e與eh的二進(jìn)制表示。再后面的兩列分別示出表示的數(shù)值部分m的十進(jìn)制與二進(jìn)制表示。在這后面示出的是H值的數(shù)值部分mh的十進(jìn)制表示。需要指出的是,在圖5A中,值sh為“0”,數(shù)值部分在-1與-2之間變化,而在圖5B中,值sh為“1”,數(shù)值部分在+1與+2之間變化,最右邊的列中示出了由最左邊的列中的二進(jìn)制組合經(jīng)過(guò)變換后提供的十進(jìn)制H值。
從圖5B的上部可看到,具有“1”作為其最高位比特而隨后各位均為“0”的表示表示特殊的浮點(diǎn)值“0”。
從圖4C中的二進(jìn)制數(shù)序列可知,在中線(xiàn)在左側(cè),七個(gè)二進(jìn)制位中的四個(gè)最低位比特是留給冪指數(shù)與數(shù)值部分共用的,因?yàn)槿齻€(gè)最高位比特是保留給符號(hào)比特與代碼比特的。從數(shù)字到e與m可見(jiàn),在冪指數(shù)符號(hào)se為負(fù)(即“0”)及代碼值c為“1”的最上面部分中,值e包括3個(gè)比特,從而值m為一個(gè)比特(該列中前面兩個(gè)“0”可以省略),而數(shù)值部分可包含3比特。這是在圖4C中以在這一部分中具有少數(shù)梯級(jí)一個(gè)e表示來(lái)示出的。在下一部分中,值e只包含一個(gè)比特而數(shù)值部分3個(gè)比特,等等。
如表示部分中所示,在c=0與se=0這一部分中冪指數(shù)e有許多梯級(jí),而在c=1與se=1的部分中則只有少數(shù)梯級(jí)。在e部分左側(cè)的e+bias(e+偏置)部分中,在整個(gè)部分的每一個(gè)四分之一中在一條線(xiàn)上提供的e值是以連續(xù)的線(xiàn)示出的而以在e+bias中以倒轉(zhuǎn)一個(gè)部分中每隔一個(gè)四分之一來(lái)以虛線(xiàn)示出如何構(gòu)成ehabs值。(eh表示帶有冪指數(shù)符號(hào)的e的值。)因而,代碼比特(一個(gè)或多個(gè))是取決于前面的符號(hào)件的,因此,可以說(shuō)事實(shí)上代碼是包含符號(hào)位的,因此是只能有非常有限的長(zhǎng)度,即它比取決于只在代碼段中所提供的冪指數(shù)的長(zhǎng)與短。
數(shù)值部分的長(zhǎng)度取決于冪指數(shù)的值,當(dāng)冪指數(shù)長(zhǎng)時(shí),數(shù)值部分便短,反之亦然。所以,在圖4C中并未示出數(shù)值部分,而是在圖5A與5B中的表的m,m列中清晰可見(jiàn),其中第一個(gè)m示出十進(jìn)制記數(shù)的值而第二個(gè)m示出其數(shù)字的對(duì)應(yīng)物。如果s=1,則mh=1.0+m,否則mh=-2+m,如上所述。
為了直觀(guān),上面的例子是對(duì)一個(gè)七比特字長(zhǎng)描述的。如已提到過(guò)的,可以選擇相當(dāng)長(zhǎng)的字長(zhǎng),例如32比特。這樣,具有可變的代碼長(zhǎng)度是現(xiàn)實(shí)的。同樣現(xiàn)實(shí)的是,為了使電路系統(tǒng)較為簡(jiǎn)單,將從冪批數(shù)與數(shù)值部分的一個(gè)分界點(diǎn)上的過(guò)渡為比特的半字節(jié)的步長(zhǎng),例如4個(gè)比特為一個(gè)半字節(jié)。這樣做的優(yōu)點(diǎn)是不需要像以一個(gè)比特一個(gè)經(jīng)特過(guò)渡那樣多的代碼。在下面將說(shuō)明這樣一種精度譯碼器的一個(gè)例子。
圖6圖6中示出了圖2中的電路的一個(gè)詳細(xì)實(shí)施例。輸入/輸出總線(xiàn)V0,V1,V2,與V3是連接到一個(gè)輸入/輸出緩沖器20上的,該緩沖器20在它的時(shí)鐘控制輸入上所提供的外部時(shí)鐘信號(hào)CLOCK的每一個(gè)反相定時(shí)周期中分別將輸入上的信息傳輸給內(nèi)部總線(xiàn)V0i,V1i,V2i,與V3i,并在每時(shí)鐘周期中將內(nèi)部輸出總線(xiàn)V000T,V100T,V200T,V300T上的輸出傳輸給輸入/輸出總線(xiàn)V0,V1,V2,V3。
圖7A,7B與7C電路20的一個(gè)實(shí)施例及其定時(shí)示出在圖7A,7B與7C中。輸入/輸出緩沖器20本身又包含輸入緩沖器,每條輸入/輸出總線(xiàn)V0,V1,V2,V3一個(gè),以及相同數(shù)目的輸出緩沖器。為了不出現(xiàn)競(jìng)態(tài)問(wèn)題,時(shí)鐘信號(hào)不得重疊。這是以稍為世掉它們的前沿來(lái)安排的。
在圖7A中所示的時(shí)鐘信號(hào)CLOCK的第一相位中(在左方以一個(gè)括號(hào)標(biāo)記的反相的),從一個(gè)外部源來(lái)的輸入通過(guò)被控制到一個(gè)傳輸狀態(tài)的輸入緩沖器提供給ALU中的內(nèi)部的數(shù)據(jù)通路。該數(shù)據(jù)通過(guò)轉(zhuǎn)換成在輸出總線(xiàn)上提供的下一狀態(tài)的ALU中的內(nèi)部數(shù)據(jù)通路傳播。輸出緩沖器是設(shè)置為阻塞狀態(tài)的。
如圖7B所示,在時(shí)鐘信號(hào)CLOCK的時(shí)鐘周期的相位1中,(在圖7B左方以括號(hào)標(biāo)記的)電路20中的輸入緩沖器被控制到一個(gè)阻塞狀態(tài),且ALU中的內(nèi)部電路作為一個(gè)穩(wěn)定的多路復(fù)用器工作來(lái)控制這些信號(hào)將它們提供在輸入/輸出總線(xiàn)V0,V1,V2,V3上。電路20中的輸出緩沖器是設(shè)置在傳輸狀態(tài)中的。
圖7C中示出了在相位0時(shí)的一條多周期指令的狀態(tài)。在前面的相位1中ALU饋送給輸入/輸出總線(xiàn)V0,V1,V2,V3的內(nèi)容在相位0中由于電容效應(yīng)保持在它們上面,并從而得以通過(guò)輸入緩沖傳輸?shù)捷斎肟偩€(xiàn)V0i,V1i,V2i,V3i,這時(shí)輸入緩沖器是被控制到傳輸狀態(tài)而輸出緩沖器則被控制到阻塞狀態(tài),并且從那里通過(guò)轉(zhuǎn)換成下一狀態(tài)的ALU中的內(nèi)部數(shù)據(jù)通路進(jìn)行傳播。
根據(jù)一個(gè)較佳應(yīng)用,只用輸入表來(lái)控制及執(zhí)行一次計(jì)算,它是以改寫(xiě)輸入表中的內(nèi)容并將結(jié)果饋送給輸出來(lái)進(jìn)行的。該表可包括一個(gè)存儲(chǔ)的函數(shù)應(yīng)用或另一類(lèi)型的表。在一個(gè)函數(shù)應(yīng)用中的第一個(gè)元素是一條指令碼,其余元素為該指令的變?cè)?。這一較佳應(yīng)用取決于提供了依賴(lài)于輸入數(shù)據(jù)的一個(gè)功能硬件。然而,有關(guān)提交在總線(xiàn)V0i,V1i,V2i,V3i上的信息的類(lèi)型的信息最好是在來(lái)自控制電路CU的一個(gè)輸入EXT上給定的。
控制單元CU最好有關(guān)于輸入總線(xiàn)V0i,V1i,V2i,V3i上的字是不是表示指令和/或數(shù)字的信息,以及這些數(shù)字是浮點(diǎn)值還是整數(shù)的信息,并通過(guò)叫線(xiàn)EXT將這一信息交給ALU控制電路27。
然而,事實(shí)上可能正在進(jìn)行有用的應(yīng)用而其中的功能性表現(xiàn)并不需要,那時(shí)給予ALU控制驅(qū)動(dòng)電路的外部信息,例如來(lái)自控制電路CU而在輸入EXT上的,便可用于提供對(duì)一個(gè)計(jì)算的控制與操作。
一條指令是以在一步中改寫(xiě)指令到最終結(jié)果來(lái)執(zhí)行的,或者為了最終達(dá)到結(jié)果而在若干步中改寫(xiě)表的值。
當(dāng)進(jìn)行逐步改寫(xiě)時(shí),同一指令碼可能用于每一小中或者該表可能改寫(xiě)成一條新的指令碼,該表后面是跟隨著值的。
圖6圖6中示出的實(shí)施例中設(shè)置有下述處理單元來(lái)執(zhí)行不同的指令;
連接到總線(xiàn)V0i與V1i的一個(gè)第一比較器21,用于比較這兩條總線(xiàn)上的所有信息,即V0i>V1i,V0i=V1i,并在其連接到一個(gè)ALU控制驅(qū)動(dòng)器27的輸出cmp01上提供比較結(jié)果,即一個(gè)兩比特的值。連接到總線(xiàn)V0i與V1i上的一個(gè)第二比較器22,用于比較這兩條總線(xiàn)上的整個(gè)信息,即V0i>V1i,V0i=V1i,并在其連接到ALU控制驅(qū)動(dòng)器27的輸出cmp12上提供比較結(jié)果。連接到總線(xiàn)V2i與V3i上的一個(gè)第三比較器221,用于比較這兩條總線(xiàn)上的整個(gè)信息,即V0i>V1i,V0i=V1i,并在其連接到ALU控制驅(qū)動(dòng)器27的輸出cmp23上提供比較結(jié)果。連接到總線(xiàn)V1i與V2i上的一個(gè)第四冪指數(shù)比較器222,(每一條總線(xiàn)都是32比特的)比較在這兩條總線(xiàn)上的字的最高位部分,即se,c,e等部分,即除外數(shù)值部分與符號(hào)的所有其它信息。該比較器注意到se,c,e的上面描述的編碼。所以來(lái)自一個(gè)清度譯碼器PD的信號(hào)B1sb1是饋送給比較器222的一個(gè)獨(dú)立的輸入的。
一個(gè)第五比較器223對(duì)來(lái)自精度譯碼器的信號(hào)Besb1與Besb2進(jìn)行比較。結(jié)果信號(hào)指示Besb1與Besb2是否相等。
ALU控制電路27將來(lái)自這些比較器的比較結(jié)果饋送到其連接到控制單元CU(見(jiàn)圖1A)的輸出ASTATE上。這一結(jié)果也可用于控制下面要說(shuō)明的某些單元,因而如果適當(dāng),在輸出總線(xiàn)V100T,V200T,與V300T上提供有預(yù)先選定的字。
一個(gè)無(wú)意義譯碼器23連接到線(xiàn)V1i上并且檢測(cè)到V1\-i上的字表示一個(gè)整數(shù)),并且,如果在總線(xiàn)V1i上的字表示一個(gè)浮點(diǎn)值,則分別檢測(cè)是否在冪指數(shù)部分中的比特及數(shù)值部分中的比特是否是全“0”或“1”。關(guān)于這一點(diǎn)的信息是從指示輸入V1i的最低比特半字節(jié)的一個(gè)信號(hào)B1sb1得出的。這一信號(hào)提供在輸入總線(xiàn)上的字是表示整數(shù)還是表示浮點(diǎn)值的信息,及在浮點(diǎn)值的情況中提供冪指數(shù)與數(shù)值部分的分界的信息。這些檢測(cè)的結(jié)果是提供在連接到ALU控制電路27的一個(gè)輸入的車(chē)出insigi上的。
一個(gè)無(wú)意義譯碼器24連接到總線(xiàn)V2i上并檢測(cè)是否在V2i上的比特為全“0”或“1”(如果在總線(xiàn)V2i上的字表示一個(gè)整數(shù)),以及,如果在總線(xiàn)V2i上的字表示一個(gè)浮點(diǎn)值,則分另檢測(cè)在冪指數(shù)部分中的比特及在數(shù)值部分中的比特是否是全“0”或“1”。關(guān)于這一點(diǎn)的信息是從揭示輸入V2i的最代位比特組并提供與信號(hào)B1sb1相同類(lèi)型的信息的一個(gè)信號(hào)B1sb2中得出的。這些檢測(cè)的結(jié)果提供在連接到ALU控制電路27的一個(gè)輸入上的輸出insig2上。
一個(gè)無(wú)意義譯碼器25連接到線(xiàn)V3i上并且檢測(cè)是否在V3i上的比特為全“0”或“1”,(如果在總線(xiàn)V3i上上的字表示一個(gè)整數(shù)),以及如果在總線(xiàn)V3i上的字表示一個(gè)浮點(diǎn)值,則分別檢測(cè)在冪指數(shù)部分中的比特及在數(shù)值的比特是否為全“0”或“1”。關(guān)于這的信息是從信號(hào)B1sb1中得出的。這些檢測(cè)的結(jié)果是提供在連接到ALU控制電路27的一個(gè)輸入的輸出insig3上的。
每一個(gè)無(wú)意義譯碼器也是由來(lái)自ALU控制電路27的一個(gè)控制C5控制的,信號(hào)C5將在下面進(jìn)行說(shuō)明。
設(shè)置無(wú)意義譯碼器的目的是為了探測(cè)在參加要進(jìn)行的計(jì)算的輸入中的一個(gè)上的信息是否是無(wú)意義的。這一信息也在總線(xiàn)As\-TATE上提供給控制單元CU。一個(gè)來(lái)自無(wú)意義單元的至少一個(gè)輸入(例如指示全零)的最終狀態(tài)可被AKU控制電路27用來(lái)進(jìn)行某些類(lèi)型的運(yùn)算,這些運(yùn)算中包括若干次迭代。
一個(gè)指令譯碼器26連接到總線(xiàn)V0i上。當(dāng)ALU要執(zhí)行一個(gè)算術(shù)運(yùn)算時(shí),總線(xiàn)V0i上帶有指令。如果V0i上帶有指令或數(shù)據(jù)值,則V0i的譯碼結(jié)果通過(guò)輸出ins傳輸?shù)紸LU控制驅(qū)動(dòng)器27.單元23至27也分別由電路PD1,PD2與27中所生成的其它信號(hào)B1sb1,B1sb2與C5所控制的,這將在下面說(shuō)明。
加法器與減法器連接到總線(xiàn)V1i與V2i上的一個(gè)第一加法器28執(zhí)行加法V1i+V2i并將結(jié)果饋送給一個(gè)獨(dú)立輸出a1。結(jié)果的一個(gè)可能出現(xiàn)的進(jìn)位信號(hào)將饋送給連接到ALU控制驅(qū)動(dòng)器27的一個(gè)輸出gra1上。一個(gè)連接到總線(xiàn)V1i與V2i上上的減法器29執(zhí)行減法V1i-V2i并將結(jié)果饋送給一個(gè)獨(dú)立的輸出a2。結(jié)果的一個(gè)可能出現(xiàn)的進(jìn)位(錯(cuò)位)信號(hào)將饋送到連接到ALU控制驅(qū)動(dòng)器的一個(gè)輸出gra2上。連接到V1i與V2i上的一個(gè)第二加法器30執(zhí)行加法V1i與V2i并將結(jié)果饋送給一個(gè)獨(dú)立輸出a3。結(jié)果的一個(gè)可能出現(xiàn)的進(jìn)位信號(hào)將饋送到連接到ALU控制驅(qū)動(dòng)器27的一個(gè)輸出gra3上。
值部分OPm具有一個(gè)輸出n1而冪指數(shù)部分具有一個(gè)輸出n2。輸出n1與n2是連接到一個(gè)輸出總線(xiàn)選擇器的輸主上的,該選擇器也稱(chēng)作比特組獨(dú)立單位選擇器M1。一個(gè)在控制信號(hào)C211控制下提供可隨意選擇的四個(gè)“0”或四個(gè)“1”的精度組的0/1發(fā)生器40也連接到選擇器M1的一個(gè)附加輸入上。
冪指數(shù)部分OPe有該運(yùn)算數(shù)單元的輸入中的四個(gè)作為輸入,即V2i、與來(lái)自精度譯碼器PD2
的Bbias2、B\-coincr2、Bcoder2,以及還有一個(gè)來(lái)自電數(shù)值部分OPm的一個(gè)輸入n8。輸入V2i連接到一個(gè)加1器INC的輸入、一個(gè)減1器DEC的輸入及一個(gè)字選擇器M2的五個(gè)輸入之一。部件INC與DEC的輸出n6與n6分別連接到字選擇器M2的兩個(gè)輸入上。Bcoincr2、Bcoder2連接到字選擇器M2的其它兩個(gè)輸入。
運(yùn)算數(shù)單元r2中的部件INC及DEC各有一個(gè)進(jìn)位輸出gri2與grd2連接到ALU控制驅(qū)動(dòng)電路27。(運(yùn)算數(shù)單元r1同樣有一個(gè)加1部件進(jìn)位輸出gri1與一個(gè)減1部件進(jìn)位輸出grd1連接到ALU控制驅(qū)動(dòng)電路27)。進(jìn)位輸出是在時(shí)鐘周期的前一半中較早提供的。選擇器是在時(shí)鐘周期的前一半中較晚受到控制的,然后這一選擇器信號(hào)被提供去關(guān)心是否在某些加1或減1電路中有進(jìn)位這樣的事實(shí)。
到達(dá)第一選擇器的正常最大傳播延時(shí)大于半個(gè)周期。從而,這一配置不會(huì)引起額外的延時(shí)。然而,典型的傳播延時(shí)一般是小于半個(gè)周期的。所有信號(hào)在過(guò)渡到后半周期時(shí)受到判斷。在選擇器中沒(méi)有不必要的過(guò)渡。
每一個(gè)加法器也受來(lái)自ALU控制電路27的一個(gè)控制信號(hào)C5(下面要更詳細(xì)地說(shuō)明)以及信號(hào)B1sb1控制。這一信號(hào)提供有關(guān)在輸入總線(xiàn)上的字表示的是整數(shù)還是浮點(diǎn)值的信息,并且在浮點(diǎn)值的情況中用冪指數(shù)與數(shù)值部分之間的分界對(duì)準(zhǔn)在總線(xiàn)V1i與V2i上的值。這一信息是重要的,因?yàn)殡x散值,即整數(shù),是作為一個(gè)實(shí)體來(lái)計(jì)算的,但對(duì)于連續(xù)值,即浮點(diǎn)值,數(shù)值部分與冪指數(shù)部分是分別計(jì)算的。
一個(gè)第一符號(hào)與冪指數(shù)符號(hào)電路35分離出在總線(xiàn)V1i上的字的符號(hào),冪指數(shù)符號(hào),數(shù)值部分的最高位比特,以及數(shù)值部分的兩個(gè)最低位比特,并將其輸出sign,饋送到ALU控制驅(qū)動(dòng)電路27的一個(gè)輸入上,一個(gè)第二符號(hào)與冪指數(shù)符號(hào)電路36分離出總線(xiàn)V2i上的字的符號(hào),冪指數(shù)符號(hào),數(shù)值部分的最高位比特以及數(shù)值部分的兩個(gè)最低位比特部分并將其輸出sign2饋送到ALU控制驅(qū)動(dòng)電路27的一個(gè)輸入上。同樣,一個(gè)第三符號(hào)與冪指數(shù)符號(hào)電路37可連接到總線(xiàn)V3i上并將其輸出sign3饋送給ALU控制驅(qū)動(dòng)電路27的一個(gè)輸入。需要指出的是,當(dāng)符號(hào),冪指數(shù)符號(hào)與數(shù)值部分是作為在總線(xiàn)V1i與V2i上的提供的字的一部分提供時(shí),電路35與36是絕對(duì)需要的。在輸入總線(xiàn)上是浮點(diǎn)值字的情況中,它們是被ALU控制電路所利用的。在根據(jù)本發(fā)明的ALU的某些應(yīng)用中,電路37是可以省略的。在根據(jù)本發(fā)明的ALU的某些應(yīng)用中也可為總線(xiàn)V0\-i設(shè)置一個(gè)符號(hào)與冪指數(shù)符號(hào)電路(未示出)。
ALU控制驅(qū)動(dòng)器27以處理其輸入信號(hào)在輸出總線(xiàn)C1,C2,C3,C4,C5上提供數(shù)字輸出信號(hào)。ALU控制驅(qū)動(dòng)器27最好是布爾門(mén)陣列。輸出信號(hào)所提供的控制的例子將在下面進(jìn)一步說(shuō)明。
運(yùn)算數(shù)單元兩個(gè)運(yùn)算數(shù)單元r1與r2,各用于總線(xiàn)V1i與V2i上一個(gè)運(yùn)算數(shù),包含一個(gè)元素所獨(dú)具的所有算術(shù)性質(zhì)。每一個(gè)運(yùn)算數(shù)單元有若干信息輸入。其中三個(gè)是分別連接到三個(gè)單元28、29與30的三個(gè)獨(dú)立輸出a1、a2、與a3上的,其中兩個(gè)是分別連接到輸入總線(xiàn)V1i與V2i的,以及其中三個(gè)是分別連接到下面將進(jìn)一步說(shuō)明的一個(gè)獨(dú)立的精度譯碼器PD1或PD2的某些輸同上的。原則上,每個(gè)個(gè)信息輸入是一條包含與各輸入總線(xiàn)V0i,V1i,V2i,V3i相同數(shù)目的導(dǎo)線(xiàn)的總線(xiàn)。
運(yùn)算數(shù)單元r1的輸出是輸出總線(xiàn)V100T而運(yùn)算數(shù)單元r2的輸出是輸出總線(xiàn)V20T。
ALU控制單元27的一個(gè)第一輸出C1是一個(gè)控制運(yùn)算數(shù)單元r1中的內(nèi)部元件的合成控制信號(hào)。對(duì)單元r1的其它控制信號(hào)是由精度譯碼器PD1提供的。ALU控制單元27的一個(gè)第二輸出C2是一個(gè)控制運(yùn)算數(shù)單元r2中的內(nèi)部元件的合成控制信號(hào)。對(duì)單元r2的其它控制信號(hào)是由精度譯碼器PD2提供的。一個(gè)第三輸出C3是一個(gè)提供給第三運(yùn)算數(shù)單元r3的合成信號(hào),一個(gè)第四輸出C4是提供來(lái)控制一個(gè)多項(xiàng)式供應(yīng)電路31的(下面將進(jìn)一步說(shuō)明),一個(gè)第五輸出C5是提供來(lái)控制精度譯碼器PD1與PD2友及無(wú)意義電路23至25、加法器28、29與減法器29、及符號(hào)與冪指數(shù)符號(hào)電路35至37。
各運(yùn)算數(shù)單元r1或r2基本上具有相同的配置,所以只對(duì)其中一個(gè)r2進(jìn)行詳細(xì)說(shuō)明。在單元r1與r2中的對(duì)應(yīng)元件使用同一參照標(biāo)志。運(yùn)算數(shù)單元分成兩個(gè)組,冪數(shù)部分OP與數(shù)值部分OPm。數(shù)運(yùn)算數(shù)單元中的字選擇器M2的輸出n4直接連接到具有四個(gè)輸入的一個(gè)字選擇器M3的一個(gè)第一輸入上并且通過(guò)一個(gè)反相器INV連接到它的一個(gè)第二輸入上。輸出n2是冪指數(shù)部分OPe的輸出。輸入Bbias2連接到字選擇器M3的一個(gè)第三輸入。
數(shù)值部分OPm有五個(gè)輸入,即V2i、V1i、a1、a2與a3。所有這些輸入分別連接到一個(gè)具有五個(gè)輸入及一個(gè)輸出n8的字選擇器的各輸入上。輸出n8連接到冪指數(shù)部分OPe中的字選擇器M3的第四輸入上。輸出n8同時(shí)直接連接到一個(gè)字選擇器M5的三個(gè)輸入中的一個(gè)上。通過(guò)一個(gè)負(fù)移位器SH1連接到該字選擇器M5的一個(gè)第二輸入,(負(fù)移位器SH1將其輸入上的二進(jìn)制信息而較低位方向移位四步,即將該二進(jìn)制信息除以16),并通過(guò)一個(gè)正移位器SK2連接到一個(gè)第三輸入上,正移位器SH2將其輸入上的二進(jìn)制信息向較高位方向移位四步,即將其輸入上的二進(jìn)制信息乘以16。
字選擇器M5的輸出n7直接連接到一個(gè)字選擇器M6的六個(gè)輸入中的第一個(gè)上;通過(guò)一個(gè)負(fù)移位器SH3(將其輸入上的二進(jìn)制信息向較低位方向移位一步)連接到一個(gè)第二輸入;通過(guò)一個(gè)第二負(fù)移位器SH4(將其輸入上的二進(jìn)制信息向較低方向移位一步)連接到一個(gè)第三輸入;通過(guò)一個(gè)正移位器SH5(將其輸入上的二進(jìn)制信息向較高位方向移位一小)連接到一個(gè)第四輸入;并通過(guò)一個(gè)第二正移位器SH6(將其輸入上的二進(jìn)制信息向較高件方向移位一步)連接到一個(gè)第五輸入。一個(gè)內(nèi)部常數(shù)字發(fā)生器41在其控制輸入C210的控制下生成一個(gè)常數(shù)字Cword2并以其輸出連接到字選擇器M6的一個(gè)獨(dú)立輸入上。常數(shù)字發(fā)生器41能夠提供一組預(yù)先確定的零或一的組合,例如全“0”或全“1”或一個(gè)指示某一特定信息的字,該發(fā)生器是由向它發(fā)出的一個(gè)控制信號(hào)C210控制的。發(fā)生器只能存儲(chǔ)有限數(shù)量的字組合,供控制信號(hào)C10在它們中間選擇。字選擇器M6的車(chē)出便是數(shù)值部分OPm的輸出n1。
數(shù)值部分OPm實(shí)現(xiàn)下述功能。n8上的基本數(shù)值部分的值被字選擇器M4選下,結(jié)果在V2i、V1i、a1、a2、或a-3中之一。它可以用它本身的值或者向左移位(正移位)1、2、3、4、5、6比特或者向右移位(負(fù)移位)1、2、3、4、5、6比特或者可以用常數(shù)字發(fā)生器41所提供的字Cword2代替。
冪指數(shù)部分OPe實(shí)現(xiàn)下述功能。它的輸出可以是n8上的未稱(chēng)位的數(shù)值部分的值、V2i+1、反相V2i+1、V2i-1、反相V2i-1、Bco-incr2、反相Bco-incr2、Bco-decr2、反相Bco-decr2、或Bbias2之一。
在運(yùn)算數(shù)單元r2中,字選擇器M2至M6是獨(dú)立地由ALU控制驅(qū)動(dòng)電路27的輸出C2上的控制字C2控制的。從而,字選擇器M2是由控制字C2的部分C23控制的,字選擇器M3由控制字C2的部分C22,字選擇器M4由控制字的部分C26,字選擇器M5帽控制字的部分C25,以及字選擇器M6由控制字的部分C24。同樣,連接到選擇器M4的輸出n8的移位器SH1與SH2是由部分信號(hào)C28控制的,移位器SH3至SH6由部分信號(hào)C27,加1器INC與減1器DEC由部分信號(hào)C29,提供輸出Cword2的常數(shù)字發(fā)生器41由部分信號(hào)C210,以及0/1發(fā)生器40由部分信號(hào)C21\-1。
比特半字節(jié)獨(dú)立單位選擇器M1由一個(gè)包含控制字的部分C21、來(lái)自一個(gè)精度譯碼器PD2的一個(gè)輸出碼信號(hào)Bcde2、一個(gè)輸出最低位比特信號(hào)B1sbadj2、以及一個(gè)輸出冪指數(shù)信號(hào)Bexpadj2的組合多比特信號(hào)控制,最后提到的兩個(gè)信號(hào)是在處理電路42A與42B中分別從來(lái)自精度譯碼器PD2的輸出B1sb2與Bexp2中導(dǎo)出的。這些信號(hào)將在下面說(shuō)明與示出。處理電路42A與42B由來(lái)自ALU控制驅(qū)動(dòng)電路27的輸出C2的一部分的信號(hào)C25控制。精度譯碼器PD2具有作為一個(gè)輸入的總線(xiàn)V2i上的信息的exp符號(hào)與代碼部分,連同來(lái)自ALU控制驅(qū)動(dòng)器電路27的一個(gè)指示在總線(xiàn)V2i上的字表示一個(gè)整數(shù)還是一個(gè)浮點(diǎn)值的二進(jìn)制控制信號(hào)C53。控制信號(hào)C53是來(lái)自ALU控制電路27的輸出C5的一部分。
運(yùn)算數(shù)單元r1的精度譯碼器PD1以一種等價(jià)的方式工作。來(lái)自精度譯碼器PD1的信號(hào)B1sb2與Bexp1是在分別提供輸出B1sbadj1與Bexpadj1的處理電路43A與43B中處理的。處理電路42A、42B與43A、43B通常提供與來(lái)自它所隸屬于的譯碼器的輸入相同的輸出。然而,在某些時(shí)候,當(dāng)從加1器INC或減1器DEC提供了一個(gè)進(jìn)位時(shí),輸出信號(hào)將被移件,如下面將要進(jìn)一步說(shuō)明。這一移位將由分別來(lái)自ALU控制電路27的輸出C2或C1的部分信號(hào)C25或C15分別控制。
如果字V2i表示一個(gè)整數(shù),則精度譯碼器PD2(或PD1)提供完全無(wú)意義的輸出,例如這是以輸出到處理電路42A、42B(或43A、43B)的輸郵為全零來(lái)表示,如果字V2i(或V1i)表示一個(gè)浮點(diǎn)值,則提供下面作為Bexp2、B1sb2與Bexp1說(shuō)明的類(lèi)型的輸出(或者B1sb1、Bexp1與Bcde2)。
圖8
比特半字節(jié)獨(dú)立單位選擇器M1受控去分別選擇提供在輸出n1與n2并來(lái)自發(fā)生器40的部分信息。圖3中所示的類(lèi)型的一個(gè)字,即表示一個(gè)浮點(diǎn)值,示出在圖8的上部,但這是用一種分開(kāi)的矩形格式來(lái)表示比特組是如何形成的。參照標(biāo)志s、se、c、e、m、msb與1sb分別表示符號(hào)、冪指數(shù)符號(hào)、代碼、冪指數(shù)、數(shù)值部分、最高位比特與最低位比特。選擇器M1的輸入信息的分開(kāi)的拼合組合的例子示出在矩形形式的字的下方??刂频念?lèi)型像數(shù)據(jù)領(lǐng)域中所常用的那樣用助記碼表示,而這種助記碼的例子則示出在圖8中的左側(cè)。
每一個(gè)助記碼是自然地以包含諸如5或6比特的一個(gè)比特模式表示。比特模式最好是提供在到選擇器M1的控制總線(xiàn)C21上(以及在到M1的控制總線(xiàn)C11上)。如果適當(dāng),處理電路42A與42B對(duì)來(lái)自精度譯碼器的信號(hào)B1sb2與Bexp2進(jìn)行移位從而選擇器M1的控制輸入分別提供信號(hào)B1sbadj1與Bexpadj2。因此,選擇器M1是受提供在其輸入上的若干信號(hào)控制的,但只對(duì)通過(guò)一個(gè)布爾門(mén)陣列的輸入組合控制信號(hào)中的一定比特組合作出反應(yīng),每一種組合提供一種來(lái)自輸入n1、n2并從I/O電路40輸出的組合輸郵的一個(gè)特定的組合,如在圖8中明顯地看到的。
運(yùn)算數(shù)單元r1與r2之間的差別如上所述,運(yùn)算數(shù)單元r1的配置基本上與運(yùn)算數(shù)單元r2相同。下面是兩個(gè)運(yùn)算數(shù)單元r1與r2之間有差別輸入V1與V2的位置互換。常數(shù)Cword1與常數(shù)Cword2無(wú)關(guān)。電路r1是由ALU控制驅(qū)動(dòng)電路的分成獨(dú)立的控制字部分Cl2至Cl11的控制輸出C1控制的(而不是由控制輸出C2),并且是由具有V1isecli,即V1i的冪指數(shù)符號(hào)與代碼部分,作為一個(gè)輸入的精度譯碼器PD1控制的(而不是具有Vlisecli,即V1i的冪指數(shù)符號(hào)與代碼部分,作為一個(gè)輸入的精度譯碼器PD2)。
精度譯碼器PD1向運(yùn)算數(shù)單元r1提供輸出信號(hào)Bco-decr1、Bco-incr1、Bbia\-s1、Bexp1、B1sb1、Bmsb1、與Bcde1、并向ALU控制驅(qū)動(dòng)電路27提供一個(gè)指示是否代碼表示冪指數(shù)的最大長(zhǎng)度的信號(hào)Bcomax1,及一個(gè)指示是否代碼表示冪指數(shù)的一個(gè)最小長(zhǎng)度的信號(hào)Bcomin1。精度譯碼器PD2向運(yùn)算數(shù)單元r2提供輸出信號(hào)Bco-decr1、Bco-incr1、Bbias1、Bexp1、B1sb1、Bms\-b1、與Bcde1,并向ALU控制驅(qū)動(dòng)電路27提供一個(gè)指示代碼是否表示冪指數(shù)的最大長(zhǎng)度的信號(hào)Bcomax\-1與一個(gè)指示代碼是否表示冪數(shù)的最小長(zhǎng)度的信號(hào)Bcomin1。為了在輸出上與在正常的移件中使新的精度得到反映,分別來(lái)自精度譯碼器PD1或PD2的輸出B1sb、Bexp必須與數(shù)值部分同樣地移位,這是分別在信號(hào)C25或C15的一部分的控制下由電路42A與42B或43A與43B控制進(jìn)行的,如上所述。
每一個(gè)精度譯碼器在其輸入上被饋送一個(gè)信號(hào)C53,分別指示在總線(xiàn)V1i或V2i上的字表示一個(gè)整數(shù)還是一個(gè)浮點(diǎn)值。信號(hào)C53是來(lái)自ALU控制驅(qū)動(dòng)電路27控制電路23至30的輸出C5的信號(hào)的一部分。
來(lái)自精度譯碼器的輸出信號(hào)將在下面進(jìn)一步詳細(xì)說(shuō)明。
乘法與除法,運(yùn)算數(shù)單元r3第三運(yùn)算數(shù)單元r3,被乘數(shù)/商功能單元,是具有與單元r1與r2不同的類(lèi)型的并且是在大多數(shù)情況下為乘法與除法運(yùn)算提供的。制字C4的控制下被控成切斷狀態(tài)。從而,電路26′的輸出V000T通常具有與總線(xiàn)V0i相同的信息。
數(shù)值A(chǔ)LU的自檢可以設(shè)置一個(gè)所謂的多項(xiàng)式發(fā)生器31。該我項(xiàng)式發(fā)生器生成用于A(yíng)LU自檢目的測(cè)試碼。發(fā)生器31使用包括總線(xiàn)V0i,V1i,V2i,V3i上的所有信息的整個(gè)閉包作為目變量并向到總線(xiàn)V000T′、V100T′、V200T′、V300T′、的目標(biāo)寄存器提供數(shù)值。
當(dāng)進(jìn)行一次自檢時(shí),ALU控制單元27以信號(hào)C4控制緩沖器電路26′,以及以信號(hào)C11控制運(yùn)算數(shù)單元r1中的選擇器M1;以信號(hào)C21控制運(yùn)算數(shù)單元r2中的選擇器M1,從信號(hào)C3 -1控制運(yùn)算數(shù)單元r3中的選擇器M12以斷開(kāi)在總線(xiàn)(分別為V000T、V100T、V200T、V300T、)上的輸出,并接通多項(xiàng)式發(fā)生器輸出(它們通常是斷開(kāi)的)。以這一方法,是多項(xiàng)式發(fā)生器輸出V000T′、V100T′、V200T′、V300T′而不是來(lái)自單元26′、r1、r2與r3的總線(xiàn)V000T、V100T、V200T、V300T上的輸出接通提供給輸入/輸出總線(xiàn)V0、V1、V2與V3的信息。
三態(tài)驅(qū)動(dòng)器39來(lái)自?xún)?nèi)部電路26′、r1、r2與r3的輸出總線(xiàn)以及多項(xiàng)式電路31的輸出總線(xiàn)V000T′、V100T′、V200T′、V300T′連接到一個(gè)輸出三態(tài)驅(qū)動(dòng)器39的不同輸入上。三態(tài)驅(qū)動(dòng)器39具有與圖7A至7C中所示的緩沖器幾乎相同的配置并且是由ALU控制驅(qū)動(dòng)電路的輸出C4控制或者將來(lái)自?xún)?nèi)部電路的內(nèi)部緩沖器接通,即傳導(dǎo)的,而將多項(xiàng)式電路31的輸出總線(xiàn)的內(nèi)部緩沖器切斷,即阻塞,這是正常狀態(tài),或者在儉測(cè)周期情況中的其它方式。
圖9與精度譯碼器PD1與PD2圖9示出了在一條輸入總線(xiàn)V1i或V2i上一個(gè)表示浮點(diǎn)值的字的例子中來(lái)自一個(gè)精度譯碼器的輸出信號(hào)的一個(gè)實(shí)施例。用于浮點(diǎn)值的精度譯碼器的輸出將結(jié)合這一例子說(shuō)明。
下面要進(jìn)一步說(shuō)明的精度譯碼器的變?cè)歉↑c(diǎn)值說(shuō)明的冪指數(shù)符號(hào)與代碼部分,并提供了指示該字表示一個(gè)浮點(diǎn)值的控制信號(hào)。它是1+4比特寬的。
代碼比特段中不同的代碼對(duì)應(yīng)于不同的精度(數(shù)值部分長(zhǎng)度及冪指數(shù)長(zhǎng)度0。冪指數(shù)的最低半字節(jié)1sb(見(jiàn)圖8)是隨精度變化的。這一半字節(jié)就是圖9中的示例性字中具有比特模式0100的那個(gè)半字節(jié)。二進(jìn)制信號(hào)B1sb中每一精度半字節(jié)有一個(gè)比特,即8個(gè)比特,并且除了最低精度半字節(jié)以外對(duì)所有半字節(jié)都為“0”。
一個(gè)代碼及其反碼格式表示相同的精度,其中對(duì)應(yīng)的冪指數(shù)符號(hào)是互補(bǔ)的,如下面以表格形式示出的。
1sb的半字節(jié) 代碼,包括前導(dǎo)的冪指數(shù)符號(hào)0(包括字的1sb) 不用 不用1 1 1111 +0 00002 1 1110 +0 00013 1 1101 +0 00104 1 1100 +0 00115 1 10- +0 01-6 1 0- +0 17(包括字的msb) i 不用 不用上表中所示代碼把冪指數(shù)的符號(hào)作為一個(gè)元素。當(dāng)這一元素為真時(shí),所有其它比特以它們?cè)瓨邮褂?,但?dāng)它為偽時(shí),則它們被反相。
如上所述,精度譯碼器提供布爾值序列,即若干輸出字,它們是饋送到ALU中不同單元的,諸如運(yùn)算數(shù)單元,ALU控制驅(qū)動(dòng)電路等。對(duì)于表示浮點(diǎn)值的一個(gè)字,信號(hào)B1sb可能只為半字節(jié)1至6中的一個(gè)提供一個(gè)真比特而其余的比特都是偽比特。對(duì)半字節(jié)0與7提供的總是偽比特。
八個(gè)布爾值的一個(gè)序列(每一精度半字節(jié)一個(gè))以一個(gè)真比特指示屬于代碼/冪指數(shù)部分的精度半字節(jié),如圖9中Bexp一邊所示。
在所示的例子中由于變化的代碼長(zhǎng)度,最高位冪指數(shù)比特有三個(gè)可能的位置。
如圖9所示,這里Bmsb是三個(gè)布爾值指示那一個(gè)位置有一個(gè)真比特(其它為偽比特)。因此,在所示的例子中Bmsb為001指示代碼長(zhǎng)度是最大的,例如1sb1至4的半字節(jié)(見(jiàn)上面的表)。010指示半字節(jié)5而100指示半字節(jié)6。
在圖9的例子中,Bcde是對(duì)應(yīng)于兩個(gè)最高位精度半字節(jié)中所有比特的8個(gè)布爾值。Bcde從最低位代碼比特到冪指數(shù)符號(hào)為真(“1””。
單元r3在乘與除功能中執(zhí)行必要的移件與置位。它是由提供在A(yíng)LU控制單元27的輸出C3上的一個(gè)控制字控制的。
被乘數(shù)/商單元r3有若干輸入,在其中的第一個(gè)上提供總線(xiàn)V2i上的信息,第二個(gè)上提供總線(xiàn)V3i上的信息,及在第三個(gè)上提供來(lái)自常數(shù)字發(fā)生器44的一個(gè)輸出,該輸出是在來(lái)自電路27的輸出C3的一個(gè)部分信號(hào)C33的控制下從存儲(chǔ)在發(fā)一器中的若干比特模式中提供一個(gè)選中的比特模式。
單元r3是用于在復(fù)雜的數(shù)值計(jì)算中計(jì)算一個(gè)變?cè)?。其輸出連接到總線(xiàn)V300T。
輸入V2i被饋送到一個(gè)字選擇器M11的一個(gè)第一輸入上。輸入V3i是直接饋送到該字選擇器M11的一個(gè)第二輸入上,通過(guò)一個(gè)由信號(hào)部分C35控制控制的正一比特移位器SH11饋送到一個(gè)第三輸入,通過(guò)一個(gè)第一負(fù)一比特移位器SH12到一個(gè)第四輸入,以及通過(guò)一個(gè)第二負(fù)一比特移位器SH13到一個(gè)第五輸入,最后提到的兩個(gè)比特移位器是由信號(hào)C33、Bmsb1、N1sb1控制的。發(fā)生器44的輸出是連接到字選擇器M11的一個(gè)第六輸入上的。要提供給一個(gè)第二字選擇器M12的一個(gè)輸入的字選擇器M11的輸出是由來(lái)自ALU控制單元27的控制字C3的一個(gè)控制字部分C32選定的。
M12是將選擇器11販輸出提供給輸出總線(xiàn)V3oUT的一個(gè)總線(xiàn)連接,但它能在一個(gè)控制字部分C31的控制下被控成切斷狀態(tài),如下面將說(shuō)明的。
一個(gè)緩沖器電路26′連接到總線(xiàn)V0i上。電路26′是將V0i提供到其輸出的一個(gè)總線(xiàn)連接,但它能在來(lái)自ALU控制電路27的一個(gè)控這里Bbias是一個(gè)用于調(diào)整浮點(diǎn)值表示的32比特字。除了最低位冪指數(shù)比特以外,所有比特均為偽(“0”)。
精度譯碼器也分別提供加1與減1后的碼Bcoincr與Bcodecr,它們是在精度變動(dòng)后用在某些運(yùn)算中的。對(duì)于信號(hào)Bcoincr與Bcodecr只示出了延伸在字中的只指數(shù)符號(hào)與代碼部分上的前面幾個(gè)比特。然而,字是最好32比特長(zhǎng)的。其余的比特最好全為“0”。
兩個(gè)布爾值Bcomax與Bcomin指示代碼是否表示一個(gè)最大或最小的冪指數(shù)長(zhǎng)度。在圖9中所示的例子中,在半字節(jié)4中提供了最低位指數(shù)比特。從而布爾值Bcomax與Bcomin均為“0”。如果在半字節(jié)1中提供了最低位指數(shù)比特,則Bcomin為“1”,而如果半字節(jié)6中提供了最低位冪指數(shù)經(jīng)特,則Bcomax為“1”。
圖9中示例的信號(hào)是在浮點(diǎn)值的情況中所提供的信號(hào)。對(duì)于一個(gè)整數(shù),信號(hào)B1sb、Bexp、及Bcde全都為偽,即只有“0”。需要指出的是,當(dāng)然有可能用另外的比特組合的集來(lái)指示一個(gè)整數(shù);其條件是這些信號(hào)的一個(gè)十分特別的比特組合表示一個(gè)整數(shù)。
精度譯碼器的一個(gè)實(shí)施例將結(jié)合圖13進(jìn)行說(shuō)明。
浮點(diǎn)值加法的例子上面結(jié)合圖2的說(shuō)明給出了一個(gè)整數(shù)乘法運(yùn)算的例子。為了展示根據(jù)本發(fā)明的ALU的功能,這里給出了兩個(gè)浮點(diǎn)值的一個(gè)加法運(yùn)算的例子。
如上所述,連續(xù)編碼方案沒(méi)有冗余,即沒(méi)有為檢測(cè)目的增加數(shù)據(jù)。所以,諸如對(duì)齊與精度調(diào)整這樣的正常操作不可能以直接的方法進(jìn)行。為了解決這一問(wèn)題,在V0i上的信息中包括了一種狀態(tài)。它們定義了在總線(xiàn)V1i或V2i上的運(yùn)算數(shù),下面稱(chēng)作a運(yùn)算數(shù)與b運(yùn)算數(shù),是怎樣編碼的。這三種狀態(tài)是Na或b運(yùn)算數(shù)中沒(méi)有一個(gè)具有一個(gè)改變的代碼,它們都是規(guī)范化的。
Aa運(yùn)算數(shù)具有改變了的代碼,它不是規(guī)范化的。
Bb運(yùn)算數(shù)具有改變了的代碼,它不是規(guī)范化的。
數(shù)值部分的解釋?zhuān)瑘D10圖10示出了對(duì)數(shù)值部分的一個(gè)比特序列1010的一個(gè)規(guī)范化碼與一個(gè)改變的碼的解釋的例子。為規(guī)范化碼提供了一個(gè)虛擬的1,該碼給出結(jié)果1.625,而對(duì)于改變的碼則不提供虛擬的比特,該碼給同結(jié)果0.625。
圖11與12,對(duì)準(zhǔn)連續(xù)加法,即兩個(gè)浮點(diǎn)值的加法,的第一步是對(duì)準(zhǔn)在輸入總線(xiàn)上的運(yùn)算數(shù)(如果指數(shù)不相等)。如果值a與b要相加,而a=1.5 231與b=-1.125 233,值a的冪指數(shù)較值b的為小,所以在實(shí)際相加運(yùn)算前必須先對(duì)準(zhǔn),如圖11與12所示,示出了示例值a的一個(gè)第一與一個(gè)第二對(duì)準(zhǔn)周期。
示出的全子是選擇為使用三種情況來(lái)對(duì)準(zhǔn)兩個(gè)運(yùn)算數(shù)的。值a的冪指數(shù)增加1而其數(shù)值部分則除以29向較低位一步)。為了使a具有與b相同的冪指數(shù)(33),這一操作要進(jìn)行兩次。
這一例子是這樣選擇的,使得三種情況用于對(duì)準(zhǔn)兩個(gè)變?cè)?.在一個(gè)對(duì)準(zhǔn)周期中的初始值是以一個(gè)二進(jìn)制組合表示的,其中的冪指數(shù)值是代碼c的最高可能值并且冪指數(shù)符號(hào)是負(fù)的。注意不論冪指數(shù)的符號(hào)是正還是負(fù),一個(gè)數(shù)的精度不變的。在步進(jìn)冪指數(shù)時(shí),精度必定會(huì)增加。冪指數(shù)部分增加1,然后將數(shù)值部分左移適當(dāng)數(shù)目的步數(shù)。
2.在一個(gè)對(duì)準(zhǔn)周期中的初始值的冪指數(shù)是這一周期中的代碼c的最高可能值,并且冪指數(shù)符號(hào)是正的。在步進(jìn)冪指數(shù)時(shí),精度必定會(huì)降低。冪指數(shù)部分增加1,然后將數(shù)值部分右移適當(dāng)數(shù)目的步數(shù)。
3.對(duì)準(zhǔn)周期中的初始值的冪指數(shù)值不是最高的可能值。冪指數(shù)被步進(jìn)而數(shù)值分則被除以2。
在本例中的值a的第一對(duì)準(zhǔn)周期中,即從圖11中上方的比特表示改變到其下方的比特表示,精度碼是向右增加一個(gè)比特,由于當(dāng)冪指數(shù)增加時(shí)它是最大值這一事實(shí),即包含全“1”,一個(gè)進(jìn)位被傳播到精度碼中,使之也加1。此后該代碼被解釋為增大了并加和節(jié)一個(gè)比特(見(jiàn)上表中半字節(jié)5中的代碼)。這實(shí)際上意味著冪指數(shù)長(zhǎng)度在其左方減少了一個(gè)比特而在其右方增加了一個(gè)精度半字節(jié)(4比特)。冪指數(shù)值也增加了1。數(shù)值部分先右移四步(精度降低)然后右移一步(除以2)。當(dāng)數(shù)值部分半字節(jié)向較低位移位一步時(shí),虛擬的“1”移進(jìn)數(shù)值部分中,因而在第一對(duì)準(zhǔn)周期以后在其最高位精度半字節(jié)中具有數(shù)字組合1100。
對(duì)準(zhǔn)的硬件執(zhí)行這一操作是在A(yíng)LU中的一個(gè)周期中在運(yùn)算數(shù)單元r1中完成的(如果值a是在總線(xiàn)V1i上提供的)。冪指數(shù)值是原始值a的表示中的最高可能值。冪指數(shù)值符號(hào)為正,這意味著所有的冪指數(shù)比特都是1。當(dāng)該冪指數(shù)被加1器INC增加1時(shí),所有的比特都變成0而加1器INC向ALU控制驅(qū)動(dòng)電路27饋送一個(gè)進(jìn)位gri1,AKU控制驅(qū)動(dòng)電路27改變二進(jìn)制輸出部分信號(hào)C15使之控制處理單元43A與43B將來(lái)自精度譯碼器PD1的信號(hào)向左移位。進(jìn)位信號(hào)gri1同時(shí)被傳送到代碼部分中,如上所述。
在進(jìn)行一次減1的情況中,同樣的討論也適用于減1器DEC,但如果提供了一個(gè)進(jìn)位(借位grdj,j為1或2,則部分信號(hào)Cj5分別控制處理單元43A與43B或42A與42B進(jìn)行一個(gè)向左移位(2)。需要指出的是,加1器與減1器是在時(shí)鐘信號(hào)的第一個(gè)半周期的第一部分中提供它們的輸出,從而在這一半周期中能夠較早地向處理單元提供控制信號(hào)。對(duì)所有運(yùn)算數(shù)單元的選擇器的控制是在時(shí)鐘周期的第一個(gè)半周期中的后一部分中提供的。在時(shí)鐘周期的后一部分中精度譯碼器的輸出是不變的。當(dāng)內(nèi)部輸入總線(xiàn)V0i,V1i,V2i與V3i一有穩(wěn)定的值便立即將它們穩(wěn)定化。如上所述,在時(shí)鐘周期的前一半中,在總線(xiàn)連接20中的輸入緩沖器分別讓來(lái)自外部總線(xiàn)V0i,V1i,V2i與V3i的數(shù)據(jù)通過(guò),而輸出緩沖器則將來(lái)自運(yùn)算數(shù)單元的輸出數(shù)據(jù)與外部總線(xiàn)隔離。在時(shí)鐘周期的第二個(gè)半周期中,輸入緩沖器保持內(nèi)部輸入總線(xiàn)V0i,V1i,V2i與V3i上的值,而新的輸出數(shù)據(jù)則被傳送到外部總線(xiàn)。這意味著精度譯碼器只在下一個(gè)時(shí)鐘周期中受新的輸出數(shù)據(jù)的影響。
數(shù)值部分是被運(yùn)算數(shù)單元r1中的左移一個(gè)精度半字節(jié)單元SH2左移一個(gè)精度半字節(jié)的9即除以16)。最低位冪指數(shù)精度半字節(jié)是由精度譯碼器PD1提供的一個(gè)比特矢量信號(hào)B1sb1指示的。這一半字節(jié)的右移是由處理單元43A與43B執(zhí)行的。為了由移位一步單元SH5將數(shù)值部分從一個(gè)新的位置上再移位一步(除以2),單元43A與43B將B1sb1矢量向右調(diào)整。調(diào)整后的矢量信號(hào)B1sbadj1用于從數(shù)值部分OPm與冪指數(shù)部分OPe中選擇輸出。為了補(bǔ)充完整冪指數(shù)部分,將來(lái)自電路40的一個(gè)4個(gè)“0”組成和半字節(jié)插入r1作為冪指數(shù)部分中的新的最低位精度半字節(jié)(見(jiàn)圖8cef-m/cef-m)。
比特值“1”,在一個(gè)規(guī)范化代碼中的虛擬比特,被移位進(jìn)入新的最高位數(shù)值位置中,這相當(dāng)于一個(gè)規(guī)范化正數(shù)值部分的除法((1.0+m)/2)。新的數(shù)值部分不是規(guī)范化的。因此值a得到的是一個(gè)改變代碼(在冪指數(shù)與數(shù)值區(qū)域之間有一個(gè)“0”作為虛擬比特)。
在第二對(duì)準(zhǔn)周期中,示出在圖12中,沒(méi)有必要改變精度,即在冪指數(shù)中的比特?cái)?shù)不需要9改變。只是將冪指數(shù)部分增加1,而代碼c保持不變。因?yàn)閮缰笖?shù)在這一對(duì)準(zhǔn)周期的原始值的精度狀態(tài)中并不是最高可能值,所以沒(méi)有進(jìn)位信號(hào)被提供來(lái)改變?cè)摯a。
數(shù)值部分右移一步(SH5)。由于現(xiàn)在的移位是從一個(gè)改變的代碼提供的,在冪指數(shù)與數(shù)值部分之間不存在虛擬的“1”,所以移主一個(gè)虛擬的“0”而在最高位精度半字節(jié)中的數(shù)字組合將是0110。從而,經(jīng)過(guò)對(duì)準(zhǔn)以后,值a具有一個(gè)改變的代碼并以0.375×233表示。
為了得到一個(gè)規(guī)范化的數(shù)值部分,連續(xù)加法的第二步是規(guī)范化變?cè)皇羌臃ǖ慕Y(jié)果。a+b的結(jié)果是0.375×233-1.125×233=0.750×233,這不是一個(gè)規(guī)范化的結(jié)果。因此,在加法以后將隨著進(jìn)行一個(gè)變?cè)?guī)范化,它給出規(guī)范化的和-1.5×232(=2(-0.750×233/2))。
浮點(diǎn)值的乘法是類(lèi)似于繪畫(huà)科2的描述在上面說(shuō)明的整數(shù)乘法執(zhí)行的。然而,為了減少時(shí)間延遲,使用的是二個(gè)比特而不只是一個(gè)比特。
在乘法循環(huán)中,用于數(shù)值部分的等式是sma smb=smv2ismv3i,其中sm表示由符號(hào)、一個(gè)虛擬比特與數(shù)值部分比特組成的真實(shí)的帶符號(hào)的數(shù)值部分的值。
V1i字在循環(huán)中沒(méi)有冪指數(shù)符號(hào)、精度代碼或冪指數(shù)值。反之,其數(shù)值部分比運(yùn)算的實(shí)際精度長(zhǎng)。數(shù)值部分的前導(dǎo)比特是這樣編碼的使得整個(gè)字V1i是一個(gè)等于部分?jǐn)?shù)值部分的一個(gè)離散值。符號(hào)比特具有積的正確的值。
字V3i是被乘數(shù)。它是不改變的。
字V3i具有其原來(lái)的冪指數(shù)符號(hào)、精度、及冪指數(shù)值。然而,數(shù)值部分被附加在符號(hào)比特上構(gòu)成一個(gè)比該字的數(shù)值部分長(zhǎng)一個(gè)比特的精度。在這一情況中的數(shù)值部分是編碼為一個(gè)不帶符號(hào)比特的離散的值。符號(hào)比特可從字V1i的符號(hào)中導(dǎo)出。
在乘法循環(huán)中字V1i是右移的。字V3i也是每次右移兩個(gè)比特的(SH13)。當(dāng)V3i中所有的經(jīng)特都用盡后,循環(huán)便結(jié)束了。然后規(guī)范化其結(jié)果。
我們深信從上面給出的ALU運(yùn)算的示例描述中,本領(lǐng)域的技術(shù)人員可以容易地推導(dǎo)出其它類(lèi)型的運(yùn)算可以如何地由ALU處理。
圖13,精度譯碼器精度譯碼器的原理性結(jié)構(gòu)示出在圖13中。需要指出的是,可以對(duì)所示的結(jié)構(gòu)進(jìn)行修改,例如為了加快運(yùn)算速度。這些只是構(gòu)造性特性,對(duì)于本領(lǐng)域的技術(shù)人員是明顯的,所以將不在這里說(shuō)明。這意味著實(shí)際的電路可以具有與圖13所示的配置十分有同的其它配置,但它將具有與該圖中所明白表示的同樣的原理性功能。
輸入信號(hào)Vji的冪指數(shù)符號(hào)與代碼部分,其中j是1或2兩者之一,被饋送到一個(gè)重編碼電路50,在精度譯碼器的這一原理型實(shí)施例中,電路50在其輸出上提供示出在上面的表中的包括前導(dǎo)的冪指數(shù)符號(hào)的代碼的變型之一,例如左邊的一個(gè),諸如此類(lèi)的變型被提供在其輸入上。另一方面,兩種變型可以提供在重編碼電路50的輸出上,但永遠(yuǎn)具有相同的次序,例如,上表中分配給它的線(xiàn)中的左邊的變型以及在分配給它的線(xiàn)上的右邊的下一個(gè)。輸出被饋送到一個(gè)比特序列比較器電路51,它監(jiān)視在其輸入上的比特組合并提供指示代碼的長(zhǎng)度的數(shù)字信號(hào)Bmsb,見(jiàn)圖8,即在所選定的例子中是一比特還是二比特還是三比特長(zhǎng)。它同樣提供信號(hào)Bcde。
六個(gè)比特序列比較器電路52至57同樣連接到重編碼電路50的輸出上,每一個(gè)適用于對(duì)其特定的編碼作出反應(yīng)在輸出上提供一個(gè)“1”,如果在來(lái)自重編碼電路50的輸出線(xiàn)上的比特模式是與它適配于作出反應(yīng)的模式相同則提供一個(gè)輸出“1”,即一個(gè)真信號(hào),其它電路則正在提供輸出“0”,即一個(gè)偽信號(hào)。信號(hào)B1sb中的第一與最后一個(gè)經(jīng)特永遠(yuǎn)是“0”。所以,兩條線(xiàn)58與59直接連接到一條具有比特“0”的線(xiàn)上。
線(xiàn)58、電路52至57的輸出以及線(xiàn)59是提供總線(xiàn)B1sb的,對(duì)每一精度半字節(jié)它有一個(gè)比特,對(duì)每一精度半字節(jié),總線(xiàn)Bbias有中個(gè)比特。每一個(gè)半字節(jié)包括三個(gè)比特“0”以及對(duì)于該特定半字節(jié)的信號(hào)B1sb的比特。從而各半字節(jié)的線(xiàn)中的三條是連接到“0”的而第四條則連接到輸出B1sb的的適當(dāng)?shù)木€(xiàn)上。輸出Bco-min是連接到電路52的輸出上的而輸出Bco-max則連接到電路57的輸出上。
輸出Bexp的比特模式從最低位向上直到輸出B1s\-b中有一個(gè)“1”的位置為止全部為“0”,而從這一位置開(kāi)始則所有比特都是“1”。在線(xiàn)59上的最低位比特將永遠(yuǎn)是一個(gè)“0”,但從次低位比特起有可能是一個(gè)比特“1”。所以,一個(gè)或門(mén)60有一個(gè)連接到電路57的輸出上的一個(gè)輸入而其余輸入則連接到電路56的輸出上。電路57珠輸出連接到信號(hào)Bexp的次低位置線(xiàn)上?;蜷T(mén)60的輸出連接到輸出Bexp的更次低位置的線(xiàn)上。因此,如果電路57的輸出碰上是一個(gè)“1”,則這將同樣在從或門(mén)60提供一個(gè)輸出比特“1”。只在電路567與56兩者的輸出均為“0”時(shí),或門(mén)60的輸出才將是“0”?;蜷T(mén)60的輸出連接到另一或門(mén)61的一個(gè)第一輸入,而或門(mén)61的另一個(gè)輸入是連接到電路55的輸出上的?;蜷T(mén)61的輸出連接到輸出Bexp的第三最低位置的線(xiàn)上并連接到一個(gè)或門(mén)62的一個(gè)第一輸入上,或門(mén)62的另一個(gè)輸入連接到電路54的輸出,等等?;蜷T(mén)的災(zāi)種級(jí)聯(lián)耦合在所有與輸出B1sb給出“1”的位置具有相同位次或較高位次的位置上提供“1”。
字Bcodecr的符號(hào)、冪指數(shù)符號(hào)與代碼部分具有第一條線(xiàn)連接到提供一個(gè)“1”的一個(gè)單元,其第二條線(xiàn)連接到連接在B1sb的第六條上的一個(gè)反相器161的輸入是連接到B1sb的第五與直接連接到B1sb的第二與第三條線(xiàn)上。字Bcodecr的符號(hào)、冪指數(shù)符號(hào)、與代碼部分的這些線(xiàn)是連接到為了在其輸出上提供一個(gè)32比特的字而向輸入的字上加“0”的一個(gè)比特補(bǔ)充電路66的輸入上的。
字Bcoinci的符號(hào)、冪指數(shù)符號(hào)與代碼部分具有其第一與第二條線(xiàn)連接到提供一個(gè)“1”的單元上,其第三條線(xiàn)連接連接到連接在B1sb的第七條線(xiàn)上的一個(gè)反相器163上,其第四條線(xiàn)連接到一個(gè)或門(mén)164該或門(mén)的輸入連接到B1sb的第三與條四條線(xiàn)上,以及其第五條線(xiàn)直接連接一個(gè)或門(mén)165,該或門(mén)的輸入是連接到B1sb的第三與第五條線(xiàn)上的。字Bcoincr的符號(hào)、冪指數(shù)符號(hào)及代碼部分的這些線(xiàn)是連接到為了在其輸出上提供一個(gè)32比特的字而向輸入的字上加“0”的一個(gè)經(jīng)特補(bǔ)充電路67的輸入上的。
圖14A至14C,加法器圖14A至14C示出了一個(gè)加法器的一個(gè)實(shí)施例,例如圖6中電路28至30中的一個(gè)。加法器有兩個(gè)變?cè)猘與b。變?cè)猘提供在總線(xiàn)V1i上而變?cè)猙在總線(xiàn)V2i上上。這些變?cè)蔷幋a為一個(gè)浮點(diǎn)值或者一個(gè)整數(shù)的。來(lái)自圖6中的電路27與總線(xiàn)B1sb1與B1sb2的輸出C5的信號(hào)C51,對(duì)整數(shù)為“0”而對(duì)浮點(diǎn)值為“1”,指示這一事實(shí),C5對(duì)于整數(shù)為全“0”而對(duì)于浮點(diǎn)值則有一比特為“1”。如圖14A所示,該加法器是一個(gè)以8個(gè)級(jí)聯(lián)耦合部件G1、G1、…、Gi、…、G7構(gòu)成的二進(jìn)制加法器,即一個(gè)部件用于一個(gè)精度半字節(jié)。
從上面對(duì)加法運(yùn)算的說(shuō)明可到,在a與b是浮點(diǎn)值的情況中在它們相加以前將變?cè)猘與b對(duì)準(zhǔn)是重要的。這意味著B(niǎo)1sb1與Blsb必須相等。B1sb1是作為控制加法器的信號(hào)B1sb饋入的。當(dāng)B1sb被連接到加法器、加1器、減1器等時(shí),它是在向數(shù)值部分的方向上位移一步的,因?yàn)檫@樣它才能影響在最高位數(shù)值部分半字節(jié)上的進(jìn)位傳播(阻塞它)。所以,在這些情況中,信號(hào)B1sb中的最低位比特是不用的。
變?cè)猘與b,各包含32比特,是分成8個(gè)半字節(jié)的,每佧一個(gè)半字節(jié)包含4比特。a與b各4比特半字節(jié)是作為每一5中件Gi的一個(gè)獨(dú)立輸入提供的,i為0與7之間的一個(gè)整數(shù)??偩€(xiàn)B-1sb的條條線(xiàn)是連接到除Go以外的部件Gi的一個(gè)獨(dú)立單位的。連接到部件C7的一條線(xiàn)Cm指示加法器將進(jìn)行一次加法還是減法。對(duì)于加法Cm為“0”而對(duì)于減法則為“1”。各部件提供一個(gè)饋送給下一個(gè)部件的進(jìn)位信號(hào)Cou+i,并接受來(lái)自上一個(gè)部件的進(jìn)位信號(hào)Cini,這將在下面更詳細(xì)地說(shuō)明。
變?cè)猘與b的加法是獨(dú)立地在各部件G0至G7中進(jìn)行的,必要時(shí)以G7至G0的次序向下一個(gè)部件提供進(jìn)位信號(hào)。對(duì)于一個(gè)浮點(diǎn)值設(shè)置了一條數(shù)值部分向外進(jìn)位總線(xiàn)Cm,必要時(shí)向其提供一個(gè)數(shù)值部分進(jìn)位。這一總線(xiàn)連同具有符號(hào)比特的線(xiàn)Cs及具有冪指數(shù)符號(hào)比特的Cse構(gòu)成到圖6中的電路27的輸入grs2或grs3)。電路27將這一信息在總線(xiàn)ASTATE上提供給控制單元CU。
信號(hào)C51指示變?cè)猘與b是整數(shù)還是浮點(diǎn)值,信號(hào)C52指示變?cè)猘的代碼是正常的還是改變了的,而信號(hào)C53指示變?cè)猙的代碼是正常的還是改變了的。這些信號(hào)是饋送到部件GO的,它對(duì)應(yīng)于包含最高位比特片(符號(hào)片0)的最高位精度半字節(jié)。這是特別依賴(lài)于運(yùn)算數(shù)a與b的格式的(它們是否都是整數(shù)或浮點(diǎn)值)。
設(shè)置了一個(gè)三態(tài)門(mén)70將總線(xiàn)Cm設(shè)置成一個(gè)規(guī)定的值,例如當(dāng)運(yùn)算數(shù)為整數(shù)時(shí)設(shè)置成全“0”,這是因?yàn)檫@時(shí)在總線(xiàn)上不會(huì)激活數(shù)值部分的進(jìn)位。三態(tài)驅(qū)動(dòng)器70是由信號(hào)C53控制的。
圖14B中示出了部件G1的一種配置的一個(gè)實(shí)施例。它是被“切”成四個(gè)加法器片AS1至AS4的。它還包括一個(gè)該部件的進(jìn)位發(fā)生器,它測(cè)定對(duì)下一部件的進(jìn)位Couti??紤]中的部件的Gi的各比特半字節(jié)ai與bi分別將比特aik與bik中的單獨(dú)的一個(gè)連接到各獨(dú)立加法器片ASK上,k是1與4之間的一個(gè)整數(shù)。每一個(gè)加法器片提供和輸出的一個(gè)比特sumk。
如將在說(shuō)明圖14C時(shí)更詳細(xì)地說(shuō)明的,進(jìn)位發(fā)生器被提供下述比特一個(gè)發(fā)生比特Gen,指示該部件的和是大于或等于16的;一個(gè)傳播比特Pr,指示該部部件的和是大于或等于15的;來(lái)自上一個(gè)部件的進(jìn)位比特Cini;來(lái)自加法器片AS4的一個(gè)進(jìn)位來(lái)的比特Cini4;以及比特Blsbi+1°比特Blsbi+1°是通過(guò)一個(gè)反相器75饋送到一個(gè)三態(tài)門(mén)的一個(gè)反相輸入上,并且直接饋到三態(tài)門(mén)76的控制輸入的。比特Cin-i4是連接到三態(tài)門(mén)76的一個(gè)第二反相輸入上的。這樣,當(dāng)比特B1sb-i+1這“0”時(shí),三態(tài)門(mén)76的被控制來(lái)傳輸比特B1sb-i+1。然而,當(dāng)比特B1sb-i+1為“1”時(shí),三態(tài)門(mén)76則衩控制來(lái)傳輸比特Cin-i4,如果它是“1”時(shí)指示數(shù)值部分有一個(gè)向外進(jìn)位。
只需要為變?cè)膬缰笖?shù)部分后面的精度半字節(jié)提供一個(gè)數(shù)值部分向外進(jìn)位,也只有這一個(gè)半字節(jié)具有比特B1sb-i+1為“1”。
部件與部件之間的進(jìn)位傳播對(duì)于冪指數(shù)部分后面的精度半字節(jié)是被阻塞的。因此,比特B1sb-i+1是連接到一個(gè)與門(mén)77的一個(gè)反相輸入上的,該與門(mén)77在其另一反相輸入上有反相的信號(hào)Gen,從而,只當(dāng)為B1sb-i+1“0”時(shí),才傳輸信號(hào)Gen。比特B1sb-i+1還連接到一個(gè)與門(mén)78的一個(gè)反相輸入,該與門(mén)78在其一個(gè)第二么相輸入上具有反相的信號(hào)Pr及在其一個(gè)第三反相囹入上有比特Cin i,從而,只在B1sb-i+1為“0”及Cin i為“0”時(shí)才傳輸信號(hào)Pr。一個(gè)或門(mén)77將其輸入連接到與門(mén)77與78的輸出上,并當(dāng)兩個(gè)與門(mén)中的一個(gè)具有輸出“1”時(shí)提供一個(gè)輸出“1”。
圖14C示出了各加法器片ASK的一個(gè)實(shí)施例。輸入ak與bk饋送到一個(gè)異或門(mén)80的各輸入上,如果這兩個(gè)輸入互相不同則提供一個(gè)“1”,否則一個(gè)“0”。異或門(mén)80的輸出饋送到一個(gè)第二異或門(mén)81的一個(gè)第一輸入而比特Cin ik到其另一個(gè)輸入,只當(dāng)其輸入不同時(shí),異或門(mén)81的輸出才是一個(gè)“1”,并提供處理來(lái)自上一個(gè)加法器片的進(jìn)位比特的輸出sumk,或者當(dāng)該加法器片是該部件中的第一個(gè)時(shí),處理來(lái)自上一部件的進(jìn)位比特。
比特ak與bk被饋送到具有一個(gè)反相輸入的一個(gè)或門(mén)82的輸入上,其辦出本身又連接到三個(gè)與門(mén)83,84,85中每一個(gè)的一個(gè)第一反相輸入上。反向的比特Cin ik被饋送到與門(mén)83的一個(gè)第二反相輸入上,與門(mén)83當(dāng)ak與bk中任何一個(gè)為“1”時(shí)傳輸比特Cin ik來(lái)自上一個(gè)加法器片的反相比特Pin ik被饋送到與門(mén)84的一個(gè)第二反相輸入上,與門(mén)84當(dāng)比特ak與bk中任何一個(gè)為“1”是提供與Pin ik一樣的Poof ik。反相的比特Cin ik被饋送到與門(mén)85的一個(gè)第二反相輸入上,該與門(mén)85當(dāng)比特ak與bk中任何一個(gè)為“1”時(shí)傳輸比特Cin ik。對(duì)于在各精度部件中的各個(gè)第一加法器片AS1,比特Pin ik與比特Cin ik分別為“1”與“0”,如圖14B中所見(jiàn)。
為了實(shí)現(xiàn)行波傳送進(jìn)位,比特Pr與Gen是需要的,即使加法器更快。由于在進(jìn)位鏈的輸入上含有離散值這一事實(shí),所有的精度半字節(jié)是并行計(jì)算的,即對(duì)于所有精度半字節(jié)是同時(shí)的。來(lái)自加法的最后進(jìn)位Cs與沒(méi)有行濾傳送進(jìn)位的32個(gè)門(mén)延遲相比,它只有4+8個(gè)門(mén)的延遲。
比特aik與bik還饋送到具有一個(gè)反相輸出的與門(mén)88的輸入上,該與門(mén)88的反相輸出本身又連接到兩個(gè)或門(mén)86,87的各個(gè)的一個(gè)第一輸入上。與門(mén)83的輸出連接提供輸出Cout ik的或門(mén)86的一個(gè)第二輸入。與門(mén)85的輸出連接到提供輸出Cout ik的或門(mén)87的一個(gè)第二輸入。
為了提供非??斓倪M(jìn)位鏈,如果一個(gè)比特片反相行波傳送發(fā)生的極性并且傳播比特是反相的,有可能在它們中只有一個(gè)延遲。在這一情況中,每隔一個(gè)精度半字節(jié)有反相的輸入(未示出)。
從圖14A的左方可見(jiàn),最高位精度部件GO與其他部件是稍有不同的。它不使用一個(gè)輸入變?cè)狟1sb-0。在該半字節(jié)中它被設(shè)定為“0”。反之,它有數(shù)值部分進(jìn)位輸入Cin m。它是用于生成給符號(hào)比特的進(jìn)位輸入的。輸出有一個(gè)指示從冪指數(shù)的向外進(jìn)位的附加的比特。除了B1sb-0是設(shè)定為“0”,即偽,以外,正常的向外進(jìn)位是同正常的半字節(jié)中一樣產(chǎn)生的。
一比特信號(hào)C51、C52、C53可能有下述比特模式(C51、C52、C53)=(偽、偽、偽)表示整數(shù);(C51、C52、C53)=(偽、偽、真)表示a與b兩者都具有規(guī)范化代碼;(C51、C52、C53)=(真、偽、偽)表示a為改變后的,b為規(guī)范化的代碼;(C51、C52、C53)=(真、真、真)表示a為規(guī)范化,b為改變后的代碼。
圖15
加1器的配置十分相似于加法器的配置。圖15示出了一個(gè)加1器中的一個(gè)精度部件的實(shí)施例。加1器只有一個(gè)輸入a′(未示出)。加1比特片AS1′至AS4′與加法器比特片的差別在于它們沒(méi)有從一個(gè)傳送到另一個(gè)的發(fā)生器比特Gen。來(lái)自片AS4′的反相輸出Pr與來(lái)自上一個(gè)部件的反相位Cin被饋送到帶有兩個(gè)反相輸入的一個(gè)與門(mén)90的兩個(gè)反相輸入上。給線(xiàn)上的第一倍件G7的Cin中的進(jìn)位是一個(gè)“1”指示要進(jìn)行一次加1。與門(mén)90的輸出及經(jīng)特Blsbi+i被饋送給高下一部件提供輸出進(jìn)位Cout的一個(gè)或門(mén)92的各輸入上。加1器的進(jìn)位輸出是以與加法器相同的方式提供的。行濾傳送進(jìn)位鏈Cin/Cout指示和是否大于或等于2。行波傳送進(jìn)位鏈Pe′指示和是否大于或等于1。
和加法器一樣,加1器有一條受信號(hào)B1sbi+i控制的數(shù)值部分向外進(jìn)位總線(xiàn)Cm??刂票忍谻1g或C2g指示表示是一個(gè)整數(shù)還是一個(gè)浮點(diǎn)值。控制比特C1g或C2g控制一個(gè)三態(tài)門(mén),該三態(tài)門(mén)當(dāng)數(shù)值部分向外進(jìn)位總線(xiàn)不在使用時(shí)將其設(shè)置為一個(gè)規(guī)定的值(未示出)。
一個(gè)減1器具有與加1器相同的配置,但減1器有一個(gè)到它的減1器片的反相輸入a′in,這些減1器片相當(dāng)于加1器片AS1′至AS4′。
運(yùn)算數(shù)單元中的選擇器一般由一行傳輸門(mén)構(gòu)成。選擇器總有一個(gè)定義的輸出。它具有一張控制字與值輸入的表作為變?cè)?。除了一個(gè)其余的全部斷開(kāi)。每個(gè)個(gè)輸入的控制為一個(gè)補(bǔ)碼信號(hào)。整個(gè)選擇器是由這種元素的一張表控制的。在不同狀態(tài)中它們被控制從一個(gè)予定的端口中取得輸入。圖16中示出了一個(gè)基本選擇器比特片的一個(gè)實(shí)施例。選擇器的各輸入端口Sina、Sinb、sinc與Sind的比特中一個(gè)分別連接到一個(gè)可控開(kāi)關(guān)Sa、Sb、Sc、與Sd。一對(duì)控制線(xiàn)Sca、Scb、scc與Scd分別提供各開(kāi)關(guān)。向它所隸屬于的開(kāi)關(guān)提供一次輸入傳輸?shù)目刂茖?duì)上具有信息“1,0”,其余的具有信息“1,0”。
需要提出的是,ALU中的大多數(shù)電路是根據(jù)與加法器相關(guān)的上述原理構(gòu)造的,因?yàn)?,我們深信本領(lǐng)域內(nèi)的技術(shù)人員能夠應(yīng)用這些原埋容易地構(gòu)造其余的電路。因此,詳細(xì)地說(shuō)明每一個(gè)單一的電路被認(rèn)為是沒(méi)有必要的。
圖6中所示的ALU驅(qū)動(dòng)電路27是具有相當(dāng)復(fù)雜的種配置的一個(gè)布爾門(mén)陣列。無(wú)法展示它的一個(gè)實(shí)施,因?yàn)檫@是向一臺(tái)計(jì)算機(jī)提供了關(guān)于與信息信號(hào)相關(guān)的控制信號(hào)的配置的所有算法以后由計(jì)算機(jī)計(jì)算出其配置的。布爾門(mén)陣列是作為芯片掩膜圖形直接由計(jì)算機(jī)提供的,該計(jì)算機(jī)適知于對(duì)根據(jù)本發(fā)明的整個(gè)ALU進(jìn)行芯片掩膜圖形的配置。因此,這一電路是不可能詳細(xì)展示的。在整數(shù)乘法與浮點(diǎn)值加法的冪指數(shù)對(duì)準(zhǔn)的情況中,對(duì)ALU驅(qū)動(dòng)電路27的輸入及其輸出之間的系統(tǒng)的一張表在附錄中給出。
附錄1示出在浮點(diǎn)值加法中用于對(duì)準(zhǔn)指數(shù)的輸入與輸出之間的系統(tǒng)。
附錄是分成不同的“控制情形”的。每一種控制情形對(duì)應(yīng)于一個(gè)輸出,即一條微指令。
在標(biāo)題“微指令線(xiàn)”下列出的ALU驅(qū)動(dòng)電路27的輸出是在總線(xiàn)C1-C5上的信號(hào)電平。總線(xiàn)C1、C2與C3被分成連接到ALU各點(diǎn)上的更小的總線(xiàn)C11、C12、C13等。不同的輸入集合可能導(dǎo)致相同的輸出。導(dǎo)致箱同輸出的可能輸入信號(hào)列出為條件1、條件2等等。因此,在標(biāo)題“控制情形1”下作為“狀態(tài)、感測(cè)線(xiàn)-條件4”列出的輸入導(dǎo)致下面在標(biāo)題“微指令線(xiàn)”下的輸出。作為條件1、2與3列出在上面的輸入導(dǎo)致與條件4相同的輸出。
每一個(gè)條件是以某些狀態(tài)線(xiàn)上的一個(gè)確定的信號(hào)電平(0/1)的組合定義的。而其它狀態(tài)則可具有不確定的值(χ=無(wú)關(guān))。
除了co-limit1與co-limit2以外,列出在附錄中的所有輸入信號(hào)也都標(biāo)示在圖6中。在圖6中,信號(hào)co-limit1是分成其兩個(gè)分量Bco-max1與Bco-min1的信號(hào)co-limit2也是分成它兩量Bco-max2與Bco-min2的。
輸出ASTATE只是所有對(duì)電路27的輸入的一個(gè)復(fù)制。輸出ASTATE是連接到控制CV的。
附錄2示出在執(zhí)行整數(shù)乘法時(shí)ALU驅(qū)動(dòng)電路27的輸入與輸出之間的關(guān)系。
雖然本發(fā)明已經(jīng)參照特定的實(shí)施例進(jìn)行了說(shuō)明,但對(duì)本領(lǐng)域的技術(shù)人員而言,應(yīng)當(dāng)理解,在不脫離本發(fā)明的真實(shí)精神與范圍的情況下可以作出各種改變并且可以使用等價(jià)部件來(lái)代替其部件。些外,可以不脫離本發(fā)明的主要技術(shù)而作出修改1。
一個(gè)可作為指令運(yùn)算數(shù)/mu′-puotient(積,商)或多項(xiàng)式由目標(biāo)寄存(未示出)或某些ALU內(nèi)部單無(wú)提供。有關(guān)總線(xiàn)上的其余比特串的表示類(lèi)型的信息可由指令總線(xiàn)上的信息給出或者在代碼段中給出。
權(quán)利要求
1.一種對(duì)數(shù)值元素執(zhí)行算術(shù)的、邏輯的與相關(guān)運(yùn)算的方法,其特征在于包括下述步驟a)提供一張包含處理的所述數(shù)值元素及指令信息的輸入表,b)使用所述指令處處,對(duì)所述輸入表上的所述數(shù)值元素直接控制與執(zhí)行一個(gè)運(yùn)算,c)每一數(shù)值元素提供一個(gè)具有一個(gè)預(yù)定的比特(bit)長(zhǎng)度的字,字的最大數(shù)目等于所述輸入表中的元素的最大可提供的數(shù)目,d)以改寫(xiě)所述輸入表中的元素中的元素來(lái)執(zhí)行一個(gè)計(jì)算,e)作為一張輸出表提交結(jié)果。
2.根據(jù)權(quán)利要求1的一種方法,其特征在于所述輸入表是分成特定的表元素的,所述表元素中至少一個(gè)是一個(gè)指令字的一個(gè)表示,并且其余的所述表元素是數(shù)值字表示。
3.根據(jù)權(quán)利要求1或2的一種方法,其特征在于全部表元素是數(shù)值字表示。
4.根據(jù)前面的權(quán)利要求中任何一條的一種方法,其特征在于所述表包含一個(gè)函數(shù)應(yīng)用,其中,其元素之一是一個(gè)指令碼而其余的為所述指令的變?cè)?,并且一條指令是以改寫(xiě)與重新循環(huán)來(lái)自所述結(jié)果輸入表的所述指令碼到所述輸入表直到達(dá)到一個(gè)最終結(jié)果來(lái)執(zhí)行的。
5.根據(jù)權(quán)利要求4的一種方法,其特征在于在每次改寫(xiě)時(shí),如果適合于該實(shí)際計(jì)算,所述是改寫(xiě)為包含一個(gè)修改后的指令碼字并在后面跟隨著值字的。
6.根據(jù)權(quán)利要求4的一種方法,其特征在于在直接到結(jié)果的一個(gè)改寫(xiě)時(shí),其值是放置在沒(méi)有任何指令碼的輸出表上的。
7.根據(jù)前面的權(quán)利要求中任何一條的一種方法,其特征在于所述輸入表與輸出表中的元素的最大數(shù)目是4。
8.根據(jù)權(quán)利要求2至7中任何一條的一種方法,其特征在于在實(shí)際處理以前所述數(shù)值字是以一種編碼格式提供的。
9.根據(jù)權(quán)利要求2至8中任何一條的一種方法,其特征在于表示數(shù)值字的所述字是以達(dá)到所述數(shù)值的一種稠密表示的一種編碼提供的,即一個(gè)值的每一編碼的表示只對(duì)應(yīng)于一個(gè)數(shù)值。
10.根據(jù)權(quán)利要求2至9中任何一條的一種方法,其特征在于為表示一個(gè)整數(shù)值的一個(gè)二進(jìn)制字提供一種第一編碼。
11.根據(jù)權(quán)利要求2至10中任何一條的一種方法,其特征在于為表示一個(gè)浮點(diǎn)值的一個(gè)二進(jìn)制字提供一種第二編碼。
12.根據(jù)權(quán)利要求2至11中任何一條的一種方法,其特征在于為表示一個(gè)整數(shù)值的一個(gè)二進(jìn)制字提供一種第一編碼并為表示一個(gè)浮點(diǎn)值的一個(gè)二進(jìn)制字提供一種第二編碼,并且所述編碼是這樣的使得編碼以后浮點(diǎn)值表示的數(shù)值與整數(shù)值表示的數(shù)值以相同的次序增加。
13.根據(jù)權(quán)利要求2至12中任何一條的一種方法,其特征在于一個(gè)二進(jìn)制編碼的浮點(diǎn)值表示包含一個(gè)代碼段、一個(gè)冪指數(shù)段及一個(gè)數(shù)值部分段,所述代碼段具有一個(gè)所述冪指數(shù)段與所述數(shù)值部分段之間的分界位置的指示,使得冪批數(shù)與數(shù)值部分段具有可變長(zhǎng)度。
14.根據(jù)權(quán)利要求9至13中任何一條的一種方法,其特征在于所述稠密表示是以在用于該浮點(diǎn)值表示的數(shù)值部分的該字的一個(gè)段的前面包含一個(gè)虛擬的“1”,即并不在該表示中物理地提供的一個(gè)“1”,來(lái)提供的。
15.根據(jù)權(quán)利要求9至14中任何一條的一種方法,其特征在于所述值是以下述方式編碼的a)該值的表示包含一個(gè)比特串,其中每一個(gè)比特是“0”或“1”中之一并且是從數(shù)值零開(kāi)始的二進(jìn)制編碼的,b)在所述表示中的所有可能值只有一個(gè)值對(duì)應(yīng)于一個(gè)浮點(diǎn)值,c)具有較另一浮點(diǎn)值為高的一個(gè)表示的一個(gè)浮點(diǎn)值具有較所述另一值為高的一個(gè)值,d)一個(gè)浮點(diǎn)值的所述表示包含一個(gè)整個(gè)所述浮點(diǎn)值的符號(hào)比特,一個(gè)所述浮點(diǎn)值的冪指數(shù)的符號(hào)比特,一個(gè)說(shuō)明所述冪指數(shù)的長(zhǎng)度的代碼,所述冪指數(shù),該冪指數(shù)具有一個(gè)可變的長(zhǎng)度,以及一個(gè)具有可變長(zhǎng)度的數(shù)值部分,所述表示的組合長(zhǎng)度是一個(gè)常數(shù)。
16.根據(jù)權(quán)利要求15的一種方法,其特征在于具有一個(gè)“1”作為其最高位比特隨后為“0”的所述表示表示一個(gè)特殊的浮點(diǎn)值“0”。
17.根據(jù)權(quán)利要求16的一種方法,其特征在于不表示該特殊浮點(diǎn)值“0”的所有表示具有一個(gè)對(duì)應(yīng)于2e+biasmantissa(數(shù)值部分)的值,其中,e對(duì)于高于或等于1.0的正浮點(diǎn)值,及對(duì)于低于-1.0的負(fù)浮點(diǎn)值的所述表示中為所述冪指數(shù)的值,并且其中用于在1.0與-1.0之間的浮點(diǎn)值的冪指數(shù)是反相的,以及其中,對(duì)于不表示該特殊浮點(diǎn)值“0”的表示,對(duì)于具有負(fù)符號(hào)的表示,即表示一個(gè)負(fù)數(shù),所述數(shù)值部分在-1與-2之間變化,以及對(duì)于個(gè)有正符號(hào)的表示,即表示一個(gè)正數(shù),在+1與+2之間變化。
18.根據(jù)以上權(quán)利要求中任何一條的一種方法,其特征在于一條指令是以對(duì)在最終計(jì)算值中作為中間階段使用的所述值的若干可能組合的一種并行計(jì)算來(lái)執(zhí)行的,如有必要,選擇所述計(jì)算出的中間階段進(jìn)行進(jìn)一步處理以提供一個(gè)最終結(jié)果。
19.根據(jù)權(quán)利要求9至18中任何一條的一種方法,其特征在于在對(duì)一個(gè)第一浮點(diǎn)值A(chǔ)與一個(gè)第二浮點(diǎn)值B作加法/減法時(shí)提供下述運(yùn)算如果所述值A(chǔ)的冪指數(shù)比所述值B的冪指數(shù)小,則將所述值A(chǔ)對(duì)準(zhǔn)所述值B,如果所述值B的冪指數(shù)比所述值A(chǔ)的冪指數(shù)小,則將所述值B對(duì)準(zhǔn)所述值A(chǔ),將互相對(duì)準(zhǔn)的所述值進(jìn)行加/減,規(guī)范化所述加法/減法的結(jié)果。
20.根據(jù)權(quán)利要求19的一種方法,其特征在于在加法/減法上的所述運(yùn)算是在各加法/減法運(yùn)算階段中并行計(jì)算的,并且該運(yùn)算是從適用于實(shí)際加法/減法運(yùn)算階段的所述并行計(jì)算運(yùn)算中選擇的。
21.根據(jù)權(quán)利要求15至20中任何一條的一種方法,其特征在于為一個(gè)第一浮點(diǎn)值A(chǔ)瑟一個(gè)第二浮點(diǎn)值B的加法/減法提供了下述運(yùn)算如果所述值A(chǔ)的冪指數(shù)較所述值B的冪指數(shù)小,將所述值A(chǔ)對(duì)準(zhǔn)所述值B并增/減其數(shù)值部分的一個(gè)精度,如果所述值B的冪指數(shù)較所述值A(chǔ)的冪指數(shù)小,則將所述值B對(duì)準(zhǔn)所述值A(chǔ)并增/減其數(shù)值部分的一個(gè)精度,加/減互相對(duì)準(zhǔn)的所述值,規(guī)范化所述加法/減法的結(jié)果。
22.根據(jù)權(quán)利要求21的一種方法,其特征在于在加/減時(shí)所述運(yùn)算是在各加/減運(yùn)算階段并行計(jì)算的,并且該運(yùn)算是從適合于實(shí)際加/減運(yùn)算階段的所述并行計(jì)算的運(yùn)算中選擇的。
23.根據(jù)權(quán)利要求9至22保任何一條的一種方法,其特征在于兩個(gè)浮點(diǎn)值B與C的乘法是以將乘法改寫(xiě)為0.0+BC=V來(lái)進(jìn)行的,其中V是一個(gè)常數(shù)值,它是在具有中間值A(chǔ)+B1C1=V的若干階段中被改寫(xiě)的,其中A是上一個(gè)值V,以及所述值G1的冪指數(shù)是用加法/減法進(jìn)行調(diào)整使得所述值B1的冪指數(shù)最終變成“0”,最終值中的冪指數(shù)將是值C1的最終冪指數(shù)。
24.一種對(duì)數(shù)值元素執(zhí)行算術(shù)的、邏輯的與有關(guān)運(yùn)算的數(shù)值算術(shù)單元,包括a)包含一組總線(xiàn)的一個(gè)輸入,各總線(xiàn)工作于接受一張表中的一個(gè)表元素,所述表包含關(guān)于所述表中的字的指令信息,b)連接所述總線(xiàn)組的一個(gè)處理設(shè)備以根據(jù)所述指令改寫(xiě)所述字使用所述指令信息在所述表中的所述字上執(zhí)行一個(gè)運(yùn)算,以及c)在一個(gè)包括與所述輸入總線(xiàn)組相同數(shù)目與配置的一組總線(xiàn)珠一個(gè)輸出上提交改寫(xiě)的結(jié)果。
25.根據(jù)權(quán)利要求24的一種數(shù)值算術(shù)單元,其特征在于所述表中至少一個(gè)表元素是保留來(lái)包含一個(gè)指令信息的一個(gè)表示并提供在所述輸入總線(xiàn)組的特定的一條上,以及要計(jì)算的數(shù)值表示是在所述輸入總線(xiàn)組的其它條上提供的,并且所述處理設(shè)備是適合于以改寫(xiě)所述輸入表中的數(shù)值薄淶執(zhí)行一個(gè)計(jì)算的。
26.根據(jù)權(quán)利要求24或25的一種數(shù)值算術(shù)單元,其特征在于設(shè)置了若干電路(21、22、221、23、24、25、28、29、30、35、36、37),各適合于對(duì)所述輸入總線(xiàn)上的所述數(shù)值表示執(zhí)行一個(gè)特定的運(yùn)算,來(lái)提交所述并行運(yùn)算的它們的結(jié)果,以及提供以所述指令信息的控制驅(qū)動(dòng)裝置(27)從所有執(zhí)行后的結(jié)果中選擇為執(zhí)行要執(zhí)行的實(shí)際指令所需要的數(shù)量的執(zhí)行結(jié)果。
27.根據(jù)權(quán)利要求26的一種數(shù)值算術(shù)單元,其特征在于所述表包含一個(gè)函數(shù)應(yīng)用,其中,它的元素之一是一個(gè)指令碼而其余的為所述指令的變?cè)?,所述處理設(shè)備以改寫(xiě)并將所述指令碼從所述輸出到所述輸入重復(fù)循環(huán)下到達(dá)到最終結(jié)果來(lái)執(zhí)行一條指令,以及在每次改寫(xiě)時(shí),如果適用于實(shí)際計(jì)算,所述處理設(shè)備適用于改寫(xiě)所述表使之包含一個(gè)經(jīng)修改的指令碼字,如果適當(dāng),后面跟隨有值字。
28.根據(jù)權(quán)利要求26或27的一種數(shù)值算術(shù)單元,其特征在于數(shù)值字的所述表示是在實(shí)際處理前以一種編碼格式提供給所述單元的,并且所述控制驅(qū)動(dòng)裝置(27)是被提供以有關(guān)所述表示的實(shí)際編碼類(lèi)型的信息的。
29.根據(jù)權(quán)利要求28的一種數(shù)值算術(shù)單元,其特征在于所述處理設(shè)備適用于使用將所述數(shù)值編碼為一種稠密表示的編碼,即一個(gè)值的每一個(gè)編碼表示只對(duì)應(yīng)于一個(gè)解釋值。
30.根據(jù)權(quán)利要求28或29的一種數(shù)值算術(shù)單元,其特征在于所述處理設(shè)備適合于使用表示一個(gè)整數(shù)表示和一個(gè)二進(jìn)制字的一種第一類(lèi)型編碼。
31.根據(jù)權(quán)利要求29至30中任何一條的一種數(shù)值算術(shù)單元,其特征在于所述處理設(shè)備適合于使用表示一個(gè)浮點(diǎn)表示的一個(gè)二進(jìn)制字的一種第二類(lèi)型的編碼。
32.根據(jù)權(quán)利要求29至31中任何一條的一種數(shù)值算術(shù)單元,其特征在于所述處理設(shè)備適用于使用表示一個(gè)整數(shù)表示的一個(gè)二進(jìn)制字的一種第一編碼以及表示一個(gè)浮點(diǎn)表示的一個(gè)二進(jìn)制字的一種第二編碼,以及所述編碼是這樣的使得編碼以后,浮點(diǎn)表示是與整數(shù)表示以相同的次序提供的。
33.根據(jù)權(quán)利要求31或32的一種數(shù)值算術(shù)單元,其特征在于一個(gè)二進(jìn)制編碼的浮點(diǎn)值表示包含一個(gè)符號(hào)、冪指數(shù)符號(hào)及代碼段、一個(gè)冪指數(shù)段及一個(gè)數(shù)值部分段,所述冪指數(shù)符號(hào)及代碼段具有所述冪指數(shù)段與所述數(shù)值部分段之間的分界位置的一個(gè)指示,使得冪指數(shù)及數(shù)值部分段具有可變長(zhǎng)度。
34.根據(jù)權(quán)利要求32或33的一種數(shù)值算術(shù)單元,其特征在于表示數(shù)值字的所述字是以將所述數(shù)值提供在一種稠密表示中的一種編碼提供的,即一個(gè)值的每一個(gè)編碼表示只對(duì)應(yīng)于一個(gè)解釋值。
35.根據(jù)權(quán)利要求34的一種數(shù)值算術(shù)單元,其特征在于所述稠密表示是以在浮點(diǎn)值的數(shù)值部分的字的一個(gè)段的前面包含一個(gè)虛擬的“1”,即并不在表示中物理地提供的一個(gè)“1”,提供的。
36.根據(jù)權(quán)利要求33或34的一種數(shù)值算術(shù)單元,其特征在于數(shù)值的所述表示是分成比特半字節(jié)的,稱(chēng)為精度半字節(jié),各半字節(jié)具有予定數(shù)目的比特,當(dāng)所述表示表示一個(gè)浮點(diǎn)值時(shí),設(shè)置在兩個(gè)精度半字節(jié)之間的所述表示的一個(gè)冪指數(shù)部分及一個(gè)數(shù)值部分之間的一個(gè)劃分。
37.根據(jù)權(quán)利要求26至36中任何一條的一種數(shù)值算術(shù)單元,其特征在于設(shè)置了至少一個(gè)具有輸入的運(yùn)算數(shù)單元(r1、r2、r3),向運(yùn)算數(shù)單元的輸入提供所述數(shù)值字中的至少兩個(gè)以及從所述運(yùn)算執(zhí)行電路中具有適于進(jìn)一步執(zhí)珩到該單元的一個(gè)結(jié)果輸出的這些電路(35,36,37)中得出的數(shù)值,所述運(yùn)算數(shù)單元由所述控制驅(qū)動(dòng)裝置控制進(jìn)一步處理在所述運(yùn)算數(shù)單元輸入上的數(shù)據(jù)來(lái)改寫(xiě)所述數(shù)值字。
38.根據(jù)權(quán)利要求26到36中任何一條的一種數(shù)值算術(shù)單元其特征在于所述運(yùn)算執(zhí)行電路的輸出是饋送到所述控制驅(qū)動(dòng)裝置(27)的輸入上供所術(shù)控制驅(qū)動(dòng)裝置將這些輸出與所述指令信息一起處理以構(gòu)成用于控制至少一個(gè)運(yùn)算數(shù)單元的數(shù)字控制信號(hào)。
39.根據(jù)權(quán)利要求37或38的一種數(shù)值算術(shù)單元,其特征在于所述控制驅(qū)動(dòng)裝置(27)在所述單元內(nèi)部從所述輸入到所述輸出的一個(gè)數(shù)據(jù)傳送中提供至少一個(gè)第一運(yùn)算相位時(shí)段與一個(gè)輸出相位時(shí)段,以及將來(lái)自在所述第一運(yùn)算相位時(shí)段中胺控制的所述運(yùn)算數(shù)電路中的元件的可能出現(xiàn)的進(jìn)位信號(hào)饋到所述控制驅(qū)動(dòng)裝置(27),其控制輸出在所述輸出相位時(shí)段之前被所述可能出現(xiàn)的進(jìn)位信號(hào)所改變,在所述輸出相位進(jìn)段中所述運(yùn)算數(shù)電路中的內(nèi)部單元是被控制的,所述運(yùn)算數(shù)電路是能夠?qū)?lái)自所述元件的輸出進(jìn)行訪(fǎng)問(wèn)的。
40.根據(jù)權(quán)利要求26至39中任何一條的一種數(shù)值算術(shù)單元,其特征在于所述控制驅(qū)動(dòng)裝置(27)是一個(gè)布泉門(mén)陣列。
41.根據(jù)權(quán)利要求26至36中任何一條的一種數(shù)值算術(shù)單元,其特征在于所述輸入表與輸同表的最大長(zhǎng)度是在每條總線(xiàn)上提供一個(gè)的四個(gè)元素。
42.根據(jù)權(quán)利要求26至41中任何一條的一種數(shù)值算術(shù)單元,其特征在于數(shù)值的所述表示是分成稱(chēng)為精度半字節(jié)的半字節(jié)的,各有予定數(shù)目的比特,當(dāng)所述表示表示一個(gè)浮點(diǎn)值時(shí)設(shè)置在兩個(gè)精度半字節(jié)之間的所述表示的一個(gè)冪指數(shù)部分與一個(gè)數(shù)值部分之間的一個(gè)劃分;以及至少一個(gè)精度譯碼器,該精度譯碼器適于在其輸入上具有所述表示中提供所述冪指數(shù)/數(shù)值部分劃分信息的至少一部分,并向?qū)Ω↑c(diǎn)值進(jìn)行運(yùn)算的元件提供起因于所述劃分的控制輸出。
43.根據(jù)權(quán)利要求42的一種數(shù)值算術(shù)單元,其特征在于精度譯碼器的數(shù)目為兩個(gè)。
44.根據(jù)權(quán)利要求42或43的一種數(shù)值算術(shù)單元,其特征在于對(duì)于具有32比特的一個(gè)表示所述精度半字節(jié)的數(shù)目是8個(gè)。
45.根據(jù)權(quán)利要求33或44中任何一條的一種數(shù)值算術(shù)單元,其特征在于所述浮點(diǎn)值的所述表示的信息是在具有可變碼長(zhǎng)的一個(gè)代碼段中給出的。
全文摘要
本發(fā)明涉及執(zhí)行數(shù)值元素的算術(shù)、邏輯及相關(guān)運(yùn)算的一種方法及設(shè)備。a)提供包括要處理的數(shù)值以及指令信息的一張輸入表。b)使用該指令信息直接控制與執(zhí)行輸入表上的數(shù)值元素的一個(gè)運(yùn)算。c)各數(shù)值元素提供具有預(yù)定比特長(zhǎng)度的一個(gè)字。字的最大的數(shù)量等于輸入表中所能提供的元素的最大數(shù)量。d)以改寫(xiě)輸入表中的元素來(lái)執(zhí)行一次計(jì)算。e)作為一張輸出表提交結(jié)果。
文檔編號(hào)G06F12/00GK1059413SQ9110527
公開(kāi)日1992年3月11日 申請(qǐng)日期1991年8月2日 優(yōu)先權(quán)日1990年8月2日
發(fā)明者卡爾斯特·拉斯·岡納 申請(qǐng)人:卡爾斯特電子公司