TWI297853B - Method for performing in a simd execution engine, apparatus for a simd execution engine, and processing system - Google Patents
Method for performing in a simd execution engine, apparatus for a simd execution engine, and processing system Download PDFInfo
- Publication number
- TWI297853B TWI297853B TW094144840A TW94144840A TWI297853B TW I297853 B TWI297853 B TW I297853B TW 094144840 A TW094144840 A TW 094144840A TW 94144840 A TW94144840 A TW 94144840A TW I297853 B TWI297853 B TW I297853B
- Authority
- TW
- Taiwan
- Prior art keywords
- bit
- execution engine
- channel
- flag register
- output
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 43
- 238000011156 evaluation Methods 0.000 claims description 76
- 239000013598 vector Substances 0.000 claims description 36
- 238000010586 diagram Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000002156 mixing 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
- G06F9/30094—Condition code generation, e.g. Carry, Zero flag
-
- 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
- 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/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
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)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Image Processing (AREA)
Description
1297853 (1) 九、發明說明 【發明所屬之技術領域】 本發明有關於用於單指令多資料執行引擎之旗標暫存 器的評估單元。 【先前技術】 爲了改善一處理系統的性能,在單一指令期間,一個 指令可以同時執行數個運算元的資料。這樣的指令可以視 爲單指令多資料(SIMD )指令。例如,一個八通道的 .SIMD執行引擎可以同時執行八個32位元的運算元的資料 ,每一個運算元可以映射到SIMD執行引擎的不同計算通 道。而且,可以使用一個或多個旗標暫存器,每一個旗標 暫存器具有對應於執行引擎的各個通道的位置(例如,可 以提供三個8位元旗標暫存器給一個八通道SIMD執行引 擎)。用不同的方式有效且彈性地存取旗標暫存器的能力 可以提升執行引擎的性能。 【發明內容】 根據一些實施例,可以提供評估單元給單指令多資料 (Single Instruction,Multiple-Data,SIMD)執行引擎之 旗標器。例如,水平評估單元可以針對SIMD執行引 擎所處理的多個向量之間進行評估運算。根據一些實施例 --------------- ,垂直評估單元可以在多個旗標暫存器之間進行評估運算 -4 - (2) 1297853 【實施方式】 此處所描述的一些實施例與一「處理系統」相關。此 處所使用的詞彙「處理系統」可以指爲處理資料的任何設 備。舉例來說,處理系統可以是相關於圖形引擎,其處理 圖形資料及/或其他形式的媒體資訊。在某些案例中,執 行系統的性能可以藉由使用SIMD執行引擎而改善。例如 ’ SIMD執行引擎可以同時針對多個通道的資料而執行單 一個浮點SIMD指令(例如,加速轉換及/或描繪三維幾 何形狀)。其他處理系統的例子包括中央處理單元( Central Processing Unit,CPU )及數位訊號處理器( Digital Signal Processor, DSP) 0 第1圖繪示一種形式的處理系統100,其包括一個 SIMD執行引擎1 1 〇。在此例中,執行引擎1 1 〇接收一指 令及其四個運算元的資料,其中每個運算元對應於一個不 同的向量(例如從向量V0到V3的四個X分量)。例如 ,每一個向量可以包括與一個三維圖形位置相關的三個位 置値(例如,X、Y、Z)。引擎1 1 0可以接著在單一指令 期間同時針對所有的運算元而執行此指令。這樣的方式稱 爲「垂直」、「通道-序列」或「陣列之結構(Structure Of Arrays, S0A)」的實施例。 第2圖繪示另一種形式的處理系統200,其包括一 SIMD執行引擎210。在此例中,執行引擎210接收一指 令(例如從指令記憶單元)及四個分量的資料向量(例如 (3) 1297853 向量分量X,γ,z及w,每一個具有數個位元,被安排以 在對應的SIMD執行引擎210之通道〇到3處理)。引擎 2 1 0可以接著同時執行針對向量中所有分量的指令。這樣 的方式稱爲「水平」、「通道-平行」或「結構之陣列( Array Of Structures (AOS)」實施例。雖然此處描述的 一些實施例是關聯於四通道SIMD執行引擎110,需注意 的是,SIMD執行引擎可以有大於1之任意數目的通道( 例如,可以是關聯於3 2個通道之執行引擎的實施例)。 根據一些實施例,SIMD執行引擎可以同時處理關聯 於多個向量的資訊。例如,第3圖繪示處理系統400,其 包括八通道之SIMD執行引擎310,可以同時處理兩個向 量。也就是說,當通道4到7處理向量1時,通道0到3 可以處理向量〇。 執行引擎310可以更包括旗標暫存器320,其具有關 聯於各個通道的數個位元。例如,旗標暫存器320可以爲 8位元暫存器,且各個位元可以是關聯於邏輯計算通道之 一的旗標(F )。例如說,一個旗標可以是關聯於此通道 的計算邏輯單元(Arithmetic-Logic Unit,ALU) —個或更 多結果。此結果可以是關聯於,例如,零、非零或等於、 不等於、大於、大於等於、小於、小於等於、及/或溢位 條件。考慮例如是SIMD引擎的下列指令: add.f.z(8) r0 r 1 -r2 在此例中,暫存器rl之値減去暫存器r2之値’其結 果儲存於暫存器r0,並且如果結果等於零(“z”)時,旗 •6- .(4) 1297853 標暫存器3 20 ( “f”)中的一個位元會被設立。這樣的運算 會同時在所有八個通道中實行,並且旗標暫存器320中的 所有八個位元會在適當時機被更新。 在一些應用中,以不同的方式存取旗標暫存器3 20中 的資訊是有助益的。例如在圖形應用中,有時候可以有助 於決定旗標暫存器3 2 0中的任意旗標是否爲零,在其他時 候可以有助於知道下列兩者:(i )與通道〇到3相關的 任意旗標是否爲零,其中通道〇到3係關聯於第一向量, 及(ii )與通道4到7相關的任意旗標是否爲零,其中通 道4到7係關聯於第二向量。 第4圖繪示根據一些實施例之系統4 00,其包括旗標 暫存器420。如前所述,系統400可以同時處理關於多個 向量的資訊。雖然第4圖所示是8位元的旗標暫存器42 0 ,其他數目的位元也是可以使用。舉例來說,旗標暫存器 420可以是η通道SIMD執行引擎的η位元旗標暫存器, 其中η是大於1的整數。根據一些實施例,旗標暫存器 420的各個位元可以相關於一個通道,且旗標暫存器420 可以接收及儲存來自SIMD執行單元的資訊。根據一些實 施例,此資訊是相關於多於一個的多通道向量(例如,可 以同時被處理的兩個圖形向量)。 根據一些實施例,η通道執行引擎可以有ρ位元旗標 暫存器,其中ρ小於η。例如,4位元旗標暫存器可以用 於16通道的SIMD執行引擎,且旗標暫存器的每一個位 元可以是關聯於4個通道。 ' (5) 1297853 而且,水平「評估」單元43 0可以被提供以產生η位 元輸出,其中輸出中的每一個位元是關聯於SIMD執行引 擎的一個通道。此處所使用的詞彙「評估」可以涉及與攪 和(swizzle)、組合(assemble)、及/或邏較運算相關 的資訊存取。例如,攪和運算可以是關聯於資訊的重新排 列或分組。其他例子中,資訊可以被複製、重排、及/或 分組。而且,資訊可以被組合,使得不同儲存元件的部分 可以聚集爲單一邏輯儲存元件。需注意的是,可以對資訊 執行的邏輯運算包括邏輯逐位元(bit-wise)運算,例如 AND、OR及其他邏輯運算。 舉例來說,繪示於第4圖的水平評估單元4 3 0可以接 收來自旗標暫存器420的8個位元,且產生8位元的輸出 。水平評估單元430的運算可以被例如是運算元擷取單元 所控制。根據一些實施例,水平評估單元43 0可以只是將 旗標暫存器420中的各個旗標映射至輸出的對應旗標(例 如,在此例中,第4圖的輸出可以是將“0100 1 1 1 1”直接 通過)。 根據一些實施例,水平評估單元430可以反而被控制 以對旗標暫存器420中的所有位元進行評估。舉例來說, 一個“any8”條件可以使得水平評估單元430決定旗標暫存 器中的八個位元中的任一個位元是否已經被設立。若是的 話,輸出的所有八個位元都設爲1。若否,輸出中的所有 八個位元都設爲〇 (例如,第4圖中的輸出會是“ 1 1 1 1 1 1 1 1 ”)。因此,輸出中的至少一個位元的値可以基於代 -8- .(6) 1297853 表不同執行通道及/或向量的旗標暫存器420中的數個位 元。 根據一些實施例,針對η通道執行引擎的水平評估單 元可以有ρ位元的輸出,其中ρ小於η。例如,四位元的 輸出可以被提供給八通道SIMD執行引擎,且輸出中的各 個位元可以與兩個通道相關。 根據一些實施例,水平評估單元43 0可以被控制以對 旗標暫存器4 3 0中的位元的子集合進行評估。舉例來說, 水平評估單元43 0可以被控制以對旗標暫存器430中關於 CHO、CH2、CH4及CH6的位元進行評估。 第5圖繪示根據一些實施例的方法的流程圖。此方法 可以例如說與第4圖的系統400 —起執行。此處所描述的 流程圖中的此些行動不必需是固定的次序,且實施例中可 以用可實行的任何次序來操作。需注意的是,此處所描述 的任何方法可以用硬體、軟體(包括微碼)、韌體或此些 方式的任意組合。舉例來說,儲存媒體可以儲存指令於其 上,使得當機器執行時可以根據此處描述之任一實施例而 有良好的性能。 在5 02,資訊係被儲存於一 η通道SIMD執行引擎的 一 η位置旗標暫存器。此資訊可以代表例如多個m通道 獨立向量,其中,11及111係爲大於1的整數。 在5 04,輸出係基於旗標暫存器中的資訊而產生。此 輸出可以包括,例如,至少一位置,此位置之値係基於代 表不同獨立向量的資訊。舉例來說,8位元輸出的第一個 (7) (7)1297853 位元可以是基於關聯於同時處理之兩個不同向量的資訊。 在一些例子中,水平評估單元可以被控制以運算於不 同組之旗標暫存器位置。例如,第6圖是根據一些實施例 之方法的流程圖。在602,關聯於SIMD執行引擎之至少 一組通道的指示係被接收。在604,代表此組的通道係被 評估。水平評估單元可以,例如,接收“all4”條件的一指 示。再參考第4圖,這樣的條件可以使得水平評估單元 43 0個別地評估對於以下兩者是否所有旗標位元爲1 : ( i )對應於通道〇到3的旗標暫存器中的位元,及(ii )對 應於通道4到7的旗標暫存器中的位元。 各評估之結果可以接著被儲存於輸出中的位元組,其 中此位元組代表SIMD執行引擎之一組通道。例如,若對 應於通道〇到3的旗標暫存器420中所有的位元被設立, 輸出中對應到通道〇到3的位元也會被設立。同樣地,若 對應於通道4到7的旗標暫存器420中所有的位元被設立 ,輸出中對應到通道5到7的位元也會被設立。如第4圖 所繪示之範例,輸出會是“〇〇〇〇 1111”。 由水平評估單元 43 0所接收之指示可以是關聯於 SIMD執行引擎通道之不同大小的組。例如,如前所述, 水平評估單元430所評估的此些組可以是關聯於一個八位 元的組或兩個四位元的組。另一個例子,水平評估單元 43 0可以接收關聯於“any2”條件的指示,“any2”條件的意 思是此些旗標中的四對應該被評估(且各評估之結果係用 以映射到輸出中對應的兩個位元)。如第4圖所繪示的例 -10- ,(8) 1297853 子,其輸出會是“1100 1 11 1”。 需注意的是,可以提供任何大小之組,或大小之組的 組合(且此組中的位元不需是鄰居)。考慮例如是1 6位 元旗標暫存器。在此例中,八個2位元的組可以被評估。 另一個例子,兩個最顯著位元(Most Significant Bit, MSB)及兩個最不顯著位元(Least Significant Bit,LSB )可以當作第一組而被組合及評估,而剩下的1 2位元可 以當作第二組而被評估。 三種評估運算可以水平地分組、重排及/或評估橫跨 單一旗標暫存器420的資料。現在參考第.7圖中的系統 7 00,其包括兩個8位元旗標暫存器720 ( f0及fl )。雖 然第7圖繪示兩個旗標暫存器,也可以提供多於兩個的旗 標暫存器。 現在考慮,例如,給SIMD執行引擎的下列指令: add.f0.z(8) r0 r 1 - r2 add.fl.z(8) r3 r4 r5 在此例中,暫存器rl的値係減去暫存器r2的値,其 結果儲存於暫存器r0,且若是結果等於〇 ( “·ζ”),旗標 暫存器〇(“.f〇”)之一個位元會被設立。需注意的是,此 指令可以同時被執行於資料的八個運算元(且f〇中的所 有位元可以同時被更新)。同樣地,暫存器r5的値係加 至暫存器r4的値,其結果儲存於暫存器r3,且若是結果 等於0 ( “·ζ”),旗標暫存器0 ( “·Π”)之一個位元會被 設立。 -11 - ,(9) 1297853 根據一些實施例,可以提供垂直評估單元740以產生 η個位元輸出,此輸出包括至少一個位元,其値係基於旗 標暫存器720兩者。例如,垂直評估單元740可以接收 fO的八個位元及Π的八個位元,並產生8位元的輸出。 第8圖繪示根據一些實施例的方法流程圖。本方法可 以關聯至例如第7圖之系統700。在8 02,資訊係被儲存 至η通道SIMD執行引擎的第一 η位置旗標暫存器,其中 η是大於1的整數。同樣地,資訊係被儲存至執行引擎的 第二η位置旗標暫存器。在8 06,輸出係被產生,其包括 至少一位置,其値基於第一旗標暫存器及第二旗標暫存器 兩者之資訊。 參考第7圖,垂直評估單元740可以被控制以通過 fO (或f 1 )的値而爲輸出。在此例中,用fO之情況,第 7圖繪示的輸出會是“0 100 1101”(或“11 01 01 11’,,用fl 之情況)。根據一些實施例,垂直評估單元740可以組合 f〇及Π兩者的資訊以產生輸出。例如,垂直評估單元 740可以接收關聯於“all2”條件之指示,使得只有當fO及 fl兩者之對應位兀被設立,則輸出中的一個位元會被設 立(例如,第7圖之輸出會是“0100 0101 ”)。同樣地, “any2”條件可以導致第7圖的輸出爲“1 101 1 1 Π”。 因此,垂直評估單元740可以跨不同的旗標暫存器 740而組合資訊。在一些例子中,垂直評估單元94〇可以 跨幾組的旗標暫存益而組合資訊。考慮例如第9圖中的系 統9 00,其包括四個8位元旗標暫存器920 ( f〇到f3 )。 -12- (10) 1297853 而且,垂直評估單元940從各個旗標暫存器接收八 並產生8位元的輸出。 第1 〇圖繪示關聯到如此之系統900的方法。 ,接收關聯到一組的旗標暫存器之指示。此指示可 垂直評估單元940以,例如是,運算於一個旗標暫 所有四個旗標暫存器。 根據一些實施例,垂直評估單元940可以被控 算於其他組的旗標暫存器。例如垂直評估單元940 控以評估f〇及f 1 (並忽略f2及f3 )。另一個例子 評估單元940可以受控以運算於f〇、f2及f3 (並 )〇 對於SIMD執行引擎通道,來自這組的旗標暫 代表此通道的位元係在1 004被評估。此些評估的 在1006儲存於適當的輸出位元。 請再參考第9圖,假設垂直評估單元940已經 指示,要評估f〇及Π,且各個輸出位元應被設立 唯若兩個旗標暫存器中之對應位元都設爲1。在第 範例中,輸出會是“01 00 1111”。若垂直評估單元 是受控以評估f2及f3,輸出會是“ 1 1 00 1 1 00”。 根據一些實施例,可以支援水平及垂直評估運 慮例如是第1 1圖的系統1 1 〇 〇,其包括四個8位元 存器1120 ( f0到f3)。根據一些實施例,多工器 定是8位元的資料或八個結果位元(例如各個位元 個或多個ALU旗標)儲存於旗標暫存器1 120。 .個位元 在 1002 以控制 存器或 制以運 可以受 ,垂直 忽略f4 存器中 結果係 接收到 ,若且 9圖的 94 0卻 算。考 旗標暫 "50決 代表一 而且, -13- ,(11) 1297853 SIMD 執行引擎的後端可以例如使用 FlagWrite、 FlagS elect命令以選擇fO到f3的哪一個來儲存資訊。 根據一些實施例,水平評估單元1 1 3 0對每個SIMD 執行引擎通道接收四個位元(每個旗標暫存器一個位元) ,且產生8位元輸出。垂直評估單元1140從每個旗標暫 存器接收八個位元(對每個SIMD執行引擎),並產生8 位元輸出。水平評估單元1130及垂直評估單元1140可以 φ 與此處所述之任一實施例共同運作,且可以受控於例如是 SIMD執行引擎的前端。 多工器1 160可以決定是否執行引擎前端接收水平評 估單元1130的輸出,或是垂直評估單元1140的輸出。例 如,一個指令可以使得系統1 1 〇〇在旗標暫存器上執行水 平評估(例如“any2horizontal for f2”使得f2中的兩個位 元被評估),而另一個指令使得垂直評估(例如 “al 14vertical”使得每個通道的四個位元被評估)。 • 因爲旗標暫存器1120中的資訊可以被有效且有彈性 地以不同方式存取,可以改善系統1 1 〇〇的性能。例如, 旗標位元之跨通道分佈及邏輯組合可以減少指令的數目, 否則需要經由軟體執行這樣的評估。 而且,考慮支援8通道及16通道運算的執行引擎。 根據一些實施例,當致能8通道運算時(例如兩個8通道 旗標暫存器位元組可以用於水平評估運算),水平評估運 算可以促使所有的旗標暫存器位元之使用。另外,可以支 援S0A及A0S程序。 -14- .(12) 1297853 第12圖是根據一些實施例的系統1 200方塊圖。系統 1 200可以是關聯於例如適用於錄製及/或播放數位電視 信號的媒體處理器。系統1 200包括圖形引擎1210,其具 有η運算元SIMD執行引擎1 220,其符合此處所述之任一 實施例。例如,SIMD執行引擎1 220可以具有針對一個或 多個旗標暫存器的水平及/或垂直評估單元。系統1200 可以也包括一指令記憶體單元1 23 0以儲存SIMD指令, 以及一圖形記憶體單元1 240以儲存圖形資料(例如關聯 於三維影像之向量)。指令記億體單元1 230及圖形記億 體單元1 240 .可以包括例如是隨機存取記憶體(Random Access Memory,RAM)單元。根據一些實施例,系統 1 200也包括硬碟機1 250 (例如用以儲存及提供媒體資訊 )。 下面說明各種額外的實施例。此些實施例並不構成所 有可以實施例的定義,且在此技術領域中之熟悉此技藝者 將會瞭解也可以有很多其他的實施例。更進一步來說,雖 然下列實施例是爲了明晰而簡短介紹,此技術領域中之熟 悉此技藝者將會瞭解需要的話要如何改變上述描述以適應 此些及其他實施例與應用。 雖然某些評估運算已經於此舉例說明,實施例可以有 各種方式重新安排及/或重新組織旗標暫存器資訊。例如 ,水平評估單元可以將32位元的旗標暫存器中之16個 LSB與16個MSB交換。同樣地,旗標暫存器中的某些位 元可以複製到其他位元(例如估連於圖形向量X分量的 -15- ,(13) 1297853 旗標位元可以被複製到此向量之其他三個分量的旗標位元 )° 另一個例子是,考慮一個例子,其有助於決定是否下 列位兀中沒有一個被設立:(i )關聯於SIM D執丫了引擎 通道〇到3的f2中的那些位元,及(ii )關聯於SIMD執 行引擎通道4到7的fO中的那些位元。在此例中,水平 評估單元可以對每一個執行通道接收所有四個旗標暫存器 的位元,並,在執行適當的評估而產生輸出之前,產生組 合的8位元組的資訊。 再.另一個例子,系統可以使用通道〇到3處理第一圖 形向量,使用通道4到處理第二圖形向量。另外,在逐通 道基礎上,假設會有助於決定當下列兩者爲真:(i )對 第二圖形向量而言,fO中的位元及Π中的位元係爲零, 及(ii )對第一圖形向量而言,f2中的位元及f3中的位 元係爲零。在此例中,在執行垂直評估運算之前,評估單 元可以將f2的低4位元與f2的高4位元交換(並對f3 執行類似的運算)。 另外,需注意此處所述之實施例可以是提供多個執行 緒之SIMD執行引擎。考慮例如是具有四個旗標暫存器之 16通道SIMD。在此例中,水平評估單元可以對16執行 通道中的每一個通道接收三組4位元(四個旗標暫存器之 三個執行緒)。同樣地,垂直評估單元可以對四個旗標暫 存器中的每一個接收三組1 6位元。 此處所述之數個實施例僅僅是爲了說明之目的。熟習 -16- (14) 1297853 此技藝者從此敘述中將會看出在修改及變動下可以有其他 可行之實施例,然皆不離本申請專利之範圍。 【圖式簡單說明】 第1圖及第2圖繪示處理系統。 第3圖繪示實質上同時處理兩個向量的處理系統。 第4圖繪示根據一些實施例之用於SIMD執行引擎之 φ 旗標暫存器的一種水平評估單元。 第5圖繪示根據一些實施例之一種方法的流程圖。 第6圖繪示根據一些實施例之一種方法的流程圖。 第7圖繪示根據一些實施例之用於SIMD執行引擎之 旗標暫存器的一種垂直評估單元。 第8圖繪示根據一些實施例之一種方法的流程圖。 第9圖繪示根據一些實施例之用於SIMD執行引擎之 旗標暫存器的一種垂直評估單元。 # 第1 〇圖繪示根據一些實施例之一種方法的流程圖。 第11圖繪示根據一些實施例之用於SIMD執行引擎 之旗標暫存器的水平及垂直評估單元。 第12圖繪示根據一些實施例之一種系統的方塊圖。 【主要元件符號說明】 1 00,200 :處理系統 110,210,310,1 22 0 :執行弓丨擎 700,900,1100,1200 :系統 -17- (15) (15)1297853 320, 420, 720, 920,1120 :旗標暫存器 43 0,1 130 :水平評估單元 740,940,1140:垂直評估單元 1150, 1160:多工器 1210 :圖形引擎 1 23 0 :指令記憶體單元 1 240 :圖形記憶體單元 1 250 :硬碟機
-18-
Claims (1)
1297853 日修正本
十、申請專利範圍 附件4A :第94 1 44 8 40號專利申請案 中文申請專利範圍替換本 民國97年3月1〇日修正 1·-種於單指令多資料(SIMD )執行引擎中實行之 方法,包含:
儲存資訊於一 η通道的單指令多資料(Single Instruction,Multiple-Data,SIMD)執行引擎的一η 位置 旗標暫存器中,該資訊代表多個m通道獨立向量,其中 ’ η及m係爲大於1的整數;以及 基於該旗標暫存器中的該資訊產生一輸出,該輸出包 括至少一位置,該位置之値係基於代表不同獨立向量的資 訊。 2 ·如申請專利範圍第!項所述之方法,其中,該旗標 φ 暫存器具有P個位元,各個位元代表該SIMD執行引擎之 至少一通道,且p小於η。 3 ·如申請專利範圍第1項所述之方法,其中,該輸出 具有Ρ個位元,各個位元代表該SIMD執行引擎之至少一 通道’且ρ小於η。 4·如申請專利範圍第1項所述之方法,其中,各個向 量(i )係關聯於該SIMD執行引擎之至少兩個通道,且 (Π)包括關聯於一圖形位置之二個位置値。 5 ·如申請專利範圍第1項所述之方法,其中,(i ) 1297853 該旗標暫存器具有n個位元,各個位元代表該SIMD執行 弓丨擎之〜通道,且(H)該輸出具有n個位元,各個位元 代表該SIMD執行引擎之一通道。 6·如申請專利範圍第5項所述之方法,其中,該輸出 中之第一位元代表該SIMD執行引擎之第一通道,且該輸 出中之該第一位元的値至少部分是基於該旗標暫存器中之 不代表該第一通道的位元。
7·如申請專利範圍第1項所述之方法,其中,上述產 生該輸出包含: 接收關聯於至少一組SIMD執行引擎通道的一指示; 評估代表該組SIMD執行引擎通道之該旗標暫存器中 的一組位元;以及 儲存評估之一結果於代表該組SIMD執行引擎通道的 該輸出的該組位元中。 8.如申請專利範圍第7項所述之方法,其中,上述評 # 估包含決定是否爲下列之一 :(i)該旗標暫存器中的所 有該組位元具有一第一値,或(ii)該旗標暫存器中的任 意該組位元具有一第一値。 9·如申請專利範圍第7項所述之方法,其中,指示可 以關聯於不同大小的SIMD執行引擎通道組。 i〇·如申請專利範圍第7項所述之方法,其中,該接 收的指示係關聯於多個組,且該評估及儲存係針對各個組 而實行。 U ·如申請專利範圍第1項所述之方法,其中,上述 -2- 1297853 儲存包含儲存第一資訊於一第一旗標暫存器,且更包含: 儲存第二資訊於該SIMD執行引擎的一第二旗標暫存 器;以及 輸基訊 二係資 第値的 一 之者 生置兩 產位器 訊一存 資少暫 的至標 中該旗 器,二 存置第 暫位該 標一及 旗少器 二至存 第括暫 及包標 一 出旗 第輸 一 該二第 於第該 基該自 , 來 出於 。 1 2 . —種於SIM D執行引擎中實行之方法,包含: 儲存資訊於一 η通道單指令多資料(SIMD )執行引 擎的一第一 Ρ位置旗標暫存器,其中,η及ρ係爲大於1 的整數; 儲存資訊於該執行引擎的一第二旗標暫存器;以及 產生一輸出,該輸出包括至少一位置,該至少一位置 之値係基於來自該第一 Ρ位置旗標暫存器及該第二旗標暫 存器兩者的資訊。 1 3 ·如申請專利範圍第1 2項所述之方法,其中,(i )該第一旗標暫存器具有η個位元,各個位元代表該 SIMD執行引擎之一通道,(ii)該第二旗標暫存器具有η 個位元,各個位元代表該SIMD執行引擎之一通道,及( iii)該輸出具有η個位元,各個位元代表該SIMD執行引 擎之一通道。 14·如申請專利範圍第13項所述之方法,其中,該輸 出中之第一位元代表該SIMD執行引擎之第一通道,且該 輸出中之第一位元的値至少部分是基於該旗標暫存器中之 -3- 1297853 不代表該第一通道的位元。 1 5 .如申請專利範圍第i 3項所述之方法,其中,上述 產生該輸出包含: 接收關聯於一組旗標暫存器的一指示;以及 針對每個SIMD執行引擎通道: 評估來自該組中的該旗標暫存器之代表該通道的該些 位元,以及
儲存該評估之一結果於代表該通道的輸出位元中。 16·如申請專利範圍第15項所述之方法,其中,上述 評估包含針對每個SIMD執行引擎通道決定是否爲下列之 一 :(i)來自該組中的該旗標暫存器之代表該通道的所 有位元具有一第一値,或(ii)來自該組中的該旗標暫存 器之代表該通道的任意位元具有一第一値。 1 7 ·如申請專利範圍第1 5項所述之方法,其中,指示 可以關聯於不同大小的旗標暫存器組。 18·如申請專利範圍第13項所述之方法,其中,該資 訊代表多個m通道獨立向量,其中m係爲大於1的整數 ,且上述產生包含產生一第一輸出,更包含: 基於該第一資訊產生一第二輸出,該第二輸出包括至 少一位置,該至少一位置之値係基於代表不同獨立向量之 資訊。 19·如申請專利範圍第18項所述之方法,其中,各個 向量(i )係關聯於該SIMD執行引擎之至少兩個通道, 及(Π)包括關聯於一位置的兩個値。 -4- 1297853 2 0.—種於SIMD執行引擎中實行之方法,包含: 儲存資訊於一 η通道單指令多資料(SIMD )執行引 擎的一旗標暫存器,其中,η係爲大於1的整數; 接收關聯於一組SIMD執行引擎通道的一指示;以及 基於關聯於該組SIMD執行引擎通道的該旗標暫存器 中的資訊而產生一輸出。 21. —種用於SIMD執行引擎之裝置,包含:
—η 通道單指令多資料 (Single Instruction, Multiple-Data,SIMD)執行引擎的一 η位元旗標暫存器, 其中,η係爲大於1的整數且該旗標暫存器的各個位元係 關聯於一通道,且其中,該旗標暫存器係用以儲存來自一 執行單元之資訊,該資訊係關聯於多於一個的多通道圖形 向量;以及 一水平評估單元,用以產生一 η位元輸出,其中,該 輸出中的各個位元係關聯於該SIMD執行引擎之一通道, Φ 且該輸出中的至少一位元之値係基於代表不同圖形向量的 旗標暫存器中之位元。 22·如申請專利範圍第21項所述之裝置,其中,該水 平評估單元進一步用以(i )接收關聯於至少一組SIMD 執行引擎通道的一指示,(ii )評估代表該組SIMD執行 引擎通道之該旗標暫存器中的該組位元;以及(iii )輸出 所評估之一結果至該執行單元。 23·如申請專利範圍第22項所述之裝置,其中,指示 可以是關聯於不同大小的SIMD執行引擎通道組。 1297853 24.—種用於SIMD執行引擎之裝置,包含: 一 η 通道單指令多資料 (Single Instruction, Multiple-Data,SIMD)執行引擎的一第一 η位元旗標暫存 器,其中,η係爲大於1的整數;
該SIMD執行引擎之一第二η位元旗標暫存器;以及 一垂直評估單元,用以產生一 η位元輸出,該輸出包 括至少一位元,該至少一位元之値係基於來自該第一 η位 元旗標暫存器及該第二η位元旗標暫存器兩者之資訊。 2 5.如申請專利範圍第24項所述之裝置,其中,該垂 直評估單元進一步用以(i )接收關聯於一組旗標暫存器 的一指示,且,針對每個SIMD執行引擎通道:(Π )評 估來自該組中的該旗標暫存器之代表該通道的位元;以及 (iii )儲存該評估之一結果於代表該通道之該輸出位元。 26. 如申請專利範圍第25項所述之裝置,更包含: 一執行單元,用以提供該指示以及接收該輸出。 27. —種處理系統,包含: 一處理器,包括: 一 η通道的單指令多資料(Single Instruction, Multiple-Data,SIMD )執行引擎,其中η係爲大於1 的整數,包括: 一第一 η位元旗標暫存器, 一第二η位元旗標暫存器,及 一垂直評估單元,用以產生一 η位元輸出, 該輸出包括至少一位元,該至少一位元之値係基 -6 - 1297853 於來自該第一 η位元旗標暫存器及該第二η位元 旗標暫存器兩者之資訊;以及 一圖形記憶體單元。 2 8 .如申請專利範圍第2 7項所述之處理系統,其中, 該第一 η位元旗標暫存器係用以儲存來自一執行單元之資 訊,該資訊係關聯於多於一個多通道圖形向量。 2 9.如申請專利範圍第27項所述之處理系統’更包含
一水平評估單元。
-7-
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/015,778 US7219213B2 (en) | 2004-12-17 | 2004-12-17 | Flag bits evaluation for multiple vector SIMD channels execution |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200636573A TW200636573A (en) | 2006-10-16 |
TWI297853B true TWI297853B (en) | 2008-06-11 |
Family
ID=36123387
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW094144840A TWI297853B (en) | 2004-12-17 | 2005-12-16 | Method for performing in a simd execution engine, apparatus for a simd execution engine, and processing system |
Country Status (8)
Country | Link |
---|---|
US (1) | US7219213B2 (zh) |
JP (1) | JP4901754B2 (zh) |
KR (1) | KR100958964B1 (zh) |
CN (1) | CN100422979C (zh) |
DE (1) | DE112005003130B4 (zh) |
GB (1) | GB2436499B (zh) |
TW (1) | TWI297853B (zh) |
WO (1) | WO2006066262A2 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI427533B (zh) * | 2009-12-22 | 2014-02-21 | Intel Corp | 用於同步化simd向量的方法,處理器,及系統 |
TWI562074B (en) * | 2011-11-30 | 2016-12-11 | Intel Corp | Method to provide vector horizontal compare functionality and processor thereof |
TWI587137B (zh) * | 2014-12-15 | 2017-06-11 | 英特爾公司 | 經改良之單一指令多重資料(simd)的k最近鄰居法之實施技術 |
US10318291B2 (en) | 2011-11-30 | 2019-06-11 | Intel Corporation | Providing vector horizontal compare functionality within a vector register |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008071130A (ja) * | 2006-09-14 | 2008-03-27 | Ricoh Co Ltd | Simd型マイクロプロセッサ |
US9892047B2 (en) * | 2009-09-17 | 2018-02-13 | Provenance Asset Group Llc | Multi-channel cache memory |
US10255228B2 (en) * | 2011-12-06 | 2019-04-09 | Nvidia Corporation | System and method for performing shaped memory access operations |
GB2536069B (en) * | 2015-03-25 | 2017-08-30 | Imagination Tech Ltd | SIMD processing module |
US20200341772A1 (en) * | 2019-04-29 | 2020-10-29 | DeGirum Corporation | Efficient Architectures For Deep Learning Algorithms |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2768803B2 (ja) * | 1990-04-26 | 1998-06-25 | 株式会社東芝 | 並列演算処理装置 |
JP2793357B2 (ja) * | 1990-11-20 | 1998-09-03 | 株式会社東芝 | 並列演算装置 |
JP2793342B2 (ja) * | 1990-08-09 | 1998-09-03 | 株式会社東芝 | 演算処理装置 |
US5659722A (en) | 1994-04-28 | 1997-08-19 | International Business Machines Corporation | Multiple condition code branching system in a multi-processor environment |
JP3442225B2 (ja) * | 1996-07-11 | 2003-09-02 | 株式会社日立製作所 | 演算処理装置 |
US5805875A (en) * | 1996-09-13 | 1998-09-08 | International Computer Science Institute | Vector processing system with multi-operation, run-time configurable pipelines |
JP3652518B2 (ja) | 1998-07-31 | 2005-05-25 | 株式会社リコー | Simd方式の演算器及び演算処理装置 |
US20020083311A1 (en) * | 2000-12-27 | 2002-06-27 | Paver Nigel C. | Method and computer program for single instruction multiple data management |
GB2382886B (en) * | 2001-10-31 | 2006-03-15 | Alphamosaic Ltd | Vector processing system |
US6986023B2 (en) * | 2002-08-09 | 2006-01-10 | Intel Corporation | Conditional execution of coprocessor instruction based on main processor arithmetic flags |
JP3958662B2 (ja) * | 2002-09-25 | 2007-08-15 | 松下電器産業株式会社 | プロセッサ |
-
2004
- 2004-12-17 US US11/015,778 patent/US7219213B2/en not_active Expired - Fee Related
-
2005
- 2005-12-15 KR KR1020077014564A patent/KR100958964B1/ko not_active IP Right Cessation
- 2005-12-15 JP JP2007547041A patent/JP4901754B2/ja not_active Expired - Fee Related
- 2005-12-15 GB GB0713878A patent/GB2436499B/en not_active Expired - Fee Related
- 2005-12-15 WO PCT/US2005/046321 patent/WO2006066262A2/en active Application Filing
- 2005-12-15 DE DE112005003130T patent/DE112005003130B4/de not_active Expired - Fee Related
- 2005-12-16 TW TW094144840A patent/TWI297853B/zh not_active IP Right Cessation
- 2005-12-19 CN CNB2005101347265A patent/CN100422979C/zh not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI427533B (zh) * | 2009-12-22 | 2014-02-21 | Intel Corp | 用於同步化simd向量的方法,處理器,及系統 |
US8996845B2 (en) | 2009-12-22 | 2015-03-31 | Intel Corporation | Vector compare-and-exchange operation |
TWI562074B (en) * | 2011-11-30 | 2016-12-11 | Intel Corp | Method to provide vector horizontal compare functionality and processor thereof |
US9665371B2 (en) | 2011-11-30 | 2017-05-30 | Intel Corporation | Providing vector horizontal compare functionality within a vector register |
US10318291B2 (en) | 2011-11-30 | 2019-06-11 | Intel Corporation | Providing vector horizontal compare functionality within a vector register |
TWI587137B (zh) * | 2014-12-15 | 2017-06-11 | 英特爾公司 | 經改良之單一指令多重資料(simd)的k最近鄰居法之實施技術 |
Also Published As
Publication number | Publication date |
---|---|
WO2006066262A2 (en) | 2006-06-22 |
JP4901754B2 (ja) | 2012-03-21 |
KR100958964B1 (ko) | 2010-05-20 |
TW200636573A (en) | 2006-10-16 |
GB0713878D0 (en) | 2007-08-29 |
GB2436499A (en) | 2007-09-26 |
JP2008524723A (ja) | 2008-07-10 |
DE112005003130B4 (de) | 2009-09-17 |
CN1790310A (zh) | 2006-06-21 |
US20060149924A1 (en) | 2006-07-06 |
KR20070089208A (ko) | 2007-08-30 |
US7219213B2 (en) | 2007-05-15 |
DE112005003130T5 (de) | 2007-11-22 |
GB2436499B (en) | 2009-07-22 |
WO2006066262A3 (en) | 2006-12-14 |
CN100422979C (zh) | 2008-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI297853B (en) | Method for performing in a simd execution engine, apparatus for a simd execution engine, and processing system | |
EP3026549B1 (en) | Systems and methods of data extraction in a vector processor | |
KR100904318B1 (ko) | 단일 명령, 다중 데이터 실행 엔진에 대한 조건형 명령 | |
TWI270007B (en) | Method and apparatus for shuffling data | |
US8078836B2 (en) | Vector shuffle instructions operating on multiple lanes each having a plurality of data elements using a common set of per-lane control bits | |
US20190004797A1 (en) | Exposing valid byte lanes as vector predicates to cpu | |
US20070296729A1 (en) | Unified virtual addressed register file | |
US20060149937A1 (en) | Register file regions for a processing system | |
US20240078206A1 (en) | Superimposing butterfly network controls for pattern combinations | |
CN109478175B (zh) | 在simd架构中用于通道混洗的混洗器电路 | |
US20070011442A1 (en) | Systems and methods of providing indexed load and store operations in a dual-mode computer processing environment | |
US11804858B2 (en) | Butterfly network on load data return | |
US7882284B2 (en) | Compute unit with an internal bit FIFO circuit | |
CN111651201A (zh) | 一种用于执行向量合并运算的装置和方法 | |
US20170024209A1 (en) | Mixed-width simd operations using even/odd register pairs for wide data elements | |
CN117453594A (zh) | 数据传输装置及方法 | |
JP2008524723A5 (zh) | ||
US20060149938A1 (en) | Determining a register file region based at least in part on a value in an index register | |
KR101121941B1 (ko) | 데이터 채널 정보의 프로그램가능 패턴-기반 패킹해제 및 패킹 | |
CN1246789C (zh) | 用于校准的单指令多数据的通用寄存器文件结构 | |
KR20180039078A (ko) | Simd 명령들을 사용하는 테이블 룩업 | |
EP1839126B1 (en) | Hardware stack having entries with a data portion and associated counter | |
JP2004302772A (ja) | ベクトルプロセッサおよびアドレス指定方法 | |
JP4388643B2 (ja) | マルチチャンネル信号処理装置 | |
US20080158238A1 (en) | Format conversion apparatus from band interleave format to band separate format |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |