TWI514266B - 可執行x86指令集架構及ARM指令集架構機器語言程式指令的微處理器及其運作方法與編碼於一計算機裝置的至少一非暫態電腦可使用媒體中的電腦程式產品 - Google Patents
可執行x86指令集架構及ARM指令集架構機器語言程式指令的微處理器及其運作方法與編碼於一計算機裝置的至少一非暫態電腦可使用媒體中的電腦程式產品 Download PDFInfo
- Publication number
- TWI514266B TWI514266B TW101112325A TW101112325A TWI514266B TW I514266 B TWI514266 B TW I514266B TW 101112325 A TW101112325 A TW 101112325A TW 101112325 A TW101112325 A TW 101112325A TW I514266 B TWI514266 B TW I514266B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- microprocessor
- set architecture
- instruction set
- arm
- Prior art date
Links
- 238000004590 computer program Methods 0.000 title claims 7
- 238000011017 operating method Methods 0.000 title 1
- 238000000034 method Methods 0.000 claims description 33
- 238000013519 translation Methods 0.000 claims description 21
- 238000012545 processing Methods 0.000 claims description 13
- 230000008859 change Effects 0.000 claims description 9
- 239000004065 semiconductor Substances 0.000 claims description 5
- 230000015572 biosynthetic process Effects 0.000 claims description 3
- 238000003786 synthesis reaction Methods 0.000 claims description 3
- 230000008439 repair process Effects 0.000 claims description 2
- 230000007613 environmental effect Effects 0.000 description 23
- 230000006870 function Effects 0.000 description 19
- 230000014616 translation Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 15
- 239000000872 buffer Substances 0.000 description 10
- 230000004044 response Effects 0.000 description 9
- 230000008901 benefit Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 6
- 238000003860 storage Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 101100126955 Arabidopsis thaliana KCS2 gene Proteins 0.000 description 3
- 241000132023 Bellis perennis Species 0.000 description 3
- 235000005633 Chrysanthemum balsamita Nutrition 0.000 description 3
- JIGDOBKZMULDHS-UHFFFAOYSA-N cyanogenosin-RR Natural products N1C(=O)C(CCCN=C(N)N)NC(=O)C(C)C(C(O)=O)NC(=O)C(CCCN=C(N)N)NC(=O)C(C)NC(=O)C(=C)N(C)C(=O)CCC(C(O)=O)NC(=O)C(C)C1C=CC(C)=CC(C)C(OC)CC1=CC=CC=C1 JIGDOBKZMULDHS-UHFFFAOYSA-N 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 210000003811 finger Anatomy 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- JIGDOBKZMULDHS-UUHBQKJESA-N microcystin RR Chemical compound C([C@H](OC)[C@@H](C)\C=C(/C)\C=C\[C@H]1[C@@H](C(=O)N[C@H](CCC(=O)N(C)C(=C)C(=O)N[C@H](C)C(=O)N[C@@H](CCCN=C(N)N)C(=O)N[C@H]([C@H](C)C(=O)N[C@@H](CCCN=C(N)N)C(=O)N1)C(O)=O)C(O)=O)C)C1=CC=CC=C1 JIGDOBKZMULDHS-UUHBQKJESA-N 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 229910052754 neon Inorganic materials 0.000 description 3
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 3
- 230000008707 rearrangement Effects 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 102220510525 Retinoic acid receptor alpha_R14D_mutation Human genes 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 210000003813 thumb Anatomy 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- CXENHBSYCFFKJS-OXYODPPFSA-N (Z,E)-alpha-farnesene Chemical compound CC(C)=CCC\C(C)=C\C\C=C(\C)C=C CXENHBSYCFFKJS-OXYODPPFSA-N 0.000 description 1
- 101100494729 Syncephalastrum racemosum SPSR gene Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 238000007664 blowing Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000000763 evoking effect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000008450 motivation Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
- 230000002195 synergetic effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
- G06F9/441—Multiboot arrangements, i.e. selecting an operating system to be loaded
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/82—Architectures of general purpose stored program computers data or demand driven
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
- G06F9/26—Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
- G06F9/262—Arrangements for next microinstruction selection
- G06F9/264—Microinstruction selection based on results of processing
- G06F9/265—Microinstruction selection based on results of processing by address selection on input of storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4403—Processor initialisation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Description
本發明係有關於一種微處理器,尤指一種關於多重指令集架構的支援。
由美國加州聖克拉拉的Intel公司所獨創地開發的x86處理器架構,以及由英國劍橋的ARM公司所獨創地開發的進階精簡指令集機器(Advanced RISC Machines,ARM)架構,皆是計算機技術領域所熟知。許多計算機系統包括ARM處理器或x86處理器,而對它們的需求也迅速地增加。目前,ARM架構處理核心的需求在計算機市場中的低功率及低成本部分似乎佔有主要的地位,例如手機、個人數位助理(PDA)、平板電腦(tablet PCs)、網路路由器及集線器以及機上盒(例如蘋果公司的iPhone以及iPad的主要處理能力是由ARM架構處理器核心所提供)。而x86架構處理器在講求高效能及需要高成本的部分計算機市場中似乎佔有主要的地位,例如筆記型電腦、桌上型電腦及伺服器。然而,隨著ARM核心的效能增加以及x86處理器的某種模型的消耗功率及成本減少,不同市場的界線已明顯消失,且兩個架構即將互相對抗,一如行動電腦市場如智慧型手機般,而兩個架構很可能即將在筆記型電腦、桌上型電腦及伺服器的市場上更頻繁地對抗。
這種情況造成電腦元件製造商及消費者對於兩個架構中何者佔有優勢而處於兩難,特別是兩個架構軟體開發者為此將開發更多的軟體。舉例來說,一些企業用戶每個月或每年購買非常大量的電腦系統,這些企業用戶因為大量購買相同系統以及簡化系統維持及維修的成本效益,將非常積極地購買相同組態的系統。然而,這些大企業用戶的使用者對單一設置的電腦具有不同的計算需求。更具體地來說,一些有計算需求的使用者想要在一ARM架構處理器上執行軟體,而另一些有計算需求的使用者想要在x86架構處理器上執行軟體,甚至還有一些想要在兩者架構處理器上執行軟體。更進一步地來說,新的先前未預料到對一個架構或另一個架構的計算需求也可能出現。在這些情況下,這些大企業用戶所做的龐大的投資的一部份可能已經浪廢掉。舉另一個例子來說,一特定的使用者可能有一重要的應用程式,該運用只能在x86架構上執行,因此該使用者購買x86架構系統,但是其後應用程式的版本是為ARM架構而開發,其優於x86的版本(反之亦然),因此使用者想要切換版本,單不幸的是,使用者已經對他不偏好的架構投入金錢。更進一步地來說,一個特定的使用者已經對應用軟體投資,該應用軟體僅能在ARM架構上執行,然而使用者欲將應用軟體使用於其他已經為x86開發的領域,該領域並未存在ARM架構的應用、或是有優於為ARM架構所開發的軟體(反
之亦然)。值得注意的是,儘管小企業用戶或個人使用者對應用軟體的投資可能沒有大企業用戶在數量級上來得多,然而,浪費的投資相對地可能要來得多。許多投資的浪費的其他類似的例子,在多變的電腦元件市場中從佔有優勢之市場切換至另一者時可能存在或出現,例如從x86架構切換到ARM架構,反之亦然。最後,電腦元件製造商,例如原始設備製造商(Original Equipment Manufacture,OEM)在新產品上投入大量的資源。製造商亦將陷入兩難,且如果他們開發並製造了大量的圍繞x86或ARM架構的系統,將可能浪費掉一些他們寶貴的開發資源,然後使用者的需求突然地相對地改變。
對電腦元件的製造商及消費者來說,可以不在乎兩個架構中的哪一個盛行而保有他們的投資資源是有益的。因此,一種解決方案是有必要的,其允許系統製造商開發一種電腦元件,該電腦元件可以讓使用者執行x86架構及ARM架構的程式。
一種可執行一種以上指令集的程式的系統的需求已長久存在,主要是因為顧客可能作出重要的投資在一種軟體上,該軟體只能在舊的硬體上執行,其指令集不同於新的硬體的指令集。舉例來說,IBM System/360 Model 30包含一個IBM System 1401相容性特徵,可減緩轉換至高效能及功能增強的system/360的痛苦。Model 30包含System/360以及System/1401唯讀儲存器(Read Only Storage,ROS)控制器,如果輔助儲存器
(Auxiliary Storage)預先載入需要的資訊的話,其可用於1401模式。此外,在開發高階語言的軟體時,硬體開發者對該軟體在舊硬體上編譯可能有很少或是無法控制,且軟體開發者可能沒有動機為了新的硬體去重新編譯原始碼,特別是如果軟體開發者與硬體開發者不是屬於同一個企業用戶時。Silberman以及Ebcioglu提出一種增進現行的("基底(base)")複雜指令集電腦(Complex Instruction Set Computer,CISC)架構(例如IBMS/390)的軟體的技術,其藉由將該軟體執行於一個精簡指令集電腦(Reduced Instruction Set Computer,RISC)、超純量、以及超長指令字(Very Long Instruction Word,VLIW)架構("原生(native)")之系統上,並藉由包含一個執行原生碼(native code)的原生引擎以及一個執行基底目標碼(object code)的遷移引擎(migrant engine),其取決於將目標碼譯為原始碼的譯碼軟體的有效性,而視需要切換於多種編碼之間,可參考「"An Architectural Framework for Support Heterogeneous Instruction-Set Architecture," Siberman and Ebcioglu Computer,June 1993,No.6.Van Dykeet al
.」,其揭露一種具有執行管線(execution pipeline)的處理器,以執行原生RISC程式指令且亦透過硬體轉譯及軟體轉譯的結合將x86程式指令譯為原生RISC指令,此技術亦揭露於2006/5/16所公告的美國專利號7,047,394之中。Nakada等人亦提出一種異質同步多執行緒處
理器(Simultaneous Multi-threading Processor,SMT),其具有針對不規則程式(例如OS)的進階RISC機器(Advanced RISC Machine,ARM)架構前端管線(front-end pipeline),以及針對多媒體應用程式的Fujitsu FR-V VLIW架構前端管線,其提供具有附加VLIW佇列(queue)的FR-V VLIW後端管線(back-end pipeline),以保持來自前端管線的指令,可參考「"OROCHI:A Multiple Instruction Set SMT Processor," Proceeding of the First International Workshop on New Frontiers in High-performance and Hardware-aware Computing(HipHaC' 08),Lake Como,Italy,November 2008(In conjunction with MICRO-41),Buchty and Weib,eds,Universitatsverlag Karlsruhe,ISBN 978-3-86644-298-6」。其所提出的方法是為了減少在異質系統晶片(System on Chip,SOC)裝置上的總系統覆蓋區(total system footprint),例如Texas Instruments OMAP包括一個ARM處理器核心加上一個或一個以上的協同處理器(co-processor,例如TMS320、各式各樣的數位訊號處理器或是各式各樣的GPUs),它們並不會共享指令執行資源,而是實質上以不同的處理核心整合於一個單一的晶片上。
軟體轉譯器(Software translator),亦或是軟體仿真器(Software emulator)、軟體模擬器(Software simulator)、動態二進制碼轉譯器及其類似者,亦可用來在不同架構的處理器上執
行另一架構的程式。一個眾所皆知的商業實施範例為Motorola 68K-to-PowerPC仿真器,其伴隨在Apple Macintosh電腦中,以允許68K程式在具有PowerPC處理器的Macintosh執行,且之後開發的PowerPC-to-x86仿真器可允許PowerPC程式在具有x86處理器的Macintosh執行。加州聖克拉拉的Transmeta公司將VLIW核心硬體耦接於一個以軟體為基底的指令轉譯器(參照"Code Morphing Software",其動態地編譯或仿真x86編碼序列以執行x86編碼。亦可參考1998/11/3公告由Kelly所申請的美國專利號No.5,832,205。來自Yorktown的IBM動態架構指令集(Dynamic Architected Instruction Set,DAISY)系統包括VLIW機器及動態二進制碼軟體轉譯器,用以提供100%軟體相容仿真給舊的架構。DAISY包含一個虛擬機器監視器(Virtual Machine Monitor)常駐在ROM裡,其平行化的處理並儲存VLIW圖元(primatives)至主記憶體的一部份,此部分係舊架構所無法看到,以避免在相同的舊架構編碼片段的後續實例(instance)上發生再轉譯(re-translation)的情形。DAISY包含快速的編譯最佳化演算法,以增加效能。QEMU為一個機器仿真器,其包含一軟體動態轉譯器。QEMU模仿不同主機上的一些CPU(例如x86 PowerPC、ARM、SPARC、Alpha以及MIP)。如其創作人所述,"動態轉譯係在運轉時執行目標CPU指令至主機指令集的轉換,所產生的二進制編碼的結果則儲存在一個
轉譯快速緩衝儲存器(cache)以供重複使用。QEMU相較於其他動態轉譯器簡單,因為QEMU將GNU C編譯器離線產生的機器編碼連成一串"。Fabrice Bellard,USENIX Association,FREENIX Track於2005 USENIX Annual Technical Conference所述:QEMU是一個快速且可攜帶的動態轉譯器,亦可參考Lee Wang Hao,University of Adelaide,June 19,2009的論文:"ARM Instruction Set Simulation on Multi-Core x86 Hardware"。然而,儘管以轉譯器為基底的軟體的解答可能針對計算需要的子集提供足夠的效能,其未必提供許多使用者需要的效能。
靜態的二進制轉碼為另一個其具有高效能的潛力的技術,然而仍有技術上的考量,例如自我修改程式碼(self-modifying code)、僅在電腦作業時才得知的相關數值的非直接分支(direct branch)、以及與靜態二進制轉譯有關的商業/法律障礙,例如硬體開發者為了新的程式需要開發途徑,以及對於原始程式分配者間潛在的授權許可及違反著作權的問題。
本發明的各種實施例將於以下描述,其藉由提出一單一處理器設計來解決前述所指出的需求,該設計可執行x86指令集架構(instruction set architecture,ISA)機器語言程式以及ARM指令集架構機器語言程式。
根據一實施例,本發明提供一微處理器。微處理器包含:
一硬體指令轉譯器,其將多個指令,包含多個x86指令集架構機器語言程式以及多個ARM指令集架構機器語言程式,轉譯為由該微處理器的一微指令集所定義的多個微指令。該些微指令的編碼方式係有別於由該些x86指令集架構及ARM指令集架構的指令集所定義的編碼方式。微處理器另包含一執行管線,耦接於該硬體指令轉譯器。該執行管線執行該些微指令,以產生由該些x86指令集架構及ARM指令集架構指令所定義的複數個執行結果。硬體指令轉譯器直接提供該些微指令至該執行管線以供執行,來產生由該些x86指令集架構及ARM指令集架構指令所定義的該些執行結果。
根據另一實施例,本發明提供一運作微處理器的方法,該微處理器包含一指標,該指標指示x86指令集架構或ARM指令集架構。該方法包含:確定該指標是指示該x86指令集架構或是ARM指令集架構之何者。該方法也包含:當該指標指示為該x86指令集架構時,依據該x86指令集架構將多個機器語言指令轉譯為多個微指令,當該指標指示為該ARM指令集架構時,依據該ARM指令集架構將多個機器語言指令轉譯為多個微指令。該些微指令是由該微處理器的一微指令集所定義,且該些微指令的編碼方式係有別於該x86指令集架構或是ARM指令集架構的該些指令集所定義的該些指令的編碼方式。該轉譯步驟是由該微處理器的一硬體指令轉譯器所執行。該方法也包含:
當該指標指示為該x86指令集架構時,執行該些微指令,以產生由該x86指令集架構所定義的複數個執行結果,當該指標指示為該ARM指令集架構時,執行該些微指令,以產生由該ARM指令集架構所定義的該些執行結果。執行步驟是由該微處理器的一執行管線所執行,該執行管線耦接於該硬體指令轉譯器。
根據另一實施例,本發明提供一微處理器。該微處理器包含多個暫存器,其維持該處理器的一架構狀態。該微處理器還包含一指標,其指示該微處理器的一啟動指令集架構為該x86指令集架構或該ARM指令集架構。該微處理器還包含一硬體指令轉譯器,其將多個x86 ISA指令及多個ARM指令集架構指令轉譯為多個微指令。該硬體指令轉譯器依據該啟動指令集架構之指示以轉譯該些初始指令集架構指令,該些初始指令集架構指令是該微處理器在接收一重置訊號後,從架構型記憶空間所讀取。該微處理器還包含一執行管線,其耦接於該硬體指令轉譯器。該執行管線執行該些微指令,以產生該些x86指令集架構及ARM指令集架構指令所定義的複數個執行結果。該微處理器因應該重置訊號,在該微處理器讀取該些初始指令集架構指令前,初始化位於該些暫存器中且由該啟動ISA定義的架構狀態。
根據另一實施例,本發明提供一種運作微處理器方法。該方法包含:偵測一微處理器的一已發送的重置訊號,其中該偵
測步驟是由該微處理器執行。該方法還包含:因應該偵測步驟來決定該微處理器的一已發送的重置訊號,確認該x86指令集架構以及該ARM指令集架構之中,哪一個是該微處理器的一指標所指示的該微處理器的一啟動指令集架構。該決定步驟是由該微處理器所執行。該方法還包含:初始化由該啟動指令集架構所定義的該微處理器的一架構狀態。該初始化步驟是由該微處理器所執行。該方法還包含:轉譯成多個微指令,該些微指令係該微處理器在該些初始ISA指令重置後,從架構型記憶空間所讀取之該些初始ISA指令。該轉譯步驟是由該微處理器的一硬體指令轉譯器所執行。該方法還包含:執行該些微指令,以產生該初始指令集架構所定義的複數個執行結果。該執行步驟是由該微處理器的一執行管線所執行,該執行管線耦接於該硬體指令轉譯器。
根據另一實施例,本發明提供一微處理器。該微處理器包含一指令快取儲存器,其將多個指令存入快取儲存器,該些指令包含多個x86指令集架構機器語言程式以及多個ARM指令集架構機器語言程式。該微處理器還包含一硬體指令轉譯器,其耦接於該指令快取儲存器。該硬體指令轉譯器從該指令快取儲存器接收該些x86指令集架構及ARM指令集架構指令,並因應地將該些x86指令集架構及ARM指令集架構指令轉譯成多個微指令,其中該些微指令的編碼方式係有別於由該些x86指令集
架構及ARM指令集架構的指令集所定義的編碼方式。該微處理器還包含一執行管線,其耦接於該硬體指令轉譯器。該執行管線執行該些微指令,以產生由該些x86指令集架構及ARM指令集架構指令所定義的複數個執行結果。
根據另一實施例,本發明提供一微處理器。該處理器包含一硬體指令轉譯器,其將多個指令轉譯為多個微指令,該些指令包含多個x86指令集架構機器語言程式以及多個ARM指令集架構機器語言程式,該些微指令由該微處理器的一微指令集定義,該些微指令的編碼方式係有別於由該x86指令集架構及ARM指令集架構的指令集所定義的編碼方式。該處理器還包含一執行管線,耦接於該硬體指令轉譯器。該執行管線執行該些微指令,以產生由該些x86指令集架構及ARM指令集架構指令所定義的複數個執行結果。該微處理器每一次執行該些x86指令集架構及ARM指令集架構指令的其中之一時,該硬體指令轉譯器將該指令集架構指令轉譯為該些微指令,以供該執行管線執行。
根據另一實施例,本發明提供一微處理器。該處理器包含一硬體指令轉譯器,其將多個指令轉譯為多個微指令,該些指令包含多個x86指令集架構機器語言程式以及多個ARM指令集架構機器語言程式,該些微指令由該微處理器的一微指令集定義,該些微指令的編碼方式係有別於由該x86指令集架構
及ARM指令集架構的指令集所定義的編碼方式。該處理器還包含一執行管線,耦接於該硬體指令轉譯器。該執行管線執行該些微指令,以產生由該些x86指令集架構及ARM指令集架構指令所定義的複數個執行結果。由該硬體指令轉譯器提供給該執行管線的該些微指令係有別於該執行管線執行該些微指令所產生的該些執行結果。
指令集定義為一組二進制編碼值對應到微處理器執行的運算的映射(mapping),其中該二進制編碼值為機器語言指令。典型地,機器語言程式以二進制編碼,儘管可能採用其他系統,例如一些較舊的IBM電腦的機器語言程式以十進位編碼,雖然他們最終以物理訊號的集合來呈現,而該些物理訊號包含的偵測電壓為二進制的值。舉例來說,操作機器語言指令可命令微處理器執行如下述:將第一暫存器的運算元加至第二暫存器的運算元,並將執行結果寫入第三暫存器、將記憶體位址0x12345678中的運算元減去指令規範的直接運算元,並將執行結果寫入第五暫存器、以第七暫存器內的位元個數位移第六暫存器內的值、如果在該指令後0旗標被設定,分支到36位元後之指令、從記憶體位址0xABCD0000載入該值至暫存器8。如此,指令集定義的二進制值是每個機器語言指令必定
使微處理器去執行所需的運算。可理解的是,指令集定義的二進制值對應到微處理器運算的映射,並非意味著單一二進制值映射到單一微處理運算。更具體來說,一些指令集中,複數個二進制值可能映射到相同的微處理運算。
指令集架構(Instruction set architecture,ISA),在微處理器的家族的關係環境(context)中,包括(1)一個指令集(2)一個資源集(例如暫存器或記憶體中的定址模式),該資源集是透過指令集的指令來存取,以及(3)一個例外集(set of exceptions),該例外集是由微處理器對應於指令集的指令處理結果所產生,該指令處理結果例如除以零、頁面錯誤(page fault)、違反記憶體保護。由於程式設計師,例如組合程式設計師或編譯師,欲產生一機器語言程式可在微處理器家族上執行,因此微處理器家族的製造商典型上會在程式設計者手冊中定義ISA。舉例來說,在ISA出版的同時,在2009年3月Intel 64以及IA-32架構軟體開發者的手冊(包括5卷,即第1卷:基礎架構,第2A卷:指令集參考A-M,第2B卷:指令集參考N-Z,第3A卷:系統程式編寫導引,第3B卷:系統程式編寫導引之第2部),藉此為各種目的將全部的內容以參考資料的方式合併於本文,以定義Intel 64以及IA-32處理器架構,這對於參考x86架構以及文中的x86、x86 ISA、x86 ISA家族、x86家族或相似者是常見的。舉另一個例子來說,當ARM架構參考手冊於2010年出
版的同時,ARM v7-A以及ARM v7-R版本錯誤標示,為各種目的將全部的內容以參考資料的方式合併於本文,以定義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處理器家族的使用期限中,製造商可能藉由增加新的指令至指令集及/或增加新的暫存器至架構暫存器集,來增強家族中的原始處理器的ISA。舉例詳述之,在x86 ISA發展過程中,作為SSE延伸的一部份的一組128位元XMM暫存器曾被引入Intel Pentium III處理器家族,而且x86 ISA機器語言程式也被發展為使用XMM暫存器以增加效能,儘管現今的x86 ISA機器語言程式已不使用SSE延伸的XMM暫存器。此外,其他製造商已經設計且製造出可執行x86 ISA機器語言程式的微處理器。舉例來說,AMD(Advanced Micro Devices)以及威盛電子(VIA)已將新的特徵,例如AMD 3DNOW!SIMD向量處理指令以及VIA掛鎖安全引擎隨機數字產生器(Padlock Security Engine random number generator)及進階解碼引擎特徵,其中的每一個皆是由一些x86 ISA機器語言程式所使用,但在現今的Intel微處理器中已不使用它們。以其他例子更詳盡地說明,
ARM ISA原本定義ARM指令集狀態包括4位元的指令。然而,ARM ISA逐漸發展為用來以2位元指令來增加Thumb指令集狀態,以增加編碼的密度、Jazelle指令集狀態則用來加速Java位元編碼程式,且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指令定義的一執行結果。因此,硬體指令轉譯器可說是將ISA
指令轉譯成一或多個執行微指令。目前之揭露描述一微處理器的多個實施例,該微處理器包含一硬體指令轉譯器,其將x86 ISA指令及ARM ISA指令轉譯成微指令。需注意的是,該硬體指令轉譯器不一定要能轉譯由x86程式設計者之手冊或ARM程式設計者之手冊定義的全部指令集,只要能轉譯該些指令的一子集(subset),因為大多數的x86 ISA及ARM ISA處理器只支援該些指令的一子集,其由為他們各自的程式設計者之手冊所定義之。較特別的是,由x86程式設計者之手冊定義、且由硬體指令轉譯器轉譯的該指令子集,不一定要對應任何仍存在的x86 ISA處理器,而由ARM程式設計者之手冊定義、且由硬體指令轉譯器轉譯的該指令子集,不一定要對應任何仍存在的ARM ISA處理器。
執行管線係為一多個階段之序列,其中各階段包含硬體邏輯及一硬體暫存器,用以保持該硬體邏輯的輸出,以依據微處理器的一時脈序號,提供至該序列的下一階段。該執行管線可包含多個如此的階段之序列,亦即,多種管線。該執行管線接收輸入微指令,然後回應地執行由微指令規範的運算,以輸出執行結果。各種的管線的該硬體邏輯執行由微指令規範的運算,其可包括,但不侷限於,算數、邏輯、記載存取、比較、測試及分支解析,並且在各種資料格式上執行運算,其可包括,但不侷限於,整數、浮點數、字元、二進碼十進數(BCD)
及壓縮。該執行管線執行微指令,其執行一ISA指令(例如x86及ARM),以產生由ISA指令定義的執行結果。該執行管線不同於硬體指令轉譯器;較特別地是,該硬體指令轉譯器產生該些將執行的微指令,而執行管線執行它們;此外,該執行管線不產生該些將執行的微指令。
指令快取儲存器(instruction cache)係為一隨機存取記憶裝置,位於一微處理器中,該微處理器將一ISA機器語言程式(例如x86 ISA及ARM ISA機器語言指令)之指令放置於該隨機存取記憶裝置中,該些指令係直接從系統記憶體取出,並被微處理器於執行ISA機器語言程式中執行。較特別地是,ISA定義一指令位址暫存器,其維持下一個要執行的ISA指令的記憶體位址(舉例而言,經由x86 ISA定義為一指令指標(instruction pointer,IP),且經由ARM ISA定義為一程式計數器(program counter,PC)),且當微處理器執行機器語言程式,微處理器更新指令位址暫存器之內容以控制程式的流程。為了達成基於指令位址暫存器之內容以在該機器語言程式流程中的下一時間裡,能相較於從系統記憶體中更為快速地從指令快取儲存器中取用ISA指令的目的,暫存器維持一目前於指令快取儲存器中的ISA指令的記憶位址。特別地是,一指令快取儲存器所存取是基於維持於指令位址暫存器(例如IP或PC)中的記憶體位址,而非基於由一單獨或儲存指令所規範的一記憶體位址。是以,將ISA指令
維持為資料的一專用資料快取儲存器--例如可存在於一執行一軟體轉譯器的系統之硬體部分--其只能基於一讀取/儲存位址來存取而非基於一指令位址暫存器數值的話,就不是一指令快取儲存器。此外,一個可快取指令及資料兩者的統一規格的快取儲存器,亦即,其基於一指令位址暫存器數值以及一讀取/儲存位址來存取,而非只是基於一讀取/儲存位址者亦被包含在本發明實施例中。在本文中,一讀取指令係為一指令,其從記憶體讀取資料至微處理器,而一儲存指令係為一指令,其從微處理器寫入資料至記憶體中。
微指令集係為多個指令(微指令)的組合,該些指令(微指令)係可被微處理器的執行管線執行。
為進一步說明各實施例,本發明乃提供有圖式,此些圖式為本發明揭露內容之一部分,其主要係用以說明實施例,並可配合說明書之相關描述來解釋實施例的運作原理。配合參考這些內容,本領域具通常知識者應能理解其他可能的實施方式以及本發明之優點。因此,本發明不限於以下顯示及描述的實施例,然應授予符合下述操作原理及新穎特徵的最廣範圍。
本揭露書揭露一種微處理器的實施例,可由硬體分別將x86以及ARM ISA指令轉譯為微指令來執行x86以及ARM
ISA機器語言程式,其是藉由該微處理器的一個執行管線直接執行,該微指令由係有別於x86及ARM ISA的微處理器的微架構的微指令集定義。如本發明實施例所述的微處理器執行x86以及ARM ISA機器語言程式,微處理器的硬體指令轉譯器將x86及ARM指令轉譯為微指令,且將微指令提供給微處理器的執行管線,該執行管線執行該微指令以實現x86及ARM指令。有利的是,微處理器執行x86及ARM機器指令程式的速度可能相較於使用一軟體轉譯器的系統來得快,這是因為即將執行的微指令是由硬體指令轉譯器直接提供至執行管線,而非如軟體轉譯器系統在執行管線執行之前將主機指令儲存至記憶體。
參考第1圖,其繪示本發明微處理器的一實施例之方塊圖。如第1圖所示,微處理器100可執行x86及ARM ISA機器語言程式。微處理器100包括一指令快取儲存器102、一硬體指令轉譯器104、一執行管線112、一暫存器檔案106、一記憶體子系統108、一指令讀取單元及分支預測單元114、一由ARM ISA定義的程式計數器(ARM ISA-defined program counter,ARM PC)暫存器116(以下稱ARM ISA定義程式計數器)、一由x86 ISA定義的指令指標(x86 ISA-defined instruction pointer,x86 IP)118(以下稱x86 ISA定義指令指標)以及組態暫存器122,其中硬體指令轉譯器104用以接收來自指令快取儲
存器102的x86 ISA指令及ARM ISA指令124,並將x86 ISA指令及ARM ISA指令124轉譯為微指令126;執行管線112用以接收來自硬體指令轉譯器104的微指令126,並執行微指令126以產生微指令執行結果128,微指令執行結果128傳送回執行管線112,以作為運算元;暫存器檔案106及記憶體子系統108中的每一個提供運算元至執行管線112,且接收微指令執行結果128;指令讀取單元及分支預測單元114提供一讀取位址134至指令快取儲存器;ARM PC 116及x86 IP 118以微指令執行結果128來更新,且其內容提供至指令讀取單元及分支預測器114;組態暫存器122提供一指令模式指標132及一環境模式指標136至硬體指令轉譯器104及指令讀取單元及分支預測器114,且其是由微指令執行結果128更新。
當微處理器100執行x86 ISA及ARM ISA機器語言指令,其根據程式的流程讀取了來自系統記憶體(圖未示)的指令,微處理器100隨後將最新讀取的x86 ISA及ARM ISA機器語言指令儲存在指令快取儲存器102中。指令讀取單元及分支預測器114用以產生一讀取位址134,由此以讀取來自系統記憶體中的x86 ISA或ARM ISA指令124的一資料段(block)。指令快取儲存器102在該ISA指令124命中進該指令快取儲存器102時將位於讀取位址134的x86 ISA或ARM ISA指令124的資料段提供給硬體指令轉譯器104,否則由系統記憶體讀取
ISA指令124。指令讀取單元及分支預測器114根據ARM PC 116及x86 IP 118中的值來產生讀取位址134。更具體體地來說,指令讀取單元及分支預測器114將讀取位址保留在讀取位址暫存器中。每當指令讀取單元及分支預測器114讀取ISA指令124中的一個新的資料段,指令讀取單元及分支預測器114以該資料段的大小更新讀取位址,並且持續以這種方式直到控制流程事件(control flow event)發生。控制流程事件包括一個例外的產生、指令讀取單元及分支預測器114預測到分支將發生在所讀取的資料段中、以及對應於一非由指令讀取單元及分支預測器114所預測而取得的執行分支指令,由執行管線112對ARM PC 116及x86 IP 118進行更新。對應於一控制流程事件,指令讀取單元及分支預測器114將讀取位址分別更新為例外操作裝置位址、預測目標位址或執行目標位址。另一種實施例為,指令快取儲存器102是一個聯合快取儲存器,其儲存ISA指令124及資料。值得注意的是,在聯合快取儲存器的實施例中,儘管聯合快取儲存器的存取可能根據一個載入/儲存位址來讀取/寫入資料,但當微處理器讀取來自聯合快取儲存器的ISA指令124時,聯合快取儲存器的存取是依據ARM PC 116以及x86 IP 118的值,而非一載入/儲存位址。指令快取儲存器102可為一個隨機存取記憶體(random access memory,RAM)裝置。
指令模式指標132描述的是關於微處理器100是否正在讀取、格式化/解碼以及轉譯x86 ISA或ARM ISA指令124為微指令126的指標。此外,執行管線112及記憶體子系統108接收會影響執行該微指令126指令模式指標132,儘管只是微指令集中的相對小的子集。x86 IP 118維持下一個要執行的x86 ISA指令124的記憶體位址,且ARM PC 116維持執行下一個ARM ISA指令124的記憶體體位址。為了控制程式的流程,當微處理器100分別執行x86及ARM機器語言程式時,微處理器100更新x86 IP 118以及ARM PC 116為下一序列指令、分支位址指令的目標位址、或例外處理器位址。當微處理器100執行x86及ARM ISA機器語言程式的指令時,其讀取來自系統記憶體的機器語言程式的ISA指令,並將此ISA指令取代指令快取儲存器102中最近最少被讀取(less recently fetched)的指令,然後執行該ISA指令。指令讀取單元及分支預測器114依據指令模式指標132指出處理器100是否正在讀取x86或ARM模式中的ISA指令124,而根據x86 IP 118或ARM PC 116的值產生讀取位址134。根據一實施例,x86 IP 118及ARM PC 116可透過一共享硬體指令位址暫存器來架構,並提供其內容至指令讀取單元及分支預測器114,且由執行管線112根據x86或ARM的語義(semantics)來更新其內容,而該語意是基於指令模式指標132所指示的是x86或ARM模式。
環境模式指標136描述的是關於微處理器100是否將x86 ISA或ARM ISA語意運用於微處理器100運算的不同執行環境方面,例如虛擬記憶體、例外、快取器儲存器控制以及全域執行時間保護(global execution-time protection)之中。如此,指令模式指標132及環境模式指標136一同產生執行的多個模式。在第一模式中,指令模式指標132及環境模式指標136皆指示x86 ISA,微處理器100如同標準的x86 ISA處理器般的運作。在第二模式中,指令模式指標132及環境模式指標136皆指示ARM ISA,微處理器100如同標準的ARM ISA處理器般運作。在第三模式中,指令模式指標132指示x86 ISA,然而環境模式指標136指示ARM ISA,在ARM運算系統或超管理器(hypervisor)的控制下執行使用者模式x86機器語言程式可能較有利。相反地,在第四模式中,指令模式指標132指示ARM ISA,然而環境模式指標136指示x86 ISA,在x86運算系統或超管理器(hypervisor)的控制下執行使用者模式ARM機器語言程式可能較佳。指令模式指標132及環境模式指標136值在重置時被初始化地決定。在一實施例中,初始的值編碼為微編碼常數,但可能由燒毀熔絲所形成的組態及/或微編碼路徑所修正。另一實施例中,初始值由一外部輸入(external input)提供至微處理器100。在一實施例中,環境模式指標136僅可能在由一個重置至ARM(reset-to-ARM)指令124或重置至
x86(reset-to-x86)指令124(詳述如第6圖)所改變,也就是說,環境模式指標136可能不會在微處理器100的標準運算期間,在沒有重置微處理器100下做改變,而是藉由一標準重置或由reset-to-x86或reset-to-ARM指令124而改變。
硬體指令轉譯器104接收x86 ISA及ARM ISA機器語言指令124作為輸入,且對應地提供一個或多個微指令126以作為輸出,用以實現x86 ISA或ARM ISA指令124,此一個或多個即將由執行管線112所執行的微指令126將實現x86 ISA或ARM ISA指令124。換句話說,聚集執行(collective execution)將經由x86 ISA或ARM ISA指令124所規範的輸入,實現了由x86 ISA或ARM ISA指令124規範的運算,以產生由x86 ISA或ARM ISA指令124定義的複數個執行結果。如此,硬體指令轉譯器104將x86 ISA或ARM ISA指令124轉譯為一個或多個即將執行的微指令126。硬體指令轉譯器104包含一個預定安排的電晶體的集合,用以將x86 ISA及ARM ISA機器語言指令124轉譯為即將執行的微指令126。硬體指令轉譯器104亦可包括布林邏輯閘(即第2圖中的簡單指令轉譯器204),其用以產生即將執行的微指令126。根據一實施例,硬體指令轉譯器104亦可包括一微編碼唯讀記憶體(microcode ROM)(即第2圖中的複雜指令轉譯器206中的元件234),而硬體指令轉譯器104利用微編碼唯讀記憶體234對ISA指令124
以產生微指令126,第2圖將對此做更進一步之詳述。較佳地,硬體指令轉譯器104不需要轉譯由x86程式設計者手冊及ARM程式設計者手冊所定義的ISA指令124的所有指令集的能力,而僅需將ISA指令124的一子集轉譯的能力即可。更具體地來說,硬體指令轉譯器104所轉譯的由x86程式設計者手冊所定義的ISA指令124的子集並不需要對應至任何由Intel所開發且現存的x86 ISA處理器,而且硬體指令轉譯器104所轉譯的由ARM程式設計者手冊定義的ISA指令124亦不需要對應至任何由ARM公司所開發且現存的ISA處理器。執行相關於x86 ISA或ARM ISA指令124的一個或多個即將執行的微指令126可由硬體指令轉譯器104以一次或依序地的方式提供至執行管線112。有利的是,硬體指令轉譯器104直接地將微指令126提供至執行管線112,而不需要將他們儲存至記憶體。根據一實施例,在第1圖的微處理器100中,當微處理器100執行x86 ISA或ARM ISA指令124時,微處理器100每一次執行x86 ISA或ARM ISA指令124時,硬體指令轉譯器104將x86或ARM機器語言指令124轉譯為一個或多個即將執行的微指令126。然而另一個實施例,如第8圖所示,微處理器100採用一微指令快取儲存器,以避免微處理器100每一次執行x86 ISA或ARM ISA指令124時,發生再轉譯(re-translation)的情形。硬體指令轉譯器104的實施例將詳述
於第2圖。
執行管線112用已執行由硬體指令轉譯器104所提供的即將執行的微指令126。廣義地來說,執行管線112為一個一般用途高速微指令處理器,而微處理器100的其他部分,例如硬體指令轉譯器104用以執行大量x86/ARM所規範的功能,儘管該功能如本文所述,這部分理論上是由執行管線112所執行。根據一實施例,執行管線112用以執行來自硬體指令轉譯器104的暫存器重新命名、超純量的產生(superscalar issue)以及非循序微指令126的執行。執行管線112將對照第4圖詳述之。
微處理器100的微架構包括(1)微指令集;(2)由微指令集的微指令126所存取的資源集,其為x86 ISA及ARM ISA資源的超集合(superset);以及(3)例外集,該例外集是由微處理器100所定義,並對應微指令126的例外所產生,其為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 ISA及ARM ISA指令集所規範的運算有許多相同點(例如加、位移、載入、回傳),微指令集與x86 ISA或ARM ISA指令集之間的二進制運算碼值至運算(value-to-operation)的映射(mapping)不具有一對一的對應。如果二進制運算碼值到運算映射在微指令集及x86 ISA或ARM ISA指令集中恰巧是相同的,一般來說,它們之間仍不具有一對一的對應。第三,微指令集的微指令的欄位與x86 ISA或ARM ISA指令集的指令的欄位間不具有一對一的對應關係。
整體來說,微處理器100可執行x86 ISA及ARM ISA機器語言程式指令。然而,執行管線112不能執行x86 ISA及ARM ISA機器語言程式指令本身,而是能執行微處理器100的微架構的微指令集的微指令126,也就是由x86 ISA及ARM ISA指令所轉譯之指令。然而,儘管架構係有別於x86 ISA及ARM ISA,另一實施例中,微指令集以及其他微架構特有的資源可揭露予使用者,也就是說,在另一個實施例中,微架構可有效地作為x86 ISA及ARM ISA之外的第三ISA,並由微處理器100執行其機器語言程式。
下列表1描述根據本發明的微處理器100的一實施例的微
指令集的微指令126的一些欄位。
微處理器100亦包括一些微架構特定資源,例如微架構特定的一般用途暫存器、不為x86 ISA或ARM ISA所見的介質暫存器以及片段暫存器(例如用於暫存器重新命名或藉由微編碼)及控制暫存器、以及以下將詳述私有RAM(PRAM)。此外,微架構可產生例外,其可視為微例外(其並非由x86 ISA或
ARM ISA規範,故在x86 ISA或ARM ISA中不可見),以執行一微指令126及相關微指令126的一重新執行(replay),例如在以下情況:執行管線112假設載入命中(load hit)但發生載入錯誤因而重新執行該載入的微指令126;發生一TBL錯誤(miss),在分頁查詢(page table walk)以及TBL填滿之後,重新執行微指令126;在執行管線112標準化運算元之後,浮點微指令126接收一非規格化(denormal)的運算元,其推定為需要被重新執行的標準;執行一載入微指令126,但是在其之後偵測到一個與較舊位址產生碰撞(older address-colliding)的儲存微指令126,必須重新執行載入微指令126。可以理解的是,表1中所列的欄位、表2中所列的微指令以及微架構特定資源、及微架構特定的例外狀況僅為舉例而已,仍有其他情形未予以列舉。
暫存器檔案106可包括硬體暫存器,該硬碟暫存器藉由微指令126維持來源及/或目的運算元。執行管線112將其執行結果128寫入暫存器檔案106,並為微指令126接收來自暫存器檔案106的運算元。硬體暫存器指示由x86 ISA定義及由ARM ISA定義的暫存器。在一實施例中,許多由x86 ISA定義及由ARM ISA定義的一般用途暫存器共享一些暫存器檔案106的暫存器的實例(instances)。舉例來說,在一實施例中,暫存器檔案106只是15個32位元的暫存器,其由ARM ISA暫
存器R0至R14以及x86 ISA EAX至R14D暫存器所共享。如此,若一個第一微指令126寫入一個數值到ARM R2暫存器,然後隨後的第二微指令126在讀取x86 ECX暫存器將接收由第一微指令126所寫入的相同數值。如此有利於x86 ISA及ARM ISA機器語言程式透過多個暫存器進行快速溝通。舉例來說,假設在ARM機器語言運算系統所執行的ARM機器語言程式改變指令模式指標132的值為x86 ISA,且將控制權轉送至x86機器語言程式以執行一功能時可能會有利,因為x86可支援某些指令並可相較於在ARM ISA中較快地執行一特定的運算,而ARM程式可將需要的資料透過暫存器檔案106中的暫存器以提供給x86程式。相反地,x86程式可在暫存器檔案106的共享暫存器中提供執行結果,於是ARM程式將可在x86程式返回時看見它們。類似地,在x86機器語言運算系統下執行x86機器語言程式,可能改變指令模式指標132為ARM ISA,且將控制權傳送至ARM機器語言程式;x86程式可將需要的資料透過暫存器檔案106中的共享暫存器中給ARM程式,且ARM程式可在暫存器檔案106的共享暫存器中提供執行結果,於是x86程式將可看見由ARM程式返回的。第16個32位元暫存器,舉x86 R15D暫存器說明,其並執行結果非由ARM R15暫存器所共享,因為ARM R15為ARM PC暫存器116,其係獨立被運用之實例(sepratively instatiated)。此外,
在一實施例中32個32位元ARM VFPv3浮點暫存器共享x86的16個128位元XMM0到XMM15暫存器以及16個128位元的進階SIMD(“氖(Neon)”)暫存器的32位元部分。暫存器檔案106亦舉旗標暫存器(即為x86 EFLAGS暫存器及ARM條件旗標暫存器),且由x86 ISA及ARM ISA定義不同的控制及狀態暫存器為例,架構控制及狀態暫存器包括以x86架構模型規範的暫存器(Model Specific Registers,MSRs)及ARM保存的共同處理器(coprocessor)(8-15)暫存器。暫存器檔案106亦可舉非架構暫存器,例如使用於暫存器重新命名及微編碼唯讀記憶體234使用的非架構一般用途暫存器、以及非架構x86 MSRs及執行定義(implementation-defined)或供應商定義的ARM共同處理器暫存器。暫存器檔案106將對照第5圖詳述之。
記憶體子系統108包含一階層式快取儲存器(在一實施例中包含第一層(Level-1)指令快取儲存器102、第一層資料快取儲存器、以及共用的第二層(Level-2)快取儲存器)。記憶體子系統108亦包含不同的記憶體請求佇列,例如載入、儲存、填充、窺探(snoop)、寫入結合(write-combine)緩衝區。記憶體子系統108亦可包含一記憶體管理單元,其包含後援(lookaside)緩衝區(TLBs),其最好與指令與資料TLBs分開。記憶體子系統108也包含一表格通道引擎(table walk engine),用以因應於TLB錯誤的狀況來取得虛擬至實體的位址轉換。雖然所述者與第一圖
之所示不同,但指令轉譯快取儲存器102邏輯上也是記憶體子系統108的一部分。記憶體子系統108的配置為x86與ARM機器語言程式所共享的記憶空間,而x86與ARM機器語言程式可透過此記憶空間有效的進行溝通。
記憶體子系統108透過指令模式指標132以及環境模式指標136,而得知將在何種適當的ISA環境中執行不同的運算。舉例來說,記憶體子系統108可根據指令模式指標132指示x86或ARM ISA的情形來執行特定的記憶體存取違反確認(例如限制違反確認)。舉另一個例子來說,對應至環境模式指標136的變化,記憶體子系統108清除TLBs;然而,對應至指令模式指標132的變化,記憶體子系統108並不清除TLBs,而是在指令模式指標132與環境模式指標136其中的一個指示x86而另一個指示ARM時,藉由啟動上述的第三或第四模式中具有較佳執行成效者來達成所需。舉另一個例子,對應至一個TLB錯誤之情況,表格走道引擎執行分頁表搜尋,並根據環境模式指標136指示x86還是ARM ISA,來決定利用x86分頁表或ARM分頁表取出TLB。舉另一個例子,如果狀態指標136指示x86 ISA,則記憶體子系統108將檢查影響快取手段(例如CR0 CD以及NW位元)的x86 ISA控制暫存器的架構狀態;如果環境模式指標136指示ARM ISA,則記憶體子系統108檢查ARM ISA控制暫存器的架構狀態(例如SCTLR I以及
C位元)。舉另一個例子,如果狀態指標136指示x86 ISA,則記憶體子系統108將檢查影響記憶體管理(例如CR0 PG位元)的x86控制暫存器的架構狀態,其;如果環境模式指標136指示ARM ISA,則記憶體子系統108檢查適當的ARM ISA控制暫存器的架構狀態(例如SCTLR M位元)。舉另一個例子,如果狀態指標136指示x86 ISA,記憶體檢查影響對準檢查(alignment checking)(例如CR0 AM位元)的x86 ISA控制暫存器的架構狀態;如果環境模式指標136指示ARM ISA,則記憶體檢查適當的ARM ISA控制暫存器的架構狀態(例如SCTLR A位元)。舉另一個例子,如果狀態指標136指示s86 ISA,則記憶體子系統108(如同硬體指令轉譯器104因應優先指令)檢查指定當前優先級別(current privilege level,CPL)的x86 ISA控制暫存器的架構狀態;如果環境模式指標136指示ARM ISA,則記憶體子系統108檢查其指示使用者或優先模式的ARM ISA控制狀態器的架構狀態,。然而,在一實施例中,微處理器100的x86 ISA以及ARM ISA共享具有類似功能的控制位元/暫存器,而非對每一個ISA分別配置控制位元/暫存器。
儘管分開地顯示,組態暫存器122可視為暫存器檔案106的一部份。組態暫存器122包括一全域組態暫存器,在關於x86 ISA及ARM ISA的不同方面,其控制微處理器100的運算,例如致能或失效的不同特徵。全域組態暫存器可用以讓微
處理器100執行ARM ISA機器語言程式的能力失效,亦即使微處理器100成為一個x86專用的微處理器100,包括使有關其他ARM定義的能力失效,例如本文提到的啟動x86以及重置至x86指令124、以及此處所稱的由執行所定義的共同處理器暫存器。全域組態暫存器亦可用於使微處理器100執行x86 ISA機器語言程式的能力失效,亦即使微處理器100成為ARM專用的微處理器100,且使x86 ISA相關的能力失效,例如本文提到的啟動ARM以及重置至ARM指令124、以及此處所稱的新的非架構(non-architectural)MSRs。在一實施例中,微處理器100是伴隨著預設的組態設定(configuration setting)初始化地製造,例如在唯讀記憶體234中的寫入硬體編碼值,其為微編碼唯讀記憶體234在初始化時間時用來組態微處理器100,亦即寫入至全域組態暫存器122。然而,一些全域組態暫存器122是由硬體設定而非由微編碼唯讀記憶體234所設定。此外,微處理器100包括可由微編碼唯讀記憶體234所讀取的熔絲,其可藉由燒斷來修改預設組態值。在一實施例中,微編碼唯讀記憶體234讀取熔絲,並且以預定值及熔絲值來執行一互斥(exclusive-OR)運算,且使用該運算結果寫入全域組態暫存器122。再者,熔絲的修改效果可能由微編碼唯讀記憶體234之修補(patch)而達成。假設微處理器100可用以執行x86及ARM程式,則全域組態暫存器亦可被使用以
決定微處理器100(或對應至第7圖所述的多核心部分的中的微處理器100)於重置時將被啟動為x86或ARM微處理器、或對應至x86形式的INIT,其在對應至第6圖的說明詳述之。全域組態暫存器122亦可包括因應架構控制暫存器而提供的初始預設值的位元,舉例來說ARM ISA SCTLT以及CPACR暫存器。在一個多核心的實施例中,如對應至第7圖的說明所述,儘管每個核心是分開地組態,仍存在著一個單一的全域組態暫存器,舉例來說,可在指令模式指標132及環境模式指標136皆分別設定至x86或ARM而啟動為x86或ARM核心;此外,啟動ARM指令126及啟動x86指令126可用以動態地切換於x86及ARM指令模式指標132之間。在一實施例中,全域組態暫存器可透過x86 RDMSR指令讀取至一新的非架構MSR,且其中控制位元的一部份可透過x86 WRMSR指令讀取至新的非架構MSR,且全域組態暫存器可透過ARM MCR/MCRR指令讀取至一個映射至新的非架構MSR共同處理器暫存器,且其中控制位元的一部份可透過ARM MRC/MRRC指令讀取到映射至新的非架構MSR的ARM共同處理器暫存器。
全域組態暫存器122亦可包括不同的控制暫存器,其在非x86/ARM規範的不同方面控制微處理器100的運算,在本文亦可考慮為全域控制暫存器、非ISA控制暫存器、非x86/ARM控制暫存器、一般的(generic)控制暫存器及其類似者。在一實
施例中,這些控制暫存器可透過x86 RDMSR/WRMSR指令存取至非架構MSRs,以及透過ARM MCR/MRC(或MCRR/MRRC)指令存取至新的執行定義共同處理器暫存器。舉例來說,微處理器100包含非x86/ARM規範的控制暫存器,其決定精細度(fine-grained)快取控制,亦即較由x86 ISA及AMR ISA控制暫存器所提供的更為精細的快取控制。
在一實施例中,微處理器100提供ARM ISA機器語言程式,透過直接映射至對應的x86 MSRs的執行定義ARM ISA共同處理器暫存器存取至x86 ISA MSRs。MSR位址是由ARM ISA MSRs暫存器所指定,資料是依據MRC/MRRC/MCR/MCRR指令之指示從ARM ISA暫存器讀取或寫入至ARM ISA暫存器。在一實施例中,MSRs的子集合是以祕碼保護的,亦即,當指令嘗試存取至MSR時必定提供一密碼;在這個實施例,密碼是在ARM R7:R6暫存器裡指定。假如存取引起一x86一般保護錯誤,則微處理器100引起一ARM ISA UND例外。在一實施例中,ARM共同處理器4(位址:0,7,15,0)係作為存取對應的x86 MSRs。
微處理器100亦可包括一中斷控制器,該中斷控制器耦接於執行管線112。在一實施例中,中斷控制器為一x86形式進階可程式中斷控制器(x86-style advanced programmable interrupt controller,APIC),APIC將x86 ISA中斷映射到ARM ISA中斷。在一實施例中,x86 INTR映射到一個ARM IRQ中斷;x86 NMI映射到一個ARM IRQ中斷;x86 INIT從任何一
個ISA(x86或ARM)中的微處理器100開始引起一個INIT重置序列,其原本是從一個硬體重置開始;x86 SMI映射到一個ARM FIQ中斷;以及x86 STPCLK、A20、Thermal、PREQ以及Rebranch並非映射到ARM中斷。
ARM機器語言程式可透過新的執行定義ARM共同處理器暫存器來啟動存取APIC之功能(function)。在一個實施例中,APIC暫存器位址是指定於ARM R0暫存器中,且APIC暫存器位址與x86位址是一樣的。在一實施例中,ARM共同處理器6(位址:0,7,nn,0,其中nn為15,用以存取APIC,且12-14用以存取匯流排介面單元(bus interface unit),以執行在處理器匯流排上的8位元、16位元及32位元輸入/輸出週期(cycle))用於優先模式(privileged mode)典型上係優先模式下提供功能由運算系統所使用。微處理器100亦可包括一匯流排介面單元(圖未示),該匯流排介面單元耦接於記憶體子系統108及執行管線112,以作為微處理器100至處理匯流排的介面。在一實施例中,處理器匯流排與不同的Intel Pentium家族的其中一個的微處理器匯流排相符合。
ARM機器語言程式可透過新的執行定義ARM共同處理器暫存器來啟動存取匯流排介面單元之功能,以產生處理器匯流排上的輸入/輸出(I/O)週期,即輸入(IN)及輸出(OUT)匯流排傳送至I/O空間所定義的位址,該位址必須與系統的晶片組
(chipset)溝通,例如產生一SMI所認可的特定週期、或產生與C狀態(C-state)轉換有關的I/O週期。在一實施例中,I/O位址定義在ARM R0暫存器中。在一實施例中,微處理器100亦具有電源管理功能,例如公眾所知的P狀態(P-state)以及C-state管理,ARM機器語言程式可透過新的執行定義ARM共同處理器暫存器來執行電源管理。在一實施例中,微處理器100亦可在執行管線112中包括一個加密單元(encryption unit)(圖未示)。在一實施例中,加密單元實質上類似VIA微處理器中的加密單元,VIA微處理器中的加密單元實質上具有掛鎖能力。ARM機器語言程式透過新的執行定義ARM共同處理器暫存器以存取加密單元之功能,例如加密指令。在一實施例中,ARM共同處理器5用於使用者模式功能,使用者模式功能典型地由使用者模式運用程式所採用,例如使用加密單元特徵。
當微處理器100執行x86 ISA以及ARM ISA機器語言程式,則在微處理器100每一次執行x86或ARM ISA指令124時,硬體指令轉譯器104執行硬體指令轉譯。值得注意的是,相反地,以軟體轉譯為基礎之系統可藉由在許多情況下再利用(re-using)一個轉譯,而非再轉譯(re-translation)一個之前已經轉譯過的機器語言指令。此外,第8圖的實施例使用一個微指令快取儲存器,以避免微處理器100每一次執行x86或ARM ISA指令124時發生再轉譯。每一種實施方式依照程式特色及程式
執行的特定情況而具有不同的執行優點。
分支預測器114儲存有關先前已執行過的x86以及ARM分支指令的歷史資料。當來自指令快速儲存器102的x86以及ARM分支指令124被讀取時,分支預測器114預測快取線內的x86以及ARM分支指令124的分支及目標位址。在一實施例中,快取歷史包括記分支指令124的記憶體位址、分支目標位址、方向(taken/not taken)指標、分支指令類型、分支指令在快取線內的起始位元組、以及指令是否覆蓋到(wrap)而橫越多個快取線的指標。根據一實施例,分支預測器114可增強用來預測ARM ISA有條件的非分支指令,如於2011年4月7日申請的美國臨時申請案No.61/473,037" APPARATUS AND METHOD FOR USING BRANCH PREDICTION TO EFFICIENTLY EXECUTE CONDITIONAL NON-BRANCH INSTRUCTIONS"所述。根據一實施例,硬體指令轉譯器104亦可包括一靜態分支預測器,該靜態分支預測器用以根據運算碼、條件編碼類型、後退/前進等等內容來預測對應x86及ARM分支指令的方向及分支目標位址。
其他不同的實施例亦可考慮執行x86 ISA以及ARM ISA定義的功能的不同組合。舉例來說,在一實施例中,微處理器100執行ARM、Thumb、ThumbEE以及Jazelle指令集狀態,但提供一個Jazelle延伸的普通實施(trivial implementation);以
及執行下列指令:Thumb-2、VFPv3-D32、Advanced SIMD(“Neon”)、多重處理、以及VMSA;且不執行下列延伸:安全性延伸、快速環境切換延伸、ARM除錯功能(然而,x86除錯功能可透過ARM MCR/MRC由ARM程式存取至新的執行定義共同處理器暫存器)、效能監測計數器(然而,x86效能計數器可透過新的執行定義共同處理器暫存器由ARM程式存取)。舉例來說,在一實施例中,微處理器100將ARM SETEND指令視為一個NOP,且僅支援Little-endian資料格式。舉另一個例子,在一個實施例中,微處理器100並不執行x86 SSE 4.2能力。
其他實施例亦被考慮,其中微處理器100為一個商業用微處理器的增強版(enhancement),其由台灣/台北威盛電子所製造的VIA NanoTM
處理器,該處理器可執行x86 ISA機器語言程式,但不能執行ARM ISA機器語言程式。Nano微處理器包括一高效能暫存器重新命名、超純量指令發送、分循序執行管線以及一硬體轉譯器,該硬體轉譯器將x86 ISA指令轉譯為由執行管線所執行的微指令。Nano硬體指令轉譯器實質上可如本文提到,增強為可將ARM ISA機器語言指令轉譯為除了x86機器語言指令外,還可轉譯為執行管線可執行的微指令。硬體指令轉譯器的增強可包括簡單指令轉譯器及複雜指令轉譯器,其包括微編碼。此外,新的微指令可能增加至微指令集,
以支援ARM ISA機器語言指令轉為微指令的轉譯,且執行管線可增強為執行新的微指令。另外,Nano暫存器檔案以及記憶體子系統實質上可如本文所述增強為支援ARM ISA,其包括某些暫存器的共享。分支預測單元亦可增強為如本文所述的係在x86分支之外復提供ARM分支指令預測及x86分支。有利的是,一個相對輕微的修改量對Nano微處理器的執行管線提供ARM ISA指令之支援是有其必要的,這是因為這已是在很大程度上與ISA無關(ISA-agnostic)的實施方式。對於執行線的增強可能包括產生及使用條件碼旗標、用以更新及報告指令指標暫存器的語義(semantics)、存取優先保護方法、以及不同的記憶體管理關係功能,例如存取違反檢查、分頁及TLB使用、以及快取手段,上述僅為舉例而已,然其中一些將在下文詳述之。最後,如上所述,定義於x86 ISA以及ARM ISA裡的不同功能在Nano增強的實施例中不被支援,例如x86 SSE 4.2以及ARM安全延伸、快速環境切換延伸、除錯以及效能計數器功能,上述例子僅用以舉例,其中的一些將於下文詳述。Nano處理器的增強可支援執行ARM ISA機器語言程式,此為一個產生設計、測試以及製造資源的協同(synergistic)使用的實施例,以帶給及時流行的市場一個單一整合電路設計,該電路可執行x86及ARM機器語言程式,其代表了絕大部分現有的機器語言程式。特別的是,微處理器100的實施例的設計
如本文所述,可作為一個x86微處理器、ARM微處理器或是一個可同時執行x86 ISA以及ARM ISA機器語言程式的微處理器。可同時執行x86 ISA以及ARM ISA機器語言程式的微處理器的能力可透過動態切換單一微處理器100(或核心100,請見第7圖)上的x86與ARM指令模式132之間來達成,透過將多核心處理器100(可參考對應第7圖的說明)中的一個或一個以上的核心100配置為一個ARM核心,以及將將一個或多個核心100配置為x86核心,或透過兩者的結合,即動態切換於每個多核心100上的x86以及ARM指令模式132之間。此外,根據過往歷史事實,ARM ISA核心已設計作為智慧財產核心,且被第三方販賣者納入應用中,例如SOC且/或嵌入式應用。因此,ARM ISA不會定義一標準的處理器匯流排以作為ARM核心到系統的測試端的介面,例如晶片組及其他周邊元件。有利的是,Nano處理器已包括一個用於記憶體與周邊設備的高速x86形式處理器匯流排介面,以及一個由處理器100協同地利用的記憶體一致性結構(coherency structure),以支援x86 PC形式系統環境中執行ARM ISA機器語言程式。
現在請參考第2圖,其顯示第1圖的硬體指令轉譯器104的較詳細的方塊圖。硬體指令轉譯器104包括硬體、或是電晶體的集合。硬體指令轉譯器104包括一指令格式器202、一簡單指令轉譯器(simple instruction translator,SIT)204、一複雜指
令轉譯器(complex instruction translator,CIT)及一多工器(MUX)212,該指令格式器202接收指令模式指標132以及來自第1圖中的指令快取儲存器102的x86 ISA區段及ARM ISA指令位元組124,且指令格式器202輸出格式化x86 ISA及ARM ISA指令242;該簡單指令轉譯器(SIT)204接收指令模式指標132及環境模式指標136,並輸出即將執行的微指令244以及微編碼位址252;該複雜指令轉譯器(CIT)206(亦可視為一個微編碼單元)接收微編碼位址252及環境模式指標136,且提供即將執行的微指令246;而多工器212透過一個輸入點(input)接收來自簡單指令轉譯器204的微指令244,且透過另一個輸入點接收來自複雜指令轉譯器206的微指令246,該多工器212提供即將執行的微指令126至第1圖中的執行管線112。微指令格式器202將於對照第3圖的說明詳述之。簡單指令轉譯器204包括一個x86 SIT 222及一個ARM SIT 224。複雜指令轉器206包括一個用以接收微編碼位址252的微程式計數器(micro-program counter,micro-PC)232、一用以接收來自微程式計數器232的一唯讀記憶體位址254之微編碼唯讀記憶體(microcode read only memory,microcode ROM)234、一用以更新微程式計數器232的微序列器(microsequencer)236、一指令間接暫存器(instruction indirection register,IIR)235、及一用以產生執行微指令246並由複雜指令轉譯器206所輸出的微轉譯器
237。由簡單指令轉譯器204產生的即將執行的微指令244以及由複雜指令轉譯器206產生的即將執行的微指令246皆為微處理器100的微架構的微指令集的微指令126,且該微指令126可由執行管線112直接地執行。
多工器212由一選擇輸入248控制。通常情況下,多工器212從簡單指令轉譯器204中選擇微指令;然而當簡單指令轉譯器204遇到一複雜x86或ARM ISA指令242,且分支控制權、或因陷阱、至複雜指令轉譯器206時,簡單指令轉譯器204控制選擇輸入248,以使多工器212從複雜指令轉譯器206中選擇微指令246。當RAT_402(如第4圖所示)遇到一個帶有一特殊位元集的微指令126,其指出本身是執行於複雜ISA指令424中的最後一個微指令126時,RAT_402控制選擇輸入248,以使多工器212再從簡單指令轉譯器204中選擇微指令244。此外,當重排緩衝器422(參閱第4圖)準備要引退一例如帶有「指示微指令126曾造成一例外狀況」的狀態的微指令126時,重排緩衝器422控制選擇輸入248,以使多工器212從複雜指令轉譯器206中選擇微指令246。
簡單指令轉譯器204接收ISA指令242。如果指令模式指標132指示為x86,簡單指令轉譯器204將ISA指令242解碼成x86 ISA指令;如果指令模式指標132指示為ARM,簡單指令轉譯器204將ISA指令242解碼成ARM ISA指令。簡單指令轉譯器204
還確定ISA指令242為簡單或複雜ISA指令。一簡單ISA指令242為一個簡單指令轉譯器204為了執行簡單ISA指令242而發出的所有即將執行微指令126;也就是複雜指令轉譯器206無法提供任何即將執行微指令126至簡單ISA指令242中。反之,一複雜ISA指令124需要複雜指令轉譯器206來提供至少部分的(即使非全部)即將執行微指令126。在一實施例中,對於ARM與x86 ISA指令集的指令124的一子集而言,簡單指令轉譯器204發出用以執行x86/ARM ISA指令126的微指令244的一部份,然後分支控制至複雜指令轉譯器206,複雜指令轉譯器206爾後發出執行x86/ARM ISA指令126的微指令246的剩餘部份。多工器212受控制以首先從簡單指令轉譯器204中把即將執行微指令244提供如微指令126至執行管線112中,且接著從複雜指令轉譯器206中把即將執行微指令246提供如微指令126至執行管線112中。簡單指令轉譯器204知道硬體指令轉譯器104所使用的各種微編碼例行程式的起始微編碼唯讀記憶體234位址,以產生用於各種複雜ISA指令124的即將執行微指令126;並當簡單指令轉譯器204對一複雜ISA指令242解碼時,簡單指令轉譯器204提供相關的微編碼例行程式位址252至複雜指令轉譯器206的微程式計數器232中。簡單微指令204將執行ARM及x86 ISA指令集的相對大比例的指令124所需的微指令244發出,特別是傾向被ARM ISA及x86 ISA機器語言程式所高頻率地執行的ISA
指令124,只有相對小比例的即將執行微指令246需要由複雜指令轉譯器206來提供。依據一實施例,由複雜指令轉譯器206來主要實施的x86指令的範例為RDMSR/WRMSR、CPUID、複雜數學指令(例如FSQRT及超越指令(transcendental instructions))、及IRET指令;由複雜指令轉譯器206來主要實施的ARM指令的範例為MCR、MRC、MSR、MRS、SRS、及RFE指令。前述所列舉的絕非詳盡,僅是指出可由複雜指令轉譯器206執行的ISA指令的種類。
當指令模式指標132指示為x86時,x86 SIT222將x86 ISA指令242解碼,並將x86 ISA指令242轉譯成即將執行微指令244;當指令模式指標132指示為ARM時,ARM SIT224將ARM ISA指令242解碼,並將ARM ISA指令242轉譯成即將執行微指令244。在一實施例中,簡單指令轉譯器204為一布林邏輯閘的區塊(block),可由熟知的合成工具來合成出。在一實施例中,x86 SIT222及ARM SIT224為分離的布林邏輯閘區塊;然而,在另一實施例中,x86 SIT222及ARM SIT224為單一個的布林邏輯閘區塊。在一實施例中,簡單指令轉譯器204於每一時脈週期中至多轉譯三個ISA指令242,以及提供至多六個即將執行微指令244至執行管線112。在一實施例中,簡單指令轉譯器204包含三個子轉譯器(未顯示),各自轉譯一單一格式化指令242:第一子轉譯器可轉譯需至多三個即將執行微指令126的一格式化指
令242;第二子轉譯器可轉譯需至多二個即將執行微指令126的一格式化指令242;而第三子轉譯器可轉譯需至多一個即將執行微指令126的一格式化指令242。在一實施例中,簡單指令轉譯器204包含一硬體狀態機器,其可使簡單指令轉譯器204在多個時脈週期中,輸出多個執行一ISA指令242的微指令244。
在一實施例中,簡單指令轉譯器204還根據指令模式指標132及/或環境模式指標136,來執行各種例外(exception)檢測。舉例而言,如果指令模式指標132指示為x86,且x86 SIT222解碼出一對於x86 ISA而言為無效的ISA指令124時,此時簡單指令轉譯器204產生一x86無效運作碼(opcode)例外;類似地,如果指令模式指標132指示為ARM,且ARM SIT224解碼出一對於ARM ISA而言為無效的ISA指令124時,此時簡單指令轉譯器204產生一ARM無效運作碼例外。舉另一例而言,如果環境模式指標136指示為x86時,此時簡單指令轉譯器204檢測每一個所遭遇的x86 ISA指令242是否需要一特殊優先層級,如果為是,則簡單指令轉譯器204檢測CPL是否滿足用於x86 ISA指令242的所需優先層級,並在結果為否時由簡單指令轉譯器204產生一例外。類似地,如果環境模式指標136指示為ARM ISA時,此時簡單指令轉譯器204檢測每一個格式化ARM ISA指令242是否為一優先模式指令,如果為是,則簡單指令轉譯器204檢測目前模式是否為一優先模式,如果目前模式為一使用者模式
則簡單指令轉譯器204將產生一例外。複雜指令轉譯器206執行用於某些複雜ISA指令242執行類似的功能。
複雜指令轉譯器206輸出一序列的即將執行微指令246至多工器212。微編碼唯讀記憶體234儲存微編碼例行程式的ROM指令247。因應下個欲從微編碼唯讀記憶體234讀取出且儲存於微程式計數器232的ROM指令247位址,微編碼唯讀記憶體234輸出ROM指令247,並保持在微程式計數器232中。通常地,因應簡單指令轉譯器204將一複雜ISA指令242解碼,微程式計數器232接收來自簡單指令轉譯器204的微程式計數器232的初始值252。在其它例子中,例如因應一重置或例外,微程式計數器232分別接收重置微編碼例行程式位址的位址、或是適當的微編碼例外處理程式位址。因應一控制類型微指令126的執行,例如一分支(branch)指令,微序列器236通常依據ROM指令247至微編碼例行程式的序列的大小、或是ROM指令247至執行管線112產生的一目標位址的大小來更新微程式計數器232,以對微編碼唯讀記憶體234中的非序列位址進行分支。微編碼唯讀記憶體234是製造於微處理器100的半導體晶片中。
微指令244除了實施一簡單ISA指令124或一複雜ISA指令124之一部份外,簡單指令轉譯器204還產生ISA指令資訊255,該ISA指令資訊255是寫入至指令間接暫存器(instruction indirection register,IIR)235。儲存於IIR_235中的該ISA指令資訊
255包含關於ISA指令124的被轉譯之資訊,舉例而言,用以識別來源及目標暫存器的資訊(其由ISA指令124所指示)、以及ISA指令124的形式,例如ISA指令124是否在記憶體的運算元或是在微處理器100的架構型暫存器106上運作。此舉可使微編碼之例行程式為一般的(generic),也就是說,不必為了不同的來源及/或目標架構暫存器106而有不同的微編碼程式。
特別是,簡單指令轉譯器204知悉暫存器檔案106,其包含哪一個暫存器為共享暫存器504,及透過ISA指令資訊255將x86 ISA及ARM ISA指令124所提供之暫存器資訊轉譯至暫存器檔案106中的適當暫存器。ISA指令資訊255還包含:一位移欄,一即時欄、一常數欄、用於來源運算元及微指令126本身的重新命名資訊、用以指示出位於微指令126(其實施該ISA指令124)序列中的第一及最後微指令126的資訊、以及從硬體指令轉譯器104所解碼的ISA指令中收集而來的有用資訊。
微轉譯器237接收IIR_235之內容,且從微編碼唯讀記憶體234接收ROM247指令。對應地,微轉譯器237產生即將執行微指令246。微轉譯器237依據從IIR_235接收之資訊(例如依據ISA指令124之形式以及來源及/或目標架構暫存器106兩者之結合所定義),將某些ROM指令247轉譯成不同的微指令246序列。在很多例子中,多數的ISA指令資訊255與ROM指令247結合,以產生即將執行微指令246。在一實施例中,每一個ROM指令
247大約為40位元寬,而每一微指令246大約為200位元寬。在一實施例中,微轉譯器237可從一ROM指令247產生至多三個的微指令246。微轉譯器237包含多個布林邏輯閘,用以產生即將執行微指令246。
微編譯器237所具有的優點為微編碼唯讀記憶體234之大小可縮減,因為IIR_235所提供之ISA指令資訊255不需被儲存,因為簡單指令轉譯器204產生ISA指令資訊255。此外,微編碼唯讀記憶體234例行程式可包含較少的狀態分支指令,因為不需為了每一個不同ISA指令形式以及每一個來源及/或目標架構型暫存器106組合而包含個別例行程式。舉例而言,假如複雜ISA指令124為一記憶體形式,簡單指令轉譯器204可產生微指令244的prolog程式語言(其可包含從記憶體讀取來源運算元至一暫時暫存器106的微指令244),且微轉譯器237可產生一微指令246以將來自暫時暫存器的執行結果儲存至記憶體。反之,如果複雜ISA指令124為一暫存器形式,prolog程式語言可將來源運算元從定義於ISA指令的來源暫存器,移至暫時暫存器,且微轉譯器237可產生一微指令246,以將執行結果從暫時暫存器移至由IIR_235所指示的架構型目標暫存器106。在一實施例中,微轉譯器237在很多方面類似於2010年4月23日申請的美國專利申請號12/766,244所述的轉譯器237,其在併入全文以做參考;但除了x86 ISA指令124外,還對轉譯ARM ISA指令進
行修改。
要注意的是,微程式計數器232係有別於ARM PC116及x86 IP118;也就是說,微程式計數器232沒有維持IS指令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的運作碼(opcode),ARM ISA指令可為2位元或4位元長度之指令,且可為2位元或4位元對齊。因此,指令格式器202從指令位元組124之串流中,取出有不同的x86 ISA及ARM ISA指令,該指令位元組124是由從指令快取儲存器102接收而來的資料區段組成。也就是,指令格式器202格式化x86 ISA及ARM ISA指令位元組之串流,此舉大大簡化
第2圖的簡單指令轉譯器204的「解碼及轉譯ISA指令124」的複雜工作。
指令格式器202包含一預先解碼器302,其在指令模式指標132指示出x86時預先將指令位元組124解碼成x86指令位元組、且指令模式指標132指示出ARM時預先將指令位元組124解碼成ARM指令位元組,用以產生預先解碼資訊。一指令位元佇列(instruction byte queue,IBQ)304接收ISA指令124之資料區段以及由預先解碼器302所產生的相關預先解碼資訊。
長度解碼器及管線邏輯器306之一陣列接收IBQ304之底部項目之內容,也就是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的開始位元組、哪一個位元組為一ISA指令124的結束位元組、以及/或哪一個位元組為一ISA指令124的一有效位元。一多工佇列(mux queue,MQ)308接收ISA指令位元組126的一資料區段、與其相關且由預先解碼器302所產生的預先解碼資訊、與其相關且由
長度解碼器及管線邏輯器306所產生的解碼資訊。
控制邏輯(圖未示)審查底部MQ308項目的內容,且控制多工器312去取得不同的、或格式化的ISA指令及相關的預先解碼及解碼資訊,再將它們提供至一格式化指令佇列(formatted instruction queue,FIQ)314。FIQ314緩衝該格式化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,以產生ARM ISA指令124的長度以及開始、結束及有效位元指標。特別地,如果指令模式指標132指出ARM ISA,長度解碼器306檢視目前的ARM指令集狀態322以及ARM ISA指令124之運作碼,以確定ARM指令124為一2位元或是四位元長度指令。在一實施例中,長度解碼器306包含用以產生x86 ISA指令124之長度及產生ARM ISA指令124之長度的多個分離長度解碼器,該些分離長
度解碼器的輸出被線或(wire-ORed)在一起,以提供其一之輸出至管線邏輯器306。在一實施例中,格式化指令佇列(FIQ)314包含用以維持格式化指令242之分離部分的多個分離佇列。在一實施例中,在每一時脈週期中,指令格式器202提供簡單指令轉譯器204至多三個格式化ISA指令242。
現參閱第4圖,其顯示一方塊圖,更為詳細地描述第1圖的執行管線112。執行管線112耦接以直接地從第2圖的硬體指令轉譯器104接收即將執行微指令126。執行管線112包含:一微指令佇列401(其接收微指令126)、一暫存器配置表(register allocation table,RAT)402(其從微指令佇列401接收微指令)、一指令配送器404(其耦接至RAT_402)、指令保留站406(其耦接至指令配送器404)、一指令發出單元408(其耦接指令保留站406)、一重排序緩衝器(reorder buffer,ROB)422(其耦接至RAT_402、指令配送器404及指令保留站406)、以及執行單元424(其耦接至指令保留站406、指令發出單元408及重排序緩衝器422)。RAT_402及執行管線424接收指令模式指標132。
微指令佇列401係在「硬體指令轉譯器104產生即將執行微指令126的速率」與「執行管線112執行微指令126的速率」不同之情況下運作如一緩衝器。在一實施例中,微指令佇列401包含一M至N可壓縮的微指令佇列,其使得執行管線112可在一特定時脈週期中,從硬體指令轉譯器104中接收至多M個微指
令126(一實施例中,M為六個),且還可儲存所接收的微指令126在一寬度N的佇列結構中(一實施例中,N為三個),以在每一時脈週期中提供至多N個微指令126至RAT_402,RAT_402可在每一時脈週期中,處裡至多N個微指令126。微指令佇列401為可壓縮的,因為在佇列的項目(entry)沒有留下空洞,所以當微指令126從硬體指令轉譯器104接收來時,無論是在哪一個特定時脈週期中接收到微指令126,都會將微指令126連續地填入空的佇列之項目中。此舉有利於使執行管線424(於第4圖中)高度利用,以達到高指令產出,且相對於不可壓縮的M寬度或N寬度指令佇列有優點更形顯著。更特別地,不可壓縮的N寬度佇列會需要硬體指令轉譯器104(特別是簡單指令轉譯器204)於隨後的一時脈週期中,將已經在前個時脈週期中轉譯過的一或多個ISA指令124重新轉譯,這是因為不可壓縮的N寬度佇列在每一個時脈週期中,不能接收超過N個微指令126,而重新轉譯浪費電能。但是,雖然不可壓縮的N寬度佇列不需要簡單指令轉譯器204來重新轉譯,但不可壓縮的N寬度佇列會在佇列項目中產生空洞,此舉顯得浪費且會需要較多的項目列,因此需要一較大、且較耗電之佇列,才能達成相對的緩衝能力。
RAT_402從微指令佇列401接收微指令126,且產生關於位
於微處理器100中、尚未處理(pending)的微指令126的附屬資訊,且執行暫存器重新命名,以增加微指令平行運算,以利用執行管線112的超純量(superscalar)處理器、以及非循序(out-of-order)執行能力。如果ISA指令124指示出x86,然後RAT_402產生附屬資訊,以及執行與微處理器100的x86 ISA暫存器106有關的暫存器重新命名;但是,如果ISA指令124指示出ARM,然後RAT_402產生附屬資訊,以及執行與微處理器100的ARM ISA暫存器106有關的暫存器重新命名;然而,如上所述,部分的暫存器106可由x86 ISA及ARM ISA共享。RAT_402還為了每一個微指令126,依據程式順序配置一項目於ROB_422,使得ROB_422可依據程式順序引退微指令126和微指令126相關的x86 ISA及ARM ISA指令124,既使微指令126在關於x86 ISA及ARM ISA指令之執行係以非循序方式來達成。ROB_422包括該些項目的循環佇列,每一個用以儲存有關未處裡的微指令126的資訊,該資訊包含:微指令126執行狀態、一標籤(用以指示微指令126中係從x86或ARM ISA指令124所轉譯而來)、以及用以儲存微指令126的執行結果的存儲區。
指令配送器404從RAT_402接收暫存器重新命名的微指令126及附屬資訊,且依據指令的形式和執行單元424的可用性,配送微處理器126及其相關的附屬資訊至指令保留站406;該指令保留站406與適當的執行單元424相關,執行單元424將執行
微指令126。
指令發出單元408為了每一個在指令保留站406等待的微指令126,偵測相關的執行單元424是否已可可使用與附屬資訊已滿足(例如,來源運算元可使用),且發出微指令126至執行單元424以供執行。如前所述,指令發出單元408可發出微指令126,使其得以在非程式順序以及超純量處理器的方式下執行。
在一實施例中,執行單元424包含整數/分支單元412、介質單元414、載入/儲存單元416、以及浮點單元418。執行單元424執行微指令126,以產生執行結果128並提供ROB_422。雖然執行單元424顯然地對於其所執行的微指令126已不受限(agnostic)為從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 IP118或ARM PC116或是共同的指令,以及是否要使用x86或ARM之語意來做這些更新。一旦一微指令126變成微處理器100中最久且已完成的微指令126(也就是,在ROB_422佇列之頂端且具有一完成狀態),且執行相關的ISA指
令124的其它全部微指令126皆完成時,ROB_422引退ISA指令124並釋放與即將執行微指令126相關的項目。在一實施例中,每一個時脈週期中,微處理器100能引退至多三個ISA指令124。有利地,執行管線112為一高性能、通用目的的執行引擎,其執行微處理器100的微架構的微指令126,且x86 ISA及ARM ISA指令124兩者皆支援。
現參閱第5圖,其顯示一方塊圖,更為詳細地描述第1圖的暫存器檔案106。較佳地,暫存器檔案106係以暫存器的分離實體資訊區段來實施。在一實施例中,一般目的之暫存器被執行在一個實體暫存器檔案中,實體暫存器檔案具有多個讀取埠及寫入埠;然而,其它暫存器可實體地安排與一般目的之暫存器檔案分開且距離近的功能方塊,且比起一般目的暫存器檔案而言,其它暫存器可具有較少的讀取/寫入埠。在一實施例中,部分的非一般目的暫存器,特別是那些不直接控制微處理器100的硬體,但僅是儲存微編碼唯讀記憶體234所用的數值(例如某些x86 MSR或是ARM共同處理器暫存器),係是被執行於一私用隨機存取記憶體(PRAM)中,其可被微編碼唯讀記憶體234存取但對於x86 ISA及ARM ISA程式設計者而言是看不見的,也就是不位在ISA系統記憶體位址空間中。
一般來說,暫存器檔案106邏輯上被分為三個類別,如第5圖所示,也就是ARM特定的暫存器502、x86特定的暫存器504、
及共享暫存器506。在一實施例中,共享暫存器506包含十五個32位元暫存器,其由ARM ISA暫存器R0至R14以及x86 ISA_EAX至R14D暫存器共享,且包含十六個128位元暫存器,其由x86 ISA XMM0至XMM15暫存器和ARM ISA進階SIMD(Neon)暫存器共享,這些共享暫存器其中一部分還與32位元ARM VFPv3浮點暫存器重疊。如先前關於第1圖的描述,一般目的暫存器的共享意味著,由一x86 ISA指令124寫入至一共享暫存器的數值,可被一爾後讀取該共享暫存器的ARM ISA指令124看到,反之亦然,此舉有利於使x86 ISA及ARM ISA例行程式透過暫存器來相互溝通。此外,如前所示,x86 ISA及ARM ISA的架構型控制暫存器的某些位元也可作為共享暫存器506的例子。如前所示,在一實施例中,x86 MSRs可透過一以執行定義(implementation-defined)之共同處理器暫存器而被ARM ISA指令124所存取,因此可被x86 ISA及ARM ISA所共享。共享暫存器506還可包括非架構型暫存器,例如狀態旗標的非架構型等效(equivalents of the condition flags),其同樣也被RAT_402重新命名。硬體指令轉譯器104知道哪一個暫存器被x86 ISA及ARM ISA共享,因此硬體指令轉譯器104可產生即將執行微指令126來存取正確的暫存器。
ARM特定暫存器502包含由ARM ISA定義、但不包含於共享暫存器506中的其它暫存器,x86特定暫存器504包含由x86
ISA定義、但不包含於共享暫存器506中的其它暫存器。ARM規範暫存器502的範例包含ARM PC116、CPSR、CTRL、EPSCR、CPACR、共同處理器暫存器、協同使用的(banked)一般目的暫存器、及各種例外模式的SPSR等。前述並不是預期作為ARM特定暫存器502的詳細列表,但僅是提供來作為描述範例。x86規範暫存器504的範例包含x86 EIP118、EFLAGS、R15D、64位元R0至R15處理器的上層32位元(也就是不位在共享暫存器506的部分)、區段暫存器(SS,CS,DS,ES,FS,GS)、x87 FPU暫存器、MMX暫存器、及控制暫存器(例如CR0至CR3,R8)等。前述並不是預期作為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狀態轉變)、處理器緩衝功能(例如I/O週期)、中斷控制器存取、
以及加密加速(encryption acceleration)能力存取,一如先前所討論者。此外,在一實施例中,微處理器100包含新的x86非架構型MSR,其可在指令模式指示器132指出x86 ISA時被存取,以執行ARM ISA相關的運作;該些運作包含,但不限於:將微處理器100重置為一ARM ISA處理器(重置至ARM指令)的能力;初始化微處理器100的ARM所定義狀態、切換指令模式指標132至ARM、及在一定義ARM目標位址上開始讀取ARM指令124(啟動ARM指令)的能力;存取先前討論過的全域配置暫存器的能力;以及存取ARM特定暫存器(例如CPSR)的能力,其中欲存取的ARM規特定暫存器被指定於EAX暫存器中。
現參閱第6圖,其包含第6A圖及第6B圖,其顯示一來描述第1圖的微處理器100運作的流程。流程開始於方塊602。
在方塊602中,微處理器100被重置。此重置可在重置輸入上發送訊號至微處理器100。進一步地說,在一實施例中,若處理器匯流排為一x86形式處理器匯流排,則重置可由一x86形式INIT所發送。因應該重置,在微編碼243中的重置程式被喚起。該重置微編碼包含:(1)初始化x86特定狀態504至x86 ISA所定義之預設值;(2)初始化ARM特定狀態502至ARM ISA所定義之預設值;(3)初始化微處理器100的非x86特定狀態至微處理器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啟動模式在微編碼中被硬編碼(hardcoded),但可被一燒斷的熔絲架構及/或一微編碼修補(pathc)的方式做修改。在另一實施例中,該預設ISA啟動模式被提供為一給至該微處理器的外部輸入,例如一外部輸入接腳。流程前進至方塊606。在決策方塊606中,如果預設ISA啟動模式為x86,流程進行至方塊614;如果預設ISA啟動模式為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處理器,並保持微處理器100的非ARM配置(其由x86系統軟體執行)之完整。此舉可使精簡(thin)的微啟動編碼就得以啟動一ARM作業系統,該微啟動編碼不需知道配置微處理器100的作法的複雜性。在一實施例中,重置至ARM指令是一x86WRMSR指令,其傳送至一新的非架構性MSR。流程前進至方塊622。
在方塊622中,簡單指令轉譯器204因應複雜重置至ARM指令124將重置微編碼中斷。該重置微編碼將ARM特定狀態502初始化成至ARM ISA所定義的預設值。然而,重置微編碼並沒改變微處理器100的非ISA特定狀態,此舉有利於保留執行於方塊616中的配置。此外,重置微編碼將共享ISA狀態506初始化成ARM ISA所定義的預設值。最後,重置微編碼設定指令模式指標132及環境模式指標136以指示ARM ISA。流程前進至方塊624。
在方塊624中,重置微編碼使得微處理器100開始讀取指示於x86 ISA EDX:EAX暫存器中的位址上的x86指令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及MCR指令124。流程前進至方塊648。
在方塊648中,ARM系統軟體執行一重置至x86指令124。該重置至x86指令使得微處理器100重置,且重置後變為一x86處理器。然而,因為沒有ARM特定狀態502且沒有非ISA特定配置狀態被重置至x86指令126所改變,所以可有利於使ARM系統的韌體實現微處理器100的初始配置,且有利於之後將微處理器100重新啟動為一x86處理器,並保持微處理器100的非x86配置(其由ARM系統軟體實施)之完整。此舉可使用精簡的微啟
動編碼就得以啟動一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開始讀取指示於x86 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程式、或一個核心執行x86 ISA程式而另一個核心100執行ARM ISA程式,在微處理器700運作途中,三個配置的混合可不斷地
改變。如先前關於第6圖所述,每一個核心100有一個用於其指令模式指標132及一環境模式指標136的預設值,其可被一熔絲及/或微編碼修補而改變,使得每個核心100可單獨地重置成為一x86或一ARM處理器。雖然第7圖的實施例包含兩個核心100,在其它實施例中,微處理器700可包含兩個以上的核心100,每個可執行x86及ARM ISA機器語言程式。
現參閱第8圖,其顯示依據本發明的一替代實施例的一微處理器100的一方塊圖,該微處理器100可執行x86及ARM ISA機器語言程式。第8圖的微處理器100類似第1圖的微處理器100,除了包含相同標號之元件外,第8圖的微處理器100還包含一微指令快取儲存器892。微指令快取儲存器892將由硬體指令轉譯器104產生的微指令126存入快取儲存器,其直接提供至執行管線112。微指令快取儲存器892由讀取位址134所指引,而讀取位址134是由指令讀取單元114所產生。假如讀取位址134命中(hit in)微指令快取儲存器892時,然後執行管線112的一多工器(圖未示)從微指令快取儲存器892選擇出微指令126,而非從硬體指令轉譯器104;除此之外,多工器選擇由硬體指令轉譯器104直接提供的微指令126。微指令快取儲存器892通常也被視為一追蹤快取記憶體,而微指令快取儲存器892的運作是微處理器設計領域中的通常知識。微指令快取儲存器892的優點為,由微指令快取儲存器892讀取微指令126的所需時間,通常
少於由指令快取儲存器102讀取ISA指令124,然後由硬體指令轉譯器104將ISA指令124轉譯成微指令126的所需時間。在第8圖的一實施例中,當微處理器100執行一x86或ARM ISA機器語言程式時,硬體指令轉譯器104不需在每一次x86或ARM ISA指令124執行時,都執行硬體轉譯(hardware translation);亦即,如果即將執行微指令126已經存在於微指令快取儲存器892中。
有利地,於本文描述的可執行x86 ISA及ARM ISA機器語言程式的微處理實施例中,因為包含一硬體指令轉譯器,其將x86 ISA及ARM ISA指令轉譯成一微指令集的微指令,該微指令係有別於x86 ISA及ARM ISA指令集,其中微指令可被微處理器的一通常執行管線執行,而即將執行微指令則是被微處理器提供。本文所描述的微處理器的該些實施例的優點為,藉由協同地(synergistically)利用大量的不受ISA限制(ISA-agnostic)的執行管線來執行從x86 ISA及ARM ISA指令中硬體轉譯來的微指令,微處理器的設計及製造比起兩個分開設計及製造的微處理需要較少的資源;兩個分開設計及製造的微處理是指,一個可執行x86 ISA機器語言程式,一個可執行ARM ISA機器語言程式。此外,微處理器的實施例中,尤其是那些採用超純量處理(superscalar)非循序執行管線的實施例,可比目前的ARM ISA處理器提供具有較高效能的ARM ISA處理器。再者,微處理器的實施例可比採用軟體轉譯器提供較高的x86及ARM效能。最
後,微處理器可包含於一個可同時且高效能地執行x86及ARM機器語言程式的系統中,因為該系統具備同時執行x86 ISA及ARM ISA機器語言程式的能力。
本發明的各種實施例已於本文中描述,但需瞭解的是,該些實施例是以範例方式來描述,而非限制。應知道的是,對於電腦相關領域的知識者而言,各種形式及細節的變化皆可能,但無法悖于本發明之範圍。舉例而言,軟體可啟動於本文描述的功能、製造、模型化、模擬、描述及/或裝置及方法的測試。此舉的達成可透過一般程式語言(例如C及C++)、包含Verilog HDL、VHDL等的硬體描述語言(HDL)、或其他可獲得的程式。該軟體可設置於任何已知的電腦可使用媒介,例如磁帶、半導體、磁碟、或光碟(例如CD-ROM、DVD-ROM等)、網路或其他通訊媒介。本文所描述的裝置及方法的實施例可包含於一半導體智慧財產核心(emiconductor intellectual property core),例如微處理器核心(位於或規範於HDL中),且被轉換成生產積體電路的硬體。此外,本文所描述的裝置及方法可以一軟體及硬體之組合來體現。因此本發明不應侷限於本文所描述的任何範例性的實施例,僅只能依據隨後的申請專利範圍及其均等範圍來定義。特別地,本發明可實施於用於一般目的之電腦中的一微處理器裝置中。
最後,本領域的技藝者應瞭解到,他們可容易地使用所揭
露的概念及特定實施例來作為一基礎,以設計或修改其他結構,來實現出與本發明相同的目的,但無法悖離本發明附加的申請專利範圍所定義的範圍。
100‧‧‧微處理器
102‧‧‧指令快取儲存器
104‧‧‧硬體指令轉譯器
106‧‧‧暫存器檔案
108‧‧‧記憶體子系統
112‧‧‧執行管線
114‧‧‧指令讀取單元及分支預測器
116‧‧‧ARM PC
118‧‧‧x86 IP
122‧‧‧組態暫存器
124‧‧‧x86 ISA及ARM ISA指令
126‧‧‧微指令
128‧‧‧微指令執行結果
132‧‧‧指令模式
134‧‧‧讀取位址指標
136‧‧‧環境模式指標
202‧‧‧指令格式器
204‧‧‧簡單指令轉譯器
222‧‧‧x86 SIT
224‧‧‧ARM SIT
242‧‧‧格式化之x86 ISA及ARM ISA指令
252‧‧‧微編碼位址
206‧‧‧複雜指令轉譯器
232‧‧‧微程式計數器
234‧‧‧微編碼唯讀記憶體
235‧‧‧指令間接暫存器
236‧‧‧微序列器
237‧‧‧微轉譯器
244、246‧‧‧微指令
247‧‧‧ROM指令
212‧‧‧多工器
302‧‧‧預先解碼器
304‧‧‧IBQ
306‧‧‧長度解碼器及管線邏輯器
308‧‧‧MQ
312‧‧‧MUXES
314‧‧‧FIQ
322‧‧‧ARM指令集狀態
401‧‧‧微指令佇列
402‧‧‧暫存器配置表
404‧‧‧指令配送器
406‧‧‧指令保留站
408‧‧‧指令發出單元
412‧‧‧整數/分支單元
414‧‧‧介質單元
416‧‧‧載入/儲存單元
418‧‧‧浮點單元
422‧‧‧重排緩衝器
424‧‧‧執行單元
602~654‧‧‧微處理器的運算步驟流程
100‧‧‧核心0、核心1
892‧‧‧微指令快取儲存器
第1圖顯示本發明的微處理器的一實施例之方塊圖。
第2圖顯示第1圖的硬體指令轉譯器的一實施例之方塊圖。
第3圖顯示第2圖的指令格式器的一實施例之方塊圖。
第4圖顯示第1圖的執行管線的一實施例之方塊圖。
第5圖顯示第1圖的暫存器檔案的一實施例之方塊圖。
第6A-6B圖顯示第1圖的微處理器的運算步驟的一實施例之流程圖。
第7圖顯示本發明的雙核心處理器的一實施例之方塊圖。
第8圖顯示本發明的微處理器的一實施例之方塊圖。
100‧‧‧微處理器
102‧‧‧指令快取儲存器
104‧‧‧硬體指令轉譯器
106‧‧‧暫存器檔案
108‧‧‧記憶體子系統
112‧‧‧執行管線
114‧‧‧指令讀取單元及分支預測器
116‧‧‧ARM PC
118‧‧‧x86 IP
122‧‧‧組態暫存器
124‧‧‧x86 ISA及ARM ISA指令
126‧‧‧微指令
128‧‧‧微指令執行結果
132‧‧‧指令模式
134‧‧‧讀取位址指標
136‧‧‧環境模式指標
Claims (42)
- 一種微處理器,包含:一硬體指令轉譯器,該硬體指令轉譯器可執行的邏輯運算包含:根據該硬體指令轉譯器所接收的複數個指令位元組是屬於一x86指令集架構機器語言程式或一ARM指令集架構機器語言程式的一資料區段,對該些指令位元組執行預先解碼,該資料區段包括複數個x86指令集架構指令或複數個ARM指令集架構指令;對每一個預先解碼後的該指令位元組的一長度執行解碼,並提供至少一指標,該指標係指示該些指令位元組中的哪一個位元組為該些x86指令集架構指令或該些ARM指令集架構指令的開始位元組或結束位元組;將該些x86指令集架構以及ARM指令集架構指令轉譯為多個微指令,該些微指令由該微處理器的一微指令集所定義,其中該些微指令的編碼方式係有別於該些指令位元組的編碼方式,該些指令位元組由該些x86指令集架構及ARM指令集架構指令的一指令集所編碼;以及一執行管線,耦接該硬體指令轉譯器,其中該執行管線執行該些微指令,以產生由該些x86指令集架構及ARM指令集架構指令所定義的複數個執行結果;其中,該硬體指令轉譯器直接提供該些微指令至該執 行管線以供執行,來產生由該些x86指令集架構及ARM指令集架構指令所定義的該些執行結果。
- 如申請專利範圍第1項所述的微處理器,其中由該硬體指令轉譯器提供給該執行管線的該些微指令係有別於該執行管線執行該些微指令所產生的該些執行結果。
- 如申請專利範圍第1項所述的微處理器,其中該些微指令是由該硬體指令轉譯器提供給該執行管線來執行,而不是該執行管線的該些執行結果。
- 如申請專利範圍第1項所述的微處理器,其中該微處理器每一次執行該些x86指令集架構及ARM指令集架構指令的其中之一時,該硬體指令轉譯器將該些x86指令集架構或ARM指令集架構指令轉譯為該些微指令,以供該執行管線執行。
- 如申請專利範圍第1項所述的微處理器,其中該硬體指令轉譯器更包含:一微指令快取儲存器,儲存該些微指令至快取儲存器;其中當該些微指令存在於該微指令快取儲存器時,該執行管線從該微指令快取儲存器接收該些微指令,而非從該硬體指令轉譯器接收。
- 如申請專利範圍第1項所述的微處理器,其中該執行管線不能直接執行該些x86指令集架構及ARM指令集架構指令。
- 如申請專利範圍第1項所述的微處理器,更包含: 一指令模式指標,指示該微處理是否正在讀取及轉譯該些x86指令集架構或ARM指令集架構指令並執行從該些x86指令集架構或ARM指令集架構指令轉譯而來的該些微指令。
- 如申請專利範圍第1項所述的微處理器,其中該硬體指令轉譯器包含:一布林閘之第一合成邏輯區塊,將該些x86指令集架構指令轉譯為該些微指令;及一布林閘之第二合成邏輯區塊,將該些ARM指令集架構指令轉譯為該些微指令。
- 如申請專利範圍第1項所述的微處理器,其中該硬體指令轉譯器接收一指令模式輸入,藉由該指令模式輸入確認該些指令位元組為該些x86指令集架構或ARM指令集架構指令。
- 如申請專利範圍第9項所述的微處理器,其中該硬體指令轉譯器包含:多個布林邏輯閘,包含多個電晶體,該些布林邏輯閘依據該指令模式輸入,將屬於該些x86指令集架構指令或ARM指令集架構指令的該些指令位元組轉譯成該些微指令。
- 如申請專利範圍第10項所述的微處理器,其中該些布林邏輯閘提供因應該些x86指令集架構或ARM指令集架構指令 中的一第一子集的該些微指令,其中該硬體指令轉譯器包含:一唯讀記憶體,製造於一半導體晶片中,該半導體晶片包含該微處理器,其中該唯讀記憶體提供多個唯讀記憶體指令,該些唯讀記憶體指令產生因應該些x86指令集架構或ARM指令集架構指令中的一第二子集的該些微指令。
- 如申請專利範圍第1項所述的微處理器,其中該微處理器包含:至少第一及第二處理核心,每一個處理核心包含該硬體指令轉換器及該執行管線之一者。
- 一種運作微處理器的方法,該微處理器包含一指標,該指標指示x86指令集架構或ARM指令集架構,該方法包含:確定該指標是指示該x86指令集架構或是ARM指令集架構;接收位於一硬體指令轉譯器的複數個x86指令集架構指令或複數個ARM指令集架構指令;根據該硬體指令轉譯器所接收的複數個指令位元組是屬於一x86指令集架構機器語言程式或一ARM指令集架構機器語言程式的一資料區段,對該些指令位元組執行預先解碼,該資料區段包括該些x86指令集架構或ARM指令集架構指令; 對每一個預先解碼後的該指令位元組的一長度執行解碼;提供至少一指標,該指標係指示該些指令位元組中的哪一個位元組為該些x86指令集架構指令或該些ARM指令集架構指令的開始位元組或結束位元組;當該指標指示為該x86指令集架構時,依據該些x86指令集架構指令將多個機器語言指令轉譯為多個微指令,當該指標指示為該ARM指令集架構時,依據該些ARM指令集架構指令將多個機器語言指令轉譯為多個微指令,其中該些微指令是由該微處理器的一微指令集所定義,且該些微指令的編碼方式係有別於該些x86指令集架構或是ARM指令集架構指令所定義的一指令集的編碼方式,其中該轉譯步驟是由該微處理器的一硬體指令轉譯器所執行;以及當該指標指示為該x86指令集架構時,執行該些微指令以產生由該些x86指令集架構指令所定義的複數個執行結果,當該指標指示為該ARM指令集架構時,執行該些微指令,以產生由該些ARM指令集架構指令所定義的該些執行結果,其中該執行步驟是由該微處理器的一執行管線所執行,該執行管線耦接於該硬體指令轉譯器。
- 如申請專利範圍第13項所述的運作微處理器的方法,更包括: 直接從該硬體指令轉譯器提供該些微指令至該執行管線以供執行。
- 如申請專利範圍第13項所述的運作微處理器的方法,其中由該硬體指令轉譯器所轉譯的該些微指令係有別於該執行管線執行該些微指令所產生的該些執行結果。
- 如申請專利範圍第13項所述的運作微處理器的方法,其中該執行步驟所產生的該些執行結果,並非該硬體指令轉譯器所轉譯的該些微指令。
- 如申請專利範圍第13項所述的運作微處理器的方法,其中該微處理器每一次執行該些x86指令集架構及ARM指令集架構指令的其中之一者時,該硬體指令轉譯器執行該轉譯步驟,而該執行管線執行該執行步驟。
- 一種微處理器,包含:多個暫存器,維持該處理器的一架構狀態;一指標,指示該微處理器的一啟動指令集架構為一x86指令集架構或一ARM指令集架構;一硬體指令轉譯器,將多個x86指令集架構指令及多個ARM指令集架構指令轉譯為多個微指令,其中該硬體指令轉譯器依據該啟動指令集架構之指令,以轉譯複數個初始指令集架構指令,該些初始指令集架構指令是該微處理器在接收一重置訊號後,從一架構型記憶空間所讀取; 一執行管線,耦接該硬體指令轉譯器,該執行管線執行該些微指令,以產生由該些x86指令集架構及ARM指令集架構指令所定義的複數個執行結果;以及其中,該微處理器因應該重置訊號,在該微處理器讀取該些初始指令集架構指令前,初始化位於該些暫存器中且由該啟動指令集架構定義的架構狀態。
- 如申請專利範圍第18項所述的微處理器,其中該指標包含位於該微處理器的微編碼中的一預設值。
- 如申請專利範圍第19項所述的微處理器,更包含:一熔絲,可被燒斷以變更該微編碼中的該預設值。
- 如申請專利範圍第19項所述的微處理器,其中在該微處理器被重置後,且在該微處理器讀取該架構型記憶空間中的該些初始指令集架構指令前,該微編碼中的該預設值可由一微編碼修補所修改。
- 如申請專利範圍第18項所述的微處理器,其中該指標包含位於該微處理器的一暫存器中的一位元,該位元具有因應該重置訊號的一預設值。
- 如申請專利範圍第18項所述的微處理器,其中該指標包含傳送至該微處理器的一外部輸入。
- 如申請專利範圍第18項所述的微處理器,其中該微處理器因應該重置訊號,於該啟動指令集架構定義的一位址上, 從該架構型記憶空間讀取該些初始指令集架構指令。
- 一種運作微處理器的方法,包含:偵測一微處理器的一已發送的重置訊號,其中該偵測步驟是由該微處理器所執行;因應該偵測步驟來決定該微處理器的一已發送的重置訊號,確認一x86指令集架構以及一ARM指令集架構之中,哪一個是該微處理器的一指標所指示的該微處理器的一啟動指令集架構,其中該決定步驟是由該微處理器所執行;初始化由該啟動指令集架構定義的該微處理器的一架構狀態,其中該初始化步驟是由該微處理器所執行;轉譯複數個初始指令集架構指令成多個微指令,該些微指令係該微處理器根據該啟動指令集架構的指令重置後,從一架構型記憶空間所讀取之該些初始指令集架構指令,其中該轉譯步驟是由該微處理器的一硬體指令轉譯器所執行;以及執行該些微指令,以產生由該啟動指令集架構定義的複數個執行結果,其中該執行步驟是由該微處理器的一執行管線所執行,該執行管線耦接於該硬體指令轉譯器。
- 如申請專利範圍第25項所述的運作微處理器的方法,其中該指標包含該微處理器的微編碼中的一預設值。
- 如申請專利範圍第26項所述的運作微處理器的方法,更包 含:將該微編碼中的該預設值變更為對應偵測該微處理器的一熔絲。
- 如申請專利範圍第26項所述的運作微處理器的方法,其中在該微處理器被重置後,且在該微處理器讀取該架構型記憶空間中的該些初始指令集架構指令前,該微編碼中的該預設值可由一微編碼修補所修改。
- 如申請專利範圍第25項所述的運作微處理器的方法,其中該指標包含位於該微處理器的一暫存器中的一位元,該位元具有因應該重置訊號的一預設值。
- 如申請專利範圍第25項所述的運作微處理器的方法,其中該指標包含傳送至該微處理器的一外部輸入。
- 如申請專利範圍第25項所述的運作微處理器的方法,更包含:在位於該啟動指令集架構定義的一位址上重置後,讀取該些初始指令集架構指令。
- 一種編碼於一計算機裝置的至少一非暫態電腦可使用媒體中的電腦程式產品,包括:一寫入該非暫態電腦可使用媒體的電腦可用程式碼,設定一微處理器,該電腦可用程式碼包括: 一第一程式碼,設定複數個暫存器,該第一程式碼包含該微處理器的一架構描述;一第二程式碼,設定一指標,該指標指示該微處理器的一啟動指令集架構為一x86指令集架構或一ARM指令集架構;一第三程式碼,設定一硬體指令轉譯器,該硬體指令轉譯器將複數個x86指令集架構指令及複數個ARM指令集架構指令轉譯為複數個微指令,其中該硬體指令轉譯器依據該啟動指令集架構之指令,以轉譯複數個初始指令集架構指令,該些初始指令集架構指令是該微處理器在接收一重置訊號後,從一架構型記憶空間所讀取;一第四程式碼,設定一執行管線,該執行管線耦接於該硬體指令轉譯器,該執行管線執行該些微指令,以產生由該些x86指令集架構及ARM指令集架構指令所定義的複數個執行結果;以及其中,該微處理器因應該重置訊號,在該微處理器讀取該些初始指令集架構指令前,初始化位於該些暫存器中且由該啟動指令集架構定義的架構狀態。
- 如申請專利範圍第32項所述的電腦程式產品,其中該指標包含位於該微處理器的微編碼中的一預設值。
- 如申請專利範圍第33項所述的電腦程式產品,更包含:一熔絲,可被燒斷以變更該微編碼中的該預設值。
- 如申請專利範圍第32項所述的電腦程式產品,其中該指標包含位於該微處理器的一暫存器中的一位元,該位元具有因應該重置訊號的一預設值。
- 如申請專利範圍第32項所述的電腦程式產品,其中該指標包含傳送至該微處理器的一外部輸入。
- 如申請專利範圍第32項所述的電腦程式產品,其中該微處理器因應該重置訊號,於該啟動指令集架構定義的一位址上,從該架構型記憶空間讀取該些初始指令集架構指令。
- 一種微處理器,包含:一指令快取儲存器,將多個指令儲存至快取儲存器,該些指令包含多個x86指令集架構機器語言程式以及多個ARM指令集架構機器語言程式;一硬體指令轉譯器,耦接該指令快取儲存器,其中該硬體指令轉譯器可執行的邏輯運算包含:根據從該指令快取儲存器所接收的複數個指令位元組是屬於該些x86指令集架構機器語言程式或該些ARM指令集架構機器語言程式的一資料區段,對該些指令位元組執行預先解碼,該資料區段包括複數個x86指令集架構指令或複數個ARM指令集架構指令;對每一個預先解碼後的指令位元組的一長度執行解碼,並提供至少一指標,該指標係指示該些指令位元組中 的哪一個位元組為該些x86指令集架構指令或該些ARM指令集架構指令的開始位元組或結束位元組;將該些x86指令集架構及ARM指令集架構指令轉譯成多個微指令,該些微指令由該微處理器的一微指令集所定義,其中該些微指令的編碼方式係有別於該些指令位元組的編碼方式,該些指令位元組由該些x86指令集架構及ARM指令集架構指令的一指令集所定義;以及一執行管線,耦接於該硬體指令轉譯器,其中該執行管線執行該些微指令,以產生由該些x86指令集架構及ARM指令集架構指令所定義的複數個執行結果。
- 如申請專利範圍第38項所述的微處理器,更包含:一指令模式指標,指示出該x86指令集架構或ARM指令集架構;以及一指令位址暫存器,維持一記憶體位址,該記憶體位址與下一個要執行的指令集架構機器語言程式指令相關;其中該微處理器依據由該指令模式指標指示出的該x86指令集架構或ARM指令集架構的語意來更新該指令位址暫存器;其中該微處理器依據維持於該指令模式指標中的該記憶體位址,從該指令快取儲存器中讀取該些x86指令集架構或ARM指令集架構指令。
- 如申請專利範圍第39項所述的微處理器,其中該硬體指令轉譯器包含:一唯讀記憶體,維持多個唯讀記憶體指令,該些唯讀記憶體指令產生該些微指令的至少一部份,以提供至該執行管線;以及一微指令位址暫存器,維持一位址,該位址指標至該唯讀記憶體中的下一個該唯讀記憶體指令,其中該微指令位址暫存器係有別於該指令位址暫存器。
- 一種微處理器,包含:一硬體指令轉譯器,該硬體指令轉譯器可執行的邏輯運算包含:根據該硬體指令轉譯器所接收的複數個指令位元組是屬於一x86指令集架構機器語言程式或一ARM指令集架構機器語言程式的一資料區段,對該些指令位元組執行預先解碼;對每一個預先解碼後的指令位元組的一長度執行解碼,並提供至少一指標,該指標係指示哪一個位元組為該x86指令集架構指令位元組或該ARM指令集架構指令位元組的開始位元組或結束位元組;將該些指令位元組轉譯為多個微指令,該些指令位元組包含該些x86指令集架構指令位元組以及該些ARM指令 集架指令位元組,該些微指令由該微處理器的一微指令集所定義,其中該些微指令的編碼方式係有別於該些指令位元組的編碼方式,該些指令位元組由該x86指令集架構及ARM指令集架構的指令集所定義;以及一執行管線,耦接於該硬體指令轉譯器,其中該執行管線執行該些微指令,以產生由該些x86指令集架構及ARM指令集架構指令所定義的複數個執行結果;其中該微處理器每一次執行該些x86指令集架構及ARM指令集架構指令的其中之一時,該硬體指令轉譯器將該指令集架構指令轉譯為該些微指令,以提供該執行管線執行。
- 一種微處理器,包含:一硬體指令轉譯器,該硬體指令轉譯器可執行的邏輯運算包含:根據該硬體指令轉譯器所接收的複數個指令位元組是屬於一x86指令集架構機器語言程式或一ARM指令集架構機器語言程式的一資料區段,對該些指令位元組執行預先解碼,該資料區段包括複數個x86指令集架構指令或複數個ARM指令集架構指令;對每一個預先解碼後的指令位元組的一長度執行解碼,並提供至少一指標,該指標係指示該些指令位元組中 的哪一個位元組為該x86指令集架構指令或該ARM指令集架構指令的開始位元組或結束位元組;將該些x86指令集架構以及ARM指令集架構指令轉譯為多個微指令,該些微指令由該微處理器的一微指令集所定義,其中該些微指令的編碼方式係有別於該些指令位元組的編碼方式,該些指令位元組由該些x86指令集架構及ARM指令集架構指令的一指令集所定義;以及一執行管線,耦接該硬體指令轉譯器,其中該執行管線執行該微些指令,以產生由該些x86指令集架構及ARM指令集架構指令所定義的複數個執行結果;其中由該硬體指令轉譯器提供給該執行管線的該些微指令係有別於該執行管線執行該些微指令所產生的該些執行結果。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161473062P | 2011-04-07 | 2011-04-07 | |
US201161473067P | 2011-04-07 | 2011-04-07 | |
US201161473069P | 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 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201303720A TW201303720A (zh) | 2013-01-16 |
TWI514266B true TWI514266B (zh) | 2015-12-21 |
Family
ID=45001635
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101112325A TWI514266B (zh) | 2011-04-07 | 2012-04-06 | 可執行x86指令集架構及ARM指令集架構機器語言程式指令的微處理器及其運作方法與編碼於一計算機裝置的至少一非暫態電腦可使用媒體中的電腦程式產品 |
Country Status (4)
Country | Link |
---|---|
US (2) | US8880851B2 (zh) |
EP (4) | EP2626782B1 (zh) |
CN (2) | CN102707926B (zh) |
TW (1) | TWI514266B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10203942B2 (en) | 2017-06-09 | 2019-02-12 | National Chiao Tung University | Binary-code translation device and method |
Families Citing this family (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9146742B2 (en) | 2011-04-07 | 2015-09-29 | Via Technologies, Inc. | Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA |
US9292470B2 (en) | 2011-04-07 | 2016-03-22 | Via Technologies, Inc. | Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program |
US9128701B2 (en) | 2011-04-07 | 2015-09-08 | Via Technologies, Inc. | Generating constant for microinstructions from modified immediate field during instruction translation |
US9378019B2 (en) | 2011-04-07 | 2016-06-28 | Via Technologies, Inc. | Conditional load instructions in an out-of-order execution microprocessor |
US9176733B2 (en) | 2011-04-07 | 2015-11-03 | Via Technologies, Inc. | Load multiple and store multiple instructions in a microprocessor that emulates banked registers |
US9898291B2 (en) | 2011-04-07 | 2018-02-20 | Via Technologies, Inc. | Microprocessor with arm and X86 instruction length decoders |
US9645822B2 (en) | 2011-04-07 | 2017-05-09 | Via Technologies, Inc | Conditional store instructions in an out-of-order execution microprocessor |
US9317288B2 (en) | 2011-04-07 | 2016-04-19 | Via Technologies, Inc. | Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline |
US9244686B2 (en) | 2011-04-07 | 2016-01-26 | Via Technologies, Inc. | Microprocessor that translates conditional load/store instructions into variable number of microinstructions |
US8924695B2 (en) | 2011-04-07 | 2014-12-30 | Via Technologies, Inc. | Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor |
US8880857B2 (en) | 2011-04-07 | 2014-11-04 | Via Technologies, Inc. | Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor |
US9043580B2 (en) | 2011-04-07 | 2015-05-26 | Via Technologies, Inc. | Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA) |
US9032189B2 (en) | 2011-04-07 | 2015-05-12 | Via Technologies, Inc. | Efficient conditional ALU instruction in read-port limited register file microprocessor |
US9274795B2 (en) | 2011-04-07 | 2016-03-01 | Via Technologies, Inc. | Conditional non-branch instruction prediction |
US9141389B2 (en) | 2011-04-07 | 2015-09-22 | Via Technologies, Inc. | Heterogeneous ISA microprocessor with shared hardware ISA registers |
US9336180B2 (en) * | 2011-04-07 | 2016-05-10 | Via Technologies, Inc. | Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode |
US8880851B2 (en) | 2011-04-07 | 2014-11-04 | Via Technologies, Inc. | Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline |
US9720730B2 (en) * | 2011-12-30 | 2017-08-01 | Intel Corporation | Providing an asymmetric multicore processor system transparently to an operating system |
US9836316B2 (en) * | 2012-09-28 | 2017-12-05 | Intel Corporation | Flexible acceleration of code execution |
US9256427B2 (en) * | 2012-12-11 | 2016-02-09 | International Business Machines Corporation | Tracking multiple conditions in a general purpose register and instruction therefor |
US9377957B2 (en) * | 2013-02-12 | 2016-06-28 | Marvell World Trade Ltd. | Method and apparatus for latency reduction |
TWI492157B (zh) * | 2013-03-05 | 2015-07-11 | Andes Technology Corp | 處理中斷要求事件的裝置與方法 |
US9525586B2 (en) * | 2013-03-15 | 2016-12-20 | Intel Corporation | QoS based binary translation and application streaming |
US9330028B2 (en) * | 2014-03-27 | 2016-05-03 | Intel Corporation | Instruction and logic for a binary translation mechanism for control-flow security |
GB2526849B (en) * | 2014-06-05 | 2021-04-14 | Advanced Risc Mach Ltd | Dynamic cache allocation policy adaptation in a data processing apparatus |
US9940733B2 (en) * | 2014-06-26 | 2018-04-10 | Intel Corporation | Virtual memory supported compression control surfaces |
CN105993004B (zh) * | 2014-07-21 | 2019-04-02 | 上海兆芯集成电路有限公司 | 转译后备缓冲器、操作其的方法以及包含其的处理器 |
BR112017001981B1 (pt) * | 2014-07-30 | 2023-05-02 | Movidius Limited | Método para gerenciar buffer de instruções, sistema e memória legível por computador relacionados |
US9971535B2 (en) | 2014-11-05 | 2018-05-15 | Industrial Technology Research Institute | Conversion method for reducing power consumption and computing apparatus using the same |
KR101819315B1 (ko) * | 2014-12-14 | 2018-01-16 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 비순차 프로세서에서 작성 결합 메모리 공간 접근에 따라 로드 리플레이를 억제하기 위한 장치 및 방법 |
US10146540B2 (en) * | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd | Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor |
US10387159B2 (en) * | 2015-02-04 | 2019-08-20 | Intel Corporation | Apparatus and method for architectural performance monitoring in binary translation systems |
JP6678185B2 (ja) * | 2015-04-10 | 2020-04-08 | グーグル エルエルシー | ネイティブ・クライアントへのバイナリ変換 |
GB2554553B (en) * | 2015-04-10 | 2021-12-01 | Google Llc | Binary translation on shared object level |
US9507891B1 (en) | 2015-05-29 | 2016-11-29 | International Business Machines Corporation | Automating a microarchitecture design exploration environment |
GB2546465B (en) * | 2015-06-05 | 2018-02-28 | Advanced Risc Mach Ltd | Modal processing of program instructions |
CN106599990B (zh) * | 2015-10-08 | 2019-04-09 | 上海兆芯集成电路有限公司 | 具有神经存储器的神经网络单元和集体将来自神经存储器的数据列移位的神经处理单元阵列 |
CN106447035B (zh) * | 2015-10-08 | 2019-02-26 | 上海兆芯集成电路有限公司 | 具有可变率执行单元的处理器 |
US10169043B2 (en) | 2015-11-17 | 2019-01-01 | Microsoft Technology Licensing, Llc | Efficient emulation of guest architecture instructions |
US9996329B2 (en) | 2016-02-16 | 2018-06-12 | Microsoft Technology Licensing, Llc | Translating atomic read-modify-write accesses |
US10157164B2 (en) * | 2016-09-20 | 2018-12-18 | Qualcomm Incorporated | Hierarchical synthesis of computer machine instructions |
CN106406814B (zh) * | 2016-09-30 | 2019-06-14 | 上海兆芯集成电路有限公司 | 处理器和将架构指令转译成微指令的方法 |
CN107341116B (zh) * | 2017-06-20 | 2019-12-27 | 太原鹏跃电子科技有限公司 | 基于arm的pc/104通信方法及其写入、读取时序 |
JP6950385B2 (ja) * | 2017-09-12 | 2021-10-13 | オムロン株式会社 | 制御装置および制御方法 |
US10552131B2 (en) * | 2017-10-16 | 2020-02-04 | Microsoft Technology Licensing, Llc | Barrier reduction during code translation |
CN107885504B (zh) * | 2017-12-12 | 2021-01-12 | 北京四方继保自动化股份有限公司 | 一种异构的多平台系统控制逻辑一致性校验的方法 |
CN108958798B (zh) * | 2018-06-15 | 2021-04-20 | 上海兆芯集成电路有限公司 | 指令翻译电路、处理器电路及其执行方法 |
US10884751B2 (en) | 2018-07-13 | 2021-01-05 | Advanced Micro Devices, Inc. | Method and apparatus for virtualizing the micro-op cache |
CN110851182B (zh) * | 2019-10-24 | 2021-12-03 | 珠海市杰理科技股份有限公司 | 指令获取方法、装置、计算机设备和存储介质 |
CN110806899B (zh) * | 2019-11-01 | 2021-08-24 | 西安微电子技术研究所 | 一种基于指令扩展的流水线紧耦合加速器接口结构 |
CN111813464B (zh) * | 2020-08-31 | 2020-12-11 | 新华三半导体技术有限公司 | 一种芯片配置方法、监测模块及芯片 |
CN112269597B (zh) * | 2020-10-23 | 2023-03-24 | 中国人民解放军战略支援部队信息工程大学 | 处理器指令异常行为检测方法及系统 |
CN113220300A (zh) * | 2021-04-29 | 2021-08-06 | 麒麟软件有限公司 | 一种应用于Android系统x86架构上的ARM指令集转换方法 |
EP4357957A1 (en) * | 2022-10-18 | 2024-04-24 | Thales Dis France Sas | Method for securing against physical or logical attacks an execution of a machine language instructions code |
Citations (4)
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 |
TW475148B (en) * | 1999-09-01 | 2002-02-01 | Intel Corp | Branch instruction for processor architecture |
TW539965B (en) * | 1999-02-05 | 2003-07-01 | Tensilica Inc | Automated processor generation system for designing a configurable processor and method for the same |
US6611909B1 (en) * | 1997-12-02 | 2003-08-26 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and apparatus for dynamically translating program instructions to microcode instructions |
Family Cites Families (140)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4388682A (en) * | 1979-09-04 | 1983-06-14 | Raytheon Company | Microprogrammable instruction translator |
US5235686A (en) | 1987-02-24 | 1993-08-10 | Texas Instruments Incorporated | Computer system having mixed macrocode and microcode |
US6112287A (en) | 1993-03-01 | 2000-08-29 | Busless Computers Sarl | Shared memory multiprocessor system using a set of serial links as processors-memory switch |
US5617574A (en) | 1989-05-04 | 1997-04-01 | Texas Instruments Incorporated | Devices, systems and methods for conditional instructions |
US5307504A (en) | 1991-03-07 | 1994-04-26 | Digital Equipment Corporation | System and method for preserving instruction granularity when translating program code from a computer having a first architecture to a computer having a second reduced architecture during the occurrence of interrupts due to asynchronous events |
US5226164A (en) | 1991-04-24 | 1993-07-06 | International Business Machines Corporation | Millicode register management and pipeline reset |
US5438668A (en) | 1992-03-31 | 1995-08-01 | Seiko Epson Corporation | System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer |
US5396634A (en) | 1992-09-30 | 1995-03-07 | Intel Corporation | Method and apparatus for increasing the decoding speed of a microprocessor |
GB2282245B (en) | 1993-09-23 | 1998-04-15 | Advanced Risc Mach Ltd | Execution of data processing instructions |
US6378062B1 (en) | 1994-01-04 | 2002-04-23 | Intel Corporation | Method and apparatus for performing a store operation |
US5781750A (en) | 1994-01-11 | 1998-07-14 | Exponential Technology, Inc. | Dual-instruction-set architecture CPU with hidden software emulation mode |
US5781457A (en) | 1994-03-08 | 1998-07-14 | Exponential Technology, Inc. | Merge/mask, rotate/shift, and boolean operations from two instruction sets executed in a vectored mux on a dual-ALU |
US5574927A (en) | 1994-03-25 | 1996-11-12 | International Meta Systems, Inc. | RISC architecture computer configured for emulation of the instruction set of a target computer |
DE69506623T2 (de) | 1994-06-03 | 1999-07-22 | Motorola, Inc., Schaumburg, Ill. | Datenprozessor mit einer Ausführungseinheit zur Durchführung von Ladebefehlen und Verfahren zu seinem Betrieb |
US5685009A (en) | 1994-07-20 | 1997-11-04 | Exponential Technology, Inc. | Shared floating-point registers and register port-pairing in a dual-architecture CPU |
US5481693A (en) | 1994-07-20 | 1996-01-02 | Exponential Technology, Inc. | Shared register architecture for a dual-instruction-set CPU |
US5796981A (en) | 1994-09-16 | 1998-08-18 | Cirrus Logic, Inc. | Method and apparatus for providing register compatibility between non-identical integrated circuits |
US6496922B1 (en) | 1994-10-31 | 2002-12-17 | Sun Microsystems, Inc. | Method and apparatus for multiplatform stateless instruction set architecture (ISA) using ISA tags on-the-fly instruction translation |
US5832297A (en) | 1995-04-12 | 1998-11-03 | Advanced Micro Devices, Inc. | Superscalar microprocessor load/store unit employing a unified buffer and separate pointers for load and store operations |
US5887152A (en) | 1995-04-12 | 1999-03-23 | Advanced Micro Devices, Inc. | Load/store unit with multiple oldest outstanding instruction pointers for completing store and load/store miss instructions |
JP3451595B2 (ja) | 1995-06-07 | 2003-09-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ |
JP3505266B2 (ja) | 1995-06-15 | 2004-03-08 | 三洋電機株式会社 | プログラム実行装置 |
US6643765B1 (en) | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
US5926642A (en) | 1995-10-06 | 1999-07-20 | Advanced Micro Devices, Inc. | RISC86 instruction set |
US6076155A (en) | 1995-10-24 | 2000-06-13 | S3 Incorporated | Shared register architecture for a dual-instruction-set CPU to facilitate data exchange between the instruction sets |
US6185668B1 (en) | 1995-12-21 | 2001-02-06 | Intergraph Corporation | Method and apparatus for speculative execution of instructions |
US5752014A (en) | 1996-04-29 | 1998-05-12 | International Business Machines Corporation | Automatic selection of branch prediction methodology for subsequent branch instruction based on outcome of previous branch prediction |
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 |
GB9622684D0 (en) * | 1996-10-31 | 1997-01-08 | Sgs Thomson Microelectronics | An integrated circuit device and method of communication therwith |
US6374346B1 (en) | 1997-01-24 | 2002-04-16 | Texas Instruments Incorporated | Processor with conditional execution of every instruction |
US20030061471A1 (en) | 1999-07-23 | 2003-03-27 | Masahito Matsuo | Data processor |
AU8495098A (en) | 1997-07-16 | 1999-02-10 | California Institute Of Technology | Improved devices and methods for asynchronous processing |
US5926646A (en) | 1997-09-11 | 1999-07-20 | Advanced Micro Devices, Inc. | Context-dependent memory-mapped registers for transparent expansion of a register file |
US6178482B1 (en) | 1997-11-03 | 2001-01-23 | Brecis Communications | Virtual register sets |
US6438679B1 (en) | 1997-11-03 | 2002-08-20 | Brecis Communications | Multiple ISA support by a processor using primitive operations |
JP3570188B2 (ja) | 1997-12-25 | 2004-09-29 | 富士通株式会社 | 可変長符号処理機構を有するデータ処理装置 |
US6353883B1 (en) | 1998-08-04 | 2002-03-05 | Intel Corporation | Method and apparatus for performing predicate prediction |
US6684323B2 (en) | 1998-10-27 | 2004-01-27 | Stmicroelectronics, Inc. | Virtual condition codes |
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 |
US8127121B2 (en) | 1999-01-28 | 2012-02-28 | Ati Technologies Ulc | Apparatus for executing programs for a first computer architechture on a computer of a second architechture |
US7941647B2 (en) | 1999-01-28 | 2011-05-10 | Ati Technologies Ulc | Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination |
EP1050803B1 (en) | 1999-05-03 | 2007-01-17 | STMicroelectronics S.A. | Guarded computer instruction execution |
GB2355084B (en) | 1999-07-21 | 2004-04-28 | Element 14 Ltd | Setting condition values in a computer |
US6442679B1 (en) | 1999-08-17 | 2002-08-27 | Compaq Computer Technologies Group, L.P. | Apparatus and method for guard outcome prediction |
US6880152B1 (en) | 1999-10-13 | 2005-04-12 | Transmeta Corporation | Method of determining a mode of code generation |
US6651159B1 (en) | 1999-11-29 | 2003-11-18 | Ati International Srl | Floating point register stack management for CISC |
JP2001195250A (ja) | 2000-01-13 | 2001-07-19 | Mitsubishi Electric Corp | 命令トランスレータ、トランスレータ付命令メモリおよびそれらを用いたデータ処理装置 |
US7124286B2 (en) | 2000-01-14 | 2006-10-17 | Advanced Micro Devices, Inc. | Establishing an operating mode in a processor |
US7191310B2 (en) | 2000-01-19 | 2007-03-13 | Ricoh Company, Ltd. | Parallel processor and image processing apparatus adapted for nonlinear processing through selection via processor element numbers |
US7353368B2 (en) | 2000-02-15 | 2008-04-01 | Intel Corporation | Method and apparatus for achieving architectural correctness in a multi-mode processor providing floating-point support |
US6654875B1 (en) | 2000-05-17 | 2003-11-25 | Unisys Corporation | Dual microcode RAM address mode instruction execution using operation code RAM storing control words with alternate address indicator |
US6647489B1 (en) | 2000-06-08 | 2003-11-11 | Ip-First, Llc | Compare branch instruction pairing within a single integer pipeline |
US6571316B1 (en) | 2000-06-16 | 2003-05-27 | Transmeta Corporation | Cache memory array for multiple address spaces |
US6871273B1 (en) | 2000-06-22 | 2005-03-22 | International Business Machines Corporation | Processor and method of executing a load instruction that dynamically bifurcate a load instruction into separately executable prefetch and register operations |
US6877084B1 (en) | 2000-08-09 | 2005-04-05 | Advanced Micro Devices, Inc. | Central processing unit (CPU) accessing an extended register set in an extended register mode |
GB2367653B (en) | 2000-10-05 | 2004-10-20 | Advanced Risc Mach Ltd | Restarting translated instructions |
US7873814B1 (en) | 2000-12-22 | 2011-01-18 | Lsi Corporation | Microcode based hardware translator to support a multitude of processors |
US7162621B2 (en) | 2001-02-21 | 2007-01-09 | Mips Technologies, Inc. | Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration |
US6889312B1 (en) | 2001-04-02 | 2005-05-03 | Advanced Micro Devices, Inc. | Selective zero extension based on operand size |
US6666383B2 (en) | 2001-05-31 | 2003-12-23 | Koninklijke Philips Electronics N.V. | Selective access to multiple registers having a common name |
US6807616B1 (en) | 2001-08-09 | 2004-10-19 | Advanced Micro Devices, Inc. | Memory address checking in a proccesor that support both a segmented and a unsegmented address space |
US7272622B2 (en) | 2001-10-29 | 2007-09-18 | Intel Corporation | Method and apparatus for parallel shift right merge of data |
US20100274988A1 (en) | 2002-02-04 | 2010-10-28 | Mimar Tibet | Flexible vector modes of operation for SIMD processor |
US6898697B1 (en) | 2002-03-29 | 2005-05-24 | Advanced Micro Devices, Inc. | Efficient method for mode change detection and synchronization |
US7155598B2 (en) | 2002-04-02 | 2006-12-26 | Ip-First, Llc | Apparatus and method for conditional instruction execution |
US7051190B2 (en) | 2002-06-25 | 2006-05-23 | Intel Corporation | Intra-instruction fusion |
US6920546B2 (en) | 2002-08-13 | 2005-07-19 | Intel Corporation | Fusion of processor micro-operations |
US6981131B2 (en) | 2002-09-04 | 2005-12-27 | Arm Limited | Early condition code evaluation at pipeline stages generating pass signals for controlling coprocessor pipeline executing same conditional instruction |
JP3958662B2 (ja) | 2002-09-25 | 2007-08-15 | 松下電器産業株式会社 | プロセッサ |
US7299343B2 (en) | 2002-09-27 | 2007-11-20 | Verisilicon Holdings (Cayman Islands) Co. Ltd. | System and method for cooperative execution of multiple branching instructions in a processor |
US20040064684A1 (en) | 2002-09-30 | 2004-04-01 | Kalluri Seshagiri P. | System and method for selectively updating pointers used in conditionally executed load/store with update instructions |
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 |
EP1447742A1 (en) | 2003-02-11 | 2004-08-18 | STMicroelectronics S.r.l. | Method and apparatus for translating instructions of an ARM-type processor into instructions for a LX-type processor |
US7437532B1 (en) | 2003-05-07 | 2008-10-14 | Marvell International Ltd. | Memory mapped register file |
GB2402510A (en) | 2003-06-05 | 2004-12-08 | Advanced Risc Mach Ltd | Predication instruction within a data processing system |
US20040255103A1 (en) | 2003-06-11 | 2004-12-16 | Via-Cyrix, Inc. | Method and system for terminating unnecessary processing of a conditional instruction in a processor |
US7260815B1 (en) | 2003-06-30 | 2007-08-21 | Vmware, Inc. | Method and apparatus for managing registers in a binary translator |
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 |
TWI223756B (en) | 2003-10-09 | 2004-11-11 | Univ Nat Sun Yat Sen | Automatic register backup/restore system and method |
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 |
EP1687713A1 (en) | 2003-10-24 | 2006-08-09 | Microchip Technology Incorporated | Method and system for alternating instructions sets in a central processing unit |
GB2409059B (en) | 2003-12-09 | 2006-09-27 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
GB2411973B (en) | 2003-12-09 | 2006-09-27 | Advanced Risc Mach Ltd | Constant generation in SMD processing |
US20050188185A1 (en) | 2004-02-20 | 2005-08-25 | Grochowski Edward T. | Method and apparatus for predicate implementation using selective conversion to micro-operations |
US20050216714A1 (en) | 2004-03-25 | 2005-09-29 | Intel Corporation | Method and apparatus for predicting confidence and value |
US9189230B2 (en) | 2004-03-31 | 2015-11-17 | Intel Corporation | Method and system to provide concurrent user-level, non-privileged shared resource thread creation and execution |
US7478388B1 (en) | 2004-04-21 | 2009-01-13 | Vmware, Inc. | Switching between multiple software entities using different operating modes of a processor in a computer system |
US7647480B2 (en) | 2004-07-27 | 2010-01-12 | Arm Limited | Handling of conditional instructions in a data processing apparatus |
US7146491B2 (en) | 2004-10-26 | 2006-12-05 | Arm Limited | Apparatus and method for generating constant values |
US20060155974A1 (en) | 2005-01-07 | 2006-07-13 | Moyer William C | Data processing system having flexible instruction capability and selection mechanism |
US7210024B2 (en) | 2005-02-10 | 2007-04-24 | Qualcomm Incorporated | Conditional instruction execution via emissary instruction for condition evaluation |
WO2006112045A1 (ja) | 2005-03-31 | 2006-10-26 | Matsushita Electric Industrial Co., Ltd. | 演算処理装置 |
US7624256B2 (en) | 2005-04-14 | 2009-11-24 | Qualcomm Incorporated | System and method wherein conditional instructions unconditionally provide output |
US8082430B2 (en) | 2005-08-09 | 2011-12-20 | Intel Corporation | Representing a plurality of instructions with a fewer number of micro-operations |
US7421566B2 (en) | 2005-08-12 | 2008-09-02 | International Business Machines Corporation | Implementing instruction set architectures with non-contiguous register file specifiers |
JP4986431B2 (ja) | 2005-09-29 | 2012-07-25 | ルネサスエレクトロニクス株式会社 | プロセッサ |
US8904151B2 (en) | 2006-05-02 | 2014-12-02 | International Business Machines Corporation | Method and apparatus for the dynamic identification and merging of instructions for execution on a wide datapath |
JP2008071130A (ja) | 2006-09-14 | 2008-03-27 | Ricoh Co Ltd | Simd型マイクロプロセッサ |
US7925868B2 (en) | 2007-01-24 | 2011-04-12 | Arm Limited | Suppressing register renaming for conditional instructions predicted as not executed |
US7827390B2 (en) | 2007-04-10 | 2010-11-02 | Via Technologies, Inc. | Microprocessor with private microcode RAM |
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 |
US8166279B2 (en) | 2007-05-03 | 2012-04-24 | International Business Machines Corporation | Method for predictive decoding of a load tagged pointer instruction |
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 |
US7818550B2 (en) | 2007-07-23 | 2010-10-19 | International Business Machines Corporation | Method and apparatus for dynamically fusing instructions at execution time in a processor of an information handling system |
US7836278B2 (en) | 2007-07-25 | 2010-11-16 | Advanced Micro Devices, Inc. | Three operand instruction extension for X86 architecture |
TWI403954B (zh) | 2007-08-17 | 2013-08-01 | O2Micro Int Ltd | 具有指令集之電子系統、微控制器及其指令執行方法 |
US8069340B2 (en) | 2008-02-08 | 2011-11-29 | Via Technologies, Inc. | Microprocessor with microarchitecture for efficiently executing read/modify/write memory operand instructions |
CN100555225C (zh) * | 2008-03-17 | 2009-10-28 | 中国科学院计算技术研究所 | 一种支持x86虚拟机的risc处理器装置及方法 |
US8090931B2 (en) | 2008-09-18 | 2012-01-03 | Via Technologies, Inc. | Microprocessor with fused store address/store data microinstruction |
US9274796B2 (en) | 2009-05-11 | 2016-03-01 | Arm Finance Overseas Limited | Variable register and immediate field encoding in an instruction set architecture |
US8069339B2 (en) | 2009-05-20 | 2011-11-29 | Via Technologies, Inc. | Microprocessor with microinstruction-specifiable non-architectural condition code flag register |
CN101866280B (zh) | 2009-05-29 | 2014-10-29 | 威盛电子股份有限公司 | 微处理器及其执行方法 |
US8301865B2 (en) | 2009-06-29 | 2012-10-30 | Oracle America, Inc. | System and method to manage address translation requests |
US9501286B2 (en) | 2009-08-07 | 2016-11-22 | Via Technologies, Inc. | Microprocessor with ALU integrated into load unit |
CN101907984B (zh) * | 2009-08-07 | 2014-10-29 | 威盛电子股份有限公司 | 指令处理方法以及其所适用的超纯量管线微处理器 |
CN101866279B (zh) * | 2009-08-14 | 2012-05-30 | 威盛电子股份有限公司 | 微处理器及其相关方法 |
US20110047357A1 (en) | 2009-08-19 | 2011-02-24 | Qualcomm Incorporated | Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions |
US8826261B1 (en) * | 2010-02-25 | 2014-09-02 | Bloom Energy Corporation | Programming processors through CAN interface without changing the boot mode select pins |
GB2478726B (en) | 2010-03-15 | 2013-12-25 | Advanced Risc Mach Ltd | Mapping between registers used by multiple instruction sets |
GB2480285A (en) | 2010-05-11 | 2011-11-16 | Advanced Risc Mach Ltd | Conditional compare instruction which sets a condition code when it is not executed |
US8479176B2 (en) | 2010-06-14 | 2013-07-02 | Intel Corporation | Register mapping techniques for efficient dynamic binary translation |
US20120124346A1 (en) | 2010-11-15 | 2012-05-17 | Arm Limited | Decoding conditional program instructions |
US8914624B2 (en) * | 2010-12-22 | 2014-12-16 | Silicon Laboratories Inc. | Changing the reset state of a processor |
US9176733B2 (en) | 2011-04-07 | 2015-11-03 | Via Technologies, Inc. | Load multiple and store multiple instructions in a microprocessor that emulates banked registers |
EP2695055B1 (en) | 2011-04-07 | 2018-06-06 | VIA Technologies, Inc. | Conditional load instructions in an out-of-order execution microprocessor |
US9146742B2 (en) | 2011-04-07 | 2015-09-29 | Via Technologies, Inc. | Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA |
US9128701B2 (en) | 2011-04-07 | 2015-09-08 | Via Technologies, Inc. | Generating constant for microinstructions from modified immediate field during instruction translation |
US9317288B2 (en) | 2011-04-07 | 2016-04-19 | Via Technologies, Inc. | Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline |
US9274795B2 (en) | 2011-04-07 | 2016-03-01 | Via Technologies, Inc. | Conditional non-branch instruction prediction |
US8924695B2 (en) | 2011-04-07 | 2014-12-30 | Via Technologies, Inc. | Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor |
US9292470B2 (en) | 2011-04-07 | 2016-03-22 | Via Technologies, Inc. | Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program |
US9336180B2 (en) | 2011-04-07 | 2016-05-10 | Via Technologies, Inc. | Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode |
US9032189B2 (en) | 2011-04-07 | 2015-05-12 | Via Technologies, Inc. | Efficient conditional ALU instruction in read-port limited register file microprocessor |
US9378019B2 (en) | 2011-04-07 | 2016-06-28 | Via Technologies, Inc. | Conditional load instructions in an out-of-order execution microprocessor |
US20120260073A1 (en) | 2011-04-07 | 2012-10-11 | Via Technologies, Inc. | Emulation of execution mode banked registers |
US9141389B2 (en) | 2011-04-07 | 2015-09-22 | Via Technologies, Inc. | Heterogeneous ISA microprocessor with shared hardware ISA registers |
US9043580B2 (en) | 2011-04-07 | 2015-05-26 | Via Technologies, Inc. | Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA) |
US8880851B2 (en) | 2011-04-07 | 2014-11-04 | Via Technologies, Inc. | Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline |
US8880857B2 (en) | 2011-04-07 | 2014-11-04 | Via Technologies, Inc. | Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor |
US20140095847A1 (en) | 2012-09-28 | 2014-04-03 | Doron Orenstein | Instruction and highly efficient micro-architecture to enable instant context switch for user-level threading |
-
2011
- 2011-09-01 US US13/224,310 patent/US8880851B2/en active Active
- 2011-10-19 EP EP13166141.5A patent/EP2626782B1/en active Active
- 2011-10-19 EP EP11185755.3A patent/EP2508978B1/en active Active
- 2011-10-19 EP EP13166139.9A patent/EP2624127B1/en active Active
- 2011-10-19 EP EP13166140.7A patent/EP2667300B1/en active Active
-
2012
- 2012-04-06 TW TW101112325A patent/TWI514266B/zh active
- 2012-04-09 CN CN201210104287.3A patent/CN102707926B/zh active Active
- 2012-04-09 CN CN201510115612.XA patent/CN104714778B/zh active Active
-
2014
- 2014-10-28 US US14/526,029 patent/US9317301B2/en active Active
Patent Citations (4)
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 |
TW539965B (en) * | 1999-02-05 | 2003-07-01 | Tensilica Inc | Automated processor generation system for designing a configurable processor and method for the same |
TW475148B (en) * | 1999-09-01 | 2002-02-01 | Intel Corp | Branch instruction for processor architecture |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10203942B2 (en) | 2017-06-09 | 2019-02-12 | National Chiao Tung University | Binary-code translation device and method |
TWI660307B (zh) * | 2017-06-09 | 2019-05-21 | 國立交通大學 | 二元碼轉譯裝置及方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2626782B1 (en) | 2017-03-01 |
CN104714778A (zh) | 2015-06-17 |
US9317301B2 (en) | 2016-04-19 |
EP2508978B1 (en) | 2015-12-30 |
US20120260067A1 (en) | 2012-10-11 |
US20150067301A1 (en) | 2015-03-05 |
EP2667300A2 (en) | 2013-11-27 |
EP2626782A3 (en) | 2013-12-25 |
CN102707926B (zh) | 2015-04-08 |
TW201303720A (zh) | 2013-01-16 |
US8880851B2 (en) | 2014-11-04 |
CN102707926A (zh) | 2012-10-03 |
EP2508978A1 (en) | 2012-10-10 |
EP2624127B1 (en) | 2016-09-28 |
EP2626782A2 (en) | 2013-08-14 |
EP2667300B1 (en) | 2017-03-01 |
EP2667300A3 (en) | 2013-12-25 |
EP2624127A1 (en) | 2013-08-07 |
CN104714778B (zh) | 2018-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI514266B (zh) | 可執行x86指令集架構及ARM指令集架構機器語言程式指令的微處理器及其運作方法與編碼於一計算機裝置的至少一非暫態電腦可使用媒體中的電腦程式產品 | |
US9898291B2 (en) | Microprocessor with arm and X86 instruction length decoders | |
TWI474191B (zh) | 控制暫存器對應於異質指令集架構處理器 | |
TWI450196B (zh) | 非循序執行微處理器之條件儲存指令 | |
US9336180B2 (en) | Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode | |
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 | |
US9043580B2 (en) | Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA) | |
US9141389B2 (en) | Heterogeneous ISA microprocessor with shared hardware ISA registers | |
TWI450188B (zh) | 具有條件指令之微處理器、其處理方法及電腦程式產品 | |
US9146742B2 (en) | Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA | |
US9292470B2 (en) | Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program | |
TWI569205B (zh) | 一種微處理器及其操作方法 | |
EP2508982B1 (en) | Control register mapping in heterogenous instruction set architecture processor | |
EP2704002B1 (en) | Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program | |
TWI478065B (zh) | 執行模式備份暫存器之模擬 | |
EP2704001B1 (en) | Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode |