国产精品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>

      用于獨立數(shù)據(jù)上遞歸計算的向量化的讀和寫掩碼更新指令的制作方法

      文檔序號:8287845閱讀:576來源:國知局
      用于獨立數(shù)據(jù)上遞歸計算的向量化的讀和寫掩碼更新指令的制作方法
      【技術領域】
      [0001] 本公開涉及處理邏輯、微處理器以及相關聯(lián)的指令集架構的領域,該指令集架構 在被處理器或其他處理邏輯所執(zhí)行時運行邏輯、數(shù)學或其他功能性操作。
      【背景技術】
      [0002] 指令集或指令集架構(ISA)是計算機架構中與編程有關的部分,并且可包括原生 數(shù)據(jù)類型、指令、寄存器架構、尋址模式、存儲器架構、中斷和異常處理、以及外部輸入和輸 出(I/O)。術語指令在本申請中一般表示宏指令--宏指令是被提供給處理器(或指令轉 換器,該指令轉換器(例如利用靜態(tài)二進制轉換、包括動態(tài)編譯的動態(tài)二進制轉換)轉換、 變形、仿真或以其他方式將指令轉換成將由處理器處理的一個或多個其他指令)以供執(zhí)行 的指令--作為對比,微指令或微操作(微ops)是處理器的解碼器解碼宏指令的結果。
      [0003] ISA與微架構不同,微架構是實現(xiàn)該指令集的處理器的內部設計。具有不同微架構 的處理器可共享共同的指令集。例如,丨ntel·?酷睿(Core?)處理器、以及來自加利福尼亞州 桑尼威爾(Sunnyvale)的超微半導體有限公司(Advanced Micro Devices, Inc.)的諸多處 理器執(zhí)行幾乎相同版本的x86指令集(在更新的版本中加入了一些擴展),但具有不同的內 部設計。例如,可利用公知技術(包括專用物理寄存器、利用寄存器重命名機制的一個或多 個動態(tài)分配的物理寄存器)在不同微架構中以不同方式實現(xiàn)該ISA的同一寄存器架構。
      [0004] 許多現(xiàn)代ISA支持單指令多數(shù)據(jù)(SIMD)操作。取代僅對一個或兩個數(shù)據(jù)元素進 行操作的標量指令,向量指令(也稱為緊縮數(shù)據(jù)指令或SIMD指令)可同時或并行地對多個 數(shù)據(jù)元素或多對數(shù)據(jù)元素進行操作。處理器可具有并行的執(zhí)行硬件,以響應于該向量指令 同時或并行地執(zhí)行多個操作。SIMD操作在一個操作中對緊縮在一個向量寄存器或存儲器位 置之內的多個數(shù)據(jù)元素進行操作。這些數(shù)據(jù)元素被稱為緊縮數(shù)據(jù)或向量數(shù)據(jù)。向量元素中 的每一個可表示獨立的單條數(shù)據(jù)(例如像素的顏色,等等),可單獨或與其它數(shù)據(jù)無關地操 作該單條數(shù)據(jù)。
      [0005] 在一些情況下,SMD操作可以以遞歸方式對獨立向量數(shù)據(jù)元素進行操作,其中對 于不同數(shù)據(jù)元素,迭代的數(shù)量不同。因此,一些數(shù)據(jù)元素的計算可能完成,而一些其它數(shù)據(jù) 元素仍需要更多迭代。遞歸計算的一個示例是WHILE循環(huán)操作。在本示例中,在條件(X[i]) 為真(滿足)時,對N元素的數(shù)組X[i](i = 0,...,N-1)進行遞歸計算。當條件(X[i])變 為假時,X[i]的計算停止。該條件的示例可以是X[i]>〇。
      [0006] for(i = 0 ;i<N ;i++) {
      [0007] while (條件(X[i])) {
      [0008] X[i]=計算(X[i]) ;}}
      [0009] 如果對于X[i]的不同數(shù)據(jù)元素,WHILE循環(huán)迭代的數(shù)量不同,則以上計算無法被 輕易向量化。一種可能的方法是用處理器在不滿足條件的那些元素上執(zhí)行計算,然后丟棄 從這些元素導出的結果。然而,該方法具有低效率,因為處理器不僅在這些元素上執(zhí)行不必 要的計算,而且還無法利用由這些元素占據(jù)的向量寄存器槽口。
      【附圖說明】
      [0010] 在附圖中的諸個圖中通過示例而非限制地示出各個實施例:
      [0011] 圖1是根據(jù)一個實施例的包括向量寄存器和掩碼寄存器的指令處理裝置的框圖。
      [0012] 圖2是根據(jù)一個實施例的寄存器架構的框圖。
      [0013] 圖3示出根據(jù)一個實施例的向量操作序列的示例。
      [0014] 圖4A示出根據(jù)一個實施例的使處理器在向量寄存器和掩碼寄存器上執(zhí)行操作的 指令的偽代碼示例。
      [0015] 圖4B示出根據(jù)一個實施例的使用圖4A的指令的代碼段示例。
      [0016] 圖5A是根據(jù)一個實施例的示出響應于使用掩碼更新指令和向量移動指令的代碼 段而執(zhí)行的操作的流程圖。
      [0017] 圖5B是示出根據(jù)一個實施例的響應于掩碼更新指令而執(zhí)行的操作的流程圖。
      [0018] 圖5C是示出根據(jù)一個實施例的響應于向量移動指令而執(zhí)行的操作的流程圖。
      [0019] 圖6是示出根據(jù)一個實施例的使用軟件指令轉換器將源指令集中的二進制指令 轉換成目標指令集中的二進制指令的框圖。
      [0020] 圖7A是根據(jù)一個實施例的有序和無序流水線的框圖。
      [0021] 圖7B是根據(jù)一個實施例的有序和無序核的框圖。
      [0022] 圖8A-B是根據(jù)一個實施例的更具體的示例性有序核架構的框圖。
      [0023] 圖9是根據(jù)一個實施例的處理器的框圖。
      [0024] 圖10是根據(jù)一個實施例的系統(tǒng)的框圖。
      [0025] 圖11是根據(jù)一個實施例的第二系統(tǒng)的框圖。
      [0026] 圖12是根據(jù)本發(fā)明的實施例的第三系統(tǒng)的框圖。
      [0027] 圖13是根據(jù)一個實施例的芯片上系統(tǒng)(SoC)的框圖。
      【具體實施方式】
      [0028] 在以下描述中,陳述了多個具體細節(jié)。然而,應當理解的是,可不通過這些具體細 節(jié)來實施本發(fā)明的實施例。在其它實例中,未詳細示出公知的電路、結構以及技術,以免模 糊對本描述的理解。
      [0029] 本文所述的實施例提供用于提高獨立數(shù)據(jù)元素上的遞歸向量計算的效率的指令。 這些指令利用一對向量寄存器和一對掩碼寄存器來執(zhí)行遞歸向量計算,其中第一向量寄存 器充當用于累加向量計算結果的累加器,并且第二向量寄存器提供新的數(shù)據(jù)元素以填充第 一向量寄存器的未利用槽口(未使用或已完成的數(shù)據(jù)元素位置)。掩碼寄存器用于指示相 應向量寄存器中的哪些數(shù)據(jù)元素需要進一步的計算。
      [0030] 在一個實施例中,第一向量寄存器(即累加器)累加輸入數(shù)據(jù)元素,直到寄存器被 完整向量填滿。然后,處理器使用非掩碼(即,密集)向量操作在這些數(shù)據(jù)元素上執(zhí)行計算。 在計算之后,累加器中的一些元素(對于這些元素,完成了計算)可以被發(fā)送回儲存器或其 它存儲位置,而其它元素(對于這些元素,未完成計算)可以被保持在累加器中用于附加數(shù) 量的迭代。累加器中已完成計算的數(shù)據(jù)元素位置可以由還需要相同遞歸計算的新數(shù)據(jù)元素 所利用。
      [0031] 本文描述兩個指令RWMASKUPDATE和SPARSEM0V。這些指令在許多情況下提高向 量化的效率。例如,在一種情況下,輸入數(shù)據(jù)元素可能來自一個或多個稀疏向量數(shù)據(jù)集,每 個稀疏向量數(shù)據(jù)集不具有足以填滿整個累加器(即,第一向量寄存器)的元素。此外,來自 不同數(shù)據(jù)集的輸入數(shù)據(jù)元素在計算中可能需要不同數(shù)量的迭代。因此,由于無需更多計算 的那些數(shù)據(jù)元素,在累加器中剩余未利用的槽口。本文所述的指令允許這些未利用的槽口 被有用的元素填充,從而實現(xiàn)在完整向量上的遞歸計算。如在以下進一步細節(jié)中所述的, SPARSEM0V指令是將有用的數(shù)據(jù)元素(即需要計算的數(shù)據(jù)元素)從第二向量寄存器移動到 累加器中的向量移動指令。RWMASKUPDATE指令更新讀掩碼寄存器(與第二向量寄存器相關 聯(lián))和寫掩碼寄存器(與累加器相關聯(lián))以標識在這兩個向量寄存器中的有用數(shù)據(jù)元素的 位置。
      [0032] 與SPARSEM0V相結合地使用RWMASKUPDATE可以降低遞歸計算中所需指令的總數(shù), 并且簡化上溢和下溢情形,在上溢和下溢情形中第二向量寄存器中有用數(shù)據(jù)元素(即,源 數(shù)據(jù)元素)的數(shù)量不與第一向量寄存器中未利用槽口(即,目標位置)的數(shù)量相匹配。經 更新的讀和寫掩碼用于控制兩個向量寄存器之間的數(shù)據(jù)移動;具體而言,寫掩碼位〇用于 標識累加器中的目標位置;并且讀掩碼位1用于標識第二向量寄存器中的源數(shù)據(jù)元素。使 用反轉的寫掩碼位來標識目標位置簡化稀疏和遞歸計算的向量化中的數(shù)據(jù)累加。
      [0033] 圖1是指令處理裝置115的實施例的框圖,該指令處理裝置具有執(zhí)行單元140,該 執(zhí)行單元包括可操作用于執(zhí)行指令(包括RWMASKUPDATE和SPARSEM0V指令)的電路。在 一些實施例中,指令處理裝置115可以是處理器、多核處理器的處理器核、或者電子系統(tǒng)中 的處理元件。
      [0034] 解碼器130接收高級機器指令或宏指令形式的傳入指令,并且解碼所述指令以生 成低級微操作、微代碼進入點、微指令或其他低級指令或控制信號,它們反映了原始的高級 指令和/或從原始的高級指令導出。低級指令或控制信號可通過低級(例如,電路級或硬 件級)操作來實現(xiàn)高級指令的操作??墒褂酶鞣N不同的機制來實現(xiàn)解碼器130。合適機制 的示例包括但不限于,微代碼、查找表、硬件實現(xiàn)、可編程邏輯陣列(PLA)、用于實現(xiàn)本領域 已知的解碼器的其他機制等。
      [0035] 解碼器130可接收針對高速緩存110、存儲器120或其他源的傳入指令。經解碼的 指令被發(fā)送到執(zhí)行單元140。執(zhí)行單元140可從解碼器130接收一個或多個微操作、微代碼 進入點、微指令、其它指令或其它控制信號,它們反映了所接收的指令或者是從所接收的指 令導出的。執(zhí)行單元140從寄存器組170、高速緩存110和/或存儲器120接收數(shù)據(jù)輸入并 向它們生成數(shù)據(jù)輸出。
      [0036] 在一個實施例中,寄存器組170包括架構寄存器,架構寄存器也被稱為寄存器。短 語架構寄存器、寄存器組、以及寄存器在本文中用于表示對軟件和/或編程器可見(例如, 軟件可見的)和/或由宏指令指定來標識操作數(shù)的寄存器,除非另外予以規(guī)定或清楚明顯 可知。這些寄存器不同于給定微架構中的其他非架構式寄存器(例如,臨時寄存器、重排序 緩沖器、引退寄存器等)。
      [0037] 為了避免混淆描述,已示出和描述了相對簡單的指令處理裝置115。應當理解,其 他實施例可具有超過一個執(zhí)行單元。例如,裝置115可包括多個不同類型的執(zhí)行單元,諸如 例如算術單元、算術邏輯單元(ALU)、整數(shù)單元、浮點單元等。指令處理裝置或處理器的再 其他實施例可具有多個核、邏輯處理器或執(zhí)行引擎。稍后將參考圖7-13提供指令處理裝置 115的多個實施例。
      [0038] 根據(jù)一個實施例,寄存器組170包括一組向量寄存器175和一組掩碼寄存器185, 兩者存儲RWMASKUPDATE和SPARSEM0V指令的操作數(shù)。每個向量寄存器175可以是512位、 256位、或128位寬,或者可以使用不同的向量寬度。每個掩碼寄存器185包含多個掩碼位, 每個掩碼位對應于向量寄存器175之一的一個數(shù)據(jù)兀素。由于每個掩碼位用于掩碼向量寄 存器的數(shù)據(jù)元素,64位掩碼寄存器可以用于掩碼512位寄存器的六十四個8位數(shù)據(jù)元素。 對于具有不同寬度(例如256位或128位)的向量寄存器和不同尺寸(例如16位、32位或 64位)數(shù)據(jù)元素,可以結合向量操作,使用不同數(shù)量的掩碼位。
      [0039] 圖2示出了支持本文描述的指令的底層寄存器架構200的實施例。寄存器架構200 基于丨ntel?酷睿(Core?)處理器,該處理器實現(xiàn)包括x86、MMX?、流SMD擴展(SSE)、SSE2、 SSE3、SSE4. 1和SSE4. 2指令的指令集,以及SIMD擴展的附加集,該附加集被稱為高級向量 擴展(AVX) (AVX1、和AVX2)。然而,應理解,也可使用支持不同寄存器長度、不同寄存器類型 和/或不同數(shù)量的寄存器的不同的寄存器架構。
      [0040] 在所示的實施例中,存在512位寬的32個向量寄存器210 ;這些寄存器被稱為 zmmO至zmm31。低位16個zmm寄存器的低階256位覆蓋在寄存器ymm〇-16上。低位16個 zmm寄存器的低階128位(ymm寄存器的低階128位)覆蓋在寄存器xmmO-15上。在所示實 施例中,存在8個掩碼寄存器220 (k0到k7),每個掩碼寄存器的長度為64位。在一替代實 施例中,掩碼寄存器220的寬度是16位。
      當前第1頁1 2 3 4 5 
      網友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1