TWI512618B - 萬用邏輯運算之方法及裝置 - Google Patents

萬用邏輯運算之方法及裝置 Download PDF

Info

Publication number
TWI512618B
TWI512618B TW103104892A TW103104892A TWI512618B TW I512618 B TWI512618 B TW I512618B TW 103104892 A TW103104892 A TW 103104892A TW 103104892 A TW103104892 A TW 103104892A TW I512618 B TWI512618 B TW I512618B
Authority
TW
Taiwan
Prior art keywords
bit
value
source
instruction
immediate
Prior art date
Application number
TW103104892A
Other languages
English (en)
Other versions
TW201432564A (zh
Inventor
Andrew T Forsyth
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of TW201432564A publication Critical patent/TW201432564A/zh
Application granted granted Critical
Publication of TWI512618B publication Critical patent/TWI512618B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

萬用邏輯運算之方法及裝置
本發明是有關於電腦處理器的領域。更詳細地說,本發明是有關於可支持電腦處理器上之萬用邏輯運算的裝置及方法。
電腦處理器執行指令以進行數學運算及邏輯運算。數學運算包括有例如不同精確程度的浮點及整數加法、減法、乘法、以及除法。邏輯運算包括有例如及(AND)、或(OR)、反及(NAND)、反或(NOR)、異或(XOR)、左移/右移、拌和、選擇、以及投票等功能,而這僅為其中的一部分。
在某些情形下(特別是當牽涉到三個或更多個運算元時),相當簡單的邏輯運算可能會需要執行大量的指令。舉例來說,例如dest=(srcl AND dest)OR(src2 AND(NOT dest))的邏輯就必須要設定如果目的暫存器(dest)內的某一特定位元被設定時,則應選擇來源暫存器1(src1),不則就要選擇來源暫存器2(src2)。採用習用的技術來 執行此一運算必須要執行多個不同的指令(二個及運算、一個或運算、以及一個反運算)。使用習知技術時,有許多相對簡單的功能都必須以多個序列的指令來加以實施。
因此,僅需要執行較少指令即可執行邏輯運算的新穎技術將會有其價值。
自以下的詳細說明,並配合後附圖式,將可對本發明有更清楚的瞭解。
100‧‧‧目的暫存器
101‧‧‧來源暫存器
102‧‧‧來源暫存器
105‧‧‧指標
110‧‧‧立即值
300‧‧‧處理核心
302‧‧‧遮罩暫存器
303‧‧‧提取單元
304‧‧‧解碼單元
305‧‧‧排程單元
306‧‧‧執行單元
307‧‧‧退役單元
308‧‧‧微碼
320‧‧‧指令
321‧‧‧指令
322‧‧‧指令
400‧‧‧系統
410‧‧‧處理元件
415‧‧‧處理元件
420‧‧‧圖形記憶體控制器集線器
430‧‧‧記憶體
440‧‧‧顯示器
450‧‧‧輸出入控制器集線器
460‧‧‧外接圖形裝置
470‧‧‧週邊裝置
495‧‧‧前側匯流排
500‧‧‧系統
514‧‧‧輸出入裝置
516‧‧‧第一匯流排
518‧‧‧匯流排電橋
520‧‧‧第二匯流排
522‧‧‧鍵盤/滑鼠
524‧‧‧聲訊輸出入裝置
527‧‧‧通訊裝置
528‧‧‧資料儲存單元
530‧‧‧碼
538‧‧‧圖形引擎
539‧‧‧圖形界面
532‧‧‧記憶體
534‧‧‧記憶體
550‧‧‧點對點互連線
552‧‧‧點對點界面
554‧‧‧點對點界面
570‧‧‧處理元件
572‧‧‧記憶體控制器集線器
574a‧‧‧處理器核心
574b‧‧‧處理器核心
576‧‧‧點對點界面電路
578‧‧‧點對點界面電路
580‧‧‧處理元件
582‧‧‧記憶體控制器集線器
584a‧‧‧處理器核心
584b‧‧‧處理器核心
586‧‧‧點對點界面電路
588‧‧‧點對點界面電路
590‧‧‧晶片組
592‧‧‧界面
594‧‧‧點對點界面電路
596‧‧‧界面
598‧‧‧點對點界面電路
600‧‧‧系統
614‧‧‧輸出入裝置
615‧‧‧傳統輸出入裝置
第1圖顯示出本發明之一實施例,其中可自三個來源運算元中產生一立即值的指標。
第2圖顯示出一種用以指示要進行邏輯運算之立即值的方法的實施例。
第3圖顯示出一種可供本發明的實施例於其內實施的範例性處理核心。
第4圖顯示出應用於本發明一實施例內的處理器架構。
第5圖顯示出應用於本發明一實施例內的系統架構。
第6圖顯示出根據本發明一實施例的複數個處理元件。
【發明內容及實施方式】
為解釋之目的,在下面的說明中會提出一些特定的細節,以便能對於以下所描述的本發明實施例做一個全面的 理解。但是熟知此技術之人士當可理解,本發明的這些實施例亦可在沒有這些特定細節中的一部分的情形下加以實施。在其他的例子中,已知的結構及裝置會以方塊圖的形式加以呈現,以避免對於本發明該等實施例後方的原則造成難以理解的情形。
“立即值”是與一指令相關的二進位數值(例如明確包含成為該指令的一部分或與該指令結合在一起)。一個已知與x86指令集相關的立即值是一8位元立即標記imm8。一指令的立即值在編譯時間隨著該指令產生的。雖然以下所描述的本發明實施例是使用imm8或imm16立即值,但本發明以下的原則並不侷限於任何特定型式的立即值。事實上,本發明以下的原則可以使用與一指令相關的任何型式二進位碼來加以實施。
在本發明一實施例中,不同的立即值用以標示不同的邏輯運算(例如及、反及、異或、反、選擇、投票等)。在此實施例中,某些來自一指令之來源運算元的位元會組合形成一指標值,其可標示該指令之立即值內的位元位置。這些自被標示之位元位置中讀取的位元,接著即可於一目的暫存器內組合,以達成該邏輯運算的結果。該另一種方式,該立即值是用來做為一查找表,以達成每一邏輯運算的結果。
第1圖顯示出一個特定的例子,其中位元是自三個儲存於來源暫存器1(src1)102、來源暫存器2(src2)101、以及目的暫存器(dest)100的運算元中讀取,以形 成一用以標示立即值110內之一位元位置的指標105。位於被標示位元位置上的二進位值接著即複製至目的暫存器100。雖然此特定的暫存器配置係用以供解說之用,本發明的原則並不限於任何特定的暫存器組。例如說,若不使用“目的”暫存器來儲存一來源運算元,則可使用一專用的第三來源暫存器(例如“來源暫存器3”)。
在第1圖所示的特定範例中,來自目的暫存器100及來源暫存器101及102之第一位元位置的位元會先被讀取,以形成如圖所示的指標010(如實心箭號所示)。在一實施例中,該指標是由三個來源值的位元串接所形成的。該指標010標示出立即值110的位元位置2(亦即二進位數值010等於2)。接著讀取來自立即值之位元位置2的位元(在所示例子中為二進位的1),並儲存於目的暫存器的第一位元位置,如圖所示。相同的程序會針對每一來源運算元的每一位元進行,直到所有的位元均被讀取,且標示的位元數值均自該立即值複製至目的暫存器。例如說,如第1圖所示,可由目的及來源暫存器的第二位元位置的位元來產生110的指標值,而此指標值即可用以標示立即值的位元位置6(亦即二進位數值110等於6)。來自位元位置6的位元接著即自立即值中讀取(二進位的0),並儲存於目的暫存器的第二位元位置。
在第2圖中顯示出根據本發明一實施例的方法。在201中,數值會自運算元暫存器(例如dest、src1、src2)中特定的位元位置中讀取。多組的數值會以平行方式自多 組指標值讀取。在202中,該等數值會被合併成為一指示立即值的指標,而在203,該指標會被用標示立即值的位元位置。如前所述,在一實施例中,來自來源運算元之相對應位元位置的位元會串接而形成標示立即值的指標。在204,由指標值所標示之位元位置內的數值會被讀取,而在205,該等來自被標示位元位置的數值會被複製至目的暫存器。
使用前述的技術可以標定要進行不同邏輯運算的不同立即值。舉例來說,但不限於此,以下的運算型式可以利用下列的立即值來進行之:
1.將結果設為全部為一。立即值=11111111。在此例中,任何自立即值讀取的位元均會在目的暫存器內造成二進位的1。
2.複製時反轉。立即值=01010101。現有的反指令(例如說現有x86指令集中所實施者),是在原位反轉,會破壞原始數據。相反的,前面所描述之技術是將前述的立即值複製至不同的暫存器。此指令的形式可為dest=NOT src1
3.模擬現有的邏輯運算。立即值=10001000。此立即值造成來源暫存器1及來源暫存器2之值的及運算,亦即dest=src1 AND src2。請注意,由於位元3-0及位元7-4是相同的,目的暫存器(dest)的值不會影響到結果。因此,在一實施例中,目的暫存器是不會被讀取的,以減少電力消耗。
下面的表(表A)顯示出相等於現有x86邏輯運算的imm8值:
4.結合二個現有的邏輯運算。立即值=01111000。此立即值會造成來源暫存器1及來源暫存器2的及運算,而所得結果再與目的暫存器的值做異或運算。此指令的形式可以是dest=(src1 AND src2)XOR dest。如前所述,使用習用技術來實施此運算的唯一方法是執行多個不同的指令,消耗大量的時間及處理資源。相反的,使用前面所設定的立即值可以在與本文中所述其他運算相同量的時間內得到結果。
5.選擇。立即值=10101100。此運算的目的是要在目的內的相關位元被設定時,選取來源暫存器1,否則就選取來源暫存器2。習用上,這會需要例如以下的邏輯運算:dest=(src1 AND dest)OR(src2 AND(NOT dest)),其需要大量的指令。相反的,使用前面所設定的立即值可以提供與本文中所設定之其他立即值運算完全一樣有效率的結果。
6.投票。立即值=11101000。使用此運算可在三個輸入中選擇最普遍的值。例如說,如果目的暫存器內的一位元是0,來源暫存器1內之位元為1,且來源暫存器2內之位元為0,則0就是最普遍的輸出。因此,0會被選取並儲存於目的暫存器內。
應注意到,前述的運算僅係供解說示範之用而已。本發明的原則並不限於任何特定一組的運算。在使用根據本發明原則的不同立即值下,幾乎沒有限制之數量的邏輯運算均可實施(雖然8位元的立即值只可能有256種邏輯運算)。
下面的假碼代表在具有64位元運算元之處理器管線內使imm8立即值實施的本發明一實施例: 在此實施中,指標值是藉由將來自目的暫存器(dest)、來源暫存器1(src1)、以及來源暫存器2(src2)之位元位置i(在0與63之間)的每一位元值加以串接而計算出來的。該等<<2及<<1運算的作用是要將該等位元分別向左移二位及一位,以對齊該等位元來正確地形成該指標。例如,如果來自每一運算元之位元值均為1,則dest[i]<<2的結果是100,src2[i]<<1的結果是010,而src1[i]的結果是001。接著即在該等結果上進行位元或運 算(如運算子|所代表)。最終的結果是可標示imm8內一特定位元的指標值。請注意,外側的for( )循環是供以假碼示範的目的而已;在一實施例中,所有的64種運算是在個別的硬體副本內平行的進行。
以下的假碼代表在以使用每一者均可儲存16個32位元緊縮資料元件的512位元暫存器及imm8立即值的處理器管線內實施的本發明另一實施例: 在此實施例中是使用一遮罩暫存器,其可儲存與該16個32位元緊縮資料元件每一者相關的一位元。該mask[n]!=0的試驗代表如果與一資料元件相關的遮罩位元等於零的話,則針對該資料元件儲存於目的暫存器(dest)內的現有數值會保持不變。但是如果該遮罩位元不是零的話,則即會進行下一個FOR循環,造成針對該資料元件而計算的指標值(如前所述)。同樣的,該for( )循環是示範用的;在一實施例中,所有的512種運算均會平行地進行。
雖然前面所描述的本發明實施例是以三個來源運算元來運作的,但本發明的原則亦可在使用任何數量之運算元的情形下來加以實施。例如說,以下的假碼顯示出四個運算元(三個來源及一目的)如何可用來產生標示16位元立即值(imm16)的指標值:
另一種方式,該等來源之一者可來自一遮罩暫存器: 如前述的碼所顯示的,在此實施例中,該等四個運算元可儲存於遮罩暫存器內。該指標值是藉由在來自遮罩暫存器(向左移3位);目的暫存器(向左移2位);來源暫存 器2(向左移1位);以及來源暫存器1的相對應位元上進行位元或運算而產生的。所得到的4位元值接著即可用於查找16位元立即值imm16。
處理器架構的範例
第3圖顯示出一範例性處理核心300,可供本發明的實施例於其內實施。該總稱的處理核心300是可描述許多種不同型式的處理核心架構,例如複雜指令集(CISC)、精簡指令集(RISC)、以及極長指令字(VLIW)。圖式中的該總稱的處理核心300包含:(1)一提取單元303,其可提取指令(例如說自快取及/或記憶體提取);(2)一解碼單元304,其可將指令(例如,指令320)解碼;(3)一排程單元305,其決定指令發給執行單元306的時間及/或次序(請注意,排程器是選用的);(4)執行單元306,其可執行指令,例如指令321和322(典型的指令執行單元包括有分路執行單元、整數算術執行單元(例如ALU)、浮點算術執行單元(例如FPU)、以及記憶體存取執行單元);以及(5)一退役單元307,其呈現成功完成一指令。請注意,處理核心300可以使用或不使用微碼(圖未示)。遮罩暫存器302可如前所述根據本發明的實施例來加以採用。
電腦系統的範例
以下是可用以執行本文中所述之指令的範例性系統。 此技術中已知供膝上型、桌上型、手持式個人電腦、個人數位助理、工作站、伺服器、網路裝置、網路集線器、開關、內嵌式處理器、數位信號處理器(DSP)、圖形裝置、電視遊戲機、機上盒、微控制器、行動電話、可攜式媒體播放裝置、手持式裝置、以及多種其他電子裝置使用的其他系統設計及架構,亦可加以使用。一般而言,有許多如本文中所描述般能夠結合處理器及/或其他執行邏輯裝置的系統或電子裝置通常都是合用的。
現在參閱第4圖,其中顯示出根據本發明一實施例的系統400的方塊圖。系統400可包含一個或多個處理元件410、415,其等係耦接至圖形記憶體控制器集線器(GMCH)420上。另外的處理元件415選用性本質在第4圖中係中虛線加以表示。
每一處理元件可以是單核心,或者是包含多個核心。除了處理核心以外,該處理元件可選擇性地包含其他的晶片上(on-die)元件,例如積體記憶體控制器及/或積體式輸出入控制邏輯。另外,在至少一實施例中,該處理元件的核心可以是多工作線的,他們在每一核心中可包含多個以上的硬體工作線背景。
第4圖顯示出GMCH 420可以耦接至一記憶體430,其可以是例如動態隨機存取記憶體(DRAM)。該DRAM在至少一實施例中可以結合一非揮發性快取記憶體。
該GMCH 420可以是一晶片組,或一晶片組的一部分。該GMCH 420可與處理器410、415通訊並控制該等 處理器410、415與記憶體430間的互動。該GMCH 420亦可做為處理器410、415與系統400之其他元件間的加速匯流排界面。在至少一實施例中,該GMCH 420係透過多接腳匯流排與處理器410、415通訊,例如前側匯流排(FSB)495。
再者,GMCH 420係耦接至一顯示器440(例如平板顯示器)。GMCH 420可包含一積體圖形加速器。GMCH 420係進一步耦接至一輸出入(I/O)控制器集線器(ICH)450,其可用以將多種週邊裝置耦接至系統400。例如在第4圖的實施例中所顯示的是外接圖形裝置460,其可以是與其他週邊裝置470一起耦接至ICH 450上的個別的圖形裝置。
另一種方式是,在系統400也可以有另外的或不同的處理元件。例如說,另外的處理元件415可包含有與處理器410相同的另外的處理器、與處理器410相異或不對稱的另外的處理器、加速器(例如圖形加速器或數位信號處理(DSP)單元)、現場可程式閘陣列、或任何其他的處理元件。就優點度量範圍而言,包括架構、微架構、熱、電力消耗特性、以及類似者,實體來源410、415間可以有許多的差異。這些差異可以讓處理元件410、415有效的在他們本身之間表現出相異及不對稱。在至少一實施例中,各個處理元件410、415係位於相同的晶粒封裝內。
現在參閱第5圖,其中顯示出根據本發明一實施例的第二系統500的方塊圖。如第5圖所示,多處理器系統 500是一點對點互連系統,包含一第一處理元件570及一第二處理元件580,透過一點對點互連線550耦接在一起。如第5圖所示,處理元件570及580每一者均可是多核心處理器,包含第一及第二處理器核心(亦即處理器核心574a及574b,以及處理器核心584a以584b)。
另一種方式,一個或多個處理元件570、580可以是處理器以外的元件,例如加速器或現場可程式閘陣列。
雖然僅顯示出二個處理元件570、580,但可以理解到,本發明的範圍並不做如此的限制。在其他的實施例中,在一給定的處理器中可以存在著一個或多個另外的處理元件。
第一處理元件570可進一步包含一記憶體控制器集線器(MCH)572及點對點(P-P)界面電路576及578。同樣的,第二處理元件580可包含一MCH 582及點對點界面電路586及588。處理器570、580可透過一點對點互連線550利用點對點界面電路578、588來交換資料。如第5圖所示,MCH 572及582將處理器耦接至各自的記憶體上,亦即記憶體532及記憶體534,其等可為一主記憶體中區域地結合各處理器上的部位。
處理器570、580每一者均可經由單獨的點對點界面552、554使用點對點界面電路576、594、586、598來與一晶片組590交換資料。晶片組590也可以經由一高性能圖形界面539與一高性能圖形引擎538交換資料。本發明實施例可以設置於具有任何數量處理核心的任何處理器 內,或是設置於第5圖中的每一點對點匯流排代理器內。在一實施例中,任一處理器核心均可包含或以其他方式結合一區域快取記憶體(未顯示)。再者,一共用快取記憶體(未顯示)可包含於任一處理器內,位在二處理器外但仍透過點對點互連而連接至該等處理器,以使得任一或二處理器的區域快取記憶體資訊可在一處理器處於低電力模式時以儲存至該共用快取記憶體內。
第一處理元件570及第二處理元件580可分別經由P-P互連線(點對點界面電路)576、594、586以及598耦接至一晶片組590。如第5圖所示,晶片組590包含點對點界面電路594及598。再者,晶片組590包含一界面592,用以將晶片組590耦接於一高性能圖形引擎538。在一實施例中,匯流排可用以將圖形引擎538耦接至晶片組590。另一種方式,可用一點對點互連線來耦接這些組件。
晶片組590則可經由一界面596耦接至一第一匯流排516。在一實施例中,第一匯流排516可以是一週邊組件互連(PCI)匯流排,或是例如快速週邊組件互連匯流排或其他第三代輸出入互連匯流排之類的匯流排,但本發明的範圍並不侷限於此等。
如第5圖所示,各種輸出入裝置514可與一匯流排電橋518一起耦接至第一匯流排516,而該匯流排電橋518可將第一匯流排516耦接第二匯流排520。在一實施例中,第二匯流排520可以是低針腳數(LPC)匯流排。可 將多種的裝置耦接至第二匯流排520,包括例如鍵盤/滑鼠522、通訊裝置527、以及資料儲存單元528,例如磁碟機或其他大量儲存裝置,其在一實施例中可以包含有碼530。再者,聲訊輸出入裝置524可耦接至第二匯流排520。請注意到,其他的架構亦屬可行。例如,系統可以多接腳匯流排或其他此類架構來加以實施,以取代第5圖中的點對點架構。
現在參閱第6圖,其中顯示出根據本發明一實施例的第三系統600的方塊圖。在第5圖及第6圖中相同的元件會具有相同的參考編號,而為避免影響到第6圖的觀點,某些第5圖內的觀點在第6圖中會省略掉。
第6圖顯示出處理元件570、580分別包含有積體記憶體及輸出入控制邏輯(“CL”)572及582。在至少一實施例中,該等CL 572、582可包含記憶體控制器集線器邏輯(MCH),例如前面配合第4圖及第5圖所描述者。此外,CL 572、582亦可包含輸出入控制邏輯。第6圖中顯示出不僅只有記憶體532、534耦接至CL 572、582,輸出入裝置614亦耦接至控制邏輯572、582上。傳統輸出入裝置615耦接至晶片組590上。
本文中所描述之機構的實施例可以硬體、軟體、韌體、或該等實施方式的組合來加以實施。本發明可以能在至少包含有一處理器、一資料儲存系統(包含揮發性及非揮發性記憶體及/或儲存元件)、至少一輸入裝置、以及至少一輸出裝置的可程式系統上執行的電腦程式或程式 碼。
程式碼,如第5圖中所示的碼530,可以用於輸入資料來執行本文中所描述的功能並產生輸出資訊。該輸出資訊能以已知的方式應用於一個或多個輸出裝置。就此應用的目的而言,一處理系統可包含例如任何具有一處理器的系統;一數位信號處理器(DSP)、一微控制器、一特定應用積體電路(ASIC)、或一微處理器。
該程式碼可以高階程序或物件導向程式語言來加以實施,以供與一處理系統通訊。如果需要的話,該程式碼也可以組合或機器語言加以實施。事實上,本文中所描述的機構並不限於任何特定程式語言的範圍內。無論如何,該語言是一種可編譯及解譯的語言。
至少一實施例的一個或多個可由儲存於可機器讀取媒介內的代表資料來加以實施,其等代表處理器內的各種邏輯,在被一機器讀取時,可使得該機器製做出能進行本文中所描述之技術的邏輯。該等代表稱為“IP核心”,可儲存於有形可機器讀取媒介內,並供應給各種客戶或製做可載入能夠製做該邏輯或處理器之製造機器的設施。
此等可機器讀取媒介包括,但不限於,由一機器或裝置所製造或形成的顆粒的非暫態有形配置,包含例如硬碟機之類的儲存媒介,任何其他型式的碟片,包括軟碟、光碟、密集式碟片唯讀記憶體(CDROM)、可重寫密集式碟片(CD-RW)、以及磁光碟片、半導體裝置,例如唯讀記憶體(ROM)、隨機存取記憶體(RAM),例如動態 隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可程式唯讀記憶體(EPROM)、快閃記憶體、電氣可抹除可程式唯讀記憶體(EEPROM)、磁性或光學卡、或任何其他型式適合儲存電子指令的媒介。
因此,本發明的實施例也包含有非暫態有形的機器可讀取媒介,包含有用以進行本發明之運算的實施例的指令或是包含有設計資料,例如HDL,其界定出本文中所描述的結構、電路、裝置、處理器、及/或系統特色。此等實施例亦可稱為程式產品。
本文中所揭露之指令的某些運算可由硬體組件來加以進行,並可由可機器執行之指令來加以實施,該等可機器執行之指令係可使得,或至少部分地造成,一電路或其他的硬體組件會被該等指令加以程式規劃成為可進行該等運算。該電路可包含一通用型或特定目的處理器、或邏輯電路,這僅為少數的例子。該等運算也可以選擇性地由硬體及軟體的組合來加以執行。執行邏輯裝置及/或處理器可包含特有或特定電路或其他的邏輯裝置,可響應一機器指令或由該機器指令衍生出之一個或多個控制信號,以儲存一指令特定結果運算元。例如說,本文中揭露之指令的實施例可在第4圖、第5圖、以及第6圖中之系統的一者或多者內加以執行,而該等指令的實施例可儲存於要在該等顯示內執行的程式碼內。另外,這些圖式中的處理元件可以使用本文中所述之詳細管道及/或架構之一者(例如說順序及無序架構)。例如說,順序架構的解碼單元可以將 指令加以解碼、將解碼過的指令傳送至一向量或純量單元等等。
在前述的說明中,為解說之用曾提出若干特定的細節,以提供對於本發明的完整理解。但是,熟知此技術者當可理解,本發明可以在不使用這些特定細節中之一部分的情形下來加以實施。因此,本發明的範疇及精神應由下附的申請專利範圍來加以界定。
100‧‧‧目的暫存器
101‧‧‧來源暫存器
102‧‧‧來源暫存器
105‧‧‧指標
110‧‧‧立即值

Claims (27)

  1. 一種在電腦處理器上執行邏輯運算的方法,包括:從兩個或更多的來源運算元之每一者讀取資料;對於該兩個或更多的來源運算元之每一位元位置:結合從該兩個或更多的來源運算元之每一者讀取的對應位元及從該兩個或更多的來源運算元之其他來源運算元之每一者讀取的對應位元以產生指標值,該指標值標示與指令相關聯的立即值內的單一位元;從該立即值讀取由該指標值標示的該單一位元;以及在目的暫存器內儲存每一從該立即值讀取的每一單一位元,以產生該指令的結果。
  2. 如申請專利範圍第1項之方法,其中結合從該兩個或更多的來源運算元之每一者讀取的對應位元及從該兩個或更多的來源運算元之其他來源運算元之每一者讀取的對應位元以產生指標值包括:將自每一來源運算元讀取的對應位元串接,以產生該指標值,該指標值係由一組標示該立即值內的位元位置之串接的對應位元所組成。
  3. 如申請專利範圍第2項之方法,更包括:從該立即值之該標示的位元位置讀取單一位元且儲存結果位元值於該目的暫存器之對應至從每一來源運算元讀取的該對應位元之該位元位置的位元位置。
  4. 如申請專利範圍第2項之方法,其中該兩個或更多來源運算元係儲存於N位元來源暫存器,且該目的暫存器 係為N位元目的暫存器,其中N係為正整數,其中串接讀取自每一來源運算元之對應位元以產生該指標值係以平行方式對該兩個或更多來源運算元之全部N位元位置執行,而導致N指標至該立即值,且其中該N指標標示在該立即值中的N位元位置,且其中以平行方式複製來自該立即值的N指標位元至該目的暫存器以形成該指令的該結果。
  5. 如申請專利範圍第4項的方法,其中N等於64。
  6. 如申請專利範圍第1項的方法,其中該兩個或更多來源運算元包括三個來源運算元,且其中該立即值是8位元,該方法進一步包含:將讀取自每一該三個來源運算元的對應位元串接以產生該指標值,該指標值係由一組標示該8位元立即值內的位元位置之串接的對應位元所組成。
  7. 如申請專利範圍第1項的方法,其中該立即值是一隨著該指令傳送的8位元值。
  8. 如申請專利範圍第7項的方法,其中該8位元值是一imm8值。
  9. 如申請專利範圍第1項的方法,其中該立即值是一隨著該指令傳送的16位元值。
  10. 一種用以處理指令的裝置,包含:一解碼器單元,用以將一指令加以解碼,並標示該指令要進行的一邏輯運算;以及一硬體執行單元,藉由進行以下的運算,以執行該邏 輯運算:從兩個或更多的來源運算元之每一者讀取資料;對於該兩個或更多的來源運算元之每一位元位置:結合從該兩個或更多的來源運算元之每一者讀取的對應位元及從該兩個或更多的來源運算元之其他來源運算元之每一者讀取的對應位元以產生指標值,該指標值標示與指令相關聯的立即值內的單一位元;從該立即值讀取由該指標值標示的該單一位元;以及在目的暫存器內儲存每一從該立即值讀取的每一單一位元,以產生該指令的結果。
  11. 如申請專利範圍第10項之裝置,其中結合從該兩個或更多的來源運算元之每一者讀取的對應位元及從該兩個或更多的來源運算元之其他來源運算元之每一者讀取的對應位元以產生指標值包括:將自每一來源運算元讀取的對應位元串接,以產生該指標值,該指標值係由一組標示該立即值內的位元位置之串接的對應位元所組成。
  12. 如申請專利範圍第11項之裝置,其中該執行單元可執行額外的運算:從該立即值之該標示的位元位置讀取單一位元且儲存結果位元值於該目的暫存器之對應至從每一來源運算元讀取的該對應位元之該位元位置的位元位置。
  13. 如申請專利範圍第11項之裝置,其中該兩個或更多來源運算元係儲存於N位元來源暫存器,且該目的暫存 器係為N位元目的暫存器,其中N係為正整數,其中串接讀取自每一來源運算元之對應位元以產生該指標值係以平行方式對該兩個或更多來源運算元之全部N位元位置執行,而導致N指標至該立即值,且其中該N指標標示在該立即值中的N位元位置,且其中以平行方式複製來自該立即值的N指標位元至該目的暫存器以形成該指令的該結果。
  14. 如申請專利範圍第13項之裝置,其中N等於64。
  15. 如申請專利範圍第10項之裝置,其中該兩個或更多來源運算元包括三個來源運算元,且其中該立即值是8位元,該方法進一步包含:將讀取自每一該三個來源運算元的對應位元串接以產生該指標值,該指標值係由一組標示該8位元立即值內的位元位置之串接的對應位元所組成。
  16. 如申請專利範圍第10項之裝置,其中該立即值是一隨著該指令傳送的8位元值。
  17. 如申請專利範圍第16項之裝置,其中該8位元值是一imm8值。
  18. 如申請專利範圍第10項之裝置,其中該立即值是一隨著該指令傳送的16位元值。
  19. 一電腦系統,包含:一顯示裝置;一記憶體,用以儲存指令; 一處理器,用以處理該等指令,包含:一解碼器單元,用以將一指令加以解碼,並標示該指令要進行的一邏輯運算;以及一硬體執行單元,藉由進行以下的運算,以執行該邏輯運算:從兩個或更多的來源運算元之每一者讀取資料;對於該兩個或更多的來源運算元之每一位元位置:結合從該兩個或更多的來源運算元之每一者讀取的對應位元及從該兩個或更多的來源運算元之其他來源運算元之每一者讀取的對應位元以產生指標值,該指標值標示與指令相關聯的立即值內的單一位元;從該立即值讀取由該指標值標示的該單一位元;以及在目的暫存器內儲存每一從該立即值讀取的每一單一位元,以產生該指令的結果。
  20. 如申請專利範圍第19項之系統,其中結合從該兩個或更多的來源運算元之每一者讀取的對應位元及從該兩個或更多的來源運算元之其他來源運算元之每一者讀取的對應位元以產生指標值包括:將自每一來源運算元讀取的對應位元串接,以產生該指標值,該指標值係由一組標示該立即值內的位元位置之串接的對應位元所組成。
  21. 如申請專利範圍第20項之系統,其中該執行單元 執行額外的運算:從該立即值之該標示的位元位置讀取單一位元且儲存結果位元值於該目的暫存器之對應至從每一來源運算元讀取的該對應位元之該位元位置的位元位置。
  22. 如申請專利範圍第20項之系統,其中該兩個或更多來源運算元係儲存於N位元來源暫存器,且該目的暫存器係為N位元目的暫存器,其中N係為正整數,其中串接讀取自每一來源運算元之對應位元以產生該指標值係以平行方式對該兩個或更多來源運算元之全部N位元位置執行,而導致N指標至該立即值,且其中該N指標標示在該立即值中的N位元位置,且其中以平行方式複製來自該立即值的N指標位元至該目的暫存器以形成該指令的該結果。
  23. 如申請專利範圍第22項之系統,其中N等於64。
  24. 如申請專利範圍第19項之系統,其中該兩個或更多來源運算元包括三個來源運算元,且其中該立即值是8位元,該方法進一步包含:將讀取自每一該三個來源運算元的對應位元串接以產生該指標值,該指標值係由一組標示該8位元立即值內的位元位置之串接的對應位元所組成。
  25. 如申請專利範圍第19項之系統,其中該立即值是一隨著該指令傳送的8位元值。
  26. 如申請專利範圍第25項之系統,其中該8位元值 是一imm8值。
  27. 如申請專利範圍第19項之系統,其中該立即值是一隨著該指令傳送的16位元值。
TW103104892A 2010-09-24 2011-09-23 萬用邏輯運算之方法及裝置 TWI512618B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/890,571 US8539206B2 (en) 2010-09-24 2010-09-24 Method and apparatus for universal logical operations utilizing value indexing

Publications (2)

Publication Number Publication Date
TW201432564A TW201432564A (zh) 2014-08-16
TWI512618B true TWI512618B (zh) 2015-12-11

Family

ID=45871870

Family Applications (2)

Application Number Title Priority Date Filing Date
TW100134372A TWI435266B (zh) 2010-09-24 2011-09-23 萬用邏輯運算之方法及裝置
TW103104892A TWI512618B (zh) 2010-09-24 2011-09-23 萬用邏輯運算之方法及裝置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW100134372A TWI435266B (zh) 2010-09-24 2011-09-23 萬用邏輯運算之方法及裝置

Country Status (9)

Country Link
US (1) US8539206B2 (zh)
JP (1) JP5607832B2 (zh)
KR (1) KR101524450B1 (zh)
CN (1) CN103109261B (zh)
BR (1) BR112013006661A2 (zh)
DE (1) DE112011103197T5 (zh)
GB (1) GB2499532B (zh)
TW (2) TWI435266B (zh)
WO (1) WO2012040552A2 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120124341A1 (en) * 2010-11-17 2012-05-17 Goodrich Allen B Methods and Apparatus for Performing Multiple Operand Logical Operations in a Single Instruction
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
US20140095845A1 (en) * 2012-09-28 2014-04-03 Vinodh Gopal Apparatus and method for efficiently executing boolean functions
US9471310B2 (en) * 2012-11-26 2016-10-18 Nvidia Corporation Method, computer program product, and system for a multi-input bitwise logical operation
GB2523823B (en) * 2014-03-07 2021-06-16 Advanced Risc Mach Ltd Data processing apparatus and method for processing vector operands
US20160283242A1 (en) * 2014-12-23 2016-09-29 Intel Corporation Apparatus and method for vector horizontal logical instruction
US20160179521A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Method and apparatus for expanding a mask to a vector of mask values
US10296489B2 (en) * 2014-12-27 2019-05-21 Intel Corporation Method and apparatus for performing a vector bit shuffle
US10296334B2 (en) * 2014-12-27 2019-05-21 Intel Corporation Method and apparatus for performing a vector bit gather
CN111902828A (zh) * 2018-04-20 2020-11-06 谷歌有限责任公司 执行么正迭代和索引运算

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5500947A (en) * 1988-06-27 1996-03-19 Digital Equipment Corporation Operand specifier processing by grouping similar specifier types together and providing a general routine for each
TW498275B (en) * 1999-05-24 2002-08-11 Toshiba Corp Processor unit
TWI233175B (en) * 2001-06-15 2005-05-21 Stc Unm Method for designing a digital integrated circuit chip, computer-readable storage medium, method for optimizing an application specific integrated circuit, method for optimizing a digital design, ASIC cell library for use in creation of custom integrated
US7464255B1 (en) * 2005-07-28 2008-12-09 Advanced Micro Devices, Inc. Using a shuffle unit to implement shift operations in a processor

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4237532A (en) * 1977-09-02 1980-12-02 Sperry Corporation Table driven decision and control logic for digital computers
US5493687A (en) * 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5881307A (en) 1997-02-24 1999-03-09 Samsung Electronics Co., Ltd. Deferred store data read with simple anti-dependency pipeline inter-lock control in superscalar processor
JPH1185507A (ja) * 1997-09-05 1999-03-30 Mitsubishi Electric Corp 中央処理装置およびマイクロコンピュータシステム
US6721866B2 (en) 2001-12-21 2004-04-13 Intel Corporation Unaligned memory operands
US7014122B2 (en) * 2003-12-24 2006-03-21 International Business Machines Corporation Method and apparatus for performing bit-aligned permute
WO2008002177A1 (en) * 2006-06-30 2008-01-03 Intel Corporation Generating optimal instruction sequences for bitwise logical expressions
US20080021942A1 (en) * 2006-07-20 2008-01-24 On Demand Microelectronics Arrangements for evaluating boolean functions
US20080100628A1 (en) * 2006-10-31 2008-05-01 International Business Machines Corporation Single Precision Vector Permute Immediate with "Word" Vector Write Mask
CN101178644B (zh) * 2006-11-10 2012-01-25 上海海尔集成电路有限公司 一种基于复杂指令集计算机结构的微处理器架构
US7941641B1 (en) 2007-10-01 2011-05-10 Yong-Kyu Jung Retargetable instruction decoder for a computer processor

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5500947A (en) * 1988-06-27 1996-03-19 Digital Equipment Corporation Operand specifier processing by grouping similar specifier types together and providing a general routine for each
TW498275B (en) * 1999-05-24 2002-08-11 Toshiba Corp Processor unit
TWI233175B (en) * 2001-06-15 2005-05-21 Stc Unm Method for designing a digital integrated circuit chip, computer-readable storage medium, method for optimizing an application specific integrated circuit, method for optimizing a digital design, ASIC cell library for use in creation of custom integrated
US7464255B1 (en) * 2005-07-28 2008-12-09 Advanced Micro Devices, Inc. Using a shuffle unit to implement shift operations in a processor

Also Published As

Publication number Publication date
JP2013543175A (ja) 2013-11-28
TW201432564A (zh) 2014-08-16
CN103109261B (zh) 2016-03-09
GB2499532B (en) 2020-04-01
TWI435266B (zh) 2014-04-21
KR20130064797A (ko) 2013-06-18
GB201306690D0 (en) 2013-05-29
GB2499532A (en) 2013-08-21
WO2012040552A3 (en) 2012-05-18
TW201232392A (en) 2012-08-01
US8539206B2 (en) 2013-09-17
BR112013006661A2 (pt) 2016-06-07
US20120079244A1 (en) 2012-03-29
JP5607832B2 (ja) 2014-10-15
KR101524450B1 (ko) 2015-06-02
WO2012040552A2 (en) 2012-03-29
DE112011103197T5 (de) 2013-07-04
CN103109261A (zh) 2013-05-15

Similar Documents

Publication Publication Date Title
TWI512618B (zh) 萬用邏輯運算之方法及裝置
JP6351682B2 (ja) 装置および方法
TWI470543B (zh) 用於多精度算術之單一指令多重資料(simd)整數乘法累加指令
TWI567751B (zh) 多暫存器記憶體存取指令、處理器、方法及系統
CN107273095B (zh) 用于对齐寄存器的系统、装置和方法
CN107918546B (zh) 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统
CN118034781A (zh) 用于矩阵加法、减法和乘法的系统、方法和装置
CN109716290B (zh) 用于经融合的乘加的系统、装置和方法
TWI641993B (zh) 用以反轉與置換在一遮罩暫存器內的位元之設備及方法(二)
TWI502490B (zh) 用以處理加法指令之方法、及用以執行加法指令之裝置與系統
JP2015530674A (ja) コンフリクト検出を実行し、レジスタの複数のコンテンツを別のレジスタの複数のデータ要素位置にブロードキャストするための複数のシステム、複数の装置及び複数の方法
TW201732589A (zh) 用於容錯及錯誤偵測之系統、方法和裝置
JP2014510351A (ja) マスクレジスタを用いてジャンプを行うシステム、装置、および方法
JP2018506094A (ja) 多倍長整数(big integer)の算術演算を実行するための方法および装置
KR101927858B1 (ko) Rsa 알고리즘 가속 프로세서들, 방법들, 시스템들 및 명령어들
TW201721409A (zh) 向量運算指令
TWI582693B (zh) 用於產生抑制的位址軌跡之設備和方法
JP5798650B2 (ja) 短整数の乗算の数を減らすためのシステム、装置、および方法
US20190102199A1 (en) Methods and systems for executing vectorized pythagorean tuple instructions
JP5753603B2 (ja) データ要素内のビットをゼロ化するためのシステム、装置、および方法
TWI841041B (zh) 用於融合乘加運算的系統、裝置及方法

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees