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

用于實現(xiàn)高效同步和并行歸約操作的向量指令的制作方法

文檔序號:6546204閱讀:225來源:國知局
用于實現(xiàn)高效同步和并行歸約操作的向量指令的制作方法
【專利摘要】本發(fā)明公開了用于實現(xiàn)高效同步和并行歸約操作的向量指令。在一個實施例中,處理器可包括:向量單元,用于響應于單條指令對多個數(shù)據(jù)元素執(zhí)行操作;以及耦合到向量單元的控制單元,用于向該向量單元提供數(shù)據(jù)元素,其中該控制單元使得能響應于要在第一掩碼下執(zhí)行的第一向量指令和要在第二掩碼下執(zhí)行的第二向量指令對這些數(shù)據(jù)元素中的至少一些數(shù)據(jù)元素執(zhí)行原子向量操作。描述并要求保護其他實施例。
【專利說明】用于實現(xiàn)高效同步和并行歸約操作的向量指令
[0001]本發(fā)明專利申請是國際申請?zhí)枮镻CT/US2009/038596,國際申請日為2009年3月27日,進入中國國家階段的申請?zhí)枮?00980110598.7,名稱為“用于實現(xiàn)高效同步和并行歸約操作的向量指令”的發(fā)明專利申請的分案申請。
[0002]直量
[0003]許多應用有大量數(shù)據(jù)級并行性且應當能夠獲益于單指令多數(shù)據(jù)(SMD)支持。在SIMD執(zhí)行中,單條指令同時對多個數(shù)據(jù)元素進行操作。這典型地通過擴展諸如寄存器和算術(shù)邏輯單元(ALU)等各種資源的寬度來實現(xiàn),從而允許它們分別保持多個數(shù)據(jù)元素或?qū)Χ鄠€數(shù)據(jù)元素進行操作。然而,許多此類應用花費大量時間對一組稀疏位置進行原子操作,因此從SIMD得到的益處有限,因為當前架構(gòu)不支持原子向量操作。
[0004]在許多應用中,常常在多處理器系統(tǒng)中執(zhí)行同步原語和并行歸約(reduction)操作。同步原語確保了在多個線程協(xié)同工作時程序按正確次序執(zhí)行。這些原語常常使用原子讀-修改-寫操作來實現(xiàn)。歸約是許多科學應用中存在的常見操作。當多個線程并行地執(zhí)行歸約時,通常使用原子讀-修改-寫序列來確保競態(tài)條件下的正確性。
[0005]現(xiàn)代并行架構(gòu)裝備有SIMD單元以改善具有數(shù)據(jù)級并行性的許多應用的性能。為了維持SMD效率,此類架構(gòu)不僅允許SMD算術(shù)運算而且還允許SMD存儲器(通過聚集-分散單元)讀寫。然而,這些架構(gòu)都不支持SIMD原子操作。結(jié)果是這些原子操作不能被向量化,因此必須使用標量代碼來實現(xiàn)。這可能使SMD效率顯著降級,尤其是在SMD寬度(即,同時處理的元素的數(shù)目)較大時(例如,16)。
[0006]分散歸約是許多應用中常見的操作。例如,可以使用分散-相加(scatter-add)操作使得第一陣列的多個值根據(jù)通??蔀殡S機的索引分布被歸約成(即,相加到)第二陣列的所選元素。正因如此,難以高效地并發(fā)(即,以SMD模式)處理多個元素。
[0007]柱狀圖計算是許多圖像處理應用中常見的操作。例如,柱狀圖被用來跟蹤圖像中像素的顏色值的分布。然而,對柱狀圖陣列的更新可能是隨機的,取決于陣列的輸入數(shù)據(jù)。具體而言,相鄰元素的索引可能指向柱狀圖中相同的柱。這種狀況使得很難并發(fā)(即,以SMD模式)處理多個數(shù)據(jù)。
[0008]附圖簡沭
[0009]圖1A是根據(jù)本發(fā)明一個實施例的處理器核的框圖。
[0010]圖1B是根據(jù)本發(fā)明的實施例的聚集/分散單元的示例表示。
[0011]圖2是根據(jù)本發(fā)明一個實施例的用于執(zhí)行原子向量操作的流程圖。
[0012]圖3是根據(jù)本發(fā)明的實施例的系統(tǒng)的框圖。
[0013]詳細描沭
[0014]各實施例可擴展存儲器分散-聚集功能以提供對原子向量操作的支持。在各種實施例中,可以提供SIMD指令來實現(xiàn)原子操作。具體而言,可以提供所謂的向量鏈接聚集(gather-linked)指令和向量條件分散(scatter-conditional)指令從而以SIMD方式高效地支持對多個非連貫存儲器位置的原子操作。注意,如本文中所使用的,術(shù)語“向量”和“SMD”被可互換地用來描述由單條指令進行操作的多個數(shù)據(jù)元素。以此方式,這些指令可實現(xiàn)SIMD原子操作以更加高效地實現(xiàn)同步原語和并行歸約操作。此外,其他向量指令可提供處理器輔助以進行處理器內(nèi)的歸約操作和柱狀圖計算。
[0015]在一個實施例中,聚集-分散單元可被配置成允許原子SMD存儲器操作。在其中數(shù)據(jù)結(jié)構(gòu)具有被間接訪問(例如,A[B[i]])而非被連貫訪問的元素的應用中高效地利用SIMD常常要求重新安排數(shù)據(jù),這可能導致大量開銷。為了解決這種開銷,可以提供以SMD方式加載和存儲非連貫數(shù)據(jù)元素的硬件支持來執(zhí)行聚集/分散操作。即,聚集操作基于源SMD寄存器中所包含的地址從間接尋址的位置讀取(聚集)多個數(shù)據(jù)元素,并將它們包裝在單個SMD寄存器中。相反,分散操作解包SMD寄存器中的元素并將它們寫(分散)到一組間接尋址的位置中。
[0016]具體而言,根據(jù)本發(fā)明一個實施例的鏈接聚集指令包含預留被聚集的位置,而根據(jù)本發(fā)明一個實施例的條件分散指令將僅把值分散給仍保持其相應預留的那些元素。由于條件分散可能只對于元素子集(或根本沒有元素)是成功的,因此該指令具有指示成功或失敗的輸出掩碼,其與條件存儲的輸出類似。鏈接聚集指令的輸出掩碼可允許硬件實現(xiàn)更加靈活。各實施例可擴展標量原子存儲器操作,即稱為鏈接加載(LL)和條件存儲(SC)的一對標量指令。LL返回存儲在共享位置處的值并設置與該位置相關(guān)聯(lián)的預留指示符。SC檢查預留指示符。若其有效,則將新值寫入該位置并且操作返回成功,否則不寫入該值且操作返回指示失敗的標志。在概念上,對于每個共享存儲器位置,對于每種硬件上下文都有預留位;當共享存儲器位置被任何硬件上下文寫入時,與該位置相關(guān)聯(lián)的各預留位被清除。LL和SC的一種用途是實現(xiàn)較高層同步原語,諸如關(guān)鎖(lock)和開鎖(unlock)。鎖用于確保多個線程對共享數(shù)據(jù)的訪問的原子性。然而,這些指令每次只對單個元素進行操作。各實施例可用于克服這些指令的該限制。
[0017]在SMD架構(gòu)上,可使用SMD并行地執(zhí)行對VLEN(SM)向量長度)個位置的多達VLEN次更新一若已知它們是要更新不同的存儲器位置。然而,保證VLEN次同時更新的原子性要求獲取和釋放VLEN個鎖。若使用標量指令,則執(zhí)行用于檢測、獲取、更新VLEN個數(shù)據(jù)元素以及釋放鎖的循環(huán)的VLEN次迭代,并且有各種開銷與此類操作相關(guān)聯(lián)。
[0018]許多應用中的另一種常見操作是歸約操作。在多處理器系統(tǒng)中,歸約可由多個線程執(zhí)行以提高性能。然而,在并行實現(xiàn)中,當多個線程同時更新相同的存儲器位置時,使用對共享數(shù)據(jù)結(jié)構(gòu)的原子訪問來確保正確性。因此,歸約操作可使用標量鏈接加載和條件存儲指令來確保同時更新的原子性;然而,在沒有本發(fā)明的實施例的情況下,此類操作不能以SMD方式執(zhí)行。
[0019]可通過提供對LL和SC指令的SMD支持來在各種實施例中實施同步原語和并行歸約的高效的SIMD友好實現(xiàn)。更具體而言,為了改善同步原語和并行歸約的SIMD效率,
兩條指令-鏈接聚集(vgatherlink)指令和條件分散(vscattercond)指令可為SIMD
架構(gòu)提供鏈接加載和條件存儲操作。此外,可以利用SMD架構(gòu)上可用的向量聚集指令(vgather)和向量分散(vscatter)指令。向量聚集指令可以如下:
[0020]vgather base, Addrj Dst
[0021]這導致從VLEN個(不一定連貫且可能重復的)存儲器位置——其地址是從
base (基址)和 Addr (base [Addr [O] ],...,base [Addr [VLEN-1]])計算出的-聚集 VLEN
個數(shù)據(jù)元素,并將其連貫地存儲在目的地Dst中。注意,Addr和Dst可以位于存儲器或SMD寄存器中。向量分散指令可以如下:
[0022]vscatter base, Addr, Src
[0023]該指令將來自源Src的VLEN個連貫數(shù)據(jù)元素分散到VLEN個(不一定連貫但唯一性的)存儲器位置中,這些存儲器位置的地址存儲在地址操作數(shù)Addr中。如同vgather指令的情形一樣,Addr和Src可以位于存儲器或SIMD寄存器中。
[0024]因此,基于這兩條向量指令以及標量LL和SC指令,向量鏈接聚集指令vgatherlink可以定義如下:
[0025]
【權(quán)利要求】
1.一種處理器,包括: 第一邏輯單元,用于處理加載和存儲指令;以及 第二邏輯單元,用于處理聚集和分散指令,所述第二邏輯單元用于接收第一向量指令、各自至具有包括多個數(shù)據(jù)元素的向量的相應數(shù)據(jù)元素的存儲位置的多個地址、以及與所述向量相關(guān)聯(lián)的掩碼信息,并且用于加載從與所述多個地址中由所述掩碼信息指示的每個地址相對應的存儲位置獲得的數(shù)據(jù)元素,以及用于預留所述存儲位置。
2.如權(quán)利要求1所述的處理器,其特征在于,所述第二邏輯單元用于用與所述數(shù)據(jù)元素中未成功獲得的每個數(shù)據(jù)元素相對應的無效指示符來更新所述掩碼信息。
3.如權(quán)利要求2所述的處理器,其特征在于,所述第二邏輯單元用于加載和預留與成功獲得的數(shù)據(jù)元素相對應的多個數(shù)據(jù)元素的子集。
4.如權(quán)利要求1所述的處理器,其特征在于,所述第二邏輯單元用于接收第二向量指令、各自至具有所述向量的相應數(shù)據(jù)元素的存儲位置的第二多個地址、以及第二掩碼信息,并且若與所述第二多個地址中由所述第二掩碼信息指示的每個地址相對應的存儲位置仍被預留,則將來自源存儲的數(shù)據(jù)元素寫入與所述第二多個地址中由所述第二掩碼信息指示的每個地址相對應的存儲位置。
5.如權(quán)利要求4所述的處理器,其特征在于,所述第二邏輯單元用于用與所述存儲位置中不再被預留的每個存儲位置相對應的無效指示符從所述第二掩碼信息生成輸出掩碼。
6.如權(quán)利要求1所述的處理器,其特征在于,所述預留的存儲位置將由以后的指令使用。
7.如權(quán)利要求1所述的處理器,其特征在于,所述第二邏輯單元包括: 控制邏輯; 掩碼存儲,用于存儲所述掩碼信息;以及 向量存儲,用于存儲被加載的數(shù)據(jù)元素。
8.如權(quán)利要求7所述的處理器,其特征在于,所述第二邏輯單元包括混洗邏輯,所述混洗邏輯用于混洗所述向量存儲中存儲的數(shù)據(jù)元素。
9.如權(quán)利要求8所述的處理器,其特征在于,所述第二邏輯單元進一步用于接收所述向量存儲中的用于存儲所述數(shù)據(jù)元素的目的地。
10.一種用于實現(xiàn)同步和并行歸約操作的處理器,包括: 單指令多數(shù)據(jù)(SIMD)單元,用于響應于單條指令對多個數(shù)據(jù)元素執(zhí)行操作;以及 掩碼存儲,用于存儲一個或多個掩碼;以及 耦合到所述單指令多數(shù)據(jù)(SIMD)單元的控制單元,用于向所述單指令多數(shù)據(jù)(SIMD)單元提供所述多個數(shù)據(jù)元素,其中所述控制單元使得能響應于要在第一掩碼下執(zhí)行的第一單指令多數(shù)據(jù)(SIMD)指令和要在第二掩碼下執(zhí)行的第二單指令多數(shù)據(jù)(SIMD)指令,對所述多個數(shù)據(jù)元素中的至少一些數(shù)據(jù)元素執(zhí)行原子單指令多數(shù)據(jù)(SIMD)操作。
11.如權(quán)利要求10所述的處理器,其特征在于,所述控制單元用于,響應于所述第一單指令多數(shù)據(jù)(SIMD)指令,根據(jù)與所述第一掩碼相對應的輸入掩碼從第一存儲器位置獲得所述多個數(shù)據(jù)元素并預留所述第一存儲器位置。
12.如權(quán)利要求10所述的處理器,其特征在于,所述控制單元用于將所述第一存儲器位置預留給以后的SMD指令。
13.如權(quán)利要求11所述的處理器,其特征在于,所述第二單指令多數(shù)據(jù)(SMD)指令用于根據(jù)與所述第二掩碼相對應的輸入掩碼將來自源位置的第二多個數(shù)據(jù)元素存儲到被預留的所述第一存儲器位置,并且其中所述第一單指令多數(shù)據(jù)(SMD)指令通過如下方式導致產(chǎn)生所述第二掩碼:聚集和鏈接所述第一存儲器位置的子集,并將第一掩碼的相應位設為有效狀態(tài),并且將失敗的元素相應的掩碼位設置為無效狀態(tài)。
14.如權(quán)利要求10所述的處理器,其特征在于,所述控制單元用于使得所述單指令多數(shù)據(jù)(SMD)單元執(zhí)行第三單指令多數(shù)據(jù)(SMD)指令,以比較具有第二多個數(shù)據(jù)元素的第二向量并輸出混洗控制以指示具有相同值的數(shù)據(jù)元素組,并且設置第三掩碼的指示符以指示非唯一'丨生的數(shù)據(jù)元素。
15.如權(quán)利要求10所述的處理器,其特征在于,所述控制單元使得所述單指令多數(shù)據(jù)(SIMD)單元執(zhí)行第四單指令多數(shù)據(jù)(SMD)指令以生成對具有第三多個數(shù)據(jù)元素的第三向量的相同元素的計數(shù)并將關(guān)于每個唯一性元素的計數(shù)存儲在目的地存儲中,并且進一步寫入第四掩碼的指示符以指示每個唯一性元素。
16.一種用于實現(xiàn)同步和并行歸約操作的系統(tǒng),包括: 處理器,包括邏輯單元,用于根據(jù)第一掩碼執(zhí)行第一單指令多數(shù)據(jù)(SMD)指令,以從相應的多個非連貫的源位置至少獲得向量的數(shù)據(jù)元素子集并預留所述子集的所述非連貫的源位置供以后的單指令多數(shù)據(jù)(SIMD)指令使用,使用所述數(shù)據(jù)元素子集來執(zhí)行原子單指令多數(shù)據(jù)(SMD)操作,并根據(jù)第二掩碼執(zhí)行第二單指令多數(shù)據(jù)(SMD)指令以將至少第二數(shù)據(jù)元素子集寫入所述相應的多個非連貫的源位置;以及 耦合至所述處理器的 動態(tài)隨機存取存儲器(DRAM)。
17.如權(quán)利要求16所述的系統(tǒng),其特征在于,所述處理器用于執(zhí)行所述第二單指令多數(shù)據(jù)(SIMD)指令以將所述第二數(shù)據(jù)元素子集寫入仍被預留的所述相應的非連貫的源位置。
18.如權(quán)利要求16所述的系統(tǒng),其特征在于,所述以后的單指令多數(shù)據(jù)(SIMD)指令包括所述第二 SMD指令。
19.如權(quán)利要求16所述的系統(tǒng),其特征在于,所述處理器用于用與所述數(shù)據(jù)元素中未成功獲得的每個數(shù)據(jù)元素相對應的無效指示符來更新所述第一掩碼。
20.如權(quán)利要求16所述的系統(tǒng),其特征在于,所述處理器用于執(zhí)行第三單指令多數(shù)據(jù)(SIMD)指令以分析具有第二多個數(shù)據(jù)元素的第二向量并輸出混洗控制以指示所述第二多個數(shù)據(jù)元素中具有相同值的數(shù)據(jù)元素的組,并且設置第三掩碼的指示符以指示非唯一性的數(shù)據(jù)元素。
21.如權(quán)利要求16所述的系統(tǒng),其特征在于,所述處理器用于執(zhí)行第四單指令多數(shù)據(jù)(SIMD)指令以生成對具有第三多個數(shù)據(jù)元素的第三向量的相同元素的計數(shù)并將關(guān)于每個唯一性元素的計數(shù)存儲在目的地存儲中。
22.如權(quán)利要求16所述的系統(tǒng),其特征在于,所述邏輯單元包括: 控制邏輯; 掩碼存儲,用于存儲所述第一掩碼;以及 向量存儲,用于存儲所述至少獲得的數(shù)據(jù)元素子集。
【文檔編號】G06F9/38GK103970506SQ201410196526
【公開日】2014年8月6日 申請日期:2009年3月27日 優(yōu)先權(quán)日:2008年3月28日
【發(fā)明者】M·斯密爾安斯基, S·庫瑪, D·金, V·W·李, A·D·恩古耶, Y-k·陳, C·休格斯, C·金, J·查烏加尼 申請人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1