TW202324107A - 位址轉譯快取及包括其的處理器系統 - Google Patents
位址轉譯快取及包括其的處理器系統 Download PDFInfo
- Publication number
- TW202324107A TW202324107A TW111140754A TW111140754A TW202324107A TW 202324107 A TW202324107 A TW 202324107A TW 111140754 A TW111140754 A TW 111140754A TW 111140754 A TW111140754 A TW 111140754A TW 202324107 A TW202324107 A TW 202324107A
- Authority
- TW
- Taiwan
- Prior art keywords
- cache
- page
- caches
- translation
- address
- Prior art date
Links
Images
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/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/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/404—Coupling between buses using bus bridges with address mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- 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/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency 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
- G06F2212/652—Page size control
-
- 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
- G06F2212/657—Virtual address space management
-
- 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/681—Multi-level TLB, e.g. microTLB and main 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
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/28—DMA
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
位址轉譯快取(ATC)被配置成儲存指示記憶體裝置的虛擬位址與實體位址之間的映射資訊的轉譯條目。所述位址轉譯快取包括多個彈性頁面組快取、共享快取及快取管理器。每一彈性頁面組快取儲存與分配至彈性組快取的頁面大小對應的轉譯條目。共享快取無論頁面大小如何皆對未儲存在所述多個彈性頁面組快取中的轉譯條目進行儲存。快取管理器向每一彈性頁面組快取分配頁面大小,管理關於分配至所述多個彈性頁面組快取的頁面大小的快取頁面資訊,並基於快取頁面資訊來控制所述多個彈性頁面組快取及共享快取。
Description
實例性實施例大體而言是有關於半導體積體電路,且更具體而言,是有關於位址轉譯快取及包括所述位址轉譯快取的系統。
[相關申請案的交叉參考]
本申請案主張於2021年12月1日在韓國智慧財產局(Korean Intellectual Property Office,KIPO)提出申請的韓國專利申請案第10-2021-0169763號及於2022年5月25日在KIPO提出申請的韓國專利申請案第10-2022-0063986號的優先權,所述韓國專利申請案的揭露內容全文併入本案供參考。
資料處理系統或計算系統藉由位址轉譯來實行對記憶體裝置的存取,從而將虛擬位址轉譯成記憶體裝置的實體位址。具有各種功能的智慧財產(Intellectual property,IP)(即,功能電路系統或功能塊)可被包括在計算系統中,或者由計算系統實施。一些IP能夠實行對記憶體裝置進行直接存取的功能,並且具有直接存取功能的IP可被稱為直接記憶體存取裝置。直接記憶體存取裝置可在不經過處理器(例如,中央處理單元(central processing unit,CPU))的情況下向記憶體裝置傳送資料及/或自記憶體裝置傳送資料。為防止主機裝置及各種直接記憶體存取裝置的記憶體衝突,記憶體管理單元(memory management unit,MMU)或轉譯代理(translation agent,TA)可管理包括記憶體裝置的虛擬位址與實體位址之間的映射資訊的映射表或頁面表。
記憶體管理單元的主機裝置可包括轉譯後備緩衝器(translation look aside buffer,TLB),以進一步提高位址轉譯的速度及效率。TLB可儲存最近及/或頻繁引用的位址映射資訊。直接記憶體存取裝置中所包括的TLB可被稱為不同於由主機裝置所使用的處理器TLB的位址轉譯快取(address translation cache,ATC)。
一般而言,以頁為單位實行位址轉譯,並且可以各種方式確定頁面大小。利用全相聯快取來實施ATC,以儲存對應於各種頁面大小的映射資訊。然而,當利用全相聯快取來實施ATC時,直接記憶體存取裝置的大小增加,並且位址轉譯的速度降低。
一些實例性實施例可提供能夠高效實行位址轉譯的位址轉譯快取和包括位址轉譯的系統。
根據實例性實施例,位址轉譯快取(ATC)被配置成儲存指示記憶體裝置的虛擬位址與實體位址之間的映射資訊的轉譯條目。所述ATC包括多個彈性頁面組快取、共享快取及快取管理器。每一彈性頁面組快取儲存與分配至彈性組快取的頁面大小對應的轉譯條目。共享快取無論頁面大小如何皆對未儲存在所述多個彈性頁面組快取中的轉譯條目進行儲存。快取管理器向每一彈性頁面組快取分配頁面大小,管理關於分配至所述多個彈性頁面組快取的頁面大小的快取頁面資訊,並基於快取頁面資訊來控制所述多個彈性頁面組快取及共享快取。
根據實例性實施例,一種ATC被配置成儲存指示記憶體裝置的虛擬位址與實體位址之間的映射資訊的轉譯條目。所述ATC包括:多個功能專用快取,專用於多個功能並且利用多個全相聯快取來實施,每一功能專用快取被配置成儲存與相應功能相關的轉譯條目;利用多個集合相聯快取實施的多個彈性頁面組快取,每一彈性頁面組快取被配置成對與分配至彈性組快取的頁面大小對應並且未儲存在所述多個功能專用快取中的轉譯條目進行儲存;利用全相聯快取實施的共享快取,所述共享快取被配置成無論頁面大小如何皆對未儲存在所述多個功能專用快取或所述多個彈性頁面組快取中的轉譯條目進行儲存;以及快取管理器,被配置成向每一彈性頁面組快取分配頁面大小,管理關於分配至所述多個彈性頁面組快取的頁面大小的快取頁面資訊,並基於快取頁面資訊來控制所述多個彈性頁面組快取及共享快取。
根據實例性實施例,一種系統包括:主機記憶體裝置;主機處理器;直接記憶體存取裝置,被配置成實行對主機記憶體存取的直接記憶體存取,直接記憶體存取裝置包括ATC,所述ATC被配置成儲存指示主機處理器的虛擬位址與記憶體裝置的實體位址之間的映射資訊的轉譯條目;以及記憶體管理單元,被配置成管理主機處理器及直接記憶體存取裝置對主機記憶體裝置的存取。所述ATC包括:多個彈性頁面組快取,每一彈性頁面組快取被配置成儲存與分配至彈性組快取的頁面大小對應的轉譯條目;共享快取,被配置成無論頁面大小如何皆對未儲存在所述多個彈性頁面組快取中的轉譯條目進行儲存;以及快取管理器,被配置成向每一彈性頁面組快取分配頁面大小,管理關於分配至所述多個彈性頁面組快取的頁面大小的快取頁面資訊,並基於快取頁面資訊來控制所述多個彈性頁面組快取及共享快取。
根據實例性實施例的位址轉譯快取可藉由向所述多個彈性頁面組快取動態分配頁面大小並基於所分配的頁面大小儲存每一頁面大小的轉譯條目來高效地利用快取記憶體資源並減少位址映射資訊的搜索時間。
下文將參照其中示出了一些實例性實施例的附圖來更全面地闡述各種實例性實施例。在附圖中,相同的編號通篇指代相同的元件。對重複的說明可不再予以贅述。
圖1是示出根據實例性實施例的位址轉譯快取的方塊圖,且圖2是示出根據實例性實施例的操作位址轉譯快取的方法的流程圖。
參照圖1,位址轉譯快取(ATC)100可包括快取管理器CMNG 110、多個彈性頁面組快取FPGC1~FPGCn 120及共享快取SHC 130。ATC 100儲存指示記憶體裝置的虛擬位址與實體位址之間的映射資訊的轉譯條目。
參照圖1及圖2,所述多個彈性頁面組快取120中的每一彈性頁面組快取可儲存與分配至每一彈性頁面組快取的頁面大小對應的轉譯條目(S100)。舉例而言,每一彈性頁面組快取可被指定為儲存具有特定頁面大小的轉譯條目。
共享快取130可無論頁面大小如何皆對未儲存在所述多個彈性頁面組快取120中的轉譯條目進行儲存(S200)。
快取管理器110可向每一彈性頁面組快取分配頁面大小,並管理關於分配至所述多個彈性頁面組快取120的頁面大小的快取頁面資訊CPI(S300)。
快取管理器130可基於快取頁面資訊CPI來控制所述多個彈性頁面組快取120及共享快取130(S400)。
ATC 100的操作可包括條目寫入操作、條目搜索操作及條目無效化操作。
在條目寫入操作中,快取管理器110可在所述多個彈性頁面組快取120中的一者或共享快取130中儲存輸入轉譯條目ITE。自所述多個彈性頁面組快取120中清除的清除轉譯條目ETE可儲存在共享快取130中。將參照圖4闡述條目寫入操作的實例性實施例。
在條目搜索操作中,快取管理器110可判斷快取命中(cache hit)或快取缺失(cache miss),即對應於輸入虛擬位址VA的轉譯條目是否存在於所述多個彈性頁面組快取120或共享快取130中。快取管理器110可在快取命中的情形中激活快取命中訊號CHT,並且提供與輸入虛擬位址VA對應的轉譯條目的實體位址PA。快取管理器110可在快取缺失的情形中對快取命中訊號CHT進行去激活。將參照圖8及圖9闡述條目搜索操作的實例性實施例。
在條目無效化操作中,快取管理器110可在所述多個彈性頁面組快取120及共享快取130中搜索並刪除對應於輸入虛擬位址VA的轉譯條目。將參照圖10來闡述條目無效化操作的實例性實施例。
在一些實例性實施例中,所述多個彈性頁面組快取可利用多個集合相聯快取來實施,並且共享快取可利用全相聯快取來實施。
集合相聯快取可包括多個集合,並且每一集合可包括分別屬於多條路(way)的多條快取線。每一「路」可指分別屬於所述多個集合的一組快取線。僅包括一條路(例如,每集合一條快取線)的集合相聯快取可被稱為直接映射快取。集合相聯快取可基於與虛擬位址VA的位址位元的一部分對應的索引來確定集合,並基於與位址位元的另一部分對應的標籤來確定快取命中。將參照圖5來進一步闡述集合相聯快取。
集合相聯快取包括多個集合使得每一集合可包括一或多條快取線,而全相聯快取包括不對應於任何集合的多條快取線(例如,對於整組快取線而言僅存在一個集合)。因此,全相聯快取不使用索引來確定對應的集合,而是將所有位址位元儲存為標籤。
全相聯快取可高效地利用快取記憶體資源,乃因全相聯快取不指定欲儲存轉譯條目的快取線。然而,由於全相聯快取必須在條目搜索操作中搜索所有的快取線,因此硬體結構可能複雜並且功耗可能增加。
相比之下,在集合相聯快取的情形中,快取記憶體資源的高效利用可能受到限制,並且快取缺失的概率可能增加,乃因集合相聯快取指定了欲儲存轉譯條目的集合。然而,由於集合相聯快取在條目搜索操作中搜索特定的集合,因此集合相聯快取可具有相對簡單的硬體結構,並且減少功耗及搜索時間。
根據實例性實施例,藉由利用集合相聯快取來實施所述多個彈性頁面組快取120並利用全相聯快取來實施共享快取130,ATC 100的效能可藉由快取記憶體資源的高效利用而增強。
圖3是示出根據實例性實施例的位址轉譯快取的實例性快取頁面資訊的圖式。
圖3示出由快取管理器110管理的快取頁面資訊CPI的實例。舉例而言,4千位元組(KB)的頁面大小可被分配至第一彈性頁面組快取FPGC1,8KB的頁面大小可被分配至第二彈性頁面組快取FPGC2,16KB的頁面大小可被分配至第三彈性頁面組快取FPGC3,32KB的頁面大小可被分配至第四彈性頁面組快取FPGC4,64KB的頁面大小可被分配至第五彈性頁面組快取FPGC5,且4KB的頁面大小可被分配至第六彈性頁面組快取FPGC6。第六彈性頁面組快取FPGC7至第n彈性頁面組快取FPGCn可能處於尚未分配頁面大小的未分配狀態NA。舉例而言,同一頁面大小(例如,4KB)可被分配至二或更多個彈性頁面組快取(例如,FPGC1及FPGC6)。當分配了頁面大小的轉譯條目中的所有轉譯條目皆無效時,可取消對頁面大小的分配,並且彈性頁面組快取可返回至未分配狀態NA。
因此,根據實例性實施例的位址轉譯快取100可藉由動態地將頁面大小分配至所述多個彈性頁面組快取120並基於所分配的頁面大小儲存每一頁面大小的轉譯條目(通常被闡述為快取頁面資訊CPI)來高效地利用快取記憶體資源並減少位址映射資訊的搜索時間。
圖4是示出根據實例性實施例的位址轉譯快取的條目寫入操作的實例性實施例的流程圖。
參照圖1及圖4,在空閒狀態S10期間,快取管理器110可接收輸入轉譯條目ITE(S11)。
快取管理器110可判斷對應於輸入轉譯條目ITE的頁面大小是否與分配至所述多個彈性頁面組快取120的頁面大小中的一者相同(S12)。舉例而言,如將在以下參照圖7進行闡述,快取管理器110可基於位址位元來確定對應於輸入轉譯條目ITE的頁面大小。快取管理器110可基於快取頁面資訊CPI來判斷對應於輸入轉譯條目ITE的頁面大小是否對應於所指定的頁面大小。
當快取管理器110接收到與分配至所述多個彈性頁面組快取120的頁面大小中的一者相同的頁面大小對應的輸入轉譯條目ITE時(S12:是),快取管理器110可將輸入轉譯條目ITE儲存在分配有與輸入轉譯條目ITE對應的頁面大小的對應彈性頁面組快取(FPGC)中(S13)。
當存在自所述多個彈性頁面組快取120中清除的清除轉譯條目ETE時(S14:是),快取管理器110可將清除轉譯條目ETE儲存在共享快取SHC中(S15),且然後返回至空閒狀態(S10)。當不存在清除轉譯條目ETE時(S14:否),快取管理器110可返回至空閒狀態(S10)。
當快取管理器110接收到與不同於分配至所述多個彈性頁面組快取120的頁面大小的新頁面大小對應的輸入轉譯條目ITE時(S12:否),快取管理器110可判斷在所述多個彈性頁面組快取120之中是否存在未分配頁面大小的空彈性頁面組快取(S16)。
當存在空彈性頁面組快取時(S16:是),快取管理器110可將對應於輸入轉譯條目ITE的新頁面大小分配至空彈性頁面組快取(S17),並將輸入轉譯條目ITE儲存在分配有新頁面大小的對應彈性頁面組快取中(S18)。
當不存在空彈性頁面組快取時(S16:否),快取管理器110可將輸入轉譯條目ITE儲存在共享快取SHC中,並返回至空閒狀態(S10)。
因此,根據實例性實施例的位址轉譯快取100可藉由動態地將頁面大小分配至所述多個彈性頁面組快取120並基於所分配的頁面大小儲存每一頁面大小的轉譯條目(即,快取頁面資訊CPI)來高效地利用快取記憶體資源並減少位址映射資訊的搜索時間。
快取管理器110及其他實施例中的其他實例性快取管理器可包括被配置成實行在本文中闡述的各種任務的硬體、韌體及軟體。舉例而言,快取管理器110可包括以下組件中的一或多者:至少一個處理器,例如邏輯裝置或中央處理單元(CPU),被配置成執行電腦程式指令以實行在本文中闡述的各種過程及方法;隨機存取記憶體(random access memory,RAM)及唯讀記憶體(read only memory,ROM),被配置成存取及儲存資料及資訊以及電腦程式指令;以及儲存媒體或其中可儲存資料及/或指令的其他合適類型的記憶體(例如(舉例而言),RAM、ROM、可程式化唯讀記憶體(programmable read-only memory,PROM)、可抹除可程式化唯讀記憶體(erasable programmable read-only memory,EPROM)、電可抹除可程式化唯讀記憶體(electrically erasable programmable read-only memory,EEPROM)或其他類型的有形及非暫時性儲存媒體)。此外,快取管理器110可包括與電源及匯流排的連接,所述電源提供適當的交流電流(alternating current,AC)或直流電流(direct current,DC)來為快取管理器110的一或多個組件供電,所述匯流排允許快取管理器110的各種所揭露的組件之間進行通訊。快取管理器110的可控功能可使用例如鍵盤、滑鼠、觸控螢幕等一或多個輸入裝置來設置。
圖5是示出根據實例性實施例的位址轉譯快取中所包括的集合相聯快取的實例性實施例的圖式。
參照圖5,集合相聯快取20可包括快取記憶體50、標籤比較電路41、資料輸出電路MUX 42、更新控制器UCON 43及快取命中確定電路44。
快取記憶體50可包括儲存虛擬位址VA的標籤的標籤記憶體TARR區(例如,標籤記憶體TARR胞元)及儲存映射至虛擬位址VA的實體位址PA的資料記憶體DARR區(例如,資料記憶體DARR胞元)。
圖5示出具有四路的集合相聯快取結構的實例。標籤記憶體TARR及資料記憶體DARR可包括多條路及多個集合,使得可基於虛擬位址VA的索引IDX來選擇每一集合。每一路可包括多條快取線,使得每一快取線可儲存各別轉譯條目。標籤記憶體TARR及資料記憶體DARR的列指示集合,且標籤記憶體TARR及資料記憶體DARR的行指示路。
圖5示出了利用由索引0至m指定的m+1個集合及四條路WY0至WY3實施的4路集合相關快取結構。如圖5所示,一個集合可儲存第一標籤TG0至第四標籤TG3以及分別映射至第一標籤TG0至第四標籤TG3的第一實體位址PA0至第四實體位址PA3。
另外,第一標籤TG0至第四標籤TG3可儲存在標籤記憶體TARR的同一列中。第一標籤資料TG0對應於第一路WY0,第二標籤資料TG1對應於第二路WY1,第三標籤資料TG2對應於第三路WY2,且第四標籤資料TG3對應於第四路WY3。分別對應於第一標籤TG0至第四標籤TG3的第一實體位址PA0至第四實體位址PA3可以與第一標籤TG0至第四標籤TG3相同的方式儲存在資料記憶體DARR中。
集合相聯快取20自外部裝置接收用於位址轉譯的輸入虛擬位址VA。如圖5所示,輸入虛擬位址VA包括標籤TG及索引IDX。索引IDX指示快取記憶體50的列位址。換言之,索引IDX指示快取記憶體50中所包括的多個集合中的一個集合。
標籤比較電路41及快取命中確定電路44可接收用於位址轉譯的輸入虛擬位址VA的標籤TG,並判斷對應於輸入虛擬位址VA的轉譯條目是否儲存在快取記憶體50中。換言之,標籤比較電路41及快取命中確定電路44可判斷是否存在快取命中或快取缺失。
標籤比較電路41可包括比較器COM0至COM3,以將儲存在與輸入虛擬位址VA的索引IDX對應的集合中並自所述集合中讀取的標籤TG0至TG3中的每一者與輸入虛擬位址VA的標籤TG進行比較。當第一標籤至第四標籤中的對應一者與標籤TG一致時,比較器COM0至COM3可分別激活路命中訊號(way hit signal)HT0至HT3。當路命中訊號HT0至HT3中的至少一者被激活時,快取命中確定電路44可激活快取命中訊號CHT以指示快取命中。舉例而言,快取命中指示外部請求的映射資訊存在於快取記憶體50中。
當快取命中訊號CHT被激活以指示快取命中時,可輸出對應於輸入虛擬位址VA的標籤TG的實體位址PA。標籤比較電路41將路命中訊號HT0至HT3輸出至資料輸出電路42,並且資料輸出電路42可選擇實體位址PA0至PA3中對應於激活的路命中訊號的一者,以輸出所選擇的實體位址PA。相比之下,在快取缺失的情形中,快取命中確定電路44可對快取命中訊號CHT進行去激活以指示快取缺失。在快取缺失的情形中,如以下將參照圖14及圖15進行闡述,ATC 100可向記憶體管理單元請求對應於輸入虛擬位址VA的實體位址PA。
若所有的快取線當前皆儲存資訊,則先前儲存在所述快取線中的一者中的資訊可被清除,以便為新資訊騰出空間。基於快取替換策略來選擇進行清除的快取線。舉例而言,快取替換策略可基於最近最少使用(least recently used,LRU)策略或再次引用間隔預測(re-reference interval prediction,RRIP)策略。
更新控制器43可自一條快取線中刪除對應於清除轉譯條目ETE的快取資料(此可藉由快取替換策略來確定),並且將所接收到的輸入轉譯條目ITE儲存在已經儲存有清除轉譯條目ETE的快取線中。
圖6是示出根據實例性實施例的位址轉譯快取的快取線中所儲存的實例性轉譯條目的圖式。
參照圖6,轉譯條目TE可包括虛擬位址的標籤TG及映射至標籤TG的實體位址PA。此外,轉譯條目TE可更包括有效度字段V、功能辨識符PFID及其他資訊OINF。有效度字段V可指示轉譯條目TE的有效性或無效性,且功能辨識符PFID可指示多個功能之中與轉譯條目TE相關的功能。其他資訊OINF可包括用於確定清除轉譯條目ETE的LRU字段、指示與轉譯條目TE相關的未完成指令(outstanding instruction)的數目的鎖計數字段(lock count field)等等。
圖7是示出根據頁面大小設置位址位元的實例的圖式。
圖7示出根據快速周邊組件互連(peripheral component interconnect express,PCIe)標準使用s字段(s-field)設置頁面大小的實例。在圖7中,「X」指示由實際位址確定的位元值0或1。
舉例而言,最小頁面大小可為4KB,且在此情形中,可忽略位元0至10。位元11對應於s字段。s字段的值0可指示應用了最小頁面大小,且s字段的值1可指示應用了大於最小頁面大小的頁面大小。位元12的值0可指示應用了8KB的頁面大小,而位元12的值1可指示應用了大於8KB的頁面大小。如此一來,可藉由確定自s字段開始具有值0的第一位元來確定位址的頁面大小。圖7示出對應於4KB、8KB、2MB、1GB及4GB頁面大小的位址位元。較高的位元32至63可用於指示大於4GB的頁面大小。
圖8及圖9是示出根據實例性實施例的位址轉譯快取的條目搜索操作的實例性實施例的圖式。
為便於說明,圖8示出對應於多個彈性頁面組快取及快取管理器CMNG的第一集合相聯快取FPGC1至第五集合相聯快取FPGC4,且在圖8中省略了上述共享快取SHC。
參照圖8,可將4KB的頁面大小分配至第一集合相聯快取FPGC1,可將8KB的頁面大小分配至第二集合相聯快取FPGC2,可將16KB的頁面大小分配至第三集合相聯快取FPGC3,可將32KB的頁面大小分配至第四集合相聯快取FPGC4,且可將64KB的頁面大小分配至第五集合相聯快取FPGC5。實例性實施例不限於圖8所示的頁面大小的設置,並且快取管理器CMNG可以各種方式及/或動態地分配頁面大小。所分配的頁面大小可被儲存作為快取頁面資訊CPI。
在一些實例性實施例中,第一集合相聯快取FPGC1至第五集合相聯快取FPGC5可包括相同數目的集合。舉例而言,如圖8所示,每一集合相聯快取可包括四個集合SET0至SET3,且在此情形中,虛擬位址VA的二個位元可對應於索引IDX。
當快取管理器CMNG搜索映射至輸入虛擬位址VA的實體位址PA時,快取管理器CMNG可搜索對應於所述多個彈性頁面組快取的所有第一集合相聯快取FPGC1至第五集合相聯快取FPGC5以及對應於共享快取SHC的全相聯快取(圖8中未示出)。
圖9示出如以上參照圖7所述的根據頁面大小來設置位址位元的實例。
參照圖8及圖9,快取管理器CMNG可基於快取頁面資訊CPI自輸入虛擬位址VA提取與分配至第一集合相聯快取FPGC1至第五集合相聯快取FPGC5的頁面大小4KB、8KB、16KB、32KB及64KB對應的第一標籤TG1至第五標籤TG5以及第一索引IDX1至第五索引IDX5,並將標籤及索引分別提供至對應的集合相聯快取。儘管未示出,但可將輸入虛擬位址VA提供至利用全相聯快取實施的共享快取SHC。
如圖9所示,可依據頁面大小而改變標籤及索引。在頁面大小為4KB的情形中,第一索引IDX1可對應於位址位元B12及B13,且第一標籤TG1可對應於位址位元B14至B31。在頁面大小為8KB的情形中,第二索引IDX2可對應於位址位元B13及B14,且第二標籤TG2可對應於位址位元B15至B31。在頁面大小為16KB的情形中,第三索引IDX3可對應於位址位元B14及B15,且第三標籤TG3可對應於位址位元B16至B31。在頁面大小為32KB的情形中,第四索引IDX4可對應於位址位元B15及B16,且第四標籤TG4可對應於位址位元B17至B31。在頁面大小為64KB的情形中,第五索引IDX5可對應於位址位元B16及B17,且第五標籤TG5可對應於位址位元B18至B31。
因此,當第一集合相聯快取FPGC1至第五集合相聯快取FPGC5包括相同數目的集合SET0至SET3時,儲存在每一集合相聯快取中的每一標籤的位元數目可隨著分配至每一集合相聯快取的頁面大小的增加而減少。
在包括位址轉譯快取的裝置的態樣中,如以下將參照圖14及圖15進行闡述,由記憶體管理單元管理的頁面大小可在裝置接收到轉譯響應之後確定。頁面大小可根據功能及/或轉譯響應而變化,且因此可不預先將特定的頁面大小分配至集合相聯快取。
此外,索引在位址位元中的位置可依據頁面大小而變化,並且採用位址位元中的特定位置作為索引的傳統位址轉譯快取可能不使用集合相聯快取來代替全相聯快取。
如參照圖8及圖9所述,根據實例性實施例,可將頁面大小動態分配至每一集合相聯快取,並且可基於快取頁面資訊CPI自輸入虛擬位址VA提取對應於所分配的頁面大小的標籤及索引,並將其提供至每一集合相聯快取。
圖10是示出根據實例性實施例的位址轉譯快取的條目無效化操作的實例性實施例的流程圖。
參照圖1及圖10,包括ATC 100的處於空閒狀態(S20)的裝置可自例如主機處理器等外部裝置接收無效化請求IREQ(S21)。無效化請求IREQ可包括指示欲被無效的轉譯條目的輸入虛擬位址VA。
必須搜索所有的轉譯條目,以使與由無效化請求IREQ所指示的無效化範圍交疊的轉譯條目無效。因此,快取管理器CMNG可將輸入虛擬位址VA提供至所有的共享快取SHC及彈性頁面組快取FPGC(S22)。如上所述,彈性頁面組快取FPGC可利用集合相聯快取來實施。在此情形中,快取管理器CMNG可基於快取頁面資訊CPI分別向彈性頁面組快取提供對應於所分配的頁面大小的標籤及索引。快取管理器CMNG可將輸入虛擬位址VA提供至利用全相聯快取實施的共享快取SHC。
因此,當快取管理器CMNG使對應於輸入虛擬位址VA的轉譯條目無效時,快取管理器CMNG可搜索所有所述多個彈性頁面組快取FPGC及共享快取SHC。
所述多個彈性頁面組快取FPGC中的每一者及共享快取SHC可刪除對應於輸入虛擬位址VA的轉譯條目TE(S23)。舉例而言,可藉由改變轉譯條目TE中所包括的有效度字段V的值來實行轉譯條目TE的刪除或無效化,如以上參照圖6所述。
圖11是示出根據實例性實施例的包括位址轉譯快取的系統的互連架構的實例性實施例的方塊圖。
參照圖11,示出了由互連一組組件的點對點鏈路構成的設計的實例性實施例。系統300包括耦合至控制器集線器315的主機處理器HPRC 305、主機記憶體裝置(或系統記憶體)HMEM 310及記憶體管理單元MMU 330。主機處理器305包括任何處理元件,例如微處理器、主機處理器、嵌入式處理器、共處理器或其他處理器。主機處理器305經由前端匯流排(front-side bus,FSB)306耦合至控制器集線器315。在一個實例性實施例中,FSB 306是串行點對點互連。在另一實例性實施例中,FSB 306包括符合不同互連標準的串行差分互連架構(serial, differential interconnect architecture)。
系統記憶體310包括任何記憶體裝置,例如隨機存取記憶體(random access memory,RAM)、非揮發性(non-volatile,NV)記憶體、固態記憶體或系統300中的裝置可存取的其他記憶體。系統記憶體310經由記憶體介面316耦合至控制器集線器315。記憶體介面的實例包括雙倍資料速率(double-data rate,DDR)記憶體介面、雙通道DDR記憶體介面及動態RAM(dynamic RAM,DRAM)記憶體介面。
在一個實例性實施例中,控制器集線器315是快速周邊組件互連(PCIe或PCIE)互連層級中的根集線器、根複合體(root complex)或根控制器。控制器集線器315的實例包括晶片組、記憶體控制器集線器(memory controller hub,MCH)、北橋(northbridge)、互連控制器集線器(interconnect controller hub,ICH)、南橋(southbridge)及根控制器/集線器。術語晶片組常常是指兩個實體上分離的控制器集線器,即耦合至互連控制器集線器(ICH)的記憶體控制器集線器(MCH)。應注意,當前的系統常常包括與主機處理器305整合的MCH,而控制器集線器315用於以與下文所述類似的方式與輸入/輸出(input/output,I/O)裝置通訊。在一些實例性實施例中,同級間路由(peer-to-peer routing)視需要藉由根複合體或控制器集線器315來支援。
此處,控制器集線器315經由串行鏈路319耦合至交換機/橋320。輸入/輸出模組317及321(亦可被稱為介面/埠317及321)包括/實施分層協定堆疊,以提供控制器集線器315與交換機320之間的通訊。在一個實例性實施例中,多個裝置能夠耦合至交換機320。
交換機/橋320將來自裝置325的封包/訊息向上游(即,沿著朝向根複合體的層級向上)路由至控制器集線器315,並且自處理器305或系統記憶體310向下游(即,沿著遠離根控制器的層級向下)路由至裝置325。在一個實例性實施例中,交換機320被稱為多個虛擬PCI至PCI橋裝置的邏輯組合件。裝置325包括欲耦合至電子系統的任何內部或外部裝置或組件,例如I/O裝置、網路介面控制器(Network Interface Controller,NIC)、插入卡(add-in card)、音訊處理器、網路處理器、硬碟驅動器、儲存裝置、光碟/數位光碟(CD/DVD)ROM、監視器、列印機、滑鼠、鍵盤、路由器、可攜式儲存裝置、火線裝置、通用串行匯流排(Universal Serial Bus,USB)裝置、掃描儀及其他輸入/輸出裝置。在PCIe術語中,此種裝置常常被稱為端點。儘管未具體示出,但裝置325可包括PCIe至PCI/PCI-X橋,以支援舊有或其他版本的PCI裝置。PCIe的端點裝置常常被分類為舊有、PCIe或根複合體整合端點。
記憶體管理單元330亦經由串行鏈路332耦合至控制器集線器315。I/O模組331及318用於實施分層協定堆疊,以在記憶體管理單元330與控制器集線器315之間進行通訊。
記憶體管理單元330可包括被配置成儲存最近及/或頻繁引用的位址映射資訊的轉譯後備緩衝器(TLB)。根據實例性實施例,裝置325可具有直接記憶體存取功能,並且包括位址轉譯快取ATC。
圖12是示出根據實例性實施例的包括位址轉譯快取的系統的方塊圖。
參照圖12,系統400可包括主機處理器HPRC 410(例如,CPU)、直接記憶體存取裝置DMAIP 420、記憶體管理單元(或記憶體管理電路)430及主機記憶體裝置440。
直接記憶體存取裝置420及記憶體管理單元430可藉由由主機處理器410產生的控制訊號CTRLD及CTRLM來控制。主機記憶體裝置440可儲存資料及程式代碼。軟體程式代碼可被加載至主機記憶體裝置440中,且所加載的軟體程式代碼可由主機處理器410執行,並且主機記憶體裝置440可充當系統400的工作記憶體。
主機記憶體裝置440可利用例如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(static random access memory,SRAM)等揮發性記憶體來實施,但實例性實施例並非僅限於此。主機記憶體裝置440可利用另一種類型的揮發性記憶體或非揮發性記憶體來實施。
直接記憶體存取裝置420可能能夠實行對主機記憶體裝置440的直接記憶體存取功能。舉例而言,直接記憶體存取裝置420可為相機、圖形處理單元(graphics processing unit,GPU)、神經處理單元(neural processing unit,NPU)、快速周邊組件互連(PCIe)裝置、通用快閃儲存(universal flash storage,UFS)裝置等。為便於說明及闡述,圖12示出一種直接記憶體存取裝置,並且實例性實施例並非僅限於此。系統400可包括具有各種功能的多個智慧財產(即,功能塊或功能電路),並且二或更多個智慧財產可能能夠實行直接記憶體存取的功能。
直接記憶體存取指示將資料直接自一個記憶體裝置傳送至另一記憶體裝置或者直接在記憶體裝置與輸入-輸出裝置之間傳送資料而不經過主機處理器410的方案,此可由系統400的內部匯流排來支援。
直接記憶體存取的模式可包括突發模式(burst mode)及週期挪用模式(cycle steal mode),在突發模式中,直接記憶體存取裝置420自主機處理器410控制內部匯流排以一次傳送全部資料,在週期挪用模式中,直接記憶體存取裝置420存取主機記憶體裝置440,而主機處理器410不存取主機記憶體裝置440。直接記憶體存取是在無主機處理器410干預的情況下實行的。因此,系統400的效能可得到增強,乃因主機處理器410可在實行直接記憶體存取的同時進行操作。
記憶體管理單元430可管理主機處理器410對主機記憶體裝置440的核心存取以及直接記憶體存取裝置420對主機記憶體裝置440的直接存取。核心存取及直接存取可包括自主機記憶體裝置440讀取資料的讀取操作及將資料儲存至主機記憶體裝置440的寫入操作。可基於由主機處理器410發出的核心存取請求CREQ來實行核心存取,並且可基於由直接記憶體存取裝置420發出的直接存取請求DREQ來實行直接存取。
核心存取請求CREQ及直接存取請求DREQ中的每一者可包括用於讀取操作或寫入操作的虛擬位址VA。記憶體管理單元430可實行位址轉譯以提供映射至虛擬位址VA的實體位址PA。虛擬位址VA指示作業系統的虛擬位址空間中的位置,而實體位址PA指示主機記憶體裝置440的記憶體區的實際實體位置。以下將參照圖23及圖24闡述位址轉譯的實例性實施例。
記憶體管理單元430可包括被配置成儲存最近及/或頻繁引用的位址映射資訊的轉譯後備緩衝器(TLB)。根據實例性實施例,直接記憶體存取裝置420可包括位址轉譯快取ATC。
圖13至圖16是示出根據實例性實施例的包括位址轉譯快取的系統的操作的圖式。
在一些實例性實施例中,圖13至圖16的操作可根據由PCIe標準定義的位址轉譯服務(address translation service,ATS)及頁面請求介面(page request interface,PRI)來實行。
參照圖13,直接記憶體存取裝置DMAIP中的裝置處理器DPRC可將虛擬位址VA傳送至ATC(S31)。當對應於虛擬位址VA的轉譯條目存在時(即,在快取命中(S32)的情形中),ATC可將映射至虛擬位址VA的實體位址PA提供至裝置處理器DPRC(S33)。裝置處理器DPRC可將包括實體位址PA的直接存取請求DREQ傳送至主機記憶體裝置HMEM(S34)。
參照圖14,裝置處理器DPRC可將虛擬位址VA傳送至ATC(S41)。當不存在對應於虛擬位址VA的轉譯條目時(即,在快取缺失(S42)的情形中),ATC可將轉譯請求TREQ傳送至記憶體管理單元MMU(S43)。
當映射表(或頁面表)中存在對應於虛擬位址VA的轉譯條目時(即,在映射命中(S44)的情形中),記憶體管理單元MMU可將包括指示轉譯成功的資訊SUCCESS及映射至虛擬位址VA的實體位址PA的轉譯響應TRES傳送至ATC(S45)。ATC可將實體位址PA提供至裝置處理器DPRC(S46)。此外,可將包括虛擬位址VA與實體位址PA之間的映射的新轉譯條目儲存在ATC中(S47)。裝置處理器DPRC可將包括實體位址PA的直接存取請求DREQ傳送至主機記憶體裝置HMEM(S48)。
參照圖15,裝置處理器DPRC可將虛擬位址VA傳送至ATC(S51)。當不存在對應於虛擬位址VA的轉譯條目時(即,在快取缺失(S52)的情形中),ATC可將轉譯請求TREQ傳送至記憶體管理單元MMU(S53)。
當映射表中不存在對應於虛擬位址VA的轉譯條目時(即,在映射缺失(S54)的情形中),記憶體管理單元MMU可將包括指示轉譯失敗的資訊FAIL的轉譯響應TRES傳送至ATC(S55)。
ATC可將包括虛擬位址VA的頁面請求PREQ傳送至記憶體管理單元MMU(S56)。記憶體管理單元MMU可藉由將新實體位址PA分配至虛擬位址VA來產生新轉譯條目(S57),並將包括指示映射成功的資訊SUCCESS的頁面響應PRES傳送至ATC(S58)。
ATC可將包括虛擬位址VA的轉譯請求TREQ傳送至記憶體管理單元MMU(S59)。當映射表中存在對應於虛擬位址VA的轉譯條目時(即,在映射成功(S60)的情形中),記憶體管理單元MMU可將包括指示轉譯成功的資訊SUCCESS及映射至虛擬位址VA的實體位址PA的轉譯響應TRES傳送至ATC(S61)。
ATC可將實體位址PA提供至裝置處理器DPRC(S62)。此外,可將包括虛擬位址VA與實體位址PA之間的映射的新轉譯條目儲存在ATC中(S43)。裝置處理器DPRC可將包括實體位址PA的直接存取請求DREQ傳送至主機記憶體裝置HMEM(S64)。
參照圖16,當記憶體管理單元MMU使映射表中的轉譯條目無效或刪除所述轉譯條目時(S71),記憶體管理單元MMU可將包括與欲被無效化的轉譯條目對應的虛擬位址VA的無效化請求IREQ傳送至直接記憶體存取裝置DMAIP中的ATC(S72)。
ATC可將對應於無效化請求IREQ中的虛擬位址VA的轉譯條目刪除(S73)。在轉譯條目的刪除完成之後,ATC可將無效化響應IRES傳送至記憶體管理單元MMU(S74)。如上所述,當ATC使轉譯條目無效時,ATC可搜索所有的共享快取SHC及彈性頁面組快取FPGC。
圖17是示出根據實例性實施例在包括位址轉譯快取的系統中傳送的封包的實例的圖式。
圖6示出由PCIe架構的事務層產生及管理的事務層封包(transaction layer packet,TLP)的格式。
事務由使用封包進行通訊的請求及完成(或響應)組成。如圖17所示,TLP可包括被分配至多個位元組(位元組0至k+3)的一或多個可選的TLP前綴(Prefixes)、TLP標頭(header)、資料有效載荷(data payload)及可選的TLP摘要(Digest)。
上述轉譯請求TREQ、轉譯響應TRES、頁面請求PREQ、頁面響應PRES、無效化請求IREQ及無效化響應IRES可對應於如圖17所示的TLP。各種資訊可被包括在TLP標頭中,並且對應於未轉譯位址的虛擬位址VA或對應於已轉譯位址的實體位址PA可被包括在資料有效載荷中。
圖18是示出根據實例性實施例的包括位址轉譯快取的虛擬化系統的方塊圖。
參照圖18,虛擬化系統600可包括主機處理器HPRC 610(例如,CPU)、直接記憶體存取裝置DMAIP 620、記憶體管理單元(或記憶體管理電路)630及主機記憶體裝置640。
記憶體管理單元630可包括被配置成儲存最近及/或頻繁引用的位址映射資訊的轉譯後備緩衝器(TLB)。根據實例性實施例,直接記憶體存取裝置620可包括位址轉譯快取ATC。圖18的虛擬化系統600類似於圖12的系統400,並且對其可不再予以贅述。
主機處理器610可提供虛擬化環境。管理程式HPVS及多個客作業系統GOS1及GOS2可在虛擬化環境上運行。為便於說明及闡述,圖18示出二個客作業系統,即第一客作業系統GOS1及第二客作業系統GOS2,且實例性實施例並非僅限於此。可根據虛擬化環境以各種方式確定由管理程式HPVS控制的客作業系統的數目。
為便於說明,圖18示出了管理程式HPVS及所述多個客作業系統GOS1及GOS2被包括在主機處理器610中。管理程式HPVS及所述多個客作業系統GOS1及GOS2可作為軟體程式代碼被加載至主機記憶體裝置640中,並且可由主機處理器610執行。
所述多個客作業系統GOS1及GOS2可在虛擬化環境的多個虛擬機上彼此獨立地運行,並且管理程式HPVS可控制虛擬化環境中的所述多個虛擬機。以下將參照圖19闡述虛擬化環境。
第一客作業系統GOS1可包括第一裝置驅動器DRV1,並且第一客作業系統GOS1可藉由第一裝置驅動器DRV1控制直接記憶體存取裝置620。第一裝置驅動器DRV1可產生控制訊號CTRLD1來控制直接記憶體存取裝置620。
第二客作業系統GOS2可包括第二裝置驅動器DRV2,並且第二客作業系統GOS2可藉由第二裝置驅動器DRV2控制直接記憶體存取裝置620。第二裝置驅動器DRV2可產生控制訊號CTRLD2來控制直接記憶體存取裝置620。
圖19是示出根據實例性實施例的虛擬化系統的方塊圖。
參照圖19,虛擬化系統500可包括系統硬體510及在由系統硬體510提供的虛擬化環境上運行的軟體。所述軟體可包括管理程式520及多個虛擬機VM1 530、VM2 540及VM3 550。為便於說明,圖19示出三個虛擬機530、540及550,並且可以各種方式確定安裝在管理程式520上的虛擬機的數目。
系統硬體510可包括中央處理單元CPU、記憶體裝置MEM、儲存裝置STR、記憶體管理電路MMC、一或多個智慧財產IP。中央處理單元CPU可為單個處理器或者包括多個處理器核心。當中央處理單元CPU包括多個處理器核心時,處理器核心中的一者可對應於圖18中提供虛擬化環境的處理器610。
虛擬機530、540及550可具有各種配置來實行各自的功能。在下文中,闡述一個虛擬機530作為實例。如圖3所示,虛擬機530可包括虛擬硬體、客作業系統GOS1及應用APP。
虛擬硬體可對應於在虛擬機530中被模擬為軟體的實體組件。換言之,虛擬化系統500的相應實體組件可被虛擬化為虛擬硬體。虛擬硬體可包括對系統硬體510中的全部實體組件之中被分配至虛擬機530的實體組件進行模擬的虛擬組件。舉例而言,虛擬硬體可包括模擬中央處理單元CPU的虛擬處理器、模擬記憶體裝置MEM的虛擬記憶體裝置、模擬IP的虛擬IP等。
舉例而言,客作業系統GOS1可包括虛擬記憶體管理單元vGMMU、裝置驅動器GDRV、狀態監視器SMON等。
虛擬記憶體管理單元vGMMU可將客作業系統GOS1的虛擬位址空間分配至在客作業系統GOS1上運行的應用APP。虛擬記憶體管理單元vGMMU可管理虛擬位址空間中的虛擬位址與虛擬硬體中所包括的虛擬記憶體裝置的中間實體位址之間的映射。
裝置驅動器GDRV可經由虛擬硬體中所包括的虛擬IP來控制系統硬體510中所包括的IP。
狀態監視器SMON可藉由監視虛擬機530及/或客作業系統GOS1來提供狀態資訊。舉例而言,當虛擬機530正常運作時,狀態監視器SMON可週期性地提供狀態資訊。在此情形中,當在預定的時間間隔內未提供狀態資訊時,管理程式520可確定重啟客作業系統GOS1。
管理程式520可產生所述多個虛擬機530、540及550,並對所述多個虛擬機530、540及550進行排程及管理。管理程式520可提供所述多個虛擬機530、540及550與系統硬體510之間的介面,並且管理與所述多個虛擬機530、540及550相關聯的指令的執行及資料傳送。管理程式520可被稱為虛擬機監視器或虛擬機管理器。
舉例而言,管理程式520可包括中斷處置器INTHD、虛擬記憶體管理單元vHMMU、裝置驅動器HDRV、裝置模擬器DEML等。
虛擬記憶體管理單元vHMMU可將記憶體裝置MEM的多個客記憶體區(guest memory region)分配至所述多個虛擬機530、540及550或所述多個客作業系統。虛擬記憶體管理單元vHMMU可管理所述多個虛擬機530、540及550中的虛擬記憶體裝置的中間實體位址與記憶體裝置MEM的實體位址之間的映射。
裝置驅動器HDRV可直接控制系統硬體510中所包括的IP。系統硬體510中的每一IP可由客作業系統GOS1中所包括的裝置驅動器GDRV及/或管理程式520中所包括的裝置驅動器HDRV來控制。
中斷處置器INTHD可基於來自虛擬機530、540及550的資訊及/或來自系統硬體510的資訊來控制虛擬化系統500的異常操作。舉例而言,中斷處置器INTHD可確定分別包括在虛擬機530、540及550中的客作業系統的重啟。
裝置模擬器DEML可將實體組件分別分配至虛擬機530、540及550,並藉由模擬所分配的實體組件來建立及管理虛擬硬體。
圖20、圖21及圖22是示出根據實例性實施例的虛擬化系統的虛擬化環境的分級結構的實例性實施例的圖式。
參照圖20、圖21及圖22,虛擬化環境可包括多個客作業系統GOS1、GOS2及GOS3以及在所述多個客作業系統GOS1、GOS2及GOS3上運行的應用。舉例而言,應用APP11及APP12可在第一客作業系統GOS1上運行,應用APP21及APP22可在第二客作業系統GOS2上運行,且應用APP31及APP32可在第三客作業系統GOS3上運行。可以各種方式確定客作業系統的數目及在每一客作業系統上運行的應用的數目。
管理程式HPVS可主要分為第一類型及第二類型。圖20示出第一類型的管理程式HPVS,且圖21及圖22示出第二類型的管理程式HPVS。第一類型的管理程式HPVS可被稱為獨立式管理程式,而第二類型的管理程式HPVS可被稱為託管式管理程式。代表性的開源管理程式包括第一類型的Xen及第二類型的KVM。
參照圖20,第一類型的管理程式HPVS可在系統硬體SYSHW上運行,並且具有對系統硬體SYSHW的完全控制。在此情形中,主機作業系統不存在於虛擬化分級結構中,並且客作業系統GOS1、GOS2及GOS3中的一者可實行主機作業系統的功能。應用可在第一類型的管理程式HPVS上運行。
第二類型的管理程式HPVS可如圖21所示在主機作業系統HOS上運行,或者可如圖22所示包括在主機作業系統HOS中。在此情形中,主機作業系統HOS具有對系統硬體SYSHW的完全控制。主機作業系統HOS可在系統硬體SYSHW上運行,並且應用可在主機作業系統HOS上運行。
圖23及圖24是示出根據實例性實施例的虛擬化系統的兩階段位址轉譯的圖式。
參照圖23及圖24,兩階段位址轉譯可包括將所述多個客作業系統的虛擬位址VA轉變成虛擬機中虛擬記憶體裝置的中間實體位址IPA的第一階段位址轉譯、以及將中間位址IPA轉變成記憶體裝置的實體位址PA的第二階段位址轉譯。
虛擬位址VA指示虛擬位址空間SVA中的位置,中間實體位址IPA指示中間位址空間SIPA中的位置,並且實體位址PA指示記憶體裝置的儲存區的實際實體位置。
如參照圖19所述,客作業系統GOS1及GOS2中的每一者可包括虛擬記憶體管理單元vGMMU。虛擬記憶體管理單元vGMMU可管理分別和客作業系統GOS1及GOS2對應的客虛擬位址空間(guest virtual address space)SVA1及SVA2的虛擬位址VA與分別和客作業系統GOS1及GOS2對應的客中間實體位址空間(guest intermediate physical address space)SIPA1及SIPA2的中間實體位址IPA之間的映射。
由虛擬記憶體管理單元vGMMU管理的映射資訊可儲存在第一階段轉譯表TTAB1中,並且可參照第一階段轉譯表TTAB1來存取記憶體裝置。
為便於說明,圖23示出客虛擬位址空間SVA1與SVA2在空間上分離,並且客中間實體位址空間SIPA1與SIPA2在空間上分離。由於客作業系統GOS1及GOS2彼此獨立地運行,因此可不考慮位址空間的重疊。
此外,如參照圖19所述,管理程式HPVS可包括虛擬記憶體管理單元vHMMU。虛擬記憶體管理單元vHMMU可將記憶體裝置的客記憶體區MR1及MR2分別分配至客作業系統GOS1及GOS2。客記憶體區MR1及MR2必須被分配為在空間上彼此分離。
第一客作業系統GOS1可僅存取第一客記憶體區MR1,且第二客作業系統GOS2可僅存取第二客記憶體區MR2。舉例而言,第一客作業系統GOS1無法存取第二客記憶體區MR2,並且第二客作業系統GOS2無法存取第一客記憶體區MR1。因此,管理程式HPVS可提供空間隔離,以防止所述多個客作業系統GOS1及GOS2之間的記憶體崩潰(memory crash)。
虛擬記憶體管理單元vHMMU可管理客中間實體位址空間SIPA1及SIPA2的中間實體位址IPA與所分配的客記憶體區MR1及MR2的實體位址PA之間的映射。
由虛擬記憶體管理單元vHMMU管理的映射資訊可儲存在第二階段轉譯表TTAB2中,並且可參照第二階段轉譯表TTAB2來存取記憶體裝置。
一般而言,管理程式HPVS可藉由監視所述多個客作業系統GOS1及GOS2的記憶體使用狀態來適應性地分配客記憶體區。
參照圖24,可將包括位址映射資訊的第一階段轉譯表TTAB1及第二階段轉譯表TTAB2儲存在記憶體裝置中。在存取操作期間,可參照儲存在記憶體裝置中的第一階段轉譯表TTAB1及第二階段轉譯表TTAB2來進行位址轉譯。
為提高位址轉譯的速度及效率,虛擬化系統可包括如圖24所示被實施為硬體的記憶體管理單元MMU1及MMU2。記憶體管理單元MMU1及MMU2可包括在圖18中的記憶體管理電路630中。
第一記憶體管理單元MMU1可基於第一階段轉譯表TTAB1的位址映射資訊來實行第一階段位址轉譯,以將針對記憶體裝置的存取操作的虛擬位址VA轉變為中間實體位址IPA。
第二記憶體管理單元MMU2可基於第二階段轉譯表TTAB2的位址映射資訊來實行第二階段位址轉譯,以將自第一記憶體管理單元MMU1傳送的中間實體位址IPA轉變為記憶體裝置的實體位址PA。
第一記憶體管理單元MMU1及/或第二記憶體管理單元MMU2可包括轉譯後備緩衝器(TLB),以進一步提高位址轉譯的速度及效率。TLB可儲存最近及/或頻繁引用的位址映射資訊。
圖25是示出根據實例性實施例的位址轉譯快取的方塊圖。
參照圖25,ATC 700可包括快取管理器CMNG 710、多個彈性頁面組快取FPGC1至FPGCn 720、共享快取SHC 730及多個功能專用快取PFDC1至PFDCm 740。ATC 700儲存指示記憶體裝置的虛擬位址與實體位址之間的映射資訊的轉譯條目。
與圖1的ATC 100相比,圖25的ATC 700更包括多個功能專用快取740。在下文中,省略了與圖1重複的闡述,並且闡述了與所述多個功能專用快取740相關聯的差異。
所述多個功能專用快取PFDC1至PFDCm可專用於多個功能PF1至PFm,使得每一功能專用快取可儲存與每一功能相關的轉譯條目。
在一些實例性實施例中,所述多個功能專用快取PFDC1至PFDCm可利用多個全相聯快取來實施。舉例而言,所述多個功能專用快取PFDC1至PFDCm可儲存分別與功能PF1至PFm相關聯的轉譯條目,而無論頁面大小如何。
在一些實例性實施例中,所述多個功能PF1至PFm可為根據快速周邊組件互連(PCIe)標準的功能。所述多個功能PF1至PFm可分別對應於如上所述的所述多個客作業系統。位址、請求、響應及轉譯條目可使用如以上參照圖6闡述的功能辨識符來彼此區分。
所述多個功能專用快取PFDC1至PFDCm可對應於較低級別的快取組CG_L1,且所述多個彈性頁面組快取FPGC1至FPGCn及共享快取SHC可對應於較高級別的快取組CG_L2。
當快取管理器710實行條目搜索操作以搜索映射至輸入虛擬位址的實體位址時,快取管理器710可搜索與輸入虛擬位址中所包括的功能辨識符對應的功能專用快取。當對應於功能辨識符的功能專用快取中不存在對應於輸入虛擬位址的轉譯條目時,快取管理器710可搜索所有所述多個彈性頁面組快取FPGC1至FPGCn及共享快取SHC。
當快取管理器710實行條目無效化操作以使對應於輸入虛擬位址的轉譯條目無效時,快取管理器710可搜索所有所述多個功能專用快取PFDC1至PFDCm、所述多個彈性頁面組快取FPGC1至FPGCn及共享快取SHC。
圖26是示出根據實例性實施例的位址轉譯快取的條目寫入操作的實例性實施例的流程圖。
參照圖25及圖26,處於空閒狀態S80的快取管理器CMNG 710可接收輸入轉譯條目ITE(S81)。快取管理器710可將輸入轉譯條目ITE儲存在較低級別的快取組CG_L1中(S82)。舉例而言,快取管理器710可將輸入轉譯條目ITE儲存在與輸入轉譯條目ITE中所包括的功能辨識符PFID對應的功能專用快取中。
當存在自功能專用快取清除的清除轉譯條目ETE時(S83:是),快取管理器710可將清除轉譯條目ETE儲存在較高級別的快取組CG_L2中(S84),並返回至空閒狀態(S80)。在此情形中,根據參照圖4所述的方法,快取管理器710可將清除轉譯條目ETE儲存在所述多個彈性頁面組快取FPGC1至FPGCn或共享快取SHC中。當不存在清除轉譯條目ETE時(S83:否),快取管理器710可返回至空閒狀態(S80)。
圖27是示出根據實例性實施例的包括位址轉譯快取的裝置的圖式。
參照圖27,裝置800可為根據PCIe標準的PCIe裝置。PCIe裝置可經由PCIe埠820接收訊號,並且經由內部路由810將所接收的訊號分別傳送至多個功能PF1、PF2及PF3。內部路由810可基於每一所接收的訊號中所包括的功能辨識符PFID來路由每一所接收的訊號。
所述多個功能PF1、PF2及PF3中的每一者可包括多個功能專用快取PFDC1、PFDC2及PFDC3中的每一者以及多個實體資源PRSC1、PRSC2及PRSC3中的每一者。如上所述,所述多個功能專用快取PFDC1、PFDC2及PFDC3可對應於較低級別的快取組CG_L1。PCIe裝置800可更包括快取管理器CMNG及較高級別的快取組CL_L2。如上所述,較高級別的快取組CG_L2可包括多個彈性頁面組快取以及共享快取。
圖28是示出根據實例性實施例的虛擬化系統的方塊圖。
參照圖28,虛擬化系統1000可包括系統晶片(system on chip,SoC)、工作記憶體1130、顯示裝置(display device,LCD)1152、觸控面板1154、儲存裝置1170、電源管理積體電路(power management integrated circuit,PMIC)1200等。SoC可包括處理器(CPU)1110、記憶體管理單元MMC 1115、DRAM控制器1120、效能控制器1140、使用者介面控制器((user interface,UI)控制器)1150、儲存介面1160及具有直接記憶體存取功能的直接記憶體存取裝置DMAIP 1180、電源管理單元(power management unit,PMU)1144、時鐘管理單元(clock management unit,CMU)1146等。應理解,虛擬化系統1000的組件不限於圖28所示的組件。舉例而言,虛擬化系統1000可更包括用於處理影像資料的硬體編解碼器、安全塊等。
處理器1110執行虛擬化系統1000的軟體(例如,應用程式、作業系統(operating system,OS)及裝置驅動器)。處理器1110可執行可被加載至工作記憶體1130中的作業系統(OS)。處理器1110可執行欲在作業系統(OS)上驅動的各種應用程式。處理器1110可被提供為同構多核處理器或異構多核處理器。多核處理器是包括至少二個可獨立驅動的處理器(以下稱為「核心」或「處理器核心」)的計算組件。所述核心中的每一者可獨立地讀取及執行程式指令。
DRAM控制器1120提供工作記憶體1130與系統晶片(SoC)之間的介面。DRAM控制器1120可根據處理器1110或另一智慧財產(IP)塊的請求來存取工作記憶體1130。
記憶體管理單元(或記憶體管理電路)1115可管理處理器1110對工作記憶體1130的核心存取以及直接記憶體存取裝置1180對工作記憶體1130的直接存取。
作業系統(OS)或基本應用程式可在啟動操作期間被加載至工作記憶體1130中。舉例而言,儲存在儲存裝置1170中的管理程式HPVS及多個客作業系統GOS可在虛擬化系統1000的啟動期間基於啟動序列(booting sequence)而被加載至工作記憶體1130中。此後,對應於所述多個客作業系統GOS的應用APP可被加載至工作記憶體1130中。
效能控制器1140可根據自作業系統(OS)的內核提供的控制請求來調整系統晶片(SoC)的操作參數。舉例而言,效能控制器1140可調整動態電壓及頻率縮放(dynamic voltage and frequency scaling,DVFS)的級別,以提高系統晶片(SoC)的效能。
使用者介面控制器1150控制來自使用者介面裝置的使用者輸入及輸出。舉例而言,使用者介面控制器1150可根據處理器1110的控制而顯示用於向LCD 1152輸入資料的鍵盤螢幕。作為另外一種選擇,使用者介面控制器1150可控制LCD 1152顯示使用者請求的資料。使用者介面控制器1150可將自例如觸控面板1154等使用者輸入工具提供的資料解碼成使用者輸入資料。
儲存介面1160根據處理器1110的請求來存取儲存裝置1170。舉例而言,儲存介面1160提供系統晶片(SoC)與儲存裝置1170之間的介面。舉例而言,由處理器1110處理的資料經由儲存介面1160而儲存在儲存裝置1170中。作為另外一種選擇,儲存在儲存裝置1170中的資料可經由儲存介面1160而被提供至處理器1110。
儲存裝置1170被提供為虛擬化系統1000的儲存媒體。儲存裝置1170可儲存應用程式、OS影像及各種類型的資料。儲存裝置170可被提供為記憶體卡(例如,多媒體卡(multimedia card,MMC)、嵌入式多媒體卡(embedded multimedia card,eMMC)、安全數位(secure digital,SD)、微型安全數位(MicroSD)等)。儲存裝置170可包括具有高容量儲存能力的反及(NAND)型快閃記憶體。作為另外一種選擇,儲存裝置1170可包括下一代非揮發性記憶體,例如相變隨機存取記憶體(phase change random access memory,PRAM)、磁性隨機存取記憶體(magnetic random access memory,MRAM)、電阻隨機存取記憶體(resistance random access memory,ReRAM)及鐵電隨機存取記憶體(ferroelectric random access memory,FRAM)或者反或(NOR)型快閃記憶體。
直接記憶體存取裝置1180可被提供為單獨的智慧財產(IP)組件,以提高多媒體或多媒體資料的處理速度。舉例而言,直接記憶體存取裝置1180可被提供為智慧財產(IP)組件,以增強文本、音訊、靜止影像、動畫、視訊、二維資料或三維資料的處理效能。
系統互連器1190可為系統匯流排,以在系統晶片(SoC)中提供片上網路。系統互連器1190可包括例如資料匯流排、位址匯流排及控制匯流排。資料匯流排是資料傳送路徑。亦可提供至工作記憶體1130或儲存裝置1170的記憶體存取路徑。位址匯流排提供智慧財產(IP)之間的位址交換路徑。控制匯流排提供控制訊號沿其在智慧財產(IP)之間傳輸的路徑。然而,系統互連器1190的配置不限於以上說明,並且系統互連器190可更包括用於高效管理的仲裁工具。
根據實例性實施例,直接記憶體存取裝置1180可包括如以上參照圖1至圖27所述的位址轉譯快取ATC。
如上所述,根據實例性實施例的位址轉譯快取可藉由向所述多個彈性頁面組快取動態分配頁面大小並基於所分配的頁面大小來儲存每一頁面大小的轉譯條目而高效地利用快取記憶體資源並減少位址映射資訊的搜索時間。
實例性實施例可應用於具有直接記憶體存取功能的任何電子裝置及系統。舉例而言,本發明概念可應用於例如記憶體卡、固態驅動器(solid state drive,SSD)、嵌入式多媒體卡(eMMC)、通用快閃儲存(UFS)、行動電話、智慧型電話、個人數位助理(personal digital assistant,PDA)、可攜式多媒體播放器(portable multimedia player,PMP)、數位相機、攝錄像機、個人電腦(personal computer,PC)、伺服器電腦、工作站、膝上型電腦、數位電視、機上盒、可攜式遊戲控制台、導航系統、穿戴式裝置,物聯網(internet of things,IoT)裝置、萬物互聯(internet of everything,IoE)裝置、電子書、虛擬實境(virtual reality,VR)裝置、擴增實境(augmented reality,AR)裝置、汽車駕駛系統、伺服器系統等系統。
前述內容是對實例性實施例的說明,且不應被解釋為對其進行限制。儘管已經闡述了一些實例性實施例,但熟習此項技術者將容易理解,在本質上不背離本發明概念的情況下,可對所述實例性實施例作出諸多修改。
20:集合相聯快取
41:標籤比較電路
42、MUX:資料輸出電路
43、UCON:更新控制器
44:快取命中確定電路
50:快取記憶體
100、700、ATC:位址轉譯快取
110、710、CMNG:快取管理器
120、720:彈性頁面組快取
130、730、SHC:共享快取
300、400:系統
305、610:主機處理器/處理器
306:前端匯流排(FSB)
310、HMEM:主機記憶體裝置/系統記憶體
315:控制器集線器
316:記憶體介面
317、321:輸入/輸出模組/介面/埠
318、331:I/O模組
319、332:串行鏈路
320:交換機/橋
325:裝置
330、MMU:記憶體管理單元
410、HPRC:主機處理器
420、620、1180、DMAIP:直接記憶體存取裝置
430、630、1115、MMC:記憶體管理單元/記憶體管理電路
440、640:主機記憶體裝置
500、600、1000:虛擬化系統
510、SYSHW:系統硬體
520、HPVS:管理程式
530、540、550、VM1、VM2、VM3:虛擬機
740、PFDC1、PFDC2、PFDC3~PFDCm:功能專用快取
800:裝置/PCIe裝置
810:內部路由
820:PCIe埠
1110:處理器(CPU)
1120:DRAM控制器
1130:工作記憶體
1140:效能控制器
1144:電源管理單元(PMU)
1146:時鐘管理單元(CMU)
1150:使用者介面控制器
1152:顯示裝置(LCD)
1154:觸控面板
1160:儲存介面
1170、STR:儲存裝置
1190:系統互連器
1200:電源管理積體電路(PMIC)
APP、APP11、APP12、APP21、APP22、APP31、APP32:應用
B12、B13、B14、B15、B16、B17、B18~B31:位址位元
CG_L1、CG_L2:快取組
CHT:快取命中訊號
COM0、COM1、COM2、COM3:比較器
CPI:快取頁面資訊
CPU:中央處理單元
CREQ:核心存取請求
CTRLD、CTRLD1、CTRLD2、CTRLM:控制訊號
DARR:資料記憶體
DEML:裝置模擬器
DPRC:裝置處理器
DREQ:直接存取請求
DRV1:第一裝置驅動器
DRV2:第二裝置驅動器
ETE:清除轉譯條目
FAIL:轉譯失敗的資訊
FPGC1:第一彈性頁面組快取/第一集合相聯快取/彈性頁面組快取
FPGC2:第二彈性頁面組快取/第二集合相聯快取/彈性頁面組快取
FPGC3:第三彈性頁面組快取/第三集合相聯快取/彈性頁面組快取
FPGC4:第四彈性頁面組快取/第四集合相聯快取/彈性頁面組快取
FPGC5:第五彈性頁面組快取/第五集合相聯快取/彈性頁面組快取
FPGC6、FPGC7~FPGCn:第六彈性頁面組快取、第七彈性頁面組快取~第n彈性頁面組快取/彈性頁面組快取
GDRV、HDRV:裝置驅動器
GOS:客作業系統
GOS1:第一客作業系統/客作業系統
GOS2:第二客作業系統/客作業系統
GOS3:第三客作業系統/客作業系統
HOS:主機作業系統
HT0、HT1、HT2、HT3:路命中訊號
IDX:索引
IDX1:第一索引
IDX2:第二索引
IDX3:第三索引
IDX4:第四索引
IDX5:第五索引
INTHD:中斷處置器
IP:智慧財產
IPA:中間實體位址/中間位址
IREQ:無效化請求
IRES:無效化響應
ITE:輸入轉譯條目
MEM:記憶體裝置
MMU1:第一記憶體管理單元/記憶體管理單元
MMU2:第二記憶體管理單元/記憶體管理單元
MR1:第一客記憶體區域/客記憶體區域
MR2:第二客記憶體區域/客記憶體區域
NA:未分配狀態
OINF:其他資訊
PA:實體位址
PA0:第一實體位址/實體位址
PA1:第二實體位址/實體位址
PA2:第三實體位址/實體位址
PA3:第四實體位址/實體位址
PF1、PF2、PF3~PFm:功能
PFID:功能辨識符
PREQ:頁面請求
PRES:頁面響應
PRSC1、PRSC2、PRSC3:實體資源
S10、S11、S12、S13、S14、S15、S16、S17、S18、S19、S20、S21、S22、S23、S31、S32、S33、S34、S41、S42、S43、S44、S45、S46、S47、S48、S51、S52、S53、S54、S55、S56、S57、S58、S59、S60、S61、S62、S63、S64、S71、S72、S73、S74、S80、S81、S82、S83、S84、S100、S200、S300、S400:操作
SET0~SET3:集合
SIPA:中間位址空間
SIPA1、SIPA2:客中間實體位址空間
SMON:狀態監視器
SUCCESS:轉譯成功的資訊
SVA:虛擬位址空間
SVA1、SVA2:客虛擬位址空間
TARR:標籤記憶體
TE:轉譯條目
TG:標籤
TG0:第一標籤/第一標籤資料/標籤
TG1:第一標籤/第二標籤資料/標籤
TG2:第二標籤/第三標籤資料/標籤
TG3:第四標籤/第三標籤/第四標籤資料/標籤
TG4:第四標籤
TG5:第五標籤
TREQ:轉譯請求
TRES:轉譯響應
TTAB1:第一階段轉譯表
TTAB2:第二階段轉譯表
V:有效度字段
VA:虛擬位址
vGMMU、vHMMU:虛擬記憶體管理單元
WY0:第一路/路
WY1:第二路/路
WY2:第三路/路
WY3:第四路/路
結合附圖閱讀以下詳細說明,將更清楚地理解本揭露的實例性實施例。
圖1是示出根據實例性實施例的位址轉譯快取的方塊圖。
圖2是示出根據實例性實施例的操作位址轉譯快取的方法的流程圖。
圖3是示出根據實例性實施例的位址轉譯快取的實例性快取頁面資訊的圖式。
圖4是示出根據實例性實施例的位址轉譯快取的條目寫入操作的實例性實施例的流程圖。
圖5是示出根據實例性實施例的位址轉譯快取中所包括的集合相聯快取的實例性實施例的圖式。
圖6是示出根據實例性實施例的位址轉譯快取的快取線中所儲存的實例性轉譯條目的圖式。
圖7是示出根據頁面大小設置位址位元的實例的圖式。
圖8及圖9是示出根據實例性實施例的位址轉譯快取的條目搜索操作的實例性實施例的圖式。
圖10是示出根據實例性實施例的位址轉譯快取的條目無效化操作的實例性實施例的流程圖。
圖11是示出根據實例性實施例的包括位址轉譯快取的系統的互連架構的實例性實施例的方塊圖。
圖12是示出根據實例性實施例的包括位址轉譯快取的系統的方塊圖。
圖13至圖16是示出根據實例性實施例的包括位址轉譯快取的系統的操作的圖式。
圖17是示出根據實例性實施例在包括位址轉譯快取的系統中傳送的封包的實例的圖式。
圖18是示出根據實例性實施例的包括位址轉譯快取的虛擬化系統的方塊圖。
圖19是示出根據實例性實施例的虛擬化系統的方塊圖。
圖20、圖21及圖22是示出根據實例性實施例的虛擬化系統的虛擬化環境的分級結構的實例性實施例的圖式。
圖23及圖24是示出根據實例性實施例的虛擬化系統的兩階段位址轉譯的圖式。
圖25是示出根據實例性實施例的位址轉譯快取的方塊圖。
圖26是示出根據實例性實施例的位址轉譯快取的條目寫入操作的實例性實施例的流程圖。
圖27是示出根據實例性實施例的包括位址轉譯快取的裝置的圖式。
圖28是示出根據實例性實施例的虛擬化系統的方塊圖。
100:位址轉譯快取
110、CMNG:快取管理器
120:彈性頁面組快取
130、SHC:共享快取
CHT:快取命中訊號
CPI:快取頁面資訊
ETE:清除轉譯條目
FPGC1:第一彈性頁面組快取/第一集合相聯快取/彈性頁面組快取
FPGC2:第二彈性頁面組快取/第二集合相聯快取/彈性頁面組快取
FPGC3~FPGCn:第三彈性頁面組快取/第三集合相聯快取/彈性頁面組快取~第n彈性頁面組快取/彈性頁面組快取
ITE:輸入轉譯條目
PA:實體位址
VA:虛擬位址
Claims (20)
- 一種位址轉譯快取(ATC),被配置成儲存指示記憶體裝置的虛擬位址與實體位址之間的映射資訊的轉譯條目,所述位址轉譯快取包括: 多個彈性頁面組快取,每一彈性頁面組快取被配置成儲存與分配至所述彈性頁面組快取的頁面大小對應的轉譯條目; 共享快取,被配置成無論頁面大小如何皆對未儲存在所述多個彈性頁面組快取中的轉譯條目進行儲存;以及 快取管理器,被配置成向每一彈性頁面組快取分配頁面大小,管理關於分配至所述多個彈性頁面組快取的所述頁面大小的快取頁面資訊,並基於所述快取頁面資訊來控制所述多個彈性頁面組快取及所述共享快取。
- 如請求項1所述的位址轉譯快取,其中所述快取管理器被配置成使得當所述快取管理器接收到與和分配至所述多個彈性頁面組快取的所述頁面大小中的一者相同的頁面大小對應的輸入轉譯條目時,所述快取管理器將所述輸入轉譯條目儲存在分配有與所述輸入轉譯條目對應的所述頁面大小的所述彈性頁面組快取中。
- 如請求項1所述的位址轉譯快取,其中所述快取管理器更被配置成使得當所述快取管理器接收到與不同於分配至所述多個彈性頁面組快取的所述頁面大小的新頁面大小對應的輸入轉譯條目、並且在所述多個彈性頁面組快取之中存在未分配所述頁面大小的空彈性頁面組快取時,所述快取管理器將所述新頁面大小分配至所述空彈性頁面組快取,並將所述輸入轉譯條目儲存在分配有所述新頁面大小的所述空彈性頁面組快取中。
- 如請求項1所述的位址轉譯快取,其中所述快取管理器被配置成使得當所述快取管理器接收到與不同於分配至所述多個彈性頁面組快取的所述頁面大小的新頁面大小對應的輸入轉譯條目、並且不存在未分配所述頁面大小的空彈性頁面組快取時,所述快取管理器將所述輸入轉譯條目儲存在所述共享快取中。
- 如請求項1所述的位址轉譯快取,其中所述快取管理器被配置成將自所述多個彈性頁面組快取中清除的轉譯條目儲存在所述共享快取中。
- 如請求項1所述的位址轉譯快取,其中所述多個彈性頁面組快取利用多個集合相聯快取實施,而所述共享快取利用全相聯快取實施。
- 如請求項6所述的位址轉譯快取,其中所述多個集合相聯快取各自包括相同數目的集合。
- 如請求項7所述的位址轉譯快取,其中每一集合相聯快取中的每一轉譯條目包括標籤,並且儲存在每一集合相聯快取中的每一標籤的位元數目隨著分配至每一集合相聯快取的頁面大小的增加而減少。
- 如請求項6所述的位址轉譯快取,其中所述快取管理器被配置成使得對於輸入至所述位址轉譯快取的每一虛擬位址而言,當所述快取管理器搜索映射至所輸入的所述虛擬位址的實體位址時,所述快取管理器搜索所有所述多個集合相聯快取及所述全相聯快取。
- 如請求項9所述的位址轉譯快取,其中所述快取管理器被配置成基於所述快取頁面資訊自所輸入的所述虛擬位址中提取與分配至所述多個集合相聯快取的所述頁面大小對應的標籤及索引,並將所述標籤及所述索引分別提供至所述多個集合相聯快取中對應的集合相聯快取。
- 如請求項6所述的位址轉譯快取,其中所述快取管理器被配置成使得當所述快取管理器使對應於輸入虛擬位址的轉譯條目無效時,所述快取管理器搜索所有所述多個集合相聯快取及所述全相聯快取。
- 如請求項1所述的位址轉譯快取,更包括: 專用於多個功能的多個功能專用快取,每一功能專用快取被配置成儲存與每一功能相關的轉譯條目。
- 如請求項12所述的位址轉譯快取,其中所述多個功能專用快取對應於較低級別的快取組,而所述多個彈性頁面組快取及所述共享快取對應於較高級別的快取組。
- 如請求項12所述的位址轉譯快取,其中所述快取管理器被配置成使得當所述快取管理器搜索映射至輸入虛擬位址的實體位址時,所述快取管理器搜索與所述輸入虛擬位址中所包括的功能辨識符對應的所述功能專用快取,並且當與所述輸入虛擬位址對應的所述轉譯條目不存在於與所述功能辨識符對應的所述功能專用快取中時,搜索所有所述多個彈性頁面組快取及所述共享快取。
- 如請求項12所述的位址轉譯快取,其中所述快取管理器被配置成使得當所述快取管理器使對應於輸入虛擬位址的轉譯條目無效時,所述快取管理器搜索所有所述多個功能專用快取、所述多個彈性頁面組快取及所述共享快取。
- 如請求項12所述的位址轉譯快取,其中所述快取管理器被配置成將自所述多個功能專用快取中清除的轉譯條目儲存在所述多個彈性頁面組快取或所述共享快取中。
- 如請求項12所述的位址轉譯快取,其中所述多個功能專用快取由多個全相聯快取實施。
- 如請求項12所述的位址轉譯快取,其中所述多個功能是根據快速周邊組件互連(PCIe)標準的功能。
- 一種位址轉譯快取(ATC),被配置成儲存指示記憶體裝置的虛擬位址與實體位址之間的映射資訊的轉譯條目,所述位址轉譯快取包括: 多個功能專用快取,專用於多個功能並且利用多個全相聯快取來實施,每一功能專用快取被配置成儲存與相應功能相關的轉譯條目; 利用多個集合相聯快取實施的多個彈性頁面組快取,每一彈性頁面組快取被配置成對與分配至所述彈性組快取的頁面大小對應並且未儲存在所述多個功能專用快取中的轉譯條目進行儲存; 利用全相聯快取實施的共享快取,所述共享快取被配置成無論頁面大小如何皆對未儲存在所述多個功能專用快取或所述多個彈性頁面組快取中的轉譯條目進行儲存;以及 快取管理器,被配置成向每一彈性頁面組快取分配所述頁面大小,管理關於分配至所述多個彈性頁面組快取的所述頁面大小的快取頁面資訊,並基於所述快取頁面資訊來控制所述多個彈性頁面組快取及所述共享快取。
- 一種系統,包括: 主機記憶體裝置; 主機處理器; 直接記憶體存取裝置,被配置成實行對所述主機記憶體裝置的直接記憶體存取,所述直接記憶體存取裝置包括位址轉譯快取(ATC),所述位址轉譯快取被配置成儲存指示所述主機處理器的虛擬位址與記憶體裝置的實體位址之間的映射資訊的轉譯條目;以及 記憶體管理單元,被配置成管理所述主機處理器及所述直接記憶體存取裝置對所述主機記憶體裝置的存取, 其中所述位址轉譯快取包括: 多個彈性頁面組快取,每一彈性頁面組快取被配置成儲存與分配至所述彈性組快取的頁面大小對應的轉譯條目; 共享快取,被配置成無論頁面大小如何皆對未儲存在所述多個彈性頁面組快取中的轉譯條目進行儲存;以及 快取管理器,被配置成向每一彈性頁面組快取分配所述頁面大小,管理關於分配至所述多個彈性頁面組快取的所述頁面大小的快取頁面資訊,並基於所述快取頁面資訊來控制所述多個彈性頁面組快取及所述共享快取。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20210169763 | 2021-12-01 | ||
KR10-2021-0169763 | 2021-12-01 | ||
KR1020220063986A KR102544401B1 (ko) | 2021-12-01 | 2022-05-25 | 어드레스 트랜슬레이션 캐시 및 이를 포함하는 시스템 |
KR10-2022-0063986 | 2022-05-25 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202324107A true TW202324107A (zh) | 2023-06-16 |
Family
ID=83995130
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111140754A TW202324107A (zh) | 2021-12-01 | 2022-10-27 | 位址轉譯快取及包括其的處理器系統 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230169013A1 (zh) |
EP (1) | EP4191420A1 (zh) |
CN (1) | CN116204452A (zh) |
TW (1) | TW202324107A (zh) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5479627A (en) * | 1993-09-08 | 1995-12-26 | Sun Microsystems, Inc. | Virtual address to physical address translation cache that supports multiple page sizes |
US7370174B2 (en) * | 2005-01-05 | 2008-05-06 | Intel Corporation | Method, system, and program for addressing pages of memory by an I/O device |
US7389402B2 (en) * | 2005-06-07 | 2008-06-17 | Advanced Micro Devices, Inc. | Microprocessor including a configurable translation lookaside buffer |
GB2565069B (en) * | 2017-07-31 | 2021-01-06 | Advanced Risc Mach Ltd | Address translation cache |
US10372621B2 (en) * | 2018-01-05 | 2019-08-06 | Intel Corporation | Mechanism to support variable size page translations |
WO2021061466A1 (en) * | 2019-09-24 | 2021-04-01 | Alibaba Group Holding Limited | Memory management unit, address translation method, and processor |
US11829298B2 (en) * | 2020-02-28 | 2023-11-28 | Apple Inc. | On-demand memory allocation |
KR20220063986A (ko) | 2020-11-11 | 2022-05-18 | 아도바이오 주식회사 | 레이저 두피문신 방법 |
-
2022
- 2022-10-13 US US17/965,700 patent/US20230169013A1/en active Pending
- 2022-10-24 EP EP22203192.4A patent/EP4191420A1/en active Pending
- 2022-10-27 TW TW111140754A patent/TW202324107A/zh unknown
- 2022-11-18 CN CN202211452901.5A patent/CN116204452A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4191420A1 (en) | 2023-06-07 |
CN116204452A (zh) | 2023-06-02 |
US20230169013A1 (en) | 2023-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210374069A1 (en) | Method, system, and apparatus for page sizing extension | |
JP5911985B2 (ja) | ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供 | |
CN107608910B (zh) | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 | |
US9269438B2 (en) | System and method for intelligently flushing data from a processor into a memory subsystem | |
US9600416B2 (en) | Apparatus and method for implementing a multi-level memory hierarchy | |
US9317429B2 (en) | Apparatus and method for implementing a multi-level memory hierarchy over common memory channels | |
CN109154907B (zh) | 在输入-输出存储器管理单元中使用多个存储器元件来执行虚拟地址到物理地址转译 | |
US9830262B2 (en) | Access tracking mechanism for hybrid memories in a unified virtual system | |
CN113039531B (zh) | 用于分配缓存资源的方法、系统和存储介质 | |
CN111164581A (zh) | 用于修补页的系统、方法和装置 | |
US20220414020A1 (en) | Software interface to xpu address translation cache | |
TWI785320B (zh) | 裝置內標記資料移動系統、資訊處置系統及用於提供裝置內標記資料移動之方法 | |
TWI648625B (zh) | 管理位址獨立的頁面屬性 | |
CN114270317B (zh) | 层次型存储器系统 | |
US10866895B2 (en) | Steering tag support in virtualized environments | |
JP2017033375A (ja) | 並列計算システム、マイグレーション方法、及びマイグレーションプログラム | |
KR102544401B1 (ko) | 어드레스 트랜슬레이션 캐시 및 이를 포함하는 시스템 | |
EP4191420A1 (en) | Address translation cache and system including the same | |
US20220398017A1 (en) | Independently controlled dma and cpu access to a shared memory region | |
US10936219B2 (en) | Controller-based inter-device notational data movement system | |
WO2022198552A1 (en) | Hardware assisted memory access tracking | |
US11907115B2 (en) | Indirect interface for virtual machine free page hinting | |
KR20230162100A (ko) | 계층형 메모리 관리를 오프로드하기 위한 방법들 및 장치들 | |
US20220206954A1 (en) | Protection against translation lookup request flooding | |
US20210248083A1 (en) | Hierarchical memory systems |