TWI517032B - 用以執行兩向量暫存器之對應填充資料元件間絕對差計算之系統、裝置及方法 - Google Patents

用以執行兩向量暫存器之對應填充資料元件間絕對差計算之系統、裝置及方法 Download PDF

Info

Publication number
TWI517032B
TWI517032B TW101145986A TW101145986A TWI517032B TW I517032 B TWI517032 B TW I517032B TW 101145986 A TW101145986 A TW 101145986A TW 101145986 A TW101145986 A TW 101145986A TW I517032 B TWI517032 B TW I517032B
Authority
TW
Taiwan
Prior art keywords
absolute difference
instruction
field
vector
data element
Prior art date
Application number
TW101145986A
Other languages
English (en)
Other versions
TW201339961A (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 TW201339961A publication Critical patent/TW201339961A/zh
Application granted granted Critical
Publication of TWI517032B publication Critical patent/TWI517032B/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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Description

用以執行兩向量暫存器之對應填充資料元件間絕對差計算之系統、裝置及方法
本發明之領域一般係關於電腦處理器架構,且更特別地是關於當被執行時便產生一特定結果的指令。
指令集、或指令集架構(ISA)係關於可程式化之計算機架構的一部分,且可包括原始資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷和例外處理、及外部輸入和輸出(I/O)。指令之詞在本文中通常係指巨集指令,這是提供給處理器(或指令轉換器,其轉譯(例如,使用靜態二進制轉換、包括動態編譯的動態二進制轉換)、變體、模擬、或以其他方式將指令轉換成一或多個待由處理器處理的其他指令)用於執行的指令,相對於微指令或微運算(micro-ops),這是處理器之解碼器解碼巨集指令之結果。
ISA係不同於微架構,其係為實作指令集之處理器的內部設計。具有不同微架構的處理器能共享一共同指令集。例如,Intel® Pentium 4處理器、Intel® CoreTM處理器、及來自美國加州Sunnyvale的進階微裝置的處理器,其實作出幾乎相同形式的x86指令集(具有已添加較新形式的一些擴充),但具有不同的內部設計。例如,ISA的相同暫存器架構可使用熟知技術,包括專用實體暫存器、使用暫存器更名機制的一或多個動態配置實體暫存器(例 如,使用暫存器頻疊表(RAT)、重排序緩衝器(ROB)、及引退(retirement)暫存器檔案、使用多個映射和暫存器池)等在不同微架構下以不同方式來實作。除非另作說明,否則本文所使用的相位暫存器架構、暫存器檔案、及暫存器係指軟體/編程器與指令指定暫存器之方式可見的暫存器。這裡需要明確性時,將使用邏輯、架構、或可見軟體之形容詞來表示暫存器架構中的暫存器/檔案,而將對已知微架構中的指定暫存器(例如,實體暫存器、重排序緩衝器、引退暫存器、暫存器池)使用不同的形容詞。
指令集包括一或多個指令格式。已知指令格式定義各種欄位(位元數、位元位置)以除此之外指定待進行之運算(運算碼)和待進行運算之運算元。儘管定義指令模板(或子格式),但仍有一些指令格式進一步地失效。例如,已知指令格式的指令模板可定義為具有指令格式之欄位(所包括之欄位通常依照相同順序,但至少一些具有不同的位元位置,因為包括較少欄位)的不同子集及/或定義為具有不同解釋的已知欄位。因此,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年6月之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位元之子集作為寫入遮罩。一般來說,當使用單一、每個元件遮罩控制位元時,用於遮罩之向量寫入遮罩暫存器中的位元數(主動位元)係等於位元的向量大小除以位元的向量之資料元件大小。
下面係為一般稱為向量填充絕對差(「VPABSDIFF」)指令之指令的實施例以及可用來執行有益於包括在背景中所描述之一些不同區域之上述指令的系統、架構、指令格式等的實施例。執行VPABSDIFF導致將第一來源運算元之每個填充資料元件位置與第二來源運算元之對應填充資料元件位置間的絕對差存入目的暫存器之對應填充資料元件位置中。絕對差係為一種估計兩向量間的距離之基本方法。這指令提供了更容易程式化以及計算此距離估計的效能增加。
第1圖繪示VPABSDIFF的示範操作之示範圖。在所述之實例中,兩來源各具有四個填充資料元件。這些來源可以是向量暫存器或記憶體位置。一般來說,若其中一個來源是記憶體位置,則另一個來源是暫存器。目的係為具有與來源相同數量之填充資料元件的向量暫存器。
如在本實例中所示,對每個填充資料元件位置進行絕 對差(亦即,|a-b|)。在第一來源(SRC1[0])的填充資料元件位置0中儲存「10」之數值。在第二來源(SRC2[0])的填充資料元件位置0中儲存數值「2」。這兩數字間的絕對差是8。此項計算係由可以是專用電路的絕對差計算邏輯進行。由此而論,在目的的對應填充資料元件位置中儲存8(DST[0]=8)。
在第一來源(SRC1[1])的填充資料元件位置1中儲存「3」之數值。在第二來源(SRC2[1])的填充資料元件位置1中儲存「4」之數值。這兩數字間的絕對差是1。此項計算係由如專用電路的絕對差計算邏輯進行,其可以是對第一填充資料元件作出計算的相同邏輯或可以是分開的邏輯。由此而論,在目的的對應填充資料元件中儲存1(DST[1]=1)。
儘管本實例僅顯示四個填充資料元件(如較大來源的64位元資料線),但可與此指令一起使用任何數量的填充資料元件。
示範格式
此指令的示範格式係為「VPABSDIFF ZMM1,ZMM2,ZMM3/M512」,其中的運算元ZMM1係為目的向量暫存器而ZMM2和ZMM3為來源向量暫存器(例如128、256、512位元暫存器等)且VPABSDIFF是指令的運算碼。第二來源運算元(ZMM3/M512)指出此運算元可以是暫存器或記憶體位置。記憶體位置大小會與目的暫存器大小相同。資 料元件之大小可定義在指令之「前置」中。在一些實施例中,運算碼包括關於填充資料元件大小的資訊。例如,VPABSDIFF{B/W/D/Q}中的B表示位元組填充資料元件,W表示字組填充資料元件,D表示雙字組填充資料元件,而Q表示四字組填充資料元件。
第2圖繪示VPABSDIFFW的示範向量合適編碼。
執行之示範方法
第3圖繪示在處理器中使用VPABSDIFF指令的實施例。在301中,提取具有一個目的向量暫存器運算元和兩個來源運算元的VPABSDIFF指令。
在303中,解碼邏輯解碼VPABSDIFF指令。依據指令的格式,可在此階段解釋各種資料,例如是否有資料轉換,要寫入並取得哪個暫存器、要存取什麼記憶體位址、等等。
在305中,取得/讀取來源運算元值。例如,讀取來源暫存器。若來源運算元之其一者或兩者是記憶體運算元,則取得與此運算元關聯的資料元件。在一些實施例中,來自記憶體的資料元件係在執行階段之前存入暫態記憶體中。
在307中,VPABSDIFF指令(或如微運算之包含上述指令的運算)被如一或多個功能單元的執行資源執行以計算第一和第二來源之每個資料元件位置對間的絕對差。換言之,針對第一來源的每個資料元件位置,會從中減去第 二來源的對應資料元件位置,並接著求得此項減法的絕對值。
在309中,將每個絕對值儲存在對應於使用在計算中的來源資料元件位置之目的暫存器的資料元件位置中。雖然分開說明307和309,但在一些實施例中,它們會一起進行作為執行指令的一部分。
第4圖繪示用來處理VPABSDIFF指令的方法之實施例。在本實施例中假設先前已進行一些(若並非所有)操作301-305,然而,其不被顯示以免混淆於下所顯示的細節。例如,不顯示提取和解碼,也不顯示運算元取得。
在一些實施例中,在401中,目的向量暫存器的所有位元係全部設成0。這樣的動作能有助於確保「舊」資料不會留在目的向量暫存器中。
在403中,計算來源之最低位資料元件位置對間的絕對差。在405中,將此絕對差存入目的向量暫存器之最低位資料元件位置(對應於來源對的資料元件位置)中。
在407中,來源之次低位資料元件對具有一絕對差計算。例如,計算|SRC1[1]-SRC2[1]|。在409中,將此絕對差存入目的向量暫存器之次低位資料元件位置(對應於407之來源對之資料元件位置)中(亦即,DST[1])。
在411中,判斷具有一絕對差計算的最後資料元件位置對是否是最後一對的來源(換言之,是否已估計來源之所有資料元件對)。若是,則完成方法。若否,則在407中估計次低位資料元件對,等等。
當然可執行以上述之變化。例如,方法可開始於最高位資料元件對並以相同方法往回運作。
第5圖繪示用來對具有512位元暫存器的字組填充資料元件執行VPABSDIFF的示範虛擬碼。能作出顯而易見的變化(亦即,依據填充資料元件大小和改變迴圈尾來改變步驟大小)以符合來源的特定條件。
示範指令格示
本文所述的指令之實施例可以不同格式來具體化。另外,以下詳述示範系統、架構、及管線。指令之實施例可在這類系統、架構、及管線上執行,但不以那些詳述細節為限。
通用向量合適指令格式
向量合適指令格式是一種適用於向量指令的指令格式(例如,有一些向量運算專用的欄位)。儘管所述之實施例中係透過向量合適指令格式來支援向量和純量運算,但其他實施例只使用向量合適指令格式來執行向量運算。
第7A-7B圖係繪示根據本發明之實施例之通用向量合適指令格式及其指令模板的方塊圖。第7A圖係繪示根據本發明之實施例之通用向量合適指令格式及其類別A指令模板的方塊圖;而第7B圖係繪示根據本發明之實施例之通用向量合適指令格式及其類別B指令模板的方塊圖。具體來說,用於通用向量合適指令格式700的模板係 定義為類別A與類別B指令模板,這兩個都包括無記憶體存取705指令模板及記憶體存取720指令模板。向量合適指令格式之內容中的通用之詞係指不受制於任何具體指令集的指令格式。
儘管將敘述本發明之實施例的向量合適指令格式支援下列:具有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位元組的向量運算元)。
第7A圖中的類別A指令模板包括:1)在無記憶體存取705指令模板內顯示一無記憶體存取、全捨入控制類型操作710指令模板及一無記憶體存取、資料轉換類型操作715指令模板;及2)在記憶體存取720指令模板內顯示一記憶體存取、暫時725指令模板及一記憶體存取、非暫時 730指令模板。第7B圖中的類別B指令模板包括:1)在無記憶體存取705指令模板中顯示一無記憶體存取、寫入遮罩控制、部份捨入控制類型操作712指令模板及一無記憶體存取、寫入遮罩控制、vsize類型操作717指令模板;及2)在記憶體存取720指令模板中顯示一記憶體存取、寫入遮罩控制727指令模板。
通用向量合適指令格式700包括如下在第7A-7B圖中所示之依照順序列於下方的欄位。
格式欄位740-在此欄位中的一特定值(指令格式識別符值)能唯一識別向量合適指令格式,如此能在指令流中出現為向量合適指令格式的指令。由此而論,此欄位就某種意義而言係可選的,其對於僅具有通用向量合適指令格式的指令是非必要的。
基本操作欄位742-其內容區別不同的基本操作。
暫存器索引欄位744-其內容會直接地或透過位址產生來指定來源和目的運算元的位置係在暫存器中或在記憶體中。這些包括夠多位元數以從PxQ(例如,32x512、16x128、32x1024、64x1024)暫存器檔案中選擇N個暫存器。儘管在一實施例中,N可能高達三個來源與一個目的暫存器,但其他實施例可支援更多或更少的來源與目的暫存器(例如,可支援高達兩個來源,這些來源的其中一個也充當目的、可支援高達三個來源,這些來源的其中一個也充當目的、可支援高達兩個來源與一個目的)。
修改欄位746-其內容區別出現指定記憶體存取之為 通用向量指令格式的指令與出現未指定記憶體存取之指令;意即,在無記憶體存取705指令模板與記憶體存取720指令模板之間。記憶體存取操作讀取及/或寫入記憶體階層(在一些例子中係使用暫存器中的值來指定來源及/或目的位址),而無記憶體存取操作並非如此(例如,來源及目的都是暫存器)。儘管在一實施例中,此欄位也從三個不同的方式之間選擇來執行記憶體位址計算,但其他實施例可支援更多、更少、或不同的方式來執行記憶體位址計算。
擴充操作欄位750-其內容區別除了基本操作之外,可執行各種不同操作中的哪一個。此欄位是特定內容。在本發明之一實施例中,此欄位分成一類別欄位768、一α欄位752、及一β欄位754。擴充操作欄位750使一般操作群組能在單一指令中執行,而不是2、3或4個指令。
縮放(scale)欄位760-其內容考慮到縮放索引欄位的內容來產生記憶體位址(例如,使用2scale*索引+基底來產生位址)。
位移(displacement)欄位762A-其內容係用來產生部份的記憶體位址(例如,使用2scale*索引+基底+位移來產生位址)。
位移因數欄位762B(請注意將位移欄位762A直接並列於位移因數欄位762B上就表示使用一或另一個)-其內容係用來產生部份的位址;指定待由記憶體存取(N)的大小所縮放的位移因數,這裡的N是記憶體存取中的位元 組數量(例如,使用2scale*索引+基底+已縮放之位移來產生位址)。忽略多餘的低序位元,因此位移因數欄位的內容乘以記憶體運算元總大小(N)便產生用來計算有效位址的最終位移。處理器硬體在運轉期間會基於全運算碼欄位774(本文所述)及資料處理欄位754C來決定N值。位移欄位762A與位移因數欄位762B就某種意義而言係可選的,其不用於無記憶體存取705指令模板,及/或不同的實施例可只實作其中一個或兩者皆無。
資料元件寬度欄位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,其內容區別出哪一種不同的擴充操作類型會被執行(例如,對無記憶體存取、捨入類型操作710與無記憶體存取、資料轉換類型操作715 指令模板分別指定捨入752A.1與資料轉換752A.2),而β欄位754區別指定類型的哪種操作會被執行。在無記憶體存取705指令模板中,不會出現縮放欄位760、位移欄位762A,及位移縮放欄位762B。
無記憶體存取指令模板-全捨入控制類型操作
在無記憶體存取全捨入控制類型操作710指令模板中,β欄位754係被解釋為捨入控制欄位754A,其內容提供靜態捨入。儘管在本發明所述之實施例中,捨入控制欄位754A包括一抑制所有浮點數例外(SAE)欄位756與一捨入操作控制欄位758,但替代實施例可支援可將這兩個概念編碼成相同的欄位或僅有其中一個或另一個這些概念/欄位(例如,可僅有捨入操作控制欄位758)。
SAE欄位756-其內容區別是否使例外事件報告失效;當SAE欄位756的內容指示啟動抑制時,已知指令不會報告任何種類的浮點數例外旗標且不啟動任何浮點數例外的處理器。
捨入操作控制欄位758-其內容區別捨入操作群組中的哪一個操作會被執行(例如,無條件進入、無條件捨去、化整為零和四捨五入)。因此,捨入操作控制欄位758考量到改變每指令基礎上的捨入模式。在本發明之一實施例中的處理器包括用來規定捨入模式的控制暫存器,捨入操作控制欄位750的內容會蓋過此暫存器值。
無記憶體存取指令模板-資料轉換類型操作
在無記憶體存取資料轉換類型操作715指令模板中,β欄位754被解釋為資料轉換欄位754B,其內容區別哪一種資料轉換會被執行(例如,無資料轉換、攪和、廣播)。
在類別A的記憶體存取720指令模板例子中,α欄位752被解釋為逐出暗示欄位752B,其內容區別哪一個逐出暗示會被使用(在第7A圖中,對記憶體存取、暫時725指令模板與記憶體存取、非暫時730指令模板分別規定暫時752B.1與非暫時752B.2),而β欄位754被解釋為資料處理欄位754C,其內容區別哪一個資料處理操作(也稱作基元)會被執行(例如,無處理、廣播、來源之上轉換、及目的之下轉換)。記憶體存取720指令模板包括縮放欄位760,及選擇性地包括位移欄位762A或位移縮放欄位762B。
向量記憶體指令利用轉換支援來進行從記憶體載入向量及將向量存入記憶體。如同正常的向量指令,向量記憶體指令以逐資料元件的方式從/至記憶體傳輸資料,而且實際上傳輸的元素會被選為寫入遮罩的向量遮罩內容所指示。
記憶體存取指令模板-暫時
暫時資料很可能是快到能從快取中再被使用的資料。然而,這只是一個建議,且不同的處理器可以不同方式來 實作,包括完全地忽略這個建議。
記憶體存取指令模板-非暫時
非暫時資料不太可能是快到能從第1級快取中再被使用的資料且應該優先逐出。然而,這只是一個建議,且不同的處理器可以不同方式來實作,包括完全地忽略這個建議。
類別B的指令模板
在類別B的指令模板例子中,α欄位752被解釋為一寫入遮罩控制(Z)欄位752C,其內容區別由寫入遮罩欄位770控制的寫入遮罩是否應該被合併或歸零。
在類別B的無記憶體存取705指令模板例子中,部份的β欄位754被解釋為一RL欄位757A,其內容區別哪一種擴充操作類型會被執行(例如,對無記憶體存取、寫入遮罩控制、部份捨入控制類型操作712指令模板與無記憶體存取、寫入遮罩控制、VSIZE類型操作717指令模板分別指定捨入757A.1與向量長度(VSIZE)757A.2),而其餘的β欄位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,顯示一包括格式欄位740、基本操作欄位742、及資料元件寬度欄位764的全運算碼欄位774。儘管顯示之一實施例中的全運算碼欄位774包括所有這些欄位,但在不支援所有欄位的實施例中,全運算碼欄位774包括比所有這些欄位還少的欄位。 全運算碼欄位774提供操作碼(運算碼)。
擴充操作欄位750、資料元件寬度欄位764、及寫入遮罩欄位770允許在通用向量合適指令格式的每個指令上能指定這些特徵。
結合寫入欄位與資料元件寬度欄位便產生類型化指令,其使遮罩能基於不同的資料元件寬度來應用。
在類別A與類別B中發現的各種指令模板會在不同情況下有幫助。在本發明之一實施例中,處理器內的不同處理器或不同核心可僅支援類別A、僅支援類別B、或支援這兩種類別。例如,適用於通用計算的高效能通用亂序核心可僅支援類別B,主要適用於圖形及/或科學(通量)計算的核心可僅支援類別A,而適用於這種類別的核心可支援這兩種類別(當然,具有來自兩種類別之一些混合的模板和指令而並非來自兩種類別之所有模板和指令係在本發明之範圍內)。而且,一單一處理器可包括多個核心,所有核心支援相同類別或其中不同核心支援不同類別。例如,在一具有單獨圖形和通用核心的處理器中,適用於圖形及/或科學計算的其中一個圖形核心可僅支援類別A,而一或多個通用處理核心可以是具有亂序執行和適用於通用計算的暫存器更名之高效能核心,其僅支援類別B。不具有一單獨圖形核心的另一處理器可包括一或多個通用有序或亂序核心,其支援類別A與類別B兩者。當然,來自一類別的特徵亦可以本發明之不同實施例中的另一類別來實作。用高階語言所編寫的程式將被編譯(例如,及時 編譯或靜態地編譯)成各種不同的可執行形式,包括:1)一僅具有由用於執行的目標處理器所支援之類別的指令的形式;或2)一具有使用所有類別之不同組合指令來編寫並具有選擇常式以基於由目現正在執行代碼的處理器所支援的指令來執行的其他常式。
示範專用向量合適指令格式
第8A圖係繪示根據本發明之實施例之示範專用向量合適指令格式的方塊圖。第8圖顯示專用向量合適指令格式800,就某種意義而言其係為特定的,其規定位置、大小、解釋、及欄位順序,以及一些欄位的值。可使用專用向量合適指令格式800來擴充x86指令集,因此有些欄位會類似或等同於在現存之x86指令集及其擴充(例如,AVX)中使用的欄位。這個格式依然符合具有擴充之現存的x86指令集之前置編碼欄位、實際運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位、及立即欄位。說明了第7圖之欄位映射到的第8圖之欄位。
應了解雖然本發明之實施例為了說明而在通用向量合適指令格式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)、及757BEX位元組1,位元[5]-B)所組成。EVEX.R、EVEX.X、及EVEX.B位元欄位提供與對應之VEX位元欄位相同的功能性,且使用1補數形式來編碼,意即,將ZMMO編碼成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’),其用來編碼最高16或最低16的擴充32暫存器組。在本發明之 一實施例中,此位元與如下面指出的其他位元係儲存成位元反轉的格式,以區別出(在熟知的x86 32位元模式中)BOUND指令,其實際運算碼位元組是62,但在MOD R/M欄位中(下面所述)不接受在MOD欄位中的11值;本發明之其他實施例不會以反轉格式儲存此位元與下面指出的其他位元。1值係用來編碼最低的16個暫存器。換言之,R’Rrrr係藉由結合EVEX.R’、EVEX.R、及其他欄位的其他RRR來形成。
運算碼映射欄位815(EVEX位元組1,位元[3:0]-mmmm)-其內容編碼一隱含的引導運算碼位元組(OF、OF 38、或OF 3)。
資料元件寬度欄位764(EVEX位元組2,位元[7]-W)-係以符號EVEX.W來表示。EVEX.W係用來定義資料型態的粒度(大小)(不是32位元的資料元件就是64位元的資料元件)。
EVEX.vvvv 820(EVEX位元組2,位元[6:3]-vvv)-EVEX.vvvv的作用可包括下列:1)EVEX.vvvv以反轉(1補數)形式來編碼所指定的第一來源暫存器運算元,且對具有2或多個來源運算元的指令皆有效;2)EVEX.vvvv對某個向量偏移以1補數形式來編碼所指定的目的暫存器運算元;或3)EVEX.vvvv不編碼任何運算元,此欄位被保留且應包含1111b。因此,EVEX.vvvv欄位820將所儲存之第一來源暫存器指示符之4個低序位元編碼成反轉(1補碼)形式。基於指令,使用額外不同的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前置的優點(EVEX前置僅需要2位元,而不需要一位元組來表示SIMD前置)。在一實施例中,為了支援使用為傳統格式與EVEX前置格式的SIMD前置(66H、F2H、F3H)之傳統SSE指令,這些傳統SIMD前置會被編碼入SIMD前置編碼欄位中;且在提供到解碼器的PLA之前,在運轉時間時展開到傳統SIMD前置(因此PLA可執行這些傳統指令之傳統與EVEX格式而不需修改)。雖然較新的指令可直接使用EVEX前置編碼欄位的內容作為運算碼擴充,但某些實施例為了一致性會以類似方式來擴充,可是要考量到這些傳統SIMD前置所規定的不同意思。另一實施例可重設計PLA來支援2位元SIMD前置編碼,因而不需要擴充。
α欄位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.LLO、EVEX.LLB;也以β β β來說明)-如先前所述,此欄位是特定的內容。
REX’欄位810-這是REX’欄位之餘數且是EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’),其可用來編碼最高16或最低16的擴充32暫存器組。此位元係儲存成位元反轉的格式。使用1值來編碼最低的16個暫存器。換言之,V’VVVV係藉由結合EVEX.V’、EVEX.vvvv來形成。
寫入遮罩欄位770(EVEX位元組3,位元[2:0]-kkk)-其內容指定在寫入遮罩暫存器中的暫存器之索引,如先前所述。在本發明之一實施例中,特定值EVEX.kkk=000具有意謂著沒有對特定指令使用寫入遮罩的特殊行為(可以各種方式來實作,包括使用固線式連至所有1的寫入遮罩或繞過遮罩硬體的硬體)。
實際運算碼欄位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位元位移(位移32)且以位元組大小來運作。
位移因數欄位762B(位元組7)-當MOD欄位842內含01時,位元組7是位移因數欄位762B。此欄位的位置係與傳統x86指令集8位元位移(位移8)的位置相同,其以位元組大小來運作。由於位移8是有號擴充,因此會只在-128與127位元組偏移量之間定址;就64位元組快取線而言,位移8使用8位元,其只會設成四個實際有用的值-128、-64、0、及64;由於通常需要較大的範圍,故使用位移32;然而,位移32需要4位元組。相對於位移8與位移32,位移因數欄位762B重新詮釋了位移8;當使用位移因數欄位762B時,實際位移會由乘以記憶體運算元存取的大小(N)之位移因數欄位之內容所決定。這類型的位移係稱作位移8*N。這減少了平均指令長度(用來位移但具有大上許多範圍的單一位元組)。這樣的壓縮位移係基於假設有效的位移是記憶體存取大小的倍數,因此,不需要編碼位址偏移量之多餘的低序位元。換言之,位移因數欄位762B取代了傳統x86指令集8位元位移。因 此,會以與x86指令集8位元位移的相同方式來編碼(故不改變ModRM/SIB編碼規則)位移因數欄位762B,只有將位移8超載至位移8*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(捨入752A.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的方塊圖。在所述之實施例中,有32個512位元寬的向量暫存器910;這些暫存器被稱為zmm0至zmm31。最低16zmm暫存器的低序256位元係覆蓋在暫存器ymm0-16上。最低16zmm暫存器的低序128位元(ymm暫存器的低序128位元)係覆蓋在暫存器xmm0-15上。專用向量合適指令格式800在如下表中所示的這些覆蓋暫存器檔案上操作。
換言之,向量長度欄位759B在最大長度與一或多個其他較短長度之間作選擇,這裡的每個上述較短長度係為前面長度之長度的一半;且不包括向量長度欄位759B的指令模板會在最大向量長度上操作。再者,在一實施例中,專用向量合適指令格式800的類別B指令模板係在填充或純量單/雙精度浮點數資料和填充或純量整數資料上操作。純量操作係執行在zmm/ymm/xmm暫存器中的最低序資料元件位置上的操作;高序資料元件位置依據實施例而處於在指令或歸零之前的位置。
寫入遮罩暫存器915-在所述之實施例中,有8個寫入遮罩暫存器(k0至k7),每個大小為64位元。在另一實施例中,寫入遮罩暫存器915的大小為16位元。如之前所述,在本發明之一實施例中,向量遮罩暫存器k0不能作為寫入遮罩;當編碼通常指示出k0係用於寫入遮罩時,便選擇0xFFFF的固線式寫入遮罩,有效地禁能對此指令的寫入遮罩。
通用暫存器925-在所述之實施例中,有16個64位元的通用暫存器,其與現存之x86定址模式一起使用以定址記憶體運算元。這些暫存器所引用的名稱為RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15。
純量浮點堆疊暫存器檔案(x87堆疊)945,於其上堆疊MMX填充整數浮點數暫存器檔案950-在所述之實施例中,x87堆疊係為8元素堆疊,用來使用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。解碼單元140(或解碼器)可解碼指令,並產生一或多個微操作、微碼進入點、微指令、其他指令、或其他控制信號作為輸出,其根據原始指令來解碼、或以其他方式反射、或得到。解碼單元1040可使用各種不同機制來實作。適當的機制之實例包括,但不受限於查找表、硬體實作、可程式邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一實施例中,核心1090包括微碼ROM或儲存用於某些巨集微指令(例如,在解碼單元1040中或在前端單元1030內)之微碼的其他媒體。解碼單元1040耦接在執行引擎單元1050中的更名/分配單元1052。
執行引擎單元1050包括耦接引退單元1054及一組一或多個排程單元1056的更名/分配單元1052。排程單元1056表示一些不同排程器,包括保留站、中央指令窗等。排程單元1056耦接實體暫存器檔案單元1058。實體暫存器檔案單元1058之各者表示一或多個實體暫存器檔案,每個儲存一或多個不同的資料類型,例如純量整數、純量浮點數、填充整數、填充浮點數、向量整數、向量浮點數、狀態(例如,待執行之下個指令之位址的指令指標)等。在一實施例中,實體暫存器檔案單元1058包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。引退單元1054重疊實體暫存器檔案單元1058以顯示各種可實作暫存器更名和亂序執行的方式(例如,使用重排序緩衝器和引退暫存器檔案;使用未來檔案、歷史緩衝器、及引退暫存器檔案;使用暫存器映射及暫存器池等)。引退單元1054和實體暫存器檔案單元1058係耦接執行叢集1060。執行叢集1060包括一組一或多個執行單元1062和一組一或多個記憶體存取單元1064。執行單元1062可執行各種操作(例如,移位、加法、減法、乘法)及對各種類型的資料(例如,純量浮點數、填充整數、填充浮點數、向量整數、向量浮點數)執行。儘管一些實施例可包括一些專用於特定功能或功能組的執行單元,但其他實施例可只包括一個執行單元或全部執行所有功能的多個執行單元。顯示排程單元1056、實 體暫存器檔案單元1058、及執行叢集1060可能是複數個,因為某些實施例產生分開的管線用於某些類型的資料/操作(例如,純量整數管線、純量浮點數/填充整數/填充浮點數/向量整數/向量浮點數管線、及/或記憶體存取管線,其各者均具有自己的排程單元、實體暫存器檔案單元、及/或執行叢集,且在分開的記憶體存取管線之例子中,某些實施例實作出只有管線之執行叢集具有記憶體存取單元1064)。亦應了解這裡使用分開的管線,這些管線之一或更多者可以是亂序發出/執行且其餘是有序的。
這組記憶體存取單元1064係耦接記憶體單元1070,其包括耦接第2級(L2)快取單元1076的資料快取單元1074之資料TLB單元1072。在一示範實施例中,記憶體存取單元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圖之實線框繪示具有單核心 1202A、系統代理器1210、一組一或多個匯流排控制器單元1216的處理器1200,而非必要添加的虛線框繪示具有多個核心1202A-N、在系統代理器單元1210中的一組一或多個整合記憶體控制器單元1214、及專用邏輯1208的另一處理器1200。
因此,處理器1200之不同實作可包括:1)具有為整合圖形及/或科學(生產量)邏輯(其可包括一或多個核心)之專用邏輯1208的CPU、及為一或多個通用核心(例如,通用有序核心、通用亂序核心、這兩者之組合)的核心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)、最後一級快取(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可包括一或多個耦接控制器集線器1320的處理器1310、1315。在一實施例中,控制器集線器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)、如快速通道互連(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來交換資訊。如第4圖所示,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快捷匯流排或另一第三代I/O互連匯流排的匯流排,雖然本發明之範圍並不以此為限。
如第14圖所示,各種I/O裝置1414可與匯流排橋接器1418一起耦接第一匯流排1416、其中匯流排橋接器1418耦接第一匯流排1416和第二匯流排1420。在一實施 例中,一或多個如共同處理器、高產量MIC處理器、GPGPU的、加速器(例如,圖形加速器或數位信號處理(DSP)單元)、現場可程式閘陣列、或任何其他處理器的額外處理器1415係耦接第一匯流排1416。在一實施例中,第二匯流排1420可以是低針腳數(LPC)匯流排。在一實施例中,各種裝置可耦接第二匯流排1420,包括例如鍵盤及/或滑鼠1422、通訊裝置1427及如磁碟機或其他可包括指令/代碼和資料1430的大容量儲存裝置之儲存單元1428。再者,音頻I/O 1424可耦接第二匯流排1420。請注意其他架構係可能的。例如,系統可實作多點下傳匯流排或其他上述架構而不是第14圖之點對點架構。
現在回到第15圖,所顯示的係依照本發明之實施例之第二更具體示範系統1500的方塊圖。第14和15圖中的相似元件具有相同參考數字,且第14圖之某些態樣已從第15圖省略以避免模糊第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係耦接:包括一組一或多個核心202A-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)、靜態隨機存取記憶體(SRAM)的隨機存取記憶體(RAM)、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電子可抹除可程式化唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁或光學卡、或可適用於儲存電子指令的任何其他類型之媒體的儲存媒體。
因此,本發明之實施例也包括非暫態、有形的機器可讀媒體,其內含指令或包含設計資料,如硬體描述語言(HDL),其定義本文描述的結構、電路、設備、處理器及/或系統特徵。上述實施例也可指程式產品。
模擬(包括二進制轉換、代碼變體等)
在一些情況下,可使用指令轉換器來將來源指令集的指令轉換成目標指令集。例如,指令轉換器可轉譯(例如,使用靜態二進制轉換、包括動態編譯的動態二進制轉換)、變體、模擬、或以其他方式將指令轉換成一或多個待由核心處理的其他指令。指令轉換器可以軟體、硬體、韌體、或以上之組合來實作。指令轉換器可在處理器上、在處理器之外、或部分在處理器上且部分在處理器外。
第17圖係根據本發明之實施例之對照於使用軟體指令轉換器來將來源指令集中的二進制指令轉換成目標指令集中的二進制指令之方塊圖。在所述之實施例中,指令轉換器係為軟體指令轉換器,儘管指令轉換器可替代地以軟體、韌體、硬體、或以上之各種組合來實作。第17圖顯示高階語言1702的程式可使用x86編譯器1704來編譯以產生x86二進制碼1706,其本身可由具有至少一x86指令集核心的處理器1716來執行。具有至少一x86指令集核心的處理器1716表示能執行實質上與具有至少一x86指令集核心的Intel處理器有相同功能的處理器,其藉由協調地執行或以其他方式處理(1)Intel x86指令集核心的實質部份之指令集或(2)目標碼型式的應用程式或其他在具有至少一x86指令集核心的Intel處理器上執行的軟體,以達到大致上與具有至少一x86指令集核心的Intel處理器有相同的結果。x86編譯器1704表示可操作來產生x86二進制碼1706(例如,目標碼)的編譯器,其會連同或無須額外的連鎖處理地在具有至少一x86指令集核心的 處理器1716上執行。同樣地,第17圖顯示高階語言1702的程式可使用其他指令集編譯器1708來編譯以產生原本就可被不具有至少一x86指令集核心的處理器1714(例如,具有執行美國加州Sunnyvale的MIPS科技之MIPS指令集及/或執行美國加州Sunnyvale的ARM科技之ARM指令集之核心的處理器)執行的其他指令集二進制碼1710。指令轉換器1712係用來將x86二進制碼1706轉成本身可被不具有x86指令集核心的處理器1714執行的代碼。由於能轉換上述的指令轉換器難以製造,因此已轉換的代碼不太可能與其他指令集二進位碼1710相同;然而,已轉換的代碼將完成一般操作且由其他指令集的指令組成。因此,指令轉換器1712代表軟體、韌體、硬體、或以上之組合,透過模仿、模擬或任何其他程序,允許處理器或其他不具有x86指令集處理器或核心的電子裝置能執行x86二進制碼1706。
700‧‧‧通用向量合適指令格式
705‧‧‧無記憶體存取
720‧‧‧記憶體存取
740‧‧‧格式欄位
742‧‧‧基本操作欄位
744‧‧‧暫存器索引欄位
746‧‧‧修改欄位
750‧‧‧擴充操作欄位
768‧‧‧類別欄位
752‧‧‧α欄位
754‧‧‧β欄位
760‧‧‧縮放欄位
762A‧‧‧位移欄位
762B‧‧‧位移因數欄位
774‧‧‧全運算碼欄位
754C‧‧‧資料處理欄位
764‧‧‧資料元件寬度欄位
770‧‧‧寫入遮罩欄位
772‧‧‧立即欄位
768‧‧‧類別欄位
768A‧‧‧類別A
768B‧‧‧類別B
752A‧‧‧RS欄位
752A.1‧‧‧捨入
752A.2‧‧‧資料轉換
754A‧‧‧捨入控制欄位
756‧‧‧SAE欄位
758‧‧‧捨入操作控制欄位
754B‧‧‧資料轉換欄位
752B‧‧‧逐出暗示欄位
752B.1‧‧‧暫時
752B.2‧‧‧非暫時
757A‧‧‧RL欄位
752C‧‧‧寫入遮罩控制欄位
757A.1‧‧‧捨入
757A.2‧‧‧向量長度
759A‧‧‧捨入操作控制欄位
759B‧‧‧向量長度欄位
757B‧‧‧廣播欄位
810‧‧‧REX’欄位
800‧‧‧專用向量合適指令格式
802‧‧‧EVEX前置
805‧‧‧REX欄位
815‧‧‧運算碼映射欄位
820‧‧‧EVEX.vvvv欄位
868‧‧‧類別欄位
825‧‧‧前置編碼欄位
830‧‧‧實數運算碼欄位
840‧‧‧MOD R/M欄位
842‧‧‧MOD欄位
844‧‧‧Reg欄位
846‧‧‧R/M欄位
854‧‧‧xxx欄位
856‧‧‧bbb欄位
900‧‧‧暫存器架構
910‧‧‧向量暫存器
915‧‧‧寫入遮罩暫存器
925‧‧‧通用暫存器
950‧‧‧整數浮點數暫存器檔案
945‧‧‧純量浮點堆疊暫存器檔案
1000‧‧‧管線
1002‧‧‧提取級
1004‧‧‧長度解碼級
1006‧‧‧解碼級
1008‧‧‧分配級
1010‧‧‧更名級
1012‧‧‧排程級
1014‧‧‧暫存器讀取/記憶體讀取級
1016‧‧‧執行級
1018‧‧‧寫回/記憶體寫入級
1022‧‧‧例外處理級
1024‧‧‧提交級
1030‧‧‧前端單元
1032‧‧‧分支預測單元
1034‧‧‧指令快取單元
1036‧‧‧指令轉譯後備緩衝器
1038‧‧‧指令提取單元
1040‧‧‧解碼單元
1050‧‧‧執行引擎單元
1052‧‧‧更名/分配單元
1054‧‧‧引退單元
1056‧‧‧排程單元
1058‧‧‧實體暫存器檔案單元
1060‧‧‧執行叢集
1062‧‧‧執行單元
1064‧‧‧記憶體存取單元
1070‧‧‧記憶體單元
1072‧‧‧資料TLB單元
1074‧‧‧資料快取單元
1076‧‧‧第2級(L2)快取單元
1090‧‧‧核心
1100‧‧‧指令解碼器
1102‧‧‧互連網路
1104‧‧‧L2快取
1106‧‧‧L1快取
1108‧‧‧純量單元
1110‧‧‧向量單元
1112‧‧‧純量暫存器
1114‧‧‧向量暫存器
1106A‧‧‧L1資料快取
1128‧‧‧16寬ALU
1120‧‧‧攪和單元
1124‧‧‧複製單元
1126‧‧‧寫入遮罩暫存器
1122A‧‧‧數字轉換單元
1122B‧‧‧數字轉換單元
1200‧‧‧處理器
1202A-N‧‧‧核心
1204A-N‧‧‧快取單元
1206‧‧‧共享快取單元
1208‧‧‧專用邏輯
1210‧‧‧系統代理器
1212‧‧‧環形基礎的互連單元
1214‧‧‧整合記憶體控制器單元
1216‧‧‧匯流排控制器單元
1300‧‧‧系統
1310‧‧‧處理器
1315‧‧‧處理器
1320‧‧‧控制器集線器
1340‧‧‧記憶體
1345‧‧‧共同處理器
1350‧‧‧輸入/輸出集線器
1360‧‧‧輸入/輸出裝置
1390‧‧‧圖形記憶體控制器集線器
1395‧‧‧連線
1400‧‧‧系統
1450‧‧‧點對點互連
1470‧‧‧第一處理器
1480‧‧‧第二處理器
1438‧‧‧共同處理器
1472‧‧‧整合記憶體控制器單元
1482‧‧‧整合記憶體控制器單元
1476‧‧‧P-P介面
1478‧‧‧P-P介面
1486‧‧‧P-P介面
1488‧‧‧P-P介面
1494‧‧‧對點介面電路
1498‧‧‧對點介面電路
1432‧‧‧記憶體
1434‧‧‧記憶體
1452‧‧‧P-P介面
1454‧‧‧P-P介面
1490‧‧‧晶片組
1439‧‧‧高效能介面
1496‧‧‧介面
1416‧‧‧第一匯流排
1414‧‧‧I/O裝置
1418‧‧‧匯流排橋接器
1420‧‧‧第二匯流排
1422‧‧‧鍵盤/滑鼠
1424‧‧‧音頻I/O
1427‧‧‧通訊裝置
1428‧‧‧儲存單元
1430‧‧‧代碼和資料
1500‧‧‧系統
1472‧‧‧I/O控制邏輯
1482‧‧‧I/O控制邏輯
1514‧‧‧I/O裝置
1515‧‧‧傳統I/O裝置
1600‧‧‧單晶片系統
1602‧‧‧互連單元
1610‧‧‧應用處理器
1620‧‧‧共同處理器
1630‧‧‧靜態隨機存取記憶體單元
1632‧‧‧直接記憶體存取單元
1640‧‧‧顯示單元
1702‧‧‧高階語言
1704‧‧‧x86編譯器
1706‧‧‧x86二進制碼
1708‧‧‧其他指令集編譯器
1710‧‧‧其他指令集二進制碼
1712‧‧‧指令轉換器
1714‧‧‧不具有x86指令集核心的處理器
1716‧‧‧具有至少一x86指令集核心的處理器
本發明僅經由在附圖中的舉例,而非限定來說明,在附圖中的相同參考數字係指類似元件,而其中:第1圖繪示VPABSDIFF的示範操作之示範圖。
第2圖繪示VPABSDIFFW的示範編碼。
第3圖繪示在處理器中使用VPABSDIFF的實施例。
第4圖繪示用來處理一VPABSDIFF指令的方法之實施例。
第5圖繪示用來對具有512位元暫存器的字組填充資料元件執行VPABSDIFF的示範虛擬碼。
第6圖繪示根據本發明之一實施例之在一主動位元向量寫入遮罩元件數和向量大小及資料元件大小之間的相關性。
第7A-7B圖係繪示根據本發明之實施例之通用向量合適指令格式及其指令模板的方塊圖。
第8A圖係繪示根據本發明之實施例之示範專用向量合適指令格式的方塊圖。
第8B圖係繪示根據本發明之一實施例之組成全運算碼欄位774的專用向量合適指令格式800之欄位的方塊圖。
第8C圖係繪示根據本發明之一實施例之組成暫存器索引欄位744的專用向量合適指令格式800之欄位的方塊圖。
第8D圖係繪示根據本發明之一實施例之組成擴充操作欄位750的專用向量合適指令格式800之欄位的方塊圖。
第9圖係根據本發明之一實施例之暫存器架構的方塊圖。
第10A圖係繪示根據本發明之實施例之示範有序管線和示範暫存器更名、亂序發出/執行管線兩者的方塊圖。
第10B圖係繪示根據本發明之實施例之將包括在處理 器中的有序架構核心之示範實施例和示範暫存器更名、亂序發出/執行架構核心兩者的方塊圖;第11A-B圖繪示更具體的示範有序核心架構的方塊圖,其核心會是晶片中的多個邏輯方塊(包括相同類型及/或不同類型的其他核心)之其一者。
第12圖係根據本發明之實施例之可具有一個以上之核心、可具有整合記憶體控制器、且可具有整合圖形的處理器之方塊圖。
第13圖係依照本發明之一實施例之系統的方塊圖。
第14圖係依照本發明之實施例之第一更具體示範系統的方塊圖。
第15圖係依照本發明之實施例之第二更具體示範系統的方塊圖。
第16圖係依照本發明之實施例之SoC的方塊圖。
第17圖係根據本發明之實施例之對照使用一軟體指令轉換器來將來源指令集中的二進制指令轉換成目標指令集中的二進制指令之方塊圖。

Claims (18)

  1. 一種用以因應一單一指令而在一電腦處理器中執行絕對差計算的方法,該單一向量填充絕對差指令包括一第一和第二來源向量暫存器運算元、一目的向量暫存器運算元、及一運算碼,該方法包含以下之步驟;對該第一和第二來源向量暫存器之每個填充資料元件位置對執行該指令以判定該對之該些資料元件間的絕對差;將每個絕對差儲存在該目的暫存器的一對應填充資料元件位置中。
  2. 如申請專利範圍第1項所述之方法,其中該運算碼表示該些填充資料元件的大小。
  3. 如申請專利範圍第1項所述之方法,其中該些填充資料元件的大小係為位元組、字組、雙字組、或四字組之其一者。
  4. 如申請專利範圍第1項所述之方法,更包含:在儲存任何絕對差之前將該目的暫存器的所有該些填充資料元件全部設成0。
  5. 如申請專利範圍第1項所述之方法,其中該執行和儲存步驟更包含:計算該第一和第二來源之最低位填充資料元件位置對間的絕對差;將所計算之絕對差儲存入該目的暫存器之最低位資料元件位置中; 計算該第一和第二來源之次低位填充資料元件位置對間的絕對差;及將該第一和第二來源之次低位填充資料元件位置對間所計算之絕對差儲存入對應於該對之位置的該目的暫存器之一填充資料元件位置中。
  6. 如申請專利範圍第5項所述之方法,更包含:判定所有該些填充資料元件位置對是否已具有其所計算並儲存的絕對差;若並非所有該些填充資料元件位置對都已具有其所計算並儲存的絕對差,則計算該第一和第二來源之次低位填充資料元件位置對間的絕對差,及將該第一和第二來源之次低位填充資料元件位置對間所計算之絕對差儲存入對應於該對之位置的該目的暫存器之一填充資料元件位置中。
  7. 一種製造之物件,包含:一有形機器可讀儲存媒體,具有儲存於其上的一指令發生,其中該指令的格式指定作為一第一和第二向量暫存器的來源運算元並指定作為一單一向量暫存器的目的,且其中該指令格式包括一運算碼,其對該單一指令的單一發生有反應而下令一機器以致使判定該些來源之填充資料元件位置對間的絕對差計算並將該些絕對差計算儲存入該目的暫存器之對應填充資料元件位置中。
  8. 如申請專利範圍第7項所述之製造的物件,其中該 運算碼表示該些填充資料元件的大小。
  9. 如申請專利範圍第7項所述之製造的物件,其中該些填充資料元件的大小係為位元組、字組、雙字組、或四字組之其一者。
  10. 如申請專利範圍第7項所述之製造的物件,更包含:在儲存任何絕對差之前將該目的暫存器的所有該些填充資料元件全部設成0。
  11. 如申請專利範圍第7項所述之製造的物件,其中該執行和儲存步驟更包含:計算該第一和第二來源之最低位填充資料元件位置對間的絕對差;將所計算之絕對差儲存入該目的暫存器之最低位資料元件位置中;計算該第一和第二來源之次低位填充資料元件位置對間的絕對差;及將該第一和第二來源之次低位填充資料元件位置對間所計算之絕對差儲存入對應於該對之位置的該目的暫存器的一填充資料元件位置中。
  12. 如申請專利範圍第11項所述之製造的物件,更包含:判定所有該些填充資料元件位置對是否已具有其所計算並儲存的絕對差;若並非所有該些填充資料元件位置對都已具有其所計 算並儲存的絕對差,則計算該第一和第二來源之次低位填充資料元件位置對間的絕對差,及將該第一和第二來源之次低位填充資料元件位置對間所計算之絕對差儲存入對應於該對之位置的該目的暫存器之一填充資料元件位置中。
  13. 一種裝置,包含:一硬體解碼器,用來解碼包括一第一和第二來源向量暫存器運算元、一目的向量暫存器運算元、及一運算碼的一指令;執行邏輯電路,用來對該第一和第二來源向量暫存器之每個填充資料元件位置對判定該對之該些資料元件間的絕對差,並將每個絕對差儲存在該目的暫存器的一對應填充資料元件位置中。
  14. 如申請專利範圍第13項所述之裝置,其中該運算碼表示該填充資料元件的大小。
  15. 如申請專利範圍第13項所述之裝置,其中該填充資料元件的大小係為位元組、字組、雙字組、或四字組之其一者。
  16. 如申請專利範圍第13項所述之裝置,其中該執行邏輯電路更用來:在儲存任何絕對差之前將該目的暫存器的所有該些填充資料元件全部設成0。
  17. 如申請專利範圍第13項所述之裝置,其中該執行 邏輯電路更用來:計算該第一和第二來源之最低位填充資料元件位置對間的絕對差;將所計算之絕對差儲存入該目的暫存器之最低位資料元件位置中;計算該第一和第二來源之次低位填充資料元件位置對間的絕對差;及將該第一和第二來源之次低位填充資料元件位置對間所計算之絕對差儲存入對應於該對之位置的該目的暫存器的一填充資料元件位置中。
  18. 如申請專利範圍第17項所述之裝置,其中該執行邏輯電路更用來:判定所有該些填充資料元件位置對是否已具有其所計算並儲存的絕對差;若並非所有該些填充資料元件位置對都已具有其所計算並儲存的絕對差,則計算該第一和第二來源之次低位填充資料元件位置對間的絕對差,及將該第一和第二來源之次低位填充資料元件位置對間所計算之絕對差儲存入對應於該對之位置的該目的暫存器的一填充資料元件位置中。
TW101145986A 2011-12-22 2012-12-06 用以執行兩向量暫存器之對應填充資料元件間絕對差計算之系統、裝置及方法 TWI517032B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/067067 WO2013095597A1 (en) 2011-12-22 2011-12-22 Systems, apparatuses, and methods for performing an absolute difference calculation between corresponding packed data elements of two vector registers

Publications (2)

Publication Number Publication Date
TW201339961A TW201339961A (zh) 2013-10-01
TWI517032B true TWI517032B (zh) 2016-01-11

Family

ID=48669238

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101145986A TWI517032B (zh) 2011-12-22 2012-12-06 用以執行兩向量暫存器之對應填充資料元件間絕對差計算之系統、裝置及方法

Country Status (4)

Country Link
US (1) US20140082333A1 (zh)
CN (1) CN104126169B (zh)
TW (1) TWI517032B (zh)
WO (1) WO2013095597A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9875213B2 (en) * 2015-06-26 2018-01-23 Intel Corporation Methods, apparatus, instructions and logic to provide vector packed histogram functionality
US10838720B2 (en) * 2016-09-23 2020-11-17 Intel Corporation Methods and processors having instructions to determine middle, lowest, or highest values of corresponding elements of three vectors
US20220308881A1 (en) * 2021-03-26 2022-09-29 Intel Corporation Instruction and logic for sum of absolute differences

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5493687A (en) * 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
WO1996017291A1 (en) * 1994-12-02 1996-06-06 Intel Corporation Microprocessor with packing operation of composite operands
KR100267089B1 (ko) * 1996-08-19 2000-11-01 윤종용 스칼라/벡터연산이조합된단일명령복수데이터처리
US20030079210A1 (en) * 2001-10-19 2003-04-24 Peter Markstein Integrated register allocator in a compiler
US7305540B1 (en) * 2001-12-31 2007-12-04 Apple Inc. Method and apparatus for data processing
US8145887B2 (en) * 2007-06-15 2012-03-27 International Business Machines Corporation Enhanced load lookahead prefetch in single threaded mode for a simultaneous multithreaded microprocessor
JP2009015637A (ja) * 2007-07-05 2009-01-22 Renesas Technology Corp 演算ユニット及び画像フィルタリング装置

Also Published As

Publication number Publication date
CN104126169A (zh) 2014-10-29
US20140082333A1 (en) 2014-03-20
WO2013095597A1 (en) 2013-06-27
TW201339961A (zh) 2013-10-01
CN104126169B (zh) 2018-11-09

Similar Documents

Publication Publication Date Title
TWI756251B (zh) 執行複數的熔合乘-加指令的系統與方法
TWI476682B (zh) 用以偵測向量暫存器內相等元素之裝置及方法
TWI502499B (zh) 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法
TWI525533B (zh) 用以執行遮罩位元壓縮之系統、設備、及方法
JP6466388B2 (ja) 方法及び装置
TWI489384B (zh) 執行置換運算的處理器與方法及具有該處理器的電腦系統
TWI525538B (zh) 超級乘加(super madd)指令技術
TWI498815B (zh) 用以響應於單一指令而執行橫向部分和之系統、裝置及方法
TWI564795B (zh) 四維摩頓座標轉換處理器、方法、系統及指令
TWI493449B (zh) 用於使用遮罩以執行向量緊縮一元解碼的系統、裝置及方法
CN107145335B (zh) 用于大整数运算的向量指令的装置和方法
TWI622879B (zh) 考慮用於執行之載入資料元件中的空間區域性之裝置和方法
TWI486872B (zh) 向量緊縮壓縮及重複之實施系統、設備和方法
TW201346744A (zh) 遮蔽排列指令的裝置及方法
JP2018506094A (ja) 多倍長整数(big integer)の算術演算を実行するための方法および装置
TWI603261B (zh) 用以執行離心操作的指令及邏輯
CN111831335A (zh) 经改进的插入指令的装置和方法
KR20170097015A (ko) 마스크를 마스크 값들의 벡터로 확장하기 위한 방법 및 장치
TWI517032B (zh) 用以執行兩向量暫存器之對應填充資料元件間絕對差計算之系統、裝置及方法
TWI628595B (zh) 用以執行反離心操作之處理設備和非暫態機器可讀取媒體
TW201732571A (zh) 用於獲得偶數和奇數資料元素的系統、裝置及方法
TW201732574A (zh) 用於改善向量通量的系統、方法及設備

Legal Events

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