TW201506783A - 客戶返回位址堆疊仿真支持推測的方法與裝置 - Google Patents

客戶返回位址堆疊仿真支持推測的方法與裝置 Download PDF

Info

Publication number
TW201506783A
TW201506783A TW103109877A TW103109877A TW201506783A TW 201506783 A TW201506783 A TW 201506783A TW 103109877 A TW103109877 A TW 103109877A TW 103109877 A TW103109877 A TW 103109877A TW 201506783 A TW201506783 A TW 201506783A
Authority
TW
Taiwan
Prior art keywords
gras
native
return
instruction
item
Prior art date
Application number
TW103109877A
Other languages
English (en)
Other versions
TWI522915B (zh
Inventor
摩翰麥德 艾伯戴爾拉
Original Assignee
軟體機器公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 軟體機器公司 filed Critical 軟體機器公司
Publication of TW201506783A publication Critical patent/TW201506783A/zh
Application granted granted Critical
Publication of TWI522915B publication Critical patent/TWI522915B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines

Abstract

揭露了一種用於在一失序微處理器管線中維持一客戶返回位址堆疊的微處理器實作方法。方法包括將一客戶位址空間中的複數個指令映射至一原生位址空間中的對應之複數個指令。針對在執行期間所提取之原生位址空間中的每個函式呼叫指令,方法也包括執行下列步驟:(a)回應一函式呼叫,將一目前項目推入一客戶返回位址堆疊(GRAS)中,其中GRAS係維持在管線的提取階段中,且其中目前項目包括關於一客戶目標返回位址與有關函式呼叫之一對應原生目標返回位址兩者的資訊;(b)回應處理一返回指令,而從GRAS彈出目前項目;及(c)在從GRAS彈出之後從在目前項目中的原生目標返回位址提取指令。

Description

客戶返回位址堆疊仿真支持推測的方法與裝置
根據本發明之具體實施例通常有關微處理器架構,且更具體地,有關用於失序(OOO)微處理器的仿真(emulation)架構。
許多類型的數位電腦系統利用碼轉換/轉譯或仿真來實作軟體為主的功能。通常,轉譯和仿真都包括檢查軟體指令的程式且執行軟體指令所指定的功能和動作,即使指令對於電腦系統而言不是「原生(native)」。例如,在一仿真架構中,非原生(或客戶)指令可被映射至原生指令的形式,其被設計為在電腦系統的硬體上執行。
如美國專利申請號13/359767中詳細所述,客戶指令區塊被轉換或映射至仿真架構中的原生轉換區塊。如美國專利申請號13/359767中所述,仿真架構中的客戶指令能來自一些不同的客戶指令架構(例如,Java、x86、MIPS等),且多個客戶指令區塊能轉換成一或多個對應原生轉換區塊。這種轉換係在每個指令基礎上發生。例如,客戶碼之區塊可轉換成原生碼的數個對應指令序列。
另外,如美國專利申請號13/359767中所述,通常使用如轉換後備緩衝器(CLB)的結構在仿真架構中提供客戶位址與原生位址之間的映射。轉換後備緩衝器通常用來快取客戶與原生區塊之間的位址映射;使 得透過處理器的低延遲可能性存取最常遇到的原生轉換區塊。使用CLB加速將客戶指令從客戶指令架構轉譯成原生指令架構之原生指令以在原生處理器上執行的程序。客戶指令使用CLB以快速地轉換成原生指令且被管線送至原生處理器硬體供快速執行。
在某些情況下,CLB由於對客戶空間中之相同函式的函式呼叫而可能變得暫時地充滿過多的項目。函式呼叫包括對來自指令序列內之函式的呼叫及在已執行函式之後回到指令序列的返回。針對在呼叫之後之從客戶空間中之函式的每個返回(以下稱為「函式返回」),通常在原生空間中從函式之返回位址起始新的對應指令序列。因此,為每個上述返回將必須在CLB中建立新映射。由於可能從來自客戶碼之區塊內的多個位置呼叫函式,因此造成對CLB中之函式的數個客戶對原生(guest-to-native)映射。這導致了CLB的暫時滿溢,CLB是處理器管線中的珍貴資源且這是CLB結構的極端無效的使用。
因此,存在一種用於建立更有效和彈性方式以快取在客戶碼中的函式返回的客戶對原生映射之方法與裝置的需求。在一具體實施例中,稱為客戶返回位址堆疊(GRAS)的專用硬體結構係用以推測地快取函式返回的映射,其中GRAS結構快取函式返回的客戶位址與原生位址兩者,且其中GRAS結構存在於處理器管線的前端,例如,在提取階段。在建立映射之後,當在碼中遇到函式時,查找GRAS以決定對函式返回之目標的預測。因此,防止CLB具有關從相同函式之函式返回的多重項目溢流且有利地節省CLB中的寶貴空間。
在本發明之一具體實施例中,GRAS係以硬體實作且用以預測函式返回的目標。因此,在一具體實施例中,在失序(OOO)微處理器的提取單元中推測地執行堆疊操作。然而,在深又寬的超純量處理器中,會有 可能於執行期間在碼中遇到的許多呼叫和返回。由於在GRAS內建立的一些映射可能有關錯誤預測路徑上的函式(例如,由於推測可能是不正確),因此GRAS內的堆疊資訊可能損壞。
在本發明之一具體實施例中,GRAS係類似於鏈結串列結構來維持和更新以防止堆疊損壞。例如,GRAS可能使用具有攜帶至先前項目之指標之每個項目的環形緩衝器來實作。而且,在一具體實施例中,維持兩個全域變數,其中一者指到堆疊頂端且另一者指到GRAS中的下一個可用項目。有關函式呼叫的新映射被插入下一個可用項目中,因此沒有任何項目被覆寫。因此,在錯誤預測的情況下,能簡單調整用以記錄GRAS中之項目的指標以復原先前狀態。由於沒有任何項目被覆寫,因此GRAS結構的鏈結串列實作在錯誤預測的事件中防止堆疊損壞。
在一具體實施例中,提出一種微處理器實作方法,用於在一失序微處理器管線中維持一客戶返回位址堆疊。方法包括將一客戶位址空間中的複數個指令映射至一原生位址空間中的對應之複數個指令。針對在執行期間所提取之原生位址空間中的每個函式呼叫指令,方法也包括執行下列步驟:(a)回應一函式呼叫,將一目前項目推入一客戶返回位址堆疊(GRAS)中,其中GRAS係維持在管線的提取階段中,且其中目前項目包括有關一客戶目標返回位址與有關函式呼叫之一對應原生目標返回位址兩者的資訊;(b)回應處理一返回指令,而從GRAS彈出目前項目;及(c)從GRAS彈出之後,從目前項目中的原生目標返回位址提取指令。
下面的詳細說明連同附圖將提供更佳瞭解本發明之本質和優點。
110‧‧‧計算系統
112‧‧‧通訊基礎架構
114‧‧‧處理器
116‧‧‧系統記憶體
118‧‧‧記憶體控制器
120‧‧‧I/O控制器
122‧‧‧通訊介面
124‧‧‧顯示裝置
126‧‧‧顯示配接器
128‧‧‧輸入裝置
130‧‧‧輸入介面
132‧‧‧主儲存裝置
133‧‧‧備份儲存裝置
134‧‧‧儲存介面
140‧‧‧資料庫
202‧‧‧提取階段
204‧‧‧解碼模組
206‧‧‧發送佇列
208‧‧‧ROB
210‧‧‧暫存器檔案
212‧‧‧執行單元
214‧‧‧寫回模組
216‧‧‧載入儲存佇列
218‧‧‧記憶體
272‧‧‧排程器模組
351‧‧‧主函式
354‧‧‧函式A
356‧‧‧函式B
371‧‧‧序列0
375‧‧‧序列1
376‧‧‧序列2
378‧‧‧序列3
379‧‧‧序列4
490‧‧‧硬體客戶返回位址堆疊
491‧‧‧項目
492‧‧‧項目
575‧‧‧函式A
576‧‧‧函式B
501‧‧‧項目
502‧‧‧項目
671‧‧‧項目
673‧‧‧項目
750‧‧‧序列
850‧‧‧序列
900‧‧‧程序
902-908‧‧‧步驟
本發明之具體實施例在附圖之圖式中係經由範說明例而不是限制,其中相同參考編號係指類似元件。
圖1係根據本發明之具體實施例之示範電腦系統。
圖2係根據本發明之一具體實施例之用於實作本發明之具體實施例之失序微處理器的管線之管線階段的示範圖。
圖3A例示在客戶位址空間中的示範系列函式。
圖3B例示將存在於客戶位址空間中的圖3A之函式映射至原生位址空間所導致的各別指令序列。
圖4A例示在多次喚醒相同函式之客戶位址空間中的示範指令序列。
圖4B-4C例示根據本發明之具體實施例之更新GRAS的方式。
圖5例示根據本發明之具體實施例之更新GRAS的方式之另一實例。
圖6例示GRAS若維持為一般堆疊而可能損壞的方式之實例。
圖7例示根據本發明之一具體實施例之回應圖6所示之指令序列而推測地更新GRAS之鏈結串列實作的方式。
圖8例示根據本發明之一具體實施例之回應分支錯誤預測而更新GRAS之鏈結串列實作的方式。
圖9描述根據本發明之具體實施例之用於維持客戶返回位址堆疊之示範電腦控制程序的流程圖900。
現在將詳細參考本發明之各種具體實施例,其實例係例示於附圖中。儘管結合這些具體實施例來說明,但將瞭解並不打算將本發明限於這些具體實施例。相反地,本發明打算涵蓋可能包括在如所附之申請專利範圍定義之本發明之精神和範圍內的替代方案、修改及等效物。再者, 在本發明的下面詳細說明中,提出許多具體細節以提供對本發明的全面性瞭解。然而,將瞭解可能無需這些具體細節便可能實現本發明。在其他情況下,未詳細說明熟知的方法、程序、元件、及電路,不然對本發明之態樣造成模糊。
符號和命名:針對電腦記憶體內之資料位元上之操作的程序、邏輯區塊、處理、及其他符元圖示提出所遵循之詳細說明的一些部分。這些說明和圖示係在資料處理領域之那些技術者所使用的工具,用以最有效地傳達其作業的真義給本領域之其他技術者。在本申請書中,程序、邏輯區塊、過程或之類認為是導致期望結果之自相一致的步驟順序或指令。步驟係那些使用物理量之物理操作。通常(雖然不一定需要),這些量採取能夠在電腦系統中被儲存、傳送、組合、比較、且以其他方式操作之電或磁信號的形式。已證明有時為了方便(主要是為了常用的原因),將這些信號稱為處理、位元、值、元件、符元、字元、樣本、像素或之類。
然而,應牢記所有這些和類似詞將有關適當的物理量且僅僅是適用於這些量的方便標記。除非特別聲明,否則如根據下面的討論顯而易見,瞭解到在整篇本發明中,使用如「映射」、「推入」、「彈出」、「提取」、和「決定」或之類之詞的討論係指電腦系統或類似電子計算裝置或處理器(例如,圖1之系統110)的動作和處理(例如,圖9之流程圖900)。電腦系統或類似電子計算裝置操作並轉換表示為電腦系統記憶體、暫存器或其他這類資訊儲存、傳輸或顯示裝置內的物理(電子)量之資料。
可能在存在於某種形式之由一或多個電腦或其他裝置執行之電腦可讀儲存媒體(如程式模組)上的電腦可執行指令之一般內文中討論本說明書所述之具體實施例。經由舉例而非限制方式,電腦可讀儲存媒體可包括非暫態電腦可讀儲存媒體和通訊媒體;非暫態電腦可讀媒體包括所有電腦可讀媒體,除了暫態、傳播信號以外。通常,程式模組包括常式、程式、物件、元件、資料結構、等等,其執行特定任務或實作特定抽象資 料類型。在各種具體實施例中,可依照期望地結合或分散程式模組的功能。
電腦儲存媒體包括以用於儲存如電腦可讀指令、資料結構、程式模組或其他資料的資訊之任何方法或技術所實作的揮發性和非揮發性、可移除和不可移除媒體。電腦儲存媒體包括,但不限於隨機存取記憶體(RAM)、唯讀記憶體(ROM)、電子可抹除可程式化ROM(EEPROM)、快閃記憶體或其他記憶體技術、光碟ROM(CD-ROM)、數位多功能光碟(DVD)或其他光學儲存器、磁帶盒、磁帶、磁碟儲存器或其他磁儲存裝置、或能用以儲存期望資訊且能被存取以取得此資訊的任何其他媒體。
通訊媒體能實作電腦可執行指令、資料結構、和程式模組,且包括任何資訊傳送媒體。經由舉例而非限制方式,通訊媒體包括如有線網路或直接有線連線的有線媒體、和如聲學、無線電射頻(RF)、紅外線、及其他無線媒體的無線媒體。任何上述的組合也能包括在電腦可讀媒體的範圍內。
圖1係能夠與本發明之具體實施例之處理器114整合的計算系統110之實例的方塊圖。計算系統110廣義地表示能夠執行電腦可讀指令的任何單一或多處理器計算裝置或系統。計算系統110之實例包括,但不限於工作站、膝上型電腦、客戶端終端、伺服器、分散式計算系統、手持裝置、或任何其他計算系統或裝置。在其最基本的配置中,計算系統110可包括本發明之具體實施例的至少一處理器114和系統記憶體116。
處理器114結合本發明之具體實施例且通常表示能夠處理資料或解譯和執行指令之任何類型或形式的處理單元。在某些具體實施例中,處理器114可從軟體應用程式或模組接收指令。這些指令可使處理器114執行本說明書所述及/或所示之一或多個示範具體實施例的功能。在一具體實施例中,處理器114可能是失序微處理器。在不同具體實施例中,處理器114可能是超純量處理器。在仍舊一具體實施例中,處理器114可包括平行操作的多個處理器。
系統記憶體116通常表示能夠儲存資料及/或其他電腦可讀指令之任何類型或形式的揮發性或非揮發性儲存裝置或媒體。系統記憶體116之實例包括,但不限於RAM、ROM、快閃記憶體、或任何其他適當的記憶體裝置。雖然不是必需的,但在某些具體實施例中,計算系統110可包括揮發性記憶體單元(例如,系統記憶體116)與非揮發性儲存裝置(例如,主儲存裝置132)兩者。
計算系統110除了處理器114和系統記憶體116之外還可能包括一或多個元件或部件。例如,在圖1之具體實施例中,計算系統110包括記憶體控制器118、輸入/輸出(I/O)控制器120、及通訊介面122,其中之各者可經由通訊基礎架構112來互連。通訊基礎架構112通常表示能夠促成在計算裝置的一或多個元件之間的通訊之任何類型或形式的基礎架構。通訊基礎架構112之實例包括,但不限於通訊匯流排(如工業標準架構(ISA))、周邊元件互連(PCI)、PCI快捷(PCIe)、或類似匯流排)和網路。
記憶體控制器118通常表示能夠處置記憶體或資料或控制在計算系統110的一或多個元件之間的通訊之任何類型或形式的裝置。例如,記憶體控制器118可經由通訊基礎架構112來控制在處理器114、系統記憶體116、與I/O控制器120之間的通訊。
I/O控制器120通常表示能夠協調及/或控制計算裝置的輸入和輸出功能之任何類型或形式的模組。例如,I/O控制器120可控制或促成在計算系統110的一或多個元件(如處理器114、系統記憶體116、通訊介面122、顯示配接器126、輸入介面130、和儲存介面134)之間傳送資料。
通訊介面122廣義地表示能夠促成在示範計算系統110與一或多個額外裝置之間的通訊之任何類型或形式的通訊裝置或配接器。例如,通訊介面122可促成在計算系統110與包括額外計算系統的私人或公共網路之間的通訊。通訊介面122之實例包括,但不限於有線網路介面(如網路介面卡)、無線網路介面(如無線網路介面卡)、數據機、及任何其他適當介 面。在一具體實施例中,通訊介面122經由對網路(如網際網路)的直接連結來提供對遠端伺服器的直接連線。通訊介面122可能也透過任何其他適當連線來間接提供上述連線。
通訊介面122可能也表示配置以經由外部匯流排或通訊通道來促成在計算系統110與一或多個額外網路或儲存裝置之間的通訊之主機配接器。主機配接器之實例包括,但不限於小型電腦系統介面(SCSI)主機配接器、通用序列匯流排(USB)主機配接器、IEEE(美國電機電子工程師學會)1394主機配接器、序列先進技術附件(SATA)和外部SATA(eSATA)主機配接器、先進技術附件(ATA)和平行ATA(PATA)主機配接器、光纖通道介面配接器、乙太網路配接器或之類。通訊介面122可能也允許計算系統110參與分散式或遠端計算。例如,通訊介面122可從遠端裝置接收指令或將指令發送至遠端裝置以執行。
如圖1所示,計算系統110可能也包括經由顯示配接器126來耦接通訊基礎架構112的至少一顯示裝置124。顯示裝置124通常表示能夠視覺上顯示顯示配接器126所轉送的資訊之任何類型或形式的裝置。同樣地,顯示配接器126通常表示配置以轉送圖形、文字、及其他資料以顯示於顯示裝置124上之任何類型或形式的裝置。
如圖1所示,計算系統110可能也包括經由輸入介面130來耦接通訊基礎架構112的至少一輸入裝置128。輸入裝置128通常表示能夠對計算系統110提供(電腦或人類產生的)輸入之任何類型或形式的輸入裝置。輸入裝置128之實例包括(但不限於)鍵盤、指向裝置、語音辨識裝置、或任何其他輸入裝置。
如圖1所示,計算系統110可能也包括主儲存裝置132和備份儲存裝置133,經由儲存介面134來耦接通訊基礎架構112。儲存裝置132和133通常表示能夠儲存資料及/或其他電腦可讀指令之任何類型或形式的儲存裝置或媒體。例如,儲存裝置132和133可能是磁碟機(例如,所謂的 硬碟機)、軟碟機、磁帶機、光碟機、快閃碟或之類。儲存介面134通常表示在儲存裝置132和133與計算系統110之其他元件之間傳送資料之任何類型或形式的介面或裝置。
在一實例中,資料庫140可儲存於主儲存裝置132中。資料庫140可表示單一資料庫或計算裝置之部分或其可表示多個資料庫或計算裝置。例如,資料庫140可表示(儲存於)計算系統110的一部分(上)。或者,資料庫140可表示(儲存於)能夠由計算裝置(如計算系統110)存取之一或多個實體分離裝置(上)。
請即重新參考圖1,儲存裝置132和133可構成從可移除儲存單元讀取及/或寫入可移除儲存單元,可移除儲存單元係構成儲存電腦軟體、資料、或其他電腦可讀資訊。適當可移除儲存單元之實例包括,但不限於軟碟、磁帶、光碟、快閃記憶體裝置或之類。儲存裝置132和133可能也包括用於允許電腦軟體、資料、或其他電腦可讀指令被載入計算系統110中的其他類似結構或裝置。例如,儲存裝置132和133可配置以讀取和寫入軟體、資料、或其他電腦可讀資訊。儲存裝置132和133可能也是計算系統110的一部分或可能是透過其他介面系統存取的單獨裝置。
許多其他裝置或子系統可連接至計算系統110。相反地,不需要提出圖1所示之所有元件和裝置來實施本說明書所述之具體實施例。上面提到的裝置和子系統可能也以不同於圖1所示之方式來互連。計算系統110也可採用任何數量的軟體、韌體、及/或硬體配置。例如,本說明書所揭露之示範具體實施例可編碼為電腦可讀媒體上的電腦程式(也稱為電腦軟體、軟體應用程式、電腦可讀指令、或電腦控制邏輯)。
包括電腦程式的電腦可讀媒體可被載入計算系統110中。儲存於電腦可讀媒體上的所有或一部分電腦程式可接著儲存於系統記憶體116及/或儲存裝置132和133的不同部分中。當由處理器114執行時,載入計算系統110中的電腦程式可使處理器114執行本說明書所述及/或所示 之示範具體實施例的功能及/或為用於執行本說明書所述及/或所示之示範具體實施例的功能之工具。此外(或另外),本說明書所述及/或所示之示範具體實施例能以韌體及/或硬體實作。
<用於客戶返回位址堆疊仿真支持推測的方法與裝置>
如美國專利申請號13/359767中詳細所述,且於此藉由引用來併入本文,通常使用如轉換後備緩衝器(CLB)的結構來在仿真架構中提供客戶位址與原生位址之間的映射。轉換後備緩衝器通常用來快取客戶與原生區塊之間的位址映射;使得處理器可低延遲地存取最常遇到的原生轉換區塊。
在某些情況下,轉換後備緩衝器(CLB)由於對客戶空間中之相同函式的函式呼叫而可能變得暫時充滿過多的項目。函式呼叫包括對來自指令序列內之函式的呼叫及在已執行函式之後回到指令序列之分支的返回。針對在呼叫之後的每個返回(以下稱為「函式返回」),通常在原生空間中從函式之返回位址開始新的對應指令序列。因此,為每個上述返回將必須在CLB中建立(從客戶位址至對應原生返回位址的)新映射。由於可能從來自客戶碼之區塊內的多個位置呼叫函式,因此對函式返回的每個實例建立新映射造成對CLB中之函式的數個客戶對原生映射。這導致了CLB的暫時滿溢,CLB是處理器管線中的珍貴資源且這是對CLB結構的極端無效的使用。
本發明之具體實施例提出一種用於建立更有效和彈性之用以對客戶碼中的函式返回快取客戶對原生映射之方法的方法與裝置。在一具體實施例中,使用稱為客戶返回位址堆疊(GRAS)的專用硬體結構以在處理器管線之前端快取函式返回的映射,其中GRAS結構快取函式返回的客戶位址與原生位址兩者。在建立映射之後,當在碼中遇到相同函式時,查找GRAS以決定對函式返回之目標的預測。因此,防止CLB充滿有關從相同函式之函式返回的多個項目,且有利地節省CLB中的寶貴空間。
在本發明之一具體實施例中,GRAS係在硬體中實作且用以預測函式返回的目標。因此,在一具體實施例中,推測地且通常在失序(OOO)微處理器的提取單元中執行堆疊操作。然而,在深又寬的超純量處理器中,會有可能於執行期間在碼中遇到的許多呼叫和返回。由於在GRAS內建立的一些映射可能有關錯誤預測路徑上的函式,因此GRAS內的堆疊資訊可能損壞。
在本發明之一具體實施例中,GRAS係類似於鏈結串列結構來維持和更新以防止堆疊損壞。例如,GRAS係使用具有攜帶至先前項目之指標之每個項目的環形緩衝器來實作。而且,在一具體實施例中,維持一第一全域變數,其指到堆疊頂端,且維持一第二全域變數,其指到GRAS中的下一個可用項目。有關函式呼叫的新映射被插入下一個可用項目中,藉此沒有任何項目被覆寫。因此,在錯誤預測的情況下,能簡單調整用以記錄GRAS中之項目的指標以復原先前狀態。由於沒有任何項目被覆寫(overwritten),因此GRAS結構的鏈結串列實作在錯誤預測的事件中防止堆疊損壞。
圖2係根據本發明之具體實施例之用於OOO微處理器的示範管線之管線階段的方塊圖。
指令在提取階段202中被提取且置放於提取階段202內的指令提取佇列(IFQ)(未示出)中。指令通常是在可執行程式中發現到的原始組合指令。這些指令涉及儲存於暫存器檔案210中的架構暫存器。若第一個被提取的指令被中斷或發生異常,則架構暫存器檔案210儲存到那點之前的所有指令之結果。換句話說,架構暫存器檔案儲存需要被保存和復原的狀態,以在除錯或其他期間返回至程式中斷點。
在OOO微處理器中,指令失序地執行,同時仍保留資料相依性限制。由於指令能以任意順序來完成,因此架構暫存器檔案210當指令完成時不能被失序指令的結果來修改,因為其在例外或中斷的事件中將 難以準確地復原其值。因此,進入管線的每個指令被提供能保存其結果的臨時暫存器。當相關指令撤銷時,臨時暫存器最終以程式順序被寫入架構暫存器檔案中。因此,即使失序地執行指令,架構暫存器檔案的內容仍彷彿以程式順序來執行其而改變。
ROB 208促成指令撤銷(retirement)的程序。在從提取單元202發送指令之後,其被解碼模組204解碼且置放於ROB 208及發送佇列206(IQ)中。ROB 208和IQ 206可為排程器模組272的一部分。當從IQ 206失序地發出指令時,其們會被執行模組212執行。在212中,允許失序的指令執行,只要維持資料相依性即可。
在一具體實施例中,寫回模組214會將從那些指令產生的值寫回至ROB 208中的臨時暫存器,且依賴於ROB 208以促成依序來處理或「撤銷(retiring)」指令。然而,在不同具體實施例中,寫回模組214將指令執行所產生的值直接寫入暫存器檔案210中而沒有將其排序。無序元件以無序方式在實體記憶體中被加至暫存器檔案210且接著使用ROB啟動協定在撤銷階段中依序被撤銷至架構檔案。
從IQ 206失序發出的指令可能也包括載入和儲存。如上所述,當從IQ 206失序發出載入和儲存時,在其們之間有記憶體依附,其在能提交那些指令之前需要被分析。藉此,儲存指令被依序儲存於載入儲存佇列(LSQ)216中,而載入與儲存之間的依附係藉助於ROB 208來分析。
圖3A例示在客戶位址空間中的示範一系列函式。主函式351包括對函式A 354的呼叫。函式A 354包括對函式B 356的呼叫。在對主函式351內之函式A的呼叫之後的指令係L0 321,且因此,L0 321係從函式A 354的返回位址。在對函式A 354內之函式B的呼叫之後的指令係L1 322,且因此,L1 322係從函式B 356的返回位址。
如美國專利申請號13/359767中所述,客戶指令區塊係在仿真架構中被轉換或映射至原生轉換區塊中。如美國專利申請號13/359767 中所述,仿真架構中的客戶指令能來自一些不同的客戶指令架構(例如,Java、x86、MIPS等),且多個客戶指令區塊能轉換成一或多個對應原生轉換區塊。這種轉換係在每個指令基礎上發生。
而且,如美國專利申請號13/359767中所述,在一具體實施例中,每個指令區塊結束於遠分支(在美國專利申請號13/359767中詳細說明了近分支與遠分支之間的差異,然而,為了本發明之具體實施例的目的,使用遠分支作為實例且以下將稱為「分支」)。例如,客戶空間中的函式呼叫將導致客戶分支,且因此,結束發生在內部的指令序列。新指令序列將從函式呼叫之返回開始。
圖3B例示將存在於客戶位址空間中的圖3A之函式映射至原生位址空間所導致的各別指令序列。原生空間中的序列0 371對應在主函式351之開頭開始且在對主函式351內之函式A之呼叫結束的序列。序列3對應開始於L0標記321的序列,這也是從對函式A之呼叫的返回位址。
原生空間中的序列1 375對應在函式A 354之開頭開始且在對函式A 354內之函式B之呼叫結束的序列。序列3對應開始於L1標記322的序列,這也是從對函式B之呼叫的返回位址。
序列2 376對應函式B 356。
通常,將需要對從CLB中之呼叫的每個返回位置建立單獨映射。例如,將為客戶位址空間中的L0 321建立單獨映射,其將被映射至原生位址空間中的序列3 378。而且,將為客戶位址空間中的L1 322建立單獨映射,其將被映射至原生位址空間中的序列4 379。在CLB映射中建立的兩項目只有在從函式A 354內的相同位址(對應379項目的序列4)呼叫函式B 356且若從主函式A內的相同位址(對應378項目的序列3)呼叫函式A354時是有用的。
由於從程式中的數個不同位址呼叫典型函式,因此針對每個函式呼叫,對從各別函式呼叫的返回位址建立新映射。這是因為返回位址 係從其產生對應呼叫之位置的函式,且因此,CLB中的對應項目無法被函式返回的任何其他實例重覆使用。如上所述,這導致CLB的暫時滿溢,CLB是珍貴資源且這是CLB的極端無效的使用。
在習知非仿真架構中,這種問題不會出現,因為偏移位址能簡單被加上呼叫的位址以決定原生空間中的返回位址。例如,若圖3A中之客戶位址空間中的指令不需要被映射至原生位址空間中的對應之一組指令,則偏移會被加上呼叫(例如,呼叫A),以決定呼叫之返回位址(例如,L0 321(其係用於呼叫A的對應返回位址))。
通常,在傳統非仿真架構中,原生空間中的返回位址堆疊(RAS)能以軟體或硬體加以維持。RAS係通常用以預測函式返回之目標的結構。當在碼中遇到呼叫時,呼叫指令之程式計數器(PC)加上偏移(等於指令大小)將被插入RAS中。換言之,返回位址之PC(是以呼叫指令之PC加上偏移來計算)將被插入(或推入)RAS中。從被呼叫函式的返回將導致使用保存位址作為下一個PC位址來彈出堆疊。
本發明之具體實施例在位於管線之前端的硬體中維持客戶返回位址堆疊(GRAS)以仿真客戶位址空間中的軟體返回位址堆疊。本發明之GRAS仿真傳統RAS之結構,且如同RAS,也用以預測函式返回的目標。應注意GRAS不會取代在機器之後端維持的軟體RAS,但除此之外會被維持以在機器的前端推測地決定函式的返回位址。對照於RAS,GRAS儲存函式返回位址的客戶目標與對應原生目標兩者。
藉由儲存客戶目標與原生目標兩者,本發明之GRAS有利地排除為每個函式返回加入項目至CLB。反而,從GRAS獲得資訊。
應注意,在管線的前端推測地維持GRAS結構。例如,通常在提取單元中執行用於GRAS的堆疊操作。由於推測地維持GRAS,因此在錯誤預測程式碼的控制流程之情況下,則可能需要偶爾清除(clear)或清空(flush)其中的項目。藉此,本發明之具體實施例需要在機器之後端繼續維 持軟體RAS以比較和驗證硬體GRAS所預測的返回位址。
圖4A例示在多次調用相同函式之客戶位址空間中的示範指令序列。在客戶碼內的3個實例(例如,在位址471、434和476)調用(或呼叫)函式foo 452。例如,呼叫471具有0xA的返回位址,其將被映射至原生位址空間中的序列T2。例如,呼叫434具有0xB的返回位址,其將被映射至原生位址空間中的序列T4。而且,例如,呼叫476具有0xC的返回位址,其將被映射至原生位址空間中的序列T5。
本發明之具體實施例提出GRAS,其中新項目回應函式調用能被推入具有呼叫之返回位址的堆疊中,而不是儲存用於CLB中的函式foo之每個調用的對應返回位址之映射。當項目被推入堆疊中時,客戶位址與有關函式返回的對應原生位址兩者被推至堆疊上。另外,當在客戶碼中返回時的項目能從堆疊彈出,且對應所彈出之項目的原生位址能用以重新導引機器的前端以從中提取指令。藉由維持GRAS中的客戶位址與對應原生位址兩者,對函式返回之每個實例的單獨映射並不需要保存在CLB中。
將新項目推入堆疊中且回應在客戶碼中的返回而從堆疊中彈出項目使GRAS能作為用於儲存映射的暫時空間。這消除對客戶空間中的返回位址查找的CLB之需求。反而,客戶與原生返回位址兩者被彈出GRAS之外。所獲得之對應原生位址能用以重新導引機器的前端以在原生位址空間中的函式返回之後提取下一個指令。
圖4B-4C例示根據本發明之具體實施例之更新GRAS的方式。圖4B提出回應函式foo之呼叫471而更新GRAS的方式之實例。當於執行期間在碼中遇到對函式foo 452的函式呼叫471時,客戶返回位址(0xA)與對應原生返回位址(T2)兩者被推入GRAS 490的項目491中。隨後,在已執行和返回函式foo之後,項目491便從GRAS 490彈出且用以將機器的前端重新導引至原生序列T2以從中提取指令。
圖4C提出回應函式foo之呼叫434而更新GRAS的方式之 實例。當於執行期間在碼中遇到對函式foo 452的函式呼叫434時,客戶返回位址(0xB)與對應原生返回位址(T4)兩者被推入GRAS 490的項目492中。隨後,在已執行和返回函式foo之後,項目492便從GRAS 490彈出且用以將機器的前端重新導引至原生序列T4以從中提取指令。
關於函式foo的例示476當於執行期間處理時係以呼叫471和434的類似方式來處理。
如上所述,(回應呼叫而)將新項目推入堆疊中且回應在客戶碼中的返回而從堆疊中彈出項目使GRAS能作為用於對客戶空間與位址空間之間的函式返回儲存映射的暫時空間。這消除了對客戶空間中的返回位址查找CLB之需求。反而,客戶與原生返回位址兩者同時被彈出GRAS之外。原生位址接著用以重新導引前端以從中提取指令,如上所述。
在一具體實施例中,當在執行碼之前在軟體中初始地建立客戶對原生映射時,在映射期間引入某些指令以仿真客戶呼叫-返回行為。例如,客戶碼中的函式呼叫能轉換成在「G.BRN」指令之後的「GRAS.PUSH」指令,如將於下進一步所述。而且,客戶碼中的函式呼叫能轉換成「G.BRN.RTN」指令,如也將於下進一步所述。
A)GRAS.PUSH disp32:在映射程序期間,使用在「G.BRN」指令之後的「GRAS.PUSH」指令來仿真客戶碼中的函式呼叫。GRAS.PUSH指令將返回位址(客戶與對應原生返回位址兩者)推至堆疊上。Disp32係從目前呼叫函式之開頭的位移。藉由GRAS.PUSH,能使用目前呼叫函式的位址加上位移來計算客戶空間中的返回位址。此計算之返回位址接著與對應原生位址一起被推入堆疊中,其也在藉由軟體的映射程序期間被編碼成指令GRAS.PUSH。一旦各別返回位址被推入GRAS中,「G.BRN」指令係跳到被呼叫函式的分支指令。
如上所述,推至堆疊的返回位址包括原生與客戶位址元件兩者。在機器中早期解碼指令以使返回位址能被推至硬體GRAS上。
B)G.BRN.RTN:在映射程序期間,使用「G.BRN.RTN」指令來仿真客戶碼中的函式呼叫。G.BRN.RTN彈出堆疊且跳到原生空間中的彈出位址。機器的前端接著開始從此原生位址提取。
由於GRAS的大小有限且由於在機器的前端推測地執行硬體堆疊上的操作,因此不能保證其準確度。於是,這需要額外驗證從GRAS彈出的項目。從GRAS彈出的內容通常與「G.BRN.RTN」指令附加在一起且向下隨管線發送。藉由從軟體RAS彈出對應項目且比較兩個項目來執行驗證。換言之,從GRAS彈出的項目係與位於機器之後端從軟體RAS彈出的項目比較。若不匹配,則軟體堆疊中的項目應優先且能用以重新導引機器的前端。
圖5例示根據本發明之具體實施例之更新GRAS的方式之另一實例。執行開始於指令序列571。當執行對函式A 575的呼叫572時,對應呼叫A 572的返回位址被推入堆疊的項目502中。項目502包括客戶返回位址(呼叫A之PC+4)與原生返回位址(未示出)兩者。當接著對函式B576執行呼叫573時,對應呼叫B 573的返回位址被推入堆疊的項目501中。項目501包括客戶返回位址(呼叫B之PC+4)與原生返回位址(未示出)兩者。GRAS現在包括兩個項目。
當遇到函式B 576中的返回577時,將使用堆疊頂端(TOS)指標590以預測返回的目標且堆疊將被彈出(popped)。當遇到函式A 575中的返回578時,將再次使用TOS(現在指著項目502)以預測返回的目標且堆疊將被彈出。在返回577和578之後,GRAS將是空的。
圖5所示之簡單堆疊操作在寬又深的超純量處理器中可能是不足夠的,其中可能遇到運行中的數個呼叫和返回。這些呼叫之一些者可能在錯誤(錯誤預測)路徑中且即使正確地復原TOS仍損壞堆疊資訊。
圖6例示GRAS若被維持成一般堆疊而可能損壞的方式之實例。例如,指令序列675包括OOO處理器所依循的推測路徑,而指令序 列676包括在管線之後端實際提交的指令。當於執行期間在推測路徑上遇到呼叫A和呼叫B時,對應呼叫的返回位址分別被推入GRAS 650的項目673和671中。若分支C在推測路徑上被錯誤地預測為不採用(NT),則指令返回D和返回E將彈出堆疊兩次,且用於呼叫A和呼叫B的項目將被對應呼叫F和呼叫G的新項目覆寫(其在彈出對應呼叫A和呼叫B的項目之後會被堆至堆疊上)。
然而,如上所述,分支C被錯誤預測,且因此,指令返回D和後續將都落在分支C的錯誤預測陰影下。一旦分支被錯誤預測,TOS指標651就能以軟體復原為堆疊項目671。然而,堆疊項目673與671兩者的內容已被覆寫且損壞。不能復原用於呼叫A和呼叫B的項目,因為其已被覆寫。因此,回應在確認路徑上的指令返回H和返回I而彈出堆疊將產生不正確的位址。
在本發明之一具體實施例中,GRAS係類似於鏈結串列結構來維持和更新以防止堆疊損壞。例如,GRAS係使用具有攜帶至先前項目之指標之每個項目的環形緩衝器來實作。而且,在一具體實施例中,維持指到堆疊頂端的全域變數以及指到GRAS中的下一個可用項目的另一全域變數。有關函式呼叫的新映射被插入下一個可用項目中,因此沒有任何項目被覆寫。因此,在錯誤預測的情況下,能簡單調整用以記錄GRAS中之項目的指標以復原先前狀態。由於沒有任何項目被覆寫,因此GRAS結構的鏈結串列結構在錯誤預測的事件中防止堆疊損壞。
應注意,儘管結合本發明之GRAS來使用鏈結串列結構以解決與客戶空間中之推測相關的問題,但也能結合原生空間中的傳統RAS來使用。
如上所述,環形GRAS中的每個項目維持先前指標以維持堆疊語義。由於堆疊項目不再一定是連續的,因此每個項目維持用以指到先前堆疊項目的指標,其當插入項目時係TOS。結合圖7和8所示之實例 將闡明用於每個堆疊項目之先前指標工作的方式。
用環形方式來維持全域下一個指標變數以指向GRAS中的下一個可用項目。在一具體實施例中,下一個指標永遠是遞增且從未遞減。藉此,呼叫被插入下一個可用項目中,且因此,沒有任何項目被覆寫。
圖7例示根據本發明之一具體實施例之回應圖6所示之指令序列而推測地更新GRAS之鏈結串列實作的方式。圖7將例示假設圖6之序列675(也例示為圖7中的序列750)內的分支C被錯誤預測為不採用而更新GRAS的方式。
在呼叫A之前,下一個指標與堆疊頂端(TOP)指標兩者可能被初始化為0之值。在對函式A的呼叫之後,用於呼叫A的返回位址(客戶位址與原生映射兩者)被推入GRAS的位置1中,如表格771所示。而且,先前指標值被更新為0之值,其係當插入用於呼叫A的項目時TOS變數所具有的值。在插入用於呼叫A的項目之後,用於TOS的指標被更新為1之值且下一個指標被更新為指向堆疊中的下一個可用項目2。
在呼叫函式B之後,呼叫B的對應項目被推入位於GRAS的位置2中,如表格772所示。項目2的先前指標值被更新為1之值,其係當插入用於呼叫B的項目時TOS變數所具有的值。在插入用於呼叫B的項目之後,用於TOS的指標被更新為2之值且下一個指標被更新為指向堆疊中的下一個可用項目3。
若分支C被錯誤預測為不採用(NT),則指令返回D和返回E將接著被處理。返回D彈出有關呼叫B的項目,如表格773所示,然而,此項目既未被刪除也未被覆寫於硬體中。反而,在本發明之鏈結串列實作中,TOS指標被更新為指向位置1以指示已彈出位於位置2的項目。然而,下一個指標值仍維持在3之值,其係下一個可用位置。維持下一個指標以指向位置3確保項目1和2將不被覆寫。
指令返回E彈出有關呼叫A的項目,如表格774所示。再 次,有關呼叫A的項目未被覆寫或刪除。僅TOS指標被更新為0之值,指示彈出位於位置1的項目。同時,下一個指標仍維持在3。
當在指令序列750中遇到呼叫F時,在位置3中輸入對應呼叫F的項目,如表格775所示。如上所述,即使彈出對應呼叫A和B的項目,但下一個指標仍指向位置3。用於呼叫F項目的對應先前指標值係0,因為其在目前項目之前採用TOS之值。同時,TOS被更新為3且下一個指標被更新為4之值。
最後,針對呼叫G,在位置4中輸入對應呼叫G的項目,如表格776所示。用於位於位置4之呼叫G項目的對應先前指標值係3,因為其是在使用用於呼叫G的項目來更新GRAS之前的TOS之值。TOS被更新為4且下一個指標被更新為5之值,其係GRAS中的下一個可用項目。
圖8例示根據本發明之一具體實施例之回應分支錯誤預測而更新GRAS之鏈結串列實作的方式。圖8使用來自圖6和7的實例以例示假設正確的控制路徑包括圖6之序列676(也例示為圖8中的序列850)內的分支C被採用時更新GRAS的方式。
若錯誤預測分支C,則用於呼叫G和呼叫F的項目需要彈出GRAS,且GRAS需要復原回至在分支C錯誤預測之前其所處於的狀態。為了將GRAS復原回至其先前狀態,TOS被復原至2之值。對下一個指標不會執行任何改變。TOS被復原,因為每個分支攜帶其狀態資訊,例如,關於在執行預測時之TOS之值的資訊。這允許TOS值在分支錯誤預測的情況下被復原。實際上,設定TOS為2將堆疊復原回至其所處於的狀態,如表格772所反映(除了下一個指標現在指向5以外)。當在序列850中遇到指令返回H和返回I時,彈出用於呼叫B和呼叫A的對應項目,如圖8所示。
圖9描述根據本發明之具體實施例之用於維持客戶返回位址堆疊之示範電腦控制程序的流程圖900。儘管順序地呈現和說明此流程圖 中的各種步驟,但本領域之通常技術者將瞭解能以不同順序執行一些或所有步驟且能平行執行一些或所有步驟。此外,在本發明之一或多個具體實施例中,能省略、重覆、及/或以不同順序來執行下述之一或多個步驟。藉此,圖9所示之步驟的特定佈置不應被解釋為限制本發明之範圍。反而,相關領域之技術者從本說明書所提出之教導將清楚明白其他功能流程係在本發明之範圍和精神內。可繼續參考上述示範具體實施例來說明流程圖900,雖然方法並不限於那些具體實施例。程序900可能也在硬體中實作。
在步驟902,複數個指令是從客戶位址空間映射至原生位址空間。
在步驟904,原生位址空間中的指令開始執行。針對被處理的每個函式呼叫指令,項目被推入客戶返回位址堆疊(GRAS)中,其中,如上所述且如圖4B、4C、和5所示,項目包括有關函式呼叫的客戶目標返回位址和對應原生目標返回位址。此外,在機器的前端(例如,在管線的提取階段中)推測地更新客戶返回位址堆疊。
在步驟906,回應處理返回指令而彈出有關函式呼叫的項目。如關於圖4B和4C所述,彈出項目包括用於程式之控制流程所跳到的預測原生目標返回位址。
在步驟908,從由客戶返回位址堆疊中之彈出項目獲得的原生目標返回位址推測地提取指令。
儘管上述揭露使用特定方塊圖、流程圖、和實例來提出各種具體實施例,但本說明書所述及/或所示之每個方塊圖元件、流程圖步驟、操作、及/或元件可使用大範圍的硬體、軟體、或韌體(或以上之任何組合)配置來個別地及/或共同地實作。另外,包括在其他元件內之元件的任何揭露應被視為實例,因為能實作許多其他架構來實現相同功能。
僅經由舉例方式來提出本說明書所述及/或所示之程序參數和步驟序列。例如,儘管能以特定順序來顯示或討論本說明書所示及/或所 述之步驟,但不一定需要以所示或所述之順序來執行這些步驟。本說明書所述及/或所示之各種示範方法可能也省略本說明書所述或所示之一或多個步驟或包括除了所揭露之那些之外的額外步驟。
儘管本說明書已在全功能計算系統之環境中描述及/或說明各種具體實施例,但這些示範具體實施例之一或多者可流通作為各種形式的程式產品,而不管特定類型的電腦可讀媒體是否用以實際執行流通。本說明書所揭露之具體實施例也可使用執行某些任務的軟體模組來實作。這些軟體模組可能包括可儲存於電腦可讀儲存媒體上或計算系統中的文字檔程式碼(Script)、批次檔、或其他可執行檔案。這些軟體模組可構成計算系統以執行本說明書所揭露之一或多個示範具體實施例。本說明書所揭露之一或多個軟體模組可在雲端計算環境中實作。雲端計算環境可經由網際網路來提供各種服務和應用。這些雲端為基的服務(例如,軟體即服務、平台即服務、基礎架構即服務、等等)可能可透過網頁瀏覽器或其他遠端介面來存取。本說明書所述之各種功能可透過遠端桌上型環境或任何其他雲端為基的計算環境來提供。
為了解釋之目的,已參考具體具體實施例來說明上述說明。然而,上述說明性討論並不預期為詳盡或將本發明限於所揭露之精確形式。依據上述說明可進行許多修改和變化。選擇且描述具體實施例以最佳解釋本發明之原理及其實際應用,藉此使本領域之其他技術者能最佳地利用本發明和具有各種修改的各種具體實施例作為可能適用於所考慮的特定用途。
由此說明根據本發明之具體實施例。儘管已在特定具體實施例中說明本發明,但應瞭解,本發明不應被解釋受到上述具體實施例的限制,而是根據文後申請專利範圍來解釋。

Claims (21)

  1. 一種微處理器實作方法,用於在一失序微處理器管線中推測地維持一客戶返回位址堆疊,該方法包括:將一客戶位址空間中的複數個指令映射至一原生位址空間中的對應之複數個指令;及針對在執行期間所提取之該原生位址空間中的每個函式呼叫指令,執行:回應一函式呼叫,將一目前項目推入(push)一客戶返回位址堆疊(GRAS)中,其中該GRAS係維持在該管線的提取階段,且其中該目前項目包括有關一客戶目標返回位址與有關該函式呼叫之一對應原生目標返回位址兩者的資訊;回應處理一返回指令,而從該GRAS彈出(pop)該目前項目;及在該彈出之後,從在該目前項目中的該原生目標返回位址提取指令。
  2. 如申請專利範圍第1項之方法,其中該返回指令對應來自該函式呼叫的一返回。
  3. 如申請專利範圍第1項之方法,其中該映射包括:將在該客戶位址空間中的一函式呼叫映射至該原生位址空間中的一對應指令,其中該對應指令當於執行期間在該原生位址空間中處理時執行該推入。
  4. 如申請專利範圍第3項之方法,其中該映射更包括:將一返回指令映射至該原生位址空間中的一對應指令,其中該返回 指令當於執行期間在該原生位址空間中處理時執行該彈出。
  5. 如申請專利範圍第1項之方法,其中該GRAS係一環形緩衝器,且其中該環形緩衝器維持:一全域下一個指標(pointer)值,其中該全域下一個指標值指示出該GRAS中之下一個可用項目的位置;及該GRAS中之每個項目的一先前指標值,其中該先前指標值指向該GRAS中的一先前項目。
  6. 如申請專利範圍第5項之方法,其中該推入更包括:遞增一全域堆疊頂端(TOS)值,其中該全域堆疊頂端值指示出該GRAS的一堆疊頂端端位置;遞增該全域下一個指標值以指向該GRAS中的下一個可用項目;及在該推入之前,更新具有一TOS值的該目前項目的一先前指標。
  7. 如申請專利範圍第6項之方法,其中該彈出更包括:遞減該全域TOS值;及在該彈出之前,更新具有一TOS值的該目前項目的一先前指標。
  8. 一種處理器單元,其構成執行一種用於在一失序微處理器管線中推測地維持一客戶返回位址堆疊的方法,該方法包括:將一客戶位址空間中的複數個指令映射至一原生位址空間中的對應之複數個指令;針對在執行期間所提取之該原生位址空間中的每個函式呼叫指令,執行: 回應一函式呼叫,將一目前項目推入一客戶返回位址堆疊(GRAS)中,其中該GRAS係維持在該管線的提取階段,且其中該目前項目包括有關一客戶目標返回位址與有關該函式呼叫之一對應原生目標返回位址兩者的資訊;回應處理一返回指令,而從該GRAS彈出該目前項目;及在該彈出之後,從在該目前項目中的該原生目標返回位址提取指令。
  9. 如申請專利範圍第8項之處理器單元,其中該返回指令對應來自該函式呼叫的一返回。
  10. 如申請專利範圍第8項之處理器單元,其中該映射包括:將在該客戶位址空間中的一函式呼叫映射至該原生位址空間中的一對應指令,其中該對應指令當於執行期間在該原生位址空間中處理時執行該推入。
  11. 如申請專利範圍第10項之處理器單元,其中該映射更包括:將一返回指令映射至該原生位址空間中的一對應指令,其中該返回指令當於執行期間在該原生位址空間中處理時執行該彈出。
  12. 如申請專利範圍第8項之處理器單元,其中該GRAS係一環形緩衝器,且其中該環形緩衝器維持:一全域下一個指標值,其中該全域下一個指標值指示出該GRAS中之下一個可用項目的位置;及該GRAS中之每個項目的一先前指標值,其中該先前指標值指向該GRAS中的一先前項目。
  13. 如申請專利範圍第12項之處理器單元,其中該推入更包括:遞增一全域堆疊頂端(TOS)值,其中該全域堆疊頂端值指示出該GRAS的一堆疊頂端位置;遞增該全域下一個指標值以指向該GRAS中的下一個可用項目;及在該推入之前,更新具有一TOS值的該目前項目的一先前指標。
  14. 如申請專利範圍第13項之處理器單元,其中該彈出更包括:遞減該全域TOS值;及在該彈出之前,更新具有一TOS值的該目前項目的一先前指標。
  15. 一種裝置,其構成執行一種用於在一失序微處理器管線中推測地維持一客戶返回位址堆疊的方法,該裝置包括:一記憶體;一處理器,其通訊耦接該記憶體,其中該處理器係構成處理失序指令,且另外其中該處理器係構成執行一種方法,包括:將一客戶位址空間中的複數個指令映射至一原生位址空間中的對應之複數個指令;針對在執行期間所提取之該原生位址空間中的每個函式呼叫指令,執行:回應一函式呼叫,將一目前項目推入一客戶返回位址堆疊(GRAS)中,其中該GRAS係維持在該管線的一提取階段,且其中該目前項目包括有關一客戶目標返回位址與有關該函式呼叫之一對應原生目標返回位址兩者的資訊;回應處理一返回指令,而從該GRAS彈出該目前項目;及 在從該GARS該彈出之後,從在該目前項目中的該原生目標返回位址提取指令。
  16. 如申請專利範圍第15項之裝置,其中該返回指令對應來自該函式呼叫的一返回。
  17. 如申請專利範圍第15項之裝置,其中該映射包括:將在該客戶位址空間中的一函式呼叫映射至該原生位址空間中的一對應指令,其中該對應指令當於執行期間在該原生位址空間中處理時執行該推入。
  18. 如申請專利範圍第17項之裝置,其中該映射更包括:將一返回指令映射至該原生位址空間中的一對應指令,其中該返回指令當於執行期間在該原生位址空間中處理時執行該彈出。
  19. 如申請專利範圍第15項之裝置,其中該GRAS係一環形緩衝器,且其中該環形緩衝器維持:一全域下一個指標值,其中該全域下一個指標值指示出該GRAS中之下一個可用項目的位置;及對該GRAS中之每個項目的一先前指標值,其中該先前指標值指向該GRAS中的一先前項目。
  20. 如申請專利範圍第19項之裝置,其中該推入更包括:遞增一全域堆疊頂端(TOS)值,其中該全域堆疊頂端值指示出該GRAS的一堆疊頂端位置;遞增該全域下一個指標值以指向該GRAS中的下一個可用項目; 及在該推入之前,更新具有一TOS值的該目前項目的一先前指標。
  21. 如申請專利範圍第20項之裝置,其中該彈出更包括:遞減該全域TOS值;及在該彈出之前,更新具有一TOS值的該目前項目的一先前指標。
TW103109877A 2013-03-15 2014-03-17 客戶返回位址堆疊仿真支持推測的方法與裝置 TWI522915B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US201361793174P 2013-03-15 2013-03-15

Publications (2)

Publication Number Publication Date
TW201506783A true TW201506783A (zh) 2015-02-16
TWI522915B TWI522915B (zh) 2016-02-21

Family

ID=51533980

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103109877A TWI522915B (zh) 2013-03-15 2014-03-17 客戶返回位址堆疊仿真支持推測的方法與裝置

Country Status (6)

Country Link
US (2) US10228950B2 (zh)
EP (1) EP2972798B1 (zh)
KR (1) KR101761498B1 (zh)
CN (2) CN105122206B (zh)
TW (1) TWI522915B (zh)
WO (1) WO2014151691A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI796031B (zh) * 2016-02-04 2023-03-11 美商英特爾股份有限公司 用於以在環移轉期間保護堆疊的處理器擴展的設備
US11663006B2 (en) 2015-12-20 2023-05-30 Intel Corporation Hardware apparatuses and methods to switch shadow stack pointers

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012103367A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Guest to native block address mappings and management of native code storage
WO2012103253A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Multilevel conversion table cache for translating guest instructions to native instructions
CN103620547B (zh) 2011-01-27 2018-07-10 英特尔公司 使用处理器的转换后备缓冲器的基于客户指令到本机指令范围的映射
WO2012103359A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Hardware acceleration components for translating guest instructions to native instructions
WO2012103245A2 (en) 2011-01-27 2012-08-02 Soft Machines Inc. Guest instruction block with near branching and far branching sequence construction to native instruction block
WO2014151691A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. Method and apparatus for guest return address stack emulation supporting speculation
WO2014151652A1 (en) 2013-03-15 2014-09-25 Soft Machines Inc Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor
US20140281116A1 (en) 2013-03-15 2014-09-18 Soft Machines, Inc. Method and Apparatus to Speed up the Load Access and Data Return Speed Path Using Early Lower Address Bits
US9436476B2 (en) 2013-03-15 2016-09-06 Soft Machines Inc. Method and apparatus for sorting elements in hardware structures
US9627038B2 (en) 2013-03-15 2017-04-18 Intel Corporation Multiport memory cell having improved density area
US9582322B2 (en) 2013-03-15 2017-02-28 Soft Machines Inc. Method and apparatus to avoid deadlock during instruction scheduling using dynamic port remapping
US9946538B2 (en) 2014-05-12 2018-04-17 Intel Corporation Method and apparatus for providing hardware support for self-modifying code
US10095517B2 (en) * 2015-12-22 2018-10-09 Intel Corporation Apparatus and method for retrieving elements from a linked structure
JP7049335B2 (ja) 2016-10-27 2022-04-06 デュアリタス リミテッド ディスプレイドライバを動作させる方法
JP6528820B2 (ja) * 2017-09-19 2019-06-12 カシオ計算機株式会社 コンピュータ、情報機器、これらを動作させるプログラム、情報処理システム、及び情報処理システムの制御方法
KR102467842B1 (ko) * 2017-10-13 2022-11-16 삼성전자주식회사 인스트럭션을 실행하는 코어 및 그것을 포함하는 시스템
KR102391312B1 (ko) * 2020-08-04 2022-04-28 경북대학교 산학협력단 세그먼트의 분리 저장을 위한 코드 삽입 모듈 및 방법

Family Cites Families (144)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5053952A (en) * 1987-06-05 1991-10-01 Wisc Technologies, Inc. Stack-memory-based writable instruction set computer having a single data bus
JP3015493B2 (ja) 1991-04-26 2000-03-06 株式会社東芝 半導体連想記憶装置
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
AU6701594A (en) 1993-05-07 1994-12-12 Apple Computer, Inc. Method for decoding sequences of guest instructions for a host computer
US5761467A (en) 1993-09-28 1998-06-02 Mitsubishi Denki Kabushiki Kaisha System for committing execution results when branch conditions coincide with predetermined commit conditions specified in the instruction field
JPH07271672A (ja) 1994-03-30 1995-10-20 Toshiba Corp マルチウェイセットアソシアティブキャッシュシステム
EP1278125A2 (en) 1994-10-14 2003-01-22 MIPS Technologies, Inc. Indexing and multiplexing of interleaved cache memory arrays
US5644742A (en) 1995-02-14 1997-07-01 Hal Computer Systems, Inc. Processor structure and method for a time-out checkpoint
US5742802A (en) 1996-02-16 1998-04-21 International Business Machines Corporation Method and system for efficiently mapping guest instruction in an emulation assist unit
US5784638A (en) * 1996-02-22 1998-07-21 International Business Machines Corporation Computer system supporting control transfers between two architectures
US5892934A (en) * 1996-04-02 1999-04-06 Advanced Micro Devices, Inc. Microprocessor configured to detect a branch to a DSP routine and to direct a DSP to execute said routine
US5961639A (en) 1996-12-16 1999-10-05 International Business Machines Corporation Processor and method for dynamically inserting auxiliary instructions within an instruction stream during execution
US5893121A (en) 1997-04-23 1999-04-06 Sun Microsystems, Inc. System and method for swapping blocks of tagged stack entries between a tagged stack cache and an untagged main memory storage
US6142682A (en) 1997-06-13 2000-11-07 Telefonaktiebolaget Lm Ericsson Simulation of computer processor
US5995743A (en) 1997-09-22 1999-11-30 International Business Machines Corporation Method and system for interrupt handling during emulation in a data processing system
US5953520A (en) * 1997-09-22 1999-09-14 International Business Machines Corporation Address translation buffer for data processing system emulation mode
US5870575A (en) 1997-09-22 1999-02-09 International Business Machines Corporation Indirect unconditional branches in data processing system emulation mode
US5956495A (en) 1997-09-22 1999-09-21 International Business Machines Corporation Method and system for processing branch instructions during emulation in a data processing system
US6202127B1 (en) 1997-11-26 2001-03-13 Compaq Computer Corporation Apparatus for spatial and temporal sampling in a computer memory system
US5974525A (en) 1997-12-05 1999-10-26 Intel Corporation System for allowing multiple instructions to use the same logical registers by remapping them to separate physical segment registers when the first is being utilized
US6138225A (en) 1997-12-24 2000-10-24 Intel Corporation Address translation system having first and second translation look aside buffers
JP3246438B2 (ja) 1998-04-01 2002-01-15 日本電気株式会社 可変ターゲットコンパイル処理方法、その処理装置、そのプログラムの記憶媒体および変換テーブルの記憶媒体
JPH11296381A (ja) 1998-04-08 1999-10-29 Matsushita Electric Ind Co Ltd 仮想マシン及びコンパイラ
US6205545B1 (en) 1998-04-30 2001-03-20 Hewlett-Packard Company Method and apparatus for using static branch predictions hints with dynamically translated code traces to improve performance
US6463582B1 (en) 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
GB9825102D0 (en) 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US7225436B1 (en) 1998-12-08 2007-05-29 Nazomi Communications Inc. Java hardware accelerator using microcode engine
US6332215B1 (en) 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
US6460114B1 (en) 1999-07-29 2002-10-01 Micron Technology, Inc. Storing a flushed cache line in a memory buffer of a controller
US6928641B1 (en) 1999-10-08 2005-08-09 Texas Instruments Incorporated Method and system for far branch and call instructions
US7418580B1 (en) 1999-12-02 2008-08-26 International Business Machines Corporation Dynamic object-level code transaction for improved performance of a computer
JP3556556B2 (ja) 2000-02-08 2004-08-18 株式会社東芝 命令コード変換装置及び情報処理システム
US20020066081A1 (en) 2000-02-09 2002-05-30 Evelyn Duesterwald Speculative caching scheme for fast emulation through statically predicted execution traces in a caching dynamic translator
US20010037492A1 (en) 2000-03-16 2001-11-01 Holzmann Gerard J. Method and apparatus for automatically extracting verification models
JP2001273138A (ja) 2000-03-24 2001-10-05 Fujitsu Ltd プログラム変換装置および方法
US20020100022A1 (en) 2000-05-08 2002-07-25 Holzmann Gerard J. Method and apparatus for automatic verification of properties of a concurrent software system
US6615300B1 (en) * 2000-06-19 2003-09-02 Transmeta Corporation Fast look-up of indirect branch destination in a dynamic translation system
US7107437B1 (en) 2000-06-30 2006-09-12 Intel Corporation Branch target buffer (BTB) including a speculative BTB (SBTB) and an architectural BTB (ABTB)
US6711672B1 (en) * 2000-09-22 2004-03-23 Vmware, Inc. Method and system for implementing subroutine calls and returns in binary translation sub-systems of computers
GB2367651B (en) 2000-10-05 2004-12-29 Advanced Risc Mach Ltd Hardware instruction translation within a processor pipeline
JP2002215387A (ja) 2001-01-22 2002-08-02 Mitsubishi Electric Corp 命令トランスレータを備えたデータ処理装置およびメモリインタフェース装置
US7487330B2 (en) 2001-05-02 2009-02-03 International Business Machines Corporations Method and apparatus for transferring control in a computer system with dynamic compilation capability
US7200740B2 (en) * 2001-05-04 2007-04-03 Ip-First, Llc Apparatus and method for speculatively performing a return instruction in a microprocessor
US7165169B2 (en) 2001-05-04 2007-01-16 Ip-First, Llc Speculative branch target address cache with selective override by secondary predictor based on branch instruction type
US6826681B2 (en) * 2001-06-18 2004-11-30 Mips Technologies, Inc. Instruction specified register value saving in allocated caller stack or not yet allocated callee stack
JP4027620B2 (ja) 2001-06-20 2007-12-26 富士通株式会社 分岐予測装置、プロセッサ、及び分岐予測方法
US6832307B2 (en) 2001-07-19 2004-12-14 Stmicroelectronics, Inc. Instruction fetch buffer stack fold decoder for generating foldable instruction status information
US6898699B2 (en) * 2001-12-21 2005-05-24 Intel Corporation Return address stack including speculative return address buffer with back pointers
US7577944B2 (en) 2002-03-18 2009-08-18 Hewlett-Packard Development Company, L.P. Unbundling, translation and rebundling of instruction bundles in an instruction stream
US20060117308A1 (en) 2002-08-30 2006-06-01 Renesas Technology Corp. Data processing apparatus and ic card
WO2004059472A2 (en) 2002-12-24 2004-07-15 Sun Microsystems, Inc. Method and apparatus for generating prefetches
US20040128658A1 (en) 2002-12-27 2004-07-01 Guei-Yuan Lueh Exception handling with stack trace cache
US7203932B1 (en) 2002-12-30 2007-04-10 Transmeta Corporation Method and system for using idiom recognition during a software translation process
US6810473B2 (en) 2003-01-06 2004-10-26 Sun Microsystems, Inc. Replacement algorithm for a replicated fully associative translation look-aside buffer
US7191291B2 (en) 2003-01-16 2007-03-13 Ip-First, Llc Microprocessor with variable latency stack cache
JP3896087B2 (ja) 2003-01-28 2007-03-22 松下電器産業株式会社 コンパイラ装置およびコンパイル方法
US7069413B1 (en) 2003-01-29 2006-06-27 Vmware, Inc. Method and system for performing virtual to physical address translations in a virtual machine monitor
US7278030B1 (en) 2003-03-03 2007-10-02 Vmware, Inc. Virtualization system for computers having multiple protection mechanisms
US7111145B1 (en) 2003-03-25 2006-09-19 Vmware, Inc. TLB miss fault handler and method for accessing multiple page tables
GB0316531D0 (en) * 2003-07-15 2003-08-20 Transitive Ltd Method and apparatus for performing native binding
US7290253B1 (en) * 2003-09-30 2007-10-30 Vmware, Inc. Prediction mechanism for subroutine returns in binary translation sub-systems of computers
US7590982B1 (en) 2003-12-17 2009-09-15 Vmware, Inc. System and method for virtualizing processor and interrupt priorities
US7237067B2 (en) 2004-04-22 2007-06-26 Hewlett-Packard Development Company, L.P. Managing a multi-way associative cache
JP4520790B2 (ja) 2004-07-30 2010-08-11 富士通株式会社 情報処理装置およびソフトウェアプリフェッチ制御方法
US8443171B2 (en) 2004-07-30 2013-05-14 Hewlett-Packard Development Company, L.P. Run-time updating of prediction hint instructions
US7571090B2 (en) 2004-09-30 2009-08-04 Intel Corporation Emulating a host architecture in guest firmware
US7496735B2 (en) 2004-11-22 2009-02-24 Strandera Corporation Method and apparatus for incremental commitment to architectural state in a microprocessor
US7428626B2 (en) 2005-03-08 2008-09-23 Microsoft Corporation Method and system for a second level address translation in a virtual machine environment
US8370819B2 (en) 2005-03-25 2013-02-05 Microsoft Corporation Mechanism to store information describing a virtual machine in a virtual disk image
US7383374B2 (en) 2005-03-31 2008-06-03 Intel Corporation Method and apparatus for managing virtual addresses
US7734895B1 (en) 2005-04-28 2010-06-08 Massachusetts Institute Of Technology Configuring sets of processor cores for processing instructions
TWI306215B (en) 2005-04-29 2009-02-11 Ind Tech Res Inst Method and corresponding apparatus for compiling high-level languages into specific processor architectures
US20070006178A1 (en) 2005-05-12 2007-01-04 Microsoft Corporation Function-level just-in-time translation engine with multiple pass optimization
US20060282821A1 (en) * 2005-06-10 2006-12-14 Renno Erik K Efficient subprogram return in microprocessors
US7703088B2 (en) 2005-09-30 2010-04-20 Intel Corporation Compressing “warm” code in a dynamic binary translation environment
US9003421B2 (en) 2005-11-28 2015-04-07 Intel Corporation Acceleration threads on idle OS-visible thread execution units
US20070174717A1 (en) 2006-01-10 2007-07-26 Sun Microsystems, Inc. Approach for testing instruction TLB using user/application level techniques
TWI287801B (en) 2006-01-13 2007-10-01 Optimum Care Int Tech Inc Memory module having address transforming function and method for controlling memory
US8099730B2 (en) 2006-03-30 2012-01-17 Intel Corporation Heterogeneous virtualization of host and guest OS having different register sizes using translation layer to extract device port numbers for host OS system memory addresses
JP5010164B2 (ja) 2006-03-31 2012-08-29 株式会社日立製作所 サーバ装置及び仮想計算機の制御プログラム
US7568189B2 (en) 2006-05-03 2009-07-28 Sony Computer Entertainment Inc. Code translation and pipeline optimization
US7752417B2 (en) 2006-06-05 2010-07-06 Oracle America, Inc. Dynamic selection of memory virtualization techniques
US7478228B2 (en) * 2006-08-31 2009-01-13 Qualcomm Incorporated Apparatus for generating return address predictions for implicit and explicit subroutine calls
US7617493B2 (en) 2007-01-23 2009-11-10 International Business Machines Corporation Defining memory indifferent trace handles
US8190664B2 (en) 2007-04-26 2012-05-29 International Business Machines Corporation Employing a mask field of an instruction to encode a sign of a result of the instruction
US8688920B2 (en) 2007-05-14 2014-04-01 International Business Machines Corporation Computing system with guest code support of transactional memory
JP2008299795A (ja) * 2007-06-04 2008-12-11 Nec Electronics Corp 分岐予測制御装置及びその方法
US8205194B2 (en) 2007-06-29 2012-06-19 Microsoft Corporation Updating offline virtual machines or VM images
KR101498673B1 (ko) 2007-08-14 2015-03-09 삼성전자주식회사 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템
CN100478915C (zh) * 2007-09-20 2009-04-15 福建星网锐捷网络有限公司 一种基于mips架构cpu的异常点定位诊断方法
JP2009087028A (ja) 2007-09-28 2009-04-23 Toshiba Corp メモリシステム及びメモリの読出し方法並びにプログラム
US7971044B2 (en) * 2007-10-05 2011-06-28 Qualcomm Incorporated Link stack repair of erroneous speculative update
US7844954B2 (en) 2007-11-06 2010-11-30 Vmware, Inc. Using branch instruction counts to facilitate replay of virtual machine instruction execution
JP5091655B2 (ja) 2007-12-21 2012-12-05 株式会社日立製作所 計算機仮想化装置、そのプログラム、及びその方法
CN101470661B (zh) 2007-12-28 2012-03-14 鸿富锦精密工业(深圳)有限公司 计算机程序除错系统及方法
US20090182985A1 (en) 2008-01-11 2009-07-16 International Business Machines Corporation Move Facility and Instructions Therefore
US8041922B2 (en) 2008-01-11 2011-10-18 International Business Machines Corporation Enhanced dynamic address translation with load real address function
US8151085B2 (en) 2008-01-17 2012-04-03 International Business Machines Corporation Method for address translation in virtual machines
US8099541B2 (en) 2008-01-22 2012-01-17 Globalfoundries Inc. Minivisor entry point in virtual machine monitor address space
US8819647B2 (en) 2008-01-25 2014-08-26 International Business Machines Corporation Performance improvements for nested virtual machines
US8832682B2 (en) 2008-03-28 2014-09-09 Vmware, Inc. Trace collection for a virtual machine
US8086822B2 (en) 2008-05-30 2011-12-27 Vmware, Inc. In-place shadow tables for virtualization
US8275971B2 (en) 2008-08-27 2012-09-25 International Business Machines Corporation Method and apparatus for managing software controlled cache of translating the physical memory access of a virtual machine between different levels of translation entities
US8473930B2 (en) 2008-11-05 2013-06-25 Oracle America, Inc. Handling signals and exceptions in a dynamic translation environment
CN101751345B (zh) 2008-12-10 2012-04-11 国际商业机器公司 在主机中运行客户机的程序的模拟器和模拟方法
US8078854B2 (en) 2008-12-12 2011-12-13 Oracle America, Inc. Using register rename maps to facilitate precise exception semantics
US8959277B2 (en) 2008-12-12 2015-02-17 Oracle America, Inc. Facilitating gated stores without data bypass
US8561040B2 (en) 2009-03-10 2013-10-15 Oracle America, Inc. One-pass compilation of virtual instructions
US8832354B2 (en) 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
US8103894B2 (en) 2009-04-24 2012-01-24 International Business Machines Corporation Power conservation in vertically-striped NUCA caches
US8140758B2 (en) 2009-04-24 2012-03-20 International Business Machines Corporation Data reorganization in non-uniform cache access caches
US8799879B2 (en) 2009-06-30 2014-08-05 Oracle America, Inc. Method and apparatus for protecting translated code in a virtual machine
US8386745B2 (en) 2009-07-24 2013-02-26 Advanced Micro Devices, Inc. I/O memory management unit including multilevel address translation for I/O and computation offload
US8428930B2 (en) 2009-09-18 2013-04-23 International Business Machines Corporation Page mapped spatially aware emulation of a computer instruction set
US8301434B2 (en) 2009-09-18 2012-10-30 International Buisness Machines Corporation Host cell spatially aware emulation of a guest wild branch
US8447583B2 (en) 2009-09-18 2013-05-21 International Business Machines Corporation Self initialized host cell spatially aware emulation of a computer instruction set
US9158566B2 (en) 2009-09-18 2015-10-13 International Business Machines Corporation Page mapped spatially aware emulation of computer instruction set
US8612731B2 (en) 2009-11-06 2013-12-17 International Business Machines Corporation Branch target buffer for emulation environments
US8364461B2 (en) 2009-11-09 2013-01-29 International Business Machines Corporation Reusing invalidated traces in a system emulator
EP2507700A1 (en) 2009-12-04 2012-10-10 Marvell World Trade Ltd. Virtualization of storage devices
KR101247259B1 (ko) 2009-12-17 2013-04-01 한국전자통신연구원 가상화 장치 및 그 처리 방법
US8438334B2 (en) 2009-12-22 2013-05-07 International Business Machines Corporation Hybrid storage subsystem with mixed placement of file contents
US8775153B2 (en) 2009-12-23 2014-07-08 Intel Corporation Transitioning from source instruction set architecture (ISA) code to translated code in a partial emulation environment
JP2011198091A (ja) 2010-03-19 2011-10-06 Toshiba Corp 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム
US20110238962A1 (en) 2010-03-23 2011-09-29 International Business Machines Corporation Register Checkpointing for Speculative Modes of Execution in Out-of-Order Processors
US8572635B2 (en) 2010-06-23 2013-10-29 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification
US8650337B2 (en) 2010-06-23 2014-02-11 International Business Machines Corporation Runtime determination of translation formats for adapter functions
WO2012103253A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Multilevel conversion table cache for translating guest instructions to native instructions
CN103620547B (zh) 2011-01-27 2018-07-10 英特尔公司 使用处理器的转换后备缓冲器的基于客户指令到本机指令范围的映射
WO2012103373A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Variable caching structure for managing physical storage
WO2012103367A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Guest to native block address mappings and management of native code storage
WO2012103359A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Hardware acceleration components for translating guest instructions to native instructions
WO2012103245A2 (en) 2011-01-27 2012-08-02 Soft Machines Inc. Guest instruction block with near branching and far branching sequence construction to native instruction block
US9495183B2 (en) 2011-05-16 2016-11-15 Microsoft Technology Licensing, Llc Instruction set emulation for guest operating systems
US8645633B2 (en) 2011-05-17 2014-02-04 International Business Machines Corporation Facilitating data coherency using in-memory tag bits and faulting stores
US9354886B2 (en) * 2011-11-28 2016-05-31 Apple Inc. Maintaining the integrity of an execution return address stack
US9280347B2 (en) 2012-03-15 2016-03-08 International Business Machines Corporation Transforming non-contiguous instruction specifiers to contiguous instruction specifiers
US10656945B2 (en) 2012-06-15 2020-05-19 International Business Machines Corporation Next instruction access intent instruction for indicating usage of a storage operand by one or more instructions subsequent to a next sequential instruction
US8819648B2 (en) 2012-07-20 2014-08-26 International Business Machines Corporation Control flow management for execution of dynamically translated non-native code in a virtual hosting environment
US20140258696A1 (en) 2013-03-05 2014-09-11 Qualcomm Incorporated Strided target address predictor (stap) for indirect branches
WO2014151652A1 (en) 2013-03-15 2014-09-25 Soft Machines Inc Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor
WO2014151691A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. Method and apparatus for guest return address stack emulation supporting speculation
CN104679480A (zh) 2013-11-27 2015-06-03 上海芯豪微电子有限公司 一种指令集转换系统和方法
US9477453B1 (en) * 2015-06-24 2016-10-25 Intel Corporation Technologies for shadow stack manipulation for binary translation systems

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11663006B2 (en) 2015-12-20 2023-05-30 Intel Corporation Hardware apparatuses and methods to switch shadow stack pointers
TWI796031B (zh) * 2016-02-04 2023-03-11 美商英特爾股份有限公司 用於以在環移轉期間保護堆疊的處理器擴展的設備

Also Published As

Publication number Publication date
CN105122206B (zh) 2018-11-09
EP2972798A1 (en) 2016-01-20
CN105122206A (zh) 2015-12-02
EP2972798B1 (en) 2020-06-17
US20190155609A1 (en) 2019-05-23
KR20150132431A (ko) 2015-11-25
WO2014151691A1 (en) 2014-09-25
KR101761498B1 (ko) 2017-07-25
US10228950B2 (en) 2019-03-12
US20140281388A1 (en) 2014-09-18
TWI522915B (zh) 2016-02-21
CN109358948B (zh) 2022-03-25
EP2972798A4 (en) 2017-04-19
CN109358948A (zh) 2019-02-19
US10810014B2 (en) 2020-10-20

Similar Documents

Publication Publication Date Title
TWI522915B (zh) 客戶返回位址堆疊仿真支持推測的方法與裝置
US9256428B2 (en) Load latency speculation in an out-of-order computer processor
US10621029B2 (en) Restoring an application from a system dump file
US11294680B2 (en) Determining branch targets for guest branch instructions executed in native address space
US9250889B2 (en) Assigning severity to a software update
US10209757B2 (en) Reducing power consumption in a multi-slice computer processor
US10970079B2 (en) Parallel dispatching of multi-operation instructions in a multi-slice computer processor
TW201510857A (zh) 在硬體結構中排序元素的方法與設備
US9104558B2 (en) Preventing out-of-space errors for legacy option ROM in a computing system
US10884763B2 (en) Loading new code in the initial program load path to reduce system restarts

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees