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 PDF

Info

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
Application number
TW094144840A
Other languages
English (en)
Other versions
TW200636573A (en
Inventor
Michael Dwyer
Hong Jiang
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of TW200636573A publication Critical patent/TW200636573A/zh
Application granted granted Critical
Publication of TWI297853B publication Critical patent/TWI297853B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3888Concurrent 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-
TW094144840A 2004-12-17 2005-12-16 Method for performing in a simd execution engine, apparatus for a simd execution engine, and processing system TWI297853B (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 松下電器産業株式会社 プロセッサ

Cited By (6)

* Cited by examiner, † Cited by third party
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