亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于向量整數(shù)乘加指令的功能單元的制作方法

文檔序號:6361834閱讀:295來源:國知局
專利名稱:用于向量整數(shù)乘加指令的功能單元的制作方法
技術(shù)領(lǐng)域
本發(fā)明領(lǐng)域一般地涉及計算機系統(tǒng),并且尤其涉及用于執(zhí)行向量乘加指令以及使用邏輯塊的其它指令的處理器體系結(jié)構(gòu),其中該邏輯塊用于計算向量乘加結(jié)果。
背景技術(shù)
兩種類型的處理器體系結(jié)構(gòu)在計算機科學(xué)領(lǐng)域中被廣泛認(rèn)知:“標(biāo)量”和“向量”。標(biāo)量處理器被設(shè)計成執(zhí)行對單個數(shù)據(jù)集進(jìn)行操作的指令,然而向量處理器被設(shè)計成執(zhí)行對多個數(shù)據(jù)集進(jìn)行操作的指令。圖1A和圖1B示出比較示例,展示了標(biāo)量處理器和向量處理器之間的基本差異。圖1A示出標(biāo)量AND (與)指令的示例,其中對單個操作數(shù)集(A和B)進(jìn)行與操作(ANDed)以產(chǎn)生單個(或“標(biāo)量”)結(jié)果C (即,AB=C)。相比之下,圖1B示出向量AND指令的示例,其中兩個操作數(shù)集A/B和D/E分別被并行地進(jìn)行與操作以同時產(chǎn)生向量結(jié)果C和F(BP, A.AND.B=C 和 D.AND.E=F)。如本領(lǐng)域所公知的,通常輸入操作數(shù)和輸出結(jié)果兩者均存儲在專用寄存器中。例如,許多指令將具有兩個輸入操作數(shù)。因此,兩個不同的輸入寄存器將被用于臨時存儲相應(yīng)輸入操作數(shù)。此外,這些相同指令將產(chǎn)生輸出值,該輸出值將被臨時存儲在第三(結(jié)果)寄存器中。在圖1A和圖1B中觀察到相應(yīng)輸入101a,b和102a,b以及結(jié)果寄存器103a,b。顯著地,“標(biāo)量”對比“向量”特征是容易區(qū)分的。S卩,觀察到,圖1A的標(biāo)量設(shè)計的輸入寄存器IOla和102a僅僅保存標(biāo)量值(分別為A和B)。同樣,還觀察到,圖1A的標(biāo)量設(shè)計的結(jié)果寄存器103a僅保存標(biāo)量值(C)。相比之下,觀察到,圖1B的向量系統(tǒng)的輸入寄存器IOlb和102b保存向量(在寄存器IOlb中保存A、D,以及在寄存器102b中保存B、E)。同樣,還觀察到圖1B的向量系統(tǒng)的結(jié)果寄存器103a保存向量值(C、F)。就術(shù)語而言,圖1B的向量系統(tǒng)的寄存器101b、102b和103b中的每一個的內(nèi)容可被整體地稱為“向量”,并且向量內(nèi)的各個標(biāo)量值中的每一個可被稱為“元素”。因此,例如,觀察到,寄存器IOlb存儲“向量” A、D,“向量” A、D由“元素” A和“元素” D組成。已知只有標(biāo)量或SMD乘法操作已在半導(dǎo)體芯片處理器中被實際地實現(xiàn)為單個處理器指令。已知已在半導(dǎo)體芯片處理器中實現(xiàn)的標(biāo)量或SMD乘法指令包括“乘”指令(MUL)和“乘高”指令(MULH),其中“乘”指令提供兩個整數(shù)輸入操作數(shù)的乘積的低階位,而“乘高”指令提供標(biāo)量整數(shù)乘法操作的高階位。已知已在半導(dǎo)體處理器芯片中被實現(xiàn)為標(biāo)量或SMD指令的其它指令包括“前導(dǎo)零計數(shù)” CLZ指令、“尾隨零計數(shù)”指令CTZ、以及“計數(shù)”指令CNT。標(biāo)量CLZ指令接收標(biāo)量輸入A并返回在A中最高階I之前的A中O的數(shù)量(例如,如果A=1000,則CLZ的結(jié)果=0 ;如果A=0100,則CLZ的結(jié)果=1 ;如果A=0010,則CLZ的結(jié)果=2 ;等等)。標(biāo)量CTZ指令接收標(biāo)量輸入A并返回在A中最低階I之后的A中O的數(shù)量(例如,如果A=1000,則CTZ的結(jié)果=3 ;如果A=OlOO,則CTZ的結(jié)果=2 ;如果A=OOlO,則CTZ的結(jié)果=1 ;等等)。標(biāo)量CNT指令接收標(biāo)量輸入A并返回A中的I的數(shù)量(例如,如果A=IOll,則CLZ的結(jié)果=3 ;如果A=IOOl,則CLZ的結(jié)果=2 ;如果A=OOlO,則CLZ的結(jié)果=1 ;等等)。


本發(fā)明在附圖中作為示例而非限制地示出,其中類似的附圖標(biāo)記指示相似的元件,附圖中:圖1a和圖1b不出標(biāo)量和向量邏輯操作;圖2示出向量乘加功能單元;圖3示出可用于圖2的功能單元200j至200_N中的每一個的電子功能單元的實施例;圖4a示出向量浮點乘加操作;圖4b示出向量整數(shù)浮點操作;圖5示出圖3的功能單元的實施例,該功能單元具有用于執(zhí)行前導(dǎo)零、尾隨零、操作數(shù)I計數(shù)以及奇偶指令的擴(kuò)展邏輯;圖6a到圖6d分別示出以下指令的執(zhí)行:前導(dǎo)零確定、尾隨零確定、操作數(shù)I計數(shù)以及操作數(shù)奇偶確定;圖7示出半導(dǎo)體處理器的示圖;圖8示出計算系統(tǒng)的示圖。
具體實施例方式一些計算機系統(tǒng)可能需要“乘加”操作。乘加操作執(zhí)行運算(A*B)+C,其中A、B和C中的每一個均為輸入操作數(shù)。圖2示出能夠執(zhí)行向量乘加指令(VMADD)的向量處理功能單元200的高級體系結(jié)構(gòu)視圖。如圖2所示,功能單元包括N個標(biāo)量邏輯單元200_1到200_N,每個邏輯單元對輸入向量的相應(yīng)元素進(jìn)行標(biāo)量乘加操作。在此,輸入寄存器203保存輸入向量A=A_1、A_2、...A_N;輸入寄存器204保存輸入向量B=B_1、B_2、...B_N ;以及輸入寄存器205保存輸入向量C=C_1、C_2、...C_N。標(biāo)量邏輯單元200_1執(zhí)行運算((A_l) * (B_l)) +C_l ;標(biāo)量邏輯單元200_2執(zhí)行運算((A_2) * (B_2)) +C_2 ;...;以及標(biāo)量邏輯單元200_N執(zhí)行運算((A_N)*(B_N))+C_N。在實施例中,每個標(biāo)量邏輯單元支持32位操作數(shù)操作模式和64位操作數(shù)操作模式兩者。由邏輯單元200_1到200_N產(chǎn)生的各個結(jié)果202_1到202_N對應(yīng)于由向量功能單元200提供的輸出向量的各個元素,該輸出向量存儲在輸出寄存器中。圖2還示出,為了實現(xiàn)與SMD操作相對的向量操作,可將掩模層并入到輸出電路206中。向量操作可被視為在以下方面與SIMD操作不同:輸入操作數(shù)的尺寸對于向量機是可變的但對于SIMD機是固定的。改變圖2的向量機中的元素數(shù)量的能力借助可在輸出206執(zhí)行的掩模來表示。具體地,可以通過它自身的相應(yīng)寫邏輯電路(未示出)對每個輸出元素進(jìn)行寫入。在實施例中,寫邏輯電路可對任何輸出元素位置進(jìn)行。通過僅對與有效向量操作數(shù)元素相對應(yīng)的那些元素啟用寫邏輯電路,可以處理長度可變的向量。其作用是基本上僅啟用標(biāo)量功能單元200_1到200_N中與有效向量元素相對應(yīng)的那些用于操作。此外,掩模使得針對有效元素檢測到的任何算術(shù)例外被呈現(xiàn),同時抑制不活動元素的例外。如以下將要進(jìn)一步詳細(xì)描述的,除計算向量乘加指令之外,功能單元200還能夠計算許多附加向量指令,諸如下列中的一個或多個:i)用于整數(shù)操作數(shù)的向量乘加高指令(VMADDH),其提供向量乘加運算的高階位;ii)用于整數(shù)操作數(shù)的向量乘加(VMADDL),其提供向量乘加運算的低階位;iii)向量前導(dǎo)零計數(shù)指令(VCLZ),其接收輸入向量C并提供輸出向量作為結(jié)果,該輸出向量的元素分別對應(yīng)于輸入向量C的元素的前導(dǎo)零計數(shù);iv)向量尾隨零計數(shù)指令(VCTZ),其接收輸入向量C并提供輸出向量作為結(jié)果,該輸出向量的元素分別對應(yīng)于輸入向量C的元素的尾隨零計數(shù);v)向量計數(shù)指令(VCNT),其接收輸入向量C并提供輸出向量作為結(jié)果,該輸出向量的各個元素分別對應(yīng)于輸入向量C的各個元素內(nèi)的I的計數(shù);以及Vi)向量奇偶指令(VPAR),其接收輸入向量C并提供輸出向量作為結(jié)果,該輸出向量的各個兀素分別對應(yīng)于輸入向量C的各個兀素的奇偶狀態(tài)(奇或偶)。利用VMADD指令,以上列舉的指令中的每一個由向量輸入A、B和C的相應(yīng)輸入操作數(shù)元素的標(biāo)量執(zhí)行來完成。在進(jìn)一步的實施例中,再一次如以下更詳細(xì)描述的,由功能單元200執(zhí)行的任何/全部指令對浮點以及整數(shù)操作數(shù)是可操作的。圖3示出圖2的標(biāo)量邏輯單元之一的實施例。如當(dāng)前所述,標(biāo)量邏輯單元能夠?qū)斎胂蛄緼、B和C的相應(yīng)元素執(zhí)行標(biāo)量操作,以支持前述VMADD、VMADDH、VMADDL、VCLZ、VTLZ、VCNT和VPAR指令中的任何一種。現(xiàn)在將描述當(dāng)輸入向量A、B、C的元素以及輸出向量R的元素以浮點指定時的VMADD指令的操作。如本領(lǐng)域已知的,浮點中的數(shù)值的聯(lián)接方式采用(符號)*(尾數(shù))*(指數(shù))的形式,其中符號值指示數(shù)值是正還是負(fù),尾數(shù)值指定數(shù)值的“數(shù)字”,指數(shù)(exponent)值指定數(shù)值的階數(shù)。VMADD指令可被如下指定((A_符號)(B_符號)(A_尾數(shù))(B_尾數(shù))(A_指數(shù)+B_指數(shù)))+ (C_符號)(C_尾數(shù))(C_指數(shù))。參見圖3,乘法器301計算(A_符號)(B_符號)(A_尾數(shù))(B_尾數(shù))項作為至少(A_尾數(shù))(B_尾數(shù))的顯式計算。乘積的符號可如下容易地計算出:i)如果A_符號與B_符號具有相同的值則為正;或者ii)如果A_符號與[符號具有不同值則為負(fù)。乘積指數(shù)塊302通過采用下列中的較大者來確定最終結(jié)果的指數(shù)的初始計算:i) (A_指數(shù)+B_指數(shù));以及ii)C_指數(shù)。即,如果C值遠(yuǎn)大于A和B的乘積,則C項的階將控制最終結(jié)果的階。同樣,如果AB遠(yuǎn)大于C,則AB的階將控制最終結(jié)果的階。加法器305執(zhí)行AB+C運算的加法。然而,顯著地,在可按浮點形式執(zhí)行加法之前,在實施例中,使AB項的指數(shù)(S卩,與乘法器301的輸出相關(guān)聯(lián)的指數(shù))與C項的指數(shù)相同。指數(shù)差塊303和移位器304用于實現(xiàn)該過程。具體地,指數(shù)差塊303取AB項的指數(shù)與C項的指數(shù)之間的差(即,i) (A_指數(shù)+B_指數(shù));以及ii)C_指數(shù)之間的差)。這兩項的較小者也被標(biāo)識(例如,通過分析乘積指數(shù)塊302的輸出)。這兩項的較小者的尾數(shù)的二進(jìn)制小數(shù)點位置,即AB乘積項或C項——具有較小的指數(shù)項的任一個——的尾數(shù)的二進(jìn)制小數(shù)點位置“向左”移位特定數(shù)量的位位置,該數(shù)量對應(yīng)于由差塊303所確定的這兩項之間的指數(shù)差。經(jīng)移位的項以及其它未移位的項被傳遞到加法器305。作為示例,如果AB乘積項對應(yīng)于5.5555E8且C項對應(yīng)于2.2222E6,則C項的尾數(shù)(2.2222)的二進(jìn)制小數(shù)點位置將由移位器304向左移位兩位(0.02222),使得加法器305可正確地將具有相同指數(shù)值的兩個數(shù)的尾數(shù)相加。在該示例中,加法器305將正確地將
5.5555E8和0.02222E8相加。因此,在實施例中,移位器304被耦合到差塊303的輸出以確定要向AB項和C項之一的尾數(shù)的二進(jìn)制小數(shù)點位置應(yīng)用的正確移位數(shù)量。在進(jìn)一步的實施例中,AB項和C項之一的尾數(shù)的二進(jìn)制小數(shù)點位置被移位而其它的未被移位。移位的尾數(shù)值以及未移位的尾數(shù)值被提供到加法器305。當(dāng)然,在差塊303確定AB項和C項的指數(shù)相同的情形中,不執(zhí)行移位并且AB項和C項兩者的尾數(shù)被未移位地傳遞到加法器305。在實施例中,AB項和C項的符號值也被傳遞到加法器305,使得例如如果C項的符號是負(fù),那么正確地進(jìn)行有效減法AB - C。在這兩項之間的有效減法(即,當(dāng)AB項的符號不同于C項的符號時)與這兩項的絕對值大致相等的情況下,加法器305的輸出可能是接近于零的數(shù)。因此,加法器305輸出處的尾數(shù)值可能在第一個I被觀察到之前具有一串前導(dǎo)
O。在這種情況下,為了產(chǎn)生較高精度的結(jié)果,在加法器305輸出處的尾數(shù)值的二進(jìn)制小數(shù)點應(yīng)被移位以產(chǎn)生具有整數(shù)作為其第一個值的尾數(shù)。例如,如果向加法器提供AB尾數(shù)及符號項-5.555566…以及C尾數(shù)及符號項+5.555555…,那么加法器305將產(chǎn)生輸出-0.000011...。為了提高最終結(jié)果的精度,來自加法器305的結(jié)果的二進(jìn)制小數(shù)點應(yīng)向右移位5位以采用1.111111…的形式。由于二進(jìn)制小數(shù)點向右移位對應(yīng)于指數(shù)值的變化,因此指數(shù)值也將需要改變。在該特定示例中,將尾數(shù)二進(jìn)制小數(shù)點向右移位5位對應(yīng)于將指數(shù)值減小5。因此,當(dāng)在加法器305輸出處提供的尾數(shù)項具有前導(dǎo)零時,不僅其二進(jìn)制小數(shù)點需要向右移位,而且乘積指數(shù)塊303的輸出處的指數(shù)項也需要被減小。在此,前導(dǎo)I預(yù)感器塊306、歸一化移位器307和指數(shù)加法器308被用于完成這些任務(wù)。

具體地,前導(dǎo)I預(yù)感器306標(biāo)記加法器輸出中的第一個(最左端)I的位置,并且向歸一化移位器307指示加法器輸出的二進(jìn)制小數(shù)點應(yīng)向右移位多少,并且向指數(shù)加法器308指示來自指數(shù)塊302的指數(shù)值應(yīng)被減小多少。在實施例中,加法器輸出的二進(jìn)制小數(shù)點的向右移動實際上是通過將加法器輸出的數(shù)字內(nèi)容向左移動來完成的。在相同的或者其它的實施例中,加法器308理解來自前導(dǎo)I預(yù)感器306的值要從乘積指數(shù)302輸出值中減去。在實施例中,前導(dǎo)I預(yù)感器如下操作。對于被提供給加法器305的這兩個輸入操作數(shù)(S卩,AB項的尾數(shù)和C項的尾數(shù)),前導(dǎo)I預(yù)感器306單獨地確定這兩項中的前導(dǎo)I位置并且標(biāo)記這對前導(dǎo)I位置的最左位位置。例如,如果AB項的尾數(shù)是0001100101…并且C項的尾數(shù)是0000100000…,那么前導(dǎo)I預(yù)感器306將標(biāo)記第四位位置,因為(AB尾數(shù)項的)第四位位置是這兩個操作數(shù)中的最左端(或最高階)的前導(dǎo)I。假設(shè)該確定是加法器305輸出的前導(dǎo)I位置。在許多情況下,該假設(shè)將是正確的并且用于確定由歸一化移位器307執(zhí)行的加法器輸出移位量以及由加法器308執(zhí)行的指數(shù)減小量。在一些情況下該假設(shè)將是錯誤的。在上述示例中提供的這兩個操作數(shù)將由加法器相加以產(chǎn)生加法器輸出0010000101…。在假設(shè)不正確的情況下,如在本示例中,這兩個操作數(shù)的相加導(dǎo)致由前導(dǎo)I預(yù)感器所標(biāo)識的位位置處的進(jìn)位項(即,由前導(dǎo)I預(yù)感器所標(biāo)識的加法器輸出的位位置是0),因此由前導(dǎo)I預(yù)感器所標(biāo)識的位置的左邊一個位置的位位置是I。如此,在實施例中,在釋放由前導(dǎo)I預(yù)感器306標(biāo)記的假定值之前,其中該假定值作為加法器輸出應(yīng)被移位的量以及其指數(shù)應(yīng)被減小的量,邏輯電路執(zhí)行下列中的任一個或兩者作為“檢查”:1)查看由前導(dǎo)I指示器所標(biāo)識的加法器305輸出的位置是否是O ;ii)查看加法器305輸出中正好位于由前導(dǎo)I指示器所標(biāo)識的位置左邊的位置是否是I。如果這些條件中的任一個是真,那么正確的答案不是由前導(dǎo)I指示器306所標(biāo)記的位位置,而是正好位于由前導(dǎo)I指示器所標(biāo)記的位位置左邊的位位置。在這種情況下,前導(dǎo)I指示器將基本上校正其假設(shè)并且向移位器307和加法器308提供正確信息。在此值得注意的是,使用前導(dǎo)I預(yù)感器的原因是確定前導(dǎo)I位置的過程有些廣泛并且可能花費一個或多個時鐘周期。同樣,由加法器305執(zhí)行的加法也有些廣泛并且可能花費一個或多個時鐘周期。如果前導(dǎo)I確定被配置成“跟隨”加法器305,那么將會花費兩個或更多個時鐘周期來確定AB+C的和以及該和的前導(dǎo)I位置。但是,利用圖3所示的體系結(jié)構(gòu),加法器305的求和以及預(yù)感器306的前導(dǎo)I確定很大程度上并行進(jìn)行,從而與串行方法相比減少了花費的總時鐘周期時間。此外,即使前導(dǎo)I預(yù)感器306的結(jié)果可能是錯誤的并且因此被檢查,上述“檢查”操作也相對簡單并且用于執(zhí)行檢查的邏輯端對端相對短,使得檢查操作的時間代價可接受并且因此維持較好的整體解決方案。一旦移位器307已將加法器305的結(jié)果移位并且加法器308已減少了指數(shù)值(如果任何此類移位和指數(shù)減小是可應(yīng)用的),F(xiàn)MADD指令(AB+C)的“答案”已基本上被確定。執(zhí)行最終處理以將其答案與期望精度和適當(dāng)格式聯(lián)接。該處理的一部分包括對尾數(shù)值進(jìn)行舍入。在實施例中,指令可指定兩種不同精度中的任一種:單精度或雙精度。在進(jìn)一步的實施例中,與雙精度值相聯(lián)接的位數(shù)量是單精度值所聯(lián)接的兩倍(或近似兩倍)。在進(jìn)一步的實施例中,單精度格式是由用于符號的I個位、用于尾數(shù)的23個位以及用于指數(shù)的8個位所組成的32位,并且雙精度格式是由用于符號的I個位、用于尾數(shù)的52個位以及用于指數(shù)的11個位所組成的64位。在更進(jìn)一步的實施例中,在功能單元300內(nèi)部,利用高達(dá)128位的精度計算尾數(shù)。在此,乘法器301的輸出寬度被布線成128位以處理兩個64位整數(shù)值的整數(shù)乘法。同樣,加法器305輸出和移位器307輸出也是128位。如此,在多個實施例中,由功能單元300在內(nèi)部計算的結(jié)果的尾數(shù)的位數(shù)可超出實際上作為最終結(jié)果的尾數(shù)提供的位數(shù)。因此,舍入操作查看最終提供的尾數(shù)之下的任何位是否是I一其被稱為粘著位。在圖3的體系結(jié)構(gòu)中,尾隨零邏輯塊309確定移位器307的輸出中的尾隨零的數(shù)量。當(dāng)與功能單元300的計算中的附加位的數(shù)量相比時,該數(shù)量指示最終提供的尾數(shù)之下的位中是否存在I。如果將尾數(shù)向左移位以消除前導(dǎo)O同時移位底部的零,那么需要考慮附加尾隨零的數(shù)量(其與前導(dǎo)I塊306所計算的向左移位量相等)。在此,為了正確地計算移位器307的輸出中的尾隨零的數(shù)量,尾隨零檢測器309應(yīng)知曉由前導(dǎo)I預(yù)感器306施加的任何移位,因此尾隨零檢測器309也被觀察到從前導(dǎo)I預(yù)感器306接收輸入。確定從最低階(最右端)位位置開始并且向左逐位移動至每一個下一高階位位置的零的數(shù)量,直至最低有效(最右端)值I的位置。如果尾隨零的數(shù)量延伸至或超出(向左)給定精度尾數(shù)的最低有效(最右端)位位置,那么最低有效位位置被保持在其當(dāng)前值(即,不進(jìn)行上舍入)。否則,即發(fā)生上舍入,并且針對可適用精度的尾數(shù)的最低有效位位置增加:i)從O到1,或者ii)從I到O并且出現(xiàn)波動至下一較高位位置的進(jìn)位項。上舍入加法器310用于將值I加到移位器307中的結(jié)果尾數(shù)的最低有效位位置,以用于可適用的精度。采用加法器310的輸出作為遵循期望精度的最終尾數(shù)值。在一實施例中,一直采用加法器310的輸出作為遵循期望精度的最終尾數(shù)值,其中如果沒有發(fā)生上舍入則將值O有效地加到移位器307輸出,并且如果確實發(fā)生上舍入則在最右端位置處將值I加到移位器307輸出以用于給定精度。如圖3所示,粘著位計算邏輯311基于尾隨零檢測邏輯309的輸出和期望精度來確定上舍入是否是必要的,并且上舍入控制邏輯312根據(jù)粘著位的確定,在最低有效位位置處將O或I提供到加法器310以用于期望精度(如果沒有上舍入發(fā)生則將加入0,如果有上舍入要發(fā)生則加入I)。注意,在圖3的實施例中,尾隨零檢測邏輯309對提供到加法器305的操作數(shù)進(jìn)行操作,使得類似于前導(dǎo)I預(yù)感器306,其可與加法器305并行地操作。在進(jìn)一步的實施例中,尾隨零檢測器標(biāo)識每個操作數(shù)中為I的最低有效(最右端)位值,并且標(biāo)記這兩個操作數(shù)中的最低有效位位置,作為確定加法器305輸出中的尾隨零數(shù)量的基礎(chǔ)。由前導(dǎo)I預(yù)感器所引起的任何移位也可由尾隨零檢測器309來解決。即,對于給定精度,加法器305結(jié)果的任何移位將影響在確定它們是否延伸到或超出移位器307輸出的最低有效位之前需要檢測多少個零。注意,用于尾隨零檢測的該方法不需要任何“檢查”(如前導(dǎo)I預(yù)感器那樣),因為不可能(從數(shù)學(xué)方面而言)發(fā)生錯誤。以上描述是就VMADD指令的浮點計算而言撰寫的。在整數(shù)VMADD指令的情況下,整數(shù)操作數(shù)被簡單地提供給乘法器301輸入。在此,在支持53位雙精度浮點尾數(shù)計算的實施例中,乘法器被設(shè)計成處理64位整數(shù)乘法。如此,乘法器輸出是128位寬。在64位整數(shù)操作的情況下,在一實施例中,用64個零填補C項左側(cè),使得其最低有效位與乘法器301輸出的最低有效位對齊。即,被提供給加法器305的C項操作數(shù)具有64位零作為其左半部分以及具有64位C輸入操作數(shù)作為其右半部分。由于該實施例支持I雙精度或64位整數(shù)以及2單精度或232位整數(shù)操作的運算,對于32位整數(shù),這兩個C項中每一個的上半部分(每32位)用零來填補以使得它們變?yōu)?4位寬。在32位整數(shù)操作的情況下,適當(dāng)?shù)靥钛a了 C項。在一實施例中,通過利用移位器304將C項向右移位,有效地完成了零填補。在進(jìn)一步的實施例中,對于整數(shù)操作,指數(shù)差塊303用于根據(jù)整數(shù)運算精度來指定移位量。即,例如,對于64位整數(shù)操作,指數(shù)差塊303被配置成將輸入信號發(fā)送至移位器304,該信號導(dǎo)致移位器304將C項向右移位64位;以及對于32位操作,指數(shù)差塊303被配置成將輸入信號發(fā)送至移位器304,該信號導(dǎo)致移位器304將C項向右移位96位。加法器305將乘法器輸出和經(jīng)移位、經(jīng)對齊的C項值相加以確定AB+C的整數(shù)值。因為AB+C整數(shù)值的大小可能超出最終結(jié)果的可允許位寬度,因此在一實施例中,加法器305的輸出的高半部分或低半部分由移位器作為最終結(jié)果來傳遞。例如,在其中加法器305的輸出是128位寬且應(yīng)用64位整數(shù)操作的實施例中,指令的結(jié)果僅可為64位寬但是內(nèi)部功能單元計算128位整數(shù)值。如此,對于整數(shù)操作VMADDH和VMADDL存在兩種不同的VMADD指令。VMADDH提供128位加法器輸出的最高有效64位,并且VMADDL提供128位加法器輸出的最低有效64位。在整數(shù)VMADD操作的情況下,除了可能向加法器310加入無意義的零之外,不使用乘積指數(shù)塊302、前導(dǎo)I預(yù)感器307、指數(shù)加法器308、尾隨零檢測器309、粘著位邏輯311以及上舍入控制邏輯312。圖4a示出上述功能單元的浮點VMADD操作的實施例,并且圖4b示出上述功能單元的整數(shù)VMADDL/H操作的實施例。參見圖4a,將操作數(shù)A和B的相應(yīng)尾數(shù)值相乘(401 )。基本上并行地,確定AB項和C項的指數(shù)值之差(402),并且采用AB項指數(shù)和C項指數(shù)中的最大者作為結(jié)果的初始指數(shù)(403)?;谒_定的AB項和C項的指數(shù)之差,將具有較小指數(shù)的項的尾數(shù)移位(404)以與具有較大指數(shù)的項的尾數(shù)對齊。隨后將AB項和C項的經(jīng)對齊的尾數(shù)相加(405)?;旧喜⑿械?,預(yù)測加法器結(jié)果的前導(dǎo)I (406)。相對于AB+C的和結(jié)果檢查對前導(dǎo)I的預(yù)測(407)?;谇皩?dǎo)IDE確定,將AB+C的尾數(shù)求和的結(jié)果移位從而以整數(shù)值作為開頭(408)并且調(diào)整指令的指數(shù)結(jié)果(409)。如果必要則執(zhí)行上舍入(410)并且基于指定精度提供尾數(shù)值。參見圖4b,將整數(shù)A和B項相乘(411)并且填補C項(412)以與AB乘積對齊。將AB和C整數(shù)項相加(413)。如果指令指定高部分則提供AB+C的高部分,或者如果指令指定低部分則提供AB+C的低部分。注意,與VMADDL連續(xù)地執(zhí)行VMADDH并且將結(jié)果存儲在分開的位置允許系統(tǒng)保持AB+C的總值。值得重復(fù)的是,對功能單元300的上述說明描述了可在向量功能單元中多次例示,使得向量乘加指令(VMADD)被執(zhí)行的功能單元。圖3的功能單元300還可被增強以執(zhí)行以下指令中的任何一個或多個的標(biāo)量分量:i)向量前導(dǎo)零計數(shù)指令(VCLZ),其接收輸入向量C并提供輸出向量作為結(jié)果,該輸出向量的元素分別對應(yīng)于輸入向量C的元素的前導(dǎo)零計數(shù);ii)向量尾隨零計數(shù)指令(VCTZ),其接收輸入向量C并提供輸出向量作為結(jié)果,該輸出向量的元素分別對應(yīng)于輸入向量C的元素的尾隨零計數(shù);iii)向量計數(shù)指令(VCNT),其接收輸入向量C并提供輸出向量作為結(jié)果,該輸出向量的各個元素分別對應(yīng)于輸入向量C的各個元素內(nèi)的I的計數(shù);以及iv)向量奇偶指令(VPAR),其接收輸入向量C并提供輸出向量作為結(jié)果,該輸出向量的各個元素分別對應(yīng)于輸入向量C的各個兀素的奇偶狀態(tài)(奇或偶)。圖5示出增強功能單元500,其包括附加邏輯和邏輯上方的布線以及圖3所示的布線,以執(zhí)行VCLZ、VCTZ、VCNT和VPAR指令的標(biāo)量分量。在一實施例中,相對于這些指令,沿著接收AB+C指令的C操作數(shù)的數(shù)據(jù)路徑接收由圖5的功能單元500所處理的向量的元素。應(yīng)當(dāng)強調(diào),這僅僅是一種方法,并且從設(shè)計者選擇方面而言,可沿著AB+C指令的A、B和C操作數(shù)中任何一個的數(shù)據(jù)路徑來接收VCLZ、VCTZ, VCNT和VPAR指令中任何一種的操作數(shù)。為方便起見,未示出用于執(zhí)行VMADD指令的多個邏輯塊之間的互連。應(yīng)當(dāng)理解,此類互連是存在的(例如,如圖3所示)。當(dāng)然,可利用半導(dǎo)體邏輯電路來實現(xiàn)圖3和圖5兩者所示的任何塊。根據(jù)圖5的特定實施例,因為VCLZ、VCTZ, VCNT和VPAR指令中的任何一種的操作數(shù)是沿著C操作數(shù)的數(shù)據(jù)路徑接收的,所以操作數(shù)由對齊移位器504接收(注意,任何“移位器”可被實現(xiàn)為移位寄存器)。當(dāng)指令指定VCLZ、VCTZ, VCNT和VPAR指令——與VMADD指令相對——中的任何一種時,對齊移位器忽略來自指數(shù)差單元503的任何輸入并且簡單地將C操作數(shù)至少提供給用于相應(yīng)指令的可應(yīng)用邏輯。即,用于VCLZ指令的邏輯506,用于VCTZ指令的邏輯509,以及用于VCNT指令的邏輯530。此外,對齊移位器504在承載用于VMADD指令的AB項的尾數(shù)的數(shù)據(jù)路徑上提供O的良性值。相對于為所提供的操作數(shù)提供前導(dǎo)零計數(shù)的VCLZ指令,比較圖5與圖3,注意邏輯506被實現(xiàn)為前導(dǎo)I和前導(dǎo)O預(yù)感器邏輯電路(與圖3的前導(dǎo)I預(yù)感器邏輯電路相對)。在此,注意操作數(shù)中前導(dǎo)O的數(shù)量與操作數(shù)中前導(dǎo)I的位置有關(guān)。具體地,對于位寬度已知的操作數(shù),前導(dǎo)O的數(shù)量等于操作數(shù)的位寬度與操作數(shù)中前導(dǎo)I的位位置之間的差。記住,在一實施例中,前導(dǎo)I預(yù)感器306確定用于VMADD指令的AB和C尾數(shù)項兩者中的前導(dǎo)I位置并且標(biāo)記這兩項的最高階(最左端)前導(dǎo)I的位置。在此,因為對齊移位器504被配置成對VLCZ指令的AB項提供值0,所以僅C項的前導(dǎo)I位置(用于VLCZ指令的操作數(shù))被標(biāo)記。由此,可確定操作數(shù)的前導(dǎo)零的數(shù)量。注意,如果可應(yīng)用的位長度被指定或以其它方式已知,則不同的操作數(shù)位長度可被容易地處理(例如,32位或64位)。記住,圖3的前導(dǎo)I預(yù)感器306被視為“預(yù)感器”是因為在某些情況下它的初始答案可能是不正確的。具體地,需要檢查加法器305的輸出。但是,在VCLZ指令的情況下,不會發(fā)生這種問題,因為加法器305未被使用。如此,來自邏輯506的“答案”是正確的,無需檢查。前導(dǎo)O計數(shù)最后被傳遞到格式化邏輯513以為指令提供適當(dāng)格式的答案。在一實施例中,前導(dǎo)O計數(shù)(類似于用于VMADD指令的前導(dǎo)I計數(shù))被傳遞到指數(shù)調(diào)整加法器508,指數(shù)調(diào)整加法器508將其轉(zhuǎn)發(fā)到格式化邏輯513。相對于為輸入操作數(shù)提供尾隨零計數(shù)的VCTZ指令,操作數(shù)C被傳遞到尾隨零確定邏輯509。根據(jù)圖3的討論可知,尾隨零確定邏輯309標(biāo)識每個操作數(shù)(AB和C)中值為I的最低有效(最右端)位,并且標(biāo)記這兩個操作數(shù)中的最低有效位位置作為確定加法器305的輸出中的尾隨零數(shù)量的基礎(chǔ)。相對于VCTZ指令的操作應(yīng)用相同操作,另外注意AB項被設(shè)置為零使得僅C項(用于VCTZ指令的操作數(shù))控制由邏輯509提供的最終答案。答案被最終路由到格式化邏輯513,格式化邏輯513為指令提供答案(可由諸如指數(shù)調(diào)整加法器508之類的另一個塊預(yù)先處理該答案)。相對于VCNT指令,I計數(shù)邏輯520為C操作數(shù)中存在的I數(shù)量計數(shù),并且答案被最終路由到格式化邏輯513。相對于VPAR指令,奇偶邏輯530確定C操作數(shù)的奇偶值(例如,操作數(shù)中存在奇數(shù)個I還是偶數(shù)個I)并且該答案被最終路由到格式化邏輯513,格式化邏輯513為指令提供該答案。圖6a到圖6d示出當(dāng)圖5的功能單元500的上述操作被并行地執(zhí)行N次以實現(xiàn)向量操作時圖2的功能單元200的操作。對于VCLZ指令,參見圖6A,接收操作數(shù)/元素的輸入向量(601a),確定每一個操作數(shù)中的前導(dǎo)O的數(shù)量(602a)以及為每一個操作數(shù)提供具有前導(dǎo)O計數(shù)的輸出向量(603a)。對于VCTZ指令,參見圖6B,接收操作數(shù)/元素的輸入向量(601b),確定每一個操作數(shù)中的尾隨O數(shù)量(602b)以及為每一個操作數(shù)提供具有尾隨O計數(shù)的輸出向量(603b)。對于VCNT指令,參見圖6C,接收操作數(shù)/元素的輸入向量(601c),確定每一個操作數(shù)中的I數(shù)量(602c)以及為每一個操作數(shù)提供具有I計數(shù)的輸出向量(603c)。對于VPAR指令,參見圖6D,接收操作數(shù)/元素的輸入向量(601d),確定每一個操作數(shù)的奇偶性(602d)以及為每一個操作數(shù)提供具有奇偶性的輸出向量(603d)。如上所述,以上所討論的功能單元可在半導(dǎo)體處理器的指令執(zhí)行單元內(nèi)實現(xiàn)。圖7示出通用處理核700,其被認(rèn)為是描述了許多不同類型的處理核體系結(jié)構(gòu),諸如復(fù)雜指令集(CISC)、精簡指令集(RISC)以及超長指令字(VLIW)。圖7的通用處理核700包括:1)取出單元703,其(例如從高速緩存和/或存儲器)取出指令;2)解碼單元704,其解碼指令;3)調(diào)度單元705,其確定對執(zhí)行單元706的時序和/或指令發(fā)布次序(注意調(diào)度器是可選的);4)執(zhí)行單元706,其執(zhí)行指令(典型指令執(zhí)行單元包括分支執(zhí)行單元、整數(shù)算術(shù)執(zhí)行單元(例如ALU)、浮點算術(shù)執(zhí)行單元(例如FPU)以及存儲器訪問執(zhí)行單元);以及5)回退單元707,其表明指令成功完成。注意,處理核700可以或者可以不采用微代碼708。盡管上述功能單元示出端對端硬連接數(shù)據(jù)路徑,但是總的來說上述任何/全部處理有可能利用微代碼而不是專用邏輯來實現(xiàn)。在微代碼處理器的情況下,微操作碼通常被存儲在其上構(gòu)建處理器的半導(dǎo)體芯片內(nèi)的非易失性機器可讀介質(zhì)(諸如只讀存儲器(ROM))中并且導(dǎo)致處理器內(nèi)的執(zhí)行單元執(zhí)行由指令調(diào)用的期望功能。
具有上述功能的處理器也可被實現(xiàn)到多種計算系統(tǒng)中。圖8示出計算系統(tǒng)(例如計算機)的實施例。圖8的示例性計算系統(tǒng)包括:1) 一個或多個處理器801,其可被設(shè)計成包括向量邏輯簡化指令;2)存儲器控制中樞(MCH) 802 ;3)系統(tǒng)存儲器803 (其存在不同類型,諸如DDR RAM、EDO RAM等);4)高速緩存804 ;5) I/O控制中樞(ICH) 805 ;6)圖形處理器806;7)顯示器/屏幕807 (其存在不同類型,諸如陰極射線管(CRT)、平板、薄膜晶體管(TFT)、液晶顯示器(LCD)、DPL等);一個或多個I/O器件808。一個或多個處理器801執(zhí)行指令以便于執(zhí)行計算系統(tǒng)實現(xiàn)的任何軟件例程。指令經(jīng)常涉及對數(shù)據(jù)執(zhí)行的某類操作。數(shù)據(jù)和指令兩者被存儲在系統(tǒng)存儲器803和高速緩存804中。高速緩存804通常被設(shè)計成等待時間比系統(tǒng)存儲器803更短。例如,高速緩存804可被集成到與處理器相同的硅芯片上和/或利用較快SRAM單元來構(gòu)造,同時系統(tǒng)存儲器803可利用較慢DRAM單元來構(gòu)造。通過趨向于在與系統(tǒng)存儲器803相對的高速緩存804中存儲較頻繁使用的指令和數(shù)據(jù),改善了計算系統(tǒng)的整體性能效率。故意使系統(tǒng)存儲器803可用于計算系統(tǒng)內(nèi)的其它組件。例如,從多個接口(例如,鍵盤和鼠標(biāo)、打印機端口、局域網(wǎng)端口、調(diào)制解調(diào)器端口等)接收到計算系統(tǒng)的或從計算系統(tǒng)的內(nèi)部存儲元件(例如,硬盤驅(qū)動器)取回的數(shù)據(jù)在它們被軟件程序的實現(xiàn)過程中的一個或多個處理器801操作之前經(jīng)常在系統(tǒng)存儲器803中被臨時性地排隊。類似地,軟件程序所確定的應(yīng)當(dāng)通過計算系統(tǒng)接口之一從計算系統(tǒng)發(fā)送到外部實體或存儲到內(nèi)部存儲元件的數(shù)據(jù)在其被發(fā)送或存儲之前經(jīng)常在系統(tǒng)存儲器903中被臨時性地排隊。ICH805負(fù)責(zé)確保此類數(shù)據(jù)在系統(tǒng)存儲器803與其適當(dāng)?shù)南鄳?yīng)計算系統(tǒng)接口(以及內(nèi)部存儲器件,如果計算系統(tǒng)是這樣設(shè)計的話)之間正確地傳遞。MCH802負(fù)責(zé)管理處理器801、接口以及內(nèi)部存儲元件之間對于系統(tǒng)存儲器803訪問的多種競爭請求,這些請求可能在時間上彼此緊接地出現(xiàn)。一個或多個I/O器件808同樣被實現(xiàn)在典型計算系統(tǒng)中。I/O器件通常負(fù)責(zé)將數(shù)據(jù)傳遞到計算系統(tǒng)(例如,網(wǎng)絡(luò)適配器)和/或傳遞來自計算系統(tǒng)的數(shù)據(jù);或者,對于大規(guī)模非易失性存儲而言,在計算系統(tǒng)內(nèi)部(例如硬盤驅(qū)動器)傳遞數(shù)據(jù)。ICH805在其自身與所示I/O器件808之間具有雙向點對點鏈路。在上述說明書中,已經(jīng)參考特定示例性實施例描述了本發(fā)明。然而,顯然可對這些實施例作出各種修改和改變,而不背離如所附權(quán)利要求所述的本發(fā)明的更寬泛精神和范圍。因此,說明書和附圖應(yīng)被認(rèn)為是說明性而非限制性意義。
權(quán)利要求
1.一種向量功能單元,其中所述向量功能單元被實現(xiàn)在半導(dǎo)體芯片上以執(zhí)行N維向量操作,所述向量功能單元包括: N個功能單元,所述N個功能單元中的每一個包括邏輯電路,所述邏輯電路用于執(zhí)行: 第一整數(shù)乘加指令,其提供第一整數(shù)乘加運算的最高階位而不提供最低階位; 第二整數(shù)乘加指令,其提供第二整數(shù)乘加運算的最低階位而不提供最高階位;以及 掩模電路,用于允許提供來自所述N個功能單元中的所選單元的輸出結(jié)果。
2.如權(quán)利要求1所述的向量功能單元,其特征在于,所述N個功能單元中的每一個還包括用于執(zhí)行浮點乘加指令的邏輯電路。
3.如權(quán)利要求1所述的向量功能單元,其特征在于,所述功能單元中的每一個支持32位和64位操作。
4.如權(quán)利要求1所述的向量功能單元,其特征在于,所述功能單元中的每一個包括在加法器之前的第一移位寄存器以及在所述加法器之后的第二移位寄存器。
5.如權(quán)利要求4所述的向量功能單元,其特征在于,所述加法器的輸出的位寬大于所述第一整數(shù)乘法指令和所述第二整數(shù)乘法指令中任一個的標(biāo)量結(jié)果的位寬。
6.如權(quán)利要求5所述的向量功能單元,其特征在于,所述移位寄存器耦合到計算AB項的指數(shù)值和C項的指數(shù)值之差的邏輯電路。
7.一種方法,包括: 在半導(dǎo)體芯片上執(zhí)行向量操作,包括利用在所述半導(dǎo)體芯片上實現(xiàn)的向量功能單元執(zhí)行第一向量指令以及利用所述向量功能單元執(zhí)行第二向量指令,所述向量功能單元對元素進(jìn)行掩模以實現(xiàn)向量操作,所述第一向量指令是提供最高階位而不提供最低階位的第一向量整數(shù)乘加指令,所述第二向量指令是提供最低階位而不提供最高階位的第二向量乘加指令。
8.如權(quán)利要求7所述的方法,其特征在于,還包括在計算系統(tǒng)的不同存儲位置中存儲所述第一指令的結(jié)果并且存儲所述第二指令的結(jié)果。
9.如權(quán)利要求7所述的方法,其特征在于,所述方法還包括利用所述向量功能單元執(zhí)行向量浮點乘加指令。
10.如權(quán)利要求9所述的方法,其特征在于,還包括對于所述向量整數(shù)乘加指令和所述向量浮點乘加指令中的每一個使用相同加法器執(zhí)行AB項和C項的求和。
11.如權(quán)利要求7所述的方法,其特征在于,所述第一向量整數(shù)乘加指令的結(jié)果提供比所述第二向量整數(shù)乘加指令的結(jié)果更多的位。
12.如權(quán)利要求11所述的方法,其特征在于,所述第一整數(shù)乘加指令提供64位,且所述第二向量整數(shù)乘加指令提供32位。
13.一種計算系統(tǒng),包括: 硬盤驅(qū)動器;以及 處理器,所述處理器被實現(xiàn)在半導(dǎo)體芯片上以執(zhí)行N維向量操作,所述處理器包括N個功能單元,所述N個功能單元中的每一個包括邏輯電路,所述邏輯電路用于執(zhí)行: 第一整數(shù)乘加指令,其提供第一整數(shù)乘加運算的最高階位而不提供最低階位;以及 第二整數(shù)乘加指令,其提供第二整數(shù)乘加運算的最低階位而不提供最高階位; 所述處理器還包括用于允許提供來自所述N個功能單元中的所選單元的輸出結(jié)果的掩模電路。
14.如權(quán)利要求13所述的計算系統(tǒng),其特征在于,所述N個功能單元中的每一個還包括用于執(zhí)行浮點乘加指令的邏輯電路。
15.如權(quán)利要求13所述的計算系統(tǒng),其特征在于,所述功能單元中的每一個支持32位和64位操作。
16.如權(quán)利要求13所述的計算系統(tǒng),其特征在于,所述功能單元中的每一個包括在加法器之前的第一移位寄存器以及在所述加法器之后的第二移位寄存器。
17.如權(quán)利要求16所述的計算系統(tǒng),其特征在于,所述加法器的輸出的位寬大于所述第一整數(shù)乘法指令和所述第二整數(shù)乘法指令中任一個的標(biāo)量結(jié)果的位寬。
18.如權(quán)利要求16所述的計算系統(tǒng),其特征在于,所述移位寄存器耦合到計算AB項的指數(shù)值和C項的指數(shù)值之差的邏輯電路。
全文摘要
描述了一種向量功能單元,其被實現(xiàn)在半導(dǎo)體芯片上以執(zhí)行N維向量操作。向量功能單元包括N個功能單元。N個功能單元中的每一個包括邏輯電路,該邏輯電路用于執(zhí)行提供第一整數(shù)乘加運算的最高階位而不提供最低階位的第一整數(shù)乘加指令,以及提供第二整數(shù)乘加運算的最低階位而不提供最高階位的第二整數(shù)乘加指令。
文檔編號G06F9/30GK103119579SQ201180045903
公開日2013年5月22日 申請日期2011年9月23日 優(yōu)先權(quán)日2010年9月24日
發(fā)明者J·韋德梅耶, S·薩姆德若拉, R·高利弗 申請人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1