TWI525539B - 用於同步化simd向量的方法,處理器,及系統 - Google Patents
用於同步化simd向量的方法,處理器,及系統 Download PDFInfo
- Publication number
- TWI525539B TWI525539B TW102143765A TW102143765A TWI525539B TW I525539 B TWI525539 B TW I525539B TW 102143765 A TW102143765 A TW 102143765A TW 102143765 A TW102143765 A TW 102143765A TW I525539 B TWI525539 B TW I525539B
- Authority
- TW
- Taiwan
- Prior art keywords
- data elements
- data
- processor
- storage location
- instruction
- Prior art date
Links
- 239000013598 vector Substances 0.000 title claims description 31
- 238000000034 method Methods 0.000 title claims description 6
- 230000004044 response Effects 0.000 claims description 20
- 230000015654 memory Effects 0.000 description 83
- 238000012545 processing Methods 0.000 description 44
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 23
- 102100037226 Nuclear receptor coactivator 2 Human genes 0.000 description 23
- 101000974356 Homo sapiens Nuclear receptor coactivator 3 Proteins 0.000 description 16
- 102100022883 Nuclear receptor coactivator 3 Human genes 0.000 description 16
- 239000003795 chemical substances by application Substances 0.000 description 15
- 238000010586 diagram Methods 0.000 description 9
- 238000013500 data storage Methods 0.000 description 8
- 238000012360 testing method Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 235000012431 wafers Nutrition 0.000 description 4
- 101000602926 Homo sapiens Nuclear receptor coactivator 1 Proteins 0.000 description 3
- 101000651467 Homo sapiens Proto-oncogene tyrosine-protein kinase Src Proteins 0.000 description 3
- 102100027384 Proto-oncogene tyrosine-protein kinase Src Human genes 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000011343 solid material Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000011282 treatment Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Multi Processors (AREA)
Description
此揭露有關於微處理器及其他處理裝置,且詳言之,關於單指令多資料(SIMD)向量的同步化。
在例如併入多線程處理器、多處理裝置、及/或多核心處理器的系統中之多線程及/或處理單元(此後稱為代理者)有時會需要共享資源及儲存在系統內之資料。必須要小心以確保代理者存取最近且最新的資料且亦確保代理者不存取及修改目前與另一代理者關聯之資料。使此資料及資源共享更複雜地,許多現今的處理裝置包括一或更多專用快取記憶體。在多處理器及多核心系統中,多晶片上快取經常會-且實際上,一般會-含有一個資料項的多個複本。依此,當代理者存取資料項的複本時,確保讀取更新或有效的資料值。
因此,在這些系統中維持「快取連貫性」。快取連貫性是指從快取記憶體寫入之資料或讀取到快取記憶體中之資料的同步化,以使儲存在快取中之被線程或處理器存取
的任何資料項為該資料項之最新的複本。此外,從快取寫回到主記憶體中之任何資料值應為最新的資料。
維持快取連貫性並確保當代理者需要資料項時會存取到該資料項之最新值的一種方法為實行旗號(如旗標或鎖定)。鎖定,例如,包含回應於由代理者從記憶體請求特定資料項(例如,在負載操作中)而執行的程序以確保處理器及/或線程之間的同步化。一般而言,鎖定與一組指令關聯,包括讀取/負載指令、修改資料項的指令、及寫入/儲存指令。鎖定-在此亦稱為「鎖定序列」或「鎖定操作」-可,例如,包括獲取儲存資料之記憶體位置的所有權、對資料執行原子操作同時防止其他程序操作那個資料、以及在執行原子操作之後釋放記憶體位置之所有權。原子操作為序列且以不中斷的方式執行的操作,且進一步地,保證被完成或完全不被完成(亦即,操作為無法分割)。
10‧‧‧電腦系統
11‧‧‧處理單元
12‧‧‧記憶體
13‧‧‧匯流排
15‧‧‧共享記憶體空間
16‧‧‧鎖定
18‧‧‧主記憶體
19‧‧‧本地匯流排
20‧‧‧外部快取
21‧‧‧指令解碼器
22‧‧‧系統匯流排
23‧‧‧匯流排介面單元
24‧‧‧資料存取控制單元
25‧‧‧L0快取
26‧‧‧記憶體排序緩衝器
27‧‧‧功能單元
28‧‧‧L1快取
29‧‧‧暫存器檔單元
30‧‧‧資料儲存裝置
31‧‧‧唯讀記憶體
32‧‧‧可移除式儲存媒體
40‧‧‧指令
41~45‧‧‧運算元
46‧‧‧履行單元
50‧‧‧電腦系統
51‧‧‧處理器
52‧‧‧履行單元
53‧‧‧向量比較與交換指令
54‧‧‧晶片組
54a‧‧‧BIU
55‧‧‧互連
56‧‧‧記憶體控制器集線器
58‧‧‧記憶體
59‧‧‧指令
60‧‧‧資料
61‧‧‧構件互連
62‧‧‧輸入/輸出控制器集線器
63‧‧‧互連
64‧‧‧資料貯存
65‧‧‧第二構件互連
66‧‧‧序列擴充埠
67‧‧‧網路控制器
70‧‧‧電腦系統
71‧‧‧處理器
72‧‧‧輸入/輸出控制器集線器
72-1~72-M‧‧‧處理器核心
74‧‧‧晶片組
75‧‧‧互連
76‧‧‧記憶體控制器集線器
78‧‧‧記憶體
81‧‧‧構件互連
84‧‧‧資料貯存
85‧‧‧第二構件互連
86‧‧‧序列擴充埠
87‧‧‧網路控制器
88‧‧‧快取
89‧‧‧共享快取
90‧‧‧互連
91‧‧‧輸入/輸出集線器
第1圖為計算系統的區塊圖。
第2圖為第1圖中所示之處理裝置的示意圖。
第3圖為單指令多資料(SIMD)向量比較與交換指令的編碼方案。
第4圖為用以實行第3圖中所示之指令格式的第一示範電腦系統的區塊圖。
第5圖為用以實行第3圖中所示之指令格式的第二示
範電腦系統的區塊圖。
第6圖為用以實行第3圖中所示之指令格式的第三示範電腦系統的區塊圖。
第7圖為用以實行第3圖中所示之指令格式的第四示範電腦系統的區塊圖。
其他特徵及優點將從說明及圖示中以及從申請專利範圍變得明顯。
在下列說明中,提出各種特定細節,諸如特定指令、指令格式、諸如暫存器及記憶體之裝置等等,以提供在此所提供之實例的詳盡理解。然而,熟悉此技藝者將理解到可在無這些特定細節下實踐本發明。
判斷旗號是否鎖定(及/或使其如此)的一種方式為透過讀取-修改-寫入序列(或操作)的使用。然而,讀取-修改-寫入實行例的一個問題為旗號機制本身之獲取及釋放。亦即,當程序嘗試取得共享的記憶體空間的控制時,其會先讀取鎖定值,檢查並修改(若被允許的話)該值,並將修改值寫回至鎖定。一般希望履行讀取-修改-寫入操作為原子操作(亦即,一旦履行開始則不中斷地加以完成)以防止其他程序修改鎖定值。藉由使用原子操作,程序可可藉由在另一程序嘗試獲取鎖定之前啟動寫入以完成操作而獲取(讀取)旗號,修改值(或被允許的話)並釋放旗號。
茲參照第1圖,電腦系統10顯示成具有藉由匯流排13耦合至記憶體12(如暫存器、快取、RAM等等)的複數處理單元11(如處理器、核心、履行單元等等)。一或更多處理單元11與一或更多線程關聯。依此,電腦系統10包括任何適當數量的處理單元11,各具有任何適當數量的線程。處理單元11可各形成個別的積體電路裝置之一部分,或替代地,所有處理單元11(或其之一部分)可形成在單一晶粒上。在此特定電腦系統中,四個處理單元11(標示為P1、P2、P3、及P4)顯示為系統10之部分。所有四個處理單元11皆耦合至記憶體12並特別至記憶體12內的共享記憶體空間15。
可理解到可以各種方式組態記憶體12。雖繪示成單一記憶體,記憶體12可包含多個內部及/或外部記憶體。在特定實例中,所有四個處理單元11存取記憶體12,且由超過一個的處理單元11存取標示成共享空間15之記憶體12的部分。記憶體12內可有其他共享區域,其中兩或更多處理單元11具有存取這種共享區域的能力。記憶體12之非共享區域退居為僅被一個處理單元11存取。
第1圖中所示之電腦系統10意欲為一示範電腦系統且可包括許多額外構件,其為了清楚而予以省略。舉例而言,電腦系統10可包括與一或更多處理單元11關聯之直接記憶體存取(DMA)控制器、網路介面(如網卡)、晶片組,還有額外信號線及匯流排。並且,應了解到電腦系統10可不包括第1圖中所示之所有構件。
在第1圖中,所採用之旗號為鎖定(或鎖定變數)16,其分配成控制對一或更多分別的共享空間15的存取(由虛線14所示)。鎖定16為記憶體中之一特定位置,分配成含有與獲得對共享空間15之存取關聯的值。因此,為了使處理單元11之一者存取共享空間15,其首先存取相應的鎖定16並測試儲存在鎖定位置16中之資料的狀態(值)。在最簡單的形式中,可分配兩個值到鎖定16。第一值指示共享空間可供存取且第二值指示共享空間正被利用中而因此不供存取。再次,在最簡單的實施例中,可使用位元狀態1及0作為鎖定16的鎖定及解鎖狀態。
將可理解到鎖定16之實際鎖定值及鎖定狀態為設計選擇並可發想出許多變化。並且,鎖定16的位置無需在記憶體12本身內。此外,參照第1圖,可理解到記憶體12可為各種記憶體裝置之一。亦可由亦存取記憶體之記憶體存取裝置(如直接記憶體存取控制器之裝置)取代一或更多處理單元11。在這些例子中,這些裝置會與在此所述之處理單元11針對取得對共享空間15之存取類似地作用。最後,雖僅顯示單一匯流排13,在與匯流排13相同或不同階級層可有用於耦合各種裝置之複數匯流排。
由處理單元11針對資料傳送而對記憶體12之存取典型涉及載入及儲存操作的使用。載入操作從被存取的記憶體中之一位置傳送記憶體內容,並且儲存操作傳送資料至被存取的記憶體位置。因此,使用載入/儲存操作來存取記憶體12及鎖定16以在處理單元11與記憶體12之間進
行資料傳送。載入及儲存存取亦分別稱為讀取及寫入存取。
參照第1及2圖,電腦系統10包括經由系統匯流排22與處理單元11耦合之唯讀記憶體(ROM)31及主記憶體18,主記憶體18包含,例如,任何適當類型的隨機存取記憶體(RAM)。處理單元11亦具有藉由系統匯流排22與之耦合的資料儲存裝置30。資料儲存裝置30包含任何適當的非揮發性記憶體,諸如,例如,硬碟驅動器。電腦系統10進一步包括可移除式儲存媒體32,諸如軟碟驅動器、CD ROM驅動器、及/或USB驅動器。
在第2圖中,處理單元11包括數個構件,其藉由一或更多匯流排互連,且這些匯流排由本地匯流排19象徵性繪示在第2圖中。本地匯流排19,且因此,處理單元11之構件-與匯流排介面單元23耦合。匯流排介面單元23將處理單元11與系統匯流排22耦合,藉此致能處理單元11與主記憶體18之間,還有處理單元11與外部快取20之間的通訊。
處理單元11包括與本地匯流排19耦合的指令解碼器21。指令解碼器21接收與在處理單元11上履行之一程式或一段編碼關聯之指令(或諸指令)並將指令分成一或更多機械級指令/操作(uop或uops)。應了解到處理單元11可接收與一程式關聯的一或更多指令,而電腦系統10的另一處理單元11可接收與相同程式關聯的一或更多指令。依此,可在多處理單元11上履行一個程式。
處理單元11進一步包括多個履行單元,包括,例如,資料存取控制單元(DAC)24、記憶體排序緩衝器(MOB)26、暫存器檔單元29、及功能單元27。
暫存器檔單元29包括複數暫存器,各具有16、32、64、128、256、或512位元的貯存。另外,暫存器檔單元29可包括一或更多暫存器檔,各具有一或更多暫存器。功能單元27包含一或更多功能單元,諸如,例如,算術、邏輯、及/或浮點單元。MOB 26確保載入及儲存指令之正確排序,且進一步地,提供在記憶體階級內這些異動的正確排序列(亦即,電腦系統10內之各個記憶體層級,包括L0快取25、L1快取28、外部快取20、主記憶體18、及資料儲存裝置30)。L0快取25及L1快取28的各者可儲存由功能單元27最近存取或預期將存取的資料。若功能單元27請求之資料項位存在快取記憶體25及28之一者中,則發生快取「命中」;然而,若請求的資料不存在於快取中,則發生快取「未命中」。一或更多快取記憶體(如L0快取25)可與DAC 24耦合。DAC 24控制導致快取未命中之所有異動,還有需要特別處置之其他異動。鎖定,承如上述,為需要DAC 24或處理單元11的其他構件特別處置之一種異動。若將uop對應至例如一算術操作,則將uop分派至功能單元27,其接著執行該算術操作。若uop對應至記憶體參照指令-如,載入或儲存-則將uop分派至MOB 26。
應了解第2圖中所示之處理單元11意欲代表示範處
理裝置,且進一步地,這一類的處理單元可包括未圖示之許多額外構件。為了方便了解而省略這些構件。例如,處理單元11可包括位址產生單元、保留站、重排序緩衝器、排程器、分段及位址轉譯單元、轉譯後備緩衝器、分頁未命中處置器、及/或內部時脈電路。並且,雖繪示成離散的元件,應了解到第2圖中所示的許多構件可予以結合及/或共享電路。最重要地,在此所述之實施例不限於任何特定架構或配置-還有不限於用來描述這一類架構或配置的任何特定術語-且可在任何種類的處理裝置上實踐所揭露的實施例,無論其之架構或歸於其之術語。
排程以供履行之任何一或更多uops可包含鎖定的uop。鎖定,承如上述,對應至一序列的操作(如,載入、修改、及儲存),其係以確保處理器及/或線程間之同步的方式加以執行。
第3圖顯示用於執行讀取-修改-寫入操作之一指令。指令40為包括五個運算元41至45的單一原子指令。運算碼運算元41辨別出其為VCMPXCHG指令。運算元42至44對應至與SRC1/DEST、SRC2、SRC3關聯之來源及目的地運算元,以及,在一些實行例中,遮罩儲存位置(MSK)及/或偏置(或「即時(immediate)」)運算元45。此偏置或即時用來提供當定址記憶體12時自基準位址(諸如SRC1)的偏置。下述之指令可能會有這類偏置,但並未繪示。指明遮罩儲存位置45之實行例參照儲存遮罩元件的一暫存器或記憶體位置,該遮罩元件對應於
儲存在由SRC1/DEST運算元所參照的儲存位置之個別資料元件。
回應於指令40,處理單元11讀取第一來源資料,將其與另一來源資料作比較,且若比較符合預定的條件(如成立(true)或匹配條件),則寫入某修改值至一位置,其可為第一來源資料的原始位置。若不符合預定條件,則不改變該位置中之原始資料。指令利用三個來源運算元(諸如,此後所使用之SRC1、SRC2、及SRC3)及一目的地運算元(諸如,此後所使用之DEST)來供應用於履行指令時之各個資訊的位置。操作特定的暫存器可在履行指令時用來提供一或更多來源資料及/或用來儲存目的地資料,免除在實際的指令格式中明白指出運算元的需要。此外,在此實例中,SRC1運算元及DEST運算元參照相同的儲存位置(SRC1/DEST)。
在指令40履行之前,將SRC1、SRC2、及SRC3載入暫存器檔單元29中之暫存器中。例如,欲安全地更新儲存在由SRC1/DEST運算元所指明的位置中之值,初將該值讀取到由SRC2運算元所指明的位置中,並將取代值讀到由SRC3運算元所指明的位置中。接著,履行原子比較-交換運算以將和SRC1/DEST運算元關聯的現值與和SRC2運算元關聯的值作比較(亦即,現值可能因另一代理者之修改而與初始複製的值不同)。若該值並未改變,則以和SRC3運算元關聯的值加以取代,並設立零旗標以指示成功更新。然而,若另一代理者已經在初始複製與比
較-交換操作之間修改過該值,則不取代現值並清除零旗標以指示失敗的更新。
第4圖中所示之區塊圖繪示當履行指令40時之資訊流。處理單元11包括履行單元46(例如,第2圖之DAC24)、暫存器檔29、匯流排介面單元(BIU)23、及解碼器21,其皆藉由本地匯流排19耦合在一起。暫存器檔29包括複數暫存器,其由履行單元46加以存取以履行各種操作。如第4圖中所示,VCMPXCHG指令40顯示成存在於履行單元46內且從指令之運算元到與SRC1、SRC2、SRC3、及DEST關聯的對應暫存器顯示虛線。暫存器位在暫存器檔29內。解碼器21用來解碼各種指令(包括VCMPXCHG指令40)以使履行單元46執行操作。
記憶體12,承如先前在第1及2圖中所述,顯示成藉由匯流排19及/或匯流排22耦合至BIU 23。依此,處理單元11與記憶體12之間的資料傳送可經由BIU 54a或本地匯流排19發生。可理解到利用VCMPXCHG指令40的程式常規可存在於一些記憶體內,其亦可為或包括記憶體12。
下列偽碼繪示VCMPXCHG指令40如何操作之實例。可使用其他偽碼、語言、操作、操作順序、及/或數字。
在上述的特定VEX.128及VEX.256實例中,鎖定值分別儲存在由SRC1/DEST所參照之512位元的儲存位置(如,64位元組的快取線或暫存器)之位元[127:0]及位元[255:0]之中。在一實施例中,在由SRC1/DEST所參照的鎖定值與其所對應至之共享儲存位置15之間有一對一的對應性。例如,SRC1/DEST可參照十六個8位元的鎖定值(128位元),各對應至快取線或SIMD暫存器中之十六個儲存位置的個別一個。替代地,SRC1/DEST可參照三十二個8位元的鎖定值(256位元),各對應至快取線或SIMD暫存器中之三十二個儲存位置的個別一個。
再參照回上述實例,SRC1/DEST與SRC2之間的比較結果指示鎖定值是否被修改。成立條件指示鎖定並未被修改且鎖定在解鎖狀態中。當符合此條件時,將由SRC3所參照的值寫至SRC1/DEST,將鎖定值修改成鎖定狀態,以防止其他代理者存取共享空間。之後,設立零旗標(ZF)以指示成功操作。
不成立(false)條件指示一或更多鎖定已被修改(鎖定)且另一代理者已經拿到共享空間的所有權。當條件不成立時,將SRC1/DEST所參照的值(目前鎖定值)儲存
至SRC2,並清除零旗標以指示不成功的操作。接著在自操作返回之前清除SRC2的高位元組。
典型上,若首先拒絕存取,詢問的代理者會繼續重試存取直到獲取存取。在一些實行例中,一外環(loop)將包括在重新履行VCMPXCHG指令40之前的一非原子載入及測試。一旦處理器完成其對於共享記憶體空間15的存取,其典型地將以至鎖定16的寫入循環(以將之解鎖)來釋放其對於共享記憶體空間15的控制,使其他代理者現可取得對共享記憶體空間15的進入。然而,可理解到處理器如何釋放共享記憶體空間為設計選擇,其可由系統架構主宰。
在一些實行例中,VCMPXCHG指令40包括具有複數遮罩元件的遮罩向量,各對應至由SRC1/DEST所參照的複數資料元件之一。遮罩向量儲存位置可為暫存器檔單元29中之一暫存器,諸如,例如,陰影暫存器、控制暫存器、旗標暫存器、一般目的暫存器、SIMD暫存器、或其他適當的暫存器。在一實施例中,由SRC1/DEST所參照的資料元件與儲存在遮罩暫存器中之對應的遮罩元件之間有一對一的對應性。遮罩元件或值可包括旗標、標記、標籤、指標、及/或其他數字、位元、及/或碼,用以指示(例如,在對應或指向的暫存器位置中)一對應資料元件是否將被比較及/或修改。例如,具有「1」的值之遮罩元件可指示一對應資料元件將被修改;否則,使用「0」。可使用其他數字或旗標。
經遮罩的VCMPXCHGD及VCMPXCHGQ指令之實例繪示在下列偽碼中,其分別針對16寬512位元組向量及8寬512位元組向量。在經遮罩的比較實行例中,僅比較並更新現行的元件。
在上述特定的VCMPXCHGD及VCMPXCHGQ實例中,變數,ALL_CMPS_SUCCEED首先預設成1(亦即,成立條件)。一旦設定好,針對每一現行的遮罩元件(例如,具有特定值儲存於其中之遮罩元件,包括,例如,二進制1或十六進制值0x01、0xFF、或0x80),將由SRC1/DEST所參照的對應儲存位置與由SRC2中之對應位元所參照的值作比較。若不使用遮罩,將由SRC1/DEST
所參照的每一儲存位置與由SRC2中之對應位元所參照的值作比較。
再次,SRC1/DEST與SRC2的對應值之間的比較結果指示特定鎖定值是否已經修改。然而,在這些實例中,成立條件(亦即,非匹配條件)指示鎖定已經修改並且另一代理者取得共享儲存位置的所有權。當任一參照儲存位置符合此條件時,清除ALL_CMPS_SUCCEED,指示所有比較並沒有成功。之後,清除零旗標並且針對每一現行的遮罩元件,將儲存在由SRC1/DEST所參照的對應儲存位置中之值載入SRC2中之對應位元中。
當比較結果為不成立(亦即,針對每一現行的遮罩元件,由SRC1/DEST所參照的對應值匹配SRC2中之對應值),ALL_CMPS_SUCCEED保持設立而無改變。之後,設立零旗標(ZF)並且針對每一現行的遮罩元件,將儲存在SRC3中之對應儲存位置中之值載入SRC1/DEST中之對應位元中,將鎖定值修改成鎖定狀態,以防止其他代理者存取共享空間。
第5圖之區塊圖繪示當履行指令40時之資訊流的另一實例。如第5圖中所示,VCMPXCHG指令40顯示駐存在履行單元46內且從指令之運算元到與SRC2、SRC3、及MSK關聯的對應暫存器顯示虛線。在此實例中,遮罩儲存位置(MSK)為遮罩暫存器且與SRC1/DEST關聯的儲存位置為L1快取。暫存器位在暫存器檔單元29內。
在履行指令40之前,預先提取SRC1到L1快取中並
載入SRC2、SRC3、及MSK資料到暫存器檔單元29中之暫存器中。遮罩暫存器儲存複數遮罩元件,其對應至與SRC1/DEST運算元關聯之儲存位置中的個別資料元件。另外,將比較值初讀到由SRC2運算元所指明的位置中,並將取代值讀到由SRC3運算元所指明的位置中。接著,履行指令40以令履行單元46比較與SRC1/DEST及SRC2運算元關聯之對應資料元件,且若存在匹配,則以來自SRC3之對應資料元件取代來自SRC1/DEST的資料元件。若不存在匹配,則指令40的履行會令履行單元46以對應的SRC1/DEST資料元件取代SRC2資料元件。
在一些實行例中,僅若對應遮罩元件為現行才執行SRC1/DEST與SRC2資料元件對之間的比較。在某些實行例中,履行單元46進一步組態成若針對對應遮罩元件為現行之每一對應資料元件對之間存在匹配,則設立一旗標,並且若針對對應遮罩元件為現行之任何對之間不存在匹配,則清除旗標。此外,在一些實行例中,僅若對應至個別SRC1/DEST資料元件的遮罩元件為現行,才執行由對應SRC3資料元件來取代SRC1/DEST資料元件。又此外,在一些實行例中,僅若對應至個別SRC1/DEST資料元件的遮罩元件為現行,才執行由對應SRC1/DEST資料元件來取代SRC2資料元件。
在一些實施例中,指示鎖定情況之鎖定值與指示現行遮罩元件的遮罩值相同(例如,二進制1)。在這類情況中,可使用SRC3作為遮罩向量及鎖定值取代向量兩者。
在一些實行例中,比較-交換操作完成履行而不更新與SRC2運算元關聯的值。之後,測試一旗標(如零旗標)且若其指示有關於和SRC1/DEST運算元關聯之值的更新操作失敗,則重複恰好在比較-交換操作前之步驟以在重複比較-交換操作前更新與SRC2及SRC3關聯的值。
一或更多實施例包括製造物件,其包括有形機器可存取及/或機器可讀取媒體,其上儲存SIMD指令,該指令指明複數資料元件的向量比較與交換操作,各資料元件具有對應的測試元件、取代元件、及遮罩元件,若由機器(如履行單元)履行指令,會令機器在若個別遮罩元件為現行時比較資料元件與對應測試元件;以及回應於判斷所有比較指示匹配,則設立旗標並以對應取代元件取代經比較的資料元件;以及回應於判斷所有比較不指示匹配,則清除旗標並以對應資料元件取代經比較的測試元件。有形媒體可包括一或更多固體材料。媒體可包括一種機制,其以機器可存取的形式提供,例如儲存,資訊。例如,媒體可隨意包括可記錄媒體,諸如,例如,軟碟、光碟儲存媒體、光碟、CD-ROM、磁碟、光磁碟、唯讀記憶體(ROM)、可編程ROM(PROM)、可抹除可編程ROM(EPROM)、電性可抹除可編程ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、及上述之組合。
適當的機器包括,但不限於,履行單元、一般目的處理器、特殊目的處理器(如,圖形處理器及密碼處理器)
、密碼加速器、網路通訊處理器、電腦系統、網路裝置、數據機、個人數位助理(PDA)、行動電話、及具有一或更多履行單元之各種的其他電子裝置,此僅為少數實例。又其他實施例關於電腦系統、嵌入式系統、或具有履行單元及/或執行在此揭露之方法的其他電子裝置。
第6圖繪示包括處理器51之適當電腦系統50的一實例。處理器包括至少一履行單元52,其能夠履行至少一向量比較與交換指令53。
處理器經由匯流排(如前端匯流排)或其他互連55耦合至晶片組54。互連可用來在處理器及系統中之其他構件之間經過晶片組傳送資料信號。
晶片組包括稱為記憶體控制器集線器(MCH)56之系統邏輯晶片。MCH耦合至前端匯流排或其他互連55。
記憶體58耦合至MCH。在諸多實施例中,記憶體可包括隨機存取記憶體(RAM)。DRAM為用於一些但非所有電腦系統中之一種RAM的實例。如所示,記憶體可用來儲存指令59,諸如一或更多乘法指令,及資料60。
構件互連61亦與MCH耦合。在一或更多實施例中,構件互連可包括一或更多周邊構件互連快速(PCIe)介面。構件互連可允許其他構件透過晶片組耦合至系統之其餘部分。這類構件之一實例為圖形晶片或其他圖形裝置,雖此為隨意且不必要。
晶片組亦包括輸入/輸出(I/O)控制器集線器(ICH)62。ICH透過集線器介面匯流排或其他互連63耦合至
MCH。在一或更多實施例中,匯流排或其他互連63可包括直接媒體介面(DMI)。
資料貯存64耦合至ICH。在諸多實施例中,資料貯存可包括硬碟驅動器、軟碟驅動器、CD-ROM裝置、快閃記憶體裝置、或之類、或上述的組合。
第二構件互連65亦與ICH耦合。在一或更多實施例中,第二構件互連包括一或更多周邊構件互連快速(PCIe)介面。第二構件互連可允許各種構件透過晶片組耦合至系統之其餘部分。
序列擴充埠66亦與ICH耦合。在一或更多實施例中,序列擴充埠可包括一或更多通用序列匯流排(USB)埠。序列擴充埠可允許各種其他類型的輸入/輸出裝置透過晶片組耦合至系統之其餘部分。
可隨意與ICH耦合之其他構件的少數示範實例包括,但不限於,音頻控制器、無線收發器、及使用者輸入裝置(如鍵盤及滑鼠)。
網路控制器67亦耦合至ICH。網路控制器可允許系統與網路耦合。
在一或更多實施例中,電腦系統可履行WINDOSTM操作系統的一版本,其可從美國華盛頓州的銳得蒙(Redmond)之微軟公司取得。替代地,可使用其他操作系統,諸如,例如,UNIX、Linux、或嵌入式系統。
此僅為適當電腦系統的一特定實例。例如,在一或更多替代的實施例中,處理器可具有多核心。作為另一實例
,在一或更多替代實施例中,MCH 56可與處理器51實體整合於晶粒上且處理器可直接透過整合的MCH與記憶體58耦合。作為又一實例,在一或更多替代實施例中,其他構件可與處理器整合於晶粒上,諸如提供晶片系統(SoC)設計。作為再一實例,在一或更多替代實施例中,電腦系統可具有多個處理器。
第7圖為適當電腦系統70的另一實例。第二示範實施例與上述電腦系統50有某些相似之處。為了清楚,討論將著重於差異處而不重複所有相似處。
與電腦系統50類似地,電腦系統70包括處理器71、具有I/O控制器集線器(ICH)72的晶片組74。電腦系統70亦包括與晶片組74耦合的第一構件互連81、與ICH耦合的第二構件互連85、與ICH耦合的序列擴充埠86、與ICH耦合的網路控制器87、及與ICH耦合的資料貯存84。
處理器71為多核心處理器並包括處理器核心72-1至72-M,其中M可為等於或大於二之整數(如二、四、七、或更多)。每一核心可包括至少一履行單元,其能夠履行在此所揭露之指令的至少一實施例。如所示,核心-1包括快取88(如L1快取)。每一其他核心可類似地包括專用的快取。處理器核心可實行在單一積體電路(IC)晶片上。
處理器亦包括至少一共享快取89。共享快取可儲存資料(如指令),其可被處理器之一或更多構件(如核心
)利用。例如,共享快取可本地快取儲存在記憶體78中之資料以供處理器之構件快速地存取。在一或更多實施例中,共享快取可包括一或更多中階快取,如二階(L2)、三階(L3)、四階(L4)、或其他階快取、最後一階快取(LLC)、及/或上述之組合。
處理器核心及共享快取各與匯流排或其他互連90耦合。匯流排或其他互連可耦合核心及共享快取並允許通訊。
處理器亦包括記憶體控制器集線器(MCH)76。如此示範實施例所示,MCH與處理器71整合在一起。例如,MCH可與處理器核心整合在晶粒上。處理器透過MCH與記憶體78耦合。在一或更多實施例中,記憶體可包括DRAM,雖此非必要。
晶片組包括輸入/輸出(I/O)集線器91。I/O集線器透過匯流排(如QuickPath Interconnect(QPI))或其他互連75與處理器耦合。第一構件互連81與I/O集線器91耦合。
此僅為適當電腦系統的一特定實例。此技藝中已知的針對膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視頻遊戲裝置、機上盒、微控制器、手機、可攜式媒體播放器、手持裝置、及各種其他電子裝置的其他系統設計及組態亦適宜。一般而言,一般適宜能夠併入在此所揭露的處理
器及/或履行單元之眾多系統或電子裝置。
在上述說明中,為了闡明而提供眾多特定細節以提供本發明之實施例的詳盡理解。然而,對熟悉此技藝者來說很明顯地,可在無這些特定細節的一些下實踐一或更多其他實施例。所述之特定實施例並非提供來限制本發明而是說明本發明之實施例。本發明之範疇不由上述特定實例而是由下列申請專利範圍而定。在其他例子中,眾所週知的電路、結構、裝置、及操作已經以區塊圖或無細節之形式加以顯示以不混淆敘述之理解。在適當時,於圖中重複參考符號及參考符號之尾部以指示對應或同功之元件,其可隨意具有類似特性。
可藉由硬體構件來執行某些操作,或某些操作可體現在機器可履行指令中,其可被使用來導致,或至少造成,以指令編程之電路或硬體執行操作。電路可包括一般目的或特殊目的處理器、邏輯電路,這些僅為少數實例。亦可隨意由硬體及軟體的組合執行操作。履行單元及/或處理器可包括特別或特定電路或其他邏輯,其回應於機器指令或衍生自機器指令的一或更多控制信號而儲存指令指明的結果運算元。
應理解到在整份說明書中對於「一實施例(one embodiment)」、「一實施例(an embodiment)」、或「一或更多實施例」的參照,例如,意指特定特徵可包括在本發明的實施例之實踐中。類似地,應理解到在說明中,有時會將各種特徵集結在單一實施例、圖、或其之說明
中以精簡揭露並有助於各種發明態樣的理解。然而,此揭露方法不應解釋成反映出本發明需要比每一申請專利範圍中所明確指出者更多的特徵之意圖。更確切地,如下列申請專利範圍所反映,發明態樣可存在於少於單一揭露實施例的全部特徵中。所以,在實施方式段落後之申請專利範圍在此明確併入此實施方式段落,且每一申請專利範圍獨自為本發明之一單獨的實施例。
已說明本發明之數個實施例。不過,將了解到可在不背離本發明之精神與範疇下做出各種的修改。例如,電腦系統不需限制於具有多個處理器或記憶體存取裝置之電腦系統。可輕易將本發明利用在單一處理器系統中,其中實行讀取-修改-寫入指令。
更可理解到對記憶體之共享區域的存取控制可藉由非上述實例中所述的測試及設立序列的方式。例如,可使用簡單的計數器,其中藉由一指定計數來增額每一存取。
亦可理解到較佳實施例之VCMPXCHG指令執行讀取-修改-寫入操作,但該修改及寫入詞語可本質上實現為單一步驟。取代在讀取原始資料後計算修改值並接著後續寫入修改值,預先設定由指令所使用之VCMPXCHG指令的修改值。雖其之使用取決於當做比較時所得之結果,可立刻寫入此預設的修改值(SRC3)至目的地以修改目的地值。
故,說明了一種用於實行利用遮罩之向量比較與交換操作的技術。可理解到在此所述之VCMPXCHG指令及實行例也可利用在其他才能中且不需限制在控制對共享記憶體之存取的功能。例如,VCMPXCHG指令可用於預測履行,其中在複數資料元件上執行SIMD操作,僅若在操作期間未由另一代理者修改資料元件,才將其之結果寫至共享記憶體空間。依此,其他實施例在下列申請專利範圍的範疇內。
10‧‧‧電腦系統
11‧‧‧處理單元
12‧‧‧記憶體
13‧‧‧匯流排
15‧‧‧共享記憶體空間
16‧‧‧鎖定
Claims (27)
- 一種處理器,包含:複數暫存器;一解碼器,用以解碼一指令,該指令係指示用以包括第一複數資料元件之第一來源運算元、用以包括第二複數資料元件之第二來源運算元、及用以包括第三複數資料元件之第三來源運算元;以及一與該解碼器耦合之履行單元,用以履行該已解碼指令來:假如該第一來源運算元之該些第一複數資料元件的每一者匹配該第二來源運算元之該些第二複數資料元件的不同相應資料元件,則儲存該第三來源運算元之該些第三複數資料元件於目的地中;及假如該第一來源運算元之該些第一複數資料元件的至少一者不匹配該第二來源運算元之該些第二複數資料元件的該相應資料元件,則儲存該第一來源運算元之該些第一複數資料元件於該第二來源運算元之該些第二複數資料元件上。
- 如申請專利範圍第1項所述之處理器,其中該履行單元係:假如該第一來源運算元之該些第一複數資料元件的每一者匹配該第二來源運算元之該些第二複數資料元件的該不同相應資料元件,則設定零旗標;或者假如該第一來源運算元之該些第一複數資料元件的至 少一者不匹配該第二來源運算元之該些第二複數資料元件的該相應資料元件,則清除該零旗標。
- 如申請專利範圍第1項所述之處理器,其中該目的地包含與該第一來源運算元相同的儲存位置。
- 如申請專利範圍第1項所述之處理器,其中該第一來源運算元包含128位元。
- 如申請專利範圍第1項所述之處理器,其中該第一來源運算元包含256位元。
- 如申請專利範圍第1至5項的任一項所述之處理器,其中該解碼器係解碼該指令,該指令係指示用以儲存複數遮罩元件之遮罩儲存位置。
- 如申請專利範圍第1至5項的任一項所述之處理器,其中該解碼器係執行該指令為原子操作。
- 一種處理器,包含:複數暫存器;一解碼器,用以解碼一指令,該指令係指示用以包括第一複數資料元件之第一來源運算元、用以包括第二複數資料元件之第二來源運算元、用以包括第三複數資料元件之第三來源運算元、及具有各為現行或非現行之複數遮罩元件的向量遮罩,該向量遮罩中之遮罩元件與相應位置中的該第一、第二、及第三來源運算元中之資料元件係彼此相應;以及一與該解碼器耦合之履行單元,用以履行該已解碼指令來: 針對該向量遮罩之各相應現行元件,假如該第一來源運算元之該些第一複數資料元件的每一者匹配該第二來源運算元之該相應資料元件,則儲存該第三來源運算元之該些第三複數資料元件於目的地中;及針對該向量遮罩之各相應現行元件,假如該第一來源運算元之至少一資料元件不匹配該第二來源運算元之該相應資料元件,則儲存該第一來源運算元之該些第一複數資料元件於該第二來源運算元之該些第二複數資料元件上。
- 如申請專利範圍第8項所述之處理器,其中該履行單元係:針對該向量遮罩之各相應現行元件,假如該第一來源運算元之該些第一複數資料元件的每一者匹配該第二來源運算元之該相應資料元件,則設定零旗標;或者針對該向量遮罩之各相應現行元件,假如該第一來源運算元之至少一相應資料元件不匹配該第二來源運算元之該相應資料元件,則清除該零旗標。
- 如申請專利範圍第8項所述之處理器,其中該目的地包含與該第一來源運算元相同的儲存位置。
- 如申請專利範圍第8項所述之處理器,其中該第一來源運算元包含512位元。
- 如申請專利範圍第8項所述之處理器,其中該第一來源運算元包含32位元資料元件與64位元資料元件之一。
- 如申請專利範圍第8至12項的任一項項所述之處理器,其中該解碼器係執行該指令為原子操作。
- 一種處理器,包含:一解碼器,用以解碼一指令,該指令係指示用以具有第一複數資料元件之第一來源運算元、用以具有第二複數資料元件之第二來源運算元、及用以具有第三複數資料元件之第三來源運算元,該些第二和第三複數資料元件之每一者係相應於該些第一複數資料元件之一;以及一與該解碼器耦合之履行單元,該履行單元係回應於該指令以:比較來自該些第一和第二複數資料元件之相應資料元件;回應於判定有匹配存在,以來自該些第三複數資料元件之相應資料元件取代來自該些第一複數資料元件之資料元件。
- 如申請專利範圍第14項所述之處理器,其中該履行單元係回應於判定該匹配存在,亦設定一旗標。
- 如申請專利範圍第14項所述之處理器,其中該履行單元係回應於判定該匹配不存在,儲存該些第一複數資料元件於該些第二複數資料元件上。
- 如申請專利範圍第14項所述之處理器,其中該指令進一步指示一向量遮罩,其具有各相應於該些第一複數資料元件之一的遮罩元件。
- 如申請專利範圍第17項所述之處理器,其中該 第一來源運算元包含512位元。
- 一種於處理器中之方法,包含:由一解碼器解碼一指令,該指令係指明針對介於第一儲存位置、第二儲存位置、與第三儲存位置之間的複數資料元件之向量比較-及-交換操作;以及回應於該指令之履行,比較來自該第一儲存位置之資料元件與該第二儲存位置中之相應資料元件;及回應於判定有匹配存在,以來自該第三儲存位置之相應資料元件取代來自該第一儲存位置之該些資料元件;或者回應於判定匹配不存在,以來自該第一儲存位置之相應資料元件取代來自該第二儲存位置之該些資料元件。
- 如申請專利範圍第19項所述之方法,進一步包含回應於判定該匹配存在,設定零旗標;或者回應於判定該匹配不存在,清除該零旗標。
- 一種處理器,包含:解碼電路,用以由一解碼器解碼一指令,該指令係指明針對介於第一儲存位置、第二儲存位置、與第三儲存位置之間的複數資料元件之向量比較-及-交換操作;以及比較器,用以回應於該指令之履行,比較來自該第一儲存位置之資料元件與該第二儲存位置中之相應資料元件;及取代電路,用以回應於判定有匹配存在,以來自該第 三儲存位置之相應資料元件取代來自該第一儲存位置之該些資料元件;或者取代電路,用以回應於判定匹配不存在,以來自該第一儲存位置之相應資料元件取代來自該第二儲存位置之該些資料元件。
- 一種系統,包含申請專利範圍第1至5項的任一項所述之處理器以及與該處理器耦合之網路控制器。
- 一種處理器,包含:一儲存位置,用以儲存第一複數資料元件、第二複數資料元件、及第三複數資料元件,該些第二和第三複數資料元件之每一者係相應於該些第一複數資料元件之一;一解碼器,用以解碼單一指令,該單一指令係用以指明向量比較-及-交換操作及用以指示該些第一、第二和第三複數資料元件;以及一履行單元,該履行單元係與該解碼器耦合以接收已解碼指令並與該儲存位置耦合以履行該向量比較-及-交換操作,其中,回應於履行該向量比較-及-交換操作,該履行單元係用以:比較該些第一和第二複數資料元件之相應資料元件;及回應於判定有匹配存在於其一相應遮罩元件為現行的各對相應資料元件之間,以該些第三複數資料元件之相應資料元件取代該些第一複數資料元件之資料元件,且假如該匹配存在則設定一旗標;以及 假如該匹配不存在則清除該旗標。
- 一種處理器,包含:一儲存位置,組態成儲存第一複數資料元件、第二複數資料元件、及第三複數資料元件,該些第二和第三複數資料元件之每一者係相應於該些第一複數資料元件之一;一解碼器,用以解碼單一指令,該單一指令係用以指明向量比較-及-交換操作及用以指示該些第一、第二和第三複數資料元件;以及一履行單元,該履行單元係與該解碼器耦合以接收已解碼指令並與該儲存位置耦合以履行該向量比較-及-交換操作,其中,回應於履行該向量比較-及-交換操作,該履行單元係組態成:比較該些第一和第二複數資料元件之相應資料元件;及回應於判定有匹配存在,以該些第三複數資料元件之相應資料元件取代該些第一複數資料元件之資料元件,其中該些第三複數資料元件之該些資料元件的值係不同於該些第一複數資料元件之該些資料元件的值。
- 如申請專利範圍第24項所述之處理器,其中,回應於履行該向量比較-及-交換操作,該履行單元係進一步組態成以該些第一複數資料元件之相應資料元件取代該些第二複數資料元件之資料元件,假如該匹配不存在。
- 如申請專利範圍第24項所述之處理器,其中該解碼器係用以解碼其用以指示一遮罩儲存位置之該單一指 令,該遮罩儲存位置係用以儲存相應於該些第一複數資料元件之個別資料元件的複數遮罩元件。
- 如申請專利範圍第24項所述之處理器,其中,回應於履行該向量比較-及-交換操作,該履行單元係進一步組態成:假如該匹配存在於其一相應遮罩元件為現行的各對相應資料元件之間則設定一旗標;以及假如該匹配不存在則清除該旗標。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/644,529 US8996845B2 (en) | 2009-12-22 | 2009-12-22 | Vector compare-and-exchange operation |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201428622A TW201428622A (zh) | 2014-07-16 |
TWI525539B true TWI525539B (zh) | 2016-03-11 |
Family
ID=44152784
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102143765A TWI525539B (zh) | 2009-12-22 | 2010-11-11 | 用於同步化simd向量的方法,處理器,及系統 |
TW099138849A TWI427533B (zh) | 2009-12-22 | 2010-11-11 | 用於同步化simd向量的方法,處理器,及系統 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW099138849A TWI427533B (zh) | 2009-12-22 | 2010-11-11 | 用於同步化simd向量的方法,處理器,及系統 |
Country Status (9)
Country | Link |
---|---|
US (1) | US8996845B2 (zh) |
JP (2) | JP5421458B2 (zh) |
KR (1) | KR101461378B1 (zh) |
CN (2) | CN105094749A (zh) |
BR (1) | BRPI1005259A2 (zh) |
DE (1) | DE112010004963T5 (zh) |
GB (1) | GB2488619B (zh) |
TW (2) | TWI525539B (zh) |
WO (1) | WO2011087590A2 (zh) |
Families Citing this family (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9672019B2 (en) | 2008-11-24 | 2017-06-06 | Intel Corporation | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
US10621092B2 (en) | 2008-11-24 | 2020-04-14 | Intel Corporation | Merging level cache and data cache units having indicator bits related to speculative execution |
US8996845B2 (en) | 2009-12-22 | 2015-03-31 | Intel Corporation | Vector compare-and-exchange operation |
WO2013048468A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Instruction and logic to perform dynamic binary translation |
CN105955704B (zh) * | 2011-11-30 | 2018-12-04 | 英特尔公司 | 用于提供向量横向比较功能的指令和逻辑 |
US10318291B2 (en) | 2011-11-30 | 2019-06-11 | Intel Corporation | Providing vector horizontal compare functionality within a vector register |
US20140108480A1 (en) * | 2011-12-22 | 2014-04-17 | Elmoustapha Ould-Ahmed-Vall | Apparatus and method for vector compute and accumulate |
WO2013095609A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing conversion of a mask register into a vector register |
US9588764B2 (en) | 2011-12-23 | 2017-03-07 | Intel Corporation | Apparatus and method of improved extract instructions |
WO2013095617A1 (en) | 2011-12-23 | 2013-06-27 | Intel Corporation | Apparatus and method for propagating conditionally evaluated values in simd/vector execution |
WO2013095635A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Instruction for merging mask patterns |
US9632980B2 (en) | 2011-12-23 | 2017-04-25 | Intel Corporation | Apparatus and method of mask permute instructions |
US9946540B2 (en) | 2011-12-23 | 2018-04-17 | Intel Corporation | Apparatus and method of improved permute instructions with multiple granularities |
US9619236B2 (en) | 2011-12-23 | 2017-04-11 | Intel Corporation | Apparatus and method of improved insert instructions |
US9658850B2 (en) | 2011-12-23 | 2017-05-23 | Intel Corporation | Apparatus and method of improved permute instructions |
WO2013095657A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Instruction and logic to provide vector blend and permute functionality |
US9489196B2 (en) * | 2011-12-23 | 2016-11-08 | Intel Corporation | Multi-element instruction with different read and write masks |
CN104067224B (zh) * | 2011-12-23 | 2017-05-17 | 英特尔公司 | 在不同的粒度水平下对数据值进行广播和掩码的指令执行 |
CN107908427B (zh) | 2011-12-23 | 2021-11-09 | 英特尔公司 | 用于多维数组中的元素偏移量计算的指令 |
US20140019723A1 (en) * | 2011-12-28 | 2014-01-16 | Koichi Yamada | Binary translation in asymmetric multiprocessor system |
US9552313B2 (en) | 2011-12-28 | 2017-01-24 | Intel Corporation | Delivering real time interrupts with an advanced programmable interrupt controller |
WO2013101229A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Structure access processors, methods, systems, and instructions |
US9575753B2 (en) * | 2012-03-15 | 2017-02-21 | International Business Machines Corporation | SIMD compare instruction using permute logic for distributed register files |
US9405538B2 (en) * | 2012-12-28 | 2016-08-02 | Intel Corporation | Functional unit having tree structure to support vector sorting algorithm and other algorithms |
EP2965194A4 (en) * | 2013-03-05 | 2016-11-30 | Intel Corp | ANALYSIS OF POTENTIAL ADVANTAGES OF VECTORIZATION |
US9411593B2 (en) * | 2013-03-15 | 2016-08-09 | Intel Corporation | Processors, methods, systems, and instructions to consolidate unmasked elements of operation masks |
US9405937B2 (en) | 2013-06-28 | 2016-08-02 | Intel Corporation | Method and apparatus for securing a dynamic binary translation system |
US9292298B2 (en) * | 2013-07-08 | 2016-03-22 | Arm Limited | Data processing apparatus having SIMD processing circuitry |
US9495155B2 (en) | 2013-08-06 | 2016-11-15 | Intel Corporation | Methods, apparatus, instructions and logic to provide population count functionality for genome sequencing and alignment |
US9466091B2 (en) | 2013-09-26 | 2016-10-11 | Imagination Technologies Limited | Atomic memory update unit and methods |
US11257271B2 (en) | 2013-09-26 | 2022-02-22 | Imagination Technologies Limited | Atomic memory update unit and methods |
GB2520603B (en) * | 2013-09-26 | 2016-04-06 | Imagination Tech Ltd | Atomic memory update unit and methods |
US9891936B2 (en) | 2013-09-27 | 2018-02-13 | Intel Corporation | Method and apparatus for page-level monitoring |
US9390023B2 (en) * | 2013-10-03 | 2016-07-12 | Cavium, Inc. | Method and apparatus for conditional storing of data using a compare-and-swap based approach |
US10445092B2 (en) * | 2014-12-27 | 2019-10-15 | Intel Corporation | Method and apparatus for performing a vector permute with an index and an immediate |
US9996350B2 (en) | 2014-12-27 | 2018-06-12 | Intel Corporation | Hardware apparatuses and methods to prefetch a multidimensional block of elements from a multidimensional array |
US10528345B2 (en) * | 2015-03-27 | 2020-01-07 | Intel Corporation | Instructions and logic to provide atomic range modification operations |
US10019264B2 (en) * | 2016-02-24 | 2018-07-10 | Intel Corporation | System and method for contextual vectorization of instructions at runtime |
GB2549737B (en) * | 2016-04-26 | 2019-05-08 | Advanced Risc Mach Ltd | An apparatus and method for managing address collisions when performing vector operations |
WO2018022525A1 (en) * | 2016-07-27 | 2018-02-01 | Intel Corporation | System and method for multiplexing vector mask matches |
US20190155603A1 (en) * | 2016-07-27 | 2019-05-23 | Intel Corporation | System and method for multiplexing vector compare |
EP3336691B1 (en) * | 2016-12-13 | 2022-04-06 | ARM Limited | Replicate elements instruction |
EP3336692B1 (en) | 2016-12-13 | 2020-04-29 | Arm Ltd | Replicate partition instruction |
CN109542515B (zh) * | 2017-10-30 | 2021-06-25 | 上海寒武纪信息科技有限公司 | 运算装置及方法 |
US20210133854A1 (en) | 2018-09-13 | 2021-05-06 | Shanghai Cambricon Information Technology Co., Ltd. | Information processing method and terminal device |
CN111258637B (zh) * | 2018-11-30 | 2022-08-05 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258639B (zh) * | 2018-11-30 | 2022-10-04 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258640B (zh) * | 2018-11-30 | 2022-10-04 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258642B (zh) * | 2018-11-30 | 2022-10-04 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258638B (zh) * | 2018-11-30 | 2022-10-04 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
US20200210181A1 (en) * | 2018-12-29 | 2020-07-02 | Intel Corporation | Apparatuses, methods, and systems for vector element sorting instructions |
US20200401412A1 (en) * | 2019-06-24 | 2020-12-24 | Intel Corporation | Hardware support for dual-memory atomic operations |
CN110515659B (zh) * | 2019-08-28 | 2021-10-01 | 中国人民解放军国防科技大学 | 一种原子指令的执行方法和装置 |
CN110515660B (zh) * | 2019-08-28 | 2021-08-06 | 中国人民解放军国防科技大学 | 一种加速原子指令执行的方法和装置 |
CN117561501A (zh) * | 2021-06-22 | 2024-02-13 | 华为技术有限公司 | 一种多线程数据处理方法及装置 |
CN115098165B (zh) * | 2022-06-13 | 2023-09-08 | 昆仑芯(北京)科技有限公司 | 数据处理方法、装置、芯片、设备及介质 |
CN118093143B (zh) * | 2024-04-12 | 2024-07-02 | 清华大学 | 大语言模型解码阶段的数据调度方法和装置 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4482956A (en) * | 1982-11-04 | 1984-11-13 | International Business Machines Corporation | Parallel queueing method |
JPS61288243A (ja) * | 1985-06-17 | 1986-12-18 | Fujitsu Ltd | コンペアアンドスワツプ命令処理方式 |
JPS6285372A (ja) | 1985-10-09 | 1987-04-18 | Nec Corp | マルチプロセツサシステムにおけるコンペアアンドスワツプ方式 |
US6460121B1 (en) * | 1998-09-14 | 2002-10-01 | Compaq Information Technologies Group, L.P. | Method for providing an atomic memory read using a compare-exchange instruction primitive |
US7308559B2 (en) * | 2000-02-29 | 2007-12-11 | International Business Machines Corporation | Digital signal processor with cascaded SIMD organization |
US6880071B2 (en) | 2001-04-09 | 2005-04-12 | Sun Microsystems, Inc. | Selective signalling of later reserve location memory fault in compound compare and swap |
US7107305B2 (en) | 2001-10-05 | 2006-09-12 | Intel Corporation | Multiply-accumulate (MAC) unit for single-instruction/multiple-data (SIMD) instructions |
CN100545804C (zh) * | 2003-08-18 | 2009-09-30 | 上海海尔集成电路有限公司 | 一种基于cisc结构的微控制器及其指令集的实现方法 |
US8607241B2 (en) * | 2004-06-30 | 2013-12-10 | Intel Corporation | Compare and exchange operation using sleep-wakeup mechanism |
US7219213B2 (en) | 2004-12-17 | 2007-05-15 | Intel Corporation | Flag bits evaluation for multiple vector SIMD channels execution |
US7509463B2 (en) * | 2005-12-01 | 2009-03-24 | Sony Computer Entertainment, Inc. | Cell processor atomic compare and swap using dedicated synergistic processor element |
US20070260634A1 (en) * | 2006-05-04 | 2007-11-08 | Nokia Corporation | Apparatus, system, method, and computer program product for synchronizing the presentation of media content |
US7627723B1 (en) | 2006-09-21 | 2009-12-01 | Nvidia Corporation | Atomic memory operators in a parallel processor |
US7908255B2 (en) * | 2007-04-11 | 2011-03-15 | Microsoft Corporation | Transactional memory using buffered writes and enforced serialization order |
US8996845B2 (en) | 2009-12-22 | 2015-03-31 | Intel Corporation | Vector compare-and-exchange operation |
-
2009
- 2009-12-22 US US12/644,529 patent/US8996845B2/en not_active Expired - Fee Related
-
2010
- 2010-11-11 TW TW102143765A patent/TWI525539B/zh not_active IP Right Cessation
- 2010-11-11 TW TW099138849A patent/TWI427533B/zh not_active IP Right Cessation
- 2010-11-29 WO PCT/US2010/058238 patent/WO2011087590A2/en active Application Filing
- 2010-11-29 GB GB1119083.2A patent/GB2488619B/en not_active Expired - Fee Related
- 2010-11-29 JP JP2012517936A patent/JP5421458B2/ja not_active Expired - Fee Related
- 2010-11-29 DE DE112010004963T patent/DE112010004963T5/de not_active Withdrawn
- 2010-11-29 KR KR1020127019177A patent/KR101461378B1/ko not_active IP Right Cessation
- 2010-12-21 CN CN201510434397.XA patent/CN105094749A/zh active Pending
- 2010-12-21 CN CN201010619577.2A patent/CN102103570B/zh not_active Expired - Fee Related
- 2010-12-22 BR BRPI1005259-3A patent/BRPI1005259A2/pt not_active Application Discontinuation
-
2013
- 2013-11-21 JP JP2013240725A patent/JP5876458B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
GB2488619B (en) | 2017-10-18 |
GB201119083D0 (zh) | 2011-12-21 |
JP2014059902A (ja) | 2014-04-03 |
WO2011087590A3 (en) | 2011-10-27 |
KR101461378B1 (ko) | 2014-11-20 |
BRPI1005259A2 (pt) | 2013-04-02 |
JP5421458B2 (ja) | 2014-02-19 |
WO2011087590A2 (en) | 2011-07-21 |
CN105094749A (zh) | 2015-11-25 |
US8996845B2 (en) | 2015-03-31 |
US20110153989A1 (en) | 2011-06-23 |
DE112010004963T5 (de) | 2012-11-22 |
TWI427533B (zh) | 2014-02-21 |
GB2488619A (en) | 2012-09-05 |
KR20120096588A (ko) | 2012-08-30 |
CN102103570A (zh) | 2011-06-22 |
TW201140435A (en) | 2011-11-16 |
JP5876458B2 (ja) | 2016-03-02 |
TW201428622A (zh) | 2014-07-16 |
JP2012531682A (ja) | 2012-12-10 |
CN102103570B (zh) | 2015-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI525539B (zh) | 用於同步化simd向量的方法,處理器,及系統 | |
CN106575218B (zh) | 持久性存储屏障处理器、方法、***和指令 | |
CN106648843B (zh) | 用于改善连续的事务性存储器区的吞吐量的***、方法和装置 | |
US8301849B2 (en) | Transactional memory in out-of-order processors with XABORT having immediate argument | |
KR101025354B1 (ko) | 가상 트랜잭션 메모리를 위한 글로벌 오버플로우 방법 | |
US9286076B2 (en) | Intra-instructional transaction abort handling | |
TWI715686B (zh) | 用於容錯及錯誤偵測之系統、方法和裝置 | |
US10768680B2 (en) | Hardware apparatuses and methods to perform transactional power management | |
EP4020190A1 (en) | Software visible and controllable lock-stepping with configurable logical processor granularities | |
US20130339628A1 (en) | Determining the logical address of a transaction abort | |
US9015419B2 (en) | Avoiding aborts due to associativity conflicts in a transactional environment | |
CN111095203A (zh) | 实时寄存器值的集群间通信 | |
US20090063881A1 (en) | Low-overhead/power-saving processor synchronization mechanism, and applications thereof | |
JP2023070069A (ja) | 仮想マシンにおけるユーザレベル割り込み | |
TW202314486A (zh) | 原子式儲存至寬於原生支援資料寬度之記憶體資料的處理器、方法、系統與指令 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |