TWI782754B - 微處理器和在微處理器中實現的方法 - Google Patents

微處理器和在微處理器中實現的方法 Download PDF

Info

Publication number
TWI782754B
TWI782754B TW110138436A TW110138436A TWI782754B TW I782754 B TWI782754 B TW I782754B TW 110138436 A TW110138436 A TW 110138436A TW 110138436 A TW110138436 A TW 110138436A TW I782754 B TWI782754 B TW I782754B
Authority
TW
Taiwan
Prior art keywords
micro
table lookup
microprocessor
memory access
page address
Prior art date
Application number
TW110138436A
Other languages
English (en)
Other versions
TW202223666A (zh
Inventor
柯林 艾迪
Original Assignee
美商聖圖爾科技公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商聖圖爾科技公司 filed Critical 美商聖圖爾科技公司
Publication of TW202223666A publication Critical patent/TW202223666A/zh
Application granted granted Critical
Publication of TWI782754B publication Critical patent/TWI782754B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/654Look-ahead translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/684TLB miss handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Burglar Alarm Systems (AREA)

Abstract

本發明提供微處理器和在微處理器中實現的方法。在一個實施例中,一種微處理器,包括:轉譯後備緩衝器(TLB),其被配置為指示與記憶體訪問指令試圖訪問的記憶體頁的物理頁位址相對應的虛擬頁位址在TLB中未命中;第一微操作,其與第一記憶體訪問指令相對應,並且第一微操作被配置為基於第一虛擬頁位址在TLB中的未命中來發起第一推測性表查找;以及第二微操作,其與第二記憶體訪問指令相對應,並且第二微操作被配置為基於比第一微操作更早並且還基於具有與針對第一記憶體訪問指令的第一虛擬頁位址和屬性相匹配的虛擬頁位址和屬性,在第一微操作的當前處理階段接管第一微操作的現行的第一推測性表查找。

Description

微處理器和在微處理器中實現的方法
本發明是有關於一種微處理器,且特別是有關於一種轉譯後備緩衝器未命中(translation lookaside buffer miss)而進行頁表查找(page tablewalk)的微處理器。
許多現代微處理器支援虛擬記憶體的概念。在虛擬記憶體系統中,在微處理器上執行的程式的指令是指使用微處理器的虛擬位址空間中的虛擬位址或線性位址的資料。微處理器將虛擬位址轉譯為用於訪問物理記憶體的物理位址。
微處理器支援的通常的虛擬記憶體方案是頁式記憶體系統。頁式記憶體系統採用用於將虛擬位址轉譯或映射到物理位址的分頁機制。物理位址空間被劃分為固定大小的物理頁。通常的頁大小為4KB。虛擬位址包括虛擬頁位址部分和頁偏移部分。虛擬頁位址指定虛擬位址空間中的虛擬頁(例如,4KB)。微處理器的分頁機制將虛擬頁位址轉譯為物理頁位址。這個處理稱為頁轉譯。頁偏移指定虛擬和物理頁中的物理偏移(例如,相對於虛擬或物理頁位址的虛擬或物理偏移)。
作業系統決定記憶體中的哪些物理頁將映射到各個虛擬頁,並且保持指定映射的頁映射資訊。當微處理器遇到用於指定虛擬位址以訪問記憶體中的位置的指令(諸如載入或存儲指令)時,微處理器透過使用作業系統的頁映射資訊將虛擬位址轉譯為合適的物理位址。作業系統在系統記憶體中保持頁映射資訊。因此,微處理器從記憶體讀取適當的頁映射資訊以將虛擬位址轉譯為物理位址。頁映射資訊一般分層地佈置以減小其大小,這要求微處理器透過在層級的多個級處進行讀取操作來遍歷層級。為此,並且由於頁映射資訊的至少一部分通常被稱為頁表,因此微處理器遍歷頁映射資訊以將虛擬位址轉譯為物理位址的處理通常被稱為頁表查找,或者簡單地稱為表查找,或者本文中主要使用的表查找。關於表查找的更多資訊可以在美國專利7,996,650 (下文中稱為650專利)中找到,其全部內容透過引用併入本文。
在650專利中,將轉譯後備緩衝器(TLB)描述為透過快取記憶體頁映射資訊來減少向系統記憶體的表查找次數的機制的一部分。當微處理器遇到記憶體訪問指令(例如,載入或存儲指令)時,微處理器向TLB提供虛擬位址,並且TLB進行虛擬頁位址的查找。如果虛擬頁位址在TLB中命中,則TLB提供相應的轉譯物理頁位址和頁特徵,從而避免了需要進行表查找。然而,如果虛擬頁位址在TLB中未命中,則微處理器必須進行表查找。
考慮到上述背景,進一步注意到許多微處理器是超標量的(superscalar)。超標量微處理器包括這樣的特徵:具有多個執行單元,並且具有在單個時鐘週期中向執行單元發出多個指令的能力。超標量微處理器的附加能力包括進行亂序執行(例如,微處理器可以執行由包括指令的程式所指定的亂序指令)和進行指令的推測執行(例如,在確定地知道指令實際上是否將完成之前,微處理器執行指令,或者至少進行由指令所規定的一些動作)。儘管微處理器可以推測地進行指令所規定的一些動作,但是微處理器不被架構允許用指令的結果來更新系統的架構狀態,直到指令不再是推測的為止,即直到確定為指令將完成(對應於機器最早的狀態)為止。
650專利改進了需要表查找的針對TLB未命中的傳統做法。例如,對於傳統的亂序執行的微處理器 (其遭受需要表查找的TLB未命中),微處理器將表查找與其它未完成的程式指令序列化。也就是說,傳統的微處理器在其進行表查找之前等待直到比啟動器指令(導致TLB未命中的指令)更早的所有程式指令已經退出為止,並且不向執行單元發出用於執行比啟動器指令更新的任何程式指令,直到其完成表查找為止。在650專利中,描述了一種微處理器,該微處理器推測地進行表查找,並且僅在以下情況下將表查找序列化:1)需要與表查找相關聯的系統記憶體訪問在處理器匯流排上嚴格有序;2)處理器需要寫入系統記憶體以更新頁映射資訊,從而進行表查找;或者3)表查找將更新TLB的系統記憶體頁是全域頁。然而,表查找仍可以改進。
本發明的一個實施例中,一種微處理器,包括:轉譯後備緩衝器,即TLB,其被配置為指示與記憶體訪問指令試圖訪問的記憶體頁的物理頁位址相對應的虛擬頁位址在所述TLB中未命中;第一微操作,其與第一記憶體訪問指令相對應,並且所述第一微操作被配置為基於第一虛擬頁位址在所述TLB中的未命中來發起第一推測性表查找;以及第二微操作,其與第二記憶體訪問指令相對應,並且所述第二微操作被配置為基於所述第二微操作比所述第一微操作更早並且還基於具有與針對所述第一記憶體訪問指令的所述第一虛擬頁位址和屬性相匹配的虛擬頁位址和屬性,在所述第一微操作的當前處理階段接管所述第一微操作的現行的推測性表查找。
透過審查以下附圖和詳細描述,本發明的其它系統、方法、特徵和優點對於本領域技術人員將是明顯的或者將變得明顯。所有這些附加系統、方法、特徵和優點旨在包括在本說明書內、在本發明的範圍內,並且受到所附申請專利範圍的保護。
本發明公開了表查找接管系統和方法的某些實施例,該表查找接管系統和方法透過補救在針對嚴格有序情形而實施機器最早狀態中所涉及的一些低效率處理來改進過去的推測性(speculative)表查找機制。在一個實施例中,表查找接管系統使得針對較早的記憶體訪問指令(例如,存儲或載入指令)的表查找能夠在不重新開機表查找的情況下承擔或接管(例如,在較新的記憶體訪問指令已經到達的、表查找處理的當前階段承擔或接管)現行的(active)推測性表查找。該接管發生在某些條件下,即,與相應表查找相對應的各個記憶體訪問指令指向相同的虛擬頁位址(例如,相同的虛擬頁),並且它們在其屬性方面匹配,如下面進一步描述的。透過這樣做,在如果遇到嚴格有序情形則更新機器最早狀態的情況下,保留而不是丟棄從針對較新的記憶體訪問指令的推測性表查找獲得的處理結果。
簡而言之,過去的表查找機制效率低下,這是因為如果與記憶體訪問指令相對應的較早(但後來分派到管線(pipeline)中)的微操作(micro-operation)遇到正在現行地進行表查找的較新的微操作,則較新的微操作被逐出,並且較早的微操作發起其自己的、新的推測性表查找。在這些情況下,特別是當被逐出的微操作的工作幾乎完成或可能已經完成時,有利於較早的微操作而逐出較新的微操作並開始新的表查找,這會導致現在被逐出的微操作已經完成的工作的丟失,並且效率極低。相比之下,表查找接管系統的某些實施例逐出現行地且推測性地進行表查找的微操作,然而在當前處理階段接管推測性表查找處理,而不是重新開始表查找,因此在表查找處理期間利用由現在被逐出的微操作已經進行的工作。
在總結了本發明的表查找接管系統的某些特徵之後,現在將詳細參考如附圖中所例示的表查找接管系統的描述。雖然將結合這些附圖來描述表查找接管系統,但並不意圖將其限制於這裡所公開的實施例。也就是說,雖然本發明易於進行各種修改和替代形式,但是其特定實施例在附圖中透過示例的方式示出,並且這裡將被詳細描述成足以使本領域技術人員理解。然而,應該理解,附圖及其詳細描述不意圖將本發明限制於所公開的特定形式。相反,意圖是覆蓋落入如所附申請專利範圍所限定的本發明的精神和範圍內的所有修改、等同項和替代。如在本申請中所使用的,詞語“可以”以允許的意義(即,意味著有可能)而不是強制的意義(即,意味著必須)被使用。類似地,詞語“包括”意味著包括但不限於。
各種單元、模組、電路、邏輯或其它元件可被描述為“被配置為”進行一個或多個任務。在這樣的上下文中,“被配置為”是對結構的廣泛敘述,其一般意味著“具有在操作期間進行或能夠進行一個或多個任務的電路或其它物理結構”。電路可以是專用電路、或在編碼指令的控制下操作的更通用處理電路。也就是說,在描述本發明的各種實現的某些方面或特徵時,這裡可以使用諸如“單元”、“模組”、“電路”、“邏輯”和“元件”等的術語。本領域技術人員將理解,利用電路實現相應的特徵,無論該電路是專用電路還是在微編碼指令控制下操作的更通用電路。
另外,單元/模組/電路/邏輯/元件可被配置為即使在單元/模組/電路/邏輯/元件當前不處於操作中的情況下也進行任務。敘述被配置為進行一個或多個任務的單元/模組/電路/邏輯/元件顯然不意圖針對該單元/模組/電路/邏輯/元件進行功能性限定。在這方面,本領域技術人員將理解,電路元件的特定結構或互連一般將由設計自動化工具的編譯器(諸如寄存器傳送語言(RTL)編譯器)確定。RTL編譯器在與組合語言代碼非常相似的腳本上運行,以將該腳本編譯成用於最終電路的佈局或製造的形式。
也就是說,使用更高級的軟體工具來設計(諸如本發明的那些)積體電路以對電路的期望功能操作進行建模。眾所周知,“電子設計自動化”(或EDA)是一類用於設計諸如積體電路等的電子系統的軟體工具。EDA工具還用於將設計功能程式設計到現場可程式設計閘陣列(FPGA)中。使用諸如Verilog和超高速積體電路硬體描述語言(VHDL)等的硬體描述符語言(HDL)來創建電路的高級表示,其中根據該高級表示可以推斷出較低級表示和最終實際佈線。實際上,由於現代半導體晶片可以具有數十億個元件,因此EDA工具被認為是對於其設計而言必不可少的。在實踐中,電路設計者使用諸如C/C++等的程式設計語言來指定操作功能。EDA軟體工具將該指定功能轉譯為RTL。然後,硬體描述符語言(例如Verilog)將RTL轉譯為門的離散網表。該網表定義了由例如代工廠等生產的實際電路。實際上,這些工具因其在電子和數位系統的設計過程的促進中的角色和用途而被眾所周知並理解,因此這裡無需描述。
注意,對表查找的引用包括具有相同或類似功能的術語,包括頁表查找或表查找等,並且包括虛擬或線性空間的頁表查找。此外,在一些實施例中,表查找包括三個步驟。第一步驟是從記憶體中讀取將虛擬位址轉譯為物理位址所需的必要的頁映射資訊,並且獲得頁特徵。第二步驟是更新系統記憶體中的頁映射資訊(如果需要)。第三步驟是分配轉譯後備緩衝器(TLB)條目(entry),並且用新的頁映射資訊更新它。注意,對接手和接管的引用旨在表達相同的處理。
現在參考圖1,示出了方塊圖,該方塊圖示出根據本發明的微處理器100。微處理器100包括指令轉譯器102、微代碼104、重命名/分派單元106、重排序緩衝器(ROB)108、執行單元112、退出單元114、匯流排界面單元(BIU) 116和存儲器子系統118。存儲器子系統118包括一級(L1)指令快取記憶體122、L1資料快取記憶體124、二級(L2)快取記憶體126、轉譯後備緩衝器(TLB) 128、載入單元132、存儲單元134、載入緩衝器136、存儲緩衝器138和表查找引擎142。在實施例中,載入單元132和存儲單元134包括在執行單元112中。BIU 116使微處理器100與處理器匯流排連接,系統記憶體和諸如系統晶片組等的其它裝置耦接到處理器匯流排。例如,BIU 116接收需要繞過快取記憶體層級和寫入組合緩衝器(write combine buffer)這兩者的載入或存儲請求(例如,向不可快取記憶體記憶體、MMIO裝置、具有直寫(write-through)特徵的可快取記憶體記憶體、或者跨越兩個快取記憶體行的原子讀取-修改-寫入序列(所謂的鎖分解(split lock)事務)的載入或存儲)。當BIU 116接收到這些載入或存儲請求之一時,它確定最終目的地(例如,DRAM、V4介面、PCIe等),並且將該請求拆分成多個事務(如果需要)。在微處理器100上運行的作業系統將頁映射資訊存儲在系統記憶體中,微處理器100讀取和寫入該系統記憶體以進行表查找,如本文所述。
指令轉譯器102從存儲器子系統118(諸如L1指令快取記憶體122等)接收巨集指令,並且將巨集指令轉譯成其提供給重命名/分派單元106的微指令。對於某些巨集指令,指令轉譯器102將控制權轉移到微代碼104,微代碼104將微指令提供給重命名/分派單元106。一些微指令(微操作)是訪問記憶體的載入或存儲指令,這裡也稱為記憶體訪問指令。也就是說,載入/存儲指令指定虛擬位址以訪問微處理器100的記憶體空間中的記憶體或其它裝置,其中BIU 116使用物理記憶體位址在處理器匯流排上訪問所述記憶體或其它裝置。TLB 128快取記憶體最近訪問的記憶體頁的虛擬到物理頁位址轉譯和頁特徵,以減少微處理器100執行載入/存儲指令所需的時間量。
重命名/分派單元106為微處理器100中未完成的各個微指令分配ROB 108中的條目。即使執行單元112可能不按程式循序執行分派給它們的微指令,也按程式順序將微指令分配到ROB 108中,並且由退出單元114按程式順序從ROB 108退出微指令。在一個實施例中,可以根據ROB 108和退出單元108的索引之間的關係來確定給定微操作的年齡。存儲單元134透過將資料寫入存儲緩衝器138來執行存儲指令,存儲緩衝器138隨後將資料寫入諸如系統記憶體、L2快取記憶體126和/或L1資料快取記憶體124等的記憶體。載入單元132透過從系統記憶體、L2快取記憶體126和/或L1資料快取記憶體124向載入緩衝器136讀取資料來執行載入指令。
當載入/存儲指令在TLB 128中未命中時,相應的微操作與表查找引擎142一起推動表查找操作,如下文關於圖2所述。
現在關注於圖2,其示出示例性表查找接管方法144的實施例。在開始對方法144的描述之前,應當注意,不管是否存在需要序列化(例如,存在如下的序列化條件:在繼續之前要求表查找是最早的表查找)的有序情形,都可以進行所公開的實施例的表查找接管。例如,表查找引擎142(或者在一些實施例中,微處理器100的其它邏輯)確定當前表查找載入操作是否是嚴格有序的。表查找載入操作是從記憶體到微處理器100的頁映射資訊(諸如頁目錄條目或頁表條目(也包括分頁條目))的載入,該載入使得表查找引擎142使能或觸發表查找引擎142推動表查找操作。在一個實施例中,如果記憶體位置包含不可快取記憶體的分頁條目(例如,透過定義而不允許對該分頁條目的推測性訪問),則表查找載入是嚴格有序的。在一個實施例中,表查找引擎142確定分頁條目的記憶體位置是否具有不可快取記憶體的特徵(是否設置了頁映射資訊中的它的頁級快取記憶體禁用(page-level cache disable,PCD)位)。具體地,微處理器100進行檢查以避免請求BIU 116進行與處於不正確順序的表查找相關聯的處理器匯流排上的事務,這是因為分頁條目的記憶體位置被指定為不可快取記憶體。注意,可以使用其它和/或附加機制來確定分頁條目的記憶體位置是否是不可快取記憶體的。例如,記憶體類型範圍寄存器(MTRR)與頁屬性工作表(PAT)機制結合,來使用PCD/PAT/PWT位元作為與MTRR特徵組合以確定真實特徵的參考。實際上,下一級條目的記憶體位置的位址與來自當前級的資訊(PCT等)組合以確定下一級條目的位置是否嚴格有序。MTTR和PAT機制的附加資訊在本領域中是已知的,並且可以參考公開可得的信息(諸如來自Intel(注冊商標)的軟體發展人員手冊(例如,Addendum - Intel Architecture Software Developer’s Manual, Vol. 3: system Programming Guide,透過引用併入本文)。此外,如果需要更新分頁資訊(例如,分頁條目中的訪問位元或壞位元(dirty bit))或者如果所得到的物理頁是全域的,則給定的表查找載入操作也可以是嚴格有序的。關於這些情形的進一步資訊可以在上述650專利中找到。
如上所述,當不存在序列化條件時,也可以進行表查找接管。例如,可能存在這樣的場景:存在向同一位置的較早存儲,或者存在記憶體界定(memory fencing)操作,這並不總為要求表查找引擎是最早的序列化情況。存儲/界定必須最終首先完成,或者表查找引擎要由比存儲/界定更早的指令接管。
鑒於前述說明,表查找接管方法144在圖2中示出並且以下在不參考序列化情況的狀態下進行說明,而且理解接管可以涉及或可以不涉及序列化情況。此外,為了說明起見,表查找接管方法144在兩個示例性指令的上下文中描述,該兩個示例性指令以相反順序分派,並且可能間隔幾個時鐘週期。以下也稱為較早的或第一微操作和較新的或第二微操作的這些指令按相反順序分派(例如,較新的微操作先被分派到管線中)。注意,對第一和第二的提及沒有特別的相關性,特別是不一定等同於在申請專利範圍中使用的類似術語。
在步驟146處,微處理器100接收記憶體訪問指令 (例如,載入/存儲指令),下文中也稱為第二微操作,如前面段落所述。流程前進到步驟148。
在步驟148處,微處理器100檢測到在載入單元132或存儲單元134中執行的記憶體訪問指令的虛擬頁位址在圖1的TLB 128中未命中。流程前進到步驟150。
在步驟150處,表查找引擎142推動表查找操作。即,表查找引擎142更新微處理器100內的狀態以指示需要針對由記憶體訪問指令訪問的記憶體頁進行表查找。流程前進到步驟152。
在步驟152處,第二微操作確定是否存在現行的表查找。為了該示例的目的,假定不存在現行的表查找,因此流程前進到步驟154。
在步驟154處,第二微操作發起新的推測性表查找。
現在假定較早的記憶體訪問指令或第一微操作被分派到管線中。如以上在步驟146、148和150中類似地說明的,針對第一微指令進行類似的流程。
在步驟152處,第一微操作確定是否存在現行的表查找。如果否,則流程前進到步驟154。然而,對於該示例,假定第二微操作尚未完成(推測性)表查找操作,因此確定為存在現行的表查找。流程前進到步驟156。
在步驟156處,第一微操作確定其是否比正在進行現行的表查找的第二微操作更早。如果否,則流程前進到步驟146(例如,在可能的空閒時段之後),其中第一微操作重放到管線中(例如,因為可以存在或可以不存在步驟148處接著發生的TLB未命中)。如果第一微操作比第二微操作早(如在該說明性示例中的情況),則流程前進到步驟160。
在步驟160處,第一微操作將其頁和屬性與現行地進行表查找的第二微操作的頁和屬性進行比較。換句話說,第一微操作確定其頁位址(例如,諸如與一個圖示相同的4k區域等的虛擬頁)和屬性是否與第二微操作的頁位址和屬性相同。例如,可以匹配的屬性包括許可權級別(例如,兩個記憶體訪問指令是否都源自相同的程式設計代碼許可權級別,其中如果兩者的程式設計代碼都是用戶代碼或都是監控代碼,則發生匹配)。要匹配的屬性的另一示例包括由記憶體訪問指令表示的操作的類型是否相同,其中如果兩者都是載入操作或兩者都是存儲操作,則發生匹配。屬性的匹配的另一示例是兩個指令都設置訪問位元或壞位元,而例如,如果其中一個指令設置壞位元元而另一個指令不設置壞位元元,則不存在匹配。用於匹配的其它類型的屬性涉及與實現指令相關的行為。例如,如果其中一個指令涉及預取(prefetch),而另一個指令不涉及預取,則這些是不同的行為,因此不存在匹配。作為另一示例,如果兩個指令都涉及可寫操作,則存在匹配,而僅一個可寫是不匹配。這些和/或其它屬性可以是步驟160中的確定主題。注意,屬性確定需要所有屬性匹配(例如,匹配是兩個指令都涉及可寫或啟用寫的操作(其中頁可寫且微操作試圖寫)以及訪問位或壞位元的設置)。如果在頁位址和屬性中不存在匹配,則流程前進到步驟162,否則流程前進到步驟164。
在步驟162處,第一微操作引起第二(較新的)微操作的逐出,並且流程前進到步驟154,在步驟154處,第一微操作發起新的推測性表查找。
在步驟164處,基於該匹配,更新表查找引擎142,使得第二微動作表查找現在表示第一微操作。流程前進到步驟166。
在步驟166處,在第二微操作離開的處理階段,第一微操作接管現行的推測性表查找。換句話說,與過去的技術不同,第一微操作不會在逐出較新的微操作後發起新的推測性表查找。而是,第一微操作利用在現行的表查找期間進行的工作並從當前處理階段繼續。
注意,可以在方法144中實現步驟的量和/或順序的變化,其中一些步驟可以同時進行或以與圖2中呈現的順序不同的順序進行。在一些實施例中,可以進行更少或更多數量的步驟。
鑒於以上描述,本領域普通技術人員應當理解,如圖3的方法168表示並且在一個實施例中由微處理器實現的另一示例性表查找接管方法的一個實施例包括:透過與第一記憶體訪問指令相對應的第一微操作,基於第一虛擬頁位址的轉譯後備緩衝器(TLB)中的未命中來發起第一推測性表查找(步驟170);以及透過與第二記憶體訪問指令相對應的第二微操作,基於比第一微操作更早並且還基於具有與針對第一記憶體訪問指令的第一虛擬頁位址和屬性相匹配的虛擬頁位址和屬性,在第一微操作的當前處理階段接管第一微操作的現行的第一推測性表查找(步驟172)。
流程圖中的任何過程描述或塊應理解為表示代碼的模組、段、邏輯或部分(其包括用於在過程中實現特定邏輯功能或步驟的一個或多個可執行指令),並且替代實現包括在實施例的範圍內,其中如本發明領域技術人員將理解的,功能可以不按所示或討論的順序地執行(包括基本上同時執行或以不同循序執行),這取決於所涉及的功能。在一些實施例中,方法144和/或168的功能可以在包括非暫時性電腦可讀存儲介質的電腦程式產品中實現,該非暫時性電腦可讀存儲介質具有體現在其中的用於指定被配置為進行推測性表查找的微處理器的電腦可讀代碼。
雖然在附圖和前面的描述中示出並詳細描述了本發明,但這樣的圖和描述應被認為是例示性或示例性的,而不是限制性的;本發明不限於所公開的實施例。透過研究附圖、公開內容和所附申請專利範圍,本領域技術人員在實踐所要求保護的發明時可以理解並實現所公開的實施例的其它變形。
注意,可以使用所公開的實施例的各種組合,因此參考實施例或一個實施例並不意味著從其它實施例的特徵的使用中排除該實施例的特徵。在申請專利範圍中,詞語“包括”不排除其它元件或步驟。
100:微處理器 102:指令轉譯器 104:微代碼 106:重命名/分派單元 108:重排序緩衝器 112:執行單元 114:退出單元 116:匯流排界面單元 118:存儲器子系統 122:一級(L1)指令快取記憶體 124:一級(L1)資料快取記憶體 126:二級(L2)快取記憶體 128:轉譯後備緩衝器 132:載入單元 134:存儲單元 136:載入緩衝器 138:存儲緩衝器 142:表查找引擎 144:方法 146-166:步驟 168:方法 170-172:步驟
參考以下附圖,可以更好地理解本發明的各個方面。不必按比例繪製附圖中的組件,而是將重點放在清楚地例示本發明的原理上。此外,在附圖中,相同的附圖標記在多個視圖中表示相應部件。 圖1是示出實現表查找接管系統的實施例的示例性微處理器的方塊圖。 圖2是示例性表查找接管方法的實施例的流程圖。 圖3是示出另一示例性表查找接管方法的實施例的流程圖。
168:方法
170:步驟
172:步驟

Claims (20)

  1. 一種微處理器,包括: 轉譯後備緩衝器,即TLB,其被配置為指示與記憶體訪問指令試圖訪問的記憶體頁的物理頁位址相對應的虛擬頁位址在所述TLB中未命中; 第一微操作,其與第一記憶體訪問指令相對應,並且所述第一微操作被配置為基於第一虛擬頁位址在所述TLB中的未命中來發起第一推測性表查找;以及 第二微操作,其與第二記憶體訪問指令相對應,並且所述第二微操作被配置為基於所述第二微操作比所述第一微操作更早並且還基於具有與針對所述第一記憶體訪問指令的所述第一虛擬頁位址和屬性相匹配的虛擬頁位址和屬性,在所述第一微操作的當前處理階段接管所述第一微操作的現行的第一推測性表查找。
  2. 如請求項1所述的微處理器,其中,所述第二微操作基於TLB未命中並且在所述第一微操作已經發起所述第一推測性表查找之後推動表查找操作。
  3. 如請求項2所述的微處理器,其中,所述第二微操作被配置為確定是否存在現行的表查找,並且回應于不存在現行的表查找,發起新的推測性表查找。
  4. 如請求項3所述的微處理器,其中,所述第二微操作被配置為基於確定為存在現行的所述第一推測性表查找來確定所述第二微操作是否比所述第一微操作更早,並且如果所述第二微操作不是更早,則重放到管線中。
  5. 如請求項4所述的微處理器,其中,所述第二微操作被配置為基於所述第二微操作比所述第一微操作更早,來確定與所述第二記憶體訪問指令相對應的虛擬頁位址和屬性是否與針對所述第一記憶體訪問指令的所述第一虛擬頁位址和屬性相匹配,並且如果不匹配,則逐出所述第二微操作並且發起新的推測性表查找。
  6. 如請求項1所述的微處理器,其中,所述屬性包括許可權級別。
  7. 如請求項6所述的微處理器,其中,所述許可權級別包括用戶代碼和監控代碼。
  8. 如請求項1所述的微處理器,其中,所述屬性包括記憶體訪問類型。
  9. 如請求項8所述的微處理器,其中,所述記憶體訪問類型包括載入和存儲指令。
  10. 如請求項1所述的微處理器,其中,所述屬性包括是否啟用寫。
  11. 如請求項1所述的微處理器,其中,所述屬性包括是否設置訪問位元或壞位元。
  12. 如請求項1所述的微處理器,其中,與所述第一虛擬頁位址的匹配對應於映射到記憶體頁的虛擬記憶體空間的頁。
  13. 如請求項1所述的微處理器,更包括表查找引擎,其中,基於所述匹配,利用所述第二微操作的年齡來更新針對所述第一微操作的表查找引擎。
  14. 一種在微處理器中實現的方法,所述方法包括: 透過與第一記憶體訪問指令相對應的第一微操作,基於第一虛擬頁位址在轉譯後備緩衝器即TLB中的未命中來發起第一推測性表查找;以及 透過與第二記憶體訪問指令相對應的第二微操作,基於所述第二微操作比所述第一微操作更早並且還基於具有與針對所述第一記憶體訪問指令的所述第一虛擬頁位址和屬性相匹配的虛擬頁位址和屬性,在所述第一微操作的當前處理階段接管所述第一微操作的現行的第一推測性表查找。
  15. 如請求項14所述的方法,更包括:透過所述第二微操作,基於TLB未命中並且在所述第一微操作已經發起所述第一推測性表查找之後推動表查找操作。
  16. 如請求項15所述的方法,更包括:透過所述第二微操作,確定是否存在現行的表查找,並且回應于不存在現行的表查找,發起新的推測性表查找。
  17. 如請求項16所述的方法,更包括:透過所述第二微操作,基於確定為存在現行的所述第一推測性表查找來確定所述第二微操作是否比所述第一微操作更早,並且如果所述第二微操作不是更早,則重放到管線中。
  18. 如請求項17所述的方法,更包括:透過所述第二微操作,確定與所述第二記憶體訪問指令相對應的虛擬頁位址和屬性是否與針對所述第一記憶體訪問指令的所述第一虛擬頁位址和屬性相匹配,並且如果不匹配,則逐出所述第二微操作並且發起新的推測性表查找。
  19. 如請求項14所述的方法,其中,所述屬性包括許可權級別、記憶體訪問類型、是否啟用寫、是否設置訪問位元或壞位元中的一個或多個。
  20. 如請求項14所述的方法,更包括基於所述匹配,利用所述第二微操作的年齡來更新所述第一微操作的表查找引擎。
TW110138436A 2020-12-02 2021-10-15 微處理器和在微處理器中實現的方法 TWI782754B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/109,553 2020-12-02
US17/109,553 US11314657B1 (en) 2020-12-02 2020-12-02 Tablewalk takeover

Publications (2)

Publication Number Publication Date
TW202223666A TW202223666A (zh) 2022-06-16
TWI782754B true TWI782754B (zh) 2022-11-01

Family

ID=78424757

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110138436A TWI782754B (zh) 2020-12-02 2021-10-15 微處理器和在微處理器中實現的方法

Country Status (3)

Country Link
US (1) US11314657B1 (zh)
CN (1) CN113641403A (zh)
TW (1) TWI782754B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7996650B2 (en) * 2008-07-14 2011-08-09 Via Technologies, Inc. Microprocessor that performs speculative tablewalks
TW201439900A (zh) * 2012-12-07 2014-10-16 Nvidia Corp 用於提前執行操作的指令分類
TW201823971A (zh) * 2016-12-12 2018-07-01 美商英特爾股份有限公司 用於處理器架構的設備及方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140208075A1 (en) * 2011-12-20 2014-07-24 James Earl McCormick, JR. Systems and method for unblocking a pipeline with spontaneous load deferral and conversion to prefetch
US11966785B2 (en) * 2020-07-30 2024-04-23 Arm Limited Hardware resource configuration for processing system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7996650B2 (en) * 2008-07-14 2011-08-09 Via Technologies, Inc. Microprocessor that performs speculative tablewalks
TW201439900A (zh) * 2012-12-07 2014-10-16 Nvidia Corp 用於提前執行操作的指令分類
TW201823971A (zh) * 2016-12-12 2018-07-01 美商英特爾股份有限公司 用於處理器架構的設備及方法

Also Published As

Publication number Publication date
CN113641403A (zh) 2021-11-12
US11314657B1 (en) 2022-04-26
TW202223666A (zh) 2022-06-16

Similar Documents

Publication Publication Date Title
US11734177B2 (en) Memory interface having multiple snoop processors
US8180981B2 (en) Cache coherent support for flash in a memory hierarchy
US7996650B2 (en) Microprocessor that performs speculative tablewalks
KR102531261B1 (ko) 캐시 메인터넌스 명령
US7111125B2 (en) Apparatus and method for renaming a data block within a cache
US20080005504A1 (en) Global overflow method for virtualized transactional memory
EP3534267B1 (en) Coherency manager
US10019377B2 (en) Managing cache coherence using information in a page table
US10339054B2 (en) Instruction ordering for in-progress operations
US7188215B2 (en) Apparatus and method for renaming a cache line
US8108621B2 (en) Data cache with modified bit array
TWI782754B (zh) 微處理器和在微處理器中實現的方法
US11726693B2 (en) Migrating pages of memory accessible by input-output devices
EP0726524A2 (en) Protocol and system for performing line-fill addressing during copy-back operation
US20070022250A1 (en) System and method of responding to a cache read error with a temporary cache directory column delete
US8108624B2 (en) Data cache with modified bit array
US20230409487A1 (en) Partial-address-translation-invalidation request
US20230099256A1 (en) Storing an indication of a specific data pattern in spare directory entries