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

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

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