TWI517034B - 不讀取進位旗標地完成執行之旋轉指令 - Google Patents
不讀取進位旗標地完成執行之旋轉指令 Download PDFInfo
- Publication number
- TWI517034B TWI517034B TW099142779A TW99142779A TWI517034B TW I517034 B TWI517034 B TW I517034B TW 099142779 A TW099142779 A TW 099142779A TW 99142779 A TW99142779 A TW 99142779A TW I517034 B TWI517034 B TW I517034B
- Authority
- TW
- Taiwan
- Prior art keywords
- bit
- flag
- instruction
- rotation
- processor
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/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/30098—Register arrangements
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)。旋轉指令允許裝置來旋轉資料。
一種已知之旋轉指令為ROR,亦即右旋指令。該ROR指令係描述於英特爾(Intel)架構軟體開發者手冊第二輯:指令集參考,序號:243192,1999。
ROR指令除了造成旋轉外,也讀取進位旗標。讀取此種算術旗標傾向於耗用額外時間。此外,讀取進位旗標的需要傾向於增加串列化,其可能傾向於限制並列處理及/或推測執行。
此外,ROR指令也以目的運算元覆寫來源運算元。來源運算元係於ROR指令執行完成時催毀。於若干應用,可能需要額外資料移動指令或運算來保有該來源運算元。此等資料移動指令或運算傾向於耗用額外時間。
由於快速地有效地處理資料的重要性,新穎不同的旋轉指令為有用。
依據本發明之一實施例,係特地提出一種方法,其包含有下列步驟:接收一旋轉指令,該旋轉指令指示一來源運算元及一旋轉量;儲存一結果於由該旋轉指令所指示之一目的運算元中,該結果具有以該旋轉量所旋轉之該來源運算元;及不讀取一進位旗標地完成該旋轉指令的執行。
經由參考後文詳細說明及用來舉例說明本發明之實施例之附圖將可最明白瞭解本發明。附圖中:
第1圖為一種指令處理裝置之具體實施例之方塊圖。
第2圖為一種處理一旋轉指令實施例之方法之實施例之方塊流程圖。
第3圖顯示一種EFLAGS暫存器表示適當旗標暫存器且具有一進位旗標(CF)及溢位旗標(OF)之一特定具體實施例。
第4圖顯示一種適當32位元通用暫存器集合之一個特定具體實施例。
第5圖顯示一種適當64位元通用暫存器集合之一個特定具體實施例。
第6圖顯示表示一旋轉指令之特定具體實施例之RORX指令之描述。
第7圖顯示表示旋轉指令之一特定具體實施例之RORX指令之虛擬碼之運算。
第8圖為適當電腦系統之第一具體實施例之方塊圖。
第9圖為適當電腦系統之第二具體實施例之方塊圖。
於後文說明中,陳述多個特定細節,諸如指令實施規格、資料類型、暫存器類型、暫存器配置、處理器類型、系統組態等。但須瞭解本發明之實施例可未使用此等特定細節來實施。於其它情況下,眾所周知之電路、結構及技術並未詳細顯示以免模糊了對本文說明之瞭解。
實施例係有關一種指令處理裝置其具有一執行單元來執行一旋轉指令且不讀取進位旗標地完成旋轉指令的執行。
第1圖為一種指令處理裝置100之具體實施例之方塊圖。於一或多個實施例中,該指令處理裝置可為通用處理器。該處理器可為多種複雜指令集運算(CISC)處理器、各種精簡指令集運算(RISC)處理器、多種極長指令字組(VLIW)處理器、多種其混成類型、或全然其它類型之處理器。於一或多個實施例中,處理器可為由加州聖塔克萊拉市英特爾公司所製造之該型通用處理器但非必要。得自英特爾公司之通用處理器之特定實例包括但非限於英特爾CoreTM i7處理器極端(Extreme)版本,英特爾CoreTM i7處理器,英特爾CoreTM i5處理器,英特爾CoreTM 2極端處理器,英特爾CoreTM 2四元組(Quad)處理器,英特爾CoreTM 2雙元(Duo)處理器,英特爾奔騰(Pentium®)處理器,及英特爾賽
揚(Celeron®)處理器。
另外,指令處理裝置可為特殊用途處理器。適當之特殊用途處理器之代表性實例包括但非限於網路處理器、通訊處理器、加密處理器、圖形處理器、共處理器、嵌入式處理器、及數位信號處理器(DSP),僅舉出數個實例。此等處理器也可全然基於CISC、RISC、VLIW、其混成類型、或其它類型處理器。
又有其它實施例中,指令處理裝置可為控制器(例如微控制器)或其它類型可處理指令之邏輯電路。於又有其它實施例中,指令處理裝置可為指令執行加密電路。
再度參考第1圖,於使用期間,指令處理裝置可接收旋轉指令102之一實施例。舉例言之,旋轉指令可接收自記憶體或接收自軟體。旋轉指令可表示由指令處理裝置所辨識之機器指令或控制信號。指令處理裝置可具有特定或特殊電路或其它邏輯電路(例如軟體組合硬體及/或韌體),其可操作來回應於及/或如旋轉指令之載明而執行旋轉運算,且回應於或由於機器指令而將旋轉所得結果儲存。
指令處理裝置之具體實施例包括一指令解碼器104。該解碼器可接收及解碼旋轉指令。該解碼器可產生及輸出一或多微運算、微碼載入點、微指令、其它指令、或其它控制信號,該等信號係自原先的旋轉指令所反映或導出。該解碼器可使用不同機構實施。適當機構之實例包括但非限於微碼唯讀記憶體(ROM)、詢查表、硬體執行、可規劃邏輯陣列(PLA)等。
解碼器並非為該裝置之必要組件。於一或多個實施例中,該裝置另外可具有一指令擬真器、一指令轉譯器、一指令語法器、一指令解譯器、或其它指令變換邏輯電路。技藝界已知多種不同類型的指令擬真器、指令語法器、指令轉譯器等。指令變換邏輯電路可接收該旋轉指令,將該旋轉指令擬真、轉譯、語法分析、解譯或以其它方式變換,及輸出與該原先旋轉指令相對應之一個或多個指令或控制信號。指令變換邏輯電路可於軟體、硬體、韌體或其組合實施。於某些情況下,部分或全部指令變換邏輯電路可位在帶有指令處理裝置之其餘部分的晶粒外,諸如分開晶粒或於系統記憶體。於若干情況下,指令處理裝置可具有解碼器及指令變換邏輯電路。
再度參考第1圖,指令處理裝置包括一執行單元106。舉例言之,該執行單元可包括一算術邏輯單元,或可執行旋轉運算之其它類型邏輯單元。該執行單元包括一旋轉單元108。不同類型之旋轉單元諸如筒形旋轉器為技藝界所已知。本發明並未限於任何已知類型之旋轉電路或旋轉單元。
於該具體實施例中,執行單元係耦接或以其它方式而與解碼器之一輸出端通訊。「耦接」一詞表示兩個或多個元件係直接電氣接觸或電氣連接。但「耦接」也表示兩個或多個元件並未彼此直接連結,但仍然協力合作或彼此互動(例如透過一介入組件)。舉個實例,解碼器及執行單元可透過介入的選擇性緩衝器或其它或技藝界已知可能耦接於解碼器與執行單元間之其它組件而彼此耦接。由於解碼器解
碼旋轉指令,執行單元可接收反映自或導自該旋轉指令之一個或多個微運算、微碼載入點、微指令、其它指令、或其它控制信號。另外,執行單元可接收及執行來自於前述指令變換邏輯電路之指令或控制信號。
於一或多個實施例中,執行單元由於旋轉指令102指示來源運算元(SRC)及旋轉量而可運作來儲存一結果於由該旋轉指令所指示之一目的運算元(DEST),其中該結果具有以該旋轉量所旋轉之該來源運算元。於一或多個實施例中,旋轉指令可為右旋指令,其將資料向右旋轉。旋轉超出最低有效位元(LSB)之位元可透過最高有效位元(MSB)旋轉或翹曲。另外,旋轉指令可為左旋指令。於旋轉期間,資料並未損失而只是旋轉或重排。執行單元包括可運作來執行導自該旋轉指令之指令或其它控制信號且於該來源指令上執行旋轉量之旋轉運算的電路或其它執行邏輯電路(例如軟體組合硬體及/或韌體)。
旋轉指令可內隱地指示及/或外顯地載明(例如透過一或多個專用欄位或位元集合)該來源運算元及目的運算元及旋轉量。適當運算元來源及旋轉量之實例包括暫存器、記憶體、指令立即值(immediate)、及其組合。於多個實施例中,來源運算元及目的運算元可為16位元、32位元、或64位元運算元,但非必要。
於一或多個實施例中,部分或全部來源運算元及目的運算元可儲存於暫存器集合110之暫存器。該暫存器集合可為暫存器列組之一部分,連同可能的其它暫存器諸如狀態暫存器、旗標暫存器等。暫存器可為可用來儲存資料之儲存位置或裝置。暫存器集合經常於實體上係位在帶有執行單元的晶粒上。暫存器自處理器外側或自程式師面向為可見。舉例言之,指令可載明儲存於暫存器之運算元。多種不同類型之暫存器為適合,只要其可儲存及提供如此處所述之資料即可。暫存器可經重新命名或可未經重新命名。適當暫存器之實例包括但非限於專用實體暫存器、使用暫存器重新命名之動態分配實體暫存器、專用實體暫存器與動態分配實體暫存器之組合等。另外,來源運算元及目的運算元中之一者或多者可儲存於暫存器以外之儲存位置,諸如系統記憶體位置。
再度參考舉例說明,處理器或其它指令執行裝置可包括多數算術旗標114。該等算術旗標包括至少一進位旗標116。於一或多個實施例中,該等旗標可包括於一暫存器112,諸如狀態暫存器、旗標暫存器、或條件碼暫存器(CCR)。
處理器及多種其它類型之邏輯裝置經常利用算術旗標。旗標可包括經常係於暫存器之一或多個位元。旗標無需具有位元於一暫存器。旗標可包括正反器電路。位元旗標可儲存二進制值,諸如二進制1或二進制0。多數位元可儲存一二進制值序列或一碼。此等二進制值或二進制值序列可表示不同的旗標值。此等旗標值可具有處理器或其它邏輯裝置所指定的或所瞭解的意義。旗標可用於各種不同目的。某些情況下,旗標可用於紀錄狀態、情況、條件、或於處理器或其它邏輯裝置內部的運算結果。
進位旗標為常用於處理器及其它邏輯裝置之眾所周知的算術旗標類型。該進位旗標可用來指示算術運算是否有溢位。舉例言之,若於先前計算期間有溢位則進位旗標可具有第一值,或若無此種溢位則進位旗標可具有第二值。進位旗標可用來指示算術運算已經產生幅度大於給定暫存器中之位元數目或儲存位置所能表示的結果。舉例言之,於一或多個實施例中,若算術運算產生結果中的最高有效位元的進位或借位,則該進位旗標可為單一位元可設定為1,否則該進位旗標設定為0。進位旗標經常係用於算術運算諸如加法及減法。
於一或多個實施例中,算術旗標也包括溢位旗標。溢位旗標為處理器及其它邏輯裝置中常見的另一種眾所周知的算術旗標類型。溢位旗標常為暫存器的單一位元。溢位旗標粗略係與進位旗標之一標示符號版本相對應。當於運算中發生算術溢位時指示溢位。當最高有效位元(MSB)被設定或清除時設定溢位旗標。若結果為過大的正數或過小的負數,則設定溢位旗標來配合目的運算元。溢位旗標可用來指示先前運算元結果導致的標符號數目,其符號係與產生該數目的運算元符號不一致。舉例言之,當兩個正數相加產生負數結果時,或當兩個負數相加產生正結果時可設定溢位旗標。完全瞭解進位旗標及溢位旗標的功能及使用對於瞭解此處所揭示之實施例並非真正具有關鍵重要性。
於一或多個實施例中,該等算術旗標也可包括一或多個其它類型的算術旗標。有時含括於處理器或若干其它邏輯裝置之其它算術旗標包括一符號旗標、一零位旗標、一輔助進位旗標、或一同位旗標、或其組合。並非全部此等旗標皆係含括於全部處理器或其它邏輯裝置。此外,此等不同的旗標有時使用不同的名稱。
於一或多個實施例中,該執行單元可運作來不讀取進位旗標地完成旋轉指令的執行。此種構想係以貫穿附圖箭頭的大「X」表示。
於一或多個實施例中,執行單元可運作而不讀取溢位旗標地完成旋轉指令的執行。於一或多個實施例中,該執行單元可運作來不寫入進位旗標或溢位旗標地完成指令的執行。於一或多個實施例中,該執行單元可運作而不讀取進位旗標、溢位旗標、符號旗標、零位旗標、輔助進位旗標、或同位旗標中之任一者地完成旋轉指令的執行。於一或多個實施例中,該執行單元可運作而不讀取或不寫入進位旗標、溢位旗標、符號旗標、零位旗標、輔助進位旗標、或同位旗標中之任一者地完成旋轉指令的執行。於一或多個實施例中,該執行單元可不讀取或不寫入任何算術旗標地完成旋轉指令的執行。另外,於一或多個實施例中,該執行單元可運作來不讀取任何算術旗標即寫入全部算術旗標。
為了避免遮掩描述,已經顯示及說明相當簡單的指令處理裝置。但須瞭解其它實施例可具有多個執行單元。例如,該裝置可包括多個不同類型執行單元例如邏輯單元、算術邏輯單元(ALU)、算術單元、整數單元等。此等單元中之至少一者可回應於如此處揭示之旋轉指令之一實施例。又其它實施例可具有多數核心、邏輯處理器、或執行引擎。可運作來執行如此處揭示之旋轉指令之執行單元,可含括於該等核心、邏輯處理器或執行引擎中之至少一者、至少二者、大部分或全部內。
指令處理裝置也選擇性地包括一或多個其它眾所周知之組件。例如,其它組件可選擇性地包括指令提取邏輯電路、預解碼邏輯電路、排程邏輯電路、重新排序邏輯電路、分支預測邏輯電路、報廢邏輯電路、暫存器重新命名邏輯電路等或其若干組合。此等組件可以習知方式實施,或以熟諳技藝人士顯然易知之方式基於本文揭示做微小調整實施。此等組件之進一步說明並非瞭解此處實施例所必需,但若有所需,進一步說明於公開參考文獻中方便易得。技藝界已知此等組件於文詞上有多項不同組合及組態。本發明之範圍並未限於任何此等組合或組態。實施例可有或可無此等額外組件而實施。
第2圖為一種處理旋轉指令之實施例之方法220之實施例之方塊流程圖。於多個實施例中,該方法可藉通用處理器、特用處理器(例如圖形處理器或數位信號處理器)、硬體加速器(例如加密加速器)、或其它類型邏輯裝置或指令處理裝置執行。
旋轉指令可於方塊221接收。旋轉指令可指示一來源運算元及一旋轉量。
於方塊222,結果可儲存於由該旋轉指令所指示之一目的運算元。結果可具有以該旋轉量所旋轉之該來源運算元。
於方塊223,可完成旋轉指令的執行。於一或多個實施例中,該旋轉指令的執行可不讀取一進位旗標地完成。
於一或多個實施例中,執行單元可運作而不讀取溢位旗標地完成旋轉指令的執行。於一或多個實施例中,該執行單元可運作來不寫入進位旗標或溢位旗標地完成指令的執行。於一或多個實施例中,該執行單元可運作而不讀取進位旗標、溢位旗標、符號旗標、零位旗標、輔助進位旗標、或同位旗標中之任一者地完成旋轉指令的執行。於一或多個實施例中,該執行單元可運作而不讀取或不寫入進位旗標、溢位旗標、符號旗標、零位旗標、輔助進位旗標、或同位旗標中之任一者地完成旋轉指令的執行。於一或多個實施例中,該執行單元可不讀取或不寫入任何算術旗標地完成旋轉指令的執行。另外,於一或多個實施例中,該執行單元可運作來不讀取任何算術旗標即寫入全部算術旗標。
不讀取進位旗標或於某些情況下,不讀取進位旗標或溢位旗標,或於某些情況下,不讀取任何算術旗標地完成旋轉指令的執行可協助提高旋轉指令的執行速度。進位旗標的讀取耗時。此外,即使讀取進位旗標及其它算術旗標經常未被旋轉指令所使用。如此,由於此等旗標之讀取耗時,且由於經常此等旗標並未使用,故藉由未讀取進位旗標及/或進位旗標及一或多個其它旗標可提高旋轉指令之執行速度。
此外,不讀取進位旗標或於某些情況下,不讀取進位旗標或溢位旗標,或於某些情況下,不讀取任何算術旗標地完成旋轉指令的執行也有助於減少因旗標之相依性所造成的串列化。減少此等串列化允許更佳地探討並列處理、脫序執行及/或推測執行,有助於提高多種演繹法則之速度。
旋轉指令經常係含括於具有其它指令來修改該等旗標之演繹法則。舉例言之,旋轉指令經常係含括於具有邏輯指令諸如及(AND)指令、互斥或(XOR)指令等之演繹法則。此等邏輯指令經常更新旗標。已知之ROR指令可讀取該等旗標,因此對旗標具有相依性。結果,ROR指令可能需要等候前一個邏輯指令的執行完成才可執行或至少才能完全執行。如此可能因旗標的相依性造成串列化。注意如此並非由於資料的相依性造成串列化,反而係由於旗標的相依性。若干演繹法則諸如雜湊及加密演繹法則傾向於使用相對大比例的邏輯指令及旋轉指令。據此,此等演繹法則的旗標相依性串列化數量相當高。
此等串列法傾向於妨礙並列處理、脫序執行、及/或推測執行。例如,在邏輯指令之前,脫序機器無法執行已知之ROR指令,即使不具資料相依性亦如此。如此傾向於減慢此等演繹法則的執行。
但如前文討論,於一或多個實施例中,旋轉指令可不讀取進位旗標地完成:或於某些情況下,可不讀取進位旗標或溢位旗標,或於某些情況下,不讀取任何算術旗標地完成。如此協助減少對旗標的相依性,協助減少演繹法則的串列化,此處該旋轉指令係連同邏輯指令或其它修改旗標的指令使用。結果,可獲得並列處理、脫序執行及/或推測執行之較高優點。如此傾向於提高雜湊、加密、及其它演繹法則之速度及/或效率。
於一或多個實施例中,旋轉指令可具有運算元定義,其進一步協助提高各種演繹法則之執行速度。回憶起已知ROR指令造成來源運算元係以目的運算元覆寫。結果,除非來源運算元被移除(例如使用MOV或其它移除指令移除),否則或保留,ROR指令的執行將造成來源運算元被目的運算元所覆寫。換言之,來源運算元將被摧毀。但於某些演繹法則,可能需要來源運算元超出旋轉指令的執行。如此,此等演繹法則經常包括額外MOV或其它移除指令,或其它類型指令來保留來源運算元。於極端情況下,此等額外指令的數目可能相當大。此等額外指令需要被解碼、可能需要緩衝、及執行。
於一或多個實施例中,旋轉指令可外顯地載明一來源運算元及外顯地載明一目的運算元。較佳,如此允許不同暫存器或其它儲存位置對來源運算元及目的運算元外顯地載明以防來源運算元被目的運算元所覆寫。結果,來源運算元及目的運算元於旋轉指令完成時皆可用。如此可能具有若干可能的優點。一者,如此協助避免資料移除指令或其它類型指令來保留來源運算元。優異地,如此協助減少需要被解碼、可能被緩衝、及執行的指令數目。另一方面,若欲使用解碼串流緩衝器(DSB)等,減少指令數目可協助允許解碼指令迴圈帶入DSB內部。較佳,如此避免速度限制性解碼運算而提高處理速度。
旋轉指令傾向於大量使用的兩區為雜湊及加密。過去數年間雜湊及加密二者的使用已經顯著增加。網際網路及其它網路異動處理的增加需要藉加密保全。結果,專用加密加速器、嵌入式加密處理器、支援多個連結之伺服器可極為經常地執行此等加密演繹法則。如此,此等裝置之效能顯著受到可執行此等加密演繹法則之該等裝置之速度及/或效率的影響。桌上型電腦及膝上型電腦及其它裝置,雖然或許較不常見但也要求執行此等加密演繹法則。此外,於若干雜湊及加密演繹法則中旋轉指令的比例相當高。舉例言之,於有些雜湊及加密演繹法則,約10%或以上指令可為旋轉指令。結果,旋轉指令執行速度的改良對演繹法則的總執行速度有顯著影響。當然旋轉指令具有超越雜湊及加密學之寬廣多項其它用途(例如資料壓縮、解壓縮、資料拌碼、解拌碼等)。
現在參考旋轉量,旋轉指令之多個不同實施例以多種不同方式載明旋轉量。於一或多個實施例中,旋轉指令可透過立即值指示或載明旋轉量。立即值表示直接編碼作為旋轉指令之一部分或含於旋轉指令內之一運算元。立即值位元組值經常以imm8表示。
至於另一選項,於一或多個實施例中,旋轉指令可內隱地指示具有旋轉量之第二來源運算元。舉例言之,旋轉量可儲存於內隱暫存器或其它儲存位置。於一個特定具體實施例中,內隱暫存器可為稱作為CL之通用暫存器。
舉又另一實例,於一或多個實施例中,旋轉指令可外顯地載明具有該旋轉量之第二來源運算元,諸如暫存器。例如於一或多個實施例中,旋轉指令可旋轉性地使用VEX編碼。VEX編碼允許指令外顯地載明一額外運算元。舉一個特定實例,旋轉指令載明運算DEST=ROTATE(SRC by SRC2)。若有所需,VEX之額外說明可得自英特爾64及IA-32架構軟體開發者手冊第2A輯:指令集參考,A-M,序號:253666-032US,2009年9月。
第3圖顯示表示適當旗標暫存器之一個特定實施例之EFLAGS暫存器330。當然並不需要此種特定暫存器及此等特定旗標。
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暫存器所接續及延長。RFLAGS的較低32位元係與EFLAGS相同。於FLAGS、EFLAGS、及RFLAGS暫存器中進位旗標(CF)各自為位元0及溢位旗標(OF)為位元11。若有所需,EFLAGS/RFLAGS暫存器及進位旗標之額外說明可參考英特爾64及IA-32架構軟體開發者手冊第1輯:指令集參考,A-M,序號:253666-032US,2009年9月。
於一或多個實施例中,旋轉指令可於一通用暫存器集合中指示來源運算元及/或目的運算元。為了進一步顯示某些構想,將討論於多個x86架構處理器中可用之適當通用暫存器之具體實施例,但此等特定暫存器當然並非必要。
第4圖顯示適當32位元通用暫存器集合432之一個特定具體實施例。該32位元暫存器集合包括8個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。
第5圖顯示適當64位元通用暫存器集合534之另一個特定具體實施例。該64位元暫存器集合包括16個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。
若有所需,通用暫存器之額外說明可參考英特爾64及IA-32架構軟體開發者手冊第1輯:指令集參考,A-M,序號:253666-032US,2009年9月。此等特定暫存器僅為實例而非限制性。
根據一個特定具體實施例,旋轉指令為RORX,亦即不影響旗標的右旋邏輯指令。RORX指令為二運算元指令,兩個運算元皆係外顯運算元。編碼RORX指令之指令運算元顯示於表1。
運算元1係外顯地載明且對32位元模式指令可在32位元通用暫存器(reg),或對64位元模式指令可在64位元通用暫存器。運算元1允許寫入(W)。
運算元2係外顯地載明且對32位元模式指令可在32位元通用暫存器(r)、或記憶體(m),或對64位元模式指令可在64位元通用暫存器或記憶體。運算元2允許讀取(R)。
運算元3及運算元4無法用於RORX。RORX具有立即值位元組(imm8)來載明旋轉量。
第6圖顯示表示旋轉指令之一特定具體實施例之RORX指令之描述。16位元運算元尺寸目前尚未編碼,但可編碼。
第7圖顯示表示旋轉指令之一特定具體實施例之RORX指令於虛擬碼之運算。SRC係指外顯載明之來源運算元,DEST係指目的運算元,imm8係指用來載明旋轉量之立即值位元組,符號「>>」表示右移,符號「<<」表示左移,符號「|」表示逐位元或(OR)運算。如此顯示旋轉如何考慮兩個移位。
並無旗標受RORX影響。對RORX並無SIMD浮點例外。若有所需,運算碼(opcodes)、編碼、REX、及VEX前綴詞之進一步說明可參考英特爾64及IA-32架構軟體開發者手冊第2A輯:指令集參考,A-M,序號:253666-032US,2009年9月。
一個或多個實施例包括一種製造物品,其包括一實體機器可接取及/或機器可讀取媒體其上儲存有旋轉指令,該等旋轉指令若藉一機器(例如執行單元或處理器)執行時造成資料旋轉運算及不讀取一進位旗標地完成執行。該實體媒體可包括一或多種固體材料。媒體可包括一種機制,該機制提供例如儲存可藉該機器接取形式之資訊。舉例言之,媒體可選擇性地包括可錄式媒體,例如軟碟、光學儲存媒體、光碟、CD-ROM、磁碟、磁光碟、唯讀記憶體(ROM)、可規劃ROM(PROM)、可抹除及可規劃ROM(EPROM)、電性可抹除及可規劃ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、及其組合。
適當機器包括但非限於執行單元、通用處理器、特用處理器(例如圖形處理器及加密處理器)、加密加速器、網路通訊處理器、電腦系統、網路裝置、數據機、個人數位助理器(PDA)、行動電話、及帶有一個或多個執行單元之寬廣多種其它電子裝置等等,此處僅列舉少數實例。
又有其它實施例係有關電腦系統、嵌入式系統、或具有執行單元及/或執行此處所揭示之方法之其它電子裝置。
第8圖為適當電腦系統801之第一具體實施例之方塊圖。電腦系統包括一處理器800。處理器包括可執行至少一個旋轉指令802之至少一個執行單元806。
處理器係透過匯流排(例如前端匯流排)或其它互連結構880而耦接至一晶片組881。互連結構可用來透過晶片組於處理器與系統內之其它組件間傳輸資料信號。
晶片組包括稱作為記憶體控制器中樞(MCH)882之一系統邏輯晶片。MCH係耦接至前端匯流排或其它互連結構880。
記憶體886係耦接至MCH。於多個實施例中,記憶體可包括隨機存取記憶體(RAM)。DRAM為用於部分但非全部電腦系統之一類型RAM之實例。如圖所示,記憶體可用來儲存指令887,諸如一個或多個旋轉指令及資料888。
組件互連結構885也耦接MCH。於一或多個實施例中,該組件互連結構可包括一個或多個周邊組件互連結構快速(PCIe)介面。組件互連結構允許其它組件透過該晶片組而耦接至系統之其餘部分。此等組件之一個實例為圖形晶片組或其它圖形裝置,但為選擇性並非必要。
晶片組也包括輸入/輸出(I/O)控制器中樞(ICH)884。ICH係透過中樞介面匯流排或其它互連結構883而耦接至MCH。於一或多個實施例中,匯流排或其它互連結構883可包括一直接媒體介面(DMI)。
一資料儲存裝置889耦接至該ICH。於多個實施例,該資料儲存裝置包括硬碟機、軟碟機、CD-ROM裝置、快閃記憶體裝置等、或其組合。
第二組件互連結構890也耦接ICH。於一或多個實施例中,該第二組件互連結構可包括一個或多個周邊組件互連結構快速(PCIe)介面。該第二組件互連結構允許各類型組件透過晶片組而耦接至系統其餘部分。
串列擴充埠891也耦接ICH。於一或多個實施例中,串列擴充埠可包括一個或多個通用串列匯流排(USB)埠。串列擴充埠允許多種其它類型之輸入/輸出裝置透過晶片組而耦接至系統其餘部分。
其它組件之若干具體實施例可選擇性地耦接ICH包括但非限於音訊控制器、無線收發器、及使用者輸入裝置(例如鍵盤、滑鼠)。
網路控制器也耦接至ICH。網路控制器可允許系統耦接網路。
於一或多個實施例中,電腦系統可執行得自華盛頓州里德蒙市微軟公司之視窗作業系統之一版本。另外,可使用其它作業系統例如UNIX、Linux、或嵌入式系統。
如此只屬適當電腦系統之一個特定實例。例如於一或多個替代實施例中,處理器可具有多個核心。舉另一個實例,於一或多個替代實施例中,MCH 882可實體上於晶粒上整合處理器800,及該處理器可直接透過整合型MCH而耦接記憶體886。舉個實例,於一或多個替代實施例中,其它組件可於晶粒上與處理器組合,諸如來提供單晶片系統(SoC)設計。又另一個實例,於一或多個其它實施例中,電腦系統可具有多個處理器。
第9圖為適當電腦系統901之第二具體實施例之方塊圖。該第二具體實施例與緊接前述的第一電腦系統實例具有若干類似性。為求清晰,討論將傾向於強調差異部分而未重複全部類似之處。
類似前述第一具體實施例,該電腦系統包括一處理器900,及具有一I/O控制器中樞(ICH) 984之一晶片組981。也類似第一具體實施例,該電腦系統包括耦接晶片組之一第一組件互連結構985、耦接該ICH之一第二組件互連結構990、耦接該ICH之一串列擴充埠991、耦接該ICH之一網路控制器992、及耦接該ICH之一資料儲存裝置989。
於此第二實施例中,處理器900為多核心處理器。該多核心處理器包括處理器核心994-1至994-M,此處M可為等於或大於2之整數(例如2、4、7或以上)。各個核心可包括至少一個執行單元,該執行單元可執行此處揭示之至少一個指令實施例。如圖所示,核心-1包括快取記憶體995(例如L1快取)。其它核心各自可類似地包括一專用快取記憶體。該等處理器核心可於單一積體電路(IC)晶片上實施。
處理器也包括至少一個共享快取記憶體996。該共享快取記憶體可儲存由該處理器之一個或多個組件諸如核心所利用之資料(例如指令)。舉例言之,該共享快取記憶體可局部快取儲存於記憶體986之資料供由處理器之各組件更快速存取。於一或多個實施例中,該共享快取記憶體可包括一或多個中階快取記憶體,諸如第2階(L2)、第3階(L3)、第4階(L4)、或其它階快取記憶體、末階快取記憶體(LLC)、及/或其組合。
處理器核心及共享快取記憶體各自耦接一匯流排或其它互連結構997。該匯流排或其它互連結構可耦接該等核心及共享快取記憶體及允許通訊。
處理器也包括記憶體控制器中樞(MCH)982。如本具體實施例所示,MCH係整合處理器900。例如MCH可在帶有處理器核心之晶粒上。處理器透過MCH耦接記憶體986。於一或多個實施例中,該記憶體可包括DRAM但非必要。
晶片組包括一輸入/輸出(I/O)中樞器993。該I/O中樞器係透過匯流排(例如快派司(QuickPath)互連結構(QPI))或其它互連結構980耦接處理器。第一組件互連結構985係耦接I/O中樞器993。
此種只是適當系統之一個特例。技藝界對膝上型、桌上型、掌上型個人電腦(PC)、個人數位助理器、工程用工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、掌上型裝置、及多種其它電子裝置已知之其它系統設計及組態,也屬適宜。通常適合如此處揭示之結合處理器及/或執行單元之寬廣多種系統或電子裝置。
於前文說明,為了解說目的,陳述多項特定細節以供徹底瞭解本發明。但熟諳技藝人士須瞭解一個或多個其它實施例可不含若干此等特定細節而實施。所述特定實施例並非用來限制本發明而係用來舉例說明本發明。本發明之範圍並非由前文提供之特定實施例決定,反而係由如下申請專利範圍決定。於其它情況下,眾所周知之電路、結構、裝置、及運算已經以方塊圖形式顯示或不含細節以免混淆對本文說明的瞭解。若屬適宜,元件符號或元件符號之末端部分可在各圖間重複來指示相對應的或類似的元件,其可選擇性地具有類似特性。
若干運算可藉硬體組件執行,或可於機器可執行指令具體實施,其可用來造成或至少導致使用執行運算之指令程式規劃的電路或硬體。該電路包括通用或專用處理器或邏輯電路,只舉出少數實例。運算也可選擇性地藉硬體與軟體的組合執行。執行單元及/或處理器可包括回應於機器指令或衍生自該機器指令之一個或多個控制信號來儲存指令載明的結果運算元之特定或特殊電路或其它邏輯電路。
亦須瞭解,前文說明書中所提「一個實施例」、「一實施例」、或「一或多個實施例」(舉例)等語,表示一個特定結構特徵可含括於本發明之實施例之實務。同理,須瞭解於說明中各項結構特徵有時組合在單一實施例、附圖或其說明用來讓揭示內容流暢且協助瞭解本發明之各個面向。但此種揭示方法不可解譯為反映預期本發明要求比較於各申請專利範圍中明白引述所需要的更多結構特徵。反而如下申請專利範圍反映,本發明之面向可出現在少於單一揭示實施例之全部結構特徵。如此,於詳細說明部分之後的申請專利範圍係明白結合於本詳細說明部分,申請專利範圍各項本身表示發明的一個各別實施例。
100...指令處理裝置、裝置
102...旋轉指令
104...指令解碼器
106、806...執行單元
108...旋轉單元
110...暫存器集合
112...暫存器
114...算術旗標
116...進位旗標
220...方法
221、222、223...處理方塊
330...EFLAGS暫存器
432...32-位元通用暫存器集合
534...64-位元通用暫存器集合
800、900...處理器
801、901...電腦系統
802...旋轉指令、乘法指令
880、883、980、983...匯流排或其它互連結構
881、981...晶片組
882、982...記憶體控制器中樞、MCH
884、984...I/O控制器中樞
885、890、985...組件互連結構
886、986...記憶體
887、987...指令
888、988...資料
889、989...資料儲存裝置
891、991...串列擴充埠
892、992...網路控制器
993...I/O中樞器
994-1~m...處理器核心-1~m
995...快取記憶體
996...共享快取記憶體
第1圖為一種指令處理裝置之具體實施例之方塊圖。
第2圖為一種處理一旋轉指令實施例之方法之實施例之方塊流程圖。
第3圖顯示一種EFLAGS暫存器表示適當旗標暫存器且具有一進位旗標(CF)及溢位旗標(OF)之一特定具體實施例。
第4圖顯示一種適當32位元通用暫存器集合之一個特定具體實施例。
第5圖顯示一種適當64位元通用暫存器集合之一個特定具體實施例。
第6圖顯示表示一旋轉指令之特定具體實施例之RORX指令之描述。
第7圖顯示表示旋轉指令之一特定具體實施例之RORX指令之虛擬碼之運算。
第8圖為適當電腦系統之第一具體實施例之方塊圖。
第9圖為適當電腦系統之第二具體實施例之方塊圖。
220...方法
221,222,223...處理方塊
Claims (63)
- 一種用於處理器中的方法,包含有下列步驟:接收一旋轉指令,該旋轉指令指示一來源運算元及一旋轉量;儲存一結果於由該旋轉指令所指示之一目的運算元中,該結果使該來源運算元旋轉該旋轉量;及不讀取一進位旗標且不寫入任何算術旗標地完成該旋轉指令的執行。
- 如申請專利範圍第1項之方法,其中該完成之步驟包含不讀取一溢位旗標且不寫入該溢位旗標地完成該旋轉指令的執行。
- 如申請專利範圍第1項之方法,其中該旋轉量係被指示在該旋轉指令的立即值中。
- 如申請專利範圍第2項之方法,其中該完成之步驟包含不讀取一符號旗標、不讀取一零旗標、不讀取一輔助進位旗標、及不讀取一同位旗標地完成該旋轉指令的執行。
- 如申請專利範圍第4項之方法,其中該完成之步驟包含不寫入該進位旗標、不寫入該溢位旗標、不寫入該符號旗標、不寫入該零旗標、不寫入該輔助進位旗標、及不寫入該同位旗標地完成該旋轉指令的執行。
- 如申請專利範圍第1項之方法,其中該接收之步驟包含接收外顯地載明該來源運算元及外顯地載明該目的運算元之一旋轉指令。
- 如申請專利範圍第1項之方法,其中該接收之步驟包含接收外顯地載明具有該旋轉量之一第二來源運算元之一旋轉指令。
- 如申請專利範圍第1項之方法,其中該接收之步驟包含接收內隱地指示具有該旋轉量之一第二來源運算元之一旋轉指令。
- 如申請專利範圍第1項之方法,其中該旋轉指令的完成執行係在一個時鐘週期內完成。
- 如申請專利範圍第1項之方法,其中該完成之步驟包含隨同自該旋轉指令所導出之一單一微運算的執行來完成該旋轉指令的執行。
- 如申請專利範圍第1項之方法,其中該旋轉指令包含一右旋指令,其中該來源運算元具有選自於32位元及64位元之大小,其中該來源運算元包含一通用暫存器及一記憶體中之一位置中之一者,及其中該目的運算元包含一通用暫存器。
- 如申請專利範圍第1項之方法,其係藉具有多個核心之一通用微處理器執行,及其中該等核心中之至少一者具有回應於該指令之電路。
- 一種處理器,包含:一執行單元,其係由將用以指示一來源運算元及一旋轉量的一旋轉指令而可運作來:儲存一結果於將要由該旋轉指令所指示之一目的運算元中,該結果用以使該來源運算元旋轉該旋轉量;及不讀取一進位旗標且不寫入任何算 術旗標地完成該旋轉指令的執行。
- 如申請專利範圍第13項之處理器,其中該執行單元係可運作來不讀取一溢位旗標地完成該旋轉指令的執行。
- 如申請專利範圍第14項之處理器,其中該執行單元係可運作來不讀取一符號旗標、不讀取一零旗標、不讀取一輔助進位旗標、及不讀取一同位旗標地完成該旋轉指令的執行。
- 如申請專利範圍第15項之處理器,其中該執行單元係可運作來不寫入該進位旗標、不寫入該溢位旗標、不寫入該符號旗標、不寫入該零旗標、不寫入該輔助進位旗標、及不寫入該同位旗標地完成該旋轉指令的執行。
- 如申請專利範圍第13項之處理器,其中該執行單元係回應於外顯地載明該來源運算元及外顯地載明該目的運算元之一旋轉指令。
- 如申請專利範圍第13項之處理器,其中該執行單元係回應於外顯地載明具有該旋轉量之一第二來源運算元之一旋轉指令。
- 如申請專利範圍第13項之處理器,其中該執行單元係回應於內隱地指示具有該旋轉量之一第二來源運算元之一旋轉指令。
- 如申請專利範圍第13項之處理器,其中該執行單元係可運作來在單一個時鐘週期內完成該旋轉指令的執行。
- 如申請專利範圍第13項之處理器,其中該執行單元係可運作來隨同一單一微運算的執行完成該旋轉指令的執行。
- 如申請專利範圍第13項之處理器,其中該執行單元係包括於一多核心通用微處理器之一核心內。
- 一種處理器,包含:一執行單元,其係由於將要外顯地載明一來源運算元及將要具有一旋轉量的一立即值之一右旋指令而可運作來:儲存一結果於將要由該右旋指令所外顯地載明之一目的運算元中,該結果用以使該來源運算元向右旋轉該旋轉量;及不讀取一進位旗標、不讀取一溢位旗標、不寫入該進位旗標、及不寫入該溢位旗標地完成該旋轉指令的執行。
- 如申請專利範圍第23項之處理器,其中該執行單元係可運作來在一單一時鐘週期內完成該旋轉指令的執行,其中該執行單元係包括於一多核心通用微處理器之一核心內,及其該執行單元可運作用以不讀取任何算術旗標且不寫入該任一算術旗標地來完成該旋轉指令的執行。
- 一種系統,包含:一互連結構;與該互連結構耦接之一處理器,該處理器係由於指示一來源運算元及一旋轉量的一旋轉指令而可運作來:儲存一結果於由該旋轉指令所指示之一目的運算元中,該結果用以使該來源運算元旋轉該旋轉量;及不讀取一進位旗標 且不寫入任何算術旗標地完成該旋轉指令的執行;及與該互連結構耦接之一動態隨機存取記憶體(DRAM)。
- 如申請專利範圍第25項之系統,其中該處理器係回應於外顯地載明該來源運算元及外顯地載明該目的運算元之一旋轉指令。
- 一種製造物品,包含:包括有用以提供一旋轉指令之內容的一實體的機器可讀取媒體,該旋轉指令指示一來源運算元及一旋轉量,且該旋轉指令若由一機器執行會造成該機器執行包含下列動作之操作:儲存一結果於由該旋轉指令所指示之一目的運算元中,該結果用以使該來源運算元旋轉該旋轉量;及不讀取一進位旗標且不寫入任何算術旗標地完成該旋轉指令的執行。
- 如申請專利範圍第27項之物品,其中該旋轉指令係造成該機器判定該來源運算元係由該旋轉指令所外顯地載明,及儲存該結果於由該旋轉指令所外顯地載明之一目的運算元中。
- 一種處理器,包含:儲存裝置,用以儲存旗標;解碼單元,用以解碼第一旋轉指令與解碼第二旋轉指令,該第一旋轉指令係用以指示第一來源運算元與第一旋 轉量,該第二旋轉指令係用以指示第二來源運算元與第二旋轉量;及執行單元,其係回應於該第一旋轉指令可運作地儲存第一結果於將要為該第一旋轉指令所指示的第一目的運算元中,該第一結果用以使該第一來源運算元旋轉該第一旋轉量,及該執行單元,用以完成該第一旋轉指令的執行,而沒有讀取該旗標,及該執行單元回應於該第二旋轉指令可運作地儲存第二結果於將要為該第二旋轉指令所指示的第二目的運算元中,該第二結果用以使該第二來源運算元旋轉該第二旋轉量,及該執行單元,用以在該第二旋轉指令執行期間讀取該旗標。
- 如申請專利範圍第29項之處理器,其中該執行單元可運作用以完成該第一旋轉指令的執行,而沒有讀取或寫入任何算術旗標,及其中該執行單元可運作以在該第二旋轉指令執行期間,讀取與寫入進位旗標。
- 如申請專利範圍第29項之處理器,其中該執行單元可運作用以以較該第二旋轉指令為短的時間量,完成該第一旋轉指令的執行。
- 一種處理器,包含:多數64位元通用暫存器;第一暫存器,用以儲存包括進位旗標、溢位旗標、符號旗標、及零旗標的多數旗標;解碼器,用以解碼第一右旋指令,該第一右旋指令用 以指示64位元運算元大小、用以指示64位元來源運算元、用以指示旋轉量、及用以指示將要被使用作為目的的64位元通用暫存器;及耦接至該解碼器、該等多數64位元通用暫存器、與該第一暫存器的執行單元,該執行單元可運作以回應於該第一右旋指令,用以儲存結果於該64位元通用暫存器,該結果用以包含被向右旋轉該旋轉量的該64位元來源運算元,及該執行單元,用以完成該第一右旋指令的執行,而不讀取該進位旗標、不讀取該溢位旗標、不讀取該符號旗標、不讀取該零旗標、不寫入該進位旗標、不寫入該溢位旗標、不寫入該符號旗標、及不寫入該零旗標,其中該第一右旋指令被包括在指令集內,該指令集具有第二右旋指令,其當被執行時,使得該進位旗標被讀取。
- 如申請專利範圍第32項之處理器,其中該第二右旋指令的執行內隱地為以該第二右旋指令的目的運算元覆寫該第二右旋指令的來源運算元,及其中該第一右旋指令用以外顯地載明該第一64位元通用暫存器並用以外顯地載明該第二64位元通用暫存器。
- 一種多核心處理器,包含:至少四核心,其中各個該至少四核心包含:至少一第1階(L1)快取;暫存器,用以儲存包括進位旗標、符號旗標、零旗標及溢位旗標的多數旗標; 至少十六個64位元通用暫存器,其中該等64位元通用暫存器係可運作用以在64位元模式中儲存64位元運算元並可運作用以在32位元模式中儲存32位元運算元,其中該等32位元運算元將被用以儲存在該等64位元通用暫存器的低32位元中;分支預測邏輯電路;指令提取邏輯電路,用以提取右旋指令;解碼器,用以解碼該右旋指令,其中該右旋指令將用以指示64位元運算元大小、第一64位元來源運算元、第二64位元來源運算元、及64位元通用暫存器;暫存器重新命名邏輯電路,用以重新命名該等64位元通用暫存器;重新排序緩衝器;及多數執行單元,包括第一執行單元,用以執行該右旋指令,其中該右旋指令係用以右旋該第一64位元來源運算元為該第二64位元來源運算元所指示的量,其中被旋轉出該第一64位元來源運算元的最低效位元的位元係被旋轉入該第一64位元來源運算元的最高效位元,其中結果將被儲存入該64位元通用暫存器內,及其中該右旋指令被完成,而不寫入該進位旗標、不寫入該符號旗標、不寫入該零旗標、及不寫入該溢位旗標。
- 如申請專利範圍第34項之多核心處理器,其中該處理器包含精簡指令集運算(RISC)處理器。
- 如申請專利範圍第34項之多核心處理器,更包 含共享第2階(L2)快取,其係將為該至少四核心所共享。
- 如申請專利範圍第34項之多核心處理器,其中該右旋指令具有至少一位元,用以載明該64位元運算元大小。
- 如申請專利範圍第34項之多核心處理器,其中該右旋指令係被完成,而不讀取該進位旗標。
- 如申請專利範圍第34項之多核心處理器,其中該右旋指令的名稱指示該等多數旗標未被寫入。
- 一種多核心處理器,包含:至少四核心,其中各個該至少四核心包含:至少一第1階(L1)快取;暫存器,用以儲存包括進位旗標、符號旗標、零旗標、及溢位旗標的多數旗標;至少十六個64位元通用暫存器,其中該等64位元通用暫存器係可運作用以以64位元模式儲存64位元運算元並可運作用以以32位元模式儲存32位元運算元,其中該32位元運算元將被用以儲存在該等64位元通用暫存器的低32位元中;分支預測邏輯電路;指令提取邏輯電路,用以提取右旋指令;解碼器,用以解碼該右旋指令,其中該右旋指令將用以指示64位元運算元大小、第一64位元來源運算元、第二64位元來源運算元、及64位元通用暫存器; 暫存器重新命名邏輯電路,用以重新命名該等64位元通用暫存器;重新排序緩衝器;多數執行單元,包括第一執行單元,用以執行該右旋指令,其中該右旋指令將用以右旋該第一64位元來源運算元為該第二64位元來源運算元所指示的量,其中被旋轉出該第一64位元來源運算元的最低效位元的位元係被旋轉入該第一64位元來源運算元的最高效位元,其中結果將被儲存入該64位元通用暫存器內,及其中該右旋指令被完成,而不讀取該進位旗標、不讀取該符號旗標、不讀取該零旗標、及不讀取該溢位旗標。
- 如申請專利範圍第40項之多核心處理器,其中該處理器包含精簡指令集運算(RISC)處理器。
- 如申請專利範圍第40項之多核心處理器,更包含共享第2階(L2)快取,其係將為該至少四核心所共享。
- 如申請專利範圍第40項之多核心處理器,其中該右旋指令具有至少一位元,用以載明該64位元運算元大小。
- 一種系統單晶片(SoC),包含:晶粒上(on-die)記憶體控制器集線器(MCH);晶粒上圖形裝置;用於通用串列匯流排(USB)埠的晶粒上控制器;晶粒上多核心處理器,包含: 至少四核心,其中各個該至少四核心包含:至少一第1階(L1)快取;暫存器,用以儲存包括進位旗標、符號旗標、零旗標及溢位旗標的多數旗標;至少十六個64位元通用暫存器,其中該等64位元通用暫存器係可運作用以在64位元模式中儲存64位元運算元並可運作用以在32位元模式中儲存32位元運算元,其中該等32位元運算元將被用以儲存在該等64位元通用暫存器的低32位元中;分支預測邏輯電路;指令提取邏輯電路,用以提取右旋指令;解碼器,用以解碼該右旋指令,其中該右旋指令將用以指示64位元運算元大小、第一64位元來源運算元、第二64位元來源運算元、及64位元通用暫存器;暫存器重新命名邏輯電路,用以重新命名該等64位元通用暫存器;重新排序緩衝器;及多數執行單元,包括第一執行單元,用以執行該右旋指令,其中該右旋指令係用以右旋該第一64位元來源運算元為該第二64位元來源運算元所指示的量,其中被旋轉出該第一64位元來源運算元的最低效位元的位元係被旋轉入該第一64位元來源運算元的最高效位元,其中結果將被儲存入該64位元通用暫存器內,及其中該右旋指令被完成,而不寫入該進位旗標、不寫入該符號旗標、不 寫入該零旗標、及不寫入該溢位旗標。
- 如申請專利範圍第44項之SoC,其中該處理器包含精簡指令集計算(RISC)處理器。
- 如申請專利範圍第44項之SoC,其中該處理器更包含共享第2階(L2)快取,其係將用以為該至少四核心所共享。
- 如申請專利範圍第44項之SoC,其中該右旋指令具有至少一位元,用以載明該64位元運算元大小。
- 如申請專利範圍第44項之SoC,其中該右旋指令係被完成,而不讀取該進位旗標。
- 如申請專利範圍第44項之SoC,其中該右旋指令的名稱指示該等多數旗標未被寫入。
- 一種系統單晶片(SoC),包含:晶粒上記憶體控制器集線器(MCH);晶粒上圖形裝置;用於通用串列匯流排(USB)的晶粒上控制器;及晶粒上多核心處理器,包含:至少四核心,其中各個該至少四核心包含:至少一第1階(L1)快取;暫存器,用以儲存包括進位旗標、符號旗標、零旗標、及溢位旗標的多數旗標;至少十六個64位元通用暫存器,其中該等64位元通用暫存器係可運作用以以64位元模式儲存64位元運算元並可運作用以以32位元模式儲存32位元運算元,其中該 32位元運算元將被用以儲存在該等64位元通用暫存器的低32位元中;分支預測邏輯電路;指令提取邏輯電路,用以提取右旋指令;解碼器,用以解碼該右旋指令,其中該右旋指令將用以指示64位元運算元大小、第一64位元來源運算元、第二64位元來源運算元、及64位元通用暫存器;暫存器重新命名邏輯電路,用以重新命名該等64位元通用暫存器;重新排序緩衝器;多數執行單元,包括第一執行單元,用以執行該右旋指令,其中該右旋指令將用以右旋該第一64位元來源運算元為該第二64位元來源運算元所指示的量,其中被旋轉出該第一64位元來源運算元的最低效位元的位元係被旋轉入該第一64位元來源運算元的最高效位元,其中結果將被儲存入該64位元通用暫存器內,及其中該右旋指令被完成,而不讀取該進位旗標、不讀取該符號旗標、不讀取該零旗標、及不讀取該溢位旗標。
- 如申請專利範圍第50項之SoC,其中該處理器包含精簡指令集運算(RISC)處理器。
- 如申請專利範圍第50項之SoC,其中該處理器更包含共享第2階(L2)快取,其係將為該至少四核心所共享。
- 如申請專利範圍第50項之SoC,其中該右旋指 令具有至少一位元,用以載明該64位元運算元大小。
- 一種行動電話,包含:隨機存取記憶體(RAM);無線收發器;及多核心處理器,包含:至少四核心,其中各個該至少四核心包含:至少一第1階(L1)快取;暫存器,用以儲存包括進位旗標、符號旗標、零旗標及溢位旗標的多數旗標;至少十六個64位元通用暫存器,其中該等64位元通用暫存器係可運作用以在64位元模式中儲存64位元運算元並可運作用以在32位元模式中儲存32位元運算元,其中該等32位元運算元將被用以儲存在該等64位元通用暫存器的低32位元中;分支預測邏輯電路;指令提取邏輯電路,用以提取右旋指令;解碼器,用以解碼該右旋指令,其中該右旋指令將用以指示64位元運算元大小、第一64位元來源運算元、第二64位元來源運算元、及64位元通用暫存器;多數執行單元,包括第一執行單元,用以執行該右旋指令,其中該右旋指令係用以右旋該第一64位元來源運算元為該第二64位元來源運算元所指示的量,其中被旋轉出該第一64位元來源運算元的最低效位元的位元係被旋轉入該第一64位元來源運算元的最高效位元,其中結 果將被儲存入該64位元通用暫存器內,及其中該右旋指令被完成,而不寫入該進位旗標、不寫入該符號旗標、不寫入該零旗標、及不寫入該溢位旗標。
- 如申請專利範圍第54項之行動電話,其中該處理器更包含共享第2階(L2)快取,其係將用以為該至少四核心所共享。
- 如申請專利範圍第54項之行動電話,其中該處理器包含精簡指令集計算(RISC)處理器。
- 如申請專利範圍第54項之行動電話,其中該右旋指令具有至少一位元,用以載明該64位元運算元大小。
- 如申請專利範圍第54項之行動電話,其中該右旋指令係被完成,而不讀取該進位旗標。
- 如申請專利範圍第54項之行動電話,其中該右旋指令的名稱指示該等多數旗標未被寫入。
- 一種行動電話,包含:隨機存取記憶體(RAM);無線收發器;及多核心處理器,包含:至少四核心,其中各個該至少四核心包含:至少一第1階(L1)快取;暫存器,用以儲存包括進位旗標、符號旗標、零旗標、及溢位旗標的多數旗標;至少十六個64位元通用暫存器,其中該等64位元通 用暫存器係可運作用以以64位元模式儲存64位元運算元並可運作用以以32位元模式儲存32位元運算元,其中該32位元運算元將被用以儲存在該等64位元通用暫存器的低32位元中;分支預測邏輯電路;指令提取邏輯電路,用以提取右旋指令;解碼器,用以解碼該右旋指令,其中該右旋指令將用以指示64位元運算元大小、第一64位元來源運算元、第二64位元來源運算元、及64位元通用暫存器;多數執行單元,包括第一執行單元,用以執行該右旋指令,其中該右旋指令將用以右旋該第一64位元來源運算元為該第二64位元來源運算元所指示的量,其中被旋轉出該第一64位元來源運算元的最低效位元的位元係被旋轉入該第一64位元來源運算元的最高效位元,其中結果將被儲存入該64位元通用暫存器內,及其中該右旋指令被完成,而不讀取該進位旗標、不讀取該符號旗標、不讀取該零旗標、及不讀取該溢位旗標。
- 如申請專利範圍第60項之行動電話,其中該處理器包含精簡指令集計算(RISC)處理器。
- 如申請專利範圍第60項之行動電話,其中該處理器更包含共享第2階(L2)快取,其係將為該至少四核心所共享。
- 如申請專利範圍第60項之行動電話,其中該右旋指令具有至少一位元,用以載明該64位元運算元大 小。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/655,213 US8504807B2 (en) | 2009-12-26 | 2009-12-26 | Rotate instructions that complete execution without reading carry flag |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201135589A TW201135589A (en) | 2011-10-16 |
TWI517034B true TWI517034B (zh) | 2016-01-11 |
Family
ID=44174154
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW099142779A TWI517034B (zh) | 2009-12-26 | 2010-12-08 | 不讀取進位旗標地完成執行之旋轉指令 |
TW104135844A TWI556166B (zh) | 2009-12-26 | 2010-12-08 | 不讀取進位旗標地完成執行之旋轉指令 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104135844A TWI556166B (zh) | 2009-12-26 | 2010-12-08 | 不讀取進位旗標地完成執行之旋轉指令 |
Country Status (6)
Country | Link |
---|---|
US (7) | US8504807B2 (zh) |
JP (3) | JP5665221B2 (zh) |
CN (3) | CN104636116B (zh) |
BR (1) | BRPI1005543B1 (zh) |
DE (2) | DE102010054267A1 (zh) |
TW (2) | TWI517034B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8504807B2 (en) * | 2009-12-26 | 2013-08-06 | Intel Corporation | Rotate instructions that complete execution without reading carry flag |
US8464030B2 (en) * | 2010-04-09 | 2013-06-11 | International Business Machines Corporation | Instruction cracking and issue shortening based on instruction base fields, index fields, operand fields, and various other instruction text bits |
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 |
WO2013095564A1 (en) | 2011-12-22 | 2013-06-27 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of integers in numerical order that differ by a constant stride |
WO2013101124A1 (en) * | 2011-12-29 | 2013-07-04 | Intel Corporation | Packed data operation mask comparison processors, methods, systems, and instructions |
WO2013101198A1 (en) | 2011-12-30 | 2013-07-04 | Intel Corporation | Simd variable shift and rotate using control manipulation |
US9128698B2 (en) * | 2012-09-28 | 2015-09-08 | Intel Corporation | Systems, apparatuses, and methods for performing rotate and XOR in response to a single instruction |
US9207941B2 (en) * | 2013-03-15 | 2015-12-08 | Intel Corporation | Systems, apparatuses, and methods for reducing the number of short integer multiplications |
US20190196820A1 (en) * | 2017-12-21 | 2019-06-27 | Intel Corporation | Apparatus and method for right shifting packed quadwords and extracting packed doublewords |
US20190196821A1 (en) * | 2017-12-21 | 2019-06-27 | Intel Corporation | Apparatus and method for right-shifting packed quadwords and extracting packed words |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3040326C1 (de) | 1980-10-25 | 1981-10-08 | Eurosil GmbH, 8000 München | Mikroprozessor mit Ruecksetz-Schaltanordnung |
US4433390A (en) | 1981-07-30 | 1984-02-21 | The Bendix Corporation | Power processing reset system for a microprocessor responding to sudden deregulation of a voltage |
EP0096531B1 (en) | 1982-06-09 | 1987-09-16 | Fujitsu Limited | One-chip semiconductor device incorporating a power-supply-potential detecting circuit with reset function |
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 |
JPS6019220A (ja) | 1983-07-13 | 1985-01-31 | Fujitsu Ltd | マイクロコンピユ−タ |
JPS60143360A (ja) | 1983-12-30 | 1985-07-29 | Casio Comput Co Ltd | 画像形成装置 |
JPS62106524A (ja) | 1985-11-01 | 1987-05-18 | Clarion Co Ltd | 車載用の機器のマイクロコンピユ−タリセツト回路 |
JPH0241353A (ja) | 1988-08-01 | 1990-02-09 | Mitsui Toatsu Chem Inc | 半導体封止用樹脂組成物 |
JPH04278638A (ja) * | 1991-03-07 | 1992-10-05 | Seiko Epson Corp | 情報処理装置 |
JP3043861B2 (ja) * | 1991-09-30 | 2000-05-22 | 株式会社東芝 | データ処理装置 |
EP0746817B1 (en) * | 1991-11-12 | 2000-07-05 | Microchip Technology Inc. | Microcontroller power-up delay |
CN103092564B (zh) | 1995-08-31 | 2016-04-06 | 英特尔公司 | 执行乘加指令的处理器和对分组数据执行乘加操作的系统 |
US5906002A (en) * | 1997-02-10 | 1999-05-18 | International Business Machines Corporation | Method and apparatus for saving and restoring the context of registers using different instruction sets for different sized registers |
US5881274A (en) * | 1997-07-25 | 1999-03-09 | International Business Machines Corporation | Method and apparatus for performing add and rotate as a single instruction within a processor |
US6715063B1 (en) * | 2000-01-14 | 2004-03-30 | Advanced Micro Devices, Inc. | Call gate expansion for 64 bit addressing |
JP4454810B2 (ja) | 2000-08-04 | 2010-04-21 | Necエレクトロニクス株式会社 | デジタル位相制御方法及びデジタル位相制御回路 |
US7681018B2 (en) | 2000-08-31 | 2010-03-16 | Intel Corporation | Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set |
US7185180B2 (en) * | 2002-04-02 | 2007-02-27 | Ip-First, Llc | Apparatus and method for selective control of condition code write back |
TW583583B (en) * | 2002-05-09 | 2004-04-11 | Ip First Llc | Apparatus and method for selective control of condition code write back |
US6944744B2 (en) * | 2002-08-27 | 2005-09-13 | Advanced Micro Devices, Inc. | Apparatus and method for independently schedulable functional units with issue lock mechanism in a processor |
CN1438574A (zh) * | 2003-02-21 | 2003-08-27 | 中国航天科技集团公司第九研究院七七一研究所 | 一种16位微处理器指令集 |
US7107435B2 (en) * | 2003-05-27 | 2006-09-12 | International Business Machines Corporation | System and method for using hardware assist functions to process multiple arbitrary sized data elements in a register |
US7373514B2 (en) | 2003-07-23 | 2008-05-13 | Intel Corporation | High-performance hashing system |
JP5088014B2 (ja) | 2007-06-22 | 2012-12-05 | トヨタ自動車株式会社 | 車両用サスペンションシステム |
US7743232B2 (en) * | 2007-07-18 | 2010-06-22 | Advanced Micro Devices, Inc. | Multiple-core processor with hierarchical microcode store |
US7840783B1 (en) * | 2007-09-10 | 2010-11-23 | Netlogic Microsystems, Inc. | System and method for performing a register renaming operation utilizing hardware which is capable of operating in at least two modes utilizing registers of multiple widths |
JP2009282744A (ja) * | 2008-05-22 | 2009-12-03 | Toshiba Corp | 演算器及び半導体集積回路装置 |
US8914621B2 (en) * | 2009-04-02 | 2014-12-16 | Infineon Technologies Ag | Processing unit that detects manipulations thereof, device comprising two processing units, method for testing a processing unit and a device comprising two processing units |
US8504807B2 (en) | 2009-12-26 | 2013-08-06 | Intel Corporation | Rotate instructions that complete execution without reading carry flag |
-
2009
- 2009-12-26 US US12/655,213 patent/US8504807B2/en active Active
-
2010
- 2010-12-07 JP JP2010272961A patent/JP5665221B2/ja active Active
- 2010-12-08 TW TW099142779A patent/TWI517034B/zh active
- 2010-12-08 TW TW104135844A patent/TWI556166B/zh active
- 2010-12-13 DE DE102010054267A patent/DE102010054267A1/de not_active Ceased
- 2010-12-13 DE DE102010064599.0A patent/DE102010064599A1/de active Pending
- 2010-12-22 BR BRPI1005543-6A patent/BRPI1005543B1/pt active IP Right Grant
- 2010-12-24 CN CN201510116867.8A patent/CN104636116B/zh active Active
- 2010-12-24 CN CN201010623118.1A patent/CN102109976B/zh active Active
- 2010-12-24 CN CN201410680656.2A patent/CN104484154B/zh active Active
-
2013
- 2013-07-22 US US13/947,958 patent/US9164762B2/en active Active
-
2014
- 2014-10-21 JP JP2014214502A patent/JP6034352B2/ja active Active
- 2014-12-05 US US14/562,145 patent/US9916160B2/en active Active
- 2014-12-05 US US14/562,310 patent/US9940131B2/en active Active
- 2014-12-05 US US14/562,223 patent/US9940130B2/en active Active
-
2016
- 2016-10-27 JP JP2016210149A patent/JP6509181B2/ja active Active
-
2018
- 2018-03-29 US US15/939,693 patent/US11106461B2/en active Active
-
2021
- 2021-08-30 US US17/461,949 patent/US11900108B2/en active Active
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI517034B (zh) | 不讀取進位旗標地完成執行之旋轉指令 | |
JP5736028B2 (ja) | 3個のソースオペランドを加算する加算命令 | |
CN107092465B (zh) | 用于提供向量混合和置换功能的指令和逻辑 | |
TWI502493B (zh) | 位元範圍隔離指令、方法及裝置 | |
JP2016527650A (ja) | ベクトルポピュレーションカウント機能性を提供する方法、装置、命令、およびロジック | |
US20150160998A1 (en) | Instructions and logic to provide memory access key protection functionality | |
US10649774B2 (en) | Multiplication instruction for which execution completes without writing a carry flag | |
WO2015017870A1 (en) | Methods, apparatus, instructions and logic to provide vector sub-byte decompression functionality | |
JP2016529617A (ja) | ゲノム配列決定および配列比較のためのポピュレーションカウント機能性を提供する方法、装置、命令、およびロジック | |
JP6738579B2 (ja) | 命令フローを最適化するチェックを実行するための装置および方法 | |
US20190163476A1 (en) | Systems, methods, and apparatuses handling half-precision operands |