包括掩碼上的數(shù)學(xué)操作的simd整數(shù)加法
【專利摘要】本發(fā)明公開了與將兩個整數(shù)SIMD相加相關(guān)聯(lián)的方法、裝置和制品。在實施例中,方法可以包括對第一SIMD大小的整數(shù)(A)和第二SIMD大小的整數(shù)(B)的相對應(yīng)元素進行元素級SIMD相加以生成SIMD大小的整數(shù)結(jié)果(R)和進位位。A具有整數(shù)大?。⊿izeA),同時B具有整數(shù)大小(SizeB)。響應(yīng)于SizeA大于SizeB,加法還可以包括鑒于不具有相對應(yīng)的B的元素或多個元素的A的一個或多個元素更新R和進位位。而且,元素級SIMD相加可以包括在第一一個或多個掩碼上執(zhí)行一個或多個數(shù)學(xué)操作,其中第一一個或多個掩碼被解釋為整數(shù),并將一個或多個數(shù)學(xué)操作的一個或多個整數(shù)結(jié)果解釋為第二一個或多個掩碼。
【專利說明】包括掩碼上的數(shù)學(xué)操作的SIMD整數(shù)加法
【技術(shù)領(lǐng)域】
[0001]本公開的實施例涉及數(shù)據(jù)處理的領(lǐng)域,特別是與單指令多數(shù)據(jù)(SMD)整數(shù)加法相關(guān)聯(lián)的方法、裝置和制品。
[0002]背景
[0003]除非另外指明,本節(jié)中所描述的材料不是本申請中的權(quán)利要求書的現(xiàn)有技術(shù)且不因為被包括在本節(jié)中而被承認為現(xiàn)有技木。
[0004]隨著電子、集成電路、計算和網(wǎng)絡(luò)技術(shù)的進歩,諸如但不限于多媒體應(yīng)用或科學(xué)計算之類的應(yīng)用已經(jīng)變得更加計算密集。SMD計算通常提供標(biāo)量計算上的更優(yōu)執(zhí)行性能。然而,兩個任意長整數(shù)的加法的有效進位傳送仍是ー個挑戰(zhàn)。
[0005]附圖簡述
[0006]通過附圖所示的示例實施例而非限制,呈現(xiàn)了本公開的實施例,附圖中相似的標(biāo)記指示相似的元素,附圖中:
[0007]圖1根據(jù)本公開的多個實施例示出了 SMD整數(shù)加法的概述;
[0008]圖2根據(jù)本公開的多個實施例更詳盡地示出了 SMD整數(shù)加法的操作;
[0009]圖3根據(jù)本公開的多個實施例更詳盡地示出了圖2的元素級(element-wise)SIMD相加操作;
[0010]圖4根據(jù)本公開的多 個實施例更詳盡地示出了圖2的更新操作的ー個方面;
[0011]圖5根據(jù)本公開的實施例示出了適合用來實踐SIMD整數(shù)加法的示例計算機系統(tǒng);以及
[0012]圖6根據(jù)本公開的實施例示出了具有被配置為使裝置實踐SIMD整數(shù)加法的編程指令的制品。
【具體實施方式】
[0013]公開了用于兩個整數(shù)的SMD相加的方法和裝置。在多個實施例中,方法可以包括在SMD計算設(shè)備上將第一 SMD大小的整數(shù)(A)和第二 SMD大小的整數(shù)(B)的相應(yīng)元素進行元素級SMD相加以生成SMD大小的整數(shù)結(jié)果(R)和進位位。A可以具有整數(shù)大小(SizeA),同時B可以具有整數(shù)大小(SizeB)。加法還包括,對于SizeA大于SizeB的情況,鑒于不具有相對應(yīng)的B的元素或多個元素的A的ー個或多個元素,更新R和進位位。而且,元素級SMD相加可以包括在第一一個或多個掩碼上執(zhí)行ー個或多個數(shù)學(xué)操作,其中第一一個或多個掩碼被解釋為整數(shù),并將ー個或多個數(shù)學(xué)操作的ー個或多個整數(shù)結(jié)果解釋為第二一個或多個掩碼。
[0014]在多個實施例中,該方法還可以包括在第--個或多個掩碼上執(zhí)行ー個或多個數(shù)
學(xué)操作之前,將第一一個或多個掩碼從SIMD計算設(shè)備的第一一個或多個掩碼寄存器分別移到SIMD計算設(shè)備的ー個或多個通用寄存器;并在ー個或多個通用寄存器中的第一一個或多個掩碼上執(zhí)行ー個或多個數(shù)學(xué)操作之后,將第ニー個或多個掩碼從ー個或多個通用寄存器分別移到SIMD計算設(shè)備的第二ー個或多個掩碼寄存器。[0015]在多個實施例中,元素級SMD相加還可以包括執(zhí)行R對A的元素級無符號整數(shù)小于比較以生成指示在元素級SMD相加的過程中每個SMD元素中是否發(fā)生了溢出的進位掩碼,和/或執(zhí)行R對全Iニ進制常數(shù)的元素級無符號整數(shù)等于比較以生成指示R中的哪個
或哪幾個元素具有全I位的飽和度掩碼。對這些實施例,在第--個或多個掩碼上執(zhí)行ー
個或多個數(shù)學(xué)操作可以包括在進位掩碼和飽和度掩碼上執(zhí)行ー個或多個數(shù)學(xué)操作。
[0016]在多個實施例中,在進位掩碼和飽和度掩碼上執(zhí)行ー個或多個數(shù)學(xué)操作可以包括將進位掩碼向左移位I位以生成校正掩碼的第一實例、對校正掩碼的第一實例與進位輸入執(zhí)行按位布爾或(bitwise Boolean OR)操作以生成校正掩碼的第二實例、將飽和度掩碼整數(shù)相加到校正掩碼的第二實例以生成校正掩碼的第三實例、和/或?qū)πU诖a的第三實例與飽和度掩碼執(zhí)行按位布爾異或(bitwise Boolean X0R)操作以生成校正掩碼的第四實例。
[0017]在多個實施例中,第二一個或多個掩碼包括校正掩碼,且元素級SMD相加可以包括由校正掩碼進行掩碼從元素級SIMD相加的初始結(jié)果元素級整數(shù)減去全I ニ進制常數(shù)以生成R、和/或?qū)⑿U诖a向右移位有效標(biāo)記寬度的位數(shù)以生成進位位。
[0018]在多個實施例中,更新R和進位位可以包括當(dāng)進位位不等于0且A的至少ー個元素未被考慮時鑒于不具有相對應(yīng)的B的元素或多個元素的A的ー個或多個元素更新R和進位位,以及在已確定進位位等于0之后且A的至少ー個元素未被考慮時鑒于不具有相對應(yīng)的B的元素或多個元素的A的ー個或多個元素更新R。
[0019]在多個實施例中,當(dāng)進位位不等于0且A的至少ー個元素未被考慮時鑒于不具有相對應(yīng)的B的元素或多個元素的A的ー個或多個元素更新R和進位位可以包括,當(dāng)進位位不等于0時對于不具有相對應(yīng)的B的元素的A的元素,通過在元素級SIMD相加的當(dāng)前結(jié)果與全I ニ進制常數(shù)之間執(zhí)行元素級小于比較生成飽和度掩碼,將飽和度掩碼整數(shù)相加到(來自先前迭代的)進位輸入以生成校正掩碼的第一實例,和/或?qū)πU诖a的第一實例與飽和度掩碼執(zhí)行按位布爾異或操作以生成校正掩碼的第二實例。而且,操作可以包括當(dāng)進位位不等于0時對于不具有相對應(yīng)的B的元素的A的元素,將校正掩碼向右移位有效標(biāo)記寬度的位數(shù)以更新進位位。
[0020]在多個實施例中,可以賦予裝置硬件和/或軟件,該硬件和/或軟件被配置為實踐本公開的方法的上述實施例的ー個或多個方面。在多個實施例中,向具有有形、非瞬態(tài)計算機可讀存儲介質(zhì)的制品提供被配置為響應(yīng)于編程指令由裝置執(zhí)行而使裝置實踐本公開的方法的上述實施例的ー個或多個方面的編程指令。
[0021]現(xiàn)在將使用由本領(lǐng)域技術(shù)人員為將其工作的實質(zhì)傳達給本領(lǐng)域其他技術(shù)人員而普遍采用的術(shù)語進一歩描述說明性實施例的多個方面。然而對于那些本領(lǐng)域技術(shù)人員顯而易見的是,可以利用所述方面中的ー些來實踐替代實施例。為了解釋的目的,敘述了具體數(shù)字、材料和配置以提供對說明性實施例的全面理解。然而對于本領(lǐng)域技術(shù)人員顯而易見的是,沒有這些具體細節(jié)也可實踐各替代實施例。在其它實例中,省略或簡化了公知的特征以便不混淆說明性實施例。
[0022]還以最有助于理解說明性實施例的方式將各種操作進而描述為多個離散操作;然而描述的順序不應(yīng)被解釋為暗示這些操作必然是依賴于順序的。特別是,這些操作不必以呈現(xiàn)的順序被執(zhí)行。以括號的格式描述的特征指示所述特征為可選特征,例如,“應(yīng)用服務(wù)的(分區(qū)的)實例”指示所述應(yīng)用服務(wù)可為/可不為“分區(qū)的”。
[0023]重復(fù)使用了短語“在一實施例中”。此短語通常不指同一實施例;但也可以如此。除非上下文另外指明,術(shù)語“包含”、“具有”和“包括”是同義的。短語“A/B”意味著“ A或B”。短語“A和/或B”意味著“(A)、(B)或(A和B)”。短語“A、B和C中的至少ー個”意味著“(A)、(B)、(C)、(A 和 B)、(A 和 C)、(B 和 C)或(A、B 和 C)”。短語“(A)B”意味著“(B)或(AB)",即A是可選的。
[0024]圖1根據(jù)本公開的多個實施例示出了 SMD整數(shù)加法的概述。如所示的,SMD整數(shù)加法器102可以被配置為在具有SMD單元(未示出)的SMD計算設(shè)備上將整數(shù)A112和整數(shù)B122SMD相加以生成結(jié)果R132以及某些情況下的進位位134。特別是,SIMD整數(shù)加法器102可以被配置具有用于作為SMD加法的一部分在第一一個或多個掩碼上執(zhí)行ー個或多個數(shù)學(xué)操作(將這些掩碼解釋為整數(shù))的邏輯104,和用于隨后將數(shù)學(xué)操作的整數(shù)結(jié)果的ー個或多個解釋為第二一個或多個掩碼的邏輯106,下面將更全面描述。整數(shù)A和B可以分別以任意長度的大小SizeA和SizeB, 116和126,為SIMD大小。SizeA和SizeB可以以SIMD寄存器單元的數(shù)目表示。整數(shù)A和B還可以具有相關(guān)聯(lián)的指針PointerA和PointerB,114和124,分別指向整數(shù)A和B的起始存儲位置,例如SMD計算設(shè)備的系統(tǒng)存儲器。SMD單元也可被稱為SMD寄存器。
[0025]現(xiàn)在參考根據(jù)本公開的多個實施例更詳盡地示出了 SMD整數(shù)加法的操作的圖2。如所示的,對于多個實施例,SIMD整數(shù)加法200的操作可以包括對A112和B122的相對應(yīng)元素進行元素級SMD相加,202,以生成R132和如果適用時生成進位位134。在SizeA大于SizeB的情況下,操作200還可以包括鑒于不具有相對應(yīng)的B122的元素或多個元素的Al 12的ー個或多個元素,更新R132和如果適用時更新進位位134,204。
[0026]在多個實施例中,元素級SMD相加,204,包括較早描述的在第--個或多個掩碼
上執(zhí)行ー個或多個數(shù)學(xué)操作(其中將這些掩碼解釋為整數(shù))的操作104,和隨后將數(shù)學(xué)操作的整數(shù)結(jié)果的ー個或多個解釋為第二一個或多個掩碼的操作106。另ー方面,更新R和進位位,204,可以包括當(dāng)進位位不等于0且A的至少ー個元素未被考慮時鑒于不具有相對應(yīng)的B的元素或多個元素的A的ー個或多個元素更新R和進位位,212,以及在確定進位位等于0之后且A的至少ー個元素未被考慮時鑒于不具有相對應(yīng)的B元素或多個元素的A的ー個或多個元素更新R,214。在第一一個或多個掩碼上執(zhí)行數(shù)學(xué)操作、將它們解釋為整數(shù)、和隨后將數(shù)學(xué)操作的整數(shù)結(jié)果的ー個或多個解釋為第二ー個或多個掩碼以及更新R和進位位的這些特征,可以使進位傳送的性能得到提升以隨著SMD計算設(shè)備的SMD単元或寄存器的寬度線性地擴展,其中這種性能的線性擴展通常是先前的技術(shù)方案達不到的。之所以先前技術(shù)方案通常做不到性能的擴展,至少部分地是因為大多數(shù)已知的先前技術(shù)方案需要単獨地處理來自每個SMD元素的進位。
[0027]現(xiàn)在參考圖3,其中根據(jù)多個實施例更詳盡地示出了元素級SIMD相加操作。如所示的,元素級SMD相加操作300可以包括第一組操作302,操作302包括將整數(shù)A和B,112和 122 加載進存儲器(A=SMD_L0AD (pointerA),B=SIMD_L0AD (pointerB))和對整數(shù) A 和B,112和122進行元素級SMD相加以生成結(jié)果R (R=SIMD_ADD_INT(A, B))。在多個實施例中,對整數(shù)A和B,112和122進行元素級SMD相加可以利用包裝(wrapping)來執(zhí)行。在多個實施例中,第一組操作302還可以包括用全I ニ進制常數(shù)(all_one=SMD_LOAD_ALL_ONESO )初始化SMD計算設(shè)備的SMD寄存器。
[0028]在多個實施例中,元素級SMD相加操作300還可以包括第二組操作304,操作304包括生成進位掩碼和飽和度掩碼。進位掩碼可以指示在元素級SMD相加的過程中每個SIMD元素中是否發(fā)生了溢出,而飽和度掩碼可以指示R的哪個或哪幾個元素有全I位。進位掩碼可以通過執(zhí)行R對A的元素級SIMD無符號整數(shù)小于比較而生成(carry_mask=SIMD_CMP_LESS_UINT (R, A)),而飽和度掩碼通過R對全I ニ進制常數(shù)的元素級SMD無符號整數(shù)等于比較而生成(saturation_mask=SIMD_CMP_EQ_UINT (R, all_ones))。
[0029]繼續(xù)參考圖3,在多個實施例中,元素級SMD相加操作300還可以包括第三組操作306,操作306在進位掩碼和飽和度掩碼上執(zhí)行多個數(shù)學(xué)操作以生成校正掩碼。特別是,操作306可以包括將進位掩碼向左移位I位以生成校正掩碼的第一實例(correction_mask=SHL (carry_mask, I))、對校正掩碼的第一實例與(來自先前迭代的)進位輸入執(zhí)行按位布爾或操作以生成校正掩碼的第二實例(correction_mask=BITWISE_0R(correction_mask, carry_in))、將飽和度掩碼整數(shù)相加到校正掩碼的第二實例以生成校正掩碼的第三實例(correction_mask=ADD_INT(correction_mask, saturation_mask))和/或?qū)πU诖a的第三實例與飽和度掩碼執(zhí)行按位布爾異或操作以生成校正掩碼的第四實例(correction_mask=BITWISE_XOR(correction_mask, saturation_mask)入
[0030]在其中SMD計算設(shè)備不包括對允許直接在掩碼寄存器中的掩碼上執(zhí)行數(shù)學(xué)操作的支持的多個實施例中,在進位和飽和度掩碼上執(zhí)行數(shù)學(xué)操作之前,進位掩碼和飽和度掩碼可以從掩碼寄存器移到相應(yīng)的通用寄存器中。在執(zhí)行數(shù)學(xué)操作之后,數(shù)學(xué)操作的整數(shù)結(jié)果可以隨后從通用寄存器移回到相同或不同的掩碼寄存器中。
[0031 ] 仍參考圖3,在多個實施例中,元素級SMD相加操作300還可以包括第四組操作308。操作308可以包括由校正掩碼進行掩碼從元素級SMD相加的初始結(jié)果中元素級SIMD 整數(shù)相減去全 I ニ進制常數(shù)以生成 R132 (R=SIMD_SUB_INT(R, all_ones, correction,mask))、存儲R (SIMD_ST0RE(R, pointer))和/或?qū)⑿U诖a向右移位有效掩碼寬度的位數(shù)以生成進位位(carry_out=SHR(co;rrection_mask,EFFECTIVE_MASK_WIDTH_IN_BITS))。
[0032]應(yīng)注意,上述在元素級SMD相加操作300的描述中提到的進位掩碼、飽和度掩碼、校正掩碼和有效掩碼寬度在元素級SMD相加操作300的本地。這些掩碼和掩碼寬度不同于其它本地掩碼和/或后面其它操作的討論中提到的相同名字的寬度。
[0033]參考回圖2,對SizeA大于SizeB的情況,SMD整數(shù)加法還可以包括鑒于不具有相對應(yīng)的B的元素的A的元素更新R132和進位位134,204。而且,在多個實施例中,更新操作204可以包括當(dāng)進位位134不等于0且A112的至少ー個元素待被考慮時更新R132和進位位134,212,以及在進位位134等于0之后且A112的至少ー個元素待被考慮時更新R132,214。
[0034]在多個實施例中,操作212在邏輯上可以實現(xiàn)如下:
[0035]
【權(quán)利要求】
1.ー種方法,包括: 由具有單指令多數(shù)據(jù)(SMD)寄存器的SMD計算設(shè)備所操作的SMD整數(shù)加法器對第一 SIMD大小的整數(shù)(A)和第二 SMD大小的整數(shù)(B)的相對應(yīng)元素進行元素級SMD相加,以生成SMD大小的整數(shù)結(jié)果(R)和進位位,其中A具有整數(shù)大小(SizeA)且B具有整數(shù)大小(SizeB);以及 響應(yīng)于SizeA大于SizeB,由SMD整數(shù)加法器鑒于不具有相對應(yīng)的B的元素或多個元素的A的ー個或多個元素,更新R和進位位; 其中元素級SMD相加包括在第一一個或多個掩碼上執(zhí)行ー個或多個數(shù)學(xué)操作,其中第一一個或多個掩碼被解釋為整數(shù),并將ー個或多個數(shù)學(xué)操作的ー個或多個整數(shù)結(jié)果解釋為第二ー個或多個掩碼。
2.如權(quán)利要求1所述的方法,其中元素級SIMD相加包括利用包裝對A和B的相對應(yīng)元素進行元素級SMD相加以生成結(jié)果R。
3.如權(quán)利要求1所述的方法,其還包括在第一一個或多個掩碼上執(zhí)行ー個或多個數(shù)學(xué)操作之前,將第一一個或多個掩碼從SIMD計算設(shè)備的第一一個或多個掩碼寄存器分別移到SIMD計算設(shè)備的ー個或多個通用寄存器;并在ー個或多個通用寄存器中的第一一個或多個掩碼上執(zhí)行ー個或多個數(shù)學(xué)操作之后,將第ニー個或多個掩碼從ー個或多個通用寄存器分別移到SIMD計算設(shè)備的第二ー個或多個掩碼寄存器。
4.如權(quán)利要求1所述的方法,其中元素級SMD相加還包括R對A的元素級SMD無符號整數(shù)小于比較,以生成指示在元素級SMD相加的過程中每個SMD元素中是否發(fā)生了溢出的進位掩碼。
5.如權(quán)利要求1所述的方法,其中元素級SMD相加還包括R對全Iニ進制常數(shù)的元素級SMD無符號整數(shù)等于比 較,以生成指示R的哪個或哪幾個元素有全I位的飽和度掩碼的第一實例。
6.如權(quán)利要求1所述的方法,其中在第個或多個掩碼上執(zhí)行ー個或多個數(shù)學(xué)操作包括在進位掩碼和飽和度掩碼上執(zhí)行ー個或多個數(shù)學(xué)操作,其中進位掩碼指示在元素級SMD相加的過程中每個SMD元素中是否發(fā)生了溢出,且其中飽和度掩碼指示R的哪個或哪幾個元素有全I位。
7.如權(quán)利要求6所述的方法,其中在進位掩碼和飽和度掩碼上執(zhí)行ー個或多個數(shù)學(xué)操作包括: 將進位掩碼左移I位以生成校正掩碼的第一實例; 對校正掩碼的第一實例與進位輸入執(zhí)行按位布爾或操作以生成校正掩碼的第二實例; 將飽和度掩碼整數(shù)相加到校正掩碼的第二實例以生成校正掩碼的第三實例;以及 對校正掩碼的第三實例與飽和度掩碼執(zhí)行按位布爾異或操作以生成校正掩碼的第四實例。
8.如權(quán)利要求1所述的方法,其中第二一個或多個掩碼包括校正掩碼,且元素級SMD相加包括由校正掩碼進行掩碼將元素級SIMD相加的初始結(jié)果從全I ニ進制常數(shù)中進行元素級SMD整數(shù)相減以生成R。
9.如權(quán)利要求1所述的方法,其中第二一個或多個掩碼包括校正掩碼,且元素級SMD相加包括將校正掩碼向右移位有效標(biāo)記寬度的位數(shù)以生成進位位。
10.如權(quán)利要求1所述的方法,其中更新R和進位位包括當(dāng)進位位不等于0且A的至少ー個元素未被考慮吋,鑒于不具有相對應(yīng)的B的元素或多個元素的A的ー個或多個元素,更新R和進位位。
11.如權(quán)利要求10所述的方法,其中當(dāng)進位位不等于0且A的至少ー個元素未被考慮時鑒于不具有相對應(yīng)的B的元素或多個元素的A的ー個或多個元素更新R和進位位包括: 當(dāng)進位位不等于0時對不具有相對應(yīng)的B的元素的A的元素, 通過在元素級SMD相加的當(dāng)前結(jié)果與全I ニ進制常數(shù)之間執(zhí)行元素級小于比較,生成飽和度掩碼; 將飽和度掩碼整數(shù)相加到進位位的當(dāng)前值,以生成校正掩碼的第一實例;以及 對校正掩碼的第一實例與飽和度掩碼執(zhí)行按位布爾異或操作,以生成校正掩碼的第二實例。
12.如權(quán)利 要求10所述的方法,其中當(dāng)進位位不等于0且A的至少ー個元素未被考慮時鑒于不具有相對應(yīng)的B的元素或多個元素的A的ー個或多個元素更新R和進位位還包括:當(dāng)進位位不等于0時對不具有相對應(yīng)的B的元素的A的元素,將校正掩碼向右移位有效標(biāo)記寬度的位數(shù)以更新進位位。
13.如權(quán)利要求10所述的方法,其中更新R和進位位還包括:在確定進位位等于0之后且A的至少ー個元素未被考慮時,鑒于不具有相對應(yīng)的B的元素或多個元素的A的ー個或多個元素,更新R。
14.ー種裝置,包括: 具有單指令多數(shù)據(jù)(SMD)寄存器、通用寄存器和掩碼寄存器的SMD處理器;以及 被配置為由所述SMD處理器操作以將分別具有大小SizeA和SizeB的兩個整數(shù)A和B相加的SMD整數(shù)加法器; 其中SMD整數(shù)加法器被配置為: 對第一 SMD大小的整數(shù)(A)和第二 SMD大小的整數(shù)(B)的相對應(yīng)元素進行元素級SIMD相加,以生成SMD大小的整數(shù)結(jié)果(R)和進位位,且 響應(yīng)于SizeA大于SizeB,鑒于不具有相對應(yīng)的B的元素或多個元素的A的ー個或多個元素,更新R和進位位;且 其中SMD整數(shù)加法器還被配置為作為元素級SMD加法的一部分執(zhí)行:將第一一個或多個掩碼從掩碼寄存器的第個或多個分別移到通用寄存器的ー個或多個,在一個或多個通用寄存器中的第一一個或多個掩碼上執(zhí)行ー個或多個數(shù)學(xué)操作,以及將ー個或多個通用寄存器中的ー個和多個數(shù)學(xué)操作的ー個或多個整數(shù)結(jié)果移到第二ー個或多個掩碼寄存器以作為第二一個或多個掩碼存儲。
15.如權(quán)利要求14所述的裝置,其中SMD整數(shù)加法器還被配置為作為第一一個或多個掩碼上的ー個或多個數(shù)學(xué)操作的執(zhí)行的一部分在進位掩碼和飽和度掩碼上執(zhí)行ー個或多個數(shù)學(xué)操作包括: 將進位掩碼左移I位以生成校正掩碼的第一實例; 對校正掩碼的第一實例與進位輸入進行按位布爾或以生成校正掩碼的第二實例; 將飽和度掩碼整數(shù)相加到校正掩碼的第二實例以生成校正掩碼的第三實例;以及對校正掩碼的第三實例與飽和度掩碼進行按位布爾異或操作以生成校正掩碼的第四實例; 其中進位掩碼指示在元素級SMD相加的過程中每個SMD元素中是否發(fā)生了溢出,且其中飽和度掩碼指示R的哪個或哪幾個元素有全I位。
16.如權(quán)利要求14所述的裝置,其中第二一個或多個掩碼包括校正掩碼;且其中SMD整數(shù)加法器還被配置為:作為元素級SMD加法的一部分,執(zhí)行由校正掩碼進行掩碼將元素級SMD加法的初始結(jié)果從全I ニ進制常數(shù)進行元素級SMD整數(shù)相減以生成R,以及執(zhí)行將校正掩碼向右移位有效標(biāo)記寬度的位數(shù)以生成進位位。
17.如權(quán)利要求14所述的裝置,其中SMD整數(shù)加法器還被配置為,作為更新R和進位位的一部分,執(zhí)行 當(dāng)進位位不等于O且A的至少ー個元素未被考慮時鑒于不具有相對應(yīng)的B的元素或多個元素的A的ー個或多個元素,更新R和進位位;以及 在確定進位位等于O之后且A的至少ー個元素未被考慮時鑒于不具有相對應(yīng)的B的元素或多個元素的A的ー個或多個元素,更新R。
18.如權(quán)利要求17所述的裝置,其中SMD整數(shù)加法器還被配置為作為當(dāng)進位位不等于O且A的至少ー個元素未被 考慮時鑒于不具有相對應(yīng)的B的元素或多個元素的A的ー個或多個元素更新R和進位位的一部分,執(zhí)行 當(dāng)進位位不等于O時對不具有相對應(yīng)的B的元素的A的元素, 通過在元素級SMD相加的當(dāng)前結(jié)果與全I ニ進制常數(shù)之間執(zhí)行元素級小于比較,生成飽和度掩碼; 將飽和度掩碼整數(shù)相加到進位輸入,以生成校正掩碼的第一實例;以及 對校正掩碼的第一實例與飽和度掩碼執(zhí)行按位布爾異或操作,以生成校正掩碼的第二實例。
19.如權(quán)利要求18所述的裝置,其中SMD整數(shù)加法器還被配置為作為當(dāng)進位位不等于O且A的至少ー個元素未被考慮時鑒于不具有相對應(yīng)的B的元素或多個元素的A的ー個或多個元素更新R和進位位的一部分,執(zhí)行 當(dāng)進位位不等于O時對不具有相對應(yīng)的B的元素的A的元素, 將校正掩碼向右移位有效標(biāo)記寬度的位數(shù)以更新進位位。
20.一種計算機可讀非瞬態(tài)存儲介質(zhì),包括: 存儲在所述存儲介質(zhì)中并被配置為響應(yīng)于編程指令的執(zhí)行使SMD裝置執(zhí)行SMD整數(shù)加法操作的多個編程指令,SIMD整數(shù)加法操作包括: 對第一 SMD大小的整數(shù)(A)和第二 SMD大小的整數(shù)(B)的相對應(yīng)元素進行元素級SIMD相加,以生成SMD大小的整數(shù)結(jié)果(R)和進位位,其中A具有整數(shù)大小(SizeA)且B具有整數(shù)大小(SizeB);以及 響應(yīng)于SizeA大于SizeB,鑒于不具有相對應(yīng)的B的元素或多個元素的A的ー個或多個元素,更新R和進位位; 其中元素級SMD相加包括在進位掩碼和飽和度掩碼上執(zhí)行ー個或多個數(shù)學(xué)操作,包括: 將進位掩碼左移I位,以生成校正掩碼的第一實例;對校正掩碼的第一實例與進位輸入執(zhí)行按位布爾或操作,以生成校正掩碼的第二實例; 將飽和度整數(shù)相加到校正掩碼的第二實例,以生成校正掩碼的第三實例;以及對校正掩碼的第三實例與飽和度掩碼執(zhí)行按位布爾異或操作,以生成校正掩碼的第四實例;以及 其中進位掩碼指示在元素級SMD相加的過程中每個SMD元素中是否發(fā)生了溢出,且其中飽和度掩碼指示R的 哪個或哪幾個元素有全I位。
【文檔編號】G06F7/505GK103460178SQ201180069754
【公開日】2013年12月18日 申請日期:2011年3月30日 優(yōu)先權(quán)日:2011年3月30日
【發(fā)明者】S·S·利亞林 申請人:英特爾公司