TW201712530A - 用於改善狀態相依計算效能的系統、方法和設備 - Google Patents

用於改善狀態相依計算效能的系統、方法和設備 Download PDF

Info

Publication number
TW201712530A
TW201712530A TW105116130A TW105116130A TW201712530A TW 201712530 A TW201712530 A TW 201712530A TW 105116130 A TW105116130 A TW 105116130A TW 105116130 A TW105116130 A TW 105116130A TW 201712530 A TW201712530 A TW 201712530A
Authority
TW
Taiwan
Prior art keywords
instruction
register
hardware
processor
hardware device
Prior art date
Application number
TW105116130A
Other languages
English (en)
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 TW201712530A publication Critical patent/TW201712530A/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • 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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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
    • G06F9/30101Special purpose registers
    • 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
    • G06F9/30105Register structure

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

用於改善狀態相依計算之性能的系統、方法和設備之實施例被詳細敘述。在實施例中,硬體設備包含用以解碼指令的解碼器硬體、用以從與由該解碼器硬體解碼之該指令相關聯的至少一來源運算元檢索資料的運算元檢索硬體以及用以執行解碼的該指令以產生包括至少一狀態位元及之結果,且導致該結果和至少一狀態位元被儲存在單一目的地實體儲存位置的執行硬體,其中該至少一狀態位元和結果透過該單一暫存器之讀取為可存取的。

Description

用於改善狀態相依計算效能的系統、方法和設備
本發明敘述的各種實施例係有關於處理器架構。
在大多數的架構中,僅有一種架構暫存器(例如,RFLAGS)是用來指出計算之狀態旗標(status flags)。對於更佳效能和/或能量效率這限制了用以重新排序指令的編譯器或二進制轉譯器之能力。
101‧‧‧狀態暫存器
103‧‧‧資料暫存器1
105、111‧‧‧旗標
107、113‧‧‧資料
109‧‧‧資料暫存器N
201‧‧‧狀態消耗指令之第一類型
203,213,223,233,403,413,423‧‧‧操作碼
205,215,405,415,425‧‧‧目的地
207,217,407,417,427‧‧‧來源運算元
211‧‧‧狀態消耗指令之第二類型
225,235‧‧‧偏移
401‧‧‧狀態寫入址令之第一類型
411‧‧‧狀態寫入指令之第二類型
421‧‧‧狀態寫入指令之第三類型
600‧‧‧處理器管線
602‧‧‧提取階段
604‧‧‧長度解碼階段
606‧‧‧解碼階段
608‧‧‧配置階段
610‧‧‧重新命名階段
612‧‧‧排程階段
614‧‧‧暫存器讀取/記憶體讀取階段
616‧‧‧執行階段
618‧‧‧回寫/記憶體寫入階段
622‧‧‧例外處置階段
624‧‧‧確定階段
630‧‧‧前端單元
632‧‧‧分支預測單元
634‧‧‧指令快取單元
636‧‧‧指令翻譯旁看緩衝器(TLB)
638‧‧‧指令提取單元
640‧‧‧解碼單元
650‧‧‧執行引擎單元
652‧‧‧重新命名/配置器單元
654‧‧‧撤回單元
656‧‧‧排程器單元
658‧‧‧實體暫存器檔案單元
660‧‧‧執行叢集
662‧‧‧執行單元
664‧‧‧記憶體存取單元
670‧‧‧記憶體單元
672‧‧‧資料TLB單元
674‧‧‧資料快取單元
676‧‧‧第二階(L2)快取單元
690‧‧‧處理器核心
700‧‧‧指令解碼器
702‧‧‧晶粒上互連網路
704‧‧‧第二階(L2)快取記憶體
706‧‧‧L1快取記憶體
706A‧‧‧L1資料快取
708‧‧‧純量單元
710‧‧‧向量單元
712‧‧‧純量暫存器
714‧‧‧向量暫存器
720‧‧‧調合單元
722A-B‧‧‧數值轉換單元
724‧‧‧複製單元
726‧‧‧寫入遮蔽暫存器
728‧‧‧16-寬的ALU
800‧‧‧處理器
802A-N‧‧‧核心
806‧‧‧共享快取單元
808‧‧‧特殊用途邏輯
810‧‧‧系統代理
812‧‧‧環式為基的互連單元
814‧‧‧積體記憶體控制器單元
816‧‧‧匯流排控制器單元
900‧‧‧系統
910,915‧‧‧處理器
920‧‧‧控制器集線器
940‧‧‧記憶體
945‧‧‧共處理器
950‧‧‧輸入/輸出集線器(IOH)
960‧‧‧輸入/輸出(I/O)裝置
990‧‧‧圖形記憶體控制器集線器(GMCH)
995‧‧‧連接
1000‧‧‧多處理器系統
1014‧‧‧I/O裝置
1015‧‧‧額外處理器
1016‧‧‧第一匯流排
1018‧‧‧匯流排橋接器
1020‧‧‧第二匯流排
1022‧‧‧鍵盤及/或滑鼠
1024‧‧‧音頻I/O
1027‧‧‧通訊裝置
1028‧‧‧儲存單元
1030‧‧‧指令/代碼及資料
1032‧‧‧記憶體
1034‧‧‧記憶體
1038‧‧‧共處理器
1039‧‧‧高性能介面
1050‧‧‧點對點互連
1052,1054‧‧‧P-P介面
1070‧‧‧第一處理器
1072,1082‧‧‧積體記憶體控制器(IMC)單元
1076,1078‧‧‧點對點(P-P)介面
1080‧‧‧第二處理器
1086,1088‧‧‧P-P介面
1090‧‧‧晶片組
1094,1098‧‧‧點對點介面電路
1096‧‧‧介面
1100‧‧‧系統
1114‧‧‧I/O裝置
1115‧‧‧舊有I/O裝置
1200‧‧‧SoC
1202‧‧‧互連單元
1210‧‧‧應用程式處理器
1220‧‧‧共處理器
1230‧‧‧靜態隨機存取記憶體(SRAM)單元
1232‧‧‧直接記憶體存取(DMA)單元
1240‧‧‧顯示單元
1302‧‧‧高階語言
1304‧‧‧x86編譯器
1306‧‧‧x86二進制碼
1308‧‧‧指令集編譯器
1310‧‧‧指令集二進制碼
1312‧‧‧指令轉換器
1314‧‧‧不具至少一x86指令集核心之處理器
1316‧‧‧具有至少一x86指令集核心之處理器
本發明藉由示例方式說明且不限制於附圖之圖式,其中相似的元件編號指的是相似的元件以及其中:圖1示出在硬體處理器(或處理器核心)中暫存器之實施例。
圖2示出用於狀態消耗指令之指令格式的示例實施例。
圖3示出在處理器中狀態消耗指令之執行方法的實施例。
圖4示出用於狀態寫入指令之指令格式的示例實施例。
圖5示出在處理器中狀態寫入指令之執行方法的實施例。
圖6A根據本發明實施例示出有序管線之實例及暫存器重新命名、失序簽發/執行管線之實例二者的方塊圖。
圖6B根據本發明實施例示出包括在處理器中有序架構核心之實例實施例及暫存器重新命名、失序簽發/執行架構核心之實例二者的方塊圖。
圖7A-B例示說明有序核心架構之更特定實例之方塊圖,該核心將為晶片中數個邏輯區塊中之一者(包括相同類別和/或不同類別的其它核心)。
圖8為根據本發明實施例之處理器800的方塊圖,該處理器可具有多於一個核心、可具有整合記憶體控制器及可具有整合圖形。
圖9-12為示例的電腦架構的方塊圖。
圖13為根據本發明實施例之對比軟體指令轉換器用以將在來源指令集中之二進制指令轉換成在目標指令集中之二進制指令的方塊圖。
【發明內容及實施方式】
在後面敘述中,陳述數個具體細節。然而, 應能理解到本發明之實施例可以無這些具體細節而實施。參照說明書中「一實施例」、「實施例」、「示例實施例」等等,指的是所敘述的實施例包括特定的特徵、結構或特性,但每一個實施例不一定需要包括特定的特徵、結構或特性。此外,此種用語不一定指的是相同的實施例。另外,當特定的特徵、結構或特性結合實施例敘述時,無論是否有明確地敘述,應當認為本領域具通常知識者影響此種特徵、結構或特性與其它實施例結合。
一種僅具有單一旗標(條件碼暫存器)之解決方案係對於每一(潛在地)旗標產生運算提供兩種變形。例如,指令ROR向右旋轉並且更新進位旗標(carry flag),同時RORX向右旋轉而不影響任何旗標。這允許一些編譯器基底的重新排列,特別是圍繞那些旗標結果因為它們從不消耗而可被抑制的指令。
另一個解決方案係提供多個架構旗標暫存器。例如,可想而知的RFLAGS0、RFLAGS1、RFLAGS2以及RFLAGS3。程序和消耗者指令兩者皆可接著指定(以兩位元)那個旗標暫存器是他們希望參照。這需要增加兩位元給每一生產者-幾乎每個算術指令-以及每個消耗者(例如,條件分支、條件移動)。此外,在亂序處理器中,這四個旗標暫存器需要重新命名。
圖1示出在硬體處理器(或處理器核心)中暫存器之實施例。在這實施例中,有一個狀態暫存器101是用以儲存有關處理器之狀態的狀態資訊。這個暫存器可 具有不同的名稱包括(但不限制於)FLAGS暫存器(例如,FLAGFS、EFLAGS或RFLAGS)、程式狀態字(program status word,PSW)、條件碼(CC)暫存器等等。儲存在狀態暫存器之狀態位元(或旗標)之範例包括(但不限制於)進位(C)、同位(P)、調整(A)、零(Z)、正負號(S)及溢位(O)的指示。透過狀態暫存器,指令可藉由基於先前指令之結果評估一或多個狀態位元而採取行動。指令之執行是基於該指令本身的結果設定狀態暫存器701之狀態位元。例如,僅僅狀態暫存器之某些位元(旗標)(諸如C旗標)在一些旋轉指令被設定而A、Z、S和P不會受到影響。
還有複數個實體資料暫存器1 103至N 109。在一些實施例中,實體資料暫存器103、109之數目比程式設計者架構地可視的數目多。在這些實施例中,實體暫存器在指令執行管線之重新命名部分的期間分配至架構暫存器。
資料暫存器之資料部分107和113的大小取決於實施而變化。例如,資料部分可為8位元、16位元、32位元、64位元、128位元、256位元、512位元、1024位元等等。資料部分也可被用來儲存整數、浮點或緊縮(無論是整數或浮點)資料值。
一種實施在處理器中狀態之方式,例如,失序處理器係擴展每一實體資料暫存器103和109以包括算術之狀態旗標結果(C、O、S、P、A和Z)。例如,對 於64位元資料暫存器,這個擴展將導致無論是實體70位元暫存器。更大的暫存器被示出如FLAGS 105和111,其附加到資料部分107和113使得它們實體地與算術結果共同定位。在處理器中的重新命名硬體是用與架構暫存器重新命名為實體暫存器相同的方式重新命名為實體暫存器。這樣,資料暫存器指的是它的實體暫存器之第一64位元以及狀態指的是實體暫存器之旗標部分。而這些暫存器被以小頭(little endian)格式顯示(與在最低有效位元(least significant bits)中的資料及儲存在最高有效位元中狀態位元),在其它實施例中,資料和狀態位元之儲存被以相反方式儲存。
考慮下面傳統的範例。當七因指令「sub rax,$7」被從RAX減去時,對於架構暫存器RAX所得的值連同旗標結果被寫入至實體暫存器(例如,P39)。這樣,RAX暫存器和狀態暫存器兩者當前皆指向實體暫存器P39。接下來,比方說,指令「add rbx,$3」寫入它的結果至實體暫存器P40。當前,RBX暫存器和狀態暫存器兩者皆指向實體暫存器P40。RAX暫存器仍指向實體暫存器P39。不幸的是,當減去指令之旗標結果仍出現在P39中的硬體內,對於軟體不存在方法來存取它。
下面詳細敘述為新的消耗指令(例如條件的分支)以及它們的執行之實施例,其中執行指定哪個實體暫存器應作為狀態位元之來源,狀態位元它們藉由具有參照保持與所需狀態結果同時地產生之結果的架構暫存器消 耗。這可以被完成只要特定架構暫存器尚未由後續指令重寫,不管任何後續指令是否已重寫的狀態暫存器。例如,即使當狀態暫存器被重寫時,與實體資料暫存器儲存的狀態位元被用來做出條件的決定。當然,現有的指令可以不作任何修改繼續使用狀態暫存器。
在一些實施例中,狀態消耗指令在它們的編碼中具有暫存器欄位用來指示哪個架構暫存器保持條件所指之計算的結果(狀態資訊)。例如,新的指令「jne rcx.f,L2」在相同的指令產生的旗標上評估「不相等」測試,其中相同的指令在RCX中產生整數值(「.f」指示旗標被儲存)。如所示例的組合語言(assembly language)慣例,在實體暫存器中整數結果由RCX架構地引用為「RCX」及在相同實體暫存器中的旗標結果為「RCX.F」。應注意到軟體現在是以相對低的硬體成本存取到如架構整數暫存器一樣多的旗標結果暫存器。當然,在一些實施例中,這個旗標結果特徵僅限於可用架構暫存器之子集。
應注意到除了分支和/或跳躍之條件的指令也可被提供。例如,條件的移動和條件的記憶體操作可被可被規定為從RCX.F消耗旗標(除了狀態暫存器)。
圖2示出用於狀態消耗指令之指令格式的示例實施例。狀態寫入指令201之第一類型包括操作碼(opcode)203是用以指示指令之執行係用以評估來源運算元207之至少一狀態,以決定一個操作是否被執行。例 如,基於被設定的一或多個狀態位元,從來源207至目的地205之條件移動應被執行嗎。
狀態寫入指令211之第二類型包括用於狀態消耗指令之操作碼213,其用以指示要執行的操作。來源運算元217包括它儲存狀態資訊之指示。例如,source.f可被用來指示其中來源包括將被消耗的狀態資料。目的地215為操作之目的地。
狀態寫入指令221之第三類型包括操作碼223,其用以指示其中指令之執行係用來評估明確旗標位置(來源運算元)223之至少一狀態位元而決定操作是否被執行。例如,基於被設定的一或多個狀態位元,至偏移225之條件的跳躍應被執行嗎。
狀態寫入指令231之第四類型包括操作碼223,其指示指令之執行係用來評估至少一狀態位元而決定操作是否被執行。明確旗標位置(來源運算元)233指示它除了儲存資料外還儲存狀態資訊。例如,source.f可被用來指示來源包括被消耗的狀態資料。例如,基於被設定的一或多個狀態位元,至偏移235之條件的跳躍應被執行嗎。
圖3示出在處理器中狀態消耗指令之執行方法的實施例。範例的管線和處理器(或核心)將在後面圖式詳細說明。此外,用於狀態消耗指令之範例指令格式已在上面詳細說明。
狀態消耗指令由提取硬體在301被提取。典 型地,指令在提取之前儲存在指令快取中。
提取的指令由解碼硬體在303被解碼。指令之解碼決定哪個指令被執行以及哪個運算元被提取。在一些實施例中,指令被解碼為微操作。
在一些實施例中,暫存器重新命名在指令之一或多個運算元上由重新命名/配置硬體在305被執行。例如,來源運算元從架構暫存器被映射至實體暫存器。
來源運算元值係從實體暫存器檔案或記憶體在307檢索。
解碼的狀態消耗指令由在檢索的來源運算元上之功能的單元(執行硬體)在309被執行。例如,非零跳躍(jump not zero,JNZ)被執行。消耗指令的解碼的狀態之執行導致了如果狀態條件藉由從檢索的來源來觀察狀態資訊而被滿足的決定。在JNZ實例中,跳躍是在零狀態(例如零旗標)沒有被設定在來源運算元之狀態部分中的時候被執行。
雖然上述圖式已經相對於硬體敘述,方法之一或多個方面可被執行在軟體,例如,作為仿真的一部分。例如,解碼器可被實施在軟體或韌體中,而不是在硬體中。
下面詳細說明為新的狀態寫入指令和它們的執行之實施例,其中它們的執行藉由具有它們參照保持與狀態結果同時地產生之結果的架構暫存器指示哪個實體暫存器應作為狀態資訊之目的地。
圖4示出用於狀態寫入指令之指令格式的示例實施例。狀態寫入指令401之第一類型包括操作碼403,其用以指示指令之執行係用以導致至少一狀態位元連同結果之儲存到關聯於目的地運算元405之單一目的地實體儲存位置。狀態寫入指令401之第一類型也典型地包括至少一來源運算元407。此種指令之範例為SUB.F DST、SRC,其中SUB.F之操作碼指示這類型之指令不同於一般減去指令(subtract instruction)且係用以儲存狀態資訊在目的地(DST)。
狀態寫入指令411之第二類型包括操作碼413,其用於指示指令之結果和它的狀態資訊被儲存在單一目的地實體位置之指令和目的運算元415。狀態寫入指令411之第二類型也典型地包括至少一來源運算元417。此種指令之範例為SUB DST.F,SRC,其中DST.F之目的地指示這類型之指令不同於一般減法(subtraction)且係用以儲存狀態資訊在目的地(DST)。
狀態寫入指令421之第三類型包括用於指令和目的地運算元425的操作碼423。這類型之狀態寫入指令不指示狀態資訊不被連同結果儲存在單一目的地實體位置。狀態寫入指令411之第三類型也典型地包括至少一來源運算元417。此種指令之範例為SUB DST,SRC。非狀態寫入指令變化將具有不同操作碼,例如用以描述指令之執行不提供可存取狀態位元的SUBX。這樣,本文詳細敘述的實施例不與含有指令之旗標產生和旗標抑制變化兩者 的指令集架構衝突。例如,寫入狀態暫存器之指令SUB和不寫入狀態暫存器之指令SUBX。在本文詳細敘述之實施例中,兩個指令變化寫入整數結果和旗標結果兩者到目的地實體暫存器。然而,僅SUB變化重新命名狀態暫存器用以指出指令之目的地位置。在上面範例中,SUB可由SUBX取代且消耗指令(例如,JNE)仍能消耗RCX.F。SUB和SUBX兩者皆將分配、說實體暫存器P39為目的地。兩者皆將寫入減法之整數結果至P39且兩者皆將寫入減法之旗標結果至P39。兩者皆將重新命名架構暫存器RCX至P39。但僅SUB將重新命名狀態暫存器之P39。直到RCX後續地由其它指令重新命名,新的條件分支可消耗RCX.F。
圖5示出在處理器中狀態寫入指令之執行方法的實施例。示例的管線和處理器(或核心)在後面圖式詳細敘述。此外,用於狀態寫入指令之示例的指令格式已在上面詳細敘述。
狀態寫入指令在501由提取硬體提取。典型地,指令在提取之前係儲存在指令快取。
提取的指令在503由解碼硬體解碼。指令之解碼決定哪個指令被執行及哪個運算元被提取。在一些實施例中,指令被解碼為微操作。
在一些實施例中,暫存器重新命名在505於指令之一或多個運算元上由重新命名/配置硬體執行。例如,目的地運算元從架構暫存器映射至實體暫存器。
來源運算元值在507被從實體暫存器檔案或記憶體檢索。
解碼的狀態寫入指令在509由在檢索的來源運算元上的功能性單元(執行硬體)執行。例如,減去被執行。解碼的狀態寫入指令之執行導致結果被計算及狀態資訊被產生(例如,前面詳細敘述的C、O、S、P、A和Z)。
回寫硬體(例如撤回硬體)在511儲存執行解碼的狀態寫入指令之結果和狀態資訊至單一目的地暫存器。在使用重新命名之處理器(核心)中,暫存器從架構版本映射實體版本。此外,狀態資訊(例如旗標暫存器)被映射之具有狀態和資料之實體暫存器。
雖然上述圖式已經相對於硬體敘述,方法之一或多個方面可被執行在軟體,例如,作為仿真的一部分。例如,解碼器可被實施在軟體或韌體中,而不是在硬體中。
本文詳細敘述藉由允許軟體以存取先前隱藏的硬體實體狀態來增加程式之架構狀態。這具有對於脈絡切換的影響且可以以平時的方式處理。例如,額外的狀態可由操作系統被保存和回復,以使用XSAVE為例。可替代地,這個能力僅可在轉換區域(例如,在XBEGIN和XEND之間的區域)被利用,使得額外的架構狀態以原子方式既產生且消耗。或者,新架構狀態可由運行時間軟體管理,例如限制於透過動態二進制轉譯產生的碼,其中陷 阱和中斷由運行時間管理軟體和韌體層攔截。
上面的指令提供許多益處。典型地,僅有一個單一架構值用於在狀態暫存器中的旗標(進位、溢位、正負號、零等等)。因此,其通常不可能用於用以置換上述旗標計算和退出迴圈之編譯器或二進制轉譯器。請看下面的例子:for (int rsi = 0; rsi < 1000; ++rsi) {if (rax == rbx) { x[rsi] = calculationl; } else { x[rsi] = calculation2; } } In pseudo-assembly, this becomes: xor rsi, rsi // set rsi = 0; L1: cmp rax, rbx; jne L2; x[rsi] = calculationl; jmp L3; L2: x[rsi] = calculation2; L3: add rsi, $1; cmp rsi, $1000; jl L1;
特別注意到RAX和RBX之比較發生在迴圈裡面,且因此即使它永遠產生相同結果仍執行1000次。它的狀態(旗標)結果由之後的(且需要)迴圈索引比較被重寫。兩個比較指令由後續消耗者(條件分支)產生需要的旗標。
現在,使用目的地狀態寫入和消耗指令,上述的範例可被編譯(或二進制轉譯)為: xor rsi, rsi // set rsi = 0; sub rcx = rax, rbx; L1: jne rcx.f, L2; x[rsi] = calculationl; jmp L3; L2: x[rsi] = calculation2; L3: add rsi, $1; cmp rsi, $1000; jl L1;
上面迴圈之RAX和RBX比較已經被去除。在RCX.F(具有狀態資訊之目的地暫存器)中的值被計算一次並使用1000次。編譯器不(且可能不)使用整數暫存器RCX作為任何在迴圈中執行的指令之目的地,因為這樣做將重寫RCX.F以及RCX。
還有,上述的碼還沒有最佳化。移動上述迴圈之比較允許進一步最佳化,例如避免最後條件分支(JL)跳到上述另一個條件分支(JNE)。因此:xor rsi, rsi // set rsi = 0; sub rcx = rax, rbx; jne rcx.f, L2; L1: x[rsi] = calculation1; jmp L3; L2: x[rsi] = calculation2; L3: add rsi, $1; cmp rsi, $1000; jge L4; // typically not-taken jne rcx.f, L2; jmp L1; L4:
上述產生RCX.F之指令發生被寫入為三個運 算元(非破壞性來源)指令,使得來源(RAX和RBX)不被重寫。這正交於本發明之實施例。假如非破壞性來源指令在給定的指令集架構(ISA)中可用,上述單一減去可用「mov rcx,rax;sub rcx,rbx;」取代。
上述加法、減法和比較全部更新狀態暫存器。上述條件跳躍(JGE)也指的是由在狀態暫存器中的狀態旗標決定的條件。
本文詳細敘述的實施例可以在包括那些下面詳細敘述之許多不同架構上被執行。
核心架構、處理器及電腦架構實例
處理器核心可以不同方式、用於不同目的、及於不同處理器實施。舉例言之,此種核心的實施可包括:1)意圖用於通用運算的通用有序核心;2)意圖用於通用運算的高效能通用失序核心;3)主要意圖用於圖形及科學(資料通量)運算的特用核心。不同處理器的實施可包括:1)一CPU包括一或多個意圖用於通用運算的通用有序核心和/或一或多個意圖用於通用運算的高效能通用失序核心;及2)一共用記憶體包括一或多個主要意圖用於圖形及科學(資料通量)運算的特用核心。此等不同處理器結果導致不同的電腦系統架構可包括1)共處理器在與CPU分開的晶片上;2)共處理器在與CPU相同封裝體內的分開晶粒上;3)共處理器在與CPU相同的晶粒上(於該種情況下,此種共處理器偶爾係稱作特殊用途邏輯,諸如 積體圖形和/或科學(資料通量)邏輯,或稱作特用核心);4)單晶片系統可包括在與CPU相同的晶粒上(偶爾稱作應用核心或應用處理器)、前述共處理器、及額外功能。其次描述核心架構實例,接著描述處理器及電腦架構實例。
核心架構實例
有序及失序核心方塊圖
圖6A根據本發明實施例示出有序管線之實例及暫存器重新命名、失序簽發/執行管線之實例二者的方塊圖。圖6B根據本發明實施例示出包括在處理器中有序架構核心之實例實施例及暫存器重新命名、失序簽發/執行架構核心之實例二者的方塊圖。圖6A-B的實線框例示說明有序管線及有序核心,而虛線框的選擇性添加例示說明暫存器重新命名、失序簽發/執行管線及核心。假設有序方面為失序方面的一子集,將描述失序方面。
於圖6A中,一處理器管線600包括一提取階段602、一長度解碼階段604、一解碼階段606、一配置階段608、一重新命名階段610、一排程(又稱為調度或簽發)階段612、一暫存器讀取/記憶體讀取階段614、一執行階段616、一回寫入/記憶體寫入階段618、一例外處理階段622、及一確定階段624。
圖6B顯示處理器核心690包括一前端單元630耦接至一執行引擎單元650,二者係耦接至一記憶體單元670。核心690可為精簡指令集電腦(RISC)核心、複 雜指令集電腦(CISC)核心、極長指令字組(VLIW)核心、或一混成體或其它核心類別。至於又另一選項,核心690可為通用核心,諸如網路或通訊核心、壓縮引擎、共處理器核心、通用圖形處理單元(GPGPU)核心、圖形核心等。
前端單元630包括一分支預測單元632耦接至一指令快取單元634,其係耦接至指令轉譯後備緩衝器(TLB)636,其係耦接至一指令提取單元638,其係耦接至一解碼單元640。解碼單元640(或解碼器)可解碼指令,產生一或多個微操作作為輸出,微碼進入點、微指令、其它指令、或其它控制信號,其係從原先指令解碼,或以其它方式反映、或推衍。解碼器640可使用多種不同機構實施。適當機構的實例包括但非僅限於詢查表、硬體實施、可規劃邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。於一個實施例中,核心690包括一微碼ROM或針對某些巨集指令儲存微碼的其它媒體(例如於解碼單元640內或否則於前端單元630內部)。解碼單元640係耦接至執行引擎單元650內部的重新命名/配置器單元652。
執行引擎單元650包括重新命名/配置器單元652,耦接至撤回單元654及或多個程器單元656之集合。排程器單元656表示任何數目的不同排程器,包括保留站、中央指令窗等。排程器單元656係耦接至實體暫存器檔案單元658。實體暫存器檔案單元658各自表示一或多個實體暫存器檔案,其中之不同者儲存一或多個不同資料類別,諸如純量整數、純量浮點、緊縮整數、緊縮浮 點、向量整數、向量浮點等狀態(例如指令指標器其為欲執行的下個指令的位址)等。於一個實施例中,實體暫存器檔案單元658包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。此等暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。實體暫存器檔案單元658被撤回單元654重疊以例示說明可實施暫存器重新命名與失序執行的多種方式(例如使用重新排序緩衝器及撤回暫存器檔案,使用未來檔案、歷史緩衝器及撤回暫存器檔案;使用暫存器映射表及一匯集物之暫存器等)。撤回單元654及實體暫存器檔案單元658係耦接至執行叢集660。執行叢集660包括一或多個執行單元662之一集合及一或多個記憶體存取單元664之一集合。執行單元662可對各型資料(例如純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)執行各項操作(例如移位、加法、減法、乘法)。雖然有些實施例可包括專用於特定功能或功能集合的多個執行單元,但其它實施例可只包括一個執行單元或多個執行單元,其全部一起執行全部功能。排程器單元656、實體暫存器檔案單元658、及執行叢集660顯示為可能為多數,原因在於某些實施例產生針對某些類別的資料/操作的分開管線(例如純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、和/或記憶體存取管線各自具有其本身的排程器單元、實體暫存器檔案單元、和/或執行叢集且於分開記憶體存取管線之情況下,實施某些實施例其中只有此一管線的執行叢集具 有記憶體存取單元664)。也須瞭解使用分開管線時,此等管線中之一或多者可為失序簽發/執行及有序靜止。
記憶體存取單元之集合664係耦接至記憶體單元670,其包括一資料TLB單元672耦接至與層級2(L2)快取單元676的一資料快取單元674。在一個具體實施例中,記憶體存取單元664可包括一載入單元、一儲存位址單元、及一儲存資料單元,各單元係耦接至記憶體單元670中的資料TLB單元672。指令快取單元634進一步係耦接至在記憶體單元670中的層級2(L2)快取單元676。L2快取單元676係耦接至一或多個其它層級的快取記憶體,及最終耦接至一主記憶體。
舉例言之,暫存器重新命名失序簽發/執行核心架構之實例可實施管線600如下:1)指令提取638執行提取及長度解碼階段602及604;2)解碼單元640執行解碼階段606;3)重新命名/配置器單元652執行配置階段608及重新命名階段610;4)排程器單元656執行排程階段612;5)實體暫存器檔案單元658及記憶體單元670執行暫存器讀取/記憶體讀取階段614;執行叢集660進行該執行階段616;6)記憶體單元670及實體暫存器檔案單元658執行回寫入/記憶體寫入入階段618;7)可能涉及處理階段622的例外之各個單元;及8)撤回單元654及實體暫存器檔案單元658執行確定階段624。
核心690可支持一或多個指令集(例如x86指令集(有些擴延已經增加較新版本);加州昇陽谷的MIPS 技術公司之MIPS指令集;加州昇陽谷的ARM控股公司的ARM指令集(具有選擇性額外擴延,諸如霓虹(NEON)),含括此處描述的指令。於一個實施例中,核心690包括支持緊縮資料指令集擴延(例如AVX1、AVX2),藉此允許許多多媒體應用程式使用的該等操作欲使用緊縮資料執行。
應能理解到核心可支持多執行緒(執行二或多個並列的操作或執行緒集合),且可以多種方式達成支持,包括時間截割多執行緒、同時多執行緒(於該處針對實體核心為同時多執行緒的該等執行緒各自,單一實體核心提供一邏輯核心)、或其組合(例如時間截割提取與解碼及其後同時多執行緒,諸如Intel® Hyperthreading技術)。
雖然暫存器重新命名係以失序執行脈絡描述,但須瞭解暫存器重新命名可用於有序架構。雖然處理器之具體實施例也包括分開的指令及資料快取單元634/674及一分享L2快取單元676,但替代實施例可具有用於指令及資料二者的單一內部快取記憶體,諸如層級1(L1)內部快取記憶體,或內部快的多個層級。在一些實施例中,該系統可包括一內部快取記憶體與在核心和/或處理器外部的一外部快取記憶體之組合。另外,全部外部快取記憶體可位在核心和/或處理器外部。
有序核心架構特例
圖7A-B例示說明有序核心架構之更特定實例之方塊圖,該核心將為晶片中數個邏輯區塊中之一者(包括相同類別和/或不同類別的其它核心)。取決於應用用途,邏輯區塊透過高頻寬互連網路(例如環狀網路)而與若干固定功能邏輯、記憶體I/O介面、及其它需要的I/O邏輯通訊。
圖7A為根據本發明實施例之單一處理器核心之方塊圖,連同其連接至晶粒上互連網路702及層級2(L2)快取記憶體704之其本地子集的方塊圖。在一個實施例中,指令解碼器700支持具有緊縮資料指令集擴延的x86指令集。L1快取記憶體706允許低度延遲存取快取記憶體至純量及向量單元。雖然於一個實施例中(為了簡化設計),純量單元708及向量單元710使用分開的暫存器集合(分別為純量暫存器712及向量暫存器714),在其間傳輸的資料係寫入至記憶體,然後從層級1(L1)快取記憶體706回讀,本發明之替代實施例可使用不同辦法(例如使用單一暫存器集合或包括通訊路徑,其允許資料在兩個暫存器檔案間移轉而不被寫入及回讀)。
L2快取記憶體之本地子集704乃通用L2快取記憶體部分,被劃分成分開本地子集,每個處理器核心一個子集。各個處理器核心具有一直接存取路徑至其本身的L2快取記憶體之本地子集704。由一處理器核心所讀取的資料係儲存於其L2快取子集704,且與其它處理器核心存取其本身的本地L2快取子集並列地能夠被快速存 取。由處理器核心寫入入的資料係儲存於其本身的L2快取子集704,及若有所需,從其它子集刷新。環狀網路確保分享資料的同調。環狀網路乃雙向以允許代理者諸如處理器核心、L2快取記憶體及其它邏輯區塊在晶片內部彼此通訊。各個環狀資料路徑為每個方向1012-位元寬。
圖7B為根據本發明實施例之圖7A中的處理器核心部分之展開圖。圖7B包括L1快取記憶體704的L1資料快取記憶體706A部分,以及有關向量單元710及向量暫存器714之進一步細節。更明確言之,向量單元710為16-寬向量處理單元(VPU)(參考16-寬ALU 728),其係執行整數指令、單精度浮點指令、及雙精度浮點指令中之一或多者。向量處理單元(VPU)支持使用調合單元720調合該暫存器輸入,使用數值轉換單元722A-B做數值轉換,及使用複製單元724對記憶體輸入作複製。寫入遮罩暫存器726允許預測所得的向量寫入。
處理器具有機體記憶體控制器和繪圖。
圖8為根據本發明實施例之處理器的方塊圖,該處理器800可具有多於一個核心、可具有整合記憶體控制器及可具有整合圖形。圖8的實線框例示說明一處理器800具有單一核心802A、一系統代理810、一或多個匯流排控制器單元816之一集合,而選擇性地增加的虛線框例示說明另一個處理器800具有多個核心802A-N、於系統代理單元810中之一或多個積體記憶體控制器單元814、及特殊用途邏輯808。
如此,處理器800的不同實施可包括:1)一CPU具有特殊用途邏輯808係為積體圖形和/或科學(資料通量)邏輯(可包括一或多個核心),及核心802A-N係為一或多個通用核心(例如通用有序核心、通用失序核心、二者的組合);2)一共處理器具有核心802A-N係為意圖主要用於圖形和/或科學(資料通量)的大量通用核心;3)一共處理器具有核心802A-N係為大量通用有序核心。如此,處理器800可為通用處理器、共處理器或特有處理器,諸如網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高資料通量多積體核心(MIC)共處理器(含30或以上核心)、嵌入式處理器等。處理器可在一或多個晶片上實施。處理器800可為一或多個基材的一部分,和/或可使用多項處理技術諸如BiCMOS、CMOS、或NMOS而實施在一或多個基材上。
記憶體階層關係包括在核心內部的一或多個快取層級、一或多個共享快取單元806之集合、及耦接至積體記憶體控制器單元814之集合的外部記憶體(圖中未顯示)。共享快取單元之集合806可包括一或多個中階快取記憶體,諸如層級2(L2)、層級3(L3)、層級4(L4)、或其它層級快取記憶體、最末層級快取記憶體LLC)、和/或其組合。雖然於一個實施例中,一環狀基礎互連單元812互連積體圖形邏輯808、共享快取單元之集合806、及系統代理810/積體記憶體控制器單元814,但其它實施例可使用任何數目的眾所周知技術以互連此等單元。於一個實 施例中,在一或多個快取單元806與核心802A-N間維持同調。
在一些實施例中,核心802A-N中之一或多者可為多執行緒。系統代理810包括協調與操作核心802A-N的該等組件。系統代理單元810可包括例如電力控制單元(PCU)及一顯示單元。電力控制單元(PCU)可為或包括調節核心802A-N及積體圖形邏輯808所需邏輯及組件。顯示單元係用以驅動一或多個外部連結的顯示器。
核心802A-N就架構指令集而言可為同質或異質;換言之,核心802A-N中之二或多者可能可執行相同指令集,而其它者只能執行該指令集之一子集或一不同指令集。
電腦架構實例
圖9至圖12為之電腦架構實例之方塊圖。其它本領域已知之針對膝上型電腦、桌上型電腦、手持式個人電腦、個人數位助理器、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、小區式電話、可攜式媒體播放器、手持式裝置及其它多種電子裝置的其它系統設計及組態也屬適宜。概略言之,能夠結合一處理器和/或其它此處揭示的執行邏輯的大量多種系統及電子裝置大致上為適宜。
現在參考圖9,圖9顯示依據本發明之一個 實施例一種系統900之方塊圖。系統900可包括一或多個處理器910、915,耦接至控制器集線器920。在一個實施例中,控制器集線器920包括一圖形記憶體控制器集線器(GMCH)990及一輸入/輸出集線器(IOH)950(可位在分開的晶片上);GMCH 990包括記憶體及圖形控制器,其耦接記憶體940及一共處理器945;IOH 950係耦接輸入/輸出(I/O)裝置960至GMCH 990。另外,記憶體及圖形控制器中之一或二者係整合於處理器內部(如本文描述),記憶體940及共處理器945係直接地耦接至在單一晶片內的處理器910及控制器集線器920與IOH 950。
額外處理器915的選擇性地本質係以虛線標示於圖9。各個處理器910、915可包括此處描述的處理核心中之一或多者且可為處理器800的某些版本。
記憶體940例如可為動態隨機存取記憶體(DRAM)、相變記憶體(PCM)或二者的組合。對至少一實施例,控制器集線器920透過多插匯流排諸如前端匯流排(FSB)、點對點介面諸如快速路徑互連(QPI)或類似的連結995而與處理器910、915通訊。
在一實施例中,共處理器945乃特用處理器,諸如高資料通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等。於實施例中,控制器集線器920可包括一積體圖形加速器。
就一定範圍的優劣量表而言,包括架構、微架構、熱、功耗特性等,處理器910、915間可有多項差 異。
在一實施例中,處理器910執行指令其控制通用類別的處理操作。該等指令內部嵌入共處理器指令。處理器910識別此等共處理器指令乃屬須由附接的共處理器945執行的類別。據此,處理器910在共處理器匯流排或其它互連上簽發此等共處理器指令(或表示共處理器指令的控制信號)給共處理器945。共處理器945接收且執行所接收的共處理器指令。
現在參考圖10,顯示依據本發明之一實施例第一更特定系統1000之一方塊圖。如圖10所示,微處理器系統1000為點對點互連系統,包括透過點對點互連1050而耦接的第一處理器1070及第二處理器1080。處理器1070及1080各自可為處理器800的某個版本。於本發明之一個實施例中,處理器1070及1080分別為處理器910及915,而共處理器1038為共處理器945。在另一個實施例中,處理器1070及1080分別為處理器910及共處理器945。
處理器1070及1080係顯示為分別包括積體記憶體控制器(IMC)單元1072及1082。處理器1070也包括點對點(P-P)介面1076及1078作為其匯流排控制器單元之一部分;同理,第二處理器1080可包括P-P介面1086及1088。處理器1070、1080可使用P-P介面電路1078、1088透過點對點(P-P)介面1050交換資訊。如圖10所示,IMC 1072及1082耦接該等處理器至個別記憶 體,亦即記憶體1032及記憶體1034,其可為本地附接至個別處理器的主記憶體的一部分。
處理器1070、1080可使用點對點介面電路1076、1094、1086、1098透過點對點(P-P)介面1052、1054而各自與一晶片組1090交換資訊。晶片組1090也可透過一高效能介面1039而與共處理器1038交換資訊。在一個實施例中,共處理器1038乃特用處理器,諸如高資料通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等。
一分享快取記憶體(圖中未顯示)可含括於任一處理器內或二處理器外部,但仍然透過P-P互連而與處理器連結,使得當一處理器被置於低功率模式時,任一處理器的或二處理器的本地快取記憶體資訊可被儲存於該分享快取記憶體。
晶片組1090可透過一介面1096而耦接至一第一匯流排1016。在一個實施例中,第一匯流排1016可為周邊組件互連(PCI)匯流排,或諸如PCI快速匯流排或其它第三代I/O互連匯流排之一匯流排,但本發明之範圍不如此限制。
如圖10所示,多個I/O裝置1014可連同一匯流排橋接器1018而耦接至第一匯流排1016,該匯流排橋接器1018係耦接第一匯流排1016至第二匯流排1020。在一個實施例中,一或多個額外處理器1015,諸如共處理器、高資料通量MIC處理器、GPGPU、加速器 (例如圖形加速器或數位信號處理器(DSP)單元)、可現場程式規劃閘陣列、或任何其它處理器係耦接至第一匯流排1016。在一個實施例中,第二匯流排1020可為低接腳數目(LPC)匯流排。在一個實施例中,多個裝置可耦接至第二匯流排1020,包括例如鍵盤和/或滑鼠1022、通訊裝置1027及儲存單元1028,諸如磁碟機或其它大容量儲存裝置,可包括指令/碼及資料1030。又復,音訊I/O 1024可耦接至第二匯流排1020。注意其它架構係屬可能。舉例言之,替代圖10之點對點架構,一系統可實施多插匯流排或其它此種架構。
現在參考圖11,顯示依據本發明之一實施例第三系統1100之一方塊圖。圖10與圖11中相似的元件具有相似的元件符號,及圖10的某些方面已經從圖11刪除以免不必要地遮掩圖11的其它方面。
圖11例示說明處理器1070、1080分別地可包括積體記憶體及I/O控制邏輯(「CL」)1072及1082。於至少一實施例中,CL 1072、1082可包括積體記憶體控制器單元且包括I/O控制邏輯。圖11例示說明不僅記憶體1032、1034耦接至CL 1072、1082,I/O裝置1114也耦接至控制邏輯1072、1082。舊式I/O裝置1115係耦接至晶片組1090。
現在參考圖12,顯示依據本發明之一個實施例,一個SoC 1200之方塊圖。圖8中的相似元件具有類似的元件符號。又,虛線框乃更為先進SoC上的選擇性 特徵。於圖12中,一互連單元1202係耦接至:一應用程式處理器1210其包括一或多個核心202A-N與分享快取單元806之一集合;一系統代理單元810;一匯流排控制器單元816;一積體記憶體控制器單元814;一或多個媒體處理器1220之一集合其可包括積體圖形邏輯、影像處理器、音訊處理器、及視訊處理器;一靜態隨機存取記憶體(SRAM)單元1230;一直接記憶體存取(DMA)單元1232;及用以耦接至一或多個外部顯示器的一顯示單元1240。在一個實施例中,該(等)共處理器1220包括特用處理器,諸如網路或通訊處理器、壓縮引擎、GPGPU、高資料通量MIC處理器、嵌入式處理器等。
如此處揭示的機構之實施例可於硬體、軟體、韌體或此等實施辦法的組合而予實施。本發明之實施例可實施為電腦程式或在可規劃系統包含至少一處理器、儲存系統(包括依電性及非依電性記憶體和/或儲存元件)、至少一輸入裝置、及至少一輸出裝置上執行的程式碼。
程式碼諸如圖10例示說明之碼1030可施加至輸入指令以執行此處描述的功能及產生輸出資訊。輸出資訊可以已知方式施加至一或多個輸出裝置。用於本應用之目的,處理系統包括具有一處理器的任何系統,諸如數位信號處理器(DSP)、微控制器、特定應用積體電路(ASIC)或微處理器。
程式碼可於高階程式或目標導向程式語言實施以與一處理系統處理器。若有所需,程式碼也可於組合 語言或機器語言實施。實際上,此處描述的機構之範圍並非限於任何特定程式語言。總而言之,該語言可為彙編語言或解譯語言。
至少一實施例的一或多個方面可藉表示處理器內部的多個邏輯而儲存在機器可讀取媒體上的代表性指令實施,該等指令當由一機器讀取時使得該機器組合邏輯以執行此處描述的技術。此種表示型態稱作為「IP核心」,可儲存在具體有形的機器可讀取媒體上且供給各個客戶或製造廠以載入實際上生產該邏輯或處理器的組裝機器內。
此等機器可讀取儲存媒體可包括但非僅限於由機器或裝置所製造或製成的非過渡具體有形的物件配置,諸如硬碟、任何其它類別的碟片包括軟碟、光碟、光碟-唯讀記憶體(CD-ROM)、光碟可覆寫入式(CD-RW)、及磁光碟;半導體裝置諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM)諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可規劃唯讀記憶體(EPROM)、快閃記憶體、可電氣抹除可規劃唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁卡或光卡;或適用以儲存電子指令的任何其它類別的媒體。
因此,本發明之實施例也包括非過渡具體有形的機器可讀取媒體含有指令或含有設計資料,諸如硬體描述語言(HDL)其定義此處描述的結構、電路、裝置、處理器和/或系統特徵。此等實施例也可稱作為程式產品。
仿真(包含二進制轉譯、碼變形等)
於某些情況下,指令轉換器可用以將指令從來源指令集轉換成目標指令集。舉例言之,指令轉換器可將一指令轉譯(例如使用靜態二進制轉譯、含動態編譯的動態二進制轉譯)、變形、仿真或以其它方式轉換成欲藉核心處理的一或多個其它指令。指令轉換器可於軟體、硬體、韌體或其組合實施。指令轉換器可在處理器上、不在處理器上、或部分在及部分不在處理器上。
圖13為根據本發明實施例之對比軟體指令轉換器用以將在來源指令集中之二進制指令轉換成在目標指令集中之二進制指令的方塊圖。在該具體實施例中,指令轉換器為軟體指令轉換器,但另外,指令轉換器可於軟體、韌體、硬體、或其各項組合實施。圖13顯示可使用x86編譯器1304編譯以產生x86二進制碼1306的高階語言1302,該x86二進制碼1306可由具有至少一x86指令集核心之處理器1316本機執行。具有至少一x86指令集核心1316之處理器表示藉相容式執行或以其它方式處理(1)英特爾x86指令集核心的該指令集之一相當大部分或(2)靶定以在具至少一x86指令集核心的一英特爾處理器跑的應用程式或其它軟體之目標碼版本而執行與具至少一x86指令集核心的一英特爾處理器實質上相同功能以達成與具至少一x86指令集核心的一英特爾處理器實質上相同結果。x86編譯器1304表示可操作而產生x86二進制碼1306(例如目標碼)的一編碼器,該等x86二進制碼1306 有或無額外鏈結處理可在具至少一x86指令集核心的該處理器1316上執行。同理,圖13顯示於高階語言1302的該程式可使用另一指令集編譯器1308編譯以產生另一指令集二進制碼1310,可藉不具至少一x86指令集核心的一處理器1314本機執行(例如具有執行加州昇陽谷的MIPS技術公司之MIPS指令集和/或執行加州昇陽谷的ARM控股公司的ARM指令集之核心的一處理器)。指令轉換器1312係用以將x86二進制碼1306轉換成可由不具一x86指令集核心的該處理器1314本機執行的碼。此種轉換碼不可能與另一指令集二進制碼1310相同,原因在於難以製造可達成此項目的之一指令轉換器;但轉換碼將達成一般操作且係由得自該另一指令集的指令組成。如此,指令轉換器1312表示軟體、韌體、硬體或其組合其透過仿真、模擬或任何其它處理允許不具至少一x86指令集處理器或核心的一處理器或其它電子裝置執行該x86二進制碼1306。

Claims (18)

  1. 一種硬體設備,包含:解碼器硬體,其用以解碼指令;運算元檢索硬體,其用以從與由該解碼器硬體解碼之該指令相關聯的至少一來源運算元檢索資料;執行硬體,其用以執行解碼的該指令以產生包括至少一狀態位元的結果,且導致該結果和至少一狀態位元被儲存在單一目的地實體儲存位置,其中該至少一狀態位元和結果透過該單一暫存器之讀取為可存取的。
  2. 如申請專利範圍第1項所述之硬體設備,更包含:暫存器重新命名硬體,其用以映射該指令之架構暫存器至實體暫存器、以及映射該設備之狀態暫存器至該實體暫存器。
  3. 如申請專利範圍第1項所述之硬體設備,其中該實體暫存器用以儲存資料在最低有效位元以及儲存狀態位元在最高有效位元。
  4. 如申請專利範圍第1項所述之硬體設備,其中該實體暫存器用以儲存資料在最高有效位元以及儲存狀態位元在最低有效位元。
  5. 如申請專利範圍第1項所述之硬體設備,其中該至少一狀態位元包含用於進位、正負號、溢位、同位、零和調整中至少一者的位元。
  6. 如申請專利範圍第1項所述之硬體設備,其中該 指令為條件分支、條件跳躍、條件移動和條件記憶體操作中的一者。
  7. 如申請專利範圍第1項所述之硬體設備,其中該指令包括用以指示該指令係用以導致該至少一狀態位元之儲存隨著該結果至該單一目的地實體儲存位置之操作碼。
  8. 如申請專利範圍第1項所述之硬體設備,其中該指令包括用以指示該指令係用以導致該至少一狀態位元之儲存連同該結果至該單一目的地實體儲存位置之目的地運算元。
  9. 一種硬體設備,包含:解碼器硬體,其用以解碼指令;運算元檢索硬體,其用以從與由該解碼器硬體解碼之該指令相關聯的至少一來源運算元檢索資料;執行硬體,其用以執行解碼的該指令以基於該至少一來源實體暫存器之狀態條件之評估條件地執行該指令之操作,其中該來源運算元除了資料外包括至少一狀態位元。
  10. 如申請專利範圍第9項所述之硬體設備,更包含:暫存器重新命名硬體,其用以映射該指令之架構暫存器至實體暫存器、以及映射該設備之狀態暫存器至該實體暫存器。
  11. 如申請專利範圍第9項所述之硬體設備,其中該實體暫存器用以儲存資料在最低有效位元以及儲存狀態位元在最高有效位元。
  12. 如申請專利範圍第9項所述之硬體設備,其中該實體暫存器用以儲存資料在最高有效位元以及儲存狀態位元在最低有效位元。
  13. 如申請專利範圍第9項所述之硬體設備,其中該至少一狀態位元包含用於進位、正負號、溢位、同位、零和調整中至少一者的位元。
  14. 如申請專利範圍第9項所述之硬體設備,其中該指令為條件分支、條件跳躍、條件移動和條件記憶體操作中的一者。
  15. 如申請專利範圍第9項所述之硬體設備,其中該指令包括用來指示該指令係用以讀取來自包括至少一狀態位元和資料之該來源實體暫存器之狀態資訊之操作碼。
  16. 如申請專利範圍第9項所述之硬體設備,其中該指令包括該來源實體暫存器係用以儲存狀態位元和資料中的至少一者之指示。
  17. 如申請專利範圍第9項所述之硬體設備,其中該指令包括目的地運算元。
  18. 如申請專利範圍第9項所述之硬體設備,其中該指令包括偏移運算元。
TW105116130A 2015-06-27 2016-05-24 用於改善狀態相依計算效能的系統、方法和設備 TW201712530A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/752,887 US20160378480A1 (en) 2015-06-27 2015-06-27 Systems, Methods, and Apparatuses for Improving Performance of Status Dependent Computations

Publications (1)

Publication Number Publication Date
TW201712530A true TW201712530A (zh) 2017-04-01

Family

ID=56117513

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105116130A TW201712530A (zh) 2015-06-27 2016-05-24 用於改善狀態相依計算效能的系統、方法和設備

Country Status (8)

Country Link
US (1) US20160378480A1 (zh)
EP (1) EP3109754A1 (zh)
JP (1) JP6253706B2 (zh)
KR (1) KR20170001578A (zh)
CN (1) CN106293628A (zh)
BR (1) BR102016012096A2 (zh)
DE (1) DE102016006560A1 (zh)
TW (1) TW201712530A (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6795992B2 (ja) 2017-02-01 2020-12-02 西川ゴム工業株式会社 防音材
US11366663B2 (en) 2018-11-09 2022-06-21 Intel Corporation Systems and methods for performing 16-bit floating-point vector dot product instructions
CN111338640B (zh) * 2020-02-15 2022-06-07 苏州浪潮智能科技有限公司 一种可动态调整的非对称指令重链接方法和装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6006324A (en) * 1995-01-25 1999-12-21 Advanced Micro Devices, Inc. High performance superscalar alignment unit
US6604190B1 (en) * 1995-06-07 2003-08-05 Advanced Micro Devices, Inc. Data address prediction structure and a method for operating the same
US5864707A (en) * 1995-12-11 1999-01-26 Advanced Micro Devices, Inc. Superscalar microprocessor configured to predict return addresses from a return stack storage
US6263416B1 (en) * 1997-06-27 2001-07-17 Sun Microsystems, Inc. Method for reducing number of register file ports in a wide instruction issue processor
US6230262B1 (en) * 1998-07-31 2001-05-08 Advanced Micro Devices, Inc. Processor configured to selectively free physical registers upon retirement of instructions
US6986023B2 (en) * 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
US7386705B2 (en) * 2002-08-27 2008-06-10 Mosaid Technologies Inc. Method for allocating processor resources and system for encrypting data
GB2402763B (en) * 2003-06-13 2006-03-01 Advanced Risc Mach Ltd Data access program instruction encoding
US7234044B1 (en) * 2003-12-03 2007-06-19 Altera Corporation Processor registers having state information
KR20090009981A (ko) * 2006-06-15 2009-01-23 닛본 덴끼 가부시끼가이샤 프로세서 및 명령 제어 방법
JP4228241B2 (ja) * 2006-12-13 2009-02-25 ソニー株式会社 演算処理装置
GB2488980B (en) * 2011-03-07 2020-02-19 Advanced Risc Mach Ltd Address generation in a data processing apparatus
US9304940B2 (en) * 2013-03-15 2016-04-05 Intel Corporation Processors, methods, and systems to relax synchronization of accesses to shared memory
US9367314B2 (en) * 2013-03-15 2016-06-14 Intel Corporation Converting conditional short forward branches to computationally equivalent predicated instructions

Also Published As

Publication number Publication date
JP2017016640A (ja) 2017-01-19
JP6253706B2 (ja) 2017-12-27
BR102016012096A2 (pt) 2017-11-07
DE102016006560A1 (de) 2016-12-29
US20160378480A1 (en) 2016-12-29
CN106293628A (zh) 2017-01-04
EP3109754A1 (en) 2016-12-28
KR20170001578A (ko) 2017-01-04

Similar Documents

Publication Publication Date Title
CN108845826B (zh) 多寄存器存储器访问指令、处理器、方法和系统
US10387148B2 (en) Apparatus and method to reverse and permute bits in a mask register
CN107918546B (zh) 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统
JP2017016637A (ja) 密結合ヘテロジニアスコンピューティングのためのハードウェアプロセッサ及び方法
JP5985526B2 (ja) システムコールのためのロバスト且つ高性能な命令
JP5806748B2 (ja) 書き込みマスク・レジスタの末尾の最下位マスキング・ビットを判定するためのシステム、装置、および方法
CN110659129A (zh) 用于数据表示之间的一致、加速的转换的装置和方法
KR20150091462A (ko) 충돌 검출을 수행하고, 레지스터의 콘텐츠를 다른 레지스터의 데이터 구성요소 위치들로 브로드캐스트하기 위한 시스템들, 장치들 및 방법들
TWI752034B (zh) 用以校驗具有指示校驗位元值之位元的位元校驗處理器、方法、系統與指令
JP2018500659A (ja) 高速ベクトルによる動的なメモリ競合検出
TW201712530A (zh) 用於改善狀態相依計算效能的系統、方法和設備
US10069512B2 (en) Systems, methods, and apparatuses for decompression using hardware and software
US9207941B2 (en) Systems, apparatuses, and methods for reducing the number of short integer multiplications
JP5753603B2 (ja) データ要素内のビットをゼロ化するためのシステム、装置、および方法
CN112579160A (zh) 用于具有减少的硬件要求的存储配对的装置和方法