TWI450188B - 具有條件指令之微處理器、其處理方法及電腦程式產品 - Google Patents

具有條件指令之微處理器、其處理方法及電腦程式產品 Download PDF

Info

Publication number
TWI450188B
TWI450188B TW101112249A TW101112249A TWI450188B TW I450188 B TWI450188 B TW I450188B TW 101112249 A TW101112249 A TW 101112249A TW 101112249 A TW101112249 A TW 101112249A TW I450188 B TWI450188 B TW I450188B
Authority
TW
Taiwan
Prior art keywords
architectural
condition
instruction
microinstruction
flag
Prior art date
Application number
TW101112249A
Other languages
English (en)
Other versions
TW201241741A (en
Inventor
G Glenn Henry
Gerard M Col
Rodney E Hooker
Terry Parks
Original Assignee
Via Tech Inc
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
Priority claimed from US13/224,310 external-priority patent/US8880851B2/en
Priority claimed from US13/333,520 external-priority patent/US9032189B2/en
Priority claimed from US13/333,572 external-priority patent/US8880857B2/en
Priority claimed from US13/333,631 external-priority patent/US8924695B2/en
Application filed by Via Tech Inc filed Critical Via Tech Inc
Publication of TW201241741A publication Critical patent/TW201241741A/zh
Application granted granted Critical
Publication of TWI450188B publication Critical patent/TWI450188B/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/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/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/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime 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 Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)

Description

具有條件指令之微處理器、其處理方法及電腦程式產品 【相關申請案之參考文獻】
本申請案係同在申請中美國專利正式申請案13/224,310(申請日為09/01/2011)之部分連續案,該案件整體皆納入本案參考,且本案引用下列美國臨時申請案之優先權,該些案件整體皆納入本案參考:
本案引用美國臨時申請案61/537,473(申請日為09/21/2011)之優先權,該些案件整體皆納入本案參考。
本申請案係以下美國正式專利申請案之相關案:
本發明係關於微處理器之技術領域,特別是關於在指令集中具有條件指令之微處理器。
由Intel Corporation of Santa Clara,California開發出來的x86處理器架構以及由ARM Ltd.of Cambridge,UK開發出來的進階精簡指令集機器(advanced risc machines,ARM)架構係電腦領域中兩種廣為人知的處理器架構。許多使用ARM或x86處理器之電腦系統已經出現,並且,對於此電腦系統的需求正在快速成長。現今,ARM架構處理核心係主宰低功耗、低價位的電腦市場,例如手機、手持式電子產品、平板電腦、網路路由器與集線器、機上盒等。舉例來說,蘋果iPhone與iPad主要的處理能力即是由ARM架構之處理核心提供。另一方面,x86架構處理器則是主宰需要高效能之高價位市場,例如膝上電腦、桌上型電腦與伺服器等。然而,隨著ARM核心效能的提升,以及某些x86處理器在功耗與成本的改善,前述低價位與高價位市場的界線逐漸模糊。在行動運算市場,如智慧型手機,這 兩種架構已經開始激烈競爭。在膝上電腦、桌上型電腦與伺服器市場,可以預期這兩種架構將會有更頻繁的競爭。
前述競爭態勢使得電腦裝置製造業者與消費者陷入兩難,因而無從判斷哪一個架構將會主宰市場,更精確來說,無法判定哪一種架構的軟體開發商將會開發更多軟體。舉例來說,一些每月或每年會定期購買大量電腦系統的消費個體,基於成本效率的考量,例如大量採購的價格優惠與系統維修的簡化等,會傾向於購買具有相同系統配置設定的電腦系統。然而,這些大型消費個體中的使用者群體,對於這些具有相同系統配置設定的電腦系統,往往有各種各樣的運算需求。具體來說,部分使用者的需求是希望能夠在ARM架構處理器上執行程式,其他部分使用者的需求是希望能夠在x86架構處理器上執行程式,甚至有部分使用者希望能夠同時在兩種架構上執行程式。此外,新的、預期外的運算需求也可能出現而需要使用另一種架構。在這些情況下,這些大型個體所投入的部分資金就變成浪費。在另一個例子中,使用者具有一個重要的應用程式,只能在x86架構上執行,因而他購買了x86架構的電腦系統(反之亦然)。不過,這個應用程式的後續版本改為針對ARM架構開發,並且優於原本的x86版本,使用者會希望轉換架構來執行新版本的應用程式,但不幸地,他已經對不傾向使用的架構投入相當成本。同樣地,使用者原本投資於只能在ARM架構上執行的應用程式,但是後來也希望能夠使用針對x86架構開發而未見於ARM架構的應用程式或是優於以ARM架構開發的應用程式,亦會遭遇這 樣的問題,反之亦然。值得注意的是,雖然小實體或是個人投入的金額較大實體為小,然而投資損失比例可能更高。其他類似之投資損失的例子可能出現在各種不同的運算市場中,例如由x86架構轉換至ARM架構或是由ARM架構轉換至x86架構的情況。最後,投資大量資源來開發新產品的運算裝置製造業者,例如OEM廠商,也會陷入此架構選擇的困境。若是製造業者基於x86或ARM架構研發製造大量產品,而使用者的需求突然改變,則會導致許多有價值之研發資源的浪費。
對於運算裝置之製造業者與消費者,能夠保有其投資免於受到二種架構中何者勝出之影響是有幫助的,因而有必要提出一種解決方法讓系統製造業者發展出可讓使用者同時執行x86架構與ARM架構之程式的運算裝置。
使系統能夠執行多個指令集程式的需求由來已久,這些需求主要是因為消費者會投入相當成本在舊硬體上執行的軟體程式,而其指令集往往不相容於新硬體。舉例來說,IBM 360系統Model 30即具有相容於IBM 1401系統的特徵,來緩和使用者由1401系統轉換至較高效能與改良特徵之360系統的痛苦。Model 30具有360系統與1401系統之唯讀儲存控制(Read Only Storage,ROS),使其在輔助儲存空間預先存入所需資訊的情況下能夠使用於1401系統。此外,在軟體程式以高階語言開發的情況下,新的硬體開發商幾乎沒有辦法控制為舊硬體所編譯的軟體程式,而軟體開發商也欠缺動力為新硬體重新編譯(re-compile)源碼,此情形尤其發生在軟體開發商與硬體開發商是不同個 體的情況。Siberman與Ebcioglu於Computer,June 1993,No.6提出之文章“An Architectural Framework for Supporting Heterogeneous Instruction-Set Architectures”中揭露一種利用執行於精簡指令集(RISC)、超純量架構(superscalar)與超長指令字(VLIW)架構(下稱原生架構)之系統來改善既存複雜指令集(CISC)架構(例如IBM S/390)執行效率的技術,其所揭露之系統包含執行原生碼之原生引擎(native engine)與執行目的碼之遷移引擎(migrant engine),並可依據轉譯軟體將目的碼(object bode)轉譯為原生碼(native code)的轉譯效果,在這兩種編碼間視需要進行轉換。請參照2006年5月16日公告之美國專利第7,047,394號專利案,Van Dyke et al.揭露一處理器,具有用以執行原生精簡指令集(Tapestry)之程式指令的執行管線,並利用硬體轉譯與軟體轉譯之結合,將x86程式指令轉譯為原生精簡指令集之指令。Nakada et al.提出具有ARM架構之前端管線與Fujitsu FR-V(超長指令字)架構之前端管線的異質多線程處理器(heterogeneous SMT processor),ARM架構前端管線係用於(irregular)非規則軟體程式(如作業系統),而Fujitsu FR-V(超長指令字)架構之前端管線係用於多媒體應用程式,其將一增加的超長指令字佇列提供予FR-V超長指令字之後端管線以維持來自前端管線之指令。請參照Buchty 與Weib,eds,Universitatsverlag Karlsruhe於2008年11月在First International Workshop on New Frontiers in High-performance and Hardware-aware Computing(HipHaC’08),Lake Como,Italy,(配合MICRO-41)發表之論文集 (ISBN 978-3-86644-298-6)的文章“OROCHI:A Multiple Instruction Set SMT Processor”。文中提出之方法係用以降低整個系統在異質系統單晶片(SOC)裝置(如德州儀器OMAP應用處理器)內所佔據之空間,此異質系統單晶片裝置具有一個ARM處理器核心加上一個或多個協處理器(co-processors)(例如TMS320、多種數位訊號處理器、或是多種圖形處理單元(GPUs))。這些協處理器並不分享指令執行資源,只是整合於同一晶片上之不同處理核心。
軟體轉譯器(software translator)、或稱軟體模擬器(software emulator,software simulator)、動態二進制碼轉譯器等,亦被用於支援將軟體程式在與此軟體程式架構不同之處理器上執行的能力。其中受歡迎的商用實例如搭配蘋果麥金塔(Macintosh)電腦之Motorola 68K-to-PowerPC模擬器,其可在具有PowerPC處理器之麥金塔電腦上執行68K程式,其可在具有x86處理器之麥金塔電腦上執行68K程式。位於加州聖塔克拉拉(Santa Clara,California)的全美達公司,結合超長指令字(VLIW)之核心硬體與“純粹軟體指令之轉譯器(亦即程式碼轉譯軟體(Code Morphing Software))以動態地編譯或模擬(emulate)x86程式碼序列”以執行x86程式碼,請參照2011年維基百科針對全美達(Transmeta)的說明<http://en.wikipedia.org/wiki/Transmeta>。另外,參照1998年11月3日由Kelly et al.提出之美國專利第5,832,205號公告案。IBM的DAISY(Dynamic Architecture Instruction Set from Yorktown)系統具有超長指令字(VLIW)機器與動 態二進制軟體轉譯,可提供100%的舊架構軟體相容模擬。DAISY具有位於唯讀記憶體內之虛擬機器觀測器(Virtual Machine Monitor),以平行處理(parallelize)與儲存超長指令字原始碼(VLIW primitives)至未見於舊有系統架構之部分主要記憶體內,期能避免這些舊有體系架構之程式碼片段在後續程序被重新編譯(re-translation)。DAISY具有高速編譯器優化演算法(fast compiler optimization algorithms)以提升效能。QEMU係一具有軟體動態轉譯器之機器模擬器(machine emulator)。QEMU可在多種主系統(host),如x86、PowerPC、ARM、SPARC、Alpha與MIPS,模擬多種中央處理器,如x86、PowerPC、ARM與SPARC。請參照QEMU,a Fast and Portable Dynamic Translator,Fabrice Bellard,USENIX Association,FREENIX Track:2005 USENIX Annual Technical Conference,如同其開發者所稱“動態轉譯器對目標處理器指令執行時的轉換(runtime conversion),將其轉換至主系統指令集,所產生的二進制碼係儲存於一轉譯快取以利重複取用。…QEMU〔較之其他動態轉譯器〕遠為簡單,因為它只連接GNC C編譯器於離線(off line)時所產生的機器碼片段”。同時可參照2009年6月19日Adelaide大學Lee Wang Hao的學位論文“ARM Instruction Set Simulation on Multi-core x86 Hardware”。雖然以軟體轉譯為基礎之解決方案所提供之處理效能可以滿足多個運算需求之一部分,但是不大能夠滿足多個使用者的情況。
靜態(static)二進位制轉譯是另一種具有高效能潛力的技術。不過,二進位制轉譯技術之使用存在技術上的問題 (例如自我修改程式碼(self-modifying code)、只在執行時(run-time)可知之間接分支(indirect branches)數值)以及商業與法律上的障礙(例如:此技術可能需要硬體開發商配合開發散佈新程式所需的管道;對原程式散佈者存在潛在的授權或是著作權侵害的風險)。
ARM指令集架構(ISA)具有條件指令執行之特色。如ARM架構參考手冊(ARM Architecture Reference Manual)第A4-3頁所述:“大部分ARM指令可被有條件地執行,意謂若是APSR中的N、Z、C與V旗標滿足指令所指定的條件,他們才會在程式者之模式操作、記憶體與協同處理器發揮正常的效果。若是這些旗標不滿足條件,指令就會如同一個不操作(NOP)機器指令,此指令執行至下一個正常指令,包括對於例外事件採行之所有相關的確認動作,但不會有其他效果。”
條件執行有利於縮小指令碼的尺寸,並能透過縮減分支指令的數量來提升效能,但指令錯誤預測則會伴隨效能減損。因此,如何有效率地執行條件指令,尤其在支援高微處理器時脈的情況,是亟待解決的問題。
本發明之一實施例提供一微處理器。此微處理器具有多個架構條件旗標並執行一架構指令。此架構指令指示微處理器對於第一與第二來源運算元執行一操作以產生一結果,並只在這些架構條件旗標滿足架構指令所指定之一條件的情況下,將此結果寫入一目的暫存器。此微處理器具 有一硬體指令轉譯器,接收架構指令並對應地將此架構指令轉譯為第一與第二微指令。微處理器具有一執行管線執行由硬體指令轉譯器接收之微指令。相應於第一微指令,執行管線對於這些來源運算元執行前述操作以產生前述結果。相應於第二微指令,執行管線在這些架構條件旗標滿足條件之情況下,將第一微指令所產生之前述結果寫入目的暫存器,並在這些架構條件旗標不滿足條件之情況下,將目的暫存器當前的值寫入目的暫存器。
本發明之另一實施例提供一具有多個架構條件旗標之微處理器。此微處理器執行一架構指令。此架構指令指示微處理器對於一第一來源運算元執行一移位操作以產生一第一結果,對於第一結果與一第二來運算元執行一第二操作以產生一第二結果,並只在這些架構條件旗標滿足架構指令所指定之一條件下,將前述第二結果寫入目的暫存器。微處理器具有一硬體指令轉譯器接收架構指令並對應地將架構指令轉譯為至少第一與第二微指令。微處理器並具有一執行管線執行由硬體指令轉譯器所接收之微指令。相應於第一微指令,執行管線對第一來源運算元執行前述移位操作以產生前述第一結果。相應於第二微指令,執行管線在這些架構條件旗標滿足條件之情況下,將第二結果寫入目的暫存器,而在這些架構條件旗標不滿足條件之情況下,將將目的暫存器當前的值寫入目的暫存器。
本發明之又一實施例提供用於一微處理器之處理方法。此微處理器具有多個架構條件旗標並執行一架構指令。此架構指令指示微處理器對於第一與第二來源運算元 執行一操作以產生一結果,並且只在這些架構條件旗標滿足架構指令所指定之一條件的情況下,將此結果寫入一目的暫存器。此方法包括將架構指令轉譯為第一與第二微指令,其中,此轉譯步驟係由微處理器之一硬體指令轉譯器進行。此方法並包括執行由硬體指令轉譯器所接收之微指令,此執行步驟係由微處理器之一執行管線進行。執行第一微指令之步驟包括對來源運算元執行前述操作以產生前述結果。執行第二微指令之步驟包括,在架構條件旗標滿足條件的情況下,將第一微指令產生之結果寫入目的暫存器,以及在架構條件旗標不滿足條件的情況下,將目的暫存器當前的值寫入目的暫存器。
本發明之又一實施例提供用於一微處理器之處理方法。此微處理器具有多個架構條件旗標並執行一架構指令。此架構指令指示微處理器對第一來源運算元執行一移位操作以產生一第一結果,對第一結果與第二來運算元執行一第二操作以產生一第二結果,並且只在架構條件旗標滿足架構指令所指定之條件的情況下,將第二結果寫入一目的暫存器。此方法包括將架構指令轉譯為至少第一與第二微指令,其中,此轉譯步驟係由微處理器之一硬體指令轉譯器進行。此方法包括執行此由硬體指令轉譯器接收之微指令,其中,此執行步驟係由微處理器之一執行管線進行。執行第一微指令之步驟包括對第一來源運算元執行前述移位操作以產生前述第一結果。執行第二微指令之步驟包括,在架構條件旗標滿足條件之情況下,將第二結果寫入目的暫存器,而在架構條件旗標不滿足條件之情況下, 將目的暫存器當前的值寫入目的暫存器。
本發明之又一實施例提供一電腦程式產品。此電腦程式產品編碼於至少一電腦可讀取儲存媒介以使用於一運算裝置。此電腦程式產品具有適用於前述媒介之電腦可讀取程式碼,以指定一微處理器。此微處理器具有多個架構條件旗標並執行一架構指令。此架構指令指示微處理器對第一與第二來源運算元執行一操作以產生一結果,並於架構條件旗標滿足架構指令所指定之條件的情況下,將此結果寫入一目的暫存器。此電腦可讀取程式碼具有第一程式碼以指定一硬體指令轉譯器。此硬體指令轉譯器接收架構指令並對應地將架構指令轉譯為第一與第二微指令。此電腦可讀取程式碼並具有第二程式碼以指定一執行管線。此執行管線執行由硬體指令轉譯器接收之微指令。相應於第一微指令,執行管線對來源運算元執行前述操作以產生前述結果。相應於第二微指令,執行管線在架構條件旗標滿足條件之情況下,將第一微指令所產生之結果寫入目的暫存器,而在架構條件旗標不滿足條件之情況下,將目的暫存器當前的值寫入目的暫存器。
再者,本發明之又一實施例提供一微處理器。此微處理器具有多個架構條件旗標並且執行一架構指令。此架構指令指示微處理器對於第一與第二來源運算元執行一操作以產生一結果,並且只在這些架構條件旗標滿足架構指令所指定之一條件的情況下,將此結果寫入一目的暫存器。此微處理器具有一暫存器,其具有儲存空間以儲存該些架構條件旗標以及儲存一非架構指標,該微處理器更包括一 硬體指令轉譯器,接收架構指令並相對應地將此架構指令轉譯為第一與第二微指令。微處理器並具有一執行管線執行由硬體指令轉譯器接收之微指令。相應於第一微指令,執行管線對於這些來源運算元執行前述操作以產生前述結果,決定是否該些架構條件旗標滿足該條件;以及更新該非架構指標以標示該些架構條件旗標是否滿足該條件。相應於第二微指令,執行管線在這些架構條件旗標滿足條件之情況下,如果該非架構指標被該第一微指令更新後,則將第一微指令所產生之前述結果更新至目的暫存器,並且標示這些架構條件旗標滿足架構指令該條件。又,相應於第二微指令,如果經過該第一微指令更新後之非架構指標指示這些架構條件旗標是不滿足該條件之情況下,則將目的暫存器當前的值更新至目的暫存器。
本發明之又一實施例提供用於一微處理器之處理方法。此微處理器具有多個架構條件旗標並執行一架構指令。此架構指令指示微處理器對於第一與第二來源運算元執行一操作以產生一結果,並且只在這些架構條件旗標滿足架構指令所指定之一條件的情況下,將此結果寫入一目的暫存器。此方法包括將架構指令轉譯為第一與第二微指令,其中,此轉譯步驟係由微處理器之一硬體指令轉譯器進行。此方法並包括執行由硬體指令轉譯器所接收之微指令,此執行步驟係由微處理器之一執行管線進行。執行第一微指令之步驟包括對來源運算元執行前述操作以產生前述結果,決定是否該些架構條件旗標滿足該條件;以及更新一非架構指標以標示該些架構條件旗標是否滿足該條 件;執行第二微指令之步驟包括:如果該非架構指標經過該第一微指令的更新之後,其所標示的該些架構條件旗標滿足該條件之情況下,則將更新的結果寫入該目的暫存器;以及,如果該非架構指標經過該第一微指令的更新之後,其所標示的該些架構條件旗標不滿足該條件之情況下,將該目的暫存器當前的值寫入該目的暫存器。
本發明之又一實施例提供一電腦程式產品。此電腦程式產品編碼於至少一電腦可讀取儲存媒介以使用於一運算裝置。此電腦程式產品具有適用於前述媒介之電腦可讀取程式碼,以指定一微處理器。此微處理器具有多個架構條件旗標並執行一架構指令。此架構指令指示微處理器對第一與第二來源運算元執行一操作以產生一結果,並於架構條件旗標滿足架構指令所指定之條件的情況下,將此結果寫入一目的暫存器。此電腦可讀取程式碼具有第一程式碼以指定一暫存器,該暫存器具有儲存空間以儲存該些架構條件旗標以及儲存一非架構指標,此電腦可讀取程式碼並具有第二程式碼以指定一硬體指令轉譯器。此硬體指令轉譯器接收架構指令並相對應地將架構指令轉譯為第一與第二微指令。此電腦可讀取程式碼並具有第三程式碼以指定一執行管線。此執行管線執行由硬體指令轉譯器接收之微指令。
相應於第一微指令,執行管線對來源運算元執行前述操作以產生前述結果。決定是否該些架構條件旗標滿足該條件;以及更新該非架構指標以標示該些架構條件旗標是否滿足該條件;相應於第二微指令,如果該非架構指標經過該第 一微指令的更新之後,其所標示的在該些架構條件旗標滿足該條件之情況下,執行管線將把該第一微指令產生之該結果更新至該目的暫存器;又,相應於第二微指令,如果該非架構指標經過該第一微指令的更新之後,其所標示的在該些架構條件旗標不滿足該條件之情況下,執行管線將把該目的暫存器當前的值寫入該目的暫存器。
又再者,本發明之一實施例提供一微處理器。此微處理器具有多個架構條件旗標並包括一架構進位旗標和其他架構條件旗標,其中該微處理器執行一架構指令。此架構指令指示微處理器對於一第一來源運算元執行一移位操作以產生一第一結果,對於第一結果與一第二來源運算元執行一第二操作以產生一第二結果,並且只在這些架構條件旗標滿足架構指令所指定之一條件下,將前述第二結果寫入目的暫存器並更新該條件旗標。微處理器包括一暫存器具有儲存空間以儲存該些架構條件旗標以及儲存一非架構旗標,並且包括一硬體指令轉譯器接收架構指令並對應地將架構指令轉譯為至少第一與第二微指令。微處理器並具有一執行管線執行由硬體指令轉譯器所接收之微指令。相應於第一微指令,執行管線對第一來源運算元執行前述移位操作以產生前述第一結果和一進位旗標值,並且利用該進位旗標值更新該非架構進位旗標。相應於該第二微指令,執行管線對該第一結果和第二來源運算元執行該第二操作以產生該第二結果,並依據該第二結果產生新的條件旗標值,再者,在該些架構條件旗標滿足該條件之情況下,執行管線更利用該非架構進位旗標值更新該架構進位旗 標,並且利用所產生之新的條件旗標值更新至少一個相對應之其他架構條件旗標;以及在該些架構條件旗標不滿足該條件之情況下,執行管線則是利用該架構條件旗標當前的值更新該架構條件旗標。
本發明之又一實施例提供用於一微處理器之處理方法。此微處理器具有多個架構條件旗標並包括一架構進位旗標和一其他架構條件旗標並執行一架構指令。此架構指令指示微處理器對第一來源運算元執行一移位操作以產生一第一結果,對第一結果與第二來源運算元執行一第二操作以產生一第二結果,並且只在架構條件旗標滿足架構指令所指定之條件的情況下,將第二結果寫入一目的暫存器和更新該些條件旗標。
此方法包括將架構指令轉譯為第一與第二微指令,其中,此轉譯步驟係由微處理器之一硬體指令轉譯器進行。此方法包括執行此由硬體指令轉譯器接收之第一和第二微指令,其中,此執行步驟係由微處理器之一執行管線進行。執行第一微指令之步驟包括對第一來源運算元執行前述移位操作以產生前述第一結果和一進位旗標值,並且利用該進位旗標值更新該非架構進位旗標。執行第二微指令之步驟包括對該第一結果和第二來源運算元執行該第二操作以產生該第二結果,並依據該第二結果產生新的條件旗標值;此外,在該些架構條件旗標滿足該條件之情況下,利用該非架構進位旗標值更新該架構進位旗標,並且利用所產生之新的條件旗標值更新至少一個相對應之其他架構條件旗標;以及在該些架構條件旗標不滿足該條件之情況 下,利用該架構條件旗標當前的值更新該架構條件旗標。
本發明之又一實施例提供一電腦程式產品。此電腦程式產品編碼於至少一電腦可讀取儲存媒介以使用於一運算裝置。此電腦程式產品具有適用於前述媒介之電腦可讀取程式碼,以指定一微處理器。此微處理器具有多個架構條件旗標並且包括一架構進位旗標以及其他架構條件旗標,其中微處理器執行一架構指令。此架構指令指示微處理器對第一來源運算元執行一移位操作以產生一第一結果,對第一結果與第二來源運算元執行一第二操作以產生一第二結果,並且只在架構條件旗標滿足架構指令所指定之條件的情況下,將第二結果寫入一目的暫存器和更新該些條件旗標。
此電腦可讀取程式碼具有第一程式碼以指定一暫存器,該暫存器具有儲存空間以儲存該些架構條件旗標以及儲存一非架構指標,此電腦可讀取程式碼並具有第二程式碼以指定一硬體指令轉譯器。此硬體指令轉譯器接收架構指令並相對應地將架構指令轉譯為第一與第二微指令。此電腦可讀取程式碼並具有第三程式碼以指定一執行管線。此執行管線執行由硬體指令轉譯器接收之微指令。相應於第一微指令,執行管線對第一來源運算元執行移位操作,以產生第一結果和一進位旗標值,並利用該進位旗標值更新該非架構進位旗標。相應於第二微指令,執行管線對第一結果和第二來源運算元執行該第二操作以產生第二結果,並依據該第二結果產生新的條件旗標值。此外,相應於第二微指令,在該些架構條件旗標滿足該條件之情況 下,執行管線更利用該非架構進位旗標值更新該架構進位旗標,並且利用所產生之新的條件旗標值更新至少一個相對應之其他架構條件旗標;然而在該些架構條件旗標不滿足該條件之情況下,執行管線則是利用該架構條件旗標當前的值更新該架構條件旗標。
關於本發明之優點與精神可以藉由以下的發明詳述及所附圖式得到進一步的瞭解。
名詞定義
指令集,係定義二進位制編碼值之集合(即機器語言指令)與微處理器所執行操作間的對應關係。機器語言程式基本上以二進位制進行編碼,不過亦可使用其他進位制的系統,如部分早期IBM電腦的機器語言程式,雖然最終亦是以電壓高低呈現二進位值之物理信號來表現,不過卻是以十進位制進行編碼。機器語言指令指示微處理器執行的操作如:將暫存器1內之運算元與暫存器2內之運算元相加並將結果寫入暫存器3、將記憶體位址0x12345678之運算元減掉指令所指定之立即運算元並將結果寫入暫存器5、依據暫存器7所指定之位元數移動暫存器6內的數值、若是零旗標被設定時,在分支到指令後方之36個位元組、將記憶體位址0xABCD0000的數值載入暫存器8。因此,指令集係定義各個機器語言指令使微處理器執行所欲執行之操作的二進位編碼值。須瞭解的是,指令集定義二進位值與微處理器操作間的對應關係,並不意味著單一個二進 位值就會對應至單一個微處理器操作。具體來說,在部分指令集中,多個二進位值可能會對應至同一個微處理器操作。
指令集架構(ISA),從微處理器家族的脈絡來看,包含:(1)指令集;(2)指令集之指令所能存取之資源集(例如:記憶體定址所需之暫存器與模式);以及(3)微處理器回應指令集之指令執行所產生的例外事件集(例如:除以零、分頁錯誤、記憶體保護違反等)。因為程式撰寫者,如組譯器與編譯器的撰寫者,想要作出機器語言程式在一微處理器家族執行時,就需要此微處理器家族之ISA定義,所以微處理器家族的製造者通常會將ISA定義於操作者操作手冊中。舉例來說,2009年3月公佈之Intel 64與IA-32架構軟體開發者手冊(Intel 64 and IA-32 Architectures Software Developer’s Manual)即定義Intel 64與IA-32處理器架構的ISA。此軟體開發者手冊包含有五個章節,第一章是基本架構;第二A章是指令集參考A至M;第二B章是指令集參考N至Z;第三A章是系統編程指南;第三B章是系統編程指南第二部分,此手冊係列為本案的參考文件。此種處理器架構通常被稱為x86架構,本文中則是以x86、x86 ISA、x86 ISA家族、x86家族或是相似用語來說明。在另一個例子中,2010年公佈之ARM架構參考手冊,ARM v7-A與ARM v7-R版本Errata markup,定義ARM處理器架構之ISA。此參考手冊係列為參考文件。此ARM處理器架構之ISA在此亦被稱為ARM、ARM ISA、ARM ISA家族、ARM家族或是相似用語。其他眾所周知的ISA 家族還有IBM System/360/370/390與z/Architecture、DEC VAX、Motorola 68k、MIPS、SPARC、PowerPC與DEC Alpha等等。ISA的定義會涵蓋處理器家族,因為處理器家族的發展中,製造者會透過在指令集中增加新指令、以及/或在暫存器組中增加新的暫存器等方式來改進原始處理器之ISA。舉例來說,隨著x86程式集架構的發展,其於Intel Pentium III處理器家族導入一組128位元之多媒體擴展指令集(MMX)暫存器作為單指令多重數據流擴展(SSE)指令集的一部分,而x86 ISA機器語言程式已經開發來利用XMM暫存器以提升效能,雖然現存的x86 ISA機器語言程式並不使用單指令多重數據流擴展指令集之XMM暫存器。此外,其他製造商亦設計且製造出可執行x86 ISA機器語言程式之微處理器。例如,超微半導體(AMD)與威盛電子(VIA Technologies)即在x86 ISA增加新技術特徵,如超微半導體之3DNOW!單指令多重數據流(SIMD)向量處理指令,以及威盛電子之Padlock安全引擎隨機數產生器(random number generator)與先進譯碼引擎(advanced cryptography engine)的技術,前述技術都是採用x86 ISA之機器語言程式,但卻非由現有之Intel微處理器實現。以另一個實例來說明,ARM ISA原本定義ARM指令集狀態具有4位元組之指令。然而,隨著ARM ISA的發展而增加其他指令集狀態,如具有2位元組指令以提升編碼密度之Thumb指令集狀態以及用以加速Java位元組碼程式之Jazelle指令集狀態,ARM ISA機器語言程式已被發展來使用部分或所有其他ARM ISA指令集狀態,即使現存的 ARM ISA機器語言程式產生之初並非採用這些其他ARM ISA指令集狀態。
指令集架構(ISA)機器語言程式,包含ISA指令序列,即ISA指令集對應至程式撰寫者要程式執行之操作序列的二進位編碼值序列。因此,x86 ISA機器語言程式包含x86 ISA指令序列,ARM ISA機器語言程式則包含ARM ISA指令序列。機器語言程式指令係存放於記憶體內,且由微處理器擷取並執行。
硬體指令轉譯器,包含多個電晶體的配置,用以接收ISA機器語言指令(例如x86 ISA或是ARM ISA機器語言指令)作為輸入,並對應地輸出一個或多個微指令至微處理器之執行管線。執行管線執行微指令的執行結果係由ISA指令所定義。因此,執行管線透過對這些微指令的集體執行來“實現”ISA指令。也就是說,執行管線透過對於硬體指令轉譯器輸出之實行微指令的集體執行,實現所輸入ISA指令所指定之操作,以產生此ISA指令定義的結果。因此,硬體指令轉譯器可視為是將ISA指令“轉譯(translate)”為一個或多個實行微指令。本實施例所描述之微處理器具有硬體指令轉譯器以將x86 ISA指令與ARM ISA指令轉譯為微指令。不過,需理解的是,硬體指令轉譯器並非必然可對x86使用者操作手冊或是ARM使用者操作手冊所定義的整個指令集進行轉譯,而往往只能轉譯這些指令中一個子集合,如同絕大多數x86 ISA與ARM ISA處理器只支援其對應之使用者操作手冊所定義的一個指令子集合。具體來說,x86使用者操作手冊定義由硬體指令轉 譯器轉譯之指令子集合,不必然就對應至所有現存的x86 ISA處理器,ARM使用者操作手冊定義而由硬體指令轉譯器轉譯之指令子集合,不必然就對應至所有既有的ARM ISA處理器。
執行管線(pipeline),係一多層級序列(sequence of stages)。此多層級序列之各層級分別具有硬體邏輯與一硬體暫存器。硬體暫存器係保持硬體邏輯之輸出信號,並依據微處理器之時脈信號,將此輸出信號提供至多層級序列之下一層級。執行管線可以具有複數個多層級序列,例多重執行管線。執行管線接收微指令作為輸入信號,並相應地執行微指令所指定的操作以輸出執行結果。微指令所指定,且由執行管線之硬體邏輯所執行的操作包括但不限於算數、邏輯、記憶體載入/儲存、比較、測試、與分支解析,對進行操作的資料格式包括但不限於整數、浮點數、字元、二進編碼十進數(BCD)、與壓縮格式(packed format)。執行管線執行微指令以實現ISA指令(如x86與ARM),藉以產生ISA指令所定義的結果。執行管線不同於硬體指令轉譯器。具體來說,硬體指令轉譯器產生實行微指令,執行管線則是執行這些指令,但不產生這些實行微指令。
指令快取,係微處理器內的一個隨機存取記憶裝置,微處理器將ISA機器語言程式之指令(例如x86 ISA與ARM ISA的機器語言指令)放置其中,這些指令係擷取自系統記憶體並由微處理器依據ISA機器語言程式之執行流程來執行。具體來說,ISA定義一指令位址暫存器以持有下一個待執行ISA指令的記憶體位址(舉例來說,在x86 ISA係定義為指令指標(IP)而在ARM ISA係定義為程式計數器(PC)),而在微處理器執行機器語言程式以控制程式流程時,微處理器會更新指令位址暫存器的內容。ISA指令被快取來供後續擷取之用。當該暫存器所包含的下一個機器語言程式的ISA指令位址係位於目前的指令快取中,可依據指令暫存器的內容快速地從指令快取擷取ISA指令由系統記憶體中取出該ISA指令。尤其是,此程序係基於指令位址暫存器(如指令指標(IP)或是程式計數器(PC))的記憶體位址向指令快取取得資料,而非特地運用一載入或儲存指令所指定之記憶體位址來進行資料擷取。因此,將指令集架構之指令視為資料(例如採用軟體轉譯之系統的硬體部分所呈現的資料)之專用資料快取,特地運用一載入/儲存位址來存取,而非基於指令位址暫存器的數值做存取的,就不是此處所稱的指令快取。此外,可取得指令與資料之混合式快取,係基於指令位址暫存器的數值以及基於載入/儲存位址,而非僅僅基於載入/儲存位址,亦被涵蓋在本說明對指令快取的定義內。在本說明內容中,載入指令係指將資料由記憶體讀取至微處理器之指令,儲存指令係指將資料由微處理器寫入記憶體之指令。
微指令集,係微處理器之執行管線能夠執行之指令(微指令)的集合。
實施例說明
本發明實施例揭露之微處理器可透過硬體將其對應之x86 ISA與ARM ISA指令轉譯為由微處理器執行管線直接執行之微指令,以達到可執行x86 ISA與ARM ISA機器語 言程式之目的。此微指令係由不同於x86 ISA與ARM ISA之微處理器微架構(microarchitecture)的微指令集所定義。由於本文所述之微處理器需要執行x86與ARM機器語言程式,微處理器之硬體指令轉譯器會將x86與ARM指令轉譯為微指令,並將這些微指令提供至微處理器之執行管線,由微處理器執行這些微指令以實現前述x86與ARM指令。由於這些實行微指令係直接由硬體指令轉譯器提供至執行管線來執行,而不同於採用軟體轉譯器之系統需於執行管線執行指令前,將預先儲存本機(host)指令至記憶體,因此,前揭微處理器具有潛力能夠以較快的執行速度執行x86與ARM機器語言程式。
第1圖係一方塊圖顯示本發明執行x86 ISA與ARM ISA機器語言程式之微處理器100一實施例。此微處理器100具有一指令快取102;一硬體指令轉譯器104,用以由指令快取102接收x86 ISA指令與ARM ISA指令124並將其轉譯為微指令126;一執行管線112,執行由硬體指令轉譯器104接收之微指令126以產生微指令結果128,該結果係以運算元的型式回傳至執行管線112;一暫存器檔案106與一記憶體子系統108,分別提供運算元至執行管線112並由執行管線112接收微指令結果128;一指令擷取單元與分支預測器114,提供一擷取位址134至指令快取102;一ARM ISA定義之程式計數器暫存器116與一x86 ISA定義之指令指標暫存器118,其依據微指令結果128進行更新,且提供其內容至指令擷取單元與分支預測器114;以及多個組態暫存器122,提供一指令模式指標132 與一環境模式指標136至硬體指令轉譯器104與指令擷取單元與分支預測器114,並基於微指令結果128進行更新。
由於微處理器100可執行x86 ISA與ARM ISA機器語言指令,微處理器100係依據程式流程由系統記憶體(未圖示)擷取指令至微處理器100。微處理器100存取最近擷取的x86 ISA與ARM ISA之機器語言指令至指令快取102。指令擷取單元114將依據由系統記憶體擷取之x86或ARM指令位元組區段,產生一擷取位址134。若是命中指令快取102,指令快取102將位於擷取位址134之x86或ARM指令位元組區段提供至硬體指令轉譯器104,否則由系統記憶體中擷取指令集架構的指令124。指令擷取單元114係基於ARM程式計數器116與x86指令指標118的值產生擷取位址134。具體來說,指令擷取單元114會在一擷取位址暫存器中維持一擷取位址。任何時候指令擷取單元114擷取到新的ISA指令位元組區段,它就會依據此區段的大小更新擷取位址,並依據既有方式依序進行,直到出現一控制流程事件。控制流程事件包含例外事件的產生、分支預測器114的預測顯示擷取區段內有一將發生的分支(taken branch)、以及執行管線112回應一非由分支預測器114所預測之將發生分支指令之執行結果,而對ARM程式計數器116與x86指令指標118進行之更新。指令擷取單元114係將擷取位址相應地更新為例外處理程序位址、預測目標位址或是執行目標位址以回應一控制流程事件。在一實施例中,指令快取102係一混合快取,以存取ISA指令124與資料。值得注意的是,在此混合快取之 實施例中,雖然混合快取可基於一載入/儲存位址將資料寫入快取或由快取讀取資料,在微處理器100係由混合快取擷取指令集架構之指令124的情況下,混合快取係基於ARM程式計數器116與x86指令指標118的數值來存取,而非基於載入/儲存位址。指令快取102可以係一隨機存取記憶體裝置。
指令模式指標132係一狀態指示微處理器100當前是否正在擷取、格式化(formatting)/解碼、以及將x86 ISA或ARM ISA指令124轉譯為微指令126。此外,執行管線112與記憶體子系統108接收此指令模式指標132,此指令模式指標132會影響微指令126的執行方式,儘管只是微指令集內的一個小集合受影響而已。x86指令指標暫存器118持有下一個待執行之x86 ISA指令124的記憶體位址,ARM程式計數器暫存器116持有下一個待執行之ARM ISA指令124的記憶體位址。為了控制程式流程,微處理器100在其執行x86與ARM機器語言程式時,分別更新x86指令指標暫存器118與ARM程式計數器暫存器116,至下一個指令、分支指令之目標位址或是例外處理程序位址。在微處理器100執行x86與ARM ISA之機器語言程式的指令時,微處理器100係由系統記憶體擷取機器語言程式之指令集架構的指令,並將其置入指令快取102以取代最近較不被擷取與執行的指令。此指令擷取單元114基於x86指令指標暫存器118或是ARM程式計數器暫存器116的數值,並依據指令模式指標132指示微處理器100正在擷取的ISA指令124是x86或是ARM模式來產生擷取位址 134。在一實施例中,x86指令指標暫存器118與ARM程式計數器暫存器116可實施為一共享的硬體指令位址暫存器,用以提供其內容至指令擷取單元與分支預測器114並由執行管線112依據指令模式指標132指示之模式是x86或ARM與x86或ARM之語意(semantics)來進行更新。
環境模式指標136係一狀態指示微處理器100是使用x86或ARM ISA之語意於此微處理器100操作之多種執行環境,例如虛擬記憶體、例外事件、快取控制、與全域執行時間保護。因此,指令模式指標132與環境模式指標136共同產生多個執行模式。在第一種模式中,指令模式指標132與環境模式指標136都指向x86 ISA,微處理器100係作為一般的x86 ISA處理器。在第二種模式中,指令模式指標132與環境模式指標136都指向ARM ISA,微處理器100係作為一般的ARM ISA處理器。在第三種模式中,指令模式指標132指向x86 ISA,不過環境模式指標136則是指向ARM ISA,此模式有利於在ARM作業系統或是超管理器之控制下執行使用者模式x86機器語言程式;相反地,在第四種模式中,指令模式指標132係指向ARM ISA,不過環境模式指標136則是指向x86 ISA,此模式有利於在x86作業系統或超管理器之控制下執行使用者模式ARM機器語言程式。指令模式指標132與環境模式指標136的數值在重置(reset)之初就已確定。在一實施例中,此初始值係被視為微碼常數進行編碼,不過可透過熔斷組態熔絲與/或使用微碼修補進行修改。在另一實施例中,此初始值則是由一外部輸入提供至微處理器100。在一實施例 中,環境模式指標136只在由一重置至ARM(reset-to-ARM)指令124或是一重置至x86(reset-to-x86)指令124執行重置後才會改變(請參照下述第6圖);亦即,在微處理器100正常運作而未由一般重置、重置至x86或重置至ARM指令124執行重置時,環境模式指標136並不會改變。
硬體指令轉譯器104接收x86與ARM ISA之機器語言指令124作為輸入,相應地提供一個或多個微指令126作為輸出信號以實現x86或ARM ISA指令124。執行管線112執行前揭一個或多個微指令126,其集體執行之結果實現x86或ARM ISA指令124。也就是說,這些微指令126的集體執行可依據輸入端所指定的x86或ARM ISA指令124,來執行x86或是ARM ISA指令124所指定的操作,以產生x86或ARM ISA指令124所定義的結果。因此,硬體指令轉譯器104係將x86或ARM ISA指令124轉譯為一個或多個微指令126。硬體指令轉譯器104包含一組電晶體,以一預設方式進行配置來將x86 ISA與ARM ISA之機器語言指令124轉譯為實行微指令126。硬體指令轉譯器104並具有布林邏輯閘以產生實行微指令126(如第2圖所示之簡單指令轉譯器204)。在一實施例中,硬體指令轉譯器104並具有一微碼唯讀記憶體(如第2圖中複雜指令轉譯器206之元件234),硬體指令轉譯器104利用此微碼唯讀記憶體,並依據複雜ISA指令124產生實行微指令126,這部份將在第2圖的說明內容會有進一步的說明。就一較佳實施例而言,硬體指令轉譯器104不必然要能轉譯x86使用者操作手冊或是ARM使用者操作手冊所定義之 整個ISA指令124集,而只要能夠轉譯這些指令的一個子集合即可。具體來說,由x86使用者操作手冊定義且由硬體指令轉譯器104轉譯的ISA指令124的子集合,並不必然對應至任何Intel開發之既有x86 ISA處理器,而由ARM使用者操作手冊定義且由硬體指令轉譯器104轉譯之ISA指令124的子集合並不必然對應至任何由ARM Ltd.開發之既有的ISA處理器。前揭一個或多個用以實現x86或ARM ISA指令124的實行微指令126,可由硬體指令轉譯器104一次全部提供至執行管線112或是依序提供。本實施例的優點在於,硬體指令轉譯器104可將實行微指令126直接提供至執行管線112執行,而不需要將這些微指令126儲存於設置兩者間之記憶體。在第1圖之微處理器100的實施例中,當微處理器100執行x86或是ARM機器語言程式時,微處理器100每一次執行x86或是ARM指令124時,硬體指令轉譯器104就會將x86或ARM機器語言指令124轉譯為一個或多個微指令126。不過,第8圖的實施例則是利用一微指令快取以避免微處理器100每次執行x86或ARM ISA指令124所會遭遇到之重複轉譯的問題。硬體指令轉譯器104之實施例在第2圖會有更詳細的說明。
執行管線112執行由硬體指令轉譯器104提供之實行微指令126。基本上,執行管線112係一通用高速微指令處理器。雖然本文所描述的功能係由具有x86/ARM特定特徵的執行管線112執行,不過,但大多數x86/ARM特定功能其實是由此微處理器100的其他部分,如硬體指令轉譯器104,來執行。在一實施例中,執行管線112執行由硬 體指令轉譯器104接收到之實行微指令126的暫存器重命名、超純量發佈、與非循序執行。執行管線112在第4圖會有更詳細的說明。
微處理器100的微架構包含:(1)微指令集;(2)微指令集之微指令126所能取用之資源集,此資源集係x86與ARM ISA之資源的超集合(superset);以及(3)微處理器100相應於微指令126之執行所定義的微例外事件(micro-exception)集,此微例外事件集係x86 ISA與ARM ISA之例外事件的超集合。此微架構不同於x86 ISA與ARM ISA。具體來說,此微指令集在許多面向不同於x86 ISA與ARM ISA之指令集。首先,微指令集之微指令指示執行管線112執行的操作與x86 ISA與ARM ISA之指令集的指令指示微處理器執行的操作並非一對一對應。雖然其中許多操作相同,不過,仍有一些微指令集指定的操作並非x86 ISA及/或ARM ISA指令集所指定。相反地,有一些x86 ISA及/或ARM ISA指令集指定的操作並非微指令集所指定。其次,微指令集之微指令係以不同於x86 ISA與ARM ISA指令集之指令的編碼方式進行編碼。亦即,雖然有許多相同的操作(如:相加、偏移、載入、返回)在微指令集以及x86與ARM ISA指令集中都有指定,微指令集與x86或ARM ISA指令集的二進制操作碼值對應表並沒有一對一對應。微指令集與x86或ARM ISA指令集的二進制操作碼值對應表相同通常是巧合,其間仍不具有一對一的對應關係。第三,微指令集之微指令位元欄與x86或是ARM ISA指令集之指令的位元欄也不是一對一對 應。
整體而言,微處理器100可執行x86 ISA與ARM ISA機器語言程式指令。然而,執行管線112本身無法執行x86或ARM ISA機器語言指令;而是執行由x86 ISA與ARM ISA指令轉譯成之微處理器100微架構之微指令集的實行微指令126。然而,雖然此微架構與x86 ISA以及ARM ISA不同,本發明亦提出其他實施例將微指令集與其他微架構特定的資源開放給使用者。在這些實施例中,此微架構可有效地作為在x86 ISA與ARM ISA外之一個具有微處理器所能執行之機器語言程式的第三ISA。
下表(表1)描述本發明微處理器100之一實施例之微指令集之微指令126的一些位元欄。
下表(表2)描述本發明微處理器100之一實施例之微指令集的一些微指令。
微處理器100也包含一些微架構特定的資源,如微架構特定的通用暫存器、媒體暫存器與區段暫存器(如用於重命名的暫存器或由微碼所使用的暫存器)以及未見於x86或ARM ISA的控制暫存器,以及一私有隨機存取記憶體(PRAM)。此外,此微架構可產生例外事件,亦即前述之微例外事件。這些例外事件未見於x86或ARM ISA或是由它們所指定,通常是微指令126與相關微指令126的重新執行(replay)。舉例來說,這些情形包含:載入錯過(load miss)的情況,其係執行管線112假設載入動作並於錯過時重新執行此載入微指令126;錯過轉譯後備緩衝區(TLB),在查表(page table walk)與轉譯後備緩衝區填滿後,重新執行此微指令126;浮點微指令126接收一異常運算元(denormal operand),但此運算元被評估為正常情況,需在執行管線112正常化此運算元後重新執行此微指令126;一載入微指令126執行後偵測到一個更早的儲存微指令126與其位址衝突(address-colliding)需要重新執行此載入微指令126。需理解的是,本文表1所列的位元欄,表2所列的微指令,以及微架構特定的資源與微架構特定的例外事件,只是作為例示說明本發明之微架構,而非窮盡本發明之所有可能實施例。
暫存器檔案106包含微指令126所使用之硬體暫存器,以持有資源與/或目的運算元。執行管線112將其結果128寫入暫存器檔案106,並由暫存器檔案106為微指令126接收運算元。硬體暫存器係引用(instantiate)x86 ISA定義與ARM ISA定義的通用暫存器係共享暫存器檔案106中之一些暫存器。舉例來說,在一實施例中,暫存器檔案106係引用十五個32位元的暫存器,由ARM ISA暫存器R0至R14以及x86 ISA累積暫存器(EAX register)至R14D暫存器所共享。因此,若是一第一微指令126將一數值寫入ARM R2暫存器,隨後一後續的第二微指令126讀取x86累積暫存器將會接收到與第一微指令126寫入相同的數值,反之亦然。此技術特徵有利於使x86 ISA與ARM ISA之機器語言程式得以快速透過暫存器進行溝通。舉例來說,假設在ARM機器語言作業系統執行的ARM機器語言程式能使指令模式132改變為x86 ISA,並將控制權轉換至一x86機器語言程序以執行特定功能,因為x86 ISA可支援一些指令,其執行操作的速度快於ARM ISA,在這種情形下將有利於執行速度的提升。ARM程式可透過暫存器檔案106之共享暫存器提供需要的資料給x86執行程序。反之,x86執行程序可將執行結果提供至暫存器檔案106之共享暫存器內,以使ARM程式在x86執行程序回覆後可見到此執行結果。相似地,在x86機器語言作業系統執行之x86機器語言程式可使指令模式132改變為ARM ISA並將控制權轉換至ARM機器語言程序;此x86程式可透過暫存器檔案106之共享暫存器提供所需的資料給ARM 執行程序,而此ARM執行程序可透過暫存器檔案106之共享暫存器提供執行結果,以使x86程式在ARM執行程序回覆後可見到此執行結果。因為ARM R15暫存器係一獨立引用的ARM程式計數器暫存器116,因此,引用x86 R15D暫存器的第十六個32位元暫存器並不分享給ARM R15暫存器。此外,在一實施例中,x86之十六個128位元XMM0至XMM15暫存器與十六個128位元進階單指令多重數據擴展(Advanced SIMD(“Neon”))暫存器的32位元區段係分享給三十二個32位元ARM VFPv3浮點暫存器。暫存器檔案106亦引用旗標暫存器(即x86 EFLAGS暫存器與ARM條件旗標暫存器),以及x86 ISA與ARM ISA所定義之多種控制權與狀態暫存器,這些架構控制與狀態暫存器包括x86架構之特定模型暫存器(model specific registers,MSRs)與保留給ARM架構的協同處理器(8-15)暫存器。此暫存器檔案106亦引用非架構暫存器,如用於暫存器重命名或是由微碼234所使用的非架構通用暫存器,以及非架構x86特定模型暫存器與實作定義的或是由製造商指定之ARM協同處理器暫存器。暫存器檔案106在第5圖會有更進一步的說明。
記憶體子系統108包含一由快取記憶體構成的快取記憶體階層架構(在一實施例中包含第1層(level-1)指令快取102、第1層(level-1)資料快取與第2層混合快取)。此記憶體子系統108包含多種記憶體請求佇列,如載入、儲存、填入、偵測、合併寫入歸併緩衝區。記憶體次系統亦包含一記憶體管理單元(MMU)。記憶體管理單元具有轉譯後備 緩衝區(TLBs),尤以獨立的指令與資料轉譯後備緩衝區為佳。記憶體子系統還包含一查表引擎(table walk engine)以獲得虛擬與實體位址間之轉譯,來回應轉譯後備緩衝區的錯失。雖然在第1圖中指令快取102與記憶體子系統108係顯示為各自獨立,不過,在邏輯上,指令快取102亦是記憶體子系統108的一部分。記憶體子系統108係設定使x86與ARM機器語言程式分享一共同的記憶空間,以使x86與ARM機器語言程式容易透過記憶體互相溝通。
記憶體子系統108得知指令模式132與環境模式136,使其能夠在適當ISA內容中執行多種操作。舉例來說,記憶體子系統108依據指令模式指標132指示為x86或ARM ISA,來執行特定記憶體存取違規的檢驗(例如過限檢驗(limit violation check))。在另一實施例中,回應環境模式指標136的改變,記憶體子系統108會更新(flush)轉譯後備緩衝區;不過在指令模式指標132改變時,記憶體子系統108並不相應地更新轉譯後備緩衝區,以在前述指令模式指標132與環境模式指標136分指x86與ARM之第三與第四模式中提供較佳的效能。在另一實施例中,回應一轉譯後備緩衝區錯失(TKB miss),查表引擎依據環境模式指標136指示為x86或ARM ISA,從而決定利用x86分頁表或ARM分頁表來執行一分頁查表動作以取出轉譯後備緩衝區。在另一實施例中,若是環境狀態指標136指示為x86 ISA,記憶體子系統108檢查會影響快取策略之x86 ISA控制暫存器(如CR0 CD與NW位元)的架構狀態;若是環境模式指標136指示為ARM ISA,則檢查相 關之ARM ISA控制暫存器(如SCTLR I與C位元)的架構模式。在另一實施例中,若是狀態指標136指示為x86 ISA,記憶體次系統108檢查會影響記憶體管理之x86 ISA控制暫存器(如CR0 PG位元)的架構狀態;若是環境模式指標136指示為ARM ISA,則檢查相關之ARM ISA控制暫存器(如SCTLR M位元)的架構模式。在另一實施例中,若是狀態指標136指示為x86 ISA,記憶體子系統108檢查會影響對準檢測之x86 ISA控制暫存器(如CR0 AM位元)的架構狀態,若是環境模式指標136指示為ARM ISA,則檢查相關之ARM ISA控制暫存器(如SCTLR A位元)的架構模式。在另一實施例中,若是狀態指標136指示為x86 ISA,記憶體子系統108(以及用於特權指令之硬體指令轉譯器104)檢查當前所指定特權級(CPL)之x86 ISA控制暫存器的架構狀態;若是環境模式指標136指示為ARM ISA,則檢查指示使用者或特權模式之相關ARM ISA控制暫存器的架構模式。不過,在一實施例中,x86 ISA與ARM ISA係分享微處理器100中具有相似功能之控制位元組/暫存器,微處理器100並不對各個指令集架構引用獨立的控制位元組/暫存器。
雖然組態暫存器122與暫存器檔案106在圖示中是各自獨立,不過組態暫存器122可被理解為暫存器檔案106的一部分。組態暫存器122具有一全域組態暫存器,用以控制微處理器100在x86 ISA與ARM ISA各種不同面向的操作,例如使多種特徵生效或失效的功能。全域組態暫存器可使微處理器100執行ARM ISA機器語言程式之能力 失效,即讓微處理器100成為一個僅能執行x86指令的微處理器100,並可使其他相關且專屬於ARM的能力(如啟動x86(launch-x86)與重置至x86的指令124與本文所稱之實作定義(implementation-defined)協同處理器暫存器)失效。全域組態暫存器亦可使微處理器100執行x86 ISA機器語言程式的能力失效,亦即讓微處理器100成為一個僅能執行ARM指令的微處理器100,並可使其他相關的能力(如啟動ARM與重置至ARM的指令124與本文所稱之新的非架構特定模型暫存器)失效。在一實施例中,微處理器100在製造時具有預設的組態設定,如微碼234中之硬式編碼值,此微碼234在啟動時係利用此硬式編碼值來設定微處理器100的組態,例如寫入編碼暫存器122。不過,部分編碼暫存器122係以硬體而非以微碼234進行設定。此外,微處理器100具有多個熔絲,可由微碼234進行讀取。這些熔絲可被熔斷以修改預設組態值。在一實施例中,微碼234讀取熔絲值,對預設值與熔絲值執行一互斥或操作,並將操作結果寫入組態暫存器122。此外,對於熔絲值修改的效果可利用一微碼234修補而回復。在微處理器100能夠執行x86與ARM程式的情況下,全域組態暫存器可用於確認微處理器100(或如第7圖所示處理器之多核心部分之一特定核心100)在重置或如第6A圖及第6B圖所示在回應x86形式之INIT指令時,會以x86微處理器的形態還是以ARM微處理器的形態進行開機。全域組態暫存器並具有一些位元提供起始預設值給特定的架構控制暫存器,如ARM ISA SCTLT與CPACR暫存器。第7圖所示 之多核心的實施例中僅具有一個全域組態暫存器,即使各核心的組態可分別設定,如在指令模式指標132與環境模式指標136都設定為x86或ARM時,選擇以x86核心或是ARM核心開機)。此外,啟動ARM指令126與啟動x86指令126可用以在x86與ARM指令模式132間動態切換。在一實施例中,全域組態暫存器可透過一x86 RDMSR指令對一新的非架構特定模型暫存器進行讀取,並且其中部分的控制位元可透過x86 WRMSR指令對前揭新的非架構特定模型暫存器之寫入來進行寫入。全域組態暫存器還可透過ARM MCR/MCRR指令對一對應至前揭新的非架構特定模型暫存器之ARM協同處理器暫存器進行讀取,而其中部分的控制位元可透過ARM MRC/MRRC指令對應至此新的非架構特定模型暫存器的ARM協同處理器暫存器之寫入來進行寫入。
組態暫存器122並包含多種不同的控制暫存器從不同面向控制微處理器100的操作。這些非x86(non-x86)/ARM的控制暫存器包括本文所稱之全域控制暫存器、非指令集架構控制暫存器、非x86/ARM控制暫存器、通用控制暫存器、以及其他類似的暫存器。在一實施例中,這些控制暫存器可利用x86 RDMSR/WRMSR指令至非架構特定模型暫存器(MSRs)進行存取、以及利用ARM MCR/MRC(或MCRR/MRRC)指令至新實作定義之協同處理器暫存器進行存取。舉例來說,微處理器100包含非x86/ARM之控制暫存器,以確認微型(fine-grained)快取控制,此微型快取控制係小於x86 ISA與ARM ISA控制暫存器所能提供者。
在一實施例中,微處理器100提供ARM ISA機器語言程式透過實作定義ARM ISA協同處理器暫存器存取x86 ISA特定模型暫存器,這些實作定義ARM ISA協同處理器暫存器係直接對應於相對應的x86特定模型暫存器。此特定模型暫存器的位址係指定於ARM ISA R1暫存器。此資料係由MRC/MRRC/MCR/MCRR指令所指定之ARM ISA暫存器讀出或寫入。在一實施例中,特定模型暫存器之一子集合係以密碼保護,亦即指令在嘗試存取特定模型暫存器時必須使用密碼。在此實施例中,密碼係指定於ARM R7:R6暫存器。若是此存取動作導致x86通用保護錯誤,微處理器100隨即產生一ARM ISA未定義指令中止模式(UND)例外事件。在一實施例中,ARM協同處理器4(位址為:0,7,15,0)係存取相對應的x86特定模型暫存器。
微處理器100並包含一個耦接至執行管線112之中斷控制器(未圖示)。在一實施例中,此中斷控制器係一x86型式之先進可程式化中斷控制器(APIC)。中斷控制器係將x86 ISA中斷事件對應至ARM ISA中斷事件。在一實施例中,x86 INTR對應至ARM IRQ中斷事件;x86 NMI係對應至ARM IRQ中斷事件;x86 INIT在微處理器100啟動時引發起動重置循序過程(INIT-reset sequence),無論那一個指令集架構(x86或ARM)原本是由硬體重置啟動的;x86 SMI對應至ARM FIQ中斷事件;以及x86 STPCLK、A20、Thermal、PREQ、與Rebranch則不對應至ARM中斷事件。ARM機器語言能透過新的實作定義之ARM協同處理器暫存器存取先進可程式化中斷控制器之功能。在一 實施例中,APIC暫存器位址係指定於ARM R0暫存器,此APIC暫存器的位址與x86的位址相同。在一實施例中,ARM協同處理器6係通常用於作業系統執行之特權模式功能。此ARM協同處理器6的位址為:0,7,nn,0;其中nn為15時可存取先進可程式化中斷控制器;nn係12-14以存取匯流排介面單元,藉以在處理器匯流排上執行8位元、16位元與32位元輸入/輸出循環。微處理器100並包含一匯流排介面單元(未圖示),此匯流排介面單元耦接至記憶體子系統108與執行管線112,作為微處理器100與處理器匯流排之介面。在一實施例中,處理器匯流排符合一個Intel Pentium微處理器家族之微處理器匯流排的規格。ARM機器語言程式可夠透過新的實作定義之ARM協同處理器暫存器存取匯流排介面單元之功能以在處理器匯流排上產生輸入/輸出循環,即由輸入輸出匯流排傳送至輸入輸出空間之一特定位址,藉以與系統晶片組溝通,舉例來說,ARM機器語言程式可產生一SMI認可之特定循環或是關於C狀態轉換之輸入輸出循環。在一實施例中,輸入輸出位址係指定於ARM R0暫存器。在一實施例中,微處理器100具有電力管理能力,如習知的P-state與C-state管理。ARM機器語言程式可透過新的實作定義ARM協同處理器暫存器執行電力管理。在一實施例中,微處理器100包含一加密單元(未圖示),此加密單元係位於執行管線112內。在一實施例中,此加密單元實質上類似於具有Padlock安全科技功能之VIA微處理器的加密單元。ARM機器語言程式能透過新的實作定義的ARM協同處理器暫 存器取得加密單元的功能,如加密指令。在一實施例中,ARM協同處理器5係用於通常由使用者模式應用程式執行之使用者模式功能,例如那些使用加密單元之技術特徵所產生的功能。
在微處理器100執行x86 ISA與ARM ISA機器語言程式時,每一次微處理器100執行x86或是ARM ISA指令124,硬體指令轉譯器104就會執行硬體轉譯。反之,採用軟體轉譯之系統則能在多個事件中重複使用同一個轉譯,而非對之前已轉譯過的機器語言指令重複轉譯,因而有助於改善效能。此外,第8圖之實施例使用微指令快取以避免微處理器每一次執行x86或ARM ISA指令124時可能發生之重複轉譯動作。本發明之前述各個實施例所描述的方式係配合不同之程式特徵及其執行環境,因此確實有助於改善效能。
分支預測器114存取之前執行過的x86與ARM分支指令的歷史資料。分支預測器114依據之前的快取歷史資料,來分析由指令快取102所取得快取線是否存在x86與ARM分支指令以及其目標位址。在一實施例中,快取歷史資料包含分支指令124的記憶體位址、分支目標位址、一個方向指標、分支指令的種類、分支指令在快取線的起始位元組、以及一個顯示是否橫跨多個快取線的指標。在一實施例中,如2011年4月7日提出之美國第61/473,067號臨時申請案“APPARATUS AND METHOD FOR USING BRANCH PREDICTION TO EFFICIENTLY EXECUTE CONDITIONAL NON-BRANCH INSTRUCTIONS”,其提供 改善分支預測器114之效能以使其能預測ARM ISA條件非分支指令方向的方法。在一實施例中,硬體指令轉譯器104並包含一靜態分支預測器,可依據執行碼、條件碼之類型、向後(backward)或向前(forward)等等資料,預測x86與ARM分支指令之方向與分支目標位址。
本發明亦考量多種不同的實施例以實現x86 ISA與ARM ISA定義之不同特徵的組合。舉例來說,在一實施例中,微處理器100實現ARM、Thumb、ThumbEE與Jazelle指令集狀態,但對Jazelle擴充指令集則是提供無意義的實現(trivial implementation);微處理器100並實現下述擴充指令集,包含:Thumb-2、VFPv3-D32、進階單指令多重數據(Advanced SIMD(Neon))、多重處理、與VMSA;但不實現下述擴充指令集,包含:安全性擴充、快速內容切換擴充、ARM除錯(ARM程式可透過ARM MCR/MRC指令至新的實作定義協同處理器暫存器取得x86除錯功能)、效能偵測計數器(ARM程式可透過新的實作定義協同處理器暫存器取得x86效能計數器)。舉例來說,在一實施例中,微處理器100將ARM SETEND指令視為一無操作指令(NOP)並且只支援Little-endian資料格式。在另一實施例中,微處理器100並不實現x86 SSE 4.2的功能。
本發明考量多個實施例之微處理器100之改良,例如對台灣台北的威盛電子股份有限公司所生產之商用微處理器VIA NanoTM進行改良。此Nano微處理器能夠執行x86 ISA機器語言程式,但無法執行ARM ISA機器語言程式。Nano微處理器包含高效能暫存器重命名、超純量指令技 術、非循序執行管線與一硬體轉譯器以將x86 ISA指令轉譯為微指令供執行管線執行。本發明對於Nano硬體指令轉譯器之改良,使其除了可轉譯x86機器語言指令外,還可將ARM ISA機器語言指令轉譯為微指令供執行管線執行。硬體指令轉譯器的改良包含簡單指令轉譯器的改良與複雜指令轉譯器的改良(亦包含微碼在內)。此外,微指令集可加入新的微指令以支援ARM ISA機器語言指令與微指令間的轉譯,並可改善執行管線使能執行新的微指令。此外,Nano暫存器檔案與記憶體子系統亦可經改善使其能支援ARM ISA,亦包含特定暫存器之共享。分支預測單元可透過改善使其在x86分支預測外,亦能適用於ARM分支指令預測。此實施例的優點在於,因為在很大的程度上與ISA無關(largely ISA-agnostic)的限制,因而只需對於Nano微處理器的執行管線進行輕微的修改,即可適用於ARM ISA指令。對於執行管線的改良包含條件碼旗標之產生與使用方式、用以更新與回報指令指標暫存器的語意、存取特權保護方法、以及多種記憶體管理相關的功能,如存取違規檢測、分頁與轉譯後備緩衝區(TLB)的使用、與快取策略等。前述內容僅為例示,而非限定本案發明,其中部分特徵在後續內容會有進一步的說明。最後,如前述,x86 ISA與ARM ISA定義之部分特徵可能無法為前揭對Nano微處理器進行改良的實施例所支援,這些特徵如x86 SSE 4.2與ARM安全性擴充、快速內容切換擴充、除錯與效能計數器,其中部分特徵在後續內容會有更進一步的說明。此外,前揭透過對於Nano處理器的改良以支援ARM ISA機器語言程式,係為一整合使用設計、測試與製造資源以完成能夠執行x86與ARM機器語言程式之單積體電路產品的實施例,此單積體電路產品係涵蓋市場絕大多數既存的機器語言程式,而符合現今市場潮流。本文所述之微處理器100的實施例實質上可被配置為x86微處理器、ARM微處理器、或是可同時執行x86 ISA與ARM ISA機器語言程式微處理器。此微處理器可透過在單一微處理器100(或是第7圖之核心100)上之x86與ARM指令模式132間的動態切換以取得同時執行x86 ISA與ARM ISA機器語言程式的能力,亦可透過將多核心微處理100(對應於第7圖所示)之一個或多個核心配置為ARM核心而一個或多個配置為x86核心,亦即透過在多核心100的每一個核心上進行x86與ARM指令間的動態切換,以取得同時執行x86 ISA與ARM ISA機器語言程式的能力。此外,傳統上,ARM ISA核心係被設計作為知識產權核心,而被各個第三者協力廠商納入其應用,如系統晶片與/或嵌入式應用。因此,ARM ISA並不具有一特定的標準處理器匯流排,作為ARM核心與系統之其他部分(如晶片組或其他周邊設備)間的介面。有利的是,Nano處理器已具有一高速x86型式處理器匯流排作為連接至記憶體與周邊設備的介面,以及一記憶體一致性結構可協同微處理器100在x86電腦系統環境下支援ARM ISA機器語言程式之執行。
請參照第2圖,圖中係以方塊圖詳細顯示第1圖之硬體指令轉譯器104。此硬體指令轉譯器104包含硬體,更具體來說,就是電晶體的集合。硬體指令轉譯器104包含 一指令格式化程式202,由第1圖之指令快取102接收指令模式指標132以及x86 ISA與ARM ISA指令位元組124的區塊,並輸出格式化的x86 ISA與ARM ISA指令242;一簡單指令轉譯器(SIT)204接收指令模式指標132與環境模式指標136,並輸出實行微指令244與一微碼位址252;一複雜指令轉譯器(CIT)206(亦稱為一微碼單元),接收微碼位址252與環境模式指標136,並提供實行微指令246;以及一多工器212,其一輸入端由簡單指令轉譯器204接收微指令244,另一輸入端由複雜指令轉譯器206接收微指令246,並提供實行微指令126至第1圖的執行管線112。指令格式化程式202在第3圖會有更詳細的說明。簡單指令轉譯器204包含一x86簡單指令轉譯器222與一ARM簡單指令轉譯器224。複雜指令轉譯器206包含一接收微碼位址252之微程式計數器(micro-PC)232,一由微程式計數器232接收唯讀記憶體位址254之微碼唯讀記憶體234,一用以更新微程式計數器的微序列器236、一指令間接暫存器(instruction indirection register,IIR)235、以及一用以產生複雜指令轉譯器所輸出之實行微指令246的微轉譯器(microtranslator)237。由簡單指令轉譯器204所產生之實行微指令244與由複雜指令轉譯器206所產生之實行微指令246都屬於微處理器100之微架構的微指令集之微指令126,並且都可直接由執行管線112執行。
多工器212係受到一選擇輸入248所控制。一般的時候,多工器212會選擇來自簡單指令轉譯器204之微指令;然而,當簡單指令轉譯器204遭遇一複雜x86或ARM ISA 指令242而將控制權移轉或遭遇陷阱(traps)、以轉移至複雜指令轉譯器206時,簡單指令轉譯器204控制選擇輸入248讓多工器212選擇來自複雜指令轉譯器的微指令246。當暫存器配置表(RAT)402(請參照第4圖)遭遇到一個微指令126具有一特定位元指出其為實現複雜ISA指令242序列的最後一個微指令126時,暫存器配置表402隨即控制選擇輸入248使多工器212回復至選擇來自簡單指令轉譯器204之微指令244。此外,當重排緩衝器422(請參照第4圖)準備要使微指令126引退且該指令之狀態指出需要選擇來自複雜指令器的微指令時,重排緩衝器422控制選擇輸入248使多工器212選擇來自複雜指令轉譯器206的微指令246。前揭需引退微指令126的情形如:微指令126已經導致一例外條件產生。
簡單指令轉譯器204接收ISA指令242,並且在指令模式指標132指示為x86時,將這些指令視為x86 ISA指令進行解碼,而在指令模式指標132指示為ARM時,將這些指令視為ARM ISA指令進行解碼。簡單指令轉譯器204並確認此ISA指令242係為簡單或是複雜ISA指令。簡單指令轉譯器204能夠為簡單ISA指令242,輸出所有用以實現此ISA指令242之實行微指令126;也就是說,複雜指令轉譯器206並不提供任何實行微指令126給簡單ISA指令124。反之,複雜ISA指令124要求複雜指令轉譯器206提供至少部分(若非全部)的實行微指令126。在一實施例中,對ARM與x86 ISA指令集之指令124的子集合而言,簡單指令轉譯器204輸出部分實現x86/ARM ISA指令126的微指令244,隨後將控制權轉移至複雜指令轉譯器206,由複雜指令轉譯器206接續輸出剩下的微指令246來實現x86/ARM ISA指令126。多工器212係受到控制,首先提供來自簡單指令轉譯器204之實行微指令244作為提供至執行管線112的微指令126,隨後提供來自複雜指令轉譯器206之實行微指令246作為提供至執行管線112的微指令126。簡單指令轉譯器204知道由硬體指令轉譯器104執行,以針對多個不同複雜ISA指令124產生實行微指令126之多個微碼程序中之起始微碼唯讀記憶體234的位址,並且當簡單指令轉譯器204對一複雜ISA指令242進行解碼時,簡單指令轉譯器204會提供相對應的微碼程序位址252至複雜指令轉譯器206之微程式計數器232。簡單指令轉譯器204輸出實現ARM與x86 ISA指令集中相當大比例之指令124所需的微指令244,尤其是對於需要由x86 ISA與ARM ISA機器語言程式來說係較常執行之ISA指令124,而只有相對少數的指令124需要由複雜指令轉譯器206提供實行微指令246。依據一實施例,主要由複雜指令轉譯器206實現的x86指令如RDMSR/WRMSR、CPUID、複雜運算指令(如FSQRT與超越指令(transcendental instruction))、以及IRET指令;主要由複雜指令轉譯器206實現的ARM指令如MCR、MRC、MSR、MRS、SRS、與RFE指令。前揭列出的指令並非限定本案發明,僅列示指出本案複雜指令轉譯器206所能實現之ISA指令的種類。
當指令模式指標132指示為x86,x86簡單指令轉譯器 222對於x86 ISA指令242進行解碼,並且將其轉譯為實行微指令244;當指令模式指標132指示為ARM,ARM簡單指令轉譯器224對於ARM ISA指令242進行解碼,並將其轉譯為實行微指令244。在一實施例中,簡單指令轉譯器204係一可由習知合成工具合成之布林邏輯閘方塊。在一實施例中,x86簡單指令轉譯器222與ARM簡單指令轉譯器224係獨立的布林邏輯閘方塊;不過,在另一實施例中,x86簡單指令轉譯器222與ARM簡單指令轉譯器224係位於同一個布林邏輯閘方塊。在一實施例中,簡單指令轉譯器204在單一時脈週期中轉譯最多三個ISA指令242並提供最多六個實行微指令244至執行管線112。在一實施例中,簡單指令轉譯器204包含三個次轉譯器(未圖示),各個次轉譯器轉譯單一個格式化的ISA指令242,其中,第一個轉譯器能夠轉譯需要不多於三個實行微指令126之格式化ISA指令242;第二個轉譯器能夠轉譯需要不多於兩個實行微指令126之格式化ISA指令242;第三個轉譯器能後轉譯需要不多於一個實行微指令126之格式化ISA指令242。在一實施例中,簡單指令轉譯器204包含一硬體狀態機器(hardware state machine)使其能夠在多個時鐘週期輸出多個微指令244以實現一個ISA指令242。
在一實施例中,簡單指令轉譯器204並依據指令模式指標132與/或環境模式指標136,執行多個不同的例外事件檢測。舉例來說,若是指令模式指標132指示為x86且x86簡單指令轉譯器222對一個就x86 ISA而言是無效的ISA指令124進行解碼,簡單指令轉譯器204隨即產生一 個x86無效操作碼例外事件;相似地,若是指令模式指標132指示為ARM且ARM簡單指令轉譯器224對一個就ARM ISA而言是無效的ISA指令124進行解碼,簡單指令轉譯器204隨即產生一個ARM未定義指令例外事件。在另一實施例中,若是環境模式指標136指示為x86 ISA,簡單指令轉譯器204隨即檢測是否其所遭遇之每個x86 ISA指令242需要一特別特權級(particular privilege level),若是,檢測當前特權級(CPL)是否滿足此x86 ISA指令242所需之特別特權級,並於不滿足時產生一例外事件;相似地,若是環境模式指標136指示為ARM ISA,簡單指令轉譯器204隨即檢測是否每個格式化ARM ISA指令242需要一特權模式指令(privileged mode instruction),若是,檢測當前的模式是否為特權模式,並於現在模式為使用者模式時,產生一例外事件。複雜指令轉譯器206對於特定複雜ISA指令242亦執行類似的功能。
複雜指令轉譯器206輸出一系列實行微指令246至多工器212。微碼唯讀記憶體234儲存微碼程序之唯讀記憶體指令247。微碼唯讀記憶體234輸出唯讀記憶體指令247以回應由微碼唯讀記憶體234取得之下一個唯讀記憶體指令247的位址,並由微程式計數器232所持有。一般來說,微程式計數器232係由簡單指令轉譯器204接收其起始值252,以回應簡單指令轉譯器204對於一複雜ISA指令242的解碼動作。在其他情形,例如回應一重置或例外事件,微程式計數器232分別接收重置微碼程序位址或適當之微碼例外事件處理位址。微程序器236通常依據唯讀記憶體 指令247的尺寸,將微程式計數器232更新為微碼程序的序列以及選擇性地更新為執行管線112回應控制型微指令126(如分支指令)執行所產生的目標位址,以使指向微碼唯讀記憶體234內之非程序位址的分支生效。微碼唯讀記憶體234係製造於微處理器100之半導體晶片內。
除了用來實現簡單ISA指令124或部分複雜ISA指令124的微指令244外,簡單指令轉譯器204也產生ISA指令資訊255以寫入指令間接暫存器235。儲存於指令間接暫存器235的ISA指令資訊255包含關於被轉譯之ISA指令124的資訊,例如,確認由ISA指令所指定之來源與目的暫存器的資訊以及ISA指令124的格式,如ISA指令124係在記憶體之一運算元上或是在微處理器100之一架構暫存器106內執行。這樣可藉此使微碼程序能夠變為通用,亦即不需對於各個不同的來源與/或目的架構暫存器106使用不同的微碼程序。尤其是,簡單指令轉譯器204知道暫存器檔案106的內容,包含哪些暫存器是共享暫存器504,而能將x86 ISA與ARM ISA指令124內提供的暫存器資訊,透過ISA指令資訊255之使用,轉譯至暫存器檔案106內之適當的暫存器。ISA指令資訊255包含一移位欄、一立即欄、一常數欄、各個來源運算元與微指令126本身的重命名資訊、用以實現ISA指令124之一系列微指令126中指示第一個與最後一個微指令126的資訊、以及儲存由硬體指令轉譯器104對ISA指令124轉譯時所蒐集到的有用資訊的其他位元。
微轉譯器237係由微碼唯讀記憶體234與間接指令暫 存器235的內容接收唯讀記憶體指令247,並相應地產生實行微指令246。微轉譯器237依據由間接指令暫存器235接收的資訊,如依據ISA指令124的格式以及由其所指定之來源與/或目的架構暫存器106組合,來將特定唯讀記憶體指令247轉譯為不同的微指令246系列。在一些實施例中,許多ISA指令資訊255係與唯讀記憶體指令247合併以產生實行微指令246。在一實施例中,各個唯讀記憶體指令247係大約有40位元寬,並且各個微指令246係大約有200位元寬。在一實施例中,微轉譯器237最多能夠由一個微讀記憶體指令247產生三個微指令246。微轉譯器237包含多個布林邏輯閘以產生實行微指令246。
使用微轉譯器237的優點在於,由於簡單指令轉譯器204本身就會產生ISA指令資訊255,微碼唯讀記憶體234不需要儲存間接指令暫存器235提供之ISA指令資訊255,因而可以降低減少其大小。此外,因為微碼唯讀記憶體234不需要為了各個不同的ISA指令格式、以及各個來源與/或目的架構暫存器106之組合,提供一獨立的程序,微碼唯讀記憶體234程序可包含較少的條件分支指令。舉例來說,若是複雜ISA指令124係記憶體格式,簡單指令轉譯器204會產生微指令244的邏輯編程,其包含將來源運算元由記憶體載入一暫時暫存器106之微指令244,並且微轉譯器237會產生微指令246用以將結果由暫時暫存器106儲存至記憶體;然而,若複雜ISA指令124係暫存器格式,此邏輯編程會將源運算元由ISA指令124所指定的來源暫存器移動至暫時暫存器,並且微轉譯器237會產 生微指令246用以將結果由暫時暫存器移動至由間接指令暫存器235所指定之架構目的暫存器106。在一實施例中,微轉譯器237之許多面向係類似於2010年4月23日提出之美國專利第12/766,244號申請案,在此係列為參考資料。不過,本案之微轉譯器237除了x86 ISA指令124外,亦經改良以轉譯ARM ISA指令124。
值得注意的是,微程式計數器232不同於ARM程式計數器116與x86指令指標118,亦即微程式計數器232並不持有ISA指令124的位址,微程式計數器232所持有的位址亦不落於系統記憶體位址空間內。此外,更值得注意的是,微指令246係由硬體指令轉譯器104所產生,並且直接提供給執行管線112執行,而非作為執行管線112之執行結果128。
請參照第3圖,圖中係以方塊圖詳述第2圖之指令格式化器202。指令格式化程式器202由第1圖之指令快取102接收x86 ISA與ARM ISA指令位元組124區塊。憑藉x86 ISA指令長度可變之特性,x86指令124可以由指令位元組124區塊之任何位元組開始。由於x86 ISA容許首碼位元組的長度會受到當前位址長度與運算元長度預設值之影響,因此確認快取區塊內之x86 ISA指令的長度與位置之任務會更為複雜。此外,依據當前ARM指令集狀態322與ARM ISA指令124的操作碼,ARM ISA指令的長度不是2位元組就是4位元組,因而不是2位元組對齊就是4位元組對齊。因此,指令格式化器202由指令位元組124串(stream)擷取不同的x86 ISA與ARM ISA指令,此 指令位元組124串係由指令快取102接收之區塊所構成。也就是說,指令格式化程式202格式化x86 ISA與ARM ISA指令位元組串,因而大幅簡化第2圖之簡單指令轉譯器204對ISA指令124進行解碼與轉譯的困難任務。
指令格式化器202包含一預解碼器302,在指令模式指標132指示為x86時,預解碼器302預先將指令位元組124視為x86指令位元組進行解碼以產生預解碼資訊,在指令模式指標132指示為ARM時,預解碼器302預先將指令位元組124視為ARM指令位元組進行解碼以產生預解碼資訊。指令位元組佇列(IBQ)304接收ISA指令位元組124區塊以及由預解碼器302產生之相關預解碼資訊。
一個由長度解碼器與漣波邏輯閘306構成的陣列接收指令位元組佇列304底部項目(bottom entry)的內容,亦即ISA指令位元組124區塊與相關的預解碼資訊。此長度解碼器與漣波邏輯閘306亦接收指令模式指標132與ARM ISA指令集狀態322。在一實施例中,ARM ISA指令集狀態322包含ARM ISA CPSR暫存器之J與T位元。為了回應其輸入資訊,此長度解碼器與漣波邏輯閘306產生解碼資訊,此解碼資訊包含ISA指令位元組124區塊內之x86與ARM指令的長度、x86首碼資訊、以及關於各個ISA指令位元組124的指標,此指標指出此位元組是否為ISA指令124之起始位元組、終止位元組、以及/或一有效位元組。一多工器佇列308接收ISA指令位元組126區塊、由預解碼器302產生之相關預解碼資訊、以及由長度解碼器與漣波邏輯閘306產生之相關解碼資訊。
控制邏輯(未圖示)檢驗多工器佇列(MQ)308底部項目的內容,並控制多工器312擷取不同的、或格式化的ISA指令與相關的預解碼與解碼資訊,所擷取的資訊提供至一格式化指令佇列(FIQ)314。格式化指令佇列314在格式化ISA指令242與提供至第2圖之簡單指令轉譯器204之相關資訊間作為緩衝。在一實施例中,多工器312在每一個時脈週期內擷取至多三個格式化ISA指令與相關的資訊。
在一實施例中,指令格式化程式202在許多方面類似於2009年10月1日提出之美國專利第12/571,997號、第12/572,002號、第12/572,045號、第12/572,024號、第12/572,052號與第12/572,058號申請案共同揭露的XIBQ、指令格式化程式、與FIQ,這些申請案在此列為參考資料。然而,前述專利申請案所揭示的XIBQ、指令格式化程式、與FIQ透過修改,使其能在格式化x86 ISA指令124外,還能格式化ARM ISA指令124。長度解碼器306被修改,使能對ARM ISA指令124進行解碼以產生長度以及起點、終點與有效性的位元組指標。尤其,若是指令模式指標132指示為ARM ISA,長度解碼器306檢測當前ARM指令集狀態322與ARM ISA指令124的操作碼,以確認ARM指令124是一個2位元組長度或是4位元組長度的指令。在一實施例中,長度解碼器306包含多個獨立的長度解碼器分別用以產生x86 ISA指令124的長度資料以及ARM ISA指令124的長度資料,這些獨立的長度解碼器之輸出再以連線或(wire-ORed)耦接在一起,以提供輸出至漣波邏輯閘306。在一實施例中,此格式化指令佇列314包含獨立的佇 列以持有格式化指令242之多個互相分離的部分。在一實施例中,指令格式化程式202在單一時脈週期內,提供簡單指令轉譯器204至多三個格式化ISA指令242。
請參照第4圖,圖中係以方塊圖詳細顯示第1圖之執行管線112,此執行管線112耦接至硬體指令轉譯器104以直接接收來自第2圖之硬體指令轉譯器104的實行微指令。執行管線112包含一微指令佇列401,以接收微指令126;一暫存器配置表402,由微指令佇列401接收微指令;一指令調度器404,耦接至暫存器配置表402;多個保留站406,耦接至指令調度器404;一指令發送單元408,耦接至保留站406;一重排緩衝器(reorder buffer,ROB)422,耦接至暫存器配置表402、指令調度器404與保留站406;以及,執行單元424耦接至保留站406、指令發送單元408與重排緩衝器422。暫存器配置表402與執行單元424接收指令模式指標132。
在硬體指令轉譯器104產生實行微指令126的速率不同於執行管線112執行微指令126之情況下,微指令佇列401係作為一緩衝器。在一實施例中,微指令佇列401包含一個M至N可壓縮微指令佇列。此可壓縮微指令佇列使執行管線112能夠在一給定的時脈週期內,從硬體指令轉譯器104接收至多M個(在一實施例中,M是六)微指令126,並且隨後將接收到的微指令126儲存至寬度為N(在一實施例中,N是三)的佇列結構,以在每個時脈週期提供至多N個微指令126至暫存器配置表402,此暫存器配置表402能夠在每個時脈週期處理最多N個微指令126。 微指令佇列401係可壓縮的,因它不論接收到微指令126之特定時脈週期為何,皆會依序將由硬體指令轉譯器104所傳送之微指令126時填滿佇列的空項目,因而不會在佇列項目中留下空洞。此方法的優點為能夠充分利用執行單元424(請參照第4圖),因為它可比不可壓縮寬度M或寬度M的指令佇列提供較高的指令儲存效能。具體來說,不可壓縮寬度N的佇列會需要硬體指令轉譯器104,尤其是簡單指令轉譯器204,在之後的時脈週期內會重複轉譯一個或多個已經在之前的時脈週期內已經被轉譯過的ISA指令124。會這樣做的原因是,不可壓縮寬度N的佇列無法在同一個時脈週期接收多於N個微指令126,而重複轉譯將導致電力耗損。不過,不可壓縮寬度M的佇列雖然不需要簡單指令轉譯器204重複轉譯,但卻會在佇列項目中產生空洞而導致浪費,因而需要更多列項目以及一個較大且更耗能的佇列來提供相當的緩衝能力。
暫存器配置表402係由微指令佇列401接收微指令126並產生與微處理器100內進行中之微指令126的附屬資訊,暫存器配置表402並執行暫存器重命名動作來增加微指令平行處理之能力,以利於執行管線112之超純量、非循序執行能力。若是ISA指令124指示為x86,暫存器配置表402會對應於微處理器100之x86 ISA暫存器106,產生附屬資訊且執行相對應的暫存器重命名動作;反之,若是ISA指令124指示為ARM,暫存器配置表402就會對應於微處理器100之ARM ISA暫存器106,產生附屬資訊且執行相對應的暫存器重命名動作;不過,如前述,部分 暫存器106可能是由x86 ISA與ARM ISA所共享。暫存器配置表402亦在重排緩衝器422中依據程式順序配置一項目給各個微指令126,因此重排緩衝器422可使微指令126以及其相關的x86 ISA與ARM ISA指令124依據程式順序進行引退,即使微指令126的執行對應於其所欲實現之x86 ISA與ARM ISA指令124而言係以非循序的方式進行的。重排緩衝器422包含一環形佇列,此環形佇列之各個項目係用以儲存關於進行中之微指令126的資訊,此資訊除了其他事項,還包含微指令126執行狀態、一個確認微指令126係由x86或是ARM ISA指令124所轉譯的標籤、以及用以儲存微指令126之結果的儲存空間。
指令調度器404由暫存器配置表402接收暫存器重命名微指令126與附屬資訊,並依據指令的種類以及執行單元424之可利用性,將微指令126及其附屬資訊分派至關聯於適當的執行單元424之保留站406。此執行單元424將會執行微指令126。
對各個在保留站406中等待的微指令126而言,指令發送單元408測得相關執行單元424可被運用且其附屬資訊被滿足(如來源運算元可被運用)時,即發布微指令126至執行單元424供執行。如前述,指令發送單元408所發布的微指令126,可以非循序以及以超純量方式來執行。
在一實施例中,執行單元424包含整數/分支單元412、媒體單元414、載入/儲存單元416、以及浮點單元418。執行單元424執行微指令126以產生結果128並提供至重排緩衝器422。雖然執行單元424並不大受到其所執 行之微指令126係由x86或是ARM ISA指令124轉譯而來的影響,執行單元424仍會使用指令模式指標132與環境模式指標136以執行相對較小的微指令126子集。舉例來說,執行管線112管理旗標的產生,其管理會依據指令模式指標132指示為x86 ISA或是ARM ISA而有些微不同,並且,執行管線112係依據指令模式指標132指示為x86 ISA或是ARM ISA,對x86 EFLAGS暫存器或是程式狀態暫存器(PSR)內的ARM條件碼旗標進行更新。在另一實例中,執行管線112對指令模式指標132進行取樣以決定去更新x86指令指標(IP)118或ARM程式計數器(PC)116,還是更新共通的指令位址暫存器。此外,執行管線122亦藉此來決定使用x86或是ARM語意執行前述動作。一旦微指令126變成微處理器100中最舊的已完成微指令126(亦即,在重排緩衝器422佇列的排頭且呈現已完成的狀態)且其他用以實現相關之ISA指令124的所有微指令126均已完成,重排緩衝器422就會引退ISA指令124並釋放與實行微指令126相關的項目。在一實施例中,微處理器100可在一時脈週期內引退至多三個ISA指令124。此處理方法的優點在於,執行管線112係一高效能、通用執行引擎,其可執行支援x86 ISA與ARM ISA指令124之微處理器100微架構的微指令126。
請參照第5圖,圖中係以方塊圖詳述第1圖之暫存器檔案106。就一較佳實施例而言,暫存器檔案106為獨立的暫存器區塊實體。在一實施例中,通用暫存器係由一具有多個讀出埠與寫入埠之暫存器檔案實體來實現;其他暫 存器可在實體上獨立於此通用暫存器檔案以及其他會存取這些暫存器但具有較少之讀取寫入埠的鄰近功能方塊。在一實施例中,部分非通用暫存器,尤其是那些不直接控制微處理器100之硬體而僅儲存微碼234會使用到之數值的暫存器(如部分x86 MSR或是ARM協同處理器暫存器),則是在一個微碼234可存取之私有隨機存取記憶體(PRAM)內實現。不過,x86 ISA與ARM ISA程式者無法見到此私有隨機存取記憶體,亦即此記憶體並不在ISA系統記憶體位址空間內。
總括來說,如第5圖所示,暫存器檔案106在邏輯上係區分為三種,亦即ARM特定的暫存器502、x86特定的暫存器504、以及共享暫存器506。在一實施例中,共享暫存器506包含十五個32位元暫存器,由ARM ISA暫存器R0至R14以及x86 ISA EAX至R14D暫存器所共享,另外有十六個128位元暫存器由x86 ISA XMM0至XMM15暫存器以及ARM ISA進階單指令多重數據擴展(Neon)暫存器所共享,這些暫存器之部分係重疊於三十二個32位元ARM VFPv3浮點暫存器。如前文第1圖所述,通用暫存器之共享意指由x86 ISA指令124寫入一共享暫存器的數值,會被ARM ISA指令124在隨後讀取此共享暫存器時見到,反之亦然。此方式的優點在於,能夠使x86 ISA與ARM ISA程序透過暫存器互相溝通。此外,如前述,x86 ISA與ARM ISA之架構控制暫存器的特定位元亦可被引用為共享暫存器506。如前述,在一實施例中,x86特定模型暫存器可被ARM ISA指令124透過實作定義協同處理器暫 存器存取,因而是由x86 ISA與ARM ISA所共享。此共享暫存器506可包含非架構暫存器,例如條件旗標之非架構同等物,這些非架構暫存器同樣由暫存器配置表402重命名。硬體指令轉譯器104知道哪一個暫存器係由x86 ISA與ARM ISA所共享,因而會產生實行微指令126來存取正確的暫存器。
ARM特定的暫存器502包含ARM ISA所定義但未被包含於共享暫存器506之其他暫存器,而x86特定的暫存器504包含x86 ISA所定義但未被包含於共享暫存器506之其他暫存器。舉例來說,ARM特定的暫存器502包含ARM程式計數器116、CPSR、SCTRL、FPSCR、CPACR、協同處理器暫存器、多種例外事件模式的備用通用暫存器與程序狀態保存暫存器(saved program status registers,SPSRs)等等。前文列出的ARM特定暫存器502並非為限定本案發明,僅為例示以說明本發明。另外,舉例來說,x86特定的暫存器504包含x86指令指標(EIP或IP)118、EFLAGS、R15D、64位元之R0至R15暫存器的上面32位元(亦即未落於共享暫存器506的部分)、區段暫存器(SS,CS,DS,ES,FS,GS)、x87 FPU暫存器、MMX暫存器、控制暫存器(如CR0-CR3、CR8)等。前文列出的x86特定暫存器504並非為限定本案發明,僅為例示以說明本發明。
在一實施例中,微處理器100包含新的實作定義ARM協同處理器暫存器,在指令模式指標132指示為ARM ISA時,此實作定義協同處理器暫存器可被存取以執行x86 ISA相關的操作。這些操作包含但不限於:將微處理器100重 置為一x86 ISA處理器(重置至x86指令)的能力;將微處理器100初始化為x86特定的狀態,將指令模式指標132切換至x86,並開始在一特定x86目標位址擷取x86指令124(啟動至x86指令)的能力;存取前述全域組態暫存器的能力;存取x86特定暫存器(如EFLAGS)的能力,此x86暫存器係指定在ARM R0暫存器中,存取電力管理(如P狀態與C狀態的轉換),存取處理器匯流排功能(如輸入/輸出循環)、中斷控制器之存取、以及加密加速功能之存取。此外,在一實施例中,微處理器100包含新的x86非架構特定模型暫存器,在指令模式指標132指示為x86 ISA時,此非架構特定模型暫存器可被存取以執行ARM ISA相關的操作。這些操作包含但不限於:將微處理器100重置為一ARM ISA處理器(重置至ARM指令)的能力;將微處理器100初始化為ARM特定的狀態,將指令模式指標132切換至ARM,且開始在一特定ARM目標位址擷取ARM指令124(啟動至ARM指令)的能力;存取前述全域組態暫存器的能力;存取ARM特定暫存器(如CPSR)的能力,此ARM暫存器係指定在EAX暫存器內。
請參照第6A與6B圖,圖中顯示一流程說明第1圖之微處理器100的操作程序。此流程始於步驟602。
如步驟602所示,微處理器100係被重置。可向微處理器100之重置輸入端發出信號來進行此重置動作。此外,在一實施例中,此微處理器匯流排係一x86型式之處理器匯流排,此重置動作可由x86型式之INIT命令進行。回應此重置動作,微碼234的重置程序係被調用來執行。 此重置微碼之動作包含:(1)將x86特定的狀態504初始化為x86 ISA所指定的預設數值;(2)將ARM特定的狀態502初始化為ARM ISA所指定的預設數值;(3)將微處理器100之非ISA特定的狀態初始化為微處理器100製造商所指定的預設數值;(4)將共享ISA狀態506,如GPRs,初始化為x86 ISA所指定的預設數值;以及(5)將指令模式指標132與環境模式指標136設定為指示x86 ISA。在另一實施例中,不同於前揭動作(4)與(5),此重置微碼將共享ISA狀態506初始化為ARM ISA特定的預設數值,並將指令模式指標132與環境模式指標136設定為指示ARM ISA。在此實施例中,步驟638與642的動作不需要被執行,並且,在步驟614之前,此重置微碼會將共享ISA狀態506初始化為x86 ISA所指定的預設數值,並將指令模式指標132與環境模式指標136設定為指示x86 ISA。接下來進入步驟604。
在步驟604,重置微碼確認微處理器100係配置為一個x86處理器或是一個ARM處理器來進行開機。在一實施例中,如前述,預設ISA開機模式係硬式編碼於微碼,不過可透過熔斷組態熔絲的方式,或利用一微碼修補丁來修改。在一實施例中,此預設ISA開機模式作為一外部輸入提供至微處理器100,例如一外部輸入接腳。接下來進入步驟606。在步驟606中,若是預設ISA開機模式為x86,就會進入步驟614;反之,若是預設開機模式為ARM,就會進入步驟638。
在步驟614中,重置微碼使微處理器100開始由x86 ISA指定的重置向量位址擷取x86指令124。接下來進入步驟616。
在步驟616中,x86系統軟體(如BIOS)係配置微處理器100來使用如x86 ISA RDMSR與WRMSR指令124。接下來進入步驟618。
在步驟618中,x86系統軟體執行一重置至ARM的指令124。此重置至ARM的指令使微處理器100重置並以一ARM處理器的狀態離開重置程序。然而,因為x86特定狀態504以及非ISA特定組態狀態不會因為重置至ARM的指令126而改變,此方式有利於使x86系統韌體執行微處理器100之初步設定並使微處理器100隨後以ARM處理器的狀態重開機,而同時還能使x86系統軟體執行之微處理器100的非ARM組態配置維持完好。藉此,此方法能夠使用“小型的”微開機碼來執行ARM作業系統的開機程序,而不需要使用微開機碼來解決如何配置微處理器100之複雜問題。在一實施例中,此重置至ARM指令係一x86 WRMSR指令至一新的非架構特定模型暫存器。接下來進入步驟622。
在步驟622,簡單指令轉譯器204進入陷阱至重置微碼,以回應複雜重置至ARM(complex reset-to-ARM)指令124。此重置微碼使ARM特定狀態502初始化至由ARM ISA指定的預設數值。不過,重置微碼並不修改微處理器100之非ISA特定狀態,因有利於保存步驟616執行所需的組態設定。此外,重置微碼使共享ISA狀態506初始化至ARM ISA指定的預設數值。最後,重置微碼設定指令 模式指標132與環境模式指標136以指示ARM ISA。接下來進入步驟624。
在步驟624中,重置微碼使微處理器100開始在x86 ISA EDX:EAX暫存器指定的位址擷取ARM指令124。此流程結束於步驟624。
在步驟638中,重置微碼將共享ISA狀態506,如GPRs,初始化至ARM ISA指定的預設數值。接下來進入步驟642。
在步驟642中,重置微碼設定指令模式指標132與環境模式指標136以指示ARM ISA。接下來進入步驟644。
在步驟644中,重置微碼使微處理器100開始在ARM ISA指定的重置向量位址擷取ARM指令124。此ARM ISA定義兩個重置向量位址,並可由一輸入來選擇。在一實施例中,微處理器100包含一外部輸入,以在兩個ARM ISA定義的重置向量位址間進行選擇。在另一實施例中,微碼234包含在兩個ARM ISA定義的重置向量位址間之一預設選擇,此預設選則可透過熔斷熔絲以及/或是微碼修補來修改。接下來進入步驟646。
在步驟646中,ARM系統軟體設定微處理器100來使用特定指令,如ARM ISA MCR與MRC指令124。接下來進入步驟648。
在步驟648中,ARM系統軟體執行一重置至x86的指令124,來使微處理器100重置並以一x86處理器的狀態離開重置程序。然而,因為ARM特定狀態502以及非ISA特定組態狀態不會因為重置至x86的指令126而改變,此 方式有利於使ARM系統韌體執行微處理器100之初步設定並使微處理器100隨後以x86處理器的狀態重開機,而同時還能使由ARM系統軟體執行之微處理器100的非x86組態配置維持完好。藉此,此方法能夠使用“小型的”微開機碼來執行x86作業系統的開機程序,而不需要使用微開機碼來解決如何配置微處理器100之複雜問題。在一實施例中,此重置至x86指令係一ARM MRC/MRCC指令至一新的實作定義協同處理器暫存器。接下來進入步驟652。
在步驟652中,簡單指令轉譯器204進入陷阱至重置微碼,以回應複雜重置至x86指令124。重置微碼使x86特定狀態504初始化至x86 ISA所指定的預設數值。不過,重置微碼並不修改微處理器100之非ISA特定狀態,此處理有利於保存步驟646所執行的組態設定。此外,重置微碼使共享ISA狀態506初始化至x86 ISA所指定的預設數值。最後,重置微碼設定指令模式指標132與環境模式指標136以指示x86 ISA。接下來進入步驟654。
在步驟654中,重置微碼使微處理器100開始在ARM ISA R1:R0暫存器所指定的位址擷取ARM指令124。此流程終止於步驟654。
請參照第7圖,圖中係以一方塊圖說明本發明之一雙核心微處理器700。此雙核心微處理器700包含兩個處理核心100,各個核心100包含第1圖微處理器100所具有的元件,藉此,各個核心均可執行x86 ISA與ARM ISA機器語言程式。這些核心100可被設定為兩個核心100都執行x86 ISA程式、兩個核心100都執行ARM ISA程式、或 是一個核心100執行x86 ISA程式而另一個核心100則是執行ARM ISA程式。在微處理器700的操作過程中,前述三種設定方式可混合且動態改變。如第6A圖及第6B圖之說明內容所述,各個核心100對於其指令模式指標132與環境模式指標136均具有一預設數值,此預設數值可利用熔絲或微碼修補修改,藉此,各個核心100可以獨立地透過重置改變為x86或是ARM處理器。雖然第7圖的實施例僅具有二個核心100,在其他實施例中,微處理器700可具有多於二個核心100,而各個核心均可執行x86 ISA與ARM ISA機器語言程式。
請參照第8圖,圖中係以一方塊圖說明本發明另一實施例之可執行x86 ISA與ARM ISA機器語言程式的微處理器100。第8圖之微處理器100係類似於第1圖之微處理器100,其中的元件編號亦相似。然而,第8圖之微處理器100亦包含一微指令快取892,此微指令快取892存取由硬體指令轉譯器104產生且直接提供給執行管線112之微指令126。微指令快取892係由指令擷取單元114所產生之擷取位址做索引。若是擷取位址134命中微指令快取892,執行管線112內之多工器(未圖示)就選擇來自微指令快取892之微指令126,而非來自硬體指令轉譯器104之微指令126;反之,多工器則是選擇直接由硬體指令轉譯器104提供之微指令126。微指令快取的操作,通常亦稱為追蹤快取,係微處理器設計之技術領域所習知的技術。微指令快取892所帶來的優點在於,由微指令快取892擷取微指令126所需的時間通常會少於由指令快取102擷 取指令124並且利用硬體指令轉譯器將其轉譯為微指令126的時間。在第8圖之實施例中,微處理器100在執行x86或是ARM ISA機器語言程式時,硬體指令轉譯器104不需要在每次執行x86或ARM ISA指令124時都執行硬體轉譯,亦即當實行微指令126已經存在於微指令快取892,就不需要執行硬體轉譯。
在此所述之微處理器的實施例之優點在於,其透過內建之硬體指令轉譯器來將x86 ISA與ARM ISA指令轉譯為微指令集之微指令,而能執行x86 ISA與ARM ISA機器語言程式,此微指令集不同於x86 ISA與ARM ISA指令集,且微指令可利用微處理器之共用的執行管線來執行以提供實行微指令。在此所述之微處理器的實施例之優點在於,透過協同利用大量與ISA無關之執行管線來執行由x86 ISA與ARM ISA指令硬體轉譯來的微指令,微處理器的設計與製造所需的資源會少於兩個獨立設計製造之微處理器(亦即一個能夠執行x86 ISA機器語言程式,一個能夠執行ARM ISA機器語言程式)所需的資源。此外,這些微處理器的實施例中,尤其是那些使用超純量非循序執行管線的微處理器,具有潛力能提供相較於既有ARM ISA處理器更高的效能。此外,這些微處理器的實施例,相較於採用軟體轉譯器之系統,亦在x86與ARM的執行上可更具潛力地提供更高的效能。最後,由於微處理器可執行x86 ISA與ARM ISA機器語言程式,此微處理器有利於建構一個能夠高效能地同時執行x86與ARM機器語言程式的系統。
條件算數與邏輯單元(CONDITIONAL ALU)指令
對微處理器而言,在指令集中內含讓指令被條件執行的功能是令人想要的。條件執行指令的意思就是,指令會指定一條件(如零、或負、或大於),如果滿足條件旗標,此條件就會由微處理器執行,如果不滿足條件旗標,條件就不會執行。如前述,ARM ISA不僅只提供此功能至分支指令,還提供至其指令集中之大部分的指令中。被條件執行的指令會指定來自通用暫存器之來源運算元,以產生一結果寫入通用目地暫存器。專利權人為ARM Limited,of Cambridge,Great Britain之美國第7,647,480號專利案即描述一處理條件指令之資料處理裝置。一般而言,一管線處理單元執行一條件指令以產生一結果資料數值。此結果資料數值在條件滿足時顯示條件指令指定之計算的結果,而在條件不滿足時顯示儲存於目的暫存器的現今資料數值。兩個可能的解決方案係描述於下列段落。
在第一個解決方案中,指令集內的各個條件指令係被限制為,該指令條件所指定之暫存器係同時為來源暫存器以及目的暫存器。使用此方式,條件指令只會占據暫存器檔案之兩個讀出埠,即提供現今目的暫存器數值作為一來源運算元,以及提供其他來源運算元。因此,此第一個解決方案可進一步降低支援管線處理單元執行條件指令所需之最低限度的暫存器檔案讀出埠數量。
第二個解決方案移除第一個解決方案中對於條件指令的限制,藉此,條件指令可以指定獨立的目的暫存器與來源暫存器。第二個解決方案需要使用暫存器檔案一個額外 的讀出埠,以在單一週期內能讀取條件指令所需的運算元資料數值(即來自暫存器檔案之來源運算元與目的運算元)。因為第二個解決方案不僅需要為額外的讀出埠付出成本,還需要較大數量的位元來指定條件指令與更為複雜的資料路徑,美國專利第7,647,480號專利案係選擇第一個解決方案為其標的。具體來說,此資料路徑需要為來自暫存器檔案之三個輸入路徑提供邏輯處理,並且還可能需要導向邏輯以耦接至此三個路徑中之任何一個。
在此提出的實施例的優點在於,其能使條件指令指定不同於目的暫存器之來源運算元暫存器,並且不需要在暫存器檔案使用一個額外的讀出埠。一般而言,依據本發明之實施例,第1圖微處理器100之硬體指令轉譯器104將一條件執行ISA指令124轉譯為由一個或多個微指令126構成之序列,以供執行管線112執行。執行此序列之最後一個微指令126的執行單元424接收到由條件指令124指定之目的暫存器的原本數值,以確認條件是否滿足。前一個微指令126,或是最後一個微指令126本身,會對來源運算元執行一操作以產生一結果。若是條件不滿足,執行此序列之最後一個微指令126的執行單元424會將此原本數值寫回目的暫存器,而非將結果數值寫入目的暫存器。
在本發明之實施例中,條件ALU指令係一ISA指令124指示微處理器100對一個以上的來源運算元去執行一算數或邏輯操作,以產生一結果並將此結果寫入一目的暫存器。其他種類的條件指令124亦可能被微處理器100之ISA指令集所支持,例如條件分支指令124或是條件載入/ 儲存指令124,這些指令有別於條件ALU指令124。
由硬體指令轉譯器104回應遭遇到的條件ALU指令124所送出序列中之微指令126的數量與類型,係由兩個特點所定性。第一個特點是,條件ALU指令124是否指定來源運算元之一係被施以預移位操作。在一實施例中,預移位操作舉例來說係包含ARM架構參考手冊第A8-10頁至A8-12頁描述的操作。若是條件ALU指令124指定一預移位操作,硬體指令轉譯器104產生一移位微指令126(在第10圖起標示為SHF)作為序列中之第一個微指令126。此移位微指令126執行此預移位動作以產生一移位結果寫入一暫時暫存器(temporary register),以提供予序列中後續微指令126之使用。第二個特點是,是否由條件ALU指令124指定之目的暫存器亦是這些來源運算元暫存器之其中之一。若是,硬體指令轉譯器104進行一優化程序來將條件ALU指令124轉譯為一個相較於未指定目的暫存器為來源運算元暫存器其中之一的條件ALU指令124所產生者,少一個的微指令126的數量。此程序主要係描述於第21至28圖。
此外,條件ALU指令124指定一個架構條件旗標必須滿足之條件,使微處理器100能執行此條件ALU指令124。此條件ALU指令124會指定架構條件旗標需以ALU操作的結果以及/或一預移位產生的進位旗標(carry flag)進行更新。然而,若是條件不被滿足,架構條件旗標就不會被更新。達成此操作相當複雜,因為硬體指令轉譯器104需將條件ALU指令124轉譯為由多個微指令126構成的序 列。具體來說,若是條件被滿足,至少一個微指令126必須寫入此新的條件旗標數值;然而,條件旗標的舊數值可能被位於序列的微指令126用來確認是否條件ALU指令124所指定的條件被滿足,以及/或去執行ALU操作。這些實施例的優點在於,微處理器100運用技巧以確保在條件不被滿足時就不更新條件旗標,且在條件被滿足時才以正確的數值來更新旗標,這包含利用預移位進位旗標值進行更新。
在本發明之微處理器100的實施例中,如第1圖所示,用以保持通用暫存器之暫存器檔案106,所具有的讀出埠僅足夠供暫存器檔案106提供至多二個來源運算元至執行微指令之執行單元424以實現條件ALU指令124。如前揭對應於第1圖之說明內容,本發明之微處理器100的實施例係針對一商用微處理器進行改良。用以保持此商用微處理器之通用暫存器的暫存器檔案具有的讀出埠僅足夠供暫存器檔案提供至多二個來源運算元至執行單元,執行單元執行此處所稱之微指令126以實現條件ALU指令124。因此,本文所述之實施例特別有利於搭配運用在此商用微處理器的微架構中。如前揭對應於第1圖之說明內容,此商用微處理器原本係設計為x86 ISA,關於指令之條件執行並不是其中的關鍵特徵,因為此處理器係基於累加器,而通常需要一個來源運算元作為目的運算元,因此,此處理器看來並不需要此額外的讀出埠。
在此所述之實施例的一個優點在於,雖然在一些例子中,關聯於由條件ALU指令124所轉譯之兩個微指令的執 行會有兩時脈週期之執行延遲,而在一些事例中,關聯於由條件ALU指令124所轉譯之兩個微指令的執行會有三個時脈週期之執行延遲,但各個微指令所執行的操作係相對簡單的,而使管線化架構的實作能夠支援相對較高的核心時脈頻率。
雖然在此所述之實施例中,微處理器100能夠執行ARM ISA與x86 ISA指令,不過本發明並不限於此。本發明之實施例亦可適用於微處理器僅執行單一個ISA指令的情形。此外,雖然在此所述之實施例中,微處理器100係將ARM ISA條件ALU指令轉譯為微指令126,不過此實施例亦可適用於,微處理器執行一個不同於ARM之ISA指令,而同樣在其指令集中包含條件ALU指令的情形。
請參照第9圖,圖中係以一方塊圖進一步詳述第1圖之微處理器100。此微處理器100在第1圖之暫存器檔案106內包含一架構條件旗標暫存器926,此微處理器100並包含第4圖之執行單元424與重排緩衝器422。條件旗標暫存器926儲存架構條件旗標。在一實施例中,當指令模式指標132指示為ARM ISA,條件旗標暫存器926依據ARM ISA條件旗標的語意儲存數值,而當指令模式指標132指示為x86 ISA,條件旗標暫存器926則是依據x86 ISA條件旗標,即x86 EFLAGS,的語意儲存數值。如前文對應於第5圖之說明內容所述,暫存器檔案106以由暫存器構成之獨立的實體區塊來實現效果較佳;特別是,舉例來說,條件旗標暫存器926可以是一個不同於通用暫存器之暫存器檔案的實體暫存器檔案。因此,即使如下述,條件 旗標係提供至執行單元424以執行微指令126,條件旗標暫存器檔案的讀出埠可以是不同於通用暫存器檔案的讀出埠。
條件旗標暫存器926輸出其條件旗標數值至一個三輸入端多工器922之一資料輸入端。此多工器922之一第二資料輸入端亦由重排緩衝器422之適當項目(entry)接收條件旗標結果。此多工器922之一第三資料輸入端亦由一旗標匯流排928接收條件旗標結果。此多工器922選擇適當的資料輸入端之輸入,作為其輸出924提供至執行單元424以執行微指令126讀取條件旗標。此過程在後續段落會有更清楚的描述。雖然本實施例僅描述單一個旗標匯流排928,不過,依據本發明之一實施例,各個能夠產生條件旗標的執行單元424都具有其自己的旗標匯流排928,而各個能夠讀取條件旗標的執行單元424都具有其自己的條件旗標輸入端924。因此,各個不同的執行單元424能夠同時執行不同的微指令126來讀取與/或寫入條件旗標。
旗標匯流排928是第1圖之結果匯流排128的一部分,用以傳送由執行單元424輸出之條件旗標結果。條件旗標結果係寫入重排緩衝器422,更精確來說,是寫入重排緩衝器422內配置給由執行單元424執行之微指令126的項目,而執行單元424執行的結果係被傳送至旗標匯流排928。條件旗標結果同時被旗標匯流排928傳送至多工器922之第三資料輸入端。
第9圖亦以方塊圖顯示由執行單元424輸出於條件匯流排928上的條件旗標數值,以及執行單元424由多工器 922接收的條件旗標數值924。條件旗標數值928/924包含ISA條件旗標902、一條件滿足(SAT)位元904、一預移位進位(PSC)位元906、以及一使用移位進位(USE)位元908。當指令模式指標132指示為ARM ISA,ISA條件旗標902包含ARM進位旗標(C)、零旗標(Z)、溢位旗標(V)、與負旗標(N)。當指令模式指標132指示為x86 ISA,ISA條件旗標902包含x86 EFLAGS進位旗標(CF)、零旗標(ZF)、溢位旗標(OF)、符號旗標(SF)、同位旗標(PF)與輔助旗標(AF)。條件旗標暫存器926包含儲存空間提供給ISA條件旗標902、SAT位元904、PSC位元906、與USE位元908。在一實施例中,條件旗標暫存器926分享儲存空間給x86 ISA以及ARM ISA進位旗標、零旗標、溢位旗標、與負旗標/符號旗標。
各個微指令126除了其基本操作(如加、載入/儲存、移位、布林運算的及、分支)外,還指示微指令126是否執行下述三個額外操作中之一個或更多,這些操作即(1)讀取條件旗標926(在第10圖以下的圖示中標示為RDFLAGS),(2)寫入條件旗標926(在第10圖以下的圖示中標示為WRFLAGS),以及(3)產生一進位旗標數值並將其寫入至條件旗標926(在第10圖以下的圖示中標示為WRCARRY)之PSC位元906。在一實施例中,微指令126包含相對應的位元以指示此三個額外的操作。在另一實施例中,微指令126透過微指令126的操作碼指示此三個額外的操作;亦即,依據不同微指令126類型所具有之不同的操作碼,搭配這些微指令類型能夠執行的操作,來指示 此三個額外的操作。
若是一執行單元424執行一條件ALU微指令126(在第10圖以下的圖示中,標示為ALUOP CC,CUALUOP CC,NCUALUOP CC)指示其寫入條件旗標926(標示為WRFLAGS)而由執行單元424讀取之條件旗標924滿足微指令126所指定的條件,此執行單元424隨後就會將SAT位元904設定位一;否則,執行單元424就會將SAT位元904清除為零。進一步說明,若是執行單元424執行的任何微指令126指示其去寫入條件旗標926並且此微指令126並非一條件ALU微指令126,執行單元424隨後就會將SAT位元904清除為零。部分條件微指令126係依據ISA條件旗標902(在第10圖以下之圖示中標示為XMOV CC)來指定條件,而部分條件微指令126係依據SAT位元904(在第10圖以下的圖示中標示為CMOV)來指定條件,這在下列段落會有進一步的說明。
若是一執行單元424執行一移位微指令126指示其去寫入進位旗標(標示為WRCARRY),執行單元424隨後就會將USE位元908設定為1,並將移位微指令126產生之進位數值寫入PSC位元906;否則,執行單元424會將USE位元908清除為零。進一步說明,若是一執行單元424執行任何指示其去寫入條件旗標926,並且並非移位微指令126之微指令126,執行單元424隨後會將USE位元908清除為零。此USE位元908係被一後續的條件ALU微指令126使用,以確認是否以PSC位元數值906的數值更新架構進位旗標902,還是以基於條件ALU微指令126所執 行之ALU操作產生的進位旗標之數值來進行更新。此操作在下列段落會有進一步的說明。在另一個實施例中,USE位元908並不存在,但使用硬體指令轉譯器104直接產生USE位元908的功能同等物來做為條件ALU微指令126內的一個指標。
請參照第10圖(包括第10A圖和第10B圖),圖中係以流程圖說明本發明第1圖之硬體指令轉譯器104轉譯條件ALU指令124之操作的實施例。基本上,第10A圖和第10B圖係描述硬體指令轉譯器104對條件ALU指令124解碼以確認其類型,以將其轉譯至適當的微指令126序列供執行管線112執行的方式。具體來說,硬體指令轉譯器104確認條件ALU指令124是否更新架構條件旗標902、是否對一來源運算元執行一預移位動作、是否使用進位旗標作為ALU操作之一輸入、以及ALU操作是一進位更新或是非進位更新的操作。此操作在下述進一步說明時,將標示該ALU操作僅更新架構條件旗標902之一子集或是更新全部的架構條件旗標902。此流程始於步驟1002。
在步驟1002,硬體指令轉譯器104遇到一條件ALU指令124,對其解碼,並將其轉譯為適當的微指令126序列,如步驟1024、1026、1034、1036、1044、1054與1056所述。條件ALU指令124指示微處理器100在一個或多個來源運算元執行一算術或邏輯操作以產生一結果,並將此結果寫入目的暫存器。由條件ALU指令124所指定之ALU操作的部分類型使用架構進位旗標902作為輸入(如加入進位(add with carry)),雖然大多數的類型並不這樣做。條 件ALU指令124亦指定一條件對應於ISA的架構條件旗標902。若是架構條件旗標902滿足此指定條件,微處理器100就會執行條件ALU指令124,亦即執行ALU操作並將結果寫入目的暫存器。否則,微處理器100就會將條件ALU指令124視為一不操作(no-op)指令;具體來說,微處理器100就不會改變目的暫存器內的數值。此外,條件ALU指令124可將架構條件旗標902指定為係依據ALU操作的結果來更新,或是不會被更新。不過,即使條件ALU指令124將架構條件旗標902指定為會被更新,若是架構條件旗標902不滿足指定條件,微處理器100就不會變更架構條件旗標902內的數值。最後,條件ALU指令124可額外將ALU操作之來源運算元其中之一個指定為要被預移位,請一併參照步驟1012之敍述。在一實施例中,被硬體指令轉譯器104轉譯之條件ALU指令124係ARM ISA指令。具體來說,在一實施例中,如第10圖所示,ARM ISA資料處理指令與乘法指令係由硬體指令轉譯器104進行轉譯。在一實施例中,這些指令包含但不限於:AND、EOR、SUB、RSB、ADD、ADC、SBC、RSC、TST、TEQ、CMP、CMN、ORR、ORN、MOV、LSL、LSR、ASR、RRX、ROR、BIC、MVN、MUL、MLA、以及MLS指令。在步驟1024、1026、1034、1036、1044、1054與1056中,為說明起見,相關類型的ARM ISA條件ALU指令124係顯示於第一行,硬體指令轉譯器104轉譯條件ALU指令124所產生之微指令126係顯示於後續行。下標“CC”顯示此指令124係一條件指令。此外,ALU操作的類型係以所指定的來源與 目的運算元為例。程式設計者可將一目的暫存器指定為提供一來源運算元之暫存器為同一者;在此情況下,硬體指令轉譯器104係配置來利用此情況且優化微指令126序列以利於條件ALU指令124之轉譯。此特徵係描述於第21圖。接下來進入步驟1004。
在步驟1004中,硬體指令轉譯器104確認條件ALU指令124是否將架構條件旗標902指定為需要由條件ALU指令124進行更新。也就是說,在一些情況下,程式者可選擇依據ALU操作的結果來更新架構條件旗標902之條件ALU指令124的版本,而在其他情況下,程式設計者可選擇無論ALU操作的結果為何,都不更新架構條件旗標902之條件ALU指令124的方式。在ARM ISA組合語言中,指令下標“S”係指示架構條件旗標902是要被更新的,在第10圖以下之圖示係採用此習慣用法。舉例來說,步驟1044將ARM ISA條件ALU指令124標示為“ALUOP S”以表示架構條件旗標902是要被更新的,而步驟1024將ARM ISA條件ALU指令124標示為“ALUOP”(亦即,差異在於“S”)則表示架構條件旗標902不要被更新。若條件ALU指令124將架構條件旗標902指定為要更新,流程就會前進至步驟1042;否則就會前進至步驟1012。
在步驟1012中,硬體指令轉譯器104確認條件ALU指令124的種類是否會對於ALU操作運算元之其中一者指定一預移位動作。此預移位動作可以由一立即欄進行以產生一常數來源運算元,或是此預移位動作可以由來自由暫存器提供之一來源運算元而進行。此預移位動作的數量可 以指定為條件ALU指令124內之一常數。此外,在使用暫存器移位運算元的情況下,預移位動作數量可以由暫存器內的數值所指定。在ARM ISA的情況下,將一立即數值依據一立即移位量所進行一預移位動作而產生一常數來源運算元將視為一修改後的立即常數。預移位操作產生一進位旗標數值。對於某些類型的ALU操作而言,架構進位旗標902係以由移位操作所產生之進位旗標數值進行更新,不過對於一些類型之ALU操作而言,架構進位旗標902係以由ALU操作產生之進位旗標數值來進行更新。然而,由預移位動作產生之進位旗標數值並不被用來確認條件ALU指令124所指定之條件是否被滿足,更明確的說,所使用的是當前的架構進位旗標902。值得注意的是,ARM ISA MUL、ASR、LSL、LSR、ROR、與RRX指令並不能指定一預移位操作,其處理過程會在步驟1024、1026或1044進行描述。此外,在MOV與MVN指令指定一修改後之立即常數(modified immediate constant)運算元之情形可指定一預移位操作,不過在MOV與MVN指令並不指定一修改後之立即常數運算元(即指定一暫存器運算元)之情形下,就不會指定一預移位操作,其處理過程會在步驟1024、1026或1044進行描述。如前述,此預移位動作可由一立即欄進行以產生一常數來源運算元,或者此預移位動作可由暫存器提供之一來源運算元而進行。若是條件ALU指令124指定一預移位動作,流程會前進至步驟1032;否則流程就會前進至步驟1022。
在步驟1022中,硬體指令轉譯器104確認條件ALU 指令124是否指定一使用進位旗標的ALU操作。使用進位旗標之ARM ISA指令124,舉例來說,包括帶進位加法(add with carry,ADC)、反向帶進位減法(reverse subtract with carry,RSC)、以及帶進位減法(subtract with carry,SBC)指令,以及指定一移位暫存器運算元且使用進位旗標以進行移位操作之指令,也就是RRX移位類型的指令。若是條件ALU指令124指定使用進位旗標之ALU操作,則流程前進置步驟1026;反之則前進至步驟1024。
在步驟1024,硬體指令轉譯器104將非旗標更新、非預移位、非使用進位之條件ALU指令124轉譯為第一與第二微指令126,也就是(1)一ALU操作微指令126(標示為ALUOP);以及(2)一條件移動微指令126(標示為XMOV)。在步驟1024之一實例中,條件ALU指令124指定一第一來源暫存器(R1)與一第二來源暫存器(R2),並在第一來源暫存器與第二來源暫存器上執行一ALU操作(標示為ALUOP)以產生一結果,以及一用以條件寫入此結果之目的暫存器(RD)。ALUOP微指令126與條件ALU指令124指定相同的ALU與來源運算元。ALUOP微指令126在兩個來源運算元上執行ALU操作並將結果寫入一暫時暫存器(標示為T2)。條件移動微指令126與條件ALU指令124指定相同的狀態。條件移動微指令126接收暫時暫存器中由ALUOP微指令126寫入之數值,並接收舊的、或當前之目的暫存器(RD)的數值。條件移動微指令126接收條件旗標924並確認這些旗標是否滿足條件。若是滿足條件,條件移動微指令126將暫時暫存器的數值寫入目的 暫存器(RD),否則就將舊的目的暫存器的數值寫回目的暫存器。值得注意的是,雖然本實施例指定兩個來源暫存器運算元,不過本發明並不限於此,這些來源運算元中的一個可以是一常數運算元指定於一條件ALU指令124之立即欄中的常數運算元,而非由暫存器所提供。微指令126的執行在第20圖會有更進一步的說明。在第10A及10B圖及後續圖示中使用之“舊的”用語,係指此旗標或目的暫存器數值,除非另外特別指明,否則是指執行單元424在執行微指令126時所接收的數值。前述說明也可以表示至當前數值。對目的暫存器而言,舊的或是當前的數值係由第1圖之導向結果匯流排(forwarding result bus)、重排緩衝器422、或是架構暫存器檔案106接收。對旗標而言,如關於第9圖之敘述,舊的或是當前的數值係由導向匯流排(forwarding flag bus)928、重排緩衝器422、或是架構條件旗標暫存器926所接收。此流程終止於步驟1024。
在步驟1026中,硬體指令轉譯器104將非旗標更新、非預移位(non-pre-shifting)、使用進位之條件ALU指令124轉譯為第一與第二微指令126,即(1)一使用進位ALU操作微指令126(標示為ALUOPUC);以及(2)一條件移動微指令126(標示為XMOV)。在步驟1026之一實例中,條件ALU指令124係類似於步驟1024所描述者,除了所指定之ALU操作係使用進位旗標。這兩個微指令126亦類似於步驟1024所描述者;不過,ALUOPUC微指令126亦接收條件旗標924以獲得進位旗標之當前數值,並應用於使用進位ALU操作中。微指令126的執行係詳述於第19圖。 此流程終止於步驟1026。
在步驟1032中,硬體指令轉譯器104確認條件ALU指令124是否指定一ALU操作以使用進位旗標。若是ALU操作使用進位旗標,流程會進行至步驟1036;反之則前進至步驟1034。
在步驟1034中,硬體指令轉譯器104將非旗標更新、預移位、非進位使用之條件ALU指令124轉譯為第一、第二與第三微指令126,亦即(1)一移位微指令126(標示為SHF);(2)一ALU操作微指令126;以及(3)一條件移動微指令126。在步驟134之一實例中,條件ALU指令124係類似於步驟1024所描述者;不過,此條件ALU指令124亦指定一具有一移位量之預移位操作於第二來源運算元(R2),在步驟1034之實施例中,此移位量係儲存於由條件ALU指令124所指定之一第三來源暫存器(R3)。不過,若是條件ALU指令124的類型係將移位量指定為指令124內之一常數,第三來源暫存器就不會被使用。此可能產生之預移位操作與條件ALU指令124的列表可特定為,包含但不限於,邏輯左移(logical shift left,LSL)、邏輯右移(logical shift right,LSR)、算術左移(arithmetic shift right,ASR)、右轉(rotate right,ROR)、以及擴展右轉(rotate right with extend,RRX)。在一實施例中,硬體指令轉譯器104輸出一移位微指令126以確保移位數值係依據ARM ISA的語意所產生,舉例來說,尤其是指ARM架構參考手冊中對應於個別ARM指令的描述,以及例如是第A8-10至A8-12、與第A5-10至A5-11頁的內容。此移位微指令126 與條件ALU指令124係指定相同的預移位操作,此移位微指令126亦與條件ALU指令124指定相同的第二來源運算元R2與第三來源運算元R3。此移位微指令126對第二來源運算元R2執行具有一移位量之移位操作,並將結果寫入一暫時暫存器(標示為T3)。雖然在步驟1034中,由於條件ALU指令124將架構條件旗標902指定為不更新,故移位微指令126產生之條件旗標數值不會被使用,不過,舉例來說,在步驟1056中,移位微指令126產生之移位旗標數值則會被使用,這會在下列段落有進一步的說明。此外,預移位操作會需要將舊的移位旗標旋轉至移位後的結果數值;舉例來說,擴展右轉(RRX)預移位操作將進位指標移位至結果中之最高有效位元。在此情況下,雖未見於第10A及10B圖(除了步驟1056),移位微指令126也會讀取條件旗標924以取得當前的進位旗標數值。ALUOP微指令126係類似於步驟1024所描述者;然而,此ALUOP微指令126係接收暫時暫存器T3的數值,而非第二來源運算元R2,並且執行ALU操作於第一來源運算元R1與暫時暫存器T3以產生結果寫入暫時暫存器T2。XMOV微指令126係類似於步驟1024所描述者。微指令126的執行在第18圖會有更詳細的說明。此流程終止於步驟1034。
在步驟1036中,硬體指令轉譯器104將非旗標更新、預移位、使用進位之條件ALU指令124轉譯為第一、第二與第三微指令126,亦即(1)一移位微指令126;(2)一使用進位ALU操作微指令126;以及(3)一條件移動微指令126。在步驟1036的實例中,條件ALU指令124係類似於 步驟1034所述者,除了此指令124所指定之ALU操作使用係使用進位旗標。此三個微指令126係類似於步驟1034所描述者;不過,ALUOPUC微指令126亦接收條件旗標924以取得進位旗標之當前數值以使用於進位使用ALU操作。微指令126的執行在第17圖中會有更詳細的描述。此流程終止於步驟1036。
在步驟1042,硬體指令轉譯器104確認條件ALU指令124之類型是否對ALU操作運算元其中之一指定一預移位。若是條件ALU指令124指定一預移位,流程會前進到步驟1052;否則,流程會前進到步驟1044。
在步驟1044中,硬體指令轉譯器104將旗標更新、非預移位之條件ALU指令124轉譯為第一與第二微指令126,亦即:(1)一條件ALU操作微指令126(標示為ALUOP CC);以及(2)一條件移動微指令126(標示為CMOV)。在步驟1044之實例中,條件ALU指令124係類似於步驟1024之條件ALU指令124,除了本實施例係更新架構條件旗標902。條件ALU微指令126與條件ALU指令124係指定相同的條件與來源運算元。條件ALU操作微指令126對兩個來源運算元執行ALU操作,並且將結果寫入一暫時暫存器(標示為T2)。此外,條件ALU操作微指令126接收架構條件旗標902並確認其是否滿足條件。此外,條件ALU操作微指令126寫入條件旗標暫存器926。具體來說,條件ALU操作微指令126寫入SAT位元904以指示架構條件旗標902是否滿足條件。此外,若是條件不滿足,條件ALU操作微指令126將舊的條件旗標數值寫入架構條件旗標 902;反之,若是條件滿足,條件ALU操作微指令126就依據ALU操作之結果更新架構條件旗標902。此架構條件旗標902的更新數值係相關於ALU操作的類型。也就是說,對於部分種類之ALU操作,所有的架構條件旗標902都會依據ALU操作的結果以新數值更新;反之,對於部分種類之ALU操作,一些架構條件旗標902(在一實施例中,為Z與N旗標)係依據ALU操作的結果以新數值更新,不過舊的數值會保留給其他的架構條件旗標902(在一實施例中,為V與C旗標)。架構條件旗標902的更新在第14圖中會更詳細的說明。條件移動(CMOV)微指令126接收由ALUOP微指令126寫入暫時暫存器(T2)的數值,並接收目的暫存器(RD)之舊的或是當前的數值。條件移動(CMOV)微指令126接收條件旗標924,並且檢驗SAT位元904以確認條件ALU操作微指令126是否指示架構條件旗標902滿足條件。若是條件滿足,條件移動(CMOV)微指令126將暫時暫存器的值寫入目的暫存器,否則就將舊的目的暫存器的值寫回目的暫存器。微指令126的執行在第14圖中會有更詳細的說明。值得注意的是,步驟1044(以及步驟1054與1056)所產生之條件ALU操作微指令126所執行之ALU操作,可以是一個使用條件旗標(類似於步驟1026與1036所描述者)之ALU操作,而由於微指令126讀取旗標(RDFLAGS指標),執行單元424具有進位旗標以執行此使用進位ALU操作。此流程終止於步驟1044。
在步驟1052中,硬體指令轉譯器104確認條件ALU 指令124是否指定一屬於會更新架構進位旗標902之類型之ALU操作。對於硬體指令轉譯器104而言,區分是否會更新架構進位旗標902是必要的,因為若是ALU操作不更新架構進位旗標902,預移位動作所產生之進位旗標數值,而非基於ALU操作所產生之條件旗標數值,就必須被用於更新架構進位旗標902。在一實施例中,指定一不更新架構進位旗標902之ALU操作,但指定一預移位操作之ARM ISA指令124,係包含但不限於AND、BIC、EOR、ORN、ORR、TEQ與TST,以及MOV/MVN指令124,這些指另透過一非零旋轉數值(non-zero rotation value)指定一調整過的立即常數。若是ALU操作更新此架構進位旗標902,此流程會前進至步驟1054;反之則前進至步驟1056。
在步驟1054中,硬體指令轉譯器104將旗標更新、預移位、進位使用之條件ALU指令124轉譯為第一、第二與第三微指令126,亦即:(1)一移位微指令126;(2)一條件進位更新ALU操作微指令126(標示為CU ALUOP CC);以及(3)一條件移動微指令126。在步驟1054之一實例中,條件ALU指令124係類似於步驟1034所描述者;然而,此條件ALU指令124亦將架構條件旗標902指定為要被更新。移位微指令126係類似於步驟1034所描述者。條件進位更新ALU操作微指令126與條件ALU指令124係指定相同的條件。條件進位更新ALU操作微指令126在第一來源運算元R1與暫時暫存器T3執行ALU操作,並將結果寫入一暫時暫存器(標示為T2)。此外,條件進位更新ALU操作微指令126接收架構條件旗標902並確認其是否滿足 條件。此外,條件進位更新ALU操作微指令126寫入條件旗標暫存器926。具體來說,條件進位更新ALU操作微指令126寫入SAT位元904以指示是否架構條件旗標902滿足條件。此外,若是條件不被滿足,條件進位更新ALU操作微指令126將舊的條件旗標數值寫入架構條件旗標902;反之,若是條件滿足,條件進位更新ALU操作微指令126依據ALU操作的結果來更新架構條件旗標902。架構條件旗標902的更新在第16圖會有更詳細的說明。條件移動(CMOV)微指令126係類似於步驟1044所描述者。此流程終止於步驟1054。
在步驟1056中,硬體指令轉譯器104將旗標更新、預移位、非進位更新之條件ALU指令124轉譯為第一、第二與第三微指令126,亦即(1)一移位微指令126;(2)一條件非進位更新ALU操作微指令126(標示為NCUALUOP CC);以及(3)一條件移動微指令126。在步驟1056之實例中,條件ALU指令124係類似於步驟1054所描述者;不過,此條件ALU指令124係指定一非進位更新ALU操作。因此,當條件滿足時,架構進位旗標902係以預移位旗標數值進行更新。移位微指令126係類似於步驟1034所描述者;不過,此微指令126會讀取與寫入條件旗標暫存器926。具體來說,此移位微指令126會:(1)將預移位操作所產生之條件旗標數值寫入PSC位元906;(2)設定USE位元908以指示條件非進位更新ALU操作微指令126使用PSC906來更新架構進位旗標902;以及(3)將舊的架構條件旗標902寫回條件旗標暫存器926,藉此,條件非進位更 新ALU操作微指令126可評估架構條件旗標902之舊數值,來確認其是否滿足條件。條件非進位更新ALU操作微指令126與條件ALU指令124係指定相同的條件。此條件非進位更新ALU操作微指令126在來源運算元R1與暫時暫存器T3執行ALU操作並將結果寫入一暫時暫存器(標示為T2)。再者,條件非進位更新ALU操作微指令126接收架構條件旗標902並且確認其是否滿足條件。此外,條件非進位更新ALU操作微指令126係寫入條件旗標暫存器926。具體來說,條件非進位更新ALU操作微指令126係寫入SAT位元904以指示架構條件旗標902是否滿足條件。此外,若是條件不滿足,條件非進位更新ALU操作微指令126將舊的條件旗標數值寫入架構條件旗標902;反之,若是條件被滿足,條件非進位更新ALU操作微指令126則是基於ALU操作的結果更新架構條件旗標902。具體來說,架構溢位(V)旗標902係以舊的溢位旗標數值寫入。此外,在USE位元908的指示下,架構進位旗標902係以位於PSC位元906之預移位進位旗標數值進行更新,否則就以舊的進位旗標數值924進行更新。架構條件旗標902之更新在第15圖會有更詳細的說明。CMOV微指令126係類似於步驟1044所描述者。在另一實施例中,USE位元908並不存在,並且硬體指令轉譯器104係直接產生USE位元908之功能同等物作為條件非進位更新ALU操作微指令126之一指標。執行單元424檢測此指標以確認是利用位於PSC位元906之預移位進位旗標數值還是利用舊的進位旗標數值924來更新架構進位旗標902。此流程 終止於步驟1056。
在一實施例中,硬體指令轉譯器104係配置來產生且提供一調整過的立即常數而非輸出一移位微指令126來進行此操作。在此實施例中,處理程序係類似於步驟1024、1026與1044所描述者,而非步驟1034、1036與1054/1056。此外,在此實施例中,硬體指令轉譯器104亦產生且由預移位動作提供進位旗標數值供條件ALU操作微指令126用於更新架構進位旗標902。
請參照第11圖,圖中係以一流程圖顯示本發明第4圖執行單元424執行一移位微指令126之操作。此流程始於步驟1102。
在步驟1102中,第4圖執行單元424中的一者接收到一移位微指令126,例如在第10圖所描述且由硬體指令轉譯器104回應遭遇到條件ALU指令124而產生之微指令。此執行單元424亦接收由微指令126所指定之來源運算元,包含條件旗標數值924,這些條件旗標數值924可能被或不被微指令126所使用。接下來進行至步驟1104。
在步驟1104中,執行單元424執行由移位微指令126所指定之移位操作,此移位操作係執於由移位微指令126所指定之運算元上以產生一結果,並將此結果輸出至結果匯流排128。在一實施例中,此移位操作可包括但不限於一邏輯向左(LSL)、邏輯向右(LSR)、算數向右(ASR)、右轉(ROR)、以及擴展右轉(RRX)。此外,此執行單元424係基於移位操作的結果產生新的條件旗標數值。具體來說,執行單元424係基於移位操作的結果產生一進位旗標數值。 在一實施例中,在邏輯向左(LSL)移位操作的情況下,進位旗標數值為一擴展數值(extended value)之第N個位元,此擴展數值為M個最低有效位元零串連左移後的運算元(M least significant bit zeroes concatenated with the operand being left-shifted),其中N是原始運算元的位元數量,M是所指定的正移位量;在邏輯向右(LSR)移位操作的情況下,進位旗標數值係一擴展數值之第(M-1)個位元,而此擴展數值係原始運算元零擴展(M+N)個位元,其中M是特定正移位量,N是原始運算元的位元數;在算數向右(ASR)移位操作的情況下,進位旗標數值係一擴展數值之第(M-1)個位元,此擴展數值係原始運算元符號擴展(sign-extended)(M+N)個位元,其中M是特定正移位量,N是原始運算元的位元數;在右轉(ROR)移位操作的情況下,進位旗標數值係運算元右轉後之結果的第(N-1)個位元,此運算元係依據特定非零移位量(specified non-zero shift amount)模(mod)N進行右轉,其中N是原始運算元的位元數;在擴展向右(RRX)移位操作的情況下,進位旗標數值係原始運算元之位元零。接下來進行至步驟1106。
在步驟1106中,執行單元424確認由硬體指令轉譯器104輸出之移位微指令126是否指示執行單元424應寫入進位旗標,如同第10B圖之步驟1056中的指令WRCARRY。具體來說,此移位微指令126指示位於旗標匯流排928輸出之PSC位元906應寫入由移位操作產生之進位旗標數值寫入,而USE位元908應被設定,以使隨後的條件非進位更新ALU操作微指令126生效以有條件地將 PSC位元906數值寫入架構進位旗標902。若是執行單元424應該寫入進位旗標,流程會前進至步驟1114;否則,流程就會前進至步驟1108。
在步驟1108中,執行單元424確認由硬體指令轉譯器104輸出之移位微指令126是否指示執行單元424應寫入條件旗標(標示為WRFLAGS)。雖然在移位微指令126未指示應寫入PSC位元906(標示為WRCARRY)之情況下,第10圖中沒有任何一個移位微指令指示執行單元424應寫入條件旗標,但硬體指令轉譯器104在轉譯其他ISA指令124時還是會產生此一移位微指令126。若是執行單元424應寫入條件旗標,流程會前進到步驟1112;否則就會終止。
在步驟1112,執行單元424輸出數值到旗標匯流排928上來將PSC位元906、USE位元908、與SAT位元904清除為零,並且將步驟1104所產生之新的架構條件旗標902數值寫入架構條件旗標902。此流程終止於步驟1114。
在步驟1114,執行單元424輸出數值到旗標匯流排928上以將步驟1112所產生之進位旗標數值寫入PSC位元906、設定USE位元908為一,將SAT位元904清除為零、並且以步驟1102所接收到之舊的架構條件旗標902寫入數值架構條件旗標902。此流程終止於步驟1114。
請參照第12圖(包括第12A圖和第12B圖),圖中顯示一流程圖描述本發明第4圖執行單元424執行一條件ALU微指令126之操作。此流程始於步驟1202。
在步驟1202中,第4圖執行單元424之其中一者接收到一條件ALU微指令126,如第10圖所述由硬體指令轉 譯器104回應遇到之一條件ALU指令124所產生微指令126之情形。此執行單元424亦接收由微指令指定之來源運算元,包含條件旗標數值924,而不論其是否會被微指令126使用到。需瞭解的是,執行單元424也會依據類似於第12圖描述的處理程序,而排除其中步驟1209、1212、1214與1216之執行動作,來執行非條件ALU微指令126,此微指令可以是第10圖所述由硬體指令轉譯器104回應遇到一條件ALU指令124所產生之條件微指令。此外,執行條件ALU微指令126之執行單元424與執行相關移位微指令126以及/或XMOV/CMOV微指令126之執行單元424可以相同或是不同。接下來流程前進至步驟1204。
在步驟1204,執行單元424在對條件ALU微指令126所指定之運算元,執行由條件ALU微指令126指定之ALU操作,以產生一結果並將此結果輸出至結果匯流排128。此外,執行單元424亦基於ALU操作之結果產生新的架構條件旗標902數值。若ALU操作使用進位旗標,執行單元424就使用所接收之架構進位旗標924之舊的數值,而非由ALU操作所產生之新的進位旗標數值。接下來流程前進至步驟1206。
在步驟1206中,執行單元424確認由步驟1202接收之架構條件旗標924是否滿足此指定條件。此確認結果在後續步驟1212與1214中會被使用。接下來流程前進至步驟1208。
在步驟1208中,執行單元424確認條件ALU微指令126是否指示執行單元424寫入條件旗標暫存器926,如同 第10A及10B圖許多步驟中之指令WRFLAGS。若是,流程前進至步驟1214;否則,流程前進至步驟1209。
在步驟1209中,若是步驟1206確認結果為條件滿足,流程前進至步驟1211;否則,流程前進至步驟1212。
在步驟1211中,由於條件滿足,執行單元424輸出步驟1204產生之結果至結果匯流排128。不過,條件ALU微指令126並不更新條件旗標暫存器926,因為條件ALU微指令126係指定為不去更新架構條件旗標902。如前述,由執行單元424輸出至結果匯流排128/928之結果與條件旗標數值係傳送至執行管線112之其他執行單元424,並且被寫入重排緩衝器422相關於條件ALU微指令126之項目。需要瞭解的是,即使微指令126係特定為不去更新架構條件旗標902,執行單元424仍然輸出一些數值至旗標結果匯流排928以寫入重排緩衝器422相關於條件ALU微指令126之項目,不過這些數值將不會由重排緩衝器422引退至目的暫存器106與/或條件旗標暫存器926。這也就是說,是否寫入重排暫存器422之項目的數值最終會被引退之確認動作,是由執行管線112之引退單元基於微指令126的類型、例外事件出現、分支誤預測、或是其他無效事件來進行,而非由執行單元424本身。此流程終止於步驟1211。
在步驟1212中,執行單元424輸出第一來源運算元至結果匯流排128。值得注意的是,在條件不被滿足時,第10A及10B圖所描述之多種條件ALU微指令126並不使用此輸出第一來源運算元之動作。具體來說,第10A及10B 圖之XMOV與CMOV微指令126會寫回舊的目的暫存器數值而非暫時暫存器T2的數值。然而,在第21A及21B圖及其後續圖示的說明中,對於其他格式之條件ALU指令124的轉譯而言,即相同來源目的(same-source-destination)條件ALU指令124(或是其他ISA指令124),硬體指令轉譯器104於產生條件ALU微指令126時,其中第一來源運算元也是ISA指令124指定之目的暫存器,以在條件不被滿足時寫回原本之目的暫存器的數值。如步驟1211所述,條件ALU微指令126並不更新條件旗標暫存器926因為條件ALU微指令126係指定為不去更新架構條件旗標902。此流程終止於步驟1212。
在步驟1214中,若是步驟1206確認條件被滿足,流程會前進至步驟1218;否則,流程會前進至步驟1216。
在步驟1216中,執行單元424輸出第一來源運算元,清除USE位元908、PSC位元906、與SAT位元904為零,以及輸出由步驟1202接收之舊的架構條件旗標924數值至旗標匯流排928,以能夠在不調整架構條件旗標902的數值之情況下,將條件ALU指令124整體視為一不操作指令來執行(亦即不去執行條件ALU指令124)。此流程終止於步驟1216。
在步驟1218中,執行單元424確認條件ALU微指令126是否指定一進位更新ALU操作。在一實施例中,執行單元424對條件ALU微指令126之操作碼進行解碼,以做出確認結果。在另一實施例中,硬體指令轉譯器104確認ALU操作是否是第10A圖之步驟1052之進位更新操作, 並據此提供一指標至執行單元424。在一實施例中,非進位更新ALU操作包含但不限於由AND、BIC、EOR、ORN、ORR、TEQ、TST、MUL、MOV、MVN、ASR、LSL、LSR、ROR、與RRX ARM ISA指令124所指定之操作。若是ALU操作係進位更新操作,流程前進至步驟1222;否則流程前進至步驟1224。
在步驟1222,執行單元424輸出步驟1204產生的結果,清除USE位元908與PSC位元906為零,設定SAT位元904為一,以及輸出步驟1204產生之新的架構條件旗標數值至旗標匯流排928。值得注意的是,不更新溢位旗標但指定一進位更新ALU操作(如ASR、LSL、LSR、ROR、與RRX操作)之條件ALU微指令126的處理過程與步驟1222所描述者有些許不同。尤其是,執行單元424輸出舊的V旗標數值而非新的V旗標數值。此流程終止於步驟1222。
在步驟1224,執行單元424檢驗USE位元908。若USE位元908被設定為一,流程會前進至步驟1228;否則,流程就會前進至步驟1226。在另一實施例中,如上文/下文所述,USE位元908並不存在,而執行單元424則是檢測條件ALU微指令126內之指標,以確認是否以PSC位元906內之預移位進位旗標數值來更新架構進位旗標902,還是使用舊的進位旗標數值924。
在步驟1226中,執行單元424輸出步驟1205產生之結果、清除USE位元908與PSC位元906為零、設定SAT位元904為一,以及以下列方式輸出架構條件旗標至旗標 匯流排928:C旗標與V旗標係寫入以步驟1202所接收之舊的C旗標與V旗標數值;N旗標與Z旗標係分別以步驟1204所產生之新的N旗標與Z旗標數值做寫入。此流程終止於步驟1226。
在步驟1228中,執行單元424輸出步驟1204產生的結果,清除USE位元908與PSC位元906為零,設定SAT位元904為一,以及以下列方式輸出架構條件旗標至旗標匯流排928:C旗標係以寫入由步驟1202所接收之PSC位元906的數值;V旗標寫入由步驟1202所接收之舊的V旗標數值;N旗標與Z旗標分別寫入步驟1204所接收之新的N旗標與Z旗標數值。此流程終止於步驟1228。
在一實施例中,輸出於旗標匯流排928之數值會因為依據指令模式指標132指示為x86或ARM而有不同,因此,執行單元424會以不同方式執行條件ALU微指令126。具體來說,若是指令模式指標132指示為x86,執行單元424就不去區分ALU操作模式是進位更新或是非進位更新、不去考慮USE位元908、以及利用x86語意來更新條件碼旗標。
請參照第13圖,圖中顯示本發明第4圖執行單元424執行一條件移動微指令126之操作。此流程起始於步驟1302。
在步驟1302,第4圖執行單元424之其中一者接收到一條件移動微指令126,如第10圖所述由硬體指令轉譯器104回應遇到一條件ALU指令124所產生微指令(標示為CMOV或XMOV)之情形。此執行單元424亦接收微指令 126所指定之來源運算元,包含條件旗標數值924,無論其是否會被微指令126所使用。接下來前進至步驟1304。
在步驟1304,執行單元424對微指令126進行解碼以確認其是否為一個XMOV微指令126或是一個微指令126。如果是CMOV微指令126,流程前進至步驟1308;否則流程前進至步驟1306。
在步驟1306,執行單元424確認步驟1302接收到的架構條件旗標902並確認是否滿足條件。接下來前進至步驟1312。
在步驟1308,執行單元424檢驗由步驟1302接收到的SAT位元904並由其確認條件是否滿足,如同一寫入SAT位元904之相對應條件ALU微指令126在之前所做的確認,如第10圖之步驟1044、1054、與1056所述。接下來流程前進至步驟1312。
在步驟1312,若是步驟1306或1308確認條件滿足,流程就會前進至步驟1316;否則就會前進至步驟1314。
在步驟1314,執行單元424輸出第一來源運算元之數值至結果匯流排128。在第10圖中,第一來源運算元的數值係舊的目的暫存器數值,以能夠在條件不被滿足且不變更目的暫存器之數值的情況下,有利於將條件ALU指令124整體視為一不操作指令(即不去執行條件ALU指令124)來執行。此流程終止於步驟1314。
在步驟1316中,執行單元424輸出第二來源運算元之數值至結果匯流排128。如第10圖所示,此第二來源運算元之數值係由相關之條件ALU微指令126寫入暫時暫存器 的數值,以利於在預設條件滿足之情況下,透過將結果寫入目的暫存器,以協助條件ALU指令124之執行。此流程終止於步驟1316。
請參照第14圖,圖中係以一方塊圖顯示本發明第1圖之執行管線112執行一條件ALU指令124之操作。具體來說,此條件ALU指令124係一旗標更新、非預移位、條件ALU之操作ISA指令124。硬體指令轉譯器104係將此指令124轉譯為第10圖之步驟1044的微指令126。第4圖之暫存器配置表402產生附屬資訊給位於暫時暫存器T2之CMOV微指令126以及由條件ALUOP微指令126寫入之條件旗標暫存器926的數值等等。指令調度器404將微指令126分派至第4圖中適當的保留站406。當微指令126可取得所有來源運算元的數值時(無論是從導向匯流排(forwarding bus)128、重排緩衝器(ROB)422、或是暫存器檔案106),指令發送單元408確認一微指令126已完成由其保留站406發送至相對應執行單元以供執行之準備。此微指令126係依據第12圖(包括第12A及12B圖)與13圖之描述內容來執行。
執行單元424從保留站406接收步驟1044所產生之條件ALUOP微指令126、從第1圖之暫存器檔案106之暫存器R1與R2接收來源運算元的數值、以及依據第12A圖之步驟1202從第9圖之條件旗標暫存器926(或是從導向匯流排128與/或ROB422)接收條件旗標924。執行單元424對暫存器R1與R2執行ALU操作(若是此ALU操作是使用進位操作,則對所接收的C旗標902執行此操作)以產 生一結果,此結果係依據步驟1204寫入暫時暫存器T2。此外,(1)若是架構條件旗標902並不滿足指定的條件(在第14圖中標示為NOT SATISFIED),執行單元424依據第12B圖之步驟1216產生新的條件旗標928數值以寫入條件旗標暫存器926;(2)若是架構條件旗標902滿足指定的條件而ALU操作係非進位更新之操作(在第14圖中標示為NCUALUOP SAT),執行單元424依據第12圖之步驟1226產生新的條件旗標928數值以寫入條件旗標暫存器926;並且(3)若是架構條件旗標902滿足指定的條件並且ALU操作係進位更新之操作(在第14圖中標示為CU ALUOP SAT),執行單元424依據第12圖之步驟1222產生新的條件旗標928數值以寫入條件旗標暫存器926。暫時暫存器T2的數值與條件旗標928係提供於導向匯流排128供CMOV微指令126利用,在並非來自導向匯流排128的情況下寫入重排緩衝器422之項目供CMOV微指令126利用,並且在並非來自向匯流排128或重排緩衝器422的情況下,除了在例外事件出現、分支誤預測、或是其他無效事件被CMOV之情形下係最終引退至適當的架構狀態而被微指令126所利用。尤其是,第9圖之多工器922將操作而選擇適當的條件旗標924提供給執行單元424。
執行單元424接收步驟1044之CMOV微指令126,暫時暫存器T2與目的暫存器(RD)之來源運算元數值,以及依據第13圖之步驟1302所產生之條件旗標924。依據第13圖之步驟1316與1314,當SAT位元904被設定時,執行單元424輸出暫時暫存器T2之來源運算元的數值, 當SAT位元904被清除時,執行單元424輸出目的暫存器RD之來源運算元的數值。此結果數值係提供於導入匯流排128供後續微指令126所利用,並寫入重排暫存器422之項目,最後在除了例外事件出現、分支誤預測、或是其他無效事件之外,被引退至其適當的架構狀態而被微指令126所利用。
如步驟1222所述,旗標更新條件ALU指令124指定一進位更新ALU操作,但不更新溢位旗標,如ARM ISAASR、LSL、LSR、ROR、與RRX指令12,這些指令124之處理程序與第14圖所示有些不同。尤其是,執行單元424輸出舊的V旗標數值而非新的V旗標數值。最後,如前述,旗標更新ARM ISA MUL以及MOV/MVN(暫存器)指令124均屬非進位更新指令並且無法指定一預移位操作,因而係以步驟1044之程序處理。在第12B圖之步驟1226有更明確的說明。
在前文中可發現,ALU操作微指令126係透過SAT位元904指示CMOV微指令126是否舊的條件旗標902滿足指定條件,藉以使ALU操作微指令126替代條件旗標902之舊的數值,並在條件滿足時,依據ALU操作之結果所產生之適當數值來進行處理。
請參照第15圖(包括第15A圖和第15B圖),圖中係以一方塊圖說明本發明第1圖之執行管線112執行一條件ALU指令124。具體來說,此條件ALU指令124係一旗標更新、預移位、非進位更新條件ALU之操作ISA指令124。硬體指令轉譯器104係將此指令124轉譯為第10B圖步驟 1056所示之微指令126。第15圖(包括第15A圖和第15B圖)之操作在許多面向係類似於第14圖的操作,相似的操作在此不再贅述,以下僅列出相異處。第4圖之暫存器配置表402產生附屬資訊給位於暫時暫存器T3之NCUALUOP微指令126以及由移位微指令126寫入之條件旗標暫存器926的數值等等。微指令126係依據第11、12與13圖之描述來執行。
執行單元424由保留站406接收步驟1056所產生之移位微指令126、由暫存器檔案106之暫存器R2與R3接收來源運算元數值、以及依據第11圖之步驟1102由條件旗標暫存器926接收條件旗標924(或是由導向匯流排128與/或重排緩衝器422)。執行單元424在暫存器R2與R3執行移位操作(若是ALU操作係進位使用操作,則對所接收到的C旗標902進行此操作)以產生一結果並依據步驟1104寫入暫時暫存器T3。此外,執行單元424依據步驟1104產生新的架構條件旗標902數值,並依據第11圖之寫入條件旗標暫存器926之步驟1114來寫入新的條件旗標928。暫時暫存器T3的數值與條件旗標928係提供至導向匯流排128供NCUALUOP微指令126利用,若非來自導向匯流排128則是寫入重排緩衝器422之項目供NCUALUOP微指令126利用,並且若非來自導向匯流排128或重排緩衝器422時,最後在除了例外事件出現、分支誤預測、或是其他無效事件之外被退出至其適當的狀態而被NCUALUOP微指令126利用。尤其是,第9圖之多工器922之操作係選擇適當的條件旗標924提供給執行單 元424。
執行單元424由保留站406接收步驟1056所產生之NCU ALUOP微指令126、由暫存器檔案106之暫存器R1與暫時暫存器T3接收來源運算元數值、以及依據步驟1202由條件旗標暫存器926接收條件旗標924。執行單元424在暫存器R1與暫時暫存器T3執行ALU操作(在ALU操作係一使用進位操作時,亦在接收到的C旗標902執行)以產生一結果,並依據步驟1204寫入暫時暫存器T2。此外:(1)若是架構條件旗標902不滿足指定條件(第15圖中標示為NOT SATISFIED),執行單元424依據步驟1216產生新的條件旗標928數值以寫入條件旗標暫存器926;(2)若是架構條件旗標902滿足指定條件且USE位元908係被清除(在第15圖中標示為SAT.,USE==0),執行單元424依據第12B圖之步驟1226產生新的條件旗標928數值以寫入條件旗標暫存器926;以及(3)若是架構條件旗標902滿足指定條件且USE位元908被設定(第15圖中標示為SAT.,USE==1),執行單元424依據第12圖之步驟1228產生新的條件旗標928數值以寫入條件旗標暫存器926。第15圖之CMOV微指令126的執行係類似於第14圖所描述者。在另一實施例中,如前述,USE位元908並不存在,而執行單元424改以檢驗條件ALU微指令126內之指標來確認是以PSC位元906內之預移位進位旗標數值更新架構進位旗標902,還是以舊的進位旗標數值924做更新。
在前文中可發現,移位微指令126並不替代條件旗標902之舊的數值,而是將條件旗標902之舊的數值寫回條 件旗標暫存器926,因此,由移位微指令126接收條件旗標暫存器926之結果之條件ALU操作微指令126,可確認舊的條件旗標902是否滿足由ISA條件ALU指令124所指定的條件。另一方面,若是移位微指令126係以新產生的進位旗標數值代替舊的進位旗標902,條件ALU操作微指令126將不會確認舊的條件旗標902是否滿足指定條件。
請參照第16圖(包括第16A圖和第16B圖),圖中係以一方塊圖說明本發明第1圖之執行管線112執行一條件ALU指令124之情形。具體來說,此條件ALU指令124係一旗標更新、預移位、進位更新條件ALU操作ISA指令124,硬體指令轉譯器104則是依據第10圖之步驟1054將此指令124轉譯為微指令126。第16圖之操作在許多面向係類似於第15圖之操作,相似部分在此不與贅述,而僅說明相異之處。第4圖之暫存器配置表402產生附屬資訊給移位微指令126寫入之暫時暫存器T3之數值之CU ALUOP微指令126,不過,由於移位微指令126並不寫入條件旗標暫存器,此暫存器配置表並不產生其相關資訊。
執行單元424係由保留站406接收步驟1054所產生移位微指令126並依據步驟1102由暫存器檔案106之暫存器R2與R3接收來源運算元數值,但不接收條件旗標924(除非ALU操作係一使用進位操作)。此執行單元424在暫存器R2與R3上進行移位操作(若是ALU操作係一使用進位操作,則在所接收到的C旗標902上進行)以產生一結果依據步驟1104寫入暫時暫存器T3。暫時暫存器T3的數值係提供至匯流排128供CU ALUOP微指令126利用、若 非來自導向匯流排128,則是寫入重排緩衝器422之項目供CU ALUOP微指令126利用、以及若非來自導向匯流排128或重排緩衝器422,則是除了例外事件出現、分支誤預測、或其他無效事件之外被引退至其適當的狀態供CU ALUOP微指令126利用。
執行單元424由保留站406接收步驟1054所產生之CU ALUOP微指令126,由暫存器檔案106之暫存器R1與緩衝暫存器T3接收來源運算元數值,以及由條件旗標暫存器926並依據步驟1202接收條件旗標924。執行單元424在暫存器R1與暫時暫存器T3執行ALU操作(若是ALU操作係一使用進位操作,則在所接收到的C旗標902執行)以產生一結果並依據步驟1204寫入暫時暫存器T2。此外:(1)若是架構條件旗標902並不滿足指定條件(在第16圖中標示為NOT SATISFIED),執行單元424依據步驟1216產生新的條件旗標928數值以寫入條件旗標暫存器926;以及(2)若是架構條件旗標902滿足指定條件(在第16圖中標示為SATISFIED),執行單元424依據第12圖之步驟1222產生新的條件旗標928數值以寫入條件旗標暫存器926。第16圖之CMOV微指令126的執行係類似於第14圖所描述者。
請參照第17圖,圖中係以一方塊圖顯示本發明第1圖執行管線112執行一條件ALU指令124之操作。具體來說,此條件ALU指令124係一非旗標更新、預移位、使用進位條件ALU操作之ISA指令124,硬體指令轉譯器104係將此指令轉譯為第10圖之步驟1036所述的微指令 126。依據第17圖之操作在許多面向係相似於第16圖之操作,相似的操作在此不再贅述,以下僅列出相異處。第17圖之移位微指令126的執行係類似於第16圖所描述者。
執行單元424由保留站406接收步驟1036所產生之ALUOPUC微指令126、由暫存器檔案106之暫存器R1與暫時暫存器T3接收來源運算元數值、以及依據步驟1202由條件旗標暫存器926接收條件旗標924。因為ALU操作係一使用進位操作,執行單元424在暫存器R1、暫時暫存器T3與接收到的C旗標902執行ALU操作,以產生一結果並依據步驟1204寫入暫時暫存器T2。執行單元424並不寫入條件旗標暫存器926。
執行單元424接收步驟1036所產生之XMOV微指令126、暫時暫存器T2與目的暫存器RD之來源運算元數值、以及依據第13圖之步驟1302所產生之條件旗標924。依據第13圖之步驟1316與1314,在條件旗標924滿足預設條件時,執行單元424將暫時暫存器T2之來源運算元的數值作為其結果輸出,而在條件旗標924不滿足預設條件時,執行單元424係將目的暫存器RD之源運算元的數值作為其結果輸出。此結果數值係提供至導向匯流排128供後續微指令126利用、此結果數值係寫入重排緩衝器422之項目、並且除了例外事件出現、分支誤預測、或是其他無效事件之外,此結果數值會引退至其適當的架構狀態。
請參照第18圖,圖中係以一方塊圖說明本發明第1圖執行管線112執行一條件ALU指令124之情形。具體來說,此條件ALU指令124係一非旗標更新、預移位、非使 用進位之條件ALU操作之ISA指令124,而硬體指令轉譯器104係將此指令124轉譯為第10圖之步驟1034之微指令126。依據第18圖所進行之操作在許多面向係類似於依據第17圖所進行者,其中相似處係不再贅述,而僅說明相異處。第18圖移位微指令126之執行係類似於第16圖所描述者。第18圖之ALUOP微指令126之執行係類似於第17圖之ALUOPUC微指令126之執行,除了第18圖之ALUOP微指令126並不使用C旗標902來產生其結果。第18圖之XMOV微指令126之執行係類似於第17圖XMOV微指令126之執行。
請參照第19圖,圖中係以一方塊圖說明本發明第1圖之執行管線112執行一條件ALU指令124。具體來說,此條件ALU指令124係一非旗標更新、非預移位、使用進位條件ALU操作之ISA指令124,而硬體指令轉譯器104係將此指令124轉譯為第10圖步驟1026所述之微指令126。依據第19圖之操作在許多面向係類似於第17圖所述者,相似處在此不再贅述,而僅說明相異處。條件ALU指令124之轉譯係一非旗標更新、非預移位、使用進位條件ALU之操作ISA指令124,而不包含一移位微指令126。
執行單元424從保留站406接收步驟1026所述之ALUOPUC微指令126、從暫存器檔案106之暫存器R1與R2接收來源運算元數值、以及依據步驟1202從條件旗標暫存器926接收條件旗標924。因為ALU操作係一使用進位操作,執行單元424在暫存器R1與R2以及所接收到的C旗標902執行ALU操作,以產生一結果且可依據步驟 1204寫入暫時暫存器T2。執行單元424並不寫入條件旗標暫存器926。第19圖之XMOV微指令126的執行係類似於第17圖之XMOV微指令126的執行。
請參照第20圖,圖中係以一方塊圖說明本發明第1圖執行管線112執行一條件ALU指令124。具體來說,此條件ALU指令124係一非旗標更新、非預移位、非使用進位條件ALU操作之ISA指令124,硬體指令轉譯器104係將此指令轉譯為第10圖步驟1024所述之微指令126。依據第20圖之操作在許多面向係類似於第19圖所描述之操作,其中相同處不再贅述,而僅說明相異處。第20圖之ALUOP微指令126之執行係類似於第19圖之ALUOPUC微指令126之執行,除了第20圖之ALUOP微指令126並不使用C旗標902來產生其結果。第20圖之XMOV微指令126之執行係類似於第17圖之XMOV微指令126之執行。
在前文中可以發現,本發明所述之實施例可避免允許微指令126來指定一額外來源運算元所衍生出來的缺點。這些缺點包括,第一,對各個將利用額外之來源運算元執行微指令126之執行單元424,在通用暫存器檔案需設置一額外的讀出埠。第二,對各個將利用額外來源運算元執行微指令126之執行單元424,在重排緩衝器422需設置一個額外的讀出埠。第三,對各個將會利用額外之來源運算元執行微指令126之執行單元424,在導向匯流排128上需使用更多的線路。第四,對各個將利用額外之來源運算元執行微指令126之執行單元424,需要一個額外相對 較大的多工器。第五,需要使用Q個額外的標籤(tag)比較器,其中:Q=Σ i=1 to n,(R[i]* P[i]* J[i])
其中,n是執行單元424的數量,R[i]是保留站406提供給第[i]個執行單元424之項目的數量,P[i]是可由第[i]個執行單元424所執行微指令所能指定之來源運算元的最大數量,以及J[i]是能夠前傳至第[i]個執行單元424之執行單元424的數量。第六,對額外的來源運算元,在暫存器配置表402中需要額外的重命名查詢動作。第七,需要擴展保留站406以處理額外的來源運算元。這些在速度、電力與空間付出的額外成本是不受歡迎的。
相同來源目的(SAME-SOURCE-DESTINATION)優化實施例
請參照第21圖(包括第21A圖和第21B圖),圖中係以流程圖說明本發明第1圖之硬體指令轉譯器104轉譯條件ALU指令124之操作。基本上,硬體指令轉譯器104依據第21圖所述之操作在許多面向係類似於依據第10圖所述之操作,尤其是對應於各種需要做出決定的步驟,因而在此對於這些步驟給予相同的編號。
請參照第21圖,第10圖之步驟1002係以步驟2102予以取代。在步驟2102中,硬體指令轉譯器104遇到的條件ALU指令124係不同於步驟1002所遇到的,因為在步驟2102所遭遇到的條件ALU指令124係在多個來源暫存器中指定一個暫存器作為目的暫存器。硬體指令轉譯器104係配置來辨識此條件並且優化其輸出之微指令126。尤 其是,硬體指令轉譯器104係將相同來源目的之條件ALU指令124解碼並將其轉譯為與第10圖之步驟1024、1026、1034、1036、1044、1054與1055(步驟10XX)所描述者不同的微指令126序列。此不同的微指令126序列係描述於第21圖之步驟2124、2126、2134、2136、2144、2154與2156(步驟21XX)以取代其相對應的步驟10XX。尤其是,步驟21XX中之各個步驟的微指令126序列具有之微指令126,較步驟10XX內的相對應微指令126序列少一個指令。具體來說,步驟21XX之序列並不包含CMOV或XMOV微指令126,選擇性寫入原始目的暫存器數值或是結果數值之操作,係由條件ALU微指令126在序列的末端執行。此操作在下列段落會有更清楚的說明。
在步驟2124中,硬體指令轉譯器104將相同來源目的非旗標更新、非預移位、非進位使用之條件ALU指令124轉譯為單一個微指令126,即一條件ALU操作微指令126(標示為ALUOP CC)。在步驟2124之一實例中,條件ALU指令124係類似於步驟1024所描述者,除了第一來源運算元係目的暫存器(RD)。因此,條件ALU指令124特定一第一來源暫存器(RD)與一第二來源暫存器(R2),一ALU操作(標示為ALUOP)用以執行於第一來源暫存器RD與第二來源暫存器R2以產生一結果,而目的暫存器(RD)則與第一來源暫存器相同,執行結果係有條件地寫入此目的暫存器中。條件ALUOP微指令126與條件ALU指令124指定相同的ALU操作與條件。執行ALUOP微指令126之執行單元424係接收舊的或是當前之目的暫存器(RD)的數值, 同時依據步驟1202接收第二來源運算元R2的數值,並依據步驟1204執行ALU操作於此兩個來源運算元以產生一結果。執行單元424亦接收條件旗標924並依據步驟1204檢驗條件旗標924以確認其是否滿足指定條件。若是,執行單元424依據步驟1211輸出結果,否則就依據步驟1212輸出舊的目的暫存器數值。條件ALUOP微指令126之執行係以方塊圖呈現於第28圖。此流程終止於步驟2124。
在步驟2126中,硬體指令轉譯器104將相同來源目的非旗標更新、非預移位、使用進位之條件ALU指令124轉譯為單一個微指令126,即一使用進位條件ALU操作微指令126(標示為ALUOPUC CC)。在步驟2126之實例中,此條件ALU指令124係類似於步驟2124所描述者,除了其所指定之ALU操作係使用進位旗標,並且此指令亦類似於步驟1026所描述者,除了第一源運算元係目的暫存器(RD)。條件ALUOPUC微指令126係類似於步驟2124所描述者;不過,其所指定之ALU操作係使用進位旗標。如第27圖之方塊圖所示之條件ALUOPUC微指令126之執行係類似於步驟2124之條件ALUOP微指令126之執行,除了執行單元424係使用進位旗標來執行ALU操作。此流程終止於步驟2126。
在步驟2134中,硬體指令轉譯器104係將相同來源目的非旗標更新、預移位、非使用進位之條件ALU指令124轉譯為第一與第二微指令126,即:(1)一移位微指令126;以及(2)一ALUOP微指令126。在步驟2134之實例中,條件ALU指令124係類似於步驟1034所描述者,除了第一 來源運算元係目的暫存器(RD)外,並且,此指令係類似於步驟2124所描述者,除了條件ALU指令124亦指定一具有一移位量之預移位操作於第二來源運算元(R2),在步驟2134之實例中,此移位量係儲存於由條件ALU指令124所指定之第三來源暫存器(R3)。不過,若是條件ALU指令124屬於會將移位量指定為指令124內之常數之種類,第三來源暫存器就不會被使用。移位微指令126係類似於步驟1034所描述者,而執行單元424執行此移位微指令126之方式係類似於步驟1034與第18圖所描述者。雖然在步驟2134中,因為條件ALU指令124指示架構條件旗標902不會被更新,因此,由移位微指令126產生之進位旗標數值並不會被使用,不過,如在步驟2156,由移位微指令126所產生之進位旗標數值則是會被使用到。此外,此預移位操作會需要舊的進位旗標旋轉至移位後的結果數值;舉例來說,RRX預移位操作係將進位旗標移位至結果之最高有效位元。在此情況下,雖未見於第21圖(除了步驟2156之外),當執行單元424執行移位微指令126時,它亦會讀取條件旗標924以取得當前的進位旗標數值。條件ALUOP微指令126及其執行係類似於步驟2124所描述者;不過,此微指令係接收暫時暫存器T3之數值而非暫存器R2的數值,並且執行ALU操作於暫存器R1與暫時暫存器T3以產生結果寫入目的暫存器。移位微指令126之執行與條件ALUOP微指令126係呈現於第26圖中。此流程終止於步驟2134。
在步驟2136中,硬體指令轉譯器104將相同來源目的 非旗標更新、預移位(pre-shifting)、使用進位之條件ALU指令124更新為第一與第二微指令126,即:(1)一移位微指令126;以及(2)一使用進位條件算數與邏輯單元ALUOP微指令126(標示為ALUOPUC CC)。在步驟2136之實例中,條件ALU指令124係類似於步驟2134所描述者,除了所指定之ALU操作係使用進位旗標,並且,此指令係類似於步驟1036所描述者,除了第一來源運算元係目的暫存器(RD)。這兩個微指令126以及其執行係類似於步驟2134所描述者;不過,ALUOPUC微指令126亦接收條件旗標924以取得進位旗標當前的數值,以使用於進位使用ALU操作。移位微指令126與條件ALUOPUC微指令126之執行,如第25圖所示,係類似於步驟2134中之移位微指令126與條件ALUOP微指令126之執行,除了執行單元424係使用進位旗標來執行ALU操作。此流程終止於步驟2136。
在步驟2144中,硬體指令轉譯器104將相同來源目的旗標更新、非預移位之條件ALU指令124轉譯為單一個微指令126,即一條件ALU操作微指令126(標示為ALUOP CC)。在步驟2144之實例中,條件ALU指令124係類似於步驟2124之條件ALU指令124,除了會更新架構條件旗標902之外,並且係類似於步驟1044所描述者,除了第一來源運算元係目的暫存器。步驟2144之條件ALU操作微指令126及其操作係類似於步驟2124所描述者,除了步驟2144之ALU操作微指令126亦更新架構條件旗標902,並且係類似於步驟1044之條件ALU微指令126,除了其 第一運算元係目的暫存器而非暫存器R1並且其目的暫存器係目的暫存器而非暫時暫存器T2。執行單元424執行條件ALU微指令126之執行單元424係依據步驟1202接收目的暫存器RD與暫存器R2作為來源運算元,並且依據步驟1204執行此指定的ALU操作於此二個來源運算元以產生一結果。執行單元424亦接收架構條件旗標902並依據步驟1206確認其是否滿足指定條件。若是,執行單元424依據ALU操作是否為進位更新操作,來選擇依據步驟1222或1226輸出ALU操作之結果以寫入目的暫存器RD,否則就依據步驟1216輸出目的暫存器RD之舊的數值。此外,執行單元424依據條件是否滿足以及ALU操作是否為進位更新操作,來選擇依據步驟1216、1222或是1226寫入條件旗標暫存器926。若是條件不滿足,執行單元424係依據步驟1216將舊的條件旗標數值寫入架構條件旗標902;反之,若是條件滿足,執行單元424在採取條件進位ALU操作之情況下,係依據步驟1222,基於ALU操作的結果來更新架構條件旗標902,而在採取非條件進位ALU操作之情況下,則是依據步驟1226。條件算數與邏輯單元ALUOP微指令126之執行係呈現於第22圖。值得注意的是,在步驟2144(以及步驟1054與1056)產生之條件ALU操作微指令126所執行之ALU操作,可以是一使用進位旗標之ALU操作(類似於步驟1026與1036所描述者),而由於微指令126會讀取旗標(由RDFLAGS標示),執行單元424具有此進位旗標來執行進位使用ALU操作。此流程終止於步驟2144。
在步驟2154,硬體指令轉譯器104將相同來源目的旗標更新、預移位、進位使用之條件ALU指令124轉譯為第一與第二微指令126,即(1)一移位微指令126;以及(2)一條件進位更新ALU操作微指令126(標示為CU ALUOP CC)。在步驟2154之實例中,條件ALU指令124係類似於步驟2134所描述者,除了條件ALU指令124亦指定架構條件旗標902是要被更新的,並且係類似於步驟1054所描述者,除了第一來源運算元係目的暫存器。移位微指令126係類似於步驟1034所描述者,並且,執行單元424執行移位微指令126的方式係類似於第18圖之步驟1034所描述者。CU ALUOP微指令126及其執行係類似於步驟2124之條件ALU微指令126,除了步驟2144之CU ALUOP微指令126亦會更新架構條件旗標902,並且係類似於步驟1054之條件ALU微指令126,除了其第一運算元係目的暫存器而非暫存器R1,且其目的暫存器係目的暫存器而非暫時暫存器T2。執行CU ALUOP微指令126之執行單元424係依據步驟2102接收目的暫存器RD與暫時暫存器T3作為來源運算元,並依據步驟1204執行此指定的ALU操作於目的暫存器與暫時暫存器T3以產生一結果。此外,執行單元424係依據步驟1202接收架構條件旗標902,並且依據步驟1206確認其是否滿足指定條件。此外,依據條件是否滿足,執行單元424係依據步驟1216或1222以更新條件旗標暫存器926。若是條件不被滿足,執行單元424將舊的條件旗標數值寫入架構條件旗標902;反之,若是條件滿足,執行單元424則是基於ALU操作的結果來更新 架構條件旗標902。移位微指令126與條件ALUOP微指令126之執行係呈現於第24圖。此流程終止於步驟2154。
在步驟2156中,硬體指令轉譯器104係將相同來源目的旗標更新、欲移位、非進位更新之條件ALU指令124轉譯為第一與第二微指令126,即:(1)一移位微指令126;以及(2)一條件非進位更新ALU操作微指令126(標示為NCUALUOP CC)。在步驟2156之實例中,條件ALU指令124係類似於步驟2154所描述者,除了條件ALU指令124係指定一非進位更新ALU操作,並且係類似於步驟1056所描述者,除了第一來源運算元係目的暫存器。因此,在條件滿足時,架構進位旗標902係以此預移位進位旗標數值進行更新。移位微指令126係類似於步驟2134所描述者;不過,移位微指令126會讀取以及寫入條件旗標暫存器926。具體來說,執行移位微指令126之執行單元424係:(1)將預移位操作所產生之進位旗標數值寫入PSC位元906;(2)設定USE位元908來指示條件NCUALUOP微指令126去利用PSC位元906來更新架構進位旗標902;以及(3)依據步驟1114將舊的架構條件旗標902寫回條件旗標暫存器926,藉此NCUALUOP微指令126可以評估架構條件旗標902的舊的數值來確認其是否滿足指定條件。NCUALUOP微指令126與條件ALU指令124係指定相同的條件。執行NCUALUOP微指令126之執行單元424係依據步驟1204執行ALU操作於目的暫存器與暫時暫存器T3以產生一結果。此外,執行單元424接收架構條件旗標902並且依據步驟1206確認其是否滿足條件。此外,執行 單元424依據條件是否滿足以及USE位元908是否被設定,選擇依據步驟1216、1226或1228來寫入條件旗標暫存器926。具體來說,若是條件不被滿足,執行單元424會依據步驟1216將舊的條件旗標數值寫入架構條件旗標902;而在條件滿足時,執行單元424會視USE位元908是否被設定,選擇依據步驟1226或是1228,且基於ALU操作的結果來更新架構條件旗標902。具體來說,架構溢位(V)旗標902係以舊的溢位旗標數值924寫入,N旗標與Z旗標則是以基於結果所產生之新的數值寫入。此外,若是USE位元908如此指示,架構進位旗標902係依據步驟1228以位於PSC位元906之預移位進位旗標數值進行更新,否則就依據步驟1226以舊的進位旗標數值924進行更新。移位微指令126與NCUALUOP微指令126之執行係呈現於第23圖(包括第23A圖和第23B圖)。此流程終止於步驟2156。
此處理方式的優點在於,在條件ALU指令124指定目的暫存器與來源暫存器其中之一為同一者時,硬體指令轉譯器104可以進行優化且使所產生之微指令126序列減少一個微指令126。第一,其可增加微處理器100之前瞻(lookahead)功能以利用所欲執行之程式的指令層之平行處理來增加執行單元424的使用。因為微指令126數量減少意味著重排緩衝器422中供額外微指令126所用之自由槽(free slot)將增加,於是能產生一較大的微指令126池(pool)以完成發布準備以供後續執行之用,因而可以提升此前瞻功能。第二,因為每一個時脈週期中,硬體指令轉譯器104 只能輸出微指令126至一預設數量的槽(slot),而至少在一實施例中,硬體指令轉譯器104必須在同一時脈週期內輸出實施一給定ISA指令124所需之所有微指令126,因此減少一條件ALU指令124轉譯產生之微指令126數量,亦可減少每個週期內空的微指令126槽的平均數量,同時有助於增加微處理器100之前瞻功能與執行單元424的使用。
惟以上所述者,僅為本發明之較佳實施例而已,當不能以此限定本發明實施之範圍,即大凡依本發明申請專利範圍及發明說明內容所作之簡單的等效變化與修飾,皆仍屬本發明專利涵蓋之範圍內。另外本發明的任一實施例或申請專利範圍不須達成本發明所揭露之全部目的或優點或特點。此外,摘要部分和標題僅是用來輔助專利文件搜尋之用,並非用來限制本發明之權利範圍。
100‧‧‧微處理器(處理核心)
102‧‧‧指令快取
104‧‧‧硬體指令轉譯器
106‧‧‧暫存器檔案
108‧‧‧記憶體子系統
112‧‧‧執行管線
114‧‧‧指令擷取單元與分支預測器
116‧‧‧ARM程式計數器(PC)暫存器
118‧‧‧x86指令指標(IP)暫存器
122‧‧‧組態暫存器(configuration register)
124‧‧‧ISA指令
126‧‧‧微指令
128‧‧‧結果
132‧‧‧指令模式指標(instruction mode indicator)
134‧‧‧擷取位址
136‧‧‧環境模式指標(environment mode indicator)
202‧‧‧指令格式化程式
204‧‧‧簡單指令轉譯器(SIT)
206‧‧‧複雜指令轉譯器(CIT)
212‧‧‧多工器(mux)
222‧‧‧x86簡單指令轉譯器
224‧‧‧ARM簡單指令轉譯器
232‧‧‧微程式計數器(micro-program counter,micro-PC)
234‧‧‧微碼唯讀記憶體
236‧‧‧微程序器(microsequencer)
235‧‧‧指令間接暫存器(instruction indirection register,IIR)
237‧‧‧微轉譯器(microtranslator)
242‧‧‧格式化ISA指令
244‧‧‧實行微指令(implementing microinstructions)
246‧‧‧實行微指令
247‧‧‧唯讀記憶體指令
248‧‧‧選擇輸入
252‧‧‧微碼位址
254‧‧‧唯讀記憶體位址
255‧‧‧ISA指令資訊
302‧‧‧預解碼器(pre-decoder)
304‧‧‧指令位元組佇列(IBQ)
306‧‧‧長度解碼器(length decoders)與漣波邏輯閘(ripple logic)
308‧‧‧多工器佇列(mux queue,MQ)
312‧‧‧多工器
314‧‧‧格式化指令佇列(formatted instruction queue,FIQ)
322‧‧‧ARM指令集狀態
401‧‧‧微指令佇列
402‧‧‧暫存器配置表(register allocation table,RAT)
404‧‧‧指令調度器(instruction dispatcher)
406‧‧‧保留站(reservation station)
408‧‧‧指令發送單元(instruction issue unit)
412‧‧‧整數/分支(integer/branch)單元
414‧‧‧媒體單元(media unit)
416‧‧‧載入/儲存(load/store)單元
418‧‧‧浮點(floating point)單元
422‧‧‧重排緩衝器(reorder buffer,ROB)
424‧‧‧執行單元
502‧‧‧ARM特定暫存器
504‧‧‧x86特定暫存器
506‧‧‧共享暫存器
700‧‧‧雙核心微處理器
892‧‧‧微指令快取
926‧‧‧條件旗標暫存器
922‧‧‧多工器
928‧‧‧旗標匯流排
928/924‧‧‧條件旗標數值
902‧‧‧ISA條件旗標
904‧‧‧條件滿足(SAT)位元
906‧‧‧預移位進位(PSC)位元
908‧‧‧使用移位進位(USE)位元
第1圖係本發明執行x86程式集架構與ARM程式集架構機器語言程式之微處理器一實施例之方塊圖。
第2圖係一方塊圖,詳細顯示第1圖之硬體指令轉譯器。
第3圖係一方塊圖,詳細顯示第2圖之指令格式化程式(instruction formatter)。
第4圖係一方塊圖,詳細顯示第1圖之執行管線。
第5圖係一方塊圖,詳細顯示第1圖之暫存器檔案。
第6圖係一流程圖,顯示第1圖之微處理器之操作步驟。
第7圖係本發明一雙核心微處理器之方塊圖。
第8圖係本發明執行x86 ISA與ARM ISA機器語言程式之 微處理器另一實施例之方塊圖。
第9圖係一方塊圖,詳細顯示部分第1圖之微處理器。
第10圖(包括第10A圖和第10B圖)係一流程圖,顯示第1圖之硬體指令轉譯器轉譯條件ALU指令之操作步驟。
第11圖係一流程圖,顯示第4圖之執行單元執行一移位微指令之操作步驟。
第12圖(包括第12A圖和第12B圖)係一流程圖,顯示第4圖之執行單元執行一條件ALU微指令之操作步驟。
第13圖係一流程圖,顯示第4圖之執行單元執行一條件移動微指令(conditional move microinstruction)之操作步驟。
第14至20圖係方塊圖,顯示第1圖之執行管線112執行依據第10A圖和第10B圖之轉譯操作所轉譯之各種形式的條件ALU指令之操作步驟。
第21圖(包括第21A圖和第21B)係一流程圖,顯示第1圖之硬體指令轉譯器轉譯條件ALU指令,以指出(specify)來源暫存器(source register)之其中之一與目的暫存器係為同一之操作步驟。
第22至28圖係方塊圖,顯示第1圖之執行管線112執行依據第21圖之轉譯操作所轉譯之各種形式的條件ALU指令之操作步驟。
100‧‧‧微處理器
102‧‧‧指令快取
104‧‧‧硬體指令轉譯器
106‧‧‧暫存器檔案
108‧‧‧記憶體子系統
112‧‧‧執行管線
114‧‧‧指令擷取單元與分支預測器
116‧‧‧ARM程式計數器(PC)暫存器
118‧‧‧x86指令指標(IP)暫存器
122‧‧‧組態暫存器(configuration register)
124‧‧‧ISA指令
126‧‧‧微指令
128‧‧‧結果
132‧‧‧指令模式指標(instruction mode indicator)
134‧‧‧擷取位址
136‧‧‧環境模式指標(environment mode indicator)

Claims (83)

  1. 一種微處理器,具有多個架構條件旗標且執行一架構指令,只有在該架構條件旗標滿足該架構指令所指定之一條件,該架構指令指示該微處理器對第一與第二來源運算元執行一操作以產生一結果並將該結果寫入一目的暫存器,該微處理器包括:一硬體指令轉譯器,接收該架構指令並相對應地轉譯該架構指令為第一與第二微指令;以及一執行管線,執行由該硬體指令轉譯器所接收到之該些微指令;其中,相應於該第一微指令,該執行管線:對該些來源運算元執行該操作以產生該結果;其中,相應於該第二微指令,該執行管線:在該些架構條件旗標滿足該條件之情況下,將由該第一微指令所產生之該結果寫入該目的暫存器;以及在該些架構條件旗標不滿足該條件之情況下,將該目的暫存器當前的值寫入該目的暫存器。
  2. 如申請專利範圍第1項之微處理器,更包括:一暫存器檔案,將該些來源運算元提供給該執行管線以執行該些微指令,其中該暫存器檔案係被設定為,可同時為該些微指令提供至多二個來源運算元;其中,該架構指令指定該目的暫存器與該暫存器檔案中提供該第一與第二來源運算元之暫存器,係該暫存器檔案中之不同之暫存器。
  3. 如申請專利範圍第1項之微處理器,更包括:其中,該架構指令指示該微處理器勿依據該操作之該結果更新該些架構條件旗標;其中,相應於該第二微指令,該執行管線:確認該些架構條件旗標是否滿足該條件。
  4. 如申請專利範圍第1項之微處理器,更包括:其中,該架構指令指示該微處理器只在該些架構條件旗標滿足該條件之情況下,依據該操作之該結果更新該架構條件旗標;其中,相應於該第一微指令,該執行管線:確認該些架構條件旗標是否滿足該條件;以及依據確認結果,向該第二微指令提供一指標。
  5. 如申請專利範圍第4項之微處理器,更包括:一暫存器,具有儲存空間以儲存該些架構條件旗標以及該指標。
  6. 如申請專利範圍第5項之微處理器,其中該暫存器係被該微處理器之一重命名單元重命名。
  7. 如申請專利範圍第1項之微處理器,其中該架構指令係一ARM ISA條件執行指令。
  8. 一種微處理器,具有多個架構條件旗標,其中該微處理器執行一架構指令,該架構指令指示該微處理器對一第一來源運算元執行一移位操作以產生一第一結果,對該第一結果與一第二來源運算元執行一第二操作以產生一第二結果,並且只在該些架構條件旗標滿足該架構指令指定之一條件下,將該第二結果寫入一目的暫存器,該 微處理器包括:一硬體指令轉譯器,接收該架構指令並對應地轉譯該架構指令為至少第一與第二微指令;以及一執行管線,執行由該硬體指令轉譯器接收之該些微指令;其中,相應於該第一微指令,該執行管線:對該第一來源運算元執行該移位操作以產生該第一結果;其中,相應於該第二微指令,該執行管線:在該些架構條件旗標滿足該條件之情況下,將該第二結果寫入該目的暫存器;以及在該些架構條件旗標不滿足該條件之情況下,將該目的暫存器當前的值寫入該目的暫存器。
  9. 如申請專利範圍第8項之微處理器,更包括:一暫存器檔案,將該些來源運算元提供給該執行管線以執行該些微指令,其中該暫存器檔案係被設定為,可同時為該些微指令提供至多二個來源運算元;其中,該架構指令指定該目的暫存器與該暫存器檔案中提供該第一來源運算元之暫存器為該暫存器檔案之同一個暫存器;其中,相應於該第二微指令,該執行管線:對該第一結果與該第二運算元執行該第二操作以產生該第二結果。
  10. 如申請專利範圍第8項之微處理器,更包括:其中,相應於該第二微指令,該執行管線: 確認該些架構條件旗標是否滿足該條件。
  11. 如申請專利範圍第8項之微處理器,更包括:其中,該架構指令指示該微處理器只在該些架構條件旗標滿足該條件之情況下,更新該些架構條件旗標;其中,相應於該第二微指令,該執行管線:若是該些架構條件旗標不滿足該條件:以當前之該些架構條件旗標的值,更新該些架構條件旗標;以及若是該些架構條件旗標滿足該條件:依據該第二結果更新至少部分該些架構條件旗標。
  12. 如申請專利範圍第11項之微處理器,更包括:其中,相應於該第二微指令,該執行管線:若是該些架構條件旗標滿足該條件:若是該第二操作係一進位旗標更新操作:依據該第二結果更新一架構進位旗標;以及若是該第二操作係一非進位旗標更新操作:依據該第一結果更新該架構進位旗標。
  13. 如申請專利範圍第8項之微處理器,更包括:一暫存器檔案,將該些來源運算元提供給該執行管線以執行該些微指令,其中該暫存器檔案被設定為,可同時為該些微指令提供至多二個來源運算元;其中,該架構指令指定該目的暫存器與該暫存器檔案中提供該第一與第二來源運算元之暫存器,係該暫存器檔案中之不同之暫存器;其中,該硬體指令轉譯器更將該架構指令轉譯為一第三 微指令插入該第一與第二微指令間;其中,相應於該第三微指令,該執行管線:對該第一結果與該第二運算元執行該第二操作,以產生該第二結果。
  14. 如申請專利範圍第13項之微處理器,更包括:其中,該架構指令指示該微處理器只在該些架構條件旗標滿足該條件之情況下,更新該些架構條件旗標;其中,相應於該第三微指令,該執行管線:若是該些架構條件旗標不滿足該條件:以當前之該些架構條件旗標的值,更新該些架構條件旗標;以及若是該些架構條件旗標滿足該條件:依據該第二結果更新至少部分該些架構條件旗標。
  15. 如申請專利範圍第14項之微處理器,更包括:其中,相應於該第三微指令,該執行管線:若是該些架構條件旗標滿足該條件:若是該第二操作係一進位旗標更新操作:依據該第二結果更新一架構進位旗標;以及若是該第二操作係一非進位旗標更新操作:依據該第一結果更新該架構進位旗標。
  16. 如申請專利範圍第8項之微處理器,其中該架構指令係一ARM ISA條件執行指令。
  17. 一種微處理器之處理方法,該微處理器具有多個架構條件旗標以執行一架構指令,該架構指令指示該微處理器 執行對第一與第二來源運算元執行一操作以產生一結果,並且只在該些架構條件旗標滿足該架構指令指定之一條件之情況下,將該結果寫入一目的暫存器,該方法包括:將該架構指令轉譯為第一與第二微指令,其中該轉譯步驟係由該微處理器之一硬體指令轉譯器進行;以及執行由該硬體指令轉譯器接收之該些微指令,其中該執行步驟係由該微處理器之一執行管線進行;其中,執行該第一微指令之步驟包括:對該些來源運算元執行該操作以產生該結果;其中,執行該第二微指令之步驟包括:在該些架構條件旗標滿足該條件之情況下,將由該第一微指令產生之該結果寫入該目的暫存器;以及在該些架構條件旗標不滿足該條件之情況下,將該目的暫存器當前的值寫入該目的暫存器。
  18. 如申請專利範圍第17項之方法,其中該微處理器具有一暫存器檔案,該暫存器檔案將該些來源運算元提供給該執行管線以執行該些微指令,其中該暫存器檔案係被設定為可同時為該些微指令提供至多二個來源運算元;其中,該架構指令指定該目的暫存器與該暫存器檔案中提供該第一與第二來源運算元之暫存器,係該暫存器檔案中之不同之暫存器。
  19. 如申請專利範圍第17項之方法,其中該架構指令指示該微處理器勿依據該操作之該結果更新該些架構條件 旗標,該方法更包括:其中,執行該第二微指令之步驟包括:確認該些架構條件旗標是否滿足該條件。
  20. 如申請專利範圍第17項之方法,其中該架構指令指示該微處理器只在該些架構條件旗標滿足該條件之情況下,依據該操作之該結果更新該些架構條件旗標,該方法更包括:其中,執行該第一微指令之步驟包括:確認該些架構條件旗標是否滿足該條件;以及依據確認結果,向該第二微指令提供一指標。
  21. 如申請專利範圍第20項之方法,其中該微處理器具有一暫存器,該暫存器具有儲存空間以儲存該些架構條件旗標以及該指標。
  22. 如申請專利範圍第21項之方法,更包括:對該暫存器重命名,其中該重命名步驟係由該微處理器之一重命名單元進行。
  23. 如申請專利範圍第17項之方法,其中該架構指令係一ARM ISA條件執行指令。
  24. 一種微處理器之處理方法,該微處理器具有多個架構條件旗標以執行一架構指令,該架構指令指示該微處理器對一第一來源運算元執行一移位操作以產生一第一結果,對該第一結果與一第二運算元執行一第二操作,以產生一第二結果,並且只在該些架構條件旗標滿足該架構指令指定之一條件之情況下,將該第二結果寫入一目的暫存器,該方法包括: 將該架構指令轉譯為至少第一與第二微指令,其中該轉譯步驟係由該微處理器之一硬體指令轉譯器進行;以及執行由該硬體指令轉譯器接收之該些微指令,其中該執行步驟係由該微處理器之一執行管線進行;其中,執行該第一微指令之步驟包括:對該第一來源運算元執行該移位操作以產生該第一結果;其中,執行該第二微指令之步驟包括:在該些架構條件旗標滿足該條件之情況下,將該第二結果寫入該目的暫存器;以及在該些架構條件旗標滿足該條件之情況下,將該目的暫存器當前的值寫入該目的暫存器。
  25. 如申請專利範圍第24項之方法,其中該微處理器具有一暫存器檔案,該暫存器檔案將該些來源運算元提供給該執行管線以執行該些微指令,其中該暫存器檔案係被設定為可同時為該些微指令提供至多二個來源運算元;其中,該架構指令指定該目的暫存器與該暫存器檔案中提供該第一來源運算元之暫存器為該暫存器檔案之同一個暫存器;其中,執行該第二微指令之步驟包括:對該第一結果與該第二運算元執行該第二操作,以產生該第二結果。
  26. 如申請專利範圍第24項之方法,更包括:其中,執行該第二微指令之步驟包括: 確認該些架構條件旗標是否滿足該條件。
  27. 如申請專利範圍第26項之方法,其中該架構指令指示該微處理器只在該些架構條件旗標滿足該條件之情況下更新該些架構條件旗標,該方法更包括:其中,執行該第二微指令之步驟包括:若是該些架構條件旗標不滿足該條件:依據該些架構條件旗標當前的值,更新該些架構條件旗標;以及若是該些架構條件旗標滿足該條件:依據該第二結果更新至少部分該些架構條件旗標。
  28. 如申請專利範圍第27項之方法,更包括:其中,執行該第二微指令之步驟包括:若是該些架構條件旗標滿足該條件:若是該第二操作係一進位旗標更新操作:依據該第二結果更新一架構進位旗標;以及若是該第二操作係一非進位旗標更新操作:依據該第一結果更新該架構進位旗標。
  29. 如申請專利範圍第24項之方法,其中該微處理器具有一暫存器檔案,該暫存器檔案將該些來源運算元提供給該執行管線以執行該些微指令,其中該暫存器檔案係被設定為可同時為該些微指令提供至多二個來源運算元;其中,該架構指令指定該目的暫存器與該暫存器檔案中提供該第一與第二來源運算元之暫存器,係該暫存器檔案中之不同之暫存器,該方法更包括:將該架構指令轉譯出一第三微指令插入該第一與第二微 指令間;其中,執行該第三微指令之步驟包括:對該第一結果與該第二運算元執行該第二操作,以產生該第二結果。
  30. 如申請專利範圍第29項之方法,其中該架構指令指示該微處理器只在該些架構條件旗標滿足該條件之情況下更新該些架構條件旗標,該方法更包括:其中,執行該第三微指令之步驟包括:若是該些架構條件旗標不滿足該條件:依據該些架構條件旗標當前的值,更新該些架構條件旗標;以及若是該些架構條件旗標滿足該條件:依據該第二結果更新至少部分該些架構條件旗標。
  31. 如申請專利範圍第30項之方法,更包括:其中,執行該第三微指令之步驟包括:若是該些架構條件旗標滿足該條件:若是該第二操作係一進位旗標更新操作:依據該第二結果更新一架構進位旗標;以及若是該第二操作係一非進位旗標更新操作:依據該第一結果更新該架構進位旗標。
  32. 如申請專利範圍第24項之方法,其中該架構指令係一ARM ISA條件執行指令。
  33. 一種電腦程式產品,編碼於至少一電腦可讀取儲存媒介以使用於一運算裝置,該電腦程式產品包括:適用於該媒介之電腦可讀取程式碼,用以指定一微處理 器,該微處理器具有多個架構條件旗標且執行一架構指令,該架構指令指示該微處理器對第一與第二來源運算元執行一操作以產生一結果,並且只在該些架構條件旗標滿足該架構指令指定之一條件之情況下,將該結果寫入一目的暫存器,該電腦可讀取程式碼包括:第一程式碼,用以指定一硬體指令轉譯器,該硬體指令轉譯器接收該架構指令,並且相對應地將該架構指令轉譯為第一與第二微指令;以及第二程式碼,用以指定一執行管線,該執行管線執行由該硬體指令轉譯器接收之該些微指令;其中,相應於該第一微指令,該執行管線:對該些來源運算元執行該操作,以產生該結果;其中,相應於該第二微指令,該執行管線:在該些架構條件旗標滿足該條件之情況下,將由該第一微指令產生之該結果寫入該目的暫存器;以及在該些架構條件旗標不滿足該條件之情況下,將該目的暫存器當前的值寫入該目的暫存器。
  34. 如申請專利範圍第33項之電腦程式產品,其中該至少一電腦可讀取儲存媒介係選自由碟片、磁帶、或是其他磁性、光學或電子之儲存媒介以及網路、纜線、無線或其他通訊媒介所構成之一群組。
  35. 一種微處理器,具有多個架構條件旗標且執行一架構指令,只有在該架構條件旗標滿足該架構指令所指定之一條件,該架構指令指示該微處理器對第一與第二來源運 算元執行一操作以產生一結果並將該結果寫入一目的暫存器,該微處理器包括:一暫存器,具有儲存空間以儲存該些架構條件旗標以及儲存一非架構指標;一硬體指令轉譯器,接收該架構指令並相對應地轉譯該架構指令為第一與第二微指令;以及一執行管線,執行由該硬體指令轉譯器所接收到之該些微指令;其中,相應於該第一微指令,該執行管線:對該些來源運算元執行該操作以產生該結果;決定是否該些架構條件旗標滿足該條件;以及更新該非架構指標以標示該些架構條件旗標是否滿足該條件;其中,相應於該第二微指令,該執行管線:如果該非架構指標經過該第一微指令的更新之後,其所標示的該些架構條件旗標滿足該條件之情況下,則將更新的結果寫入該目的暫存器;以及如果該非架構指標經過該第一微指令的更新之後,其所標示的該些架構條件旗標不滿足該條件之情況下,將該目的暫存器當前的值寫入該目的暫存器。
  36. 如申請專利範圍第35項之微處理器,其中相應於該第一微指令,該執行管線:如果該些架構條件旗標滿足該條件,則依據確認結果,更新至少一個該些架構條件旗標;以及如果該些架構條件旗標不滿足該條件,則依據該些架構 條件旗標之當前的值,更新該些架構條件旗標。
  37. 如申請專利範圍第36項之微處理器,其中該些架構條件旗標包括一架構進位旗標和其他架構條件旗標;其中,該架構指令也指示該微處理器對一第三來源運算元執行一移位操作以產生該第二來源運算元;其中,該硬體指令轉譯器更轉譯該架構指令為一第三微指令優先於第一與第二微指令;其中,相應於該第三微指令,該執行管線:對該第三來源運算元執行該移位操作以產生該第二來源運算元以及依據該第二來源運算元產生一進位旗標值。
  38. 如申請專利範圍第37項之微處理器,其中,該暫存器具有儲存空間以儲存一非架構進位旗標;其中,相應於該第三微指令,該執行管線:依據該第二來源運算元所產生之進位旗標值對該一非架構進位旗標進行更新;其中,相應於該第一微指令,該執行管線:如果該些架構條件旗標滿足該條件:如果該運算的類型不是該架構進位旗標的更新,而是透過第三微指令以該非架構進位旗標對該架構進位旗標的更新;且如果該運算的類型是該架構進位旗標依據該結果的更新。
  39. 如申請專利範圍第35項之微處理器,其中,該暫存器是利用該微處理器之重命名單元進行重命名。
  40. 如申請專利範圍第35項之微處理器,其更包括: 一暫存器檔案,其中該暫存器檔案被設定為可同時為該些微指令提供至多二個來源運算元;其中,該第一和第二來源運算元係由該暫存器檔案之第一和第二暫存器分別提供,其中該目的暫存器也是由該暫存器檔案提供,其中該目的暫存器與該第一和第二暫存器不同。
  41. 如申請專利範圍第35項之微處理器,其包更括:一暫存器檔案,其中該暫存器檔案被設定為可同時為該些微指令提供至多二個來源運算元;其中,該第一和第二來源運算元係由該暫存器檔案之第一和第二暫存器分別提供,其中該目的暫存器也是由該暫存器檔案提供;其中,如果該硬體指令轉譯器判斷該架構指令所指定的該目的暫存器等同於該暫存器檔案之第一暫存器,該硬體指令轉譯器將會轉譯該架構指令至該第一和第二微指令,而不會轉譯該架構指令至該第三微指令;其中,該第三微指令:以架構指令所指定的該目的暫存器做為其所指定的該目的暫存器;指定該暫存器檔案之該第一暫存器以提供該第三微指令之第一來源運算元,其中該第一暫存器係為該架構指令所指定之目的暫存器;以及指定該暫存器檔案之該第二暫存器以提供該第三微指令之第二來源運算元;其中,相應於第三微指令,該執行管線: 對該些來源運算元執行該操作以產生該結果;決定是否該些架構條件旗標滿足該條件;如果該些架構條件旗標滿足該條件之情況下,則將更新的結果寫入該目的暫存器;以及如果該些架構條件旗標不滿足該條件之情況下,將該目的暫存器當前的值寫入該目的暫存器。
  42. 如申請專利範圍第35項之微處理器,其中該架構指令係一ARM ISA條件執行指令。
  43. 如申請專利範圍第35項之微處理器,其包更括:一附屬資訊產生單元,用以產生該第二微指令之一執行附屬資訊在該結果以及該第一微指令所產生之該非架構指標。
  44. 如申請專利範圍第35項之微處理器,更包括:一重排緩衝器,包括複數個項目,其中每一個項目包括儲存空間用以儲存一個未引退微指令的一結果,該結果係經由該微處理器處理,其中每一個重排緩衝項目被設定為可以從儲存在該些項目之結果中,同時為該微指令提供至多二個來源運算元。
  45. 如申請專利範圍第35項之微處理器,更包括:一導向匯流排,用以發送經由該執行管線之複數個執行單元彼此執行該些微指令所產生的該些結果,其中該導向匯流排被設定為可以從該些執行單元所執行的該些微指令之該些結果中,同時為該微指令提供至多二個來源運算元。
  46. 一種微處理器之處理方法,該微處理器具有多個架構條 件旗標以執行一架構指令,該架構指令指示該微處理器執行對第一與第二來源運算元執行一操作以產生一結果,並且只在該些架構條件旗標滿足該架構指令指定之一條件之情況下,將該結果寫入一目的暫存器,該方法包括:將該架構指令轉譯為第一與第二微指令,其中該轉譯步驟係由該微處理器之一硬體指令轉譯器進行;以及執行由該硬體指令轉譯器接收之該些微指令,其中該執行步驟係由該微處理器之一執行管線進行;其中,執行該第一微指令之步驟包括:對該些來源運算元執行該操作以產生該結果;決定是否該些架構條件旗標滿足該條件;以及更新一該非架構指標以標示該些架構條件旗標是否滿足該條件;其中,執行該第二微指令之步驟包括:如果該非架構指標經過該第一微指令的更新之後,其所標示的在該些架構條件旗標滿足該條件之情況下,將由該第一微指令產生之該結果寫入該目的暫存器;以及如果該非架構指標經過該第一微指令的更新之後,其所標示的在該些架構條件旗標不滿足該條件之情況下,將該目的暫存器當前的值寫入該目的暫存器。
  47. 如申請專利範圍第46項之方法,其中該執行第一微指令的步驟包括: 如果該架構條件旗標滿足該條件,依據該結果更新至少一該些架構條件旗標;以及如果該架構條件旗標不滿足該條件,依據該些架構條件旗標當前的值更新該些架構條件旗標。
  48. 如申請專利範圍第46項之方法,其中,該架構條件旗標包括一架構進位旗標以及其他架構條件旗標;其中,該架構指令也指示該微處理器對一第三來源運算元執行一移位操作以產生該第二來源運算元;進一步轉譯該架構指令至一第三微指令,其中該第三微指令優先於第一和第二微指令;其中,執行該第三微指令之步驟包括:對該第三來源運算元執行該移位操作以產生該第二來源運算元並依據該第二來源運算元產生一進位旗標值。
  49. 如申請專利範圍第48項之方法,其中執行該第三微指令之步驟進一步包括:根據該第二來源運算元所產生之進位旗標值對一非架構進位旗標進行更新;其中,執行該第一微指令的步驟包括:如果該些架構條件旗標滿足該條件:如果該運算的類型不是該架構進位旗標的更新,而是透過第三微指令以該非架構進位旗標對該架構進位旗標的更新;且如果該運算的類型是該架構進位旗標依據該結果的更 新。
  50. 如申請專利範圍第46項之方法,其中該微處理器具有一暫存器,該暫存器具有儲存空間以儲存該些架構條件旗標以及儲存一非架構指標,該方法進一步包括:對該暫存器重命名,其中該重命名步驟係由該微處理器之一重命名單元進行。
  51. 如申請專利範圍第46項之方法,其中該微處理器包括一暫存器檔案,其中該暫存器檔案被設定為可同時為該些微指令提供至多二個來源運算元,該方法更包括:由該暫存器檔案之第一和第二暫存器分別提供該第一和第二來源運算元至該執行管線;其中,該目的暫存器也是由該暫存器檔案提供,其中該目的暫存器與該第一和第二暫存器不同。
  52. 如申請專利範圍第46項之方法,其中該微處理器包括一暫存器檔案,其中該暫存器檔案被設定為可同時為該些微指令提供至多二個來源運算元,該方法更包括:由該暫存器檔案之第一和第二暫存器分別提供該第一和第二來源運算元至該執行管線;其中,該目的暫存器也是由該暫存器檔案提供;如果該架構指令所指定的該目的暫存器等同於該暫存器檔案之第一暫存器;轉譯該架構指令至一第三微指令,而不會轉譯該架構指令至該第一和第二微指令;其中,該第三微指令:以架構指令所指定的該目的暫存器做為其所指定的 該目的暫存器;指定該暫存器檔案之該第一暫存器以提供該第三微指令之第一來源運算元,其中該第一暫存器為該架構指令所指定之目的暫存器;以及指定該暫存器檔案之該第二暫存器以提供該第三微指令之第二來源運算元;執行該第三微指令之步驟更包括:對該些來源運算元執行該操作以產生該結果;決定是否該些架構條件旗標滿足該條件;如果該些架構條件旗標滿足該條件之情況下,則將更新的結果寫入該目的暫存器;以及如果該些架構條件旗標不滿足該條件之情況下,將該目的暫存器當前的值寫入該目的暫存器。
  53. 如申請專利範圍第46項之方法,其中該架構指令係一ARM ISA條件執行指令。
  54. 如申請專利範圍第46項之方法,更包括:在該結果中以及在該第一微指令所產生之該非架構指標中產生該第二微指令之一執行附屬指令。
  55. 如申請專利範圍第46項之方法,其中該微處理器包括複數個項目,其中每一個項目包括儲存空間用以儲存一個未引退微指令的一結果,該結果係經由該微處理器處理,其中每一個重排緩衝項目被設定為可以從儲存在該些項目之結果中,同時為該微指令提供至多二個來源運算元。
  56. 如申請專利範圍第46項之方法,其中該微處理器包括一 導向匯流排,用以發送經由該執行管線之複數個執行單元彼此執行該些微指令所產生的該些結果,其中,該導向匯流排被設定為可以從該些執行單元所執行的該些微指令之該些結果中,同時為該微指令提供至多二個來源運算元。
  57. 一種電腦程式產品,編碼於至少一電腦可讀取儲存媒介,以使用於一運算裝置,該電腦程式產品包括:適用於該媒介之電腦可讀取程式碼,用以指定一微處理器,該微處理器具有多個架構條件旗標且執行一架構指令,該架構指令指示該微處理器對第一與第二來源運算元執行一操作以產生一結果,並且只在該些架構條件旗標滿足該架構指令指定之一條件之情況下,將該結果寫入一目的暫存器,該電腦可讀取程式碼包括:第一程式碼,用以指定一暫存器,該暫存器具有儲存空間以儲存該些架構條件旗標以及儲存一非架構指標;第二程式碼,用以指定一硬體指令轉譯器,該硬體指令轉譯器接收該架構指令,並對應地將該架構指令轉譯為第一與第二微指令;以及第三程式碼,用以指定一執行管線,該執行管線執行由該硬體指令轉譯器接收之該些微指令;其中,相應於該第一微指令,該執行管線:對該些來源運算元執行該操作,以產生該結果;決定是否該些架構條件旗標滿足該條件;以及 更新該非架構指標以標示該些架構條件旗標是否滿足該條件;其中,相應於該第二微指令,該執行管線:如果該非架構指標經過該第一微指令的更新之後,其所標示的在該些架構條件旗標滿足該條件之情況下,將由該第一微指令產生之該結果寫入該目的暫存器;以及如果該非架構指標經過該第一微指令的更新之後,其所標示的在該些架構條件旗標不滿足該條件之情況下,將該目的暫存器當前的值寫入該目的暫存器。
  58. 如申請專利範圍第57項之電腦程式產品,其中該至少一電腦可讀取儲存媒介係選自由碟片、磁帶、或是其他磁性、光學或電子之儲存媒介以及網路、纜線、無線或其他通訊媒介所構成之一群組。
  59. 一種微處理器,具有多個架構條件旗標,該些架構條件旗標包括一架構進位旗標和其他架構條件旗標,其中該微處理器執行一架構指令,只有在該架構條件旗標滿足該架構指令所指定之一條件,該架構指令指示該微處理器對一第一來源運算元執行一移位操作以產生一第一結果,並對該第一結果和一第二來源運算元執行一第二操作以產生一第二結果,並將該第二結果寫入一目的暫存器,如果該些架構條件旗標滿足該架構指示所指定之一條件則更新該些條件旗標,該微處理器包括:一暫存器,具有儲存空間以儲存該些架構條件旗標以及 儲存一非架構旗標;一硬體指令轉譯器,接收該架構指令並對應地轉譯該架構指令為第一與第二微指令;以及一執行管線,執行由該硬體指令轉譯器所接收到之該些微指令;其中,相應於該第一微指令,該執行管線:對該第一來源運算元執行該移位操作以產生該第一結果和一進位旗標值;以及利用該進位旗標值更新該非架構進位旗標;其中,相應於該第二微指令,該執行管線:對該第一結果和第二來源運算元執行該第二操作以產生該第二結果,並依據該第二結果產生新的條件旗標值;在該些架構條件旗標滿足該條件之情況下,利用該非架構進位旗標值更新該架構進位旗標,並且利用所產生之新的條件旗標值更新至少一個相對應之其他架構條件旗標;以及在該些架構條件旗標不滿足該條件之情況下,利用該架構條件旗標當前的值更新該架構條件旗標。
  60. 如申請專利範圍第59項之微處理器,其中該暫存器具有儲存空間以儲存一非架構指標;其中,該硬體指令轉譯器相對應地轉譯該架構指令至一第三微指令用以接續該第一與第二微指令;其中,相應於該第二微指令,該執行管線:確認該些架構條件旗標是否滿足該條件並同時更新該非 架構指示器;其中,相應於該第三微指令,該執行管線:如果該些非架構暫存器指示該些架構條件旗標滿足該條件時,則利用該第二結果更新該目的暫存器以及;以及如果該些非架構暫存器指示該些架構條件旗標不滿足該條件時,則利用該目的暫存器前的值更新該目的暫存器。
  61. 如申請專利範圍第60項之微處理器,更包括:一暫存器檔案,其中該暫存器檔案被設定為可同時為該些微指令提供至多二個來源運算元;其中,該第一和第二來源運算元係由該暫存器檔案之二個來源暫存器提供,其中該目的暫存器也是由該暫存器檔案提供並且與上述二個來源暫存器不同。
  62. 如申請專利範圍第59項之微處理器,其中,相應於該第二微指令,該執行管線:如果該些架構條件旗標滿足該條件時,利用該第二結果更新該目的暫存器;以及如果該些架構條件旗標不滿足該條件時,利用該目的暫存器當前的值更新該目的暫存器。
  63. 如申請專利範圍第62項之微處理器,更包括:一暫存器檔案,其中該暫存器檔案被設定為可同時為該些微指令提供至多二個來源運算元;其中,該第一和第二來源運算元係由該暫存器檔案之二個來源暫存器提供,其中該目的暫存器也是由該暫 存器檔案提供並且是上述二個來源暫存器之一。
  64. 如申請專利範圍第59項之微處理器,其中,相應於該第一微指令,該執行管線:利用該些架構條件旗標當前的值更新該些架構條件旗標。
  65. 如申請專利範圍第59項之微處理器,其中該暫存器係利用該微處理器之一重命名單元進行重命名。
  66. 如申請專利範圍第59項之微處理器,其中該第一來源運算元是一個定值,該定值係標示在該架構指令之一立即欄位中。
  67. 如申請專利範圍第59項之微處理器,其中該第一來源運算元是一個值,儲存在該微處理器之一個架構暫存器中。
  68. 如申請專利範圍第59項之微處理器,其中該第一來源運算元係移位一數量,該數量係標示在該架構指令之一立即欄位中。
  69. 如申請專利範圍第59項之微處理器,其中該第一來源運算元係移位一數量,該數量係標示在該微處理器之一架構暫存器中。
  70. 如申請專利範圍第59項之微處理器,其中,該些架構條件旗標包括一架構溢位旗標;其中,該依據該第二結果產生之新的條件旗標值包含一溢位旗標值;其中,相應於該第二微指令,該執行管線:如果該架構條件旗標滿如該條件:如果該架構指令所標示之第二操作是一種非用於 更新該架構溢位旗標之操作型態時,則利用該架構溢位旗標之當前之值更新該架構溢位旗標;以及如果該架構指令所標示之第二操作是一種用於更新該架構溢位旗標之操作型態時,則利用所產生之新的溢位旗標值更新該架構溢位旗標。
  71. 如申請專利範圍第59項之微處理器,其中該至少一其他架構條件旗標係透過該執行管線進行更新,而該執行管線則是相應於該第二微指令,其並且包含一負條件旗標和一零條件旗標。
  72. 如申請專利範圍第59項之微處理器,其中該架構指令係一ARM ISA指令。
  73. 一種微處理器之處理方法,該微處理器具有多個架構條件旗標,該些架構條件旗標包括一個架構進位旗標以及其他架構條件旗標,以執行一架構指令,該架構指令指示該微處理器對一第一來源運算元執行一移位操作以產生一第一結果,並且對該第一結果和一第二來源運算元執行一第二操作以產生一第二結果,並且只在該些架構條件旗標滿足該架構指令指定之一條件之情況下,將該第二結果寫入一目的暫存器並更新該條件旗標,該方法包括:將該架構指令轉譯為第一與第二微指令,其中該轉譯步驟係由該微處理器之一硬體指令轉譯器進行;以及執行由該硬體指令轉譯器接收之該些第一和第二微指令,其中該執行步驟係由該微處理器之一執行管線 進行;其中,執行該第一微指令之步驟包括:對該第一來源運算元執行該移位操作以產生該第一結果和一進位旗標值;以及利用所產生之進位旗標值對一非架構進位旗標進行更新;其中,執行該第二微指令之步驟包括:對該第一結果和第二來源運算元執行該第二操作以產生該第二結果,並依據該第二結果產生新的條件旗標值;在該些架構條件旗標滿足該條件之情況下,利用該非架構進位旗標值更新該架構進位旗標,並且利用所產生之新的條件旗標值更新至少一個相對應之其他架構條件旗標;以及在該些架構條件旗標不滿足該條件之情況下,利用該架構條件旗標當前的值更新該架構條件旗標。
  74. 如申請專利範圍第73項之方法,其步驟更包括:轉譯該架構指令至一第三微指令用以接續該第一與第二微指令;其中,執行該第二微指令的步驟包括:確認該些架構條件旗標是否滿足該條件並同時更新該非架構指示器;其中,執行該第三微指令的步驟包括:如果該些非架構暫存器指示該些架構條件旗標滿足該條件時,則利用該第二結果更新該目的暫存器 以及;以及如果該些非架構暫存器指示該些架構條件旗標不滿足該條件時,則利用該目的暫存器前的值更新該目的暫存器。
  75. 如申請專利範圍第74項之方法,其中該微處理器並包括一暫存器檔案,其中該暫存器檔案被設定為可同時為該些微指令提供至多二個來源運算元,其步驟更包括:從該暫存器檔案之二個來源暫存器中提供該第一和第二來源運算元;其中,該目的暫存器也是由該暫存器檔案提供並且與上述二個來源暫存器不同。
  76. 如申請專利範圍第73項之方法,其中執行該第二微指令之步驟包括:如果該些架構條件旗標滿足該條件時,利用該第二結果更新該目的暫存器;以及如果該些架構條件旗標不滿足該條件時,利用該目的暫存器當前的值更新該目的暫存器。
  77. 如申請專利範圍第76項之方法,其中該微處理器並包含一暫存器檔案並被設定為,可同時為該些微指令提供至多二個來源運算元,其步驟更包括:從該暫存器檔案之二個來源暫存器中提供該第一和第二來源運算元至該執行管線;其中,該目的暫存器也是由該暫存器檔案提供並且是上述二個來源暫存器之一。
  78. 如申請專利範圍第73項之方法,其中執行該第一微指 令的步驟更包括:利用該些架構條件旗標當前的值更新該些架構條件旗標。
  79. 如申請專利範圍第73項之方法,其中,其中,該些架構條件旗標包括一架構溢位旗標;其中,該依據該第二結果產生之新的條件旗標值包含一溢位旗標值;其中,執行該第二微指令的步驟更包括:如果該架構條件旗標滿如該條件:如果該架構指令所標示之第二操作是一種非用於更新該架構溢位旗標之操作型態時,則利用該架構溢位旗標之當前之值更新該架構溢位旗標;以及如果該架構指令所標示之第二操作是一種用於更新該架構溢位旗標之操作型態時,則利用所產生之新的溢位旗標值更新該架構溢位旗標。
  80. 如申請專利範圍第73項之方法,其中該至少一其他架構條件旗標係透過該執行管線進行更新,而該執行管線則是相應於該第二微指令,其並且包含一負條件旗標和一零條件旗標。
  81. 如申請專利範圍第73項之方法,其中該架構指令係一ARM ISA指令。
  82. 一種電腦程式產品,編碼於至少一電腦可讀取儲存媒介,以使用於一運算裝置,該電腦程式產品包括:適用於該媒介之電腦可讀取程式碼,用以指定一微處理 器,該微處理器具有多個架構條件旗標,該些架構條件旗標包括一架構進位旗標以及其他架構條件旗標,其中該微處理器執行一架構指令,該架構指令指示該微處理器對第一來源運算元執行一移位操作以產生一第一結果,並對該第一結果和一第二來源運算元執行一第二操作以產生一第二結果,並且只在該些架構條件旗標滿足該架構指令指定之一條件之情況下,將該第二結果寫入一目的暫存器並更新該條件旗標,該電腦可讀取程式碼包括:第一程式碼,用以指定一暫存器,該具有儲存空間以儲存該些架構條件旗標以及儲存一非架構旗標;第二程式碼,用以指定一硬體指令轉譯器,該硬體指令轉譯器接收該架構指令,並對應地將該架構指令轉譯為第一與第二微指令;以及第三程式碼,用以指定一執行管線,該執行管線執行由該硬體指令轉譯器接收之該些微指令;其中,相應於該第一微指令,該執行管線:對該第一來源運算元執行該移位操作,以產生該第一結果和一進位旗標值;以及利用該進位旗標值更新該非架構進位旗標;其中,相應於該第二微指令,該執行管線:對該第一結果和第二來源運算元執行該第二操作以產生該第二結果,並依據該第二結果產生新的條件旗標值; 在該些架構條件旗標滿足該條件之情況下,利用該非架構進位旗標值更新該架構進位旗標,並且利用所產生之新的條件旗標值更新至少一個相對應之其他架構條件旗標;以及在該些架構條件旗標不滿足該條件之情況下,利用該架構條件旗標當前的值更新該架構條件旗標。
  83. 如申請專利範圍第82項之電腦程式產品,其中該至少一電腦可讀取儲存媒介係選自由碟片、磁帶、或是其他磁性、光學或電子之儲存媒介以及網路、纜線、無線或其他通訊媒介所構成之一群組。
TW101112249A 2011-04-07 2012-04-06 具有條件指令之微處理器、其處理方法及電腦程式產品 TWI450188B (zh)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US201161473069P 2011-04-07 2011-04-07
US201161473067P 2011-04-07 2011-04-07
US201161473062P 2011-04-07 2011-04-07
US13/224,310 US8880851B2 (en) 2011-04-07 2011-09-01 Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US201161537473P 2011-09-21 2011-09-21
US13/333,520 US9032189B2 (en) 2011-04-07 2011-12-21 Efficient conditional ALU instruction in read-port limited register file microprocessor
US13/333,572 US8880857B2 (en) 2011-04-07 2011-12-21 Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US13/333,631 US8924695B2 (en) 2011-04-07 2011-12-21 Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor

Publications (2)

Publication Number Publication Date
TW201241741A TW201241741A (en) 2012-10-16
TWI450188B true TWI450188B (zh) 2014-08-21

Family

ID=45878018

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101112249A TWI450188B (zh) 2011-04-07 2012-04-06 具有條件指令之微處理器、其處理方法及電腦程式產品

Country Status (3)

Country Link
EP (4) EP2624126B1 (zh)
CN (2) CN105468333B (zh)
TW (1) TWI450188B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9772848B2 (en) 2014-11-14 2017-09-26 Intel Corporation Three-dimensional morton coordinate conversion processors, methods, systems, and instructions
US9772849B2 (en) 2014-11-14 2017-09-26 Intel Corporation Four-dimensional morton coordinate conversion processors, methods, systems, and instructions
US9772850B2 (en) 2014-11-14 2017-09-26 Intel Corporation Morton coordinate adjustment processors, methods, systems, and instructions

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI488246B (zh) * 2012-10-19 2015-06-11 Star Techn Inc 資源整合及晶片測試方法
US9639371B2 (en) * 2013-01-29 2017-05-02 Advanced Micro Devices, Inc. Solution to divergent branches in a SIMD core using hardware pointers
EP3060979B1 (en) * 2013-10-25 2020-08-05 Advanced Micro Devices, Inc. Processor and methods for immediate handling and flag handling
KR102332478B1 (ko) * 2013-10-27 2021-11-30 어드밴스드 마이크로 디바이시즈, 인코포레이티드 부동 소수점 레지스터 앨리어싱을 위한 프로세서 및 방법들
CN103853526B (zh) * 2014-02-20 2017-02-15 清华大学 可重构处理器及可重构处理器的条件执行方法
US10203960B2 (en) 2014-02-20 2019-02-12 Tsinghua University Reconfigurable processor and conditional execution method for the same
CN103885814B (zh) * 2014-03-20 2017-05-17 百度在线网络技术(北京)有限公司 在x86架构上运行ARM APK的模拟器装置和方法
TWI553484B (zh) * 2014-04-01 2016-10-11 Nat Univ Chung Cheng 前瞻臆測處理裝置及其處理方法
US10514911B2 (en) 2014-11-26 2019-12-24 International Business Machines Corporation Structure for microprocessor including arithmetic logic units and an efficiency logic unit
CN106599992B (zh) * 2015-10-08 2019-04-09 上海兆芯集成电路有限公司 以处理单元群组作为时间递归神经网络长短期记忆胞进行运作的神经网络单元
GB2543304B (en) * 2015-10-14 2020-10-28 Advanced Risc Mach Ltd Move prefix instruction
CN106406814B (zh) * 2016-09-30 2019-06-14 上海兆芯集成电路有限公司 处理器和将架构指令转译成微指令的方法
CN110209426B (zh) * 2019-06-19 2021-05-28 上海兆芯集成电路有限公司 指令执行方法及指令执行装置
CN111142940B (zh) * 2019-12-23 2023-06-30 成都海光微电子技术有限公司 处理器与软件的适配方法、装置、处理器、芯片和设备
CN111679856B (zh) * 2020-06-15 2023-09-08 上海兆芯集成电路股份有限公司 高效能复杂指令译码的微处理器
CN112184536B (zh) * 2020-09-24 2022-09-30 成都海光集成电路设计有限公司 基于gemm处理图像数据的方法、装置、设备和介质
CN112579170B (zh) * 2020-12-10 2022-11-08 海光信息技术股份有限公司 一种用于减少虚拟地址计算的处理器及其方法
CN114265593B (zh) * 2021-12-09 2022-11-22 北京奕斯伟计算技术股份有限公司 指令调度方法、装置、设备及计算机可读存储介质
CN114661355B (zh) * 2022-05-24 2022-12-02 深圳市智想科技有限公司 Risc架构处理器的寄存器架构、寄存器组及risc架构处理器

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5638525A (en) * 1995-02-10 1997-06-10 Intel Corporation Processor capable of executing programs that contain RISC and CISC instructions
US6611909B1 (en) * 1997-12-02 2003-08-26 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for dynamically translating program instructions to microcode instructions
TW594570B (en) * 2003-04-15 2004-06-21 Sunplus Technology Co Ltd Processor for executing conditional instruction and the method thereof
TWI237795B (en) * 2003-06-11 2005-08-11 Via Tech Inc Method and system for terminating unnecessary processing of a conditional instruction in a processor
US7237098B2 (en) * 2003-09-08 2007-06-26 Ip-First, Llc Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
TWI288351B (en) * 2004-02-04 2007-10-11 Via Tech Inc Pipelined microprocessor, apparatus, and method for performing early correction of conditional branch instruction mispredictions

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5832205A (en) 1996-08-20 1998-11-03 Transmeta Corporation Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
GB2355084B (en) * 1999-07-21 2004-04-28 Element 14 Ltd Setting condition values in a computer
US20040148496A1 (en) * 2003-01-27 2004-07-29 Thimmannagari Chandra Mohan Reddy Method for handling a conditional move instruction in an out of order multi-issue processor
US9977674B2 (en) * 2003-10-14 2018-05-22 Intel Corporation Micro-operation generator for deriving a plurality of single-destination micro-operations from a given predicated instruction
CN1302379C (zh) * 2003-12-12 2007-02-28 上海奇码数字信息有限公司 条件控制管理装置及方法
WO2006010872A1 (en) 2004-07-27 2006-02-02 Arm Limited Handling of conditional instructions in a data processing apparatus
US7210024B2 (en) * 2005-02-10 2007-04-24 Qualcomm Incorporated Conditional instruction execution via emissary instruction for condition evaluation
US8555039B2 (en) * 2007-05-03 2013-10-08 Qualcomm Incorporated System and method for using a local condition code register for accelerating conditional instruction execution in a pipeline processor
US7793079B2 (en) * 2007-06-27 2010-09-07 Qualcomm Incorporated Method and system for expanding a conditional instruction into a unconditional instruction and a select instruction
US8069339B2 (en) * 2009-05-20 2011-11-29 Via Technologies, Inc. Microprocessor with microinstruction-specifiable non-architectural condition code flag register

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5638525A (en) * 1995-02-10 1997-06-10 Intel Corporation Processor capable of executing programs that contain RISC and CISC instructions
US6611909B1 (en) * 1997-12-02 2003-08-26 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for dynamically translating program instructions to microcode instructions
TW594570B (en) * 2003-04-15 2004-06-21 Sunplus Technology Co Ltd Processor for executing conditional instruction and the method thereof
TWI237795B (en) * 2003-06-11 2005-08-11 Via Tech Inc Method and system for terminating unnecessary processing of a conditional instruction in a processor
US7237098B2 (en) * 2003-09-08 2007-06-26 Ip-First, Llc Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
TWI288351B (en) * 2004-02-04 2007-10-11 Via Tech Inc Pipelined microprocessor, apparatus, and method for performing early correction of conditional branch instruction mispredictions

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9772848B2 (en) 2014-11-14 2017-09-26 Intel Corporation Three-dimensional morton coordinate conversion processors, methods, systems, and instructions
US9772849B2 (en) 2014-11-14 2017-09-26 Intel Corporation Four-dimensional morton coordinate conversion processors, methods, systems, and instructions
US9772850B2 (en) 2014-11-14 2017-09-26 Intel Corporation Morton coordinate adjustment processors, methods, systems, and instructions

Also Published As

Publication number Publication date
EP2508979B1 (en) 2018-10-10
TW201241741A (en) 2012-10-16
CN105468333A (zh) 2016-04-06
EP2508980B1 (en) 2018-02-28
CN102707927A (zh) 2012-10-03
EP2508980A1 (en) 2012-10-10
EP2508979A3 (en) 2013-01-02
CN102707927B (zh) 2016-02-03
EP2624126B1 (en) 2016-11-02
EP2508981A1 (en) 2012-10-10
EP2624126A1 (en) 2013-08-07
EP2508979A2 (en) 2012-10-10
CN105468333B (zh) 2018-04-06
EP2508981B1 (en) 2018-10-10

Similar Documents

Publication Publication Date Title
TWI450188B (zh) 具有條件指令之微處理器、其處理方法及電腦程式產品
TWI470548B (zh) 具有條件指令之微處理器、其處理方法及電腦程式產品
TWI450196B (zh) 非循序執行微處理器之條件儲存指令
US9898291B2 (en) Microprocessor with arm and X86 instruction length decoders
TWI514266B (zh) 可執行x86指令集架構及ARM指令集架構機器語言程式指令的微處理器及其運作方法與編碼於一計算機裝置的至少一非暫態電腦可使用媒體中的電腦程式產品
US9274795B2 (en) Conditional non-branch instruction prediction
US8880857B2 (en) Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US9317288B2 (en) Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US8924695B2 (en) Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
CN107832083B (zh) 具有条件指令的微处理器及其处理方法
US9141389B2 (en) Heterogeneous ISA microprocessor with shared hardware ISA registers
US9043580B2 (en) Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
US9032189B2 (en) Efficient conditional ALU instruction in read-port limited register file microprocessor
US9146742B2 (en) Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA
TWI569205B (zh) 一種微處理器及其操作方法
TWI478065B (zh) 執行模式備份暫存器之模擬