专利摘要:
本發明揭示一種針對處理器管理程式碼快取上儲存之映射的方法。該方法包括:將複數個客戶位址至本機位址映射儲存在一轉換後備緩衝器中作為項目,其中該等項目指示在程式碼快取記憶體內具有儲存之對應轉換本機位址的客戶位址;及接收針對該轉換後備緩衝器之一客戶位址的後續請求。索引該轉換後備緩衝器以決定其中是否存在對應於索引的項目,其中該索引包含用以識別對應於該索引之項目的一標籤及一偏移量。在標籤上發生命中時,存取對應的項目以擷取一指標,該指標指示轉換本機指令之對應區塊駐存在程式碼快取記憶體中何處。從該程式碼快取記憶體提取轉換本機指令的對應區塊以便執行。
公开号:TW201303593A
申请号:TW101102838
申请日:2012-01-30
公开日:2013-01-16
发明作者:Mohammad Abdallah
申请人:Soft Machines Inc;
IPC主号:G06F9-00
专利说明:
客戶至本機區塊位址映射與本機碼儲存之管理【相關申請案參照】
本申請案主張2011年1月27日由Mohammad A.Abdallah申請之同在申請中及共同讓與的美國臨時專利申請案第61/436,957號的權利,其標題為「客戶至本機區塊位址映射與本機碼儲存之管理」,及其全文以引用的方式併入本文中。
本發明一般有關數位電腦系統,尤其有關一種轉譯包含指令序列(instruction sequence)之指令的系統及方法。
許多類型的數位電腦系統利用程式碼(code)變換(transformation)/轉譯(translation)或仿擬(emulation),實施軟體功能性。一般而言,即使指令不在電腦系統的「本機」內,轉譯及仿擬均涉及檢查軟體指令的程式及履行軟體指令指定的功能及動作。在轉譯的情況中,非本機指令被轉譯為本機指令的形式,本機指令係設計可在電腦系統的硬體上執行。實例包括先前技術的轉譯軟體及/或硬體,其以工業標準x86應用程式操作,使這些應用程式可在非x86或替代的電腦架構上執行。一般而言,轉譯程序(translation process)利用大量的處理器週期(processor cycle),因而造成不小的額外負擔。額外負擔所造成的效能損失可實質上抹滅轉譯程序所帶來的任何好處。
一個試圖解決此問題的做法涉及使用及時編譯(just-in-time compilation)。及時(JIT)編譯又稱為動態轉譯,是一種提高電腦程式之運行時間效能(runtime performance)的方法。傳統上,電腦程式具有兩個運行時間變換模式:解譯模式(interpretation mode)或JIT(及時)編譯/轉譯模式。解譯是一種解碼程序(decoding process),其涉及一個指令一個指令地解碼,以低於JIT編譯的額外負擔將客戶碼變換為本機碼,但其產生表現較差的變換碼。另外,解譯係以每一個指令來調用(invoked)。JIT編譯器或轉譯器代表截然不同的解譯途徑。就JIT轉換而言,其通常具有比解譯器高的額外負擔,但其產生更為最佳化的轉譯碼(translated code)及具有較高執行效能的轉譯碼。在多數的仿擬實施方案中,第一次需要轉譯時,將轉譯作為解譯來進行以減少額外負擔,在看過(執行)程式碼許多次之後,調用JIT轉譯以建立比較最佳化的轉譯。
然而,程式碼變換程序還是引起許多問題。JIT編譯程序本身就對處理器造成為數不小的額外負擔。這可在啟動應用程式時造成較大延遲。另外,管理變換碼在系統記憶體中的儲存造成多趟往返系統記憶體的行程(trip),且包括記憶體映射(memory mapping)及分配管理額外負擔,因而招致可觀的潛時損失(latency penalty)。此外,變更應用程式的執行區涉及在系統記憶體及程式碼快取中重新安置變換碼,然後從頭開始起始程序。解譯程序涉及的額外負擔比JIT轉譯小,但其額外負擔是每個指令都要重複,因此還是相當可觀。即使產生程式碼,所產生的程式碼也無法最佳化。
本發明之具體實施例實施實現客戶指令至本機指令轉換程序之硬體為基加速(hardware based acceleration)的演算法(algorithm)及裝置。
在一具體實施例中,本發明實施為針對處理器管理程式碼快取上儲存之映射的方法。該方法包括:將複數個客戶位址至本機位址映射(guest address to native address mapping)儲存在一轉換後備緩衝器(conversion look aside buffer,CLB)中作為項目(entry),其中該等項目指示在程式碼快取記憶體(code cache memory)內具有儲存之對應轉換本機位址(converted native address)的客戶位址;及接收針對該轉換後備緩衝器之一客戶位址的後續請求。索引該轉換後備緩衝器以決定其中是否存在對應於索引的項目,其中該索引包含用以識別對應於該索引之項目的一標籤(tag)及一偏移量(offset)。在標籤上發生命中(hit)時,存取對應的項目以擷取一指標,該指標指示轉換本機指令的對應區塊(block)駐存在程式碼快取記憶體中何處。從該程式碼快取記憶體提取轉換本機指令的對應區塊以便執行。
上述為發明內容,按必要性含有簡單、一般性的說明,因而省略部分細節;所以熟習本技術者應明白,發明內容僅為說明性的,而無意以任何方式加以限制。參考以下提出的非限制性詳細說明,即可明瞭本發明僅如申請專利範圍所定義的其他方面、發明特徵、及優點。
雖然已經結合一具體實施例說明本發明,但無意使本發明受限於本文所提的特定形式。相反地,其意在於涵蓋如可在隨附申請專利範圍定義之本發明範疇中合理包括的替代方案、修改、及等效物。
在以下「實施方式」中,提出許多特定細節,諸如特定方法順序、結構、元件、及連接。但應明白,要實踐本發明之具體實施例,未必要利用這些及其他特定細節。在其他情形中,已省略或未以特定細節說明熟知的結構、元件、或連接,以免不必要地混淆本說明。
說明書中提及「一具體實施例」是指結合該具體實施例說明的特定特徵、結構、或特性包括在本發明的至少一具體實施例中。說明書中各處出現的用語「在一具體實施例中」未必全部有關相同的具體實施例,也不是與其他具體實施例互斥的獨立或替代具體實施例。此外,說明可由某些具體實施例展現而未由其他具體實施例展現的各種特徵。同樣地,說明可為某些具體實施例但非其他具體實施例之必要條件的必要條件。
以下「實施方式」的某些部分就電腦記憶體內資料位元操作的過程、步驟、邏輯區塊、處理、及其他符號表示法提出討論。這些說明及表示法係熟習資料處理技術者所使用的方法,以最有效的方式將其運作本質傳達給其他熟習本技術者。過程、電腦執行步驟、邏輯區塊、程序等在此且一般被設想為導致所要結果之自相一致的步驟或指令序列。此等步驟是需要物理量之物理操控的步驟。通常,但非一定,這些物理量採取電腦可讀儲存媒體之電信號或磁信號的形式,且能夠在電腦系統中儲存、傳輸、結合、比較及以其他方式操控。已證實有時很方便的是(主要為了一般的使用)將這些信號稱為位元、值、元件、符號、字元(character)、條件項(term)、數字等。
然而,應明白,所有這些術語及相似術語係為了和相應物理量相關聯,且只是應用於這些物理量的便利標記。除非另外明確說明為明顯不同於以下論述,應明白,在本發明所有方面,利用諸如「處理(processing)」或「存取(accessing)」或「寫入」或「儲存」或「複製」等術語的論述,是指電腦系統或類似電子計算裝置的動作與程序,電腦系統或類似電子計算裝置操控電腦系統暫存器與記憶體及其他電腦可讀媒體中表示為物理(電子)量的資料,及將其變換為電腦系統記憶體或暫存器或其他此類資訊儲存器、傳送或顯示裝置中同樣表示為物理量的其他資料。
本發明之具體實施例藉由大幅加速將客戶指令架構之客戶指令轉譯為本機指令架構之本機指令的程序以在本機處理器上執行而發揮功能。本發明之具體實施例利用硬體單元實施轉換程序的硬體加速。客戶指令可以來自若干不同的指令架構。實例架構包括Java或JavaScript、x86、MIPS、SPARC等。這些客戶指令被快速轉換為本機指令,並以管線送到本機處理器硬體以便快速執行。此舉比傳統的軟體控制轉換程序提供高出許多的效能等級。
在一具體實施例中,本發明實施靈活轉換程序,其可使用若干不同指令架構作為輸入。在此具體實施例中,將處理器的前端實施成其可為軟體所控制,同時利用硬體加速轉換處理,以達到更高的效能等級。此實施方案在多方面達到好處。可處理及轉換不同的客戶架構,且各個客戶架構得到硬體加速的好處,以享有更高的效能等級。軟體控制前端可提供應用程式在處理器上執行的較大靈活度。硬體加速可達成以接近本機硬體速度執行客戶應用程式的客戶指令。在以下說明中,圖1至圖4顯示本發明之具體實施例處置客戶指令序列及處置在這些客戶指令序列內的較近分支(near branch)及較遠分支(far branch)的方式。圖5顯示根據本發明之一具體實施例之例示性硬體加速轉換處理系統的概觀。
圖1顯示本發明之一具體實施例所操作的例示性指令序列。如圖1所描繪,指令序列100包含16個指令,從圖1的頂部開始至底部。如圖1中可見,序列100包括四個分支指令(branch instruction)101-104。
本發明具體實施例之一目的在於將整個群組的指令處理為單一基元單元(single atomic unit)。此基元單元稱為「區塊」。指令區塊可充分延伸超過圖1顯示的16個指令。在一具體實施例中,區塊將包括足夠的指令以填滿固定大小(如,64位元組、128位元組、256位元組等),或直到遇到出口條件(exit condition)。在一具體實施例中,結束指令區塊的出口條件是遇到較遠分支指令。如本文具體實施例的說明中所使用,較遠分支是指其目標位址駐存在目前指令區塊之外的分支指令。換言之,在給定的客戶指令區塊內,較遠分支具有駐存在某個其他區塊中或在給定指令區塊外之某個其他指令序列中的目標。同樣地,較近分支是指其目標位址駐存在目前指令區塊內的分支指令。另外,應注意,本機指令區塊可含有多個客戶較遠分支。在以下討論中將進一步說明這些術語。
圖2顯示根據本發明之一具體實施例描繪基於區塊的轉換程序的示意圖,其中將客戶指令區塊轉換為本機轉換區塊。如圖2中圖解,顯示將複數個客戶指令區塊201轉換為對應的複數個本機轉換區塊202。
本發明之具體實施例藉由將客戶指令區塊的指令轉換為本機轉換區塊之對應的指令而發揮功能。各個區塊201由客戶指令組成。如上述,這些客戶指令可來自若干不同的客戶指令架構(如,Java或JavaScript、x86、MIPS、SPARC等)。多個客戶指令區塊可轉換為一或多個對應的本機轉換區塊。此轉換基於每個指令而發生。
圖2亦圖解基於分支預測(branch prediction)將客戶指令區塊組合成序列的方式。此屬性(attribute)使本發明之具體實施例能夠基於較遠分支的預測結果組合客戶指令序列。基於較遠分支預測,將客戶指令序列從多個客戶指令區塊組合成及轉換為對應的本機轉換區塊。此做法將在以下圖3及圖4中進一步說明。
圖3顯示根據本發明之一具體實施例圖解將客戶指令區塊的各個指令轉換為本機轉換區塊之對應的本機指令之方式的示意圖。如圖3中圖解,客戶指令區塊駐存在客戶指令緩衝器301內。同樣地,本機轉換區塊駐存在本機指令緩衝器302內。
圖3顯示本發明之具體實施例的屬性,其中將客戶分支指令的目標位址轉換為本機分支指令的目標位址。例如,客戶指令分支各包括識別特定分支之目標位址的偏移量。這在圖3中顯示為客戶偏移量或G_offset。隨著客戶指令被轉換,此偏移量通常因為本機指令產生對應客戶指令之功能性所需的不同長度或序列而不同。例如,客戶指令的長度可與其對應之本機指令的長度不同。因此,轉換程序藉由計算對應的本機偏移量補償此差異。這在圖3中顯示為本機偏移量或N_offset。
應注意,由於未預測在客戶指令區塊內具有目標的分支(稱為「較近分支」),因而未改變指令序列流。
圖4顯示根據本發明之一具體實施例圖解以處置本機轉換區塊來處理較遠分支之方式的示意圖。如圖4中圖解,將客戶指令描繪為記憶體中的客戶指令序列401。同樣地,將本機指令描繪為記憶體中的本機指令序列402。
在一具體實施例中,每一個指令區塊(客戶指令區塊及本機指令區塊二者)以較遠分支結束(如,即使本機區塊可能含有多個客戶較遠分支)。如上述,區塊將包括足夠的指令以填滿固定大小(如,64位元組、128位元組、256位元組等),或直到遇到出口條件,諸如最後一個客戶較遠分支指令。如果已經處理若干客戶指令以組合客戶指令區塊且尚未遇到較遠分支,則插入客戶較遠分支以結束區塊。此較遠分支只要一躍(jump)即可跳到下一個後續區塊(subsequent block)。這確保指令區塊以引向記憶體中另一本機指令區塊或另一客戶指令序列的分支結束。另外,如圖4中顯示,區塊可包括在其指令序列內不駐存在區塊末端處的客戶較遠分支。這以客戶指令較遠分支411及對應的本機指令客戶較遠分支412來顯示。
在圖4具體實施例中,預測取用較遠分支411。因此,指令序列跳至較遠分支411的目標,即客戶指令F。同樣地,在對應的本機指令中,接續在較遠分支412之後的是本機指令F。未預測較近分支。因此,這些較近分支未以較遠分支的相同方式改變指令序列。
以此方式,本發明之具體實施例產生轉換區塊的軌跡(trace),其中各個區塊包含若干(如,3-4)個較遠分支。此軌跡係基於客戶較遠分支預測。
在一具體實施例中,在本機轉換區塊內的較遠分支包括用於相對分支路徑之相反位址的客戶位址。如上述,基於較遠分支的預測產生指令序列。直到執行對應的本機轉換區塊,才會知道真正的預測結果。因此,一旦偵測到錯誤的預測,則檢查錯誤的較遠分支,以獲得相對分支路徑的相反客戶位址。轉換程序接著從相反客戶位址繼續,其現在是真正的分支路徑。以此方式,本發明之具體實施例使用所包括之用於相對分支路徑的相反客戶位址,以從較遠分支之預測結果是錯誤的狀況中恢復。因此,如果較遠分支預測結果是錯誤的,則程序知道去何處找到正確的客戶指令。同樣地,如果較遠分支預測結果是正確的,則忽略相反客戶位址。應注意,如果正確預測在本機指令區塊內的較遠分支,則在CLB中不需要其目標區塊的登錄點(entry point)。然而,一旦發生失誤的預測,則需要在CLB中插入目標區塊的新登錄。此功能係以保存CLB容量(capacity)為目標而履行。
圖5顯示例示性硬體加速轉換系統500的示意圖,其根據本發明之一具體實施例圖解將客戶指令區塊及其對應的本機轉換區塊儲存在快取中的方式。如圖5中圖解,使用轉換後備緩衝器506快取客戶及本機區塊之間的位址映射;致使透過低潛時可用性(low latency availability)將最常遇到的本機轉換區塊存取至處理器508中。
圖5示意圖圖解在高速低潛時快取(high-speed low latency cache memory)(轉換後備緩衝器506)內維持時常遇到的本機轉換區塊的方式。圖5中描繪的組件實施硬體加速轉換處理,以達到更高的效能等級。
客戶提取邏輯單元502運作為從系統記憶體501提取客戶指令的硬體為基客戶指令提取單元(hardware-based guest instruction fetch unit)。給定應用程式的客戶指令駐存在系統記憶體501內。在程式初始後,硬體為基客戶提取邏輯單元502開始預提取客戶指令至客戶提取緩衝器(guest fetch buffer)503中。客戶提取緩衝器503累積客戶指令,然後將這些指令組合成(assemble)客戶指令區塊。使用轉換表504,將這些客戶指令區塊轉換為對應的本機轉換區塊。轉換的本機指令在本機轉換緩衝器(native conversion buffer)505內累積,直到本機轉換區塊完成。接著將本機轉換區塊傳輸至本機快取507,及將映射儲存在轉換後備緩衝器506中。接著使用本機快取507以供給本機指令至處理器508以便執行。在一具體實施例中,藉由客戶提取邏輯狀態機(guest fetch logic state machine)產生由客戶提取邏輯單元502實施的功能性。
隨著此程序繼續,轉換後備緩衝器506填滿客戶區塊至本機區塊的位址映射。轉換後備緩衝器506使用一或多個演算法(如,最近最少使用等)以確保將較常遇到的區塊映射保持在緩衝器內,且將很少遇到的區塊映射逐出緩衝器。以此方式,將熱門的本機轉換區塊映射儲存在轉換後備緩衝器506內。另外,應注意,在本機區塊內精確預測的較遠客戶分支不需要在CLB中插入新的映射,因為其目標區塊固定在單一映射本機區塊內,因此保存CLB結構的較小容量效率。此外,在一具體實施例中,構造CLB以僅儲存最後的客戶至本機位址映射。此做法亦保存CLB的較小容量效率。
客戶提取邏輯502查看轉換後備緩衝器506以決定客戶指令區塊的位址是否已被轉換為本機轉換區塊。如上述,本發明之具體實施例提供用於轉換處理的硬體加速。因此,在從系統記憶體501提取客戶位址以進行新的轉換前,客戶提取邏輯502將查看轉換後備緩衝器506有無預先存在的本機轉換區塊映射。
在一具體實施例中,對於轉換後備緩衝器以客戶位址範圍或以個別客戶位址進行索引。客戶位址範圍是已轉換為本機轉換區塊之客戶指令區塊之位址的範圍。轉換後備緩衝器所儲存的本機轉換區塊映射經由其對應之客戶指令區塊之對應的客戶位址範圍而被進行索引。因此,客戶提取邏輯可比較客戶位址與轉換區塊的客戶位址範圍或個別客戶位址(其映射保持在轉換後備緩衝器506中),以決定預先存在的本機轉換區塊是否駐存在本機快取507中儲存的位置內或在圖6的程式碼快取中。如果預先存在的本機轉換區塊位在本機快取或程式碼快取中,則將對應的本機轉換指令從這些快取直接傳送到處理器。
以此方式,熱門的客戶指令區塊(如,經常執行的客戶指令區塊)具有其維持在高速低潛時轉換後備緩衝器506內的對應熱門本機轉換區塊映射。隨著區塊被接觸,適當的替換策略(replacement policy)確保熱門的區塊映射繼續留在轉換後備緩衝器內。因此,客戶提取邏輯502可馬上識別所請求的客戶位址先前是否已被轉換,並可將先前轉換的本機指令直接傳送至本機快取507,以由處理器508執行。這些做法省下許多週期,因為至系統記憶體的行程可花費40至50個週期或更多。這些屬性(如,CLB、客戶分支序列預測、客戶及本機分支緩衝器、對先前的本機快取)允許本發明之具體實施例的硬體加速功能性達成客戶應用程式的應用程式效能至同等本機應用程式的應用程式效能的80%至100%內。
在一具體實施例中,客戶提取邏輯502一再地預提取客戶指令,用於與來自處理器508的客戶指令請求(guest instruction request)無關的轉換。本機轉換區塊可在系統記憶體501中那些用於較少使用區塊的轉換緩衝器「程式碼快取」(conversion buffer code cache)內累積。轉換後備緩衝器506亦保持最常使用的映射。因此,如果所請求的客戶位址未映射至轉換後備緩衝器中的客戶位址,則客戶提取邏輯可檢查系統記憶體501以決定客戶位址是否對應於其中儲存的本機轉換區塊。
在一具體實施例中,轉換後備緩衝器506係實施為快取並利用快取一致性協定(cache coherency protocol),以與儲存在較高階快取中的較大轉換緩衝器及系統記憶體501維持一致性。儲存在轉換後備緩衝器506內的本機指令映射亦寫回(write back)較高階的快取及系統記憶體501。至系統記憶體的寫回維持一致性。因此,可使用快取管理協定以確保熱門的本機轉換區塊映射儲存在轉換後備緩衝器506內,及冷門的本機轉換映射區塊儲存在系統記憶體501中。因此,較大形式的轉換緩衝器506駐存在系統記憶體501中。
應注意,在一具體實施例中,可使用例示性硬體加速轉換系統500實施若干不同的虛擬儲存方案。例如,可使用客戶指令區塊及其對應的本機轉換區塊儲存在快取內的方式支援虛擬儲存方案。同樣地,可使用用來快取客戶及本機區塊之間的位址映射的轉換後備緩衝器506支援虛擬儲存方案(如,虛擬至實體記憶體映射的管理)。
在一具體實施例中,圖5的架構實施虛擬指令集處理器/電腦,其使用可接收若干不同指令架構作為輸入的靈活轉換程序。在此虛擬指令集處理器中,將處理器的前端實施成其可為軟體所控制,同時利用硬體加速轉換處理,以達到更高的效能等級。使用此實施方案,可處理及轉換不同的客戶架構(guest architecture),且各個客戶架構得到硬體加速的好處,以享有更高的效能等級。實例客戶架構包括Java或JavaScript、x86、MIPS、SPARC等。在一具體實施例中,「客戶架構」可以是本機指令(如,來自本機應用程式/巨集操作(macro-operation)),及轉換程序產生最佳化本機指令(如,最佳化本機指令/微操作(micro-operation))。軟體控制前端可提供應用程式在處理器上執行的較大靈活度。如上述,硬體加速可以接近本機硬體速度執行客戶應用程式的客戶指令。
圖6顯示根據本發明之一具體實施例之硬體加速轉換系統600的詳細實例。系統600以上述系統500的實質上相同方式履行。然而,系統600顯示說明例示性硬體加速程序之功能性的額外細節。
系統記憶體601包括資料結構(data structure),其包含:客戶碼602、轉換後備緩衝器603、最佳化器碼(optimizer cod)604、轉換器碼(converter code)605、及本機碼快取606。系統600亦顯示共用硬體快取(shared hardware cache)607,在其中交錯及共用客戶指令及本機指令兩者。客戶硬體快取610從共用硬體快取607抓取最常接觸的這些客戶指令。
客戶提取邏輯620預提取來自客戶碼602的客戶指令。客戶提取邏輯620與TLB 609介接,TLB 609運作為將虛擬客戶位址轉譯為對應的實體客戶位址的轉換後備緩衝器。TLB 609可將命中直接傳送至客戶硬體快取610。由客戶提取邏輯620提取的客戶指令儲存在客戶提取緩衝器611中。
轉換表612及613包括替代欄位(substitute field)及控制欄位(control field),並運作為將接收自客戶提取緩衝器611的客戶指令轉譯為本機指令的多層轉換表(multilevel conversion table)。
多工器(multiplexer)614及615將轉換的本機指令傳輸至本機轉換緩衝器616。本機轉換緩衝器616累積轉換的本機指令以組合本機轉換區塊。接著將這些本機轉換區塊傳輸至本機硬體快取608,及將映射保持在轉換後備緩衝器630中。
轉換後備緩衝器630包括用於以下的資料結構:客戶分支位址(guest branch address)631、本機位址632、轉換的區塊範圍(converted block range)633、程式碼快取及轉換後備緩衝器管理位元(code cache and conversion look aside buffer management bit)634、及動態分支偏差值位元(dynamic branch bias bit)635。客戶分支位址631及本機位址632包含指示哪些對應的本機轉換區塊駐存在轉換的區塊範圍633內的客戶位址範圍。快取管理協定及替換策略確保熱門的本機轉換區塊映射駐存在轉換後備緩衝器630內,同時冷門的本機轉換區塊映射駐存在系統記憶體601的轉換後備緩衝器資料結構603內。
如同系統500的情況,系統600試圖確保熱門的區塊映射駐存在高速低潛時轉換後備緩衝器630內。因此,在一具體實施例中,當提取邏輯640或客戶提取邏輯620查看以提取客戶位址時,提取邏輯640首先可檢查客戶位址,以決定對應的本機轉換區塊是否駐存在本機碼快取606內。此舉允許決定請求的客戶位址是否在本機碼快取606中具有對應的本機轉換區塊。如果請求的客戶位址不駐存在緩衝器603或608、或緩衝器630內,則從客戶碼602提取客戶位址及若干後續客戶指令,及經由轉換表612及613實施轉換程序。
圖7顯示根據本發明之一具體實施例具有輔助軟體為基加速轉換管線secondary software-based accelerated conversion pipeline)之硬體加速轉換系統700的實例。
組件711-716包含軟體實施的載入儲存路徑(load store path),其例如在特殊高速記憶體760內。如圖7所描繪,客戶提取緩衝器711、轉換表712-713及本機轉換緩衝器716包含特殊高速記憶體760的分配部分(allocated portion)。在許多觀點上,特殊高速記憶體760用作極低階(low-level)快速快取(如,L0快取)。
箭頭761圖解藉以經由與指令提取路徑(instruction fetch path)(如,來自提取的解碼邏輯(fetched decode logic))相對的載入儲存路徑來加速轉換的屬性。
在圖7具體實施例,高速記憶體760包括用於進行比較的特殊邏輯。由於這一點,可以軟體實施轉換加速。例如,在另一具體實施例中,由使用處理器執行管線(processor execution pipeline)的軟體操控儲存組件711-716的標準記憶體760,該軟體在處理器執行管線處將該等組件711-716的值載入一或多個SIMD暫存器並實施履行SIMD暫存器中欄位間之比較的比較指令,及視需要履行遮罩操作(mask operation)及結果掃描操作(result scan operation)。可使用通用微處理器硬體(general purpose microprocessor hardware)(諸如,例如,使用比較一者與多者之比較指令)來實施載入儲存路徑。
應注意,由具有特殊屬性或位址範圍的指令存取記憶體760。例如,在一具體實施例中,客戶提取緩衝器具有用於各個客戶指令項目(guest instruction entry)的ID。每個客戶指令均建立ID。此ID允許容易從客戶緩衝器映射至本機轉換緩衝器。ID允許容易進行客戶偏移量至本機偏移量的計算,不管客戶指令與對應的本機指令相比的不同長度。此做法在上文圖3中已做圖示。
在一具體實施例中,由使用計算所提取客戶指令之長度之長度解碼器(length decoder)的硬體來計算ID。然而,應注意,可以硬體或軟體履行此功能性。
一旦指派ID後,可經由ID存取本機指令緩衝器。ID允許客戶偏移量至本機偏移量的偏移量轉換。
圖8顯示根據本發明之一具體實施例圖解CLB結合程式碼快取及儲存於記憶體中的客戶指令至本機指令映射而發揮功能之方式的例示性流程圖。
如上述,使用CIB來儲存具有對應的轉換本機位址(儲存在程式碼快取記憶體內)之客戶位址的映射(如,客戶至本機位址映射)。在一具體實施例中,以客戶位址的一部分索引CLB。客戶位址可分割成索引、標籤(tag)、及偏移量(如,記憶塊大小(chunk size))。此客戶位址包含用以識別CLB項目中對應於索引之匹配的標籤。如果在標籤上發生命中,則對應的項目將儲存指標(pointer),其指示可在程式碼快取記憶體806中何處找到對應的轉換本機指令記憶塊(如,轉換本機指令的對應區塊)。
應注意,本文使用術語「記憶塊」指轉換本機指令區塊的對應記憶體大小。例如,記憶塊的大小可取決於轉換本機指令區塊的不同大小而不同。
在一具體實施例中,關於程式碼快取記憶體806,以一組固定大小記憶塊(如,各個記憶塊類型具有不同大小)分配程式碼快取。在系統記憶體及所有較低階硬體快取(如,本機硬體快取608、共用硬體快取607)中,可將程式碼快取邏輯分割成若干組及方式。CLB可使用客戶位址以進行索引及標籤上比較用於程式碼快取記憶塊(code cache chunk)的方式標籤(way tag)。
圖8描繪CLB硬體快取804以描繪為方式x及方式y的兩種方式儲存客戶位址標籤。應注意,在一具體實施例中,可透過以結構化方式將指標儲存於本機碼記憶塊,完成使用CLB結構之客戶位址至本機位址的映射(如,從客戶至本機位址映射)。各個方式與標籤相關聯。CLB係以客戶位址802(包含標籤)進行索引。在CLB中發生命中時,傳回對應於標籤的指標。使用此指標以索引程式碼快取記憶體。這在圖8中以一行文字「程式碼記憶塊的本機位址=Seg#+F(pt)」顯示,其代表以下事實:程式碼記憶塊的本機位址隨指標及區段號碼(segment number)而變。在本具體實施例中,區段是指記憶體中用於虛擬映射指標範疇(pointer scope)之點的基礎(如,允許將指標陣列映射於實體記憶體中的任何區域)。
或者,在一具體實施例中,可經由如圖8中以一行文字「程式碼記憶塊的本機位址=seg#+索引(64個記憶塊大小)+way#(記憶塊大小)」顯示的第二方法,索引程式碼快取記憶體。在此具體實施例中,可將程式碼快取組織成其方式結構(way-structure)匹配CLB方式結構化(way structuring),使得在CLB的方式及程式碼快取記憶塊的方式之間存在1:1映射。當在特定CLB方式中發生命中時,即程式碼快取的對應方式中的對應程式碼記憶塊具有本機碼。
仍然參考圖8,如果CLB的索引未中(miss),則可檢查記憶體的較高階層是否有命中(如,L1快取、L2快取等)。如果在這些較高快取等級中沒有發生命中,則檢查系統記憶體801中的位址。在一具體實施例中,客戶索引指向包含例如64個記憶塊的項目。讀出64個記憶塊中各者的標籤,並將其與客戶標籤進行比較,以決定是否發生命中。此程序在圖8中以虛線方框805顯示。如果在與系統記憶體中的標籤比較之後沒有任何命中,則在記憶體的任何階層等級不存在轉換,及必須轉換客戶指令。
應注意,本發明之具體實施例管理以類似快取方式儲存客戶至本機指令映射之記憶體的各個階層等級。這原本來自快取為基記憶體(cache-based memory)(如,CLB硬體快取、本機快取、L1及L2快取等)。然而,CLB亦包括「程式碼快取+CLB管理位元」,其係用來實施系統記憶體801內之客戶至本機指令映射的最近最少使用(least recently used,LRU)替換管理策略。在一具體實施例中,CLB管理位元(如,LRU位元)為軟體所管理。以此方式,使用記憶體的所有階層等級儲存最近使用之最常遇到的客戶至本機指令映射。對應地,這導致記憶體的所有階層等級同樣地儲存最常遇到的轉換本機指令。
圖8亦顯示CLB中儲存的動態分支偏差值位元及/或分支歷史記錄位元(branch history bit)。使用這些動態分支位元追蹤用於組合客戶指令序列之分支預測的行為。使用這些位元追蹤哪些分支預測是最常正確預測的,及哪些分支預測是最常不正確預測的。CLB亦儲存轉換區塊範圍的資料。此資料使程序能夠讓程式碼快取記憶體中對應之客戶指令已修改(如,在自我修改程式碼中)的轉換區塊範圍變成無效。
圖9顯示根據本發明之一具體實施例圖解實體儲存堆疊快取實施方案(physical storage stack cache implementation)及客戶位址至本機位址映射的例示性流程圖。如圖9所描繪,可將快取實施為實體儲存堆疊901。
圖9具體實施例圖解可將程式碼快取實施為可變結構快取(variable structure cache)的方式。取決於不同具體實施例的需求,可變結構快取可完全為硬體實施及控制、完全為軟體實施及控制、或軟體強制及控制與基本硬體啟用的部分混合。
圖9具體實施例有關在管理分配及替換客戶至本機位址映射及其在實際實體儲存中的對應轉譯的工作之間求取最佳平衡。在本具體實施例中,此可透過使用結合指標與可變大小記憶塊的結構來完成。
使用多方式標籤陣列(multi-way tag array)來儲存用於不同大小群組之實體儲存的指標。每次需要分配特定的儲存大小(如,其中儲存大小對應於位址)時,則據此分配各對應於此大小之儲存區塊的群組。此舉允許本發明之具體實施例精確地分配儲存,以儲存可變大小的指令軌跡。圖9顯示群組如何可以屬於不同大小。顯示兩個例示性群組大小:「群組大小4的替換候選者」及「群組大小2的替換候選者」。除了對應於位址的標籤之外,指標係也儲存在將位址映射成實體儲存位址的標籤陣列中。標籤可包含兩個或兩個以上的子標籤。例如,標籤結構902中最前面的3個標籤包含分別如所顯示的子標籤A1 B1、A2 B2 C2 D2、及A3 B3。因此,標籤A2 B2 C2 D2包含群組大小4,而標籤A1 B1包含群組大小2。群組大小遮罩(group size mask)亦指示群組的大小。
實體儲存於是可像堆疊般管理,致使每次分配新的群組時,可將新的群組放置在實體儲存堆疊的頂部。藉由覆寫項目的標籤而使項目失效,藉此恢復所分配的空間。
圖9亦顯示延伸方式標籤結構(extended way tag structure)903。在一些情形中,標籤結構902中的項目在延伸方式標籤結構903中將具有對應的項目。這取決於項目及標籤結構是否具有設定之延伸方式位元(如,設定為一)。例如,設定為一的延伸方式位元指示在延伸方式標籤結構中有對應的項目。延伸方式標籤結構允許處理器以與標準標籤結構的不同方式延伸參考區域性(locality of reference)。因此,儘管以一個方式索引標籤結構902(如,索引(j)),但以不同方式(如,索引(k))索引延伸方式標籤結構。
在典型的實施方案中,索引(j)可以是在索引(k)中的更多項目。這是因為在大多數的限制中,主要的標籤結構902比延伸方式標籤結構903大上許多,其中例如(j)可涵蓋1024個項目(如,10位元),而(k)可涵蓋256(如,8位元)。
這使得本發明之具體實施例能夠合併用於匹配已變得很熱門(如,極常遇到)之軌跡的額外方式。例如,如果無法在標籤結構902中找到在熱門集(hot set)內的匹配,則藉由設定延伸方式位元,可使用延伸方式標籤結構儲存用於熱門軌跡的額外方式。應注意,此可變快取結構在僅需要時使用儲存於堆疊上之快取程式碼/資料的儲存,例如,如果在特定程式階段(phase)期間從未存取任何快取集(cache set)(由索引位元指示的項目),則堆疊上將沒有該快取集的儲存分配。與典型快取(其中快取集具有針對每一個快取集的固定實體資料儲存)相比,這提供高效率的有效儲存容量增加。
亦可以有指示一個集合或一個群組的集合為冷門的(cold)位元(如,意思是這些集合已經很久未被存取)。在此例中,這些集合的堆疊儲存看起來像是在分配堆疊儲存內的氣泡(bubble)。此時,可為其他熱門集要求使用這些冷門集(cold set)的分配指標。此程序是儲存回收再利用程序(storage reclamation process),其中在記憶塊已在堆疊內分配好之後,該記憶塊屬於的整個集合其後變成冷門。可促進此回收再利用的所需機制及結構(圖9中未顯示以免使所顯示的方面變得混亂或混淆)是:每一個集合有一個冷門集指示符(cold set indicator)(項目索引),及回收再利用程序(其中用於這些冷門集之方式的指標被重複使用用於其他熱門集的方式)。此舉允許回收再利用這些堆疊儲存氣泡(記憶塊)。當不處於回收再利用模式時,將新的記憶塊分配於堆疊的頂部,當堆疊具有冷門集(如,集合方式/記憶塊長時間未被存取)時,回收再利用動作允許需要被分配在另一集合中的新記憶塊去重複使用被回收再利用的指標及其在堆疊內的相關聯記憶塊儲存(其屬於冷門集)。
應注意,圖9具體實施例充分適於使用標準記憶體,其實施為與特殊快取記憶體相對。此屬性是由於以下事實所造成:實體儲存堆疊係藉由讀取指標、讀取索引、及分配位址範圍加以管理。在此實施方案中不需要特殊的快取為基電路結構。
應注意,在一具體實施例中,可使用圖9架構以實施不涉及轉換或程式碼變換的資料快取及快取方案。因此,可使用圖9架構實施更為標準化的快取(如,L2資料快取等)。這麼做將比習用的固定結構快取等提供更大的有效容量。
圖10顯示根據本發明之一具體實施例描繪硬體加速轉換系統1000之額外例示性細節的示意圖。直線1001圖解將傳入的客戶指令與複數個群組遮罩及標籤相比較的方式。其目的是快速識別客戶指令的類型,然後將其指派給對應的群組。群組遮罩及標籤藉由匹配客戶指令的子欄位(subfield)以識別客戶指令所屬於的特定群組而發揮功能。遮罩遮掩客戶指令樣式(guest instruction pattern)的不相關位元,以特別查看相關位元。諸如表格1002的表格按優先順序處理的方式儲存遮罩-標籤對(mask-tag pair)。
藉由按優先權方向(在此例中描繪為由上至下的方向)讀取至表格中,來匹配樣式。以此方式,藉由按遮罩-標籤儲存的優先權方向讀取,來匹配樣式。以其優先權順序及樣式匹配功能性所檢查的不同遮罩係對應地按其優先權順序加以應用。在找到命中時,即從儲存映射的對應表格(如,表格1003)讀取樣式的對應映射。第二級表格1004圖解可以串列循序方式(cascading sequential manner)存取多個轉換表直到完全轉換客戶指令的階層方式(hierarchical manner)。如上述,轉換表包括替代欄位及控制欄位,並運作為將接收自客戶提取緩衝器的客戶指令轉譯為本機指令的多層轉換表。
以此方式,緩衝器中的各個位元組串流(byte stream)發送到轉換表,其中各個等級的轉換表連續偵測位元欄位。在偵測到相關位元欄位時,表格替代本機的等效欄位。
表格亦產生幫助用於此等級以及下一個等級表格(如,第二級表格1004)之替代程序(substitution process)的控制欄位。下一個表格使用先前表格的控制欄位以識別下一個相關位元欄位,其以本機等效欄位替代。第二級表格於是可產生控制欄位以幫助第一級表格,以此類推。一旦所有客戶位元欄位均以本機位元欄位替代,指令即完全轉譯且傳送至本機轉換緩衝器。本機轉換緩衝器接著寫入程式碼快取,及其客戶至本機位址映射記錄於CLB中,如上所述。
圖11A顯示本發明之具體實施例所實施之例示性樣式匹配程序的示意圖。如圖11A所描繪,由標籤、樣式、及遮罩決定目的地。樣式解碼的功能性包含履行位元比較(如,逐位元XOR)、履行位元AND(如,逐位元AND)、及後續檢查所有零位元(如,所有位元的NOR)。
圖11B顯示根據本發明之一具體實施例之基於SIMD暫存器之樣式匹配程序的示意圖1100。如示意圖1100中所描繪,顯示四個SIMD暫存器1102-1105。這些暫存器實施如所示樣式解碼程序的功能性。使用傳入樣式1101在各個標籤上履行平行位元比較(如,逐位元XOR),及其結果履行與遮罩的位元AND(如,逐位元AND)。匹配指示符結果如所示各儲存於其相應的SIMD位置。接著如所示履行掃描,及掃描在SIMD元件中所遇到的第一個「真(true)」是其中所有i位元的方程式(Pi XOR Ti)AND Mi=0為真的元件,其中Pi是相應的樣式,Ti是相應的標籤及Mi是相應的遮罩。
圖12顯示根據本發明之一具體實施例之統一暫存器檔案(unified register file)1201的圖式。如圖12所描繪,統一暫存器檔案1201包括個2部分1202-1203及項目選擇器(entry selector)1205。統一暫存器檔案1201支援硬體狀態更新的架構推測(architecture speculation)。
統一暫存器檔案1201可實施最佳化影子暫存器(optimized shadow register)及認可的(committed)暫存器狀態管理程序。此程序支援硬體狀態更新的架構推測。在此程序下,本發明之具體實施例可支援影子暫存器功能性及認可的暫存器功能性,且不需要在暫存器記憶體之間進行任何交叉複製。例如,在一具體實施例中,統一暫存器檔案1201的功能性大部分由項目選擇器1205提供。在圖12具體實施例中,各個暫存器檔案項目由分別來自部分1及部分2的兩對暫存器R及R’構成。在任何給定時間,從各個項目讀取的暫存器不是來自部分1的R,就是來自部分2的R’。基於項目選擇器1205針對各個項目儲存的x及y位元的值,針對暫存器檔案的各個項目,有4個不同的組合。
x及y位元的值如下。
00:R無效;R’認可(在讀取了讀取請求R’後)
01:R推測;R’認可(在讀取了讀取請求R後)
10:R認可;R’推測(在讀取了讀取請求R’後)
11:R認可;R’無效(在讀取了讀取請求R後)
以下是各個指令/事件的影響(impact)。在指令「寫回」後,00變成01,及11變成10。在指令「認可」後,01變成11,及10變成00。在發生回復事件(rollback event)後,01變成00,及10變成11。
這些變更主要是儲存在暫存器檔案項目選擇器1205中的狀態變更,並基於發生這些變更時的事件而發生。應注意,認可指令及回復事件需要達到認可階段,以在項目選擇器1205中造成位元轉變。
以此方式,才能夠在影子暫存器狀態內繼續執行,而不會破壞認可的暫存器狀態。當影子暫存器狀態準備認可時,更新暫存器檔案項目選擇器致使以上述方式從該部分讀取有效結果。以此方式,僅視需要藉由更新暫存器檔案項目選擇器,則推測執行結果(speculative execution result)可在發生例外時,回復到最近認可點(commit point)。同樣地,認可點可向前移動,藉此僅藉由更新暫存器檔案項目選擇器,認可推測執行結果。此功能性在不需要在暫存器記憶體之間進行任何交叉複製下提供。
以此方式,統一暫存器檔案可經由暫存器檔案項目選擇器1205,實施複數個推測暫用影子暫存器(speculative scratch shadow register,SSSR)及複數個認可暫存器(committed register,CR)。例如,在認可時,SSSR暫存器變成CR暫存器。在回復時,SSSR狀態回復為CR暫存器。
圖13顯示根據本發明之一具體實施例支援推測架構狀態(speculative architectural state)及暫態架構狀態(transient architectural state)之統一影子暫存器檔案及管線架構(unified shadow register file and pipeline architecture)1300的示意圖。
圖13具體實施例描繪包含支援包含架構1300的組件,其支援包含架構推測狀態之指令及結果以及支援包含暫態之指令及結果。如本文中使用,認可架構狀態包含可由處理器上執行的程式存取(如,讀取及寫入)的可見暫存器(visible register)及可見記憶體。相反地,推測架構狀態包含未被認可及因此並非全域可見的暫存器及/或記憶體。
在一具體實施例中,有四個由架構1300啟用的使用模型(usage model)。第一使用模型包括硬體狀態更新的架構推測,如上文在圖12的討論中描述。
第二使用模型包括雙範疇使用(dual scope usage)。此使用模型可用於將2個執行緒(thread)提取至處理器中,其中一個執行緒在推測狀態中執行,及另一個執行緒在非推測狀態中執行。在此使用模型中,兩個範疇被提取至機器(machine)中,及同時存在於機器中。
第三使用模型包括指令從一個形式至另一個形式的JIT(及時)轉譯或編譯。在此使用模型中,經由軟體(例如,JIT)重排架構狀態。第三使用模型可適用於例如客戶至本機指令轉譯、虛擬機器至本機指令轉譯、或將本機微指令重新映射/轉譯為更最佳化的本機微指令。
第四使用模型包括暫態環境切換(transient context switching),而不用在從暫態環境返回後存檔及復原先前環境。此使用模型適用於可因若干理由發生的環境切換。一個此種理由例如可以是經由例外處置環境(exception handling context)對例外進行精確處置。第二、第三、及第四使用模型將在以下圖14-17的討論中進一步說明。
再次參考圖13,架構1300包括實施上述4個使用模型的若干組件。統一影子暫存器檔案1301包括:第一部分,認可暫存器檔案1302;第二部分,影子暫存器檔案1303;及第三部分,最新指示符陣列(latest indicator array)1304。還包括推測撤回記憶體緩衝器(speculative retirement memory buffer,SMB)1342及最新指示符陣列1341。架構1300包含亂序架構(out of order architecture),因此,架構1300另外包括重排緩衝器及撤回視窗(reorder buffer and retirement window)1332。重排及撤回視窗1332另外包括機器撤回指標(machine retirement pointer)1331、就緒位元陣列(ready bit array)1334,及每指令最新指示符(per instruction latest indicator),諸如指示符1333。
根據本發明之一具體實施例進一步詳細說明第一使用模型,即,硬體狀態更新的架構推測。如上述,架構1300包含亂序架構。架構1300的硬體能夠認可亂序指令結果(如,亂序載入及亂序儲存及亂序暫存器更新)。架構1300以上文在圖12的討論中說明的方式利用統一影子暫存器檔案,以支援在認可暫存器及影子暫存器之間的推測執行。另外,架構1300利用推測載入儲存緩衝器(speculative load store buffer)及推測撤回記憶體緩衝器1342支援推測執行。
架構1300將使用這些組件與重排緩衝器及撤回視窗1332,以允許其狀態正確撤回到認可暫存器檔案1302及可見記憶體1350,即使機器以亂序方式將這些組件在內部撤回到統一影子暫存器檔案及撤回記憶體緩衝器。例如,該架構將使用統一影子暫存器檔案1301及推測記憶體1342,以基於例外發生與否實施回復及認可事件。此功能性使暫存器狀態能夠將亂序撤回到統一影子暫存器檔案1301,及使推測撤回記憶體緩衝器1342將亂序撤回到可見記憶體1350。隨著推測執行繼續進行及亂序指令執行繼續進行,如果未漏掉預測任何分支且沒有發生例外,則機器撤回指標1331向前移動直到觸發認可事件。認可事件造成統一影子暫存器檔案藉由使其認可點向前移動而認可其環境,及造成推測撤回記憶體緩衝器根據機器撤回指標1331對記憶體1350認可其環境。
例如,考慮到在重排緩衝器及撤回視窗1332內顯示的指令1-7,就緒位元陣列1334顯示準備要執行的"X"附加指令(beside instruction),及未準備要執行的"/"附加指令。據此,指令1、2、4、及6被允許以亂序繼續進行。其後,如果發生例外,諸如漏掉預測指令6分支,則可回復在指令6後發生的指令。或者,如果沒有任何例外發生,則可藉由相應地移動機器撤回指標1331,認可所有指令1-7。
使用最新指示符陣列1341、最新指示符陣列1304及最新指示符1333以允許亂序執行。例如,即使指令2在指令5之前載入暫存器R4,則一旦指令5準備發生,將忽略指令2的載入。最新載入將根據最新指示符取代之前的載入。
在重排緩衝器及撤回視窗1332內發生分支預測或例外時,將觸發回復事件。如上述,在發生回復時,統一影子暫存器檔案1301將回復至其最復一個認可點,及推測撤回記憶體緩衝器1342將被排清(flushed)。
圖14顯示根據本發明之一具體實施例包括雙範疇使用之第二使用模型的示意圖1400。如上述,此使用模型可用於將2個執行緒提取至處理器中,其中一個執行緒在推測狀態中執行,及另一個執行緒在非推測狀態中執行。在此使用模型中,兩個範疇被提取至機器中,及同時存在於機器中。
如在示意圖1400中顯示,2個範疇/軌跡1401及1402已被提取至機器中。在此實例中,範疇/軌跡1401是目前的非推測範疇/軌跡。範疇/軌跡1402是新的推測範疇/軌跡。架構1300啟用推測及暫用狀態(speculative and scratch state),其允許2個執行緒使用這些執行狀態。一個執行緒(如,1401)在非推測範疇中執行,及另一個執行緒(如,1402)使用推測範疇。兩個範疇均可同時提取至機器中並同時存在,其中各個範疇不同地設定其相應的模式。第一個範疇是非推測性的,及另一個範疇是推測性的。因此第一個範疇在CR/CM模式中執行,及另一個在SR/SM模式中執行。在CR/CM模式中,讀取及寫入認可暫存器,及記憶體寫入進入記憶體。在SR/SM模式中,暫存器寫入進入SSSR,及暫存器自最新寫入讀取,而記憶體寫入撤回記憶體緩衝器(SMB)。
一個實例將是排序的目前範疇(如,1401)及推測性的下一個範疇(如,1402)。因為在目前範疇之後提取下一個範疇,所以相依性會受到重視,因此兩個範疇均可在機器中執行。例如,在範疇1401中,在「認可SSSR為CR」處,直至此時的暫存器及記憶體處於CR模式,而程式碼在CR/CM模式中執行。在範疇1402中,程式碼在SR及SM模式中執行,並在發生例外時可回復。以此方式,兩個範疇在機器中同時執行,但各在不同模式中執行並相應地讀取及寫入暫存器。
圖15顯示根據本發明之一具體實施例之第三使用模型的示意圖1500,其包括暫態環境切換,在從暫態環境返回後,不必存檔及復原先前環境。如上述,此使用模型適用於可因若干理由發生的環境切換。一個此種理由例如可以是經由例外處置環境對例外進行精確處置。
第三使用模型發生於機器正執行轉譯碼及其遇到環境切換時(如,轉譯碼中的例外或需要後續程式碼轉譯時)。在目前的範疇(如,在例外之前)中,SSSR及SMB尚未認可其對客戶架構狀態的推測狀態。目前狀態在SR/SM模式中運行。在例外發生時,機器切換至例外處置器(exception handler)(如,轉換器)以精確地處理例外。插入回復,這造成暫存器狀態回復為CR及SMB被排清。轉換器碼將在SR/CM模式中運行。在執行轉換器碼期間,SMB將其環境撤回到記憶體而不用等待認可事件。暫存器被寫入SSSR且不用更新CR。其後,當轉換器結束時且在切換回執行的轉換碼之前,轉換器回復為SSSR(如,回復SSSR為CR)。在此程序期間,最後認可的暫存器狀態是在CR中。
這顯示在示意圖1500中,其中先前的範疇/軌跡1501已從SSSR認可為CR。目前的範疇/軌跡1502是推測性的。暫存器及記憶體及此範疇是推測性的,及執行在SR/SM模式下發生。在此實例中,例外發生在範疇1502中,及程式碼在轉譯之前需要以原始順序重新執行。此時,SSSR被回復及SMB被排清。接著,JIT程式碼1503執行。JIT程式碼將SSSR回復至範疇1501的末端並排清SMB。在SR/CM模式下執行JIT。在JIT結束時,SSSR被回復為CR,及目前的範疇/軌跡1504接著在CR/CM模式中以原始的轉譯順序重新執行。以此方式,以確切的目前順序精確地處置例外。
圖16顯示根據本發明之一具體實施例描繪指令序列中的例外是因為後續程式碼需要轉譯之案例的示意圖1600。如在示意圖1600中顯示,先前的範疇/軌跡1601以遠跳(far jump)至未轉譯的目的地而結束。在跳至遠跳目的地之前,認可SSSR為CR。JIT程式碼1602接著執行以轉譯遠跳目的地的客戶指令(如,以建立本機指令的新軌跡)。在SR/CM模式下執行JIT。在JIT執行結束時,暫存器狀態從SSSR回復為CR,及由JIT轉譯的新範疇/軌跡1603開始執行。新的範疇/軌跡繼續在SR/SM模式中從先前範疇/軌跡1601的最後認可點執行。
圖17顯示根據本發明之一具體實施例之第四使用模型的示意圖1700,其包括暫態環境切換,在從暫態環境返回後,不必存檔及復原先前環境。如上述,此使用模型適用於可因若干理由發生的環境切換。一個此種理由例如可以是經由例外處置環境處理輸入或輸出。
示意圖1700顯示在CR/CM模式下執行的先前範疇/軌跡1701以叫用(call)函數F1而結束的案例。直至此時的暫存器狀態從SSSR認可為CR。函數F1範疇/軌跡1702接著開始在SR/CM模式下以推測的方式執行。函數F1接著以返回主範疇/軌跡1703而結束。此時,暫存器狀態從SSSR回復為CR。主範疇/軌跡1703重返在CR/CM模式中執行。
圖18顯示根據本發明之一具體實施例之例示性微處理器管線(microprocessor pipeline)1800的圖式。微處理器管線1800包括實施上述硬體加速轉換程序之功能性的硬體轉換加速器。在圖18具體實施例中,硬體轉換加速器耦接至提取模組1801,其後是解碼模組1802、分配模組1803、分派模組(dispatch module)1804、執行模組1805及撤回模組1806。應注意,微處理器管線1800只是實施本發明之具體實施例上述功能性之管線的一個實例。熟習本技術者應瞭解,可實施包括上述解碼模組功能性的其他微處理器管線。
為了解說的目的,已參考特定具體實施例做出以上說明。然而,以上闡釋之討論的目的不在詳盡窮舉或限制本發明於揭示的精確形式。可按照以上教示進行許多修改及變化。具體實施例的選擇與說明係為了對本發明的原理及實際應用提出最好的解說,藉此讓熟習本技術者以適於所想特定用途的各種修改,充分利用本發明及各種具體實施例。
100‧‧‧指令序列
101~104‧‧‧分支指令
201‧‧‧客戶指令區塊
202‧‧‧本機轉換區塊
301‧‧‧客戶指令緩衝器
302‧‧‧本機指令緩衝器
401‧‧‧記憶體中的客戶指令序列
402‧‧‧記憶體中的本機指令序列
411‧‧‧客戶指令較遠分支
412‧‧‧對應的本機指令客戶較遠分支
500‧‧‧硬體加速轉換系統
501‧‧‧系統記憶體
502‧‧‧客戶提取邏輯單元
503‧‧‧客戶提取緩衝器
504‧‧‧轉換表
505‧‧‧本機轉換緩衝器
506‧‧‧轉換後備緩衝器
507‧‧‧本機快取
508‧‧‧處理器
600‧‧‧硬體加速轉換系統
601‧‧‧系統記憶體
602‧‧‧客戶碼
603‧‧‧轉換後備緩衝器
604‧‧‧最佳化器碼
605‧‧‧轉換器碼
606‧‧‧本機碼快取
607‧‧‧共用硬體快取
608‧‧‧緩衝器
609‧‧‧TLB
610‧‧‧客戶硬體快取
611‧‧‧客戶提取緩衝器
612‧‧‧轉換表
613‧‧‧轉換表
614‧‧‧多工器
615‧‧‧多工器
616‧‧‧本機轉換緩衝器
620‧‧‧客戶提取邏輯
630‧‧‧轉換後備緩衝器
631‧‧‧轉換的區塊登錄點位址
632‧‧‧本機位址
633‧‧‧轉換的位址範圍
634‧‧‧程式碼快取及轉換後備緩衝器管理位元
635‧‧‧動態分支偏差值位元
640‧‧‧提取邏輯
650‧‧‧處理器
700‧‧‧硬體加速轉換系統
711‧‧‧客戶提取緩衝器
712‧‧‧轉換表
713‧‧‧轉換表
716‧‧‧本機轉換緩衝器
760‧‧‧特殊高速記憶體
801‧‧‧系統記憶體
802‧‧‧客戶位址
804‧‧‧CLB硬體快取
805‧‧‧虛線方框
806‧‧‧程式碼快取記憶體
901‧‧‧實體儲存堆疊
902‧‧‧標籤結構
903‧‧‧延伸方式標籤結構
1000‧‧‧硬體加速轉換系統
1001‧‧‧直線
1002‧‧‧表格
1003‧‧‧表格
1004‧‧‧第二級表格
1100‧‧‧示意圖
1101‧‧‧傳入樣式
1102~1105‧‧‧SIMD暫存器
1201‧‧‧統一暫存器檔案
1202~1203‧‧‧部分
1205‧‧‧項目選擇器
1300‧‧‧統一影子暫存器檔案及管線架構
1301‧‧‧統一影子暫存器檔案
1302‧‧‧認可暫存器檔案
1303‧‧‧影子暫存器檔案
1304‧‧‧最新指示符陣列
1331‧‧‧機器撤回指標
1332‧‧‧重排緩衝器及撤回視窗
1333‧‧‧最新指示符
1334‧‧‧就緒位元陣列
1341‧‧‧最新指示符陣列
1342‧‧‧推測撤回記憶體緩衝器
1350‧‧‧可見記憶體
1400‧‧‧示意圖
1401‧‧‧目前的非推測範疇/軌跡
1402‧‧‧新的推測範疇/軌跡
1500‧‧‧示意圖
1501‧‧‧先前的範疇/軌跡
1502‧‧‧目前的範疇/軌跡
1503‧‧‧JIT程式碼
1504‧‧‧目前的範疇/軌跡
1600‧‧‧示意圖
1601‧‧‧先前的範疇/軌跡
1602‧‧‧JIT程式碼
1603‧‧‧新的範疇/軌跡
1700‧‧‧示意圖
1701‧‧‧先前的範疇/軌跡
1702‧‧‧函數F1範疇/軌跡
1703‧‧‧主範疇/軌跡
1800‧‧‧微處理器管線
1801‧‧‧提取模組
1802‧‧‧解碼模組
1803‧‧‧分配模組
1804‧‧‧分派模組
1805‧‧‧執行模組
1806‧‧‧撤回模組
1807‧‧‧統一影子暫存器檔案
1808‧‧‧推測記憶體緩衝器
1809‧‧‧全域可見記憶體/快取
本發明藉由舉例而非限制,以附圖的各個圖式進行解說,圖中相似參考數字代表相似元件。
圖1顯示本發明之一具體實施例所操作的例示性指令序列。
圖2顯示根據本發明之一具體實施例描繪基於區塊的轉譯程序的示意圖,其中將客戶指令區塊轉換為本機轉換區塊。
圖3顯示根據本發明之一具體實施例圖解將客戶指令區塊的各個指令轉換為本機轉換區塊之對應的本機指令之方式的示意圖。
圖4顯示根據本發明之一具體實施例圖解以處置本機轉換區塊處理較遠分支之方式的示意圖。
圖5顯示根據本發明之一具體實施例之例示性硬體加速轉換系統的示意圖,其圖解將客戶指令區塊及其對應的本機轉換區塊儲存在快取中的方式。
圖6顯示根據本發明之一具體實施例之硬體加速轉換系統的詳細實例。
圖7顯示根據本發明之一具體實施例具有輔助軟體加速轉換管線之硬體加速轉換系統的實例。
圖8顯示根據本發明之一具體實施例圖解CLB結合程式碼快取及儲存於記憶體中的客戶指令至本機指令映射而發揮功能之方式的例示性流程圖。
圖9顯示根據本發明之一具體實施例圖解實體儲存堆疊程式碼快取實施方案及客戶指令至本機指令映射的例示性流程圖。
圖10顯示根據本發明之一具體實施例描繪硬體加速轉換系統之額外例示性細節的示意圖。
圖11A顯示本發明之具體實施例所實施之例示性樣式匹配程序的示意圖。
圖11B顯示根據本發明之一具體實施例之基於SIMD暫存器之樣式匹配程序的示意圖。
圖12顯示根據本發明之一具體實施例之統一暫存器檔案的圖式。
圖13顯示根據本發明之一具體實施例支援推測架構狀態及暫態架構狀態之統一影子暫存器檔案及管線架構1300的示意圖。
圖14顯示根據本發明之一具體實施例包括雙範疇使用之第二使用模型的示意圖。
圖15顯示根據本發明之一具體實施例之第三使用模型的示意圖,其包括暫態環境切換,在從暫態環境返回後,不必存檔及復原先前環境。
圖16顯示根據本發明之一具體實施例描繪指令序列中的例外是因為後續程式碼需要轉譯之案例的示意圖。
圖17顯示根據本發明之一具體實施例之第四使用模型的示意圖,其包括暫態環境切換,在從暫態環境返回後,不必存檔及復原先前環境。
圖18顯示根據本發明之一具體實施例之例示性微處理器管線的圖式。
801‧‧‧系統記憶體
802‧‧‧客戶位址
804‧‧‧CLB硬體快取
805‧‧‧虛線方框
806‧‧‧程式碼快取記憶體
权利要求:
Claims (27)
[1] 一種針對一處理器管理一程式碼快取上儲存之映射的方法,包含:將複數個客戶位址至本機位址映射儲存在一轉換後備緩衝器中作為項目,其中該等項目指示在一程式碼快取記憶體內具有儲存之對應轉換本機位址的客戶位址;接收針對該轉換後備緩衝器之一客戶位址的一後續請求;索引該轉換後備緩衝器以決定在該轉換後備緩衝器中是否存在對應於索引的項目,其中該索引包含用以識別對應於該索引之項目的一標籤及一偏移量;在該標籤上發生一命中時,存取對應的項目以擷取一指標,該指標指示轉換本機指令的一對應區塊駐存在該程式碼快取記憶體中何處;及從該程式碼快取記憶體提取轉換本機指令的對應區塊以便執行。
[2] 如申請專利範圍第1項所述之方法,其中本機碼快取包含複數個記憶塊,其中一記憶塊包含記憶體之一單元,其具有對應於轉換本機指令區塊之大小的大小。
[3] 如申請專利範圍第2項所述之方法,其中該複數個記憶塊取決於複數個對應的轉換本機指令區塊的不同大小而具有複數個不同大小。
[4] 如申請專利範圍第3項所述之方法,其中以一組固定大小記憶塊分配該程式碼快取,其中該等記憶塊可以屬於不同類型及其中針對各個記憶塊類型分配不同大小。
[5] 如申請專利範圍第1項所述之方法,其中該轉換後備緩衝器以至少2個方式儲存複數個客戶位址標籤,其中各個方式與一標籤相關聯。
[6] 如申請專利範圍第5項所述之方法,其中在該轉換後備緩衝器中發生一命中時,傳回對應於該標籤的一指標,其中使用該指標索引該程式碼快取記憶體。
[7] 如申請專利範圍第5項所述之方法,其中組織該本機碼快取以具有匹配該轉換後備緩衝器方式結構化的一方式結構,以實施一對一映射。
[8] 如申請專利範圍第1項所述之方法,其中該轉換後備緩衝器包含一快取,其中在發生一未中時,可檢查記憶體的較高層級是否發生一命中。
[9] 如申請專利範圍第8項所述之方法,其中記憶體的該等較高層級包括L1快取、L2快取、及系統記憶體。
[10] 一種針對一處理器管理一程式碼快取上儲存之映射的系統,包含:一轉換後備緩衝器,用於儲存複數個客戶位址至本機位址映射作為項目,其中該等項目指示在一程式碼快取記憶體內具有儲存之對應轉換本機位址的客戶位址;其中在接收針對該轉換後備緩衝器之一客戶位址的一後續請求時,索引該轉換後備緩衝器以決定在該轉換後備緩衝器中是否存在對應於索引的一項目,其中該索引包含用以識別對應於該索引之該項目的一標籤及一偏移量;及其中在該標籤上發生一命中時,存取對應的項目以擷取一指標,該指標指示轉換本機指令的對應區塊駐存在該程式碼快取記憶體中何處,從該程式碼快取記憶體提取轉換本機指令的該對應區塊以便執行。
[11] 如申請專利範圍第10項所述之系統,其中本機碼快取包含複數個記憶塊,其中一記憶塊包含記憶體之一單元,其具有對應於轉換本機指令區塊之大小的大小。
[12] 如申請專利範圍第11項所述之系統,其中該複數個記憶塊取決於複數個對應的轉換本機指令區塊的不同大小而具有複數個不同大小。
[13] 如申請專利範圍第12項所述之系統,其中以一組固定大小記憶塊分配該程式碼快取,其中該等記憶塊可以屬於不同類型及其中針對各個記憶塊類型分配不同大小。
[14] 如申請專利範圍第10項所述之系統,其中該轉換後備緩衝器以至少2個方式儲存複數個客戶位址標籤,其中各個方式與一標籤相關聯。
[15] 如申請專利範圍第14項所述之系統,其中在該轉換後備緩衝器中發生一命中時,傳回對應於該標籤的一指標,其中使用該指標索引該程式碼快取記憶體。
[16] 如申請專利範圍第14項所述之系統,其中組織該本機碼快取以具有匹配該轉換後備緩衝器方式結構化的一方式結構,以實施一對一映射。
[17] 如申請專利範圍第10項所述之系統,其中該轉換後備緩衝器包含一快取,其中在發生一未中時,可檢查記憶體的較高層級是否發生一命中。
[18] 如申請專利範圍第17項所述之系統,其中記憶體的該等較高層級包括L1快取、L2快取、及系統記憶體。
[19] 一種實施管理一程式碼快取上儲存之映射之一方法的微處理器,該微處理器包含:一轉換後備緩衝器,用於儲存複數個客戶位址至本機位址映射作為項目,其中該等項目指示在一程式碼快取記憶體內具有儲存之對應轉換本機位址的客戶位址;其中在接收針對該轉換後備緩衝器之一客戶位址的一後續請求時,索引該轉換後備緩衝器以決定在該轉換後備緩衝器中是否存在對應於索引的一項目,其中該索引包含用以識別對應於該索引之該項目的一標籤及一偏移量;及其中在該標籤上發生一命中時,存取對應的項目以擷取一指標,該指標指示轉換本機指令的對應區塊駐存在該程式碼快取記憶體中何處,從該程式碼快取記憶體提取轉換本機指令的該對應區塊以便執行。
[20] 如申請專利範圍第19項所述之微處理器,其中本機碼快取包含複數個記憶塊,其中一記憶塊包含記憶體之一單元,其具有對應於轉換本機指令區塊之大小的大小。
[21] 如申請專利範圍第20項所述之微處理器,其中該複數個記憶塊取決於複數個對應的轉換本機指令區塊的不同大小而具有複數個不同大小。
[22] 如申請專利範圍第21項所述之微處理器,其中以一組固定大小記憶塊分配該程式碼快取,其中該等記憶塊可以屬於不同類型及其中針對各個記憶塊類型分配不同大小。
[23] 如申請專利範圍第19項所述之微處理器,其中該轉換後備緩衝器以至少2個方式儲存複數個客戶位址標籤,其中各個方式與一標籤相關聯。
[24] 如申請專利範圍第23項所述之微處理器,其中在該轉換後備緩衝器中發生一命中時,傳回對應於該標籤的一指標,其中使用該指標索引該程式碼快取記憶體。
[25] 如申請專利範圍第23項所述之微處理器,其中組織該本機碼快取以具有匹配該轉換後備緩衝器方式結構化的一方式結構,以實施一對一映射。
[26] 如申請專利範圍第19項所述之微處理器,其中該轉換後備緩衝器包含一快取,其中在發生一未中時,可檢查記憶體的較高層級是否發生一命中。
[27] 如申請專利範圍第26項所述之微處理器,其中記憶體的該等較高層級包括L1快取、L2快取、及系統記憶體。
类似技术:
公开号 | 公开日 | 专利标题
TWI512498B|2015-12-11|用於將客戶指令轉譯為本機指令之硬體加速組件
TWI512465B|2015-12-11|客戶至本機區塊位址映射與本機碼儲存之管理
US10042643B2|2018-08-07|Guest instruction to native instruction range based mapping using a conversion look aside buffer of a processor
US9921842B2|2018-03-20|Guest instruction block with near branching and far branching sequence construction to native instruction block
TWI534706B|2016-05-21|管理實體儲存器之可變快取結構
US10185567B2|2019-01-22|Multilevel conversion table cache for translating guest instructions to native instructions
CN106716362B|2020-09-25|用于将微指令序列重排序为优化的微指令序列以实现指令集不可知的运行时架构的分配和发出级
CN106716363B|2021-04-09|使用转换后备缓冲器来实现指令集不可知的运行时架构
CN106796528B|2021-08-24|用于选择包括指令序列的指令的系统和方法
CN107077371B|2020-09-29|用于不可知的运行时架构的系统、微处理器和计算机系统
CN107077370B|2021-04-27|执行及时优化器用于执行来自访客镜像的代码的系统转换器
同族专利:
公开号 | 公开日
WO2012103367A2|2012-08-02|
TWI512465B|2015-12-11|
WO2012103367A3|2012-11-15|
US20120198122A1|2012-08-02|
US9639364B2|2017-05-02|
US20160321077A1|2016-11-03|
US10241795B2|2019-03-26|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
US5053952A|1987-06-05|1991-10-01|Wisc Technologies, Inc.|Stack-memory-based writable instruction set computer having a single data bus|
JP3015493B2|1991-04-26|2000-03-06|株式会社東芝|半導体連想記憶装置|
US5438668A|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|
WO1994027214A1|1993-05-07|1994-11-24|Apple Computer, Inc.|Method for decoding sequences of guest instructions for a host computer|
JPH07271672A|1994-03-30|1995-10-20|Toshiba Corp|マルチウェイセットアソシアティブキャッシュシステム|
JPH10509819A|1994-10-14|1998-09-22|シリコングラフィックスインク.|インターリーブされるキャッシュメモリアレイのインデッキシングとマルチプレキシング|
US5673408A|1995-02-14|1997-09-30|Hal Computer Systems, Inc.|Processor structure and method for renamable trap-stack|
US5742802A|1996-02-16|1998-04-21|International Business Machines Corporation|Method and system for efficiently mapping guest instruction in an emulation assist unit|
US5784638A|1996-02-22|1998-07-21|International Business Machines Corporation|Computer system supporting control transfers between two architectures|
US5892934A|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|
US5893121A|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|1997-06-13|2000-11-07|Telefonaktiebolaget Lm Ericsson|Simulation of computer processor|
US5870575A|1997-09-22|1999-02-09|International Business Machines Corporation|Indirect unconditional branches in data processing system emulation mode|
US5956495A|1997-09-22|1999-09-21|International Business Machines Corporation|Method and system for processing branch instructions during emulation in a data processing system|
US5953520A|1997-09-22|1999-09-14|International Business Machines Corporation|Address translation buffer for data processing system emulation mode|
US5995743A|1997-09-22|1999-11-30|International Business Machines Corporation|Method and system for interrupt handling during emulation in a data processing system|
US6202127B1|1997-11-26|2001-03-13|Compaq Computer Corporation|Apparatus for spatial and temporal sampling in a computer memory system|
US6138225A|1997-12-24|2000-10-24|Intel Corporation|Address translation system having first and second translation look aside buffers|
JP3246438B2|1998-04-01|2002-01-15|日本電気株式会社|可変ターゲットコンパイル処理方法、その処理装置、そのプログラムの記憶媒体および変換テーブルの記憶媒体|
JPH11296381A|1998-04-08|1999-10-29|Matsushita Electric Ind Co Ltd|仮想マシン及びコンパイラ|
US6205545B1|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|1998-10-21|2002-10-08|Fujitsu Limited|Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method|
GB9825102D0|1998-11-16|1999-01-13|Insignia Solutions Plc|Computer system|
US7225436B1|1998-12-08|2007-05-29|Nazomi Communications Inc.|Java hardware accelerator using microcode engine|
US6332215B1|1998-12-08|2001-12-18|Nazomi Communications, Inc.|Java virtual machine hardware for RISC and CISC processors|
US6460114B1|1999-07-29|2002-10-01|Micron Technology, Inc.|Storing a flushed cache line in a memory buffer of a controller|
US6928641B1|1999-10-08|2005-08-09|Texas Instruments Incorporated|Method and system for far branch and call instructions|
US7418580B1|1999-12-02|2008-08-26|International Business Machines Corporation|Dynamic object-level code transaction for improved performance of a computer|
JP3556556B2|2000-02-08|2004-08-18|株式会社東芝|命令コード変換装置及び情報処理システム|
US20020066081A1|2000-02-09|2002-05-30|Evelyn Duesterwald|Speculative caching scheme for fast emulation through statically predicted execution traces in a caching dynamic translator|
US20020100022A1|2000-05-08|2002-07-25|Holzmann Gerard J.|Method and apparatus for automatic verification of properties of a concurrent software system|
US20010037492A1|2000-03-16|2001-11-01|Holzmann Gerard J.|Method and apparatus for automatically extracting verification models|
JP2001273138A|2000-03-24|2001-10-05|Fujitsu Ltd|プログラム変換装置および方法|
US6615300B1|2000-06-19|2003-09-02|Transmeta Corporation|Fast look-up of indirect branch destination in a dynamic translation system|
US7107437B1|2000-06-30|2006-09-12|Intel Corporation|Branch target buffer including a speculative BTB and an architectural BTB |
US6711672B1|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|2000-10-05|2004-12-29|Advanced Risc Mach Ltd|Hardware instruction translation within a processor pipeline|
JP2002215387A|2001-01-22|2002-08-02|Mitsubishi Electric Corp|命令トランスレータを備えたデータ処理装置およびメモリインタフェース装置|
US7487330B2|2001-05-02|2009-02-03|International Business Machines Corporations|Method and apparatus for transferring control in a computer system with dynamic compilation capability|
US7165169B2|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|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|2001-06-20|2007-12-26|富士通株式会社|分岐予測装置、プロセッサ、及び分岐予測方法|
US6832307B2|2001-07-19|2004-12-14|Stmicroelectronics, Inc.|Instruction fetch buffer stack fold decoder for generating foldable instruction status information|
US6898699B2|2001-12-21|2005-05-24|Intel Corporation|Return address stack including speculative return address buffer with back pointers|
US7577944B2|2002-03-18|2009-08-18|Hewlett-Packard Development Company, L.P.|Unbundling, translation and rebundling of instruction bundles in an instruction stream|
US20060117308A1|2002-08-30|2006-06-01|Renesas Technology Corp.|Data processing apparatus and ic card|
US20040128658A1|2002-12-27|2004-07-01|Guei-Yuan Lueh|Exception handling with stack trace cache|
US7203932B1|2002-12-30|2007-04-10|Transmeta Corporation|Method and system for using idiom recognition during a software translation process|
US6810473B2|2003-01-06|2004-10-26|Sun Microsystems, Inc.|Replacement algorithm for a replicated fully associative translation look-aside buffer|
US7191291B2|2003-01-16|2007-03-13|Ip-First, Llc|Microprocessor with variable latency stack cache|
JP3896087B2|2003-01-28|2007-03-22|松下電器産業株式会社|コンパイラ装置およびコンパイル方法|
US7069413B1|2003-01-29|2006-06-27|Vmware, Inc.|Method and system for performing virtual to physical address translations in a virtual machine monitor|
US7278030B1|2003-03-03|2007-10-02|Vmware, Inc.|Virtualization system for computers having multiple protection mechanisms|
US7111145B1|2003-03-25|2006-09-19|Vmware, Inc.|TLB miss fault handler and method for accessing multiple page tables|
GB0316531D0|2003-07-15|2003-08-20|Transitive Ltd|Method and apparatus for performing native binding|
US7290253B1|2003-09-30|2007-10-30|Vmware, Inc.|Prediction mechanism for subroutine returns in binary translation sub-systems of computers|
US7590982B1|2003-12-17|2009-09-15|Vmware, Inc.|System and method for virtualizing processor and interrupt priorities|
US7237067B2|2004-04-22|2007-06-26|Hewlett-Packard Development Company, L.P.|Managing a multi-way associative cache|
JP4520790B2|2004-07-30|2010-08-11|富士通株式会社|情報処理装置およびソフトウェアプリフェッチ制御方法|
US8443171B2|2004-07-30|2013-05-14|Hewlett-Packard Development Company, L.P.|Run-time updating of prediction hint instructions|
US7571090B2|2004-09-30|2009-08-04|Intel Corporation|Emulating a host architecture in guest firmware|
US7428626B2|2005-03-08|2008-09-23|Microsoft Corporation|Method and system for a second level address translation in a virtual machine environment|
US8370819B2|2005-03-25|2013-02-05|Microsoft Corporation|Mechanism to store information describing a virtual machine in a virtual disk image|
US7383374B2|2005-03-31|2008-06-03|Intel Corporation|Method and apparatus for managing virtual addresses|
US7734895B1|2005-04-28|2010-06-08|Massachusetts Institute Of Technology|Configuring sets of processor cores for processing instructions|
TWI306215B|2005-04-29|2009-02-11|Ind Tech Res Inst|Method and corresponding apparatus for compiling high-level languages into specific processor architectures|
US20070006178A1|2005-05-12|2007-01-04|Microsoft Corporation|Function-level just-in-time translation engine with multiple pass optimization|
US20060282821A1|2005-06-10|2006-12-14|Renno Erik K|Efficient subprogram return in microprocessors|
US7703088B2|2005-09-30|2010-04-20|Intel Corporation|Compressing “warm” code in a dynamic binary translation environment|
US9003421B2|2005-11-28|2015-04-07|Intel Corporation|Acceleration threads on idle OS-visible thread execution units|
US20070174717A1|2006-01-10|2007-07-26|Sun Microsystems, Inc.|Approach for testing instruction TLB using user/application level techniques|
TWI287801B|2006-01-13|2007-10-01|Optimum Care Int Tech Inc|Memory module having address transforming function and method for controlling memory|
US8099730B2|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|2006-03-31|2012-08-29|株式会社日立製作所|サーバ装置及び仮想計算機の制御プログラム|
US7568189B2|2006-05-03|2009-07-28|Sony Computer Entertainment Inc.|Code translation and pipeline optimization|
US7752417B2|2006-06-05|2010-07-06|Oracle America, Inc.|Dynamic selection of memory virtualization techniques|
US7478228B2|2006-08-31|2009-01-13|Qualcomm Incorporated|Apparatus for generating return address predictions for implicit and explicit subroutine calls|
US7617493B2|2007-01-23|2009-11-10|International Business Machines Corporation|Defining memory indifferent trace handles|
US8190664B2|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|2007-05-14|2014-04-01|International Business Machines Corporation|Computing system with guest code support of transactional memory|
JP2008299795A|2007-06-04|2008-12-11|Nec Electronics Corp|分岐予測制御装置及びその方法|
US8205194B2|2007-06-29|2012-06-19|Microsoft Corporation|Updating offline virtual machines or VM images|
KR101498673B1|2007-08-14|2015-03-09|삼성전자주식회사|반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템|
JP2009087028A|2007-09-28|2009-04-23|Toshiba Corp|メモリシステム及びメモリの読出し方法並びにプログラム|
US7844954B2|2007-11-06|2010-11-30|Vmware, Inc.|Using branch instruction counts to facilitate replay of virtual machine instruction execution|
JP5091655B2|2007-12-21|2012-12-05|株式会社日立製作所|計算機仮想化装置、そのプログラム、及びその方法|
CN101470661B|2007-12-28|2012-03-14|鸿富锦精密工业(深圳)有限公司|计算机程序除错系统及方法|
US20090182985A1|2008-01-11|2009-07-16|International Business Machines Corporation|Move Facility and Instructions Therefore|
US8041922B2|2008-01-11|2011-10-18|International Business Machines Corporation|Enhanced dynamic address translation with load real address function|
US8151085B2|2008-01-17|2012-04-03|International Business Machines Corporation|Method for address translation in virtual machines|
US8307360B2|2008-01-22|2012-11-06|Advanced Micro Devices, Inc.|Caching binary translations for virtual machine guest|
US8819647B2|2008-01-25|2014-08-26|International Business Machines Corporation|Performance improvements for nested virtual machines|
US8832682B2|2008-03-28|2014-09-09|Vmware, Inc.|Trace collection for a virtual machine|
US8245227B2|2008-05-30|2012-08-14|Vmware, Inc.|Virtual machine execution using virtualization software with shadow page tables and address space interspersed among guest operating system address space|
US20100005835A1|2008-07-10|2010-01-14|Johnson Sr Raymond Keith|Pearl containing cremated remains|
US8275971B2|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|2008-11-05|2013-06-25|Oracle America, Inc.|Handling signals and exceptions in a dynamic translation environment|
CN101751345B|2008-12-10|2012-04-11|国际商业机器公司|在主机中运行客户机的程序的模拟器和模拟方法|
US8959277B2|2008-12-12|2015-02-17|Oracle America, Inc.|Facilitating gated stores without data bypass|
US8078854B2|2008-12-12|2011-12-13|Oracle America, Inc.|Using register rename maps to facilitate precise exception semantics|
US8561040B2|2009-03-10|2013-10-15|Oracle America, Inc.|One-pass compilation of virtual instructions|
US8832354B2|2009-03-25|2014-09-09|Apple Inc.|Use of host system resources by memory controller|
US8103894B2|2009-04-24|2012-01-24|International Business Machines Corporation|Power conservation in vertically-striped NUCA caches|
US8140758B2|2009-04-24|2012-03-20|International Business Machines Corporation|Data reorganization in non-uniform cache access caches|
US8799879B2|2009-06-30|2014-08-05|Oracle America, Inc.|Method and apparatus for protecting translated code in a virtual machine|
US8386745B2|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|
US9158566B2|2009-09-18|2015-10-13|International Business Machines Corporation|Page mapped spatially aware emulation of computer instruction set|
US8447583B2|2009-09-18|2013-05-21|International Business Machines Corporation|Self initialized host cell spatially aware emulation of a computer instruction set|
US8301434B2|2009-09-18|2012-10-30|International Buisness Machines Corporation|Host cell spatially aware emulation of a guest wild branch|
US8428930B2|2009-09-18|2013-04-23|International Business Machines Corporation|Page mapped spatially aware emulation of a computer instruction set|
US8612731B2|2009-11-06|2013-12-17|International Business Machines Corporation|Branch target buffer for emulation environments|
US8364461B2|2009-11-09|2013-01-29|International Business Machines Corporation|Reusing invalidated traces in a system emulator|
JP5984118B2|2009-12-04|2016-09-06|マーベル ワールド トレード リミテッド|格納デバイスの仮想化|
KR101247259B1|2009-12-17|2013-04-01|한국전자통신연구원|가상화 장치 및 그 처리 방법|
US8438334B2|2009-12-22|2013-05-07|International Business Machines Corporation|Hybrid storage subsystem with mixed placement of file contents|
US8775153B2|2009-12-23|2014-07-08|Intel Corporation|Transitioning from source instruction set architecture code to translated code in a partial emulation environment|
JP2011198091A|2010-03-19|2011-10-06|Toshiba Corp|仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム|
US8650337B2|2010-06-23|2014-02-11|International Business Machines Corporation|Runtime determination of translation formats for adapter functions|
US8572635B2|2010-06-23|2013-10-29|International Business Machines Corporation|Converting a message signaled interruption into an I/O adapter event notification|
WO2012103253A2|2011-01-27|2012-08-02|Soft Machines, Inc.|Multilevel conversion table cache for translating guest instructions to native instructions|
WO2012103373A2|2011-01-27|2012-08-02|Soft Machines, Inc.|Variable caching structure for managing physical storage|
WO2012103359A2|2011-01-27|2012-08-02|Soft Machines, Inc.|Hardware acceleration components for translating guest instructions to native instructions|
WO2012103367A2|2011-01-27|2012-08-02|Soft Machines, Inc.|Guest to native block address mappings and management of native code storage|
EP2668565B1|2011-01-27|2019-11-06|Intel Corporation|Guest instruction to native instruction range based mapping using a conversion look aside buffer of a processor|
WO2012103245A2|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|2011-05-16|2016-11-15|Microsoft Technology Licensing, Llc|Instruction set emulation for guest operating systems|
US8645633B2|2011-05-17|2014-02-04|International Business Machines Corporation|Facilitating data coherency using in-memory tag bits and faulting stores|
US9354886B2|2011-11-28|2016-05-31|Apple Inc.|Maintaining the integrity of an execution return address stack|
US9280347B2|2012-03-15|2016-03-08|International Business Machines Corporation|Transforming non-contiguous instruction specifiers to contiguous instruction specifiers|
US10656945B2|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|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|2013-03-05|2014-09-11|Qualcomm Incorporated|Strided target address predictor for indirect branches|
WO2014151652A1|2013-03-15|2014-09-25|Soft Machines Inc|Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor|
CN105122206B|2013-03-15|2018-11-09|英特尔公司|用于支持推测的访客返回地址栈仿真的方法和装置|
CN104679480A|2013-11-27|2015-06-03|上海芯豪微电子有限公司|一种指令集转换系统和方法|WO2012103359A2|2011-01-27|2012-08-02|Soft Machines, Inc.|Hardware acceleration components for translating guest instructions to native instructions|
EP2668565B1|2011-01-27|2019-11-06|Intel Corporation|Guest instruction to native instruction range based mapping using a conversion look aside buffer of a processor|
WO2012103367A2|2011-01-27|2012-08-02|Soft Machines, Inc.|Guest to native block address mappings and management of native code storage|
WO2012103245A2|2011-01-27|2012-08-02|Soft Machines Inc.|Guest instruction block with near branching and far branching sequence construction to native instruction block|
WO2012103373A2|2011-01-27|2012-08-02|Soft Machines, Inc.|Variable caching structure for managing physical storage|
WO2012103253A2|2011-01-27|2012-08-02|Soft Machines, Inc.|Multilevel conversion table cache for translating guest instructions to native instructions|
WO2014151652A1|2013-03-15|2014-09-25|Soft Machines Inc|Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor|
CN105122206B|2013-03-15|2018-11-09|英特尔公司|用于支持推测的访客返回地址栈仿真的方法和装置|
US9329883B2|2013-10-28|2016-05-03|Unisys Corporation|Post-execution instruction tracing of virtualized instructions|
CN104679480A|2013-11-27|2015-06-03|上海芯豪微电子有限公司|一种指令集转换系统和方法|
CN104679481B|2013-11-27|2020-04-28|上海芯豪微电子有限公司|一种指令集转换系统和方法|
JP2017516228A|2014-05-12|2017-06-15|インテル・コーポレーション|自己書き換えコードのハードウェアサポートを提供する方法及び装置|
CN107077368B|2014-07-25|2020-09-29|英特尔公司|用于指令集不可知的运行时架构的系统|
US10353680B2|2014-07-25|2019-07-16|Intel Corporation|System converter that implements a run ahead run time guest instruction conversion/decoding process and a prefetching process where guest code is pre-fetched from the target of guest branches in an instruction sequence|
US20160026482A1|2014-07-25|2016-01-28|Soft Machines, Inc.|Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture|
US20160026486A1|2014-07-25|2016-01-28|Soft Machines, Inc.|An allocation and issue stage for reordering a microinstruction sequence into an optimized microinstruction sequence to implement an instruction set agnostic runtime architecture|
US9733909B2|2014-07-25|2017-08-15|Intel Corporation|System converter that implements a reordering process through JIToptimization that ensures loads do not dispatch ahead of other loads that are to the same address|
US10042691B2|2016-04-26|2018-08-07|International Business Machines Corporation|Operation of a multi-slice processor implementing exception handling in a nested translation environment|
DE202017007437U1|2016-07-27|2021-08-09|Intel Corporation|Einrichtung zur Unterstützung von Codeoptimierung|
法律状态:
优先权:
申请号 | 申请日 | 专利标题
US201161436957P| true| 2011-01-27|2011-01-27||
[返回顶部]