TWI514268B - 合併遮罩圖案之指令 - Google Patents

合併遮罩圖案之指令 Download PDF

Info

Publication number
TWI514268B
TWI514268B TW101147492A TW101147492A TWI514268B TW I514268 B TWI514268 B TW I514268B TW 101147492 A TW101147492 A TW 101147492A TW 101147492 A TW101147492 A TW 101147492A TW I514268 B TWI514268 B TW I514268B
Authority
TW
Taiwan
Prior art keywords
mask
instruction
vector
field
bit
Prior art date
Application number
TW101147492A
Other languages
English (en)
Other versions
TW201339966A (zh
Inventor
Jesus Corbal
Matthew J Craighead
Dennis R Bradford
Jonathan C Hall
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 TW201339966A publication Critical patent/TW201339966A/zh
Application granted granted Critical
Publication of TWI514268B publication Critical patent/TWI514268B/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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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

Description

合併遮罩圖案之指令
本發明之欄位大體上關於計算系統,更具體地關於用於合併遮罩圖案之指令。
圖1顯示以半導體晶片上邏輯電路實施之處理核心100的高位準圖。處理核心包括管線101。管線包含多級,各個經設計以實施完全執行程式碼指令所需多步驟程序中特定步驟。該些步驟典型地至少包括:1)指令提取及解碼;2)資料提取;3)執行;4)寫回。執行級於資料上實施藉由先前級中(例如以上步驟1)中)提取及解碼之指令所識別的特定運算,該資料係藉由相同指令識別並於其他先前級(例如以上步驟2))中提取。所操作之資料係典型地從(通用)暫存器儲存空間102提取。於運算完成時製造之新資料亦典型地「寫回」至暫存器儲存空間(例如在以上級4))。
與執行級有關之邏輯電路典型地由多「執行單元」或「功能單元」103_1至103_N組成,各個經設計以實施其本身獨特運算子集(例如第一功能單元實施整數算術運算,第二功能單元實施浮點指令,第三功能單元實施載入/儲存運算自/至高速緩衝記憶體/記憶體等)。藉由所有功能單元實施之所有運算的彙整相應於藉由處理核心100支援之「指令集」。
二處理器架構類型廣泛地於電腦科學之領域中識別:「純量」及「向量」。純量處理器經設計以執行於單一資料項上實施運算之指令,反之,向量處理器經設計以執行於多資料項上實施運算之指令。圖2A及2B呈現比較範例,其展現純量處理器及向量處理器的基本差異。
圖2A顯示純量AND指令之範例,其中單一運算元集A及B被「AND」在一起,以產生單一(或「純量」)結果C(即AB=C)。相對地,圖2B顯示向量AND指令之範例,其中二運算元集,A/B及D/E,並列分別被「AND」在一起,以同步產生向量結果C、F(即A.AND.B=C及D.AND.E=F)。作為一項術語,「向量」為具有多「元件」之資料元件。例如,向量V=Q,R,S,T,U,具有五個不同元件;Q、R、S、T及U。示範向量V之「尺寸」為五(因為其具有五個元件)。
當執行向量指令時(即其個別提取及寫回之資料項相應於向量並非純量的指令),通常需要改變藉由指令實際操作之向量內的元件數量。例如,可需要僅加上二向量之第二及第四元件,V1=A,B,C,D,E及V2=Q,R,S,T,U(即結果=(B+R),(D+T))。
「遮罩」為資料結構,其定義將操作向量的哪一元件。例如,相關於上述範例,其中向量V1及V2之第二及第四元件相加,遮罩M=0,1,0,1,0可用以識別向量V1及V2之第二及第四元件。請注意,遮罩M本身為向量。
【發明內容及實施方式】
回頭參照圖1,在處理核心100包括向量處理執行單元的狀況下,請注意在個別輸入至及輸出自向量功能單元103_1至103_N出現讀取遮罩邏輯104_1至104_N及寫入遮罩邏輯105_1至105_N。請注意,各式向量處理器架構可恰包括該些遮罩層之一者。此處,對使用遮罩的任何指令而言,讀取遮罩邏輯104_1至104_N及/或寫入遮罩邏輯105_1至105_N可用以控制哪些元件將針對向量指令有效地操作。此處,遮罩向量係讀取自遮罩暫存器空間106(例如連同從暫存器儲存空間102讀取輸入資料向量)並呈現於遮罩邏輯104、105層之至少一者。
請注意,透過執行向量程式碼的過程,每一向量指令不需要求全資料字。例如,若干指令之輸入向量可僅為8元件,其他指令之輸入向量可為16元件,其他指令之輸入向量可為32元件等。正因為如此,藉由處理器用以執行該些指令之遮罩向量的尺寸可類似地改變(例如8位元、16位元、32位元等)。典型地,利用向量的低排列位元。例如,若處理器支援64元件資料字,但目前指令僅處理8元件向量,指令之遮罩將於遮罩向量的最低排列8位元中反映。
遮罩暫存器空間106保持處理器希望保持及重用的不同遮罩向量。此處,由於遮罩相應於處理器可透過執行程式碼之過程處理之各式向量指令之相關元件的圖案,從遮罩暫存器空間106提取適當遮罩允許容易存取所欲遮罩圖 案(例如相對於從暫用計算所欲遮罩圖案)。然而,遮罩暫存器空間106是有限的。
對於遮罩暫存器空間106中無空間存在之遮罩圖案可「充滿」進入高速緩衝記憶體107或記憶體108。當遮罩圖案本身小時,遮罩圖案充滿進入高速緩衝記憶體/記憶體可為特別無效率。例如,若向量處理器支援64元件的最大向量尺寸,僅8位元寬的遮罩圖案充滿高速緩衝記憶體/記憶體,本質上「充滿」8位元遮罩向量的交易有效地浪費了56位元資料價值。即,在原始帶寬方面,處理器可處置充滿最多64位元尺寸的遮罩資料。以該等硬體充滿僅8位元遮罩資料相應於未使用之可充滿56位元的資源。
因此,先前實施已嘗試將儲存於遮罩暫存器空間106中的遮罩圖案連結進入單一資料結構。例如,可連結不同遮罩儲存空間位置的兩個16位元遮罩圖案以形成32位元遮罩圖案。
如圖3中所觀察,習知技藝解決方案包括二指令序列,其包括:i)第一指令301從遮罩暫存器空間106讀出將合併的遮罩圖案M1、M2,並將其合併進入通用暫存器空間102作為合併的向量M;ii)第二指令302接著從通用暫存器空間讀取合併的向量M,並將合併的向量M寫入高速緩衝記憶體/記憶體。
圖4中描繪新方法。圖4中所觀察之方法利用相對新近指令格式技術,其可個別地定義目的地位址及二不同來 源位址。傳統指令格式技術使目的地位址及一個來源位址重疊。例如,傳統ADD指令可採用ADD X Y形式。在執行該指令中,處理器將:i)在暫存器位址X讀取第一輸入運算元;ii)在暫存器位址Y讀取第二輸入運算元;以及iii)將將二輸入運算元相加的結果寫回暫存器位址X。因此,結果便儲存於相同暫存器,其中先前已儲存一個輸入運算元。
相對新的商業技術(例如來自Intel公司的VEX指令技術及/或AVX指令技術)採用新指令格式,其可個別地指明二輸入運算元之位址及目的地位址。例如,儲存於暫存器X及Y中運算元的加法可以實施ADD Z X Y形式之指令取代。在此狀況下,如前,處理器將:i)在暫存器位址X讀取第一輸入運算元;以及ii)在暫存器位址Y讀取第二輸入運算元。然而,並非將結果存回來源運算元暫存器之一者,結果係替代地儲存於位址Z的第三暫存器中。VEX及延伸VEX(EVEX)技術亦包括指明四個運算元(例如3輸入運算元及目的地)之能力。以下進一步提供VEX及EVEX的討論。
如以上說明,圖4中所觀察之方法使用目的地/來源_1/來源_2指令位址格式。具體地,指令採用KCONCATSTORE[R]Z X Y之形式,其中X為其中保持第一「小」遮罩圖案之遮罩暫存器檔案中暫存器之位址,及Y為其中保持第二「小」遮罩圖案之遮罩暫存器檔案中另一暫存器之位址。指令合併二遮罩圖案以製造新遮罩圖案,其之後儲存於位 址Z之記憶體中。具體地,實施指令之執行單元製造致使寫入至位址Z之記憶體之資料結構作為其結果。
KCONCATSTORE[R]中「[R]」相應於特定定義之定義遮罩圖案尺寸的相同整體指令級別之不同運算碼之存在。例如,如圖5中觀察,KCONCATSTOREB相應於合併二個8位元遮罩圖案為16位元遮罩圖案之指令,KCONCATSTOREW相應於合併二個16位元遮罩圖案為32位元遮罩圖案之指令,KCONCATSTORED相應於合併二個32位元遮罩圖案為64位元遮罩圖案之指令,以及KCONCATSTOREQ相應於合併二個64位元遮罩圖案為128位元遮罩圖案之指令。一般技術之人士將理解,遮罩圖案尺寸之各式組合,包括以相同KCONCATSTORE指令合併不同尺寸遮罩圖案亦為可能。
回頭參照圖1,在執行KCONCATSTORE[R]Z X Y指令中,從遮罩暫存器空間106讀取分別儲存於位址X及Y之遮罩圖案,並呈現於合併二遮罩圖案之處理器管線101的執行級中功能單元之一者。在進一步實施例中,遮罩圖案呈現於載入/儲存執行單元。載入/儲存單元合併二遮罩圖案並製造致使合併之圖案儲存於位址Z的記憶體中之結果資料結構。在替代實施例中,[R]參數用以指明進一步運算碼,並非將合併之圖案儲存於記憶體中,而是將合併之圖案儲存回遮罩暫存器空間中。在此狀況下,Z相應於遮罩暫存器空間中之目的地位址。藉由包括載入/儲存單元(具ALU功能性)或ALU單元之各式執行單元之任一者 可實施指令。
如以上所說明,遮罩圖案被合併及儲存,使得其之後可重用。當需要已合併之遮罩圖案時,便從其儲存處(例如記憶體)讀取合併之遮罩資料結構。最後從合併之遮罩資料結構汲取所欲遮罩圖案,並重用於需要的向量運算。
在實施例中,以從記憶體讀取合併之遮罩結構並儲存於通用暫存器空間中的第一指令,及從通用暫存器空間讀取合併之遮罩結構,將該結構劃分為其組成遮罩圖案,並將其個別儲存於個別遮罩暫存器儲存空間中的第二指令,而完成此程序。此處,Intel的AVX指令格式允許單一來源運算元的識別及二不同目的地的識別。
示範指令格式
文中所說明之指令實施例可以不同格式體現。例如文中所說明之指令可體現為VEX、通用向量親和、或其他格式。以下討論VEX及通用向量親和格式之細節。此外,以下詳述示範系統、架構、及管線。指令實施例可於該等系統、架構、及管線上執行,但不侷限於此。
VEX指令格式
VEX編碼允許指令具有二運算元以上,並允許SIMD向量暫存器長於128位元。使用VEX前置提供用於三個運算元(或更多)句法。例如,先前二個運算元指令實施之運算諸如A=A+B,其覆寫來源運算元。VEX前置致能運 算元實施非破壞性運算諸如A=B+C。
圖6A描繪示範AVX指令格式,包括VEX前置602、真實運算碼欄位630、Mod R/M位元組640、SIB位元組650、位移欄位662、及IMM8 672。圖6B描繪來自圖6A之哪些欄位組成全運算碼欄位674及基本運算欄位642。圖6C描繪來自圖6A之哪些欄位組成暫存器指標欄位644。
VEX前置(位元組0-2)602係以三個位元組形式編碼。第一位元組為格式欄位640(VEX位元組0,位元[7:0]),其包含明確的C4位元組值(用於區別C4指令格式之獨特值)。第二-第三位元組(VEX位元組1-2)包括提供特定能力之位元數量欄位。具體地,REX欄位605(VEX位元組1,位元[7-5])包括VEX.R位元欄位(VEX位元組1,位元[7]-R)、VEX.X位元欄位(VEX位元組1,位元[6]-X)、及VEX.B位元欄位(VEX位元組1,位元[5]-B)。指令之其他欄位將暫存器指標之較低三個位元編碼如本技藝中已知(rrr、xxx、及bbb),使得可藉由相加VEX.R、VEX.X、及VEX.B形成Rrrr、Xxxx、及Bbbb。運算碼映射欄位615(VEX位元組1,位元[4:0]-mmmmm)包括編碼暗示的前導運算碼位元組之內容。W欄位664(VEX位元組2,位元[7]-W)係由記號VEX.W代表,並依據指令提供不同功能。VEX.vvvv 66(VEX位元組2,位元[6:3]-vvvv)之角色可包括下列:1)VEX.vvvv編碼第一來源暫存器運算元,以反向(1之補數)形式指明並有效用於具2或更多來源運 算元之指令;2)VEX.vvvv編碼目的地暫存器運算元,以1之補數形式指明用於某向量偏移;或3)VEX.vvvv並未編碼任何運算元,欄位保留並應包含1111b。若VEX.L 668尺寸欄位(VEX位元組2,位元[2]-L)=0,便指出128位元向量;若VEX.L=1,便指出256位元向量。前置編碼欄位625(VEX位元組2,位元[1:0]-pp)提供額外位元用於基本運算欄位。
真實運算碼欄位630(位元組3)亦已知為運算碼位元組。部分運算碼係於此欄位中指明。
MOD R/M欄位640(位元組4)包括MOD欄位642(位元[7-6])、Reg欄位644(位元[5-3])、及R/M欄位646(位元[2-0])。Reg欄位644之角色可包括下列:編碼目的地暫存器運算元或來源暫存器運算元(Rrrr之rrr),或被處理為運算碼延伸且未用以編碼任何指令運算元。R/M欄位646之角色可包括下列:編碼參考記憶體位址之指令運算元,或編碼目的地暫存器運算元或來源暫存器運算元。
標度、指標、基(SIB)-標度欄位650(位元組5)之內容包括SS652(位元[7-6]),其用於記憶體位址產生。SIB.xxx 654(位元[5-3])及SIB.bbb 656(位元[2-0])之內容先前已參照有關暫存器指標Xxxx及Bbbb。
位移欄位662及立即運算元欄位(IMM8)672包含位址資料。
通用向量親和指令格式
向量親和指令格式為適於向量指令之指令格式(例如存在特定於向量運算之某欄位)。雖然所說明之實施例其中經由向量親和指令格式支援向量及純量運算,但替代實施例僅使用向量親和指令格式之向量運算。
圖7A-7B為方塊圖,描繪依據本發明之實施例之通用向量親和指令格式及其指令模板。圖7A為方塊圖,描繪依據本發明之實施例之通用向量親和指令格式及其A級指令模板;同時圖7B為方塊圖,描繪依據本發明之實施例之通用向量親和指令格式及其B級指令模板。具體地,通用向量親和指令格式700係定義A級及B級指令模板,二者均包括無記憶體存取705指令模板及記憶體存取720指令模板。向量親和指令格式之上下文中用詞通用係指未固定於任何特定指令集之指令格式。
雖然將說明本發明之實施例其中向量親和指令格式支援下列:64位元組向量運算元長度(或尺寸)且32位元(4位元組)或64位元(8位元組)資料元件寬度(或尺寸)(及因而,64位元組向量包括16個雙字尺寸元件或另一方面,8個四倍字尺寸元件);64位元組向量運算元長度(或尺寸)且16位元(2位元組)或8位元(1位元組)資料元件寬度(或尺寸);32位元組向量運算元長度(或尺寸)且32位元(4位元組)、64位元(8位元組)、16位元(2位元組)、或8位元(1位元組)資料元件寬度(或尺寸);以及16位元組向量運算元長度(或尺寸)且32位元(4位元組)、64位元(8位元組)、16位元(2位元組)、或8位元(1位元組)資料元件寬 度(或尺寸);替代實施例可支援更多、更少及/或不同向量運算元尺寸(例如256位元組向量運算元)且更多、更少、或不同資料元件寬度(例如128位元(16位元組)資料元件寬度)。
圖7A中A級指令模板包括:1)在無記憶體存取705指令模板內顯示無記憶體存取全捨入控制型運算710指令模板,及無記憶體存取資料轉換型運算715指令模板;以及2)在記憶體存取720指令模板內顯示記憶體存取暫時725指令模板,及記憶體存取非暫時730指令模板。圖7B中B級指令模板包括:1)在無記憶體存取705指令模板內顯示無記憶體存取寫入遮罩控制部分捨入控制型運算712指令模板,及無記憶體存取寫入遮罩控制VSIZE型運算717指令模板;以及2)在記憶體存取720指令模板內顯示記憶體存取寫入遮罩控制727指令模板。
通用向量親和指令格式700包括以下以圖7A-7B中所描繪之順序表列的下列欄位。在實施例中,參照以下圖7A-B及8中所提供之格式細節,結合以上所討論關於KCONCATSTORE Z X Y指令,利用記憶體存取指令類型720。在以下說明之暫存器位址欄位744中指定第一及第二輸入運算元X Y(相應於二遮罩暫存器位址)及目的地Z(其相應於記憶體寫入位址)。
格式欄位740-此欄位中特定值(指令格式識別符值)獨特地識別向量親和指令格式,因而識別指令流中向量親和指令格式之指令發生。正因為如此,在不需用於僅具有通 用向量親和指令格式之指令集的意義上,此欄位是可選擇的。
基運算欄位742-其內容區別不同基運算。
暫存器指標欄位744-其內容係直接或經由位址產生,指明位於暫存器或記憶體中之來源及目的地運算元的位置。該些包括充分位元數量以從PxQ(例如32x512、16x128、32x1024、64x1024)暫存器檔案選擇N暫存器。雖然在一實施例中,N最多可為三個來源及一個目的地暫存器,但替代實施例可支援更多或更少來源及目的地暫存器(例如可支援最多二個來源,其中該些來源之一者亦充當目的地,可支援最多三個來源,其中該些來源之一者亦充當目的地,可支援最多二個來源及一個目的地)。
修飾符欄位746-其內容區別指明記憶體存取之通用向量指令格式的指令發生與未發生者,即無記憶體存取705指令模板與記憶體存取720指令模板之間。記憶體存取運算讀取及/或寫入至記憶體階層(在若干狀況下使用暫存器中之值指明來源及/或目的地位址),同時未實施非記憶體存取運算(例如來源及目的地為暫存器)。雖然在一實施例中,此欄位亦於三個不同方式之間選擇以實施記憶體位址計算,替代實施例可支援更多、更少、或不同方式以實施記憶體位址計算。
擴大運算欄位750-其內容區別除了基運算以外實施之各種不同運算之一者。此欄位係針對特定上下文。在本發明之一實施例中,此欄位劃分為級別欄位768、阿爾發欄 位752、及貝他欄位754。擴大運算欄位750允許以單一指令,而非2、3、或4指令,實施共同群組運算。
標度欄位760-其內容允許標度指標欄位之內容用於記憶體位址產生(例如用於位址產生,其使用2標度 *指標+基)。
位移欄位762A-其內容用作部分記憶體位址產生(例如用於位址產生,其使用2標度 *指標+基+位移)。
位移因素欄位762B(請注意,位移欄位762A直接在位移因素欄位762B上之並列指出係使用其一或另一者)-其內容用作部分位址產生;其指明藉由記憶體存取之尺寸(N)標度的位移因素-其中N為記憶體存取中位元組數量(例如用於位址產生,其使用2標度 *指標+基+標度之位移)。冗餘低階位元忽略,因此位移因素欄位之內容乘以記憶體運算元總尺寸(N),以便產生最後位移而用於計算有效位址。N之值係藉由處理器硬體於運行時依據全運算碼欄位774(文中之後說明)及資料操縱欄位754C決定。在未用於無記憶體存取705指令模板及/或僅可實施二者之一或均未實施之不同實施例的意義上,位移欄位762A及位移因素欄位762B是可選擇的。
資料元件寬度欄位764-其內容區別將使用若干資料元件寬度之哪一者(在若干實施例中用於所有指令;在其他實施例中僅用於若干指令)。在若僅支援一資料元件寬度及/或使用運算碼之若干方面支援資料元件寬度,便不需要此欄位的意義上,此欄位是可選擇的。
寫入遮罩欄位770-在每一資料元件位置的基礎上,其內容控制目的地向量運算元中資料元件位置是否反映基運算及擴大運算之結果。A級指令模板支援合併寫入遮罩,同時B級指令模板支援合併及歸零寫入遮罩。當合併時,向量遮罩允許目的地中任何元件組受保護免於在任何運算(由基運算及擴大運算指明)執行期間更新;在另一實施例中,保留目的地之每一元件的舊值,其中相應遮罩位元具有0。相反地,當歸零時,向量遮罩允許目的地中任何元件組在任何運算(由基運算及擴大運算指明)執行期間歸零;在一實施例中,當相應遮罩位元具有0值時,目的地之元件設定為0。此功能性之子集為控制實施之運算之向量長度的能力(即,修改之元件的跨距從第一個至最後一個);然而,修改之元件不一定為連續。因而,寫入遮罩欄位770允許用於部分向量運算,包括載入、儲存、算術、邏輯等。雖然所說明之本發明之實施例其中寫入遮罩欄位770之內容選擇包含將使用之寫入遮罩的若干寫入遮罩暫存器之一者(因而寫入遮罩欄位770之內容間接識別將實施之遮罩),替代實施例取代或額外允許寫入遮罩欄位770之內容直接指明將實施之遮罩。
立即值欄位772-其內容允許用於立即值之規格。在此欄位未呈現於未支援立即值之通用向量親和格式之實施中,及其未呈現於未使用立即值之指令中的意義上,此欄位是可選擇的。
級別欄位768-其內容於不同級別指令之間區別。參照 圖7A-B,此欄位之內容於A級及B級指令之間選擇。在圖7A-B中,捨入的角落方格用以指出特定值呈現於欄位中(例如圖7A-B中分別用於級別欄位768之A級768A及B級768B)。
A級指令模板
若為A級非記憶體存取705指令模板,阿爾發欄位752便解譯為RS欄位752A,其內容區別不同擴大運算類型之哪一者將被實施(例如捨入752A.1及資料轉換752A.2分別指明用於無記憶體存取捨入型運算710指令模板及無記憶體存取資料轉換型運算715指令模板),同時貝他欄位754區別指定類型之運算之哪一者將被實施。在無記憶體存取705指令模板中,未呈現標度欄位760、位移欄位762A、及位移標度欄位762B。
無記憶體存取指令模板-全捨入控制型運算
在無記憶體存取全捨入控制型運算710指令模板中,貝他欄位754被解譯為捨入控制欄位754A,其內容提供靜態捨入。雖然在所說明之本發明之實施例中,捨入控制欄位754A包括抑制所有浮點例外(SAE)欄位756及捨入運算控制欄位758,替代實施例可支援將該些概念編碼為相同欄位或僅具有該些概念/欄位之一者或另一者(例如可僅具有捨入運算控制欄位758)。
SAE欄位756-其內容區別是否停用例外事件報導;當 SAE欄位756之內容指出致能抑制時,特定指令未報導任何種類浮點例外旗標,且未提昇任何浮點例外處置器。
捨入運算控制欄位758-其內容區別將實施哪一群組捨入運算(例如捨進、捨去、捨入朝向零及捨入朝向最近)。因而,捨入運算控制欄位758允許在每一指令之基礎上改變捨入模式。在本發明之一實施例中,其中處理器包括控制暫存器以指明捨入模式,捨入運算控制欄位758之內容置換暫存器值。
無記憶體存取指令模板-資料轉換型運算
在無記憶體存取資料轉換型運算715指令模板中,貝他欄位754解譯為資料轉換欄位754B,其內容區別將實施若干資料轉換之哪一者(例如無資料轉換、拌和、播送)。
若為A級記憶體存取720指令模板,阿爾發欄位752解譯為驅逐提示欄位752B,其內容區別將使用哪一驅逐提示(在圖7A中,暫時752B.1及非暫時752B.2分別指明用於記憶體存取暫時725指令模板及記憶體存取非暫時730指令模板),同時貝他欄位754解譯為資料操縱欄位754C,其內容區別將實施若干資料操縱運算(亦已知為基元)之哪一者(例如無操縱;播送;來源之上轉換;及目的地之下轉換)。記憶體存取720指令模板包括標度欄位760,以及選擇地位移欄位762A或位移標度欄位762B。
向量記憶體指令實施自記憶體之向量載入及至記憶體 之向量儲存,並支援轉換。正如正規向量指令,向量記憶體指令以資料元件方式轉移資料自/至記憶體,且實際轉移之元件藉由選擇作為寫入遮罩之向量遮罩的內容主宰。
記憶體存取指令模板-暫時
暫時資料為可能足夠快速重用以從快取獲益之資料。然而,其為暗示且不同處理器可以不同方式實施,包括完全忽略暗示。
記憶體存取指令模板-非暫時
非暫時資料為不可能足夠快速重用以從第一級高速緩衝記憶體中快取獲益之資料,並應為驅逐之特定優先性。然而,其為暗示且不同處理器可以不同方式實施,包括完全忽略暗示。
B級指令模板
若為B級指令模板,阿爾發欄位752解譯為寫入遮罩控制(Z)欄位752C,其內容區別藉由寫入遮罩欄位770控制之寫入遮罩是否應合併或歸零。
若為B級非記憶體存取705指令模板,部分貝他欄位754解譯為RL欄位757A,其內容區別將實施哪一不同擴大運算類型(例如捨入757A.1及向量長度(VSIZE)757A.2分別指定用於無記憶體存取寫入遮罩控制部分捨入控制型運算712指令模板及無記憶體存取寫入遮罩控制VSIZE型 運算717指令模板),同時其餘貝他欄位754區別將實施哪一指定類型之運算。在無記憶體存取705指令模板中,未呈現標度欄位760、位移欄位762A、及位移標度欄位762B。
在無記憶體存取寫入遮罩控制部分捨入控制型運算710指令模板中,其餘貝他欄位754解譯為捨入運算欄位759A,並停用例外事件報導(特定指令未報導任何種類浮點例外旗標,及未提昇任何浮點例外處置器)。
捨入運算控制欄位759A-正如捨入運算控制欄位758,其內容區別將實施哪一群組捨入運算(例如捨進、捨去、捨入朝向零及捨入朝向最近)。因而,捨入運算控制欄位759A允許在每一指令之基礎上改變捨入模式。在本發明之一實施例中,其中處理器包括控制暫存器以指明捨入模式,捨入運算控制欄位750之內容置換暫存器值。
在無記憶體存取寫入遮罩控制VSIZE型運算717指令模板中,其餘貝他欄位754解譯為向量長度欄位759B,其內容區別將在若干資料向量長度之哪一者上實施(例如128、256、或512位元組)。
若為B級記憶體存取720指令模板,部分貝他欄位754解譯為播送欄位757B,其內容區別是否將實施播送型資料操縱運算,同時其餘貝他欄位754為解譯之向量長度欄位759B。記憶體存取720指令模板包括標度欄位760、及選擇地位移欄位762A或位移標度欄位762B。
關於通用向量親和指令格式700,顯示全運算碼欄位 774,包括格式欄位740、基運算欄位742、及資料元件寬度欄位764。雖然一實施例顯示其中全運算碼欄位774包括所有該些欄位,在實施例中全運算碼欄位774包括少於所有該些欄位,其未支援所有各項。全運算碼欄位774提供運算碼(opcode)。
在通用向量親和指令格式之每一指令的基礎上,擴大運算欄位750、資料元件寬度欄位764及寫入遮罩欄位770允許指定該些特徵。
寫入遮罩欄位及資料元件寬度欄位之組合製造代表指令,其中允許依據不同資料元件寬度應用遮罩。
發現於A級及B級內之各式指令模板在不同情況是有利的。在若干本發明之實施例中,不同處理器或處理器內不同核心僅可支援A級、僅B級、或二級別。例如,希望用於通用計算之高性能通用無序核心僅可支援B級,主要希望用於圖形及/或科學(傳輸率)計算之核心僅可支援A級,及希望用於二者之核心可支援二者(當然,具有來自二級別之模板及指令但並非來自二級別之所有模板及指令之若干混合的核心係在本發明之範圍內)。另外,單一處理器可包括多核心,均支援相同級別或其中不同核心支援不同級別。例如,在具個別圖形及通用核心之處理器中,主要希望用於圖形及/或科學計算之圖形核心之一者僅可支援A級,同時一或多個通用核心可為高性能通用核心且失序執行及暫存器重命名,希望用於通用計算者,僅可支援B級。另一處理器不具有個別圖形核心,可包括一更多 通用依序或無序核心,其支援A級及B級二者。當然,在本發明之不同實施例中,來自一級別之特徵亦可於其他級別中實施。以高階語言編寫之程式將(例如在編譯或靜態編譯時)置入各種不同可執行形式,包括:1)僅具有藉由目標處理器支援用於執行之級別之指令的形式;或2)具有使用所有級別指令之不同組合編寫之替代常式,及具有依據目前執行碼之藉由處理器支援之指令而選擇常式進行執行之控制流碼的形式。
示範特定向量親和指令格式
圖8為方塊圖,描繪依據本發明之實施例之示範特定向量親和指令格式。圖8顯示特定向量親和指令格式800,其在指明欄位之位置、尺寸、解譯、及順序,以及用於若干該些欄位之值的意義上是特定的。特定向量親和指令格式800可用以延伸x86指令集,因而若干欄位與用於現有x86指令集及其延伸(例如AVX)中者為類似或相同。此格式仍符合具延伸之現有x86指令集之前置編碼欄位、真實運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位、及立即值欄位。描繪圖8之欄位映入圖7之欄位。
應理解的是,儘管為描繪目的,參照通用向量親和指令格式700之上下文中特定向量親和指令格式800說明本發明之實施例,除非聲明,本發明不侷限於特定向量親和指令格式800。例如,通用向量親和指令格式700考量用 於各式欄位之各類可能尺寸,同時特定向量親和指令格式800顯示為具有特定尺寸之欄位。藉由特定範例,雖然資料元件寬度欄位764描繪為特定向量親和指令格式800之一位元欄位,本發明不侷限於此(即,通用向量親和指令格式700考量資料元件寬度欄位764之其他尺寸)。
通用向量親和指令格式700包括以下依圖8A中所描繪之順序表列的下列欄位。
EVEX前置(位元組0-3)802-係以四個位元組形式編碼。
格式欄位740(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)為格式欄位740,其包含0x62(用於區別本發明之一實施例中向量親和指令格式之獨特值)。
第二-第四位元組(EVEX位元組1-3)包括提供特定能力之位元數量欄位。
REX欄位805(EVEX位元組1,位元[7-5])-包括EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)、及EVEX.B位元欄位(EVEX位元組1,位元[5]-B)。EVEX.R、EVEX.X、及EVEX.B位元欄位提供與相應VEX位元欄位相同功能性,並使用1之補數形式編碼,即ZMM0編碼為1111B,ZMM15編碼為0000B。指令之其他欄位編碼暫存器指標之較低三個位元,如本技藝中已知之(rrr、xxx、及bbb),使得藉由EVEX.R、EVEX.X、及EVEX.B相加而形成Rrrr、Xxxx、及Bbbb。
REX’欄位710-此係REX’欄位710之第一部分並為EVEX.R’位元欄位(EVEX位元組1,位元[4]-R’),其用以編碼延伸之32個暫存器組的上16個或下16個。在本發明之一實施例中,此位元連同以下指出之其他者係以位元反向格式儲存以區別(熟知x86 32位元模式)BOUND指令,其真實運算碼位元組為62,但在MOD R/M欄位(以下說明)中不接受MOD欄位中11之值;本發明之替代實施例不儲存此及以下以反向格式指出之其他位元。1之值用以編碼下16個暫存器。換言之,藉由組合EVEX.R’、EVEX.R、及來自其他欄位之其他RRR而形成R’Rrrr。
運算碼映射欄位815(EVEX位元組1,位元[3:0]-mmmm)-其內容編碼暗示的前導運算碼位元組(0F、0F38、或0F3)。
資料元件寬度欄位764(EVEX位元組2,位元[7]-W)-係藉由記號EVEX.W代表。EVEX.W用以定義資料類型(32位元資料元件或64位元資料元件)之粒度(尺寸)。
EVEX.vvvv 820(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv之角色可包括下列:1)EVEX.vvvv編碼以反向(1之補數)形式指明之第一來源暫存器運算元,並有效用於具2或更多來源運算元之指令;2)EVEX.vvvv編碼用於某向量偏移之1之補數形式指明之目的地暫存器運算元;或3)EVEX.vvvv未編碼任何運算元,欄位保留並應包含1111b。因而,EVEX.vvvv欄位820編碼以反向(1之補數)形式儲存之第一來源暫存器區分符的4個低階位元。依據 指令,額外不同EVEX位元欄位用以延伸區分符尺寸至32個暫存器。
EVEX.U 768級別欄位(EVEX位元組2,位元[2]-U)-若EVEX.U=0,指出A級或EVEX.U0;若EVEX.U=1,指出B級或EVEX.U1。
前置編碼欄位825(EVEX位元組2,位元[1:0]-pp)-提供用於基運算欄位之額外位元。除了提供支援EVEX前置格式中舊有SSE指令外,其亦具有緊實SIMD前置之利益(不需要位元組來表示SIMD前置,EVEX前置僅需2位元)。在一實施例中,支援使用舊有格式及EVEX前置格式之SIMD前置(66H,F2H,F3H)的舊有SSE指令,該些舊有SIMD前置被編碼於SIMD前置編碼欄位中;且運行時間於提供至解碼器之PLA之前延伸進入舊有SIMD前置(所以PLA可未修改便執行該些舊有指令之舊有及EVEX格式)。儘管較新指令可使用EVEX前置編碼欄位之內容直接作為運算碼延伸,某實施例為一致性而以類似方式延伸,但允許藉由該些舊有SIMD前置指定之不同意義。替代實施例可重新設計PLA以支援2位元IMD前置編碼,因而不需擴展。
阿爾發欄位752(EVEX位元組3,位元[7]-EH;亦已知為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制、及EVEX.N;亦以α)描繪-如先前所說明,此欄位為特定上下文。
貝他欄位754(EVEX位元組3,位元[6:4]-SSS,亦已 知為EVEX.S2-0 、EVEX.r2-0 、EVEX.rr1、EVEX.LL0、EVEX.LLB;亦以βββ)描繪-如先前所說明,此欄位為特定上下文。
REX’欄位710-此係REX’欄位之餘數並為EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’),其可用以編碼延伸之32個暫存器組的上16個或下16個。此位元係以位元反向格式儲存。1之值用以編碼下16個暫存器。換言之,V’VVVV係藉由組合EVEX.V’、EVEX.vvvv而予形成。
寫入遮罩欄位770(EVEX位元組3,位元[2:0]-kkk)-如先前所說明,其內容指明寫入遮罩暫存器中暫存器之指標。在本發明之一實施例中,特定值EVEX.kkk=000具有特殊行為暗示無寫入遮罩用於特別指令(此可以各類方式實施,包括使用固線式至所有物件之寫入遮罩或旁通遮罩硬體之硬體)。
真實運算碼欄位830(位元組4)亦已知為運算碼位元組。部分運算碼於此欄位中被指明。
MOD R/M欄位840(位元組5)包括MOD欄位842、Reg欄位844、及R/M欄位846。如先前所說明,MOD欄位842之內容於記憶體存取及非記憶體存取運算之間區別。Reg欄位844之角色可總結為二情況:編碼目的地暫存器運算元或來源暫存器運算元,或被處理為運算碼延伸,且未用以編碼任何指令運算元。R/M欄位846之角色可包括下列:參照記憶體位址編碼指令運算元,或編碼目的地暫存器運算元或來源暫存器運算元。
標度、指標、基礎(SIB)位元組(位元組6)-如先前所說明,標度欄位750之內容用於記憶體位址產生。SIB.xxx 854及SIB.bbb 856-該些欄位之內容先前已參照關於暫存器指標Xxxx及Bbbb。
位移欄位762A(位元組7-10)-當MOD欄位842包含10時,位元組7-10為位移欄位762A,且其工作與舊有32位元位移(disp32)相同並以位元組粒度工作。
位移因素欄位762B(位元組7)-當MOD欄位842包含01時,位元組7為位移因素欄位762B。此欄位之位置與舊有x86指令集8位元位移(disp8)相同,其係以位元組粒度工作。由於disp8為延伸符號,其僅可定址於-128及127位元組偏移之間;在64位元組高速緩衝記憶體線方面,disp8使用8位元,其可設定為僅四個真正有用的值-128、-64、0、及64;由於通常需要較大範圍,使用disp32;然而,disp32需要4位元組。與disp8及disp32相反,位移因素欄位762B為disp8之重新解譯;當使用位移因素欄位762B時,藉由位移因素欄位之內容乘以記憶體運算元存取之尺寸(N)而決定實際位移。此類位移稱為disp8*N。此減少平均指令長度(用於位移但具更大範圍之單一位元組)。該等壓縮位移係依據有效位移為多粒度記憶體存取之假定,因此,位址偏移之冗餘低階位元不需編碼。換言之,位移因素欄位762B替代舊有x86指令集8位元位移。因而,位移因素欄位762B以與x86指令集8位元位移相同方式編碼(所以ModRM/SIB編碼規則無改 變),唯一例外為disp8對於disp8*N過載。換言之,編碼規則或編碼長度無改變,但唯一是位移值之解譯係藉由硬體(其需藉由記憶體運算元之尺寸標度位移以獲得位元組之位址偏移)。
如先前所說明操作立即值欄位772。
全運算碼欄位
圖8B為方塊圖,描繪依據本發明之一實施例之組成全運算碼欄位774的特定向量親和指令格式800之欄位。具體地,全運算碼欄位774包括格式欄位740、基運算欄位742、及資料元件寬度(W)欄位764。基運算欄位742包括前置編碼欄位825、運算碼映射欄位815、及真實運算碼欄位830。
暫存器指標欄位
圖8C為方塊圖,描繪依據本發明之一實施例之組成暫存器指標欄位744的特定向量親和指令格式800之欄位。具體地,暫存器指標欄位744包括REX欄位805、REX’欄位810、MODR/M.reg欄位844、MODR/M.r/m欄位846、VVVV欄位820、xxx欄位854、及bbb欄位856。
擴大運算欄位
圖8D為方塊圖,描繪依據本發明之一實施例之組成擴大運算欄位750的特定向量親和指令格式800之欄位。當 級別(U)欄位768包含0時,標示EVEX.U0(A級768A);當其包含1時,標示EVEX.U1(B級768B)。當U=0及MOD欄位842包含11時(標示無記憶體存取運算),阿爾發欄位752(EVEX位元組3,位元[7]-EH)解譯為rs欄位752A。當rs欄位752A包含1時(捨入752A.1),貝他欄位754(EVEX位元組3,位元[6:4]-SSS)解譯為捨入控制欄位754A。捨入控制欄位754A包括一位元SAE欄位756及二位元捨入運算欄位758。當rs欄位752A包含0時(資料轉換752A.2),貝他欄位754(EVEX位元組3,位元[6:4]-SSS)解譯為三位元資料轉換欄位754B。當U=0及MOD欄位842包含00、01、或10時(標示記憶體存取運算),阿爾發欄位752(EVEX位元組3、位元[7]-EH)解譯為驅逐提示(EH)欄位752B,及貝他欄位754(EVEX位元組3,位元[6:4]-SSS)解譯為三位元資料操縱欄位754C。
當U=1時,阿爾發欄位752(EVEX位元組3,位元[7]-EH)解譯為寫入遮罩控制(Z)欄位752C。當U=1及MOD欄位842包含11時(標示無記憶體存取運算),部分貝他欄位754(EVEX位元組3,位元[4]-S0 )解譯為RL欄位757A;當其包含1時(捨入757A.1),其餘貝他欄位754(EVEX位元組3,位元[6-5]-S2-1 )解譯為捨入運算欄位759A,同時當RL欄位757A包含0時(VSIZE 757.A2),其餘貝他欄位754(EVEX位元組3,位元[6-5]-S2-1 )解譯為向量長度欄位759B(EVEX位元組3,位元[6-5]-L1-0 )。當U=1及MOD欄位842包含00、01、或10時(標示記憶體 存取運算),貝他欄位754(EVEX位元組3,位元[6:4]-SSS)解譯為向量長度欄位759B(EVEX位元組3,位元[6-5]-L1-0 )及播送欄位757B(EVEX位元組3,位元[4]-B)。
示範暫存器架構
圖9為依據本發明之一實施例之暫存器架構900之方塊圖。在所描繪之實施例中,存在512位元寬之32個向量暫存器910;該些暫存器代號為zmm0至zmm31。下16個zmm暫存器之低階256位元覆加於暫存器ymm0-16上。下16個zmm暫存器之低階128位元(ymm暫存器之低階128位元)覆加於暫存器xmm0-15上。特定向量親和指令格式800係於下表中s所描繪之該些覆加暫存器檔案上操作。
換言之,向量長度欄位759B於最大長度及一或多個其他較短長度之間選擇,其中每一該等較短長度為之前長 度的一半長度;且無向量長度欄位759B之指令模板於最大向量長度上操作。此外,在一實施例中,特定向量親和指令格式800之B級指令模板於封裝或純量單一/雙精度浮點資料及封裝或純量整數資料上操作。純量運算係於zmm/ymm/xmm暫存器中最低階資料元件位置上實施之運算;依據實施例,較高階資料元件位置被保留如指令前之相同者或被歸零。
寫入遮罩暫存器915-在所描繪之實施例中,存在8個寫入遮罩暫存器(k0至k7),每一尺寸為64位元。在替代實施例中,寫入遮罩暫存器915尺寸為16位元。如先前所說明,在本發明之一實施例中,向量遮罩暫存器k0無法用作寫入遮罩;當編碼時通常指出k0係用於寫入遮罩,其選擇0xFFFF之固線式寫入遮罩,有效地停用該指令之寫入遮罩。
通用暫存器925-在所描繪之實施例中,存在十六個64位元通用暫存器,其連同現有x86定址模式用以定址記憶體運算元。該些暫存器代號為RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15。
純量浮點堆疊暫存器檔案(x87堆疊)945,其上重疊MMX封裝整數平面暫存器檔案950-在所描繪之實施例中,x87堆疊為八元件堆疊,用以於使用x87指令集延伸之32/64/80位元浮點資料上實施純量浮點運算;同時MMX暫存器用以於64位元封裝整數資料上實施運算,以及容納於MMX及XMM暫存器之間實施若干運算的運算 元。
本發明之替代實施例可使用更寬或更窄暫存器。此外,本發明之替代實施例可使用更多、更少或不同暫存器檔案及暫存器。
示範核心架構、處理器、及電腦架構
處理器核心可以不同方式實施、用於不同目的、及於不同處理器中實施。例如,該等核心之實施可包括:1)希望用於通用計算之通用依序核心;2)希望用於通用計算之高性能通用無序核心;3)希望主要用於圖形及/或科學(傳輸率)計算之特殊用途核心。不同處理器之實施可包括:1)包括希望用於通用計算之一或多個通用依序核心及/或希望用於通用計算之一或多個通用無序核心的CPU;及2)包括希望主要用於圖形及/或科學(傳輸率)之一或多個特殊用途核心的協處理器。該等不同處理器導致不同電腦系統架構,其可包括:1)來自CPU之個別晶片上的協處理器;2)在作為CPU之相同封包中個別晶粒上的協處理器;3)在作為CPU之相同晶粒上的協處理器(在此狀況下,該等協處理器有時稱為特殊用途邏輯,諸如整合圖形及/或科學(傳輸率)邏輯,或稱為特殊用途核心);及4)單晶片系統,其可包括在所說明之CPU的相同晶粒上(有時稱為應用核心或應用處理器)、以上所說明之協處理器、及額外功能性。接著說明示範核心架構,其後為示範處理器及電腦架構之說明。
示範核心架構
依序及無序核心方塊圖
圖10A為方塊圖,描繪依據本發明之實施例之示範依序管線及示範暫存器重命名、無序發出/執行管線。圖10B為方塊圖,描繪依據本發明之實施例之處理器中所包括之依序架構核心的示範實施例及示範暫存器重命名、無序發出/執行核心。圖10A-B中實線框描繪依序管線及依序核心,同時虛線框之可選添加描繪暫存器重命名、無序發出/執行管線及核心。假定依序方面為無序方面之子集,將說明無序方面。
在圖10A中,處理器管線1000包括提取級1002、長度解碼級1004、解碼級1006、配置級1008、重命名級1010、排程(亦已知作為調度或發出)級1012、暫存器讀取/記憶體讀取級1014、執行級1016、寫回/記憶體寫入級1018、例外處理級1022、及確定級1024。
圖10B顯示處理器核心1090,包括耦接至執行引擎單元1050之前端單元1030,且二者均耦接至記憶體單元1070。核心1090可為減少指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字(VLIW)核心、或混合或替代核心型。有關又另一選項,核心1090可為專用核心,諸如網路或通訊核心、壓縮引擎、協處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心等。
前端單元1030包括耦接至指令高速緩衝記憶體單元 1034之分支預測單元1032,指令高速緩衝記憶體單元1034耦接至指令翻譯後備緩衝器(TLB)1036,指令翻譯後備緩衝器(TLB)1036耦接至指令提取單元1038,指令提取單元1038耦接至解碼單元1040。解碼單元1040(或解碼器)可解碼指令及產生輸出,例如一或多個微運算、微碼登錄點、微指令、其他指令、或其他控制信號,其係解碼自、反映、或源自原始指令。解碼單元1040可使用各式不同機構予以實施。適當機構之範例包括但不侷限於查閱表、硬體實施、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一實施例中,核心1090包括微碼ROM或儲存用於某巨集指令之微碼的其他媒體(例如在解碼單元1040中或前端單元1030內)。解碼單元1040耦接至執行引擎單元1050中之重命名/配置器單元1052。
執行引擎單元1050包括耦接至退役單元1054及一組一或多個排程器單元1056之重命名/配置器單元1052。排程器單元1056代表任何數量不同排程器,包括保留站、中央指令視窗等。排程器單元1056耦接至實體暫存器檔案單元1058。每一實體暫存器檔案單元1058代表一或多個實體暫存器檔案,各儲存一或多個不同資料類型,諸如純量整數、純量浮點、封裝整數、封裝浮點、向量整數、向量浮點、狀態(例如指令指標,其係將執行之下一指令的位址)等。在一實施例中,實體暫存器檔案單元1058包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。該些暫存器單元可提供架構向量暫存器、向量遮罩 暫存器、及通用暫存器。實體暫存器檔案單元1058藉由退役單元1054重疊以描繪其中可實施暫存器重命名及失序執行的各種方式(例如使用重排緩衝器及退役暫存器檔案;使用將來檔案、歷史緩衝器、及退役暫存器檔案;使用暫存器映射及暫存器池等)。退役單元1054及實體暫存器檔案單元1058耦接至執行叢集1060。執行叢集1060包括一組一或多個執行單元1062及一組一或多個記憶體存取單元1064。執行單元1062可在各類資料(例如純量浮點、封裝整數、封裝浮點、向量整數、向量浮點)上實施各式運算(例如偏移、加法、減法、乘法)。雖然若干實施例可包括若干執行單元專用於特定功能或功能集,其他實施例可僅包括一執行單元或多執行單元而均實施所有功能。因為某實施例製造用於某類型資料/運算之個別管線(例如純量整數管線、純量浮點/封裝整數/封裝浮點/向量整數/向量浮點管線、及/或各具有其本身排程器單元、實體暫存器檔案單元、及/或執行叢集之記憶體存取管線-且在個別記憶體存取管線之狀況下,實施某實施例,其中僅該管線之執行叢集具有記憶體存取單元1064),顯示可能為複數個之排程器單元1056、實體暫存器檔案單元1058、及執行叢集1060。亦應理解的是,其中使用個別管線,一或多個該些管線可為無序發出/執行及其餘為依序。
該組記憶體存取單元1064耦接至記憶體單元1070,其包括耦接至資料高速緩衝記憶體單元1074之資料TLB 單元1072,且資料高速緩衝記憶體單元1074耦接至2級(L2)高速緩衝記憶體單元1076。在一示範實施例中,記憶體存取單元1064可包括載入單元、儲存位址單元、及儲存資料單元,每一者耦接至記憶體單元1070中之資料TLB單元1072。指令高速緩衝記憶體單元1034進一步耦接至記憶體單元1070中之2級(L2)高速緩衝記憶體單元1076。L2高速緩衝記憶體單元1076耦接至一或多個其他級之高速緩衝記憶體及最終耦接至主記憶體。
藉由範例,示範暫存器重命名、無序發出/執行核心架構可實施管線1000如下:1)指令提取1038實施提取及長度解碼級1002及1004;2)解碼單元1040實施解碼級1006;3)重命名/配置器單元1052實施配置級1008及重命名級1010;4)排程器單元1056實施排程級1012;5)實體暫存器檔案單元1058及記憶體單元1070實施暫存器讀取/記憶體讀取級1014;執行叢集1060實施執行級1016;6)記憶體單元1070及實體暫存器檔案單元1058實施寫回/記憶體寫入級1018;7)各式單元可包含於例外處理級1022中;以及8)退役單元1054及實體暫存器檔案單元1058實施確定級1024。
核心1090可支援一或多個指令集(例如x86指令集(具已附加新版本之若干延伸);美國加州森尼維爾市「MIPS科技公司」之MIPS指令集;美國加州森尼維爾市「ARM控股公司」之ARM指令集(具諸如NEON之可選額外延伸)),包括文中所說明之指令。在一實施例中,核心1090 包括邏輯以支援封裝資料指令集延伸(例如AVX1、AVX2,及/或若干先前所說明之通用向量親和指令格式(U=0及/或U=1)形式),藉以允許由許多多媒體應用所使用之運算使用封裝資料而實施。
應理解的是,核心可支援多線程(執行二或更多並行運算或線程組合),並可以各種方式實施,包括時間切片多線程、同步多線程(其中單一實體核心提供實體核心為同步多線程之每一線程的邏輯核心)、或其組合(例如時間切片提取及解碼以及之後的同步多線程,諸如Intel® 超線程技術)。
雖然以無序執行之上下文說明暫存器重命名,應理解的是暫存器重命名可用於依序架構。雖然所描繪之處理器的實施例亦包括個別指令及資料高速緩衝記憶體單元1034/1074,以及共用L2高速緩衝記憶體單元1076,替代實施例可具有用於指令及資料之單一內部高速緩衝記憶體,諸如1級(L1)內部高速緩衝記憶體,或多級內部高速緩衝記憶體。在若干實施例中,系統可包括內部高速緩衝記憶體及核心及/或處理器外部之外部高速緩衝記憶體的組合。另一方面,所有高速緩衝記憶體可為核心及/或處理器外部。
特定示範依序核心架構
圖11A-B描繪更具體示範依序核心架構之方塊圖,其核心將為晶片中若干邏輯方塊之一者(包括相同類型及/或 不同類型之其他核心)。邏輯方塊經由高帶寬互連網路(例如環形網路)而與若干固定功能邏輯、記憶體I/O介面、及取決於應用之其他必要I/O邏輯通訊。
圖11A為依據本發明之實施例之單一處理器核心連同其連接至晶粒上互連網路1102並具2級(L2)高速緩衝記憶體1104之其局部子集的方塊圖。在一實施例中,指令解碼器1100支援具封裝資料指令集延伸之x86指令集。L1高速緩衝記憶體1106允許對高速緩衝記憶體記憶體之低延遲存取為純量及向量單元。雖然在一實施例中(為簡化設計),純量單元1108及向量單元1110使用個別暫存器集(分別為純量暫存器1112及向量暫存器1114),且其間轉移之資料被寫入至記憶體,接著從1級(L1)高速緩衝記憶體1106讀回,本發明之替代實施例可使用不同方法(例如使用單一暫存器組或包括允許資料於二暫存器檔案之間轉移而無寫入及讀回之通訊路徑)。
L2高速緩衝記憶體1104之局部子集為部分總體L2高速緩衝記憶體,其劃分為個別局部子集,每一處理器核心一個。每一處理器核心具有至L2高速緩衝記憶體1104之其本身局部子集的直接存取路徑。藉由處理器核心讀取之資料係儲存於其L2高速緩衝記憶體子集1104中,並可與存取其本身局部L2高速緩衝記憶體子集之其他處理器核心並行地快速存取。藉由處理器核心寫入之資料係儲存於其本身L2高速緩衝記憶體子集1104中,且必要時從其他子集清除。環形網路確保共用資料之一致性。環形網路 為雙向以允許諸如處理器核心、L2高速緩衝記憶體、及其他邏輯方塊之代理器於晶片內相互通訊。每一環形資料路徑於每一方向1012位元寬。
圖11B為依據本發明之實施例之圖11A中部分處理器核心之展開圖。圖11B包括部分L1高速緩衝記憶體1104之L1資料高速緩衝記憶體1106A,以及更多內容相關向量單元1110及向量暫存器1114。具體地,向量單元1110為16-寬向量處理單元(VPU)(詳16-寬ALU 1128),其執行一或多個整數、單一精確浮動、及雙精度浮動指令。VPU支援以拌和單元1120混合暫存器輸入,以數字轉換單元1122A-B數字轉換,以複製單元1124於記憶體輸入上複製。寫入遮罩暫存器1126允許斷定結果向量寫入。
具整合記憶體控制器及圖形之處理器
圖12為依據本發明之實施例之處理器1200之方塊圖,其可具有一個以上核心,可具有整合記憶體控制器,及可具有具有整合圖形。圖12中實線框描繪處理器1200,其具單一核心1202A、系統代理器1210、一組一或多個匯流排控制器單元1216,同時可選添加虛線框描繪替代處理器1200,其具多核心1202A-N、系統代理器單元1210中一組一或多個整合記憶體控制器單元1214、及特殊用途邏輯1208。
因而,處理器1200之不同實施可包括:1)CPU,其具整合圖形及/或科學(傳輸率)邏輯之特殊用途邏輯1208(其 可包括一或多個核心),及一或多個通用核心之核心1202A-N(例如通用依序核心、通用無序核心、二者組合);2)協處理器,其具希望主要用於圖形及/或科學(傳輸率)之大量特殊用途核心之核心1202A-N;及3)協處理器,其具大量通用依序核心之核心1202A-N。因而,處理器1200可為通用處理器、協處理器或專用處理器,諸如網路或通訊處理器、壓縮引擎、圖形處理器、通用圖形處理單元(GPGPU)、高傳輸率多整合核心(MIC)協處理器(包括30或更多核心)、嵌入處理器等。處理器可於一或多個晶片上實施。處理器1200可為使用任何若干處理技術之一或多個基板的一部分及/或可於其上實施,諸如BiCMOS、CMOS、或NMOS。
記憶體階層包括核心內之一或多級高速緩衝記憶體、一組或一或多個共用高速緩衝記憶體單元1206、及耦接至一組整合記憶體控制器單元1214的外部記憶體(未顯示)。一組共用高速緩衝記憶體單元1206可包括一或多個中級高速緩衝記憶體,諸如2級(L2)、3級(L3)、4級(L4)、或其他級高速緩衝記憶體、最後級高速緩衝記憶體(LLC)、及/或其組合。雖然在一實施例中,以環形為主之互連單元1212互連整合圖形邏輯1208、一組共用高速緩衝記憶體單元1206、及系統代理器單元1210/整合記憶體控制器單元1214,替代實施例可使用任何熟知技術用於互連該等單元。在一實施例中,一或多個高速緩衝記憶體單元1206及核心1202A-N之間維持一致性。
在若干實施例中,一或多個核心1202A-N可多線程。系統代理器1210包括協調及操作核心1202A-N之該些組件。系統代理器單元1210可包括例如電力控制單元(PCU)及顯示單元。PCU可為或包括用於調節核心1202A-N及整合圖形邏輯1208之電力狀態所需的邏輯及組件。顯示單元係用於驅動一或多個外部連接之顯示器。
核心1202A-N在架構指令集方面可為同質或異質;即,核心1202A-N之二或更多者可執行相同指令集,同時其他僅可執行指令集之子集或不同指令集。
示範電腦架構
圖13-16為示範電腦架構之方塊圖。本技藝中已知用於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持裝置及各式其他電子裝置的其他系統設計及組態亦適當。通常,可併入處理器及/或如文中所揭露之其他執行邏輯的廣泛系統或電子裝置一般均適當。
現在參照圖13,顯示依據本發明之一實施例之系統1300之方塊圖。系統1300可包括一或多個處理器1310、1315,其耦接至控制器集線器1320。在一實施例中,控制器集線器1320包括圖形記憶體控制器集線器(GMCH)1390及輸入/輸出集線器(IOH)1350(其可在個別晶片上);GMCH 1390包括耦接記憶體1340及協處理器1345之記憶體及圖形控制器;IOH 1350將輸入/輸出(I/O)裝置1360耦接至GMCH 1390。另一方面,記憶體及圖形控制器之一或二者整合於處理器內(如文中所說明),記憶體1340及協處理器1345直接耦接至處理器1310及具IOH 1350之單一晶片中的控制器集線器1320。
圖13中以虛線標示額外處理器1315之可選特性。每一處理器1310、1315可包括一或多個文中所說明之處理核心,並可為處理器1200之若干版本。
記憶體1340可為例如動態隨機存取記憶體(DRAM)、相位改變記憶體(PCM)、或二者組合。對至少一實施例而言,控制器集線器1320經由諸如前端匯流排(FSB)之多站式(multi-drop)匯流排、諸如快速路徑互連(QPI)之點對點介面、或類似連接1395,可與處理器1310、1315通訊。
在一實施例中,協處理器1345為專用處理器,諸如高傳輸率MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入處理器等。在一實施例中,控制器集線器1320可包括整合圖形加速器。
在包括架構、微架構、熱、電力消耗特性等優點之度量頻譜方面,實體資源1310、1315之間可存在各類差異。
在一實施例中,處理器1310執行控制一般類型之資料處理運算的指令。指令內嵌入可為協處理器指令。處理器1310將該些協處理器指令識別為應藉由依附之協處理 器1345執行之類型。因此,處理器1310將協處理器匯流排或其他互連上之該些協處理器指令(或代表協處理器指令之控制信號)發出至協處理器1345。協處理器1345接收並執行接收之協處理器指令。
現在參照圖14,顯示依據本發明之實施例之第一更特定示範系統1400之方塊圖。如圖14中所示,多處理器系統1400為點對點互連系統,包括經由點對點互連1450耦接之第一處理器1470及第二處理器1480。處理器1470及1480之每一者可為處理器1200之若干版本。在本發明之一實施例中,處理器1470及1480分別為處理器1310及1315,同時協處理器1438為協處理器1345。在另一實施例中,處理器1470及1480分別為處理器1310及協處理器1345。
所示處理器1470及1480分別包括整合記憶體控制器(IMC)單元1472及1482。處理器1470亦包括作為其匯流排控制器單元點對點(P-P)介面1476及1478之一部分;類似地,第二處理器1480包括P-P介面1486及1488。處理器1470、1480可經由使用P-P介面電路1478、1488之點對點(P-P)介面1450交換資訊。如圖14中所示,IMC 1472及1482耦接處理器至個別記憶體,即記憶體1432及記憶體1434,其可為局部附著至各處理器之主記憶體部分。
處理器1470、1480可經由使用點對點介面電路1476、1494、1486、1498之個別P-P介面1452、1454而 各與晶片組1490交換資訊。晶片組1490可選擇地經由高性能介面1439而與協處理器1438交換資訊。在一實施例中,協處理器1438為專用處理器,諸如高傳輸率MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入處理器等。
共用高速緩衝記憶體(未顯示)可包括於任一處理器中或在二處理器外部,仍經由P-P互連與處理器連接,使得若處理器處於低電力模式,任一或二處理器之局部高速緩衝記憶體資訊可儲存於共用高速緩衝記憶體中。
晶片組1490可經由介面1496耦接至第一匯流排1416。在一實施例中,第一匯流排1416可為週邊組件互連(PCI)匯流排,或諸如PCI Express匯流排或另一第三代I/O互連匯流排之匯流排,儘管本發明之範圍未限制於此。
如圖14中所示,各式I/O裝置1414可耦接至第一匯流排1416,連同將第一匯流排1416耦接至第二匯流排1420之匯流排橋接器1418。在一實施例中,一或多個額外處理器1415耦接至第一匯流排1416,諸如協處理器、高傳輸率MIC處理器、GPGPU、加速器(諸如圖形加速器或數位信號處理(DSP)單元)、欄位可編程閘陣列、或任何其他處理器。在一實施例中,第二匯流排1420可為低接腳數(LPC)匯流排。在一實施例中,各式裝置可耦接至第二匯流排1420,包括例如鍵盤及/或滑鼠1422、通訊裝置1427及儲存單元1414,諸如磁碟機或可包括指令/碼及資 料1430之其他大量儲存裝置。此外,音頻I/O 1424可耦接至第二匯流排1420。請注意,亦可能為其他架構。例如,取代圖28之點對點架構、系統可實施多站式匯流排或其他該等架構。
現在參照圖15,顯示依據本發明之實施例之第二更特定示範系統1500之方塊圖。圖14及15中類似元件配賦類似代號,且圖15已省略圖14之某方面,以避免模糊圖15之其他方面。
圖15描繪處理器1470、1480可分別包括整合記憶體及I/O控制邏輯(「CL」)1472及1482。因而,CL 1472、1482包括整合記憶體控制器單元及包括I/O控制邏輯。圖15描繪不僅記憶體1432、1434耦接至CL 1472、1482,I/O裝置1514亦耦接至控制邏輯1472、1482。舊有I/O裝置1515耦接至晶片組1490。
現在參照圖16,顯示依據本發明之實施例之SoC 1600之方塊圖。圖12中類似元件配賦類似代號。另外,虛線框為更多先進SoC上之可選特徵。在圖16中,互連單元1602耦接至:包括一組一或多個核心1202A-N及共用高速緩衝記憶體單元1206之應用處理器1610;系統代理器單元1210;匯流排控制器單元1216;整合記憶體控制器單元1214;一組或一或多個協處理器1620,其可包括整合圖形邏輯、影像處理器、音頻處理器、及視訊處理器;靜態隨機存取記憶體(SRAM)單元1630;直接記憶體存取(DMA)單元1632;及顯示單元1640,用於耦接至一 或多個外部顯示器。在一實施例中,協處理器1620包括特殊用途處理器,諸如網路或通訊處理器、壓縮引擎、GPGPU、高傳輸率MIC處理器、嵌入處理器等。
文中所揭露之機構的實施例可以硬體、軟體、韌體、或該等實施方法之組合實施。本發明之實施例可實施為電腦程式或於包含至少一處理器、儲存系統(包括揮發性及非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置之可編程系統上執行之程式碼。
諸如圖14中所描繪之碼1430的程式碼可應用於輸入指令以實施文中所說明之功能並產生輸出資訊。輸出資訊可以已知方式應用於一或多個輸出裝置。為此應用之目的,處理系統包括具有處理器之任何系統,諸如數位信號處理器(DSP)、微控制器、專用積體電路(ASIC)、或微處理器。
程式碼可以高階程序或物件導向編程語言實施,以與處理系統通訊。若有需要,程式碼亦可以組合語言或機器語言實施。事實上,文中所說明之機構不侷限於任何特別編程語言之範圍。在任何狀況下,語言可為編譯或解譯語言。
至少一實施例之一或多個方面可藉由儲存於機器可讀取媒體上之代表指令實施,其代表處理器內之各式邏輯,當藉由機器讀取時,其致使機器製造邏輯以實施文中所說明之技術。該等代表已知為「IP核心」,可儲存於實體機器可讀取媒體上,並供應至各式各戶或製造廠以載入實際 製造邏輯或處理器之製造機器。
該等機器可讀取儲存媒體可包括而不侷限於藉由機器或裝置製造或形成之物品的非暫時實體安排,包括諸如硬碟之儲存媒體;包括軟碟、光碟、光碟唯讀記憶體(CD-ROM)、可重寫光碟(CD-RW)、及磁性光碟之任何其他類型碟片;諸如唯讀記憶體(ROM)之半導體裝置;諸如動態隨機存取記憶體(DRAM)之隨機存取記憶體(RAM);靜態隨機存取記憶體(SRAM);可抹除可編程唯讀記憶體(EPROM);快閃記憶體;電可抹除可編程唯讀記憶體(EEPROM);相位改變記憶體(PCM);磁性或光學卡;或適於儲存電子指令之任何其他類型媒體。
因此,本發明之實施例亦包括非暫時實體機器可讀取媒體,其包含指令或包含設計資料,諸如定義文中所說明之結構電路、設備、處理器及/或系統特徵之硬體說明語言(HDL)。該等實施例可亦稱為程式產品。
仿真(包括二進制翻譯、碼變形等)
在若干狀況下,指令轉換器可用以將來自來源指令集之指令轉換至目標指令集。例如,指令轉換器可將指令翻譯(例如使用靜態二進制翻譯、包括動態編譯之動態二進制翻譯)、變形、仿真、或轉換至藉由核心處理之一或多個其他指令。指令轉換器可以軟體、硬體、韌體、或其組合予以實施。指令轉換器可在處理器上、處理器外、或部分在處理器上且部分在處理器外。
圖17為依據本發明之實施例之對比使用軟體指令轉換器以將來源指令集中之二進制指令轉換至目標指令集中之二進制指令的方塊圖。在所描繪之實施例中,指令轉換器為軟體指令轉換器,儘管指令轉換器可替代地以軟體、韌體、硬體、或其各式組合實施。圖17顯示以高階語言1702之程式,可使用x86編譯器1704編譯以產生x86二進制碼1706,其可藉由具至少一x86指令集核心之處理器1716本機執行。具至少一x86指令集核心之處理器1716代表任何處理器,其可藉由相容地執行或處理(1)Intel x86指令集核心之指令集的主要部分或(2)應用之目標碼版本或目標係在具至少一x86指令集核心之Intel處理器上運行之其他軟體,以便達成與具至少一x86指令集核心之Intel處理器的實質上相同結果,而實質上實施與具至少一x86指令集核心之Intel處理器的相同功能。x86編譯器1704代表可操作以產生x86二進制碼1706(例如目標碼)之編譯器,其具或不具額外鏈接處理而可於具至少一x86指令集核心之處理器1716上執行。類似地,圖17顯示以高階語言1702之程式,可使用替代指令集編譯器1708編譯以產生替代指令集二進制碼1710,其可藉由不具至少一x86指令集核心之處理器1714本機執行(例如具核心以執行美國加州森尼維爾市「MIPS科技公司」之MIPS指令集及/或執行美國加州森尼維爾市「ARM控股公司」之ARM指令集的處理器)。指令轉換器1712用以將x86二進制碼1706轉換為可藉由不具x86指令集核心之處 理器1714本機執行之碼。此轉換之碼不太可能與替代指令集二進制碼1710相同,因為難以製造如此可行之指令轉換器;然而,轉換之碼將完成一般運算並組成來自替代指令集之指令。因而,指令轉換器1712代表軟體、韌體、硬體、或其組合,經由仿真、模擬、或任何其他處理,允許不具有x86指令集處理器或核心之處理器或其他電子裝置執行x86二進制碼1706。
100‧‧‧處理核心
101‧‧‧管線
102‧‧‧暫存器儲存空間
103_1至103_N‧‧‧功能單元
104_1至104_N‧‧‧讀取遮罩邏輯
105_1至105_N‧‧‧寫入遮罩邏輯
106‧‧‧遮罩暫存器空間
107‧‧‧高速緩衝記憶體
108‧‧‧記憶體
301‧‧‧第一指令
302‧‧‧第二指令
602‧‧‧VEX前置
605、265‧‧‧REX欄位
615‧‧‧運算碼映射欄位
630‧‧‧真實運算碼欄位
640、840‧‧‧Mod:R/M欄位
642、842‧‧‧基運算欄位
644、844‧‧‧暫存器指標欄位
646、846‧‧‧R/M欄位
650‧‧‧SIB位元組
662‧‧‧位移欄位
664、764‧‧‧資料元件寬度欄位
672‧‧‧立即運算元欄位
674‧‧‧全運算碼欄位
700‧‧‧通用向量親和指令格式
705‧‧‧無記憶體存取
710‧‧‧全捨入控制型運算
712‧‧‧部分捨入控制型運算
715‧‧‧資料轉換型運算
717‧‧‧VSIZE型運算
720‧‧‧記憶體存取
725‧‧‧記憶體存取暫時
727‧‧‧記憶體存取寫入遮罩控制
730‧‧‧記憶體存取非暫時
740‧‧‧格式欄位
742‧‧‧基運算欄位
744‧‧‧暫存器指標欄位
746‧‧‧修飾符欄位
750‧‧‧擴大運算欄位
752‧‧‧阿爾發欄位
752A‧‧‧RS欄位
752A.1、757A.1‧‧‧捨入
752A.2‧‧‧資料轉換
752B‧‧‧驅逐提示欄位
752B.1‧‧‧暫時
752B.2‧‧‧非暫時
752C‧‧‧寫入遮罩控制欄位
754‧‧‧貝他欄位
756‧‧‧抑制所有浮點例外欄位
757A‧‧‧RL欄位
757A.2‧‧‧向量長度
757B‧‧‧播送欄位
758‧‧‧捨入運算控制欄位
759A‧‧‧捨入運算欄位
759B‧‧‧向量長度欄位
760‧‧‧標度欄位
762A‧‧‧位移欄位
762B‧‧‧位移因素欄位
764‧‧‧資料元件寬度欄位
768‧‧‧級別欄位
768A‧‧‧A級
768B‧‧‧B級
770‧‧‧寫入遮罩欄位
772‧‧‧立即值欄位
774‧‧‧全運算碼欄位
800‧‧‧特定向量親和指令格式
802‧‧‧EVEX前置
805‧‧‧REX欄位
810‧‧‧REX’欄位
815‧‧‧運算碼映射欄位
825‧‧‧前置編碼欄位
830‧‧‧真實運算碼欄位
840‧‧‧Mod:R/M欄位
842‧‧‧基運算欄位
844‧‧‧暫存器指標欄位
846‧‧‧R/M欄位
925‧‧‧通用暫存器
945‧‧‧純量浮點堆疊暫存器檔案
950‧‧‧MMX封裝整數平面暫存器檔案
1000‧‧‧處理器管線
1002‧‧‧提取級
1004‧‧‧長度解碼級
1006‧‧‧解碼級
1008‧‧‧配置級
1010‧‧‧重命名級
1012‧‧‧排程級
1014‧‧‧暫存器讀取/記憶體讀取級
1016‧‧‧執行級
1018‧‧‧寫回/記憶體寫入級
1022‧‧‧例外處理級
1010‧‧‧確定級
1030‧‧‧前端單元
1032‧‧‧分支預測單元
1034‧‧‧指令高速緩衝記憶體單元
1036‧‧‧指令翻譯後備緩衝器
1038‧‧‧指令提取單元
1040‧‧‧解碼單元
1050‧‧‧執行引擎單元
1052‧‧‧重命名/配置器單元
1054‧‧‧退役單元
1056‧‧‧排程器單元
1058‧‧‧實體暫存器檔案單元
1060‧‧‧執行叢集
1062‧‧‧執行單元
1064‧‧‧記憶體存取單元
1070‧‧‧記憶體單元
1072‧‧‧資料翻譯後備緩衝器單元
1074‧‧‧資料高速緩衝記憶體單元
1076‧‧‧2級高速緩衝記憶體單元
1090‧‧‧處理器核心
1100‧‧‧指令解碼器
1102‧‧‧互連網路
1104‧‧‧2級高速緩衝記憶體
1106、1106A‧‧‧1級高速緩衝記憶體
1108‧‧‧純量單元
1110‧‧‧向量單元
1112‧‧‧純量暫存器
1114‧‧‧向量暫存器
1120‧‧‧拌和單元
1122A、1122B‧‧‧數字轉換單元
1124‧‧‧複製單元
1126‧‧‧寫入遮罩暫存器
1128‧‧‧算術邏輯單元
1202A-N‧‧‧核心
1206‧‧‧共用高速緩衝記憶體單元
1208‧‧‧特殊用途邏輯
1210‧‧‧系統代理器
1212、1602‧‧‧互連單元
1214‧‧‧整合記憶體控制器單元
1216‧‧‧匯流排控制器單元
1300、1500‧‧‧系統
1320‧‧‧控制器集線器
1340、1432、1434‧‧‧記憶體
1345、1438、1620‧‧‧協處理器
1350‧‧‧輸入/輸出集線器
1360、1414、1514、1515‧‧‧輸入/輸出裝置
1390‧‧‧圖形記憶體控制器集線器
1400‧‧‧多處理器系統
1416‧‧‧第一匯流排
1418‧‧‧匯流排橋接器
1420‧‧‧第二匯流排
1422‧‧‧鍵盤及/或滑鼠
1424‧‧‧音頻I/O
1427‧‧‧通訊裝置
1414‧‧‧儲存單元
1430‧‧‧指令/碼及資料
1439‧‧‧高性能介面
1450‧‧‧點對點互連
1472、1482‧‧‧整合記憶體控制器單元
1452、1454、1478、1488‧‧‧點對點介面
1476、1494、1486、1498‧‧‧點對點介面電路
1490‧‧‧晶片組
1496‧‧‧介面
1600‧‧‧晶片上系統
1610‧‧‧應用處理器
1630‧‧‧靜態隨機存取記憶體單元
1632‧‧‧直接記憶體存取單元
1640‧‧‧顯示單元
1702‧‧‧高階語言
1704‧‧‧編譯器
1706、1710‧‧‧二進制碼
1708‧‧‧指令集編譯器
1712‧‧‧指令轉換器
本發明藉由範例描繪,並不侷限於附圖中之圖,其中相似代號指出類似元件,且其中:圖1顯示處理核心;圖2a、2b比較純量及向量運算;圖3顯示用於合併遮罩圖案之習知技藝程序;圖4顯示用於合併遮罩圖案之改良程序;圖5顯示合併遮罩圖案之指令的不同實施例;圖6A描繪示範AVX指令格式;圖6B描繪來自圖6A組成全運算碼欄位及基運算欄位之欄位;圖6C描繪來自圖6A組成暫存器指標欄位之欄位;圖7A-7B為方塊圖,描繪依據本發明之實施例之通用向量親和指令格式及其指令模板;圖8為方塊圖,描繪依據本發明之實施例之示範特定向量親和指令格式; 圖9為依據本發明之一實施例之暫存器架構的方塊圖;圖10A為方塊圖,描繪依據本發明之實施例之示範依序管線及示範暫存器重命名、無序發出/執行管線;圖10B為方塊圖,描繪依據本發明之實施例之處理器中所包括之依序架構核心及示範暫存器重命名、無序發出/執行架構核心之示範實施例;圖11A-B描繪更特定示範依序核心架構之方塊圖,該核心將為晶片中若干邏輯方塊(包括相同類型及/或不同類型之其他核心)之一者;圖12為依據本發明之實施例之處理器的方塊圖,該處理器可具有一個以上核心、可具有整合記憶體控制器、以及可具有整合圖形;圖13為依據本發明之實施例之示範系統的方塊圖;圖14為依據本發明之實施例之第一更特定示範系統的方塊圖;圖15為依據本發明之實施例之第二更特定示範系統的方塊圖;圖16描繪依據本發明之實施例之單晶片系統(SoC)之方塊圖;圖17為依據本發明之實施例之對比使用軟體指令轉換器將來源指令集中二進制指令轉換為目標指令集中二進制指令之方塊圖。

Claims (18)

  1. 一種用以合併遮罩向量的半導體晶片上之處理核心,包含:遮罩暫存器空間,用以保持遮罩向量;以及管線,具有:向量執行單元,該遮罩向量用於該向量執行單元之至少一遮罩層;以及該管線之執行單元之一者內之指令執行邏輯電路,用以藉由單一指令之執行而實施下列:提取該遮罩暫存器空間內之第一遮罩向量及第二遮罩向量;連結該第一遮罩向量及該第二遮罩向量為單一資料結構;以及致使該單一資料結構寫入至記憶體。
  2. 如申請專利範圍第1項之處理核心,其中,該單一指令個別地指定該遮罩暫存器空間內之該第一遮罩向量之位址、該遮罩暫存器空間內之該第二遮罩向量之位址、及將寫入該單一資料結構之記憶體位址。
  3. 如申請專利範圍第1項之處理核心,其中,該單一資料結構為下列之任一者:8位元;16位元;32位元;以及64位元。
  4. 如申請專利範圍第1項之處理核心,其中,該第一遮罩向量及該第二遮罩向量具有相同尺寸。
  5. 如申請專利範圍第1項之處理核心,其中,該單一指令具有運算碼欄位以指定該第一遮罩向量及該第二遮罩向量之尺寸。
  6. 如申請專利範圍第1項之處理核心,其中,該指令執行邏輯電路係位於載入/儲存單元內。
  7. 一種合併遮罩向量的方法,包含:提取指令;解碼該指令;從藉由該指令識別之第一遮罩暫存器空間位置提取第一遮罩向量;從藉由該指令識別之第二遮罩暫存器空間位置提取第二遮罩向量;以及藉由連結該第一遮罩向量及該第二遮罩向量為單一資料結構而執行該指令,並致使該單一資料結構寫入至藉由該指令識別之記憶體位置。
  8. 如申請專利範圍第7項之方法,其中,該指令包括定義該第一遮罩向量及該第二遮罩向量之尺寸之運算碼。
  9. 如申請專利範圍第8項之方法,其中,該第一遮罩向量及該第二遮罩向量之尺寸相同。
  10. 如申請專利範圍第7項之方法,其中,該指令係以一種格式而可延伸以個別地識別三個不同來源運算元及向量指令之目的地。
  11. 如申請專利範圍第7項之方法,其中,該方法係藉由管線之載入/儲存單元實施,該管線實施該提取該指令、該解碼該指令、該提取該第一遮罩向量及該第二遮罩向量、及該執行。
  12. 如申請專利範圍第7項之方法,其中,該單一資料結構為下列之任一者:16位元;32位元;64位元;以及128位元。
  13. 一種用以合併遮罩向量的半導體晶片上之處理核心,包含:管線,具有指令執行邏輯電路,用以藉由單一指令之執行而實施下列:提取遮罩暫存器空間內之第一遮罩向量及第二遮罩向量;連結該第一遮罩向量及該第二遮罩向量為單一資料結構;以及致使該單一資料結構寫入至記憶體。
  14. 如申請專利範圍第13項之處理核心,其中,該單一指令個別地指定該遮罩暫存器空間內之該第一遮罩向量之位址、該遮罩暫存器空間內之該第二遮罩向量之位址、及將寫入該單一資料結構之記憶體位址。
  15. 如申請專利範圍第13項之處理核心,其中,該單 一資料結構為下列之任一者:8位元;16位元;32位元;以及64位元。
  16. 如申請專利範圍第13項之處理核心,其中,該第一遮罩向量及該第二遮罩向量具有相同尺寸。
  17. 如申請專利範圍第13項之處理核心,其中,該單一指令具有運算碼欄位以指定第一遮罩向量及第二遮罩向量之尺寸。
  18. 如申請專利範圍第13項之處理核心,其中,該指令執行邏輯電路係位於載入/儲存單元內。
TW101147492A 2011-12-23 2012-12-14 合併遮罩圖案之指令 TWI514268B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/067199 WO2013095635A1 (en) 2011-12-23 2011-12-23 Instruction for merging mask patterns

Publications (2)

Publication Number Publication Date
TW201339966A TW201339966A (zh) 2013-10-01
TWI514268B true TWI514268B (zh) 2015-12-21

Family

ID=48669273

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101147492A TWI514268B (zh) 2011-12-23 2012-12-14 合併遮罩圖案之指令

Country Status (4)

Country Link
US (1) US20160041827A1 (zh)
CN (1) CN104040487B (zh)
TW (1) TWI514268B (zh)
WO (1) WO2013095635A1 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9916164B2 (en) * 2015-06-11 2018-03-13 Intel Corporation Methods and apparatus to optimize instructions for execution by a processor
US9946548B2 (en) 2015-06-26 2018-04-17 Microsoft Technology Licensing, Llc Age-based management of instruction blocks in a processor instruction window
US10409599B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Decoding information about a group of instructions including a size of the group of instructions
US10191747B2 (en) 2015-06-26 2019-01-29 Microsoft Technology Licensing, Llc Locking operand values for groups of instructions executed atomically
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US10409606B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Verifying branch targets
US10175988B2 (en) 2015-06-26 2019-01-08 Microsoft Technology Licensing, Llc Explicit instruction scheduler state information for a processor
US9952867B2 (en) 2015-06-26 2018-04-24 Microsoft Technology Licensing, Llc Mapping instruction blocks based on block size
US10169044B2 (en) 2015-06-26 2019-01-01 Microsoft Technology Licensing, Llc Processing an encoding format field to interpret header information regarding a group of instructions
US10871967B2 (en) 2015-09-19 2020-12-22 Microsoft Technology Licensing, Llc Register read/write ordering
US10678544B2 (en) 2015-09-19 2020-06-09 Microsoft Technology Licensing, Llc Initiating instruction block execution using a register access instruction
US11681531B2 (en) * 2015-09-19 2023-06-20 Microsoft Technology Licensing, Llc Generation and use of memory access instruction order encodings
WO2017131789A1 (en) * 2016-01-29 2017-08-03 Hewlett Packard Enterprise Development Lp Memory management with versioning of objects
US10963253B2 (en) * 2018-07-10 2021-03-30 Arm Limited Varying micro-operation composition based on estimated value of predicate value for predicated vector instruction
US11789734B2 (en) * 2018-08-30 2023-10-17 Advanced Micro Devices, Inc. Padded vectorization with compile time known masks
CN116257350B (zh) * 2022-09-06 2023-12-08 进迭时空(杭州)科技有限公司 一种针对risc-v矢量寄存器的重命名分组装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030112971A1 (en) * 2001-12-17 2003-06-19 Motorola, Inc. Method for generating a desired state of a pseudorandom sequence and a radio using same
TW200805146A (en) * 2006-02-06 2008-01-16 Via Tech Inc Instruction set encoding in a dual-mode computer processing environment
TWI310406B (en) * 2001-12-21 2009-06-01 Micronas Gmbh Method for determining nucleic acid analytes
US20090187739A1 (en) * 1998-12-16 2009-07-23 Mario Nemirovsky Method and Apparatus for Improved Computer Load and Store Operations
TW201140435A (en) * 2009-12-22 2011-11-16 Intel Corp Synchronizing SIMD vectors

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5903769A (en) * 1997-03-31 1999-05-11 Sun Microsystems, Inc. Conditional vector processing
US20020002666A1 (en) * 1998-10-12 2002-01-03 Carole Dulong Conditional operand selection using mask operations
US20030105945A1 (en) * 2001-11-01 2003-06-05 Bops, Inc. Methods and apparatus for a bit rake instruction
US7818356B2 (en) * 2001-10-29 2010-10-19 Intel Corporation Bitstream buffer manipulation with a SIMD merge instruction

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090187739A1 (en) * 1998-12-16 2009-07-23 Mario Nemirovsky Method and Apparatus for Improved Computer Load and Store Operations
US20030112971A1 (en) * 2001-12-17 2003-06-19 Motorola, Inc. Method for generating a desired state of a pseudorandom sequence and a radio using same
TWI310406B (en) * 2001-12-21 2009-06-01 Micronas Gmbh Method for determining nucleic acid analytes
TW200805146A (en) * 2006-02-06 2008-01-16 Via Tech Inc Instruction set encoding in a dual-mode computer processing environment
TW201140435A (en) * 2009-12-22 2011-11-16 Intel Corp Synchronizing SIMD vectors

Also Published As

Publication number Publication date
US20160041827A1 (en) 2016-02-11
WO2013095635A1 (en) 2013-06-27
TW201339966A (zh) 2013-10-01
CN104040487B (zh) 2017-10-13
CN104040487A (zh) 2014-09-10

Similar Documents

Publication Publication Date Title
TWI514268B (zh) 合併遮罩圖案之指令
TWI743058B (zh) 硬體處理器、用於融合指令之方法及非暫時性機器可讀媒體
TWI566095B (zh) 向量索引化記憶體存取加上運算及/或邏輯操作之處理器、方法、系統與指令
TWI502499B (zh) 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法
TWI525536B (zh) 封裝資料重排控制指標前標產生處理器、方法、系統及指令
JP5764257B2 (ja) レジスタをアライメントするためのシステム、装置、および方法
TWI603263B (zh) 執行置換運算的處理器及具有該處理器的電腦系統
TWI544406B (zh) 浮點捨入處理器
TWI517038B (zh) 用於在多維度陣列中之元件偏移計算的指令
TWI502491B (zh) 用於將一表列索引值轉換成為遮罩值之方法、製造物品及處理器
TWI599950B (zh) 用於摩頓座標調整之處理器,方法,系統,及製造物件
TWI564795B (zh) 四維摩頓座標轉換處理器、方法、系統及指令
TWI556164B (zh) 具有不同讀取及寫入遮罩之多元件指令
TWI493449B (zh) 用於使用遮罩以執行向量緊縮一元解碼的系統、裝置及方法
TW202311986A (zh) 用於融合乘加運算的系統、裝置及方法
TWI582692B (zh) 三維摩頓座標轉換處理器,方法,系統,及指令
TWI526930B (zh) 用以複製及遮蔽資料結構之設備及方法
TW201810029A (zh) 用於跨步載入的系統、設備及方法
JP2018506094A (ja) 多倍長整数(big integer)の算術演算を実行するための方法および装置
CN108292228B (zh) 用于基于通道的步进收集的系统、设备和方法
TWI599951B (zh) 用於融合乘法乘法指令的處理器、方法及系統
TWI559219B (zh) 用於選擇向量運算之元素的裝置及方法(二)
TWI733718B (zh) 用於獲得偶數和奇數資料元素的系統、裝置及方法
JP2018500629A (ja) 3d座標から3dのz曲線インデックスを計算するための機械レベル命令
TW201810020A (zh) 用於累乘的系統、設備及方法

Legal Events

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