TWI407366B - 具有微代碼之微處理器、在微處理器中儲存資料的方法、以及使用於計算裝置之電腦程式產品 - Google Patents
具有微代碼之微處理器、在微處理器中儲存資料的方法、以及使用於計算裝置之電腦程式產品 Download PDFInfo
- Publication number
- TWI407366B TWI407366B TW097112999A TW97112999A TWI407366B TW I407366 B TWI407366 B TW I407366B TW 097112999 A TW097112999 A TW 097112999A TW 97112999 A TW97112999 A TW 97112999A TW I407366 B TWI407366 B TW I407366B
- Authority
- TW
- Taiwan
- Prior art keywords
- microprocessor
- random access
- access memory
- microinstruction
- user
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 21
- 238000004590 computer program Methods 0.000 title claims description 7
- 230000015654 memory Effects 0.000 claims abstract description 57
- 239000004065 semiconductor Substances 0.000 claims description 3
- 239000000758 substrate Substances 0.000 claims description 2
- 238000004364 calculation method Methods 0.000 claims 2
- 230000004044 response Effects 0.000 abstract description 3
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 235000012431 wafers Nutrition 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- 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
-
- 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/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- 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
- G06F9/30112—Register structure comprising data of variable length
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30138—Extension of register space, e.g. register cache
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Storage Device Security (AREA)
Description
本發明係有關於一種具有微代碼之微處理器,且特別有關於一種微代碼之暫時變動儲存。
微處理器包括一指令集,該指令集係為該微處理器之指令集架構(Instruction Set Architecture,以下簡稱為ISA)的一部分,在本文可稱為微處理器之巨架構(Macrcarchitecture)。該指令集定義了微處理器可執行的合法指令集。一程式設計師(在本文中可稱為使用者)利用該指令集中的指令寫入一程式,以被該微處理器執行。該程式設計師可為撰寫應用程式的應用程式設計師,或者為撰寫作業系統或可執行軟體之系統程式設計師。ISA亦包括暫存器等資源,其可被該指令集中之指令存取。常用之ISA為Intel IA-32與IA-64 ISA,可參照x86架構,其包括一指令集與具有一般功用暫存器之使用者可存取暫存器、數據段暫存器(Segment Registers)、堆疊與基底指標暫存器...等習知的暫存器。
許多新型的微處理器包括一微架構(Microarchitecture),其無法直接以寫入程式直接存取至微處理器ISA中。該微架構包括其本身支援微指令之微指令集,其與上述ISA之使用者可存取指令集不同。該ISA指令集之使用者可存取指令有時可參照巨架構,以分辨其
與微指令集之微指令的不同。微指令較巨指令來的簡單,且可較直接地控制微處理器的硬體。微處理器設計者寫入微代碼,其包括微架構微指令集之微指令,且在微處理器之微架構內執行。典型上,微處理器包括一指令轉譯器,其用以轉譯使用者程式巨指令為微指令集之一或多個微指令,然後分派給微處理器之執行單元以執行指令。若巨指令特別複雜,則該指令轉譯器可呼叫由多個微指令組成之微代碼中的例行程序以執行該ISA指令。當代x86架構ISA微處理器係利用精簡指令集(Reduced Instruction Set Computer,簡稱為RISC)微架構,其包括比IA-32巨架構集明顯簡單之一RISC型態指令集。
因此,微架構典型上包括除了使用者可存取ISA資源以外的其它資源,例如,微代碼專用之額外暫存器,其係為非使用者可存取暫存器。舉例來說,與許多RISC架構微處理器相比,IA-32 ISA之使用者可存取暫存器的數目相對來說是較少的,舉例來說像是RISC型態微指令使用之非使用者可存取暫存器。
近來在微處理器的革新,ISA增加了在微架構所需之額外暫存器總量的需求,以發展新的特色。然而,很不幸地,使用在大量額外暫存器上之實際晶片量可能會被限制。此外,微代碼不應使用系統記憶體以作為額外儲存空間,因為通常是由作業系統來配置與管理系統記憶體的。因此,所需的應是提供微代碼使用之額外儲存空間,其與暫存器相比相對來說速度較快且僅需要較少的晶片區。
本發明實施例揭露了一種具有微代碼之微處理器,包括一使用者可存取暫存器組、一隨機存取記憶體與微代碼。該隨機存取記憶體位於該微處理器之一非使用者可存取位址空間內,其中該隨機存取記憶體較該使用者可存取暫存器組密集,且存取速度較該使用者可存取暫存器組慢。該微代碼包括複數該微處理器之一微指令集之複數微指令。該微指令集包括一第一微指令與一第二微指令。該第一微指令用以將該使用者可存取暫存器組的資料儲存至該隨機存取記憶體。該第二微指令用以將該隨機存取記憶體的資料載入至該使用者可存取暫存器組。
本發明實施例更揭露了一種在微處理器中儲存資料的方法。執行一第一微指令,用以將該微處理器之一使用者可存取暫存器組的資料儲存至該微處理器之一隨機存取記憶體,其中該隨機存取記憶體位於該微處理器之一非使用者可存取位址空間內,其中該隨機存取記憶體較該使用者可存取暫存器組密集,且存取速度較該使用者可存取暫存器組慢。執行一第二微指令,用以將該隨機存取記憶體的資料載入至該使用者可存取暫存器組,其中該第一與第二微指令係為該微處理器之一微指令集之複數微指令中的二個微指令。
本發明實施例更揭露了一種使用於計算裝置之電腦程式產品,該電腦程式產品包括一電腦可用儲存媒體。該電腦可用儲存媒體包括用以提供一微處理器之電腦可讀取程
式碼。該電腦可讀取程式碼包括第一程式碼、第二程式碼與第三程式碼。第一程式碼用以提供一使用者可存取暫存器組。第二程式碼用以提供位於該微處理器之一非使用者可存取位址空間內之一隨機存取記憶體,其中該隨機存取記憶體較該使用者可存取暫存器組密集,且存取速度較該使用者可存取暫存器組慢。第三程式碼用以提供包括複數該微處理器之一微指令集之複數微指令之微代碼。該微指令集包括一第一微指令與一第二微指令。該第一微指令用以將該使用者可存取暫存器組的資料儲存至該隨機存取記憶體。該第二微指令用以將該隨機存取記憶體的資料載入至該使用者可存取暫存器組。
本發明實施例更揭露了一種提供微處理器的方法。提供描述該微處理器之電腦可讀取程式碼,並且將該電腦可讀取程式碼作為一電腦資料訊號並傳送至一網路上。提供該電腦可讀取程式碼包括第一程式碼、第二程式碼與第三程式碼。第一程式碼用以提供一使用者可存取暫存器組。第二程式碼用以提供位於該微處理器之一非使用者可存取位址空間內之一隨機存取記憶體,其中該隨機存取記憶體較該使用者可存取暫存器組密集,且存取速度較該使用者可存取暫存器組慢。第三程式碼用以提供包括複數該微處理器之一微指令集之複數微指令之微代碼。該微指令集包括一第一微指令與一第二微指令。該第一微指令用以將該使用者可存取暫存器組的資料儲存至該隨機存取記憶體。該第二微指令用以將該隨機存取記憶體的資料載入至該使
用者可存取暫存器組。
為了讓本發明之目的、特徵、及優點能更明顯易懂,下文特舉較佳實施例,並配合所附圖式第1圖至第11圖,做詳細之說明。本發明說明書提供不同的實施例來說明本發明不同實施方式的技術特徵。其中,實施例中的各元件之配置係為說明之用,並非用以限制本發明。且實施例中圖式標號之部分重複,係為了簡化說明,並非意指不同實施例之間的關聯性。
第1圖係顯示本發明實施例之管線式微處理器100的架構示意圖,其包括一私有隨機存取記憶體(Private Random Access Memory,PRAM)126。在一實施例中,第1圖之微處理器100的元件(包括私有隨機存取記憶體126)係整合在一單一半導體基板上。由於私有隨機存取記憶體126不可被使用者代碼巨指令存取,故其係為一私有隨機存取記憶體,但其可被微處理器100經由其微代碼128來存取。此外,微處理器100包括在其微指令集中之不同微指令,用以存取私有隨機存取記憶體126,如上所述。
微處理器100包括一指令緩衝區102,其用以緩衝來自耦接於微處理器100之系統記憶體的使用者程式巨指令。微處理器100亦包括一指令收件器(Fetcher)104,其耦接於指令緩衝區102,用以自指令緩衝區102與系統記憶體取得巨指令。微處理器100亦包括一指令轉譯器106,
其耦接於指令收件器104,用以解碼取得之微處理器100之巨指令集之巨指令,並且轉譯該取得的巨指令為微處理器100之巨指令集之微指令。微處理器100亦包括loadPRAM與storePRAM微指令,而微指令亦包括一般記憶體載入/儲存微指令。
微處理器100亦包括微代碼128。微代碼128包括該微處理器之一微指令集之複數微指令。部分的微代碼128包括微指令之例行程序(或序列),以執行巨指令或處理例外的情況。特別的是,當指令轉譯器106解碼某些巨指令(例如,相對複雜的巨指令),其轉換控制給微代碼128中之適當的例行程序,而非直接產生轉譯所得的微指令。
特別的是,微指令集包括一loadPRAM微指令與一storePRAM微指令,其格式如第1圖所示。
loadPRAM PRAM_address,register;storePRAM register,PRAM_address。
loadPRAM微指令之PRAM_address運算元指定私有隨機存取記憶體126中之一來源位置,該來源位置中的資料係載入至loadPRAM微指令之暫存器運算元指定之一目的暫存器。storePRAM微指令之PRAM_address運算元指定私有隨機存取記憶體126中之一目的位置,該目的位置中的資料係來自storePRAM微指令之暫存器運算元指定之一來源暫存器。指定的暫存器可為使用者可存取暫存器組
112中暫存器的其中一暫存器,或者為非使用者可為存取暫存器組134中暫存器的其中一暫存器,其說明如下。
指令分派器108(其耦接於指令轉譯器106)分派指令轉譯器106或微代碼128的微指令給與指令分派器108相耦接之多個功能單元的其中之一。功能單元包括一載入/儲存單元122,以及一或多個執行單元124,例如,整合單元、浮點單元以及單指令多資料(Single Instruction Multiple Data,SIMD)單元。特別的是,指令分派器108分派loadPRAM與storePRAM微指令給載入/儲存單元122。
微處理器100亦包括該巨架構之一使用者可存取暫存器組112,其提供指令運算元給上述功能單元,並且自上述功能單元接收指令運算後的結果。微處理器100亦包括該巨架構之一非使用者可存取暫存器組134,其提供指令運算元給上述功能單元,並且自上述功能單元接收指令運算後的結果。非使用者可存取暫存器組134僅可利用微指令來存取,且不可利用使用者巨指令存取。非使用者可存取暫存器組134係被微代碼128使用以作為暫時儲存之用,並用以執行運算。非使用者可存取暫存器組134可被微代碼128而非私有隨機存取記憶體126使用在某些特定目的,其較私有隨機存取記憶體126需要較短的潛伏期(Access Latency)以滿足較小的儲存需求。
微處理器100亦包括一資料緩衝區114,其耦接於載入/儲存單元122,用以緩衝來自系統記憶體的資料。資料緩衝區114係為使用者可存取的,也就是說,資料緩衝區
114係設置於微處理器100之系統記憶體位址空間內,其可被使用者巨指令所存取。匯流排介面單元132耦接於資料緩衝區114。匯流排介面單元132耦接於處理器匯流排136以存取系統記憶體。匯流排介面單元132在處理器匯流排136產生交易以在微處理器100與系統記憶體之間傳送資料,例如,當一載入或儲存微指令(即,一般記憶體載入或儲存微指令,相對於loadPRAM或storePRAM微指令)之記憶體位址在資料緩衝區114中遺失時,其需要自系統記憶體提取至資料緩衝區114之遺失緩衝線,或者當一緩衝線自資料緩衝區114寫回至系統記憶體或清除掉。
第2圖係顯示本發明實施例之不同系統記憶體與私有隨機存取記憶體位址空間的示意圖。私有隨機存取記憶體126耦接於載入/儲存單元122。私有隨機存取記憶體126係設置於微處理器100之非使用者可存取私有隨機存取記憶體位址空間中,其與微處理器100之記憶體位址空間係各自獨立,如第2圖所示。也就是說,私有隨機存取記憶體126無法被使用者代碼巨指令存取,而僅可被微處理器100本身存取,例如經由微代碼128或其它內建硬體來存取。相對的,資料緩衝區114與系統記憶體設置於微處理器100之記憶體位址空間,其可被使用者巨指令與微代碼128存取,如第2圖所示。載入/儲存單元122根據指令分派器108之loadPRAM與storePRAM微指令,分別自私有隨機存取記憶體126讀取且寫入至私有隨機存取記憶體126。
在一實施例中,私有隨機存取記憶體126包括4KB的儲存空間。然而,在其它實施例中,私有隨機存取記憶體126係大於或小於4KB的儲存空間。有利的是,私有隨機存取記憶體126較使用者可存取暫存器組112與非使用者可存取暫存器組134來的密集。也就是說,儲存在私有隨機存取記憶體126中之資料量的每單位面積大於儲存在使用者可存取暫存器組112與非使用者可存取暫存器組134中之資料量的每單位面積。因此,私有隨機存取記憶體126可包括相對於使用者可存取暫存器組112與非使用者可存取暫存器組134而言較大的儲存空間。在一實施例中,私有隨機存取記憶體126至少兩倍密集於使用者可存取暫存器組112與非使用者可存取暫存器組134。在一實施例中,由於私有隨機存取記憶體126包括不符合使用於製造微處理器100整合電路之特定製造技術之設計規則的客製靜態隨機存取記憶體位元細胞,但使用者可存取暫存器組112與非使用者可存取暫存器組134包括符合該製造技術之設計規則的位元細胞,故私有隨機存取記憶體126較使用者可存取暫存器組112與非使用者可存取暫存器組134來的密集。在一實施例中,私有隨機存取記憶體126係由可做為資料緩衝區114之靜態隨機存取記憶體(Static Random Access Memory,SRAM)構成。與前述相比,私有隨機存取記憶體126的存取速度較使用者可存取暫存器組112與非使用者可存取暫存器組134來的慢。私有隨機存取記憶體126的存取速度可能因為以下原因而較使用者可存取暫
存器組112與非使用者可存取暫存器組134來的慢。(1)在私有隨機存取記憶體126比在使用者可存取暫存器組112與非使用者可存取暫存器組134中有較多的可尋址位置,因此私有隨機存取記憶體126的位址解碼電路比使用者可存取暫存器組112與非使用者可存取暫存器組134具有較長的延遲。(2)私有隨機存取記憶體126位元之細胞線驅動電路較使用者可存取暫存器組112與非使用者可存取暫存器組134之線驅動電路弱。(3)因為私有隨機存取記憶體126位元細胞的數目較多,故私有隨機存取記憶體126之細胞線的載入較使用者可存取暫存器組112與非使用者可存取暫存器組134之細胞線的載入大。在一實施例中,私有隨機存取記憶體126需要四個時脈週期來進行存取,但使用者可存取暫存器組112與非使用者可存取暫存器組134僅需要一個時脈週期來進行存取。
微處理器100亦包括用於偵測系統記憶體載入/儲存碰撞的邏輯。該邏輯轉送碰撞載入/儲存資料至微處理器100的適當階段,以促進每秒速率所增加的指令。在一實施例中,微處理器100係為非依序執行的微處理器。上述邏輯亦可以適當的順序來執行碰撞載入/儲存。有利的是,該邏輯亦可用來偵測私有隨機存取記憶體126之載入/儲存碰撞,以轉送私有隨機存取記憶體126之碰撞資料,並且以適當的順序來執行私有隨機存取記憶體126之碰撞載入/儲存。然而,由於私有隨機存取記憶體126佔用與系統記憶體不同的位址空間,該邏輯並不會偵測系統記憶體之載
入/儲存與私有隨機存取記憶體126之載入/儲存間的碰撞。因此,有利的是,用於執行記憶體載入/儲存指令之微處理器100中相當顯著數量的邏輯與資料路徑可被微處理器100重複使用,以執行loadPRAM與storePRAM微指令。
在一實施例中,載入/儲存單元122並不會轉譯loadPRAM與storePRAM微指令指定的位址。也就是說,不像一般載入與儲存指令,其指定可經由微處理器100(例如,記憶體分頁單元)之位址轉譯機制而轉譯為實際位址之一虛擬位址,loadPRAM與storePRAM微指令指定的位址係為用於存取私有隨機存取記憶體126的實際位址。在一實施例中,PRAM_address運算元在loadPRAM與storePRAM微指令中被指定為常數。在另一實施例中,程式設計師可利用定址模式來指定loadPRAM與storePRAM微指令的PRAM_address運算元,其中loadPRAM與storePRAM微指令類似於載入/儲存記憶體微指令。也就是說,微處理器100中用來產生一般載入/儲存微指令記憶體位址之位址產生邏輯亦可用來產生私有隨機存取記憶體126的位址。在一實施例中,loadPRAM與storePRAM微指令可指定最多三個不同的運算元以產生PRAM_address,亦即指定用以儲存運算元與一固定位移欄位之二個各別暫存器。舉例來說,程式設計師可利用一暫存器中之一基底位址與增加一暫存器中之一位址偏移值,以利用loadPRAM與storePRAM微指令依序存取私有隨機存取記憶體126。
載入/儲存單元122辨識出loadPRAM與storePRAM微指令之位址運算元指定一位置僅存在於私有隨機存取記憶體126中,而非記憶體空間中之一位址。因此,載入/儲存單元122根據私有隨機存取記憶體126的存取,故並未要求匯流排介面單元132產生處理器匯流排136上的交易loadPRAM與storePRAM微指令。因此,私有隨機存取記憶體126之位址空間是不用緩衝的。
第3圖係顯示本發明實施例之載入私有隨機存取記憶體之loadPRAM微指令的步驟流程圖,該流程由步驟302開始。
在步驟302中,載入/儲存單元122接收一loadPRAM微指令,並且自私有隨機存取記憶體126中由PRAM_address運算元指定之一位置讀取資料。如上文所述,私有隨機存取記憶體126中之該位置的位址,可根據loadPRAM微指令指定之一定址模式並藉由位址產生邏輯來產生。接著執行步驟304。
在步驟304中,載入/儲存單元122寫入在步驟302中讀取的資料至loadPRAM微指令暫存器運算元指定之暫存器。如上所述,該暫存器為使用者可存取暫存器組112或非使用者可存取暫存器組134之暫存器。
第4圖係顯示本發明實施例之儲存私有隨機存取記憶體之storePRAM微指令的步驟流程圖,該流程由步驟402開始。
在步驟402中,載入/儲存單元122接收一storePRAM
微指令,並且自storePRAM微指令暫存器運算元指定之一暫存器讀取資料。接著執行步驟404。
在步驟404中,載入/儲存單元122寫入在步驟402中讀取的資料至私有隨機存取記憶體126中由PRAM_address運算元指定之該位置。
在一實施例中,微處理器100之ISA會確認為IA-32或IA-64 ISA。特別的是,使用者可存取暫存器組112會確認為IA-32或IA-64 ISA之使用者可存取暫存器組,並且微處理器100之巨指令組會確認為IA-32/64巨指令組。在上述實施例中,私有隨機存取記憶體126可用來儲存一或多個虛擬機器延伸(Virtual-Machine Extensions,簡稱為VMX)虛擬控制架構(Virtual Machine Control Structure,簡稱為VMCS),其將在下文中之第5、6圖中描述。在一實施例中,微處理器100儲存私有隨機存取記憶體126中部分或所有最近使用的虛擬控制架構。此外,私有隨機存取記憶體126的位置可用來說明部分IA-32/64特別模組暫存器(Model Specific Register,簡稱為MSR)。舉例來說,IA32_SYSENTER_CS特別模組暫存器可以私有隨機存取記憶體126來說明,其將在下文中之第7、8圖中描述。此外,私有隨機存取記憶體126可用來儲存系統管理中斷(System Management Interrupt,簡稱為SMI)相關值。舉例來說,系統管理中斷基底位址(System Management Interrupt Base Address,簡稱為SMBASE)值可儲存在私有隨機存取記憶體126中,其將在下文中之第9、10圖中描
述。
第5圖係顯示本發明實施例之第1圖之微處理器100執行一VMWRITE巨指令的步驟流程圖,該流程由步驟502開始。
在步驟502中,指令轉譯器106解碼一VMX VMWRITE巨指令,並且將控制權傳送給與VMWRITE巨指令相關之微代碼128的例行程序。接著執行步驟504。
在步驟504中,VMWRITE微代碼128的例行程序為:先執行一load sys_mem_address,temp_reg微指令,接著執行一storePRAM temp_re,PRAM_address微指令。該load sys-mem-address,temp_reg微指令自系統記憶體位址讀取資料,其中該系統記憶體位址包括VMWRITE巨指令指定之VMCS欄位,並且將資料寫入至非使用者可存取暫存器組134之一暫時暫存器中。該storePRAM temp_reg,PRAM_address微指令自該暫時暫存器讀取資料,並且將該資料寫入至私有隨機存取記憶體126的位置中,其中該位置係用以儲存VMWRITE巨指令指定的VMCS欄位。在一實施例中,微處理器100根據一VMX VMPTRLD巨指令分配私有隨機存取記憶體126之一些儲存位置給VMCS。
第6圖係顯示本發明實施例之第1圖之微處理器100執行VMREAD巨指令的步驟流程圖,該流程由步驟602開始。
在步驟602中,指令轉譯器106解碼一VMX VMREAD巨指令,並且將控制權傳送給與VMREAD巨指令相關之
微代碼128的例行程序。接著執行步驟604。
在步驟604中,VMREAD微代碼128的例行程序為:先執行一loadPRAM PRAM_address,temp_reg微指令,再執行一store temp_reg,sys_mem_address微指令。該loadPRAM PRAM_address,temp_reg微指令自私有隨機存取記憶體126的位置讀取資料,其中該私有隨機存取記憶體126的位置包括非使用者可存取暫存器組134之一暫時暫存器。該store temp_reg,sys_mem_address微指令自該暫時暫存器讀取資料,並且將該資料寫入至VMREAD巨指令指定之系統記憶體的位置中。
第5、6圖分別描述與儲存私有隨機存取記憶體126之VMCS相關之VMWRITE與VMREAD巨指令的操作,其中配置了系統記憶體儲存空間,且巨架構並未託管微處理器100內的儲存空間,使得自私有隨機存取記憶體126存取VMCS的速度較自系統記憶體讀取的VMCS速度還快。
然而,本發明實施例並非用以限制在將VMCS儲存在私有隨機存取記憶體126中。更確切的說,私有隨機存取記憶體126可用來儲存其它資料結構,以得到較系統記憶體更快的存取速度,但巨架構並不需指定微處理器100內的儲存空間。
第7圖係顯示本發明實施例之第1圖之微處理器100執行一x86架構之WRMSR巨指令的步驟流程圖,該流程由步驟702開始。
在步驟702中,指令轉譯器106解碼指定
IA32_SYSENTER_CS MSR之一WRMSR巨指令,並且將控制權傳送給與WRMSR巨指令相關之微代碼128的例行程序。在WRMSR巨指令之前,使用者程式包括一或多個指令,該指令係用以載入具有指定IA32_SYSENTER_CS MSR值之一ECX暫存器以及用以載入具有用以寫入到MSR值的EDX:EAX暫存器。接著執行步驟704。
在步驟704中,WRMSR微代碼128的例行程序為:執行一storePRAM EDX:EAX,PRAM_address微指令。該storePRAM EDX:EAX,PRAM_address微指令自連鎖的EDX:EAX暫存器讀取資料,並且將資料寫入至私有隨機存取記憶體126中的位置,其中該位置係用以說明IA32_SYSENTER_CS MSR。在一實施例中,WRMSR微代碼128的例行程序載入具有指定私有隨機存取記憶體126中之一全球基底位址(Global Base Address)之值之一基底暫存器,其中該全球基底位址係用以儲存MSR值,且該ECX值係做為該基底位址之偏移量以形成私有隨機存取記憶體126的實際位址。
第8圖係顯示本發明實施例之第1圖之微處理器100執行一x86架構之RDMSR巨指令的步驟流程圖,該流程由步驟802開始。
在步驟802中,指令轉譯器106解碼指定IA32_SYSENTER_CS MSR之一RDMSR巨指令,並且將控制權傳送給與RDMSR巨指令相關之微代碼128的例行程序。在RDMSR巨指令之前,使用者程式包括一或多個
指令,該指令係用以載入具有指定IA32_SYSENTER_CS MSR值之該ECX暫存器。接著執行步驟804。
在步驟804中,RDMSR微代碼128的例行程序為:執行一loadPRAM PRAM_address,EDX:EAX微指令。該loadPRAM PRAM_address.EDX:EAX微指令自私有隨機存取記憶體126中的位置讀取資料,其中該位置係用以說明IA32_SYSENTER_CS MSR,並且將資料寫入至連鎖的EDX:EAX暫存器中。在一實施例中,RDMSR微代碼128的例行程序載入具有指定私有隨機存取記憶體126中之一全球基底位址之值之一基底暫存器,其中該全球基底位址係用以儲存MSR值,且該ECX值係做為該基底位址之偏移量以形成私有隨機存取記憶體126的實際位址。
第7、8圖分別描述指定一特定MSR(即IA32_SYSENTER_CS MSR)之WRMSR與RDMSR巨指令的操作,從而減少MSR儲存空間使用之晶片區的儲存量。然而,本發明並非用以限定說明私有隨機存取記憶體126中之IA32_SYSENTER_CS MSR。更確切的說,私有隨機存取記憶體126可用來說明其它MSR,而不需立即被微處理器100的硬體存取,但可容許與存取私有隨機存取記憶體126相關的潛伏期(Latency)。
在說明第9、10圖之前,先簡單說明x86架構之系統管理模式的操作。x86巨架構分配一部分的系統記憶體以用於系統管理中斷(System Management Interrupt,簡稱為SMI),該分配的系統記憶體可稱為系統管理隨機存取記
憶體(System Management RAM,以下簡稱為SMRAM)。根據系統管理中斷,一部分的SMRAM(可稱為狀態儲存區(State Save Area))可被微處理器100用來儲存其狀態。SMRAM的基底位址係由一系統管理中斷基底位址值來指定。該狀態儲存區係設置在系統管理中斷基底位址之一預設偏移量中。該系統管理中斷基底位址值係儲存在二個地方,即在微處理器100內與SMRAM之狀態儲存區之一預設偏移量(可稱為系統管理中斷基底位址欄位)內。當重置微處理器100時,微處理器100內的系統管理中斷基底值初始為巨架構定義之一預設值。當微處理器100接收一系統管理中斷,微處理器100儲存目前微處理器100的狀態至SMRAM,其中該SMRAM的基底係為微處理器100內之系統管理中斷基底位址值所定義。當使用者程式執行一x86可移動儲存體管理程式(Removable Storage Manager,簡稱為RSM)巨指令,微處理器100回存SMRAM之狀態儲存區的處理器狀態。回存SMRAM之狀態儲存區的處理器狀態包括以系統記憶體中之狀態儲存區中之系統管理模式基底位址欄位值回存(並且更新)內部儲存的系統管理模式基底位址值。該特色有助於一多處理系統中的多處理器操作,其中主要處理器重自該初始位置配置SMRAM之位置給其它處理器。
第9圖係顯示本發明實施例之第1圖之微處理器100執行一x86架構之RSM巨指令的步驟流程圖,該流程由步驟902開始。
在步驟902中,指令轉譯器106解碼一RSM巨指令,並且將控制權傳送給與RSM巨指令相關之微代碼128的例行程序。接著執行步驟904。
在步驟904中,RSM微代碼128的例行程序為:執行一loadPRAM PRAM_address,temp_reg1微指令,接著執行一load sys_mem_address,temp_reg2微指令,最後執行一storePRAM temp_reg2,PRAM_address微指令。該loadPRAM PRAM_address,temp_reg1微指令讀取儲存在私有隨機存取記憶體126之位置中的內存SMBASE值(該位置係用以儲存該內存SMBASE值),並且將該內存SMBASE值寫入至非使用者可存取暫存器組134之第一暫時暫存器。該load sys_mem_address,temp_reg2微指令自系統記憶體讀取該SMBASE欄位值,並且將其寫入至非使用者可存取暫存器組134之第二暫時暫存器。由於第一暫時暫存器目前持有(藉由loadPRAM PRAM_address,temp_reg1微指令的優點)SMRAM之該基底系統記憶體位址,而該load sys_mem_address,temp_reg2微指令指定系統記憶體中之該SMRAM狀態儲存區之SMBASE欄位為該第一暫時暫存器中之該基底記憶體位址之一預設偏移量。該storePRAM temp_reg2,PRAM_address微指令自該第二暫時暫存器讀取資料,並且將該資料寫入至私有隨機存取記憶體126的位置中,其中該位置係用以內存該SMBASE值。需注意到,除了回存(與更新)該SMBASE值之內在形式(Internal Representation),RSM微代碼128之例行
程序可利用該第一暫時暫存器中之該SMBASE位址,並且經由一串系統記憶體載入微指令自該SMRAM狀態儲存區讀取微處理器100的剩餘狀態,以回存微處理器100的狀態。微處理器100的狀態回存操作亦包括回存額外的storePRAM微指令至私有隨機存取記憶體126之用以儲存於其中的其它狀態。
第10圖係顯示本發明實施例之第1圖之微處理器回應接收一x86架構之SMI巨指令之操作的步驟流程圖,該流程由步驟1002開始。
在步驟1002中,微處理器100接收一系統管理中斷,並且將控制權傳送給與SMI例外指令相關之微代碼128的例行程序。接著執行步驟1004。
在步驟1004中,該SMI例外指令操作器之微代碼128的例行程序為:執行一loadPRAM PRAM_address,temp_reg微指令,再執行一store temp_reg,sys_mem_address微指令。該loadPRAM PRAM_address,temp_reg微指令讀取私有隨機存取記憶體126之位置中的內存SMBASE值,其中該位置係用以儲存該內存SMBASE值,並且將該內存SMBASE值寫入至非使用者可存取暫存器組134的暫時暫存器。該store temp_reg,sys_mem_address微指令自該暫時暫存器讀取該SMBASE值,並且將其寫入至系統記憶體之該SMRAM狀態儲存區中之該SMBASE欄位。寫入該SMBASE欄位值之該系統記憶體係被指定至該store temp_reg,sys_mem_address微指令而為一該基底記憶體位
址之預設偏移量,其中該基底記憶體位址係指定給該暫時暫存器。需注意到,除了儲存該SMBASE值之該內在形式至該SMRAM狀態儲存區之該SMBASE欄位,SMI微代碼128之例行程序亦可利用該暫時暫存器中該SMBASE位址,並經由一串系統記憶體儲存微指令將微處理器100的剩餘狀態寫入該SMRAM狀態儲存區,以儲存微處理器100的狀態。微處理器100之儲存狀態操作亦包括儲存額外的loadPRAM微指令,以自私有隨機存取記憶體126載入用以儲存之其它狀態。
雖然本發明實施例、標的、特色與優點已詳細揭露於上文中,但亦可含其它實施例。舉例來說,雖然已揭露私有隨機存取記憶體126儲存VMX VMCS,在其它實施例中私有隨機存取記憶體126可用來儲存系統虛擬機器控制器(Hypervisor)使用之其它虛擬機器架構的資料結構,且並非用以限制VMX虛擬化典範(Virtualization Paradigm)。此外,雖然本發明實施例已揭露x86巨架構,其並非用以限制本發明,但亦可利用其它的巨架構來實施本發明。
本發明更提供一種記錄媒體(例如光碟片、磁碟片與抽取式硬碟等等),其係記錄一電腦可讀取之權限簽核程式,以便執行上述之提供微處理器的方法。在此,儲存於記錄媒體上之權限簽核程式,基本上是由多數個程式碼片段所組成的(例如建立組織圖程式碼片段、簽核表單程式碼片段、設定程式碼片段、以及部署程式碼片段),並且這些程式碼片段的功能係對應到上述方法的步驟與上述系
統的功能步驟圖。如第11圖所示,其係顯示本發明實施例之提供微處理器的方法步驟流程圖,其提供描述微處理器設計的軟體,並且將軟體作為一電腦資料訊號並傳送至一通訊網路上。需瞭解到,本發明實施例之方法與裝置可包含於一半導體智財核心中,例如一微處理器核心(例如,硬體描述語言(Hardware Description Language,簡稱為HDL)),並且可轉換至積體電路產品的硬體。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何熟習此技藝者,在不脫離本發明之精神和範圍內,當可作各種之更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100‧‧‧微處理器
102‧‧‧指令緩衝區
104‧‧‧指令收件器
106‧‧‧指令轉譯器
108‧‧‧指令分派器
112‧‧‧使用者可存取暫存器組
114‧‧‧資料緩衝區
122‧‧‧載入/儲存單元
124‧‧‧執行單元
126‧‧‧私有隨機存取記憶體
128‧‧‧微代碼
132‧‧‧匯流排介面單元
134‧‧‧非使用者可存取暫存器組
136‧‧‧處理器匯流排
302、304、402、404、502、504、602、604、702、704、802、804、902、904、1002、1004、1102、1104‧‧‧流程步驟
第1圖係顯示本發明實施例之管線式微處理器的架構示意圖,其包括一私有隨機存取記憶體。
第2圖係顯示本發明實施例之不同系統記憶體與私有隨機存取記憶體位址空間的示意圖。
第3圖係顯示本發明實施例之執行私有隨機存取記憶體之loadPRAM微指令的步驟流程圖。
第4圖係顯示本發明實施例之執行私有隨機存取記憶體storePRAM微指令的步驟流程圖。
第5圖係顯示本發明實施例之第1圖之微處理器執行一VMWRTTE巨指令的步驟流程圖。
第6圖係顯示本發明實施例之第1圖之微處理器執行
VMREAD巨指令的步驟流程圖。
第7圖係顯示本發明實施例之第1圖之微處理器執行一x86架構之WRMSR巨指令的步驟流程圖。
第8圖係顯示本發明實施例之第1圖之微處理器執行一x86架構之RDMSR巨指令的步驟流程圖。
第9圖係顯示本發明實施例之第1圖之微處理器執行一x86架構之RSM巨指令的步驟流程圖。
第10圖係顯示本發明實施例之第1圖之微處理器回應接收一x86架構之SMI巨指令之操作的步驟流程圖。
第11圖係顯示本發明實施例之提供微處理器的方法步驟流程圖,其提供描述微處理器設計的軟體,並且將軟體作為一電腦資料訊號並傳送至一通訊網路上。
100‧‧‧微處理器
102‧‧‧指令緩衝區
104‧‧‧指令收件器
106‧‧‧指令轉譯器
108‧‧‧指令分派器
112‧‧‧使用者可存取暫存器組
114‧‧‧資料緩衝區
122‧‧‧載入/儲存單元
124‧‧‧執行單元
126‧‧‧私有隨機存取記憶體
128‧‧‧微代碼
132‧‧‧匯流排介面單元
134‧‧‧非使用者可存取暫存器組
136‧‧‧處理器匯流排
Claims (29)
- 一種具有微代碼之微處理器,包括:一使用者可存取暫存器組;一隨機存取記憶體,其位於該微處理器之一非使用者可存取位址空間內,其中該隨機存取記憶體較該使用者可存取暫存器組密集,且存取速度較該使用者可存取暫存器組慢;以及其中該微代碼包括該微處理器之一微指令集之複數微指令,該微指令集包括:一第一微指令,其用以將該使用者可存取暫存器組的資料儲存至該隨機存取記憶體;以及一第二微指令,其用以將該隨機存取記憶體的資料載入至該使用者可存取暫存器組。
- 如申請專利範圍第1項所述的微處理器,其中,該使用者可存取暫存器組包括一x86架構之使用者可存取暫存器組。
- 如申請專利範圍第1項所述的微處理器,其更包括:一非使用者可存取暫存器組,其中該非使用者可存取暫存器組較該隨機存取記憶體不密集,且存取速度較該隨機存取記憶體快;其中該第一微指令更用以將該非使用者可存取暫存器組的資料儲存至該隨機存取記憶體,且該第二微指令用以將該隨機存取記憶體的資料載入至該非使用者可存取暫存器組。
- 如申請專利範圍第3項所述的微處理器,其中,該微代碼根據一VMX VMWRITE指令執行一或多個該第一微指令,以儲存一部分之一x86架構之虛擬機器延伸(Virtual-Machine Extensions,VMX)虛擬控制架構(Virtual Machine Control Structure,VMCS)至該隨機存取記憶體。
- 如申請專利範圍第3項所述的微處理器,其中,該微代碼根據一VMX VMREAD指令執行一或多個該第二微指令,以自該隨機存取記憶體載入一部分之一x86架構之虛擬機器延伸(VMX)虛擬控制架構(VMCS)。
- 如申請專利範圍第3項所述的微處理器,其中,該微代碼根據一x86架構之RSM指令執行一或多個該第一微指令,以儲存一系統管理模式基底位址(System Management Mode Base Address,SMBASE)至該隨機存取記憶體。
- 如申請專利範圍第3項所述的微處理器,其中,該微代碼根據一x86架構之系統管理中斷(System Management Interrupt,SMI)指令執行一或多個該第二微指令,以自該隨機存取記憶體載入一系統管理模式基底位址(SMBASE)。
- 如申請專利範圍第1項所述的微處理器,其中,該微代碼根據指定一x86架構之IA32_SYSENTER_CS特別模組暫存器(Model Specific Register,MSR)為一目的特別模組暫存器之一x86架構之WRMSR指令執行一或多個 該第一微指令,以儲存一特權階級0碼數據段值之一數據段選擇器至該隨機存取記憶體。
- 如申請專利範圍第1項所述的微處理器,其中,該微代碼根據指定一x86架構之IA32_SYSENTER_CS特別模組暫存器為一來源特別模組暫存器之一x86架構之RDMSR指令執行一或多個該第二微指令,以自該隨機存取記憶體載入一特權階級0碼數據段值之一數據段選擇器。
- 如申請專利範圍第1項所述的微處理器,其中,該微代碼執行該第一或第二微指令以將該隨機存取記憶體做為一暫時儲存區,以儲存該微代碼之計算結果。
- 如申請專利範圍第1項所述的微處理器,其中,該非使用者可存取位址空間為一非轉譯位址空間。
- 如申請專利範圍第1項所述的微處理器,其中,該非使用者可存取位址空間為一非緩衝位址空間。
- 如申請專利範圍第1項所述的微處理器,其中,該微處理器根據該微代碼指令存取之該非使用者可存取位址空間而不對一外部匯流排存取。
- 如申請專利範圍第1項所述的微處理器,其中,該隨機存取記憶體係整合至與其它微處理器之電路相同之半導體基板上。
- 如申請專利範圍第1項所述的微處理器,其中,該隨機存取記憶體需要存取該使用者可存取暫存器組至少二次的時間。
- 如申請專利範圍第1項所述的微處理器,其中,該隨機存取記憶體二倍密集於該使用者可存取暫存器組。
- 一種在微處理器中儲存資料的方法,包括下列步驟:執行一第一微指令,用以將該微處理器之一使用者可存取暫存器組的資料儲存至該微處理器之一隨機存取記憶體,其中該隨機存取記憶體位於該微處理器之一非使用者可存取位址空間內,其中該隨機存取記憶體較該使用者可存取暫存器組密集,且存取速度較該使用者可存取暫存器組慢;以及執行一第二微指令,用以將該隨機存取記憶體的資料載入至該使用者可存取暫存器組,其中該第一與第二微指令係為該微處理器之一微指令集之複數微指令中的二個微指令。
- 如申請專利範圍第17項所述的在微處理器中儲存資料的方法,其中,,該使用者可存取暫存器組包括一x86架構之使用者可存取暫存器組。
- 如申請專利範圍第17項所述的在微處理器中儲存資料的方法,其更包括下列步驟:執行該第一微指令,用以將一非使用者可存取暫存器組的資料儲存至該隨機存取記憶體其中該非使用者可存取暫存器組較該隨機存取記憶體不密集,且存取速度較該隨機存取記憶體快;以及執行該第二微指令,用以將該隨機存取記憶體的資料 載入至該非使用者可存取暫存器組。
- 如申請專利範圍第17項所述的在微處理器中儲存資料的方法,其更包括下列步驟:解碼一x86架構之VMX VMWRITE指令;以及執行執行一或多個該第一微指令,以儲存一部分之一虛擬機器延伸(VMX)虛擬控制架構(VMCS)至該隨機存取記憶體。
- 如申請專利範圍第17項所述的在微處理器中儲存資料的方法,其更包括下列步驟:解碼一x86架構之VMX VMREAD指令;以及執行一或多個該第二微指令,以自該隨機存取記憶體載入一部分之一虛擬機器延伸(VMX)虛擬控制架構(VMCS)。
- 如申請專利範圍第17項所述的在微處理器中儲存資料的方法,其更包括下列步驟:解碼一x86架構之RSM指令;以及執行一或多個該第一微指令,以儲存一系統管理模式基底位址(SMBASE)至該隨機存取記憶體。
- 如申請專利範圍第17項所述的在微處理器中儲存資料的方法,其更包括下列步驟:接收一x86架構之系統管理中斷(SMI)指令;以及執行一或多個該第二微指令,以自該隨機存取記憶體載入一系統管理模式基底位址(SMBASE)。
- 如申請專利範圍第17項所述的在微處理器中儲存 資料的方法,其更包括下列步驟:解碼指定一x86架構之IA32_SYSENTER_CS特別模組暫存器(MSR)為一目的特別模組暫存器之一x86架構之WRMSR指令;以及執行一或多個該第一微指令,以儲存一特權階級0碼數據段值之一數據段選擇器至該隨機存取記憶體。
- 如申請專利範圍第17項所述的在微處理器中儲存資料的方法,其更包括下列步驟:解碼指定一x86架構之IA32_SYSENTER_CS特別模組暫存器(MSR)為一來源特別模組暫存器(MSR)之一x86架構之RDMSR指令;以及執行一或多個該第二微指令,以自該隨機存取記憶體載入一特權階級0碼數據段值之一數據段選擇器。
- 如申請專利範圍第17項所述的在微處理器中儲存資料的方法,其更包括下列步驟:執行該第一或第二微指令以將該隨機存取記憶體做為一暫時儲存區,以儲存微代碼之計算結果。
- 一種使用於計算裝置之電腦程式產品,該電腦程式產品包括:一電腦可用儲存媒體,其包括用以提供一微處理器之電腦可讀取程式碼,該電腦可讀取程式碼包括:第一程式碼,其用以提供一使用者可存取暫存器組;第二程式碼,其用以提供位於該微處理器之一非使用者可存取位址空間內之一隨機存取記憶體,其中該隨機存 取記憶體較該使用者可存取暫存器組密集,且存取速度較該使用者可存取暫存器組慢;以及第三程式碼,其用以提供包括複數該微處理器之一微指令集之複數微指令之微代碼,該微指令集包括:一第一微指令,其用以將該使用者可存取暫存器組的資料儲存至該隨機存取記憶體;以及一第二微指令,其用以將該隨機存取記憶體的資料載入至該使用者可存取暫存器組。
- 如申請專利範圍第27項所述的使用於計算裝置之電腦程式產品,其更包括:第四程式碼,其用以提供一非使用者可存取暫存器組,其中該非使用者可存取暫存器組較該隨機存取記憶體不密集,且存取速度較該隨機存取記憶體快;其中該第一微指令更用以將該非使用者可存取暫存器組的資料儲存至該隨機存取記憶體,且該第二微指令用以將該隨機存取記憶體的資料載入至該非使用者可存取暫存器組。
- 如申請專利範圍第28項所述的使用於計算裝置之電腦程式產品,其中,該微代碼根據一VMX VMWRITE指令執行一或多個該第一微指令,以儲存一部分之一x86架構之虛擬機器延伸(VMX)虛擬控制架構(VMCS)至該隨機存取記憶體。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US91098207P | 2007-04-10 | 2007-04-10 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200841233A TW200841233A (en) | 2008-10-16 |
TWI407366B true TWI407366B (zh) | 2013-09-01 |
Family
ID=39854825
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW097112999A TWI407366B (zh) | 2007-04-10 | 2008-04-10 | 具有微代碼之微處理器、在微處理器中儲存資料的方法、以及使用於計算裝置之電腦程式產品 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7827390B2 (zh) |
CN (1) | CN101261577B (zh) |
TW (1) | TWI407366B (zh) |
Families Citing this family (60)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7734873B2 (en) * | 2007-05-29 | 2010-06-08 | Advanced Micro Devices, Inc. | Caching of microcode emulation memory |
US8234543B2 (en) * | 2009-03-06 | 2012-07-31 | Via Technologies, Inc. | Detection and correction of fuse re-growth in a microprocessor |
US8281198B2 (en) * | 2009-08-07 | 2012-10-02 | Via Technologies, Inc. | User-initiatable method for detecting re-grown fuses within a microprocessor |
US9501286B2 (en) * | 2009-08-07 | 2016-11-22 | Via Technologies, Inc. | Microprocessor with ALU integrated into load unit |
US8938606B2 (en) * | 2010-12-22 | 2015-01-20 | Intel Corporation | System, apparatus, and method for segment register read and write regardless of privilege level |
US8639919B2 (en) * | 2011-01-18 | 2014-01-28 | Via Technologies, Inc. | Tracer configuration and enablement by reset microcode |
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 |
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 |
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 |
US9176733B2 (en) * | 2011-04-07 | 2015-11-03 | Via Technologies, Inc. | Load multiple and store multiple instructions in a microprocessor that emulates banked registers |
US9141389B2 (en) * | 2011-04-07 | 2015-09-22 | Via Technologies, Inc. | Heterogeneous ISA microprocessor with shared hardware ISA registers |
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 |
US20120260073A1 (en) * | 2011-04-07 | 2012-10-11 | Via Technologies, Inc. | Emulation of execution mode banked registers |
US9032189B2 (en) | 2011-04-07 | 2015-05-12 | Via Technologies, Inc. | Efficient conditional ALU instruction in read-port limited register file microprocessor |
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 |
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) |
US9378019B2 (en) | 2011-04-07 | 2016-06-28 | Via Technologies, Inc. | Conditional load instructions in an out-of-order execution microprocessor |
US9244686B2 (en) | 2011-04-07 | 2016-01-26 | Via Technologies, Inc. | Microprocessor that translates conditional load/store instructions into variable number of microinstructions |
US9274795B2 (en) | 2011-04-07 | 2016-03-01 | Via Technologies, Inc. | Conditional non-branch instruction prediction |
US9645822B2 (en) | 2011-04-07 | 2017-05-09 | Via Technologies, Inc | Conditional store instructions in an out-of-order execution microprocessor |
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 |
US9128701B2 (en) * | 2011-04-07 | 2015-09-08 | Via Technologies, Inc. | Generating constant for microinstructions from modified immediate field during instruction translation |
US9898291B2 (en) | 2011-04-07 | 2018-02-20 | Via Technologies, Inc. | Microprocessor with arm and X86 instruction length decoders |
EP2508982B1 (en) * | 2011-04-07 | 2016-03-30 | VIA Technologies, Inc. | Control register mapping in heterogenous instruction set architecture processor |
EP3179363B1 (en) * | 2012-08-31 | 2019-04-24 | VIA Technologies, Inc. | Microprocessor that enables arm isa program to access general purpose registers written by x86 isa program |
EP2704001B1 (en) * | 2012-08-31 | 2016-10-19 | VIA Technologies, Inc. | Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode |
US9483263B2 (en) * | 2013-03-26 | 2016-11-01 | Via Technologies, Inc. | Uncore microcode ROM |
WO2016097815A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude x86 special bus cycle load replays in out-of-order processor |
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 |
KR101819316B1 (ko) | 2014-12-14 | 2018-01-16 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 비순차 프로세서에서 캐시 불가의존 로드 리플레이를 억제하는 메커니즘 |
US10108420B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor |
US10114646B2 (en) | 2014-12-14 | 2018-10-30 | Via Alliance Semiconductor Co., Ltd | Programmable load replay precluding mechanism |
WO2016097790A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude non-core cache-dependent load replays in out-of-order processor |
US10127046B2 (en) | 2014-12-14 | 2018-11-13 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude uncacheable-dependent load replays in out-of-order processor |
US9804845B2 (en) | 2014-12-14 | 2017-10-31 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude X86 special bus cycle load replays in an out-of-order processor |
US9645827B2 (en) | 2014-12-14 | 2017-05-09 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude load replays dependent on page walks in an out-of-order processor |
US10108430B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor |
US10175984B2 (en) | 2014-12-14 | 2019-01-08 | Via Alliance Semiconductor Co., Ltd | Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor |
JP6286065B2 (ja) | 2014-12-14 | 2018-02-28 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アウトオブオーダープロセッサの書き込み結合メモリ領域アクセスに依存するロードリプレイを除外する装置及び方法 |
US10228944B2 (en) | 2014-12-14 | 2019-03-12 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method for programmable load replay preclusion |
US10088881B2 (en) | 2014-12-14 | 2018-10-02 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude I/O-dependent load replays in an out-of-order processor |
JP6286066B2 (ja) | 2014-12-14 | 2018-02-28 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アウトオブオーダープロセッサでのロードリプレイを低減する節電メカニズム |
KR101822726B1 (ko) | 2014-12-14 | 2018-01-26 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 로드 리플레이를 억제하는 메커니즘 |
WO2016097792A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude load replays dependent on write combining memory space access in out-of-order processor |
WO2016097811A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude load replays dependent on fuse array access in out-of-order processor |
US10083038B2 (en) | 2014-12-14 | 2018-09-25 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on page walks in an out-of-order processor |
US10089112B2 (en) | 2014-12-14 | 2018-10-02 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor |
US10146539B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd. | Load replay precluding mechanism |
US10120689B2 (en) | 2014-12-14 | 2018-11-06 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor |
US10108429B2 (en) * | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude shared RAM-dependent load replays in an out-of-order processor |
WO2016097802A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude load replays dependent on long load cycles in an out-order processor |
US10108421B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude shared ram-dependent load replays in an out-of-order processor |
WO2016097796A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude i/o-dependent load replays in out-of-order processor |
WO2016097804A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Programmable load replay precluding mechanism |
US9998284B2 (en) | 2015-09-24 | 2018-06-12 | Intel Corporation | Methods and apparatus to provide isolated execution environments |
US20210026950A1 (en) * | 2016-03-07 | 2021-01-28 | Crowdstrike, Inc. | Hypervisor-based redirection of system calls and interrupt-based task offloading |
US10884751B2 (en) | 2018-07-13 | 2021-01-05 | Advanced Micro Devices, Inc. | Method and apparatus for virtualizing the micro-op cache |
CN113704741A (zh) * | 2021-09-01 | 2021-11-26 | 上海兆芯集成电路有限公司 | 具备椭圆曲线密码算法的处理器及其处理方法 |
CN114003309A (zh) * | 2021-10-28 | 2022-02-01 | 安徽聆思智能科技有限公司 | 一种基于微处理器的软件模块加载方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6154818A (en) * | 1997-11-20 | 2000-11-28 | Advanced Micro Devices, Inc. | System and method of controlling access to privilege partitioned address space for a model specific register file |
US6751737B1 (en) * | 1999-10-07 | 2004-06-15 | Advanced Micro Devices | Multiple protected mode execution environments using multiple register sets and meta-protected instructions |
US7165084B2 (en) * | 2002-11-20 | 2007-01-16 | Ip-First, Llc. | Microprocessor with selectivity available random number generator based on self-test result |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5642491A (en) * | 1994-09-21 | 1997-06-24 | International Business Machines Corporation | Method for expanding addressable memory range in real-mode processing to facilitate loading of large programs into high memory |
US5870601A (en) * | 1995-08-29 | 1999-02-09 | International Business Machines Corporation | Data processing apparatus and method for correcting faulty microcode in a ROM device via a flag microinstruction in a RAM device including corrected microcode |
US5829012A (en) * | 1996-04-19 | 1998-10-27 | Unisys Corporation | System for programmably providing modified read signals within a ROM-based memory |
US6081888A (en) * | 1997-08-21 | 2000-06-27 | Advanced Micro Devices Inc. | Adaptive microprocessor with dynamically reconfigurable microcode responsive to external signals to initiate microcode reloading |
US6014757A (en) * | 1997-12-19 | 2000-01-11 | Bull Hn Information Systems Inc. | Fast domain switch and error recovery in a secure CPU architecture |
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 |
US7937525B2 (en) * | 2004-06-25 | 2011-05-03 | Intel Corporation | Method and apparatus for decoding a virtual machine control structure identification |
US20060136608A1 (en) * | 2004-12-22 | 2006-06-22 | Gilbert Jeffrey D | System and method for control registers accessed via private operations |
-
2008
- 2008-02-20 US US12/034,503 patent/US7827390B2/en active Active
- 2008-04-10 TW TW097112999A patent/TWI407366B/zh active
- 2008-04-10 CN CN2008100886498A patent/CN101261577B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6154818A (en) * | 1997-11-20 | 2000-11-28 | Advanced Micro Devices, Inc. | System and method of controlling access to privilege partitioned address space for a model specific register file |
US6751737B1 (en) * | 1999-10-07 | 2004-06-15 | Advanced Micro Devices | Multiple protected mode execution environments using multiple register sets and meta-protected instructions |
US7165084B2 (en) * | 2002-11-20 | 2007-01-16 | Ip-First, Llc. | Microprocessor with selectivity available random number generator based on self-test result |
Also Published As
Publication number | Publication date |
---|---|
US7827390B2 (en) | 2010-11-02 |
TW200841233A (en) | 2008-10-16 |
US20080256336A1 (en) | 2008-10-16 |
CN101261577B (zh) | 2011-03-02 |
CN101261577A (zh) | 2008-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI407366B (zh) | 具有微代碼之微處理器、在微處理器中儲存資料的方法、以及使用於計算裝置之電腦程式產品 | |
US10963281B2 (en) | Nested virtualization for virtual machine exits | |
JP7052170B2 (ja) | プロセッサおよびシステム | |
US8099541B2 (en) | Minivisor entry point in virtual machine monitor address space | |
US10120691B2 (en) | Context switching mechanism for a processor having a general purpose core and a tightly coupled accelerator | |
KR101673435B1 (ko) | 공동 설계 프로세서에서 격리된 실행 환경의 생성 | |
US7917740B1 (en) | Virtualization assist for legacy x86 floating point exception handling | |
JP5984865B2 (ja) | 命令エミュレーションプロセッサ、方法、およびシステム | |
US8561060B2 (en) | Processor and method configured to determine an exit mechanism using an intercept configuration for a virtual machine | |
JP5027669B2 (ja) | マイクロプロセッサ、集積回路、システム及び方法 | |
KR20100102666A (ko) | 온칩 디바이스 관리를 위한 알려진 제품 코드 | |
US20190156015A1 (en) | Smm protection utilizing ring separation and smi isolation | |
US11941409B2 (en) | Methods, systems, and apparatuses for a multiprocessor boot flow for a faster boot process | |
US20190042258A1 (en) | Processor core supporting a heterogeneous system instruction set architecture | |
US20170220369A1 (en) | Hypervisor post-write notification of control and debug register updates | |
CN113474754A (zh) | 有条件退让给管理程序指令 | |
JP3105110B2 (ja) | 演算装置 | |
US20220413859A1 (en) | System, apparatus and methods for performant read and write of processor state information responsive to list instructions |