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

用于向量前導零、向量后導零、向量操作數(shù)1計數(shù)和向量奇偶性計算的功能單元的制作方法

文檔序號:11864351閱讀:477來源:國知局
用于向量前導零、向量后導零、向量操作數(shù) 1 計數(shù)和向量奇偶性計算的功能單元的制作方法與工藝

技術領域

本發(fā)明的領域一般涉及計算機系統(tǒng),并且更具體地涉及一種用于執(zhí)行向量乘加指令以及使用用于計算向量乘加結果的邏輯塊的其它指令的處理器體系結構。



背景技術:

計算機科學領域廣泛地認可兩種類型的處理器體系結構,即“標量”和“向量”。標量處理器被設計成執(zhí)行對單個數(shù)據(jù)集進行運算的指令,而向量處理器被設計成執(zhí)行對多個數(shù)據(jù)集進行運算的指令。圖1A和圖1B呈現(xiàn)出演示標量處理器和向量處理器之間的基本差別的比較性示例。

圖1A示出了標量“與”指令的示例,其中單個操作數(shù)集A和B“與”在一起以生成單數(shù)(singular)(或“標量”)結果C(即,AB=C)。作為對比,圖1B示出了向量“與”指令的示例,其中兩個操作數(shù)集A/B和D/E分別并行地“與”在一起以同時生成向量結果C、F(即,A“與”B=C且D“與”E=F)。

通常,本領域公知的是,兩個輸入操作數(shù)和輸出結果存儲在專用寄存器中。例如,許多指令將具有兩個輸入操作數(shù)。因此,將使用兩個不同的輸入寄存器來臨時存儲各輸入操作數(shù)。而且,這些相同的指令將生成輸出值,該輸出值臨時存儲在第三(結果)寄存器中。在圖1A和圖1B中觀察到各個輸入寄存器101a、101b和102a、102b以及結果寄存器103a、103b。明顯地,能夠容易地辨別出“標量”對“向量”的特性。

也就是說,觀察到圖1A的標量設計輸入寄存器101a和102a僅保持標 量值(分別為A和B)。同樣,也觀察到圖1A的標量設計的結果寄存器103a僅保持標量值(C)。作為對比,觀察到圖1B的向量系統(tǒng)的輸入寄存器101b和102b保持向量(寄存器101b中的A、D以及寄存器102b中的B、E)。同樣,也觀察到圖1B的向量系統(tǒng)的結果寄存器103b保持向量值(C、F)。從術語上講,圖1B的向量系統(tǒng)的寄存器101b、102b和103b中的每個的內容能夠統(tǒng)稱為“向量”,并且向量內的各個單個的標量值能夠稱為“元素”。因此,觀察到例如寄存器101b存儲有“向量”A、D,其由“元素”A和“元素”D構成。

已知的是僅標量或SIMD乘運算已經實際上在半導體芯片處理器中實現(xiàn)為單個處理器指令。已知已經在半導體芯片處理器中實現(xiàn)的標量或SIMD乘指令包括:“乘”指令(MUL),其提供兩個整數(shù)輸入操作數(shù)的乘積的較低階位;以及“乘高(multiply high)”指令(MULH),其提供標量整數(shù)乘運算的較高階位。

已知在半導體處理器芯片中實現(xiàn)為標量或SIMD指令的其它指令包括“計數(shù)前導零”CLZ指令、“計數(shù)后導零”指令CTZ和“計數(shù)”指令CNT。標量CLZ指令接受標量輸入A并且返回A中的在A中的最高階1之前的0的數(shù)量(例如,如果A=1000,則CLZ的結果=0;如果A=0100,則CLZ的結果=1;如果A=0010,則CLZ的結果=2;等等)。標量CTZ指令接受標量輸入A并且返回A中的在A中最低階1之后的0的數(shù)量(例如,如果A=1000,則CTZ的結果=3;如果A=0100,則CTZ的結果=2;如果A=0010,則CTZ的結果=1,等等)。標量CNT指令接受標量輸入A并且返回A中的1的數(shù)量(例如,如果A=1011,則CLZ的結果=3;如果A=1001,則CLZ的結果=2;如果A=0010,則CLZ的結果=1,等等)。

附圖說明

在隨附附圖中的各圖中,通過示例而不是限制的方式闡述了本發(fā)明,其中相似的附圖標記表示相似的元件,并且其中:

圖1a和1b示出了標量邏輯運算和向量邏輯運算;

圖2示出了向量乘加功能單元;

圖3示出了能夠用于圖2的功能單元200_1至200_N中的每個的電子 功能單元的實施例;

圖4a示出了向量浮點乘加運算;

圖4b示出了向量整數(shù)浮點運算;

圖5示出了圖3的功能單元的實施例,該功能單元具有執(zhí)行前導零、后導零、操作數(shù)1計數(shù)及奇偶性指令的擴展邏輯;

圖6a至6d示出了下列指令的執(zhí)行,分別為:前導零確定、后導零確定、操作數(shù)1計數(shù)以及操作數(shù)奇偶性確定;

圖7示出了半導體處理器的圖;

圖8示出了計算系統(tǒng)的圖。

具體實施方式

一些計算機系統(tǒng)可能要求“乘加”運算。乘加運算執(zhí)行計算(A*B)+C,其中A、B和C中的每個為輸入操作數(shù)。圖2示出了能夠執(zhí)行向量乘加指令(VMADD)的向量處理功能單元200的高級體系結構圖。從圖2中可觀察到,功能單元包括N個標量邏輯單元200_1至200_N,每個標量邏輯單元對輸入向量的各元素執(zhí)行標量乘加運算。此處,輸入寄存器203保持輸入向量A=A_1,A_2,…A_N;輸入寄存器204保持輸入向量B=B_1,B_2,…B_N;并且,輸入寄存器205保持輸入向量C=C_1,C_2,…C_N。標量邏輯單元200_1執(zhí)行計算((A_1)*(B_1))+C_1;標量邏輯單元200_2執(zhí)行計算((A_2)*(B_2))+C_2;…;并且,標量邏輯單元200_N執(zhí)行計算((A_N)*(B_N))+C_N。在實施例中,每個標量邏輯單元既支持32位操作數(shù)運算模式,又支持64位操作數(shù)運算模式。由邏輯單元200_1至200_N生成的各個結果202_1至202_N對應于存儲在輸出寄存器中的由向量功能單元200提供的輸出向量的各個元素。

圖2還示出了,為了實現(xiàn)與SIMD運算相對的向量運算,掩碼層可并入到輸出電路206中。向量運算可在如下意義上視為不同于SIMD運算:輸入操作數(shù)的維數(shù)對于向量機而言是可變的,但是對于SIMD機而言是固定的。改變圖2的向量機中的元素數(shù)的能力是通過能夠在輸出206處執(zhí)行的掩碼來表示的。具體地,每個輸出元素可通過其自身的各個寫邏輯電路(未示出)寫入。在實施例中,寫邏輯電路能夠寫入到任何輸出元素位置。 通過使能寫邏輯電路僅用于那些與有效向量操作數(shù)元素對應的元素,能夠對可變長度的向量進行處理。這具有實質上僅使能與有效向量元素對應的那些標量功能單元200_1至200_N的操作的效果。此外,掩碼使能呈現(xiàn)出對于有效元素檢測出算術異常,同時抑制非活動元素的異常。

如在下文中進一步詳細描述的,除了計算向量乘加指令外,功能單元200還能夠計算多個附加的向量指令,諸如下述一個或多個:i)用于整數(shù)操作數(shù)的向量乘加高指令(VMADDH),其提供了向量乘加計算的較高階位;ii)用于整數(shù)操作數(shù)的向量乘加(VMADDL),其提供向量乘加計算的較低階位;iii)向量計數(shù)前導零指令(VCLZ),其接受輸入向量C并且提供作為結果的其元素分別對應于輸入向量C的元素的前導零計數(shù)的輸出向量;iv)向量計數(shù)后導零指令(VCTZ),其接受輸入向量C并且提供作為結果的其元素分別對應于輸入向量C的元素的后導零計數(shù)的輸出向量;v)向量計數(shù)指令(VCNT),其接受輸入向量C并且提供作為結果的其各元素分別對應于輸入向量C的各個元素內的1的計數(shù)的輸出向量;以及vi)向量奇偶性指令(VPAR),其接受輸入向量C并且提供作為結果的其各個元素分別對應于輸入向量C的各個元素的奇偶性狀態(tài)(奇或偶)的輸出向量。如同VMADD指令,上面列舉的每個指令均通過向量輸入A、B和C的各個輸入操作數(shù)元素的標量執(zhí)行來實現(xiàn)。在另一實施例中,再次如下文更加詳細描述的,由功能單元200執(zhí)行的任意/全部指令能夠在浮點以及整數(shù)操作數(shù)上運算。

圖3示出了圖2的標量邏輯單元中的一個的實施例。如當前所描述的,標量邏輯單元能夠對支持上述VMADD、VMADDH、VMADDL、VCLZ、VTLZ、VCNT和VPAR指令中的任一指令的輸入向量A、B和C的各元素執(zhí)行標量運算。

現(xiàn)在將說明當輸入向量A、B和C的元素和輸出向量R的元素被指定為浮點形式時VMADD指令的運算。如本領域所公知的,浮點的數(shù)值的表達呈現(xiàn)為(符號)*(尾數(shù))*(指數(shù))的形式,其中符號值表示數(shù)值是為正還是負,尾數(shù)值指定值的“數(shù)”,指數(shù)值指定值的階。VMADD指令則可指定為如下:((A_sgn)(B_sgn)(A_mantissa)(B_mantissa)(A_exponent+B_exponent))+(C_sgn)(C_mantissa)(C_exponent)。

參照圖3,乘法器301計算(A_sgn)(B_sgn)(A_mantissa)(B_mantissa)項,至少作為(A_mantissa)(B_mantissa)的顯式計算。乘積的符號可容易地計算為:i)如果A_sgn和B_sgn具有相同的值,則為正;或者,ii)如果A_sgn和B_sgn具有不同的值,則為負。乘積指數(shù)塊302通過取如下兩者中的較大者來確定最終結果的指數(shù)的初始計算:i)(A_exponent+B_exponent);以及,ii)C_exponent。也就是說,如果C值比A和B的乘積大得多,則C項的階將控制最終結果的階。同樣,如果AB比C大得多,則AB的階將控制最終結果的階。

加法器305執(zhí)行AB+C相加的計算。然而,注意的是,在以浮點形式執(zhí)行相加之前,在實施例中,使得AB項的指數(shù)(即,與乘法器301的輸出相關聯(lián)的指數(shù))與C項的指數(shù)相同。指數(shù)差塊303和移位器304用于實現(xiàn)該處理。具體地,指數(shù)差塊303取得AB項的指數(shù)與C項的指數(shù)之間的差(即,i)(A_exponent+B_exponent)以及ii)C_exponent之間的差)。還識別兩項中的較小者(例如,通過分析乘積指數(shù)塊302的輸出)。兩項中的較小者的尾數(shù)的二進制點位置,也就是AB乘積項或C項的尾數(shù)的二進制點位置(無論哪個具有較小的指數(shù)項),“向左”移位與由差塊303確定的兩項之間的指數(shù)差對應的位的位置數(shù)。移位的項以及另一非移位的項被傳遞給加法器305。

作為示例,如果AB乘積項對應于5.5555E8并且C項對應于2.2222E6,則C項(2.2222)的尾數(shù)的二進制點位置將通過移位器304向左移位兩個位置(0.02222),以使加法器305能夠將具有相同指數(shù)值的兩個數(shù)的尾數(shù)正確地相加。在該示例中,加法器305將5.5555E8和0.02222E8正確地相加。因此,在實施例中,移位器304與差塊303的輸出耦合,以確定要應用于AB項和C項中的一個的尾數(shù)的二進制點位置的正確移位量。在另一實施例中,AB項和C項中的一個的尾數(shù)的二進制點位置移位,而另一個不移位。移位的尾數(shù)值和非移位的尾數(shù)值隨后提供給加法器305。當然,在差塊303確定出AB項和C項的指數(shù)相同的情況下,不執(zhí)行移位,并且AB項和C項兩者的尾數(shù)均傳遞給加法器305,而不進行移位。

在實施例中,AB項和C項的符號值也傳遞給加法器305,以使得例如,如果C項的符號為負,則正確地執(zhí)行AB-C的有效相減。在兩項之間的有 效相減(即,當AB項的符號與C項的符號不同時)并且兩項的絕對值近似相等的情況下,加法器305的輸出可以為接近于零的數(shù)。因此,加法器305輸出處的尾數(shù)值可在觀察到第一個1之前具有前導0串。在該情況下,為了生成較高精度的結果,加法器305輸出處的尾數(shù)值的二進制點應當移位以生成使得整數(shù)作為其第一個值的尾數(shù)。

例如,如果加法器被提供了AB尾數(shù)和符號項-5.555566…以及C尾數(shù)和符號項+5.555555…,則加法器305將生成-0.000011的輸出。為了提高最終結果的精度,來自加法器305的結果的二進制點應當向右移位5個位以呈1.111111…的形式。由于二進制點向右的移位對應于指數(shù)值的變化,所以指數(shù)值也將需要改變。在該特定示例中,使尾數(shù)二進制點向右移位5位對應于使指數(shù)值減5。因此,當在加法器305輸出處提供的尾數(shù)項具有前導零時,不僅其二進制點需要向右移位,而且在乘積指數(shù)塊303的輸出處的指數(shù)項需要減小。此處,前導1預測器塊306、標準化移位器307和指數(shù)加法器308用于實現(xiàn)這些任務。

具體地,前導1預測器塊306標記加法器輸出中的第一個(最左邊)1的位置,并且指示標準化移位器307加法器輸出應當向右移位多少個二進制點,并且指示指數(shù)加法器308來自指數(shù)塊302的指數(shù)值應當減少多少。在實施例中,加法器輸出向右移動二進制點實際上是通過使加法器輸出的數(shù)字內容向左移動來實現(xiàn)的。在相同或其它的實施例中,加法器308理解,來自前導1預測器306的值應當從乘積指數(shù)302輸出值中減去。

在實施例中,前導1預測器操作如下。在提供給加法器305的兩個輸入操作數(shù)(即,AB項的尾數(shù)和C項的尾數(shù))中,前導1預測器306分別確定這兩個項中的前導1的位置并且標記一對前導1位置中的最左邊位的位置。例如,如果AB項的尾數(shù)為0001100101…并且C項的尾數(shù)為0000100000…,則前導1預測器306將標記第四位的位置,因為(AB尾數(shù)項中)第四位的位置為兩個操作數(shù)中的最左邊(或最高階)的前導1。該確定隨后被假設為加法器305的輸出的前導1位置。在許多情況下,該假設將是正確的,并且用于確定由標準化移位器307執(zhí)行的加法器輸出移位量以及由加法器308執(zhí)行的指數(shù)減少量。

在一些情況下,假設將是不正確的。在上文的示例中提供的兩個操作 數(shù)將由加法器相加以生成加法器輸出0010000101…。在假設不正確的情況下,如本示例中,兩個操作數(shù)的相加使得在由前導1預測器識別的位位置處存在進位項(即,由前導1預測器識別的加法器輸出的位位置為0),并且因此,由前導1預測器識別的位置左邊一個位置的位位置為1。這樣,在實施例中,在釋放由前導1指示器306標記的假設值作為加法器輸出應當移位及其指數(shù)應當減少的量之前,邏輯電路執(zhí)行下列中的任一個或兩個作為“校驗”:i)確認由前導1指示器識別的加法器305輸出的位置是否為0;ii)確認恰在由前導1指示器識別的位置的左邊的加法器305輸出的位置是否為1。如果這些條件中的任一個為真,則正確的答案不是由前導1指示器306標記的位位置,而是恰在由前導1指示器標記的位位置左邊的位位置。在該情況下,前導1指示器將實質上校正其假設并且提供正確的信息給移位器307和加法器308。

此處,值得注意的是,使用前導1預測器的原因在于,確定前導1位置的處理略復雜并且會消耗一個或多個時鐘循環(huán)。同樣,由加法器305執(zhí)行的相加也略綜合并且會消耗一個或多個時鐘循環(huán)。如果前導1確定被配置為“緊隨”加法器305,則將消耗兩個或更多個時鐘循環(huán)來確定AB+C之和以及和的前導1位置。然而,通過圖3所示的體系結構,加法器305的求和以及預測器306的前導1確定主要是并行進行的,從而與串行方法相比減少了消耗的總時鐘循環(huán)時間。而且,即使前導1預測器306的結果可能是錯誤的并且因此進行校驗,上文所述的“校驗”操作相對簡單,并且用于實施校驗的邏輯端對端相對短,使得校驗操作的時間懲罰是可接受的并且因此保持了更佳的整體方案。

一旦移位器307已經對加法器305的結果進行移位并且加法器308已經減少了指數(shù)值(如果任何這樣的移位和指數(shù)減少是可應用的),F(xiàn)MADD指令(AB+C)的“答案”實質上已經確定。執(zhí)行最后的處理以通過所期望的精度和適當?shù)母袷絹肀磉_其答案。部分該處理包括尾數(shù)值的舍入。在實施例中,指令能夠指定兩種不同精度級別中的任一個:單精度或雙精度。在另一實施例中,以表達單精度值的位數(shù)的兩倍(或近似兩倍)來表達雙精度值。在另一實施例中,單精度格式為由1個符號位、23個尾數(shù)位以及8個指數(shù)位構成的32位,并且雙精度格式為由1個符號位、52個尾數(shù)位以 及11個指數(shù)位構成的64位。在又一實施例中,在功能單元300的內部,通過高達128位的精度來計算尾數(shù)。此處,乘法器301的輸出寬度被配線(wire)為128位,以處理兩個64位整數(shù)值的整數(shù)相乘。同樣,加法器305的輸出和移位器307的輸出也是128位。

因此,在各個實施例中,針對結果的尾數(shù)由功能單元300在內部計算出的位數(shù)會超過實際上呈現(xiàn)為最終結果的尾數(shù)的位數(shù)。這樣,舍入運算確認最終呈現(xiàn)的尾數(shù)以下的任何位是否為1,該位稱為粘接位(sticky bit)。在圖3的體系結構中,后導零邏輯塊309確定移位器307的輸出中后導零的數(shù)量。當與在功能單元300的計算中附加位的數(shù)量相比時該數(shù)量指示最終呈現(xiàn)的尾數(shù)以下的位中是否存在1。如果尾數(shù)左移以消除前導零同時使末尾的零移位,則需要考慮到與由前導1塊306計算出的左移量相等的附加后導零的數(shù)量。此處,為了正確地計算移位器307的輸出中的后導零的數(shù)量,后導零檢測器309應當?shù)弥汕皩?預測器306實施的任何移位,因此,還觀察到后導零檢測器309接受了來自前導1預測器306的輸入。

從最低階(最右邊)位位置開始且逐位地向左移到每個下一個較高階位的位置的零的數(shù)量被確定為直到最低有效(最右邊)的值1的位置。如果后導零的數(shù)量擴展至或超過既定精度的尾數(shù)的最低有效(最右邊)位的位置(向左邊),則最低有效位的位置保持在其當前值(即,不發(fā)生進位舍入)。否則,即,發(fā)生進位舍入,并且可應用精度的尾數(shù)的最低有效位的位置:i)從0增量到1,或者ii)從1增量到0,并且出現(xiàn)脈動至下一較高位位置的進位項。

進位舍入加法器310用于將值1增加到可應用精度的移位器307中的結果尾數(shù)的最低有效位的位置。取加法器310的輸出作為受到期望精度的最終尾數(shù)值。在實施例中,總是取加法器310的輸出作為受到期望精度的最終尾數(shù)值,其中,如果未發(fā)生進位舍入,則值0有效地增加到移位器307輸出,并且如果發(fā)生了進位舍入,則值1增加到既定精度的最右邊位置處的移位器307輸出。如圖3所示,粘接位計算邏輯311基于后導零檢測邏輯309的輸出和期望精度來確定是否需要進位舍入,并且進位舍入控制邏輯312根據(jù)粘接位確定將0或1提供給期望精度的最低有效位的位置處的加法器310(如果未發(fā)生進位舍入,則增加0;如果發(fā)生了進位舍入,則增 加1)。

注意,在圖3的實施例中,后導零檢測邏輯309對提供給加法器305的操作數(shù)進行運算,以使得類似于前導1預測器306,后導零檢測邏輯309能夠與加法器305并行地運算。在另一實施例中,后導零檢測器識別每個操作數(shù)中的最低有效(最右邊)位的值1,并且標記兩個操作數(shù)中的最低有效位的位置作為確定加法器305的輸出中的后導零的數(shù)量的基礎。任何由于前導1預測器引起的移位也通過后導零檢測器309解釋。也就是說,對于既定精度,加法器305導致的任何移位將影響在確定出它們是否擴展至或超過移位器307輸出的最低有效位之前需要檢測多少零。注意,用于后導零檢測的該方法不需要任何“校驗”(如同前導1預測器),因為不可能發(fā)生錯誤(從數(shù)學上講)。

上述說明是針對VMADD指令的浮點計算而撰寫的。在整數(shù)VMADD指令的情況下,整數(shù)操作數(shù)僅提供給乘法器301的輸入。此處,在支持53b雙精度浮點尾數(shù)計算的實施例中,乘法器被設計為處理64b整數(shù)乘法。因此,乘法器輸出為128位寬。在64位整數(shù)運算的情況下,在實施例中,C項以64個零填補到左邊,使得其最低有效位與乘法器301輸出的最低有效位對齊。也就是說,提供給加法器305的C項操作數(shù)具有作為其左半部的64個零位以及作為其右半部的64位C輸入操作數(shù)。由于實施例支持1個雙精度或64b整數(shù)以及2個單精度或2個32b整數(shù)運算的計算,對于32b整數(shù),兩個C項中的每個(每個32b)的上半部以零填補以使其為64b寬。在32位整數(shù)運算的情況下,適當?shù)靥钛aC項。在實施例中,零填補是通過移位器304將C項向右移位來有效地實現(xiàn)的。在另一實施例中,對于整數(shù)運算,指數(shù)差塊303用于根據(jù)整數(shù)計算的精度來指定移位的量。也就是說,例如,對于64位整數(shù)運算,指數(shù)差塊303被配置為將輸入信號發(fā)送到移位器304,這使移位器304向右移位C項的64位;并且,對于32位運算,指數(shù)差塊303被配置為發(fā)送輸入信號到移位器304,這使移位器304向右移位C項的96位。

加法器305將乘法器輸出相加并且將C項值進行移位、對齊以確定AB+C的整數(shù)值。因為AB+C的整數(shù)值的大小可能超過最終結果的容許位寬,在實施例中,加法器305的輸出的高半部和低半部由移位器307傳遞 而作為最終結果。例如,在加法器305的輸出為128位寬并且64位整數(shù)運算應用的實施例中,指令的結果僅能夠為64位寬,而整數(shù)功能單元計算128位的整數(shù)值。因此,存在用于整數(shù)運算的兩種不同的VMADD指令:VMADDH和VMADDL。VMADDH提供128位加法器輸出的最高有效64位,并且VMADDL提供128位加法器輸出的最低有效64位。在整數(shù)VMADD運算的情況下,不使用乘積指數(shù)塊302、前導1預測器307、指數(shù)加法器308、后導零檢測器309、粘接位邏輯311和進位舍入控制邏輯312,除了可能將不相干零增加到加法器310。

圖4a示出了如上所述的功能單元的浮點VMADD運算的實施例,并且圖4b示出了如上所述的功能單元的整數(shù)VMADDL/H運算的實施例。參照圖4a,操作數(shù)A和B的各尾數(shù)值相乘401?;旧喜⑿械?,確定402AB項和C項的指數(shù)值之間的差,并且AB項指數(shù)和C項指數(shù)的最大值被用作結果的初始指數(shù)403?;贏B項和C項的指數(shù)之間的確定的差,具有較小指數(shù)的項的尾數(shù)移位404,以與具有較大指數(shù)的項的尾數(shù)對齊。然后,將AB項和C項的對齊的尾數(shù)相加405?;旧喜⑿械兀A測加法器結果的前導1 406。相對于AB+C的求和結果來校驗407前導1的預測?;谇皩?的確定,AB+C的尾數(shù)求和的結果移位以由整數(shù)值前導408,并且調整409指令的指數(shù)結果。如果需要則執(zhí)行進位舍入410,并且基于指定的精度來呈現(xiàn)尾數(shù)值。

參照圖4b,整數(shù)A和B項相乘411并且C項被填補412以與AB乘積對齊。AB整數(shù)項和C整數(shù)項相加413。如果指令指定高部分,則呈現(xiàn)AB+C的高部分,或者如果指令指定低部分,則呈現(xiàn)AB+C的低部分。注意,與VMADDL接連地執(zhí)行VMADDH并且將結果存儲在單獨的位置容許系統(tǒng)保存AB+C的總值。

值得重復的是,功能單元300的上面的描述說明了一種能夠在向量功能單元中多次具體化從而執(zhí)行向量乘加指令(VMADD)的功能單元。

圖3的功能單元300還能夠改進以執(zhí)行下面指令中的任一個或多個的標量成分:i)向量計數(shù)前導零指令(VCLZ),其接受輸入向量C并且提供作為結果的其元素分別對應于輸入向量C的元素的前導零計數(shù)的輸出向量;ii)向量計數(shù)后導零指令(VCTZ),其接受輸入向量C并且提供作為結 果的其元素分別對應于輸入向量C的元素的后導零計數(shù)的輸出向量;iii)向量計數(shù)指令(VCNT),其接受輸入向量C并且提供作為結果的其各元素分別對應于輸入向量C的各元素內的1的計數(shù)的輸出向量;以及,iv)向量奇偶性指令(VPAR),其接受輸入向量C并且提供作為結果的其各元素分別對應于輸入向量C的各元素的奇偶性狀態(tài)(奇或偶)的輸出向量。

圖5示出了增強型功能單元500,其包括附加的邏輯和邏輯上的配線以及圖3觀察到的配線,以執(zhí)行VCLZ、VCTZ、VCNT和VPAR指令的標量成分。在實施例中,相對于這些指令,沿著接收AB+C指令的C操作數(shù)的數(shù)據(jù)路徑接收由圖5的功能單元500處理的向量的元素。應當強調的是,這僅為一種方法,并且作為設計者的選擇,能夠沿著AB+C指令的A、B和C中任一個的數(shù)據(jù)路徑接收用于VCLZ、VCTZ、VCNT和VPAR指令中的任一個的操作數(shù)。為簡便,未示出用于執(zhí)行VMADD指令的各邏輯塊之間的相互連接。應當理解的是,這種相互連接是存在的(例如,如圖3所示)。當然,在圖3和圖5中觀察到的任一塊能夠由半導體邏輯電路來實現(xiàn)。

根據(jù)圖5的特定實施例,因為用于VCLZ、VCTZ、VCNT和VPAR指令中的任一個的操作數(shù)是沿著C操作數(shù)的數(shù)據(jù)路徑接收的,所以通過對位移位器304來接收操作數(shù)(注意,任一“移位器”均能夠實現(xiàn)為移位寄存器)。當指令指定VCLZ、VCTZ、VCNT和VPAR指令中的任一個(與VMADD指令相對)時,對位移位器忽略來自指數(shù)差單元503的任何輸入并且僅將C操作數(shù)至少提供給各個指令的可應用邏輯。也就是說,用于VCLZ指令的邏輯506、用于VCTZ指令的邏輯509以及用于VCNT指令的邏輯530。另外,對位移位器504呈現(xiàn)載有VMADD指令的AB項的尾數(shù)的數(shù)據(jù)路徑上的良性零值。

相對于呈現(xiàn)用于所提供的操作數(shù)的前導零計數(shù)的VCLZ指令,將圖5與圖3比較,注意,邏輯506實現(xiàn)為前導1預測器邏輯電路和前導0預測器邏輯電路(與圖3的前導1預測器邏輯電路306相對)。此處,注意的是,操作數(shù)中的前導0的數(shù)量與操作數(shù)中前導1的位置相關。具體地,對于已知位寬的操作數(shù),前導0的數(shù)量與操作數(shù)的位寬和操作數(shù)中前導1的位位置之間的差相等。之前提到,在實施例中,前導1預測器306確定用于VMADD指令的AB和C兩者的尾數(shù)項中的前導1的位置,并且對這兩個 項中的最高階(最左邊)前導1的位置進行標記。此處,因為對位移位器504被配置為呈現(xiàn)用于VLCZ指令的AB項的值0,所以僅對C項(VLCZ指令的操作數(shù))的前導1位置加標記。通過這些,能夠確定操作數(shù)的前導零的數(shù)量。注意的是,假設可應用位長度被指定或其它方式已知,則能夠容易地處理不同操作數(shù)的位長度(例如,32位或64位)。

之前提到,圖3的前導1預測器306被視為“預測器”,是因為在一些情形下其初始答案可能不正確。具體地,必須對加法器305的輸出進行校驗。然而,在VCLZ指令的情況下,因為不使用加法器305,所以問題不會出現(xiàn)。這樣,來自邏輯506的“答案”是正確的并且不需要進行校驗。然后,最終將前導零計數(shù)傳遞到格式化邏輯513以便以指令適當?shù)母袷匠尸F(xiàn)答案。在實施例中,前導零計數(shù)(類似于VMADD指令的前導1計數(shù))被傳遞給指數(shù)調整加法器508,指數(shù)調整加法器508將其轉送到格式化邏輯513。

相對于呈現(xiàn)輸入操作數(shù)的后導零計數(shù)的VCTZ指令,操作數(shù)C被傳遞到后導零確定邏輯509。回憶圖3的討論,后導零確定邏輯309識別每個操作數(shù)(AB和C)中的最低有效(最右邊)位值1,并且對兩個操作數(shù)中的最低有效位位置進行標記以作為用于確定加法器305的輸出中的后導零的數(shù)量的基礎。相同的運算適用于VCTZ指令的運算,另外注意,AB項被設定為零以使僅C項(VCTZ指令的操作數(shù))控制由邏輯509提供的最終答案。答案最終被路由到格式化邏輯513,格式化邏輯513呈現(xiàn)該指令的答案(該答案可通過諸如指數(shù)調整加法器508的另一塊預先處理)。

關于VCNT指令,1計數(shù)邏輯520對C操作數(shù)中存在的1的數(shù)量進行計數(shù),并且答案最終被路由到格式化邏輯513。關于VPAR指令,奇偶性邏輯530確定C操作數(shù)的奇偶性值(例如,在操作數(shù)中是存在奇數(shù)還是偶數(shù)個1),并且答案最終被路由到格式化邏輯513,格式化邏輯513呈現(xiàn)該指令的答案。

圖6a至6d示出了當圖5的功能單元500的上述運算并行地執(zhí)行N次以實現(xiàn)向量運算時圖2的功能單元200的運算。對于VCLZ指令,參照圖6A,操作數(shù)/元素的輸入向量被接受601a,每個操作數(shù)中的前導0的數(shù)量被確定602a,并且具有每個操作數(shù)的前導0計數(shù)的輸出向量被呈現(xiàn)603a。對 于VCTZ指令,參照圖6B,操作數(shù)/元素的輸入向量被接受601b,每個操作數(shù)中的后導0的數(shù)量被確定602b,并且具有每個操作數(shù)的后導0計數(shù)的輸出向量被呈現(xiàn)603b。對于VCNT指令,參照圖6C,操作數(shù)/元素的輸入向量被接受601c,每個操作數(shù)中的1的數(shù)量被確定602c,并且具有每個操作數(shù)的1計數(shù)的輸出向量被呈現(xiàn)603c。對于VPAR指令,參照圖6D,操作數(shù)/元素的輸入向量被接受601d,每個操作數(shù)中的奇偶性被確定602d,并且具有每個操作數(shù)的奇偶性的輸出向量被呈現(xiàn)603d。

如上文所討論,上述功能單元可實現(xiàn)在半導體處理器的指令執(zhí)行單元內。

圖7示出了通用處理內核700,其被視為描述了許多不同類型的處理內核體系結構,諸如復雜指令集(CISC)、精簡指令集(RISC)和超長指令字(VLIW)。圖7的通用處理內核700包括:1)取出單元703,其取出指令(例如,從高速緩存和/或存儲器);2)解碼單元704,其對指令進行解碼;3)調度單元705,其確定向執(zhí)行單元706發(fā)布指令的時刻和/或次序(注意,調度程序是任選的);4)執(zhí)行單元706,其執(zhí)行指令(典型的指令執(zhí)行單元包括分支執(zhí)行單元、整數(shù)算術執(zhí)行單元(例如,ALU)、浮點算術執(zhí)行單元(例如,F(xiàn)PU)和存儲器存取執(zhí)行單元);以及5)引退單元707,其表示指令的成功完成。注意,處理內核700可以或者可以不采用微碼708。

盡管上述功能單元顯示出端到端的硬接線數(shù)據(jù)路徑,還可能的是上述處理中的任一個/全部可由微碼而不是專用邏輯電路來實現(xiàn)。在為微編碼處理器的情況下,微操作通常存儲在構造有處理器的半導體芯片內的非易失性機器可讀介質(諸如只讀存儲器(ROM))中并且使處理器內的執(zhí)行單元執(zhí)行由指令調用的所需功能。

具有上述功能的處理器還能夠實現(xiàn)為各種計算系統(tǒng)。圖8示出了計算系統(tǒng)(例如,計算機)的實施例。圖8的示例性計算系統(tǒng)包括:1)一個或多個處理器801,其可設計為包括向量邏輯減少指令;2)存儲器控制中心(MCH)802;3)系統(tǒng)存儲器803(存在不同類型的系統(tǒng)存儲器,諸如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)的任何軟件程序。指令通常涉及對數(shù)據(jù)執(zhí)行的某種操作。數(shù)據(jù)和指令兩者存儲在系統(tǒng)存儲器803和高速緩存804中。高速緩存804通常被設計成具有比系統(tǒng)存儲器803短的等待時間。例如,高速緩存804可能集成到與處理器相同的硅芯片上和/或由較快的SRAM單元構造而成,而系統(tǒng)存儲器803可由較慢的DRAM單元構造而成。與系統(tǒng)存儲器803相對,通過趨于將更頻繁使用的指令和數(shù)據(jù)存儲在高速緩存804中,計算系統(tǒng)的整體性能效率得以提高。

有意使系統(tǒng)存儲器803可供計算系統(tǒng)內的其它構件使用。例如,從與計算系統(tǒng)的各個接口(例如,鍵盤和鼠標、打印機端口、LAN端口、調制解調器端口等)接收或從計算系統(tǒng)的內部存儲元件(例如,硬盤驅動器)取回的數(shù)據(jù)通常在其由軟件程序實現(xiàn)的一個或多個處理器801操作之前臨時排隊到系統(tǒng)存儲器803中。類似地,軟件程序確定的數(shù)據(jù)應當通過計算系統(tǒng)接口中的一個從計算系統(tǒng)發(fā)送到外部實體,或者存儲到內部存儲元件中,通常在其被傳送或存儲之前臨時排隊到系統(tǒng)存儲器803中。

ICH 805負責確保這些數(shù)據(jù)在系統(tǒng)存儲器803及其合適的相應計算系統(tǒng)接口(以及內部存儲器件(如果計算系統(tǒng)是如此設計的))之間正確地傳遞。MCH 802負責管理處理器801、接口和可能在時間上相對于彼此鄰近地出現(xiàn)的內部存儲元件中的用于系統(tǒng)存儲器803存取的各種爭先請求。

一個或多個I/O器件808還實現(xiàn)在典型的計算系統(tǒng)中。I/O器件通常負責將數(shù)據(jù)傳送到計算系統(tǒng)(例如,網絡適配器)和/或從計算系統(tǒng)傳送數(shù)據(jù);或者用于計算系統(tǒng)內的大規(guī)模非易失性存儲(例如,硬盤驅動器)。ICH 805具有在其本身和觀察到的I/O器件808之間的雙向點對點鏈路。

在前面的說明書中,已經參照本發(fā)明的具體示例性實施例描述了本發(fā)明。然而,顯然可以對示例性實施例進行各種修改和改變,而不偏離如隨附的權利要求書中闡述的本發(fā)明的較寬的主旨和范圍。因此,說明書和附圖應被視為示例性的而不是限制性的意義。

當前第1頁1 2 3 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1