TWI300187B - Method, apparatus and system to enable register information to be flexibly accessed for an execution engine - Google Patents

Method, apparatus and system to enable register information to be flexibly accessed for an execution engine Download PDF

Info

Publication number
TWI300187B
TWI300187B TW094146729A TW94146729A TWI300187B TW I300187 B TWI300187 B TW I300187B TW 094146729 A TW094146729 A TW 094146729A TW 94146729 A TW94146729 A TW 94146729A TW I300187 B TWI300187 B TW I300187B
Authority
TW
Taiwan
Prior art keywords
register
scratchpad
data
instruction
heap
Prior art date
Application number
TW094146729A
Other languages
English (en)
Other versions
TW200634622A (en
Inventor
Hong Jiang
Val Cook
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 TW200634622A publication Critical patent/TW200634622A/zh
Application granted granted Critical
Publication of TWI300187B publication Critical patent/TWI300187B/zh

Links

Classifications

    • 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/78Architectures of general purpose stored program computers comprising a single central processing unit
    • 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
    • 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/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/30098Register arrangements
    • 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/30105Register structure
    • 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/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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/3012Organisation of register space, e.g. banked or distributed register file
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

1300187 九、發明說明: 【發明戶斤屬之技術々貝域】 本發明係屬一種用於處理系統之暫存器堆區域。 5 15 發明背景 為了改良處理系統的效能,於單一指令週期中,對多 «料運算s同時執行單-指令/多重㈣(simd)指令。舉 例言之,八通道SIMD的執行引擎必須同時對八個%位元的 資料運算錢行指令,各筒算元細射至削娜執行引 擎_特運算通道。此外,—個暫存器堆中的—個或多個 ^存為可^SIMD指令制’且各個暫存轉有與執行通道 相關聯的固定位置(例如多個八字元暫存 八通道S励執行料,暫存財的各财元被〜二 的執行通道)。可以不同方式有效彈性地存取暫二”: 可更進—纽良s祕執行”的效能。料益貝也 日月内】 運算= 其包含有下列步驟* 的區域係用於儲存多重資料==料其:該所描述 行引擎的一個執杆補、# 4 、;凡素係與一執 ,配置資訊來儲存入’二聯’以及根據該所描述的區威 。 财子入㈣存器堆,或從該暫存器堆中取還 圖式簡單說明 第1圖和第2圖為處理系統之方塊圖。 20 1300187 第3圖顯示用於處理系統之指令和暫存器堆。 第4圖為根據若干實施例,一種方法之流程圖。 第5圖顯示根據若干實施例,用於處理系統之指令和暫 存器堆。 5 第6圖顯示根據若干實施例,於暫存器堆中的執行通道 映射。 第7圖顯示根據若干實施例,包括水平跨幅的區域描述。 第8圖顯示根據若干實施例,包括水平跨幅為零的區域 描述。 10 第9圖顯示根據若干實施例,用於字元型資料元素之區 域描述。 第10圖顯示根據若干實施例,包括垂直跨幅的區域描 述。 第11顯示根據若干實施例,包括垂直跨幅為零的區域 15 描述。 第12圖顯示根據若干實施例之一種區域描述。 第13圖顯示根據若干實施例之一種區域描述,其中水 平跨幅和垂直跨幅皆為零。 第14圖顯示根據若干實施例之一種區域描述。 20 第15圖為根據若干實施例,一種系統之方塊圖。 I:實施方式3 較佳實施例之詳細說明 此處所述若干實施例係與「處理系統」相關聯。如此 處使用,「處理系統」一詞表示可處理資料的任何元件。處 1300187 理系統例如可與處理圖形資料及/或其它型別之媒體資訊 的圖形引擎相關聯。於某些情況下,處理系統的效能可使 用SIMD執行引擎來改良。舉例言之,SIMD執行引擎必須 對多重資料通道同時執行單一浮點SIMD指令(例如加速轉 5換及7或成像三維幾何形狀)。其它處理系統之實例包括中央 處理單元(CPU)和數位信號處理器(DSp)。 第1圖顯示包括SIMD執行引擎110的一種型別的處理 系統100。本例中,執行引擎11〇接收指令(例如來自於指令 吕己憶體單元)連同4分量資料向量(例如向量分量X、γ、z和 10 W,各自具有於SIMD執行引擎11〇相對應的通道〇至3上的 處理位元)。執行引擎110可對該向量的全部分量同時執行 指令。此種辦法稱作為「水平」、「通道並列」、或「結構陣 列(AOS)」實作。 第2圖顯示包括SIMD執行引擎210的另—型別的户理 15 系統200。此種情況下,執行引擎21〇可接收指令連同斗产料 運异元’此處各個運异元係與不同的向量(例如得自白曰' 至V3的四個X分量)相關聯。各個向量例如包括遍: ^ >、二維圖形 位置相關聯的三個位置值(例如X、γ和Z)。執行弓丨擎 , 可於單一指令週期内對全部運算元執行指令。 〇則 此種辦法稱 作為「垂直」、「通道串列」、或「陣列結構(s A)」實作。 雖然此處所述若干實施例係與一個四通道知 、
4 A通道SIMD 執行引擎相關,但須注意SIMD執行引擎可右夕 夕於1的任何 數目的通道(例如實施例可能與32通道執行彳丨擎相 第3圖顯示具有八通道SIMD執行引擎3〗Ω ]秘) 的〜種處理 20 1300187 系統300。執行引擎31〇包括八位元組暫存器堆32〇,諸如可 使用組合語言及/或機器碼指令來存取的晶片上通用暫存 器堆(GRF)。特別,第3圖之暫存器堆320包括五個暫存器(R〇 至R4) ’執行引擎31〇執行下述硬體指令: 5 add(8) R1 R3 R4 「(8)」指示該指令可對全部八個執行通道的運算元執 行。「R1」為目的運算元(DEST),「R3」和「R4」為來源運 异元(分別為SRC0和SRC1)。如此,於R4的八個單一位元組 資料元素各自係加至R3中的相應資料元素。然後八種結果 10儲存於。特別,R4的第一位元組加至R3的第一位元組, 結果儲存於R1的第一位元組。同理,R4的第二位元組加至 R3的弟一位元組,結果儲存於R1的第二位元組等。 於若干應用用途中,以多種方式來存取資訊於暫存器 堆有幫助。舉例言之,於圖形應用中,偶爾可能較佳將部 15分暫存裔堆作為向量、純量、及/或數值陣列來處理。此種 辦法可有助於減少指令及/或資料的移動、堆疊、解除堆疊 、及/或混洗量,且改良系統的效能。 第4圖為根據若干實施例,一種方法之流程圖。此處說 明之流程圖並非必然暗示固定的動作順序,實施例可以實 2〇際可行的任一種順序執行。注意此處所述任一種方法皆可 藉硬體、軟體(包括微碼)、勤體或此等辦法 一 、1士 一種組合來 執行。舉例言之,硬體指令映射引擎必須用來輔助根據此 處所述之任一個實施例操作。 於402,於暫存器堆中的一區用來描述運算元。該運算 1300187 r tr為欲藉執行引擎執行的機器碼的目的運 4或來源運算元。根據若干實施例,所描述的區域為「 =」,在於於不同時間可界定暫存轉W區;區域
的描述例如可編碼於機闕指令。注意—次 堆的多於一區。 I醫W
於撕,安排根據所述區來儲存資訊於暫存器堆(或從 其中取還資訊)。舉例言之,來自第一區的資料可與第二區 的貧料比對,結果可以每一通道為基準儲存於第三區。 第5圖顯示根據若干實施例,具有八通道SIMD執行引 H)擎510的處理系統·。本例中,已經對有五個八位元暫存 器⑽至R4)之暫存器堆52〇描述三個區:一個目的區(dest) 、匕和=個來源區(SRC0和SRC1)。各區例如可藉機器石馬加法 心令疋義。此外,本例中,全部執行通道皆被使用,資料 兀素假设為資料的位元組(例如八個511(:1位元組各自加至 I5相應的SRC0位元組,結果儲存於暫存器堆52〇的八個啦丁 位元組)。 各區的描述包括暫存器識別符和「次暫存器識別符」 ,其指示於暫存器堆52〇中的第一資料元素的所在位置(如 第5圖顯示為RegNum SubRegNum)的「原點」。次暫存器識 20別符例如指示距暫存器起點的偏移值(例如且可使用實體 數目的位元或位元組或多個資料元素來表示)。舉例言之, 第5圖的DEST區具有r〇.2原點,指示DESt區的第一資料元 素係位於第一暫存器(R0)的位元組2。同理,SRC0區始於 R2的位元組3 (R2.3),及SRC1區始於R4的第一位元組(R4.〇) 9 1300187 。注意所述區可能並未與暫存器堆520對齊(例如一區無需 始於單一暫存器的位元組0而終於位元組7)。 /主心原點可以其它方式定義。舉例言之,暫存器堆520 可考慮為連績的40位元組記憶體區。此外,單-6位元位址 5原點可指示於暫存器堆520内部的-個位元組。注意單一6 位το位址原點可指示多達64位元組記憶體區的暫存器堆内 部的任何位元组。至於另一個實例,暫存器堆520可視為連 «20位元記憶體區。此種情況下,單—_元位址原點可 指示於暫存器堆520内部的一個位元。 10 _各區的描述進一步包括該區的「寬度」。寬度例如係指 不於暫存$肋部與所描述該區相關聯的資料元素數目。 ^例言之,第5圖所示DEST區具有4資料元素(例如$位元組 度。因使用8執行通道(因此須儲存八船位元組結果), 1 /區的「咼度」為2資料元素(例如該區將跨兩個不同的暫 存的)。換s之,於寬4元素、高2元素的DEST區中,資料 元素的總數為8。DEST區必須視為包括暫存器列和暫存器 行的二維資料元素陣列。 同理,SRC0區被描述為4位元組寬(因此有二列或暫存 态向)’ SRC1區被描述為8位元組寬(因此具有丨資料元素的 2〇垂直高度)。注意單一區可跨暫存器堆520的不同暫存器(例 如第5圖所示DEST區部分係在R〇部分,而其餘係在則部分) 〇 雖然此處所述若干貝施例描述區寬度,但根據其它實 靶例,另外係描述區的垂直高度(該種情況下,區寬度可基 Ϊ300187 於資料元素的總數來推定)。此外,注意疊置暫存器區可定 義於暫存器堆520 (例如SRCO定義的該區可能部分或完全 ®置SRc 1定義的該區)。此外’雖然此處討論的若干實例有 〜 兩個來源運算元和一個目的運算元,但也可使用其它型別 \ 5 的指令。舉例言之,一種指令可具有一個來源運算元和一 • 個目的運算元、三個來源運算元和兩個目的運算元等。 根據若干實施例,所描述的區域原點和寬度可能導致 • —區「回歸」至暫存器堆520的下一個暫存器。例如,具有 原點R2.6和寬度8的位元組尺寸資料元素區包括!^2最末位 • 1Q 一 兀組連同R3前六個位元組。同理,一區可從暫存器堆52〇 • 底部回歸至頂部(例如從R4回歸至R0)。 SIMD執行引擎510可將所述SRC1區的各個位元組加 至所述SRC0區的相應位元組,且儲存結果於暫存器堆52〇 的所述DEST區。例如,第6圖顯示根據若干實施例,於暫 15存斋堆520的執行通道映射圖。此種情況下,資料元素係以 g 列為主要順序排列於所述區。例如考慮執行引擎51〇的通道 ' 6。此通道6將儲存於R4的位元組6加至儲存於R3的位元組5 之值,且將結果儲存於位元組4。根據其它實施例,資 料元素可以行為主的順序來排列於所述區,或使用任何其 20 它映射技術排列。 ' 第7圖顯示根據若干實關,_種包括「水平跨幅」的 區描述。水平跨幅例如指示於暫存器堆72〇内部各行資料元 素間的行偏移值。特別,第7圖描述該區係用於八個單_位 元組資料元素(例如# 16通道SIMD執行料只有八通道由 11 1300187 機益碼指令使用時’適合使用該區)。該區寬4位元組,因 此高2資料元素(故該區包括8資料元素,且位於⑴(㈣ 位元組1)。 5 10 _情況下’已經描述水平跨幅為2。結果,一列十的 ^個貝料元素偏離該列中的相鄰f料元素達2位元組。舉例 =之與執行引擎通道5相關聯的資料元素係位在Μ的位元 組3 ’與通道6相_的資料元素係位在R2的位元組5。藉此 :式’,述區於暫存器堆72〇為非連續。注意當描述水“ 巾田為1時,結果可能為連續4x2位元組陣列,始於暫存器堆 720的二維映射圖的R1.1。 第7圖所述該區可能與來源運算元相關聯,該種情況下 ’當執行指令時可收集來自非連續區的資料。第7圖所述該 區也可與目的運算元相關聯,該種情況下,當執行指令時 ,結果可能散在於非連續區。 15 第8圖顯示根據若干實施例,一種包括水平跨幅為「零 」的區域描述。如同第7圖,該區係用於八個單_位元組資 料元素且為4位元組寬(因此為2資料元素高)。但因水平跨幅 為零’故於第-列的四個元素各自係映射至暫存器堆82〇的 相同實體位置(例如其與相鄰資料元素偏移為零)。結果,於 20 R1.1之值對前四個執行通道重複。當該區係與「加法」指 令的來源運算元相關聯時,例如該相同值可由全部前四個 執行通道使用。同理,於R2.i之值可對末四個執行通道重 複0 根據若干實施例,水平跨幅值可編碼於指令。舉例言 12 1300187 之,3位元攔位可用來描述以下八個可能的水平跨幅值:〇 、1、2、4、8、16、32和64。此外,根據若干實施例,可 描述負水平跨幅。
注意一區可對不等大小的資料元素作描述。例如,第9 5圖顯示根據若干實施例,字型資料元素的區域描述。此種 情況下,暫存器堆920有八個16位元組暫存器(r〇至pj,各 有128位元)’該區始於R2.3。執行大小為8通道,區域寬度 為4資料元素。此外,各個資料元素被描述為一個字(兩個 位元組),因此與一個執行通道(CHO)相關的資料元素佔據 10 R2的位兀組3和4。注意本區的水平跨幅為丨。除了位元組和 字元型別的資料元素外,實施例係與其它型別的資料元素( 例如位元或浮動型元素)有關。 第10圖顯不根據若干實施例,包括「垂直跨幅」的區 域描述。垂直跨财指示於暫存n堆刪巾各列資料元素 15間的列偏移值。如同第9圖,暫存器堆1020有八個16位元暫 存“R0至R7) ’该區始於以2 3。執行大小為8通道,區域寬 度為四们I字70育料元素(暗示該區的列高度為2)。但於 此種情況下描述2的垂直跨幅 。結果,一行中的各個資料元 如同水平跨幅,描倾於暫存轉麵為非連續。注意當 描述垂直5 Ll時’結果為連續4χ2字元㈣,始於暫存器 堆1020的二維映射时的R2.3。 素偏離該行中的鄰近資料元素達兩個暫存器。舉例言之, 20與執行引擎的通道3相關的資料元素係位在R2的位元組9和 10 ’/、通道7相關聯的資料元素係位在Μ的位元組9和1〇。 13 1300187 第ίο圖描述的區域可能與來源運算元有關,該種情況 下,當執行指令時,脊把 貝枓可收集自非連續區。第10圖描述 的區域也可與目的運曾i + 有關,該種情況下,當執行指令 、 時結果散在非連續區。_祕4 ^ 根據右干貫施例,垂直跨幅可描述 5 為多行資料元素間的窨料-士 - 貝枓凡素行偏移值(例如就第14圖所 述)。也須注意垂直跨φ5^Αμ , 5〜了能小於、大於、或等於垂直跨幅 〇 • 第11圖顯示根攄甚I^ 像右干實施例,包括垂直跨幅為「零」 的區雜述。如同第9圖和第糊,該區域為人個單一字元 10資料元素,寬四個字元(因此高兩個資料it素)。但因垂直跨 h為零’ 彳了映射时的兩個資料元素係映射至暫 存為堆1130的相同位置(例如彼此偏移為零)。結果,於 的位元、,且3 4的子元係對該二執行通道(例如通道〇和通道*) 重複。當該區係與「比較」指令的來源運算元相關聯時, 15例如相同值可由兩個執行通道使用。同理,於R2位元組5-6 • 的字元可對讓D執行引擎等的通道i和通道5重複。此外, - #直跨幅值可編碼於指令,根據若干實_,描述負垂直 跨幅。 20 …根據右干^例’垂直跨幅可定義為暫存轉中的資 二素數目(而非定義為暫存器列數卜舉例言之,第Η圖顯 示根據若干實施例,具朴f料元素(_個字元)的垂直跨幅 值區域描述。如此’該較義的陣列的第—「列」包含從 咖至R2.H)的四個衫。第二列係偏移單—個字元,跨據 從R2.5至R2.12。此種實作例如可與過_作的滑動視窗相 14 1300187 關聯。 第13圖顯示根據若干實施例,其中水平跨幅和垂直跨 幅皆為零的區域描述。結果,全部八個執行通道皆係映射 至暫存器堆1320的單一位置(例如尺2的位元組3-4) 。因此當 5 "亥區係與機器碼指令相關聯時,於R2的位元組3-4的單一數 值可由全部八個執行通道使用。 注意,不同型別的描述可提供予不同的指令。例如, 第一指令將目的地定義為4x4陣列,而下一個指令則定義一 區為1x16陣列。此外,可對單一指令描述不同型別區。 10 例如考慮第14圖所示暫存器堆1420其具有八個32位元 、、且暫存态(R0至R7 ’各有256位元)。注意於本文說明中,各 個暫存器顯示有兩「列」,樣本值顯示於一區中的各個位置 〇 本實例中,對指令内部的運算元描述區域如後: 15 RegFile RegNum.SubRegNum<VertStride; Width,
HorzStride> : type 其中RegFile識別暫存器堆142〇的名稱間隔 9 RegNum 指出暫存器堆1420中的暫存器(例如r〇至r7),SubRegNum 為於該暫存器起點的位元組偏移值,VertStride為垂直跨幅 20 ,Width為區域寬度,HorzStride為水平跨幅,而type指示各 個資料元素的大小(例如「13」表示位元組大小資料元素,「 w」用於字元大小資料元素根據若干實施例,SubRegNmn 為資料元素數目(而非位元組數目)。同理,VertStride、Width 、及HorzStnde可描述位元組數目(而非資料元素數目)。 15 1300187 1 Λ 圖顯示機器碼加法指令係藉SIMD執行引擎的八 個通道執仃。特別,以R2.17<16;2,l>b(SRCl)描述的八個位 一各自加至各自以壯14<16;4,0>:1)邮(:0)描述的八個位 元、且八個結果儲存於各自以R5.3<18;4,3> : w(DEST)描述 5 的八個字元。 SRC1見2位元組,因此高4資料元素,始於们的位元組 17(於第14圖描述為以2第二列的第二位元組)。水平跨幅為1 下垂直跨幅被描述為將該區一列與鄰近列分 開的貝料7°素行數(而與參照第10圖討論時各列間的列偏 移值相反)。換言之,一列的起點偏離該區下一列的起點達 6位凡、、且特別,第一列始於該區的第二列始於m (始於R2.17,由右至左計數,而當到達尺2的末端時,回歸 至下-個暫存器)。同理,第三列始於们17。 SRC0寬4位%組,因此高2資料元素,且始於以^。 口 K平跨巾田為零,故於位置Ri M之值(如第Μ圖的「2」) 係映射至月;四個執行通道;而於位置之值(基於垂直 跨幅16)係映射至其次四個執行通道。 DEST見四個字凡’故高2資料元素,且始於。如 此執灯通道將數值「!」(SRc〇區的第一區資料元素)加至 數值2」(將由頭四個執行通道使用的认以區的資料元素) 、、口果3」儲存於R5的位元組3和4邮灯區的第一字元大 小資料元素)。 > DEST的水平跨幅是三個資料元素,故下—個資料元素 係始於R5的位兀組9的字元(例如偏離位元組3達三個字元) 16 1300187 15(於第14圖顯示兩列 #資料元素係始於R5 ,其後的資料元素係始於尺5的位元組 間斷開),DEST區的第一列的最末一 的位元組21。 5 10 的垂直跨幅是18資料元素,故dest陣列的第二 「列」的第—個轉元素始滅嫩元組7。儲存於本· ㈣的結果為「6」,表示得㈣⑶區的第五個資料元素的 3」加至得自SRC1區的「3」,應用至執行通道*至7。 因於暫存器堆的資訊可以不同方式有效彈性存取,故 ^改良錢的效能。舉财之,偏糾令可有效關聯複 錢量、複製純量的向量、複製向量、二維陣列、滑動視 _一維陣列相關表單使用。結果可減少資料移動量、 堆疊指令、解除堆疊指令、及/或穿梭指令,如此可改進應 用程式或演繹法則諸如關聯媒體核心的應用程式或演繹法 則的效能。 ^ /主心、於某些情況下,可能造成區描述上的限制。舉例 。之,可旎允許次區原點及/或垂直跨幅用於來源運算元, 〜不允4用於目的運异元。此外,暫存器堆的實體特徵可 :限制區域的描述。舉例言之,相對大型暫存器堆可使用 2〇 $入型隨機存取記憶體(Ram),嵌入型RAM相關的成本和 力可此依據所設有的讀取琿和寫入埠的數目決定。如此 ,取點數和寫入點數(以及暫存器於R A Μ中的排列)可能 限制區域的描述。 第15圖為根據若干實施例,系統1500的方塊圖。系統 〇〇例如可能與適合記錄及/或顯示數位電視信號的媒體 17 1300187 處理器相結合。根據此處說明的任何實施例,系統·包 括具有η運算元SIMD執行引擎152〇的處理器削。例如, smD執仃引擎152G包括暫存器堆和指令映射引擎來將運 算元映射至由指令所定義的暫存器堆的動態區。處理器 5 151G例如可能關聯通用處理n、數位信號處㈣、媒體處 理态、圖形處理器或通訊處理器。 系統1500也包括指令記憶體單元丨53〇來儲存81]^〇指 々,而資料§己憶體單元1540來儲存資料(例如與二維影像、 二維影像及/或動像相關聯的純量和向量)。指令記憶體單元 10 1530和資料圮憶體單元1540例如可組成ram單元。注意指 令圮憶體單元1530及/或資料記憶體單元154〇可能與分開 指令和資料快取記憶體、共享指令和資料快取記憶體、由 共通共享快取記憶體所支援的分開指令和資料快取記憶體 或任何其它的快取階層關係相關聯。根據若干實施例,系 15統1500也包括硬碟機(例如用來儲存與提供媒體資訊)及/或 非依電性記憶體,諸如快閃記憶體(例如用來儲存和提供指 令和資料)。 後文說明多個額外實施例。此等實施例並未組成全部 可能的實施例的定義,熟諳技藝人士瞭解有多種其它實施 20例亦屬可能。此外,雖然後文實施例為求清晰係簡單說明 ’但熟諳技藝人士瞭解若有所需如何對前文說明改變來配 合此等及其它實施例和應用用途。 雖然已經討論描述來源運算元及/或目的運算元的多 種方式’但須注意實施例可使用此等描述之任一種子集或 18 1300187 任一種組合。舉例言之,來源運算元可能允許有垂直跨幅 ,而目的運算元不允許有垂直跨幅。 注意實施例可以多種不同方式實作。例如,當目的暫 存器係對齊於256位元暫存器邊界時,下述碼可運算分配予 5 執行通道的資料元素的位址: // Input: Type: b | ub | w | uw | d | ud | f 丨丨 RegNum: In unit of 256-bit register " SubRegNum: In unit of data element size 丨丨 ExecSize, Width, VertStride, HorzStride: In unit of data elements
10 // Output: Address[0:ExecSize-l] for execution channels int ElementSize = (Type==“b’’||Type==“ub,,)? 1 : (Type==“w,,|Type==“uw,,)? 2 · 4· int Height = ExecSize / Width; ·, int Channel = 0; 15 int RowBase = RegNum«5 + SubRegNum * ElementSize; for (int y=0; ycHeight; y++) { ’ int Offset = RowBase; for (int x=0; x<Width; x++) {
Address [Channel++] = Offset; 2〇 Offset += HorzStride*ElementSize;
RowBase += VertStride * ElementSize;
25 根據若干貫施例,暫存器區係編碼於各個指令的運算 元的指令字元巾。例如可編碼原._暫存器號碼和子暫存 器號碼。於某些情況下’指令字元的數絲料實際描述 說明的不同值。例如,3位元可用來蝙喝區域寬度,「011」 表示8資料元素寬度’而「100」表示16資料元素寬度。藉 此方式,比㈣純編令字的實際料難,可獲賴 大描述範圍。 施例 此外,於此處已經就SIMD執行引擎描述若干實 19 30 1300187 但須注意實施例可能與其它型別的執行引擎,諸如多重指 令/多重資料(MIMD)執行引擎相關。 此處所述若干實施例僅供舉例說明之用。熟諳技藝人 士由此處說明,瞭解可實施其它實施例,而修改及變化僅 5 受隨附之申請專利範圍所限。 【圖式簡單說明】 第1圖和第2圖為處理系統之方塊圖。 第3圖顯示用於處理系統之指令和暫存器堆。 第4圖為根據若干實施例,一種方法之流程圖。 10 第5圖顯示根據若干實施例,用於處理系統之指令和暫 存器堆。 第6圖顯示根據若干實施例,於暫存器堆中的執行通道 映射。 第7圖顯示根據若干實施例,包括水平跨幅的區域描述。 15 第8圖顯示根據若干實施例,包括水平跨幅為零的區域 描述。 第9圖顯示根據若干實施例,用於字元型資料元素之區 域描述。 第10圖顯示根據若干實施例,包括垂直跨幅的區域描 20 述。 第11顯示根據若干實施例,包括垂直跨幅為零的區域 描述。 第12圖顯示根據若干實施例之一種區域描述。 第13圖顯示根據若干實施例之一種區域描述,其中水 20 1300187 平跨幅和垂直跨幅皆為零。 第14圖顯示拫據若干實施例之一種區域描述。 第15圖為根據若干實施例,一種系統之方塊圖。 【主要元件符號說明】 100…處理系統 110···早一指令/多重資料 (SIMD)執行引擎 200…處理系統 210···早一指令/多重資料 (SIMD)執行引擎 300…處理系統 310…單一指令/多重資料 (SIMD)執行引擎 402、404...動作方塊 500…處理系統 510···單一指令/多重資料 (SIMD)執行引擎 520、720、820、920、1020、 1130、1320、1420···暫存器 堆 1500…系統 1510···處理器 1520···η運算元SIMD執行引擎 1530···指令記憶體單元 1540…資料記憶體單元
21

Claims (1)

  1. J300187
    10 15
    20 十、申請專利範圍: L 第94146729號申請案申請專利範圍修正本 96.11.02. 1. 一種讓暫存器資訊可針對執行引擎受彈性存取之方法 ,其包含有下列步驟: 對一運算元,描述一暫存器堆中的一動態區域,其 中該所描述的區域係用於儲存多重資料元素,各個資料 元素係與一執行引擎的一個執行通道相關聯;以及 根據該所描述的區域,配置資訊來儲存入該暫存器 堆,或從該暫存器堆中取還。 2. 如申請專利範圍第1項之方法,其中該描述係含括於一 單一指令多重資料機器碼指令中。 3. 如申請專利範圍第1項之方法,其中該運算元為一來源 運算元或一目的運算元中之一者。 4. 如申請專利範圍第1項之方法,其進一步包含: 描述用於多重運算元的多個區域。 5. 如申請專利範圍第1項之方法,其中該所描述的區域係 跨越該暫存器堆中的多個不同暫存器。 6. 如申請專利範圍第1項之方法,其中該所描述的區域於 該暫存器堆中為非連續。 7. 如申請專利範圍第1項之方法,其中該所描述的區域並 未對齊於該暫存器堆中的暫存器。 8. 如申請專利範圍第1項之方法,其中該描述包括指出該 暫存器堆中的一第一個資料元素之一位置的一個暫存 器識別符和一個次暫存器識別符。 22 /300187 彩 ^ 9. 如申請專利範圍第1項之方法,其中該暫存器堆包括多 個暫存器列和多個暫存器行。 10. 如申請專利範圍第9項之方法,其中資料元素係依下列 順序中之一者排列於該所描述的區域内:⑴以列為主的 順序或(ii)以行為主的順序。
    10 15 20 11. 如申請專利範圍第9項之方法,其中該描述包括指出一 暫存器列中與該所描述區域相關聯的資料元素數目的 一個寬度。 12. 如申請專利範圍第9項之方法,其中該描述包括一種水 平跨幅,該水平跨幅指出該暫存器堆中之二行資料元素 間的一個偏移值。 13. 如申請專利範圍第9項之方法,其中該描述包括一垂直 跨幅,該垂直跨幅指出下列中之至少一者:(i)該暫存器 堆中之二列資料元素間的一個列偏移值;或(ii)該暫存 器堆中二列資料元素間的一個資料元素偏移值。 14. 如申請專利範圍第1項之方法,其中該描述包括指出各 個資料元素的大小的一個資料型別。 15. 如申請專利範圍第1項之方法,其中該描述包括指出與 該所描述區域相關聯的資料元素數目之一個執行大小。 16. 如申請專利範圍第1項之方法,其中該所描述區域係與 下列中之至少一者相關聯:⑴複製純量、(ii)複製純量 的向量、(iii)複製向量、(iv)二維陣列、(v)滑動視窗、 或(vi)—維陣列的相關表單。 17. —種讓暫存器資訊可針對執行引擎受彈性存取之裝置 23 1300187 v.F S:v 域V _..乂扭 ,包含: 一單一指令多重資料執行引擎; 與該執行引擎置於同一個晶粒上之一暫存器堆;以 及
    10 15
    20 一指令映射引擎,用來:⑴對一機器碼指令的一運 算元決定該暫存器堆之一區域,其中該決定區域係用來 儲存用於該執行引擎之多重執行通道的資訊,以及(ii) 根據該決定區域配置該資訊來儲存入該暫存器堆或從 該暫存器堆中取還。 18. 如申請專利範圍第17項之裝置,其中該決定區域跨越該 暫存器堆中的多個不同暫存器。 19. 如申請專利範圍第17項之裝置,其中該決定區域於該暫 存器堆中為非連續。 20. 如申請專利範圍第17項之裝置,其中該暫存器堆包括多 個暫存器列和多個暫存器行,以及該指令映射引擎係基 於包括⑴一寬度及(ii)一水平跨幅的一種描述來決定該 區域。 21. —種讓暫存器資訊可針對執行引擎受彈性存取之系統 ,包含: 一個η通道單一指令多重資料執行引擎,其中η為大 於1之整數; 一暫存器堆;以及 用以映射運算元至由一指令所定義的該暫存器堆 之一動態區域之一指令映射引擎;以及 24
    1300187 一圖形資料記憶體單元。 22. 如申請專利範圍第21項之系統,其中該指令映射引擎將 資料散佈於該暫存器堆的多區。 23. 如申請專利範圍第22項之系統,其中該等區於該暫存器 堆中為非連續。 2尖如申請專利範圍第21項之系統,其中該指令映射引擎收 集來自該暫存器堆之多區的資料。
    25.如申請專利範圍第24項之系統,其中該等區於該暫存器 堆中為非連續。 10
    25
TW094146729A 2004-12-28 2005-12-27 Method, apparatus and system to enable register information to be flexibly accessed for an execution engine TWI300187B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/024,298 US7257695B2 (en) 2004-12-28 2004-12-28 Register file regions for a processing system

Publications (2)

Publication Number Publication Date
TW200634622A TW200634622A (en) 2006-10-01
TWI300187B true TWI300187B (en) 2008-08-21

Family

ID=36498848

Family Applications (1)

Application Number Title Priority Date Filing Date
TW094146729A TWI300187B (en) 2004-12-28 2005-12-27 Method, apparatus and system to enable register information to be flexibly accessed for an execution engine

Country Status (7)

Country Link
US (2) US7257695B2 (zh)
KR (1) KR100935308B1 (zh)
CN (1) CN100492280C (zh)
DE (1) DE112005003265T5 (zh)
GB (1) GB2436506B (zh)
TW (1) TWI300187B (zh)
WO (1) WO2006071947A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103218208A (zh) * 2011-12-06 2013-07-24 辉达公司 用于实施成形的存储器访问操作的***和方法

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8327115B2 (en) 2006-04-12 2012-12-04 Soft Machines, Inc. Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode
US7441099B2 (en) * 2006-10-03 2008-10-21 Hong Kong Applied Science and Technology Research Institute Company Limited Configurable SIMD processor instruction specifying index to LUT storing information for different operation and memory location for each processing unit
CN107368285B (zh) 2006-11-14 2020-10-09 英特尔公司 多线程架构
US20080162522A1 (en) * 2006-12-29 2008-07-03 Guei-Yuan Lueh Methods and apparatuses for compaction and/or decompaction
US7877582B2 (en) * 2008-01-31 2011-01-25 International Business Machines Corporation Multi-addressable register file
US7849294B2 (en) * 2008-01-31 2010-12-07 International Business Machines Corporation Sharing data in internal and memory representations with dynamic data-driven conversion
US10228949B2 (en) 2010-09-17 2019-03-12 Intel Corporation Single cycle multi-branch prediction including shadow cache for early far branch prediction
US8453127B2 (en) 2010-09-20 2013-05-28 Sap Ag Systems and methods providing a token synchronization gateway for a graph-based business process model
US9552206B2 (en) * 2010-11-18 2017-01-24 Texas Instruments Incorporated Integrated circuit with control node circuitry and processing circuitry
CN108108188B (zh) 2011-03-25 2022-06-28 英特尔公司 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段
US9842005B2 (en) 2011-03-25 2017-12-12 Intel Corporation Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
CN103547993B (zh) 2011-03-25 2018-06-26 英特尔公司 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块
TWI548994B (zh) 2011-05-20 2016-09-11 軟體機器公司 以複數個引擎支援指令序列的執行之互連結構
CN107729267B (zh) 2011-05-20 2022-01-25 英特尔公司 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构
US9411585B2 (en) 2011-09-16 2016-08-09 International Business Machines Corporation Multi-addressable register files and format conversions associated therewith
US9727336B2 (en) 2011-09-16 2017-08-08 International Business Machines Corporation Fine-grained instruction enablement at sub-function granularity based on an indicated subrange of registers
KR101703401B1 (ko) 2011-11-22 2017-02-06 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
WO2013077876A1 (en) 2011-11-22 2013-05-30 Soft Machines, Inc. A microprocessor accelerated code optimizer
US20140281369A1 (en) * 2011-12-23 2014-09-18 Ashish Jha Apparatus and method for sliding window data gather
CN105210040B (zh) 2013-03-15 2019-04-02 英特尔公司 用于执行分组成块的多线程指令的方法
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
EP2972836B1 (en) 2013-03-15 2022-11-09 Intel Corporation A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9632801B2 (en) 2014-04-09 2017-04-25 Intel Corporation Banked memory access efficiency by a graphics processor
US10001995B2 (en) * 2015-06-02 2018-06-19 Intel Corporation Packed data alignment plus compute instructions, processors, methods, and systems
CN104898991B (zh) * 2015-06-10 2018-07-27 烽火通信科技股份有限公司 一种基于自动化ral的寄存器访问方法及***
US20170177350A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Instructions and Logic for Set-Multiple-Vector-Elements Operations
US10289416B2 (en) 2015-12-30 2019-05-14 Intel Corporation Systems, apparatuses, and methods for lane-based strided gather
US11188332B2 (en) 2019-05-10 2021-11-30 International Business Machines Corporation System and handling of register data in processors

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5513366A (en) * 1994-09-28 1996-04-30 International Business Machines Corporation Method and system for dynamically reconfiguring a register file in a vector processor
US5812147A (en) * 1996-09-20 1998-09-22 Silicon Graphics, Inc. Instruction methods for performing data formatting while moving data between memory and a vector register file
US6230253B1 (en) 1998-03-31 2001-05-08 Intel Corporation Executing partial-width packed data instructions
US6175892B1 (en) 1998-06-19 2001-01-16 Hitachi America. Ltd. Registers and methods for accessing registers for use in a single instruction multiple data system
JP3779540B2 (ja) 2000-11-08 2006-05-31 株式会社ルネサステクノロジ 複数レジスタ指定が可能なsimd演算方式
US7275148B2 (en) * 2003-09-08 2007-09-25 Freescale Semiconductor, Inc. Data processing system using multiple addressing modes for SIMD operations and method thereof
US7386703B2 (en) * 2003-11-18 2008-06-10 International Business Machines Corporation Two dimensional addressing of a matrix-vector register array

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103218208A (zh) * 2011-12-06 2013-07-24 辉达公司 用于实施成形的存储器访问操作的***和方法
US10255228B2 (en) 2011-12-06 2019-04-09 Nvidia Corporation System and method for performing shaped memory access operations

Also Published As

Publication number Publication date
GB2436506A (en) 2007-09-26
TW200634622A (en) 2006-10-01
WO2006071947A1 (en) 2006-07-06
GB2436506B (en) 2009-01-28
KR100935308B1 (ko) 2010-01-06
GB0714452D0 (en) 2007-09-05
US20060149937A1 (en) 2006-07-06
CN100492280C (zh) 2009-05-27
KR20070097049A (ko) 2007-10-02
CN1821952A (zh) 2006-08-23
US20080022069A1 (en) 2008-01-24
DE112005003265T5 (de) 2007-11-15
US7257695B2 (en) 2007-08-14

Similar Documents

Publication Publication Date Title
TWI300187B (en) Method, apparatus and system to enable register information to be flexibly accessed for an execution engine
CN110300957A (zh) 数据处理装置中的加宽算数
KR101834174B1 (ko) 데이터 처리장치 및 방법
TWI325571B (en) Systems and methods of indexed load and store operations in a dual-mode computer processor
RU2009114818A (ru) Инструкция и логическая схема для выполнения операции скалярного произведения
US7017028B2 (en) Apparatus and method for updating pointers for indirect and parallel register access
CN107408102A (zh) 配置成使用数字信号处理指令对可变长度向量进行操作的向量处理器
JP2000122864A5 (zh)
CN100422979C (zh) 用于单指令、多数据执行引擎标志寄存器的评估单元
CN104185837B (zh) 在不同的粒度等级下广播数据值的指令执行单元
CN104133748B (zh) 用以在微处理器内组合来自多个寄存器单元的对应半字单元的方法及***
JP2016194929A5 (zh)
JP3985797B2 (ja) プロセッサ
US20060149938A1 (en) Determining a register file region based at least in part on a value in an index register
US20190213006A1 (en) Multi-functional execution lane for image processor
US7441099B2 (en) Configurable SIMD processor instruction specifying index to LUT storing information for different operation and memory location for each processing unit
US7406563B1 (en) Method and apparatus for accessing a striped configuration of disks
CN101573688A (zh) 用于紧缩和/或解紧缩的方法和装置
TW476887B (en) Data processor comprising an arithmetic logic unit
JPS6058487B2 (ja) デ−タ処理装置
JP2002157115A5 (zh)
JPH11149554A (ja) 3x3グリッドのランクに基づくフィルタのSIMD計算
JPS62164163A (ja) ベクトルデ−タ処理装置
JPS60134937A (ja) アドレス拡張装置
JPH01142934A (ja) 情報処理回路

Legal Events

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