TWI531912B - 具有用於多上下文計算引擎的轉譯後備緩衝之處理器、用於致能多執行緒以存取於處理器中之資源之系統和方法 - Google Patents
具有用於多上下文計算引擎的轉譯後備緩衝之處理器、用於致能多執行緒以存取於處理器中之資源之系統和方法 Download PDFInfo
- Publication number
- TWI531912B TWI531912B TW101147788A TW101147788A TWI531912B TW I531912 B TWI531912 B TW I531912B TW 101147788 A TW101147788 A TW 101147788A TW 101147788 A TW101147788 A TW 101147788A TW I531912 B TWI531912 B TW I531912B
- Authority
- TW
- Taiwan
- Prior art keywords
- address space
- core
- page table
- space identifier
- context
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/683—Invalidation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/684—TLB miss handling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
若干本發明之實施例大致上係有關於處理器的操作。更明確言之,若干本發明之實施例係有關於用於多上下文計算引擎的轉譯後備緩衝器之技術。
具有多重(例如2或以上)核心的處理器可包括由在多個實體或邏輯核心上執行的多重執行緒分享的資源。單一實體核心可使用諸如同時多執行緒(例如超執行緒)技術而提供多個邏輯核心。在多個核心上執行的多重執行緒可彼此競爭存取相對少數資源。
依據本發明之一實施例,係特地提出一種處理器包含多個處理核心;及由該等多個處理核心所分享的一特化邏輯引擎,該特化邏輯引擎包括一轉譯後備緩衝器以使得該特化邏輯引擎直接地存取在該等多個處理核心中之一者上執行的一執行緒的一虛擬位址。
100、800‧‧‧框架
102‧‧‧處理器
104‧‧‧最末層級快取記憶體(LLC)
106‧‧‧第一核心
108‧‧‧第N核心
110‧‧‧加速計算引擎(ACE)
112‧‧‧核心對位址空間識別符(ASID)表
114‧‧‧ASID對頁表暫存器映射
116‧‧‧轉譯後備緩衝器(TLB)
118‧‧‧第一集合之暫存器
120‧‧‧第一集合之執行單元
122‧‧‧第一層級1(L1)快取記憶體
124‧‧‧第N集合之暫存器
126‧‧‧第N集合之執行單元
128‧‧‧第N L1快取記憶體
130‧‧‧ACE暫存器
132‧‧‧ACE執行單元
134‧‧‧本地記憶體
136‧‧‧第一命令緩衝器
138‧‧‧第N命令緩衝器
140‧‧‧第一執行緒
142‧‧‧第N執行緒
144‧‧‧ACE控制區塊(ACB)
146‧‧‧指令
200、300、400、500、600、700‧‧‧方法
202-216、302-312、402-412、502-514、602-614、702-716‧‧‧處理方塊
802‧‧‧計算裝置
804‧‧‧時鐘產生器
806‧‧‧記憶體
808‧‧‧輸入/輸出(I/O)控制中樞器(ICH)
810‧‧‧電源
812‧‧‧核心
814‧‧‧大容量儲存裝置
816‧‧‧作業系統
818‧‧‧網路埠、顯示裝置
820‧‧‧網路
詳細說明部分係參考附圖圖式陳述。於附圖中,元件符號的最左位數識別該元件符號首次出現的該幅圖式。於不同圖式間使用相同的元件符號係指示相似的或相同的項目或結構。
圖1例示說明依據若干體現含括一加速計算引擎的一框架實例。
圖2例示說明依據若干體現包括使用一位址空間識別符存取一轉譯後備緩衝器之方法實例之流程圖。
圖3例示說明依據若干體現包括檢測一核心切換出一執行緒及一相關聯的上下文之方法實例之流程圖。
圖4例示說明依據若干體現包括檢測一核心切換入一執行緒及一相關聯的上下文之方法實例之流程圖。
圖5例示說明依據若干體現包括於含括一特定位址空間識別符的一上下文對頁表暫存器映射中失效一第一分錄的方法實例之流程圖。
圖6例示說明依據若干體現包括識別與異動處理相關聯的一頁表暫存器的方法實例之流程圖。
圖7例示說明依據若干體現包括決定一第一核心切換入與一第二執行緒相關聯的一第二上下文之方法實例之流程圖。
圖8例示說明依據若干體現包括一轉譯後備緩衝器以支援多上下文的一裝置之系統架構實例。
此處描述的技術大致上係有關於致能多執行緒在多個邏輯(或實體)處理核心(「核心」)上執行以存取於一處理器中之一資源。雖然於此處使用加速計算引擎(ACE)作為資源的實例,但此處描述的技術可用以致能存取其它處理器相關資源,諸如處理器內部的或外部的資源。此外,雖然此處描述的實例例示說明由多個核心所共享的單一ACE,但於若干體現中,一個處理器可具有多於一個ACE。舉例言之,一個處理器可包括多個ACE單元,各個ACE係由一特定數目的核心所分享。為了例示說明,若單一ACE能夠支援四個核心,則含8核心的處理器可具有兩個ACE單元,含12核心的處理器可具有三個ACE單元等。如此,於某些情況下,基於單一ACE能夠支援多少個核心,ACE單元的數目可與核心數目成正比。
如此處使用,核心一詞可指稱邏輯核心或實體核心(例如執行單元及相關聯的快取記憶體)。為了例示說明,諸如同時多執行緒(例如超執行緒)技術可用以從單一實體核心資源提供二(或多)個邏輯核心。舉例言之,具有兩個實體核心的處理器共可提供四個邏輯核心,能夠同時執行4執行緒。
ACE可提供特化功能給一處理器中的一或多個核心(例如通用核心)。舉例言之,ACE可對處理器中的核心提供以對特化功能諸如圖形功能或幾何功能的精細粒度控制。為了例示說明,當藉一核心呼叫時,習知圖形處理單
元(GPU)可在約數百萬個指令上執行。相反地,ACE可在約數百個指令或數千個指令上執行。藉由結合特化資源諸如ACE,比起不含此等特化資源的處理器,一處理器可達成效能的顯著增高及/或功耗的顯著減低。
至於精細粒度控制的另一個實例,在多核心上執行的應用程式(例如執行緒)可直接地存取ACE。直接存取表示該等應用程式可存取ACE而不使用中間的諸如裝置驅動器作業系統等。當應用程式係在使用者模式(例如並非於核心模式)執行時,應用程式可直接地存取ACE。於若干體現中,作業系統可知曉ACE;而於其它體現中,作業系統可不知曉ACE。許可作業系統直接地存取ACE而與作業系統是否知曉ACE獨立無關。
為了許可ACE支援精細粒度存取的高效能,與該等執行緒相關聯的虛擬位址可在多個核心與該ACE間分享,藉由對該ACE提供以轉譯後備緩衝器(TLB)可使得該ACE直接地存取與該等執行緒相關聯的位址空間。於包括多個ACE單元的一個體現中,各個ACE單元可包括一相對應TLB。此外,當發生TLB失誤時,該ACE可執行頁走(page walk)。
於若干體現中,可提供一異步介面以存取該ACE,使得應用程式可發送指令給ACE,及與該等指令在ACE上執行並行地,該應用程式可繼續在一特定核心上執行。於其它體現中,可提供一同步介面以許可應用程式存取該ACE。舉例言之,一同步介面可透明地處理應用程式
無法處理的事件,諸如頁面錯誤等。於又其它體現中,可提供一同步介面及一異步介面二者。
多執行緒可使用一ACE控制區塊(ACB)而與ACE互動。舉例言之,ACB可包括(1)包括與ACB中指令的執行相關聯的一狀態(例如新、執行管線內部、完成、頁面錯誤、無效等)之一標頭區塊;(2)識別輸入參數之一輸入參數識別符;(3)識別於何處輸出處理輸入參數的處理結果之輸出資料識別符;及(4)識別輸出錯誤相關資料,諸如錯誤訊息及資料傾卸(例如暫存器、快取記憶體、管線等的內容)的一輸出錯誤識別符。當然,除了或替代先前描述的內容之外,ACB可包括其它內容。ACB的內容可隨所呼叫的ACE之特定功能而異。ACB可接收至一異動處理作為參數。舉例言之,一異動處理可提供ACB的位置。
在該處理器的多個核心上執行的多執行緒可彼此競爭存取一資源,諸如ACE,原因在於資源數目可顯著少於正在執行的執行緒數目。為了使得單一ACE支援來自多執行緒的請求及其相關聯的上下文,ACE的轉譯後備緩衝器(TLB)可支援與在該處理器內的多個核心上執行的多執行緒相關聯的多上下文。一般而言,與一執行緒相關聯的一上下文可包括由該執行緒所使用之一資料集合,該資料集合可經儲存以使得執行緒的執行係在一特定時間點中斷而在後來一時間點恢復。更明確言之,該上下文可包括一位址空間識別符,其致能存取與該執行緒相關聯的一虛擬記憶體空間。在該等多執行緒中,有些執行緒可在不同
虛擬位址空間操作,而其它執行緒可在相同虛擬位址空間操作。
轉譯後備緩衝器(TLB)可用以改進將虛擬位址轉譯成實體位址的速度。於某些情況下,TLB可使用內容可定址記憶體(CAM)體現。TLB可使用一特定虛擬位址(也稱作為標籤)作為一關鍵,以搜尋TLB尋找與該特定虛擬位址相對應的一實體位址。若該TLB包括該實體位址,則搜尋獲得匹配,且實體位址可從TLB取回且用以存取實體記憶體。如此稱作TLB命中。若該TLB不映射該實體位址,則發生TLB失誤。TLB失誤可藉識別與該特定虛擬位址相對應的該實體位址加以處理。舉例言之,可執行一頁走,其中存取一頁表及/或頁面目錄以決定該實體位址。在藉該頁走而決定該實體位址後,TLB可經修正以含括映射與該特定虛擬位址至該實體位址的一分錄。藉由修正該TLB以含括映射與該特定虛擬位址至該實體位址的一分錄,應答隨後搜尋TLB以尋找該特定虛擬位址,該實體位址可從該TLB中取回。舉例言之,該處理器之一特定暫存器(例如於某些英特爾(Intel®)處理器中的暫存器CR3)可藉識別針對一目前執行緒的該頁面目錄之位置及頁表而致能一虛擬位址轉譯成一實體位址。當執行頁走以識別相對應於該該特定虛擬位址的該實體位址時,TLB可使用該特定暫存器。舉例言之,當致能虛擬記憶體時,CR3許可該處理器藉由針對一目前執行中的執行緒定位一頁面目錄及頁表而將虛擬位址轉譯成實體位址。於若干體現中,CR3上位元可包括一頁面目
錄基本暫存器(PDBR),其儲存第一頁面目錄分錄之一實體位址。
TLB可為固定數目的分錄,其映射虛擬位址至實體位址。一虛擬位址乃與一特定執行緒相關聯的一位址空間。該位址空間係分節成固定大小的頁面。頁表保持追蹤虛擬頁面中的哪一者被載入該實體記憶體。如此,TLB可視為該頁表之一快取記憶體,原因在於該TLB儲存該頁表內容之一子集。TLB分錄可包括實體記憶體位址的參考。TLB可駐在一核心與一層級1快取記憶體間,在另一快取層級與一主記憶體間,或在包括多層級快取記憶體的一處理器之多個快取層級間。使用虛擬定址的快取記憶體可使用一虛擬位址,及選擇性地使用一ASID以詢查實體位址。
於若干體現中,TLB可體現為多分錄雙向集合相關聯緩衝器。於若干體現中,各個TLB分錄可包括一虛擬位址、一頁面大小、一實體位址、及一記憶體性質集合。在該TLB中的各個分錄可被標記以與一特定應用空間相關聯(ASID)。當下列條件為真時一TLB分錄可為匹配:(i)該TLB分錄中之一虛擬位址匹配所請求位址的該虛擬位址;(ii)該TLB分錄中之ASID匹配該目前ASID。該TLB係經更新使得隨時只有一個TLB分錄為匹配。該TLB可基於區塊大小,包括4千位元組(KB)、64 KB、1百萬位元組(MB)及/或16 MB區塊大小而儲存分錄。
於若干體現中,一處理器可具有與各個ACE(或其它資源)相關聯的一TLB。舉例言之,具有四個ACE單元
之一處理器可具有四個TLB,而各個TLB係專用以服務一特定ACE。於其它體現中,該TLB可含括於服務多個ACE單元的一記憶體管理單元(MMU)內。舉例言之,該TLB可含括於一輸入/輸出記憶體管理單元(IOMMU)。IOMMU乃連結一具有DMA能力I/O匯流排至主記憶體的一記憶體管理單元(MMU)。恰如同傳統MMU將CPU可見虛擬位址轉譯成實體位址,IOMMU可映射裝置可見虛擬位址(又稱裝置位址或I/O位址)至實體位址。
如此,於具有一資源諸如ACE的處理器中,多執行緒可各自發送異動處理用以由該ACE執行。該等多執行緒中之部分可在相同位址空間執行,而其它執行緒可在不同位址空間執行。為了使得ACE區別區別位址空間與在不同核心上執行的執行緒,一核心識別符可與TLB中的各個分錄(例如各個虛擬位址至實體位址的轉譯)相關聯。藉由關聯一核心識別符與在該TLB中的各個分錄,ACE可識別在一特定核心上執行的一特定執行緒相關聯的轉譯(例如TLB中的分錄)。此外,當一特定執行緒被失效化時,該TLB可清除(例如移除)與該特定執行緒相關聯的TLB中之分錄。
但因多執行緒之部分可分享相同位址空間,TLB可含括針對相同轉譯的多個分錄。舉例言之,若在一特定核心上執行的三個執行緒全部分享同一個位址空間,則該TLB可包括針對該特定核心具有相同虛擬位址至實體位址的轉譯的三個分錄。於一TLB中的複製分錄可能浪費空間,且可能導致TLB失誤的增加,原因在於TLB可具有固定
的分錄數目。如此,關聯一核心識別符與TLB中的各個分錄可能無效。
為了致能TLB支援ACE其處理來自在多個核心上執行的多執行緒的異動處理,於該處在一特定核心上的至少部分執行緒分享相同位址空間,ACE可包括(1)一TLB,其中一位址空間識別符(ASID)識別與含括在該TLB的各個分錄中的一特定執行緒相關聯的一虛擬位址;(2)由一核心識別符檢索的一核心至ASID映射;及(3)由該ASID檢索的ASID至頁表暫存器(例如CR3或相當的暫存器)。核心至ASID映射可體現為核心-ASID表,ASID至頁表暫存器映射可體現為ASID-頁表暫存器映射。
穩態可能出現在當核心-ASID表及ASID-頁表暫存器映射各自含有至少一個有效分錄時。ACE可接收一異動處理,包括發送該異動處理之該邏輯核心之一識別符,及可找到該異動處理參數之一虛擬位址。在ACE開始執行該異動處理前,可執行核心至ASID詢查,且可藉發送該異動處理的核心執行,在接收異動處理後藉ACE執行,或介於其間的任一處執行。在從一特定執行緒發送異動處理(例如ACB位址)後,與該特定執行緒相關聯的ASID可從該核心-ASID表取回。核心至ASID轉譯可在ACE接收該異動處理前執行。若欲在該異動處理執行期間存取實體位址,ACE可使用一虛擬位址及與該特定執行緒相關聯的該ASID搜
尋TLB。若出現命中(例如找到匹配),則可從TLB取回實體位址。若出現失誤,則可加TLB-失誤旗標且可執行一頁走。舉例言之,與該特定執行緒相關聯的該頁表暫存器(例如CR3)可從該ASID-頁表暫存器映射取回。ASID及頁表暫存器可用以執行頁走,識別欲存取的實體記憶體。含括由該頁走所識別的實體記憶體之一分錄可加至該TLB。
當一執行緒及與該執行緒相關聯的一上下文藉一核心而切換出時,來自該核心的有源ACE異動處理可從該ACE的執行管線清除,湧進(rush)入該管線或被清除(例如移除)。當一異動處理被挺進時,該異動處理可被標記為「錯誤」且向下發送至該管線以防止該異動處理阻擋在該執行管線中的其它異動處理。當被標記為「錯誤」的該異動處理到達執行管線的末端時,異動處理可移動至特殊佇列,於該處該等異動處理等待直到造成上下文切換的例外(例如頁面錯誤)被解決為止。一旦造成上下文切換的例外被解決,該異動處理可置於後端在執行管線的開端。於若干體現中,當一特定上下文被切換出,與該特定上下文相關聯的的該TLB中的全部分錄可被失效化。
為了提高效率,ACE可決定由該核心所使用的ASID是否也由另一個核心使用。若另一個核心正在使用該ASID,則該ASID仍在使用中。若沒有任何其它核心正在使用該ASID,則該TLB、核心-ASID表、或ASID-頁表暫存器映射中之一或多者可經更新以去除包括該ASID的分錄,原
因在於該ASID不再使用。
ACE可使用命令緩衝器(例如ACE命令緩衝器(AOB))以追蹤正在執行中(「在行進間」)的異動處理。命令緩衝器也可使得程式設計師透明處理頁面錯誤及上下文切換。於若干體現中,一命令緩衝器可與各個核心相關聯。命令緩衝器可在ACE內部,為該等執行緒所無法存取/不可見。各個命令緩衝器可包括屬於該處理態的一部分的內容以透過上下文切換保有該內容。各個命令緩衝器可體現為一循環陣列。命令緩衝器可包括一指標器,指向與異動處理相關聯的ACB、ACB的大小、異動處理的狀態(例如新異動處理、執行管線內部、完成異動處理、出現頁面錯誤、無效異動處理等)、ABC相關的其它內容、或其任何組合。於若干體現中,AOB結構可包括一或多個指數暫存器,諸如檢索第一有源異動處理其對在一特定核心上執行的執行緒係仍在行進間的一第一暫存器(「頭」),檢索該執行緒的下一個至最末個有源異動處理之一第二暫存器(「尾」),檢索欲發送用以執行的下個異動處理之一第三暫存器(「下一個」)。
當一執行緒及與該執行緒相關聯的一上下文係藉一核心切換入時,ACE或核心可決定該ASID-頁表暫存器映射是否具有一分錄,其係包括與該執行緒相關聯的一頁表暫存器(例如CR3)。若該ASID-頁表暫存器映射不具有一分錄,其係包括與該執行緒相關聯的一頁表暫存器,則可
產生一新ASID。含括該新ASID的一分錄可加至該ASID-頁表暫存器映射且加至該核心-ASID表。可取回與該執行緒相關聯的一命令緩衝器。
圖1例示說明依據若干體現包括一加速計算引擎(ACE)的框架100實例。框架100包括一處理器102。處理器102可包括一最末層級快取記憶體(LLC)104、一第一核心106、及直至且含第N核心108(此處N係大於1)的額外核心、及一ACE 110。
處理器102可包括一或多個儲存結構,諸如一核心對位址空間識別符(ASID)表112及一ASID對頁表暫存器映射114。ACE 110可包括一轉譯後備緩衝器(TLB)116。核心對ASID表112或ASID對頁表暫存器映射可藉處理器102外部的軟體、藉含括於處理器102的硬體、或藉二者的組合產生與維持。ACE 110可使用ASID存取TLB 116。當出現TLB失誤時,ACE 110可存取ASID對頁表暫存器映射114以取回該頁表暫存器(例如CR3)。於若干體現中,ACE 110可以對由處理器102執行的一作業系統為透明之方式更新該核心對位址空間識別符表112及該ASID對頁表暫存器映射114。舉例言之,N個核心106至108可提供一核心識別符給ACE 110,ACE 110可管理(例如更新或存取)該核心對位址空間識別符表112及該ASID對頁表暫存器映射114。於其它體現中,一作業系統或N個核心106至108可管理(例如更新或存取)該核心對位址空間識別符表112及該ASID對頁表暫
存器映射。於此等體現中,一特定核心可提供ASID及頁表暫存器(例如CR3)給ACE 110。N個核心106至108各自可包括一或多個暫存器、一或多個執行單元、及一或多個層級的快取記憶體。舉例言之,第一核心106可包括一第一集合之暫存器118、一第一集合之執行單元120、及一第一層級1(L1)快取記憶體122。第N核心108可包括一第N集合之暫存器124、一第N集合之執行單元126、及一第N L1快取記憶體128。N個核心140至142可為邏輯核心或實體核心。
ACE 110可包括暫存器、執行單元、記憶體等。舉例言之,ACE 110可包括ACE暫存器130、ACE執行單元132、本地記憶體134、第一命令緩衝器136、及直至且含第N命令緩衝器138(此處N係大於1)的額外命令緩衝器。本地記憶體134可包括快取記憶體、隨機存取記憶體、其它型別的電腦可讀取儲存媒體、或其任一項組合。N個命令緩衝器136至138各自可相對應於N個核心140至142。舉例言之,第一命令緩衝器136可相對應於第一核心106,及第N命令緩衝器138可相對應於第N核心108。N個命令緩衝器136至138各自可用以追蹤行進間異動處理(例如送至一執行單元供執行的異動處理)以致能頁面錯誤及上下文切換的透明處理。
N個命令緩衝器136至138各自的內容可包括一處理狀態之一部分且可保留橫跨上下文切換。N個命令緩衝器136至138可各自體現為一陣列,諸如一循環緩衝器,其乃ACE 110的內部結構。舉例言之,命令緩衝器136可
包括一指標器指向含括一特定異動處理的資訊的一ACE控制區塊(ACB)。
N個命令緩衝器136至138各自可包括資訊,諸如ACB的大小及識別異動處理狀態的一狀態欄位,諸如異動處理是否為一新異動處理,異動處理是否係在執行管線內部,異動處理是否已完成,是否發生頁面錯誤,或異動處理是否已經失效。N個命令緩衝器136至138各自可包括一或多個指數暫存器,諸如檢索第一有源異動處理其對在一特定核心上執行的執行緒係仍在行進間的一第一暫存器(「頭」),檢索該執行緒的下一個至最末個有源異動處理之一第二暫存器(「尾」),檢索欲發送用以執行的下個異動處理之一第三暫存器(「下一個」)。
核心對ASID表112可包括一或多個欄位,諸如一核心識別符欄位、一ASID欄位、及一旗標指示該ASID是否為有源。核心對ASID表112可使用一特定核心識別符加以搜尋。ASID對頁表暫存器映射114可包括一或多個欄位,諸如一ASID欄位及一頁表暫存器欄位。該ASID對頁表暫存器映射114可使用一特定核心識別符加以搜尋。該頁表暫存器可為一暫存器(例如CR3)藉由針對一特定異動處理定位一頁面目錄及頁表而致能一核心轉譯虛擬位址成實體位址。TLB 116可包括多個欄位,諸如一ASID欄位、一旗標指示該位址空間是否為有效、一虛擬位址(「標籤」)、及一實體位址。TLB 116可使用一特定虛擬位址及一特定ASID加以搜尋。於圖1中,核心對ASID表112、ASID對頁表暫存
器映射114、及TLB 116係顯示為各自包括兩個分錄用於例示說明目的。於一特定體現中,核心對ASID表112、ASID對頁表暫存器映射114、及TLB 116可具有多於兩個分錄,諸如64分錄、128分錄、256分錄、512分錄等。此外,於核心對ASID表112、ASID對頁表暫存器映射114、及TLB 116各自中的分錄數目可各異。舉例言之,核心對ASID表112可具有N個分錄(於該處N為核心數目),ASID對頁表暫存器映射114可具有Y個分錄,及TLB 116可具有Z個分錄,於該處N、Y及Z為大於1之整數,及於該處N可與Y及Z相異,及Y可與Z相異。
於操作中,第一核心106可執行第一執行緒140,及第N核心108可執行第N執行緒142。執行緒140或142中之一者可發送一ACB 144用以藉加速計算引擎110執行。ACB 144可導致一或多個指令146用以由ACE 110執行。舉例言之,ACB 144可包括一標頭區塊,包括與指令146的執行相關聯的狀態(例如新、執行管線內部、完成、頁面錯誤、無效等)。ACB 144可包括識別輸入ACE 110的參數之一輸入參數識別符。ACB 144可包括識別處理該等輸入參數及/或指令146的處理結果之一輸出資料識別符。ACB 144可包括識別輸出錯誤相關資料,諸如錯誤訊息及資料傾卸(例如暫存器、快取記憶體、管線等的內容)的一輸出錯誤識別符。當然,除了或替代先前描述的內容之外,ACB可包括其它內容。例如,ACB的內容可隨所呼叫的ACE之特定功能而異。
應答從執行緒140或142中之一者接收ACB 144,ACE 110可取回一特定ASID及與發送該ACB 144的該執行緒相關聯的一特定頁表暫存器(例如CR3)。ACE 110藉使用發送該ACB 144的該核心之一核心識別符,搜尋該核心對ASID表112,可取回與該異動處理相關聯的的該特定ASID(例如ACB 144)。舉例言之,ACE 110可決定ACB 144係由在第N核心106上執行的該第N執行緒142發送。ACE 110可搜尋核心對ASID表112,使用第N核心108的該核心識別符(例如N)以識別與在第N核心108上執行的該第N執行緒142相關聯的一特定ASID。
在ACE 110從核心對ASID表112取回該特定ASID後,ACE 110可使用該特定ASID以搜尋ASID對頁表暫存器映射114而取回與在第N核心108上執行的該第N執行緒142相關聯的一頁表暫存器(例如CR3或相當物)。ACE 110可從ACB 144取回一虛擬位址。ACE 110可利用該特定ASID及虛擬位址存取該TLB 116,以取回與在第N核心108上執行的該第N執行緒142相關聯的實體位址。ACE 110可決定TLB 116是否含括一分錄,其包括該特定ASID及虛擬位址(「標籤」)。舉例言之,該虛擬位址可使用得自該ASID對頁表暫存器映射114的該特定頁表暫存器識別。當ACE 110啟動一特定異動處理時,該核心識別符及ASID可經識別,然後維持與該特定異動處理相關聯,直到已經完成該特定異動處理。於該特定異動處理之處理期間TLB 116可被存取多次。
若該TLB 116具有含括該特定異動處理及虛擬位址的一分錄,則ACE 110可從該TLB 116的分錄取回該實體位址。當執行該異動處理(例如ACB 144)時,ACE 110可使用該實體位址。舉例言之,ACE 110可發送用於執行的ACB 144給ACE執行單元132中之一者。
若ACE 110決定TLB 116不含括與該異動處理(例如ACB 144)相關聯的該ASID,則ACE 110可加一TLB失誤旗標。ACE 110藉執行一頁走(或類似程序)處理TLB失誤以識別相對應於該ASID之一實體位址。在識別相對應於該ASID之一實體位址後,ACE 110可更新TLB 116以含括與該ASID相關聯的實體位址。ACE 110可使用在已更新的TLB 116中的實體位址而存取一記憶體(例如含括該處理器102的一裝置之實體記憶體)。
如此,當加該TLB失誤旗標時,ACE 110可使用處理器102中的結構,諸如核心對ASID表112、ASID對頁表暫存器映射114、處理器102中的其它結構、或其任何組合,以識別相對應於發送ACB 144的該執行緒的該ASID的該實體位址。
圖2例示說明依據若干體現,包括使用一ASID存取一TLB的方法200之實例之流程圖。舉例言之,方法200可藉圖1之ACE 110執行。
於202,發送一控制區塊的異動處理係接收自一核心。舉例言之,於圖1中,發送ACB 144的該異動處理可接收自第一核心106或第N核心108。
於204,取回與該異動處理相關聯的一ASID及一頁表暫存器。舉例言之,於圖1中,ACE 110可從核心對ASID表112取回ASID,及從ASID對頁表暫存器映射114取回頁表暫存器(例如CR3)。
於206,TLB可使用ASID及一虛擬位址存取。舉例言之,於圖1中,ACE 110可使用自該核心對ASID表112取回的該特定ASID及自該ACB 144取回的一虛擬位址而存取該TLB 116。
於208,決定該TLB是否含括相對應於該ASID及該虛擬位址的一分錄。舉例言之,於圖1中,ACE 110可決定該TLB 116是否含括相對應於該ASID及該虛擬位址的一分錄。
於208,應答決定該TLB係不包括含有該ASID及該虛擬位址的一分錄,於210,加TLB失誤旗標。
於212,基於該ASID及該虛擬位址,執行TLB失誤處理程序。例如,由ACE 112使用核心對ASID表112及ASID對頁表暫存器映射114可執行頁走處理以決定一實體位址。
於214,在執行TLB失誤處理程序後,TLB 116可經更新。舉例言之,在執行頁走(或相當處理程序)後,TLB 116可經更新以包括一分錄其含有該ASID、該虛擬位址、及該實體位址,可設定該分錄中的有效旗標以指示該分錄為有效。
於216,記憶體可使用於TLB 116的分錄的一實體
位址存取。舉例言之,於圖1中,可存取可藉處理器102存取的一快取分錄或快取記憶體。
於208,應答決定該TLB包括含有該ASID及該虛擬位址的一分錄,方法200前進至216,於該處記憶體係使用於該TLB的該分錄中的實體位址存取。
圖3例示說明依據若干體現,包括檢測一核心切換出一執行緒及一相關聯的上下文之方法300實例之流程圖。例如,方法300可由圖1的ACE 110執行。
於302,ACE可檢測一核心切換出一執行緒及一相關聯的位址空間。舉例言之,於圖1中,ACE 110可決定第N核心108切換出第N執行緒142。第N執行緒142可具有由一特定ASID識別的相關聯的位址空間。
於304,與該核心相關聯的異動處理可從ACE的執行管線湧進或清除(例如移除)。當一異動處理係湧進時,該異動處理可被標記為「錯誤」,沿管線向下傳送以防止該異動處理阻擋在該執行管線中的其它異動處理。當被標記為「錯誤」的異動處理到達執行管線末端時,該異動處理可移至一特殊佇列(例如ACE命令緩衝器),於該處該等異動處理等待直到例外(例如頁面錯誤)造成上下文切換被解決為止。一旦造成上下文切換的例外被解決,該異動處理可被置回該執行管線的起點。於若干體現中,當一特定上下文被切換出時,在該TLB中與該異動處理相關聯的該分錄可被失效化。
於306,決定與該核心相關聯的該ASID是否也與
一第二核心相關聯。應答決定與該核心相關聯的該ASID也與一第二核心相關聯,然後核心對ASID表112、ASID對頁表暫存器映射114、及TLB 116可保持未經修正。
於306,應答決定與該核心相關聯的該ASID係不與一第二核心相關聯,含括該位址空間該ASID的一分錄可於一ASID-頁表暫存器映射中識別,及該分錄可被失效化。舉例言之,於圖1中,ASID對頁表暫存器映射114中的一旗標可經設定以指示該分錄不再有效(例如無效)。在稍後的一時間點,該無效分錄可被去除或以一有效分錄覆寫。此種無效化可藉核心中之一者的硬體、ACE的硬體、或上下文切換軟體達成。
於310,含括ASID的一核心-ASID表中的一分錄被失效化。舉例言之,於圖1中,核心對ASID表112中之一旗標可經設定以指示該分錄為無效。在稍後的一時間點,該無效分錄可被去除或以一有效分錄覆寫。
於312,儲存一命令緩衝器。舉例言之,於圖1中,ACE 110可儲存與第一核心106相關聯的第一命令緩衝器136或與第N核心108相關聯的第N命令緩衝器138。
圖4例示說明依據若干體現,包括檢測一核心切換入一執行緒及一相關聯的上下文之方法400實例之流程圖。舉例言之,方法400可藉圖1的ACE 110執行。
於402,可做出決定一核心切換入一執行緒及一相關聯的上下文。舉例言之,於圖1中,ACE 110可決定第N核心108切換入一執行緒,諸如第N執行緒142及相關聯的
位址空間。
於404,作決定ASID對頁表指標器表是否包括一分錄其含有一特定頁表暫存器。舉例言之,於圖1中,ACE 110可決定與第N核心108相關聯的一頁表暫存器(例如CR3或相當物)是否含括於ASID對頁表暫存器映射114。
於404,應答決定ASID-頁表暫存器映射包含一個分錄具有一特定頁表暫存器,核心對ASID表、ASID對頁表暫存器映射、及/或TLB維持未經修正。
於404,應答決定ASID-頁表暫存器映射不包含一個分錄具有一特定頁表暫存器,於406,產生一新ASID。新ASID可與由該核心所切換入的的該執行緒的位址空間相關聯。
於408,含括該新ASID的一分錄加至該位址空間對頁表暫存器表。舉例言之,於圖1中,ACE 110可決定第N核心108切換入第N執行緒142,及決定ASID對頁表暫存器映射114並不包括與第N核心108相關聯的一特定頁表暫存器。應答之,ACE 110可增加一分錄至ASID對頁表暫存器映射114,其包括與第一核心106相關聯的頁表暫存器(例如CR3)。
於410,含括新ASID的一分錄可加至核心對ASID表。舉例言之,於圖1中,ACE 110可添加含括新ASID的一分錄至核心對ASID表。
於412,可取回與該執行緒相關聯的一命令緩衝器。舉例言之,於圖1中,ACE 110可取回與第N執行緒142
相關聯的該命令緩衝器138。
圖5例示說明依據若干體現,包括於含括一特定位址空間識別符的一上下文對頁表暫存器映射中失效一第一分錄的方法500實例之流程圖。舉例言之,方法500可藉圖1的ACE 110執行。
於502,一異動處理可接收自由第一處理核心執行的一第一執行緒。舉例言之,於圖1中,ACE 110可從第一執行緒142或從第N執行緒142接收ACB 144。
於504,與該異動處理相關聯的一實體位址可從一TLB取回。舉例言之,於圖1中,ACE 110可從TLB 116取回與ACB 144相關聯的一實體位址。
於506,一記憶體可使用該實體位址存取。舉例言之,於圖1中,包括處理器102的一裝置可包括一記憶體,該記憶體係使用從TLB 116取回的該實體位址存取。
於508,可作決定該第一核心切換出該第一執行緒及一相關聯的第一位址空間。該第一位址空間可藉一ASID識別。舉例言之,於圖1中,ACE 110可決定該第一核心106切換出該第一執行緒142及一相關聯的第一位址空間。該第一位址空間可藉一ASID識別。
於510,作決定該ASID係與該等複數個核心中之一第二核心解除連結。舉例言之,於圖1中,ACE 110可決定該ASID係與第一核心106相關聯,但不與處理器102的其它核心諸如第N核心108相關聯。
於512,包括該ASID的一ASID-頁表暫存器映射
中的一第一分錄被失效化。舉例言之,於圖1中,於該ASID對頁表暫存器映射114中,ACE 110可失效化含括與該第一核心106相關聯的ASID之一分錄。
於514,包括該ASID的一核心對ASID表中的一第二分錄可被失效化。舉例言之,於圖1中,於該核心對ASID表112中,ACE 110可失效化含括與該第一核心106相關聯的ASID之一分錄。
圖6例示說明依據若干體現,包括識別與異動處理相關聯的一頁表暫存器的方法600實例之流程圖。舉例言之,方法600可藉圖1的ACE 110執行。
於602,含括一或多個指令的一控制區塊可接收自由數個處理核心中的第一處理核心執行的第一執行緒。舉例言之,於圖1中,ACE 110可從由第一核心106執行的第一執行緒142接收ACB 144。
於604,可識別與第一核心相關聯的ASID。舉例言之,於圖1中,ACE 110可使用第一核心106的一核心識別符而從核心對ASID表112取回一ASID。
於606,可識別與控制區塊相關聯的一頁表暫存器。舉例言之,於圖1中,ACE 110可使用ASID對頁表暫存器映射114,運用該ASID以識別一頁表暫存器(例如CR3或相當物)。
於608,基於該ASID及該頁表暫存器,與該異動處理相關聯的一實體位址可自一TLB取回。舉例言之,於圖1中,ACE 110可基於該ASID及該頁表暫存器而從TLB
116取回一實體位址。
於610,作決定該第一核心切換出與該ASID相關聯的該第一執行緒。例如,該ASID可識別第一執行緒之一位址空間。
於612,應答決定該第一核心切換出該第一上下文,作決定該ASID是否與該等複數核心的一第二核心相關聯。
於614,當該ASID係與該等複數核心的該第二核心不相關聯時,於一ASID-頁表暫存器映射中及於一核心對ASID表中的含括該ASID的一分錄可被失效化。舉例言之,於圖1中,應答決定第一核心106切換出該第一上下文,且該第一上下文係與處理器102中之任何其它核心不相關聯,ACE 110可失效化包括於核心對ASID表112中的該ASID之一分錄,且可失效化包括於ASID對頁表暫存器映射114中的該ASID之一分錄。
圖7例示說明依據若干體現,包括決定一第一核心切換入與一第二執行緒相關聯的一第二上下文之方法實例之流程圖。舉例言之,方法700可藉圖1的ACE 110執行。
於702,指令係接收自藉第一核心執行的一第一執行緒。舉例言之,於圖1中,ACE 110可接收ACB 144含括得自藉第一核心106執行的一第一執行緒142的指令146。
於704,一實體位址係自TLB取回。舉例言之,於圖1中,ACE 110可基於一ASID及一虛擬位址而自TLB 116取回一實體位址。
於706,指令的執行係使用由該實體位址存取的一記憶體位置而啟動。舉例言之,於圖1中,當ACE執行單元132中之一者執行指令146時,包括處理器102的一裝置的實體位址可使用該實體位址存取。
於708,作決定該第一核心切換入具有相關聯的第二位址空間之一第二執行緒。第二位址空間係藉第二ASID識別。舉例言之,於圖1中,第一核心106可切換出該第一執行緒140且切換入一第二執行緒。
於710,作決定在ASID-頁表暫存器映射中的一分錄是否包括與該第二位址空間相關聯的一特定頁表暫存器。舉例言之,於圖1中,ACE 110可決定在ASID-頁表暫存器映射114中的一分錄是否包括與該第二位址空間相關聯的一特定頁表暫存器。於某些情況下,ASID-頁表暫存器映射不被更新的同時,核心對ASID表可被更新。
於712,應答決定該ASID-頁表暫存器映射中的該等分錄排除該特定頁表暫存器,產生一新ASID。舉例言之,於圖1中,應答決定該ASID-頁表暫存器映射114中的該等分錄排除該特定頁表暫存器,ACE 110可決定產生一新ASID以與該第二位址空間相關聯。
於714,含括該新ASID之一第一分錄係加至該ASID對頁表暫存器表。於716,含括該新ASID之一第二分錄係加至該核心對ASID表112。舉例言之,於圖1中,ACE 110可更新核心對ASID表112及ASID對頁表暫存器映射114成為各自包括一分錄含括與該第二執行緒的第二位址空間
相關聯的該新ASID。
圖8例示說明依據若干體現,包括一轉譯後備緩衝器以支援多上下文的一裝置之系統架構800之實例。架構800包括一計算裝置802,諸如一桌上型計算裝置、膝上型計算裝置、平板計算裝置、小筆電計算裝置、無線計算裝置等。
裝置802可包括一或多個處理器,諸如一處理器102、一時鐘產生器804、一記憶體806(例如隨機存取記憶體)、一輸入/輸出控制中樞器808、及一電源810(例如一電池或一電源供應器)。處理器102可包括多個核心,諸如第一核心106及一或多個額外核心,高達及含括第N核心108,於該處N係大於1。處理器102可包括一記憶體控制器812以致能存取(例如讀或寫)至該記憶體806。
此外,處理器102可包括ACE 110、核心對ASID表112、及ASID對頁表暫存器映射114。ACE 110可包括TLB 116及N個命令緩衝器,諸如第一命令緩衝器136及第N命令緩衝器138。多執行緒可在N個核心106至108上執行。舉例言之,第一核心106可執行第一執行緒140,及第N核心108可執行第N執行緒142。ACE 110可針對N個核心140至142執行特化功能諸如圖形相關功能。。核心140或142可發送控制區塊,諸如ACB 144以指示ACE 110從事各項功能。為了致能對ACE操作的精細粒度控制,執行緒可致能ACE 110以直接地存取(例如讀取及寫入)與各個執行緒相關聯的該位址空間。為了有效地管理虛擬位址至實體位址的轉譯,
ACE 110可維持結構,諸如核心對ASID表112、ASID對頁表暫存器映射114、及TLB 116。結構112、114、及116可使得ACE 110管理在多個核心上執行的多執行緒相關聯的多重位址空間,同時針對各個獨特的管理虛擬位址至實體位址的對映維持在TLB中的單一分錄。在包括多個ACE單元的系統中,各個ACE單元可具有一相對應(例如專用)TLB。於若干體現中,ASID對頁表暫存器映射114及/或核心對ASID表112可由二或多個ACE單元使用,於某些情況下,藉在系統中的全部ACE單元使用。於其它體現中,多個ACE單元各自可具有一相對應(例如專用)ASID-頁表暫存器映射及/或核心對ASID表112。
時鐘產生器804可產生一時鐘信號,該時鐘信號乃該處理器804的N個核心218及812中之一或多者的操作頻率。舉例言之,該等N個核心218及812中之一或多者可以由時鐘產生器806所產生的時鐘信號中之多者操作。
輸入/輸出控制中樞器808可耦接至一大容量儲存裝置814。該大容量儲存裝置814可包括一或多個非依電性儲存裝置,諸如磁碟機、固態驅動裝置等。作業系統816可儲存於大容量儲存裝置814。
輸入/輸出控制中樞器808可耦接至一網路埠818。網路埠818可使得裝置802與其它裝置透過網路820通訊。網路820可包括多數網路,諸如硬體電路網路(例如公用交換電話網路等)、無線網路(例如802.11、劃碼多向接取(CDMA(圖中未顯示)、全球行動通訊系統(GSM)、長期演進
(LTE)等)、其它型別的通訊網路或其任一項組合。輸入/輸出控制中樞器可耦接至能夠顯示文字、圖形的一網路埠818。
如此處描述,處理器102可包括多個計算單元或多核心。處理器102可體現為一或多個微處理器、微電腦、微控制器、數位信號處理器、中央處理單元、狀態機、邏輯電路及/或任何裝置其基於操作指令操縱信號。於其它能力中,處理器102可經組配來提取及執行儲存在記憶體806、大容量儲存裝置814、或其它電腦可讀取媒體中的電腦可讀取指令。
記憶體806乃用以儲存指令的電腦儲存媒體實例,該記憶體係由處理器102執行以從事前述各項功能。記憶體806可產生依電性記憶體及非依電性記憶體(例如RAM、ROM等)。記憶體806於此處可稱作為記憶體或電腦儲存媒體,且可為能夠儲存電腦可讀取、處理器可執行程式指令作為電腦程式碼的非過渡媒體,該等指令事由作為組配用以進行此處的體現中描述的操作及功能的一特定機器的處理器102執行。處理器102可包括致能一資源諸如ACE 110,以依據此處體現藉在多個核心上執行的多執行緒有效地存取。
此處描述的系統及計算裝置之實例僅為適合某些體現的實例,而非意圖用以提示可體現此處描述的方法、組件及結構特徵的環境、架構及框架之使用範圍或功能的任何限制。如此,此處體現係使用無數環境或架構操
作,且可於通用及特用計算系統或具有處理能力的其它裝置中體現。概略言之,參考圖式描述的任一項功能可使用軟體、硬體(例如固定邏輯電路)或此等體現之任一項組合而予體現。如此處使用,「模組」、「機構」或「組件」等詞通常表示可經組配來體現載明的功能之軟體、硬體、或軟體與硬體的組合。舉例言之,於軟體體現之情況下,「模組」、「機構」或「組件」等詞可表示程式碼(及/或宣告型指令),當在處理裝置或裝置(例如CPU或處理器)上執行時事從事特定任務或操作。程式碼可儲存於一非限制性具體實施例中,電腦可讀取記憶體裝置或其它電腦儲存裝置。如此,此處描述的方法、組件、及模組可藉電腦程式產品體現。
又復,本文揭示提出如於附圖中描述且舉例說明的各個體現實例。但本文揭示並非限於此處所描述且舉例說明的體現,反而如熟諳技藝人士已知或將變成已知,可擴延至其它體現。於本說明書中述及「一個體現」、「此一體現」、「此等體現」、或「若干體現」表示所描述的一特定特徵、結構、或特性係含括於至少一個體現中,及此等片語出現在說明書中各處並非必要全部皆係指同一個體現。
雖然本案主旨已經以結構特徵及/或方法動作的特定語言描述,但於隨附之申請專利範圍各項中定義的主旨並非囿限於前文描述的特定特徵及/或動作。反而,前文描述的特定特徵及動作係揭示作為體現申請專利範圍各項的形式實例。本文揭示係意圖涵蓋本文揭示體現的任何及
全部調適例或變化例,後文申請專利範圍各項不應解譯為囿限於本說明書中揭示的特定體現。取而代之,本專利文件之範圍全然係由如下申請專利範圍各項連同此等申請專利範圍各項依法擁有的相當物之完整範圍所決定。
100‧‧‧框架
102‧‧‧處理器
104‧‧‧最末層級快取記憶體(LLC)
106、108‧‧‧核心
110‧‧‧加速計算引擎(ACE)
112‧‧‧核心對位址空間識別符(ASID)表
114‧‧‧ASID對頁表暫存器映射
116‧‧‧轉譯後備緩衝器(TLB)
118、124‧‧‧暫存器
120、126‧‧‧執行單元
122、128‧‧‧層級1(L1)快取記憶體
130‧‧‧ACE暫存器
132‧‧‧ACE執行單元
134‧‧‧本地記憶體
136、138‧‧‧緩衝器
140、142‧‧‧執行緒
144‧‧‧ACE控制區塊(ACB)
146‧‧‧指令
Claims (16)
- 一種處理器,其係包含:多個處理核心;及由該等多個處理核心分享的一邏輯引擎,該邏輯引擎係包括:一轉譯後備緩衝器以使得該邏輯引擎直接地存取在該等多個處理核心中之一者上執行的一執行緒的一虛擬位址,以及邏輯係進行下列動作:自藉該等多個處理核心中之一第一處理核心執行的一第一執行緒接收一控制區塊,該控制區塊包括用以藉該邏輯引擎執行的一或多個指令;自一轉譯後備緩衝器取回與該控制區塊相關聯的一實體位址,藉由識別與該控制區塊相關聯的一位址空間識別符;識別與該控制區塊相關聯的一頁表暫存器;及基於該位址空間識別符及該頁表暫存器,自該轉譯後備緩衝器取回與該控制區塊相關聯的該實體位址;及使用該實體位址存取一記憶體。
- 如申請專利範圍第1項之處理器,其中該邏輯係進行下列動作:決定該第一處理核心是否切換出該第一執行緒及一相關聯的第一上下文,該相關聯的第一上下文係藉該位址空 間識別符識別;及應答決定該第一處理核心係切換出該第一執行緒及該相關聯的第一上下文,決定該位址空間識別符是否與該等多個核心中之一第二處理核心相關聯。
- 如申請專利範圍第2項之處理器,其中應答決定該位址空間識別符係與該第二處理核心不相關聯,該邏輯係進行下列動作:使在包括有該位址空間識別符之一上下文對頁表暫存器表中的一第一分錄失效;及使在包括有該位址空間識別符之一處理核心對位址空間識別符表中的一第二分錄失效。
- 如申請專利範圍第3項之處理器,其中該邏輯係儲存與該邏輯引擎相關聯的一命令緩衝器。
- 如申請專利範圍第1項之處理器,其中該邏輯係進行下列動作:決定該第一處理核心係切換入該第二執行緒及一相關聯的第二上下文,該相關聯的第二上下文係藉一第二位址空間識別符識別;及決定在一位址空間識別符對頁表暫存器表中的一第三分錄是否包括一特定頁表暫存器,其致能對該相關聯的第二上下文之存取。
- 如申請專利範圍第5項之處理器,其中應答決定在該位址空間識別符對頁表暫存器表中的該第三分錄排除該特定頁表暫存器,該邏輯係進行下列動作: 產生一新位址空間識別符;增加包括有該新位址空間識別符的一第一新分錄至該位址空間識別符對頁表暫存器表;及增加包括有該新位址空間識別符的一第二新分錄至一核心對位址空間識別符表。
- 如申請專利範圍第6項之處理器,其中該邏輯用以取回與該邏輯引擎相關聯的一命令緩衝器。
- 一種用於致能多執行緒以存取於處理器中之系統,其係包含:包括有多個處理核心之一處理器;一邏輯引擎其係包括:一轉譯後備緩衝器以使得該邏輯引擎直接地存取與在該等多個處理核心中之一特定處理核心上執行的一執行緒相關聯的一虛擬位址,其中該邏輯係進行下列動作:自藉該等多個處理核心中之一第一處理核心執行的一第一執行緒接收一或多個指令,該等一或多個指令係待藉由該邏輯引擎執行;自該轉譯後備緩衝器取回與該等一或多個指令相關聯的一實體位址,當執行該等一或多個指令時該實體位址係受存取;識別與該第一執行緒相關聯的一位址空間識別符;識別與該第一執行緒相關聯的一頁表暫存器;及 基於該位址空間識別符及該頁表暫存器,自該轉譯後備緩衝器取回與該第一執行緒相關聯的該實體位址。
- 如申請專利範圍第8項之系統,其中該邏輯係進行下列動作:決定該第一處理核心係切換出與該第一執行緒相關聯的第一上下文,該第一上下文係藉該位址空間識別符識別;及應答決定該第一處理核心係切換出該第一上下文,決定該位址空間識別符是否與該第二處理核心相關聯。
- 如申請專利範圍第9項之系統,其中應答決定該位址空間識別符係與該第二處理核心不相關聯,該邏輯係進行下列動作:使在包括有該位址空間識別符之一上下文對頁表暫存器表中的一第一分錄失效;及使在包括有該位址空間識別符之一處理核心對位址空間識別符表中的一第二分錄失效。
- 如申請專利範圍第8項之系統,其中該邏輯係進行下列動作:決定該第一處理核心係切換入與一第二執行緒相關聯的一第二上下文,該第二上下文係藉一第二位址空間識別符識別;及決定在一位址空間識別符對頁表暫存器表中的一第三分錄是否包括一特定頁表暫存器,其致能對該第二上下文 之存取。
- 如申請專利範圍第11項之系統,其中應答決定在該位址空間識別符對頁表暫存器表中的該第三分錄排除該特定頁表暫存器,該邏輯係進行下列動作:產生一新位址空間識別符;增加包括有該新位址空間識別符的一第一新分錄至該位址空間識別符對頁表暫存器表;增加包括有該新位址空間識別符的一第二新分錄至一處理核心對位址空間識別符表;及取回一命令緩衝器。
- 一種用於致能多執行緒以存取於處理器中之方法,其係包含以下步驟:在由多個執行緒所分享的一邏輯引擎,接收一控制區塊,其包括來自該等多個執行緒中之一第一執行緒的一或多個指令;識別與該控制區塊相關聯的一位址空間識別符;識別與該控制區塊相關聯的一頁表暫存器;及基於該位址空間識別符及該頁表暫存器,自該轉譯後備緩衝器取回與該控制區塊相關聯的該實體位址;及使用受該實體位址存取之一記憶體位置執行該等一或多個指令。
- 如申請專利範圍第13項之方法,其係進一步包含以下步驟:決定一第一核心係切換出與該第一執行緒相關聯的第 一上下文,該第一上下文係藉該位址空間識別符識別;決定該位址空間識別符是否與一第二核心相關聯;應答決定該位址空間識別符係與該第二核心不相關聯,使在包括有該位址空間識別符之一上下文對頁表暫存器表中的一第一分錄失效;使在包括有該位址空間識別符之一核心對位址空間識別符表中的一第二分錄失效;及儲存與該邏輯引擎相關聯的一命令緩衝器。
- 如申請專利範圍第14項之方法,其係進一步包含清除來自一管線與該第一核心相關聯的其它異動。
- 如申請專利範圍第14項之方法,其係進一步包含以下步驟:決定該第一核心係切換入與一第二執行緒相關聯的第二上下文,該第二上下文係藉一第二位址空間識別符識別;決定在該位址空間識別符對頁表暫存器表中之一第三分錄是否包括一特定頁表暫存器,其致能對該第二上下文之存取;應答決定在該位址空間識別符對頁表暫存器表中的該第三分錄排除該特定頁表暫存器,而產生一新位址空間識別符;增加包括有該新位址空間識別符的一第一新分錄至該位址空間識別符對頁表暫存器表;增加包括有該新位址空間識別符的一第二新分錄至該 核心對位址空間識別符表;及取回與該邏輯引擎相關聯的一命令緩衝器。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/068056 WO2013101168A1 (en) | 2011-12-30 | 2011-12-30 | Translation lookaside buffer for multiple context compute engine |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201346591A TW201346591A (zh) | 2013-11-16 |
TWI531912B true TWI531912B (zh) | 2016-05-01 |
Family
ID=48698402
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101147788A TWI531912B (zh) | 2011-12-30 | 2012-12-17 | 具有用於多上下文計算引擎的轉譯後備緩衝之處理器、用於致能多執行緒以存取於處理器中之資源之系統和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9152572B2 (zh) |
TW (1) | TWI531912B (zh) |
WO (1) | WO2013101168A1 (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9396020B2 (en) | 2012-03-30 | 2016-07-19 | Intel Corporation | Context switching mechanism for a processing core having a general purpose CPU core and a tightly coupled accelerator |
US10037228B2 (en) * | 2012-10-25 | 2018-07-31 | Nvidia Corporation | Efficient memory virtualization in multi-threaded processing units |
US10169091B2 (en) * | 2012-10-25 | 2019-01-01 | Nvidia Corporation | Efficient memory virtualization in multi-threaded processing units |
US10310973B2 (en) * | 2012-10-25 | 2019-06-04 | Nvidia Corporation | Efficient memory virtualization in multi-threaded processing units |
US8898430B2 (en) * | 2012-12-05 | 2014-11-25 | Arm Limited | Fault handling in address translation transactions |
US9519575B2 (en) * | 2013-04-25 | 2016-12-13 | Sandisk Technologies Llc | Conditional iteration for a non-volatile device |
US9645941B2 (en) | 2013-09-26 | 2017-05-09 | Cavium, Inc. | Collapsed address translation with multiple page sizes |
US9639476B2 (en) | 2013-09-26 | 2017-05-02 | Cavium, Inc. | Merged TLB structure for multiple sequential address translations |
US9208103B2 (en) | 2013-09-26 | 2015-12-08 | Cavium, Inc. | Translation bypass in multi-stage address translation |
US9268694B2 (en) * | 2013-09-26 | 2016-02-23 | Cavium, Inc. | Maintenance of cache and tags in a translation lookaside buffer |
US9323715B2 (en) * | 2013-11-14 | 2016-04-26 | Cavium, Inc. | Method and apparatus to represent a processor context with fewer bits |
GB2529394A (en) | 2014-08-14 | 2016-02-24 | Ibm | Multiprocessor computer system |
US11301256B2 (en) * | 2014-08-22 | 2022-04-12 | Advanced Micro Devices, Inc. | System and method for page-conscious GPU instruction |
US9367477B2 (en) * | 2014-09-24 | 2016-06-14 | Intel Corporation | Instruction and logic for support of code modification in translation lookaside buffers |
US9658940B2 (en) | 2015-03-19 | 2017-05-23 | International Business Machines Corporation | Method to efficiently implement synchronization using software managed address translation |
EP3073370B1 (en) * | 2015-03-27 | 2018-06-27 | Intel Corporation | Apparatuses and methods to translate a logical thread identification to a physical thread identification |
US10437748B1 (en) * | 2015-12-29 | 2019-10-08 | Amazon Technologies, Inc. | Core-to-core communication |
US9886393B2 (en) | 2016-04-13 | 2018-02-06 | At&T Mobility Ii Llc | Translation lookaside buffer switch bank |
US10922137B2 (en) | 2016-04-27 | 2021-02-16 | Hewlett Packard Enterprise Development Lp | Dynamic thread mapping |
US10296465B2 (en) * | 2016-11-29 | 2019-05-21 | Board Of Regents, The University Of Texas System | Processor using a level 3 translation lookaside buffer implemented in off-chip or die-stacked dynamic random-access memory |
KR102439466B1 (ko) * | 2017-03-27 | 2022-09-02 | 엘지전자 주식회사 | 단말기 및 그 제어 방법 |
CN113614703B (zh) * | 2019-03-28 | 2024-02-09 | 华为技术有限公司 | 用于核特定内存映射的装置 |
US11392503B2 (en) * | 2019-12-27 | 2022-07-19 | Intel Corporation | Memory tagging apparatus and method |
US11693785B2 (en) | 2019-12-27 | 2023-07-04 | Intel Corporation | Memory tagging apparatus and method |
US11914865B2 (en) * | 2022-04-11 | 2024-02-27 | Mellanox Technologies, Ltd. | Methods and systems for limiting data traffic while processing computer system operations |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1736887A3 (fr) | 2005-05-31 | 2009-04-22 | Stmicroelectronics Sa | Repertoire de pages memoire |
US8024547B2 (en) | 2007-05-01 | 2011-09-20 | Vivante Corporation | Virtual memory translation with pre-fetch prediction |
US8166249B2 (en) * | 2008-03-10 | 2012-04-24 | International Business Machines Corporation | Performing a least recently used (LRU) algorithm for a co-processor |
US9239799B2 (en) * | 2008-06-26 | 2016-01-19 | Qualcomm Incorporated | Memory management unit directed access to system interfaces |
-
2011
- 2011-12-30 US US13/993,800 patent/US9152572B2/en not_active Expired - Fee Related
- 2011-12-30 WO PCT/US2011/068056 patent/WO2013101168A1/en active Application Filing
-
2012
- 2012-12-17 TW TW101147788A patent/TWI531912B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
TW201346591A (zh) | 2013-11-16 |
US20130262816A1 (en) | 2013-10-03 |
WO2013101168A1 (en) | 2013-07-04 |
US9152572B2 (en) | 2015-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI531912B (zh) | 具有用於多上下文計算引擎的轉譯後備緩衝之處理器、用於致能多執行緒以存取於處理器中之資源之系統和方法 | |
KR101770496B1 (ko) | 다수의 상이한 어드레스 공간을 지원하는 프로세서에서의 효율적인 어드레스 변환 캐싱 | |
US9779028B1 (en) | Managing translation invalidation | |
CN109240950B (zh) | 处理器、区分系统管理模式条目的方法以及存储介质 | |
CN110196757B (zh) | 虚拟机的tlb填写方法、装置及存储介质 | |
US9703566B2 (en) | Sharing TLB mappings between contexts | |
JP2020529656A (ja) | アドレス変換キャッシュ | |
JP2018504694A (ja) | 仮想アドレスを使用してアクセスされるキャッシュ | |
US20160140042A1 (en) | Instruction cache translation management | |
US11775445B2 (en) | Translation support for a virtual cache | |
US10713168B2 (en) | Cache structure using a logical directory | |
US10606762B2 (en) | Sharing virtual and real translations in a virtual cache | |
WO2019133222A1 (en) | Systems, methods, and apparatuses for patching pages | |
US9483400B2 (en) | Multiplexed memory for segments and pages | |
US10846239B2 (en) | Managing translation lookaside buffer entries based on associativity and page size | |
US10146698B2 (en) | Method and apparatus for power reduction in a multi-threaded mode |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |