国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      用于執(zhí)行沖突檢測(cè)并將寄存器的內(nèi)容廣播到另一個(gè)寄存器的數(shù)據(jù)元素位置的系統(tǒng)、裝置...的制作方法_2

      文檔序號(hào):8926990閱讀:來(lái)源:國(guó)知局
      用于掩碼,當(dāng)向量的數(shù)據(jù)元素尺寸是32位時(shí)8位可以用于掩碼,當(dāng)向量的數(shù)據(jù)元素 尺寸是64位時(shí)4位可以用于掩碼。當(dāng)向量尺寸是512位時(shí),當(dāng)向量的數(shù)據(jù)元素尺寸是8位 時(shí)64位可以用于掩碼,當(dāng)向量的數(shù)據(jù)元素尺寸是16位時(shí)32位可以用于掩碼,當(dāng)向量的數(shù) 據(jù)元素尺寸是32位時(shí)16位可以用于掩碼,且當(dāng)向量的數(shù)據(jù)元素尺寸是64位時(shí),8位可以用 于掩碼。
      [0032] 依賴于向量尺寸和數(shù)據(jù)元素尺寸的組合,可將所有64位、或僅64位的子集用作寫(xiě) 掩碼。一般而言,當(dāng)使用單個(gè)、每元素掩碼控制位時(shí),用于掩碼(有效位)的向量寫(xiě)掩碼寄 存器中的位的數(shù)量等于向量尺寸(以位為單位)除以向量的數(shù)據(jù)元素尺寸(以位為單位)。
      [0033] 如上文所指出的,寫(xiě)掩碼寄存器包含掩碼位,其對(duì)應(yīng)于向量寄存器(或存儲(chǔ)器位 置)中的元素并跟蹤應(yīng)該對(duì)其執(zhí)行操作的元素。因此,希望具有共同的操作,這些操作就向 量寄存器而論在這些掩碼位上復(fù)制類(lèi)似的行為,并且通常允許調(diào)整寫(xiě)掩碼寄存器內(nèi)的這些 掩碼位。
      [0034] 我們希望有效地向量化的一種重要的算法模式是"稀疏更新"。此處,我們?cè)陂g接 尋址的存儲(chǔ)器位置上執(zhí)行讀-修改-寫(xiě)操作(例如,加載A[B[i]],向其增加一些東西,并 且將該值存儲(chǔ)回A[B[i]])。對(duì)此進(jìn)行向量化包括進(jìn)行聚集-修改-分散操作,這是我們的 ISA和硬件直接支持的--對(duì)于i的16個(gè)連續(xù)值,聚集16個(gè)A[B[i]],進(jìn)行SMD計(jì)算,并 且將新的值分散回去。然而,該向量化假設(shè)單個(gè)聚集/分散指令訪問(wèn)每個(gè)存儲(chǔ)器位置不會(huì) 超過(guò)一次。例如,如果B[i]的兩個(gè)連續(xù)值是相同的,則對(duì)于第二個(gè)值的讀-修改-寫(xiě)依賴 于第一個(gè)一一以SMD方式同時(shí)進(jìn)行這些動(dòng)作違背該依賴性并且可導(dǎo)致不正確的結(jié)果。
      [0035] 可能會(huì)對(duì)向量寄存器中的每個(gè)值與"較早"(較接近LSB)元素的等同性進(jìn)行比較。 該指令輸出這些比較的結(jié)果作為一組位向量。這在圖18中示出。假設(shè)將存在復(fù)制信息,代 碼可被向量化且還通過(guò)確定具有獨(dú)特索引的元素子集、以SMD方式計(jì)算這些、然后循環(huán)回 去以對(duì)其余元素再次嘗試,來(lái)增強(qiáng)貫穿存儲(chǔ)器的依賴性,。在偽代碼中,這是:
      [0037]函數(shù) Compute_Mask_of_Unique_Remaining_Indices 是本公開(kāi)的一個(gè)焦點(diǎn)。該操 作應(yīng)該進(jìn)行以下:
      [0038] (1)將elements_left_mask零擴(kuò)展成與索引相同的尺寸,然后將結(jié)果與"多個(gè)比 較"的每個(gè)元素進(jìn)行邏輯AND。這放棄了在先前的do-while循環(huán)迭代中已經(jīng)計(jì)算的任何元 素上的沖突。目前,為此,我們需要將掩碼移動(dòng)到通用寄存器,然后將其廣播到向量寄存器。
      [0039] (2)測(cè)試(1)的結(jié)果的每個(gè)元素是否與零相等。如果元素是零,則它不具有沖突, 我們?cè)谳敵鲅诖a寄存器中設(shè)置與該元素對(duì)應(yīng)的位。
      [0040] (3)將⑵的結(jié)果與elements_left_mask進(jìn)行邏輯AND。這放棄了任何已經(jīng)被處 理的元素。這可能會(huì)使用5個(gè)指令。
      [0041] 以下的詳細(xì)描述是執(zhí)行全部以上的功能的單個(gè)指令(vptestconf kl, k2, zmml)。 該指令代替在本公開(kāi)開(kāi)始處示出的偽代碼中的整個(gè)Compute_Mask_of_Unique_Remaining_ Indices函數(shù)。這將偽代碼改變?yōu)椋?br>[0043]
      [0044] 該指令可用于計(jì)算與能并行進(jìn)行(彼此不沖突)的迭代的連續(xù)向量對(duì)應(yīng)的掩碼。 換言之,第一組對(duì)應(yīng)于掩碼,該掩碼中與先前迭代沒(méi)有沖突(讀至寫(xiě))的所有元素被設(shè)置為 1,這些可并行進(jìn)行。第二迭代僅需要考慮與未被第一掩碼等覆蓋的迭代對(duì)應(yīng)的元素。
      [0045] 以下是指令集中通常稱為向量緊縮測(cè)試沖突("VPTESTCONF")指令的指令的實(shí) 施例,以及可用于執(zhí)行將在若干不同方面獲益的這種指令的系統(tǒng)、架構(gòu)、指令格式等的實(shí)施 例。VPTESTCONF的執(zhí)行導(dǎo)致來(lái)自源掩碼操作數(shù)的數(shù)據(jù)與源緊縮數(shù)據(jù)操作數(shù)的每個(gè)數(shù)據(jù)元素 進(jìn)行邏輯"AND",之后判斷這些邏輯"AND"操作中的哪些指示沖突以形成沖突檢查結(jié)果,以 及將沖突檢查結(jié)果與來(lái)自源掩碼操作數(shù)的數(shù)據(jù)進(jìn)行邏輯"AND"。第二"AND"的結(jié)果被存儲(chǔ) 在諸如目的地掩碼操作數(shù)之類(lèi)的目的地位置中。在一些實(shí)施例中,掩碼操作數(shù)是如上詳細(xì) 描述的寫(xiě)掩碼寄存器。在一些實(shí)施例中,對(duì)源掩碼操作數(shù)進(jìn)行零擴(kuò)展以與源緊縮數(shù)據(jù)操作 數(shù)的每個(gè)數(shù)據(jù)元素尺寸相同。
      [0046] 圖1示出VPTESTCONF的操作的示例性圖示。在所示的示例中,利用AND邏輯 105(0)-(N)將來(lái)自源掩碼寄存器101的數(shù)據(jù)與緊縮數(shù)據(jù)源103(0)-(N)的數(shù)據(jù)元素進(jìn)行邏 輯"AND"。源寄存器101不必須是寫(xiě)掩碼寄存器,且可以是任何其它存儲(chǔ)實(shí)體,諸如通用寄 存器或緊縮數(shù)據(jù)寄存器。然而,為了便于理解,在本文中將使用源寫(xiě)掩碼寄存器。盡管圖示 示出了單獨(dú)的源寫(xiě)掩碼寄存器,但在一些實(shí)施例中,該數(shù)據(jù)被存儲(chǔ)在臨時(shí)緊縮數(shù)據(jù)寄存器 中,該臨時(shí)緊縮數(shù)據(jù)寄存器的尺寸與緊縮數(shù)據(jù)源103相同。可通過(guò)廣播指令完成對(duì)該寄存 器的寫(xiě)入,稍后在本說(shuō)明中詳細(xì)描述該廣播指令。在一些實(shí)施例中,將源寫(xiě)掩碼寄存器的數(shù) 據(jù)零擴(kuò)展為與緊縮數(shù)據(jù)源103的每個(gè)緊縮數(shù)據(jù)元素尺寸相同的數(shù)據(jù)。這種AND放棄了在先 前詳細(xì)描述的示例性場(chǎng)景中已經(jīng)計(jì)算的任何元素上的沖突。
      [0047] 每個(gè)AND操作的結(jié)果然后經(jīng)歷邏輯107(0)-107 (N),這些邏輯判斷AND的結(jié)果是否 為零。如果結(jié)果是零,則在該元素和其它數(shù)據(jù)元素之間沒(méi)有沖突。這些判斷的結(jié)果被存儲(chǔ) 在臨時(shí)結(jié)果寄存器109的對(duì)應(yīng)位位置中。例如,當(dāng)緊縮數(shù)據(jù)源103的數(shù)據(jù)元素0與源寫(xiě)掩 碼寄存器101的數(shù)據(jù)進(jìn)行AND,然后通過(guò)邏輯107(0)進(jìn)行沖突判斷時(shí),這是數(shù)據(jù)元素位置0 的沖突結(jié)果。因此,這種沖突判斷被存儲(chǔ)在臨時(shí)結(jié)果寄存器109的位位置0中。在一些實(shí) 施例中,當(dāng)沒(méi)有沖突時(shí)設(shè)置" 1"且其它情況下使用"0"。
      [0048] 利用邏輯111使臨時(shí)結(jié)果寄存器109的內(nèi)容與來(lái)自源寫(xiě)掩碼寄存器101的數(shù)據(jù)進(jìn) 行邏輯AND,以放棄已經(jīng)被處理的任何元素。該AND的結(jié)果被存儲(chǔ)在目的地寫(xiě)掩碼寄存器 113 中。
      [0049] VPTESTCONF的示例件格式
      [0050] 該指令的示例性格式是"VPTESTCONF Kl,K2, R2",其中目的地操作數(shù)K1是寫(xiě)掩碼 寄存器,K2是源寫(xiě)掩碼寄存器,且源操作數(shù)R2是向量(緊縮數(shù)據(jù))寄存器(諸如128、256、 512位寄存器等等)且VPTESTCONF是指令的操作碼。如先前所注意到的,指令還與其它寄 存器合作,并非僅僅是寫(xiě)掩碼寄存器。
      [0051] 執(zhí)行VPTESTCONF的示例件方法
      [0052] 圖2示出處理器中VPTESTCONF指令的執(zhí)行的實(shí)施例。在201,取出VPTESTCONF指 令,該指令具有源寫(xiě)掩碼寄存器操作數(shù)、源向量寄存器操作數(shù)、操作數(shù)和目的地寫(xiě)掩碼寄存 器。
      [0053] 在203,通過(guò)解碼邏輯解碼VPTESTCONF指令。依賴于指令的格式,在該階段可解釋 各種數(shù)據(jù),諸如是否有數(shù)據(jù)變換,寫(xiě)入和/或檢索哪些寄存器、訪問(wèn)哪些存儲(chǔ)器地址等。
      [0054] 在205,檢索/讀取源操作數(shù)值。例如,讀取源向量寄存器。如果源操作數(shù)之一或 兩者是存儲(chǔ)器操作數(shù),則檢索與該操作數(shù)相關(guān)聯(lián)的數(shù)據(jù)元素。在一些實(shí)施例中,將來(lái)自存儲(chǔ) 器的數(shù)據(jù)元素存儲(chǔ)在臨時(shí)寄存器中。在該階段,在一些實(shí)施例中,如果必要,對(duì)源寫(xiě)掩碼數(shù) 據(jù)進(jìn)行零擴(kuò)展,使其與源向量寄存器中的數(shù)據(jù)元素尺寸相同。在一些實(shí)施例中,(經(jīng)零擴(kuò)展 的)源寫(xiě)掩碼數(shù)據(jù)被廣播到與源向量寄存器尺寸相同的臨時(shí)向量寄存器。
      [0055] 在207,通過(guò)諸如一個(gè)或多個(gè)功能單元之類(lèi)的執(zhí)行資源執(zhí)行VPTESTCONF指令(或 構(gòu)成這一指令的操作,諸如微操作),以將來(lái)自源掩碼操作數(shù)的數(shù)據(jù)與源緊縮數(shù)據(jù)操作數(shù)的 每個(gè)數(shù)據(jù)元素進(jìn)行邏輯"AND",然后判斷邏輯"AND"操作中的哪些指示沖突以形成沖突檢 查結(jié)果,以及將沖突檢查結(jié)果與來(lái)自源掩碼操作數(shù)的數(shù)據(jù)進(jìn)行邏輯"AND"。
      [0056] 在209,第二"AND"的結(jié)果被存儲(chǔ)在諸如目的地掩碼操作數(shù)之類(lèi)的目的地位置中。 雖然分別示出了 207和209,但在一些實(shí)施例中,它們作為指令執(zhí)行的一部分一起執(zhí)行。
      [0057] 圖3示出用于處理VPTESTCONF指令的方法的實(shí)施例。在該實(shí)施例中,假定先前已 經(jīng)執(zhí)行了操作201-205中的一些(若不是全部),然而未示出那些操作,以免模糊下文呈現(xiàn) 的細(xì)節(jié)。例如,未示出取出和解碼,也未示出操作數(shù)檢索。
      [0058] 在301,將源寫(xiě)掩碼寄存器的數(shù)據(jù)零擴(kuò)展(如果需要的話)成與緊縮數(shù)據(jù)源和目的 地操作數(shù)的緊縮數(shù)據(jù)元素相同的尺寸。例如,如果源寫(xiě)掩碼寄存器是8位且具有值 X〇l且 緊縮數(shù)據(jù)源和目的地的數(shù)據(jù)元素是16位,則源寫(xiě)掩碼寄存器的數(shù)據(jù)被擴(kuò)展8位為X0001。 在該階段,還可完成廣播。
      [0059] 圖4示出用于該廣播的示例性過(guò)程。在一些實(shí)施例中,在401,源寫(xiě)掩碼寄存器的 (經(jīng)零擴(kuò)展的)數(shù)據(jù)被移動(dòng)到通用寄存器。在403,源寫(xiě)掩碼寄存器的(經(jīng)零擴(kuò)展的)數(shù)據(jù) 被廣播到與源緊縮數(shù)據(jù)元素寄存器尺寸相同的臨時(shí)緊縮數(shù)據(jù)元素(向量)寄存器。
      [0060] 在303,執(zhí)行(經(jīng)零擴(kuò)展的)源寫(xiě)掩碼寄存器的內(nèi)容與緊縮數(shù)據(jù)源的每個(gè)數(shù)據(jù)元素 的邏輯AND。如果執(zhí)行廣播,則在303,進(jìn)行臨時(shí)緊縮數(shù)據(jù)元素寄存器與源緊縮數(shù)據(jù)元素寄 存器的相應(yīng)的逐數(shù)據(jù)元素位置的AND。
      [0061 ] 在305,判斷每個(gè)AND操作的結(jié)果是否為零值。對(duì)于從AND操作得到的每個(gè)零值,在 307,將" 1"寫(xiě)入臨時(shí)存儲(chǔ)位置的相應(yīng)位位置。對(duì)于從AND操作得到的每個(gè)非零值,在309, 將"0"寫(xiě)入臨時(shí)存儲(chǔ)位置的相應(yīng)位位置。"
      [0062] 在311,將臨時(shí)存儲(chǔ)位置的值與源寫(xiě)掩碼寄存器的(經(jīng)零擴(kuò)展的)數(shù)據(jù)進(jìn)行AND, 并且在313,該AND的結(jié)果被存儲(chǔ)到目的地寫(xiě)掩碼寄存器中。
      [0063] 以下是指令集中通常稱為向量緊縮測(cè)試沖突("VPBROADCASTM")指令的指令的實(shí) 施例,以及可用于執(zhí)行將在若干不同方面獲益的這種指令的系統(tǒng)、架構(gòu)、指令格式等的實(shí)施 例。VPBROADCASTM的執(zhí)行導(dǎo)致尺寸為M的掩碼寄存器被廣播到具有尺寸為N的元素的向量 寄存器(N>M)。例如,VPBROADCASTMW2D將16位掩碼廣播到向量寄存器目的地的全部雙字 緊縮數(shù)據(jù)元素。可存在很多形式的這種指令,諸如字節(jié)至字節(jié)(B2B)、字節(jié)至字(B2W)、字至 字(W2W)、字至四字(W2Q)、雙字至雙字(D2D)、雙字至四字(D2W)、以及四字至四字(Q2Q)等 等。
      [0064] 圖5示出VPBROADCASTM的操作的示例性圖示。在所示的示例中,來(lái)自(經(jīng)零擴(kuò)展 的)源寫(xiě)掩碼寄存器501的數(shù)據(jù)被廣播到緊縮數(shù)據(jù)(向量)寄存器目的地503的多個(gè)數(shù)據(jù) 元素位置。
      [0065]示例件 VPBOADCASTM 格式
      [0066] 該指令的示例性格式是"VPBROADCASTM {k2}Rl,K1",其中源操作數(shù)K1是寫(xiě)掩碼寄 存器,目的地操作數(shù)R2是向量(緊縮數(shù)據(jù))寄存器(諸如128、256、512位寄存器等等)且 VPBROADCASTM是指令的操作碼。如先前所提到的,指令還與其它寄存器合作,并非僅僅是寫(xiě) 掩碼寄存器。K2是可按照以上詳細(xì)描述的方式使用的可選寫(xiě)掩碼。具體地,該寫(xiě)掩碼的每 個(gè)位位置可用于阻擋廣播的寫(xiě)入。例如,如果最低有效位的位置為0,則目的地寄存器的最 低有效數(shù)據(jù)元素位置不會(huì)被來(lái)自源寫(xiě)掩碼寄存器的(經(jīng)零擴(kuò)展的)數(shù)據(jù)寫(xiě)入。操作碼可另 外具有數(shù)據(jù)傳送類(lèi)型的指示,B2B、B2W等。這可用于判斷要進(jìn)行的零擴(kuò)展的量。
      [0067] 執(zhí)行VPBROADCASTM的示例件方法
      [0068] 圖6示出處理器中VPBROADCASTM指令的執(zhí)行的實(shí)施例。在601,取出具有源寫(xiě)掩
      當(dāng)前第2頁(yè)1 2 3 4 5 
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1