TWI525533B - 用以執行遮罩位元壓縮之系統、設備、及方法 - Google Patents

用以執行遮罩位元壓縮之系統、設備、及方法 Download PDF

Info

Publication number
TWI525533B
TWI525533B TW101148331A TW101148331A TWI525533B TW I525533 B TWI525533 B TW I525533B TW 101148331 A TW101148331 A TW 101148331A TW 101148331 A TW101148331 A TW 101148331A TW I525533 B TWI525533 B TW I525533B
Authority
TW
Taiwan
Prior art keywords
write
mask
register
source
bit
Prior art date
Application number
TW101148331A
Other languages
English (en)
Other versions
TW201344561A (zh
Inventor
布萊特 托爾
羅柏 瓦倫泰
吉瑟斯 柯柏
艾蒙斯特阿法 歐德亞麥德維爾
馬克 查尼
Original Assignee
英特爾股份有限公司
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 英特爾股份有限公司 filed Critical 英特爾股份有限公司
Publication of TW201344561A publication Critical patent/TW201344561A/zh
Application granted granted Critical
Publication of TWI525533B publication Critical patent/TWI525533B/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/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
    • 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/30098Register arrangements
    • 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/30181Instruction operation extension or modification

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)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Description

用以執行遮罩位元壓縮之系統、設備、及方法
本發明之領域一般係關於電腦處理器架構,且更具體來說是關於當被執行時便產生一特定結果的指令。
指令集、或指令集架構(ISA)係關於可程式化之計算機架構的一部分,且可包括原始資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷和例外處理、及外部輸入和輸出(I/O)。指令之詞在本文中通常係指微指令,這是提供給處理器(或指令轉換器,其轉譯(例如,使用靜態二進制轉換、包括動態編譯的動態二進制轉換)、模仿、模擬、或以其他方式將指令轉換成一或多個待由處理器處理的其他指令)用於執行的指令,相對於微指令或微運算(micro-op),這是處理器之解碼微指令的解碼器之結果。
ISA係不同於微架構,其係為實作指令集之處理器的內部設計。具有不同微架構的處理器能共享共同指令集。例如,Intel® Pentium 4處理器、Intel® CoreTM處理器、及來自美國加州Sunnyvale的進階微裝置的處理器實作出幾乎相同型式的x86指令集(具有已添加較新型式的一些擴充),但具有不同的內部設計。例如,ISA的相同暫存器架構可使用熟知技術,包括專用實體暫存器、使用暫存器更名機制的一或多個動態配置實體暫存器(例如,使用 暫存器頻疊表(RAT)、重排序緩衝器(ROB)、及引退暫存器檔案;使用多個映射和暫存器池)等在不同微架構下以不同方式來實作。除非另作說明,否則本文所使用的相位暫存器架構、暫存器檔案、及暫存器係指軟體/程式員與指令指定暫存器之方式可見的暫存器。這裡需要明確性,將使用邏輯、架構、或可見軟體之形容詞來表示暫存器架構中的暫存器/檔案,而將對已知微架構中的指定暫存器(例如,實體暫存器、重排序緩衝器、引退暫存器、暫存器池)使用不同的形容詞。
指令集包括一或多個指令格式。已知指令格式定義各種欄位(位元數、位元位置)以另外指定待進行之運算(運算碼)和待進行運算之運算元。儘管定義指令模板(或子格式),但仍有一些指令格式進一步地失效。例如,已知指令格式的指令模板可定義為具有指令格式之欄位(所包括之欄位通常依照相同順序,但至少一些具有不同的位元位置,因為包括較少欄位)的不同子集及/或定義為具有不同解釋的已知欄位。因此,ISA的每個指令係使用已知指令格式來表示(且,若定義的話,在此指令格式的其中一個已知指令模板中)並包括用於指定運算和運算元的欄位。例如,示範ADD指令具有特定運算碼及指令格式,其包括一運算碼欄位來指定運算碼和運算元欄位以選擇運算元(來源1/目的和來源2);及在指令流中發生此ADD指令將在選擇特定運算元的運算元欄位中具有特定內容。
科學、金融、自動向量化的通用目的,RMS(識別、探勘、和合成)、及視覺和多媒體應用程式(例如,2D/3D圖形、影像處理、視頻壓縮/解壓縮、語音辨識演算法和音頻處理)通常需要在大量的資料項目上進行相同運算(稱為「資料平行性」)。單一指令多重資料(SIMD)係指一種使處理器對多個資料項目進行運算的指令類型。SIMD技術特別適用於能將暫存器中的位元邏輯地分成一些固定大小之資料元件的處理器,其中的每一個代表一單獨值。例如,可指定256位元暫存器中的位元與4個單獨的64位元填充資料元件(四字組(Q)大小資料元件)、8個單獨的32位元填充資料元件(雙字組(D)大小資料元件)、16個單獨的16位元填充資料元件(字組(W)大小資料元件)、或32個單獨的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年7月之Intel®先進向量擴充編程參考)。
在下列說明中,提出了許多具體的細節。然而,了解沒有這些具體的細節仍可實施本發明之實施例。在其他例子中,並未詳細顯示熟知的電路、結構及技術,以免混淆對本說明書的理解。
在本說明書中提到的「一個實施例」、「一實施例」、「一示範實施例」、等等,係表示所述之實施例可能包括一特定特徵、結構、或特性,但每個實施例可能不必包括此特定特徵、結構、或特性。此外,這樣的說法不一定係指相同的實施例。又,當說明與實施例關聯之特定特徵、結構、或特性時,應認為無論是否明確地說明,其在本領域之熟知技藝者的理解內能影響這類與其他實施例關聯之特徵、結構、或特性。
概要
在下面說明中,在敘述指令集架構中的此特定指令之操作之前可能有一些術語需要解釋。其中一個術語係稱為「寫入遮罩暫存器」,其通常係用來預測一運算元以有條件地控制每個元件的計算操作(於下亦可使用遮罩暫存器之術語且其係指如下述之「k」暫存器的寫入遮罩暫存器)。如下所使用,寫入遮罩暫存器儲存複數個位元(16、32、64等),其中寫入遮罩暫存器的每個主動位元在SIMD處理期間控制著向量暫存器之填充資料元件的操作/更新。一般來說,有一個以上的寫入遮罩暫存器可供處理器核心使用。
指令集架構包括至少一些SIMD指令,其規定向量運算且具有欄位以從這些向量暫存器中選出來源暫存器及/或目的暫存器(示範SIMD指令可規定待對一或多個向量暫存器之內容進行的向量運算、及待儲存在其中一個向量暫存器中的此向量運算之結果)。本發明之不同實施例可能具有不同大小的向量暫存器並支援更多/更少/不同大小的資料元件。
SIMD指令所規定的多位元資料元件之大小(例如,位元組、字組、雙字組、四字組)判定向量暫存器內的「資料元件位置」之位元區位,而向量運算元之大小判定資料元件數。填充資料元件係指儲存在一特定位置中的資料。換言之,所得之向量運算元內的多位元資料元件位置之位元區位會視目的運算元中的資料元件之大小及目的運算元之大小(目的運算元中的位元總數)(或換另一種說 法,取決於目的運算元之大小及目的運算元內的資料元件數而定)而改變(例如,若用於所得之向量運算元的目的係為一向量暫存器,則目的向量暫存器內的多位元資料元件位置之位元區位會改變)。例如,多位元資料元件之位元位置在運作於32位元資料元件(資料元件位置0佔用位元區位31:0、資料元件位置1佔用位元區位63:32、等等)上的向量操作與運作於64位元資料元件(資料元件位置0佔用位元區位63:0、資料元件位置1佔用位元區位127:64、等等)上的向量操作之間係不同的。
另外,如第6圖所示,根據本發明之一實施例,在一個主動位元向量寫入遮罩元件數和向量大小及資料元件大小之間有相關性。顯示出128位元、256位元、及512位元的向量大小,雖然其他寬度也是可能的。考量到8位元位元組(B)、16位元字組(W)、32位元雙字組(D)或單精度浮點數、及64位元四字組(Q)或雙精度浮點數的資料元件大小,雖然其他寬度也是可能的。如所顯示,當向量大小為128位元時,當向量的資料元件大小是8位元時可使用16位元來遮罩,當向量的資料元件大小是16位元時可使用8位元來遮罩,當向量的資料元件大小是32位元時可使用4位元來遮罩,且當向量的資料元件大小是64位元時可使用2位元來遮罩。當向量大小為256位元時,當填充資料元件寬度是8位元時可使用32位元來遮罩,當向量的資料元件大小是16位元時可使用16位元來遮罩,當向量的資料元件大小是32位元時可使用8位元 來遮罩,且當向量的資料元件大小是64位元時可使用4位元來遮罩。當向量大小係為512位元時,當向量的資料元件大小是8位元時可使用64位元來遮罩,當向量的資料元件大小是16位元時可使用32位元來遮罩,當向量的資料元件大小是32位元時可使用16位元來遮罩,且當向量的資料元件大小是64位元時可使用8位元來遮罩。
依據向量大小與資料元件大小之組合而定,可使用全部64位元、或僅使用64位元之子集作為寫入遮罩。一般來說,當使用單一、每個元件遮罩控制位元時,用於遮罩之向量寫入遮罩暫存器中的位元數(主動位元)係等於位元的向量大小除以位元的向量之資料元件大小。
如上所述,寫入遮罩暫存器包含對應向量暫存器中之元件(或記憶體位置)的遮罩位元並追蹤應於其上進行運算的元件。基於此項理由,針對向量暫存器,希望具有對這些遮罩位元重複類似行為的共同運算且通常允許一個共同運算調整寫入遮罩暫存器內的這些遮罩位元。
下面係為一般稱為寫入遮罩位元壓縮(「KCOMPRESS」)指令之指令的實施例以及可用來執行有益於在一些不同區域之上述指令的系統、架構、指令格式等的實施例。執行KCOMPRESS指令導致將來源寫入遮罩暫存器之設定為「1」的至少一些寫入遮罩位元寫入目的寫入遮罩暫存器之最低有效位元。
第1(A)圖繪示KCOMPRESS的示範指令操作之示範圖。在所述之實例中,兩寫入遮罩暫存器係為具有16 寫入遮罩位元的16位元大小(每個位元位置代表一寫入遮罩)。當然,可使用如32或64位元之不同的寫入遮罩暫存器大小。
在本實例中,來源寫入遮罩暫存器的所有16位元被估計用於壓縮成目的寫入遮罩暫存器。
如所顯示,在來源寫入遮罩暫存器中的位元位置1、3、4、6、11和12具有「1」值。這六個寫入遮罩被壓縮進目的寫入遮罩暫存器的六個最低有效位元位置。
第1(B)圖繪示KCOMPRESS的示範指令操作之另一示範圖。在所述之實例中,兩寫入遮罩暫存器係為具有16寫入遮罩位元的16位元大小(每個位元位置代表一寫入遮罩)。如同第1(A)圖,可使用如32和64位元之不同的寫入遮罩暫存器大小。然而,在本實例中,只有來源寫入遮罩暫存器的最低有效8位元(主動位元)被估計用於壓縮進目的寫入遮罩暫存器。如所顯示,雖然在來源寫入遮罩暫存器中的位元位置1、3、4、6、7、11、12、14、和15具有「1」值,但只有寫入遮罩1、3、4、6、和7被壓縮進目的寫入遮罩暫存器的五個最低有效位元位置。
藉由關聯於如於下示範格式中詳細所述之指令的運算碼可決定估計用於壓縮的位元數。
示範格式
此指令的示範格式係為「KCOMPRESSD K1,K2」, 其中的K1和K2係為寫入遮罩暫存器且KCOMPRESSD是指令的運算碼。K2係為目的寫入遮罩暫存器且K1係為來源遮罩暫存器。執行此指令,K2之設成「1」的所有寫入遮罩位元便寫入目的寫入K1之最低有效位元。
此指令的示範格式係為「KCOMPRESSQ K1,K2」,其中的K1和K2係為寫入遮罩暫存器且KCOMPRESSQ是指令的運算碼。K2係為目的寫入遮罩暫存器且K1係為來源遮罩暫存器。執行此指令,只將來自K2的8個最低有效寫入遮罩位元之設成「1」的寫入遮罩位元寫入K1之最低有效位元。
第2圖繪示此指令的格式之更詳細的實施例。
執行之示範方法
第3圖繪示在處理器中使用KCOMPRESS指令的實施例。在301中,提取具有一個目的遮罩暫存器運算元和一個來源遮罩暫存器運算元的KCOMPRESS指令。
在303中,解碼邏輯解碼KCOMPRESS指令。依據指令的格式,可在此階段解釋各種資料,例如是否有資料轉換,要寫入並取得哪個暫存器、要存取什麼記憶體位址、等等。在一些實施例中,此解碼決定評估的遮罩位元數。
在305中,取得/讀取來源運算元值。例如,讀取來源暫存器。
在307中,KCOMPRESS指令(或如微運算之包含上述指令的運算)被如一或多個功能單元的執行資源執行以 決定來源遮罩暫存器之設成「1」的哪個寫入遮罩位元被寫入目的寫入遮罩暫存器之最低有效位元。
在309中,將識別的寫入遮罩位元儲存在目的寫入遮罩暫存器的最低有效位元中。雖然分開說明307和309,但在一些實施例中,它們會一起進行作為執行指令的一部分。
第4圖繪示用於使用加法來處理KCOMPRESS指令之方法的實施例。在本實施例中假設先前已進行一些(若並非所有)操作301-305,然而,不顯示以免混淆下方所顯示的細節。例如,不顯示提取和解碼,也不顯示運算元取得。在一些實施例中,在401中,在基於來源遮罩暫存器的任何壓縮之前,目的向量暫存器的所有位元全部設成0。
在403中,為寫入遮罩暫存器的每個位元位置,判斷是否將位元位置設成「1」。在405中,為405所發現的「1」,將「1」寫入寫入遮罩目的暫存器之最低有效位元位置中。
在一些實施例中修改以上步驟以僅判斷來源寫入遮罩暫存器之8個最低有效位元位置中的何者而不是所有位元位置被設成「1」。
在403中,判斷是否將來源寫入遮罩暫存器的第一(最低有效)位元位置設成「1」。若設成「1」,則指示寫入遮罩已被設定且應被壓縮進目的寫入遮罩暫存器。
若判斷是否定的,則在405中,判斷是否將來源寫入 遮罩暫存器之毗鄰的(次低位)位元位置設成「1」。又,若設成「1」,則指示寫入遮罩已被設定且應被壓縮進目的寫入遮罩暫存器。
當上述判斷之任一者是肯定的時,則在407中,將「1」寫入尚未儲存「1」之目的寫入遮罩暫存器的最低有效位元位置。
在將「1」寫至目的寫入遮罩暫存器或405的判斷步驟之後,在409中,檢查是否已估計來源寫入遮罩暫存器的最後位元位置。如上詳細所述,關於估算的位元位置數可取決於指令的運算碼而改變。在一些實施例中,在已估算來源寫入遮罩暫存器的8位元之前不會進行檢查。
若已估計所有待估計的位元位置,則完成指令的操作。若否,則在403中繼續進行方法並估算來源寫入遮罩暫存器的下一個最低有效位元。
當然其他變化係可能的。例如,執行指令可使得為在來源寫入遮罩暫存器中所發現的每個「1」維持計數器值。換言之,為每個位元位置判斷其值為何且為所發現的每個「1」維持運作計數。使用此計數器,目的寫入遮罩的最低有效位元之計數器值數將接著被設成「1」。
第5圖繪示用於此指令的示範虛擬碼型式。
示範指令格示
本文所述的指令之實施例可以不同格式來具體化。另外,以下詳述示範系統、架構、及管線。指令之實施例可 在這類系統、架構、及管線上執行,但不以那些細節為限。
VEX指令格式
VEX編碼允許指令具有超過兩個運算元,並允許SIMD向量暫存器比128位元更長。使用VEX前置提供了三個運算元(或更多)的語法。例如,先前所進行之兩個運算元指令的操作(例如A=A+B)重寫來源運算元。使用VEX前置使運算元能進行非破壞性操作(例如A=B+C)。
第7A圖繪示包括VEX前置702、實際運算碼欄位730、Mod R/M位元組740、SIB位元組750、位移欄位762、及IMM8 772的示範AVX指令格式。第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包含位址資料。
示範暫存器架構
第8圖係根據本發明之一實施例之暫存器架構800的方塊圖。在所述之實施例中,有32個512位元寬的向量暫存器810;這些暫存器被引用為zmm0至zmm31。最低16zmm暫存器的低序256位元係覆蓋在暫存器ymm0-16上。最低16zmm暫存器的低序128位元(ymm暫存器的低序128位元)係覆蓋在暫存器xmm0-15上。
寫入遮罩暫存器815-在所述之實施例中,有8個寫入遮罩暫存器(k0至k7),每個大小為64位元。在另一實施例中,寫入遮罩暫存器815的大小為16位元。如之前所述,在本發明之一實施例中,向量遮罩暫存器k0不能作為寫入遮罩;當編碼通常指示出k0係用於寫入遮罩時,便選擇0xFFFF的固線式寫入遮罩,有效地禁能對此 指令的寫入遮罩。
通用暫存器825-在所述之實施例中,有16個64位元的通用暫存器,其與現存之x86定址模式一起使用以定址記憶體運算元。這些暫存器所引用的名稱為RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15。
純量浮點數堆疊暫存器檔案(x87堆疊)845,於其上堆疊MMX填充整數浮點數暫存器檔案850-在所述之實施例中,x87堆疊係為8元素堆疊,用來使用x87指令集擴充對32/64/80位元浮點數資料執行純量浮點數操作;而MMX暫存器係用來對64位元填充整數資料進行操作,以及對在MMX與XMM暫存器之間進行的一些操作保持運算元。
本發明之其他實施例可使用較寬或較窄的暫存器。另外,本發明之另一實施例可使用更多、更少、或不同的暫存器檔案和暫存器。
示範核心架構、處理器、及計算機架構
基於不同目的,處理器核心可以不同方式、及以不同處理器來實作。例如,上述核心之實作可包括:1)預期用於通用計算的通用有序核心;2)預期用於通用計算的高效能通用亂序核心;3)預期主要用於圖形及/或科學(生產量)計算的專用核心。不同處理器之實作可包括:1)CPU,包括一或多個預期用於通用計算的通用有序核心及/或一或多個預期用於通用計算的通用亂序核心;及2)協處理器,包括一或多個預期主要用於圖形及/或科學 (生產量)的專用核心。上述不同的處理器導致不同的計算機系統架構,其可包括:1)在與CPU分開之晶片上的協處理器;2)在與CPU相同封裝中的單獨晶粒上的協處理器;3)在與CPU相同之晶粒上的協處理器(在此情況下,這類協處理器有時是指專用邏輯,例如整合圖形及/或科學(生產量)邏輯、或稱為專用核心;及4)單晶片系統,可包括在與所述之CPU、上述協處理器、及額外功能的相同晶粒上(有時稱為應用核心或應用處理器)。在說明示範處理器及計算機架構之後接著說明示範核心架構。
示範核心架構 有序和亂序核心方塊圖
第9A圖係繪示根據本發明之實施例之示範有序管線和示範暫存器更名、亂序發出/執行管線兩者的方塊圖。第9B圖係繪示根據本發明之實施例之將包括在處理器中的有序架構核心之示範實施例和示範暫存器更名、亂序發出/執行架構核心兩者的方塊圖。第9A-B圖之實線框繪示有序管線和有序核心,而非必要附加的虛線框繪示暫存器更名、亂序發出/執行管線和核心。假定有序態樣係亂序態樣的子集,將說明亂序態樣。
在第9A圖中,處理器管線900包括提取級902、長度解碼級904、解碼級906、分配級908、更名級910、排程(亦稱為調度或發出)級912、暫存器讀取/記憶體讀取 級914、執行級916、寫回/記憶體寫入級918、例外處理級922、及提交級924。
第9B圖顯示處理器核心990包括耦接執行引擎單元950的前端單元930,且這兩者都耦接記憶體單元970。核心990可以是精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、超長指令集(VLIW)核心、或混合或替代的核心類型。作為另一選擇,核心990可以是專用核心,例如,網路或通訊核心、壓縮引擎、協處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心或之類。
前端單元930包括耦接指令快取單元934的分支預測單元932,指令快取單元934耦接指令轉譯後備緩衝器(TLB)936,指令TLB 936耦接指令提取單元938,指令提取單元938耦接解碼單元940。解碼單元940(或解碼器)可解碼指令,並產生一或多個微操作、微碼進入點、微指令、其他指令、或其他控制信號作為輸出,其根據原始指令來解碼、或以其他方式反射、或得到。解碼單元940可使用各種不同機制來實作。適當的機制之實例包括,但不受限於查找表、硬體實作、可程式邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一實施例中,核心990包括微碼ROM或儲存用於某些微指令(例如,在解碼單元940中或在前端單元930內)之微碼的其他媒體。解碼單元940耦接在執行引擎單元950中的更名/分配單元952。
執行引擎單元950包括耦接引退單元954及一組一或多個排程單元956的更名/分配單元952。排程單元956表示一些不同排程器,包括保留站、中央指令窗等。排程單元956耦接實體暫存器檔案單元958。實體暫存器檔案單元958之各者表示一或多個實體暫存器檔案,每個儲存一或多個不同的資料類型,例如純量整數、純量浮點數、填充整數、填充浮點數、向量整數、向量浮點數、狀態(例如,待執行之下個指令之位址的指令指標)等。在一實施例中,實體暫存器檔案單元958包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。引退單元954重疊實體暫存器檔案單元958以顯示各種可實作暫存器更名和亂序執行的方式(例如,使用重排序緩衝器和引退暫存器檔案;使用未來檔案、歷史緩衝器、及引退暫存器檔案;使用暫存器映射及暫存器池等)。引退單元954和實體暫存器檔案單元958係耦接執行叢集960。執行叢集960包括一組一或多個執行單元962和一組一或多個記憶體存取單元964。執行單元962可執行各種操作(例如,移位、加法、減法、乘法)及對各種類型的資料(例如,純量浮點數、填充整數、填充浮點數、向量整數、向量浮點數)執行。儘管一些實施例可包括一些專用於特定功能或功能組的執行單元,但其他實施例可只包括一個執行單元或全部執行所有功能的多個執行單元。顯示排程單元956、實體暫存器檔案單元958、 及執行叢集960可能是複數個,因為某些實施例產生分開的管線用於某些類型的資料/操作(例如,純量整數管線、純量浮點數/填充整數/填充浮點數/向量整數/向量浮點數管線、及/或記憶體存取管線,其各者均具有自己的排程單元、實體暫存器檔案單元、及/或執行叢集,且在分開的記憶體存取管線之例子中,某些實施例實作出只有管線之執行叢集具有記憶體存取單元964)。亦應了解這裡使用分開的管線,這些管線之一或更多者可以是亂序發出/執行且其餘是有序的。
這組記憶體存取單元964係耦接記憶體單元970,其包括耦接第2級(L2)快取單元976的資料快取單元974之資料TLB單元972。在一示範實施例中,記憶體存取單元964可包括載入單元、儲存位址單元、及儲存資料單元,各耦接記憶體單元970中的資料TLB單元972。指令快取單元934更耦接在記憶體單元970中的第2級(L2)快取單元976。L2快取單元976耦接一或更多其他級的快取之且最終耦接主記憶體。
透過舉例方式,示範暫存器更名、亂序發送/執行核心架構可如下實作管線900:1)指令提取938進行提取和長度解碼級902和904;2)解碼單元940進行解碼級906;3)更名/分配單元952進行分配級908和更名級910;4)排程單元956進行排程級912;5)實體暫存器檔案單元958和記憶體單元970進行暫存器讀取/記憶體讀取級914;執行叢集960進行執行級916;6)記憶體單元 970和實體暫存器檔案單元958進行寫回/記憶體寫入級918;7)各種單元可包括例外處理級922;及8)引退單元954和實體暫存器檔案單元958進行提交級924。
核心990可支援包括本文所述之指令的一或多個指令集(例如,x86指令集(具有已加入較新型式的一些擴充);加州桑尼維爾之MIPS技術的MIPS指令集;加州桑尼維爾之ARM公司的ARM指令集(具有如NEON之非必要額外的擴充))。在一實施例中,核心990包括支援填充資料指令集擴充(例如,AVX1、AVX2)的邏輯,藉此允許許多多媒體應用所使用之操作能使用填充資料來執行。
應了解核心可支援多執行緒(執行二或多個平行的操作組或執行緒),並可以包括時間切割多執行緒、同步多執行緒(其中單一實體核心提供邏輯核心給實體核心係同步多執行緒的每個執行緒)、或以上之組合(例如,如在Intel®超執行緒技術之後的時間切割提取和解碼和同步多執行緒)的各種方式來實行。
儘管在亂序執行的內容中說明了暫存器更名,但應了解可在有序架構中使用暫存器更名。儘管所述之處理器的實施例亦包括分開的指令和資料快取單元934/974及共享L2快取單元976,但其他實施例可具有用於指令和資料兩者的單一內部快取,例如,第1級(L1)內部快取、或多級之內部快取。在一些實施例中,系統可包括內部快取與位於核心及/或處理器外部的外部快取之組合。替代地, 所有的快取可在核心及/或處理器的外部。
具體的示範有序核心架構
第10A-B圖繪示更具體之示範有序核心架構的方塊圖,其核心會是晶片中的多個邏輯方塊之其一者(包括相同類型及/或不同類型的其他核心)。邏輯方塊依據應用程式透過高頻寬互連網路(例如,環形網路)來與一些固定功能邏輯、記憶體I/O介面、及其他必要I/O邏輯通訊。
第10A圖係根據本發明之實施例之單一處理器核心連同其連接單晶片互連網路1002的連線與其第2級(L2)快取1004的區域子集之方塊圖。在一實施例中,指令解碼器1000支援具有填充資料指令集擴充的x86指令集。L1快取1006允許將快取記憶體低潛時地存取至純量和向量單元。儘管在一(為了簡化設計的)實施例中,純量單元1008和向量單元1010使用單獨暫存器組(分別為純量暫存器1012和向量暫存器1014),且傳輸於其間的資料被寫入至記憶體而接著從第1級(L1)快取1006讀回,但本發明之其他實施例可使用不同的方法(例如,使用單一暫存器組或包括允許資料在沒被寫入和讀回的情況下傳輸於這兩個暫存器檔案之間的通訊路徑)。
L2快取1004的區域子集係為部分的全域L2快取,其分成單獨的區域子集,每個處理器核心一個。每個處理器核心具有直接存取路徑至自己的L2外取1004之區域子 集。處理器核心所讀取的資料係儲存在其L2快取子集1004中且能與存取其自己區域L2快取子集之其他處理器核心並行地快速存取。處理器核心所寫入的資料係儲存在其自己的L2快取子集1004中且若需要的話會從其他子集清除。環形網路確保共享資料的一致性。環形網路係為雙向的以允許如處理器核心、L2快取及其他邏輯方塊的代理器能在晶片內彼此通訊。每個環形資料路徑在每個方向上係為1012位元寬。
第10B圖係根據本發明之實施例之第10A圖中的處理器核心之一部分的分解圖。第10B圖包括L1快取1006之L1資料快取1006A部分、以及關於向量單元1010和向量暫存器1014的更多細節。具體來說,向量單元1010係16寬的向量處理單元(VPU)(參見16寬的ALU 1128),其執行整數、單精度浮點數、及雙精度浮點數指令之一或更多者。VPU以攪和單元1020來支援攪和暫存器輸入、以數字轉換單元1022A-B來支援數字轉換、且以複製單元1024來支援複製記憶體輸入。寫入遮罩暫存器1026允許預測所得之向量寫入。
具有整合記憶體控制器和圖形的處理器
第11圖係根據本發明之實施例之具有一個以上之核心、可具有整合記憶體控制器、及可具有整合圖形的處理器1100之方塊圖。第11圖之實線框繪示具有單核心1102A、系統代理器1110、一組一或多個匯流排控制器單 元1116的處理器1100,而非必要添加的虛線框繪示具有多個核心1102A-N、在系統代理器單元1110中的一組一或多個整合記憶體控制器單元1114、及專用邏輯1108的另一處理器1100。
因此,處理器1100之不同實作可包括:1)具有為整合圖形及/或科學(生產量)邏輯(其可包括一或多個核心)之專用邏輯1108的CPU、及為一或多個通用核心(例如,通用有序核心、通用亂序核心、這兩者之組合)的核心1102A-N;2)具有為預期主要用於圖形及/或科學(生產量)的大量專用核心之核心1102A-N的協處理器;及3)具有為大量通用有序核心之核心1102A-N的協處理器。由此,處理器1100可以是通用處理器、協處理器、或專用處理器,例如,網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高產量多重整合核心(MIC)協處理器(包括30個以上之核心)、嵌入式處理器或之類。處理器可實作在一或多個晶片上。處理器1100使用如BiCMOS、CMOS、或NMOS的一些處理技術,可以是一部分的一或多個基板及/或可實作在一或多個基板上。
記憶體階層包括核心內之一或多級的快取、一組或一或多個共享快取單元1106、及耦接這組整合記憶體控制器單元1114的外部記憶體(未顯示)。這組共享快取單元1106可包括如第2級(L2)、第3級(L3)、第4級(L4)、或其他級之快取的一或多個中級快取(LLC)、 最後一級快取(LLC)及/或以上之組合。儘管在一實施例中,環形基礎的互連單元1112使整合圖形邏輯1108,這組共享快取單元1106、及系統代理器單元1110/整合記憶體控制器單元1114互連,但其他實施例可使用一些熟知技術來使上述單元互連。在一實施例中,在一或多個快取單元1106與核心1102A-N之間維持一致性。
在一些實施例中,一或多個核心1102A-N能夠進行多執行緒。系統代理器1110包括那些協同和操作核心1102A-N的元件。系統代理器單元1110可包括例如電源控制單元(PCU)及顯示單元。PCU可以是或包括調節核心1102A-N和整合圖形邏輯1108之電源狀態所需的邏輯和元件。顯示單元係用來驅動一或多個外部連接的顯示器。
核心1102A-N在架構指令集方面可以是同型的或不同型的;意即,二或更多之核心1102A-N也許能夠執行相同指令集,而其他也許能夠僅執行此指令集或不同指令集的子集。
示範計算機架構
第12-15圖係示範計算機架構的方塊圖。本技術中所知用於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、開關、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視頻遊戲裝置、機上盒、微控制器、手機、可攜式媒 體播放器、手持裝置、及各種其他電子裝置的其他系統設計和組態亦為適用的。一般來說,如本文所揭露之能夠結合處理器及/或其他執行邏輯之種類繁多的系統或電子裝置通常係為適用的。
現在參考第12圖,所顯示的係依照本發明之一實施例之系統1200的方塊圖。系統1200可包括一或多個耦接控制器集線器1220的處理器1210、1215。在一實施例中,控制器集線器1220包括一圖形記憶體控制器集線器(GMCH)1290及一輸入/輸出集線器(IOH)1250(其可在分開的晶片上);GMCH 1290包括耦接記憶體1240和協處理器1245的記憶體和圖形控制器;IOH 1250將輸入/輸出(I/O)裝置1260耦接至GMCH 1290。替代地,記憶體與圖形控制器之一或兩者係整合在處理器內(如本文所述),記憶體1240和協處理器1245直接耦接處理器1210、及在具有IOH 1250之單晶片中的控制器集線器1220。
在第12圖中以虛線來表示額外處理器1215的非必要性。每個處理器1210、1215可包括一或多個本文所述之處理核心且可以是一些型式的處理器1100。
記憶體1240可以是例如動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或這兩者之組合。針對至少一實施例,控制器集線器1220經由多點下傳匯流排,例如前端匯流排(FSB)、如快速通道互連(QPI)的點對點介面、或類似連線1295來與處理器1210、1215通訊。
在一實施例中,協處理器1245係為專用處理器,例如,高產量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或之類。在一實施例中,控制器集線器1220可包括整合圖形加速器。
實體資源1210、1215之間在包括架構、微架構、熱、功率消耗特性等之度量範圍方面會存在各種差異。
在一實施例中,處理器1210執行控制一般類型之資料處理操作的指令。內嵌在指令內的可以是協處理器指令。處理器1210辨識這些協處理器指令為應由所附接之協處理器1245所執行的類型。因此,處理器1210在協處理器匯流排或其他互連上發出這些協處理器指令(或代表協處理器指令的控制信號)至協處理器1245。協處理器1245接受並執行收到的協處理器指令。
現在參考第13圖,所顯示的係依照本發明之實施例之第一更具體示範系統1300的方塊圖。如第13圖所示,多處理器系統1300係為點對點互連系統,且包括經由點對點互連1350耦接的第一處理器1370和第二處理器1380。處理器1370和1380之各者可以是一些型式的處理器1100。在本發明之一實施例中,處理器1370和1380分別係為處理器1210和1215,而協處理器1338係為協處理器1245。在另一實施例中,處理器1370和1380分別係為處理器1210和協處理器1245。
顯示處理器1370和1380分別包括整合記憶體控制器(IMC)單元1372和1382。處理器1370亦包括點對點 (P-P)介面1376和1378作為其匯流排控制器的一部分;同樣地,第二處理器1380包括P-P介面1386和1388。處理器1370、1380可使用P-P介面電路1378、1388經由點對點(P-P)介面1350來交換資訊。如第13圖所示,IMC 1372和1382將處理器耦接至各自的記憶體,即記憶體1332和記憶體1334,其可以是部分區域地附接於各自處理器的主記憶體。
處理器1370、1380各可使用點對點介面電路1376、1394、1386、1398經由個別的P-P介面1352、1354來與晶片組1390交換資訊。晶片組1390可選擇性地經由高效能介面1339與協處理器1338交換資訊。在一實施例中,協處理器1338係為專用處理器,例如,高產量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或之類。
共享快取(未顯示)可包括在任一處理器中或兩處理器之外,還可經由P-P互連與處理器連接,使得若處理器置於低功率模式中,則任一或兩處理器之區域快取資訊可儲存在共享快取中。
晶片組1390可經由介面1396來耦接第一匯流排1316。在一實施例中,第一匯流排1316可以是周邊元件互連(PCI)匯流排、或如PCI快捷匯流排或另一第三代I/O互連匯流排的匯流排,雖然本發明之範圍並不以此為限。
如第13圖所示,各種I/O裝置1314可與匯流排橋接 器1318一起耦接第一匯流排1316、其中匯流排橋接器1318耦接第一匯流排1316和第二匯流排1320。在一實施例中,一或多個如協處理器、高產量MIC處理器、GPGPU的、加速器(例如,圖形加速器或數位信號處理(DSP)單元)、現場可程式閘陣列、或任何其他處理器的額外處理器1315係耦接第一匯流排1316。在一實施例中,第二匯流排1320可以是低針腳數(LPC)匯流排。在一實施例中,各種裝置可耦接第二匯流排1320,包括例如鍵盤及/或滑鼠1322、通訊裝置1327及如磁碟機或其他可包括指令/代碼和資料1330的大容量儲存裝置之儲存單元1328。再者,音頻I/O 1324可耦接第二匯流排1320。請注意其他架構係可能的。例如,系統可實作多點下傳匯流排或其他上述架構而不是第13之點對點架構。
現在參考第14,所顯示的係依照本發明之實施例之第二更具體示範系統1400的方塊圖。第13和14圖中的相似元件具有相同參考數字,且第13圖之某些態樣已從第14圖省略以避免模糊第14圖之其他態樣。
第14圖繪示處理器1370、1380分別可包括整合記憶體和I/O控制邏輯(「CL」)1372和1382。因此,CL 1372、1382包括整合記憶體控制器單元且包括I/O控制邏輯。第14圖繪示不只記憶體1332、1334耦接CL 1372、1382,而且還繪示I/O裝置1414亦耦接控制邏輯1372、1382。傳統I/O裝置1415係耦接晶片組1390。
現在參考第15圖,所顯示的係依照本發明之實施例 之SoC 1500的方塊圖。第11圖中的相似元件具有相同參考數字。而且,虛線框在更進階的SoC上是非必要的特徵。在第15圖中,互連單元1502係耦接:包括一組一或多個核心202A-N和共享快取單元1106的應用處理器1510、系統代理器單元1110、匯流排控制器單元1116、整合記憶體控制器單元1114、可包括整合圖形邏輯、影像處理器、音頻處理器、和視頻處理器的一組一或多個協處理器1520、靜態隨機存取記憶體(SRAM)單元1530、直接記憶體存取(DMA)單元1532、及用於耦接一或多個外部顯示器的顯示單元1540。在一實施例中,協處理器1520包括專用處理器,例如網路或通訊處理器、壓縮引擎、GPGPU、高產量MIC處理器、嵌入式處理器或之類。
本文所述之機制的實施例可以硬體、軟體、韌體、或上述實作方法之組合來實作。本發明之實施例可實作成執行在包含至少一處理器、儲存系統(包括揮發性和非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置的可程式系統上的電腦程式或程式碼。
可施用如第13圖所示之代碼1330的程式碼來輸入指令以執行本文所述之功能並產生輸出資訊。可以已知方式來將輸出資訊應用於一或多個輸出裝置。為了此應用之目的,處理系統包括任何具有處理器(例如,數位信號處理器(DSP)、微控制器、專用積體電路(ASIC)、或微處理器)之系統。
程式碼可以高階程序或物件導向程式語言來實作以與處理系統通訊。若需要的話,程式碼亦可以組合或機器語言來實作。事實上,本文敘述的機制並不受限於此領域的任何特定程式語言。在任何情況下,語言可以是已編譯或已翻譯之語言。
至少一實施例的一或多個態樣可藉由儲存在機器可讀媒體上的代表指令來實作,其表現在處理器內的各種邏輯,當機器讀取指令時,會使機器組裝邏輯來執行本文描述的技術。這樣的表現,稱為「IP核心」,可儲存在有形的機器可讀媒體上並供應至各種顧客或製造廠來下載至實際產生邏輯的製造機器或處理器中。
並非限制地,上述機器可讀儲存媒體可包括機器或裝置製造或形成的物件之非暫態、有形的排列,包括如硬碟、任何類型之磁碟(包括軟碟、光碟、唯讀光碟機(CD-ROM)、可抹寫光碟(CD-RW)、及磁光碟機)、如唯讀記憶體(ROM)的半導體裝置、如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)的隨機存取記憶體(RAM)、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電子可抹除可程式化唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁或光學卡、或可適用於儲存電子指令的任何其他類型之媒體的儲存媒體。
因此,本發明之實施例也包括非暫態、有形的機器可讀媒體,其內含指令或包含設計資料,如硬體描述語言 (HDL),其定義本文描述的結構、電路、設備、處理器及/或系統特徵。上述實施例也可指程式產品。
模擬(包括二進制轉換、代碼模仿等)
在一些情況下,可使用指令轉換器來將來源指令集的指令轉換成目標指令集。例如,指令轉換器可轉譯(例如,使用靜態二進制轉換、包括動態編譯的動態二進制轉換)、模仿、模擬、或以其他方式將指令轉換成一或多個待由核心處理的其他指令。指令轉換器可以軟體、硬體、韌體、或以上之組合來實作。指令轉換器可在處理器上、在處理器之外、或部分在處理器上且部分在處理器外。
第16圖係根據本發明之實施例之對照於使用軟體指令轉換器來將來源指令集中的二進制指令轉換成目標指令集中的二進制指令之方塊圖。在所述之實施例中,指令轉換器係為軟體指令轉換器,儘管指令轉換器可替代地以軟體、韌體、硬體、或以上之各種組合來實作。第16圖顯示高階語言1602的程式可使用x86編譯器1604來編譯以產生x86二進制碼1606,其本身可由具有至少一x86指令集核心的處理器1616來執行。具有至少一x86指令集核心的處理器1616表示能執行實質上與具有至少一x86指令集核心的Intel處理器有相同功能的處理器,其藉由協調地執行或以其他方式處理(1)Intel x86指令集核心的實質部份之指令集或(2)目標碼型式的應用程式或其他在具有至少一x86指令集核心的Intel處理器上執行的軟 體,以達到大致上與具有至少一x86指令集核心的Intel處理器有相同的結果。x86編譯器1604表示可操作來產生x86二進制碼1606(例如,目標碼)的編譯器,其會連同或無須額外的連鎖處理地在具有至少一x86指令集核心的處理器1616上執行。同樣地,第16圖顯示高階語言1602的程式可使用其他指令集編譯器1608來編譯以產生原本就可被不具有至少一x86指令集核心的處理器1614(例如,具有執行美國加州Sunnyvale的MIPS科技之MIPS指令集及/或執行美國加州Sunnyvale的ARM科技之ARM指令集之核心的處理器)執行的其他指令集二進制碼1610。指令轉換器1612係用來將x86二進制碼1606轉成本身可被不具有x86指令集核心的處理器1614執行的代碼。由於能轉換上述的指令轉換器難以製造,因此已轉換的代碼不太可能與其他指令集二進位碼1610相同;然而,已轉換的代碼將完成一般操作且由其他指令集的指令組成。因此,指令轉換器1612代表軟體、韌體、硬體、或以上之組合,透過模仿、模擬或任何其他程序,允許處理器或其他不具有x86指令集處理器或核心的電子裝置能執行x86二進制碼1606。
702‧‧‧VEX前置
730‧‧‧實際運算碼欄位
740‧‧‧Mod R/M欄位
750‧‧‧SIB位元組
762‧‧‧位移欄位
772‧‧‧立即欄位
774‧‧‧全運算碼欄位
744‧‧‧暫存器索引欄位
705‧‧‧REX欄位
715‧‧‧運算碼映射欄位
764‧‧‧W欄位
720‧‧‧VEX.vvvv欄位
768‧‧‧大小欄位
725‧‧‧前置編碼欄位
742‧‧‧MOD欄位
744‧‧‧Reg欄位
746‧‧‧R/M欄位
800‧‧‧暫存器架構
810‧‧‧向量暫存器
815‧‧‧寫入遮罩暫存器
825‧‧‧通用暫存器
850‧‧‧整數浮點數暫存器檔案
845‧‧‧純量浮點堆疊暫存器檔案
900‧‧‧管線
902‧‧‧提取級
904‧‧‧長度解碼級
906‧‧‧解碼級
908‧‧‧分配級
910‧‧‧更名級
912‧‧‧排程級
914‧‧‧暫存器讀取/記憶體讀取級
916‧‧‧執行級
918‧‧‧寫回/記憶體寫入級
922‧‧‧例外處理級
924‧‧‧提交級
930‧‧‧前端單元
932‧‧‧分支預測單元
934‧‧‧指令快取單元
936‧‧‧指令轉譯後備緩衝器
938‧‧‧指令提取單元
940‧‧‧解碼單元
950‧‧‧執行引擎單元
952‧‧‧更名/分配單元
954‧‧‧引退單元
956‧‧‧排程單元
958‧‧‧實體暫存器檔案單元
960‧‧‧執行叢集
962‧‧‧執行單元
964‧‧‧記憶體存取單元
970‧‧‧記憶體單元
972‧‧‧資料TLB單元
974‧‧‧資料快取單元
976‧‧‧第2級(L2)快取單元
990‧‧‧核心
1000‧‧‧指令解碼器
1002‧‧‧互連網路
1004‧‧‧L2快取
1006‧‧‧L1快取
1008‧‧‧純量單元
1010‧‧‧向量單元
1012‧‧‧純量暫存器
1014‧‧‧向量暫存器
1006A‧‧‧L1資料快取
1028‧‧‧16寬ALU
1020‧‧‧攪和單元
1024‧‧‧複製單元
1026‧‧‧寫入遮罩暫存器
1022A‧‧‧數字轉換單元
1022B‧‧‧數字轉換單元
1100‧‧‧處理器
1102A-N‧‧‧核心
1104A-N‧‧‧快取單元
1106‧‧‧共享快取單元
1108‧‧‧專用邏輯
1110‧‧‧系統代理器
1112‧‧‧環形基礎的互連單元
1114‧‧‧整合記憶體控制器單元
1116‧‧‧匯流排控制器單元
1200‧‧‧系統
1210‧‧‧處理器
1215‧‧‧處理器
1220‧‧‧控制器集線器
1240‧‧‧記憶體
1245‧‧‧協處理器
1250‧‧‧輸入/輸出集線器
1260‧‧‧輸入/輸出裝置
1290‧‧‧圖形記憶體控制器集線器
1295‧‧‧連線
1300‧‧‧系統
1350‧‧‧點對點互連
1370‧‧‧第一處理器
1380‧‧‧第二處理器
1338‧‧‧協處理器
1372‧‧‧整合記憶體控制器單元
1382‧‧‧整合記憶體控制器單元
1376‧‧‧P-P介面
1378‧‧‧P-P介面
1386‧‧‧P-P介面
1388‧‧‧P-P介面
1394‧‧‧對點介面電路
1398‧‧‧對點介面電路
1332‧‧‧記憶體
1334‧‧‧記憶體
1352‧‧‧P-P介面
1354‧‧‧P-P介面
1390‧‧‧晶片組
1339‧‧‧高效能介面
1396‧‧‧介面
1316‧‧‧第一匯流排
1314‧‧‧I/O裝置
1318‧‧‧匯流排橋接器
1320‧‧‧第二匯流排
1322‧‧‧鍵盤/滑鼠
1324‧‧‧音頻I/O
1327‧‧‧通訊裝置
1328‧‧‧儲存單元
1330‧‧‧代碼和資料
1400‧‧‧系統
1372‧‧‧I/O控制邏輯
1382‧‧‧I/O控制邏輯
1414‧‧‧I/O裝置
1415‧‧‧傳統I/O裝置
1500‧‧‧單晶片系統
1502‧‧‧互連單元
1510‧‧‧應用處理器
1520‧‧‧協處理器
1530‧‧‧靜態隨機存取記憶體單元
1532‧‧‧直接記憶體存取單元
1540‧‧‧顯示單元
1602‧‧‧高階語言
1604‧‧‧x86編譯器
1606‧‧‧x86二進制碼
1608‧‧‧其他指令集編譯器
1610‧‧‧其他指令集二進制碼
1612‧‧‧指令轉換器
1614‧‧‧不具有x86指令集核心的處理器
1616‧‧‧具有至少一x86指令集核心的處理器
本發明僅經由在附圖中的舉例,而非限定來說明,在附圖中的相同參考數字係指類似元件,而其中:第1(A)圖繪示KCOMPRESS的示範指令操作之示 範圖。
第1(B)圖繪示KCOMPRESS的示範指令操作之另一示範圖。
第2圖繪示為VEX格式之此指令的格式之更詳細的實施例。
第3圖繪示在處理器中使用KCOMPRESS指令的實施例。
第4圖繪示用於使用加法來處理KCOMPRESS指令之方法的實施例。
第5圖繪示用於此指令的示範虛擬碼型式。
第6圖繪示根據本發明之一實施例之在一主動位元向量寫入遮罩元件數和向量大小及資料元件大小之間的相關性。
第7A圖繪示示範AVX指令格式。
第7B圖繪示第7A圖的哪些欄位組成全運算碼欄位和基本操作欄位。
第7C圖繪示第7A圖的哪些欄位組成暫存器索引欄位。
第8圖係根據本發明之一實施例之暫存器架構的方塊圖。
第9A圖係繪示根據本發明之實施例之示範有序管線和示範暫存器更名、亂序發出/執行管線兩者的方塊圖。
第9B圖係繪示根據本發明之實施例之將包括在處理器中的有序架構核心之示範實施例和示範暫存器更名、亂 序發出/執行架構核心兩者的方塊圖。
第10A-B圖繪示更具體的示範有序核心架構的方塊圖,其核心會是晶片中的多個邏輯方塊(包括相同類型及/或不同類型的其他核心)之其一者。
第11圖係根據本發明之實施例之可具有一個以上核心、可具有整合記憶體控制器、且可具有整合圖形的處理器之方塊圖。
第12圖係依照本發明之一實施例之系統的方塊圖。
第13圖係依照本發明之實施例之第一更具體示範系統的方塊圖。
第14圖係依照本發明之實施例之第二更具體示範系統的方塊圖。
第15圖係依照本發明之實施例之SoC的方塊圖。
第16圖係根據本發明之實施例之對照使用一軟體指令轉換器來將來源指令集中的二進制指令轉換成目標指令集中的二進制指令之方塊圖。

Claims (20)

  1. 一種用以反應於一單一遮罩位元壓縮指令而在一電腦處理器中執行遮罩位元壓縮之方法,其中該單一遮罩位元壓縮指令包括一來源寫入遮罩暫存器運算元、一目的地寫入遮罩暫存器運算元、及一運算碼,該方法包含下列步驟:執行該遮罩位元壓縮指令以決定應將該來源寫入遮罩暫存器的哪些寫入遮罩位元寫入該目的寫入遮罩暫存器的最低有效位元位置,其中該來源寫入遮罩暫存器和該目的寫入遮罩暫存器的每個位元是一寫入遮罩位元;及將所決定之該些寫入遮罩位元儲存在該目的寫入遮罩暫存器的最低有效位元位置中。
  2. 如申請專利範圍第1項所述之方法,其中該些寫入遮罩暫存器是各具有16個寫入遮罩的16位元暫存器。
  3. 如申請專利範圍第1項所述之方法,其中該些寫入遮罩暫存器是各具有64個寫入遮罩的64位元暫存器。
  4. 如申請專利範圍第1項所述之方法,其中該運算碼設定該來源寫入遮罩暫存器的一些寫入遮罩位元,以評估來決定應將該來源寫入遮罩暫存器的該些寫入遮罩位元之何者寫入該目的寫入遮罩暫存器的最低有效位元位置。
  5. 如申請專利範圍第4項所述之方法,其中該來源寫入遮罩暫存器的所有寫入遮罩位元被評估來決定應將該來源寫入遮罩暫存器的該些寫入遮罩位元之何者寫入該目的寫入遮罩暫存器的最低有效位元位置。
  6. 如申請專利範圍第5項所述之方法,其中只有該來源寫入遮罩暫存器的八個最低有效寫入遮罩位元被評估來決定應將該來源寫入遮罩暫存器的該些寫入遮罩位元之何者寫入該目的寫入遮罩暫存器的最低有效位元位置。
  7. 如申請專利範圍第1項所述之方法,更包含:在決定應將該來源寫入遮罩暫存器的哪些寫入遮罩位元寫入該目的寫入遮罩暫存器的最低有效位元位置之前,將所有目的寫入遮罩的位元設為0。
  8. 如申請專利範圍第1項所述之方法,其中該執行和儲存步驟更包含:判斷該來源寫入遮罩暫存器的最低有效位元位置是否為1;當該來源寫入遮罩暫存器的最低有效位元位置為1時,將1寫入尚未儲存1的該目的寫入遮罩暫存器之最低有效位元位置中;及當該來源寫入遮罩暫存器的最低有效位元位置為0時,判斷該來源寫入遮罩暫存器的次低有效位元位置當該來源寫入遮罩暫存器的最低有效位元位置為0時是否為1。
  9. 一種用以執行遮罩位元壓縮之製造的物品,包含:一有形機器可讀儲存媒體,具有儲存於其中的一指令,其中該指令的格式指定一單一寫入遮罩暫存器之一來源運算元作為其唯一的來源運算元並指定作為該單一寫入遮罩暫存器之目的,且其中該指令格式包括一運算碼,其 反應於單一出現的該單一指令來命令一機器以使該來源運算元的寫入遮罩位元之至少一些者寫入該目的運算元的寫入遮罩暫存器之一或更多最低有效位元中。
  10. 如申請專利範圍第9項所述之製造的物品,其中該些寫入遮罩暫存器是各具有16個寫入遮罩的16位元暫存器。
  11. 如申請專利範圍第9項所述之製造的物品,其中該些寫入遮罩暫存器是各具有64個寫入遮罩的64位元暫存器。
  12. 如申請專利範圍第9項所述之製造的物品,其中該運算碼設定該來源寫入遮罩暫存器的一些寫入遮罩位元,以評估來決定應將該來源寫入遮罩暫存器的該些寫入遮罩位元之何者寫入該目的寫入遮罩暫存器的最低有效位元位置。
  13. 如申請專利範圍第12項所述之製造的物品,其中該來源寫入遮罩暫存器的所有寫入遮罩位元被評估來決定應將該來源寫入遮罩暫存器的該些寫入遮罩位元之何者寫入該目的寫入遮罩暫存器的最低有效位元位置。
  14. 如申請專利範圍第12項所述之製造的物品,其中只有該來源寫入遮罩暫存器的八個最低有效寫入遮罩位元被評估來決定應將該來源寫入遮罩暫存器的該些寫入遮罩位元之何者寫入該目的寫入遮罩暫存器的最低有效位元位置。
  15. 如申請專利範圍第9項所述之製造的物品,更包 含:在使該來源運算元的寫入遮罩位元之至少一些者寫入該目的運算元的寫入遮罩暫存器之一或更多最低有效位元之前,將所有目的寫入遮罩的位元設為0。
  16. 一種用以執行遮罩位元壓縮之設備,包含:一硬體解碼器,用來解碼一遮罩位元壓縮指令,其中該遮罩位元壓縮指令包括一來源寫入遮罩暫存器運算元、一目的寫入遮罩暫存器運算元、及一運算碼;及執行邏輯,用來決定應將該來源寫入遮罩暫存器的哪些寫入遮罩位元寫入該目的寫入遮罩暫存器的最低有效位元位置,其中該來源寫入遮罩暫存器和該目的寫入遮罩暫存器的每個位元是一寫入遮罩位元,並將所決定之該些寫入遮罩位元儲存在該目的寫入遮罩暫存器的最低有效位元位置中。
  17. 如申請專利範圍第16項所述之設備,其中該些寫入遮罩暫存器是各具有16個寫入遮罩的16位元暫存器。
  18. 如申請專利範圍第16項所述之設備,其中該些寫入遮罩暫存器是各具有64個寫入遮罩的64位元暫存器。
  19. 如申請專利範圍第16項所述之設備,其中該運算碼設定該來源寫入遮罩暫存器的一些寫入遮罩位元,以評估來決定應將該來源寫入遮罩暫存器的該些寫入遮罩位元之何者寫入該目的寫入遮罩暫存器的最低有效位元位置。
  20. 如申請專利範圍第16項所述之設備,該執行邏輯更用來在決定應將該來源寫入遮罩暫存器的哪些寫入遮罩 位元寫入該目的寫入遮罩暫存器的最低有效位元位置之前,將所有目的寫入遮罩的位元設為0。
TW101148331A 2011-12-23 2012-12-19 用以執行遮罩位元壓縮之系統、設備、及方法 TWI525533B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/067081 WO2013095604A1 (en) 2011-12-23 2011-12-23 Systems, apparatuses, and methods for performing mask bit compression

Publications (2)

Publication Number Publication Date
TW201344561A TW201344561A (zh) 2013-11-01
TWI525533B true TWI525533B (zh) 2016-03-11

Family

ID=48669245

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101148331A TWI525533B (zh) 2011-12-23 2012-12-19 用以執行遮罩位元壓縮之系統、設備、及方法

Country Status (4)

Country Link
US (2) US9354877B2 (zh)
CN (2) CN104025020B (zh)
TW (1) TWI525533B (zh)
WO (1) WO2013095604A1 (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013095604A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Systems, apparatuses, and methods for performing mask bit compression
US9606961B2 (en) * 2012-10-30 2017-03-28 Intel Corporation Instruction and logic to provide vector compress and rotate functionality
US9823924B2 (en) 2013-01-23 2017-11-21 International Business Machines Corporation Vector element rotate and insert under mask instruction
US9513906B2 (en) 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
US9804840B2 (en) 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
US9715385B2 (en) 2013-01-23 2017-07-25 International Business Machines Corporation Vector exception code
US9778932B2 (en) 2013-01-23 2017-10-03 International Business Machines Corporation Vector generate mask instruction
US9471308B2 (en) 2013-01-23 2016-10-18 International Business Machines Corporation Vector floating point test data class immediate instruction
US9411593B2 (en) * 2013-03-15 2016-08-09 Intel Corporation Processors, methods, systems, and instructions to consolidate unmasked elements of operation masks
US9395990B2 (en) * 2013-06-28 2016-07-19 Intel Corporation Mode dependent partial width load to wider register processors, methods, and systems
US10133570B2 (en) 2014-09-19 2018-11-20 Intel Corporation Processors, methods, systems, and instructions to select and consolidate active data elements in a register under mask into a least significant portion of result, and to indicate a number of data elements consolidated
US20160188333A1 (en) * 2014-12-27 2016-06-30 Intel Coporation Method and apparatus for compressing a mask value
US10127627B2 (en) * 2015-09-23 2018-11-13 Intel Corporation Mapping graphics resources to linear arrays using a paging system
US20170177348A1 (en) * 2015-12-21 2017-06-22 Intel Corporation Instruction and Logic for Compression and Rotation
US10891131B2 (en) 2016-09-22 2021-01-12 Intel Corporation Processors, methods, systems, and instructions to consolidate data elements and generate index updates
WO2018158603A1 (en) * 2017-02-28 2018-09-07 Intel Corporation Strideshift instruction for transposing bits inside vector register
KR102252137B1 (ko) * 2018-02-13 2021-05-13 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 계산 장치 및 방법
US11663002B2 (en) * 2018-02-13 2023-05-30 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US10911267B1 (en) 2020-04-10 2021-02-02 Apple Inc. Data-enable mask compression on a communication bus
CN117375625B (zh) * 2023-12-04 2024-03-22 深流微智能科技(深圳)有限公司 地址空间的动态解压缩方法、地址解压器、设备及介质
CN117591184B (zh) * 2023-12-08 2024-05-07 超睿科技(长沙)有限公司 Risc-v向量压缩乱序执行的实现方法及装置

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57209570A (en) 1981-06-19 1982-12-22 Fujitsu Ltd Vector processing device
JPH0731669B2 (ja) 1986-04-04 1995-04-10 株式会社日立製作所 ベクトル・プロセツサ
US6484255B1 (en) * 1999-09-20 2002-11-19 Intel Corporation Selective writing of data elements from packed data based upon a mask using predication
US6446198B1 (en) * 1999-09-30 2002-09-03 Apple Computer, Inc. Vectorized table lookup
US6671797B1 (en) * 2000-02-18 2003-12-30 Texas Instruments Incorporated Microprocessor with expand instruction for forming a mask from one bit
US20030105945A1 (en) * 2001-11-01 2003-06-05 Bops, Inc. Methods and apparatus for a bit rake instruction
US7095808B1 (en) * 2000-08-16 2006-08-22 Broadcom Corporation Code puncturing method and apparatus
US7167968B2 (en) * 2004-04-29 2007-01-23 International Business Machines Corporation Storage pre-alignment and EBCDIC, ASCII and unicode basic latin conversions for packed decimal data
US8290095B2 (en) * 2006-03-23 2012-10-16 Qualcomm Incorporated Viterbi pack instruction
US7921263B2 (en) * 2006-12-22 2011-04-05 Broadcom Corporation System and method for performing masked store operations in a processor
US7911480B2 (en) 2007-10-08 2011-03-22 Via Technologies, Inc. Compression of multiple-sample-anti-aliasing tile data in a graphics pipeline
US20090172348A1 (en) * 2007-12-26 2009-07-02 Robert Cavin Methods, apparatus, and instructions for processing vector data
US8281109B2 (en) * 2007-12-27 2012-10-02 Intel Corporation Compressed instruction format
US9529592B2 (en) * 2007-12-27 2016-12-27 Intel Corporation Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation
GB2456775B (en) 2008-01-22 2012-10-31 Advanced Risc Mach Ltd Apparatus and method for performing permutation operations on data
US9003170B2 (en) * 2009-12-22 2015-04-07 Intel Corporation Bit range isolation instructions, methods, and apparatus
CN104011650B (zh) * 2011-12-23 2017-09-19 英特尔公司 使用输入写掩码和立即数从源写掩码寄存器在目的地写掩码寄存器中设置输出掩码的系统、装置和方法
WO2013095604A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Systems, apparatuses, and methods for performing mask bit compression
US9323531B2 (en) * 2013-03-15 2016-04-26 Intel Corporation Systems, apparatuses, and methods for determining a trailing least significant masking bit of a writemask register
US9411593B2 (en) * 2013-03-15 2016-08-09 Intel Corporation Processors, methods, systems, and instructions to consolidate unmasked elements of operation masks

Also Published As

Publication number Publication date
US20170024206A1 (en) 2017-01-26
CN107220027A (zh) 2017-09-29
CN104025020A (zh) 2014-09-03
US9983873B2 (en) 2018-05-29
US20140019732A1 (en) 2014-01-16
CN104025020B (zh) 2017-06-13
WO2013095604A1 (en) 2013-06-27
TW201344561A (zh) 2013-11-01
US9354877B2 (en) 2016-05-31

Similar Documents

Publication Publication Date Title
TWI525533B (zh) 用以執行遮罩位元壓縮之系統、設備、及方法
TWI512616B (zh) 用於緊縮資料運算遮罩之序連的方法、設備、系統及製品
RU2656730C2 (ru) Процессоры, способы, системы и команды для сложения трех операндов-источников с плавающей запятой
US20180004517A1 (en) Apparatus and method for propagating conditionally evaluated values in simd/vector execution using an input mask register
CN107741861B (zh) 用于混洗浮点或整数值的装置和方法
TWI524266B (zh) 用以偵測向量暫存器內相等元素之裝置及方法
JP6466388B2 (ja) 方法及び装置
CN107273095B (zh) 用于对齐寄存器的系统、装置和方法
US20140108480A1 (en) Apparatus and method for vector compute and accumulate
US9348592B2 (en) Apparatus and method for sliding window data access
TWI462007B (zh) 用以執行將遮罩暫存器轉換為向量暫存器的系統、裝置及方法
US11301580B2 (en) Instruction execution that broadcasts and masks data values at different levels of granularity
TWI663545B (zh) 執行置換運算的處理器
TW201346754A (zh) 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法
US11347502B2 (en) Apparatus and method of improved insert instructions
US20140208065A1 (en) Apparatus and method for mask register expand operation
WO2013101218A1 (en) Vector frequency expand instruction
US9965282B2 (en) Systems, apparatuses, and methods for performing delta encoding on packed data elements
TWI603261B (zh) 用以執行離心操作的指令及邏輯
US20130332701A1 (en) Apparatus and method for selecting elements of a vector computation
TWI517032B (zh) 用以執行兩向量暫存器之對應填充資料元件間絕對差計算之系統、裝置及方法
WO2013095605A1 (en) Apparatus and method for sliding window data gather
US20170235516A1 (en) Apparatus and method for shuffling floating point or integer values
US20140068227A1 (en) Systems, apparatuses, and methods for extracting a writemask from a register

Legal Events

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