TW201342219A - 用以轉譯向量指令的系統、設備與方法 - Google Patents
用以轉譯向量指令的系統、設備與方法 Download PDFInfo
- Publication number
- TW201342219A TW201342219A TW101142217A TW101142217A TW201342219A TW 201342219 A TW201342219 A TW 201342219A TW 101142217 A TW101142217 A TW 101142217A TW 101142217 A TW101142217 A TW 101142217A TW 201342219 A TW201342219 A TW 201342219A
- Authority
- TW
- Taiwan
- Prior art keywords
- vector
- instructions
- translation
- processor
- code
- Prior art date
Links
- 239000013598 vector Substances 0.000 title claims abstract description 204
- 238000000034 method Methods 0.000 title claims description 23
- 238000013519 translation Methods 0.000 claims abstract description 80
- 230000015654 memory Effects 0.000 claims description 49
- 238000006243 chemical reaction Methods 0.000 claims description 5
- 238000004891 communication Methods 0.000 claims description 5
- 230000000763 evoking effect Effects 0.000 claims 3
- 238000007792 addition Methods 0.000 description 35
- 238000012545 processing Methods 0.000 description 34
- 238000010586 diagram Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 239000000463 material Substances 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 239000000872 buffer Substances 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000009434 installation Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000011343 solid material Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- -1 for example Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000000696 magnetic material Substances 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
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 Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
向量轉譯指令用以將要轉譯的碼區的開始及結束分界。碼區包含界定於源處理器的指令集中的第一組向量指令。處理器接收向量轉譯指令及分界碼區,以及將碼區轉譯成轉譯碼。轉譯碼包含界定於目標處理器的指令集中的第二組向量指令。轉譯碼由目標處理器執行以產生結果值,結果值與執行碼區的源處理器產生的原始結果值相同。目標處理器將結果值儲存在不是向量暫存器的位置,該位置與源處理器用以儲存原始結果值的原始位置相同。
Description
本發明的實施例大致上關於電腦處理器架構,更具體而言,關於當被執行時造成特定結果的指令。
很多處理器具有單一指令多資料(SIMD)架構。SIMD架構通常有助於顯著地增進處理速度。在SIMD架構中,取代僅在一資料元件或是成對資料元件上操作的純量指令,向量指令(也稱為緊縮資料指令或SIMD指令)可以同時或是平行地在多資料元件或是多對資料元件上操作。處理器具有平行執行硬體,以回應向量指令而同時地或平行地執行多操作。
在SIMD架構中,多資料元件緊縮於一暫存器或記憶體位置內作為緊縮資料或向量資料。在向量資料中,暫存器或其它儲存位置的位元可以邏輯地分割成多個固定尺寸資料元件的序列。各資料元件代表與典型上具有相同尺寸的其它資料元件一起儲存在暫存器或是儲存位置中的各別件資料。舉例而言,256位元寬的暫存器具有四個64位元寬的向量元件、八個32位元寬的向量元件、十六個16位元寬的向量元件、或是三十二個8位元寬的向量元件。各向量元件代表彼此分開地或獨立地操作之分別的個別件資料(例如像素顏色、等等)。
代表地,向量加法指令指明對來自二個源向量運算元
的所有對應的資料對,執行單一向量操作(例如相加),以產生目的或結果向量。源向量運算元可以具有相同尺寸、可以含有相同寬度的資料元件、並因而均含有相同數目的資料元件。在二源向量運算元中相同的位元位置中的源資料元件代表對應的資料元件。向量運算元可以與這些對應的源資料元件的對中的各對分別地或獨立地執行,以產生匹配數目的結果資料元件,因此,各對對應的源資料元件具有對應的結果資料元件。典型上,用於此指令的結果資料元件是相同次序且它們通常具有相同的尺寸。
不同的處理器系列支援不同組的向量指令。不同組的向量指令具有不同的向量寬度、不同的格式、以及當被執行時執行不同的操作。結果,撰寫用於一處理器的向量碼的程式人員必須人工地重寫用於另一處理器的碼。重寫碼是耗時且容易錯誤的。
在下述說明中,揭示眾多具體細節。但是,應瞭瞭,即使沒有這些具體細節,仍可實施本發明的實施例。在其它情形中,未詳細顯示習知的電路、結構及技術以免模糊對於本說明的瞭解。
圖1是處理器100的舉例說明的實施例之方塊圖。處理器100可為各式各樣的複合指令集計算(CISC)處理器、各式各樣的精簡指令集計算(RISC)處理器、各式各樣的很長指令字(VLIW)處理器、其各種混合、或是所有其它
型式的處理器等等的任何處理器。在一或更多實施例中,處理器100可為一般用途處理器(例如,由位於加州的聖克拉拉(Santa Clara)之英特爾公司製造的一般用途的微處理器),但是,這並不是必要的。替代地,指令處理設備可以是特定用途的處理器。適當的特定目的處理器之實例包含但是不限於網路處理器、通訊處理器、密碼處理器、圖形處理器、副處理器、嵌入式處理器、數位訊號處理器(DSP)、及控制器(例如,微控制器),所述僅是一些實例。
處理器100具有指令集架構(ISA)101。指令集架構101代表與程式化有關的處理器100的架構的一部份。指令集架構101通常包含原指令、架構暫存器、資料型式、定址模式、記憶體架構、中斷及意外處理、以及處理器100的外部輸入及輸出(I/O)。指令集架構101與微架構有所區別,微架構一般代表被選擇來實施指令集架構之特定的處理器設計技術。具有不同的微架構之處理器可以共用共同的指令集架構。舉例而言,由位於加州的聖克拉拉(Santa Clara)之英特爾公司製造的某些微處理器、以及由位於加州太陽谷(Sunnyvale)的超微(Advanced Micro Device)公司製造的某些微處理器使用實質上不同的內部微架構以實施類似的x86指令集部份。
指令集架構101包含架構暫存器(例如,架構暫存器檔案)106。架構暫存器106包含一般用途的暫存器、以及向量暫存器、純量浮點暫存器、寫入遮罩暫存器、及其它
暫存器。各向量暫存器可操作以儲存向量、向量資料、或是SIMD資料(例如,資料元件陣列)。架構暫存器106代表機板上處理器儲存位置。架構暫存器106於此也僅意指暫存器。除非另外指明或是清楚呈現,否則,此處所使用的架構暫存器、暫存器檔案、及暫存器等文句係意指軟體及/或程式撰寫人員(例如,軟體可見的)可看見的暫存器,及/或由巨集指令指明以辨識運算元的暫存器。這些暫存器與給定的微架構中的其它非架構暫存器形成對比(例如,暫時暫存器、重排序緩衝器、收回暫存器、等等)。
所示的指令集架構101也包含由處理器100支援的指令集102。指令集102包含多個不同型式的指令。指令集102的這些指令代表與微指令或微作業(例如,導因於將巨集指令解碼的處理器100的解碼器129)相反的巨集指令(例如,提供給用於執行的處理器100之指令)。
指令集102也包含一或更多被遮罩的向量指令103。被遮罩的向量指令103類似於先前技術一節中述及的向量指令但有些值得注意的差異點。類似於上述的向量指令,各個被遮罩的向量指令103可操作以促使或造成處理器100對指令所標示的一或更多向量運算元的資料元件執行向量運算。但是,各個被遮罩的向量指令103使用一或更多個遮罩以遮罩、預測、或是有條件地控制向量處理。遮罩儲存在寫入遮罩暫存器(架構暫存器106的一部份)中以及代表遮罩運算元、預測運算元、或是條件運算控制運算元。
遮罩可操作而以每資料元件粒度來遮罩或有條件地控制向量處理。舉例而言,遮罩可以操作以遮罩被遮罩的向量指令103的向量操作的結果、對來自單一源向量運算元的個別資料元件或是來自二源向量運算元的個別成對的對應的資料元件對執行之結果是否要被儲存在向量結果中。被遮罩的向量指令103允許各資料元件或是成對的對應資料元件的向量處理可以是資料元件分別地及獨立地被預測及有條件地控制。被遮罩的向量指令103、作業及遮罩可以提供例如增加的碼密度及/或更高的指令通量等優點。
再參考圖1,指令集102也包含一或更多向量指令集104,例如VTRANSLATE_BEGIN 105A及VTRANSLATE_END 105B。VTRANSLATE_BEGIN 105A及VTRANSLATE_END 105B可操作以促使或造成處理器100將源指令集的向量指令轉譯成目標指令集的向量指令。在一實施例中,目標指令集由處理器100執行。在替代實施例中,目標指令集由不同於處理器100的另一處理器執行。在某些實施例中,VTRANSLATE_BEGIN 105A及VTRANSLATE_END 105B具有與被遮罩的向量指令103相同的格式;但是,VTRANSLATE_BEGIN 105A及VTRANSLATE_END 105B作為分界,且留下被遮罩的向量指令103中的某些欄位(例如源運算元、目的地、寫入遮罩、等等)未被使用(例如,被清除)。
處理器100也包含執行邏輯109。執行邏輯109可操作以執行或處理指令集102的指令。執行邏輯109包含執
行單元、功能單元、算術邏輯單元、邏輯單元、算術單元、等等。處理器100也包含解碼器129以將巨集指令解碼成由執行邏輯109執行的微指令或是微作業。
考慮將向量指令從一向量寬度轉譯成另一向量寬度之實例,有助於進一步說明向量轉譯指令104的實施例。圖2A是方塊圖,顯示512位元的向量加法運算203。執行向量加法運算203以回應例如圖1的被遮罩的向量指令103中之一等向量指令或作為其結果。在本實例中,向量加法運算203是將第一512位元向量運算元201的各元件加至第二512位元向量運算元202的各對應元件。第一及第二運算元201和202的各元件是64位元的四倍字。結果向量也是512位元向量,含有8個四倍字。
如同所示,512位元向量加法指令(執行512位元向量加法運算203)被轉譯成二個256位元向量加法指令(均執行256位元向量加法運算206)。當有被轉譯的向量指令正於其上執行的目標處理器具有256位元寬的向量暫存器而非512位元寬的向量暫存器時,這是有用的。各256位元向量加法運算206均對第一及第二運算元201和202中的不同半部的元件作運算。當相結合時,這些運算206的結果向量具有與對應的資料元件位置中的運算203的結果向量相同的資料元件值。
注意,轉譯也可以反向地執行。舉例而言,二個256位元向量加法令被轉譯成一個512位元向量加法指令,以允許對具有512位元寬的向量暫存器之目標處理器有效率
地執行向量運算。
在圖2A的實例中,當向量加法指令與清除遮罩(亦即,所有遮罩被清除,等於未遮罩或是無遮罩)一起使用時,執行轉譯。當向量加法指令與設定遮罩(亦即,設定至少一遮罩位元)一起使用時,也執行轉譯。
在圖2B的實例中,512位元向量加法指令使用遮罩205「01110100」以執行512位元向量加法運算207。舉例而言,遮罩205可以指定於512位元向量加法指令的寫入遮罩欄中。各遮罩位元相當於對應的資料元件位置中的第一及第二運算元201和202的資料元件。各遮罩位元允許指定二個不同的可能性(例如,執行運算相對於不執行運算、儲存運算結果相對於不儲存運算結果、等等)。在本實例中,遮罩205含有8位元。各遮罩位元與運算元201的8個資料元件中之一以及運算元202的8個資料元件中之一具有有序的對應性。512位元向量加法指令(以及遮罩205)可轉譯成二個256位元向量加法指令,各指令均以對應的一半遮罩位元,執行256位元向量加法指令208。
根據所示的實例,向量加法運算207是被遮罩的向量運算,可以操作而根據遮罩205的對應位元提供之條件運算控制或是預測,有條件地儲存來自第一及第二運算元201和202之多個成對的對應資料元件的總合於結果向量中。向量加法運算207指明對各成對的對應資料元件以垂直方式、與其它對分開地或獨立地、有條件地執行單一運
算(在此情形中為加法)。結果向量具有與源運算元相同的大小且與源運算元具有相同數目的資料元件。遮罩205的八位元中的各位元被設定(亦即,具有二進位的值1)或是被清除(亦即,具有二進位的值0)。根據顯示的方式,當遮罩位元被設定時(例如1),則執行第一及第二運算元的對應的資料元件的相加,以及,總合(以加底線表示)儲存在結果向量的對應資料元件中。
相反地,當給定的遮罩位元被清除時(亦即,0),則不允許相加的結果儲存在結果向量的對應資料元件中,或者,不對第一及第二運算元的對應資料元件執行加法。然而,另一值可以儲存在結果向量的對應資料元件中。舉例而言,如同所示,來自第二運算元202的對應資料元件的值可以儲存在結果向量的對應資料元件中。這稱為合併遮罩。替代地,零值可以儲存在結果向量的對應資料元件中。這稱為零遮罩。與所示方式相反的方式也是可能的,其中,位元被清除(亦即,0)以允許結果被儲存、或是被設定(亦即,1)而不允許結果被儲存。
在某些實施例中,遮罩包含多個遮罩元件(也稱為預測元件、條件控制元件、或旗標),而各遮罩元件具有一個以上的位元。假使希望在二個以上的不同選項之間選取時,則各遮罩元件具有二或更多位元是有用的。
關於指令轉譯的另一實例,圖2B之512位元向量加法指令可以轉譯成由未支援遮罩使用(例如遮罩205)之目標處理器執行之純量加法指令序列。相反地,來自一處理
器的指令集的純量加法指令轉譯成由支援被遮罩的向量指令之另一處理器執行之被遮罩的向量加法指令。
關於指令轉譯的又另一實例,處理器支援包含向量乘法及加法指令作為單一指令的指令集。向量乘法及加法指令當由處理器執行時,將第一向量運算元乘以第二向量運算元,以及,將結果加至第三向量運算元。在另一指令集中,向量乘法及加法運算需要由二個分別的指令執行:向量乘法指令及向量加法指令。此處所述的向量轉譯指令104(圖1)將一指令集的向量乘法及加法指令轉譯成另一指令集的向量乘法運算及向量加法運算,反之亦然。
圖3A-3C顯示使用圖1中所示的向量轉譯指令104之實例。在圖3A及3B的二替代實施例中,使用包含VTRANSLATE_BEGIN 105A及VTRANSLATE_END 105B之向量轉譯指令104分別作為要被轉譯的碼區之前及之後的分界。碼區含有指令序列。某些或所有要被轉譯的指令在一或更多函數之內。要被轉譯的指令包含由源處理器支援但未由目標處理器(被轉譯的指令要於其上執行)支援的純量指令及/或向量指令。此外,要被轉譯的指令包含一或更多新的向量指令,這些向量指令不被源極處理器及目標處理器之下的實體硬體(例如,解碼器)支援。
舉例而言,要被轉譯的碼區包含新的向量指令,例如不被源極處理器及目標處理器支援的VGATHER。如同碼區被轉譯之後的圖3C中所示般,VGATHER指令被轉譯成由目標處理器執行之載入指令序列。加入新指令的能力
提供程式撰寫人員有力的工具,而硬體設計者不必重新設計硬體來支援這些新指令。
在某些實施例中,VTRANSLATE_BEGIN 105A及VTRANSLATE_END 105B由程式撰寫人員使用(或是原始碼產生器)以將含有被升級的向量指令或是從一處理器世代升級至下一處理器世代的向量指令之碼區分界。這些處理器世代共用共同的基本指令集。但是,各處理器世代支援更先進的、或是其它不同的向量指令集。藉由將這些向量指令集在不同的指令集之間轉譯,程式撰寫人員僅需要撰寫向量指令集一次。
為了允許轉譯正確地及有效率地執行,在一實施例中,程式撰寫人員(或是原始碼產生器)需要確定下述條件:
1.分界碼(亦即,要被轉譯的碼)未含有自行修改及交互修改的碼。亦即,分界碼將不會由相同程式中的任何其它碼修改。
2.分界碼未含有任何包含同步基元之跨線程通訊。
3.轉譯碼的功能要求(亦即,轉譯的結果)是在VTRANSLATE_END 105B指令中產生相同的記憶體輸出。舉例而言,假使分界碼在VTRANSLATE_END 105B指令中在記憶體位址X產生值V時,則轉譯碼也在記憶體位址X產生值V。
4.在轉譯碼執行期間,允許轉譯碼將暫時值推至
程式堆疊上,以及,將暫時值從程式堆疊取出。亦即,未由程式(有轉譯碼駐於其中)使用的所有記憶體位址是可讀取的及可寫入的。
5.由分界碼區之內的碼讀取之任何向量暫存器V在V被讀取之前必須被寫至(初始化)分界碼區中。在執行VTRANSLATE_END之後,寫於分界碼區之內的任何暫存器W具有未經界定的值。亦即,從記憶體(或是純量暫存器檔案)讀取對分界碼的所有輸入以及在記憶體(或是純量暫存器檔案)中產生所有輸出。這允許轉譯碼利用向量暫存器來儲存暫時值。
圖4是具有執行單元440的指令處理設備415的舉例說明的實施例之方塊圖,執行單元440可以操作以執行包含圖1的向量轉譯指令104的舉例說明的實施例之指令。在某些實施例中,指令處理設備415可為處理器及/或包含在處理器中(例如,圖1的處理器100,或是類似的處理器)。替代地,指令處理設備415可包含在不同的處理器、或是電子系統中。
指令處理設備415接收包含由圖1的向量轉譯指令104分界之多個指令的碼區。這些多個指令稱為分界指令或是分界碼區。可以從記憶體、指令佇列、指令提取單元、或其它來源,接收分界指令。分界指令包含一或更多向量指令;其中某些或全部是圖1中所示的被遮罩向量指令103。分界指令由轉譯邏輯418處理,在編譯時間、安裝時間、載入時間、或運行時間時,轉譯邏輯418被喚
起。轉譯邏輯418由下述任何之一喚起:編譯器、安裝器、載入器及運行時間解譯器(舉例而言,例如JAVA虛擬機等處理虛擬機)。當被喚起時,轉譯邏輯418分析分界指令及呼叫轉譯庫420以執行轉譯。轉譯庫420儲存在耦合至轉譯邏輯418的記憶體413中。轉譯庫420可為二進位碼庫。轉譯庫420可由編譯器、安裝器、載入器及運行時間解譯器共用。
在一實施例中,在編譯時間時由轉譯庫420呼叫、在安裝時間時由安裝器呼叫、在載入時間時由載入器呼叫、及/或在運行時間時由解譯器或程式(含有分界指令)本身喚起。舉例而言,編譯器將高階程式語言寫成的程式編譯成二進位碼的中間形式。假使中間二進位碼含有分界指令,則在編譯時間時,編譯器藉由使用轉譯庫420,進一步將分界指令編譯成轉譯指令。轉譯指令由轉譯指令在其上被執行的目標處理器的指令集支援。關於另一實例,安裝器將二進位碼的應用程式安裝於應用程式要於其上運行的目標處理器上。假使安裝的應用程式含有分界指令,則在安裝時間期間,安裝器呼叫轉譯庫420以將它們轉譯成轉譯指令。類似地,載入器將二進位碼載入碼要於其上運行的目標處理器的記憶體中。假使被載入的碼含有分界指令,則在載入時間期間,載入器呼叫轉譯庫420以將它們轉譯成轉譯指令。在運行時間時,運行時間解譯器將二進位碼解譯以由目標處理器執行。假使解譯的碼含有分界指令時,則在運行時間,解譯器呼叫解譯庫420以將它們轉譯
成解譯指令。
所示之指令處理設備415的實施例包含解碼器430,解碼器430可為圖1的解碼器129或類似的解碼器。解碼器430接收更高階的機器指令或巨集指令形式的轉譯指令,以及,將它們解碼以產生較低階的微作業、微碼進入點、微指令、或是反應及/或衍生自原始更高階指令的其它較低階的指令或控制訊號。較低階的指令或控制訊號經由較低階的(例如,電路等級或硬體等級)作業而實施較高階的指令作業。使用各種不同的機制以實施解碼器430。適當的機制實例包含但不限於微碼隨機存取記憶體(ROM)、查詢表、硬體實施、可編程邏輯陣列(PLA)、用以實施此技藝中習知的解碼器之其它機制、等等。
指令處理設備415也包含與解碼器430耦合的執行單元440。執行單元440從解碼器430接收一或更多微作業、微碼進入點、微指令、其它指令、或是反應或導自或由圖1的向量轉譯指令140分界的指令之其它控制訊號。
當執行單元440執行轉譯碼時,其從記憶體450及/或純量暫存器檔案460接收輸入。純量暫存器檔案460可為圖1的架構暫存器106的一部份。來自執行轉譯碼的執行單元440的輸出儲存在記憶體450及/或純量暫存器檔案460。在執行期間,執行單元440使用部份記憶體450、向量暫存器檔案470、及/或純量暫存器檔案460(只要純量暫存器檔案460中的原始值被保留)以推入及取出暫時值。在圖4中,與暫時值相關連的虛線表示以記憶體
450、向量暫存器檔案470、及/或純量暫存器檔案460用於暫時值是選加的而非必要的。如同此處所使用般,輸入及輸出等詞與「暫時值」不同。暫時值是在轉譯碼執行期間儲存於堆疊中或自堆疊中取得的中間結果。輸入意指從轉譯碼開始時的位置讀出的值(亦即,在VTRANSLATE_BEGIN 105A),以及,輸出意指從轉譯碼結束時的位置讀出的值(亦即,在VTRANSLATE_END 105B)。如上所述,作為用於將碼區分界的條件之一,向量暫存器檔案460無法被用以儲存輸入及輸出,但可被用以儲存暫時值。
為了避免模糊說明,顯示及說明相當簡單的指令處理設備415。須瞭解,其它實施例可以具有一個以上的執行單元。舉例而言,設備包含多個不同型式的執行單元,舉例而言,例如算術單元、算術邏輯單元(ALU)、整數單元、浮點單元、等等。這些單元中至少一負責如此處所揭示的向量轉譯指令的實施例。指令處理設備的又其它實施例具有多核心、邏輯處理器、或執行引擎。可操作以執行一或更多向量轉譯指令的執行單元包含在至少一、至少二、大部份、或全部核心、邏輯處理器、或執行引擎。
指令處理設備415或處理器也選加地包含一或更多其它習知的組件。舉例而言,其它實施例包含一或更多指令提取邏輯、排程邏輯、分支預測邏輯、指令及資料快取記憶體、指令及資料轉譯旁看緩衝器、預提取緩衝器、微指令佇列、微指令定序器、匯流排介面單元、第二或更高階
快取記憶體、指令排程邏輯、退出邏輯、暫存器重命令邏輯、等等、以及其各種組合。須瞭解,在處理器中有文字上很多不同的此類組件的組合及配置,以及,本發明的範圍不限於任何習知的此組合或配置。
圖5是製造物品的方塊圖(例如,電腦程式產品),包含實體的、非暫時的機器可讀取的(例如,機器可存取的)儲存媒體500,儲存例如圖1中所示的VTRANSLATE_BEGIN 105A及VTRANSLATE_END 105B等向量轉譯指令510。儲存媒體500也儲存向量指令520,向量指令520包含一或更多圖1中所示的被遮罩的向量指令103。須瞭解,用以執行此處所述的一或更多作業或方法之其它指令或指令序列(例如,編譯器、安裝器、載入器、運行時間解譯器、轉譯庫、等等)也儲存於儲存媒體500上。
在各式各樣的實施例中,實體的非暫時的機器可讀取的儲存媒體500包含軟碟、光學儲存媒體、光碟、CD-ROM、磁碟、磁光碟、唯讀記憶體(ROM)、可編程ROM(PROM)、可抹拭及可編程ROM(EPROM)、電可抹拭及可編程ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相位改變記憶體、或是其組合。實體媒體包含一或更多實體或固體材料,舉例而言,例如半導體材料、相位改變材料、磁性材料、光碟的光學透明固體材料、等等。
適當的機器實例包含但不限於指令處理裝置、指令執
行裝置、處理器、及具有一或更多指令處理裝置、指令執行裝置、或處理器之各式各樣的電子裝置。這些電子裝置的少數代表實例包含但不限於電腦系統、桌上型電腦、膝上型電腦、筆記型電腦、伺服器、網路裝置、路由器、開關、小筆電、桌上型易網機、行動網路裝置(MID)、蜂巢式電話、及媒體播放器。這些電子裝置典型上包含與一或更多其它組件耦合的一或更多處理器,舉例而言,例如一或更多實體的非暫時的機器可讀取的儲存媒體。處理器及其它組件的耦合典型上是經由一或更多匯流排及橋接器(也稱為匯流排控制器)。因此,電子裝置的儲存裝置或儲存媒體儲存用於在該電子裝置的一或更多處理器上執行的指令及/或指令序列。
圖6是處理向量轉譯指令(例如圖1的向量轉譯指令104)的舉例說明的實施例之方法600的舉例說明的實施例之流程圖。在各種實施例中,方法600由一般用途處理器、特定用途處理器(例如,圖形處理器或數位訊號處理器)、或另一型式的數位邏輯裝置或指令處理設備。在某些實施例中,方法600可由圖1的處理器100、或是圖4的指令處理設備415、或是類似的處理器或指令處理設備執行。替代地,方法600可由處理器或指令處理設備的不同實施例執行。此外,圖1的處理器100、及圖4的指令處理設備415可以執行同於、類似於或不同於圖6的方法600之操作和方法的實施例。
方法600包含接收碼區及例如圖1中所示的
VTRANSLATE_BEGIN 105A及VTRANSLATE_END 105B等成對的向量轉譯指令的處理器(方塊610)。處理器為源處理器或是目標處理器。向量轉譯指令將碼區的開始及結束分界。碼區包含界定於源處理器的指令集中的第一組向量指令。處理器將碼區轉譯成轉譯碼(方塊620)。轉譯碼包含界定於目標處理器的指令集中的第二組向量指令。轉譯碼由目標處理器執行以產生結果值(方塊630),結果值與執行碼區的源處理器產生的原始結果值相同。目標處理器將結果值儲存在不是向量暫存器的位置(方塊640),所述位置與源處理器用以儲存原始結果值的原始位置相同。位置是記憶體位址或純量暫存器。
本發明的實施例提供轉譯向量碼之簡單、輕巧的方式。低或無負擔地轉譯向量碼。在編譯時間時、安裝時間時、載入時間時、或運行時間時,執行轉譯。本發明的實施例也允許程式撰寫人員僅撰寫一次用於一指令集架構的向量碼件,以及,使向量碼由具有多個不同指令集架構的多個處理器執行。因此,當程式在具有更寬的向量大小及/或支援更複雜的向量指令之一新的指令集架構上運行時,程式撰寫人員無需重寫程式。當程式在具有更小的向量大小及/或未支援程式中的某些向量指令之更早世代的處理器上運行時,程式撰寫人員無需重寫程式。此外,不用具有真正解碼及執行新指令的下層硬體,本發明的實施例仍允許新指令及功能由程式撰寫人員使用。這提供工具給程式撰寫人員,以使用強力的指令來撰寫程式,而不用
改變實體硬體。
舉例說明的電腦系統及處理器-圖7-11。
圖7-11是舉例說明的電腦系統及處理器。用於膝上型電腦、桌上型電腦、手持個人電腦、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、開關、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、電子遊戲裝置、機上盒、微控制器、蜂巢式電話、可攜式媒體播放器、手持裝置、及各式各樣的其它電子裝置之此技藝中習知的其它系統設計及配置也是適用的。一般而言,能夠包含如此處所揭示的處理器及/或其它執行邏輯之眾多各式各樣的系統或電子裝置一般都適用。
現在參考圖7,其顯示根據本發明的一實施例之系統1300的方塊圖。系統1300包含耦合至圖形記憶體控制器集線器(GMCH)1320之一或更多處理器1310、1315。增加的處理器1315的選加本質於圖7中以虛線標示。
各處理器1310、1315可為某版本的處理器1700。但是,應注意,整合的圖形邏輯及整合的記憶體控制單元不可能存在於處理器1310、1315中。
圖7顯示GMCH 1320耦合至記憶體1340,舉例而言,記憶體1340可為動態隨機存取記憶體(DRAM)。對於至少一實施例,DRAM可以是與非依電性快取記憶體相關連的。
GMCH 1320可為晶片組或部份晶片組。GMCH 1320與處理器1310、1315通訊以及控制處理器1310、1315與
記憶體1340之間的相互作用。GMCH 1320也作為處理器1310、1315與系統1300的其它元件之間的加速匯流排介面。對於至少一實施例,GMCH 1320經由例如前側匯流排(FSB)1395等多點連接匯流排而與處理器1310、1315通訊。
此外,GMCH 1320耦合至顯示器1345(例如平板顯示器)。GMCH 1320包含整合的圖形加速器。GMCH 1320又耦合至輸入/輸出(I/O)控制器集線器(ICH)1350,ICH 1350用以耦合各式各樣的週邊裝置至系統1300。舉例而言,外部圖形裝置1360顯示為用於圖7的實施例中,外部圖形裝置1360是與另一週邊裝置1370一起耦合至ICH 1350的離散圖形裝置。
替代地,增加的或不同的處理器也存在於系統1300中。舉例而言,增加的處理器1315包含與處理器1310相同之增加的處理器、與處理器1310異質的或是不對稱的增加的處理器、加速器(舉例而言,例如圖形加速器或數位訊號處理(DSP)單元)、現場可編程閘陣列、或是任何其它處理器。以包含架構、微架構、熱、耗電特徵、等等優點標準之範圍而言,在實體資源1310、1315之間有各式各樣的差異。這些差異有效地顯示它們本身是處理元件1310、1315之間的不對稱性及異質性。對於至少一實施例,各式各樣的處理單元1310、1315設於相同晶粒封裝中。
現在參考圖8,其顯示根據本發明的實施例之第二系
統1400的方塊圖。如圖8所示,多處理器系統1400是點對點互連系統,以及包含經由點對點互連1450而耦合的第一處理器1470和第二處理器1480。如圖8所示,各處理器1470和1480可為某些版本的處理器1700。
替代地,一或更多處理器1470、1480可為處理器以外的元件,例如加速器或是現場可編程閘陣列。
雖然僅顯示二處理器1470、1480,但是,須瞭解本發明的範圍不侷限於此。在其它實施例中,一或更多處理元件可以存在於給定的處理器中。
處理器1470又包含整合的記憶體控制器集線器(IMC)1472及點對點(P-P)介面1476和1478。類似地,第二處理器1480包含IMC 1482和P-P介面1486和1488。處理器1470、1480使用PtP介面電路1478、1488而經由點對點(PtP)介面1450來交換資料。如圖8中所示,IMC 1472及1482將處理器耦合至各別記憶體,亦即記憶體1442和記憶體1444,它們可為本地地附著至各別處理器之主記憶體的部份。
使用點對點介面電路1476、1494、1486、1498,處理器1470、1480經由個別的點對點介面1452、1454而各別地與晶片組1490交換資料。晶片組1490經由高性能圖形介面1439,也與高性能圖形電路1438交換資料。
共用的快取記憶體(未顯示)可以包含在二處理器外部的任一處理器中,又經由點對點互連而與處理器連接,以致於假使處理器被置於低功率模式中時,任一或二處理器
的本地快取記憶體資訊可以儲存在共用快取記憶體中。
晶片組1490經由介面1496而耦合至第一匯流排1416。在一實施例中,第一匯流排1416可為週邊組件互連(PCI)匯流排、或是例如快速PCI匯流排等匯流排或是其它第三代的I/O互連匯流排,但是,本發明的實施例的範圍不受限於此。
如圖8所示,各式I/O裝置1414可以與匯流排橋接器1418耦合至第一匯流排1416,匯流排橋接器1418將第一匯流排1416耦合至第二匯流排1420。在一實施例中,第二匯流排1420是低腳數(LPC)匯流排。各式裝置可以耦合至第二匯流排1420,在一實施例中,舉例而言,各式裝置包含鍵盤/滑鼠1422、通訊裝置1426及例如硬碟機或其它大量儲存裝置等包含碼1430的資料儲存單元1428。此外,音頻I/O 1424耦合至第二匯流排1420。注意,其它架構是可能的。舉例而言,取代圖8的點對點架構,系統可以實施多點連接匯流排或是其它此類架構。
現在參考圖9,其顯示根據本發明的實施例之第三系統1500的方塊圖。圖8和9中的類似元件帶有類似代號,圖8的某些態樣在圖9中省略,以免模糊圖9的其它態樣。
圖9顯示處理元件1470、1480分別包含整合的記憶體及I/O控制邏輯(CL)1472和1482。對於至少一實施例,CL 1472、1482包含記憶體控制器集線器邏輯(IMC),例如上述配合圖8、9及1、4所述的記憶體控制
器集線器邏輯。此外,CL 1472、1482也包含I/O控制邏輯。圖15不僅顯示記憶體1442、1444耦合至CL 1472、1482,輸入/輸出(I/O)裝置1514也耦合至控制邏輯1472、1482。舊有輸入/輸出(I/O)裝置1515耦合至晶片組1490。
現在參考圖10,其顯示根據本發明的實施例之系統晶片(SoC)1600的方塊圖。圖11中類似的元件帶有類似的代號。而且,虛線區塊是更先進的SoC上選加的特點。在圖10中,互連單元1602耦合至:應用處理器1610,其包含一或更多核心1702A-N及共用快取單元1706;系統代理單元1710;匯流排控制器單元1716;整合記憶體控制單元1714;一組或是一或更多媒體處理器1620,其包含整合圖形邏輯1708、用於提供靜態及/或攝影相機功能的影像處理器1624、用於提供硬體音頻加速的音頻處理器1626、以及用於提供視頻編碼/解碼加速的視頻處理器1628;靜態隨機存取記憶體(SRAM)單元1630;直接記憶體存取(DMA)單元1632;以及,用於耦合至一或更多外部顯示器的顯示單元1640。
此處揭示的機制的實施例可以以硬體、軟體、韌體、或這些實施方式的組合實施。本發明的實施例可以實施為在包括至少一處理器、儲存系統(包含依電性及非依電性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置的可編程系統上執行的電腦程式或程式碼。
程式碼可以應用至輸入資料以執行此處所述的功能及
產生輸出資訊。輸出資訊可以以已知方式應用至一或更多輸出裝置。為了此應用目的,處理系統包含具有處理器的任何系統,舉例而言,處理器可為數位訊號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或是微處理器。
程式碼可以以高階程序或物件導向程式語言實施,以與處理系統通訊。於需要時程式碼也可由組合語言或機器語言實施。事實上,此處所述的機制不限於任何特定程式語言的範圍。在任何情形中,語言可為經過編譯或解譯的語言。
至少一實施例的一或更多態樣可由代表處理器之內的各種邏輯之儲存在機器可讀取的媒體上的代表指令實施,當由機器讀取時,這些指令會促使機器製造邏輯以執行此處所述的技術。這些表示,例如「IP核心」,可以儲存在實體的、機器可讀取的媒體中及供應給各式各樣的客戶或製造設備以載入真正製造邏輯或處理器的製造機器中。
此機器可讀取的媒體包含但不限於由機器或裝置製造的物體之非暫時的實體配置,包含例如硬碟等儲存媒體、包括軟碟、光碟(光碟唯讀記憶體(CD-ROM)、光碟可重寫(CD-RW))、及磁光碟等任何型式的碟片、例如唯讀記憶體(ROM)、例如動態隨機存取記憶體裝置(DRAM)、靜態隨機存取記憶體(SRAM)等隨機存取記憶體(RAM)、可抹拭可編程唯讀記憶體(EPROM)、快閃記憶體、電氣可抹拭可編程唯讀記憶體(EEPROM)等半導體裝置、磁或光學
卡、或任何適用於儲存電子指令的其它型式的媒體。
因此,本發明的實施例也包含非暫時的、實體的機器可讀取的媒體,其含有向量友善指令格式的指令或含有設計資料,例如硬體說明語言(HDL),以界定此處所述的結構、電路、設備、處理器及/或系統特點。這些實施例也將稱為程式產品。
在某些情形中,指令轉換器可以用以將指令從源指令集轉換成目標指令集。舉例而言,指令轉換器可以將指令轉譯(例如,使用靜態二進位轉譯、包含動態編譯之動態二進位轉譯)、變種、模擬、或其它方式轉換成為一或更多要由核心處理的其它指令。指令轉換器可以以軟體、硬體、韌體、或其組合實施。指令轉換器可以在處理器上、離開處理器、或是部份在或部份離開處理器。
圖12是方塊圖,用以對比根據本發明之實施例中使用軟體轉換器以將源指令集中的二進位指令轉換成目標指令集中的二進位指令。在所示的實施例中,指令轉換器是軟體指令轉換器,但是,替代地,指令轉換器可以以軟體、韌體、硬體、或其各式各樣的組合實施。圖12顯示高階語言程式1802,可以使用x86編譯器1804將其編譯以產生x86二進位碼1806,x86二進位碼1806可由設有至少一x86指令集核心1816的處理器自然地執行(假定某些指令是以向量友善指令格式編譯)。設有至少一x86指令集核心1816的處理器代表執行與設有至少一x86指令集核心的英特爾處理器實質相同的功能之任何處理器,其
藉由並容地執行或是以其它方式處理:(1)Intel x86指令集核心的指令的實質部份、或是(2)以在設有至少一x86指令集核心的英特爾處理器上運行為目標之應用程式或其它軟體的物件碼版本,以取得與設有至少一x86指令集核心的英特爾處理器實質上相同的結果。x86編譯器1804代表可操作以產生x86二進位碼1806(例如物件碼)之編譯器,無論是否有增加的鏈結處理,二進位碼1806都可以在設有至少一x86指令集核心1816的處理器上執行。類似地,圖12顯示高階語言程式1802,可以使用替代的指令集編譯器1808將其編譯,以產生替代的指令集二進位碼1810,指令集二進位碼1810可由未設有至少一x86指令集核心1814的處理器自然地執行(例如,設有執行位於加州太陽谷的MIPS TECHNOLOGIES的MIPS指令集、及/或位於加州太陽谷的ARM Holdings的ARM指令集的核心之處理器)。指令轉換器1812用以將x86二進位碼1806轉換成可由未設有x86指令集核心1814的處理器自然地執行的碼。由於能夠這樣的指令轉換器難以製作,所以,此轉換碼不易與替代指令集二進位碼1810相同;但是,轉換碼將完成一般操作及由來自替代指令集的指令組成。因此,指令轉換器1812代表軟體、韌體、硬體、或其組合,其經由模仿、模擬或任何其它處理,允許未具有x86指令集處理器或是核心的處理器或其它電子裝置執行x86二進位碼1806。
此處揭示的向量友善指令格式之指令的某些操作可由
硬體組件執行以及以機器可執行的指令具體實施,所述機器可執行的指令用以促使或至少造成電路或其它硬體組件由執行操作的指令程式化。電路包含一般用途或特定用途的處理器、或邏輯電路,所述僅為少數實例。這些操作也可由硬體或軟體的結合所執行。執行邏輯及/或處理器包含特定的或特別的電路或其它邏輯以回應機器指令或是自機器指令衍生的一或更多控制訊號,而儲存指令指定結果運算元。舉例而言,此處揭示的指令實施例可在圖7-11的一或更多系統中執行,以及,向量友善指令格式的指令實施例可儲存在要在系統中執行的程式碼中。此外,這些圖式的處理元件可以利用此處詳述之詳細的管道及/或架構中之一(例如,有序及失序架構)。舉例而言,有序架構的解碼器可以將指令解碼、將經過解碼指令遞送至向量或純量單元、等等。
上述說明是要說明本發明的較佳實施例。從上述說明,也應清楚知道,特別是在成長快速且不易預見更進一步的發展之技術領域中,在後附的申請專利範圍的範圍及其均等範圍之內,在不悖離本發明的原理之下,習於此技藝者會在配置上及細節上修改本發明。舉例而言,方法的一或更多操作可以結合或是進一步拆開。
雖然已說明自然地執行向量友善指令格式的實施例,但是,經由在執行不同指令集的處理器上運行的模仿層,
本發明的替代實施例可以執行向量友善指令格式(例如,執行加州太陽谷的MIPS TECHNOLOGIES的MIPS指令集、位於加州太陽谷的ARM Holdings的ARM指令集的處理器)。而且,雖然圖式中的流程圖顯示本發明的某些實施例執行之特定次序的操作,但是,應瞭解,此次序是舉例說明(例如,替代實施例可以以不同次序執行操作,結合某些操作、與某些操作重疊、等等)。
在上述說明中,為了說明而揭示眾多特定細節以提供完整瞭解本發明的實施例。但是,習於此技藝者清楚可知,即使沒有這些特定細節中的某些細節,仍可實施一或更多其它實施例。所述的特定實施例並非用以限定本發明,而是說明本發明的實施例。本發明的範圍並非由上述提供的具體實例決定而是僅由下述的申請專利範圍決定。
須瞭解,上述說明僅為說明性而非限定性。在閱讀及瞭解上述說明之後,習於此技藝者將清楚很多其它實施例。因此,參考後附申請專利範圍、以及與這些申請專利範圍均等的完全範圍,而決定本發明的範圍。
100‧‧‧處理器
415‧‧‧指令處理設備
1300‧‧‧系統
1400‧‧‧第二系統
1500‧‧‧第三系統
1600‧‧‧系統晶片
在類似的代號表示類似的元件之附圖的圖式中,以舉例方式而非限定地說明本發明。應注意,在本揭示中不同述及的「一」或「一個」實施例不一定是相同的實施例,這些說明僅意指至少一個。此外,當配合實施例而說明特定的特點、結構、或特徵時,意指習知此技藝者知道配合
無論是否明確說明的其它實施例而實施這些特點、結構、或特徵。
圖1是具有包含一或更多向量轉譯指令的指令集之處理器的舉例說明的實施例之方塊圖。
圖2A-2B顯示向量轉譯操作的實例。
圖3A-3C顯示向量轉譯指令及其操作的舉例說明的實施例。
圖4是具有執行單元的指令處理設備的舉例說明的實施例的方塊圖,執行單元能夠操作以執行包含向量轉譯指令的舉例說明的指令。
圖5是製造物品的方塊圖(例如,電腦程式產品),包含實體的、非暫時的儲存向量轉譯指令之機器可存取的及/或機器可讀取的儲存媒體。
圖6是流程圖,顯示用於處理向量轉譯指令的方法之舉例說明的實施例。
圖7是根據本發明的一實施例之系統的方塊圖。
圖8是根據本發明的一實施例之第二系統的方塊圖。
圖9是根據本發明的實施例之第三系統的方塊圖。
圖10是根據本發明的實施例之系統晶片(SoC)的方塊圖。
圖11是根據本發明的實施例之設有整合的記憶體控制器及圖形之單核心處理器和多核心處理器的方塊圖。
圖12是方塊圖,用以對比根據本發明之實施例中使用軟體指令轉換器以將源指令集中的二進位指令轉換成目
標指令集中的二進位指令。
Claims (18)
- 一種方法,包括:接收碼區及成對的向量轉譯指令,該成對的向量轉譯指令將該碼區的開始及結束分界,該碼區包含界定於源處理器的指令集中的第一組向量指令;將該碼區轉譯成轉譯碼,該轉譯碼包含界定於目標處理器中的指令集中的第二組向量指令;由該目標處理器執行該轉譯碼以產生結果值,該結果值與執行該碼區的該源處理器產生的原始結果值相同;及在不是向量暫存器的位置儲存該結果值,該位置與該源處理器用以儲存該原始結果值的原始位置相同。
- 如申請專利範圍第1項之方法,其中,該碼區未含有自行修改碼且無法由該碼區外部的碼修改。
- 如申請專利範圍第1項之方法,其中,該碼區未含有跨線程通訊。
- 如申請專利範圍第1項之方法,其中,該第一組向量指令指定向量寬度,該向量寬度不同於該第二組向量指令指定的向量寬度。
- 如申請專利範圍第1項之方法,其中,執行該轉譯碼的該目標處理器未從該目標處理器的任何向量暫存器接收對該轉譯碼的輸入,以及未將該轉譯碼產生的最後輸出儲存在任何該向量暫存器中,該方法又包括:在該轉譯碼執行期間,將暫時值儲存在該向量暫存器中。
- 如申請專利範圍第1項之方法,其中,該碼區轉譯又包括:使用轉譯庫以轉譯該碼區,該轉譯庫由在該目標處理器上運行且能夠喚起該碼區的轉譯之編譯器、安裝器、載入器及運行時間解譯器共用。
- 如申請專利範圍第1項之方法,其中,該碼區又包含未界定於該源處理器的指令集中的第三組向量指令,其中,將該碼區轉譯又包含:將該第三組向量指令轉譯成該目標處理器的指令集中界定的指令。
- 一種設備,包括:轉譯邏輯,接收碼區及成對的向量轉譯指令,該成對的向量轉譯指令將該碼區的開始及結束分界,以及,將該碼區轉譯成轉譯碼,其中,該碼區包含界定於源處理器的指令集中的第一組向量指令,以及,該轉譯碼包含界定於目標處理器的指令集中的第二組向量指令;解碼邏輯,耦合至該轉譯邏輯以將該轉譯碼解碼;執行邏輯,耦合至該解碼邏輯以執行該轉譯碼而產生結果值,以及,將該結果值儲存在不是向量暫存器的位置,其中,該結果值與執行該碼區的該源處理器產生的原始結果值相同,以及,該位置與該源處理器用以儲存該原始結果值的原始位置相同。
- 如申請專利範圍第8項之設備,其中,該第一組向量指令指定向量寬度,該向量寬度不同於該第二組向量 指令指定的向量寬度。
- 如申請專利範圍第8項之設備,又包括:複數個向量暫存器,在該轉譯碼執行期間,儲存暫時值,其中,該複數個向量暫存器未儲存對該轉譯碼的輸入以及未儲存該轉譯碼產生的最後輸出。
- 如申請專利範圍第8項之設備,又包括:記憶體,儲存轉譯庫,該轉譯庫由該轉譯邏輯使用以轉譯該碼區,該轉譯庫由在該目標處理器上運行且能夠喚起該轉譯邏輯之編譯器、安裝器、載入器及運行時間解譯器共用。
- 一種系統,包括:互連;處理器,耦合至該互連,該處理器包含:轉譯邏輯,接收碼區及成對的向量轉譯指令,該成對的向量轉譯指令將該碼區的開始及結束分界,以及,將該碼區轉譯成轉譯碼,其中,該碼區包含界定於源處理器的指令集中的第一組向量指令,以及,該轉譯碼包含界定於目標處理器的指令集中的第二組向量指令;解碼邏輯,耦合至該轉譯邏輯以將該轉譯碼解碼;執行邏輯,耦合至該解碼邏輯以執行該轉譯碼而產生結果值,以及,將該結果值儲存在不是向量暫存器的位置,其中,該結果值與執行該碼區的該源處理器產生的原始結果值相同,以及,該位置與該源處理器用以儲存該 原始結果值的原始位置相同;以及動態隨機存取記憶體(DRAM),耦合至該互連。
- 如申請專利範圍第12項之系統,又包括:記憶體,儲存轉譯庫,該轉譯庫由該轉譯邏輯使用以轉譯該碼區,該轉譯庫由在該目標處理器上運行且能夠喚起該轉譯邏輯之編譯器、安裝器、載入器及運行時間解譯器共用。
- 如申請專利範圍第12項之系統,其中,該碼區未含有自行修改碼且無法由該碼區外部的碼修改。
- 如申請專利範圍第12項之系統,其中,該碼區未含有跨線程通訊。
- 如申請專利範圍第12項之系統,其中,該第一組向量指令指定向量寬度,該向量寬度不同於該第二組向量指令指定的向量寬度。
- 如申請專利範圍第12項之系統,其中,執行該轉譯碼的該目標處理器未從該目標處理器的任何向量暫存器接收對該轉譯碼的輸入,以及未將該轉譯碼產生的最後輸出儲存在任何該向量暫存器中,其中,在該轉譯碼執行期間,該目標處理器將暫時值儲存在該向量暫存器中。
- 如申請專利範圍第12項之系統,其中,該碼區又包含未界定於該源處理器的指令集中的第三組向量指令,且其中,該轉譯邏輯將該第三組向量指令轉譯成該目標處理器的指令集中界定的指令。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/063434 WO2013085491A1 (en) | 2011-12-06 | 2011-12-06 | System, apparatus and method for translating vector instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201342219A true TW201342219A (zh) | 2013-10-16 |
TWI556163B TWI556163B (zh) | 2016-11-01 |
Family
ID=48575079
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101142217A TWI556163B (zh) | 2011-12-06 | 2012-11-13 | 用以轉譯向量指令的系統、設備與方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9424042B2 (zh) |
CN (1) | CN103946797B (zh) |
TW (1) | TWI556163B (zh) |
WO (1) | WO2013085491A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2523823B (en) * | 2014-03-07 | 2021-06-16 | Advanced Risc Mach Ltd | Data processing apparatus and method for processing vector operands |
US9946549B2 (en) | 2015-03-04 | 2018-04-17 | Qualcomm Incorporated | Register renaming in block-based instruction set architecture |
US10025727B2 (en) * | 2016-02-05 | 2018-07-17 | Honeywell International Inc. | Relay mechanism to facilitate processor communication with inaccessible input/output (I/O) device |
US10167800B1 (en) * | 2017-08-18 | 2019-01-01 | Microsoft Technology Licensing, Llc | Hardware node having a matrix vector unit with block-floating point processing |
US10635439B2 (en) * | 2018-06-13 | 2020-04-28 | Samsung Electronics Co., Ltd. | Efficient interface and transport mechanism for binding bindless shader programs to run-time specified graphics pipeline configurations and objects |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4128880A (en) * | 1976-06-30 | 1978-12-05 | Cray Research, Inc. | Computer vector register processing |
US5313614A (en) * | 1988-12-06 | 1994-05-17 | At&T Bell Laboratories | Method and apparatus for direct conversion of programs in object code form between different hardware architecture computer systems |
US5530881A (en) * | 1991-06-06 | 1996-06-25 | Hitachi, Ltd. | Vector processing apparatus for processing different instruction set architectures corresponding to mingled-type programs and separate-type programs |
JPH0877143A (ja) * | 1994-09-02 | 1996-03-22 | Kofu Nippon Denki Kk | ベクトルデータ処理装置 |
US5680338A (en) * | 1995-01-04 | 1997-10-21 | International Business Machines Corporation | Method and system for vector processing utilizing selected vector elements |
US5838984A (en) * | 1996-08-19 | 1998-11-17 | Samsung Electronics Co., Ltd. | Single-instruction-multiple-data processing using multiple banks of vector registers |
US6009261A (en) * | 1997-12-16 | 1999-12-28 | International Business Machines Corporation | Preprocessing of stored target routines for emulating incompatible instructions on a target processor |
US6366998B1 (en) * | 1998-10-14 | 2002-04-02 | Conexant Systems, Inc. | Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model |
US6807622B1 (en) * | 2000-08-09 | 2004-10-19 | Advanced Micro Devices, Inc. | Processor which overrides default operand size for implicit stack pointer references and near branches |
GB2367915B (en) * | 2000-10-09 | 2002-11-13 | Siroyan Ltd | Instruction sets for processors |
US7873812B1 (en) * | 2004-04-05 | 2011-01-18 | Tibet MIMAR | Method and system for efficient matrix multiplication in a SIMD processor architecture |
US7962906B2 (en) * | 2007-03-15 | 2011-06-14 | International Business Machines Corporation | Compiler method for employing multiple autonomous synergistic processors to simultaneously operate on longer vectors of data |
US8495602B2 (en) * | 2007-09-28 | 2013-07-23 | Qualcomm Incorporated | Shader compile system and method |
US8700884B2 (en) * | 2007-10-12 | 2014-04-15 | Freescale Semiconductor, Inc. | Single-instruction multiple-data vector permutation instruction and method for performing table lookups for in-range index values and determining constant values for out-of-range index values |
US8667250B2 (en) * | 2007-12-26 | 2014-03-04 | Intel Corporation | Methods, apparatus, and instructions for converting vector data |
US8060724B2 (en) * | 2008-08-15 | 2011-11-15 | Freescale Semiconductor, Inc. | Provision of extended addressing modes in a single instruction multiple data (SIMD) data processor |
US8904366B2 (en) * | 2009-05-15 | 2014-12-02 | International Business Machines Corporation | Use of vectorization instruction sets |
US8555034B2 (en) * | 2009-12-15 | 2013-10-08 | Oracle America, Inc. | Execution of variable width vector processing instructions |
-
2011
- 2011-12-06 CN CN201180074953.7A patent/CN103946797B/zh active Active
- 2011-12-06 US US13/993,603 patent/US9424042B2/en active Active
- 2011-12-06 WO PCT/US2011/063434 patent/WO2013085491A1/en active Application Filing
-
2012
- 2012-11-13 TW TW101142217A patent/TWI556163B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
WO2013085491A1 (en) | 2013-06-13 |
CN103946797A (zh) | 2014-07-23 |
CN103946797B (zh) | 2017-07-04 |
TWI556163B (zh) | 2016-11-01 |
US9424042B2 (en) | 2016-08-23 |
US20130283022A1 (en) | 2013-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI470543B (zh) | 用於多精度算術之單一指令多重資料(simd)整數乘法累加指令 | |
JP6373425B2 (ja) | 複数のビットを左にシフトし、複数の1を複数の下位ビットにプルインするための命令 | |
TWI567646B (zh) | 容許一架構之編碼模組使用另一架構之程式庫模組的架構間相容性模組 | |
Patterson | 50 years of computer architecture: From the mainframe cpu to the domain-specific tpu and the open risc-v instruction set | |
TWI514274B (zh) | 用於迴圈餘數遮罩指令之系統、裝置及方法 | |
JP6849274B2 (ja) | 融合された単一のサイクルのインクリメント−比較−ジャンプを実施するための命令及びロジック | |
US20050010743A1 (en) | Multiple-thread processor for threaded software applications | |
JP7419629B2 (ja) | データ表現間の一貫性のある変換を加速するプロセッサ、方法、プログラム、コンピュータ可読記憶媒体、および装置 | |
CN108885551B (zh) | 存储器复制指令、处理器、方法和系统 | |
TWI556163B (zh) | 用以轉譯向量指令的系統、設備與方法 | |
TWI502490B (zh) | 用以處理加法指令之方法、及用以執行加法指令之裝置與系統 | |
TWI553553B (zh) | 用於產生迴圈對齊計數或迴圈對齊遮罩的系統、設備與方法 | |
CN104813279A (zh) | 用于减少具有步幅式访问模式的向量寄存器中的元素的指令 | |
WO2013101119A1 (en) | Method and apparatus for controlling a mxcsr | |
US11354128B2 (en) | Optimized mode transitions through predicting target state | |
US20160266905A1 (en) | Apparatuses and methods to assign a logical thread to a physical thread | |
JPS623334A (ja) | アドレス指定方式 | |
EP4016288A1 (en) | Isa opcode parameterization and opcode space layout randomization | |
CN115858439A (zh) | 三维堆叠式可编程逻辑架构和处理器设计体系结构 | |
US20220100569A1 (en) | Methods, systems, and apparatuses for scalable port-binding for asymmetric execution ports and allocation widths of a processor | |
US20230195456A1 (en) | System, apparatus and method for throttling fusion of micro-operations in a processor | |
US20230367492A1 (en) | Flexible provisioning of coherent memory address decoders in hardware | |
KR20140113579A (ko) | 데이터 요소에 있는 비트들의 제로화를 위한 시스템, 장치, 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |