TWI502493B - 位元範圍隔離指令、方法及裝置 - Google Patents
位元範圍隔離指令、方法及裝置 Download PDFInfo
- Publication number
- TWI502493B TWI502493B TW099139490A TW99139490A TWI502493B TW I502493 B TWI502493 B TW I502493B TW 099139490 A TW099139490 A TW 099139490A TW 99139490 A TW99139490 A TW 99139490A TW I502493 B TWI502493 B TW I502493B
- Authority
- TW
- Taiwan
- Prior art keywords
- bit
- range
- bits
- instruction
- value
- Prior art date
Links
- 238000002955 isolation Methods 0.000 title claims description 115
- 238000000034 method Methods 0.000 title claims description 25
- 230000004044 response Effects 0.000 claims description 9
- 239000000872 buffer Substances 0.000 claims description 5
- 230000008878 coupling Effects 0.000 claims description 4
- 238000010168 coupling process Methods 0.000 claims description 4
- 238000005859 coupling reaction Methods 0.000 claims description 4
- 239000000126 substance Substances 0.000 claims 1
- 238000012545 processing Methods 0.000 description 28
- 238000010586 diagram Methods 0.000 description 16
- 238000000605 extraction Methods 0.000 description 10
- 230000008901 benefit Effects 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 6
- 229920006395 saturated elastomer Polymers 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000009738 saturating Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000011343 solid material Substances 0.000 description 1
- 230000003068 static 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/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/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- 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/30094—Condition code generation, e.g. Carry, Zero flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Description
各種不同的實施例有關於位元調處指令、執行該等位元調處指令之方法、用以執行該等位元調處指令之執行單元或包含此類執行單元的裝置。特別地,各種不同的實施例有關於用以隔離一位元範圍的位元範圍隔離指令、執行該等位元範圍隔離指令之方法、用以執行該等位元範圍隔離指令之執行單元或包含此類執行單元的裝置。
一般用途處理器、特殊用途處理器、控制器及其他裝置執行由一指令集架構(ISA)指定的指令。該等指令容許該等裝置執行各種不同類型之操作。一常見類型的操作為一位元調處操作。
各種不同的位元調處指令是已知的。一已知的位元調處指令為EXTR-萃取指令。EXTR指令被記載於2006年1月文件號碼為245319-005的Intel及Itanium架構軟體開發手冊第3冊:指令集參考(Inteland ItaniumArchitecture Software Developer’s Manual,Volume 3: Instruction Set Reference)修訂版2.2中。
EXTR指令萃取一由二立即值指定的位元欄位,且使萃取位元欄位向右移位以使萃取位元欄位在目的地中右對齊。除了萃取一單一指令中的位元欄位之外,萃取位元欄位之此一移位可能傾向於限制某些資料處理操作之速度及/或效率。其他位元調處指令依賴於一傾向於具有長潛時的表查找。
由於快速地及/或有效率地處理資料之重要性,故新且不同的資料調處指令將是有用的。
依據本發明之一實施例,係特地提出一種方法,其包含以下步驟:接收一指令,該指令指示一源運算元及一目的運算元;響應於該指令將一結果儲存於該目的運算元中,該結果運算元具有:具有由該指令明確指定的一第一端之一第一位元範圍,其中每一位元在數值上等於該源運算元在一對應位置中的一位元之值;及不論該源運算元在對應位置中之位元值為何所有位元都具有同一值之一第二位元範圍;以及不論該第一位元範圍在結果中之位置為何,都在不相對於該源運算元之對應位置中之相同值的位元移動該結果之該第一範圍之下完成該指令之執行。
本發明可參照以下說明及用以繪示本發明實施例的所附諸圖而獲最佳理解。在該等圖式中:
第1圖為一種處理一位元範圍隔離指令之一實施例的方法之一實施例之一方塊流程圖。
第2圖為一指令處理裝置之一範例實施例之一方塊圖。
第3圖繪示一依據一位元範圍隔離指令之一第一範例實施例的位元範圍隔離操作之一第一範例實施例。
第4圖繪示一依據一位元範圍隔離指令之一第二範例實施例的位元範圍隔離操作之一第二範例實施例。
第5圖繪示一依據一位元範圍隔離指令之一第三範例實施例的位元範圍隔離操作之一第三範例實施例。
第6圖繪示一代表一位元範圍隔離指令之一特定範例實施例的BZHI-使以指定位元位置起始的高位元歸零-指令之一說明。
第7圖繪示一代表一位元範圍隔離指令之一特定範例實施例的BZHI-使以指定位元位置起始的高位元歸零-指令之虛擬碼運算。
第8圖為位元範圍隔離邏輯元件之一範例實施例之一方塊圖。
第9圖繪示一適用32位元的一般用途暫存器集之一特定範例實施例。
第10圖繪示一適用64位元的一般用途暫存器集之另一特定範例實施例。
第11圖繪示一代表一狀態或旗標暫存器之一適用範例實施例的EFLAGS暫存器。
第12圖為一適用電腦系統之一第一範例實施例之一方塊圖。
第13圖為一適用電腦系統之一第二範例實施例之一方塊圖。
在以下說明中,許多特定細節,諸如,處理器類型、指令實施細節、資料類型、暫存器類型、暫存器配置、系統組態等等被提及。然而,應理解的是實施例在毋需此等特定細節之下也可被實施。在其他情況下,習知的電路、結構及技術未詳細描述以免模糊對此說明之理解。
變化的情況有儲存在暫存器或其他儲存位置中的位元可包括一關注的位元字串或位元範圍,連同一或更多個當前未關注或至少不是關注之位元範圍之一部分的其他位元字串或位元範圍。典型地,關注位元範圍可代表一將被執行進一步處理的數字或值。當前未關注的位元可被視為無用位元或不關注位元。在一或更多個實施例中,關注位元範圍可藉由使無用位元歸零或丟棄而隔離同時保留關注位元範圍內之位元的值。這可幫助促成被關注位元範圍之進一步處理。
實施例涉及新且有用的位元範圍隔離指令。其他實施例涉及用以執行位元範圍隔離指令的執行單元。其他實施例涉及一般用途處理器、特殊用途處理器、控制器或具有此類執行單元或能夠執行此類指令的其他邏輯裝置或指令處理裝置。其他實施例涉及儲存在一碟片、記憶體或其他有形的機器可讀取媒體上的位元範圍隔離指令。
第1圖為一種處理一位元範圍隔離指令之一實施例之方法100之一實施例之一方塊流程圖。在各種不同的實施例中,該方法可在由一一般用途處理器、一特殊用途處理器(例如一圖形處理器或一數位信號處理器)、一硬體加速器(例如一密碼加速器)或另一類型的邏輯裝置或指令處理裝置使用期間被執行。
在方塊101,位元範圍隔離指令可由處理器或其他裝置來接收。在一或更多個實施例中,該位元範圍隔離指令可指示一源運算元及一目的運算元。
在方塊102,響應於位元範圍隔離指令,一結果可被儲存在目的運算元中。結果運算元可能具有一第一位元範圍及一第二位元範圍。該第一位元範圍可使每一位元之值等於一源運算元之一對應位置中的一位元之值。不論源運算元之對應位置中的位元值為何,該第二位元範圍可能都具有同一值。在一或更多個實施例中,第二範圍之所有位元可能為零。可選擇地,該第二範圍之所有位元可能為一。
在方塊103,位元範圍隔離指令之執行可在不使結果之第一範圍相對於源運算元之對應位置中的相同值之位元移位或移動之下完成。不論第一位元範圍在結果中之位置為何(例如即使第一位元範圍為結果內的一中間位元範圍),這可能都適用。在一或更多個實施例中,位元範圍隔離指令之執行可能不涉及一傾向於具有長潛時的表查找。
省略位元範圍隔離指令中的此一移位或位元移動操作可能有若干可能的優勢。首先,不總需要移位操作。此外,移位操作可能傾向於增加指令執行時間及/或可能傾向於增加邏輯區域/成本。而且,許多ISA已經具有一可獨立於位元範圍隔離指令而被使用的專用移位操作。其他優勢將在下文中進一步加以討論。
第2圖為一指令處理裝置110之一範例實施例之一方塊圖。在一或更多個實施例中,該指令處理裝置可能是一一般用途處理器。該處理器可以是各種不同的複雜指令集運算(CISC)處理器、各種不同的簡化指令集運算(RISC)處理器、各種不同的非常長的指令字(VLIW)處理器、其等的各種不同混合體或完全為其他類型處理器中之任一者。在一或更多個實施例中,該處理器可以是一由位於加利福尼亞州圣克拉拉的英特爾公司所製造之類型的一般用途處理器,但這不是必須的。可由英特爾公司提供的一般用途處理器之具體範例包括但不限於IntelCoreTM
i7處理器至尊版、IntelCoreTM
i7處理器、IntelCoreTM
i5處理器、IntelCoreTM
2至尊處理器、IntelCoreTM
2四核心處理器、IntelCoreTM
2雙核心處理器、IntelPentium處理器及IntelCeleron處理器。
可選擇地,指令處理裝置可以是一特殊用途處理器。舉例來說,適用的特殊用途處理器之典型範例包括但不限於,網路處理器、通訊處理器、密碼處理器、圖形處理器、共處理器、嵌入式處理器及數位信號處理器(DSP)。這些處理器也可以CISC、RISC、VLIW、其等的混合體或完全為其他類型的處理器為基礎。
在其他實施例中,指令處理裝置可以是一控制器(例如一微控制器),或能夠處理指令的其他類型的邏輯電路。
再次參照第2圖,在使用指令處理裝置期間可接收一位元範圍隔離指令112之一實施例。舉例而言,位元範圍隔離指令可從一記憶體或從軟體接收。位元範圍隔離指令可代表一由指令處理裝置識別的機器指令或控制信號。位元範圍隔離指令可包括一運算碼或其他指令識別符。指令處理裝置可能具有響應於位元範圍隔離指令及/或由位元範圍隔離指令指定可操作來儲存一結果的具體或特定電路或其他邏輯元件(例如與硬體及/或韌體組合的軟體)。
指令處理裝置之所繪示實施例包括一指令解碼器114。該解碼器可接收位元範圍隔離指令並將其解碼。該解碼器可產生及輸出反映或獲自於原始位元範圍隔離指令的一或更多個微運算、微程式碼入口點、微指令、其他指令或其他控制信號。該解碼器可使用各種不同的機制而被實施。適用機制之範例包括但不限於,微程式碼唯讀記憶體(ROM)、查找表、硬體實施、可規劃邏輯陣列(PLA)等等。
解碼器不是該裝置之必需組件。在一或更多個其他實施例中,該裝置可代之具有一指令模擬器、一指令轉譯器、一指令變形器、一指令解譯器或其他指令轉換邏輯元件。各種不同類型的指令模擬器、指令變形器、指令轉譯器等等在技藝中是習知的。指令轉換邏輯元件可接收位元範圍隔離指令,模擬、轉譯、變形、解譯或轉換該位元範圍隔離指令,及輸出對應於原始位元範圍隔離指令的一個或更多個指令或控制信號。指令轉換邏輯元件可以軟體、硬體、韌體或其一組合而被實施。在某些情況下,某些或所有指令轉換邏輯元件可不位於指令處理裝置之剩餘部分的晶粒上諸如一單獨晶粒,或一系統記憶體中。在某些情況下,指令處理裝置可能具有解碼器及指令轉換邏輯元件。
再次參照第2圖,指令處理裝置包括一執行單元116。舉例而言,該執行單元可包括一算術邏輯單元、一邏輯單元、一具有位元調處功能的功能單元等等。
在所繪示實施例中,該執行單元與解碼器之一輸出耦合或與之通訊。「耦合」一詞可意指二或更多元件直接電氣接觸或連接。然而,「耦合」也可意指二或更多元件彼此雖未直接連接,但仍彼此協作或互動或通訊(例如透過一介於中間的組件)。作為一範例,該解碼器及該執行單元可透過一介於中間的可選擇的緩衝器或技藝中所習知的可耦合於一解碼器與一執行單元之間的(多個)其他組件而彼此耦合。
由於解碼器將位元範圍隔離指令解碼,故執行單元可接收反映或獲自於該位元範圍隔離指令的一或更多個微運算、微程式碼入口點、微指令、其他指令或其他控制信號。可選擇地,該執行單元可接收並執行來自上述指令轉換邏輯元件的指令或控制信號。該執行單元可包括可操作來執行獲自於該位元範圍隔離指令的指令或其他控制信號的電路或其他執行邏輯元件(例如硬體、軟體及/或韌體之某一組合)。
該執行單元可由於該位元範圍隔離指令可操作來將一結果儲存在一由該位元範圍隔離指令所指示的目的運算元中。該結果可能具有一第一位元範圍及一第二位元範圍。在一或更多個實施例中,在該第一位元範圍中,每一位元之值可能等於由該指令所指示的一源運算元之一對應位置中的一位元之值。在該第二位元範圍中,不論源運算元之對應位置中的位元值為何,所有位元可能都具有同一值。在一或更多個實施例中,不論第一位元範圍在結果中之位置為何(例如即使第一位元範圍為結果內的一中間位元範圍),該執行單元都可在不使結果之第一範圍相對於源運算元之對應位置中的相同值之位元移位或移動之下完成該位元範圍隔離指令之執行。在位元範圍隔離指令執行期間避免此第一位元範圍移位或移動可幫助增加某些資料處理操作之速度及/或效率。
位元範圍隔離指令可含蓄地確定或明確地指定至少一源運算元及一目的運算元。在一或更多個實施例中,位元範圍隔離指令可能具有一用以明確指定源運算元、目的運算元或此二者的專用欄位或位元集。在一個或更多個實施例中,位元範圍隔離指令可含蓄地或隱含地為該源運算元、該目的運算元或此二者確定一或更多個固定暫存器或其他儲存位置。在一或更多個實施例中,一用於源運算元的儲存位置也可選擇性地用於目的運算元,使得結果可覆寫源資料。
在一或更多個實施例中,某些或所有源運算元及目的運算元可被儲存在一暫存器集118之暫存器中。該暫存器集可以是一暫存器檔案以及諸如控制暫存器、狀態暫存器、旗標暫存器等之可能的其他多個暫存器的一部分。該等暫存器可以是可用以儲存資料的儲存位置或裝置。該暫存器集通常可與執行單元一起實體地被定位於晶粒上。該等暫存器可從處理器之外部可見或從一程式設計員之角度可見。例如,指令可指定儲存在該等暫存器中的運算元。只要各種不同類型的暫存器能夠儲存及提供本文所描述之資料,它們就是適用的。該等暫存器可以或可以不被重新命名。適用暫存器之範例包括但不限於,專用實體暫存器、使用暫存器重命名的動態分配實體暫存器、專用及動態分配實體暫存器之組合等。可選擇地,源運算元及目的運算元中一或更多者還可被儲存在除了一暫存器之外的一儲存位置中,諸如,舉例而言,系統記憶體中之一位置(在此圖中未繪示出來)。
再次參照第2圖,一位元範圍隔離操作之一範例實施例被繪示出來。該位元範圍隔離指令指示或指定一源運算元(SRC),在此特定情況下,其位於該暫存器集中之一或更多個暫存器中。儘管通常該運算元可能具有更多位元,諸如,16位元、32位元、64位元、128位元或某一其他位元數目,但為了簡化圖式,所繪示之源運算元(SRC)被繪示為僅具有八位元,即「10101010」。
該執行單元可接收源運算元(SRC)。由於該位元範圍隔離指令,該執行單元可啟用來對源運算元(SRC)執行一位元範圍隔離操作,並將一對應結果儲存在一由該指令所指示或指定的目的運算元(DEST)中。在此特定情況下,該目的運算元被儲存在該暫存器集中之一或更多個暫存器中。
該結果具有一第一位元範圍122及一第二位元範圍120。在此特定範例中,第一位元範圍122為三個最低有效(最右)位元,且第二位元範圍120為五個最高有效(最左)位元,但這僅為一範例。
在第一位元範圍122中,每一位元之值等於源運算元(SRC)之一對應位置中的一位元之值。該源運算元(SRC)之三個最低有效或最右位元具有位元值「010」,且同樣目的運算元(DEST)中的第一位元範圍中三個最低或最右位元也具有同等位元值「010」。
在第二位元範圍120中,不論源運算元之對應位置中的位元值為何,所有位元都具有同一值,在此特定情況下,全部為零。雖然源運算元(SRC)之五個最高有效或最左位元具有位元值「10101」,但目的運算元(DEST)中之結果中的五個最高有效位元具有位元值「00000」。在一可選實施例中,第二範圍之所有位元可能全部具有同一值一,即「11111」。應指出的是在此特定情況下,第二位元範圍中的三位元各具有與源運算元之一對應位置中的一位元相比不同的一值。
為了避免模糊了說明,一相對簡單的指令處理裝置已被繪示出來並被加以描述。將瞭解的是其他實施例可能具有多個執行單元。例如,該裝置可能包括多個不同類型的執行單元,諸如,舉例而言,算術單元、算術邏輯單元(ALU)、整數單元等。這些單元中至少一者可響應於本文所揭露之位元範圍隔離指令之一實施例。還有其他實施例可能具有多個核心、邏輯處理器或執行引擎。一可用以執行本文所揭露之一位元範圍隔離指令的執行單元可被包括在至少一、至少二、大多數或所有核心、邏輯處理器或執行引擎內。
指令處理裝置還可選擇性地包括一或更多個其他習知的組件。例如,其他實施例可選擇性地包括指令提取邏輯元件、預解碼邏輯元件、排程邏輯元件、重排序緩衝器、分支預測邏輯元件、引退邏輯元件、暫存器重命名邏輯元件等等,或其等的某一組合。這些組件可照慣例而被實施,或可作出基於本揭露的熟於此技者顯而易見的較小改動而被實施。儘管若需要的話可從公共文獻中輕易獲得進一步說明,但這些組件之進一步說明對理解本文之實施例而言不是必需的。確實有許多此類組件的不同組合及組態在技藝中是習知的。範圍不限於任何習知的此一組合或組態。實施例可在有或沒有此類附加組件之情況下而被實施。
在一或更多個實施例中,一位元範圍隔離指令之一實施例可含蓄地或隱含地指示一關注的將被隔離的位元範圍之一第一端。該含蓄地或隱含地指示的端雖未透過一明確值「表示出來」但可被「理解」。處理器或其他指令處理裝置可透過一運算碼或其他唯一的指令識別符來識別位元範圍歸零指令,並理解一位元範圍之一端是固有的。
第3圖繪示一依據一含蓄地或隱含地指示一關注的位元範圍之一第一端為一最低有效位元(LSB)的位元範圍隔離指令之一第一範例實施例的位元範圍隔離操作之一第一範例實施例。在圖示中,最低有效位元為被標記為「0」的最右位元。
位元範圍隔離指令可含蓄地指示或明確地指定一源運算元(SRC)。在所繪示之實施例中,該源運算元具有32位元。可選擇地,該運算元可能具有16位元、64位元、128位元或某一其他數目的位元。特定的所繪示之32位元源運算元(SRC)從左至右儲存以下位元:「10100110100110110101100111010110」。這些特定位元值僅為了實現說明目的,且不是必須的。
位元範圍隔離指令還可含蓄地指示或明確地指定一目的運算元(DEST)。該目的運算元(DEST)具有表示依據位元範圍隔離指令對源運算元(SRC)執行一位元範圍隔離操作之一範例實施例的一結果。該結果具有一關注的第一位元範圍322及清除或丟棄位元的一第二位元範圍320。
第一位元範圍322在隱含的LSB第一端處具有一起點並在此特定情況下在第十九個位元處具有一終點。在此特定情況下,第二位元範圍以第二十個位元為起點並以最高有效位元(MSB)為終點。第一與第二範圍之間之邊界可可選擇地位於任何其他位置。
在一或更多個實施例中,位元範圍隔離指令也可明確地指定-諸如透過一源運算元或與該指令相關聯的一常數或立即值-一指示關注之第一位元範圍之終點的值(例如代表一數目的一位元數目)。例如,明確值可代表對應於從一含蓄的、明確的或理解點(例如隱含的最低有效位元端、最高有效位元或中心位元)量測出來的該終點之一位元位置。作為另一範例,該值可代表一從一含蓄的、明確的或理解點(例如關注之位元範圍之隱含的最低有效位元端、一最高有效位元、一中心位元或一起點)開始的正或負位元長度。
在第一位元範圍322中,每一位元之值等於一源運算元之一對應位置中之一位元之值。在此特定範例中,源運算元(SRC)之十九個最低有效或最右位元具有位元值「10110101100111010110」,且同樣目的運算元(DEST)中的第一位元範圍322之十九個最低有效或最右位元也具有位元值「10110101100111010110」。
在第二位元範圍320中,所有位元具有同一值,在此特定情況下為零。在此特定範例中,源運算元(SRC)之十二個最高有效或最左位元具有位元值「101001101001」,而目的運算元(DEST)中的第二位元範圍之十二個最高有效位元全部具有位元值「000000000000」。可選擇地,第二範圍之所有位元可能具有同一值一(例如111111111111)。
應瞭解的是由該指令所指示的位元可能被包括於保留的第一位元範圍中或被歸零或丟棄的第二位元範圍中。任一規約可由該指令來採用。
作為另一選擇,在一或更多個實施例中,位元範圍隔離指令可含蓄地或隱含地指示一被關注的將被隔離的位元範圍之第一端為一最高有效位元(MSB)。在圖示中,最高有效位元為最左位元。
第4圖繪示一依據含蓄地或隱含地指示一關注的位元範圍之一終點為一最高有效位元(MSB)的位元範圍隔離操作之一第二範例實施例的位元範圍隔離操作之一第二範例實施例。在圖示中,最高有效位元(MSB)為被標記為「31」的最左位元。
第二範例實施例與上文所述的第一範例實施例具有某些相似性。為了簡明扼要,討論將傾向於關注差異而不重複相似之處。
正如前面一樣,位元範圍隔離指令可指示或指定一源運算元(SRC)及一目的運算元(DEST)。該目的運算元(DEST)具有一包括一關注的第一位元範圍422及被歸零或丟棄位元的一第二位元範圍420的結果。
第一位元範圍322在隱含的MSB處具有一終點並具有在此特定情況下位於第十七個位元處的一起點。第二位元範圍以最低有效位元(LSB)為起點並在此特定情況下以第十六個位元為終點。第一範圍與第二範圍之間之邊界可可選擇地為任何其他位置。
在一或更多個實施例中,位元範圍隔離指令可含蓄地指示或明確地指定-諸如透過一第二源運算元或該指令之一立即數-一指示該第一位元範圍之起點的值。舉例而言,該值可代表對應於第二端之一位元位置或一位元長度,其中該長度的一端對應於第二端。
在第一位元範圍422中,每一位元之值等於一源運算元之一對應位置中的一位元之值。在此特定範例中,源運算元(SRC)之十五個最高有效或最左位元具有位元值「101001101001101」,且同樣目的運算元(DEST)中的第一位元範圍422之十五個最高有效或最左位元也具有位元值「101001101001101」。
在第二位元範圍420中,所有位元具有同一值,在此特定情況下為零。在此特定範例中,源運算元(SRC)之十六個最低有效或最右位元具有位元值「10101100111010110」,而目的運算元(DEST)中的第二位元範圍之十六個最低有效位元全部具有位元值「00000000000000000」。可選擇地,第二範圍之所有位元可能具有同一值一(例如11111111111111111)。
作為又一選擇,在一或更多個實施例中,位元範圍隔離指令可明確地指定-諸如透過一第二源運算元及/或該指令之一立即值-指示一關注的位元範圍之兩端的值。
第5圖繪示一依據一指示或指定一關注的位元範圍之兩端的位元範圍隔離指令之一第三範例實施例的位元範圍隔離操作之一第三範例實施例。為了簡明扼要,討論將傾向於關注相對於先前範例實施例的差異而不重複相似之處。
正如前面一樣,位元範圍隔離指令可指示或指定一源運算元(SRC)及一目的運算元(DEST)。該目的運算元(DEST)具有一包括一關注的第一位元範圍522、無用位元之一第二位元範圍520及無用位元之一附加的第三位元範圍521的結果。
如先前所討論,在第一位元範圍522中,每一位元之值等於一源運算元之一對應位置中的一位元之值。在第二位元範圍520中,所有位元具有在此特定情況下為零的同一值。可選擇地,可使用一來替代零。
同樣,在第三位元範圍521中,所有位元具有在此特定情況下為零的同一值。可選擇地,位元範圍隔離指令可使第二範圍之最高有效位元歸零或被丟棄,而不使第三範圍中的無用的最低有效位元歸零或被丟棄。若需要的話,第三範圍之這些無用的最低有效位元隨後可利用例如一後續的右移位指令而被丟棄。
指定多個端的值均可代表一從一隱含的或理解點(例如最低有效位元、最高有效位元或中心位元)量測出來的一位元位置,或一從一隱含的或理解點(例如關注位元範圍之一最低有效位元、一最高有效位元、一中心位元或一終點)開始的正或負位元長度。在一特定範例實施例中,一第一值可代表關注的第一位元範圍之一起點之一位元位置且一第二值可代表一從由該第一值代表的起始位元位置開始的位元長度。
在第3-5圖中應注意,不論第一位元範圍在結果中之位置為何,位元範圍隔離指令之執行都在不使結果之第一位元範圍相對於源運算元之對應位置中的相同值之位元移位或移動之下完成。也就是說,無移位操作或改變相對位元位置的其他操作被執行。若期望使第一位元範圍移位,諸如使第一位元範圍與最低有效位元對齊或對準,則這可藉由一後續指令(例如一右移位指令)而被執行。許多ISA具有一適用於執行此一操作的右移位指令。
第3-5圖繪示適用的位元範圍隔離操作及指令之若干範例。其他實施例對熟於此技者將是顯而易見的並具有本揭露之優勢。
依據一特定範例實施例的一位元範圍隔離指令為一BZHI-使以指定位元位置起始的高位元歸零-指令。該BZHI指令可能具有一標準的3位元組x86運算碼,其可選擇性地具有一用以為更多暫存器及一更廣泛的資料空間定址的REX前綴。該BZHI指令編碼的指令運算元被繪示於表格1中。
運算元1被明確指定且可在用於32位元模式之32位元的一般用途暫存器(reg)中,或在用於64位元模式之64位元的一般用途暫存器中。運算元1容許讀取(R)及寫入(W)。
運算元2被明確指定且可在用於32位元模式的32位元的一般用途暫存器(r)或記憶體(m)中,或在用於64位元模式64位元的一般用途暫存器或記憶體中。運算元2容許讀取(R)。
第6圖繪示一代表一位元範圍隔離或歸零指令之一特定範例實施例的BZHI指令之一說明。該BZHI指令將一第二運算元之位元拷貝到一目的運算元中,並將以由一包含在一第一運算元之八較低位元中的數值所指定的一位元位置起始而上至最大運算元大小的所有較高階位元設定成零。對BZHI指令而言,第一運算元也用作目的運算元且結果覆寫該第一運算元。
零旗標(ZF)、進位旗標(CF)及符號旗標(SF)基於結果而更新。若包含在第一運算元之八較低位元中的數值大於運算元大小,則進位旗標(CF)被設置。在一層面中,此類情況下的位元位置可被當作包含在第一運算元之八較低位元中的數值與運算元大小之間之差。溢位旗標(OF)被清除。輔助進位旗標(AF)及同位旗標(PF)未經定義。這些旗標被繪示於第11圖中。
預設運算元大小為32位元。一64位元的運算元大小為可編碼的。該指令之前的一前綴位元組66H將導致#UD。
第7圖繪示一代表一位元範圍隔離或歸零指令之一特定範例實施例的BZHI指令之虛擬碼操作。SRC指具有資料的被明確指定的第二源運算元,DEST指一也用作用以儲存位元位置的一第一源運算元之目的運算元。運算元大小在32位元模式中為32位元或在64位元模式中為64位元。CF指進位旗標。
其他指令也可以想到。例如,不需要以一目的運算元來覆寫一源運算元。若需要的話,為REX及VEX前綴編碼的運算碼之其他說明可從2009年9月Intel64及IA-32架構軟體開發手冊第2A冊:指令集參考(Intel64 and IA-32 Architectures Software Developer’s Manual Volume 2A:Instruction Set Reference),A-M,序號:253666-032US中獲得。
為了進一步繪示某些構想,考慮BZHI結合萃取位元欄位如何有用。此一位元欄位萃取例如在諸如舉例而言霍夫曼、賴斯及伽瑪編碼之類的各種不同的資料解壓縮壓縮及解碼演算法中是有用的。通常,關注位元範圍之起點及終點或起點及長度可在運行期間由一解碼演算法確定。在某些情況下,關注的位元範圍可能具有預定義及固定的長度(例如長度10:10:10:2)。在其他情況下,關注的位元範圍在諸如舉例來說霍夫曼、賴斯及伽瑪編碼而言的情況中可能具有可變長度。無論如何,習知的方法可用以確定關注的位元範圍之起點及終點或起點及長度。
在某些演算法中,BZHI可與一右移位指令結合使用來使一關注的位元欄位隔離並與最低有效位元右對準或對齊。作為一範例,當解碼演算法計算一關注的位元範圍之起點及終點時,一BZHI指令可被執行以使以該終點起始的資料之位元歸零並儲存一結果,且接著隨後一右移位指令可被執行以使該BZHI指令之結果右移該起始量及使移入的最高有效位元零擴展。這可如下所示:
RESULT1=BZHI DATA,END
RESULT2=SHIFT_RIGHT RESULT1,START
作為另一範例,當解碼演算法計算關注的位元範圍之起點及長度時,一右移位指令可被執行以使資料右移、使被移入的最高有效位元零擴展並儲存一結果,且接著隨後對該右移位指令之結果可執行一BZHI指令以使比長度更有效的結果之位元歸零並儲存一結果。這可如下所示:
RESULT1=SHIFT_RIGHT DATA,START
RESULT2=BZHI RESULT1,LENGTH
有利的是,由於若解碼演算法提供關注位元範圍之起點則可無需運算長度,故這可消除每一位元欄位萃取程序之一或更多個指令。
當一被關注位元範圍之起點及終點或起點及長度在運行時被確定時,立即使用這些值及僅利用二指令萃取一位元欄位的能力可提供一優勢。某些ISA為針對一單一指令僅容許二運算元被明確指定的2-源指令集架構。一具有一可變起點及一可變終點的通用的位元欄位萃取指令可能需要三個輸入,即起始資料、一起點及一終點與一長度中的一者。在某些情況下,一位元範圍之可變起點及可變終點(或長度)可由不同的計算提供及/或在不同的時間點上已知。在一2-源ISA中,起點及終點或長度可在一單一輸入中被預組合。然而,在某些情況下,預組合這些輸入可能採用至少二附加指令且可能傾向於增加總潛時。可執行一位元範圍歸零操作而不需要指定的可變起點及可變終點(或長度)的一指令可提供一性能優勢。因此,利用位元範圍隔離指令含蓄地指定一起點,並從位元範圍隔離指令中省略移位操作,均可提供一性能優勢。
隔離及萃取位元欄位可用於各種不同的目的,諸如,舉例而言,用以將萃取位元欄位置於機器之資料字大小中供進一步處理,用以執行並行分散或存放操作等。實施例之範圍不限於任何已知的此一處理。
第8圖為位元範圍隔離邏輯元件830之一範例實施例之一方塊圖。該位元範圍隔離邏輯元件可被包括在一執行單元中且可響應於一位元範圍隔離指令。
所繪示之位元範圍隔離邏輯元件用於32位元操作。該邏輯元件可被輕易地擴展成執行64位元或更大的操作。此外,所繪示之邏輯元件假定一關注位元範圍的一隱含起點位於一最低有效位元(LSB)處。因此,所繪示之邏輯元件十分類似第3圖中所示之操作。
位元範圍隔離邏輯元件接收一32位元源運算元832及一代表關注位元範圍之另一端之一位元位置的8位元位置值834作為輸入。
位元範圍隔離邏輯元件包括遮罩產生邏輯元件836。該遮罩產生邏輯元件包括四個2:3飽和解碼器838A-D。該等2:3飽和解碼器中每一者被耦合以接收8位元位置值。一第一對飽和解碼器838A-B之輸出與一第一6:16飽和解碼器840A之輸入耦合。一第二對飽和解碼器838C-D之輸出與一第二6:16飽和解碼器840B之輸入耦合。該遮罩產生邏輯元件可用以基於8位元位置值而產生一遮罩。在一實施例中,該遮罩產生邏輯元件可產生一遮罩,該遮罩具有:(1)一第一位元範圍,其中每一位元對應於關注位元範圍之一對應位置中的一位元且均具有一值一;及(2)一第二位元範圍,其中每一位元對應於不關注的無用位元範圍之一對應的位置中的一位元且均具有一值零。例如,該遮罩可使關注位元範圍之隱含的最低有效位元(LSB)起始上至由8位元位置值所指定的關注位元範圍之終點為一,且所有更有效位元為零。
一32位元遮罩暫存器842與第一及第二6:16飽和解碼器之輸出耦合以接收該遮罩。舉例而言,該32位元遮罩可包括一臨時邏輯暫存器。
該位元範圍隔離邏輯元件還包括逐位元運算邏輯元件844。在一或更多個實施例中,該逐位元運算邏輯元件可包括AND邏輯元件。可選擇地,該逐位元運算邏輯元件可包括OR邏輯元件、XOR邏輯元件等等。該逐位元運算邏輯元件被耦合以從32位元遮罩暫存器接收32位元遮罩。該逐位元運算邏輯元件也被耦合以接收32位元源運算元。該逐位元運算邏輯元件可用以對32位元源運算元及32位元遮罩執行該逐位元運算。
就AND運算邏輯元件而言,在遮罩中由一遮罩的32位元源運算元之位元可在結果中同樣地再現,而在遮罩中由零遮罩的32位元源運算元之位元可能全部被清除或設定成零。此一AND運算邏輯元件可被視為零邏輯元件。
就OR運算邏輯元件而言,在遮罩中由一遮罩的32位元源運算元之位元可在結果中同樣地再現,而遮罩中由零遮罩的32位元源運算元之位元可全部被設定成一。通常更有用的是利用AND運算邏輯元件將無用位元清零而不是利用OR運算邏輯元件將它們設定成一,但有OR運算邏輯元件提供一優勢的實例。
所繪示之位元範圍隔離邏輯元件830之一略微變化可容許一明確的靈活起點位置而不是一隱含的最低有效位元(LSB)起點。可選擇地,解碼器838A-D及解碼器840A-B可能不是飽和解碼器,且明確的起點位置可作為一附加輸入而加入到非飽和解碼器中。這可能使一類似於第5圖中所示者的位元範圍隔離操作成為可能。
在一或更多個實施例中,一一般用途暫存器集之暫存器可用以儲存一或更多個源運算元及/或目的運算元。為了進一步繪示某些構想,可從各種不同的英特爾架構處理器中獲得的適用的一般用途暫存器之範例實施例將被討論,但這些特定暫存器無疑不是必需的。
第9圖繪示一適用32位元的一般用途暫存器集950之一特定範例實施例。該32位元暫存器集包括八個32位元或雙字的一般用途暫存器。這些暫存器被稱為EAX、EBX、ECX、EDX、ESI、EDI、EBP及ESP。這些32位元暫存器在16位元及8位元模式中是可定址的。EAX、EBX、ECX及EDX暫存器之較低的16位元被分別稱為AX、BX、CX及DX。舉例而言,具有16位元的單字無符號整數可被分別儲存在暫存器BX、CX及DX中。具有32位元的雙字無符號整數可被儲存在暫存器EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP、R8D-R15D中。
第10圖繪示一適用64位元的一般用途暫存器集1052之另一特定範例實施例。該64位元暫存器集包括十六個64位元或四倍字的一般用途暫存器。這些暫存器被稱為RAX、RBX、RCX、RDX、RSI、RDI、RBP、RSP、R8、R9、R10、R11、R12、R13、R14及R15。這些暫存器在32位元模式中可在32位元運算元上使用,且在64位元模式中可在64位元運算元上使用。RAX、RBX、RCX、RDX、RSI、RDI、RBP及RSP暫存器之較低的32位元分別對應於EAX、EBX、ECX、EDX、ESI、EDI、EBP及ESP暫存器。暫存器R8-R15之較低的32位元也可在32位元模式中定址並由R8D-R15D引用。舉例而言,具有64位元的四倍字無符號整數可被儲存在暫存器RAX、RBX、RCX、RDX、RSI、RDI、RBP、RSP或R8-R15中。
若需要的話,一般用途暫存器之附加說明可從2009年9月的Intel64及IA-32架構開發軟件手冊第1冊:基本架構(Basic Architecture)序號:253665-032US中獲得。這些特定暫存器僅為範例且不是必需的。
第11圖繪示一代表一狀態或旗標暫存器之一適用範例實施例的EFLAGS暫存器。此特定暫存器及這些特定旗標不是必需的。
該EFLAGS暫存器為一包括一組狀態旗標、一控制旗標及一組系統旗標的32位元暫存器。該等狀態旗標包括一進位旗標(CF,位元0)、一同位旗標(PF,位元2)、一輔助進位旗標(AF,位元4)、一零旗標(ZF,位元6)、一符號旗標(SF,位元7)及一溢位旗標(OF,位元11)。
該等系統旗標包括一陷阱旗標(TF,位元8)、一啟用中斷之旗標(IF,位元9)、一I/O特權等級(IOPL,位元12-13)、一巢套任務(NT,位元14)、一回復旗標(RF,位元16)、一虛擬-8086模式(VM,位元17)、一對齊檢查(AC,位元18)、一虛擬中斷旗標(VIF,位元19)、一虛擬中斷待決(VIP,位元20)及一ID旗標(ID,位元21)。控制旗標包括一方向旗標(DF,位元10)。EFLAGS之位元22-31被保留。
該EFLAGS暫存器為一較早的16位元FLAGS暫存器的後繼者。此外,在64位元模式處理器中,該EFLAGS暫存器已被一RFLAGS暫存器接替且延展成64位元。RFLAGS之較低的32位元與EFLAGS相同。在FLAGS、EFLAGS及RFLAGS暫存器之每一者中,進位旗標(CF)為位元0。若需要的話,EFLAGS/RFLAGS暫存器及進位旗標之附加說明可從2009年9月的Intel64及IA-32架構軟體開發手冊第1冊:基本架構,序號:253665-032US中獲得。
一或更多個實施例包括一項製品,其包括一儲存有一位元範圍隔離指令的有形的機器可存取及/或機器可讀取媒體,若該位元範圍隔離指令被一機器(例如一執行單元)執行則導致本文別處所描述的一位元範圍隔離操作。該有形媒體可包括一或更多種固體材料。該媒體可包括一提供例如儲存呈可由機器存取之形式之資訊的機制。例如,該媒體可選擇性地包括可記錄媒體,諸如,舉例而言,軟碟、光學儲存媒體、光碟、CD-ROM、磁碟、磁光碟、唯讀記憶體(ROM)、可規劃ROM(PROM)、可抹除可規劃ROM(EPROM)、電氣可抹除可規劃ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體及其組合。
舉例而言,適用的機器包括但不限於執行單元、一般用途處理器、特殊用途處理器(例如圖形處理器及密碼處理器)、密碼加速器、網路通訊處理器、電腦系統、網路裝置、數據機、個人數位助理(PDA)、蜂巢式電話及具有一或更多個執行單元的各種不同的其他電子裝置。
其他實施例涉及一電腦系統、嵌入式系統或具有一執行單元及/或執行本文所揭露之一種方法的其他電子裝置。
第12圖為一適用電腦系統1201之一第一範例實施例之一方塊圖。
該電腦系統包括一處理器1200。該處理器包括至少一能夠執行至少一位元範圍隔離指令1202的執行單元1206。
該處理器經由一匯流排(例如一前側匯流排)或其他互連1280被耦合至一晶片組1281。該互連可用以經由該晶片組在該處理器與該系統中的其他組件之間發送資料信號。
該晶片組包括一被稱為一記憶體控制中樞(MCH)1282的系統邏輯晶片。該MCH被耦合至該前側匯流排或其他互連1280。
一記憶體1286被耦合至該MCH。在各種不同的實施例中,該記憶體可包括一隨機存取記憶體(RAM)。DRAM為一用在某些但非全部電腦系統中的RAM類型之一範例。如圖所示,該記憶體可用以儲存諸如一或更多個位元範圍隔離指令的指令1287及資料1288。
一組件互連1285也與該MCH耦合。在一或更多個實施例中,該組件互連可包括一或更多個周邊組件互連高速(PCIe)介面。該組件互連可容許其他組件透過該晶片組耦合至該系統之剩餘部分。此類組件之一範例為一圖像晶片或其他圖形裝置,但此為可選擇的且不是必需的。
該晶片組還包括一輸入/輸出(I/O)控制中樞(ICH)1284。該ICH透過中樞介面匯流排或其他互連1283被耦合至該MCH。在一或更多個實施例中,該匯流排或其他互連1283可包括一直接媒體介面(DMI)。
一資料儲存器1289被耦合至該ICH。在各種不同的實施例中,該資料儲存器可包括一硬碟機、一軟碟機、一CD-ROM裝置、一快閃記憶體裝置等等,或其等的一組合。
一第二組件互連1290也與該ICH耦合。在一或更多個實施例中,該第二組件互連可包括一或更多個周邊組件互連高速(PCIe)介面。該第二組件互連可容許各種不同類型的組件透過該晶片組耦合至該系統之剩餘部分。
一串列擴充埠1291也與該ICH耦合。在一或更多個實施例中,該串列擴充埠可包括一或更多個通用串列匯流排(USB)埠。該串列擴充埠可容許各種不同的其他類型的輸入/輸出裝置透過該晶片組耦合至該系統之剩餘部分。
可選擇性地與該ICH耦合的其他組件之一些說明性範例包括但不限於,一音訊控制器、一無線收發器及一使用者輸入裝置(例如一鍵盤、滑鼠)。
一網路控制器也耦合至該ICH。該網路控制器可容許該系統與一網路耦合。
在一或更多個實施例中,該電腦系統可執行一可由位於華盛頓州雷德蒙德的微軟公司提供的WINDOWSTM
作業系統版本。可選擇地,其他作業系統,諸如,舉例而言,UNIX、Linux或嵌入式系統可被使用。
這僅為一適用電腦系統之一特定範例。例如,在一或更多個替代實施例中,該處理器可能具有多個核心。作為另一範例,在一或更多個替代實施例中,MCH 1282可與處理器1200一起實體地整合於晶粒上且該處理器可透過該整合式MCH直接與一記憶體1286耦合。作為另一範例,在一或更多個替代實施例中,其他組件可與該處理器一起整合於晶粒上,諸如,提供一單晶片系統(SoC)設計。作為又一範例,在一或更多個替代實施例中,該電腦系統可能具有多個處理器。
第13圖為一適用電腦系統1301之一第二範例實施例之一方塊圖。該第二範例實施例與上文所描述的該第一範例電腦系統具有某些相似之處。為了簡潔起見,討論將傾向於強調差異而不重複所有相似之處。
類似於上文所述之該第一範例實施例,該電腦系統包括一處理器1300及一具有一I/O控制中樞(ICH) 1384的晶片組1381。還類似於該第一範例實施例的是該電腦系統包括一與該晶片組耦合的第一組件互連1385、一與該ICH耦合的第二組件互連1390、一與該ICH耦合的串列擴充埠1391、一與該ICH耦合的網路控制器1392及一與該ICH耦合的資料儲存器1389。
在此第二實施例中,處理器1300為一多核心處理器。該多核心處理器包括處理器核心1394-1至1394-M,其中M可能是一等於或大於二的整數(例如二、四、七或更大)。每一核心可包括至少一能夠執行如本文所揭露之一指令之至少一實施例的執行單元。如圖所示,核心-1包括一快取1395(例如一L1快取)。其他核心中每一者可類似地包括一專用快取。該等處理器核心可在一單一積體電路(IC)晶片上實施。
該處理器還包括至少一共享快取1396。該共享快取可儲存由諸如核心的該處理器之一或更多個組件利用的資料(例如指令)。例如,該共享快取可局部快取儲存在一記憶體1386中的資料供該處理器之組件更快速地存取。在一或更多個實施例中,該共享快取可包括一或更多個中階快取,諸如二階(L2)、三階(L3)、四階(L4)或其他階級的快取、最後一階快取(LLC)及/或其等的組合。
該等處理器核心及該共享快取均與一匯流排或其他互連1397耦合。該匯流排或其他互連可耦合該等核心及該共享核心並容許通訊。
該處理器還包括一記憶體控制中樞(MCH)1382。如此範例實施例中所示,該MCH與處理器1300整合。例如,該MCH可與該等處理器核心一起位於晶粒上。該處理器透過該MCH與記憶體1386耦合。在一或更多個實施例中,該記憶體可包括DRAM,但這不是必需的。
該晶片組包括一輸入/輸出(I/O)中樞1393。該I/O中樞透過一匯流排(例如一快速路徑互連(QPI))或其他互連1380與該處理器耦合。第一組件互連1385與I/O中樞1393耦合。
這僅為一適用系統之一特定範例。關於膝上型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲機、機上盒、微控制器、手機、可攜式移動播放器、手持裝置及各種不同的其他電子裝置之技藝中所習知的其他系統設計及組態也是適用的。一般而言,能夠包含本文所揭露之一處理器及/或一執行單元的各種不同的系統或電子裝置一般是適用的。
在以上說明中,出於解釋的目的,許多特定細節已被提及以提供對實施例之深入理解。然而,熟於此技者將清楚的是一或更多個其他實施例在毋需這些特定細節中的某些特定細節之下也可被實施。提供所描述之該等特定實施例不是為了限制本發明之範圍而是為了說明本發明之實施例。本發明之範圍不欲由上文提供之特定範例確定而僅由下文之申請專利範圍來確定。在其他情況下,習知的電路、結構、裝置及操作已以方塊圖形式或在毋需細節之下而被繪示出來以避免模糊對說明之理解。在視為適當的情況下,參考數字或參考數字之末端部分已在諸圖中重複以標示對應或類似元件,它們可選擇性地具有相似特性。
某些操作可由硬體組件來執行,或可以機器可執行指令來實施,機器可執行指令可用以致使或至少導致一利用指令而被程式化的電路或硬體執行該等操作。舉例而言,該電路可包括一一般用途或特殊用途處理器,或邏輯電路。該等操作還可選擇性地由一硬體與軟體之組合來執行。一執行單元及/或一處理器可包括響應於一機器指令或獲自於該機器指令的一或更多個控制信號來儲存一指令特定結果運算元的具體或特定電路或其他邏輯元件。
應瞭解的是此說明書中之參考用語「一實施例」、或「一或更多個實施例」,例如,意指一特定特徵可包括在實施例中。類似地,應瞭解的是在說明中,為了實現簡化揭露並輔助理解各種不同的發明層面之目的,各種不同的特徵有時在一單一實施例、圖式或其說明中集中在一起。然而,揭露之此方法不欲被理解為反映實施例需要比每一申請專利範圍中明確列出者更多之特徵的一意圖。反之,以下申請專利範圍反映,發明層面可能在於少於所揭露的一單一實施例之所有特徵。因此,詳細說明之後之申請專利範圍被明確地併入此詳細說明中,其中每一申請專利範圍單獨作為本發明的一獨立實施例。
100...方法
101~103...方塊
110...指令處理裝置
112...位元範圍隔離指令
114...指令解碼器
116、1206...執行單元
118...暫存器集
120、320、420、520...第二位元範圍
122、322、422、522...第一位元範圍
521...附加的第三位元範圍
830...位元範圍隔離邏輯元件
832...32位元源運算元
834...8位元位置值
836...遮罩產生邏輯元件
838A-D、840A-B...解碼器
838A-D...2:3飽和解碼器/解碼器
840A...第一6:16飽和解碼器/解碼器
840B...第二6:16飽和解碼器/解碼器
842...32位元遮罩暫存器
844...逐位元運算邏輯元件
950...適用32位元的一般用途暫存器集
1052...適用64位元的一般用途暫存器集
1200、1300...處理器
1201、1301...適用電腦系統
1202...位元範圍隔離指令
1280...其他互連
1281、1381...晶片組
1282、1382...記憶體控制中樞(MCH)
1283...中樞介面匯流排或其他互連/匯流排或其他互連
1284、1384...輸入/輸出(I/O)控制中樞(ICH)
1285...組件互連
1286、1386...記憶體
1287、1387...指令
1288、1388...資料
1289、1389...資料儲存器
1290、1390...第二組件互連
1291、1391...串列擴充埠
1380...快速路徑互連(QPI))或其他互連
1385...第一組件互連
1392...網路控制器
1393...輸入/輸出(I/O)中樞
1394-1~1394-M...處理器核心
1395...快取
1396...共享快取
1397...匯流排或其他互連
第1圖為一種處理一位元範圍隔離指令之一實施例的方法之一實施例之一方塊流程圖。
第2圖為一指令處理裝置之一範例實施例之一方塊圖。
第3圖繪示一依據一位元範圍隔離指令之一第一範例實施例的位元範圍隔離操作之一第一範例實施例。
第4圖繪示一依據一位元範圍隔離指令之一第二範例實施例的位元範圍隔離操作之一第二範例實施例。
第5圖繪示一依據一位元範圍隔離指令之一第三範例實施例的位元範圍隔離操作之一第三範例實施例。
第6圖繪示一代表一位元範圍隔離指令之一特定範例實施例的BZHI-使以指定位元位置起始的高位元歸零-指令之一說明。
第7圖繪示一代表一位元範圍隔離指令之一特定範例實施例的BZHI-使以指定位元位置起始的高位元歸零-指令之虛擬碼運算。
第8圖為位元範圍隔離邏輯元件之一範例實施例之一方塊圖。
第9圖繪示一適用32位元的一般用途暫存器集之一特定範例實施例。
第10圖繪示一適用64位元的一般用途暫存器集之另一特定範例實施例。
第11圖繪示一代表一狀態或旗標暫存器之一適用範例實施例的EFLAGS暫存器。
第12圖為一適用電腦系統之一第一範例實施例之一方塊圖。
第13圖為一適用電腦系統之一第二範例實施例之一方塊圖。
100...方法
101~103...方塊
Claims (52)
- 一種用以執行指令之方法,其包含:接收一指令;響應於該指令將一結果儲存於由該指令所指示之一目的中,該結果具有:一第一範圍之位元,其具有由該指令所明確指定的一第一端,及具有由該指令所隱含地指定但非明確指定的一第二端以作為一最低有效位元與一最高有效位元中之一者,其中在該第一範圍之位元中,每一位元在數值上將等於由該指令所指定之一源運算元在一對應位元位置中的一位元之值;及一第二範圍之位元,其中不論該源運算元在對應位元位置中之位元之值為何,該第二範圍之位元中所有位元都將具有同一值。
- 如申請專利範圍第1項所述之方法,其中該指令隱含地指定該第二端作為最低有效位元。
- 如申請專利範圍第1項所述之方法,其中該指令具有僅准許二運算元要被明確指定的一格式。
- 如申請專利範圍第1項所述之方法,其中該指令指定一第二源運算元,該第二源運算元指定該第一範圍之位元之該第一端。
- 如申請專利範圍第4項所述之方法,其中該第二源運算元具有一值,該值代表對應於該第一端之一位元的一位置與位元之一長度中之一者,其中該長度之一端對應於 該第一端。
- 如申請專利範圍第1項所述之方法,其中儲存一結果包含儲存全部具有數值零(0)的一第二範圍之位元。
- 如申請專利範圍第6項所述之方法,其進一步包含:將該源運算元拷貝至該目的;產生一遮罩,該遮罩包括:(a)一第一組位元,其中每一位元對應於該第一範圍之位元中於一對應位置中的一位元且每一者均具有一數值一(1);及(b)一第二組位元,其中每一位元對應於該第二範圍之位元中於一對應位置中的一位元且每一者均具有一數值零(0);及對該遮罩及該目的執行一AND運算。
- 如申請專利範圍第1項所述之方法,其中該方法由一具有多個核心的一般用途微處理器來執行,且其中該等核心中的至少一者具有響應於該指令的電路。
- 一種用以執行指令之裝置,其包含:一執行單元,其可操作來響應一指令將一結果儲存到由該指令所指示的一目的中,該結果具有:一第一範圍之位元,其具有由該指令所明確指定的一第一端,及具有由該指令所隱含地指定但非明確指定的一第二端以作為一最低有效位元與一最高有效位元中之一者,其中在該第一範圍之位元中,每一位元在數值上將等於由該指令所指示的一源運算元在一對應位元位置中之一位元之值;及一第二範圍之位元,其中不論該源運算元在對 應位元位置中之位元之值為何,該第二範圍之位元中所有位元都將具有同一值。
- 如申請專利範圍第9項所述之裝置,其中該指令隱含地指定該第二端為該最低有效位元。
- 如申請專利範圍第9項所述之裝置,其中該指令具有僅准許二運算元要被明確指定的一格式。
- 如申請專利範圍第9項所述之裝置,其中該執行單元可操作來由該指令所指示的一第二源運算元確定該第一範圍之位元之該第一端。
- 如申請專利範圍第12項所述之裝置,其中該第二源運算元具有一值,該值代表一對應於該第一端之一位元的一位置與位元中之一長度之一者,其中該長度之一端對應於該第一端。
- 如申請專利範圍第9項所述之裝置,其中該執行單元係用以儲存一結果,其中該第二範圍之所有該等位元具有數值零(0)。
- 如申請專利範圍第14項所述之裝置,其中該執行單元包含:拷貝邏輯元件,其與該源運算元及該目的耦合以將該源運算元拷貝至該目的;及零邏輯元件,其與該目的耦合以使該目的中的該第二範圍之位元歸零,其中該零邏輯元件包含:用以產生一遮罩的遮罩產生邏輯元件,該遮罩包括:(a)一第一組位元,其中每一位元對應於該第一範圍 之位元於一對應位置中的一位元且每一者均具有一數值一(1);及(b)一第二組位元,其中每一位元對應於該第二範圍之位元中於一對應位置中的一位元且每一者均具有一數值零(0);及AND運算邏輯元件,其與該遮罩及該目的耦合以對該遮罩及該目的中的資料執行一AND運算。
- 如申請專利範圍第9項所述之裝置,其中該儲存包含儲存全部數值為一(1)的一第二範圍之位元。
- 如申請專利範圍第9、10、11、12、14、及15項中之任一項所述之裝置,其中該指令包含一機器指令,且其中該目的包含一個64位元一般用途暫存器。
- 如申請專利範圍第9、10、11、12、14、及15項中之任一項所述之裝置,其中該執行單元被包括於一多核心一般用途微處理器之一核心內,且其中該指令可被交替地以32位元模式及64位元模式兩者來執行。
- 如申請專利範圍第9、10、11、12、14、及15項中之任一項所述之裝置,其中該第一源運算元被儲存於一64位元一般用途暫存器中,且該64位元一般用途暫存器之一較低之32位元係可用於一32位元運算元定址。
- 如申請專利範圍第9、10、11、12、14、及15項中之任一項所述之裝置,其中該指令明確指定一位元位置以指定該第一端。
- 如申請專利範圍第9、10、11、12、14、及15項中之任一項所述之裝置,其中該裝置用以在由該指令所明確指 定之該第一端大於一運算元大小時,設定一旗標。
- 一種用以執行指令之裝置,其包含:一執行單元,其可操作來響應一指令將一結果儲存在一目的中,該指令係指示於一暫存器中之一第一源運算元及於一暫存器與記憶體中之一者之一第二源運算元,該第一源運算元係將具有16位元、32位元及64位元中的一者,且該第二源運算元係具有32位元及64位元中的一者,該結果具有:一第一範圍之位元,其在由該指令隱含地指示的一最低有效位元處具有一第一端,且在由該第一源運算元之一最低有效位元組中的一值所指示的一位元位置之前一位元處具有一第二端,該第一範圍中的每一位元在數值上等於該第二源運算元在一對應位元位置中的一位元之值;及一第二範圍之位元,其以該所指示之位元位置為起點並以一最高有效位元為終點,其中所有位元具有一數值零。
- 如申請專利範圍第22項所述之裝置,其中該執行單元由於該指令而未執行一移位操作。
- 一種用以執行指令之系統,其包含:一互連體;與該互連體耦合的一處理器,該處理器可操作來響應一指令將一結果儲存到由該指令所指示的一目的中,該結果具有: 一第一範圍之位元,具有由該指令所明確指定的一第一端之,及具有由該指令所隱含地指定的一第二端以作為一最低有效位元與一最高有效位元中之一者,其中在該第一範圍之位元中,每一位元在數值上等於由該指令指示的一源運算元在一對應位元位置中的一位元之值;及一第二範圍之位元,其中不論該源運算元在對應位元位置中的位元之值為何,該第二範圍之位元中所有位元都將具有一相同值;及與該互連體耦合的一動態隨機存取記憶體(DRAM)。
- 一種提供指令之製品,其包含:一有形的機器可讀取媒體,其包括提供一指令之物質,該指令係指示一源運算元及一目的,該指令在由一機器處理時會致使該機器執行包含以下的操作:將一結果儲存在該目的中,該結果具有:一第一範圍之位元,具有由該指令所明確指定的一第一端,及具有由該指令所隱含地指定的一第二端以作為一最低有效位元,其中在該第一範圍之位元中,每一位元在數值上等於該源運算元在一對應位元位置中的一位元之值;及一第二範圍之位元,其中不論該源運算元在對應位元位置中的位元之值為何,該第二範圍之位元中所有位元都具有一相同值。
- 如申請專利範圍第25項所述之製品,其中該指令隱含地指定該第一範圍之位元之一第一端。
- 一處理器,其包含:指令提取邏輯元件;分支預測邏輯元件;多個暫存器,其包括控制暫存器、狀態暫存器、及64位元一般用途暫存器,其中該64位元一般用途暫存器之一較低之32位元係可定址以對32位元運算元操作,且其中該狀態暫存器包括具有和一組狀態旗標相關聯之多數位元之一32位元暫存器,該等狀態旗標包括一進位旗標、一零旗標、一符號旗標、及一溢位旗標;一指令解碼器,其用以接收及解碼一位元範圍隔離指令,該指令用以隱含地指出有興趣的位元之範圍之一第一端,並且經由與該指令相關聯之一立即值來明確地指示該有興趣的位元之範圍之一第二端;及一執行單元,其用以對該指令之一源運算元執行一位元範圍隔離操作,該指令之編碼用以指出包括一32位元運算元大小及一64位元運算元大小之多個源運算元大小之一者,該執行單元包含:用以產生一遮罩的遮罩產生邏輯元件;及逐位元運算邏輯元件,其用以接收該源運算元及該遮罩,且針對該源運算元及該遮罩執行一逐位元AND運算,以產生一結果,該結果包括一第一範圍之位元,及一第二範圍之位元,其中在該第一範圍之位元中,每一 位元在數值上等於該源運算元在一對應位元位置中的一位元之值,及其中在該第二範圍之位元中,不論該源運算元在對應位元位置中的位元值為何,該第二範圍之位元中所有位元都具有一相同值。
- 如申請專利範圍第27項所述之處理器,更包含暫存器重命名邏輯元件、排程邏輯元件、一重排序緩衝器、及引退邏輯元件。
- 如申請專利範圍第27項所述之處理器,其中該遮罩將包括一第一範圍之位元,各位元對應至感興趣之位元範圍中於一對應位置之位元,且各具有1之一值,及包括一第二範圍之位元,各位元對應至不感興趣之位元範圍中於一對應位置之位元,且各具有0之一值。
- 如申請專利範圍第27、28、29項中任一項所述之處理器,其中該相同值為0之一位元值。
- 如申請專利範圍第27、28、29項中任一項所述之處理器,其中該相同值為1之一位元值。
- 如申請專利範圍第27、28、29項中任一項所述之處理器,其中執行該位元範圍隔離指令係在不移位該結果之該第一範圍下完成。
- 一晶片上之系統(SoC),其包含:一網路控制器,其用以將該SoC耦接至一網路;一記憶體控制器,其用以提供至一動態隨機存取記憶體之存取;一共享快取,其用以儲存資料;及 多個處理器核心,其耦接至該記憶體控制器及該共享快取,該等多個處理器核心中之至少一者包含:一L1快取;一指令提取邏輯元件;分支預測邏輯元件;多個暫存器,其包括控制暫存器、狀態暫存器、及64位元一般用途暫存器,其中該64位元一般用途暫存器之一較低之32位元係可定址以對32位元運算元操作,且其中該狀態暫存器包括具有和一組狀態旗標相關聯之多數位元之一32位元暫存器,該等狀態旗標包括一進位旗標、一零旗標、一符號旗標、及一溢位旗標;一指令解碼器,其用以接收及解碼一位元範圍隔離指令,該指令用以隱含地指出有興趣的位元之範圍之一第一端,並且經由與該指令相關聯之一立即值來明確地指示該有興趣的位元之範圍之一第二端;一執行單元,其用以對該指令之一源運算元執行一位元範圍隔離操作,該指令之編碼用以指出包括一32位元運算元大小及一64位元運算元大小之多個源運算元大小之一者,該執行單元包含:用以產生一遮罩的遮罩產生邏輯元件;及逐位元運算邏輯元件,其用以接收該源運算元及該遮罩,且對該源運算元及該遮罩執行一逐位元AND運算,以產生一結果,該結果包括一第一範圍之位元,及一第二範圍之位元,其中在該第一範圍之位元中,每一位元 在數值上等於該源運算元在一對應位元位置中的一位元之值,及其中在該第二範圍之位元中,不論該源運算元在對應位元位置中的位元之值為何,該第二範圍之位元中所有位元都具有一相同值。
- 如申請專利範圍第33項所述之晶片上之系統,其中該等多個處理器核心中之該至少一者更包含暫存器重命名邏輯元件、排程邏輯元件、一重排序緩衝器、及引退邏輯元件。
- 如申請專利範圍第33項所述之晶片上之系統,其中該遮罩將包括一第一範圍之位元,各位元對應至感興趣之位元範圍中於一對應位置之位元,且各具有1之一值,及包括一第二範圍之位元,各位元對應至不感興趣之位元範圍中於一對應位置之位元,且各具有0之一值。
- 如申請專利範圍第33、34、35項中任一項所述之晶片上之系統,其中該相同值為0之一位元值。
- 如申請專利範圍第33、34、35項中任一項所述之晶片上之系統,其中該相同值為1之一位元值。
- 如申請專利範圍第33、34、35項中任一項所述之晶片上之系統,其中執行該位元範圍隔離指令係在不移位該結果之第一範圍下完成。
- 一手持裝置,其包含:一動態隨機存取記憶體;一耦接至該動態隨機存取記憶體之一記憶體控制器;一快閃記憶體裝置,其用以儲存資料; 一無線收發器;一使用者輸入裝置;一網路控制器,其用以將該手持裝置耦接至一網路;一共享快取,其用以儲存資料;及多個處理器核心,其耦接至該記憶體控制器及該共享快取,該等多個處理器核心中之至少一者包含:一L1快取;一指令提取邏輯元件;分支預測邏輯元件;多個暫存器,其包括控制暫存器、狀態暫存器、及64位元一般用途暫存器,其中該64位元一般用途暫存器之一較低之32位元係可定址以對32位元運算元操作,且其中該狀態暫存器包括具有和一組狀態旗標相關聯之多數位元之一32位元暫存器,該等狀態旗標包括一進位旗標、一零旗標、一符號旗標、及一溢位旗標;一指令解碼器,其用以接收及解碼一位元範圍隔離指令,該指令用以隱含地指出有興趣的位元之範圍之一第一端,並且經由與該指令相關聯之一立即值來明確地指示該有興趣的位元之範圍之一第二端;一執行單元,其用以對該指令之一源運算元執行一位元範圍隔離操作,該指令之編碼用以指出包括一32位元運算元大小及一64位元運算元大小之多個源運算元大小之一者,該執行單元包含:用以產生一遮罩的遮罩產生邏輯元件;及 逐位元運算邏輯元件,其用以接收該源運算元及該遮罩,且對該源運算元及該遮罩執行一逐位元AND運算,以產生一結果,該結果包括一第一範圍之位元,及一第二範圍之位元,其中在該第一範圍之位元中,每一位元在數值上等於該源運算元在一對應位元位置中的一位元之值,及其中在該第二範圍之位元中,不論該源運算元在對應位元位置中的位元之值為何,該第二範圍之位元中所有位元都具有一相同值。
- 如申請專利範圍第39項所述之手持裝置,其中該等多個處理器核心中之該至少一者更包含暫存器重命名邏輯元件、排程邏輯元件、一重排序緩衝器、及引退邏輯元件。
- 如申請專利範圍第39項所述之手持裝置,其中該遮罩將包括一第一範圍之位元,各位元對應至感興趣之位元範圍中於一對應位置之位元,且各具有1之一值,及包括一第二範圍之位元,各位元對應至不感興趣之位元範圍中於一對應位置之位元,且各具有0之一值。
- 如申請專利範圍第39、40、41項中任一項所述之手持裝置,其中該相同值為0之一位元值。
- 如申請專利範圍第39、40、41項中任一項所述之手持裝置,其中該相同值為1之一位元值。
- 如申請專利範圍第39、40、41項中任一項所述之手持裝置,其中執行該位元範圍隔離指令係在不移位該結果之第一範圍下完成。
- 如申請專利範圍第39、40、41項中任一項所述之手持裝置,更包含將該手持裝置耦接至輸入/輸出裝置之一USB埠。
- 一種用以執行指令之裝置,其包含:一解碼器,其用以解碼一指令,該指令係用以指出包括資料之一第一源運算元,其中該指令將明確地指示用來指示一第一範圍之位元之兩端之兩個值,其中該等值中之至少一者將被提供於由該指令所指示之一暫存器中;一執行單元,其耦接至該解碼器,該執行單元響應於被解碼之該指令,將一結果儲存到要由該指令所指示的一目的儲存位置中,該結果具有:一第一範圍之位元,其中在該第一範圍之位元中,每一位元在數值上將等於該源運算元在一對應位元位置中之一位元之值;一第二範圍之位元,其比該第一範圍之位元為更有效位元,其中不論該第一源運算元於對應位元位置之位元之值為何,該第二範圍之位元中所有位元都將具有一相同值;及一第三範圍之位元,其比該第一範圍之位元為較低有效位元,其中不論該第一源運算元於對應位元位置之位元之值為何,該第三範圍之位元中所有位元都將具有一相同值。
- 如申請專利範圍第46項所述之裝置,其中該執行單元在 不管於該結果中之該第一範圍之位元之位置為何,在未相對於該第一源運算元之該對應位元位置中之相同值之該等位元來移動該結果之該第一範圍之位元下,完成該指令之執行。
- 如申請專利範圍第46項所述之裝置,其中該等值之每一者指定一位元位置。
- 如申請專利範圍第46項所述之裝置,其中該第二範圍之位元之所有位元將為0,且該第三範圍之位元之所有位元將為0。
- 如申請專利範圍第47、48、49項中任一項所述之裝置,其中該第一源運算元係被儲存於一64位元一般用途暫存器中,且該64位元一般用途暫存器之一較低之32位元係可用於一32位元運算元定址。
- 如申請專利範圍第47、48、49項中任一項所述之裝置,其中該指令可被交替地以32位元模式及64位元模式兩者來執行。
- 如申請專利範圍第47、48、49項中任一項所述之裝置,其中該裝置用以在由該指令所明確指定之該第一端大於一運算元大小時,設定一旗標。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/645,307 US9003170B2 (en) | 2009-12-22 | 2009-12-22 | Bit range isolation instructions, methods, and apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201137741A TW201137741A (en) | 2011-11-01 |
TWI502493B true TWI502493B (zh) | 2015-10-01 |
Family
ID=44152791
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW099139490A TWI502493B (zh) | 2009-12-22 | 2010-11-17 | 位元範圍隔離指令、方法及裝置 |
Country Status (5)
Country | Link |
---|---|
US (5) | US9003170B2 (zh) |
JP (4) | JP5456643B2 (zh) |
CN (3) | CN109375950B (zh) |
DE (1) | DE102010053967A1 (zh) |
TW (1) | TWI502493B (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9003170B2 (en) | 2009-12-22 | 2015-04-07 | Intel Corporation | Bit range isolation instructions, methods, and apparatus |
CN103946795B (zh) * | 2011-12-14 | 2018-05-15 | 英特尔公司 | 用于生成循环对齐计数或循环对齐掩码的***、装置和方法 |
WO2013095555A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Packed data rearrangement control indexes generation processors, methods, systems, and instructions |
WO2013095554A1 (en) | 2011-12-22 | 2013-06-27 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of consecutive integers in numerical order |
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 |
CN104011644B (zh) | 2011-12-22 | 2017-12-08 | 英特尔公司 | 用于产生按照数值顺序的相差恒定跨度的整数的序列的处理器、方法、***和指令 |
CN104126168B (zh) * | 2011-12-22 | 2019-01-08 | 英特尔公司 | 打包数据重新安排控制索引前体生成处理器、方法、***及指令 |
CN104011668B (zh) * | 2011-12-22 | 2017-03-22 | 英特尔公司 | 用于将源操作数映射到不同范围的***、装置和方法 |
WO2013095604A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing mask bit compression |
US9778932B2 (en) * | 2013-01-23 | 2017-10-03 | International Business Machines Corporation | Vector generate mask instruction |
US9207942B2 (en) * | 2013-03-15 | 2015-12-08 | Intel Corporation | Systems, apparatuses,and methods for zeroing of bits in a data element |
CN104346208B (zh) * | 2013-07-31 | 2017-09-15 | 上海华虹集成电路有限责任公司 | 仿真器***及仿真芯片 |
US9706228B2 (en) * | 2013-10-15 | 2017-07-11 | Qualcomm Incorporated | Support for large numbers of views in multi-layer coding |
EP3001307B1 (en) * | 2014-09-25 | 2019-11-13 | Intel Corporation | Bit shuffle processors, methods, systems, and instructions |
US9952987B2 (en) * | 2014-11-25 | 2018-04-24 | Intel Corporation | Posted interrupt architecture |
US9904548B2 (en) | 2014-12-22 | 2018-02-27 | Intel Corporation | Instruction and logic to perform a centrifuge operation |
US9727353B2 (en) | 2015-10-30 | 2017-08-08 | International Business Machines Corporation | Simultaneously capturing status information for multiple operating modes |
US10761849B2 (en) | 2016-09-22 | 2020-09-01 | Intel Corporation | Processors, methods, systems, and instruction conversion modules for instructions with compact instruction encodings due to use of context of a prior instruction |
CN107193530B (zh) * | 2017-04-28 | 2020-04-24 | 广州酷狗计算机科技有限公司 | 一种生成随机数的方法和装置 |
DE102018208851A1 (de) * | 2018-06-05 | 2019-12-05 | Infineon Technologies Ag | Vorrichtung und Verfahren zum Umwandeln von Eingangsbitfolgen |
CN110968347B (zh) * | 2019-12-02 | 2021-09-17 | 秒针信息技术有限公司 | 一种数据处理的方法及装置 |
CN111209041B (zh) * | 2019-12-31 | 2022-05-17 | Oppo广东移动通信有限公司 | 神经网络处理器、片上***及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6356951B1 (en) * | 1999-03-01 | 2002-03-12 | Sun Microsystems, Inc. | System for parsing a packet for conformity with a predetermined protocol using mask and comparison values included in a parsing instruction |
TW200527283A (en) * | 2003-07-31 | 2005-08-16 | Intel Corp | Renaming for register with multiple bit fields |
TW200627265A (en) * | 2004-10-06 | 2006-08-01 | Sony Computer Entertainment Inc | Bit manipulation method, apparatus and system |
Family Cites Families (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR1587656A (zh) * | 1968-08-01 | 1970-03-27 | ||
FR1590660A (zh) | 1968-08-02 | 1970-04-20 | ||
JPS512771A (zh) | 1974-06-27 | 1976-01-10 | Kanegafuchi Chemical Ind | |
US3982229A (en) * | 1975-01-08 | 1976-09-21 | Bell Telephone Laboratories, Incorporated | Combinational logic arrangement |
US4569016A (en) | 1983-06-30 | 1986-02-04 | International Business Machines Corporation | Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system |
US4785393A (en) | 1984-07-09 | 1988-11-15 | Advanced Micro Devices, Inc. | 32-Bit extended function arithmetic-logic unit on a single chip |
JPS61103241A (ja) | 1984-10-27 | 1986-05-21 | Nec Corp | 情報処理装置 |
JPS6491228A (en) | 1987-09-30 | 1989-04-10 | Takeshi Sakamura | Data processor |
US5129066A (en) * | 1987-09-17 | 1992-07-07 | International Business Machines Corporation | Bit mask generator circuit using multiple logic units for generating a bit mask sequence |
JPH02299082A (ja) | 1989-05-12 | 1990-12-11 | Fujitsu Ltd | 可変長データを処理するプロセッサ |
US5201056A (en) | 1990-05-02 | 1993-04-06 | Motorola, Inc. | RISC microprocessor architecture with multi-bit tag extended instructions for selectively attaching tag from either instruction or input data to arithmetic operation output |
US5193167A (en) | 1990-06-29 | 1993-03-09 | Digital Equipment Corporation | Ensuring data integrity by locked-load and conditional-store operations in a multiprocessor system |
KR100262438B1 (ko) * | 1991-05-08 | 2000-08-01 | 가나이 쓰도무 | 연산장치 및 이것을 사용한 비트필드조작 연산방법 |
JP3247724B2 (ja) | 1991-05-08 | 2002-01-21 | 株式会社日立製作所 | ビットフィールド操作演算装置及びマイクロプロセッサ |
JP2984463B2 (ja) | 1991-06-24 | 1999-11-29 | 株式会社日立製作所 | マイクロコンピュータ |
JP3215085B2 (ja) | 1991-06-24 | 2001-10-02 | 株式会社日立製作所 | 中央処理装置及びマイクロコンピュータ |
JPH0512771A (ja) | 1991-07-08 | 1993-01-22 | Matsushita Electric Ind Co Ltd | 磁気記録再生装置 |
US5414821A (en) * | 1991-12-17 | 1995-05-09 | Unisys Corporation | Method of and apparatus for rapidly loading addressing environment by checking and loading multiple registers using a specialized instruction |
JP3155835B2 (ja) | 1992-09-30 | 2001-04-16 | キヤノン株式会社 | 画像形成方法及び装置ユニット |
US5651121A (en) | 1992-12-18 | 1997-07-22 | Xerox Corporation | Using mask operand obtained from composite operand to perform logic operation in parallel with composite operand |
US5497493A (en) * | 1993-09-30 | 1996-03-05 | Intel Corporation | High byte right-shift apparatus with a register alias table |
US5564056A (en) * | 1994-03-01 | 1996-10-08 | Intel Corporation | Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming |
US5598546A (en) * | 1994-08-31 | 1997-01-28 | Exponential Technology, Inc. | Dual-architecture super-scalar pipeline |
US5704052A (en) * | 1994-11-06 | 1997-12-30 | Unisys Corporation | Bit processing unit for performing complex logical operations within a single clock cycle |
US6643765B1 (en) * | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
US7301541B2 (en) * | 1995-08-16 | 2007-11-27 | Microunity Systems Engineering, Inc. | Programmable processor and method with wide operations |
JP3433588B2 (ja) * | 1995-10-19 | 2003-08-04 | 株式会社デンソー | マスクデータ生成回路及びビットフィールド操作回路 |
US5696711A (en) * | 1995-12-22 | 1997-12-09 | Intel Corporation | Apparatus and method for performing variable precision floating point rounding operations |
US6128725A (en) * | 1997-01-24 | 2000-10-03 | Texas Instruments Incorporated | Microprocessor with an instruction for setting or clearing a bit field |
US5930492A (en) | 1997-03-19 | 1999-07-27 | Advanced Micro Devices, Inc. | Rapid pipeline control using a control word and a steering word |
US6052522A (en) * | 1997-10-30 | 2000-04-18 | Infineon Technologies North America Corporation | Method and apparatus for extracting data stored in concatenated registers |
US7133040B1 (en) * | 1998-03-31 | 2006-11-07 | Intel Corporation | System and method for performing an insert-extract instruction |
US6266769B1 (en) * | 1998-04-30 | 2001-07-24 | Intel Corporation | Conversion between packed floating point data and packed 32-bit integer data in different architectural registers |
US6263426B1 (en) * | 1998-04-30 | 2001-07-17 | Intel Corporation | Conversion from packed floating point data to packed 8-bit integer data in different architectural registers |
US5995122A (en) * | 1998-04-30 | 1999-11-30 | Intel Corporation | Method and apparatus for parallel conversion of color values from a single precision floating point format to an integer format |
US6754687B1 (en) | 1999-11-12 | 2004-06-22 | Pts Corporation | Methods and apparatus for efficient cosine transform implementations |
US6801625B1 (en) * | 1999-12-08 | 2004-10-05 | Intel Corporation | Apparatus and method for stripping parity bits from an input stream |
US8874882B1 (en) * | 2000-03-30 | 2014-10-28 | Intel Corporation | Compiler-directed sign/zero extension of a first bit size result to overwrite incorrect data before subsequent processing involving the result within an architecture supporting larger second bit size values |
US6757771B2 (en) * | 2000-08-09 | 2004-06-29 | Advanced Micro Devices, Inc. | Stack switching mechanism in a computer system |
US6807622B1 (en) * | 2000-08-09 | 2004-10-19 | Advanced Micro Devices, Inc. | Processor which overrides default operand size for implicit stack pointer references and near branches |
US6877084B1 (en) * | 2000-08-09 | 2005-04-05 | Advanced Micro Devices, Inc. | Central processing unit (CPU) accessing an extended register set in an extended register mode |
US7237097B2 (en) * | 2001-02-21 | 2007-06-26 | Mips Technologies, Inc. | Partial bitwise permutations |
US6889312B1 (en) * | 2001-04-02 | 2005-05-03 | Advanced Micro Devices, Inc. | Selective zero extension based on operand size |
US20020188830A1 (en) | 2001-06-01 | 2002-12-12 | Brian Boles | Bit replacement and extraction instructions |
US6968446B1 (en) * | 2001-08-09 | 2005-11-22 | Advanced Micro Devices, Inc. | Flags handling for system call instructions |
JP3857614B2 (ja) | 2002-06-03 | 2006-12-13 | 松下電器産業株式会社 | プロセッサ |
CN1271523C (zh) * | 2002-08-21 | 2006-08-23 | 先进数字芯片株式会社 | 具有扩展指令的中央处理器 |
US7353371B2 (en) * | 2002-12-05 | 2008-04-01 | Intel Corporation | Circuit to extract nonadjacent bits from data packets |
US7539714B2 (en) * | 2003-06-30 | 2009-05-26 | Intel Corporation | Method, apparatus, and instruction for performing a sign operation that multiplies |
US7321916B2 (en) * | 2003-07-28 | 2008-01-22 | Intel Corporation | Methods and apparatus for extracting integer remainders |
US7095897B2 (en) * | 2003-12-19 | 2006-08-22 | Intel Corporation | Zero length or run length coding decision |
US7529924B2 (en) * | 2003-12-30 | 2009-05-05 | Intel Corporation | Method and apparatus for aligning ciphered data |
JP2006127460A (ja) | 2004-06-09 | 2006-05-18 | Renesas Technology Corp | 半導体装置、半導体信号処理装置、およびクロスバースイッチ |
US7315937B2 (en) * | 2004-10-01 | 2008-01-01 | Mips Technologies, Inc. | Microprocessor instructions for efficient bit stream extractions |
US7558724B2 (en) * | 2005-04-19 | 2009-07-07 | Hewlett-Packard Development Company, L.P. | Operation region describing a virtual device |
US20060259737A1 (en) | 2005-05-10 | 2006-11-16 | Telairity Semiconductor, Inc. | Vector processor with special purpose registers and high speed memory access |
US20090006822A1 (en) | 2006-01-27 | 2009-01-01 | Freescale Semiconductor , Inc. | Device and Method for Adding and Subtracting Two Variables and a Constant |
US7529918B2 (en) * | 2006-07-21 | 2009-05-05 | Broadcom Corporation | System and method for efficiently performing bit-field extraction and bit-field combination operations in a processor |
US9069547B2 (en) * | 2006-09-22 | 2015-06-30 | Intel Corporation | Instruction and logic for processing text strings |
US8538012B2 (en) * | 2007-03-14 | 2013-09-17 | Intel Corporation | Performing AES encryption or decryption in multiple modes with a single instruction |
US8538015B2 (en) * | 2007-03-28 | 2013-09-17 | Intel Corporation | Flexible architecture and instruction for advanced encryption standard (AES) |
CN101446891A (zh) * | 2007-11-27 | 2009-06-03 | 上海高性能集成电路设计中心 | 一种高性能微处理器结构寄存器保留恢复指令的实现方法 |
JP2010255319A (ja) | 2009-04-27 | 2010-11-11 | Ym Kogyo Kk | 手摺装置 |
US8230172B2 (en) * | 2009-12-03 | 2012-07-24 | Intel Corporation | Gather and scatter operations in multi-level memory hierarchy |
US9003170B2 (en) | 2009-12-22 | 2015-04-07 | Intel Corporation | Bit range isolation instructions, methods, and apparatus |
WO2013095554A1 (en) | 2011-12-22 | 2013-06-27 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of consecutive integers in numerical order |
WO2013095613A2 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Apparatus and method of mask permute instructions |
-
2009
- 2009-12-22 US US12/645,307 patent/US9003170B2/en active Active
-
2010
- 2010-11-15 JP JP2010255319A patent/JP5456643B2/ja active Active
- 2010-11-17 TW TW099139490A patent/TWI502493B/zh active
- 2010-12-09 DE DE102010053967A patent/DE102010053967A1/de not_active Withdrawn
- 2010-12-21 CN CN201811018767.1A patent/CN109375950B/zh active Active
- 2010-12-21 CN CN201010620155.7A patent/CN102109977B/zh active Active
- 2010-12-21 CN CN201410674064.XA patent/CN104461461B/zh active Active
-
2014
- 2014-01-08 JP JP2014001946A patent/JP6134947B2/ja active Active
- 2014-12-12 US US14/568,812 patent/US10372455B2/en active Active
- 2014-12-12 US US14/568,754 patent/US10579380B2/en active Active
- 2014-12-12 US US14/568,725 patent/US10579379B2/en active Active
-
2015
- 2015-11-09 JP JP2015219702A patent/JP6375280B2/ja active Active
-
2018
- 2018-03-14 US US15/921,134 patent/US10656947B2/en active Active
- 2018-07-23 JP JP2018138039A patent/JP6569969B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6356951B1 (en) * | 1999-03-01 | 2002-03-12 | Sun Microsystems, Inc. | System for parsing a packet for conformity with a predetermined protocol using mask and comparison values included in a parsing instruction |
TW200527283A (en) * | 2003-07-31 | 2005-08-16 | Intel Corp | Renaming for register with multiple bit fields |
TW200627265A (en) * | 2004-10-06 | 2006-08-01 | Sony Computer Entertainment Inc | Bit manipulation method, apparatus and system |
Also Published As
Publication number | Publication date |
---|---|
CN102109977B (zh) | 2015-06-24 |
US10372455B2 (en) | 2019-08-06 |
US20150100760A1 (en) | 2015-04-09 |
JP6375280B2 (ja) | 2018-08-15 |
JP6569969B2 (ja) | 2019-09-04 |
US10579379B2 (en) | 2020-03-03 |
US20110153997A1 (en) | 2011-06-23 |
JP2018160288A (ja) | 2018-10-11 |
US20180203698A1 (en) | 2018-07-19 |
CN104461461A (zh) | 2015-03-25 |
JP2014081953A (ja) | 2014-05-08 |
CN109375950A (zh) | 2019-02-22 |
US20150143084A1 (en) | 2015-05-21 |
US9003170B2 (en) | 2015-04-07 |
JP2016026365A (ja) | 2016-02-12 |
CN102109977A (zh) | 2011-06-29 |
JP2011134304A (ja) | 2011-07-07 |
JP5456643B2 (ja) | 2014-04-02 |
CN104461461B (zh) | 2018-10-09 |
TW201137741A (en) | 2011-11-01 |
US20150100761A1 (en) | 2015-04-09 |
US10579380B2 (en) | 2020-03-03 |
JP6134947B2 (ja) | 2017-05-31 |
DE102010053967A1 (de) | 2011-07-14 |
CN109375950B (zh) | 2023-06-20 |
US10656947B2 (en) | 2020-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI502493B (zh) | 位元範圍隔離指令、方法及裝置 | |
JP5736028B2 (ja) | 3個のソースオペランドを加算する加算命令 | |
JP6509181B2 (ja) | 方法、プロセッサ、及び、システム | |
TWI517037B (zh) | 用於使用前綴之指令集架構指令的條件式執行支援技術 | |
US10649774B2 (en) | Multiplication instruction for which execution completes without writing a carry flag | |
EP4020184A1 (en) | Instructions to convert from fp16 to bf8 | |
TW201333815A (zh) | 使用前置碼之指令集架構(isa)指令用的旗標無修改擴充技術 |