TWI464676B - 映射源運算元至不同範圍的系統、設備及方法 - Google Patents

映射源運算元至不同範圍的系統、設備及方法 Download PDF

Info

Publication number
TWI464676B
TWI464676B TW101143271A TW101143271A TWI464676B TW I464676 B TWI464676 B TW I464676B TW 101143271 A TW101143271 A TW 101143271A TW 101143271 A TW101143271 A TW 101143271A TW I464676 B TWI464676 B TW I464676B
Authority
TW
Taiwan
Prior art keywords
range
source
data
destination
field
Prior art date
Application number
TW101143271A
Other languages
English (en)
Other versions
TW201342210A (zh
Inventor
Elmoustapha Ould-Ahmed-Vall
Thomas Ray Craver
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 TW201342210A publication Critical patent/TW201342210A/zh
Application granted granted Critical
Publication of TWI464676B publication Critical patent/TWI464676B/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/3001Arithmetic 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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

Landscapes

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

Description

映射源運算元至不同範圍的系統、設備及方法
本發明的技術領域大致上關於電腦處理器架構,特別關於當被執行時造成特定結果的指令。
在計算時,有用的是將值從一範圍映射至另一範圍。舉例而言,希望處理落在10至250的序列範圍中的值被處理以落在新範圍中。又舉例而言,在0至256之間的值可以被再映射,以致於產生新值,相當於新序列的值,新序列的值以相同數目的值均勻散佈在較大範圍。或者,更大的範圍可以與更小的範圍比較,例如0至256下降至0至255而以來自更大的範圍的某些值映射至較小的新範圍之相同的新值。
在下述說明中,揭示眾多特定細節。但是,可瞭解的是,沒有這些特定細節,仍可實施本發明的實施例。在其它情形中,未詳細顯示習知的電路、結構及技術,以免模糊本說明的瞭解。
在本說明書中述及「一實施例」、「實施例」、「舉例說明的實施例」等等意指所述實施例包含特定的特點、結構、或特徵,但是,每一實施例並非一定包含特點特點、結構、或特徵。此外,這些文句不一定意指相同的實 施例。此外,當配合實施例而說明特定點、結構、或特徵時,可知習於此技藝者知道配合無論是否明確說明的實施例而變更這些特點、結構、或特徵。
指令集、或是指令集架構(ISA)是與程式化有關的電腦架構的一部份,以及包含本機資料型式、指令、暫存器架構、定址模式、記憶體架構、中斷及例外處理、以及外部輸入及輸出(I/O)。指令一詞於此大致上意指巨集指令,其是提供給處理器(或是可以將指令轉譯、(例如,使用靜態二進位轉譯、包含動態編譯之動態二進位轉譯)、變體、模仿、或其它方式轉換成為一或更多要由處理器處理的其它指令之指令轉換器)用於執行的指令,巨集指令係與微指令或微作業(微op)相反的,微指令或微作業是將巨集指令解碼之處理器的解碼器的結果。
ISA與實施指令集的處理器的內部設計之微架構有所區別。設有不同微架構的處理器共用共同的指令集。舉例而言,Intel® Pentium 4處理器、Intel® CoreTM 處理器、及來自加州太陽谷的超微公司的處理器實施幾乎相同版本的x86指令集(某些程度上增加更新的版本),但具有不同的內部設計。舉例而言,在使用習知的技術之不同微架構中,以不同方式實施相同的ISA暫存器架構,其包含專用的實體暫存器、使用暫存器重命令機制(例如使用暫存器別名表(RAT)、重排序緩衝器(ROB)及退出暫存器檔案;使用多映射及暫存器庫)之一或更多動態分配實體暫存器、等等。除非另外指明,否則,此處使用暫存器架 構、暫存器檔案、及暫存器之文句係表示軟體/程式人員可看到的及指令指明暫存器的方式。在需要明確性的情形中,將使用形容詞的邏輯、架構、或軟體可見來表示暫存器架構中的暫存器/檔案,而使用不同的形容詞以指明給定的微架構中的指定暫存器(例如,實體暫存器、重排序緩衝器、退出暫存器、暫存器庫)。
指令集包含一或更多指令格式。給定的指令格式界定不同的欄位(位元數目、位元位置)以特別指明要被執行的作業(作業碼)以及作業要於其上執行的運算元。某些指令格式可以經由指令樣板(或子格式)的界定而進一步中斷。舉例而言,給定的指令格式的指令樣板可以被界定為具有不同子集合的指令格式欄位(包含的多個欄位典型上是相同次序,但是,因為有較少的欄位被包含,所以,至少某些欄位具有不同的位元位置)及/或被界定為具有被不同解譯的給定欄位。因此,使用給定的指令格式(以及,假使被界定時,在該指令格式的多個指令樣板中的給定之一中)以表示ISA的各指令,以及,包含用於指明作業及運算元之欄位。舉例而言,舉例說明的ADD指令具有特定作業碼及指令格式,特定作業碼及指令格式包含用以指定該作業碼的作業欄位及用以選取運算元的運算元欄位(源1/目的地及源2);以及,在指令串中此ADD指令的發生將在選取特定運算元的運算元欄位中具有特定內容。
科學的、財務的、自動向量化的一般目的、RMS(辨 識、開發及合成)、以及影像和多媒體應用(例如,2D/3D圖形、影像處理、影像壓縮/解壓縮、語音辨識演繹法及音頻操作)通常要求對大量的資料項執行相同的作業(稱為「資料平行性」)。單一指令多資料(SIMD)意指促使處理器對多資料項執行作業之指令型式。SIMD技術特別適合某些處理器,這些處理器能將暫存器中的多個位元邏輯上分成一些固定大小的資料元,各資料元代表分別的值。舉例而言,在256位元暫存器中的位元被指定為作為對四個分別的64位元緊縮資料元(四倍字(Q)尺寸資料元)、八個分別的32位元緊縮資料元(二倍字(D)尺寸資料元)、十六個分別的16位元緊縮資料元(字(W)尺寸資料元)、或是三十二個分別的8位元緊縮資料元(位元組(B)尺寸資料元)作業之源運算元。此型式的資料被稱為「緊縮」資料型式或是「向量」資料型式,以及,此資料型式的運算元被稱為緊縮資料運算元或是向量運算元。換言之,緊縮資料項或向量意指緊縮資料元的序列,且緊縮資料運算元或向量運算元可以是SIMD指令的源或目的地運算元(也稱為緊縮資料指令或向量指令)。
舉例而言,一型式的SIMD指令指明以垂直方式對二源向量運算元執行單一向量作業,以便以相同數目資料元、以及依相同資料元次序,產生相同大小的目的地向量運算元(也稱為結果向量運算元)。源向量運算元中的資料元稱為源資料元,而目的地向量運算元中的資料元稱為 目的地或結果資料元。這些源向量運算元具有相同的尺寸以及含有相同寬度的資料元,因此,它們含有相同數目的資料元。在二源向量運算元中相同的位元位置中的源資料元形成資料元對(也稱為對應的資料元;亦即,在各源運算元的資料元位置0中的資料元對應的,在各源運算元的資料元位置1中的資料元對應的,等等)。對這些源資料元對中的各對分別地執行該SIMD指令指明的作業以產生結果資料元的匹配數目,因此,各對源資料元具有對應的結果資料元。由於作業是垂直的且由於結果向量運算元是相同尺寸、具有相同數目的資料元、及結果資料元以與源向量運算元相同的資料元次序儲存,所以,結果資料元與源向量運算元中它們相對應的成對的源資料元位於相同的結果向量運算元的位元位置。除了此舉例說明的型式的SIMD指令之外,有各種其它型式的SIMD指令(例如,僅具有一或具有二以上的源向量運算元、以水平方式操作、產生具有不同大小的結果向量運算元、具有不同尺寸的資料元、及/或具有不同的資料元次序)。應瞭解,目的地向量運算元(或目的地運算元)一詞定義為執行指令指定的作業之直接結果,包含目的地運算元儲存在位置(其可為該指令指定的暫存器或記憶體位址),以致於其可由另一指令存取作為源運算元(由另一指令的相同位置指定)。
例如具有包含x86的指令集、MMXTM 、串流SIMD擴充(SSE)、SSE2、SSE3、SSE4.1、及SSE4.2指令之 Intel® CoreTM 處理器採用的SIMD技術能夠顯著增進應用性能。稱為先進向量擴充(AVX)(AVX1及AVX2)以及使用向量延伸(VEX)碼化設計的其它SIMD擴充集已經釋出及/或公告(舉例而言,請參照2011年10月之Intel®64和IA-32架構軟體開發者手冊;以及,2011年6月之Intel®先進向量擴充程式參考)。
範圍映射
下述是統稱為「範圍映射」的指令之實施例,以及,用以執行包含先前技術一節中所述的多個不同的區域中有利的此指令的系統、架構、指令格式、等等的實施例。由於範圍映射指令的執行採取具有源資料範圍的源資料元及將源資料元映射至具有目的地資料範圍的目的地資料元,所以,其有效地處理具有早先所述之從一範圍至另一範圍的值映射的問題。換言之,範圍映射指令的執行促使處理器執行從一範圍至另一範圍的值映射。結果被寫入目的地暫存器。在某些實施例中,多個源中的至少之一是例如128位元、256位元、512位元向量暫存器等暫存器。在某些實施例中,源運算元是與起始記憶體區塊相關連的資料元集合。此外,在某些實施例中,在任何混合之前,一或二源的資料元經過例如調和、廣播、轉換、等等資料轉換(實例將於此說明)。稍後說明寫入遮罩暫存器的實例。
用於單一值的指令的基本形式之舉例說明的格式是“RANGEMAP destination,source,source_range,destination_range”, 其中,運算元destination是目的地運算元,source是源運算元,source_range是源的值範圍,以及,destination_range是當儲存在目的地中時的值之值範圍。在一實施例中,destination是目的地運算元以及source是源運算元。從記憶體中取出的是從記憶體位址開始的連續位元總合及取決於目的地暫存器的尺寸之數個尺寸之一(128位元、256位元、512位元等等),尺寸通當與目的地暫存器的尺寸相同。在一實施例中,RANGEMAP是指令的作業碼。典型地,各運算元明確地界定於指令中。資料元的尺寸界定於指令的「prefix(前置)」中,例如經由使用例如稍後說明的「W」等資料粒度位元的標示。在大部份的實施例中,W將表示各資料元是32或是64位元。假使資料元尺寸是32位元以及源尺寸512位元時,則每一源有十六(16)資料元。在一實施例中,範圍映射指令為VEX或是EVEX型式的指令。
圖1中顯示範圍映射指令執行的實例。在本實例中,有一源N,其具有從下限LB至上限UB之範圍。下限及上限界定可能用於該源之值的範圍。舉例而言,在一實施例中,對於八位元像素範圍,代表一顏色的像素之值具有0≦像素≦255的範圍。在另一實施例中,源具有不同地界定的範圍,例如,10≦N≦250。雖然源具有在此輸入範圍之內的界定值,但是,範圍界定此源具有的可能值的範圍。要被執行的操作是要轉換具有源範圍的源值N至具有不同範圍的另一值N’。
舉例而言,在一實施例中,範圍映射將值從較大範圍映射至較小範圍,例如,將具有0≦N≦250範圍的整數映射至具有0≦N≦120範圍的整數。在另一實施例中,範圍映射將值從較小範圍映射至較大範圍,例如,將具有0≦N≦75範圍的整數映射至具有0≦N≦300範圍的整數。在這些實施例中,用於範圍映射源的計算以等式(1)表示,其中,各源及目的地資料範圍是零為基礎的範圍:
其中,目的地(destination)是範圍映射值的值,源(source)是輸入值,source_range是源的範圍而destination_range是目的地的範圍。在一實施例中,零為基礎的資料範圍是具有零為資料範圍的下限之資料範圍。在另一實施例中,非零為基礎的資料範圍具有不同於等式(1)的等式,但是使用考慮非零為基礎的資料範圍之等式。源及/或目的地資料元是整數(例如,1位元組、2位元組、4位元組、8位元組、等等位元組整數)、實數(例如,2位元組、4位元組、8位元組、16位元組等等位元組實數)、及/或某些其它資料型式。雖然在實施例中,源(source)和目的地(destination)是純量值,在替代實施例中,源(source)和目的地(destination)是其它型式的運算元(向量暫存器、儲存在記憶體中的向量、等等)。此外,源和目的地資料元具有相同及/或不同的資料型式(例如,都為整數、實數、等等,或是一資 料元是整數而另一資料元是實數、等等)。
在一實施例中,範圍映射是由替代公式表示及比等式(1)所表示的計算更有效率的計算之範圍映射型式。圖2顯示範圍映射204指令的執行之另一實例。在圖2中,範圍映射204將整數N從0≦N≦255的輸入範圍202映射至0≦N’≦256的範圍206。在本實施例中,資料元由被映射至多位元組整數的單一位元組整數表示。在一實施例中,用於此範圍映射204的等式是等式(2):destination =source +(source >>7) (2)其中,目的地是範圍映射值的整數值以及源是輸入整數值。此映射稱為「阿爾發混合」且用於2D圖形中。在一實施例中,源(source)及目的地(destination)資料範圍是固有的,例如在等式(2)中。在本實施例中,資料範圍未通過作為運算元。
碼序列中使用的範圍映射指令的實例如下所述:int srcPix=src[index];int dstPix=dest[index];int alpha=(srcPix & 0xFF000000)>>24;alpha=Map256(alpha); //map 0-255 to 0-256 int tempDst;int s=(srcPix & 0x000000FF);int d=(dstPix & 0x000000FF); tempDst=(d+((s-d)* alpha)>>8);s=(srcPix & 0x0000FF00)>>8;d=(dstPix & 0x0000FF00)>>8;tempDst |=(d+((s-d)* alpha)>>8)<<8;s=(srcPix & 0x00FF0000)>>16;d=(dstPix & 0x00FF0000)>>16;tempDst |=(d+((s-d)* alpha)>>8)<<16;s=(srcPix & 0xFF000000)>>24;d=(dstPix & 0xFF000000)>>24;tempDst |=(d+((s-d)* alpha)>>8)<<24;dest[index]=tempDst;
在某些情形中,源是暫存器(對於本實例,源被視為512位元暫存器,例如設有16個32位元資料元的ZMM暫存器,但是,可以使用例如XMM和YMM暫存器及16或64位元資料元等其它資料元及暫存器尺寸)。目的地是暫存器或記憶體區塊。假使源是記憶體區塊,則在某些實施例中,則在源的任何混合之前,其被置於暫時暫存器中。此外,記憶體區塊的資料元在被置於暫時暫存器中之前進行資料轉換。
圖3AB顯示範圍映射指令的虛擬碼實例。在圖3A中,虛擬碼302顯示一般範圍的映射指令。在圖3B中,虛擬碼352顯示用於阿爾發混合的範圍映射。
圖4顯示處理器中使用範圍映射指令的實施例。在401,提取具有目的地運算元、源運算元、及範圍標示之 範圍映射指令。在一實施例中,範圍標示被通過作為source_range運算元及destination_range運算元。在另一實施例中,範圍標示是固定的且導自指令名稱。在某些實施例中,目的地運算元是純量或是向量暫存器(例如ZMM1)。源運算元可為純量或向量暫存器,或是記憶體運算元。
在403,將範圍映射指令解碼。取決於指令的格式,在此階段,解譯各式各樣的資料,例如假使有要成為資料轉換時,那些暫存器要寫入至及取出要存取的記憶體位址、等等。
在405取出/讀取源運算元值。假使源是暫存器,則此暫存器被讀取。假使源運算元是記憶體運算元,則與該運算元相關連的資料元被取出。在某些實施例中,來自記憶體的資料元儲存至暫時暫存器。
假使有要被執行的任何資料元轉換(例如稍後詳述的上轉換、廣播、調和、等等),則在407,其被執行。舉例而言,來自記憶體的16位元資料元被上轉換成32位元資料元,或者,資料元從一樣式調和成另一樣式(例如,XYZW XYZW XYZW...XYZW至XXXXXXXX YYYYYYYY ZZZZZZZZZZ WWWWWWWW)。
在409,決定源及目的地資料範圍。在一實施例中,一或二範圍被通過作為指令中的運算元。在另一實施例中,一或二資料範圍根據被執行的指令而被固定。在又一實施例中,複數個資料範圍中之一被通過作為運算元,而 另一資料範圍是固定的。在一實施例中,從源及/或目的地資料範圍中之一或二資料範圍是固有的來自正被執行的指令。舉例而言,在一實施例中,在支援阿爾發混合的指令中,固有的源及目的地資料範圍分別是〔0,255〕及〔0,256〕。又舉例而言,在另一實施例中,藉由從在源中的範圍映射位置之較大影像取樣以將影像縮減至較小影像的比例(X,Y)座標用以填滿目的地之(X,Y)範圍牽涉使用範圍映射指令。藉由將目的地(X,Y)座標映射至較大的範圍、在映射(X,Y)座標從源讀取、及寫至目的地的原始XY座標來完成。
在411,由執行資源執行範圍映射指令(或是包含諸如微操作的指令之作業)。此執行造成根據輸入及輸出資料範圍而從源至目的地一元接一元的範圍映射。舉例而言,源的資料元根據源及目的地範圍而映射至目的地。此範圍映射的實例顯示於圖1及2中。
在413,適當的範圍映射目的地值儲存於目的地暫存器中。再度地,在圖1及2中顯示此點的實例。雖然分別地說明411及413,但是,在某些實施例中,它們可以一起執行作為指令執行的一部份。
雖然上述是在一型式的執行環境中說明,但是,容易修改成適合其它環境,例如,詳述之有序及亂序環境。
圖5顯示用於處理範圍映射指令的方法實施例。在本實施例中,假定作業401-407中假使不是全部而是某些作業較早執行,但是,它們未被顯示以免模糊下述細節。舉 例而言,提取及解碼未被顯示,也未顯示運算元(源及資料範圍)取出。
在501,接收源輸入、源資料範圍、及目的地資料範圍。舉例而言,從源運算元接收源資料元。在某些實施例中,從對應的指令運算元接收源及目的地範圍。在另一實施例中,源及目的地資料範圍中之一或更多由指令名稱固定。在又一實施例中,根據用以範圍映射源資料元之等式,資料範圍中之一或更多是固有的。
在503-507,執行迴路以範圍映射二或更多資料元。在一實施例中,源及目的地中之一或二者是純量暫存器、向量暫存器、記憶體區塊、及/或其結合。此外,源所指的一或更多資料元中的各資料元如上所述般為一或更多整數、實數、等等。在505,執行資料元的範圍映射。被執行的範圍映射的實例顯示於圖1-3B中。舉例而言,執行一般範圍映射的迴路,例如,將具有啟始範圍的值映射至較小或較大範圍。或者,習知的範圍映射的迴路被執行(阿爾發混合、等等)。在507,迴路結束。假使在503-507中一資料元要被範圍映射(例如,範圍映射純量值、等等),則沒有迴路被執行,且執行單一值的適當範圍映射。
圖6顯示用於處理範圍映射指令的方法實施例。在本實施例中,假定在601之前,執行作業401-407中假使不是全部而是一些作業。在601,對各資料元,使用源資料範圍及目的地資料範圍而對源輸入施加範圍映射。在某些 實施例中,平行地執行範圍映射。舉例而言,執行眾多資料元的一般範圍映射,例如,將具有起始範圍的資料元映射至較小或較大的範圍。替代地,執行使用習知範圍映射的迴路(阿爾發混合、等等)。
圖5及6根據一般範圍映射或是阿爾發混合範圍映射而說明範圍映射。此外,應清楚瞭解其它型式的範圍映射可以用於本發明。在一實施例中,以單一指令進行範圍映射作業的可能優點是更快的表現、更緊密的碼、及藉由使用一指令而非目的可能無法被辨認的序列而能夠使碼更容易瞭解/自行文件化。舉例而言,在一實施例中,在程式中更多的指令造成更大數目的循環以執行該程式。相反地,具有較少的指令導致更小數目的循環以執行該程式。
舉例說明的指令格式
此處所述的指令實施例可以以不同格式具體實施。此外,於下詳述舉例說明的系統、架構、及管線。這些指令的實施例可被執行於系統、架構、及管線上,但是不限於詳述的實施例。
VEX指令格式
VEX編碼允許指令具有二個以上的運算元,以及允許SIMD向量暫存器長於128位元。使用VEX前置以規定三運算元(或更多)語法。舉例而言,先前的二運算元指令執行例如A=A+B等改寫源運算元的作業。使用VEX前置 使得運算元能夠執行例如A=B+C等非破壞性作業。
圖7A顯示舉例說明的AVX指令格式,其包含VEX前置702、實數作業碼欄位730、Mod R/M位元組740、SIB位元組750、位移欄位762、及IMM8 772。圖7B顯示那些來自圖7A的欄位構成全作業碼欄位774及基本作業欄位742。圖7C顯示那些來自圖7A的欄位構成暫存器索引欄位744。
VEX前置(位元組0-2)702以三位元組形式編碼。第一位元組是格式欄位740(VEX位元組0,位元〔7:0〕),其含有明確的C4位元組值(用於區別C4指令格式的獨特值)。第二至第三位元組(VEX位元組1-2)包含提供特定能力之多個位元欄位。具體而言,REX欄位705(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。作業碼映射欄715(VEX位元組1、位元〔4:0〕-mmmmm)包含用以將暗示的領先作業碼位元組之內容編碼。W欄位764(VEX位元組2,位元〔7〕-W)-由標示VEX.W表示,以及視指令而提供不同的功能。VEX.vvvv 720(VEX位元組2,位元〔6:3〕-vvvv)的角色包含下述:1)VEX.vvvv將 相反(1的補數)形式指定之第一源暫存器運算元編碼且對於具有2或更多源運算元的指令是有效的;2)VEX.vvvv將用於某些向量偏移的1的補數形式所指定的目的地暫存器運算元編碼;或是,3)VEX.vvvv未將任何運算元編碼,欄位被保留以及應含有1111b。假使VEX.L 768尺寸欄位(VEX位元組2,位元〔2〕-L)=0,則其表示128位元向量;假使VEX.L=1,則其表示256位元向量。前置編碼欄位725(VEX位元組2,位元〔1:0〕-pp)提供增加的位元給基本作業欄位。
實數作業碼欄位730(位元組3)也稱為是作業碼位元組。在此欄位中指定作業碼的一部份。
MOD R/M欄位740(位元組4)包含MOD欄位742(位元〔7-6〕、Reg欄位744(位元〔5-3〕)、及R/M欄位746(位元〔2-0〕)。Reg欄位744的角色包含下述:將目的地暫存器運算元或是源暫存器運算元(Rrrr的rrr)編碼,或是被作為作業碼擴充處理且未被用以將任何指令運算元編碼。R/M欄位746的角色包含下述:將參照記憶體位址的指令運算元編碼,或是將目的地暫存器運算元或是源暫存器運算元編碼。
比例、索引、基礎(SIB)-比例欄位750的內容(位元組5)包含用於記憶體位址產生的SS752(位元〔7-6])。SIB.xxx 754的內容(位元〔5:3〕)及SIB.bbb 756的內容(位元〔2-0〕)先前已被述及與暫存器索引Xxxx及Bbbb有關。
位移欄位762及立即欄位(IMM8)772含有位址資料。
同屬向量友善指令格式
向量友善指令格式是適用於向量指令的指令格式(例如,有某些欄位特定用於向量運算)。雖然說明經由向量友善指令格式而支援向量及純量運算之實施例,但是,替代的實施例可以僅使用向量友善指令格式向量運算。
圖8A-8B是方塊圖,顯示根據本發明的實施例之同屬向量友善指令格式及指其指令樣板。圖8A是方塊圖,顯示根據本發明的實施例之同屬向量友善指令格式及其等級A指令樣板;而圖8B是方塊圖,顯示根據本發明的實施例之同屬向量友善指令格式及其等級B指令樣板。具體而言,等級A及等級B指令樣板被界定用於同屬向量友善指令格式800,等級A及等級B指令樣板都包含無記憶體存取805指令樣板及記憶體存取820指令樣板。在向量友善指令格式中同屬一詞係指指令格式未受限於任何特定的指令集。
將說明本發明的實施例,其中,向量友善指令格式支援下述:具有32位元(4位元組)或是64位元(8位元組)資料元寬度(或尺寸)之64位元組向量運算元長度(或尺寸)(因此,64位元組向量由16個雙倍字尺寸元或是替代地由8個四倍字尺寸元組成);具有16位元(2位元組)或是8位元(1位元組)資料元寬度(或尺寸) 之64位元組向量運算元長度(或尺寸);具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或是8位元(1位元組)資料元寬度(或尺寸)之32位元組向量運算元長度(或尺寸);以及,具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或是8位元(1位元組)資料元寬度(或尺寸)之16位元組向量運算元長度(或尺寸);替代實施例以更多、更少或是不同的資料元寬度(例如,128位元(16位元組)資料元寬度)來支援更多、更少及/或不同的向量運算元尺寸(例如,256位元組向量運算元)。
在圖8A中的等級A指令樣板包含:1)在無記憶體存取805指令樣板之內,顯示無記憶體存取、完全捨入控制型作業810指令樣板及無記憶體存取、資料轉換型式作業815指令樣板;以及,2)在記憶體存取820指令樣板之內,有顯示記憶體存取、暫時825指令樣板及記憶體存取、非暫時830指令樣板。圖8B中的等級B指令樣板包含:1)在無記憶體存取805指令樣板之內,顯示無記憶體存取、寫入遮罩控制、部份捨入控制型作業812指令樣板及無記憶體存取、寫入遮罩控制、向量長度型式作業817指令樣板;以及,2)在記憶體存取820指令樣板之內,顯示有記憶體存取、寫入遮罩控制827指令樣板。
同屬向量友善指令格式800包含以圖8A-8B中所示的次序列出的下述欄位。
格式欄位840-在此欄位中的特定值(指令格式識別 符值)獨特地識別向量友善指令格式,並因而識別指令串中向量友善指令格式的指令發生。確切而言,以此欄位對於僅有同屬向量友善指令格式之指令集並非所需的觀點而言,此欄位是選加的。
基礎作業欄位842-其內容區別不同的基礎作業。
暫存器索引欄位844-其內容直接或是經由位址產生而指明源及目的地運算元的區塊是在暫存器或在記憶體中。這些包含足夠數目的位元以從PxQ(例如32x512、16x128、32x1024、64x1024)暫存器檔案中選取N個暫存器。雖然在一實施例中,N可以高達三個源及一個目的地暫存器,但是,替代實施例可以支援更多或是更少的源及目的地暫存器(例如,可以支援高達二個源,其中,這些源中之一也作為目的地,可以支援高達三個源,其中,這些源中之一也作為目的地,可以支援高達二個源及一個目的地)。
修飾符欄位846-其內容區別指定及未指定記憶體存取的同屬向量指令格式中指令的發生;亦即,在無記憶體存取805指令樣板與記憶體存取820指令樣板之間作區分。記憶體存取作業對記憶體層級結構讀取及/或寫入(在某些情形中,使用暫存器中的值指定源及/或目的地位址),而非記憶體存取作業未如此作(例如,源及目的地是暫存器)。雖然在一實施例中,此欄位也在三不同方式之間選取以執行記憶體位址計算,但是,替代的實施例可以支援更多、更少、或是不同的方式以執行記憶體位址 計算。
擴增作業欄位850-其內容區別多種不同作業中那一作業要加上基礎作業被執行。此欄位是內容特定的。在本發明的一實施例中,此欄位分成等級欄位868、阿爾發欄位852、貝它欄位854。擴增作業欄位850允許共同的作業組以單一指令而非2、3或4指令執行。
比例欄位860-其內容允許索引欄位的內容的比例用於記憶體位址產生(例如,用於使用2scale *索引+基礎之位址產生)。
位移欄位862A其內容作為記憶體位址產生的一部份(例如,用於使用2scale *索引+基礎+位移之位址產生)。
位移因數欄位862B(注意,直接在位移因數欄位862B上方的位移欄位862A的並列係表示一或另一者被使用)-其內容作為位址產生的一部份;其指明要依記憶體存取(N)的尺寸而比例化之位移因數,其中,N是記憶體存取中的位元組數目(例如,用於使用2scale *索引+基礎+比例化位移的位址產生)。冗餘的低階位元被忽略,因此,位移因數欄的內容乘以記憶體運算元全部尺寸(N)以產生計算有效位址時使用的最後位移。根據全作業碼欄位874(稍後說明)及資料操縱欄位854C,在運行時間時由處理器硬體決定N的值。在位移欄位862A及位移因數欄位862B不用於無記憶體存取805指令樣板及/或不同實施例僅實施二者中之一或不實施二者的情形中, 它們是選加的。
資料元寬度欄位864-其內容區別一些資料元寬度中的那一寬度是要被使用(在某些實施例中對所有指令;在其它實施例中僅對某些指令)。在假使使用作業碼的某些態樣而僅支援一資料元寬度及/或支援多個資料元寬度時不需要此欄位的情形中,此欄位是選加的。
寫入遮罩欄位870-其內容以每一資料元位置為基礎而控制目的地向量運算元中的資料元位置是否反應基礎作業及擴增作業的結果。等級A指令樣板支援合併寫入遮罩,而等級B指令樣板支援合併及零化寫入遮罩。當合併時,向量遮罩允許目的地中任何組的元在任何作業的執行期間受保護(由基礎作業及擴增作業指明)而免於更新;在其它的一實施例中,保留對應的遮罩位元具有0之目的地的每一元的舊值。相反地,當零化向量遮罩允許目的地中的任何組的元在任何作業(由基礎作業及擴增作業指定)執行期間零化時;在一實施例中,當對應的遮罩位元具有0值時,目的地的元被設定為0。此功能的子集合是控制執行的作業的向量長度之能力(亦即,被修改的元的跨幅,從第一至最後一個);但是,被修改的元件不一定是連續的。如此,寫入遮罩欄位870允許部份向量操作,包含載入、儲存、算術、邏輯、等等。雖然說明本發明的實施例,其中,寫入遮罩欄位870的內容選取一些含有要被使用的寫入遮罩之寫入遮罩暫存器中之一(因此,寫入遮罩欄位870的內容間接地識別要被執行的遮罩),但是,替 代實施例取代地或增加地允許寫入遮罩欄位870的內容直接指定要被執行的遮罩。
立即欄位872-其內容允許立即性的規格。在此欄位未出現在未支援立即性的同屬向量友善格式實施中以及其未出現在未使用立即性的指令中之情形中,此欄位是選加的。
等級欄位868-其內容區別不同等級的指令。參考圖8A-B,此欄位的內容在等級A與等級B指令之間選取。在圖8A-B中,四角圓化的方形被用以標示特定值存在於欄位中(例如,分別在圖8A-B中用於等級欄位868的等級A 868A及等級B 868B)。
等級A的指令樣板
在等級A的非記憶體存取805指令樣板的情形中,阿爾發欄位852被解譯為RS欄位852A,其內容區別不同的擴增作業型式中那一型式是要被執行(例如,捨入852A.1及資料轉換852A.2分別被指定用於無記憶體存取、捨入型式作業810及無記憶體存取、資料轉換型式作業815指令樣板),而貝他欄位854區別被指定的型式的作業中那一作業是要被執行。在無記憶體存取805指令樣板中,比例欄位860、位移比例欄位862A、及位移比例欄位862B不存在。
無記憶體存取指令樣板-完全捨入控制型作業
在無記憶體存取完全捨入控制型作業810指令樣板 中,貝他欄位854被解譯為捨入控制欄位854A,其內容提供靜態捨入。雖然在上述的發明實施例中,捨入控制欄位854A包含抑制所有浮點例外(SAE)欄位856及捨入操作控制欄位858,但是,替代實施例可以支援將這二概念編碼成相同欄位或是僅具有這些概念/欄位中之一或另一者(例如,可以僅具有捨入操作控制欄位858)。
SAE欄位856-其內容區別是否將例外事件報告禁能;當SAE欄位的856內容標示抑制被賦能時,給定的指令不報告任何種類的浮點例外旗標及不喚起任何浮點例外處理器。
捨入作業控制欄位858-其內容區別捨入作業組中何者要執行(例如,捨進、捨去、捨入至零、及捨入至最接近的)。因此,捨入作業控制欄位858允許以每一指令為基礎之捨入模式的改變。在處理器包含用於指明捨入模式的控制暫存器之發明的一實施例中,捨入作業控制欄位850的內容置換該暫存器值。
無記憶體存取指令樣板-資料轉換型式作業
在無記憶體存取資料轉換型式作業815指令樣板中,貝他欄位854被解譯為資料轉換欄位854B,其內容區別一些資料轉換中何者要被執行(例如,無資料轉換、調和、廣播)。
在等級A的記憶體存取820指令樣板的情形中,阿爾發欄位852被解譯為逐出暗示欄位852B,其內容區別逐 出暗示中那一者是要被使用(在圖8A中,暫時852B.1及非暫時852B.2分別被指定用於記憶體存取、暫時825指令樣板以及記憶體存取、非暫時830指令樣板),而貝他欄位854被解譯為資料操縱欄位854C,其內容區別一些資料操縱作業(也稱為基元)中何者是要被執行(例如,無操縱;廣播;源的上轉;及目的地的下轉)。記憶體存取820指令樣板包含比例欄位860,且選加地包含位移欄位862A或位移比例欄位862B。
藉由轉換支援,向量記憶體指令對記憶體執行向量載入及向量儲存。與正常的向量指令一般,向量記憶體指令以資料元方式對記憶體傳輸資料,而真正被傳送的元是由被選為寫入遮罩的向量遮罩的內容所指定。
記憶體存取指令樣板-暫時
暫時資料是容易足夠快再被使用而從快取獲利之資料。但是,這是暗示,以及,不同的處理器可以以不同方式實施它,包含完全忽略暗示。
記憶體存取指令樣板-非暫時
非暫時資料是不容易足夠快再被使用以從第一層快取記憶體中的快取獲利之資料,且應被授予逐出優先權。但是,這是暗示,以及,不同的處理器可以以不同方式實施它,包含完全忽略暗示。
等級B的指令樣板
在等級B的指令樣板的情形中,阿爾發欄位852被解譯為寫入遮罩控制(Z)欄位852C,其內容區別由寫入遮罩欄位870控制的寫入遮罩是否應為合併或零化。
在等級B的非記憶體存取805指令樣板的情形中,部份貝他欄位854是被解譯為RL欄位857A,其內容區別不同的擴增作業型式中那一作業型式是要被執行(例如,捨入857A.1以及向量長度(VSIZE)857A.2分別被指定用於無記憶體存取、寫入遮罩控制、部份捨入控制型作業812指令樣板以及無記憶體存取、寫入遮罩控制、VSIZE型式作業817指令樣板),而貝他欄位854的其餘部份區別具有指定型式的作業中何者是要被執行。在無記憶體存取805指令樣板中,比例欄位860、位移欄位862A、及位移比例欄位862B不存在。
在無記憶體存取中,寫入遮罩控制、部份捨入控制型作業810指令樣板、貝他欄位854的其它部份被解譯為捨入作業欄位859A且例外事件報告被禁能(被給定的指令不報告任何種類的浮點例外旗標及不喚起任何浮點例外處理器)。
捨入作業控制欄位859A-正如同捨入作業控制欄位858般,其內容區別捨入作業組中何者要執行(例如,捨進、捨去、捨入至零、及捨入至最接近的))。因此,捨入作業控制欄位859A允許以每一指令為基礎之捨入模式的改變。在處理器包含用於指明捨入模式的控制暫存器之 發明的一實施例中,捨入作業控制欄位850的內容置換該暫存器值。
在無記憶體存取、寫入遮罩控制,VSIZE型式作業817指令樣板中,貝他欄位854的其餘部份被解譯為向量長度欄位859B,其內容區別要對一些資料向量長度中的那一資料向量長度執行(例如,128、256、或512位元組)。
在等級B的記憶體存取820指令樣板的情形中,部份貝它欄位854被解譯為廣播欄位857B,其內容區別廣播型資料操縱作業是否要被執行,而貝它欄位854中的其它部份被解譯為向量長度欄位859B。記憶體存取820指令樣板包含比例欄位860,以及,選加地包含位移欄位862A或是位移比例欄位862B。
關於同屬向量友善指令格式800,完全作業碼欄位874顯示為包含格式欄位840、基礎作業欄位842、及資料元件寬度欄位864。雖然顯示完全作業碼欄位874包含所有這些欄位的一實施例,但是,在未支援所有它們的實施例中,完全作業碼欄位874包含小於所有這些欄位的欄位。完全作業碼欄位874提供作業碼(opcode)。
擴增作業欄位850、資料元寬度欄位864、及寫入遮罩欄位870允許根據同屬向量友善指令格式的指令為基礎來指定這些特點。
寫入遮罩欄位及資料元寬度欄位的結合會產生型式化的指令,其中,它們允許根據不同的資料元寬度來施加遮 罩。
等級A及等級B之內發現的各種指令樣板在不同的情形中是有利的。在本發明的某些實施例中,不同的處理器或是處理器之內不同的核心可以僅支援等級A、僅支援等級B、或支援這二等級。舉例而言,要用於一般用途之計算的高性能一般用途之亂序核心僅支援等級B,主要用於圖形及/或科學(通量)計算的核心僅支援等級A,以及用於支援二等級的核心可以支援二等級(當然,具有來自二等級的樣板及指令的某些混合,但非來自二等級的所有樣板及指令是在本發明的範圍之內)。而且,單一處理器包含多核心,所有這些核心支援相同等級,或者,其中,不同的核心支援不同的等級。舉例而言,在設有分別的圖形及一般用途核心的處理器中,主要用於圖形及/或科學計算的複數個圖形核心中之一僅支援等級A,而一或更多一般用途核心可為具有用於僅支援等級B的一般用途計算之亂序執行及暫存器重命名之高性能一般用途核心。不具有分別的圖形核心之另一處理器可以包含支援等級A和等級B的一或更多一般用途有序或亂序核心。當然,在本發明的不同實施例中,來自一等級的特點也可在其它等級中實施。以高階語言撰寫的程式將被置於(舉例而言,僅即時被編譯或是靜態地被編譯成)各式各樣之不同的可執行形式中,包含:1)僅具有由用於執行的標的處理器所支援的等級的指令之形式;或是,2)具有使用所有等級的指令之不同組合撰寫的替代常式以及具有控制流程碼之形 式,控制流程碼係根據由目前正執行碼的處理器所支援的指令而選取要執行的常式。
舉例說明的特定向量友善指令格式
圖9顯示根據本發明的實施例之舉例說明的特定向量友善指令格式。圖9顯示特定向量友善指令格式900,其在指定欄位的位置、大小、解譯、及次序、以及用於那些欄位中的某些欄位之值的情形中是特定的。特定向量友善指令格式900可以被用以延伸x86指令集,因而某些欄位類似於或同於現有的x86指令集中使用的欄位以及其延伸(例如,AVX)。此格式維持與具有延伸的現有x86指令集的前置編碼欄位、實數運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位、及立即欄位一致。顯示來自圖9的欄位映射至來自圖8的欄位。
應瞭解,雖然為了說明而在同屬向量友善指令格式800的環境中參考特定向量友善指令格式900之目的,以說明本發明的實施例,但是,除非特別申明,否則本發明不侷限於特定向量友善指令格式900。舉例而言,同屬向量友善指令格式800慮及用於各種欄位的各種可能大小,而特定向量友善指令格式900顯示為具有特定大小的欄位。具體舉例而言,雖然資料元寬度欄位864顯示為特定向量友善指令格式900中的一位元欄位,但是,本發明不限於此(亦即,同屬向量友善指令格式800慮及資料元寬度欄位864的其它大小)。
同屬向量友善指令格式800包含依圖9A中所示的次序而於下列出的下述欄位。
EVEX前置(位元組0-3)902-以四位元組形式編碼。
格式欄位840(EVEX位元組0,位元〔7:0〕)-第一位元組(EVEX位元組0)是格式欄位840以及其含有0x62(用於區別發明的一實施例中向量友善指令格式的獨特值)。
第二-第四位元組(EVEX位元組1-3)包含提供特定能力的一些位元欄位。
REX欄位905(EVEX位元組1,位元〔7-5〕)由EVEX.R位元欄位(EVEX位元組1,位元〔7〕-R)、EVEX.X位元欄位(EVEX位元組1,位元〔6〕-X)、及857BEX位元組1,位元〔5〕-B)組成。EVEX.R、EVEX.X及EVEX.B位元欄位提供與對應的VEX位元欄位相同的功能性,且使用1s互補形式來編碼,亦即,ZMM0被編碼為1111B,ZMM15被編碼為0000B。如同此技藝中所知般,指令的其它欄位將暫存器索引的較低的三個位元編碼(rrr,xxx,及bbb),以致於藉由加上EVEX.R、EVEX.X、及EVEX.B,可以形成Rrrr、Xxxx、及Bbbb。
REX’欄位810-這是REX’欄位810的第一部份且是用以將延伸的32暫存器組的上16或下16編碼之EVEX.R’位元欄位(EVEX位元組1,位元〔4〕-R’)。在本發明的一實施例中,此位元與如下標示的其它位元以位元反轉 格式儲存,以與BOUND指令區別(在已知的x86 32位元模式中),BOUND指令的實數作業碼位元組是62,但是,在MOD R/M欄位(下述)中未接受MOD欄位中11的值;本發明的替代實施例未以反轉格式儲存此位元及下述其它標示的位元。1的值用以將下16暫存器編碼。換言之,藉由結合來自其它欄位的EVEX.R' 、EVEX.R、及其它RRR以形成R' Rrrr。
作業碼映射欄位915(EVEX位元組1,位元〔3:0]-mmmm)-它的內容將暗指的領先作業碼位元組(0F,0F 38,或0F 3)編碼。
資料元寬度欄位864(EVEX位元組2,位元〔7〕-W)-由記號EVEX.W表示。EVEX.W用以界定資料型式(32位元資料元或64位元資料元)的粒度(大小)。
EVEX.vvvv 920(EVEX位元組2,位元〔6:3〕-vvvv)-EVEX.vvvv的角色可以包含下述:1)EVEX.vvvv將以反轉(1s互補)形式指定的第一源暫存器運算元編碼,且對於具有2或更多源運算元的指令是有效的;2)EVEX.vvvv將對某些向量偏移以1s互補形式指定的目的地暫存器運算元編碼;或者3)EVEX.vvvv未將任何運算元編碼,欄位被保留且應含有1111b。因此,EVEX.vvvv欄位920將依反轉(1s互補)形式儲存的第一源暫存器指定符的4低階位元編碼。取決於指令,額外的不同EVEX位元欄位被用以延伸指定符尺寸至32暫存器。
EVEX.U 868等級欄位(EVEX位元組2,位元〔2〕-U)-假使EVEX.U=0,則其標示等級A或EVEX.U0;假使EVEX.U=1,則其標示等級B或EVEX.U1。
前置編碼欄位925(EVEX位元組2,位元〔1:0〕-pp)-提供增加的位元用於基礎作業欄位。除了提供支援給EVEX前置格式的舊有SSE指令,這也具有使SIMD前置小巧化(而非要求位元組來表示SIMD前置,EVEX前置僅要求2位元)的優點。在一實施例中,為了支援以舊有格式及EVEX前置格式等二各式使用SIMD前置(66H、F2H、F3H)之舊有SSE指令,這些舊有SIMD前置被編碼成SIMD前置編碼欄位;以及,在被提供給解碼器的PLA(以致於PLA可以執行這些舊有指令的舊有及EVEX等二格式而不用修改)之前,在運行時間時被擴展成舊有SIMD前置。雖然較新的指令可以直接使用EVEX前置編碼欄位的內容作為運算碼延伸,但是,某些實施例為了一致性而以類似方式擴展但允許不同的意義由這些舊有SIMD前置規定。替代實施例可以重新設計PLA以支援2位元SIMD前置編碼,因而不要求擴展。
阿爾發欄位852(EVEX位元組3,位元〔7〕)-EH;也稱為EVEX.EH、EXEX.rs、EVEX.RL、EVEX.寫入遮罩控制、及EVEX.N;也以α顯示)-如以往所述般,此欄位是內容特定的。
貝他欄位854(EVEX位元組3,位元〔6:4〕)-SSS;也稱為EVEX.s2-0 、EVEX.r2-0 、EVEX.rr1、 EVEX.LL0、EVEX.LLB;也以β β β顯示)-如以往所述般,此欄位是內容特定的。
REX’欄位810-這是REX’欄位的餘部且是可被用以將延伸的32暫存器組的上16或下16編碼之EVEX.V’位元欄位(EVEX位元組3,位元〔3〕-V’)。此位元以位元反轉格式儲存。1的值被用以將下16暫存器編碼。換言之,藉由結合EVEX.V' 、EVEX.vvvv以形成V' VVVV。
寫入遮罩欄位870(EVEX位元組3,位元〔2:0〕-kkk)-如同先前所述般,其內容指定寫入遮罩暫存器中的暫存器索引。在發明的一實施例中,特定值EVEX.kkk=000具有特別的表現,暗指無寫入遮罩用於特定的指令(這可以以各種方式實施,包含使用實體接線至所有或硬體之寫入遮罩,所述硬體使遮罩硬體旁通的硬體)。
實數作業碼欄位930(位元組4)也稱為作業碼位元組。在此欄位中指定作業碼的一部份。
MOD R/M欄位940(位元組5)包含MOD欄位942、Reg欄位944、及R/M欄位946。如同先前所述般,MOD欄位942的內容區別記憶體存取與非記憶體存取作業。Reg欄位944的角色可以總合為二情形:將目的地暫存器運算元或源暫存器運算元編碼,或是被當作作業碼延伸來處理且不被用以將任何指令運算元編碼。R/M欄位946的角色可以包含下述:將參考記憶體位址的指令運算元編碼,或者,將目的地暫存器運算元或源暫存器運算元編 碼。
比例、索引、基礎(SIB)位元組(位元組6)-如同先前所述般,比例欄位850的內容是用於記憶體位址產生。SIB.xxx 954及SIB.bbb 956-這些欄位的內容先前已被述及與暫存器索引Xxxx及Bbbb有關。
位移欄位862A(位元組7-10)-當MOD欄位942含有10時,位元組7-10是位移欄位862A,且其與舊有32位元位移(disp32)相同工作並以位元組粒度工作。
位移因數欄位862B(位元組7)-當MOD欄位942含有01時,位元組7是位移因數欄位862B。此欄位的位置與以位元組粒度工作的舊有x86指令集8位元位移(disp8)的位置相同。由於disp8是正負號延伸,所以,其僅可以在-128與127位元組差距之間定址;以64位元組快取線的觀點而言,disp8使用可以被設定為僅四個真正有用的值-128、-64、0、及64之8位元;由於通常需要更大的範圍,所以,使用disp32;但是,disp32要求4位元組。與disp8和disp32相反,位移因數欄位862B是disp8的再解譯;當使用位移因數欄位862B時,實數的位移由位移因數欄位的內容乘以記憶體運算元存取(N)的大小所決定。此型式的位移被稱為disp8*N。這降低平均的指令長度(用於位移但是具有更大範圍的單一位元組)。此被壓縮的位移是根據有效的位移是記憶體存取的粒度之倍數的假設,因此,位址差距的冗餘低階位元不需被編碼。換言之,位移因數欄位862B替代舊有x86指令 集8位元位移。因此,位移因數欄位862B以同於x86指令集8位元位移的方式編碼(以致於ModRM/SIB編碼規則不變),僅有的例外是disp8被過載至disp8*N。換言之,編碼規則或編碼長度沒有變化,但是僅有硬體對位移值的解譯有變化(這需要將位移依記憶體運算元的大小來比例化以取得位元組方式的位址差距)。
立即欄位872如先前所述地操作。
完全作業碼欄位
圖9B是方塊圖,顯示根據本發明的一實施例之構成完全作業碼欄位874之特定的向量友善指令格式900的欄位。具體而言,完全作業碼欄位874包含格式欄位840、基礎作業欄位842、及資料元寬度(W)欄位864。基礎作業欄位842包含前置編碼欄位925、作業碼映射欄位915、及實數作業碼欄位930。
暫存器索引欄位
圖9C是方塊圖,顯示根據本發明的一實施例之構成暫存器索引欄位844之特定的向量友善指令格式900的欄位。具體而言,暫存器索引欄位844包含REX欄位905、REX’欄位910、MODR/M.reg欄位944、MODR/M.r/m欄位946、VVVV欄位920、xxx欄位954、及bbb欄位956。
擴增作業欄位
圖9D是方塊圖,顯示根據本發明的一實施例之構成擴增作業欄位850之特定的向量友善指令格式900的欄位。當等級(U)欄位868含有0時,其表示EVEX.U0(等級A 868A);當其含有1時,其表示EVEX.U1(等級B 868B)。當U=0及MOD欄位942含有11時(表示無記憶體存取作業),阿爾發欄位852(EVEX位元組3,位元〔7〕-EH)被解譯為rs欄位852A。當rs欄位852A含有1(捨入852A.1)時,貝它欄位854(EVEX位元組3,位元〔6:4〕-SSS)被解譯為捨入控制欄位854A。捨入控制欄位854A包含一位元SAE欄位856及二位元捨入作業欄位858。當rs欄位852A含有0(資料轉換852A.2)時,貝它欄位854(EVEX位元組3,位元〔6:4〕-SSS)被解譯為三位元資料轉換欄位854B。當U=0及MOD欄位942含有00、01、或10(表示記憶體存取作業)時,阿爾發欄位852(EVEX位元組3,位元〔7〕-EH)被解譯為逐出暗示(EH)欄位852B及貝它欄位854(EVEX位元組3,位元〔6:4〕-SSS)被解譯為三位元資料操縱欄位854C。
當U=1時,阿爾發欄位852(EVEX位元組3,位元〔7〕-EH)被解譯為寫入遮罩控制(Z)欄位852C。當U=1及MOD欄位942含有11(表示無記憶體存取作業)時,貝它欄位854(EVEX位元組3,位元〔4〕-S0 )的一部份被解譯為RL欄位857A;當其含有1(捨入857A.1)時,貝它欄位854(EVEX位元組3,位元〔6-5〕-S2-1 ) 的其餘部份被解譯為捨入作業欄位859A,而當RL欄位857A含有0(VSIZE 857.A2)時,貝它欄位854(EVEX位元組3,位元〔6-5〕-S2-1 )的其餘部份被解譯為向量長度欄位859B(EVEX位元組3,位元〔6-5〕-L1-0 )。當U=1及MOD欄位942含有00、01或10(表示記憶體存取作業)時,貝它欄位854(EVEX位元組3,位元〔6:4〕-SSS)被解譯為向量長度欄位859B(EVEX位元組3,位元〔6-5〕-L1-0 )及廣播欄位857B(EVEX位元組3,位元〔4〕-B)。
舉例說明之編碼成特定向量友善指令格式 舉例說明的暫存器架構
圖10是根據本發明的一實施例之暫存器架構1000的方塊圖。在所示的實施例中,有512位元寬的32個向量暫存器1010;這些暫存器稱為zmm0至zmm31。較低的16 zmm暫存器的低階256位元覆蓋於暫存器ymm0-16之上。較低的16-zmm暫存器的低階128位元(ymm暫存器的低階128位元)覆蓋於暫存器xmm0-15之上。如下述表格中所示般,特定向量友善指令格式900對這些被覆蓋的暫存器檔案作用。
換言之,向量長度欄位859B在最大長度與一或更多其它較短的長度之間選取,其中,每一此較短長度是先前長度的長度之一半;以及,不具向量長度欄位859B的指令樣板對最大向量長度操作。此外,在一實施例中,特定向量友善指令格式900的等級B指令樣板對緊縮的或純量的單一/雙倍精度浮點資料及緊縮的或純量的整數資料操作。純量操作是對zmm/ymm/xmm暫存器中最低階資料元位置執行的作業;更高階的資料元位置視實施例而保留成與它們在指令之前相同或者零化。。
寫入遮罩暫存器1015-在所示的實施例中,有8個大小均為64位元之寫入遮罩暫存器(k0至k7)。在替代實施例中,寫入遮罩暫存器1015大小為16位元。如同先前所述般,在本發明的一實施例中,向量遮罩暫存器k0無法作為寫入遮罩;當正常標示k0的編碼用於寫入遮罩時,其選取0xFFFF的實體接線的寫入遮罩,有效地使用 於該指令的寫入遮罩禁能。
一般用途暫存器1025-在所示的實施例中,有十六個64位元一般用途暫存器,它們與現有的x86定址模式一起用以將記憶體運算元定址。這些暫存器以名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15表示。
純量浮點堆疊暫存器檔案(x87堆疊)1045,MMX緊縮整數平坦暫存器檔案1050重疊於其上-在所示的實施例中,x87堆疊是八元堆疊,用以使用x87指令集延伸,對32/64/80位元浮點資料執行純量浮點作業;而MMX暫存器被用以對64位元緊縮整數資料執行作業,以及為了某些在MMX及XMM暫存器之間執行的作業而固持運算元。
本發明的替代實施例可以使用更寬或更窄的暫存器。此外,本發明的替代實施例可以使用更多、更少、或不同的暫存器檔案及暫存器。
舉例說明的核心架構、處理器、及電腦架構
為了不同目的而以不同方式、及在不同處理器中,實施處理器核心。舉例而言,這些核心的實施包含:1)要用於一般用途計算的一般用途有序核心;2)要用於一般用途計算的高性能一般用途亂序核心;3)主要用於圖形及/或科學(通量)計算的特定用途的核心。不同處理器的實施包含:1)CPU,包含要用於一般用途計算的一或 更多一般用途有序核心及/或要用於一般用途計算的一或更多一般用途亂序核心;及2)副處理器,包含主要用於圖形及/或科學(通量)計算的一或更多特定用途核心。這些不同的處理器導致不同的電腦系統架構,包含:1)在與CPU分別的晶片上的副處理器;2)在與CPU相同的封裝中在分別的晶粒上的副處理器;3)在與CPU相同的晶粒上的副處理器(在此情形中,此副處理器有時被稱為特定用途邏輯,例如集成的圖形及/或科學(通量)邏輯,或是作為特定用途核心);及4)系統晶片,在相同晶粒上包含所述CPU(有時稱為應用核心或應用處理器)、上述副處理器、及其它功能。於下說明舉例說明的核心架構,接著是舉例說明的處理器及電腦架構的說明。
舉例說明的核心架構 有序及亂序核心方塊圖
圖11A是方塊圖,顯示根據本發明的實施例之舉例說明的有序管線及舉例說明的暫存器重命名、亂序議題/執行管線。圖11B是方塊圖,顯示根據本發明的實施例之要包含於處理器中舉例說明的亂序議題/執行架構核心以及有序架構核心舉例說明的暫存器重命名的實施例。圖11A-B的實線方塊顯示有序管線及有序核心,而選加的虛線方塊顯示暫存器重命名、亂序議題/執行管線及核心。在有序態樣是亂序態樣的子集合之假設下,說明亂序態樣。
在圖11A中,處理器管線1100包含提取級1102、長度解碼級1104、解碼級1106、分配級1108、重命名級1110、排程(也稱為派遣或核發)級1112、暫存器讀取/記憶體讀取級1114、執行級1116、寫回/記憶體寫入級1118、例外處理級1122、及委託級1124。
圖11B顯示處理器核心1190,處理器核心1190包含耦合至執行引擎單元1150之前端單元1130,引擎單元1150及前端單元1130都耦合至記憶體單元1170。核心1190可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、很長指令字(VLIW)核心、或是混合或替代核心型式。關於又另一選項,核心1190可為特別用途的核心,舉例而言,例如網路或通訊核心、壓縮引擎、副處理器核心、一般用途計算圖形處理單元(GPGPU)核心、圖形核心、等等。
前端單元1130包含分支預測單元1132,分支預測單元1132耦合至指令快取單元1134,指令快取單元1134耦合至指令轉譯旁看緩衝器(TLB)1136,指令轉譯旁看緩衝器(TLB)1136耦合至指令提取單元1138,指令提取單元1138耦合至解碼單元1140。解碼單元1140(或解碼器)將指令解碼,以及產生微碼進入點、微指令、其它指令、或是從原始指令解碼、或是從原始指令以其它方式反應、或是從原始指令導出的其它控制訊號,以作為輸出的一或更多微作業。使用各種不同的機構,以實施解碼單元1140。適當的機構實例包含但不限於查詢表、硬體實施、 可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM)、等等。在一實施例中,核心1190包含儲存用於某些巨集指令的微碼(例如,在解碼單元1140中或是在前端單元1130之內)之微碼ROM或是其它媒體。解碼單元1140耦合至執行引擎單元1150中的重命名/分配器單元1152。
執行引擎單元1150包含重命名/分配器單元1152,命名/分配器單元1152耦合至退出單元1154及一或更多排程器單元1156的集合。排程器單元1156代表任何數目的不同排程器,包含保留站、中央指令窗、等等。排程器單元1156耦合至實體暫存器檔案單元1158。各實體暫存器檔案單元1158代表一或更多實體暫存器檔案,不同的實體暫存器檔案儲存例如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、等等一或更多不同的資料型式、狀態(例如,指令指標,指令指標是要被執行的下一指令的位址)、等等。在一實施例中,實體暫存器檔案單元1158包括向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元提供架構向量暫存器、向量遮罩暫存器、及一般用途暫存器。實體暫存器檔案單元1158由退出單元1154重疊,以顯示實施暫存器重命名及失序執行的各種方式(例如,使用重排序緩衝器及退出暫存器檔案;使用未來檔案、歷史緩衝器、及退出暫存器檔案;使用暫存器映射及暫存器池;等等)。退出單元1154及實體暫存器檔案單元1158耦合至執行叢集1160。執行叢集1160包含一或更多執行單元1162的集合 以及一或更多記憶體存取單元1164的集合。執行單元1162執行不同的作業(例如,偏移、加法、減法、乘法)以及對不同型式的資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)執行作業。雖然某些實施例包含專用於特定功能或功能集的一些執行單元,但是,其它實施例可以僅包含一執行單元或是多個都執行所有功能的執行單元。由於某些實施例產生用於某些型式的資料/作業之分別的管線,所以,排程器單元1156、實體暫存器檔案1158、及執行叢集1160顯示為可能為複數的(例如,均具有它們自己的排程器單元、實體暫存器檔案單元、及/或執行叢集的純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線及/或記憶體存取管線,以及,在分別的記憶體存取管線的情形中,實施某些實施例,其中,僅有此管線的執行叢集具有記憶體存取單元1164)。也應瞭解,在使用分別的管線時,這些管線中之一或更多可以是亂序核發/執行,而其它是有序的。
記憶體存取單元1164的集合耦合至記憶體單元1170,記憶體單元1170包含耦合至資料快取單元1174的資料TLB單元1172,資料快取單元1174耦合至階層2(L2)快取單元1176。在一舉例說明的實施例中,記憶體存取單元1164包含載入單元、儲存位址單元、及儲存資料單元,各單元耦合至記憶體單元1170中的資料TLB單元1172。指令快取單元1134又耦合至記憶體單元1170中的階層2(L2)快取單元1176。L2快取單元1176耦合 至一或更多其它階層的快取記憶體以及最後耦合至主記憶體。
舉例而言,舉例說明的暫存器重命名、亂序核發/執行核心架構如下所述地實施管線1100:1)指令提取1138執行提取及長度解碼級1102和1104;2)解碼單元1140執行解碼級1106;3)重命名/分配器單元1152執行分配級1108及重命名級1110;4)排程器單元1156執行排程級1112;5)實體暫存器檔案單元1158及記憶體單元1170執行暫存器讀取/記憶體讀取級1114;執行叢集1160執行執行級1116;6)記憶體單元1170及實體暫存器檔案單元1158執行寫回/記憶體寫入級1118;7)各種單元涉及例外處理級1122;以及,8)退出單元1154及實體暫存器檔案單元1158執行委託級1124。
核心1190支援一或更多指令集(例如,x86指令集(增加較新版本的某些擴充);加州太陽谷的MIPS Technologies的MIPS指令集;加州太陽谷的ARM Holdings的ARM指令集(加上選加的例如NEON等增加擴充)),包含此處所述的指令。在一實施例中,核心1190包含邏輯以支援緊縮資料指令集擴充(例如,先前所述之AVX1、AVX2、及/或某些形式的同屬向量友善指令格式(U=0及/或U=1)),藉以允許由很多多媒體應用所使用的作業使用緊縮資料而執行。
應瞭解,核心支援多緒(執行二或更多平行集合的作業或緒),以及,以各種方式如此執行,這些方式包含時 間切割多緒、同時多緒(其中,單一實體核心提供用於實體核心同時正多緒化的多個緒中的各線之邏輯核心)、或是其組合(例如,時間切割提取及解碼以及其後的同時多緒,例如Intel® Hyperthreading技術中所示)。
雖然在亂序執行的環境中說明暫存器重命名,但是,應瞭解,暫存器重命名可用於有序架構中。雖然所示的處理器的實施例也包含分別的指令及資料快取單元1134/1174以及共用的L2快取單元1176,替代實施例具有用於指令及資料之單一內部快取,例如階層1(L1)內部快取、或是多階層的內部快取。在某些實施例中,系統包含內部快取及外部快取的組合,外部快取是核心及/或處理器的外部。替代地,所有的快取可以是核心及/或處理器的外部。
特定舉例說明的有序核心架構
圖12A-B顯示更特定之舉例說明的有序核心架構的方塊圖,其中,核心將是晶片中數個邏輯區塊(包含相同型式及/或不同型式的其它核心)中之一。這些邏輯區塊視應用而經由設有某些固定功能邏輯之高頻寬互連網路(例如,環式網路)、記憶體I/O介面、及其它所需I/O邏輯而通訊。
圖12A是根據本發明的實施例之單一處理器核心、以及其對晶粒上互連網路1202的連接及其本地子集合階級2(L2)快取記憶體1204之方塊圖。在一實施例中,指令 解碼器1200支援設有緊縮資料指令集延伸的x86指令集。L1快取記憶體1206允許對快取記憶體低潛時存取至純量及向量單元。雖然在一實施例中(為了簡化設計),純量單元1208和向量單元1210使用分開的暫存器集(分別為純量暫存器1212和向量暫存器1214)及在它們之間傳送的資料被寫至記憶體,然後從階層1(L1)快取記憶體1206讀回,但是,本發明的替代實施例可以使用不同的方式(例如,使用單一暫存器集或是包含通訊路徑,允許資料在二暫存器檔案之間傳送而不用寫入及讀回)。
L2快取記憶體1204的本地子集合是被分割成多個分別的本地子集合之通用L2快取的部份,每一處理器核心有一集合。各處理器核心對於它自己的L2快取記憶體1204的本地子集合具有直接存取路徑。與存取它們自己的本地L2快取記憶體子集合之其它處理器核心相平行地,由處理器核心讀取的資料被儲存在L2快取子集合1204中且可以被快速地存取。由處理器核心寫入的資料儲存在它自己的L2快取子集合1204中,且假使需要時從其它子集合湧入。環式網路確保共用資料的同調性。環式網路是雙向的以允許例如處理器核心、L2快取記憶體及其它邏輯區塊之代理器以在晶片之內彼此通訊。各環式資料路徑是每一方向1012位元寬。
圖12B是根據本發明的實施例的圖12A中的處理器核心的部份之放大視圖。圖12B包含L1快取記憶體1204的L1資料快取記憶體1206A部份、以及關於向量單元1210 和向量暫存器1214的更多細節。具體而言,向量單元1210是16-寬的向量處理單元(VPU)(請參見16-寬的ALU 1228),其執行整數、單精準浮點、及雙倍精準浮點指令中之一或更多。VPU以調和單元1220支援調和記憶體輸入、以數字轉換單元1222A-B支援數字轉換、以及以記憶體輸入上的複製單元1224支援複製。寫入遮罩暫存器1226允許預測造成的向量寫入。
設有集成的記憶體控制器及圖形之處理器
圖13是根據本發明的實施例之具有多於一核心、具有集成的記憶體控制器、及具有集成的圖形的處理器1300的方塊圖。圖13中的粗線框顯示具有單核心1302A、系統代理器1310、一或更多匯流排控制器單元1316的組的處理器1300,而選加的虛線框顯示設有多核心1302A-N、系統代理器單元1310中一或更多整合的記憶體控制器元1314的組、以及特定用途邏輯1308的替代處理器1300。
因此,處理器1300的不同實施包含:1)CPU,設有特定用途邏輯1308及核心1302A-N,特定用途邏輯1308是集成的圖形及/或科學(通量)邏輯(包含一或更多核心),核心1302A-N是一或更多一般用途核心(例如,一般用途有序核心、一般用途亂序核心、二者之組合);2)副處理器,設有核心1302A-N,核心1302A-N是大量主要用於圖形及/或科學(通量)的特定用途核心;以及,3)副處理器,設有核心1302A-N,核心1302A-N是 大量一般用途的有序核心。因此,處理器1300可為一般用途處理器、副處理器或特定用途處理器,舉例而言,網路或通訊處理器、壓縮引擎、圖形處理器GPGPU(一般用途圖形處理單元),高通量多集成核心(MIC)副處理器(包含30或更多核心)、嵌入式處理器、等等。處理器可以在一或更多晶片上實施。使用例如BiCMOS、CMOS、或NMOS等多種製程技術,處理器1300可以是部份的及/或實施在一或更多基底上。
記憶體階層架構包含在核心內的一或更多階層的快取記憶體、一組或一或更多共用快取單元1306、及耦合至集成的記憶體控制器單元1314組之外部記憶體(未顯示)。共用快取單元1306組可以包含例如階層2(L2)、階層3(L3)、階層4(L4)、或其它階層快取記憶體等一或更多中級快取、最後階層快取記憶體(LLC)、及/或其組合。雖然在一實施例中,環式基礎互連單元1312將整合圖形邏輯1308、共用快取單元1306的組、及系統代理器單元1310/集成的記憶體控制器單元1314互連,但是,替代實施例可以使用任何數目的已知技術來互連這些單元。在一實施例中,在一或更多快取單元1306與核心1302-A-N之間維持同調性。
在某些實施例中,核心1302A-N中之一或更多核心能夠多緒化。系統代理器1310包含那些組件協調及操作核心1302A-N。系統代理器單元1310可以包含例如電力控制單元(PCU)及顯示單元。PCU可以是或包含調節核心 1302A-N及集成的圖形邏輯1308的電力狀態所需的邏輯及組件。顯示單元是用於驅動一或更多外部連接的顯示器。
以架構指令集的觀點而言,核心1302A-N可以是同質的或異質的;亦即,核心1302A-N中之二或更多能夠執行相同的指令集,而其它核心能夠僅執行該指令集的子集合或不同的指令集。
舉例說明的電腦架構
圖14-17是舉例說明的電腦架構的方塊圖。用於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、電動遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持裝置、及各式各樣的其它電子裝置之此領域中熟知的其它系統設計及配置也是適合的。一般而言,能夠併有此處所揭示的處理器及/或其它執行邏輯的眾多種類的系統或電子裝置通常是適合的。
現在回至圖14,其顯示根據本發明的一實施例之系統1400的方塊圖。系統1400可以包含耦合至控制器集線器1420之一或更多處理器1410、1415。在一實施例中,控制器集線器1420包含圖形記憶體控制器集線器(GMCH)1490及輸入/輸出集線器(IOH)1450(可以在分別的晶片上);GMCH 1490包含記憶體及圖形控制器,記憶體 1440及副處理器1445耦合至記憶體及圖形控制器;IOH 1450將輸入/輸出(I/O)裝置1460耦合至GMCH 1490。替代地,記憶體及圖形控制器中之一或二者集成於處理器之內(如上所述),記憶體1440及副處理器1445直接耦合至處理器1410、及設有IOH 1450單晶片中的控制器集線器1420。
在圖14中以虛線標示增加的處理器1415的選加本質。每一處理器1410、1415包含此處所述的一或更多處理核心以及可以是某些版本的處理器1300。
舉例而言,記憶體1440可以是動態隨機存取記憶體(DRAM)、相位改變記憶體(PCM)、或是二者的組合。對於至少一實施例,控制器集線器1420經由多接點匯流排而與處理器1410、1415通訊,多接點匯流排為例如前側匯流排(FSB)、例如快速路徑互連(QPI)等點對點介面、或是類似連接1495。
在一實施例中,副處理器1445是特定用途處理器,例如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、等等。在一實施例中,控制器集線器1420包含集成的圖形加速器。
以包含架構、微架構、熱、耗電特徵、等等準則計量光譜的觀點而言,實體資源1410、1415之間有各種差異。
在一實施例中,處理器1410執行控制一般型式的資料處理作業之指令。副處理器指令可以嵌入在指令之內。 處理器1410將這些副處理器指令視為應由附加的副處理器1445執行的型式。因此,處理器1410在副處理器匯流排上或其它互連上核發這些副處理器指令(或是代表副處理器指令的控制訊號)給副處理器1445。副處理器1445接受及執行收到的副處理器指令。
現在參考圖15,其顯示根據本發明的實施例之第一更特定舉例說明的系統1500的方塊圖。如圖15中所示般,多處理器系統1500是點對點互連系統,以及包含經由點對點互連1550耦合的第一處理器1570和第二處理器1580。各處理器1570及1580可以是某版本的處理器1300。在本發明的一實施例中,處理器1570和1580分別是處理器1410和1415,而副處理器1538是副處理器1445。在另一實施例中,處理器1570及1580分別是處理器1410和副處理器1445。
處理器1570及1580顯示為分別包含集成的記憶體控制器(IMC)單元1572和1582。處理器1570也包含點對點(P-P)介面1576和1578作為它的匯流排控制器單元的一部份;類似地,第二處理器1580包含P-P介面1586和1588。處理器1570、1580可以使用P-P介面電路1578、1588而經由點對點(P-P)介面1550來交換資訊。如同圖15中所示般,IMC 1572和1582將處理器耦合至各別記憶體,亦即記憶體1532和記憶體1534,它們可以是本地附著至各別處理器的主記憶體的部份。
處理器1570、1580使用點對點介面電路1576、 1594、1586、1598,經由個別的P-P介面1552、1554而均可以與晶片組1590交換資訊。晶片組1590經由高性能介面1539,而與副處理器1538選加地交換資訊。在一實施例中,副處理器1538是特別用途處理器,例如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、等等。
共用的快取記憶體(未顯示)可以包含在任一處理器中或是二處理器的外部,但尚未經由P-P互連與處理器連接,以致於假使處理器置於低電力模式中時,任一或二處理器的本地快取資訊可以儲存在共用的快取記憶體中。
晶片組1590可以經由介面1596而耦合至第一匯流排1516。在一實施例中,第一匯流排1516可以是週邊元件互連(PCI)匯流排,或是例如PCI快速匯流排或其它第三代I/O互匯流排等匯流排,但是,本發明的範圍不侷限於此。
如圖15中所示般,各式各樣的I/O裝置1514與匯流排橋接器1518耦合至第一匯流排1516,匯流排橋接器1518耦合第一匯流排1516至第二匯流排1520。在一實施例中,例如副處理器、高通量MIC處理器、GPGPU、加速器(例如,圖形加速器或是數位訊號處理(DSP)單元)、現場可編程閘陣列、或是任何其它處理器等一或更多增加的處理器1515耦合至第一匯流排1516。在一實施例中,第二匯流排1520可以是低接腳數(LPC)匯流排。在一實施例中,各種裝置可以耦合至第二匯流排1520,舉 例而言,包含鍵盤及/或滑鼠1522、通訊裝置1527及例如包含指令/碼及資料1530的碟片驅動器或其它大量儲存裝置的儲存單元1528。此外,音頻I/O 1524可以耦合至第二匯流排1520。注意,其它架構是可能的。舉例而言,取代圖15的點對點架構,系統可以實施多接點匯流排或其它此類架構。
現在參考圖16,其顯示根據本發明的實施例之第二更特定的舉例說明的系統1600之方塊圖。圖15及16中類似的元件帶有類似的代號,以及,圖15的某些態樣在圖16中被省略,以免模糊圖16的其它態樣。
圖16顯示處理器1570、1580分別包含集成的記憶體及I/O控制邏輯(CL)1572和1582。因此,CL 1572、1582包含集成的記憶體控制器單元及包含I/O控制邏輯。 圖16顯示不僅記憶體1532、1534耦合至CL 1572、1582,但是,I/O裝置1614也耦合至控制邏輯1572、1582。舊有I/O裝置1615耦合至晶片組1590。
現在參考圖17,其顯示根據本發明的實施例之系統晶片(SoC)1700的方塊圖。圖13中類似的元件帶有類似的代號。而且,虛線框關於更多先進的SoC的選加特點。在圖17中,互連單元1702耦合至:應用處理器1710,包含一或更多核心202A-N的集合及共用快取單元1306;系統代理器單元1310;匯流排控制器單元1316;整合記憶體控制器單元1314;一組或一或更多副處理器1720,包含集成的圖形邏輯、影像處理器、音頻處理器、以及視頻 處理器;靜態隨機存取記憶體(SRAM)單元1730;直接記憶體存取(DMA)單元1732;以及用於耦合至一或更多外部顯示器的顯示單元1740。在一實施例中,副處理器1720包含特定用途處理器,舉例而言,例如網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌入式處理器、等等。
此處揭示的機制實施例可以以硬體、軟體、韌體或這些實施方式的結合來實施。本發明的實施例可以實施成在可編程系統上執行的電腦程式或程式碼,可編程系統包括至少一處理器、儲存系統(包含依電性及非依電性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
例如圖15中所示的程式碼1530可以應用至輸入指令以執行此處所述的功能和產生輸出資訊。輸出資訊可以以已知方式應用至一或更多輸出裝置。為了此應用,處理系統包含具有例如數位訊號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器等處理器之任何系統。
程式碼可以以高階程式或物件導向的程式語言實施,以與處理系統通訊。假使需要時,程式碼也可以以組合或機器語言來實施。事實上,此處所述的機制在範圍上不侷限於任何特定的程式語言。在任何情形中,語言可以是經過編譯或解譯的語言。
至少一實施例的一或更多態樣可以由儲存在機器可讀 取的媒體上之代表指令實施,代表指令代表處理器內各種邏輯,代表指令由機器讀取時促使機器製造邏輯以執行此處所述的技術。稱為「IP核心」的這些代表可以儲存在實體的、機器可讀取的媒體並供應至各式各樣的客戶或製造設施,而載入至真正地產生邏輯的製造機器或處理器。
此機器可讀取的媒體包含但不限於由機器或裝置製造或形成的物件之非暫時、實體配置,包括例如硬碟等儲存媒體、包含軟碟、光碟、光碟唯讀記憶體(CD-ROM)、光碟可重寫記憶體(CD-RW))、及磁光碟等任何其它型式的碟片、例如唯讀記憶體(ROM)、例如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)等隨機存取記憶體(RAM)、可抹拭可編程唯讀記憶體(EPROM)、快閃記憶體、電可抹拭可編程唯讀記憶體(EEPROM)等半導體裝置、相位改變記憶體(PCM)、磁性或光學卡、或適用於儲存電子指令的任何其它型式的媒體。
因此,本發明的實施例也包含含有指令或含有設計資料之非暫時、實體的機器可讀取的媒體,所述設計資料是例如硬體說明語言(HDL),其界定此處所述的結構、電路、裝置、處理器及/或系統特點。這些實施例也意指程式產品。
模仿(包含二進位轉譯、碼語變體、等等)
在某些情形中,指令轉換器可以用以將指令從源指令 集轉換至標的指令集。舉例而言,指令轉換器可以將指令轉譯(例如,使用靜態二進位轉譯、包含動態編譯的動態二進位轉譯)、變體、模仿、或其它轉換至由核心處理的一或更多其它指令。指令轉換器可以以軟體、硬體、韌體、或其結合來實施。指令轉換器可以是在處理器上、不在處理器上、或部份在處理器上及部份離開處理器。
圖18是方塊圖,將根據本發明的實施例之使用軟體指令轉換器以將源指令集中的二進位指令轉換成標的指令集中的二進位指令作對比。在顯示的實施例中,指令轉換器是軟體指令轉換器,但是,指令轉換器可以替代地以軟體、韌體、硬體、或其各種結合來實施。圖18顯示高階語言1802的程式,其可以由x86編譯器1804編譯以產生x86二進位碼1806,二進位碼1806可以由具有至少一x86指令集核心1816的處理器原地執行。具有至少一x86指令集核心1816的處理器代表藉由共容地執行或其它方式地處理下述,而能夠執行與具有至少一x86指令集核心的英特爾處理器實質上相同功能的任何處理器:(1)英特爾x86指令集核心的指令集的實質部份,或是(2)以在具有至少一x86指令集核心的英特爾處理器上執行為目標之應用程式或其它軟體的物件碼版本,以便取得與具有至少一x86指令集核心的英特爾處理器實質上相同的結果。x86編譯器1804代表可以操作以產生x86二進位碼1806(例如,物件碼)之編譯器,x86二進位碼1806藉由或不藉由增加的鏈結處理,都可以在具有至少一x86指令集核 心1816的處理器上執行。類似地,圖18顯示高階語言1802的程式,使用替代指令集編譯器1808,可以將其編譯以產生替代指令集二進位碼1810,替代指令集二進位碼1810可以由不具有至少一x86指令集核心1814的處理器(例如,具有執行例如加州Sunnyvale的MIPS Technologies公司的MIPS指令集及/或加州Sunnyvale的ARM Holdings公司的ARM指令集之核心的處理器)原地執行。指令轉換器1812用以將x86二進位碼1806轉換成可以由不具有x86指令集核心1814的處理器原地執行的碼。由於能夠如此執行的指令轉換器難以製作,所以,此轉換的碼不易與替代指令集二進位碼1810相同;但是,所述轉換的碼將完成一般作業及由來自替代指令集的指令組成。因此,指令轉換器1812代表軟體、韌體、硬體或其組合,其經由模仿、模擬或任何其它處理而允許不具有x86指令集處理器或核心的處理器或其它電子裝置執行x86二進位碼1806。
雖然已說明原地執行向量友善指令格式的實施例,但是,本發明的替代實施例可以經由執行不同指令集之處理器(例如,執行加州Sunnyvale的MIPS Technologies公司的MIPS指令集的處理器,執行加州Sunnyvale的ARM Holdings公司的ARM指令集之處理器)上運行的模仿層,而執行向量友善指令格式。而且,雖然圖式中的流程圖顯示本發明的某些實施例執行的作業之特定次序,但是,應瞭解這些次序僅為舉例說明(例如,替代實施例可 以依不同次序執行作業、結合某些作業、重疊某些作業、等等)。
在上述說明中,為了說明目的,已揭示眾多特定細節,以助於完整瞭解本發明的實施例。但是,習於此技藝者清楚可知,不用這些特定細節中的某些細節,仍可實施一或更多其它實施例。此處所述的特別實施例並非用以限本發明,而是說明本發明的實施例。本發明的範圍並非由上述特定實例決定而是僅由下述申請專利範圍決定。
1000‧‧‧暫存器架構
1010‧‧‧向量暫存器
1015‧‧‧寫入遮罩暫存器
1045‧‧‧純量浮點堆疊暫存器檔案
1050‧‧‧MMX緊縮整數平坦暫存器檔案
1100‧‧‧管線
1300‧‧‧處理器
1400‧‧‧系統
1500‧‧‧系統
1600‧‧‧系統
1700‧‧‧系統晶片
將以舉例方式而非限定方式,於附圖的圖式中顯示本發明,其中,類似代號表示類似元件,以及,其中:圖1顯示範圍映射指令的執行之實例。
圖2顯示範圍映射指令的執行之另一實例。
圖3顯示範圍映射指令的虛擬碼之實例。
圖4顯示使用處理器中的範圍映射指令的實施例。
圖5顯示用於處理範圍映射指令的方法實施例。
圖6顯示用於處理範圍映射指令的方法實施例。
圖7A、7B、及7C是方塊圖,顯示根據本發明的實施例之舉例說明的特定向量友善指令格式。
圖8A是方塊圖,顯示根據本發明的實施例之同屬向量友善指令格式及其等級A指令樣板。
圖8B是方塊圖,顯示根據本發明的實施例之同屬向量友善指令格式及其等級B指令樣板。
圖9是方塊圖,顯示根據本發明的實施例之舉例說明的特定向量友善指令格式。
圖10是根據本發明的一實施例之暫存器架構的方塊圖。
圖11A是方塊圖,顯示根據本發明的一實施例之舉例說明的有序管線及舉例說明的暫存器重命名、亂序議題/執行管線。
圖11B是方塊圖,顯示根據本發明的一實施例之包含在處理器中的有序架構核心的舉例說明的實施例及舉例說明的暫存器重命名、亂序議題/執行架構核心。
圖12A及12B是方塊圖,顯示根據本發明的實施例之舉例說明的有序核心架構。
圖13是方塊圖,顯示根據本發明的實施例之具有一個以上的核心之處理器。
圖14是根據本發明的實施例之系統的方塊圖。
圖15是根據本發明的實施例之第二系統的方塊圖。
圖16是根據本發明的實施例之第三系統的方塊圖。
圖17是根據本發明的實施例之系統晶片的方塊圖。
圖18是方塊圖,對比根據本發明的實施例之將源指令集中的二進位指令轉換成標的指令集中的二進位指令之軟體指令轉換器的使用。

Claims (20)

  1. 一種在電腦處理器中執行範圍映射指令的方法,包括:提取範圍映射指令,其中,該範圍映射指令包含目的地運算元、源運算元、及範圍映射標示;將該提取的範圍映射指令解碼;執行該解碼的範圍映射指令以執行具有源資料範圍的該源運算元的第一資料元的映射至具有目的地資料範圍的第二資料元;以及將該第二資料元儲存於該目的地運算元的目的地中。
  2. 如申請專利範圍第1項之方法,其中,該第一資料範圍及該第二資料範圍是固定的且該範圍映射標示是該範圍映射指令的名稱。
  3. 如申請專利範圍第1項之方法,其中,該源資料範圍是根據源資料範圍運算元及該目的地資料範圍是根據目的地資料範圍運算元。
  4. 如申請專利範圍第1項之方法,其中,該運算元是512位元暫存器及該目的地運算元是記憶體。
  5. 如申請專利範圍第1項之方法,其中,平行地進行該範圍映射。
  6. 如申請專利範圍第1項之方法,其中,該源和目的地運算元是512位元暫存器。
  7. 如申請專利範圍第1項之方法,其中,該源運算元是512位元記憶體區,以及,在該源的該範圍映射之 前,將來自該記憶體區的資料元載入暫時的512位元暫存器。
  8. 如申請專利範圍第1項之方法,其中,該資料元是32位元。
  9. 一種非暫時的機器可讀取的媒體,具有可執行的指令以促使一或更多處理單元執行方法,來保護儲存在裝置的儲存系統中的資料免於惡意軟體改變,該方法包括:為回應包含源運算元、目的地運算元、範圍映射標示之範圍映射指令,決定該源運算元的資料元的源資料範圍,決定該目的地運算元的目的地資料範圍,將具有該源資料範圍的該源運算元的第一資料元映射至具有該目的地資料範圍的第二資料元;以及將該第二資料元儲存於該目的地運算元的目的地中。
  10. 如申請專利範圍第9項之非暫時的機器可讀取的媒體,其中,該源資料範圍的決定包括:從源資料範圍運算元接收該源資料範圍。
  11. 如申請專利範圍第9項之非暫時的機器可讀取的媒體,其中,該目的地資料範圍的決定包括:從目的地資料範圍運算元接收該目的地資料範圍。
  12. 如申請專利範圍第9項之非暫時的機器可讀取的媒體,其中,源及目的地資料範圍是固定的。
  13. 如申請專利範圍第9項之非暫時的機器可讀取的 媒體,其中,源及目的地資料範圍在用以執行該映射的等式中是固有的。
  14. 如申請專利範圍第9項之非暫時的機器可讀取的媒體,其中,該源運算元是512位元暫存器及該目的地運算元是記憶體。
  15. 如申請專利範圍第14項之非暫時的機器可讀取的媒體,其中,該源運算元的資料元從16位元向上轉換至32位元。
  16. 如申請專利範圍第9項之非暫時的機器可讀取的媒體,其中,該源運算元是512位元暫存器。
  17. 如申請專利範圍第9項之非暫時的機器可讀取的媒體,其中,該目的地運算元是512位元暫存器。
  18. 如申請專利範圍第9項之非暫時的機器可讀取的媒體,其中,該源運算元是512位元記憶體區,以及,在該源的該映射之前,將來自該記憶體區的資料元載入暫時的512位元暫存器。
  19. 一種處理器,包括:硬體解碼器,用以將範圍映射指令解碼,其中,該範圍映射指令包含目的地運算元、源運算元、及範圍映射標示;執行邏輯,用以執行具有源資料範圍的該源運算元的第一資料元的映射至具有目的地資料範圍的第二資料元。
  20. 如申請專利範圍第19項之處理器,又包括:源暫存器,用以儲存該第一資料元;以及 目的地暫存器,用以儲存該第二資料元。
TW101143271A 2011-12-22 2012-11-20 映射源運算元至不同範圍的系統、設備及方法 TWI464676B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/067039 WO2013095578A1 (en) 2011-12-22 2011-12-22 Systems, apparatuses, and methods for mapping a source operand to a different range

Publications (2)

Publication Number Publication Date
TW201342210A TW201342210A (zh) 2013-10-16
TWI464676B true TWI464676B (zh) 2014-12-11

Family

ID=48669219

Family Applications (2)

Application Number Title Priority Date Filing Date
TW103133533A TWI539374B (zh) 2011-12-22 2012-11-20 映射源運算元至不同範圍的系統及其處理器
TW101143271A TWI464676B (zh) 2011-12-22 2012-11-20 映射源運算元至不同範圍的系統、設備及方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW103133533A TWI539374B (zh) 2011-12-22 2012-11-20 映射源運算元至不同範圍的系統及其處理器

Country Status (4)

Country Link
US (1) US9389861B2 (zh)
CN (2) CN106843811B (zh)
TW (2) TWI539374B (zh)
WO (1) WO2013095578A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9477467B2 (en) 2013-03-30 2016-10-25 Intel Corporation Processors, methods, and systems to implement partial register accesses with masked full register accesses
US9424034B2 (en) * 2013-06-28 2016-08-23 Intel Corporation Multiple register memory access instructions, processors, methods, and systems
TWI705374B (zh) 2017-01-23 2020-09-21 威鋒電子股份有限公司 電子裝置及其操作方法
CN112114874B (zh) * 2020-08-20 2021-10-15 北京百度网讯科技有限公司 数据处理方法、装置、电子设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4719450A (en) * 1985-02-16 1988-01-12 Sony Corporation Method and system for binary-to-decimal interconversion
US6112291A (en) * 1997-01-24 2000-08-29 Texas Instruments Incorporated Method and apparatus for performing a shift instruction with saturate by examination of an operand prior to shifting
TW200502751A (en) * 2003-07-09 2005-01-16 Via Tech Inc Dynamic instruction dependency monitor and control system
US20110153997A1 (en) * 2009-12-22 2011-06-23 Maxim Loktyukhin Bit Range Isolation Instructions, Methods, and Apparatus

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5201039A (en) * 1987-09-30 1993-04-06 Mitsubishi Denki Kabushiki Kaisha Multiple address-space data processor with addressable register and context switching
JPH1011352A (ja) * 1996-06-19 1998-01-16 Hitachi Ltd データ処理装置およびそのレジスタアドレス変換方法
US6212627B1 (en) * 1998-10-12 2001-04-03 Intel Corporation System for converting packed integer data into packed floating point data in reduced time
JP2006522977A (ja) * 2003-04-10 2006-10-05 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 空間画像変換装置及び方法
US7689641B2 (en) * 2003-06-30 2010-03-30 Intel Corporation SIMD integer multiply high with round and shift
GB2409062C (en) * 2003-12-09 2007-12-11 Advanced Risc Mach Ltd Aliasing data processing registers
US8036274B2 (en) * 2005-08-12 2011-10-11 Microsoft Corporation SIMD lapped transform-based digital media encoding/decoding
WO2007049150A2 (en) * 2005-09-28 2007-05-03 Arc International (Uk) Limited Architecture for microprocessor-based systems including simd processing unit and associated systems and methods
US7849294B2 (en) * 2008-01-31 2010-12-07 International Business Machines Corporation Sharing data in internal and memory representations with dynamic data-driven conversion

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4719450A (en) * 1985-02-16 1988-01-12 Sony Corporation Method and system for binary-to-decimal interconversion
US6112291A (en) * 1997-01-24 2000-08-29 Texas Instruments Incorporated Method and apparatus for performing a shift instruction with saturate by examination of an operand prior to shifting
TW200502751A (en) * 2003-07-09 2005-01-16 Via Tech Inc Dynamic instruction dependency monitor and control system
US20110153997A1 (en) * 2009-12-22 2011-06-23 Maxim Loktyukhin Bit Range Isolation Instructions, Methods, and Apparatus

Also Published As

Publication number Publication date
TWI539374B (zh) 2016-06-21
WO2013095578A1 (en) 2013-06-27
US9389861B2 (en) 2016-07-12
CN104011668B (zh) 2017-03-22
CN106843811A (zh) 2017-06-13
US20140215186A1 (en) 2014-07-31
CN106843811B (zh) 2019-03-29
TW201510858A (zh) 2015-03-16
CN104011668A (zh) 2014-08-27
TW201342210A (zh) 2013-10-16

Similar Documents

Publication Publication Date Title
TWI502499B (zh) 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法
JP6339164B2 (ja) ベクトルフレンドリ命令フォーマット及びその実行
TWI518590B (zh) 多暫存器聚集指令
CN107741861B (zh) 用于混洗浮点或整数值的装置和方法
TW201730746A (zh) 用以融合指令之硬體設備及方法
TWI486872B (zh) 向量緊縮壓縮及重複之實施系統、設備和方法
TWI498815B (zh) 用以響應於單一指令而執行橫向部分和之系統、裝置及方法
TWI489383B (zh) 遮蔽排列指令的裝置及方法
TWI578230B (zh) 用於執行複數個乘法運算的方法和設備
CN104081340B (zh) 用于数据类型的下转换的装置和方法
TWI610228B (zh) 用於執行向量位元反轉和交叉的方法和設備
TWI473015B (zh) 執行向量頻率擴展指令之方法、處理器核心以及製品
TW201337748A (zh) 用以響應於單一指令而執行橫向加法或減法之系統、裝置及方法
TW201640331A (zh) 用於向量索引載入和儲存之方法和設備
TWI760341B (zh) 用於跨步載入的系統、設備及方法
KR101729424B1 (ko) 128-비트 프로세서에서의 skein256 sha3 알고리즘에 대한 명령어 세트
TWI622879B (zh) 考慮用於執行之載入資料元件中的空間區域性之裝置和方法
TW201738733A (zh) 執行指令以排列遮罩的系統及方法
CN111831334B (zh) 经改进的插入指令的装置和方法
TWI464676B (zh) 映射源運算元至不同範圍的系統、設備及方法
CN107003848B (zh) 用于融合乘法-乘法指令的装置和方法
TWI482086B (zh) 用以於緊縮資料元件上執行差分編碼之系統、裝置及方法
TW201732574A (zh) 用於改善向量通量的系統、方法及設備
TW201732573A (zh) 用於跨步載入(stride load)的系統、設備及方法
CN107003841B (zh) 用于融合加法-加法指令的装置和方法

Legal Events

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