TW470914B - Executing partial-width packed data instructions - Google Patents
Executing partial-width packed data instructions Download PDFInfo
- Publication number
- TW470914B TW470914B TW088105137A TW88105137A TW470914B TW 470914 B TW470914 B TW 470914B TW 088105137 A TW088105137 A TW 088105137A TW 88105137 A TW88105137 A TW 88105137A TW 470914 B TW470914 B TW 470914B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- compact
- instruction
- width
- processor
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 35
- 230000000875 corresponding effect Effects 0.000 claims description 33
- 230000002079 cooperative effect Effects 0.000 claims description 23
- 230000036961 partial effect Effects 0.000 claims description 19
- 238000003860 storage Methods 0.000 claims description 18
- 230000006870 function Effects 0.000 claims description 11
- 238000004364 calculation method Methods 0.000 claims description 7
- 230000002829 reductive effect Effects 0.000 claims description 7
- 239000000463 material Substances 0.000 claims description 6
- 238000009434 installation Methods 0.000 claims description 4
- 238000000354 decomposition reaction Methods 0.000 claims description 3
- 230000003111 delayed effect Effects 0.000 claims description 3
- 239000002689 soil Substances 0.000 claims description 3
- 238000012937 correction Methods 0.000 claims description 2
- 230000009467 reduction Effects 0.000 claims description 2
- 238000005056 compaction Methods 0.000 claims 3
- 239000011257 shell material Substances 0.000 claims 3
- PCTMTFRHKVHKIS-BMFZQQSSSA-N (1s,3r,4e,6e,8e,10e,12e,14e,16e,18s,19r,20r,21s,25r,27r,30r,31r,33s,35r,37s,38r)-3-[(2r,3s,4s,5s,6r)-4-amino-3,5-dihydroxy-6-methyloxan-2-yl]oxy-19,25,27,30,31,33,35,37-octahydroxy-18,20,21-trimethyl-23-oxo-22,39-dioxabicyclo[33.3.1]nonatriaconta-4,6,8,10 Chemical compound C1C=C2C[C@@H](OS(O)(=O)=O)CC[C@]2(C)[C@@H]2[C@@H]1[C@@H]1CC[C@H]([C@H](C)CCCC(C)C)[C@@]1(C)CC2.O[C@H]1[C@@H](N)[C@H](O)[C@@H](C)O[C@H]1O[C@H]1/C=C/C=C/C=C/C=C/C=C/C=C/C=C/[C@H](C)[C@@H](O)[C@@H](C)[C@H](C)OC(=O)C[C@H](O)C[C@H](O)CC[C@@H](O)[C@H](O)C[C@H](O)C[C@](O)(C[C@H](O)[C@H]2C(O)=O)O[C@H]2C1 PCTMTFRHKVHKIS-BMFZQQSSSA-N 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 238000007667 floating Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 239000000872 buffer Substances 0.000 description 4
- 230000010076 replication Effects 0.000 description 4
- 238000007373 indentation Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000007639 printing Methods 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 206010011469 Crying Diseases 0.000 description 1
- 206010033799 Paralysis Diseases 0.000 description 1
- 238000001467 acupuncture Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 244000309464 bull Species 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000008029 eradication Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 235000013305 food Nutrition 0.000 description 1
- PCHJSUWPFVWCPO-UHFFFAOYSA-N gold Chemical compound [Au] PCHJSUWPFVWCPO-UHFFFAOYSA-N 0.000 description 1
- 239000010931 gold Substances 0.000 description 1
- 229910052737 gold Inorganic materials 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 210000004417 patella Anatomy 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000001568 sexual effect Effects 0.000 description 1
- 239000000779 smoke Substances 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001960 triggered effect Effects 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3875—Pipelining a single stage, e.g. superpipelining
-
- 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
- G06F9/30014—Arithmetic instructions with variable precision
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift 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
-
- 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
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- 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/3017—Runtime instruction translation, e.g. macros
-
- 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/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/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/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (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)
- Executing Machine-Instructions (AREA)
Description
470914 A7 B7 五、發明說明(1 執行部份寬度緊縮型資料指令 本發明一般而言係關於電腦系統的領域。更明確而士, = —種方法及裝置,用以藉由利用S細㈣的 ,备有效率地執行部份寬度緊縮型資料指令,如無向量 緊縮型資料指令。 、多媒體應用,如2D/3D緣圖、影像處理、視訊壓縮/解壓 鈿、浯骨識別演算法及聲音操控,經常需要於大量的資料 項上執行相同的運算(稱爲"資料呼行")。每一種多媒體應 用土式通g使用一種或多種需要許多浮點或整數運算的演 算法,如ADD或MULTIPLY (以下以MUL表示)。藉由提供 執行後會使處理器在多資料項上平行執行相同運算的巨集 4曰令 單才曰令多負料技術,如Pentium®處理器架構及 令集所採用者,已對多媒體應用的效能有明顯的 改善(Pentium®clara,CAiIntel公司的 柱册商標)。 經濟部智慧財產局員工消費合作社印製 SIMD技術特別適用於提供緊縮型資料格式的系統。在 糸縮型貝料格式中’將暫存器中的位元組依邏輯方式分成 許多固定大小的資料元,每一資料元代表個別的不同値。 例如,一個64-位元之暫存器可分解成4個16-位元的資料 元,每一 16-位元之資料元代表個別不同的立元値。然 後緊縮型資料指令可分別平行操控這些緊縮型資料型態中 的每一資料元。 -4 本紙張尺度適用中國國家標準(CNS)A4規¥^210 X 297公爱) 470914 A7 B7 五、發明說明(2 ) 經 濟 部 智 慧 財 產 局 員 工 消 費 合 作 社 印 製 參考圖1 ’所示爲一緊縮型資料指令之舉例。此例中, :緊縮型ADD指令(例如,一 SIMD ADD )將一個緊縮型資 料運算元X與另一個緊縮型資料運算元γ相加,結果產生 緊縮型資料 Ζ,即 Χ〇+γ〇=ζ〇、Χι+Υι=Ζι、χ2+γ尸^及 f+Y3=Z3。將許多資料元緊縮在一個暫存器或記憶體中且 採用平行硬體執行使SIMD架構能夠同時執行多個運算, 使得效能顯著地改善。例如,此例中,在前述獲得單一 果的時間中,可獲·得4個分別的結果。 雖然SIMD架構有很大的優點,仍有些情況只需要傳 個別結果給緊縮型資料元的某一_子集合。 本發明提供-種執行無向量緊縮型資料指令的方法 置。根據本發明之-觀念,一個處理器包含多個暫 暫存咨更名單S連結至該多個暫存器,—解碼“ 該暫存器更名單元,而一部份寬度執 ϋ、〜土 哭献士 w 丨刀見度執仃早兀連結至此解碼 =子$更名單元提供—架構式暫存器標案以便错存狄 縮型資料運算元,每-運算元包含多個資料 == 〜、使其把夠將弟一組及第二組指令解碼,此 ι集指足架構式暫存器構案中的—個或多個 。 :組指令中的每_指令指定要在所有資料元件上執= 异’料資料元件儲存於—個或更多指定的 ^ =,第二组指令集中的每一指令僅指定要在資科、。相 术5上執行的運算,該等資料元件儲存於— %〈予 的暫存器中。部份寬度執行單元之組態係規劃;= 結 回 第 運 相 定 I J----一---------裝 (請先閱讀背面之注意事項HI寫本頁> 5-
470914 、發明說明(3 經濟部智慧財產局員工消費合作社印製 組或第二組指令集所指定的運算。 藉由附圖及詳細説明,本發 清楚呈現。 發月I其它特性及優點將更能 簡要説明 本發明以舉例方式説明,但 ih 1不限於所參考的附圖,圖中 /考數子與相似元件互相參照。其中· 圖:説明-緊縮型綱指令將來自第—個資料運算元盘 弟二個緊縮型資料.運算元的對應資料元相加。 ’、 圖2 A爲一簡化的方塊圖,根攄 — ^很據本發明疋一具體實施例 况明一不範的電腦系統。 _ 圖2 β爲一簡化的方塊圖,根 ^ ηπ _ 很艨本發明炙一具體實施例 沉月一組示範的邏輯暫存器。圖2C爲一簡化的方塊圖,根據本發明之另一具體實施 例說明一組示範的邏輯暫存器。 圖3爲一流程圖,根據本發明之一具體實施例説明指 之執行。 圖4根據本發明各種具體實施例,概念地說明執行部 寬度緊縮型資料指令的結果。 —圖5Α根據本發明之一具體實施例,概念地説明用於 行全寬度緊縮型資料指令及部份寬度緊縮型資料指人的 路。 > ' ' 圖5Β根據本發明之另一具體實施例,概念地説明用 執行全寬度緊縮型資料指令及部份寬度緊縮型資料指人 電路。 曰7 令 份 執 電 於 的 • n n 1 I n (請先閱讀背面之注意事項Hi:寫本頁) 訂/ _ ;線· 6- 470914 A7 B7 五、發明說明(4 ) 圖5 C根據本發明又另一具體實施例,概念地説明用於 執行全寬度緊縮型資料指令及部份寬度緊縮型資料指令的 電路。 圖6根據使用SIMD之處理器範例,説明一個ADD執行單 元及一個MUL執行型單元,其分別能夠以4個個別的ADD 執行單元及4個個別的MUL執行單元的方式運算。 圖7A-7B概念地説明以”交錯”方式分別執行的一個全寬 度緊縮型資料運算、及一個部份寬度緊縮型資料運算。 圖8 A概念地説明處理器内的熏路,其從邏輯暫存器存 取全寬度運算元而同時在運算元二半寬度上執行運算。 圖8B爲一時序圖,進一步説明圖8A之電路。 圖9概念地説明一無次序管道(out-of-order pipeline )之具 體實施例,藉由將一個巨集指令(macro instruction )轉換成 多個微指令(micro instructions )以''交錯"的方式執行運算 元之運算,其中每一微指令處理運算元全寬度之一部份。 圖10爲一時序圖,進一步説明圖9之電路。 圖1 1爲一方塊圖,根據本發明之一具體實施例,説明 可用以完成解碼程序之解碼邏輯。 發明之詳細説明 經濟部智慧財產局員工消費合作社印製 I n n n n I * I (請先閱讀背面之注意事項寫本頁) i線· 本文説明一種用以執行部份寬度緊縮型資料指令之方法 及裝置。此處所謂”全寬度緊縮型資料指令”係指一種在 一個或多個資料運算元之所有資料元上運算的緊縮型資料 指令(例如SIMD指令)。相反地,所謂”部份寬度資料指令 ’’係廣義地指設計用以僅在一個或多個緊縮型資料運算元 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 470914 A7 B7 五、發明說明(5 ) 之資料元子集合上運算並傳回一緊縮型資料結果(例如, 至緊縮型資料暫存器)的緊縮型資料指令。例如,一無向 量SIMD指令可能僅需要緊縮型資料運算元最不重要數對 間的運算結果。此例中,由於緊縮型資料結果之其餘資料 元對無向量SIMD指令無影響,故它們會被忽略(即其餘資 料元被忽視(don't cares ))。根據本發明之各種具體實施 例,可將執行單元之組態規劃成能夠有效率地調節全寬度 緊縮型資料指令(例如,SIMD指-令I及一組部份寬度緊縮 型資料指令(例如,無向量SIMD_指令)。 在下述詳細説明中,爲作解釋詳述許多特定細節提供 對本發明之完全了解。然而,對於熟知此技藝者而言,顯 然不須要這些特定細節即可實作本發明。在其它例子中, 常見的裝置、結構、介面及程序並未晝出或以方塊圖的形 式表示。 ’部份寬度緊縮型資料指令之調整 經濟部智慧財產局員工消費合作社印製 -I H ϋ ϋ I ϋ a— n I * I I (請先閱讀背面之注意事項m寫本頁) -丨線- 無向量架構(例如,單一指令單一資料(SISD )架構)在單 精度浮點資料、雙精度浮點資料及整數資料上作無向量運 算,考量爲該架構所撰寫的軟體數量時,有需要爲程式開 發者提供將其軟體接上支援像是SIMD架構之緊縮型資料 指令的選項,而不需要重寫其軟體或學習新指令。藉由提 供部份寬度緊縮型資料指令,一簡單的解譯可將舊的無向 量程式碼轉換成無向量緊縮型資料程式碼。例如,編譯器 將能夠很容易地從無向量程式碼產生無向量SIMD指令。 然後,由於開發者暸解其程式中可利用SIMD指令加以最 -8- 本紙張尺度適用中國國家標準(CNS)A4規格(210 x 297公釐) 470914 A7 B7 五、發明說明(6 ) 佳化的邵份,他們可以逐漸利用緊縮型資料指令的優點。 當然,使用SIMD技術的電腦系統亦可能利用支援犯0指 令而維持與舊系統相容。然而,本文所討論之許多最近的
架構改進及其它因素對於開發者在轉移至且在發揮SIMD 的技術上而言,有很大的幫助,即使剛開始只有使用盔向 量SIMD指令。 另一提供部份寬度緊縮型資料指令之調整,爲許多可利 用僅在全寬度運算K子集合上運算而獲致的優點,這些 ,點包括降低電力消耗、增加速度、清楚的異常模型及容 f加大。如下所述,根據連同部喻寬度緊縮型資料指令所 提么、的扎“,可藉由選擇性地關掉那些並非執行電流運轉 所需的硬體,以節省電力。 經濟部智慧財產局員工消費合作社印製 另個不希望強制緊縮型資料指令傳回個別結果給每一 資料=的情況,包括在一提供部份寬度硬體的環境中作算 數運算。由於成本及/或模子的限制,通常不會完全支援 特定的算數運算,如除法。本質上,除法是很長的運算, 即使是應用了全寬度硬體(例如,執行單元與資料元間一 =一的對應)。因此,在一個僅支援全寬度緊縮型資料運 算而提供部份寬度硬體的環境中,還會更長。如以下將更 詳細义說明所述,部份寬度緊縮型資料運算,例如部份寬 度緊縮型資料除法運算,可選擇性地允許其運算元之某部 份繞過除法硬體。以此種方式,則僅在緊縮型資料運 中t資料元子集合上作運算不會招致效能上的懲罰。 此外與外來資料元有關所引起的例外可能造成開發者 -9- 470914
經濟部智慧財產局員工消費合作社印製 五、發明說明(7 ) 混淆及/或SISD與SIMD機器之間不相容。因此,最好僅向 那些指令所要運算的資料元報告有異常發生。藉由將例外 條件之觸發限制在關於要運算的資料元所引起者,部分寬 度緊縮型資料指令之支援使得一可預測的異常模型可以獲 致’否則其中由外來資料元產生的例外有可能造成混滑或 SISD與SIMD機器之間不相容。 最後,在目標緊縮型資料運算元之一部份不會因爲執行 / 緊縮型資料運算而,毁損的具體實_施例—中,部份寬度緊縮型 資料指令有效地提供額外暫存空間以儲存資料。例如,若 要在^縮型資料的較低位元邵份來行運算,則資料可儲存 在較南位元部份,反之亦同。 二個電腦系統實例 圖2 A爲一簡化之方塊圖,説明根據本發明具體實施例 之電腦系統實例。在此處所述之具體實施例中,電腦系統 200包含一個處理器205、一個儲存裝置21〇及一匯流排 215。處理器2〇5以匯流排215連接至儲存裝置。此外,還 有些使用者輸入/輸出裝置,例如一個鍵盤220及—個顯 示器225,亦皆連接至匯流排215。電腦系統2〇〇亦可經由' 匯流排215連接至網路230。處理器205代表任何架構型式 之中央處理單元,例如CISC、RISC、VLIW或混合架構二 此外,處理器205可應用於一個或多個晶片上·。儲存裝置 210代表一個或多個儲存資料的機器。例如,儲存裝罾 210可能包括唯讀記憶體、隨機存取記憶體、磁碟儲存媒 體、光學儲存媒體、快閃(flash)記憶體裝置及/或其它機 -10- ^紙張尺度適用中國國家標準(CNS)A4規格(21Q x 297公爱)--- ---”---1·--------裝------》1 訂; (請先閱讀背面之注意事項寫本頁) .線· 470914 A7 B7 五、發明說明(8 ) 器可讀的媒體。匯流排21 5代表一種或多種匯流排(例如, AGP、PCI、ISA、X-Bus、EISA、VESA 等)及橋接器(亦 稱爲匯流排控制器)。雖然此具體實施例以單顆處理器之 電腦系統説明,但應了解本發明可應用於多處理器之電腦 系統。此外,雖然本具體實施例以3 2位元及6 4位元相關 的電腦系統説明,但本發明並不限於此種電腦系統。 圖2 A附帶説明處理器205包含一指令集單元260。當 然,處理器205包含額外電路;-然而、,此種電路對於了解 本發明並非必要。指令集單元2_60包含用以解碼或執行一 或多組指令集的硬體及/或勃體-。在所述之具體實施例 中,指令集單元260包含一個解碼/執行單元275。解碼單 元將處理器205所收到的指令解碼成一個或多個微指令。 執行單元回應從解碼單元收到的指令執行適當的運算。解 碼單元可利用許多不同的機制(例如,查詢表、硬體實 作’、PLA等)加以實作。 經濟部智慧財產局員工消費合作社印製 —*T n n I n I * t (請先閱讀背面之注意事項寫本頁) 線· 本例所示之解碼/執行單元275包含一個指令集280,指 令集280同時包括全寬度緊縮型資料指令及部份寬度緊縮 型資料指令。此等緊縮型資料指令在執行時可能致使處理 器2 0 5執行全部/部份寬度緊縮型浮點運算及/或全部/部 份寬度緊縮型整數運算。除緊縮型資料指令以外,指令集 280包含現有微處理器中所具有的其它指令。在本例之一 具體實施例中,處理器205支援相容於Intel 32位元架構 (IA-32)及/或Intel 64位元架構(IA-64)之指令集。 記憶體單元285亦包含於指令集單元260。記憶體單元 -11 - 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 470914 A7 經濟部智慧財產局員工消費合作社印製 五、發明說明(9 ) 285可包括一組或多組架構暫存器(亦稱爲邏輯暫存器), ^理詻205利用該等暫存器儲存資訊,包括浮點資料及緊 & $ '序點資料。此外,尚可包含其它邏輯暫存器以儲存整 ⑯只料*縮型整數資料及各種控制資料,如堆疊頂部指 払或類似資料。本文以架構暫存器及邏輯暫存器等名詞表 ^種類型的概念,其中指令指定一個含有單一運算元之 儲存區。因此,邏輯暫存器可用在一個使用任何數目之 所熱知技術的硬體中,包括專屬〜實體暫存器、一個或多㈣ 使用暫存备更名機制(將於下文詳述)的動態配置實體暫存 ,等。總之,邏輯暫存器代表緊龙型資料指令所能定址 最小儲存單元。 在所述(具體實施例中,儲存裝置21〇中存有電腦系 200執仃所用之作業系統23 5及緊縮型資料常式“ο。緊 土貝料系式240爲-循序指令,可能包含一個或多個緊 •^貝料扣令,如播向量SIMD指令或simd指令。如以下 一部詳述,有些情況,包括速度、電力消.耗及例外處理 需要僅在-個緊縮型資料運算元或_對緊縮型資料運算 中的資料元子集合上執行運算(或爲其傳回個別結果)。 此,處理器205最好能夠分辨全寬度緊緒型資料指令及 份寬度緊縮型資料指令並適當地執行之。 圖2B爲-簡化方塊圖,根據本發明之— 明邏輯暫存器之實例。在太你丨士 J κ 在本例中,記憶體285包含多個 向量浮點暫存器291 ( —盔向吾嶄六w ”、、穴里暫存器檔)及多個緊縮型浮 點暫存器292 (—緊縮型資料暫存 > 土斤 %孖姦檔)。捭向量浮點暫存 眾 個 的 統 縮 縮 進 元 因 部 説 無 n I n n n tn If I I (請先閱讀背面之注意事項HI寫本頁) 訂; 丨線· 12 表紙張尺度_巾關家鮮(c兩ΰΓ規格(210τ^^ 470914 五、發明說明(1〇
=91 (例如暫存器R。·叫可在執料點指令時作爲一堆A 參考用暫存器樓以便也現有良 且 炊;現有馬intei架構所窝之軟體相容。 ;二,二另:具體實施例中,暫存器291可视爲 在所述之具體實施例中,每—緊縮型浮點暫存器 '!如XMMG_XMM7)被用作單—128位元之邏輯暫存器。炊 可使用較寬或較有的暫存器以便符合使用較;、 或較少資料元或較大或較小資料元之實作例。此外, =多或較少之緊繪型浮點暫存.器292。與無向量浮點; ,备291相似,當緊縮型浮點指令執行時,緊縮型浮 存器292可用作堆疊參考用暫存_或平坦暫存器檔。 經濟部智慧財產局員工消費合作社印制农 資 爲-簡化方塊圖’根據本發明之另一具體實施例 况明邏輯暫存态(實例。在本例中’記憶體單元加包厶 多個無向量浮點暫存器291 (_無向量暫存器檔)及多個^ 縮型浮點暫存器292 (-緊縮型資料暫存器槽)。炊而,在 所述之具體實施例中,每一緊縮型浮點暫存器(例如 XMMq-XMM7)被用作相對應之一對高2 9 3及低之暫存器 294。如下文將詳細討論者,爲指令解碼的目的,最好爲 緊縮型浮點暫存器將邏輯暫存器之位址空間組織起來使得 該對高及^低暫存器相差一個單一位元。例如,χΜΜ。-ΧΜΜ7之咼及低位元部份可利用MSb加以區分。最好是, 每一緊縮型浮點暫存器291之寬度足以容納4個3 2位元的 單精度浮點資料元。然而,如上所述,可使用較寬或較窄 之暫存器以便符合使用較多或較少資料元或較大或較小 料元之實作例。此外,雖然本例中每一邏輯緊縮型浮點 13- 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 470914 A7 B7 經濟部智慧財產局員工消費合作社印製 五、發明說明(11 ) 存器292包含相對應之一對6 4位元暫存器,但在另一具體 實施例中,每一緊縮型浮點暫存器可包含任何數目之暫存 器。 指令執行概觀 在説明可用以實作本發明具體實施例之電腦系統之後, 現在將説明指令之執行。 圖3之流程圖説明根據本發明具體實施例之指令執行。 於步驟310,處理器205收到一假指令。於步驟32Ό,視指 令型式、部份寬度緊縮型資料指_令(例如,無向量SIMD指 令)或全寬度緊縮型資料指令(例-如,SIMD指令)而定,程 序以步驟330或步驟340繼續。通常,在解碼單元中,指 令之型式係根據包含在指令中的資訊決定。例如,資訊可 包含在附加於opcode之前置碼或後繼碼或以直接値提供以 表示相關的運算是否會在緊縮型資料運算元之資料元的全 部或子集合上執行。以此方式,相同的opcode可用於全寬 度緊縮型資料運算,亦可用於部份寬度緊縮型資料運算。 或者,一組opcode可用於部份寬度緊縮型資料運算而另一 組opcode可用於全寬度緊縮型資料運算。 總之,若指令是傳統的全寬度緊縮型資料指令,則在步 驟330,一緊縮型資料之結果係藉由執行運算元中每一資 料元上的指令所指定的運算以決定之。然而,-若指令是部 份寬度緊縮型資料指令,則在步驟340,結果的第一部份 係藉由執行資料元子集合上的指令所指定的運算加以決定 而結果的其餘部份被設爲一個或更多的預定値。在某一具 -14- (請先閱讀背面之注意1 事項寫 本頁) 裝 一 線· 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 470914 A7 B7 五、發明說明(12 二:施例中,該預定値是其中—個運算元中對應之資料元 牵二3F即’貝料兀可從其中_個運算元的資料元"傳送" ^縮型資料結果中的對應資料元。在另—具體實施例 ^結果《其餘部份中的資科元全被清除(設爲。將資 中-個運算元傳送至結果的執行邏輯實例及清除 〜果中資料元的邏輯實例如下所述。 =4概念地説明根據本發明各種具體實施例執行部份寬 指令的結果啊中,執行單元於兩個邏輯 存㈣〇及的資料元上執行運算。執行單元44〇 包含電路及邏輯’用以執行指令听指定的運算。此外,執 訂 =:40可包含選擇電路,使執行單元44〇能夠以部份 寬度糸縮型資料模式或全寬度緊縮型資料模式運算。例 二,執仃早兀可包含用以將資料元從邏輯來源暫存器 〇、420其中之_傳給邏輯目標暫存器43〇的傳送電路, 線 ==邏輯目標暫存器43。之一個或多個資科元的清 除毛“寺。料應用其它各種技術影響運算的結果 ^將運异的輸入之-強逅設爲一預定値’例如會造成運算 執仃其怪等函數的値或會傳送算數運算而
的値(例如,安靜_非數字(細侧+number,QN^M 在所示實例中’僅第一對資料元(χ。及γ〇)之運 儲存於邏輯目標暫存器伽。假設執行單元彻包。 白 及 重 則邏輯目標暫存器伽的其餘資料元會被設爲來 來源暫存器410之相對資料元的値(例如&、χ Χι)。雖然邏輯目標暫存器43〇以分開的方式表示,3但很1 2 1 _ -15- 2 G氏張尺度適用^ii?T?NS)A4規格⑽X 297公i 經濟部智慧財產局員工消費合作社印製 470914 A7 " "" ^ -------—7 —____ 五、發明說明(13 ) 玷是,L同時可作爲邏輯來源暫存器41〇、42〇之 -因此,應了解在此情況下將邏輯目標暫存器430的資 一又爲來自邏輯來源暫存器410、420之一可能等於什 =也/又作。例如,在邏輯來源暫存器4ι〇既是邏輯來源又 是目標暫存器的情況下,各種具體實施例可單純地不要接 觸要被傳送的一個或多個資料元。 或者,執行單元440可包含清除邏輯。因此,資料元結 ,不必要的値會故清除,而不是從其中一個邏輯來源暫存 ,傳送至邏輯目標暫存器43〇。再強調一次,本例中,僅 第對貝料元(χ〇及Y〇)之運算結-果z〇儲存於邏輯目標暫存 器430。邏輯目標暫存器43〇之其餘資料元皆被"清除,, (例如,設爲"〇”,或視情況設爲任何其它預定値)。 金^寬度硬體 圖5 A-5C分別概念地説明執行單元54〇、56〇及58〇,它 們暨可執行全寬度緊縮型資料亦能執行部份寬度緊縮型資 料指令。包含於於圖5A及5C之執行單元中的選擇邏輯代 表示範的傳送邏輯,而圖5 B之選擇邏輯爲典型可使用的 清除邏輯。在所述之具體實施例中,每一執行單元54〇、 560及580包含適當的邏輯、電路及/或韌體以便同時執行 運算57〇、571和572於運算元(X及γ)之全寬度上。 現在請參考圖5 A,執行單元5 4 0包含選擇邏輯(例如, 多功器(MUXes) 555-55?)用以在運算570所產生的値與來 自其中一個運算元的對應資料元之間作選擇。可,例如利 用指出目前將要執行的運算是全寬度緊縮型資料運算或是 .It — 丨卜 — — — — — — I- --- (請先閱讀背面之注意事項m'寫本頁) ΤΓ丨訂7 · 線- -16-
470914 A7 B7 五、發明說明(14 ) (請先閱讀背面之注意事項寫本頁) 部分寬度緊縮型資料運算的訊號,對MUXes 555-557加以 控制。在另一可行的具體實施例中,可藉由加入額外的 MUX給資料元〇及/或獨立控制每一 MUX而更有彈性。有 各種可能的方法可提供MUX控制。根據一具體實施例, 此種控制可從指令本身產生或導出或以直接値提供。例 如,可使用一與指令有關的4位元直接値使MUXes 555-557能夠被軟體直接控制。與直接値之一對應的MUXes會 用於選擇運算結果、,而與零對應者t用於選擇傳送資料。 當然,以較多或較少位元表示直_接値會使各種應用達到較 高或較低的解析度。 - 現在請參考圖5 B,執行單元540包括選擇邏輯(例如, MUXes 565-567)用以在運算571產生的値與一預定値(例 如0)之間作選擇。同上,MUXes 565-567可在正常控制下 或獨立控制。 經濟部智慧財產局員工消費合作社印製 ’圖5 C之傳送邏輯(例如MUXes 575_576 )在運算元之一的 資料元與一恆等函數値590之間作選擇。通常恆等函數値 590之選擇係使得,在恆等函數値590及資料元之間執行 運算572的結果是資料元的値。例如,若運算572爲乘法 運算,則恆等函數値590會是1。同理,若運算爲加法運 算,則悝等函數値590會是0。以此方式,可藉由使對應 的MUX 575-577輸出恆等函數値590,選擇性-地將資料元 的値傳送至邏輯目標暫存器430。 在前述之具體實施例中,電路係以使部分寬度運算在最 不重要資料元部分執行的方式燒死。應了解該運算亦可在 -17- 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 470914 A7 B7 五、發明說明(15 ) 與所述不同的資料元部分執行。此外,如前所述,可利用 將所有運算與MUX或其類似者相連而非僅與圖5A-5C所示 運算的子集合相連,將所要運算的資料元作成能夠以軟體 作組態規劃的形式。此外,雖然本例所述之傳送及清除邏 輯爲兩種選項,用於處理與被忽略之運算對應的資料元結 果,另一具體實施例可使用其它技術。例如,QNaN可爲 一結果會被忽略之運算的其中一個運算元的輸入。以此方 式,與1985年3甩2 1日出版之压^私std_ 754-198.5,IEEE 754標準符合的算數運算將傳播一 NaN至結果而不會觸發 算數例外。 雖然在運算元之全寬可平行處理以前,前述之具體實施 例並未達到明顯的速度增加,但應了解可藉由關掉那些結 果會被忽略的運算以減少電力消耗。因此,可明顯地節省 電力。此外,藉助使用QNaN及/或恆等函數値,可藉由避 免例外被不是部分寬度緊縮型資料運算之一部份的資料元 所觸發而維持一可預測的異常模型。因此,獲得的例外限 制在部分寬度緊縮型資料運算元所要運算的相關資料元引 起的例外。 經濟部智慧財產局員工消費合作社印製 圖6所示爲一目前處理器,其使用可用以執行全寬度緊 縮型指令算數邏輯單元(ALU)。圖6之卿包含在運;元 全寬(即所彳資料元)上執行運算户斤需要的電路。圖 明則可包含一個或多個不同型式的執行單元。此例中, 兩種不同型式的執行單元’分別用以執行不同型 式的運异(例如,某些ALU使用個別單元執行伽及祖 -18 經濟部智慧財產局員工消費合作社印製 470914 A7 __ B7 五、發明說明(16 ) 運算)。ADD執行單元及MUL執行單元分別能以4個個別 的ADD執行單元及4個個別的MUL執行單元的方式運算。 或者,ALU單元可包含一個或多個壘乘(Muhiply Accumulate,MAC)單元,每一單元能夠執行多種型式的 運算。雖然下列例子假設使用ADD和MUL執行單元及浮 點運算’但應了解亦可使用其它執行單元,例如mac及/ 或整數運算。此外,最好採用部分寬度之應用例(例如, 一個不含執行單元與資料元間二對二對應之應用例)及附 加邏輯以協調如下所述執行單元之再利用。 部分寬度硬體及"交錯埶杆” - 圖7A-7B分別概念地説明要以,,交錯”方式執行的全寬度 緊縮型資料運算及部分寬度緊縮型資料運算。在此具體實 施例的情況下,"交錯執行"係指,將指令之每一運算元 分解成個別區段並使用相同硬體循序處理每一區段的程 序。如圖7A-7B所示,兩種情況中,緊縮型資料運算元皆 被分解成一個’’南階區段’’(資料元3及2 )及一個"低階區 段"(資料tl 1及0 )。在圖7 A之例子中,低階區段係在高 階區段延遲時處理。之後,處理高階區段且得到全寬度結 果。在圖7 B之例子中,低階區段被處理,而高階區段處 理與否則視實際作法而定。例如,若對應的結果會被設爲 零’則高階區段可能不需要處理。此外,應了-解,若高階 資料區段未被處理,則可同時於高階及低階資料區段兩者 上作運算。同理,在一全寬度應用例中(例如,一個含執 行單元與資料元間一對一對應之應用例),高階及低階資 -19- 本紙張尺度適用中國國家標準(CNS)A4規格(210 x 297公釐) -------^---------裝·-- (請先閱讀背面之注意事項me寫本頁) 訂/ --線· 470914 A7 B7 發明說明(17 經 濟 部 智 慧 財 產 局 員 工 消 費 合 作 社 印 製 料區段可同時或以如圖7A的方式處理。 此外’雖然以下之且轉每彳丨、 昍、 . ,、丘只!l以僅具有ADD及MUL·執行單 兀說明t,但亦可其食刑々士此 丁平 再匕型式〈執行單元,如MAC。 有许多万法可達到指令之交 r > pl ^ ^ ^ /sr 人釦執行,以下將説明兩個示 施例以說明本發明之此觀念。特別是,所述兩 種示範具體實施例皆收到_如n 自收到相同的巨集指令,此指令指 含有128位元運算元的邏輯暫存器。 運ΐ第… 體實施例中-,每-指明含有⑽位 暫存器的巨集指令.造成運算元之全寬從實m 秦存器被存取。從暫存11存取料寬之暫存器以後,運算 元被分解錢冑以階⑽Ηπ,使驗似彡工 相同的硬體循序執行。所得到的半寬度結果被集合並同 寫入單一邏輯暫存器中。 相反地,在第二個示範的具體實施例中,每-指明含有 128位元運算元之暫在哭沾括 口々巨木扣令至少被分解成兩個微 指令,每一微指令僅運篡於搔嘗—、丄今 ' 逑异於運异半寬度上。此種型式 之分解在SIMD架構中县死处aa m . ^ 再甲疋可旎的,因爲每一運算元相互獨 立(無關)。雖然第二具體實施例之作法能夠以任何 行微指令(爲-依序或無序之執行模型),但微指令會分別 造成巨集指令所指明的運算獨立地或個別地於運算元之低 或高階區段上執行。此外,每一微指令會造成_丰的結 運算元被寫入巨集指令所指明的單一目標邏輯暫存器。 雖然所述具體實施例中,128位元運算元被分解成兩 區段,其它具體實施例可使用較大或較小之運算元且 明 元 體 以 時 果 個 /或
--L---L---------裝--- (請先閱讀背面之注意事項H寫本頁) 訂;· · --線· 470914 A7 B7 五、發明說明(18 ) 孩等運算凡分解成兩個區段以上。此外,雖然此二具體實 施例係以交錯執行加以說明,其它具體實施例可適用其它 技術。 ~第一個彔節且體實施例 圖8 A根據第一個具體實施例,概念地説明一處理器中 的電路,它從邏輯暫存器存取運算元全寬但一次僅於運算 元半寬度上執行運算。此具體實施例假設處理器引擎每一 時脈週期能夠處理、一個指令。舉^列說g月,假設執行下列指 令序列:ADD X,γ; MUL A,B。於時間T,128位元之X及 128位元之Y經由埠i及2從其個別之實體暫存器被擷取出 來。X及Y之低階資料元,即較低的6 4個位元,皆被傳入 多工器802及804中然後至執行單元處理。高階資料區 段’ X及Y的64個較高位元被保留在延遲元mi及M2中。 於時間T+1,X及Y之高階資料區段從延遲元M1 被
讀出並傳入多工器8〇2及8〇4,然後至執行單元處理。通 常’延遲元件Μ 1及Μ 2中,儲存高階資料區段的延遲機構 允許Ν位元(此例Ν = 64 )硬體處理2 Ν位元的資料。然後得 自執行單元的低階結果會保留於延遲元M3中直到高階結 果已就緒。兩種程序之結果皆經由埠3寫回暫存器樓 800。請回想部分寬度緊縮型資料運算的情況,低或高階 結果的一個或多個資料元可強制設爲預定値(例如,〇、X 或Υ其中之一的資料元的値,等),而不是ADD或MUL運 算的結果。 繼續討論本例,於時間T+1,MUL指令亦已開始。因 -21 - 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) (請先閱讀背面之注意事項^?^寫本頁) 裝 經濟部智慧財產局員工消費合作社印製 470914 A7 B7 五、發明說明(19 ) (請先閱讀背面之注意事項寫本頁) 此,於時間T+1,每一 A與B之128位元可能經由埠1及2各 自從其暫存器被擷取出來。A及B之低階資料區段,即較 低的6 4個位元,皆可傳入多工器806及808。在X及Y的高 階位元從延遲元Ml及M2移出並傳入多工器806及808之 後,A及B之高階位元可保存於延遲元Ml及M2中。兩種 處理步驟皆經由埠3寫回暫存器檔800。 因此,根據本發明之具體實施例,僅提供含一半硬體的 執行單元(例如,兩個單精度ADD執i于單元及兩個單精度 MUL執行單元),而不是目前處理器中同時處理運算元全 寬度所需之執行單元。此具體實施例利用統計分析,説明 多媒體應用使用大約百分之五十之ADD指令及百分之五 十之MUL指令。根據這些統計數字,此具體實施例假設 多媒體指令通常遵循下列方式:ADD,MUL,ADD, MUL等。藉由以前述方式使用ADD及MUL執行單元,本 發明可對執行單元作最佳的利用,因此能夠有相當於目前 處理器的速度,但成本更低。 經濟部智慧財產局員工消費合作社印製 圖8B之時序圖進一步説明圖8A之電路。更特定地,如 圖8 B所示,當指令·· ADD X,Y”於時間T發出,兩個ADD 執行單元首先會在低階資料區段或圖1中兩個較低的緊縮 型資料元,即X〇Y〇及XiYi,上執行ADD。於時間T+1,相 同的執行單元在取自運算元的其餘兩個資料元上執行 ADD運算,且加上高階資料元之後續兩個資料元,即 X2Y2和X3Y3。雖然前述具體實施例以ADD及MUL運算使 用兩個執行單元加以説明,但其它具體實施例可能使用任 -22- 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 470914 A7 B7 經濟部智慧財產局員工消費合作社印制衣 五、發明說明(20 ) 何數目之執行單元且/或以交錯方式執行任何數目的不同 運算。 根據本具體實施例,可使用64位元硬體處理128位元資 料。一 128位元暫存器可分解爲4個3 2位元的單元,每一 單元代表個別的3 2位元値。於時間T,兩個ADD執行單元 首先執行ADD於兩個低位元値上,接著於時間T+1時執行 ADD於高階的3 2位元値上。在MUL運算的情況,MUL執 行單元以相同的方式運算。此種以可用的6 4位元硬體處 理128位元資料的能力使硬體製造商獲得成本明顯降低的 利益。 — 如前述,根據本發明,ADD及MUL執行單元係用以在後 續時脈週期再執行令一個ADD或MUL運算。當然,在部 分寬度緊縮型資料指令的情況,會再使用執行單元但運算 不必再次執行,因爲供給執行單元的電力可選擇性地關 掉。總之,如前述,爲使此''再使用”或”交錯執行”能有 效地執行,此具體實施例利用多媒體應用之統計行爲。 若第一個ADD指令之後跟隨著第二個ADD指令,則可利 用排程單元延遲第二ADD指令使ADD執行單元能夠完成 第一個ADD指令,或更特定地,完成第一個指令的高階 資料區段。然後可開始執行第二個ADD指令。或者,在 一無序處理器中,排程單元可決定指令流再啦下的MUL 指令可無序地執行。若是如此,則排程單元可通知MUL 執行單元開始處理MUL指令。若時間T+1時無有效的MUL 指令可處理,則排程器不會在第一個ADD指令之後發出 -23- (請先閱讀背面之注意事項寫本頁) 裝 . 線· 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 470914 A7 經 濟 部 智 慧 財 產 局 員 工 消 費 合 作 社 印 製 L、發明說明(21 ) 指令’因此使細執行單元在㈣第:個趣指令之前 有足夠時間完成第一個add指令。 本發明尚有另一具體實施例,藉由在半時脈週期於相同 的執行單元上執行指令,而非全時脈週期,使背 ADD或隱指令能夠發出。於半時脈週期執行指令有效 地"加倍推動··硬體,即使硬體變成兩倍快。以此方式, 每一時脈週期期間’ ADD及MUL執行單元皆可用以處理 新的指令。加倍报動的硬體使硬遺單元的效率是單—推動 之硬體的兩倍,單一推動之硬體僅在全時脈週期上執行。 然而加倍推動之硬體需要更大量妁硬體以便有效地在半 脈週期上處理指令。 、應了解上述指引及後附之申請專利範圍能夠涵蓋本發明 t修改及變化而不偏離本發明之精神及範圍。例如,雖然 以上僅説明2個執行單元,但可提供任何數目的邏輯單 元0 交錯執行"的第二個示範具體實施例 根據本發明之另一具體實施例,運算元全寬之交錯執行 係藉由將一全寬度巨集指令轉換成至少兩個微指令而丁 成,每一微指令僅於運算元半寬上運算。如以下將進— 詳述者,當巨集指令指明一部份寬度緊縮型資料運算, 利用除去不需用以決定部分寬度結果的微指令達到較佳 效能。以此方式,可減少處理器資源之限制且處理器不 被典關緊要的微指令佔用。雖然以下所述係根據特定的 存器更名法44寫’但應了解,亦可使用其它符合本發明 達 步 可 的 必 之 I L---K--------裝--- (請先閱讀背面之注意事項寫本頁) 訂一 --線-
-24- 本紙張尺度適財關家鮮(CNS)A4—祕(2K) xliTTF 470914 A7 ------ --------------- 五、發明說明(22 ) 暫存器更名機制。下述之暫存器更名法假設使用暫存器別 名表、紀錄缓衝區及間置緩衝區,如美國專利號碼 5,446,912所詳述。亦可應用其它可用之暫存器更名法,如 美國專利號碼5,197,132所述者。 圖9概念地説明—管線之具體實施例,該管線以"交錯" 万式在運算元上執行運算,係利用將—巨集指令轉換成多 個微指令,每-微指令處理運算元全寬的—部份。請注 意,管線之其它各階段,例如prefetch階段,並未畫出以 免不必要地模糊本發明。如圖示,在管線的解碼階段,收 到-全寬巨集指令,指明邏輯來.源暫存器,每—暫存器儲 存—全寬運算元(例如,128位元)^舉例説明,所述運算 元爲128位元緊縮型浮點資料運算元。此例中,處理器支 援用以儲存緊縮型浮點資料的γ邏輯暫存器。巨集指令被 轉換成微指令,即—"高階運算"及一,,低階運算",每一 微指令造成巨集指令之運算在運算元的半寬度(例如,“ 位元)上執行。 …:後4兩個半寬度微指令進人管線的暫存器更名階段。 暫存杏更名階段包含各種暫存器對應關係及重整暫存器。 母一微指令之邏輯來源係指向暫存器對應表(例如,RAT) 中特定⑽項的指標。然後暫存器對應表中的記綠項指向 ROB或閒置暫存器中物理來源位置的位置。根據一具體實 她例’馬配合上述之半寬度高階及低階運算,提供一用於 緊縮型浮點資料、具有Y*2記錄項的RAT。因此,例如, 建 八有1 6 ”己錄項的RAT,每一記綠項定以"高"或,,低 it·---r,------!裳·! (請先閱讀背面之注咅?事項寫本頁) 訂一 --線· 經濟部智慧財產局員工消費合作社印製 -25- 470914 A7 五、發明說明(23 ) 位址’而非具有8個邏輯暫存器的rat。每一記錄項標 I I K---!_!!11>1--I (請先閱讀背面之注意事項In'寫本頁) 不一個對應至128位元邏輯暫存器之高位元或低位元部分 的6 4位元來源。 因此每一鬲階或低階微指令在對應於個別運算元之暫存 器的對應表中有關聯的記錄項。接著,微指令進入排程階 段(對於無次序處理器而言)或執行階段(對於依序處理器 而呂)。母一微指令擷取並個別處理丨28位元運算元之6 4 位70區段。其中二個運算(例如』氐階運算)首先由6 4位元 硬體單兀執行。然後同一硬體單元會執行高階運算。應了 解零或更多指令可在低階及高階運算之間執行。 ί線. 雖然前述具體實施例説明被分解成兩個微指令的巨集指 令,但其它具體實施例可將巨集指令分解成更多的微指 令。雖然圖9所示,緊縮型浮點資料傳回至具有丫”個㈠ 位兀暫存器的閒置暫存器檔,每一暫存器標示爲低或高, 但其它具體實施例可使用具有¥個128位元暫存器之閒置 暫存益檔。此外,雖然所述之具體實施例有一個具備重整 緩衝區及間置暫存器檔的暫存器更名機制,但其它具體實 施例可使用任何種類的暫存器更名機制。例如,美國專利 經濟部智慧財產局員工消費合作社印製 號碼5J97J32之暫存器更名機制使用後用歷史記錄及備份 對應。 圖10之時序圖進一步說明圖9所示之具體實-例。於時間 τ,一巨集指令"ADD X,γ"進入圖9所示管線之解碼階 段。舉例説明,此處之巨集指令爲一 128位元之指令。此 128位το之巨集指令被轉換成2個64位元的微指令,即高 -26-
:ί γΗ"與低階運算"ADD k、"。然後每 q u的_個區段,此資料包含兩 例如,於時間T,低階運苴 , ^ Μ運异可由-個64位元的執行單元執 元埶::f —不同的時間(例如,時間位 執仃早凡執行高階運算。現有 現有的邏輯暫存器對瘫乏林^ 版使其在 緊缩型浮點/卜,加人—新的對應,以便處理 現在請參考圖U,此圖説明I據本發明之具體實施例 :使㈣解碼邏輯。簡言之,在所述具體實施例中:數個 解碼备111G、112G及113G各別擬取—巨集指令 換成-微指令。當然,並非每—巨集指令之執行皆需= 個微指令。因此,通常僅有微指令的子集合等 餘階段處理。 ' 經濟部智慧財產局員工消費合作社印製 如則所述,可利用兩個半寬度的微指令(例如,一高階 運算及一低階運算)實作緊縮型資料運算。本具體實施例 有一特點爲,兩個微指令皆可由同一個解碼器產生,而不 疋像先則處理器應用所需,以兩個解碼器獨立將巨集指令 解碼而產生冑階及低階運算。此射,此係丨複製邏輯 1150完成,複製邏輯1150複製高階或低階運算並繼之適 當地修正形成之運算以建立其餘的運算。很重要的一點 是,如前所述,藉由仔細地將暫存器的位址空間編碼,可 將微指令所參照的暫存器(例如,邏輯來源及目標暫存器) 作成相差一個單一位元。結果,修正邏輯116〇的最簡單形 式可能包含一個或多個反向器用以將適當的位元反向而自 -27- 470914 A7 B7 25 ) 五、發明說明 低階運算產生高階運算,反之亦同。不論如何,複製的微 指令會接著被傳至多工器117〇。多工器117〇亦會擷取解 碼器1120所產生的微指令。此例中,多工器,在有效的解 碼器1180之控制下,輸出複製的微指令給緊縮型資料運算 (包括部分寬度資料運算)且輸出從解碼器1120擷取的微指 令給緊縮型資料運算之外的運算。因此,將〇pc〇de對應作 最佳化有利於簡化複製邏輯1丨5〇對緊縮型資料運算的偵 貝J例如’若僅需·要檢查巨集指,令之一小部份以分辨緊縮 型資料運算與其它運算,則有效性解碼器i丨8〇可使用較少 的電路。 經 濟 部 智 慧 財 產 局 員 工 消 費 合 社 印 製 在一傳送來源資料元給邏輯目標暫存器以便執行部分寬 度糸縮型資料運算的應用例中,除了與圖5 A及5 c所述相 似的選擇性邏輯以外,尚可加入用以除去("刪除(km )·,) ^階或低階運算之一的邏輯。最好是,考慮效能,儘早在 吕線中刪除無關緊要的微指令。前述刪除動作可根據所述 之具te μ施例,利用從微指令長度決定電路!丨9〇輸出的微 指令選擇訊號加以完成。微指令長度決定邏輯1190檢查巨 集指令的一部份並產生微指令選擇訊號,此訊號標示一個 或多個朝管線下方繼績進行之微指令的—個特別組合。若 爲典向量SIMD指令,則僅高階或低階運算結果可繼續 進行Y例如,微指令選擇訊號可表示爲位元遮罩,標示出 f5二爲;令要維持,而哪些要刪除。或者,微指令選擇訊 號可僅只從一預定起始點標示所要維持或刪除的微指令數 目。冗成前述刪除動作所需要的邏輯視引導微指令通過管 -28-
470914 A7 B7 五、發明說明(26 ) 經濟部智慧財產局員工消費合作社印製 餘部分的引導機構會有所不同。例 待處理中’則可加入操控待處理微指令m: 的邏輯,使得無效的微指 、及表尾扣榼 耷。铼少甘—加人 7破後、.,貝產生的有效微指令覆 易見的㈣於普遍熟知此技藝者而言是顯而 时雖然爲求精簡,在所述具體實施例中,—次僅解碼—個 早-巨集指令加以説明,在其它具體實施例中,可同時解 碼多個巨集指令。,此外’應了解雀指令複製較上述具體實 施例所述者有更廣泛之適用性。例如,以相似於上述具體 實施例的方式,全寬度及部分寬度緊縮型資料巨集指令可 利用同一種解碼器加以解碼。若以前置字元區別全寬度及 部分寬度緊縮型資料巨集指令,解碼器可單純地忽略該前 置4·元並以相同方式將兩種型式之指令解碼。然後,可修 改微運算結果中適當的位元以便選擇性地使資料元的全部 或子集合可被處理。以此方式,全寬度緊縮型資料微運算 可從部分寬度緊縮型資料微運算產生,反之亦同,因而降 低解碼器的複雜性。 因此,本文發表一種有效地執行部分寬度緊縮型資料指 令的方法及裝置。本文所述之特定配置及方法只不過説明 了本發明之原理。熟知此技藝者可作許多型式及細節的修 改而不超出本發明之範圍。雖然本發明以一幹定之較佳具 體實施例説明,不應將其視爲限制。更確實地説,本發明 僅受限於後附之申請專利範圍。 29- 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 閱 面 之 項
訂 線 t, C C 7 4 煩讀委員明示 年7月/σηι·所提之 經濟部中央標準局員工消費合作社印製 第88105137號專利申請案 中文說明書修正頁(90年7月) A7 B7 p年/月/出丨1^正 補充 五、發明説明() 元件符號說明 200 電腦系統 570,571、572 運算 205 處理器 575、576、577 多工器(MUXes) 210 儲存裝置 590 恨等函數值 215 滙流排 605 發出埠 220 鍵盤 800 暫存器檔 225 顯示器 802、804、806、808 多工器 230 網路 1110 、 1120 、 1130 解碼器 235 作業系統 1150複製邏輯 240 緊縮型資料常式 1160修正邏輯 260 指令集單元 1170 多工器 275 解碼/執行單元 1180有效性解碼器 280 指令集 1190微指令長度決定邏輯 285 記憶體單元 Ml、M2 延遲元件 291 無向量浮點暫存器 292 緊縮型浮點暫存器 293 南之暫存為 294 低之暫存器 410、 420 邏輯來源暫存器 430 邏輯目標暫存器 440 執行單元 540、 560、580 執行單元 555-557 多工器(MUXes) 565-567 選擇邏輯(MUXes) - 29a- 本紙張尺度適用中國國家標準(CNS ) A4規格(210X 297公釐)
Claims (1)
- 470914 弟881〇5丨37號專利申請案 文申請專利範圍修正本(9〇年7月、 A8 B8 C8 D8 ~— 修正 補充 申請專利範圍 年/月 > 日 一種處理器,包含: 多個暫存器; 暫存益更名單元耦合至該多個暫存器,提供一架構 暫存器構以儲存緊縮型資料運算元,每—所述之緊縮型 資料運算元之每一運算元具有多個資料元; 二解碼器,’連接至該暫存器更名單元,用以將第一組 及第一組札令解碼,每一組指令指定架構暫存器中之一 個:多個暫存器’第一組指令中的每一指令指定要在所 有資料几件上執行的運算,該等資料元件儲存於一個或 f多指定的暫存器中,第二組指令集中的每-指令僅指 足要在資料元之子集合上執行的運算,該等資料元件儲 存於一個或更多指定的暫存器中;及 部分寬度執行單元,連接至解碼器用以執行該第一 或第二組指令所指定的運算。 2. 如申請專利範園第!項之處理器,其中該資料元之子集 合儲存在指定的一個或多個包含對應之最不重 的暫存器。 3. 如申請專利範圍第丨項之處理器,尚包含一執行單元, 視所指定的運算與該第—或第二組指令有關,選擇性地 在指定的-個或多個暫存器中的一個或多個資料元上執 行運算。 4. 如申請專利範圍第3項之處理器,其中該執行單元尚包 含多個多工器’可在指定運算的結果及預定值之間:: 擇0 本紙張尺歧財S Η家榡準(CNS ) Α·Μ 210X297公董)" 470914申請專利範圍 5·如申請專利範圍第3項之處ΐ器‘其中該執行單元尚包 含多個多工器’可在-個或多個資料元中的_資料元或 一用以輸入至指定運算的恆等函數之間作選擇。 6· —種方法,包含下列步驟: 接收-個早-巨集指令,其在一緊縮型資料暫存器構 案中指定至少兩個邏輯暫存器,其中該兩個邏輯暫存器 分別儲存具有對應資料元之一第一緊縮型運算元及第二 緊縮型運算元;及 ,在不同時間’從第-及第二組緊縮型資料元獨立地在 第一及第二組多個對應的資料元上作運算。其運算係, 使用該同一電路獨立產生第一及第二組多個結果資料 元: 在該第一及第二組多個對應的資料元中,執行該單一 巨集指令所指足的運算於至少一雙對應的資料元上,以 產生該第一及第二組多個資料元結果之一組資料元;及 將該第一及第二組多個結果資料元的其餘結果資料元 設定為一個或多個預定值;及 將邊第一及弟一組多個結果資料元儲存在一單一邏輯 暫存器中成為一第三緊縮型資料運算元。 7·如申請專利範圍第6項之方法,其中該一個或多個預定 值包括來自該第一緊縮型資料運算元或該第二緊縮型資 料運算元的資料元值。 8.如申請專利範圍第6項之方法,其中該一個或多個預定 值包括零。 -2 - 本紙張尺度適用中國國家標準(CNS ) Μ規格(210Χ297公釐) ---------裝------訂^------線 (請先閲讀背面之注意事項再填寫本頁) 經濟部中央標準局員工消費合作社印製 470914 六、申請專利範圍經濟部中央標準局員工消費合作社印裝 9·如申睛專利範圍第6項之方法,中 值包括一非數^ t u其中孩一個或多個預定 非數子(not+number,NaN)指標。 10. —種處理器,包含: 71!體/用以儲存具有—第—多數資料元件之-第 Π型;料運算元以及具有-第二多數資料元件之: 弟一 I、縮資料運算元; 運:邵=度緊縮資料指令’用以指定第—緊縮型資科 斑第二…以及用以指定要於第-/、 一厂貝料運算兀足對應資料元件對之一子集人 執行之一第一運算; 口 解碼姦,連接至記憶體以接收部分寬度緊縮型 才曰令且將部分寬度緊縮型資料指令解碼;及 -部分寬度執行單元連接至解碼器 料元件對之子集合上之運算。 愿只 η·如申請專利範圍第10項之處理器,其中該解碼器符一將 邵分寬度緊縮型資料指令轉成—第一微指令與一第二微 指令之解碼器’第一微指令則對應於該 縮型資料運算元之至少一對應資料元件對之—第:子】 合γ且第二微指令則對應於該第一與該第二緊縮型資料 運算元之至少一對應資料元件對之一第二子集合,及 其中該部分寬度執行單元係一執行由該第一子集合上 該第-微指令所指定-運算元之部分寬度執行單元。 12·如申請專利範圍第1 1項之處理器,尚包含一埠,用以接 收該第-子集合之至少一資料元件且不接收該第二子集 3- 本纸張尺度逋用中國國家標準(CNS ) Α4規格(210X297/^) ^1 ^ -------^ (請先閎讀背面之注意事踴再填寫本頁) 470914 A8 B8 C8 D8 正 '申請專利範圍 合之一資料元件。 一― 13·如申請專利範圍第U項之處理器,其中該處理器係一用 以消除該第二微指令之處理器·,及其中該處理器係一用 以將對應於該第二子集合之至少一結果資料元件置定為 一預定值之處理器。 14_如申請專利範圍第11項之處理器,尚包含延遲電路,用 以延遲該第二子集合上運算之執行;及其中該部分宽度 執行單元係一於延遲之後用以執行由該第二子集合上該 第二部分寬度微指令所指定一運算之部分寬度執行單 元。 15-如申請專利範圍第10項之處理器,尚包含與該記憶體連 接而接收該第一緊縮型資料運算元之一第一埠,及與該 冗憶體連接而實質上同時接收該第二緊縮型資料運算元 之一第二埠; 尚包含分解電路,用以將該第一緊縮型資料運算元分 解成包含至少一資料元件之一第一子集合與包含至少一 '貝料元件之一第二子集合,及將該第二緊縮型資料運算 元分解成包含至少一資料元件之一第三子集合與包含至 少一資料元件之一第四子集合;及 其中該部分寬度執行單元係執行該第一與第三子集合 至少一對應資料元件對上之該第一運算以產生至少一結 果資料元件之一部分寬度執行單元。 16如申請專利範圍第丨5項之處理器,尚包含用以延遲該第 二子集合與用以延遲該第四子集合之延遲電路;及 4- ^紙張尺度適用赠) I «~1Τ"*------,4t (請先閱讀背面之注意事項再填寫本頁) 經濟部中央標準局員工消費合作社印製 7 經濟部中央標準局舅工消費合作社印製 4 9 4 8 88 8 ABCD 六、申請專利範圍 厂一..................~—Ί丄丨:丨 \ I 、: ! : 其中於該延遲之後,該部分寬度執行單元係執行該第 二與該第四子集合至少一對應資料元件對上之該第一運 算以產生至少一另外結果資料元件之一部分寬度執行單 元。 17·如申請專利範圍第丨5項之處理器,其中該部分寬度執行 單元係一部分寬度執行單元,藉由將該至少一另外結果 資料元件設定為一預定值而產生對應於該第二與該^四 子集合之至少一另外結果資料元件。 18_如申請專利範圍第15項之處理器,其中該部分寬度執行 單元係於一半時脈週期上執行該緊縮型資料指令與—第 二類似緊縮型資料指令之一部分免度執行單元。 19如申請專利範圍第15項之處理器,其中該部分寬度執行 單元係一 64位元部分寬度執行單元,且其中該第一與今 弟一緊縮型資料運算元係128位元運算元。 20· —種方法,包含 接收一緊縮型資料指令,其指定具有多數資料元件之 一第一全寬度緊縮型資料運算元以及具有對應多數資= 元件之一第二全寬度緊縮型資料運算元之記憶體位置; 實質上同時自該記憶體位置存取該第一全寬度緊縮型 資料運算元與該第二全寬度緊縮型資料運算元; 土 分解該第一全寬度緊縮型資料運算元為資料元件之〜 第一子集合與資料元件之一第二子集合以及分解該第二 全寬度緊縮型資料運算元為資料元件之一第三子集合與 資料元件之一第四子集合; ^ -5- 本紙張尺度逋用中國國家榡準(CNS ) Μ規格(210X 297公釐) ---------裝-----1訂--------線 (請先閲讀背面之注意事項再填寫本頁,> 470914 A8 B8 C8 D8 申請專利範圍 ρ年7月~ |修正補充 執行由資料元件該第一與第三子集合上該緊縮型資料 指令所指定之一運算以產生一第一結果一或多資料元 件; 延遲資料元件之該第二與第四子集合; 於該延遲之後,執行由資料元件該第二與第四子集合 上該緊縮型資料指令所指定之一運算以產生一第二結果 一或多資料元件;及 將該第一與第二結果資料元件存於一共同之緊縮型資 料運算元内。 21. 如申請專利範圍第2 0項之方法,其中執行由第二與第四 子集合上巨集指令所指定之一運算包含將一資料元件設 定為一預定值。 22. 如申請專利範圍第2 0項之方法,其中該分解包含將一 1 2 8位元緊縮型資料運算元分解成兩低位階資料元件之 一 64位元段與兩高位階資料元件之一 64位元段。 23. —種處理器,包含: 一緊縮型資料指令,於至少一緊縮型資料運算元之多 數資料元件上指定一運算; 經濟部中央標準局員工消費合作社印裂 (請先閲讀背面之注意事項再填寫本頁) 一解碼器,對應於該緊縮型資料指令而產生一第一微 指今與一第二微指令,該第一微指令指定一第一運算且 該第二微指令指定一第二運算; 一執行單元,執行由多數緊縮型資料元件之僅僅一子 集合上之該第一微指令所指定之一運算;及 電路,用以消除該第二微指令。 6 本紙浪尺度適用中國國家標準(CNS ) A4说格(210X297公釐) 47091424·如申請專利範圍第2 3項之g理器-,其中該解碼器係建立 孩第二微指令之一解碼器,藉複製該第一微指令以建立 一複製品且修飾該複製品以建立該第二微指令。 25·如申請專利範圍第2 4項之處理器,其中該執行單元係將 一結果緊縮型資料運算元之一資料元件設定為一預定值 之一執行單元。 26,一種方法,包含: 接收一緊縮型資料指令以指明一第一緊縮型資料運算 元與一第二緊縮型資料運算元之記憶體位置; 將違縮型資料指令轉換成一第一緊縮型資料微指令 與一第二緊縮型資料微指令; 執行該第一緊縮型資料微指令,包括自該第一與第二 縮型資料運算元包含至少一對應資料元件對之該第一 與該第二緊縮型資料運算元存取僅僅資料元件之一子集 合,且令由該緊縮型資料指令所指定之一運算於該子集 合上執行,以產生一結果一或多資料元件;及 經濟部中央標準局員工消費合作社印製 執行該第二緊縮型資料微指令,包括自該第一與第二 聚縮型^料運算元包含至少一對應資料元件對之該第一 與該第二緊縮型資料運算元存取僅僅資料元件之一子集 合h且令由該緊縮型資料指令所指定之—運算分開地於 ί亥子集合上執行,以產生一或多另外資料元件。 27·如申請專利範圍第2 6項之處理器,其中執行該第二緊縮 型資料微指令包括將一或多另外資料元件之一資料元件 置定為一預定值。 本紙張尺度適用中國國家標準(CNS ) Α4規格(210Χ297公釐) A8 B8 〜^^__ C8 二 --------------D8 穴、申請專利範圍 二'... 2g » 申叫專利範圍第2 6項之處理器,尚包含: 將結果一或多資料元件寫至一結果緊縮型資料運算 A ;及 將結果一或多另外資料元件寫至相同之結果緊縮型資 枓運算元。 、 •=申請專利範圍第2 6項之處理器,其中執行該第二緊縮 土貝料微指令係相對於執行該第一緊縮型資料微指令而 延遲。 30·—種處理器,包含: ~記憶體,用以儲存一第一緊縮型資料運算元與一第 二緊縮型資料運算元; 指令’用以指明該第一緊縮型資料運算元與該第二 焦、、宿型:貝料運算元,且用以指明欲於一該第一緊縮型資 料運算元與該第二緊縮型資料運算元上執行之運算。 解碼器裝置’用以將該指令解碼;及 執行裝置,用以執行該指令。 Μ·如申請專利範圍第3 〇項之處理器,其中該解碼器裝置係 用以將指令解碼成其指明僅於該第一與該第二緊縮型 '貝料運算元之一部分上運算之一第一微指令之解碼器裝 置’、以及其指明僅於該第一與該第二緊縮型資料運算元 之不同部分上運算之一第二微指令。 32·如申請專利範圍第3 〇項之處理器,其中該執行裝置係一 用以執行由該第一與該第二緊縮型資料運算元對應資料 元件對之一第一子集合上指令所指明之運算之執行裝 -8- 本紙張;Clii用巾關家揉準(CNS ) Α4· ( 21()><297公董)' ----- (請先閲讀背面之注意事項再填寫本頁) •裝‘ 訂 線 輕濟部中央榡隼局員工消費合作社印策 470914 A8 B8 C8 D8 f〇 7 /<, 申請專利範圍 置,且於一延遲之後,用以執行由該第一與該第二緊縮 型資料運算元對應資料元件對之一第二子集合上指令裝 置所指明之運算。 ---------裝------訂J------線 (請先閲讀背面之注意事項再填寫本頁) 經濟部中央標隼局員工消費合作社印製 本紙張尺度適用中國國家標準(CNS ) A4規格(210X297公釐)
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/053,127 US6230253B1 (en) | 1998-03-31 | 1998-03-31 | Executing partial-width packed data instructions |
Publications (1)
Publication Number | Publication Date |
---|---|
TW470914B true TW470914B (en) | 2002-01-01 |
Family
ID=21982113
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW088105137A TW470914B (en) | 1998-03-31 | 1999-05-03 | Executing partial-width packed data instructions |
Country Status (7)
Country | Link |
---|---|
US (3) | US6230253B1 (zh) |
CN (3) | CN100367269C (zh) |
DE (1) | DE19914617C2 (zh) |
GB (1) | GB2339040C (zh) |
HK (1) | HK1027402A1 (zh) |
SG (1) | SG85630A1 (zh) |
TW (1) | TW470914B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7676649B2 (en) | 2004-10-01 | 2010-03-09 | Lockheed Martin Corporation | Computing machine with redundancy and related systems and methods |
US7987341B2 (en) | 2002-10-31 | 2011-07-26 | Lockheed Martin Corporation | Computing machine using software objects for transferring data that includes no destination information |
TWI511043B (zh) * | 2011-12-22 | 2015-12-01 | Intel Corp | 用以產生整數的序列之方法、裝置、系統及製造物品 |
TWI512517B (zh) * | 2013-08-06 | 2015-12-11 | Intel Corp | 用以提供族群計數功能予基因定序及排比之方法、設備、指令以及邏輯組件 |
US9336000B2 (en) | 2011-12-23 | 2016-05-10 | Intel Corporation | Instruction execution unit that broadcasts data values at different levels of granularity |
US9424327B2 (en) | 2011-12-23 | 2016-08-23 | Intel Corporation | Instruction execution that broadcasts and masks data values at different levels of granularity |
US9513907B2 (en) | 2013-08-06 | 2016-12-06 | Intel Corporation | Methods, apparatus, instructions and logic to provide vector population count functionality |
US10223111B2 (en) | 2011-12-22 | 2019-03-05 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset |
US10565283B2 (en) | 2011-12-22 | 2020-02-18 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of consecutive integers in numerical order |
US10866807B2 (en) | 2011-12-22 | 2020-12-15 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of integers in numerical order that differ by a constant stride |
Families Citing this family (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6385634B1 (en) | 1995-08-31 | 2002-05-07 | Intel Corporation | Method for performing multiply-add operations on packed data |
US7395298B2 (en) * | 1995-08-31 | 2008-07-01 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed data |
US6230253B1 (en) * | 1998-03-31 | 2001-05-08 | Intel Corporation | Executing partial-width packed data instructions |
US6418529B1 (en) | 1998-03-31 | 2002-07-09 | Intel Corporation | Apparatus and method for performing intra-add operation |
US6233671B1 (en) | 1998-03-31 | 2001-05-15 | Intel Corporation | Staggering execution of an instruction by dividing a full-width macro instruction into at least two partial-width micro instructions |
US7395302B2 (en) * | 1998-03-31 | 2008-07-01 | Intel Corporation | Method and apparatus for performing horizontal addition and subtraction |
US6192467B1 (en) | 1998-03-31 | 2001-02-20 | Intel Corporation | Executing partial-width packed data instructions |
US6230257B1 (en) | 1998-03-31 | 2001-05-08 | Intel Corporation | Method and apparatus for staggering execution of a single packed data instruction using the same circuit |
US7392275B2 (en) * | 1998-03-31 | 2008-06-24 | Intel Corporation | Method and apparatus for performing efficient transformations with horizontal addition and subtraction |
US6687806B1 (en) * | 2000-06-15 | 2004-02-03 | Advanced Micro Devices, Inc. | Apparatus and method for generating 64 bit displacement and immediate values |
CN1299198C (zh) * | 2001-06-27 | 2007-02-07 | 凌阳科技股份有限公司 | 由可改变的指令格式而提高程序码密集度的微控制器结构 |
US7430578B2 (en) * | 2001-10-29 | 2008-09-30 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed byte data |
US7200738B2 (en) | 2002-04-18 | 2007-04-03 | Micron Technology, Inc. | Reducing data hazards in pipelined processors to provide high processor utilization |
DE10225230B4 (de) * | 2002-06-06 | 2004-10-21 | Infineon Technologies Ag | Prozessor und Verfahren zum gleichzeitigen Ausführen einer Berechnung und eines Kopiervorgangs |
US7426529B2 (en) * | 2002-06-06 | 2008-09-16 | Infineon Technologies Ag | Processor and method for a simultaneous execution of a calculation and a copying process |
US7249350B2 (en) * | 2002-09-30 | 2007-07-24 | Intel Corporation | Optimized translation of scalar type SIMD instructions into non-scalar SIMD instructions |
US7668897B2 (en) * | 2003-06-16 | 2010-02-23 | Arm Limited | Result partitioning within SIMD data processing systems |
US7237096B1 (en) * | 2004-04-05 | 2007-06-26 | Sun Microsystems, Inc. | Storing results of producer instructions to facilitate consumer instruction dependency tracking |
US7383427B2 (en) * | 2004-04-22 | 2008-06-03 | Sony Computer Entertainment Inc. | Multi-scalar extension for SIMD instruction set processors |
US20050251649A1 (en) * | 2004-04-23 | 2005-11-10 | Sony Computer Entertainment Inc. | Methods and apparatus for address map optimization on a multi-scalar extension |
US7389406B2 (en) * | 2004-09-28 | 2008-06-17 | Intel Corporation | Apparatus and methods for utilization of splittable execution units of a processor |
US7257695B2 (en) * | 2004-12-28 | 2007-08-14 | Intel Corporation | Register file regions for a processing system |
CN100452090C (zh) * | 2006-03-14 | 2009-01-14 | 腾讯科技(深圳)有限公司 | 一种实现高动态光照范围的方法及*** |
US7761694B2 (en) * | 2006-06-30 | 2010-07-20 | Intel Corporation | Execution unit for performing shuffle and other operations |
US7783862B2 (en) * | 2006-08-07 | 2010-08-24 | International Characters, Inc. | Method and apparatus for an inductive doubling architecture |
US20080071851A1 (en) * | 2006-09-20 | 2008-03-20 | Ronen Zohar | Instruction and logic for performing a dot-product operation |
US8631224B2 (en) * | 2007-09-13 | 2014-01-14 | Freescale Semiconductor, Inc. | SIMD dot product operations with overlapped operands |
US8103858B2 (en) | 2008-06-30 | 2012-01-24 | Intel Corporation | Efficient parallel floating point exception handling in a processor |
US8755515B1 (en) | 2008-09-29 | 2014-06-17 | Wai Wu | Parallel signal processing system and method |
US8458444B2 (en) * | 2009-04-22 | 2013-06-04 | Oracle America, Inc. | Apparatus and method for handling dependency conditions between floating-point instructions |
US8504805B2 (en) * | 2009-04-22 | 2013-08-06 | Oracle America, Inc. | Processor operating mode for mitigating dependency conditions between instructions having different operand sizes |
US20100274961A1 (en) * | 2009-04-22 | 2010-10-28 | Golla Robert T | Physically-indexed logical map table |
US8335912B2 (en) * | 2009-04-22 | 2012-12-18 | Oracle America, Inc. | Logical map table for detecting dependency conditions between instructions having varying width operand values |
US8495125B2 (en) * | 2009-05-27 | 2013-07-23 | Microchip Technology Incorporated | DSP engine with implicit mixed sign operands |
US8495341B2 (en) * | 2010-02-17 | 2013-07-23 | International Business Machines Corporation | Instruction length based cracking for instruction of variable length storage operands |
US9052890B2 (en) * | 2010-09-25 | 2015-06-09 | Intel Corporation | Execute at commit state update instructions, apparatus, methods, and systems |
US8914615B2 (en) | 2011-12-02 | 2014-12-16 | Arm Limited | Mapping same logical register specifier for different instruction sets with divergent association to architectural register file using common address format |
US9513912B2 (en) | 2012-07-27 | 2016-12-06 | Micron Technology, Inc. | Memory controllers |
US20140281418A1 (en) * | 2013-03-14 | 2014-09-18 | Shihjong J. Kuo | Multiple Data Element-To-Multiple Data Element Comparison Processors, Methods, Systems, and Instructions |
US9477467B2 (en) * | 2013-03-30 | 2016-10-25 | Intel Corporation | Processors, methods, and systems to implement partial register accesses with masked full register accesses |
US10228941B2 (en) * | 2013-06-28 | 2019-03-12 | Intel Corporation | Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register |
US9424034B2 (en) | 2013-06-28 | 2016-08-23 | Intel Corporation | Multiple register memory access instructions, processors, methods, and systems |
US9355061B2 (en) | 2014-01-28 | 2016-05-31 | Arm Limited | Data processing apparatus and method for performing scan operations |
US10108454B2 (en) * | 2014-03-21 | 2018-10-23 | Intel Corporation | Managing dynamic capacitance using code scheduling |
JP6307975B2 (ja) * | 2014-03-28 | 2018-04-11 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
FR3021428B1 (fr) * | 2014-05-23 | 2017-10-13 | Kalray | Multiplication de matrices de bits utilisant des registres explicites |
TWI681300B (zh) * | 2014-11-14 | 2020-01-01 | 美商凱為有限責任公司 | 在64位元資料路徑上實行128位元simd操作之方法、系統及電腦可讀取媒體 |
US10001995B2 (en) * | 2015-06-02 | 2018-06-19 | Intel Corporation | Packed data alignment plus compute instructions, processors, methods, and systems |
US10459731B2 (en) * | 2015-07-20 | 2019-10-29 | Qualcomm Incorporated | Sliding window operation |
US20170192789A1 (en) * | 2015-12-30 | 2017-07-06 | Rama Kishnan V. Malladi | Systems, Methods, and Apparatuses for Improving Vector Throughput |
US10901940B2 (en) * | 2016-04-02 | 2021-01-26 | Intel Corporation | Processors, methods, systems, and instructions to atomically store to memory data wider than a natively supported data width |
US10296342B2 (en) * | 2016-07-02 | 2019-05-21 | Intel Corporation | Systems, apparatuses, and methods for cumulative summation |
US10838720B2 (en) * | 2016-09-23 | 2020-11-17 | Intel Corporation | Methods and processors having instructions to determine middle, lowest, or highest values of corresponding elements of three vectors |
CN113190791A (zh) | 2018-08-06 | 2021-07-30 | 华为技术有限公司 | 矩阵的处理方法、装置及逻辑电路 |
CN111459546B (zh) * | 2020-03-30 | 2023-04-18 | 芯来智融半导体科技(上海)有限公司 | 一种实现操作数位宽可变的装置及方法 |
Family Cites Families (75)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3675001A (en) | 1970-12-10 | 1972-07-04 | Ibm | Fast adder for multi-number additions |
US3723715A (en) | 1971-08-25 | 1973-03-27 | Ibm | Fast modulo threshold operator binary adder for multi-number additions |
FR2212952A5 (zh) | 1972-12-29 | 1974-07-26 | Cit Alcatel | |
US3900724A (en) | 1974-02-11 | 1975-08-19 | Trw Inc | Asynchronous binary multiplier using non-threshold logic |
JPS5824941A (ja) | 1981-08-07 | 1983-02-15 | Hitachi Ltd | 演算装置 |
JPS58182754A (ja) * | 1982-04-19 | 1983-10-25 | Hitachi Ltd | 演算処理装置 |
JPS60134974A (ja) | 1983-12-23 | 1985-07-18 | Hitachi Ltd | ベクトル処理装置 |
US4945479A (en) | 1985-07-31 | 1990-07-31 | Unisys Corporation | Tightly coupled scientific processing system |
JPS6284335A (ja) | 1985-10-09 | 1987-04-17 | Hitachi Ltd | 乗算回路 |
JPS6297060A (ja) | 1985-10-23 | 1987-05-06 | Mitsubishi Electric Corp | デイジタルシグナルプロセツサ |
US5021945A (en) | 1985-10-31 | 1991-06-04 | Mcc Development, Ltd. | Parallel processor system for processing natural concurrencies and method therefor |
US4890218A (en) | 1986-07-02 | 1989-12-26 | Raytheon Company | Variable length instruction decoding apparatus having cross coupled first and second microengines |
US4985848A (en) | 1987-09-14 | 1991-01-15 | Visual Information Technologies, Inc. | High speed image processing system using separate data processor and address generator |
US5047975A (en) | 1987-11-16 | 1991-09-10 | Intel Corporation | Dual mode adder circuitry with overflow detection and substitution enabled for a particular mode |
US5189636A (en) | 1987-11-16 | 1993-02-23 | Intel Corporation | Dual mode combining circuitry |
US5126964A (en) | 1988-04-01 | 1992-06-30 | Digital Equipment Corporation | High performance bit-sliced multiplier circuit |
US4972362A (en) | 1988-06-17 | 1990-11-20 | Bipolar Integrated Technology, Inc. | Method and apparatus for implementing binary multiplication using booth type multiplication |
CA1311063C (en) | 1988-12-16 | 1992-12-01 | Tokumichi Murakami | Digital signal processor |
US5134693A (en) | 1989-01-18 | 1992-07-28 | Intel Corporation | System for handling occurrence of exceptions during execution of microinstructions while running floating point and non-floating point instructions in parallel |
US5081698A (en) | 1989-02-14 | 1992-01-14 | Intel Corporation | Method and apparatus for graphics display data manipulation |
US5001662A (en) | 1989-04-28 | 1991-03-19 | Apple Computer, Inc. | Method and apparatus for multi-gauge computation |
US5590365A (en) | 1990-03-30 | 1996-12-31 | Kabushiki Kaisha Toshiba | Pipeline information processing circuit for floating point operations |
JP2651267B2 (ja) | 1990-07-26 | 1997-09-10 | 富士通株式会社 | 演算処理装置及び演算処理方法 |
EP0476962B1 (en) * | 1990-09-18 | 1998-08-12 | Fujitsu Limited | System for configuring a shared storage |
US5765011A (en) | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams |
US5303355A (en) | 1991-03-27 | 1994-04-12 | Motorola, Inc. | Pipelined data processor which conditionally executes a predetermined looping instruction in hardware |
US5241493A (en) | 1991-12-16 | 1993-08-31 | International Business Machines Corporation | Floating point arithmetic unit with size efficient pipelined multiply-add architecture |
US5311508A (en) | 1991-12-23 | 1994-05-10 | Square D Company | Apparatus for receiving and decoding a serial data packet containing the status of a network of single point I/O devices |
US5210711A (en) | 1992-02-26 | 1993-05-11 | Sony Corporation Of America | Very fast variable input multi-bit adder |
US5606677A (en) | 1992-11-30 | 1997-02-25 | Texas Instruments Incorporated | Packed word pair multiply operation forming output including most significant bits of product and other bits of one input |
JPH06242928A (ja) | 1993-02-22 | 1994-09-02 | Nec Corp | 加算器およびこれを用いた乗算回路 |
US5327369A (en) | 1993-03-31 | 1994-07-05 | Intel Corporation | Digital adder and method for adding 64-bit, 16-bit and 8-bit words |
US5806049A (en) | 1993-04-21 | 1998-09-08 | Petruzzi; Christopher R. | Data processing system for global assessment of investment opportunity and cost |
US5883824A (en) | 1993-11-29 | 1999-03-16 | Hewlett-Packard Company | Parallel adding and averaging circuit and method |
US5390135A (en) | 1993-11-29 | 1995-02-14 | Hewlett-Packard | Parallel shift and add circuit and method |
US5673427A (en) | 1994-03-01 | 1997-09-30 | Intel Corporation | Packing valid micro operations received from a parallel decoder into adjacent locations of an output queue |
US5642306A (en) | 1994-07-27 | 1997-06-24 | Intel Corporation | Method and apparatus for a single instruction multiple data early-out zero-skip multiplier |
US5579253A (en) | 1994-09-02 | 1996-11-26 | Lee; Ruby B. | Computer multiply instruction with a subresult selection option |
WO1996017291A1 (en) * | 1994-12-02 | 1996-06-06 | Intel Corporation | Microprocessor with packing operation of composite operands |
US5819101A (en) * | 1994-12-02 | 1998-10-06 | Intel Corporation | Method for packing a plurality of packed data elements in response to a pack instruction |
US5742840A (en) | 1995-08-16 | 1998-04-21 | Microunity Systems Engineering, Inc. | General purpose, multiple precision parallel operation, programmable media processor |
US6006318A (en) | 1995-08-16 | 1999-12-21 | Microunity Systems Engineering, Inc. | General purpose, dynamic partitioning, programmable media processor |
US6295599B1 (en) | 1995-08-16 | 2001-09-25 | Microunity Systems Engineering | System and method for providing a wide operand architecture |
US6643765B1 (en) | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
US5953241A (en) | 1995-08-16 | 1999-09-14 | Microunity Engeering Systems, Inc. | Multiplier array processing system with enhanced utilization at lower precision for group multiply and sum instruction |
US5721892A (en) | 1995-08-31 | 1998-02-24 | Intel Corporation | Method and apparatus for performing multiply-subtract operations on packed data |
CN103455304B (zh) | 1995-08-31 | 2016-04-27 | 英特尔公司 | 用于处理指令集的处理器 |
US6385634B1 (en) * | 1995-08-31 | 2002-05-07 | Intel Corporation | Method for performing multiply-add operations on packed data |
US6470370B2 (en) * | 1995-09-05 | 2002-10-22 | Intel Corporation | Method and apparatus for multiplying and accumulating complex numbers in a digital filter |
US5936872A (en) | 1995-09-05 | 1999-08-10 | Intel Corporation | Method and apparatus for storing complex numbers to allow for efficient complex multiplication operations and performing such complex multiplication operations |
US5852726A (en) | 1995-12-19 | 1998-12-22 | Intel Corporation | Method and apparatus for executing two types of instructions that specify registers of a shared logical register file in a stack and a non-stack referenced manner |
US5701508A (en) * | 1995-12-19 | 1997-12-23 | Intel Corporation | Executing different instructions that cause different data type operations to be performed on single logical register file |
AU1465497A (en) | 1995-12-19 | 1997-07-28 | Intel Corporation | A computer system performing a two-dimensional rotation of packed data representing multimedia information |
US5835748A (en) | 1995-12-19 | 1998-11-10 | Intel Corporation | Method for executing different sets of instructions that cause a processor to perform different data type operations on different physical registers files that logically appear to software as a single aliased register file |
US5983257A (en) * | 1995-12-26 | 1999-11-09 | Intel Corporation | System for signal processing using multiply-add operations |
US5793661A (en) | 1995-12-26 | 1998-08-11 | Intel Corporation | Method and apparatus for performing multiply and accumulate operations on packed data |
US5835392A (en) | 1995-12-28 | 1998-11-10 | Intel Corporation | Method for performing complex fast fourier transforms (FFT's) |
US5880983A (en) | 1996-03-25 | 1999-03-09 | International Business Machines Corporation | Floating point split multiply/add system which has infinite precision |
US6041403A (en) | 1996-09-27 | 2000-03-21 | Intel Corporation | Method and apparatus for generating a microinstruction responsive to the specification of an operand, in addition to a microinstruction based on the opcode, of a macroinstruction |
US6061521A (en) * | 1996-12-02 | 2000-05-09 | Compaq Computer Corp. | Computer having multimedia operations executable as two distinct sets of operations within a single instruction cycle |
TW357318B (en) * | 1997-03-18 | 1999-05-01 | Ind Tech Res Inst | Branching forecast and reading device for unspecified command length extra-purity pipeline processor |
US5884071A (en) * | 1997-03-31 | 1999-03-16 | Intel Corporation | Method and apparatus for decoding enhancement instructions using alias encodings |
FR2766353B1 (fr) | 1997-07-28 | 1999-11-26 | Dimso Sa | Implant, notamment plaque anterieure cervicale |
US6260137B1 (en) * | 1997-09-12 | 2001-07-10 | Siemens Aktiengesellschaft | Data processing unit with digital signal processing capabilities |
US5864703A (en) * | 1997-10-09 | 1999-01-26 | Mips Technologies, Inc. | Method for providing extended precision in SIMD vector arithmetic operations |
US7197625B1 (en) * | 1997-10-09 | 2007-03-27 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
US6178482B1 (en) | 1997-11-03 | 2001-01-23 | Brecis Communications | Virtual register sets |
US6233671B1 (en) | 1998-03-31 | 2001-05-15 | Intel Corporation | Staggering execution of an instruction by dividing a full-width macro instruction into at least two partial-width micro instructions |
US6230253B1 (en) | 1998-03-31 | 2001-05-08 | Intel Corporation | Executing partial-width packed data instructions |
US6192467B1 (en) | 1998-03-31 | 2001-02-20 | Intel Corporation | Executing partial-width packed data instructions |
US6122725A (en) | 1998-03-31 | 2000-09-19 | Intel Corporation | Executing partial-width packed data instructions |
US6230257B1 (en) | 1998-03-31 | 2001-05-08 | Intel Corporation | Method and apparatus for staggering execution of a single packed data instruction using the same circuit |
US6378060B1 (en) | 1998-08-24 | 2002-04-23 | Microunity Systems Engineering, Inc. | System to implement a cross-bar switch of a broadband processor |
US6272512B1 (en) | 1998-10-12 | 2001-08-07 | Intel Corporation | Data manipulation instruction for enhancing value and efficiency of complex arithmetic |
US7313788B2 (en) * | 2003-10-29 | 2007-12-25 | International Business Machines Corporation | Vectorization in a SIMdD DSP architecture |
-
1998
- 1998-03-31 US US09/053,127 patent/US6230253B1/en not_active Expired - Lifetime
-
1999
- 1999-03-19 SG SG9901386A patent/SG85630A1/en unknown
- 1999-03-29 GB GB9907221A patent/GB2339040C/en not_active Expired - Fee Related
- 1999-03-31 CN CNB200410083584XA patent/CN100367269C/zh not_active Expired - Lifetime
- 1999-03-31 CN CNB2004100835854A patent/CN100385432C/zh not_active Expired - Lifetime
- 1999-03-31 CN CNB99104620XA patent/CN1286002C/zh not_active Expired - Lifetime
- 1999-03-31 DE DE19914617A patent/DE19914617C2/de not_active Expired - Lifetime
- 1999-05-03 TW TW088105137A patent/TW470914B/zh active
-
2000
- 2000-07-11 HK HK00104251A patent/HK1027402A1/xx not_active IP Right Cessation
-
2001
- 2001-05-08 US US09/852,217 patent/US6970994B2/en not_active Expired - Lifetime
-
2005
- 2005-05-09 US US11/126,049 patent/US7467286B2/en not_active Expired - Fee Related
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7987341B2 (en) | 2002-10-31 | 2011-07-26 | Lockheed Martin Corporation | Computing machine using software objects for transferring data that includes no destination information |
US8250341B2 (en) | 2002-10-31 | 2012-08-21 | Lockheed Martin Corporation | Pipeline accelerator having multiple pipeline units and related computing machine and method |
US7676649B2 (en) | 2004-10-01 | 2010-03-09 | Lockheed Martin Corporation | Computing machine with redundancy and related systems and methods |
US7809982B2 (en) | 2004-10-01 | 2010-10-05 | Lockheed Martin Corporation | Reconfigurable computing machine and related systems and methods |
US8073974B2 (en) | 2004-10-01 | 2011-12-06 | Lockheed Martin Corporation | Object oriented mission framework and system and method |
US10223112B2 (en) | 2011-12-22 | 2019-03-05 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset |
US10223111B2 (en) | 2011-12-22 | 2019-03-05 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset |
US10866807B2 (en) | 2011-12-22 | 2020-12-15 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of integers in numerical order that differ by a constant stride |
US10732970B2 (en) | 2011-12-22 | 2020-08-04 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset |
US10565283B2 (en) | 2011-12-22 | 2020-02-18 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of consecutive integers in numerical order |
TWI511043B (zh) * | 2011-12-22 | 2015-12-01 | Intel Corp | 用以產生整數的序列之方法、裝置、系統及製造物品 |
US11650820B2 (en) | 2011-12-22 | 2023-05-16 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of integers in numerical order that differ by a constant stride |
US9898283B2 (en) | 2011-12-22 | 2018-02-20 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset |
US11709961B2 (en) | 2011-12-23 | 2023-07-25 | Intel Corporation | Instruction execution that broadcasts and masks data values at different levels of granularity |
US10083316B2 (en) | 2011-12-23 | 2018-09-25 | Intel Corporation | Instruction execution that broadcasts and masks data values at different levels of granularity |
US11250154B2 (en) | 2011-12-23 | 2022-02-15 | Intel Corporation | Instruction execution that broadcasts and masks data values at different levels of granularity |
US11301581B2 (en) | 2011-12-23 | 2022-04-12 | Intel Corporation | Instruction execution that broadcasts and masks data values at different levels of granularity |
TWI550508B (zh) * | 2011-12-23 | 2016-09-21 | 英特爾公司 | 用於複製資料結構之設備及方法 |
US11301580B2 (en) | 2011-12-23 | 2022-04-12 | Intel Corporation | Instruction execution that broadcasts and masks data values at different levels of granularity |
US9424327B2 (en) | 2011-12-23 | 2016-08-23 | Intel Corporation | Instruction execution that broadcasts and masks data values at different levels of granularity |
US9336000B2 (en) | 2011-12-23 | 2016-05-10 | Intel Corporation | Instruction execution unit that broadcasts data values at different levels of granularity |
US10909259B2 (en) | 2011-12-23 | 2021-02-02 | Intel Corporation | Instruction execution that broadcasts and masks data values at different levels of granularity |
TWI512517B (zh) * | 2013-08-06 | 2015-12-11 | Intel Corp | 用以提供族群計數功能予基因定序及排比之方法、設備、指令以及邏輯組件 |
US10678546B2 (en) | 2013-08-06 | 2020-06-09 | Intel Corporation | Methods, apparatus, instructions and logic to provide population count functionality for genome sequencing and alignment |
US10223120B2 (en) | 2013-08-06 | 2019-03-05 | Intel Corporation | Methods, apparatus, instructions and logic to provide population count functionality for genome sequencing and alignment |
US9513907B2 (en) | 2013-08-06 | 2016-12-06 | Intel Corporation | Methods, apparatus, instructions and logic to provide vector population count functionality |
US9495155B2 (en) | 2013-08-06 | 2016-11-15 | Intel Corporation | Methods, apparatus, instructions and logic to provide population count functionality for genome sequencing and alignment |
Also Published As
Publication number | Publication date |
---|---|
US6230253B1 (en) | 2001-05-08 |
GB9907221D0 (en) | 1999-05-26 |
CN1595390A (zh) | 2005-03-16 |
CN100367269C (zh) | 2008-02-06 |
US20020010847A1 (en) | 2002-01-24 |
DE19914617C2 (de) | 2002-10-31 |
US20050216706A1 (en) | 2005-09-29 |
HK1027402A1 (en) | 2001-01-12 |
CN100385432C (zh) | 2008-04-30 |
GB2339040A (en) | 2000-01-12 |
CN1595389A (zh) | 2005-03-16 |
CN1244675A (zh) | 2000-02-16 |
GB2339040C (en) | 2008-06-16 |
SG85630A1 (en) | 2002-01-15 |
US7467286B2 (en) | 2008-12-16 |
DE19914617A1 (de) | 1999-10-14 |
GB2339040B (en) | 2000-07-12 |
CN1286002C (zh) | 2006-11-22 |
US6970994B2 (en) | 2005-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW470914B (en) | Executing partial-width packed data instructions | |
TWI818885B (zh) | 執行複數的熔合乘-加指令的系統與方法 | |
JP6456867B2 (ja) | 密結合ヘテロジニアスコンピューティングのためのハードウェアプロセッサ及び方法 | |
JP5960115B2 (ja) | プロセッサに関するロード/移動及び複製命令 | |
US6334176B1 (en) | Method and apparatus for generating an alignment control vector | |
US5996057A (en) | Data processing system and method of permutation with replication within a vector register file | |
TWI537823B (zh) | 用以提供向量族群計數功能之方法、設備、指令及邏輯組件 | |
US6480868B2 (en) | Conversion from packed floating point data to packed 8-bit integer data in different architectural registers | |
US5802339A (en) | Pipeline throughput via parallel out-of-order execution of adds and moves in a supplemental integer execution unit | |
US6502115B2 (en) | Conversion between packed floating point data and packed 32-bit integer data in different architectural registers | |
TWI474258B (zh) | 用於執行浮點捨入量決定指令之方法、裝置、系統及機器可讀取儲存媒體 | |
KR102478874B1 (ko) | 비순차적 하드웨어 소프트웨어 공동 설계된 프로세서에서 스택 동기화 명령어를 갖는 술어 값의 스택을 구현하고 유지하기 위한 방법 및 장치 | |
US20040268094A1 (en) | Method and apparatus for floating point operations and format conversion operations | |
JPH09512651A (ja) | 複数命令セットのマッピング | |
TW201123008A (en) | Method and apparatus for performing a shift and exclusive or operation in a single instruction | |
US6192467B1 (en) | Executing partial-width packed data instructions | |
WO1996029646A1 (fr) | Processeur | |
TWI546735B (zh) | 用以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之指令及邏輯 | |
JP2013242918A (ja) | 命令が利用可能な汎用レジスタの数を拡張するための上位ワード・ファシリティ | |
JP2019208203A (ja) | 浮動小数点データを圧縮するためのシステム | |
CN114662048A (zh) | 用于共轭转置和乘法的装置和方法 | |
EP3060979B1 (en) | Processor and methods for immediate handling and flag handling | |
US5815420A (en) | Microprocessor arithmetic logic unit using multiple number representations | |
TWI628595B (zh) | 用以執行反離心操作之處理設備和非暫態機器可讀取媒體 | |
TW497074B (en) | An integer instruction set architecture and implementation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GD4A | Issue of patent certificate for granted invention patent |