TWI622930B - 用於實施具有疊代相依條件之疊代的向量迴圈的處理器、方法和計算系統 - Google Patents
用於實施具有疊代相依條件之疊代的向量迴圈的處理器、方法和計算系統 Download PDFInfo
- Publication number
- TWI622930B TWI622930B TW106107044A TW106107044A TWI622930B TW I622930 B TWI622930 B TW I622930B TW 106107044 A TW106107044 A TW 106107044A TW 106107044 A TW106107044 A TW 106107044A TW I622930 B TWI622930 B TW I622930B
- Authority
- TW
- Taiwan
- Prior art keywords
- vector
- instruction
- condition
- field
- processor
- Prior art date
Links
- 239000013598 vector Substances 0.000 title claims abstract description 280
- 238000000034 method Methods 0.000 title claims description 39
- 230000001419 dependent effect Effects 0.000 title 1
- 230000015654 memory Effects 0.000 claims description 120
- 230000008569 process Effects 0.000 claims description 22
- VOXZDWNPVJITMN-ZBRFXRBCSA-N 17β-estradiol Chemical compound OC1=CC=C2[C@H]3CC[C@](C)([C@H](CC4)O)[C@@H]4[C@@H]3CCC2=C1 VOXZDWNPVJITMN-ZBRFXRBCSA-N 0.000 description 58
- 238000006073 displacement reaction Methods 0.000 description 41
- 238000012545 processing Methods 0.000 description 38
- 238000009419 refurbishment Methods 0.000 description 30
- 238000010586 diagram Methods 0.000 description 28
- 239000003607 modifier Substances 0.000 description 15
- 238000006243 chemical reaction Methods 0.000 description 14
- 238000007667 floating Methods 0.000 description 14
- 238000003860 storage Methods 0.000 description 14
- 238000012804 iterative process Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 10
- 230000003416 augmentation Effects 0.000 description 9
- 230000036961 partial effect Effects 0.000 description 9
- 235000012431 wafers Nutrition 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 7
- 238000013215 result calculation Methods 0.000 description 7
- 230000002441 reversible effect Effects 0.000 description 7
- 230000003321 amplification Effects 0.000 description 5
- 238000003199 nucleic acid amplification method Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000001629 suppression Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000001066 destructive effect Effects 0.000 description 2
- 230000000873 masking effect Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000009418 renovation Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002789 length control Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000000758 substrate Substances 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/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- 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/3001—Arithmetic instructions
-
- 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/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30079—Pipeline control instructions, e.g. multicycle NOP
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
- G06F9/3455—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
-
- 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/3802—Instruction prefetching
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
說明具有指令執行管線的處理器。指令執行管線包含:指令擷取級用以擷取指令。指令會辨識輸入向量運算元,輸入向量運算元的輸入元件指明二狀態中之一或另一。指令也會辨識指明基礎值之第二輸入運算元。指令也會辨識指明跨幅之第三輸入運算元。指令執行管線也包含指令解碼器,以將指令解碼。指令執行管線也包含功能單元,用以執行指令以及提供結果輸出向量。功能單元包含邏輯電路,用以藉由將自基礎值導出的值以跨幅增量而在結果輸出向量的特定元件位置中產生元件,來回應存在於輸入向量運算元的對應元件位置中的二狀態中之一者但不是另一者。
Description
發明的領域係關於計算機科學,更具體而言,關於具有未對準資料列的陣列處理期間用於刪除未對準記憶體存取的指令集。
圖1顯示半導體晶片上以邏輯電路實施的處理核心100之高階圖。處理核心包含管線101。管線由多個級組成,各級設計成執行完全執行程式碼指令所需的多步驟處理中的特定步驟。這些典型上包含至少:1)指令擷取及解碼;2)資料擷取;3)執行;4)寫回。在資料由在上述另一先前級(例如步驟2)中被擷取及由相同指令識別時,執行級執行由在上述先前級(例如在步驟1中)中被擷取及解碼的指令所辨識的特定操作。被操作的資料典型上是自(一般用途)暫存器儲存空間102擷取的。在操作完成時產生的新資料典型上也會「寫回」至暫存器儲存空
間(例如在上述級4)。
與執行級相關連的邏輯電路典型上由多個「執行單元」或「功能單元」103_1至103_N構成,各單元均設計成執行它自己的獨特操作子集合(例如第一功能單元執行整數數學操作,第二功能單元執行浮點指令,第三功能單元執行載入/儲存操作自/至快取/記憶體等等)。由所有功能單元執行的所有操作的集合相當於由處理核心100支援的「指令集」。
在電腦科學領域中被廣泛認知的二種型式的處理器架構:「純量」及「向量」。純量處理器設計成執行會對單一資料集執行操作的指令,而向量處理器設計成執行會對多個資料集執行操作的指令。圖2A及2B呈現比較實例,顯示純量處理器與向量處理器之間的基本差異。
圖2A顯示純量AND(及)指令的實例,其中,單一運算元集A、B一起被及(AND)以產生奇異(或「純量」)結果C(亦即,AB=C)。相對地,圖2B顯示向量AND指令的實例,其中,二運算元集A/B與D/E分別被平行地一起及(AND),以同時產生向量結果C、F(亦即,A.AND.B=C與D.AND.E=F)。關於術語,「向量」是具有多個「元件」的資料元件。舉例而言,向量V=Q,R,S,T,U具有五個不同的元件:Q,R,S,T及U。舉例說明的向量V的「大小」為五(由於其具有五個元件)。
圖1也顯示向量暫存器空間104的存在,其不同於一般用途的暫存器空間102。具體而言,一般用途的暫存器
空間102額定地用以儲存純量值。如此,當任何執行單元執行純量操作時,它們額定地使用從一般用途暫存器儲存空間102呼叫的運算元(及將結果寫回)。相對地,當任何執行單元執行向量操作時,它們額定地使用從向量暫存器空間104呼叫的運算元(及將結果寫回)。不同的記憶體區域類似地被分配用於純量值及向量值的儲存。
100‧‧‧處理核心
501‧‧‧第一多工器
502‧‧‧第二多工器
503‧‧‧加法器
800‧‧‧暫存器架構
990‧‧‧核心
1100‧‧‧處理器
1200‧‧‧多處理器系統
1300‧‧‧第三系統
1400‧‧‧系統晶片
1500‧‧‧多核心處理器
從配合附圖的詳細說明,可更佳地瞭解本發明。在圖式中:圖1顯示指令執行管線;圖2A及2B比較純量與向量處理;圖3顯示判斷各疊代內的條件狀態之疊代處理;圖4顯示改良的指令序列圖,其使用條件式增量指令以便以向量迴圈實施判斷各疊代內的條件狀態之疊代處理;圖5A顯示執行條件式增量指令的功能單元之邏輯電路的第一實施例;圖5B顯示執行條件式增量指令的功能單元之邏輯電路的第二實施例;圖6A是方塊圖,說明根據本發明的實施例之同屬向量友善指令格式及其等級A指令樣板。
圖6B是方塊圖,說明根據本發明的實施例之同屬向量友善指令格式及其等級B指令樣板。
圖7是方塊圖,顯示根據本發明的實施例之舉例說明的特定向量友善指令格式。
圖8是根據本發明的一實施例之暫存器架構的方塊圖。
圖9A是根據本發明的實施例之單一CPU核心伴隨其對晶粒互連網路的連接及其本地子集合等級2(L2)快取之方塊圖。
圖9B是根據本發明的實施例之圖9A的CPU核心的部份之展開視圖。
圖10是方塊圖,顯示根據本發明的實施例之舉例說明的亂序架構。
圖11是根據本發明的一實施例之系統的方塊圖。
圖12是根據本發明的實施例之第二系統的方塊圖。
圖13是根據本發明的實施例之第三系統的方塊圖。
圖14是根據本發明的實施例之SoC的方塊圖。
圖15是根據本發明的實施例之具有整合的記憶體控制器及圖形之多核心處理器及單核心處理器的方塊圖。
圖16是根據本發明的實施例之比較使用軟體指令轉換器以將源指令集中的二進位指令轉換成標的指令集中的二進位指令之方塊圖。
替代處理經常被「加速」或是經由向量迴圈的實施而使之更有效率。為了實施向量迴圈,產生一或更多向量,
其中,在迴圈中的元件代表不同的疊代循環。舉例而言,在向量中的第一元代表第一疊代,在向量中的第二元代表第二疊代、等等。藉由對這些向量執行向量操作,可以平行有效地執行多個疊代(例如,同時地或並存地)。
但是,圖3中顯示的形式的疊代處理目前不能夠被編譯成向量迴路。圖3中所示的疊代形式可見於各種應用中。
圖3顯示由變數「i」控制的疊代處理。亦即,隨著各疊代,i會增量(或減量)301。在N次疊代306之後,處理停止307。作為各疊代的一部份,查詢條件為「真」或「非真」302。條件可以視i的作用而為真或非真。亦即,條件對於一疊代可以為真,但對另一疊代為非真。判斷對於任一疊代(i的值)而言條件是否為真之情形及/或處理之集合實際上是無限制的。
條件為真的疊代將表現不同於條件為非真的疊代。假使條件為真時,變數n以跨幅值s增量(303)。此處,s可為任何值且n可具有任何初始值。舉例而言,假使s=1及n的初始值為0,則每當條件為真時n將會根據樣式0,1,2,3,...而增量。相對地,假使s=3及n的初始值為0,則每當條件為真時n將會根據樣式0,3,6,9...而增量。
再者,對於各種i值,條件可為真。舉例而言,對於第一疊代,條件可以為真,然後再度不為真一直到第十次疊代為止。因此,對於第二至第九次疊代,n將維持不變。因此,n提供疊代的過程中有多少次條件是為真的某
反應。如上所暗指般,在疊代序列啟始之前,n的變數也典型地被供予初始值(例如n=0)。
不論條件是否為真,各疊代將根據n而決定變數x(304)。具體而言,已知有陣列A(例如大向量A)以及x根據n而得到A中的位置值(x=A[n])。如此,對於各疊代,n作為決定x的值之A中的索引。假使對於特定疊代,條件不為真,則x將假定與其前一疊代所作相同的值(由於假使條件非真,則n未增量至另一新的A中的索引值)。
當X被決定時,用於疊代的結果之計算最後被執行305。亦即,結果是x的函數。在其它情形中,結果計算隨著x也為i的函數(疊代計數)及/或n的值(隨著疊代之真條件的數目之測量)。此處,隨著條件,結果計算305可以由任何實際上未限制的計算處理數目來實施。當已執行所有疊代時,結果是i計算結果。
不幸地,由於疊代處理的複雜度,特別是查詢條件(302),所以,假使增量為真(303)時n以s增量以及使用n作為A中的索引,則編譯器難以將圖3的形式的編譯處理編譯成向量迴圈。因此,本申請求案說明新的指令,其允許編譯器更容易將圖3的處理編譯成向量迴圈。
圖4顯示使用新指令以將圖3的疊代處理實施成向量迴圈之程式碼的結構之實施例。
如圖4所示,程式碼產生向量,稱為「迴圈向量」(LV),其元代表經過疊代的進程(401)。在實施例
中,相鄰元件位置代表相對於其鄰近之元件位置的「下一」疊代,以及,迴圈向量的元之值相當於「迴圈計數」。舉例而言,在實施例中,迴圈向量實施成為八個元向量,以下述內容例示迴圈向量來代表疊代處理的前八個疊代:LV<=7 6 5 4 3 2 1 0 等式1
在疊代過程中,迴圈向量將在第八與第九疊代之間被更新,以如下所述代表第九至第十六疊代:LV<=15 14 13 12 11 10 9 8 等式2
LV的內容因而在順序疊代過程中可隨著i值而被觀視,至少是某些實施。
程式碼也產生第二向量(「條件向量」(CV)),其元標示在任何特定疊代上條件是否為真(或非真)(402)。類似於迴圈向量LV,在實施例中,在條件向量(CV)內的鄰近元件位置代表相對於其鄰近的元件位置之「下一」疊代。但是,不似迴圈向量LV,LV的元標示其各別的疊代條件是否為真。舉例而言,在以1代表真及以0代表非真的實施例中,在對於第四及第七疊代的條件為真而在前八個疊代內沒有其它疊代之處理中,條件向量可以採取下述形式:CV<=0 1 0 0 1 0 0 0 等式3
在疊代過程中,條件向量將在第八及第九疊代之間被更新以反應確保第九至第十六疊代之過程中的條件。舉例而言,假使對於第十及第十二疊代之條件為真但是在第九
至第十六疊代內沒有其它疊代,則被更新的條件向量將採取下述形式:CV<=0 0 0 0 1 0 1 0 等式4
在產生條件向量之後(402),執行上述提及的新指令(CONDINC)403。CONDINC指令接受條件向量作為輸入運算元並將第三向量作為結果歸還,稱為「n向量」(NV),其內容代表在疊代過程中n的值。
在實施例中,類似於迴圈向量LV及條件向量CV,在n向量NV內的鄰近元件位置代表相對於其鄰近的元件位置之「下一」疊代。但是,不似迴圈向量LV或是條件向量CV,在整個疊代中每當條件為真時,n向量NV顯示跨幅s之n增量。舉例而言,假使上述中等式3指明的條件向量CV應用遍及前8個疊代時,對於0的n初始值、3的跨幅s以及如等式4中指明的輸入向量運算元CV,CONDINC指令將提供下述結果:NV<=6 6 3 3 3 0 0 0 等式5
繼續實例,假使等式4的條件向量CV應用於第九至第十六疊代,則CONDINC指令將提供下述結果:NV<=12 12 12 12 12 9 9 6 等式6
注意,第八疊代的n值(等式5=6的最左邊值被帶至用於第九疊代的n值(等式=6的NV的最右邊值)。如同下述將更詳細說明般,當從CONDINC指令的正好先前的執行所決定之來自正好在前的疊代之n的值之「帶入」可被接受作為用於CONDINC指令的輸入運算元。
在CONDINC指令的執行之後,一或更多指令(例如向量指令)會被執行(404)以決定第四向量,第四向量稱為「x向量」(XV),其建立遍及疊代進行的x值。回想n作為陣列A中的索引,一或更多指令(404)基本上會以向量格式歸還對應於n向量(NV)提供的索引位置之A的值。舉例而言,假使A的前八個值如下所述:A[7:0]=128 64 32 16 8 4 2 1 等式7以及,假使等式5的n向量NV由指令處理404採用作為對應的向量輸入元件時,則由指令處理404產生的對應的x向量XV將如下:XV<=64 64 8 8 8 1 1 1 等式8
在執行處理404時使用的一或更多指令包含例如聚集指令,聚集指令是根據輸入索引值而從陣列中取出元。
藉由等式1中迴圈向量LV、等式5中的n向量NV、及等式8中x向量XV的產生,以向量形式,建立用於圖3的處理之前八個疊代的輸入變數。為了方便起見,於下重述這些等式。
LV<=7 6 5 4 3 2 1 0 等式1
NV<=6 6 3 3 3 0 0 0 等式5
XV<=64 64 8 8 8 1 1 1 等式8
此處,在上述三個向量中相同定位的元件集合對應於用於它們代表之特定疊代的正確的i、n及x值。亦即,舉例而言,在LV、NV、及XV向量中最右邊(第一個)元件位置對應於用於圖3的處理之第一疊代的正確之i、
n、及x值的集合(i=0,n=0及x=1),在LV、NV、及XV向量中第四個元件位置對應於用於圖3的處理之第四疊代的正確之i、n、及x值的集合(i=3,n=3及x=8)、等等。
如此,藉由這些向量的產生,最終製備指令序列以於需要時執行結果計算405作為向量操作。再度地,結果計算405實際上是任何不限定數目的不同計算。但是,最終地,在實施例中,結果計算405的結果將是用於前八個疊代之向量格式的結果(i)。亦即,假使使用語法RS(i)以指明「結果(i)」(亦即,第i疊代的結果),則來自區塊405執行的處理之結果將是如下所述的結果向量RV
RV<=RS(7)RS(6)RS(5)RS(4)RS(3)RS(2)RS(1)RS(0) 等式9
在對圖3的處理之前八個疊代如上所示地計算RV之後,執行圖4的指令序列之下一向量迴圈,這將產生用於i值之等式2及用於n值之等式5。使用圖5的n向量作為用於第二迴圈的處理404之下一計算的輸入,將產生用於第八至第十六疊代之對應的x向量XV。這將產生用於第二向量迴圈的結果計算405之另一LV、NV及XV向量的集合。接著,如上所述地重複圖4的迴圈向量,直到所需的疊代數目完成為止。
雖然參考八元的向量尺寸來說明上述實例,但是,應瞭解上述相同處理可以容易地擴充至其它向量尺寸(例如向量尺寸16、32、64、128、256、512、等等)。
上述說明也將正跨幅作為主要實施例。亦即,s>0。
在一實施例中,支援新的CONDINC指令之向量處理器支援二種不同形式的指令:CONDINCFW及CONDINCBW。此處,CONDINCFW(順向條件增量)對應於前述實例中於上說明的操作,其中,s的值加至n的值以向上增量至新的n值(n=n+s)。相對地,CONDINCBW(逆向條件增量)對應於基本上相同的指令處理但是n以跨幅值減量(n=n-s)。
在又另外結合或替代的實施例中,提供二種其它形式的CONDINC指令以用於從圖3的形式偏移至「後置增量」形式的疊代處理。亦即,圖3顯示之處理中,對於第i疊代,假使用於第i疊代的條件為真時,在結果計算305之前,將n增量。
相對地,有替代形式的疊代處理,其中,對於第i疊代,假使用於第i疊代的條件為真時,在結果計算305之後,將n增量。藉由將圖3中的區塊304及305移至區塊302和303之前,以及將圖4中的區塊404及405移至區塊402和403之前,可容易相像此處理。在此情形中,各疊代i取決於用於i的條件而以n的增量或是無n的增量來結束。相較於用於疊代i的索引x,這具有使下一疊代i+1使用以跨幅s增量的索引x至陣列A中之效果(假使疊代i以n的索引而指向至陣列A中時以及用於第i疊代的條件為真時,則疊代i+1將以n+s的索引而指向至陣列A中)。
根據此後置增量方式,為了產生用於第i疊代的正確
n值,另一指令CONDINCPOST將在n向量結果NV的第i+1元中顯示n的增量而不是第i元(如同CONDINC指令所完成般)。舉例而言,回想用於條件向量VC輸入之下述的等式的運算元:CV<=0 1 0 0 1 0 0 0 等式3
CONDINC指令產生下述等式的NV結果:NV<=6 6 3 3 3 0 0 0 等式5
相對地,假使CONDINCPOST指令接收同於上述等式3所提供的CV輸入向量時(具有n=0的初始值,以及3的跨幅),則NV結果將是:NV<=6 3 3 3 0 0 0 0 等式10
在CONDINCPOST指令的實施例中,假使CV輸入向量的最後(最高)元表示條件為真時,則指令設計成將帶入項設定於控制暫存器空間中,以致於緊跟在CONDINCPOST指令之後將知道將其第一(最低)輸出NV向量元件增量。在另外的實施例中,有順向及逆向版的CONDINCPOST:CONDINCPOSTFW和CONDINCPOSTBW。如同CONDINCFW,CONDINCPOSTFW會將跨幅s視為正值以及隨著各真的條件而向上增量s(n=n+s)但具有後置增量功能。類似地,如同CONDINCBW,CONDINCPOSTBW會將跨幅s視為負值以及隨著各真的條件而向下增量s(n=n-s)但具有後置增量功能。
因此,編譯器可以識別圖3的正常形式或是上述後置
增量的格式的存在以及將CONDINC指令插入於與上述原理一致的指令串中。注意,圖3的疊代處理的某些形式(或是對應的後置增量處理)可以不使用i及/或n作為用於結果計算305的明確輸入值(結果計算仍然使用x作為輸入值)。
圖5a顯示用於設計成執行CONDINCFW指令的功能單元的核心邏輯電路。根據圖5a的特定設計,僅以功能單元內單數的核心邏輯電路作例示,以致於結果向量的不同元均由單一電路個別地處理。根據此方式,藉由功能單元,形成指令的輸出向量,所述功能單元係控制它自己的疊代經過電路之內部迴圈序列(每一輸出向量元件一次)。其它更多平行化的方式也是可能的,將參考圖5b,更詳細說明。
如圖5a所見般,功能單元包含第一多工器501及第二多工器502。這二個多工器都饋入加法器503。假使結果向量的第一(最低排序的)元正被處理時,第一多工器501提供「基礎」值給加法器503。因此,假使指令正處理第一序列疊代時,基礎值相當於n的初始值,否則,基礎值相當於自已被執行之正好前一CONDINCFW指令帶入的n值。一旦第一結果元假使被處理過,則加法器503的輸出會經由第一多工器501而提供回去給加法器503。
假使被處理的向量元件位置具有1的條件向量CV元值,則第二加法器502提供+s的跨幅值給加法器503。否則,第二多工器502提供0的值給加法器503。藉由如此
執行,在計算用於目前被處理的結果向量元件位置之n值時,假使對應元具有真的條件時,則多工器502會造成正好前一n值以+s增量,或者,假使對應的元不為真時,則保持正好前一n值。此處,功能單元接受條件向量CV作為輸入運算元,以及,隨著處理下一結果向量元件位置之功能單元的各內部迴圈,CV輸入運算元中的下一元件連續地提供給多工器502。
基礎值及跨幅s均被接受作為純量、或是重複基礎值的向量及跨幅值的向量分別作為增加的向量運算元。舉例而言,假使功能單元提供八個元向量作為結果以及跨幅值是3時,則可以產生3 3 3 3 3 3 3 3之跨幅輸入向量。在此情形中,功能單元連續地從各下一元取得各跨幅值,如同以條件向量輸入運算元執行般。類似地,可以產生b b b b b b b b的基礎值輸入向量。但是,此處,多個元件中僅有一元被接受作為輸入運算元值及被處理(用於結果中的第一元之處理)。替代地,可以提供基礎及跨幅值作為指令格式內的立即純量運算元或是作為向量輸入運算元格式內的純量通過(例如,用於提供跨幅值的輸入向量運算元之XXXXXXXs)。對於每一第一序列疊代以外的疊代,如同先前所述般,可以從控制向量暫存器空間提供基礎值,控制向量暫存器空間保持有b值作為從正好先前已執行的CONDINC指令所提供的帶入項。
參考圖5a之上述係關於PREDINCFW指令的實施,其以串列方式處理向量結果中的各元。使用與上述相同的
電路及方式,以實施PREDINCBW指令,但是第一多工器501提供a-s值而非a+s值。
在處理第i疊代的期間,藉由提供來自條件向量輸入運算元的第i-1元的值給第二多工器502的通道選取輸入,而實施PREDINCPOST指令(順向或逆向,以對應的+s或-s值提供給第一多工器501)。舉例而言,假使i=4結果向量元件目前正被處理時,多工器501的通道選取輸入接收來自條件向量的i-1=3元件位置的值。
圖5b顯示用於PREDINCFW指令的平行實施之核心邏輯電路。平行電路的核心電路類似於圖5a的電路,但是,加法器輸出連接至下一元件位置的第一多工器的輸入。假使每一結果輸出向量元件有一核心電路,則用於第一元件位置的核心電路不需要第一多工器(基礎值直接傳送至其加法器)。假使核心電路小於輸出向量元件(例如,有四個核心電路及八個輸出向量元件,以致於二功能單元循環足以處理整個結果(第一循環產生輸出元0-3及第二循環產生輸出元4-7)),第一核心電路包含第一多工器及接收來自核心電路的區塊之另一側上最遠的加法器之輸出(以將鏈結中順向的n的最近值鏈波化)。如圖5b所示,電路可以從條件向量輸入運算元平行地接收多個元件以及以對齊方式處理它們。
參考圖5b的上述說明係關於PREDINCFW指令的實施,其可能同時處理向量結果的多個元件。與圖5b中所述之相同的電路及方式也可用以實施PREDINCBW指令,
但是,第二多工器提供a-s值而非a+s值。
藉由提供來自條件向量輸入運算元的第i-1值給第二多工器的通道選取輸入而至處理結果向量的第i元之核心電路,以實施PREDINCPOST指令(順向或逆向,以對應的+s或-s值提供給第一多工器)。舉例而言,處理i=4結果向量元件的核心電路接收條件向量的i-1=3元件位置的內容。
在上述任何/所有實施例中,即使條件向量未被作為傳統的遮罩處理,仍可從遮罩暫存器空間提供條件向量(因而產生的條件向量儲存於遮罩向量暫存器空間中)。在各式各樣的實施例中,不論跨幅為正或負的都會被指定為輸入運算元(例如,立即運算元)。
上述詳述的指令實施例至少部份地以下述中詳述的「同屬向量友善指令格式」具體實施。此外,於下詳述舉例說明的系統、架構及管線。上述指令的實施例可以在這些系統、架構、及管線上執行,但不侷限於這些細節。
向量友善指令格式是適用於向量指令的指令格式(例如,有某些向量操作特有的領域)。雖然說明向量及純量操作都是由向量友善指令格式支援的實施例,但是,替代實施例可僅使用向量友善指令格式的向量操作。
圖6A-6B是方塊圖,顯示根據發明的實施例之同屬向量友善指令格式及其指令樣板。圖6A是方塊圖,顯示根
據發明的實施例之同屬向量友善指令格式及其等級A指令樣板;而圖6B是方塊圖,顯示根據發明的實施例之同屬向量友善指令格式及其等級B指令樣板。具體而言,等級A及等級B指令樣板定義之同屬向量友善指令格式600都包含無記憶體存取605指令樣板及記憶體存取620指令樣板。向量友善指令格式的背景中之同屬一詞意指未被繫結至任何特定指令集的指令格式。雖然將說明向量友善指令格式中的指令對源自暫存器(無記憶體存取605指令樣板)或暫存器/記憶體(記憶體存取620指令樣板)之實施例,但是,本發明的替代實施例可以僅支援這些中之一。而且,雖然將說明有向量指令格式的載入及儲存指令之本發明的實施例,但是,替代實施例可以增加地或替代地具有可將向量移入及移出暫存器(例如從記憶體至暫存器中,從暫存器至記憶體中,在暫存器之間)之不同指令格式的指令。此外,雖然將說明支援二等級的指令樣板之本發明的實施例,但是,替代實施例可以僅支援這些中之一或二個以上。
雖然將說明向量友善指令格支援下述的發明實施例:具有32位元(4位元組)或64位元(8位元組)資料元件寬度(或大小)的64位元組向量運算元長度(或大小)(因此,16個雙字大小的元或者8個四字大小的元組成的64位元組向量);具有16位元(2位元組)或8位元(1位元組)資料元件寬度(或大小)的64位元組向量運算元長度(或大小);具有32位元(4位元
組)、64位元(8位元組)、16位元(2位元組)或8位元(1位元組)資料元件寬度(或大小)的32位元組向量運算元長度(或大小);以及,具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或8位元(1位元組)資料元件寬度(或大小)的16位元組向量運算元長度(或大小);或者,替代實施例可以支援更多、更少、及/或不同的資料元件寬度(例如,128位元(16位元組)資料元件寬度)之更多、更少及/或不同的向量運算元大小(例如656位元組向量運算元)。
圖6A中的等級A指令樣板包含:1)在無記憶體存取605指令樣板之內,有顯示無記憶體存取、全修整控制型操作610指令樣板以及無記憶體存取、資料轉換型操作615指令樣板;以及2)在記憶體存取620指令樣板之內,有顯示記憶體存取、暫時625指令樣板以及記憶體存取、非暫時630指令樣板。圖6B中的等級B指令樣板包含:1)在無記憶體存取605指令樣板之內,有顯示無記憶體存取、寫入遮罩控制、部份修整控制型操作612指令樣板以及無記憶體存取、寫入遮罩控制、vsize型操作617指令樣板;以及2)在記憶體存取620指令樣板之內,有顯示記憶體存取、寫入遮罩控制627指令樣板。
同屬向量友善指令格式600包含圖6A-6B中依序顯示的下述列出之欄位。配合有關圖4、5a、及5b的上述說
明,在實施例中,參考圖6A-B及7中提供的格式細節,可使用非記憶體存取指令型式605、或記憶體存取指令型式620。用於輸入向量運算元及目的地之位址可以在下述暫存器位址欄位644中辨識。指令可以格式化成破壞性的或非破壞性的。
格式欄位640-此欄位中的特定值(指令格式識別符值)獨特地識別向量友善指令格式,因此,在指令串中向量友善指令格式的指令發生。因此,格式欄位640的內容區別第一指令格式中的指令發生與其它指令格式的指令發生,藉此允許將向量友善指令格式引入至具有其它指令格式的指令集。如此,在對於僅具有同屬向量友善指令格式的指令集而言是不需要的情形中,此欄位是選加的。
基礎操作欄位642-其內容區別不同的基礎操作。如同此處稍後說明般,基礎操作欄位642可以包含及/或是運算碼欄位的一部份。
暫存器索引欄644-其內容直接或經由位址產生而指明源和目的地運算元的位置在暫存器或記憶體中。這些包含足夠數目的位元以從PxQ(例如32 x1012)暫存器檔案中選取N個暫存器。雖然在一實施例中,N可以高達三個源及一個目的地暫存器,但是,替代實施例可以支援更多或更少的源以及目的地暫存器(例如,可以支援高達二個源,這些源中之一也作為目的地,可以支援高達三個源,這些源中之一也作為目的地,可以支援高達二個源及一目的地)。雖然在一實施例中P=32,但是,替代實施例可
以支援更多或更少的暫存器(例如16)。雖然在一實施例中Q=1012位元,但是,替代實施例可以支援更多或更少的位元(例如128、1024)。
修改符欄位646-其內容區別指定與未指定記憶體存取的同屬向量指令格式的指令之發生;亦即,在無記憶體存取605指令樣板與記憶體存取620指令樣板之間區別。記憶體存取操作讀取及/或寫至記憶體層級結構(在某些情形中使用暫存器中的值以指定源及/或目的地位址),而非記憶體存取操作則未如此作(例如,源及目的地是暫存器)。雖然在一實施例中,此欄位也在三個不同方式中之間選取以執行記憶體位址計算,但是,替代實施例可以支援更多、更少、或不同的方式以執行記憶體位址計算。
擴增操作欄位650-其內容區別各種不同操作中那一操作是基礎操作之外也是要被執行的。此欄位是內容特定的。在發明的一實施例中,此欄位被分成等級欄位668、阿爾發欄位652、貝他欄位654。擴增操作欄位允許共同組的操作在單一指令中而不是在2、3或4指令中被執行。下述是指令的某些實例(稍後將更詳細說明)使用擴增欄位650以減少所需指令的數目。
比例欄位660-其內容允許用於記憶體位址產生的索引欄位的內容比例化(例如,用於使用2scale*index+base的位址產生)。
位移欄位662A-其內容作為部份記憶體位址產生(例如,用於使用2scale*index+base+displacement的位址產生)。
位移因數欄位662B(注意,位移欄位662A直接在位
移因數欄位662B上並置係標示一或另一者被使用)-其內容作為部份位址產生;其指定要依記憶體存取(N)的大小而比例化的位移因數-其中,N是記憶體存取中的位元組數目(例如,用於使用2scale*index+base+scaled displacement的位址產生)。冗餘低階位元被忽略,因此,位移因數欄位的內容乘以記憶體運算元全部尺寸(N)以產生計算有效位址時使用的最後位移。根據全運算碼欄位674(稍後說明)及資料操縱欄位654C,在運行時間,由處理器硬體決定N的值。在位移欄位662A及位移因數欄位662B不用於無記憶體存取605指令樣板及/或不同實施例僅實施二者中之一或不實施二者的情形中,位移欄位662A及位移因數欄位662B是選擇性的。
資料元件寬度欄位664-其內容區別一些資料元件寬度中的那一寬度是要被使用(在某些實施例中用於所有指令;在其它實施例中僅用於某些指令)。在假使使用運算碼的某些態樣而僅有一資料元件寬度被支援及/或資料元件寬度被支援時不需要此欄位的情形中,此欄位是選擇性的。
寫入遮罩欄位670-以每一資料元件位置為基礎,其內容控制目的地向量運算元中的資料元件位置是否反應基礎操作及擴增操作的結果。等級A指令樣板支援合併寫入遮罩,而等級B指令樣板支援合併及零化寫入遮罩。當合併時,向量遮罩允許目的地中任何組的元在任何操作的執行期間受保護(由基礎操作及擴增操作指定)而免於更新;
在其它的一實施例中,保留對應的遮罩位元具有0之目的地的各元的舊值。相反地,當零化向量遮罩允許目的地中的任何組的元在任何操作(由基礎操作及擴增操作指定)執行期間零化時;在一實施例中,當對應的遮罩位元具有0值時,目的地的元被設定為0。此功能的子集合是控制被執行的操作的向量長度之能力(亦即,被修改的元的跨幅從第一至最後一個);但是,被修改的元不一定是連續的。如此,寫入遮罩欄670允許部份向量操作,包含載入、儲存、算術、邏輯、等等。而且,此遮罩可以用於故障抑制(亦即,藉由遮罩目的地之資料元件位置以防止接收任何會/將造成故障操作的結果-例如,假定記憶體中的向量越過頁邊界以及第一頁而非第二頁將造成頁故障,則假使位於第一頁上之向量的所有資料元件由寫入遮罩遮蔽時,可以忽略頁故障)。此外,寫入遮罩允許含有某些型式之條件式陳述的「向量化迴圈」。雖然說明寫入遮罩欄位670的內容選取一些含有要被使用的寫入遮罩之寫入遮罩暫存器中之一(因此,寫入遮罩欄位670的內容間接地識別要被執行的遮罩)的發明實施例,但是,替代實施例可取代地或增加地允許遮罩寫入欄位670的內容直接指定遮罩被執行。此外,當在下述中時,零化允許性能增進:1)由於在暫存器重命名管線級期間目的地不再是隱含源(由於任何不是操作結果的資料元件(任何被遮罩的資料元件)將被零化,所以,沒有來自目前的目的地暫存器之資料元件需要被拷貝至被重命名的目的地暫存器或是
有點與操作一起被執行),所以,對指令使用暫存器重命名,所述指令是其目的地運算元也不是源(也稱為非三級指令);以及2)由於零正被寫入,而在寫回級期間。
立即欄位672-其內容允許立即性的規格。在此欄位未出現在未支援立即性的同屬向量友善格式實施中以及其未出現在未使用立即性的指令中之情形中,此欄位是選擇性的。
等級欄位668-其內容區別不同等級的指令。參考圖2A-B,此欄位的內容在等級A與等級B指令之間選取。在圖6A-B中,經過整修的角落方形被用以標示特定值存在於欄位中(例如,分別在圖6A-B中用於等級欄位668的等級A 668A及等級B 668B)。
在等級A的非記憶體存取605指令樣板的情形中,阿爾發欄位652被解譯為RS欄位652A,其內容區別不同的擴增操作型式中那一型式是要被執行(例如,整修652A.1及資料轉換652A.2分別被指定用於無記憶體存取、整修型式操作610及無記憶體存取、資料轉換型式操作615指令樣板),而貝他欄位654區別被指定的型式的操作中那些操作是要被執行。在圖6中,使用圓化角落的方塊以標示特定值存在(例如,在修改符欄位646中無記
憶體存取646A;整修652A.1及資料轉換652A.2用於阿爾發欄位652/rs欄位元652A)。在無記憶體存取605指令樣板中,比例欄位660、位移欄位662A及位移比例欄位662B不存在。
在無記憶體存取完全整修控制型操作610指令樣板中,貝他欄位654被解譯為整修控制欄位654A,其內容提供靜態整修。雖然在上述的發明實施例中,整修控制欄位654A包含抑制所有浮點例外(SAE)欄位656及整修操作控制欄位658,但是,替代實施例可以支援將這二概念編碼成相同欄位或是僅具有這些概念/欄位中之一或其它(例如,可以僅具有整修操作控制欄位658)。
SAE欄位656-其內容區別是否將例外事件報告禁能;當SAE欄位656的內容標示抑制被賦能時,給定的指令不報告任何種類的浮點例外旗標及不引起任何浮點例外處理器。
整修操作控制欄位658-其內容區別整修操作組中哪一操作要執行(例如,向上整修、向下整修、朝向零整修及整修至最近)。因此,整修操作控制欄位658允許根據每一指令為基礎之整修模式的改變,因此,當這被要求時,特別有用。在處理器包含用於指明整修模式的控制暫存器之發明的一實施例中,整修操作控制欄位650的內容凌駕該暫存器值(能夠選擇整修模式而不必對此控制暫存器執
行保存-整修-恢復,會是有利的)。
在無記憶體存取資料轉換型式操作615指令樣板中,貝他欄位654被解譯為資料轉換欄位654B,其內容區別多個資料轉換中何者要被執行(例如,無資料轉換、拌和、廣播)。
在等級A的記憶體存取620指令樣板的情形中,阿爾發欄位652被解譯為逐出提示欄位652B,其內容區別逐出提示中之一是要被使用(在圖6A中,暫時652B.1及非暫時652B.2分別被指定用於記憶體存取、暫時625指令樣板以及記憶體存取、非暫時630指令樣板),而貝他欄位654被解譯為資料操縱欄位654C,其內容區別多個資料操縱操作(也稱為原始)中何者是要被執行(例如,無操縱;廣播;源的上轉;及目的地的下轉)。記憶體存取620指令樣板包含比例欄位660,且選擇性地包含位移欄位662A或位移比例欄位662B。
藉由轉換支援,向量記憶體指令對記憶體執行向量載入及向量儲存。與正常的向量指令一般,向量記憶體指令以資料元件方式從/對記憶體傳輸資料,而真正被傳送的元件是由被選為寫入遮罩的向量遮罩的內容所標示。在圖6A中,圓化角落的方形用以標示特定值存在於欄位中
(例如用於修改符欄位646的記憶體存取646B;用於阿爾發欄位652/退出提示欄位652B的暫時652B.1及非暫時652B.2)。
暫時資料是能夠足夠快再被使用而從快取獲利之資料。但是,這是提示,以及,不同的處理器可以以不同方式實施它,包含完全忽略提示。
非暫時資料是不太可能足夠快再被使用以從第一層快取中的快取獲利之資料,且應被授予逐出優先權。但是,這是提示,以及,不同的處理器可以以不同方式實施它,包含完全忽略提示。
在等級B的指令樣板的情形中,阿爾發欄位652被解譯為寫入遮罩控制(Z)欄位652C,其內容區別由寫入遮罩欄位670控制的寫入遮罩是否應為合併或零化。
在等級B的非記憶體存取605指令樣板的情形中,部份貝他欄位654是被解譯為RL欄位657A,其內容區別不同的擴增操作型式中何者是要被執行(例如,整修
657A.1以及向量長度(VSIZE)657A.2分別被指定用於無記憶體存取、寫入遮罩控制、部份整修控制型操作612指令樣板以及無記憶體存取、寫入遮罩控制、VSIZE型操作617指令樣板),而貝他欄位654的其餘部份區別那一指定型式的操作是要被執行。在圖6中,圓化角落區塊用以標示特定值存在(例如在修改符欄位646中的無記憶體存取646A;用於RL欄位657A的整修657A.1及VSIZE 657A.2)。在無記憶體存取605指令樣板中,比例欄位660、位移欄位662A、及位移比例欄位662B不存在。
在無記憶體存取中,寫入遮罩控制、部份整修控制型操作610指令樣板、貝他欄位654的其它部份被解譯為整修操作欄位659A且例外事件報告被禁能(給定的指令不報告任何種類的浮點例外旗標及不引起任何浮點例外處理器)。
整修操作控制欄位659A-正如同整修操作控制欄位658般,其內容區別整修操作組中何者要執行(例如,向上整修、向下整修、朝向零整修及整修至最近)。因此,整修操作控制欄位659A允許根據每一指令來改變整修模式,因而當這被要求時,特別有用。在處理器包含用於指定整修模式的控制暫存器之發明的一實施例中,整修操作控制欄位650的內容凌駕該暫存器值(能夠選擇整修模式
而不必對此控制暫存器執行保存-整修-恢復,會是有利的)。
在無記憶體存取中、寫入遮罩控制,VSIZE型操作617指令樣板、貝他欄位654的其餘部份被解譯為向量長度欄位659B,其內容區別多個資料向量長度中何者要被執行(例如,128、856、或1012位元組)。
在等級A的記憶體存取620指令樣板的情形中,部份貝它欄位654被解譯為廣播欄位657B,其內容區別廣播型資料操縱操作是否要被執行,而貝它欄位654中的其它部份被解譯為向量長度欄位659B。記憶體存取620指令樣板包含比例欄位660,以及,選擇性地包含位移欄位662A或是位移比例欄位662B。
關於同屬向量友善指令格式600,完全運算碼欄位674顯示為包含格式欄位640、基礎操作欄位642、及資料元件寬度欄位664。雖然顯示完全運算碼欄位674包含所有這些欄位的一實施例,但是,在未支援所有它們的實施例中,完全運算碼欄位674包含少於所有這些欄位的欄位。完全運算碼欄位674提供作業碼(運算碼)。
擴增操作欄位650、資料元件寬度欄位664、及寫入遮罩欄位670允許根據每一同屬向量友善指令格式的指令來指定這些特點。
寫入遮罩欄位及資料元件寬度欄位的組合創造出各種類型的指令而允許依據不同的資料元件寬度來應用遮罩。
由於指令格式會根據其它欄位的內容而為了不同的目的,再使用不同的欄位指令格式需要相對少數的位元。舉例而言,一觀點是修改符欄位的內容在圖6A-B上的無記憶體存取605指令樣板與圖6A-B上的記憶體存取6250指令樣板之間選擇;而等級欄位668的內容在圖6A的指令樣板610/615與圖6B的612/617之間的那些非記憶體存取605指令樣板之內選擇;以及,等級欄位668的內容在圖6A的指令樣板625/830與圖6B的627之間的那些非記憶體存取620指令樣板之內選擇。從另一觀點而言,等級欄位668的內容在圖6A及B分別的等級A和等級B指令樣板之間選擇;而修改符欄位的內容在圖6A的指令樣板605與620之間選擇;以及,修改符欄位的內容在圖6B的指令樣板605與620之間選擇。在標示等級A指令樣板的等級欄位的內容之情形中,修改符欄位646的內容選擇rs欄位652A與EH欄位652B之間的阿爾發欄位652的解譯。以相關方式,修改符欄位646及等級欄位668的內容會選擇阿爾發欄位是否被解譯為652A的rs欄位、EH欄位652B、或寫入遮罩控制(Z)欄位652C。在標示等級A無記憶體存取操作之等級及修改符欄位的情形中,擴增
欄位的貝它欄位的解譯會根據rs欄位的內容而變;而在標示等級B無記憶體存取操作之等級及修改符欄位的情形中,貝它欄位的解譯取決於RL欄位的內容。在標示等級A記憶體存取操作之等級及修改符欄位的情形中,擴增欄位的貝它欄位的解譯會根據基礎操作欄位的內容而變;而在標示等級B記憶體存取操作之等級及修改符欄位的情形中,擴增欄位的貝它欄位的廣播欄位657B的解譯會視基礎操作欄位的內容而變。因此,基礎操作欄位、修改符欄位及擴增操作欄位的結合允許更多樣式的擴增操作被指定。
在等級A及等級B之內發現的各種指令樣板在不同的情形中是有利的。當為了性能而要求零化-寫入遮罩或更小的向量長度時,等級A是有用的。舉例而言,由於我們不再需要人為地合併目的地,所以,當重命名有用時,零化允許避免偽造相依性;關於另一實例,當以向量遮罩模仿較短向量尺寸時,向量長度控制會減輕使得儲存-負載遞送議題。當需要下述時,等級B是有用的:1)允許浮點例外(亦即,當SAE欄位的內容標示否時)並同時使用整修-模式控制;2)能夠使用上轉、拌和、切換、及/或下轉;3)對圖形資料型式操作。舉例而言,當與不同格式的源工作時,上轉、拌和、切換、下轉、及圖形資料型式會降低所需的指令數目;關於另一實例,允許例外之能力可提供完全IEEE符合的受指引的整修-模式。
圖7是方塊圖,顯示根據本發明的實施例之舉例說明的特定向量友善指令格式。圖7顯示特定向量友善指令格式700,特定向量友善指令格式700在其指定欄位的位置、大小、解譯、及次序、以及用於那些欄位中的某些欄位之值的情形中是特定的。特定向量友善指令格式700可以被用以延伸x86指令集,因而某些欄位類似於或同於現有的x86指令集中使用的欄位以及其延伸(例如,AVX)。此格式維持與具有延伸的現存x86指令集的前置編碼欄位、真實運算碼位元組欄位、MODR/M欄位、SIB欄位、位移欄位、及立即欄位一致。顯示來自圖7的欄位映射之來自圖6的欄位。
應瞭解,雖然在同屬向量友善指令格式700的內容中為了說明而參考特定向量友善指令格式600,以說明發明的實施例,但是,除非特別申明,否則本發明不侷限於特定向量友善指令格式700。舉例而言,同屬向量友善指令格式600慮及用於各種欄位的各種可能大小,而特定向量友善指令格式700顯示為具有特定大小的欄位。具體舉例而言,雖然資料元件寬度欄位664在特定向量友善指令格式700中顯示為一位元欄位,但是,本發明不限於此(亦即,同屬向量友善指令格式600慮及資料元件寬度欄位664的其它大小)。
同屬向量友善指令格式600包含依圖7中所示的次序而於下列出的下述欄位。
EVEX Prefix(位元組0-3)
EVEX Prefix 702-以四位元組形式編碼。
格式欄位640(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)是格式欄位640以及其含有0x62(用於區別發明的一實施例中向量友善指令格式的獨特值)。
第二-第四位元組(EVEX位元組1-3)包含提供特定能力的多個位元欄位。
REX欄位705(EVEX位元組1,位元[7-5])-由EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)、及657BEX位元組1,位元[5]-B)組成。EVEX.R、EVEX.X及EVEX.B位元欄位提供與對應的VEX位元欄位相同的功能性,且使用1s互補形式來編碼,亦即,ZMM0被編碼為1111B,ZMM15被編碼為0000B。如同此技藝中所知般,指令的其它欄位將暫存器索引的較低的三個位元編碼(rrr,xxx,及bbb),以致於藉由加上EVEX.R、EVEX.X、及EVEX.B,可以形成Rrrr、Xxxx、及Bbbb。
REX’欄位710-這是REX’欄位710的第一部份且是用以將延伸的32暫存器組的上16或下16編碼之EVEX.R’位元欄位(EVEX位元組1,位元[4]-R’)。在發明的一實施例中,此位元與如下標示的其它位元以位元反轉格式儲
存,以與BOUND指令區別(在已知的x86 32位元模式中),BOUND指令的真實運算碼位元組是62,但是,在MOD R/M欄(下述)中未接受MOD欄位中11的值;發明的替代實施例未以反轉格式儲存此位元及下述其它標示的位元。1的值用以將下16暫存器編碼。換言之,藉由結合來自其它欄位的EVEX.R’、EVEX.R、及其它RRR以形成R’Rrrr。
運算碼映射欄位715(EVEX位元組1,位元[3:0]-mmmm)-它的內容將暗指的領先運算碼位元組(0F,0F 38,或0F 3)編碼。
資料元件寬度欄位664(EVER位元組2,位元[7]-W)-由記號EVEX.W表示。EVEX.W用以界定資料型式(32位元資料元件或64位元資料元件)的粒度(大小)。
EVEX.vvvv 720(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv的角色可以包含下述:1)EVEX.vvvv將以反轉(1s互補)形式指定的第一源暫存器運算元編碼,且對於具有2或更多源運算元的指令是有效的;2)EVEX.vvvv將對某些向量偏移以1s互補形式指定的目的地暫存器運算元編碼;或者3)EVEX.vvvv未將任何運算元編碼,欄位被保留且應含有1111b。因此,EVEX.vvvv欄位720將依反轉(1s互補)形式儲存的第一源暫存器說明符的4下階位元編碼。取決於指令,額外的不同EVEX位元欄位被用以延伸說明符大小至32暫存器。
EVEX.U 668等級欄位(EVEX位元組2,位元[2]-U)-假使EVEX.U=0,則其標示等級A或EVEX.U0;假使EVEX.U=1,則其標示等級B或EVEX.U1。
前置編碼欄位725(EVEX位元組2,位元[1:0]-pp)-提供增加的位元用於基礎操作欄位。除了提供支援給EVEX前置格式的舊制SSE指令,這也具有使SIMD前置小巧化(而非要求位元組來表示SIMD前置,EVEX前置僅要求2位元)的優點。在一實施例中,為了支援以舊制格式及EVEX前置格式等二格式使用SIMD前置(66H、F2H、F3H)之舊制SSE指令,這些舊制SIMD前置被編碼成SIMD前置編碼欄位;以及,在被提供給解碼器的PLA(以致於PLA可以執行這些舊制指令的舊制及EVEX等二格式而不用修改)之前,在運行時間被擴展成舊有SIMD前置。雖然較新的指令可以直接使用EVEX前置編碼欄位的內容作為運算碼延伸,但是,某些實施例為了一致性而以類似方式擴展但允許不同的意義由這些舊制SIMD前置規定。替代實施例可以重新設計PLA以支援2位元SIMD前置編碼,因而不要求擴展。
阿爾發欄位652(EVEX位元組3,位元[7]-EH;也稱為EVEX.EH、EXEX.rs、EVEX.RL、EVEX.寫入遮罩控制、及EVEX.N;也以α顯示),如以往所述般,此欄位是內容特定的。稍後提供額外說明。
貝他欄位654(EVEX位元組3,位元[6:4])-SSS;也稱為EVEX.s2-0、EXEX.r2-0、EVEX.rr1、EVEX.LL0、
EVEX.LLB;也以β β β顯示)-如先前所述般,此欄位是內容特定的。稍後提供額外說明。
REX’欄位710-這是REX’欄位的餘部且是可被用以將延伸的32暫存器組中的上16或下16編碼之EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’)。此位元以位元反轉格式儲存。1的值被用以將下16暫存器編碼。換言之,藉由結合EVEX.V’、EVEX.vvvv以形成V’VVVV。
寫入遮罩欄位670(EVEX位元組3,位元[2:0]-kkk)-如同先前所述般,其內容指定寫入遮罩暫存器中的暫存器索引。在發明的一實施例中,特定值EVEX.kkk=000具有特別的表現,暗指無寫入遮罩用於特定的指令(這可以以各種方式實施,包含使用實體接線至繞過遮罩硬體的所有組件或硬體之寫入遮罩)。
這也稱為運算碼位元組。在此欄位中指定運算碼的一部份。
修改符欄位646(MODR/M.MOD,位元[7-6]-MOD欄位742)-如同先前所述般,MOD欄位742的內容區別記憶體存取與非記憶體存取操作。稍後將進一步說明此欄位。
MODR/M.reg欄位744,位元[5,3]-ModR/M.reg欄位
的角色可以總合為二情形:ModR/M.reg將目的地暫存器運算元或源暫存器運算元編碼,或是ModR/M.reg被當作運算碼延伸且不被用以將任何指令運算元編碼。
MODR/M.r/m欄位746,位元[2-0]的角色可以包含下述:將指引記憶體位址的指令運算元編碼,或者,ModR/M.r/m將目的地暫存器運算元或源暫存器運算元編碼。
比例欄位660(SIB.SS,位元[7-6]-如同先前所述般,比例欄位660的內容是用於記憶體位址產生。稍後將進一步說明此欄位。
SIB.xxx 754(位元[5-3]及SIB.bbb 756(位元[2-0])-這些欄位的內容先前已被指稱與暫存器索引Xxxx及Bbbb有關。
位移欄位662A(位元組7-10)-當MOD欄位742含有10時,位元組7-10是位移欄位662A,且其工作與舊制32位元位移(disp32)相同並以位元組粒度工作。
位移因數欄位662B(位元組7)-當MOD欄位742含有01時,位元組7是位移因數欄位662B。此欄位的位置與以位元組粒度工作的舊制x86指令組8位元位移(disp8)的位置相同。由於disp8是正負號延伸,所以,
其僅可以在-128與127位元組偏移之間定址;以64位元組快取列的觀點而言,disp8使用可以被設定為僅四個真正有用的值-128、-64、0、及64之8位元;由於通常需要更大的範圍,所以,使用disp32;但是,disp32要求4位元組。與disp8和disp32相反,位移因數欄位662B是disp8的再解譯;當使用位移因數欄位662B時,真實的位移由位移因數欄位的內容乘以記憶體運算元存取(N)所決定。此型式的位移被稱為disp8*N。這降低平均的指令長度(用於位移但是具有更大範圍的單一位元組)。此被壓縮的位移是根據有效的位移是記憶體存取的粒度之倍數的假設,因此,位址偏移的冗餘低階位元不需被編碼。換言之,位移因數欄位662B替代舊制x86指令集8位元位移。因此,位移因數欄位662B以同於x86指令集8位元位移的方式編碼(以致於ModRM/SIB編碼規則不變),僅有的例外是disp8被超載至disp8*。換言之,編碼規則或編碼長度沒有變化,但是僅有硬體對位移值的解譯有變化(這需要將位移依記憶體運算元的大小來比例化以取得位元組方式的位址偏移)。
立即欄位672如先前所述地操作。
圖8是根據本發明的一實施例之暫存器架構800的方
塊圖。於下列出暫存器架構的暫存器檔案及暫存器架構:
向量暫存器檔案810-在所示的實施例中,有812位元寬的32個向量暫存器;這些暫存器稱為zmm0至zmm31。較低的16zmm暫存器的低階656位元被覆蓋於暫存器ymm0-16之上。較低的16zmm暫存器的低階128位元(ymm暫存器的低階128位元)被覆蓋於暫存器xmm0-15之上。特定向量友善指令格式700如下述表格中所示般對這些被覆蓋的暫存器檔案操作。
換言之,向量長度欄位659B在最大長度與一或更多其它較短的長度之間選取,其中,每一此較短長度是先前長度的長度之一半;以及,不具向量長度欄位659B的指令樣板對最大向量長度操作。此外,在一實施例中,特定向量友善指令格式700的等級B指令樣板對分組的或純量的單/雙精度浮點資料及分組的或純量的整數資料操作。純量操作是對zmm/ymm/xmm暫存器中最低階資料元件位
置執行的操作;更高階的資料元件位置視實施例而留在它們在指令之前的相同位置或者被零化。
寫入遮罩暫存器815-在所示的實施例中,有8個寫入遮罩暫存器(k0至k7),各寫入暫存器大小為64位元。如先前所述,在本發明的一實施例中,向量遮罩暫存器k0無法作為寫入遮罩;當正常標示k0的編碼用於寫入遮罩時,其選取0xFFFF的實體接線的寫入遮罩,有效地使用於該指令的寫入遮罩禁能。
多媒體擴充控制狀態暫存器(MXCSR)820-在所示的實施例中,此32位元暫存器提供狀態及控制浮點操作中使用的位元。
一般用途暫存器825-在所示的實施例中,有十六個64位元的一般用途暫存器,它們與現存的x86定址模式一起作用以將記憶體運算元定址。這些暫存器以名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15表示。
擴充旗標(EFLAG)暫存器830暫存器-在所示實施例中,此32位元暫存器用以記錄很多指令的結果。
浮點控制字(FCW)暫存器835及浮點狀態字(FSW)暫存器840-在所示實施例中,這些暫存器由x87指令集擴充使用以在FCW情形中設定整修模式、例外遮罩及旗標,以及在FSW的情形中保持追蹤例外。
純量浮點堆疊暫存器檔案(x87堆疊)845,MMX分組整數平坦暫存器檔案850混疊於其上-在所示的實施例
中,x87堆疊是八元堆疊,用以使用x87指令集延伸,對32/64/80位元浮點資料執行純量浮點操作;而MMX暫存器被用以對64位元分組的整數資料執行操作,以及為了某些在MMX及XMM暫存器之間執行的操作而固持運算元。
區段暫存器855-在所示實施例中,有六個16位元暫存器用以儲存用於區段化的位址產生。
RIP暫存器865-在所示實施例中,此64位元暫存器儲存指令指標器。
本發明的替代實施例可以使用更寬或更窄的暫存器。此外,本發明的替代實施例可以使用更多、更少、或不同的暫存器檔案及暫存器。
圖9A-B是方塊圖,顯示舉例說明的有序處理器架構。這些舉例說明的實施例是圍繞有序CPU核心的多個例示而設計,所述有序CPU核心擴增有寬向量處理器(VPU)。取決於e13t應用,核心經由高頻寬互連網路以與某些固定的功能邏輯、記憶體I/O介面、及其它必要的I/O邏輯通訊。舉例而言,作為獨立GPU之本實施例的實施典型上將包含PCIe匯流排。
圖9A是根據本發明的實施例之單一CPU核心、以及其對晶粒上互連網路902的連接及其等級2(L2)快取904的區域子集合之方塊圖。指令解碼器900支援具有包
含特定向量指令格式700之擴充的x86指令集。雖然在一實施例中(為簡化設計),純量單元908及向量單元910使用分別的暫存器組(分別地,純量暫存器912及向量暫存器914)以及在它們之間傳輸的資料被寫至記憶體並接著從等級1(L1)快取906讀回,但是,本發明的替代實施例可以使用不同的方式(例如,使用單一暫存器集合或是包含允許資料在二暫存器檔案之間傳輸而不用被寫入及讀回的通訊路徑)。
L1快取906允許低潛候期存取快取記憶體至純量及向量單元中。與向量友善指令格式的載入作業指令一起,這意指L1快取906被視為有點類似擴充的暫存器檔案。這顯著地增進很多演繹法的性能,特別是藉由逐出提示欄位652B。
L2快取的區域子集合904是全區L2快取的一部份,全區L2快取是被分割成分別的區域子集合,每一CPU核心一區域子集合。各CPU對其自己的區域子集合L2快取904具有直接存取路徑。由CPU核心讀取的資料儲存在其L2快取子集合904中,以及,可以與其它存取它們自己的區域L2快取子集合之CPU平行地被快速存取。由CPU核心寫入的資料儲存在它自己的L2快取子集合904中及於需要時從其它子集合湧入。環式網路確保用於共用資料的相干性。
圖9B是根據本發明的實施例之圖9A中的CPU核心之部份放大視圖。圖9B包含L1快取904之L1資料快取
906A部份、以及與向量單元910及向量暫存器914有關的更多細節。具體而言,向量單元910是16寬的向量處理單元(VPU)(請參見16寬的ALU 928),其執行整數、單精度浮動、及雙精度浮動指令。VPU以拌和單元920支援拌和暫存器輸入、以數值轉換單元922A-B支援數值轉換、以及以記憶體輸入上的複製單元924支援複製。寫入遮罩暫器926允許預測結果向量寫入。
舉例而言,以多種方式拌和暫存器資料,以支援矩陣乘法。來自記憶體的資料可以經過VPU大道複製。在圖形及非圖形平行資料處理中,這是常見的操作,顯著地增加快取效率。
環式網路是雙向的,以允許例如CPU核心、L2快取及其它邏輯區塊等代理器在晶片內彼此通訊。各環式資料路徑是每一方向812位元寬。
圖10是方塊圖,顯示根據本發明的實施例之舉例說明的亂序架構以及可被視為例如圖1中上述的管線等管線的更具體說明。具體而言,圖10顯示已被修改成併有向量友善指令格式及其執行之熟知的亂序架構。在圖10中,箭頭代表二或更多單元之間的耦合以及箭頭的方向表示這些單元之間的資料流動的方向。圖10包含耦合至執行引擎單元1010的前端單元1005及記憶體單元1015;執行引擎單元1010又耦合至記憶體單元1015。
前端單元1005包含耦合至等級2(L2)分枝預測單元1002的等級1(L1)分枝預測單元1022。L1及L2分枝預測單元1020和1022耦合至L1指令快取單元1024。L1指令快取單元1024耦合至指令轉譯旁看緩衝器(TLB)1026,指令轉譯旁看緩衝器(TLB)1026又耦合至指令擷取及預解碼單元1028。指令擷取及預解碼單元1028耦合至指令佇列單元1030。指令佇列單元1030又耦合至解碼單元1032。解碼單元1032包含複合解碼器單元1034及三個簡單的解碼器單元1036、1038、及1040。解碼單元1032包含微碼ROM單元1042。解碼單元1032如上述解碼級區中先前所述般地操作。L1指令快取單元1024又耦合至記憶體單元1015中的L2快取單元1048。指令TLB單元1026又耦合至記憶體單元1015中的第二級TLB單元1046。解碼單元1032、微碼ROM單元1042、及迴圈串偵測器單元1044各耦合至執行引擎單元1010中的重命名/分配器單元1056。
執行引擎單元1010包含耦合至退出單元1074的重命名/分配器單元1056及聯合排程器單元1058。退出單元1074又耦合至執行單元1060以及包含重排序緩衝器單元1078。聯合排程器單元1058又耦合至實體暫存器檔案單元1076,實體暫存器檔案單元1076耦合至執行單元1060。實體暫存器檔案單元1076包括向量暫存器單元1077A、寫入遮罩暫存器單元1077B、及純量暫存器單元1077C;這些暫存器單元可以提供向量暫存器810、向量
遮罩暫存器815、及一般用途暫存器825;以及,實體暫存器檔案單元1076包含未顯示的其它暫存器檔案(例如,混疊於MMX分組整數平坦暫存器檔案850的純量浮點堆疊暫存器檔案845)。執行單元1060包含三個混合純量及向量單元1062、1064、及1072;載入單元1066;儲存位址單元1068;儲存資料單元1070。載入單元1066、儲存位址單元1068、及儲存資料單元1070均又耦合至記憶體單元1015中的資料TLB單元1052。
記憶體單元1015包含第二級TLB單元1046,第二級TLB單元1046耦合至資料TLB單元1052。資料TLB單元1052耦合至L1資料快取單元1054。L1資料快取單元1054又耦合至L2快取單元1048。在某些實施例中,L2快取單元1048又耦合至主記憶體單元1015之內及/或之外的L3及更高等級的快取單元1050。
舉例而言,舉例說明的亂序架構可以實施如下所述的管線8200:1)指令擷取及預解碼單元1028執行擷取及長度解碼級;2)解碼單元1032執行解碼級;3)重命名/分配器單元1056執行分配級及重命名級;4)聯合排程器1058執行排程級;5)實體暫存器檔案單元1076、重排序緩衝器單元1078、及記憶體單元1015執行暫存器讀取/記憶體讀取級;執行單元1060執行執行/資料轉換級;6)記憶體單元1015及重排序緩衝器單元1078執行寫回/記憶體寫入級1960;7)退出單元1074執行ROB讀取級;8)牽涉例外處理級的多種單元;及9)退出單元1074及
實體暫存器檔案單元1076執行確定級。
圖15是根據本發明的實施例之具有整合記憶體控制器及圖形之單核心處理器和多核心處理器1500的方塊圖。圖15中的粗線框顯示具有單核心1502A的處理器1500、系統代理器1510、一或更多匯流排控制器單元1516,而選加的虛線框顯示具有多核心1502A-N的替代處理器1500、系統代理器單元1510中的一或更多整合的記憶體控制器元1514的組、以及特別用途的邏輯1508。
記憶體階層包含在核心內的一或更多等級的快取、一或更多共用快取單元1506、及耦合至整合記憶體控制器單元1514組之外部記憶體(未顯示)。共用快取單元1506組可以包含例如等級2(L2)、等級3(L3)、等級4(L4)、或其它等級快取等一或更多中級快取、最後等級快取(LLC)、及/或其組合。雖然在一實施例中,環式互連單元1512將整合圖形邏輯1508、共用快取單元1506的組、及系統代理器單元1510,但是,替代實施例可以使用任何數目的已知技術來互連這些單元。
在某些實施例中,一或更多核心1502A-N能夠多緒化。系統代理器1510包含那些元件協調及操作核心1502A-N。系統代理器單元1510可以包含例如電力控制單元(PCU)及顯示單元。PCU可以是或包含用於調節核心1502A-N及整合圖形邏輯1508的電力狀態所需的邏輯
及元件。顯示單元是用於驅動一或更多外部連接的顯示器。
以架構及/或指令集的觀點而言,核心1502A-N可以是同質的或異質的。舉例而言,核心1502A-N中的某些核心是有序的(例如,類似於圖9A-9B中所示般),而其它核心是亂序的(例如,類似於圖10中所示般)。關於另一實施例,核心1502A-N中的二或更多核心能夠執行相同的指令集,而其它核心能夠僅執行該指令集的子集合或不同的指令集。這些核心中至少一核心能夠執行此處所述的向量友善指令格式。
處理器可為一般用途的處理器,例如可從加州聖克拉拉(Santa Clara)之英特爾公司取得的CoreTM i3、i5、i7、2 Duo及Quad、XeonTM、ItaniumTM處理器。或者,處理器可以來自其它公司。處理器可以是特別用途的處理器,例如網路或通訊處理器、壓縮引擎、圖形處理器、共處理器、嵌入式處理器、等等。處理器可以實施於一或更多晶片上。處理器1500可以是使用例如BiCMOS、CMOS、或NMOS等多種處理技術中的任一技術而實施於一或更多基底上以及/或其一部份。
圖11-13是舉例說明的適用於包含處理器1500的系統,而圖11是包含一或更多核心1502之舉例說明的系統晶片(SoC)。用於膝上型電腦、桌上型電腦、手持PC、
個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、電動遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持裝置、及各式各樣的其它電子裝置等領域中熟知的其它系統設計及配置也是適合的。一般而言,能夠併有此處所揭示的處理器及/或其它執行邏輯的眾多種類的系統或電子裝置通常是適合的。
現在參考圖11,其顯示根據本發明的一實施例之系統1100的方塊圖。系統1100可以包含一或更多處理器1110、1115,它們耦合至圖形記憶體控制器集線器(GMCH)1120。在圖11中以虛線表示增加的處理器1115之選加的本質。
各處理器110、1115可為處理器1500的某版本。但是,應注意,整合圖形邏輯及整合記憶體控制單元將存在於處理器1110、1115中。
圖11顯示GMCH 1120可以耦合至記憶體1140,舉例而言,記憶體1140可以是動態隨機存取記憶體(DRAM)。對於至少一實施例而言,DRAM可以與非揮發性快取有關。
GMCH 1120可為晶片組、或晶片組的一部份。GMCH 1120可以與處理器1110、1115相通訊以及控制處理器1110、1115與記憶體1140之間的互動。GMCH 1120也作為處理器1110、1115與系統1100的其它元件之間的加速
匯流排介面。對於至少一實施例,GMCH 1120經由例如前側匯流排(FSB)1195等多點匯流排而與處理器1110、1115通訊。
此外,GMCH 1120耦合至顯示器1145(例如平板顯示器)。GMCH 1120包含整合圖形加速器。GMCH 1120又耦合至輸入/輸出(I/O)控制器集線器(ICH)1150,輸入/輸出(I/O)控制器集線器(ICH)1150用以耦合各式各樣的週邊裝置至系統1100。舉例而言,圖11顯示外部圖形裝置1160、以及另一週邊裝置1170,外部圖形裝置1160為耦合至ICH 1150之離散圖形裝置。
或者,增加的或不同的處理器也可以存在於系統1100中。舉例而言,增加的處理器1115可以包含與處理器1110相同的增加的處理器、與處理器1110異質或不對稱的增加的處理器、加速器(例如圖形加速器或數位訊號處理(DSP)單元)、現場可編程閘陣列、或任何其它處理器。以包含架構、微架構、熱、耗電特徵、等等度量計量光譜的觀點而言,實體資源1110、1115之間有各種差異。這些差異可以有效地突顯它們本身在處理元件1110、1115之間的不對稱性及異質性。對於至少一實施例,各式各樣的處理元件駐於相同的晶粒封裝中。
現在參考圖12,顯示根據本發明的實施例之第二系統1200的方塊圖。如圖12中所示般,多處理器系統1200是點對點互連系統,以及包含經由點對點互連1250耦合的第一處理器1270和第二處理器1280。如圖12所
示,各處理器1270及1280可以是處理器1500的某版本。
或者,處理器1270和1280中之一或更多可為處理器以外的元件,例如加速器或現場可編程閘陣列。
雖然僅顯示二處理器1270、1280,但是,須瞭解本發明的範圍不侷限於此。在其它實施例中,一或更多增加的處理元件可以存在於給定的處理器中。
處理器1270也包含整合記憶體控制器集線器(IMC)單元1272和點對點介面1276和1278。類似地,第二處理器1280包含IMC 1282和P-P介面1286和1288。處理器1270、1280使用P-P介面電路1278、1288而經由點對點(PtP)介面1250交換資訊。如圖12所示,IMC 1272及1282將處理器耦合至各別記憶體,亦即記憶體1242和記憶體1244,它們可以是本地附著至各別處理器的主記憶體的部份。
處理器1270、1280使用點對點介面電路1276、1294、1286、1298,經由個別的P-P介面1252、1254而均可與晶片組1290交換資訊。晶片組1290經由高性能圖形介面1239,也與高性能圖形處理電路1238交換資料。
共用的快取(未顯示)可以包含任一處理器中或二處理器的外部、但經由P-P互連而與處理器連接,以致於假使處理器處於低電力模式中時,任一或二處理器的本地快取資訊可以儲存在共用的快取中。
晶片組1290可以經由介面1296而耦合至第一匯流排
1216。在一實施例中,第一匯流排1216可以是週邊元件互連(PCI)匯流排,或是例如PCI快速匯流排或其它第三代I/O互匯流排等匯流排,但是,本發明的範圍不侷限於此。
如圖12中所示般,各式各樣的I/O裝置1214與匯流排橋接器1218耦合至第一匯流排1216,匯流排橋接器1218耦合第一匯流排1216至第二匯流排1220。在一實施例中,第二匯流排1220可以是低接腳數(LPC)匯流排。在一實施例中,各種裝置可以耦合至第二匯流排1220,舉例而言,包含鍵盤及/或滑鼠1222、通訊裝置1226及例如碟片驅動器或其它大量儲存裝置等包含碼1230的儲存單元1228。此外,音訊I/O 1224可以耦合至第二匯流排1220。注意,其它架構是可能的。舉例而言,取代圖12的點對點架構,系統可以實施多點匯流排或其它此類架構。
現在參考圖13,其顯示根據本發明的實施例之第三系統1300之方塊圖。圖12及13中類似的元件帶有類似的代號,以及,圖12的某些態樣在圖13中被省略,以免模糊圖13的其它態樣。
圖13顯示處理元件1270、1280分別包含整合的記憶體及I/O控制邏輯(CL)1272和1282。對於至少一實施例中,CL 1272、1282包含例如上述參考圖8、9、及12所述的整合記憶體控制器集線器邏輯(IMC)。此外,CL 1272、1282也包含I/O控制邏輯。圖13顯示不僅記憶體
1242、1244耦合至CL 1272、1282,I/O裝置1314也耦合至控制邏輯1272、1282。舊制I/O裝1315耦合至晶片組1290。
現在參考圖14,其顯示根據本發明的實施例之SoC 1400的方塊圖。圖15中類似的元件帶有類似的代號。而且,虛線框是關於更多進階的SoCs的選加特點。在圖14中,互連單元1402耦合至:應用處理器1410,包含一或更多核心1502A-N及共用快取單元1506的集合;系統代理器單元1510;匯流排控制器單元1516;整合記憶體控制器單元1514;包含整合圖形邏輯1508、用於提供靜態及/或攝影機功能的影像處理器1424、用於提供硬體音訊加速之音訊處理器1426、以及用於提供視訊編碼/解碼加速的視訊處理器之一或更多媒體處理器1420的組;靜態隨機存取記憶體(SRAM)單元1430;直接記憶體存取(DMA)單元1432;以及用於耦合至一或更多外部顯示器的顯示單元1440。
此處揭示的機構實施例可以以硬體、軟體、韌體或這些實施方式的結合來實施。本發明的實施例可以實施成在可編程系統上執行的電腦程式或程式碼,可編程系統包括至少一處理器、儲存系統(包含依電性及非依電性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
程式碼可以應用至輸入資料以執行此處所述的功能和產生輸出資訊。輸出資訊可以以已知方式應用至一或更多
輸出裝置。為了此應用,處理系統包含具有例如數位訊號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器等處理器之任何系統。
程式碼可以以高階程式或物件導向的程式語言實施,以與處理系統通訊。假使需要時,程式碼也可以以組合或機器語言來實施。事實上,此處所述的機構在範圍上不侷限於任何特定的程式語言。在任何情形中,語言可以是編譯或解譯的語言。
至少一實施例的一或更多態樣可以由儲存在機器可讀取的媒體上之代表指令實施,代表指令代表處理器內各種邏輯,代表指令由機器讀取時促使機器製造邏輯以執行此處所述的技術。稱為「IP核心」的這些代表可以儲存在實體的、機器可讀取的媒體並供應至各式各樣的客戶或製造設施,而載入至真正地製造邏輯的製造機器或處理器。
此機器可讀取的媒體包含但不限於由機器或裝置製造或形成的物件之非暫時性、實體配置,包括例如硬碟等儲存媒體、包含軟碟、光碟、光碟唯讀記憶體(CD-ROM)、可重寫光碟(CD-RW)、及磁光碟等任何其它型式的碟片、例如唯讀記憶體(ROM)、例如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)等隨機存取記憶體(RAM)、可抹拭可編程唯讀記憶體(EPROM)、快閃記憶體、電可抹拭可編程唯讀記憶體(EEPROM)等半導體裝置、磁性或光學卡、或適用於儲存電子指令的任何其它型式的媒體。
因此,本發明的實施例也包含含有向量友善指令格式的指令或含有設計資料之非暫時的、實體的機器可讀取的媒體,所述設計資料是例如硬體說明語言(HDL),其界定此處所述的結構、電路、裝置、處理器及/或系統特徵。這些實施例也意指程式產品。
在某些情形中,指令轉換器可以用以將指令從源指令集轉換至標的指令集。舉例而言,指令轉換器可以將指令轉譯(例如,使用靜態二進位轉譯、包含動態編譯的動態二進位轉譯)、變形、模仿、或其它方式轉換至由核心處理的一或更多其它指令。指令轉換器可以以軟體、硬體、韌體、或其結合來實施。指令轉換器可以是在處理器上、不在處理器上、或部份在處理器上及部份不在處理器上。
圖16是方塊圖,根據本發明的實施例之比較使用軟體指令轉換器以將源指令集中的二進位指令轉換成標的指令集中的二進位指令。在顯示的實施例中,指令轉換器是軟體指令轉換器,但是,指令轉換器可以替代地以軟體、硬體、或其各種結合來實施。圖16顯示高階語言1602的程式,其可以由x86編譯器1604編譯以產生x86二進位碼1606,二進位碼1606可以由具有至少一x86指令集核心1616的處理器原地執行(假定經過編譯的某些指令是向量友善指令格式)。具有至少一x86指令集核心1616的處理器代表藉由共容地執行或其它方式地處理下述,而能夠與具有至少一x86指令集核心的英特爾處理器執行實質上相同功能的任何處理器:(1)英特爾x86指令集核
心的指令集的實質部份,或是(2)以在具有至少一x86指令集核心的Intel處理器上運行為目的之應用程式或其它軟體的物件碼版本,以便取得與具有至少一x86指令集核心的英特爾處理器實質上相同的結果。x86編譯器1604代表可以操作以產生x86二進位碼1606(例如,物件碼)之編譯器,x86二進位碼1606藉由或不藉由增加的鏈結處理,都可以在具有至少一x86指令集核心1616的處理器上執行。類似地,圖16顯示高階語言1602的程式,使用替代指令集編譯器1608,可以將其編譯以產生替代指令集二進位碼1610,替代指令集二進位碼1610可以由不具有至少一x86指令集核心1614的處理器(例如,具有執行例如加州Sunnyvale的MIPS Technologies公司的MIPS指令集及/或加州Sunnyvale的ARM Holdings公司的ARM指令集之核心的處理器)原地執行。指令轉換器1612用以將x86二進位碼1606轉換成可以由不具有x86指令集核心1614的處理器原地執行的碼。由於能夠如此執行的指令轉換器難以製造,所以,此轉換的碼不太可能與替代指令集二進位碼1610相同;但是,所述轉換的碼將完成一般操作及由來自替代指令集的指令組成。因此,指令轉換器1612代表軟體、韌體、硬體或其組合,其經由仿真、模擬或任何其它處理而允許不具有x86指令集處理器或核心的處理器或其它電子裝置執行x86二進位碼1606。
此處揭示之向量友善指令格式的指令之某些操作可以
由硬體組件執行、或是可以以機器可執行的指令具體實施,這些指令被用以促使及/或至少造成依指令編程的電路或硬體組件執行操作。電路包含一般用途或特別用途的處理器、或邏輯電路,這些僅為少數實例。操作也可以選擇性地由硬體及軟體的結合來執行。執行邏輯及/或處理器包含特定的或特別的電路或其它邏輯,以回應機器指令或是一或更多導自機器指令的控制訊號,而儲存指令特定結果運算元。舉例而言,此處揭示的指令的實施例可以在圖11-16中的一或更多系統中執行及向量友善指令格式的指令之實施例可以儲存在要由系統執行的程式碼中。此外,這些圖式的處理元件可以利用此處詳述的管線及/或架構(例如有序及亂序架構)。舉例而言,有序架構的解碼單元可以將指令解碼,將解碼的指令遞送給向量或純量單元、等等。
上述說明僅是顯示本發明的較佳實施例。從上述說明中,也應清楚,特別是在成長快速且不易預見進展之技術領域中,在不悖離後附的申請專利範圍及其均等範圍之本發明的原理之下,習於此技藝者,可以在配置及細節上修改本發明。舉例而言,一或更多方法的操作可以結合或進一步拆開。
雖然已說明將原本地執行向量友善指令格式之實施例,但是,經由在執行不同的指令集之處理器上運算的仿
真層(例如,執行例如加州Sunnyvale的MIPS Technologies公司的MIPS指令集之處理器、執行加州Sunnyvale的ARM Holdings公司的ARM指令集之處理器),本發明的替代實施例可以執行向量友善指令格式。而且,雖然在圖式中的流程圖顯示由本發明的某些實施例執行之特定次序的操作,但是,應瞭解,此次序僅為舉例說明(例如,替代實施例可以以不同次序執行操作、結合某些操作、重疊某些操作、等等)。
在上述說明中,為了說明之目的,揭示眾多特定細節,以助於完整瞭解本發明的實施例。但是,將清楚知道,習於此技藝者沒有這些特定細節的某些細節,仍可實施一或更多其它實施例。所述之特定實施例並非要限定本發明,而是要說明本發明的實施例。本發明的範圍非由上述特定實例所決定,而是僅由下述申請專利範圍決定。
Claims (25)
- 一種處理器,包含:解碼器,用以將指令解碼成解碼的指令,該指令包含:條件向量的輸入運算元,其具有指明迴圈的條件對於該迴圈的各分別的疊代是否為真、基礎值和跨幅的元件;以及執行單元,用以執行該解碼的指令以提供結果輸出向量,該執行單元用以藉由在每次該條件向量的對應元件位置中的該條件為真時,將該基礎值以該跨幅遞減,而在該結果輸出向量的各元件位置中產生元件。
- 如申請專利範圍第1項的處理器,其中,該條件向量的各對應元件位置是該結果輸出向量的相同之元件位置。
- 如申請專利範圍第1項的處理器,其中,該條件向量的各對應元件位置是該結果輸出向量的正前的元件位置。
- 如申請專利範圍第1項的處理器,其中,該基礎值和該跨幅是立即純量運算元。
- 如申請專利範圍第1項的處理器,其中,該基礎值和該跨幅各是向量運算元。
- 如申請專利範圍第1項的處理器,其中,該指令同時平行地處理該結果輸出向量的多個元件。
- 如申請專利範圍第1項的處理器,其中,該指令序列地處理該結果輸出向量的多個元件。
- 如申請專利範圍第1項的處理器,其中,對於該結果輸出向量的第一元件位置,值是該基礎值。
- 如申請專利範圍第8項的處理器,其中,該基礎值是來自該指令的在前執行之帶入值。
- 如申請專利範圍第8項的處理器,其中,對於該結果輸出向量的第一元件位置以外的該結果輸出向量的元件位置,該值是來自正好在前的結果輸出向量元件之值。
- 一種方法,包含:將指令解碼成解碼的指令,該指令包含:條件向量的輸入運算元,其具有指明迴圈的條件對於該迴圈的各分別的疊代是否為真、基礎值和跨幅的元件;以及執行該解碼的指令以藉由在每次該條件向量的對應元件位置中的該條件為真時,將該基礎值以該跨幅遞減,而在該結果輸出向量的各元件位置中產生元件來提供結果輸出向量。
- 如申請專利範圍第11項的方法,其中,該條件向量的各對應元件位置是該結果輸出向量的相同之元件位置。
- 如申請專利範圍第11項的方法,其中,該條件向量的各對應元件位置是該結果輸出向量的正前的元件位置。
- 如申請專利範圍第11項的方法,其中,該基礎值和該跨幅是立即純量運算元。
- 如申請專利範圍第11項的方法,其中,該基礎 值和該跨幅各是向量運算元。
- 一種計算系統,包含:系統記憶體;及處理器,耦合至該系統記憶體,該處理器包含:解碼器,用以將指令解碼成解碼的指令,該指令包含:條件向量的輸入運算元,其具有指明迴圈的條件對於該迴圈的各分別的疊代是否為真、基礎值和跨幅的元件;以及執行單元,用以執行該指令以提供結果輸出向量,該執行單元用以藉由在每次該條件向量的對應元件位置中的該條件為真時,將該基礎值以該跨幅遞減,而在該結果輸出向量的各元件位置中產生元件。
- 如申請專利範圍第16項的計算系統,其中,該條件向量的各對應元件位置是該結果輸出向量的相同之元件位置。
- 如申請專利範圍第16項的計算系統,其中,該條件向量的各對應元件位置是在該結果輸出向量的正前的元件位置。
- 如申請專利範圍第16項的計算系統,其中,基礎值和該跨幅是立即純量運算元。
- 如申請專利範圍第16項的計算系統,其中,該基礎值和該跨幅各是向量運算元。
- 一種儲存當由機器執行時使該機器用以執行方法的非暫態機器可讀媒介,該方法包含: 將指令解碼成解碼的指令,該指令包含:條件向量的輸入運算元,其具有指明迴圈的條件對於該迴圈的各分別的疊代是否為真、基礎值和跨幅的元件;以及執行該解碼的指令以藉由在每次該條件向量的對應元件位置中的該條件為真時,將該基礎值以該跨幅遞減,而在結果輸出向量的各元件位置中產生元件來提供該結果輸出向量。
- 如申請專利範圍第21項的非暫態機器可讀媒介,其中,該條件向量的各對應元件位置是該結果輸出向量的相同之元件位置。
- 如申請專利範圍第21項的非暫態機器可讀媒介,其中,該條件向量的各對應元件位置是在該結果輸出向量的正前的元件位置。
- 申請專利範圍第21項的非暫態機器可讀媒介,其中,基礎值和該跨幅是立即純量運算元。
- 申請專利範圍第21項的非暫態機器可讀媒介,其中,該基礎值和該跨幅各是向量運算元。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/327,527 | 2014-07-09 | ||
US14/327,527 US9424039B2 (en) | 2014-07-09 | 2014-07-09 | Instruction for implementing vector loops of iterations having an iteration dependent condition |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201723818A TW201723818A (zh) | 2017-07-01 |
TWI622930B true TWI622930B (zh) | 2018-05-01 |
Family
ID=55067628
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106107044A TWI622930B (zh) | 2014-07-09 | 2015-06-03 | 用於實施具有疊代相依條件之疊代的向量迴圈的處理器、方法和計算系統 |
TW104117960A TWI582694B (zh) | 2014-07-09 | 2015-06-03 | 用於實施具有疊代相依條件之疊代的向量迴圈的處理器、方法和計算系統 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104117960A TWI582694B (zh) | 2014-07-09 | 2015-06-03 | 用於實施具有疊代相依條件之疊代的向量迴圈的處理器、方法和計算系統 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9424039B2 (zh) |
KR (2) | KR101712730B1 (zh) |
CN (1) | CN105278920B (zh) |
TW (2) | TWI622930B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10282204B2 (en) * | 2016-07-02 | 2019-05-07 | Intel Corporation | Systems, apparatuses, and methods for strided load |
GB2558955B (en) * | 2017-01-24 | 2020-12-23 | Advanced Risc Mach Ltd | An apparatus and method for generating and processing a trace stream indicative of execution of predicated vector memory access instructions |
US10509653B2 (en) * | 2017-02-10 | 2019-12-17 | Intel Corporation | Vector processing system |
US11579881B2 (en) * | 2017-06-29 | 2023-02-14 | Intel Corporation | Instructions for vector operations with constant values |
US10592246B2 (en) | 2017-07-12 | 2020-03-17 | International Business Machines Corporation | Low latency execution of floating-point record form instructions |
US10534881B2 (en) * | 2018-04-10 | 2020-01-14 | Advanced Micro Devices, Inc. | Method of debugging a processor |
US10846260B2 (en) * | 2018-07-05 | 2020-11-24 | Qualcomm Incorporated | Providing reconfigurable fusion of processing elements (PEs) in vector-processor-based devices |
US11144286B2 (en) * | 2019-01-14 | 2021-10-12 | Microsoft Technology Licensing, Llc | Generating synchronous digital circuits from source code constructs that map to circuit implementations |
US11507374B2 (en) | 2019-05-20 | 2022-11-22 | Micron Technology, Inc. | True/false vector index registers and methods of populating thereof |
US11403256B2 (en) | 2019-05-20 | 2022-08-02 | Micron Technology, Inc. | Conditional operations in a vector processor having true and false vector index registers |
US11340904B2 (en) | 2019-05-20 | 2022-05-24 | Micron Technology, Inc. | Vector index registers |
US11327862B2 (en) | 2019-05-20 | 2022-05-10 | Micron Technology, Inc. | Multi-lane solutions for addressing vector elements using vector index registers |
CN110428359B (zh) * | 2019-08-09 | 2022-12-06 | 南京地平线机器人技术有限公司 | 用于处理感兴趣区域数据的装置和方法 |
JP2021039658A (ja) * | 2019-09-05 | 2021-03-11 | 富士通株式会社 | Ac並列化回路、ac並列化方法及び並列情報処理装置 |
US11762658B2 (en) * | 2019-09-24 | 2023-09-19 | Advanced Micro Devices, Inc. | Matrix multiplication unit with flexible precision operations |
US11010862B1 (en) | 2019-11-14 | 2021-05-18 | Advanced Micro Devices, Inc. | Reduced bandwidth tessellation factors |
CN112052042B (zh) * | 2020-09-15 | 2023-08-15 | 厦门壹普智慧科技有限公司 | 一种数据流水线处理器系统 |
US12099838B2 (en) | 2020-12-23 | 2024-09-24 | Intel Corporation | Instruction and logic for sum of square differences |
CN114546488B (zh) * | 2022-04-25 | 2022-07-29 | 超验信息科技(长沙)有限公司 | 一种向量跨步指令的实现方法、装置、设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5537606A (en) * | 1995-01-31 | 1996-07-16 | International Business Machines Corporation | Scalar pipeline replication for parallel vector element processing |
US20020199086A1 (en) * | 2001-06-11 | 2002-12-26 | Broadcom Corporation | Setting execution conditions |
US7136989B2 (en) * | 2001-10-01 | 2006-11-14 | Nec Corporation | Parallel computation processor, parallel computation control method and program thereof |
US7249248B2 (en) * | 2002-11-25 | 2007-07-24 | Intel Corporation | Method, apparatus, and system for variable increment multi-index looping operations |
US7945768B2 (en) * | 2008-06-05 | 2011-05-17 | Motorola Mobility, Inc. | Method and apparatus for nested instruction looping using implicit predicates |
US8065502B2 (en) * | 2004-04-23 | 2011-11-22 | Apple Inc. | Macroscalar processor architecture |
US8745360B2 (en) * | 2008-09-24 | 2014-06-03 | Apple Inc. | Generating predicate values based on conditional data dependency in vector processors |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS59128670A (ja) * | 1983-01-12 | 1984-07-24 | Hitachi Ltd | ベクトル処理装置 |
US5247696A (en) * | 1991-01-17 | 1993-09-21 | Cray Research, Inc. | Method for compiling loops having recursive equations by detecting and correcting recurring data points before storing the result to memory |
WO1994003860A1 (en) * | 1992-08-07 | 1994-02-17 | Thinking Machines Corporation | Massively parallel computer including auxiliary vector processor |
GB2273377A (en) * | 1992-12-11 | 1994-06-15 | Hughes Aircraft Co | Multiple masks for array processors |
US5522074A (en) * | 1992-12-14 | 1996-05-28 | Nec Corporation | Vectorization system for vectorizing loop containing condition induction variables |
JPH1049368A (ja) * | 1996-07-30 | 1998-02-20 | Mitsubishi Electric Corp | 条件実行命令を有するマイクロプロセッサ |
US6009505A (en) * | 1996-12-02 | 1999-12-28 | Compaq Computer Corp. | System and method for routing one operand to arithmetic logic units from fixed register slots and another operand from any register slot |
US20040054877A1 (en) * | 2001-10-29 | 2004-03-18 | Macy William W. | Method and apparatus for shuffling data |
US20040193837A1 (en) * | 2003-03-31 | 2004-09-30 | Patrick Devaney | CPU datapaths and local memory that executes either vector or superscalar instructions |
US7275148B2 (en) * | 2003-09-08 | 2007-09-25 | Freescale Semiconductor, Inc. | Data processing system using multiple addressing modes for SIMD operations and method thereof |
SE1151232A1 (sv) * | 2011-12-20 | 2013-03-12 | Mediatek Sweden Ab | Exekveringsenhet för digital signalprocessor |
-
2014
- 2014-07-09 US US14/327,527 patent/US9424039B2/en not_active Expired - Fee Related
-
2015
- 2015-06-03 TW TW106107044A patent/TWI622930B/zh active
- 2015-06-03 TW TW104117960A patent/TWI582694B/zh active
- 2015-06-08 KR KR1020150080662A patent/KR101712730B1/ko active Application Filing
- 2015-06-09 CN CN201510313464.2A patent/CN105278920B/zh active Active
-
2016
- 2016-07-19 US US15/214,348 patent/US9921837B2/en active Active
-
2017
- 2017-02-24 KR KR1020170024609A patent/KR101817034B1/ko active IP Right Grant
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5537606A (en) * | 1995-01-31 | 1996-07-16 | International Business Machines Corporation | Scalar pipeline replication for parallel vector element processing |
US20020199086A1 (en) * | 2001-06-11 | 2002-12-26 | Broadcom Corporation | Setting execution conditions |
US7136989B2 (en) * | 2001-10-01 | 2006-11-14 | Nec Corporation | Parallel computation processor, parallel computation control method and program thereof |
US7249248B2 (en) * | 2002-11-25 | 2007-07-24 | Intel Corporation | Method, apparatus, and system for variable increment multi-index looping operations |
US8065502B2 (en) * | 2004-04-23 | 2011-11-22 | Apple Inc. | Macroscalar processor architecture |
US7945768B2 (en) * | 2008-06-05 | 2011-05-17 | Motorola Mobility, Inc. | Method and apparatus for nested instruction looping using implicit predicates |
US8745360B2 (en) * | 2008-09-24 | 2014-06-03 | Apple Inc. | Generating predicate values based on conditional data dependency in vector processors |
Also Published As
Publication number | Publication date |
---|---|
KR101817034B1 (ko) | 2018-01-09 |
KR20160006589A (ko) | 2016-01-19 |
KR20170027325A (ko) | 2017-03-09 |
TW201723818A (zh) | 2017-07-01 |
US20160328235A1 (en) | 2016-11-10 |
TW201610843A (zh) | 2016-03-16 |
CN105278920A (zh) | 2016-01-27 |
US9424039B2 (en) | 2016-08-23 |
CN105278920B (zh) | 2018-09-07 |
US20160011873A1 (en) | 2016-01-14 |
US9921837B2 (en) | 2018-03-20 |
KR101712730B1 (ko) | 2017-03-06 |
TWI582694B (zh) | 2017-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI622930B (zh) | 用於實施具有疊代相依條件之疊代的向量迴圈的處理器、方法和計算系統 | |
TWI756251B (zh) | 執行複數的熔合乘-加指令的系統與方法 | |
KR101722346B1 (ko) | 적분 이미지 계산 명령어를 위한 방법 및 장치 | |
CN108958799B (zh) | 用于确定直方图的指令 | |
TWI502499B (zh) | 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法 | |
TWI550512B (zh) | 擴展記憶體源至目的地暫存器及壓縮源暫存器至目的地記憶體位置之處理器 | |
TWI619073B (zh) | 在處理具有未對準資料列的陣列期間用於刪除未對準記憶體存取的處理器、非暫時的機器可讀取的媒體和計算系統 | |
CN107273095B (zh) | 用于对齐寄存器的系统、装置和方法 | |
TWI524266B (zh) | 用以偵測向量暫存器內相等元素之裝置及方法 | |
TWI489382B (zh) | 改良的萃取指令背景之設備及方法 | |
TWI578230B (zh) | 用於執行複數個乘法運算的方法和設備 | |
TWI489383B (zh) | 遮蔽排列指令的裝置及方法 | |
CN107102844B (zh) | 超级乘加(超级madd)指令 | |
TWI498815B (zh) | 用以響應於單一指令而執行橫向部分和之系統、裝置及方法 | |
CN107391086B (zh) | 改进置换指令的装置和方法 | |
TW201738733A (zh) | 執行指令以排列遮罩的系統及方法 | |
CN107193537B (zh) | 经改进的插入指令的装置和方法 | |
TW201346747A (zh) | 用於密碼應用程式之不升起算數旗標的三輸入運算元向量加法指令 | |
CN109643235B (zh) | 用于多源混合操作的装置、方法和系统 | |
TWI733718B (zh) | 用於獲得偶數和奇數資料元素的系統、裝置及方法 | |
TW201732574A (zh) | 用於改善向量通量的系統、方法及設備 | |
TWI517032B (zh) | 用以執行兩向量暫存器之對應填充資料元件間絕對差計算之系統、裝置及方法 | |
TWI599953B (zh) | 用以執行大整數算數運算之方法及裝置 |