TWI295031B - Method of processing loop instructions, apparatus and system for processing information, and storage medium having stored thereon instructions - Google Patents

Method of processing loop instructions, apparatus and system for processing information, and storage medium having stored thereon instructions Download PDF

Info

Publication number
TWI295031B
TWI295031B TW094136299A TW94136299A TWI295031B TW I295031 B TWI295031 B TW I295031B TW 094136299 A TW094136299 A TW 094136299A TW 94136299 A TW94136299 A TW 94136299A TW I295031 B TWI295031 B TW I295031B
Authority
TW
Taiwan
Prior art keywords
loop
instruction
register
mask
channel
Prior art date
Application number
TW094136299A
Other languages
English (en)
Other versions
TW200627269A (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 TW200627269A publication Critical patent/TW200627269A/zh
Application granted granted Critical
Publication of TWI295031B publication Critical patent/TWI295031B/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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop 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
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Description

1295031 九、發明說明: t發明戶斤屬之技術領域】 本發明係有關於用於單指令多資料執行引擎之指令迴 圈處理技術。 5 t 發明背景 為了改良處理系統的效能,於單一指令週期期間,一 個指令可同時對資料的多重運算元執行。此種指令可稱作 為單指令多資料(SIMD)指令。例如,八通道simd執行引擎 10可同時對八個32位元資料運算元執行指令,各個運算元係 映射至SIMD執行引擎的獨特運算通道。於非SIMd處理器 之情況下,指令可為「迴圈」指令,因而相關聯的指令集 須被執行多次(例如執行特定次數,或執行至滿足條件為 止)。 15 【發明内容】 本發明係為一種方法,其包含有下列步驟:於一個η 通道單指令多資料執行引擎上接收一第一迴圈指令;以及 將資訊由一個η位元迴圈遮罩暫存器拷貝至一個η位元寬m 個分錄深之迴圈堆疊,其中η及m為整數。 20圖式簡單說明 弟1及2圖顯示處理系統。 第3圖顯示根據若干實施例之SIMD執行引擎。 第‘5圖顯示根據若干實施例,執行D〇指令之SImd執 行引擎。 5 1295031 第6、8圖顯示根據若干實施例,執行REPEAT指令之 SIMD執行?丨擎。 第9圖顯示根據若干實施例,執行BREAK指令之SIMD 執行引擎。 5 第10圖為根據若干實施例,一種方法之流程圖。 第圖顯示根據若干實施例,執行巢套的迴圈指令 之SIME)執行引擎。 第15圖顯示根據若干實施例,執行迴圈指令與條件指 令二者之SIMD執行引擎。 10 第16圖為根據若干實施例,一種方法之流程圖。 第17-18圖為根據一個實施例,SIMD執行引擎之一實 例。 第19圖為根據若干實施例,一種系統之方塊圖。 第20圖顯示根據若干實施例,執行CONTINUE指令之 15 SIMD執行引擎。 第21圖為根據若干實施例,一種處理CONTINUE指令 之方法之流程圖。 t實施方式】 較佳實施例之詳細說明 20 此處所述若干實施例係與「處理系統」相關聯。如此 處使用,「處理系統」一詞表示可處理資料之任何裝置。處 理系統例如可與處理圖形資料及/或其它型別的媒體資訊 的%圖引擎相關聯。某些情況下,處理系統的效能可使用 SIMD執行引擎來改良。舉例言之,SIMD執行引擎可同時 6 1295031 對多重資料通道執行單一浮點SIMD指令(例如來加速轉換 及/或成像三維幾何形狀)。其它處理系統實例包括中央處理 單元(CPU)及數位信號處理器(DSP)。 第1圖顯示一型處理系統100,包括SIMD執行引擎 5 110。本例中,執行引擎110接收指令(例如來自指令記憶體 單元的指令)連同四分量資料向量(例如向量分量X、Y、Z 及w,各自具有位元摘述來於SIMD執行引擎110的相應通 道0至通道3上處理)。執行引擎110然後可對該向量的全部 分量同時執行該指令。此種辦法稱作為「水平」、「通道並 10 聯」或「結構陣列」實作。雖然此處所述若干實施例係與 四通道SIMD執行引擎110相關,但注意SIMD執行引擎可具 有大於1的任何數目的通道(例如實施例可關聯3 2通道執行 引擎)。 第2圖顯示包括SIMD執行引擎210的另一型處理系統 15 200。本例中,執行引擎210接收一個指令連同四個資料運 算元,此處各個運算元係與不同向量(例如由向量0至向量3 的四個X向量)相關聯。執行引擎210可於單一指令週期對全 部運算元執行該指令。此種辦法稱作為「垂直」、「通道-串 聯」或「陣列結構」實作。 20 根據若干實施例,SIMD指令可為「迴圈」指令,表示 相關指令集例如可被執行特定次數,或被執行至滿足特定 條件為止。例如考慮下述指令: DO{ sequence of instructions 7 1295031 } WHILE<condition> 此處’只要「條件為真」則執行該指令順序。但當此 種指令係以S励方式執行時,不同通道可能產生不同的 〈―測試結果。舉例言之,條件定義為只要Varl為 5非零(且若屬適當指令順序可操縱制),則須執行指令順 序。本例中,Va輯-個通道可為零,而對另—通道可為 非零。 第3圖顯示根據若干實施例之四通道SIMD執行引擎 300。引擎300包括四位元迴圈遮罩暫存器31〇,其中各個位 元係與相應的運算通道相關聯。迴圈遮罩暫#器31〇例如可 包含引擎300的硬體暫存器。引擎3⑻也包括四位元寬迴圈 、「堆疊」320。如此處使用,「堆疊」—詞表示可儲存先前 ^罩值且重域前遮罩值的任何機構。堆疊的—個實例為 每一通道一位元堆疊機構。 15 迴®堆疊32G例如可包含硬體暫存H㈣、記憶體位 置、及/或硬體暫存器與記憶體位置的組合。雖然引擎30()、 條件遮罩暫存器310、及條件堆疊32〇於第3圖係以四通道寬 舉例說明’但須瞭解也可實作為其它數目之通道寬度(例如 X通道寬)’各個運算通道可處理7位元運算元,只要運算通 20道、遮罩通道與迴圈堆疊通道間有i ··晴應關係即可。 引擎300可接收四個不同資料通道(例如與四個運算通 逼相關聯)的指令,且對四個不同通道同時執行指令。注意 於某些情況下可能需要少於四個通道(例如當有少於四個 有效運异兀時)。結果,迴圈遮罩暫存器31〇可以初始化向 8 1295031 量來初始化,該初始化向量指示哪一個通道具有有效運算 元,而哪一個通道則否(例如運算元i〇至i3,「1」表示相關通 道目前可運作)。則迴圈遮罩暫存器310可用來避免不必要 的處理(例如指令只可對迴圈遮罩暫存器310内部被設定為 5 「1」的該等運算元執行處理)。根據另一實施例,迴圈遮 罩暫存器310單純被初始化為全部「1」(例如假設全部通道 皆經常性可運作)。若干實施例中,迴圈遮罩暫存器31〇的 資訊可組合其它暫存器的資訊(例如透過布林and操作來 組合),結果可儲存於整體執行遮罩暫存器(則可用來避免不 10 必要的處理或不當的處理)。 15 20 第4-5圖顯示根據若干實施例,執行〇〇指令的四通道 SIMD執行引擎400。如前文說明,引擎4〇〇包括迴圈遮罩暫 存器及迴圈堆疊42〇。但本例中,迴圈堆疊伽知分錄 深。例如注意於10分錄深堆疊之例十,於迴圈堆疊42〇的頭 四個分錄可為硬體暫存器,而其餘六個分錄係儲存於記情 士如第4圖所示,當引擎·接收到迴圈指令(例如卿 令卿’迴圈遮罩暫存器的資料被拷貝至迴圈堆属* 上。此外,迴圈資訊被儲存於迴圈遮罩暫存器仙。且 :==當第—次遭遇D〇指令時,四個通道中二 些通道為可作用(例如運算元d 為作用狀態)。 」“相關的通道 二:: 9 1295031 為1110」’則迴圈指令將對與三個最有效運算元相關聯的 - 資料執行’而非最無效運算元相關聯的資料(例如該通道目 β 前無法作用)。 . 當遭遇與00指令相關聯的WHILE陳述時,對作用的通 5道評估條件’結果存回迴圈遮罩暫存器410(例如藉布林 AND操作回存)。舉例言之,若於遭遇wmLE陳述之前迴圈 •遮罩暫存|§41〇為「111Q」’則係對與三個最有效運算元相 關聯的資料評估條件。然後將結果儲存於迴圈遮罩暫存器 籲 410。若於迴圈遮罩暫存器410的位元中有至少-個仍然為 10 Γ1」,則再度對具有迴圈遮罩暫存器值=「丨」的全部通道 執打該迴圈指令集。舉例言之,若與WHILE陳述相關聯的 條件導致「llGx」絲(此處x因該通道無法仙故未經評 估)’則可儲存「1100」於迴圈遮罩暫存器彻。當再度執 行與該迴圈相關聯的指令時,引擎4〇〇將只對與兩個最有效 15運算元相關的資料進行執行。此種情況下,可避免不必要 φ 的及/或不當的迴圈處理。注意若更新只限於作用狀態的通 - 道,則可能無需布林AND操作。 當最終遭遇wmLE陳述,且條件經過評估於迴圈遮罩 暫存器4蘭全部位元現在皆為、,則迴圈完成。此種條 20件舉例說明於第5圖。本财,來自迴圈堆疊420頂上的資 訊(例如初始化向量)回送至迴圈遮罩暫存器,以及隨後 執行指令。換言之,於迴圈堆疊蝴頂上的資料可移轉回迴 圈遮罩暫存器410,來恢復於進人迴圈之前指示哪些通道含 有有效資料的内容。然後可對變成可作用的通道相關的資 1295031 料執行進—步指令。結果,SIMD引擎400可有效處理迴圈 指令。 除了DO指令之外,第6-8圖顯示根據若干實施例,執 行REPEAT指令的SIMD執行引擎600。如前文說明,引擎6〇〇 5 包括四位元迴圈遮罩暫存器610及四位元寬m分錄深迴圈堆 疊620。本例中,引擎6〇〇進一步包括計數器630之集合(例 如硬體暫存器串列、記憶體位置及/或硬體暫存器與記憶體 位置的組合)。迴圈遮罩暫存器61〇例如可以初始化向量i〇 至U而初始化,「1」指示相關聯的通道具有有效運算元。 10 當引擎600遭遇與REPEAT迴圈相關聯的ιΝΤ COUNT=<integer>指令時,如第6圖所示,<integer>值可儲 存於計數器630。然後當遭遇REPEAT指令時,如第7圖所 示,於迴圈遮罩暫存器610的資料被拷貝至迴圈堆疊62〇頂 上。此外,迴圈資訊被儲存於迴圈遮罩暫存器61〇。迴圈資 15訊初步指示當首次遭遇REPEAT指令時,例如四個通道中之 哪些通道為作用狀態(例如運算元化至以,r i」指示相關通道 為作用狀態)。 與REPEAT迴圈相關聯的指令集隨後根據迴圈遮罩暫 存裔610而對各個通道執行。例如若迴圈遮罩暫存器61〇為 20 「1000」,則迴圈的指令將只對於最有效運算元相關的資料 執行。 當達成REPEAT迴圈結束(例如由「}」指示或ΝΕχ1^ 令指示)時,各個與作用狀態通道相關聯的計數器63〇被遞 減。根據若干實施例,若有任何計數器63〇到達零,則於迴 1295031 圈遮罩暫存器610的相關聯位元被設定為零。若於迴圈遮罩 暫存器610及/或計數器630中有至少一個位元仍然為「丨」, 則再度執行REPEAT方塊。 當於迴圈遮罩暫存器610及/或計數器630的全部位元 5 皆為「〇」時,REPEAT迴圈完成。此種條件舉例說明於第8 圖。本例中,來自迴圈堆疊620的資訊(例如初始化向量)被 送返迴圈遮罩暫存器610,隨後執行指令。
| 第9圖顯示根據若干實施例,執行BREAK指令的SIMD 執行引擎600。特別,BREAK指令係於REPEAT迴圈内部, 10 若X係大於Y則BREAK指令將被執行。本例中,第二個最有 效通道的X係大於Y,而其它通道的X並未大於Y。此種情 況下,於迴圈遮罩向量的相應位元被設定為「〇」。若於迴 圈遮罩向量610的全部位元皆為「〇」,則可結束REPEAT迴 圈(且迴圈堆疊620頂部可回送至迴圈遮罩暫存器41〇)。注意 !5 一個迴圈中可能存在有多於一個BREAK指令。例如考慮下 | 述指令· DO{
Instructions BRE AKccondition 1 > 20 Instructions BREAK<condition2>
Instructions }While<condition3> 此種情況下,若滿足條件1或條件2,則可執行break 12 1295031 指令。 第10圖為根據若干實施例,一種方法之流糕圖。此處 所述抓私圖並非暗示執行動作的固定順序,實施例可以任 何實用順序進行。注意此處所述任何方法皆町藉硬體、軟 5體(包括微碼)、韌體或此等辦法中之任一種組合來進行。舉 例言之,儲存媒體可儲存指令,該等指令當由機器執行時 可獲付根據此處所述任何實施例的表現。 於1002,接收迴圈指令。例如SIMD執行引擎可能遭遇 DO指令或REPEAT指令。迴圈指令暫存器的資料隨後於 10 1〇〇4被移送至迴圈堆疊頂端,迴圈資訊儲存於迴圈遮罩暫 存器,1006。例如指示哪些通道目前具有有效運算元的指 示可儲存於迴圈遮罩暫存器。 於1008,與迴圈指令相關聯的指令係根據迴圈遮罩暫 存器的指令執行至迴圈完成為止。例如,與DO迴圈或 15 REPEAT迴圈相關聯的指令方塊可被執行至迴圈遮罩暫存 器中的全部位元皆為「0」為止。當迴圈執行完成時,於迴 圈堆疊頂端的資訊可被移回迴圈遮罩暫存器,1010。 如就第3圖所述,迴圈堆疊可為一個分錄深。但當迴圈 係大於一個分錄深時,SIMD引擎可處理巢套的迴圈指令 20 (例如當第二迴圈方塊係巢套於第一迴圈方塊内部時)。例如 考慮下述指令集: D〇{ first subset of instructions DO{ 13 !295〇3ΐ second subset of instructions }WHILE<second condition〉 third subset of instructions }WHILE<first condition〉 5 本例中,第一和第三指令子集於第一條件為真實須對 適當通道執行,而第二指令子集須於第一條件及第二條件 皆為真時才執行。 第11-14圖顯示包括迴圈遮罩暫存器ιι10(例如以初始 化向量而被初始化)及多分錄深迴圈堆疊112〇的一種SIMD 10執行引擎1100。如第12圖所示,當遭遇第一D0指令時,迴 圈遮罩暫存器1110的資訊被拷貝至迴圈堆疊1120的頂端(i〇 至i3),第一迴圈資訊被儲存於迴圈遮罩暫存器111〇(di〇至 du)。然後引擎11〇〇如迴圈遮罩暫存器111〇中的資訊指示, 可對多個資料運算元執行與第一迴圈指令相關聯的迴圈方 15塊。 苐13圖顯示根據若干實施例,另一種巢套的迴圈指令 (例如第二DO陳述)的執行。本例中,目前於迴圈遮罩暫存 态1110的資訊((110至(113)被拷貝至迴圈堆疊1120頂端。結 果,先前於迴圈堆疊112〇頂端的資訊(例如初始化向量丨〇至“) 20已經被向下推一個分錄。引擎1100也將第二迴圈資訊儲存 於迴圈遮罩暫存器((12〇至(}23) 〇 然後與第二迴圈指令相關聯的迴圈方塊可如迴圈遮罩 暫存器1110中的資訊指示而執行(例如且每次執行第二方 塊時’迴圈遮罩暫存器1110可基於與第二迴圈的WHIL]^^ 14 1295031
才目畏哥jRM ^ 9的條件而被更新)。當第二迴圈的WHILE指令最終 導致k圈遮罩暫存器1110的每個位元皆為「0」時,如第14 圖斤示於迴圈堆疊1120頂上的資料(例如(110至(113)可移回 至迴圈遮罩暫存器1110。額外指令隨後係根據迴圈遮罩暫 5存為1U〇執行。當第一迴圈方塊完成時(未顯示於第14圖), 初始化向量須傳輸回迴圈遮罩暫存器1110,可對與可作用 之通道相關聯的資料執行進一步指令。 注意迴圈堆疊1120深度係與引擎1100所支援的巢套的 迴圈指令階數有關。根據若干實施例,迴圈堆疊112〇只有 10單一分錄深(例如堆疊實際上為η運算元寬暫存器)。也須注 意於迴圈遮罩暫存器m〇的「〇」位元指示多項不同情況諸 如:⑴未使用相關通道,(ii)未滿足本迴圈之相關WHILE條 件,或(iii)未滿足較高階迴圈的相關條件。 根據若干實施例,SIMD引擎也支援「條件」指令。例 15 如考慮下列指令集: IF(condition)
subset of instructions END IF 此處,於該條件為「真」時將執行條件子集。但如同 20迴圈指令,當同時對多重資料通道執行條件指令時,不同 通道可產生不同結果。換言之,對某些通道可能需要執行 指令子集,但對其它通道則否。 第15圖顯示根據若干實施例之四通道SIMD執行引擎 1500。引擎1500包括此處所述任何實施例的迴圈遮罩暫存 15 1295031 器1510及迴圈堆疊1520。 此外,根據本實施例,引擎1500包括四位元條件遮罩 暫存器1530,其中各個位元係與相應的運算通道相關。條 件遮罩暫存器1530例如可包含於引擎1500的硬體暫存器。 5引擎1500也包括四位元寬m分錄深的條件堆疊1540。條件堆 疊1540例如包含硬體暫存器串列、記憶體位置、及/或硬體 暫存器與記憶體位置的組合(例如以十分錄深堆疊為例,堆 疊1540中的頭四個分錄可能為硬體暫存器,而其餘六個分 錄則儲存於記憶體)。 10 15 20 條件指令的執行可類似迴圈指令的執行。例如當引擎 1500接收到條件指令(例如「IF」陳述)時,於條件遮罩暫存 器1530的資料可被拷貝至條件堆疊1540的頂端。此外,可 根據於條件遮罩暫存n15_資訊,對四個運算元個別執 行指令。例如若初始向量為「謂」,則與IF陳述相關的條 件將對與_個最有效運算元相關聯的資料作評估,但:、 通::前:法動作)。然後_存: 口口 30,用來避免與IF陳述相關的陳述 當的處理。舉财之,若與戦軸 (此處因通道無法動作故x未被評估) J T儲存於條件遮罩暫存器 與IF陳述相關的指令睹,心 ’、俊田執仃其它 算元相關聯的㈣進行。15GG將只對與兩個最有效運 (例如「ϊΙΓ1·接收到已經達到條件指令相關指令故駐 (例如「ENDIFj陳述 終點 衣條件堆疊1540頂端的資料(例 16 Ϊ295031 如初始化向量)可被回傳至條件遮罩暫存器153〇,恢復於進 ^ /條件方塊别指示哪些通道含有有效資料的内容。隨後 對可動作的通道相關資料執行進一步指令。結果,simd引 • 擎1500可有效處理條件指令。 ' 根據若干實施例,指令係根據迴圈遮罩暫存器1510及 • 條件遮罩暫存為1530執行。例如第16圖為根據此種實施例 之方法之貫例。於16〇2,引擎15〇〇取還下一個SIMD指令。 • 於1604 ’若對特定通道的迴圈遮罩暫存器1510中的該位元 為〇」’則於1606,未對該通道執行指令。若於16〇8,該 〇通迢之於條件遮罩暫存器1530中的位元為「〇」,則也未對 該通道執行指令。唯有於迴圈遮罩暫存器m〇及條件遮罩 暫存器153G二者的位元皆為「1」日t,於刪才執行指令。 藉此方式,引擎·可有效執行迴圈指令及條件指令二者。 某些情況下,條件指令可被巢套於迴圈指令内部,及/ 、15 4迴圈指令可被巢套於條件指令内部。注意於巢套分支的η • 階以内可能出現BREAK。料,條件堆疊154〇例如可能藉 •跳出條件遮罩向量<eGUnt>多次被「解捲」而恢復至進入迴 圈前的狀態。<_U>例如可藉編譯器將條件指令相關巢套 階層堆疊於迴圈指令與BREAK指令間來堆疊。 20 ㈣圖顯和論引擎1其具有職宜元迴圈遮罩暫 存器mo(各個位元係與16個相應的運算通道之_相關聯) 以及i6位it寬m分錄深的迴圈堆疊172G。引擎i可接收指 令’且同日姉6個不同資料通道(例如糾個運算通道相關曰) 同時執行指令。但因可能需要少於16個通道,故迴圈遮罩 17 -Π95031 暫存器係以初始化向量一至丨^初始化,「1」指示相關的通道 可運作。 如第18圖所示,當引擎1700接收到DO指令時,於迴圈 遮罩暫存器1710中的資料被拷貝至迴圈堆疊172〇頂上。此 5外,D〇資訊如至山5係儲存於迴圈遮罩暫存器1710。do資 訊例如可指示當遭遇DO指令時,16個通道中哪些通道為作 用狀態。然後根據迴圈遮罩暫存器171〇,對各個通道執行 第二指令集。當遭遇WHILE指令時,引擎17〇〇檢查各個作 用狀態通道的<flag>。<flag>例如可能由第二指令集之一 10 (例如恰在WHILE指令之前)設定。若對任何通道並無任何 <flag>為真,則DO迴圈完成。此種情況下,初始化向量i〇 至ii5可被回送至迴圈遮罩暫存器171〇,且可執行第三指令 集。 若至少一個<flag>為真,則迴圈遮罩暫存器171〇可適當 15更新,引擎可跳至由WHILE指令所定義的<addreSS>(例 如指標至第二指令集的起點)。 第19圖為根據若干實施例,系統19〇〇的方塊圖。系統 1900例如可能與適合記錄及/或顯示數位電視信號的媒體 處理器相關聯。系統19〇〇包括根據此處所述任意實施例, 20具有n運算元SIMD執行引擎1920的繪圖引擎1910。例如, 根據此處所述任意實施例,SIMD執行引擎1920可具有η運 异元迴圈遮罩向量及η運算元寬❿分錄深迴圈堆疊。系統 1900也包括指令記憶體單元1930來儲存SIMD指令,以及包 括圖形記憶體單元1940來儲存圖形資料(例如與三維影像 18 1295031 相關的向量)。指令記憶體單元1930及圖形記憶體單元1940 例如可包含隨機存取記憶體(RAM)單元。 以下說明多個其它實施例。此等實施例並未組成全部 可能實施例的界限,熟諳技藝人士瞭解多種其它實施例亦 5 屬可能。此外,雖然後文實施例簡短說明以求清晰,但熟 諳技藝人士瞭解若有所需如何對前文說明做改變來配合調 適此等及其它實施例及應用。 雖然已經就分開迴圈遮罩暫存器及迴圈堆疊說明若干 實施例’但任何實施例皆可能只關聯單一迴圈堆疊(例如目 10 前遮罩資訊可能只關聯迴圈堆疊的頂分錄)。 此外,雖然已經說明不同實施例,但須注意可實作實 施例之任一種組合(例如REPEAT陳述或BREAK陳述以及 ELSE陳述可能包括位址)。此外,雖然實施例中係使用「〇」 來指示未能動作的通道,但根據其它實施例,可使用「1」 15 來替代指示目前無法動作的通道。 此外,雖然此處已經舉例說明特定指示,但也可使用 其它型別的指令來實作實施例。例如,第20圖顯示根據若 干實施例,執行CONTINUE指令之SIMD執行引擎2000。特 別CONTINUE指令係於將被執行〈integer〉次數的REPEAT 20 迴圈内部。但若於某次特定通過該迴圈期間〈condition〉為 真,則該次通過將被中止,而將開始下一次通過。例如若 REPEAT迴圈欲執行10次,當迴圈執行第五次時<conciiti〇n> 為真,則於CONTINUE之後的指令將不被執行,迴圈將開 始執行第六次通過迴圈。另一方面,注意 19 1295031 BREAK<condition>指令則將完全結束迴圈的執行。 例如考慮下列指令: DO{
Instructions 5 CONTINUE<condition 1>
Instructions CONTINUE<condition 2>
Instructions }While<condition 3> 10 本例中,維持兩個獨特遮罩:⑴如此處所述之「迴圈 遮罩」以及(ii)「連續遮罩」。連續遮罩例如可類似迴圈遮 罩,但係記錄哪些執行通道不符合一次迴圈内部之與 CONTINUE指令相關聯的條件。若一通道為「〇」(換言之 不符合CONTINUE條件),則其餘通過迴圈部分可防止於該 15 通道執行。 一種執行此種CONTINUE指令之方法顯示於第2ι圖。 根據本實施例,恰在進入迴圈之前,於謂,執行遮罩被 载入迴圈遮罩(例如指示哪些通道可動作)。 於2104,於執行迴圈的第_個指令之前,連續遮罩係 20以迴圈遮罩值來初始化。於21〇2,判定當迴圈指令被執行 ¥哪些通道變成可動作。例如’當於迴圈遮罩及連續遮罩 二者的相關位元皆等於1時,執行才變成可動作。 匕於測遭遇C0N™UE指令。此時,評估與C0NTINUE 指令相關的條件,c〇NTINUE遮罩視何者適當而更新。如 20 1295031 此,於本次通過迴圈期間對遭遇c〇NTINUE指令的❿ 將不再執行指令。 k 當於测,遭遇迴_WHILE齡時,評例目 若WHILE齡⑽㈣任料料从(與料遮罩的s 道位元無關)’則連續遮罩再度於迴圈遮罩初始化,處理 序連續進入2104。若對每個通道WHILE指令的條件 10 足,則於2112,迴圈完成,迴圈遮罩由迴圈堆疊恢復。若 迴圈經巢套,則連續遮罩可被儲存為連續堆疊。當内部迴 圈執行完成時,可恢復迴圈遮罩及連續遮罩二者。根據= 干實施例,對迴圈遮罩及連續遮罩維持分開堆疊。根據= 它實施例,迴圈遮罩及連續遮罩可儲存於單一堆疊。 此處所述若干實施例僅供舉例說明之用。熟諳技藝人 士由此處說明將瞭解可實作其它實施例,而修改及變化僅 受申請專利範圍所限。 15 【圖式簡單說明】 第1及2圖顯示處理系統。 第3圖顯示根據若干實施例之SIMD執行引擎。 弟4-5圖减示根據若干實施例,執行D〇指令之wmd執 行引擎。 第6-8圖顯示根據若干實施例,執行rEPEAT指令之 SIMD執行引擎。
第9圖顯示根據若干實施例,執行BREAK指令之SIMD 執行引擎。 弟10圖為根據若干實施例,一種方法之流程圖。 21 1295031 第^14圖顯示根據若干實施例,執行巢套的迴圈指令 之SIMD執行引擎。 第U圖顯示根據若干實施例’執行迴圈指令與條件指 令二者之SIMD執行引擎。 5 第16圖為根據若干實施例,一種方法之流程圖。 第^18圖為根據一個實施例,SIMD執行引擎之一實 例。 第19圖為根據若干實施例,一種系統之方塊圖。 第20圖顯示根據若干實施例,執行CONTINUE指令之 10 SIMD執行引擎。 第21圖為根據若干實施例,一種處理CONTINUE指令 之方法之流程圖。 【主要元件符號說明】 100···處理系統 110···單指令多資料(SIMD)執行引擎 200.··處理系統 210...SIMD執行引擎 300···四通道SIMD執行引擎 310···四位元迴圈遮罩暫存器 320···四位元寬迴圈堆疊 400···四通道SIMD執行引擎 410.. .迴圈遮罩暫存器 420.. .迴圈堆疊 600...SIMD執行引擎 22 1295031 610···四位元迴圈遮罩暫存器 620···四位元寬m分錄深迴圈堆疊 630…計數器 1002-1010…動作 1100.. .51.D執行引擎 1110…迴圈遮罩暫存器 1120···多分錄深迴圈堆疊 1500···四通道SIMD執行引擎 1510…迴圈遮罩暫存器 1520.. .迴圈堆疊 1530.. .條件遮罩暫存器 1540···四位元寬m分錄深條件堆疊 1700.. .51.D執行引擎 、 1710.. .十六位元迴圈遮罩暫存器 1720·.·十六位元寬m分錄深迴圈堆疊 1900…系統 1910.. .繪圖引擎 1920·.·η運算元SIMD執行引擎 1930···指令記憶體單元 1940…圖形記憶體單元 2000.. .51.D執行引擎 2102-2112…動作 23

Claims (1)

  1. r _.泰員明亲”·萆y .月 曰 1295034提系、修毛本有%,出原説明書 v 或麗式所揭露之慕圆
    10 15
    20 十、申請專利範圍: 第94136299號申請案申請專利範圍修正本 96.07.24. 1. 一種用於處理迴圈指令之方法,其包含有下列步驟: 於一個η通道單指令多資料執行引擎上接收一第一 迴圈指令;以及 將資訊由一個η位元迴圈遮罩暫存器拷貝至一個η 位元寬m個分錄深之迴圈堆疊,其中η及m為整數。 2. 如申請專利範圍第1項之方法,進一步包含·· 儲存第一迴圈資訊於該迴圈遮罩暫存器中。 3. 如申請專利範圍第2項之方法,其中該第一迴圈指令為 與一個WHILE條件相關聯的一個DO指令,以及儲存於 該迴圈遮罩暫存器中的該第一迴圈資訊至少部分係基 於對與一通道相關聯的至少一個運算元所作之該 WHILE條件的一個評估結果。 4. 如申請專利範圍第3項之方法,進一步包含: 根據該迴圈遮罩暫存器,對至少一個通道執行與該 WHILE條件相關聯的一組指令集;以及 根據該WHILE條件的一個評估結果來更新該迴圈 遮罩暫存器。 5. 如申請專利範圍第4項之方法,進一步包含: 判定對由該迴圈遮罩暫存器致動運作的至少一個 通道是否仍然滿足該WHILE條件;以及 跳至與該WHILE條件指令相關聯的該組指令集之 起點。 24 4 4
    1295031 6·如申請專利範圍第4項之方法,進一步包含: 判定對由該迴圈遮罩暫存器致動運作的任何通道 是否不再滿足該WHILE條件;以及 將資訊從該迴圈堆疊移至該迴圈遮罩暫存器。 5 7·如申請專利範圍第2項之方法,其中有一第二迴圈指令 為一個REPEAT指令。
    10 15
    8·如申請專利範圍第7項之方法,其中對至少一個通道維 持著一個REPEAT計數器,且該方法進一步包含: 根據該迴圈遮罩暫存器,對至少一個通道執行與該 REPEAT指令相關聯的一組指令集; 遞減至少一個REPEAT計數器;以及 基於該至少一個REPEAT計數器,判定該迴圈遮罩 暫存器是否須被更新。 9·如申請專利範圍第8項之方法,進一步包含: 對由該迴圈遮罩暫存器致動運作的裏少一個通 道,判定該REPEAT計數器非為零;以及 跳至與該REP EAT指令相關聯的該組指令集之起 10·如申請專利範圍第8項之方法,進一步包含: ,,岁丨J定 2〇 對由該迴圈遮罩暫存器致動運作的全部通道’ 該REPEAT計數器為零;以及 將資訊由該迴圈堆疊移至該迴圈遮罩暫存器。 11·如申請專利範圍第2項之方法,進一步包含: 於該執行引擎接收一第二迴圈指令; 25 1295031
    又 5
    10 將該第一迴圈資訊由該迴圈遮罩暫存器移至該迴 圈堆疊;以及 儲存第二迴圈資訊於該迴圈遮罩暫存器中。 12. 如申請專利範圍第1項之方法,進一步包含: 接收與該第一迴圈指令及一通道相關聯的一個 BREAK指令;以及 更新與該通道相關聯的該迴圈遮罩暫存器之位元。 13. 如申請專利範圍第12項之方法,進一步包含於接收該 BREAK指令前: 於該執行引擎接收一第一條件指令; 基於相關聯資料的多重運算元,評估該第一條件指 令; 儲存該評估之結果於一個η位元條件遮罩暫存器 中; 15
    20 於該執行引擎接收一第二條件指令;以及 將該結果從該條件遮罩暫存器拷貝至一個η位元寬 m個分錄深的條件堆疊。 14. 如申請專利範圍第13項之方法,進一步包含於接收該 BREAK指令後: 將該條件堆疊中的至少一個分錄移至該條件遮罩 暫存器。 15. 如申請專利範圍第2項之方法,進一步包含: 接收與該第一迴圈指令及一通道相關聯的一個 CONTINUE指令;以及 26 1295031
    5
    10 15
    20 更新與該通道相關聯的該迴圈遮罩暫存器之位元。 16. 如申請專利範圍第1項之方法,其中該等指令係根據該 迴圈遮罩暫存器中之資訊而執行,以及進一步根據一條 件遮罩暫存器内的資訊而執行。 17. 如申請專利範圍第1項之方法,進一步包含於接收該第 一迴圈指令前: 基於欲獲致動運作來供執行的通道來初始化該迴 圈遮罩暫存器。 18. 如申請專利範圍第1項之方法,其中該迴圈堆疊為一個 分錄深。 19. 一種用以處理資訊之裝置,包含: 一個η位元迴圈遮罩向量暫存器,其中該迴圈遮罩 向量暫存器係對多重通道儲存與一第一迴圈指令相關 聯的第一迴圈資訊;以及 一個η位元寬m個分錄深的迴圈堆疊暫存器,用來儲 存於該第一迴圈指令之前於該迴圈遮罩向量暫存器中 存在的資訊。 20. 如申請專利範圍第19項之裝置,進一步包含: 一個η位元條件遮罩向量暫存器,其中該條件遮罩 向量暫存器欲儲存下列評估之結果:⑴一個IF指令條 件、以及(ii)與多重通道相關聯的資料;以及 一個η位元寬m個分錄深的條件堆疊暫存器,用來儲 存於該等結果前於該條件遮罩向量暫存器中存在的資 訊。 27 1295031 5
    替換 21.如申請專利範圍第19項之裝置,其中當與一第二迴圈指 令相關聯的全部適當指令已經被執行時,該第一迴圈資 訊將從該迴圈堆疊暫存器移轉至該迴圈遮罩向量暫存 器。
    10 22. 如申請專利範圍第19項之裝置,其中該第一迴圈指令為 一個DO指令或一個REPEAT指令。 23. —種儲存有指令之儲存媒體,該等指令在由一機器執行 時可導致進行下列動作: 於一個η通道單指令多資料執行引擎上接收一第一 DO指令; 儲存第一迴圈資訊於一個η位元迴圈遮罩暫存器 中; 15
    20 於該執行引擎上接收一第二DO指令; 移動該第一迴圈資訊至一個η位元寬m個分錄深之 迴圈堆疊;以及 儲存第二迴圈資訊於該迴圈遮罩暫存器中。 24. 如申請專利範圍第23項之儲存媒體,其中該等指令的執 行進一步導致下列動作: 當與該第二DO指令相關聯的全部適當指令皆已經 被執行時,將該第一迴圈資訊從該迴圈堆疊移至該迴圈 遮罩暫存器。 25. 如申請專利範圍第24項之儲存媒體,其中該等指令的執 行進一步導致下列動作: 接收與該第二DO指令及一通道相關聯的一個 28
    1295031 BREAK指令;以及 更新與該通道相關聯的該迴圈遮罩暫存器之位元。 26. —種用以處理資訊之系統,包含: 一處理器,包括·· 5
    一個位元迴圈遮罩向量暫存器,其中該迴圈遮罩向 量暫存器欲對多重通道儲存與一第一迴圈指令相關聯 的第一迴圈資訊;以及 一個m個分錄深的迴圈堆疊暫存器,用以於一第二 迴圈指令由該處理器執行時儲存該第一迴圈資訊,其中 10 m為大於1之整數;以及 一個圖形記憶體單元。 27. 如申請專利範圍第26項之系統,其中當與該第二迴圈指 令相關聯的全部適當指令皆已經被執行時,該第一迴圈 資訊將從該迴圈堆疊暫存器而移轉至遮罩向量暫存器。 15
    28. 如申請專利範圍第26項之系統,進一步包含: 一個指令記憶體單元。 29 1295031 七、指定代表圖·· (一) 本案指定代表圖為:第(1 )圖。 (二) 本代表圖之元件符號簡單說明: 100…處理系統 110...單指令多資料(SIMD)執行引擎
    八、本案若有化學式時,請揭示最能顯示發明特徵的化學式:
TW094136299A 2004-10-20 2005-10-18 Method of processing loop instructions, apparatus and system for processing information, and storage medium having stored thereon instructions TWI295031B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/969,731 US20060101256A1 (en) 2004-10-20 2004-10-20 Looping instructions for a single instruction, multiple data execution engine

Publications (2)

Publication Number Publication Date
TW200627269A TW200627269A (en) 2006-08-01
TWI295031B true TWI295031B (en) 2008-03-21

Family

ID=35755316

Family Applications (1)

Application Number Title Priority Date Filing Date
TW094136299A TWI295031B (en) 2004-10-20 2005-10-18 Method of processing loop instructions, apparatus and system for processing information, and storage medium having stored thereon instructions

Country Status (5)

Country Link
US (1) US20060101256A1 (zh)
CN (1) CN101048731B (zh)
GB (1) GB2433146B (zh)
TW (1) TWI295031B (zh)
WO (1) WO2006044978A2 (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7353369B1 (en) * 2005-07-13 2008-04-01 Nvidia Corporation System and method for managing divergent threads in a SIMD architecture
US7543136B1 (en) 2005-07-13 2009-06-02 Nvidia Corporation System and method for managing divergent threads using synchronization tokens and program instructions that include set-synchronization bits
US9069547B2 (en) 2006-09-22 2015-06-30 Intel Corporation Instruction and logic for processing text strings
US7617384B1 (en) * 2006-11-06 2009-11-10 Nvidia Corporation Structured programming control flow using a disable mask in a SIMD architecture
US8312254B2 (en) * 2008-03-24 2012-11-13 Nvidia Corporation Indirect function call instructions in a synchronous parallel thread processor
GB2470782B (en) * 2009-06-05 2014-10-22 Advanced Risc Mach Ltd A data processing apparatus and method for handling vector instructions
US8627042B2 (en) 2009-12-30 2014-01-07 International Business Machines Corporation Data parallel function call for determining if called routine is data parallel
US8683185B2 (en) 2010-07-26 2014-03-25 International Business Machines Corporation Ceasing parallel processing of first set of loops upon selectable number of monitored terminations and processing second set
CN103946795B (zh) 2011-12-14 2018-05-15 英特尔公司 用于生成循环对齐计数或循环对齐掩码的系统、装置和方法
US20140189296A1 (en) * 2011-12-14 2014-07-03 Elmoustapha Ould-Ahmed-Vall System, apparatus and method for loop remainder mask instruction
US9946540B2 (en) 2011-12-23 2018-04-17 Intel Corporation Apparatus and method of improved permute instructions with multiple granularities
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
CN104137054A (zh) * 2011-12-23 2014-11-05 英特尔公司 用于执行从索引值列表向掩码值的转换的系统、装置和方法
WO2013095603A1 (en) 2011-12-23 2013-06-27 Intel Corporation Apparatus and method for down conversion of data types
CN107193537B (zh) 2011-12-23 2020-12-11 英特尔公司 经改进的插入指令的装置和方法
CN104094182B (zh) * 2011-12-23 2017-06-27 英特尔公司 掩码置换指令的装置和方法
US20140059322A1 (en) * 2011-12-23 2014-02-27 Elmoustapha Ould-Ahmed-Vall Apparatus and method for broadcasting from a general purpose register to a vector register
US9501276B2 (en) * 2012-12-31 2016-11-22 Intel Corporation Instructions and logic to vectorize conditional loops
US9952876B2 (en) 2014-08-26 2018-04-24 International Business Machines Corporation Optimize control-flow convergence on SIMD engine using divergence depth
US9928076B2 (en) * 2014-09-26 2018-03-27 Intel Corporation Method and apparatus for unstructured control flow for SIMD execution engine
US9983884B2 (en) 2014-09-26 2018-05-29 Intel Corporation Method and apparatus for SIMD structured branching
CN109032665B (zh) * 2017-06-09 2021-01-26 龙芯中科技术股份有限公司 微处理器中指令输出处理方法及装置
WO2019162738A1 (en) * 2018-02-23 2019-08-29 Untether Ai Corporation Computational memory

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6079008A (en) * 1998-04-03 2000-06-20 Patton Electronics Co. Multiple thread multiple data predictive coded parallel processing system and method
ATE366958T1 (de) * 2000-01-14 2007-08-15 Texas Instruments France Mikroprozessor mit ermässigtem stromverbrauch
US6732253B1 (en) * 2000-11-13 2004-05-04 Chipwrights Design, Inc. Loop handling for single instruction multiple datapath processor architectures
US20040073773A1 (en) * 2002-02-06 2004-04-15 Victor Demjanenko Vector processor architecture and methods performed therein
US6986028B2 (en) * 2002-04-22 2006-01-10 Texas Instruments Incorporated Repeat block with zero cycle overhead nesting
JP3974063B2 (ja) * 2003-03-24 2007-09-12 松下電器産業株式会社 プロセッサおよびコンパイラ

Also Published As

Publication number Publication date
WO2006044978A2 (en) 2006-04-27
TW200627269A (en) 2006-08-01
US20060101256A1 (en) 2006-05-11
GB2433146B (en) 2008-12-10
CN101048731B (zh) 2011-11-16
CN101048731A (zh) 2007-10-03
GB2433146A (en) 2007-06-13
WO2006044978A3 (en) 2006-12-07
GB0705909D0 (en) 2007-05-09

Similar Documents

Publication Publication Date Title
TWI295031B (en) Method of processing loop instructions, apparatus and system for processing information, and storage medium having stored thereon instructions
JP6187988B2 (ja) ベクトルコンフリクト命令
TWI644208B (zh) 藉由對硬體資源之限制實現的向後相容性
TWI494851B (zh) 用於推測式述詞指令之功能單元、處理器及方法
US11113054B2 (en) Efficient hardware instructions for single instruction multiple data processors: fast fixed-length value compression
KR101581177B1 (ko) 단일 명령 다중 데이터(simd)데이터 처리기에서 확장된 어드레싱 모드들의 제공
KR101607161B1 (ko) 데이터 요소들의 스트라이드 패턴 수집 및 데이터 요소들의 스트라이드 패턴 분산을 위한 시스템, 장치 및 방법
EP3106979B1 (en) Efficient hardware instructions for single instruction multiple data processors
US20130036293A1 (en) Processing vectors using wrapping minima and maxima instructions in the macroscalar architecture
US8527742B2 (en) Processing vectors using wrapping add and subtract instructions in the macroscalar architecture
JP2012529096A (ja) ベクトル命令を取り扱うためのデータ処理装置および方法
JP6908601B2 (ja) ベクトルロード命令
US8539205B2 (en) Processing vectors using wrapping multiply and divide instructions in the macroscalar architecture
US20120260061A1 (en) Data processing apparatus and method for performing vector operations
CN101495959A (zh) 组合微处理器内的多个寄存器单元的方法和系统
CN109416633B (zh) 用于执行重新排列操作的设备及方法
WO2021249054A1 (zh) 一种数据处理方法及装置、存储介质
JP2001134436A (ja) 効率的な粒度のシフトとマージの一方または両方の命令をそなえたプロセッサの回路、システム及び方法
TW201250585A (en) Systems, apparatuses, and methods for jumps using a mask register
JP4917045B2 (ja) Data部および関連するカウンタを備えるエントリを有するハードウェア・スタック
US10567163B2 (en) Processor with secure hash algorithm and digital signal processing method with secure hash algorithm
US9335980B2 (en) Processing vectors using wrapping propagate instructions in the macroscalar architecture
US6928605B2 (en) Add-compare-select accelerator using pre-compare-select-add operation
US20130024669A1 (en) Processing vectors using wrapping shift instructions in the macroscalar architecture
US20130024671A1 (en) Processing vectors using wrapping negation instructions in the macroscalar architecture

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees