TWI384400B - 用於非對稱雙路徑處理之電腦處理器、其操作方法和相關的電腦程式產品 - Google Patents
用於非對稱雙路徑處理之電腦處理器、其操作方法和相關的電腦程式產品 Download PDFInfo
- Publication number
- TWI384400B TWI384400B TW094109122A TW94109122A TWI384400B TW I384400 B TWI384400 B TW I384400B TW 094109122 A TW094109122 A TW 094109122A TW 94109122 A TW94109122 A TW 94109122A TW I384400 B TWI384400 B TW I384400B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- control
- data
- instructions
- bit
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims description 88
- 238000000034 method Methods 0.000 title claims description 13
- 238000004590 computer program Methods 0.000 title claims description 10
- 230000009977 dual effect Effects 0.000 title description 6
- 239000013598 vector Substances 0.000 claims description 16
- 238000001514 detection method Methods 0.000 claims description 2
- 230000001360 synchronised effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000003079 width control Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
- G06F9/30127—Register windows
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length 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/30181—Instruction operation extension or modification
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
- G06F9/3897—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
本發明係關於一種電腦處理器,一種操作該處理器之方法,以及一種包含一用於該電腦之指令集的電腦程式產品。
為提高電腦處理器速度,先前技藝架構既已採用雙執行路徑以執行各項指令。雙執行路徑處理器可根據單一指令多重資料(SIMD)原理來運算,利用運算平行化以提高處理器速度。
然而,雖利用雙執行路徑及SIMD處理作業,仍有對於提高處理器速度的持續需要。典型的雙執行路徑處理器利用兩個大致等同的通道,因此各個通道會處置控制碼及資料路徑碼兩者。已知的處理器雖支援32位元標準編碼及16位元「密集」編碼的組合,然此等法則卻受於數項缺點之苦,包含在16位元格式內的少數幾個位元裡缺少語意內容之缺點。
此外,傳統的一般目的性之數位信號處理器無法適配於對於許多項目的之應用特定演算法,包含執行特定化運算像是迴旋運算、快速傅黎葉轉換、Trellis/Viterbi編碼、共相關性、有限脈衝響應過濾以及其他運算。
在一根據本發明之具體實施例裡,提供一種電腦處理器,該處理器包含一用以解碼自一握持一序列指令封包之記憶體所取獲的各指令封包之解碼單元;以及第一及第二處理通道,各通道包含複數個功能單元,其中該第一處理通道能夠執行控制運算且包含一具有相對較窄之位元寬度的控制暫存器行列,而該第二處理通道能夠執行資料處理運算,而其中至少一輸入係一向量,且包含一具有相對為較寬之位元寬度的資料暫存器行列。其中該解碼單元可運作以偵測各指令封包,該指令封包係不論定義(i)待以於該第一處理通道上循序地執行之複數個控制指令,或是(ii)包含待予於該第二處理通道上同時地執行之至少一個資料處理指令的複數個指令,且視該偵測結果來控制該第一及第二通道。
在進一步的相關具體實施例裡,該第一處理通道可進一步包含一分支單元及一控制單元。該第二處理通道可進一步包含一固定資料執行單元及一可組態設定資料執行單元。該固定資料執行單元及該可組態設定資料執行單元兩者可根據一單一指令多重資料格式而運作。該第一及第二處理通道可共享一載入儲存單元。該載入儲存單元可利用該第一處理通道所供應之控制資訊,以及該第二處理通道所供應之資料。各指令封包可皆具有相同的位元長度,像是64位元長度。各控制指令可皆具有為18及24位元之間的長度,像是一21位元長度。各指令封包的性質可至少從一控制指令、一資料指令及一記憶體接取指令中所選定。各資料指令的位元長度可為例如34位元;且各記憶體接取指令的位元長度可為例如28位元。
在進一步之相關具體實施例裡,當該解碼單元偵測到該指令封包定義三種控制指令,該解碼單元可運作以將這三個控制指令供應給該第一處理通道,藉此循序地執行這三個控制指令。同時,當該解碼單元偵測該指令封包定義兩個包含至少一資料指令之指令時,該解碼單元可運作以將至少該資料指令供應予該第二處理通道,藉此同時地執行這兩個指令。該解碼單元可運作以在該序列之各指令封包裡的預設位元位置處讀取一組經指配位元之數值,以決定a)該指令封包究係定義複數個控制指令或複數個其中至少一者為一資料指令之指令;以及b)該指令在何處定義複數個其中至少一者為一資料指令之指令,這兩個指令各者的性質係自如下所選定:一控制指令、一資料指令及一記憶體接取指令。該可組態設定資料執行單元能夠在將一結果送返至一目的地暫存器行列之前,先對由一單一發出指令所提供之資料執行兩個以上的連續運算。
在另一根據本發明之具體實施例裡,茲提供一種操作一電腦處理器之方法,其中包含第一及第二處理通道,各者包含複數個功能單元,其中該第一處理通道包含一具有相對較窄之位元寬度的控制暫存器行列,而該第二處理通道包含一具有相對較寬之位元寬度的資料暫存器行列。該方法包含:解碼一指令封包以偵測該指令封包是否定義複數個具相等長度之控制指令,或是兩個包含至少一資料指令之指令,而至少其中一者係一向量;當該指令封包定義複數個具相等長度之控制指令時,將各控制指令供應給該第一處理通道,藉此循序地執行各控制指令;以及當該指令封包兩個包含至少一資料指令之指令時,將該至少一資料指令供應給該第二處理通道,藉此同時地各複數個指令。
在另一根據本發明之具體實施例裡,茲提供一種含有包含一序列之指令封包的程式碼裝置之電腦程式產品,該等指令封包包含一含複數個具相等長度之控制指令的第一類型指令封包,以及一含有包含至少一資料指令之複數個指令的第二類型指令封包,其中該電腦程式產品係經調適以執行於一電腦上,使得該第一類型指令封包是由一專屬控制處理通道來執行,而該第二指令封包之至少一資料指令是由一專屬資料處理通道所執行,該專屬控制處理通道具有一比起該專屬資料處理通道為相對較窄的位元寬度。
在另一根據本發明之具體實施例裡,茲提供一種操作一電腦處理器之方法,其中包含第一及第二處理通道,各者包含複數個功能單元,其中該第一處理通道包含一具有一相對為窄之位元寬度的控制暫存器行列,而該第二處理通道包含一具有一相對為寬之位元寬度的資料暫存器行列。該方法包含:從一程式記憶體中獲取得一序列的指令封包,所有該等指令封包在預設位元位置處含一組經指配之位元;解碼各指令封包,該解碼步驟包含讀取該等經指配位元之數值以決定:a)該指令封包究係定義複數個控制指令或複數個其中至少一者為一資料指令之指令;以及b)該指令在何處定義複數個其中至少一者為一資料指令之指令,這兩個指令各者的性質係自如下所選定:一控制指令、一資料指令及一記憶體接取指令。
在另一根據本發明之具體實施例裡,茲提供一種電腦程式產品程式碼裝置,其中包含一序列的指令封包,該等指令封包包含一含複數個具相等長度之控制指令的第一類型指令封包,以及一含有含至少一資料指令之第一及第二指令的第二類型指令封包,該等指令封包包含至少一在該指令封包內一經指配位元位置處的指示位元,其中該電腦程式產品係經調適以執行於一電腦上,使得該指示位元係經調適以合作於該電腦之一解碼單元,以指配:a)該指令封包究係定義複數個控制指令或複數個其中至少一者為一資料指令之指令;以及b)在有複數個其中至少一者為一資料指令之指令的情況下,這兩個指令各者的性質係自如下所選定:一控制指令、一資料指令及一記憶體接取指令。
本發明額外優點及新穎特性將如下列敘述中部份地陳述,且部份地可由熟諳本項技藝之人士經閱覽後文及各隨附圖式所顯見,或可為由本發明實作而習知。
圖1係一根據本發明一具體實施例之非對稱執行路徑電腦處理器的區塊圖。該圖1之處理器將一單一指令串流100分割成兩個不同的硬體執行路徑:一控制執行路徑102,這是專屬於處理控制碼,以及一資料執行路徑103,這是專屬於處理資料碼。這兩個執行路徑102、103的資料寬度、運算子及其他特徵會根據不同的控制碼及資料路徑碼特徵而互異。通常,控制碼傾向於較少、較窄的暫存器,不容易平行化,且通常(但非獨一地)按C或另一高階語言程式碼所撰寫,且其程式碼密度一般說來會比起速度效能更為重要。相對地,資料路徑碼通常會偏向於較大行列的寬式暫存器、可被高度平行化,且係按組合語言所撰寫,同時其效能會比其程式碼密度更重要。在如圖1的處理器裡,兩種不同執行路徑102及103係專屬於處置兩種不同類型的程式碼,各側具有其本身的架構暫存器行列,像是控制暫存器行列104及資料暫存器行列105,不同在於暫存器的寬度及數量;各控制暫存器會按位元數目而為較窄寬度(在一範例裡為32位元),而資料暫存器具有較寬的寬度(在一範例裡642位元)。該處理器因此為不對稱,這是在於其兩個執行路徑具有不同位元寬度,此因該等各者執行不同、特定化功能之事實的緣故。
在如圖1的處理器裡,該指令串流100是由一系列的指令封包所組成。所供應的各指令封包會被一指令解碼單元101所解碼,此者會分隔控制指令及資料指令,即如後文所進一步詳述。該控制執行路徑102處理該指令串流之控制流程操作,並且利用一分支單元106、一執行單元107及一載入儲存單元108,這在本例裡是與該資料執行路徑103所共享,來管理該機器的狀態暫存器。僅該處理器之控制側需要被像是C、C++或Java語言的編譯器,或其他的高階語言編譯器,所看見。在該控制側內,該分支單元106及該執行單元107係按照熟諳本項技藝之人士所眾知的傳統處理器而設計。
該資料執行路徑103在該固定執行單元109及一可組態設定深度執行單元110兩者內採用SIMD(單一指令多重資料)平行化。即如後文所進一步詳述,該可組態設定深度執行單元110,除傳統SIMD處理器的寬度維度以外,另提供一種深入維度的處理作業以提高每一指令的工作量。
如經解碼之指令定義一控制指令,則會將此者施加於在該機器之控制執行路徑上的適當功能單元(即如該分支單元106、該執行單元107及/或該載入/儲存單元108)。如經解碼之指令定義一具一固定或可組態設定資料處理運算之指令,則會將此者施加於該資料處理執行路徑。在該指令封包的資料指令部份內,經指定位元表示該指令究係一固定或可組態設定的資料處理指令,且在一可組態設定指令的情況下,進一步的經指定位元會定義該組態資訊。按照經解碼之資料處理指令的子型態而定,會將資料供應給該機器之資料處理路徑的固定或可組態設定執行子路徑。
在此,「可組態設定」表示從複數個預先定義(「虛仿-靜態」)運算子組態之中選擇一項運算子組態的能力。運算子的虛仿-靜態組態會有效於令一運算子(i)執行某一種運算,或(ii)按某一方式互連於各相關要素,或是(iii)一上述(i)及(ii)的組合。實作上,一選定虛仿-靜態組態可一次決定許多運算子的行為及互連性。這亦可控制切換關聯於該資料路徑的組態。在一較佳具體實施例裡,至少部份的複數個虛仿-靜態組態會由一資料處理指令之運算碼局部所選定,即如後文所詳述。同時亦根據本較佳具體實施例,一「可組態設定指令」可按一多位元層級提供自訂化運算的效能;例如,按四個以上位元的多位元數值,或一字組層級。
經指出經執行於該機器之個別不同側的控制及資料處理指令兩者可定義記憶體接取(載入/儲存)以及基本算術運算。可對該控制暫存器行列104往返提供用於控制運算的各輸入/運算元,而會對該暫存器行列105往返提供用於資料處理的各資料/運算元。
根據本發明之一具體實施例,各資料處理運算的至少一輸入可為一向量。在此觀點,該可組態設定運算子及/或該可組態設定資料路徑的切換電路可被視為是可組態設定,以藉由於其間所執行及/或互連的運算性質執行向量運算。例如,對一資料處理運算之64位元向量輸入可包含四個16位元純量運算元。在此,「向量」係一純量運算元的組合。可對複數個純量運算元執行向量算術,且可包含純量元素的轉向、移動及排列。並非一向量運算之所有運算元皆需為向量;例如,一向量運算可具有一純良及至少一向量兩者作為輸入;而一結果的輸出可為一純量或一向量。
在此,「控制指令」包含專屬於程式流程之指令,及分支與位址產品作業;但無資料處理。「資料處理指令」包含用於邏輯運算或算術運算的指令,對此至少一輸入會是一向量。資料處理指令可運算於多個資料指令,例如暫存器SIMD處理裡,或在資料元素的更寬、短向量處理時。上述的控制指令及資料處理指令基本功能並不重疊;然而,一共同性為兩種數碼皆具有邏輯及純量算術功能。
圖2顯示對如圖1之處理器的三種指令封包。各種的指令封包具有64位元長度。指令封包211係一3純量型態,用於密集的控制碼,且包含三個21位元控制指令(c21)。指令封包212及213為LIW(長型指令字組)型態,用於平行地執行該資料路徑碼。在本具體實施例裡,各指令212、213包含兩個指令,但若有需要可為不同數目。該指令封包212包含一34位元資料指令(d34)及一38位元記憶體指令(m28);並且藉一資料側載入-儲存運算(m28指令)而用於平行地執行該資料側算術(d34指令)。可利用來自該控制側的位址,自該處理器之控制側或資料側讀取,或予寫入,記憶體-類別指令(m28)。指令封包213包含一34位元資料指令(d34)及一21位元控制指令(c21);且係用以藉一像是一控制側算術、分支或載入-儲存運算之控制側運算(該c21指令),平行地執行資料側算術(該d34指令)。
如圖1之具體實施例的指令解碼單元101利用各指令封包的初始識別位元,或是一些其他在預設位元位置處的經指配識別位元,來決定要解碼哪一種封包。例如,即如圖2所示,一初始位元「1」表示一純量控制指令型態的指令封包,具三個控制指令;而初始位元「01」及「00」表示型態212及213的指令封包,在封包212內具一資料及記憶體指令,而在封包213裡具一資料及控制指令。在解碼各指令封包的初始位元之後,該圖1的指令解碼單元101會根據該指令封包的型態而定,將各封包的指令適當地傳給該控制執行路徑102或該資料執行路徑103。
為執行圖2之指令封包,如圖1具體實施例之處理器的指令解碼單元101會從記憶體中循序地前往取獲程式封包;且會循續地執行各程式封包。在一指令封包內,會循序地執行該封包211的各指令,而會先執行在該64位元字組最低顯著端的21位元指令,然後是次一21位元控制指令,接著是在最高顯著端的21位元控制指令。在指令封包212及213內,可同時地執行各指令(然在根據本發明之具體實施例裡並非必然地需為此情況)。如此,在如圖1具體實施例之處理器的程式順序,會循序地執行各程式封包;不過在一封包內的指令可循序地執行,如對於封包型態211,或是同時地執行,如對於封包型態212及213。底下,將型態212及213的指令封包分別地簡稱為MD及CD封包(分別地包含一記憶體及一資料指令;以及一控制指令及一資料指令)。
在利用21位元控制指令裡,該圖1之具體實施例可克服在具其他長度之指令的處理器裡發現到的數項缺點,且特別是支援資料指令之32位元標準編碼以及控制碼之16位元「密集」編碼的組合之處理器。在這種雙16/32位元處理器裡,會有一從對各指令使用雙編碼處理或是使用兩個具一藉分支、取獲位址或其他方式而在各編碼法則間切換之裝置的個別解碼器而出現的冗餘。根據本發明具體實施例,可藉由對所有控制指令利用單一21位元長度而移除此冗餘。此外,使用21位元控制指令可移除從16位元「密集」編碼法則裡不足夠的語意內容而出現缺點。由於語意內容並不足夠,因此使用16位元法則的處理器通常會要求一些設計妥協的混合,像是:使用雙運算元破壞性運算,具相對應的數碼膨脹以供複製;使用透窗接取至一暫存器行列之子集合,而具對溢露/填充或透窗指標操縱之數碼膨脹;或是對32位元格式的頻繁反置,因為並非所有的運算皆可按16位元格式裡極少數的可用運算碼位元來表示。在一本發明具體實施例裡,可藉利用21位元控制指令來減輕這些缺點。
可根據本發明一具體實施例使用各種的指令。例如,指令名稱可為如下任一種,其中C-格式、M-格式及D-格式,分別地表示控制、記憶體接取及資料格式:
亦根據本發明一具體實施例,各C-格式指令皆提供SISD(單一指令單一資料)運算,而M-指令及D-格式指令提供SISD或SIMD運算。例如,控制指令可提供一般算術、比較及邏輯指令;控制流程指令;記憶體載入及儲存指令等等。資料指令可提供一般算術、位移、邏輯及比較指令;重排、排序、位元組延伸及排列指令;線性回饋位移暫存器;以及,透過可組態設定深度執行單元110(如後詳述),使用者-定義之指令。記憶體指令可提供記憶體載入及儲存;用於控制暫存器的複製選定資料暫存器;對資料暫存器之複製廣播控制暫存器;以及隨後於各暫存器指令。
根據本發明之一具體實施例,如圖1之處理器特性為一第一、固定資料執行路徑及一第二可組態設定資料執行路徑。該第一資料路徑具有一按類似於傳統SIMD處理設計之方式分割成各通巷的固定SIMD執行單元。該第二資料路徑具有一可組態設定深度執行單元110。該「深度執行」是指一處理器在將一結果送返至該暫存器行列之前,對由單一發出指令所提供之資料執行多個接續運算的能力。其一深度執行範例可在MAC運算(乘法及累加)中發現,這會執行對來自於一單一指令的資料兩個運算(一乘法及一加法),並因此具有一數階為二的深度。深度執行之特徵亦可為運算元輸入的數量等於結果輸出的數量;或是等同地,該入價數等於出價數。如此,例如,一具有一結果的傳統雙運算元加法即非一較佳深度執行的範例,因為運算元的數量並不等於結果的數量,然而迴旋運算、快速傅黎葉轉換、Trellis/Viterbi編碼、共相關器、有限脈衝響應過濾器以及其他信號處理演算法皆為深度執行的範例。應用特定數位信號處理器(DSP)演算法確執行深度執行,通常是在位元層級且按一記憶體對映的方式。不過,傳統的暫存器對映一般目的性DSP並不執行深度運算,而是在該MAC運算裡於數階最多為二的深度執行指令。相對地,如圖1之處理器提供一暫存器對映之一般處理器,能夠在大於二的數階而深度執行動態可組態設定之字組層級指令。在圖1之處理器裡,該深度執行指令(待予執行的數學函式圖)可由該指令本身之組態資訊而予以調整/自訂。在該較佳具體實施例裡,格式指令含有被配置予組態資訊的位元位置。為提供此功能,該深度執行單元110具有可組態設定執行資源,這表示可上載各運算子模式、互連性及常數以適符於各種應用。深度執行將一深度維度加到該執行平行化,這是正交於由SIMD及LIW處理之早期概念所提供的寬度維度;這因此代表一用以增加一般目的性處理器之逐一指令工作量的額外維度。
圖3顯示一根據本發明一具體實施例之可組態設定深度執行單元310的各元件。即如圖1所示,該可組態設定深度執行單元110係該資料執行路徑103之一部份,且可因此由來自圖2之MD及CD指令封包212及213的資料側指令所指示。在圖3裡會將來自圖1之指令解碼單元101及資料暫存器行列105之指令314及運算元315供應給該深度執行單元310。一在該經解碼指令314內之多位元組態碼,會被用來接取一控制映圖316,這會將該多位元組態碼展開成一組相當複雜的組態信號,以組態設定該深度執行單元的各運算子。該控制映圖316可例如被嵌入作為一查核表,其中會將該指令之不同的可能多位元碼對映到不同的深度執行單元之可能運算子組態。根據諮詢該控制映圖316之查核表的結果,一交跨橫棒互連317會依任何必要排置方式來組態設定一組運算子318-321,以執行如該多位元指令碼所表示的運算子組態。各運算子例如包含一乘法運算子318、一算術邏輯單元(ALU)運算子319、一狀態運算子320或交跨通巷排列子321。在一具體實施例裡,該深度執行單元包含十五種運算子:一個乘法運算子318、八個ALU運算子319、四個狀態運算子320以及兩個交跨通巷排列子321;然其他數量的運算子亦屬可能。被供應給該深度執行單元的各運算元315可為例如兩個16位元運算元;這些會被供應給一可將各運算元供應給適當運算子318-321的第二交跨橫棒互連322。該第二交跨橫棒互連接322也會從各運算子318-321接收一中介結果的回饋324,然後亦可又由該第二交跨橫棒互連322供應給適當的運算子318-321。一第三交跨橫棒互連323將來自該等運算子318-321的結果予以多工處理,並輸出一最終結果325。可利用各種控制信號以組態設定各運算子;例如,圖3之具體實施例的控制映圖316不必然地需要被按一單一查核表而嵌入,而是可具體實作為一系列的兩個以上經曝序排列之查核表。該第一查核表內之一項目可指離於一給定多位元指令碼而至一第二查核表,藉此降低對複雜運算子組態之各查核表的所需儲存量。例如,該第一查核表可經組織成為一組態範疇存館,因此可將多個多位元指令在該第一查核表內歸組合一,而各群組指向一對於該群組內之各多位元碼提供特定組態的後續查核表。
根據如圖3之具體實施例,各運算子會有利地預組態設定成各種運算子類別。在實作上,這可藉一硬體接線之策略層級而達成。這種方式之其一優點在於這意味著需要儲存較少的預定定義組態,且該控制電路可較為簡單。例如,運算子318為經預組態設定為在乘法運算子之類別內;該等運算子319係經預組態設定為ALU運算子;各運算子320經預組態設定為狀態運算子;而運算子321經預組態設定為交跨通巷排列子;而其他經預組態設定之運算子亦屬可能。不過,即使是運算子類別係經預組態設定,仍會有對於各指令的執行時間彈性,以便能夠排置至少:(i)在各類別內之各運算子的連接性;(ii)與來自其他類別之各運算子的連接性;(iii)任何相關切換裝置之連接性;對於一用以實作一給定演算法之特定組態的最終排置。
熟諳技藝之讀者應即瞭解,前揭既已描述所被視為最佳模式以及其中執行本發明之適當其他模式,然本發明不應被限制於如本較佳具體實施例之說明所揭示的特定設備組態或方法步驟。熟諳本項技藝之人士亦應認知本發明具有廣泛的應用範圍,且該具體實施例容納廣泛範圍之不同實作及修改,而不致悖離本發明概念。特別是,在此所述之示範性位元寬度並非為限制性,而稱為半字組、字組、長型等之位元寬度的任意選擇亦非如此。
100...指令串流
101...指令解碼單元
102...控制執行路徑
103...資料執行路徑
104...控制暫存器行列
105...資料暫存器行列
106...分支單元
107...執行單元
108...載入儲存單元
109...固定執行單元
110...可組態設定深度執行單元
211...指令封包
212...指令封包
213...指令封包
310...可組態設定深度執行單元
314...指令
315...運算元
316...控制映圖
317...交跨橫棒互連
318...乘法運算子
319...ALU運算子
320...狀態運算子
321...交化通巷運算子
322...第二交跨橫棒互連
323...第三交跨橫棒互連
為更佳瞭解本發明,且為顯示如何可令該者產生實效,現將按僅屬示範方式參照於各隨附圖式而加以說明,其中:圖1係一根據本發明一具體實施例之非對稱雙執行路徑電腦處理器的區塊圖;圖2顯示根據本發明一具體實施例,用於如圖1之處理器的示範性指令類別;以及圖3係一略圖,此圖顯示根據本發明一具體實施例,可組態設定深度執行單元之各元件。
100...指令串流
101...指令解碼單元
102...控制執行路徑
103...資料執行路徑
104...控制暫存器行列
105...資料暫存器行列
106...分支單元
107...執行單元
108...載入儲存單元
109...固定執行單元
110...可組態設定深度執行單元
Claims (20)
- 一種電腦處理器,該處理器包含:用以解碼自一握持一序列指令封包之記憶體所取獲的各指令封包之解碼單元,各個指令封包皆具有相同的位元長度,該等指令封包各者包含至少一識別位元,該等指令封包中之一些指令封包各者僅包括(i)具有控制位元寬度之複數個控制指令,而該等指令封包中之一些其它指令封包各者則是包括(ii)包含至少一資料處理指令之複數個指令,其中該至少一資料處理指令具有寬於該控制位元寬度之資料位元寬度;一控制處理通道,其包含複數個功能單元,其中該控制處理通道能夠執行控制運算且包含一具相對為較窄之位元寬度的控制暫存器行列;及一資料處理通道,其包含複數個功能單元,其中該資料處理通道能夠執行資料處理運算,而其至少一輸入係一向量,且包含具相對較寬之位元寬度的資料暫存器行列,其中該解碼單元可運作以偵測各個指令封包之至少一識別位元,來決定該指令封包是僅定義(i)該複數個控制指令,在此情況中該解碼單元經組態為將待以循序地執行之複數個控制指令傳達到該控制處理通道上,或是定義(ii)包含該至少一資料處理指令之複數個指令,在此情況中該解碼單元經組態為將待以同時地執行之至少一個資料處理指令傳達到該資料處理通道上,且該解碼單元可運作以按照偵測結果來控制該等控制及資料處理通道。
- 如申請專利範圍第1項所述之電腦處理器,其中該控制處理通道進一步包含一分支單元及一控制單元。
- 如申請專利範圍第1項所述之電腦處理器,其中該資料處理通道進一步包含一固定資料執行單元及一可組態設定資料執行單元。
- 如申請專利範圍第3項所述之電腦處理器,其中該固定資料執行單元及該可組態設定資料執行單元兩者可根據一單一指令多重資料格式而運作。
- 如申請專利範圍第1項所述之電腦處理器,其中該等控制及資料處理通道共享一載入儲存單元。
- 如申請專利範圍第5項所述之電腦處理器,其中該載入儲存單元利用該控制處理通道所供應之控制資訊,以及該資料處理通道所供應之資料。
- 如申請專利範圍第1項所述之電腦處理器,其中各個指令封包皆具有64位元長度。
- 如申請專利範圍第1項所述之電腦處理器,其中各個控制指令皆具有為18到24位元之間的長度。
- 如申請專利範圍第8項所述之電腦處理器,其中各個控制指令皆具有21位元長度。
- 如申請專利範圍第1項所述之電腦處理器,其中在該等指令封包之一些其它指令封包各者中之各個指令的性質至少從一控制指令、一資料指令及一記憶體接取指令中所選定。
- 如申請專利範圍第10項所述之電腦處理器,其中各 個資料指令的位元長度為34位元。
- 如申請專利範圍第10項所述之電腦處理器,其中各個記憶體接取指令的位元長度為28位元。
- 如申請專利範圍第1項所述之電腦處理器,其中當該解碼單元偵測到該指令封包定義三種控制指令,該解碼單元可運作以將這三個控制指令供應給該控制處理通道,藉此序列地執行這三個控制指令。
- 如申請專利範圍第1項所述之電腦處理器,其中當該解碼單元偵測該指令封包定義兩個包含至少一資料指令之指令時,該解碼單元可運作以將該至少一資料指令供應予該資料處理通道,藉此同時地執行這兩個指令。
- 如申請專利範圍第1項所述之電腦處理器,其中該解碼單元可運作以在該序列之各個指令封包裡的預設位元位置處讀取一組經指配位元之數值,以決定:a)該指令封包是定義複數個控制指令或是定義其中至少一者為一資料指令之複數個指令;以及b)其中該指令封包定義該複數個指令中至少一者為一資料指令,在該複數個指令中之其它指令各者的性質係自如下所選定:一控制指令、一資料指令及一記憶體接取指令。
- 如申請專利範圍第3項所述之電腦處理器,其中該可組態設定資料執行單元能夠在將一結果送返至一目的地暫存器行列之前,先對由一單一發出指令所提供之資料執行兩個以上的連續運算。
- 一種操作一電腦處理器以用於處理資料封包之方法,各個指令封包皆具有相同的位元長度,該等指令封包各者包含至少一識別位元,該等指令封包中之一些指令封包各者僅包括(i)具有控制位元寬度之複數個控制指令,而該等指令封包中之一些其它指令封包各者則是包括(ii)包含至少一資料處理指令之複數個指令,其中該至少一資料處理指令具有寬於該控制位元寬度之資料位元寬度,該電腦處理器包含控制及資料處理通道,各者包含複數個功能單元,其中該控制處理通道包含一具有相對較窄之位元寬度的控制暫存器行列,而該資料處理通道包含一具有相對較寬之位元寬度的資料暫存器行列,該方法包含:解碼一指令封包中的識別位元以偵測該指令封包是否定義複數個控制指令,或是定義包含至少一資料指令之複數個指令,而其中至少一者係一向量;當該指令封包定義(i)該複數個控制指令時,將各個控制指令供應給該控制處理通道,藉此循序地執行各個控制指令;以及當該指令封包定義(ii)包含該至少一資料指令之複數個指令時,將該至少一資料指令供應給該資料處理通道,藉此同時地執行各個複數個指令。
- 一種含有包含一序列之指令封包的程式碼裝置之電腦程式產品,各個指令封包皆具有相同的位元長度,該等指令封包各者包含至少一識別位元,且該等指令封包包含僅含有具相等長度之複數個控制指令的第一類型指令封 包,以及含有包含至少一資料處理指令之複數個指令的第二類型指令封包,該複數個控制指令具有控制位元寬度,且該至少一資料指令具有寬於該控制位元寬度之資料位元寬度,其中該電腦程式產品係經調適以執行於一電腦上,用於解碼在該等指令封包各者中之至少一識別位元來決定該指令封包是定義該第一類型指令封包或是定義該第二類型指令封包,使得該第一類型指令封包被傳達到一專屬控制處理通道且以循序方式由該專屬控制處理通道上的複數個處理單元來執行,而該第二類型指令封包之至少一資料指令則是被傳達到一專屬資料處理通道且以同步方式由該專屬資料處理通道上的複數個處理單元來執行,該專屬控制處理通道具有一與該專屬資料處理通道相較為窄的位元寬度。
- 一種操作一電腦處理器之方法,其中包含控制及資料處理通道,其各者包含複數個功能單元,其中該控制處理通道包含一具有一相對為窄之位元寬度的控制暫存器行列,而該資料處理通道包含一具有一相對為寬之位元寬度的資料暫存器行列,該方法包含:從一程式記憶體中獲取得一序列的指令封包,各個指令封包皆具有相同的位元長度且該等指令封包各者在其內之預設位元位置處含有一組經指配位元;解碼各個指令封包,該解碼步驟包含讀取該組經指配位元之數值以決定: a)該指令封包是僅定義複數個控制指令,或是定義其中至少一者為一資料指令之複數個指令;以及b)其中該指令封包定義該其中至少一者為一資料指令之複數個指令,則此該複數個指令中之其它指令各者的性質係自如下所選定:一控制指令、一資料指令及一記憶體接取指令,其中該複數個控制指令具有控制位元寬度,且該資料指令具有寬於該控制位元寬度之資料位元寬度。
- 一種電腦程式產品程式碼裝置,其包含一序列的指令封包,各指令封包皆具有相同的位元長度,該等指令封包包含僅含有具實質相等長度之複數個控制指令的第一類型指令封包,以及含有包括至少一資料指令之第一及第二指令的第二類型指令封包,其中該複數個控制指令具有控制位元寬度,且該至少一資料指令具有寬於該控制位元寬度之資料位元寬度,該等指令封包各者在其內之一經指配位元位置處包含至少一指示位元,其中該電腦程式產品係經調適以執行於一電腦上,使得該至少一指示位元係經調適以合作於該電腦之一解碼單元來指配:a)該指令封包是僅定義該複數個控制指令,或是定義其中至少一者為一資料指令之複數個指令;以及b)其中當存在該複數個指令包括至少一資料指令的情況中,則此該複數個指令中之其它指令各者的性質係自如下所選定:一控制指令、一資料指令及一記憶體接取指令。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/813,615 US9047094B2 (en) | 2004-03-31 | 2004-03-31 | Apparatus and method for separate asymmetric control processing and data path processing in a dual path processor |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200540706A TW200540706A (en) | 2005-12-16 |
TWI384400B true TWI384400B (zh) | 2013-02-01 |
Family
ID=34962959
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW094109122A TWI384400B (zh) | 2004-03-31 | 2005-03-24 | 用於非對稱雙路徑處理之電腦處理器、其操作方法和相關的電腦程式產品 |
Country Status (7)
Country | Link |
---|---|
US (2) | US9047094B2 (zh) |
EP (1) | EP1735697B1 (zh) |
JP (1) | JP5744370B2 (zh) |
CN (1) | CN100583027C (zh) |
CA (1) | CA2560469A1 (zh) |
TW (1) | TWI384400B (zh) |
WO (1) | WO2005096141A2 (zh) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7949856B2 (en) * | 2004-03-31 | 2011-05-24 | Icera Inc. | Method and apparatus for separate control processing and data path processing in a dual path processor with a shared load/store unit |
US9047094B2 (en) | 2004-03-31 | 2015-06-02 | Icera Inc. | Apparatus and method for separate asymmetric control processing and data path processing in a dual path processor |
US7296129B2 (en) | 2004-07-30 | 2007-11-13 | International Business Machines Corporation | System, method and storage medium for providing a serialized memory interface with a bus repeater |
US7356737B2 (en) * | 2004-10-29 | 2008-04-08 | International Business Machines Corporation | System, method and storage medium for testing a memory module |
US7512762B2 (en) | 2004-10-29 | 2009-03-31 | International Business Machines Corporation | System, method and storage medium for a memory subsystem with positional read data latency |
US7277988B2 (en) * | 2004-10-29 | 2007-10-02 | International Business Machines Corporation | System, method and storage medium for providing data caching and data compression in a memory subsystem |
US7299313B2 (en) * | 2004-10-29 | 2007-11-20 | International Business Machines Corporation | System, method and storage medium for a memory subsystem command interface |
US7331010B2 (en) | 2004-10-29 | 2008-02-12 | International Business Machines Corporation | System, method and storage medium for providing fault detection and correction in a memory subsystem |
US7478259B2 (en) | 2005-10-31 | 2009-01-13 | International Business Machines Corporation | System, method and storage medium for deriving clocks in a memory system |
US7685392B2 (en) | 2005-11-28 | 2010-03-23 | International Business Machines Corporation | Providing indeterminate read data latency in a memory system |
KR100807039B1 (ko) | 2006-04-07 | 2008-02-25 | 주식회사 퓨쳐시스템 | 비대칭 다중 프로세싱 시스템 및 그 방법 |
US7669086B2 (en) | 2006-08-02 | 2010-02-23 | International Business Machines Corporation | Systems and methods for providing collision detection in a memory system |
US7870459B2 (en) | 2006-10-23 | 2011-01-11 | International Business Machines Corporation | High density high reliability memory module with power gating and a fault tolerant address and command bus |
US7721140B2 (en) | 2007-01-02 | 2010-05-18 | International Business Machines Corporation | Systems and methods for improving serviceability of a memory system |
CN100456230C (zh) * | 2007-03-19 | 2009-01-28 | 中国人民解放军国防科学技术大学 | 超长指令字与单指令流多数据流融合的计算群单元 |
US8082474B2 (en) * | 2008-07-01 | 2011-12-20 | International Business Machines Corporation | Bit shadowing in a memory system |
US8245105B2 (en) * | 2008-07-01 | 2012-08-14 | International Business Machines Corporation | Cascade interconnect memory system with enhanced reliability |
US20100005335A1 (en) * | 2008-07-01 | 2010-01-07 | International Business Machines Corporation | Microprocessor interface with dynamic segment sparing and repair |
US8201069B2 (en) * | 2008-07-01 | 2012-06-12 | International Business Machines Corporation | Cyclical redundancy code for use in a high-speed serial link |
US7895374B2 (en) * | 2008-07-01 | 2011-02-22 | International Business Machines Corporation | Dynamic segment sparing and repair in a memory system |
US8082475B2 (en) * | 2008-07-01 | 2011-12-20 | International Business Machines Corporation | Enhanced microprocessor interconnect with bit shadowing |
US8234540B2 (en) * | 2008-07-01 | 2012-07-31 | International Business Machines Corporation | Error correcting code protected quasi-static bit communication on a high-speed bus |
US8139430B2 (en) * | 2008-07-01 | 2012-03-20 | International Business Machines Corporation | Power-on initialization and test for a cascade interconnect memory system |
US8755515B1 (en) | 2008-09-29 | 2014-06-17 | Wai Wu | Parallel signal processing system and method |
US8493979B2 (en) | 2008-12-30 | 2013-07-23 | Intel Corporation | Single instruction processing of network packets |
US7979759B2 (en) * | 2009-01-08 | 2011-07-12 | International Business Machines Corporation | Test and bring-up of an enhanced cascade interconnect memory system |
US20100180154A1 (en) * | 2009-01-13 | 2010-07-15 | International Business Machines Corporation | Built In Self-Test of Memory Stressor |
KR101109304B1 (ko) * | 2009-04-23 | 2012-01-31 | 주식회사 효성 | 카치온 가염형 폴리아미드 섬유의 제조방법 |
GB2483225B (en) | 2010-08-27 | 2018-07-11 | Nvidia Tech Uk Limited | Improved processor architecture |
KR101918464B1 (ko) | 2011-09-14 | 2018-11-15 | 삼성전자 주식회사 | 스위즐드 버추얼 레지스터 기반의 프로세서 및 스위즐 패턴 제공 장치 |
CN102508636B (zh) * | 2011-11-02 | 2013-12-11 | 中国人民解放军国防科学技术大学 | 用于向量处理器的程序流控制方法及系统 |
US9501268B2 (en) * | 2013-12-23 | 2016-11-22 | International Business Machines Corporation | Generating SIMD code from code statements that include non-isomorphic code statements |
US9983884B2 (en) | 2014-09-26 | 2018-05-29 | Intel Corporation | Method and apparatus for SIMD structured branching |
US10034407B2 (en) | 2016-07-22 | 2018-07-24 | Intel Corporation | Storage sled for a data center |
CN108874730B (zh) * | 2018-06-14 | 2021-06-22 | 北京理工大学 | 一种数据处理器及数据处理方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5922065A (en) * | 1997-10-13 | 1999-07-13 | Institute For The Development Of Emerging Architectures, L.L.C. | Processor utilizing a template field for encoding instruction sequences in a wide-word format |
TW516320B (en) * | 2000-02-22 | 2003-01-01 | Intervideo Inc | Implementation of quantization for SIMD architecture |
Family Cites Families (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4228498A (en) * | 1977-10-12 | 1980-10-14 | Dialog Systems, Inc. | Multibus processor for increasing execution speed using a pipeline effect |
US5136697A (en) * | 1989-06-06 | 1992-08-04 | Advanced Micro Devices, Inc. | System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache |
DE69031257T2 (de) | 1989-09-21 | 1998-02-12 | Texas Instruments Inc | Integrierte Schaltung mit einem eingebetteten digitalen Signalprozessor |
JPH0412361A (ja) | 1990-04-28 | 1992-01-16 | Konica Corp | 感光性平版印刷版の処理方法及び処理装置 |
JP2523952B2 (ja) | 1990-06-29 | 1996-08-14 | 松下電器産業株式会社 | 薄膜の形成方法および薄膜の形成装置 |
US5299320A (en) * | 1990-09-03 | 1994-03-29 | Matsushita Electric Industrial Co., Ltd. | Program control type vector processor for executing a vector pipeline operation for a series of vector data which is in accordance with a vector pipeline |
JPH05324430A (ja) | 1992-05-26 | 1993-12-07 | Toshiba Corp | データ処理装置 |
US5423051A (en) * | 1992-09-24 | 1995-06-06 | International Business Machines Corporation | Execution unit with an integrated vector operation capability |
US5600801A (en) * | 1993-07-15 | 1997-02-04 | Dell Usa, L.P. | Multiple function interface device for option card |
US5600810A (en) * | 1994-12-09 | 1997-02-04 | Mitsubishi Electric Information Technology Center America, Inc. | Scaleable very long instruction word processor with parallelism matching |
US6052773A (en) * | 1995-02-10 | 2000-04-18 | Massachusetts Institute Of Technology | DPGA-coupled microprocessors |
US5737631A (en) * | 1995-04-05 | 1998-04-07 | Xilinx Inc | Reprogrammable instruction set accelerator |
JP2931890B2 (ja) * | 1995-07-12 | 1999-08-09 | 三菱電機株式会社 | データ処理装置 |
JP3658072B2 (ja) * | 1996-02-07 | 2005-06-08 | 株式会社ルネサステクノロジ | データ処理装置およびデータ処理方法 |
JPH09265397A (ja) * | 1996-03-29 | 1997-10-07 | Hitachi Ltd | Vliw命令用プロセッサ |
GB2311882B (en) | 1996-04-04 | 2000-08-09 | Videologic Ltd | A data processing management system |
US5956518A (en) * | 1996-04-11 | 1999-09-21 | Massachusetts Institute Of Technology | Intermediate-grain reconfigurable processing device |
DE19634031A1 (de) * | 1996-08-23 | 1998-02-26 | Siemens Ag | Prozessor mit Pipelining-Aufbau |
US6006321A (en) * | 1997-06-13 | 1999-12-21 | Malleable Technologies, Inc. | Programmable logic datapath that may be used in a field programmable device |
JP3451921B2 (ja) | 1998-03-30 | 2003-09-29 | 松下電器産業株式会社 | プロセッサ |
EP0953898A3 (en) | 1998-04-28 | 2003-03-26 | Matsushita Electric Industrial Co., Ltd. | A processor for executing Instructions from memory according to a program counter, and a compiler, an assembler, a linker and a debugger for such a processor |
US6226735B1 (en) * | 1998-05-08 | 2001-05-01 | Broadcom | Method and apparatus for configuring arbitrary sized data paths comprising multiple context processing elements |
US6292845B1 (en) * | 1998-08-26 | 2001-09-18 | Infineon Technologies North America Corp. | Processing unit having independent execution units for parallel execution of instructions of different category with instructions having specific bits indicating instruction size and category respectively |
DE19843640A1 (de) * | 1998-09-23 | 2000-03-30 | Siemens Ag | Verfahren zum Konfigurieren eines konfigurierbaren Hardware-Blocks |
US6553414B1 (en) * | 1998-10-02 | 2003-04-22 | Canon Kabushiki Kaisha | System used in plural information processing devices for commonly using peripheral device in network |
KR100731371B1 (ko) * | 1999-02-15 | 2007-06-21 | 코닌클리즈케 필립스 일렉트로닉스 엔.브이. | 구성가능 기능 유닛을 포함하는 프로세서를 사용해서 컴퓨터 프로그램을 실행하는 방법, 프로세서 및 컴퓨터 판독가능 기록 매체 |
EP1050810A1 (en) * | 1999-05-03 | 2000-11-08 | STMicroelectronics SA | A computer system comprising multiple functional units |
GB2352066B (en) * | 1999-07-14 | 2003-11-05 | Element 14 Ltd | An instruction set for a computer |
AU782238B2 (en) * | 1999-08-30 | 2005-07-14 | Ip Flex Inc. | Control program product and data processing system |
US6526430B1 (en) * | 1999-10-04 | 2003-02-25 | Texas Instruments Incorporated | Reconfigurable SIMD coprocessor architecture for sum of absolute differences and symmetric filtering (scalable MAC engine for image processing) |
EP1102163A3 (en) | 1999-11-15 | 2005-06-29 | Texas Instruments Incorporated | Microprocessor with improved instruction set architecture |
US7039790B1 (en) * | 1999-11-15 | 2006-05-02 | Texas Instruments Incorporated | Very long instruction word microprocessor with execution packet spanning two or more fetch packets with pre-dispatch instruction selection from two latches according to instruction bit |
US6255849B1 (en) * | 2000-02-04 | 2001-07-03 | Xilinx, Inc. | On-chip self-modification for PLDs |
JP2001306321A (ja) | 2000-04-19 | 2001-11-02 | Matsushita Electric Ind Co Ltd | プロセッサ |
US7120781B1 (en) | 2000-06-30 | 2006-10-10 | Intel Corporation | General purpose register file architecture for aligned simd |
JP4651790B2 (ja) * | 2000-08-29 | 2011-03-16 | 株式会社ガイア・システム・ソリューション | データ処理装置 |
US20020089348A1 (en) * | 2000-10-02 | 2002-07-11 | Martin Langhammer | Programmable logic integrated circuit devices including dedicated processor components |
US20020174266A1 (en) * | 2001-05-18 | 2002-11-21 | Krishna Palem | Parameterized application programming interface for reconfigurable computing systems |
JP2003005958A (ja) * | 2001-06-25 | 2003-01-10 | Pacific Design Kk | データ処理装置およびその制御方法 |
JP2003099397A (ja) | 2001-09-21 | 2003-04-04 | Pacific Design Kk | データ処理システム |
US6798239B2 (en) * | 2001-09-28 | 2004-09-28 | Xilinx, Inc. | Programmable gate array having interconnecting logic to support embedded fixed logic circuitry |
JP3785343B2 (ja) | 2001-10-02 | 2006-06-14 | 日本電信電話株式会社 | クライアントサーバシステム及びクライアントサーバシステムにおけるデータ通信方法 |
JP3779602B2 (ja) * | 2001-11-28 | 2006-05-31 | 松下電器産業株式会社 | Simd演算方法およびsimd演算装置 |
KR100464406B1 (ko) * | 2002-02-08 | 2005-01-03 | 삼성전자주식회사 | 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법 |
US7159099B2 (en) | 2002-06-28 | 2007-01-02 | Motorola, Inc. | Streaming vector processor with reconfigurable interconnection switch |
JP3982353B2 (ja) | 2002-07-12 | 2007-09-26 | 日本電気株式会社 | フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム |
US7024543B2 (en) * | 2002-09-13 | 2006-04-04 | Arm Limited | Synchronising pipelines in a data processing apparatus |
TW569138B (en) | 2002-09-19 | 2004-01-01 | Faraday Tech Corp | A method for improving instruction selection efficiency in a DSP/RISC compiler |
US7464254B2 (en) * | 2003-01-09 | 2008-12-09 | Cisco Technology, Inc. | Programmable processor apparatus integrating dedicated search registers and dedicated state machine registers with associated execution hardware to support rapid application of rulesets to data |
JP2004217989A (ja) | 2003-01-14 | 2004-08-05 | Toyota Central Res & Dev Lab Inc | 水素吸蔵合金粉末、その製造方法および水素吸蔵合金粉末を用いた水素貯蔵装置 |
JP2004309570A (ja) | 2003-04-02 | 2004-11-04 | Seiko Epson Corp | 光通信モジュール、光通信装置、及びその製造方法 |
US7496776B2 (en) * | 2003-08-21 | 2009-02-24 | International Business Machines Corporation | Power throttling method and apparatus |
US7176713B2 (en) * | 2004-01-05 | 2007-02-13 | Viciciv Technology | Integrated circuits with RAM and ROM fabrication options |
US7949856B2 (en) * | 2004-03-31 | 2011-05-24 | Icera Inc. | Method and apparatus for separate control processing and data path processing in a dual path processor with a shared load/store unit |
US8484441B2 (en) | 2004-03-31 | 2013-07-09 | Icera Inc. | Apparatus and method for separate asymmetric control processing and data path processing in a configurable dual path processor that supports instructions having different bit widths |
US9047094B2 (en) | 2004-03-31 | 2015-06-02 | Icera Inc. | Apparatus and method for separate asymmetric control processing and data path processing in a dual path processor |
MY149506A (en) | 2006-05-22 | 2013-09-13 | Biogasol Ipr Aps | Thermoanaerobacter mathranii strain bg1 |
-
2004
- 2004-03-31 US US10/813,615 patent/US9047094B2/en active Active
-
2005
- 2005-03-22 WO PCT/GB2005/001069 patent/WO2005096141A2/en active Application Filing
- 2005-03-22 CA CA002560469A patent/CA2560469A1/en not_active Abandoned
- 2005-03-22 CN CN200580017666A patent/CN100583027C/zh active Active
- 2005-03-22 EP EP05729258.3A patent/EP1735697B1/en active Active
- 2005-03-22 JP JP2007505614A patent/JP5744370B2/ja active Active
- 2005-03-24 TW TW094109122A patent/TWI384400B/zh active
-
2015
- 2015-04-30 US US14/700,343 patent/US9477475B2/en not_active Expired - Lifetime
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5922065A (en) * | 1997-10-13 | 1999-07-13 | Institute For The Development Of Emerging Architectures, L.L.C. | Processor utilizing a template field for encoding instruction sequences in a wide-word format |
TW516320B (en) * | 2000-02-22 | 2003-01-01 | Intervideo Inc | Implementation of quantization for SIMD architecture |
Non-Patent Citations (1)
Title |
---|
Michael Bolotski, Andre DeHon, Thomas F. Knight, Unifying FPGAs and SIMD Arrays, 2nd International ACM/SIGDA Workshop on FPGAs, 1994/03/07 * |
Also Published As
Publication number | Publication date |
---|---|
WO2005096141A3 (en) | 2006-06-01 |
US20150234659A1 (en) | 2015-08-20 |
TW200540706A (en) | 2005-12-16 |
CN100583027C (zh) | 2010-01-20 |
EP1735697B1 (en) | 2016-07-06 |
WO2005096141A2 (en) | 2005-10-13 |
EP1735697A2 (en) | 2006-12-27 |
US9047094B2 (en) | 2015-06-02 |
JP2007531134A (ja) | 2007-11-01 |
CA2560469A1 (en) | 2005-10-13 |
US9477475B2 (en) | 2016-10-25 |
JP5744370B2 (ja) | 2015-07-08 |
CN1973260A (zh) | 2007-05-30 |
US20050223196A1 (en) | 2005-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI384400B (zh) | 用於非對稱雙路徑處理之電腦處理器、其操作方法和相關的電腦程式產品 | |
TWI413935B (zh) | 用於在雙路徑處理器中之控制處理的裝置及方法 | |
KR100464406B1 (ko) | 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법 | |
US7042466B1 (en) | Efficient clip-testing in graphics acceleration | |
JP2008071130A (ja) | Simd型マイクロプロセッサ | |
KR100988964B1 (ko) | 마이크로프로세서 내에서 다수의 레지스터 유닛들로부터의 대응하는 하프워드 유닛들을 결합하기 위한 방법 및 시스템 | |
JP2019519865A (ja) | 並べ替え動作を実行するための装置および方法 | |
JP5382635B2 (ja) | 二重データ経路処理のための装置および方法 | |
US20060095713A1 (en) | Clip-and-pack instruction for processor | |
KR20070022239A (ko) | 비대칭 듀얼 경로 프로세싱용 장치 및 방법 | |
US20060095714A1 (en) | Clip instruction for processor |