TW201346755A - 用於順序指令管線中的亂序預取指令的系統與方法 - Google Patents

用於順序指令管線中的亂序預取指令的系統與方法 Download PDF

Info

Publication number
TW201346755A
TW201346755A TW101142862A TW101142862A TW201346755A TW 201346755 A TW201346755 A TW 201346755A TW 101142862 A TW101142862 A TW 101142862A TW 101142862 A TW101142862 A TW 101142862A TW 201346755 A TW201346755 A TW 201346755A
Authority
TW
Taiwan
Prior art keywords
pipeline
data
instruction
type
sequential
Prior art date
Application number
TW101142862A
Other languages
English (en)
Other versions
TWI506549B (zh
Inventor
Jr James Earl Mccormick
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of TW201346755A publication Critical patent/TW201346755A/zh
Application granted granted Critical
Publication of TWI506549B publication Critical patent/TWI506549B/zh

Links

Classifications

    • 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
    • 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/30047Prefetch instructions; cache control instructions
    • 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
    • G06F9/383Operand prefetching
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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
    • 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]
    • 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)
  • Advance Control (AREA)

Abstract

描述用於提供具有資料預取之處理器架構的設備、系統與方法。在一實施例中,系統包括一或多個處理單元,其包括用來接收至少一資料預取指令的第一類型順序管線。一或多個處理單元包括具有用來接收指令之發出槽(issues slot)的第二類型順序管線,以及用來接收至少一資料預取指令的資料預取佇列。資料預取佇列可根據一或多個因素(例如,第二類型順序管線之至少一執行槽可用、資料預取指令的優先權)將該至少一資料預取指令發給第二類型順序管線。

Description

用於順序指令管線中的亂序預取指令的系統與方法
本發明之實施例與處理器架構之順序管線中的亂序預取指令有關。
長久以來,處理器性能提升的速度快於記憶體性能。處理器與記憶體性能間成長上的差距,意味著現今大多數處理器花費了很多時間來等待資料。現代化的處理器通常具有數個階層的晶片上及可能之晶片外的快取記憶體。這些快取記憶體藉由將經常被存取的線保存在較近、較快的快取記憶體中,以有助於縮短資料存取時間。資料預取係在資料被軟體需要之前,先將資料從快取記憶體/記憶體階層之較慢層移動到較快層的做法。資料預取可由軟體來做。資料預取也可由硬體來做。軟體技術與硬體技術皆有其性能上的限制。
描述提供具有用於順序管線之亂序預取指令之處理器架構的設備、系統與方法。在一實施例中,實施包括硬體(例如資料預取佇列)與軟體資料預取的系統。在此系統中,整體微架構之特徵、指令集架構之特性、以及軟體基的特性,乃蘊含於各種資料預取技術及特徵的設計、選擇及合成。
順序管線按順序執行指令,然而亂序管線允許大部分的指令以亂序執行,其包括顯式資料預取指令。順序管線的一缺點是在於執行特定指令所需的資源無法立即可用可致使管線(且因此該指令及所有後續的指令)拖延並等待資源。這些拖延甚至可以是由顯式資料預取指令所造成。亂序管線的缺點是在於全亂序執行所需用的機器昂貴。本發明之實施例消除了其中一些可被顯式資料預取指令等待不可用之資源所觸發的拖延。本文所描述用於順序管線的處理器架構比亂序管線所需的便宜很多。
本發明之實施例提供的能力可將某些因不可用資源而無法執行的顯式資料預取指令擱置,而不致拖延後續指令。因此,後續的指令相對於資料預取來說,實際上是亂序執行。在從源暫存器讀取了資料預取指令的位址之後,發生此資料預取離開主管線之調度並進入此資料預取佇列。例如,ALU管線在將資料預取指令送往資料預取佇列之前,會先讀取資料預取指令的位址。當該資料預取在資料預取佇列中等待其執行所需之資源的同時,後續指令可繼續執行。
在以下的描述中,為了提供更透徹的瞭解,陳述了諸多特定的細節,諸如邏輯實施、信號與匯流排之大小與名稱、系統組件的類型與相互關係、以及邏輯分割/整合選擇等。不過,須瞭解,熟悉此方面技術之人士沒有這些特定的細節仍可實行本發明的實施例。在其它實例中,沒有詳細顯示出控制結構與閘層次的電路,以避免模糊了本發 明的實施例。那些熟悉此方面一般技術之人士有了本文的描述,沒有太多經驗也能實施適當的邏輯電路。
在以下的描述中使用某些術語來描述本發明之實施例的特徵。例如,“邏輯”代表配置為執行一或多項功能的硬體及/或軟體。例如,“硬體”的例子包括但不限於積體電路、有限狀態機、或甚至組合邏輯。積體電路可以是處理器的形式,諸如微處理器、特定用途積體電路、數位信號處理器、微控制器、諸如此類。晶片間的互連,可以每一皆是點對點或可以每一皆是多點配置,或某些是點對點而其它是多點配置。
圖1說明一實施例的流程圖,圖中提供按照一實施例之順序管線之亂序預取指令的電腦實施方法100。方法100是由處理邏輯來執行,其可包含硬體(電路、專用邏輯等)、軟體(諸如在通用電腦系統或專用機器或裝置上執行)、或兩者的組合。在一實施例中,方法100是由與本文所討論之架構相關的處理邏輯來執行。
在方塊102,處理邏輯根據一或多個因素(例如第二類型順序管線之一或多個發出槽的可用性、資料預取指令之優先權)決定是否將資料預取指令(例如lfetch)發給第一類型順序管線(例如,算術邏輯單元(ALU)管線、整數管線)或給第二類型順序管線(例如記憶體管線)。例如,對於軟體來說,可以經由某些指令束編碼,強迫lfetch在另一需要使用相同管線的指令之前,先下到第二類型管線為可能的。Lfetch可以是最低優先或最高優先。軟體排程器可 做此決定。第二類型順序管線的可用發出槽可能有限(例如每個時鐘周期2個)。在方塊104,第一類型順序管線根據一或多個因素及軟體排程器之決定來接收資料預取指令。在方塊106,第一類型順序管線讀取該資料預取指令的位址暫存器,並將資料預取指令發給資料預取佇列。在方塊108,當第二類型順序管線的至少一執行槽可用之時,或藉由先取得想使用第二類型順序管線的其它指令,資料預取佇列將該資料預取指令發給第二類型順序管線。可先取得另一指令以避免資料預取佇列的容量溢流因而丟掉資料預取指令(例如lfetch)。接著,當管線被拖延或重播時,將lfetch從資料預取佇列發給第二類型管線。在方塊110,第二類型順序管線也使用此管線的發出槽接收其它指令(例如載入、儲存)。
在一實施例中,第一類型順序管線係算術邏輯單元(ALU),用來接收ALU指令與資料預取指令,而第二類型順序管線係記憶體管線。
圖2說明按照一實施例之處理器架構的方塊圖。處理器架構200包括順序管線220與用於接收資料預取指令及其它指令的選用順序管線221。順序管線220、221可以是用來接收ALU指令與資料預取指令(例如lfetch-on-A)的算術邏輯單元(ALU)管線。或者,管線220、221至少其中之一可以是用來接收整數指令與資料預取指令的整數管線。個別的管線220、221可一起動作以形成單一的多指令寬順序管線。換言之,在橫跨管線及管線內保持指令 順序。
處理器架構200進一步包括具有發出槽的第二類型順序管線230、231,其經由多工器218、219接收其它指令。槽指的是管線中可包含操作的入口(entry)。在實施例中,該架構包括管線230、231至少其中之一。處理器架構200包括轉譯後備緩衝區(translation lookaside buffer;TLB)240,具有若干用來將虛擬位址映射到實體位址的埠。埠指的是大結構的輸入,如可接受操作的陣列。TLB 240與TLB 241可分別位於管線230與231內。當在TLB 240或241中沒發現與資料預取指令相關之個別的虛擬位址時(例如TLB遺失lfetch),資料預取佇列210接收資料預取指令。硬體分頁查核行程器(hardware page walker)250藉由發出特殊的載入指令沿著記憶體管線來存取(例如“查核行程”)記憶體中的分頁表。當在TLB 240或241中未發現資料預取指令時,硬體分頁查核行程被初始化。硬體分頁查核行程器經由多工器252接收硬體分頁查核行程,且包括一些緩衝,以使其能處理同時的多硬體分頁查核行程而不會拖延管線。
資料預取佇列210在這些順序管線的至少一執行槽可用之時,或藉由先取得想使用第二類型順序管線的其它指令,將該資料預取指令發給第二類型順序管線230、231至少其中之一。若無硬體分頁查核行程未處理,資料預取指令可被發出。本設計在發出資料預取指令之前,並不總是等待全部的硬體分頁查核行程都被處理。例如,在實施 例中,僅由於TLB未命中而被插入資料預取的那些資料預取,才會在資料預取發出前等待全部硬體分頁查核行程都被處理。硬體分頁查核行程器250可為各自的資料預取指令或已失敗的硬體分頁查核行程將各自的轉譯插入各自的TLB。如果硬體分頁查核行程與轉譯第二次不在TLB中,則資料預取指令被丟棄。當到達相同頁的多個資料預取指令在其各自的TLB中未被發現時,多個硬體分頁查核行程可被合併成單一個分頁查核行程。
在發生多硬體分頁查核行程之時,可執行第二類型順序管線。
本設計的處理器架構增加若干資料預取特徵(例如,發送lfetch指令給第一類型管線、如下文中所描述的無阻塞lfetch等)。所建立的微架構能以最低的成本與複雜度致能所有這些預取機制,也很容易致能再增加的其它預取機制。
圖3說明按照實施例之具有資料預取佇列(DPQ)310的處理器架構300。DPQ 310可以是先進先出(FIFO)結構,其暫時儲存來自本文所描述之某些或全部軟體及硬體預取源的預取請求。此結構允許接受預取的短叢發而不會回壓管線。圖3顯示包括有DPQ 310、引擎314、MLD預取器360、及多工器311、312、318、及319的預取系統302如何連接到現有的管線320、321、330、及331,以及資料預取佇列310如何是預取系統302的中心樞紐。中階資料快取(MLD)370的預取可來自MLD預取器方塊360 。來自lfetch-on-A管線特徵的Lfetch指令可來自第一類型順序管線320、321其中之一(例如,A管線)。與無阻塞資料TLB或第一階資料快取(FLD)硬體預取特徵相關的預取可來自第二類型順序管線330、331其中之一(例如,M管線)。接著,在當主管線指令緩衝器邏輯(IBL)302未發出指令進入同一M管線的周期中,DPQ將預取插入兩者之一的M管線。有時為了避免丟棄lfetch指令,DPQ取得高於等待要從主管線指令緩衝器發出之其它的M管線指令的優先權。
在一實施例中,DPQ是一8入的FIFO。每一個預取請求剛好佔據DPQ中的一個入口,即使其最終將被擴展成數個單獨的預取。當預取請求到達它的FIFO頭時,其被移入擴展引擎(expansion engine;EE)314。EE314將來自DPQ的預取請求擴展成單獨預取的群組,並接著將這些單獨的預取順序地注入M管線。EE也允許單獨的預取跨越並發到相對的M管線,以便最有效率地使用未被使用的管線槽。如圖3之說明,DPQ可具有兩個寫入埠。第一埠316可取得來自管線330或管線320的寫入,第二埠317可取得來自管線331或管線321或MLD預取器的寫入。DPQ可接受每周期每埠一個預取請求。A埠上的lfetch應被插入到DPQ。如果未命中資料TLB,M埠上的lfetch需要被插入到DPQ。如果在DPQ的單個埠上同時有兩個DPQ插入請求,則僅出現來自A埠的插入。MLD硬體預取方塊360的輸出端包括小的FIFO佇列(Q),如果 它的請求與其它的預取請求發生衝突,可允許它們被緩衝並於稍後再插入DPQ。在DPQ內,所有類型的預取都按順序被保持,但lfetch指令被給予比被硬體所初始化的預取更高的重要性。例如,如果lfetch已在擴展引擎中等待太久仍未找到未被使用的管線槽來使用,其會觸發管線泡來強迫建立一空的槽。不過,如果硬體預取等待太久,其可能被丟棄。此外,如果DPQ開始被填滿,等待中的硬體預取可能被刪除以製造更多空間給新的lfetch。DPQ提供一有效率、集中化、可共享的資源來處理來自各種來源的預取。
圖4說明按照一實施例之系統1300的方塊圖。系統1300包括一或多個處理器1310、1315,其耦接至圖形與記憶體控制器集線器(graphics memory controller hub;GMCH)1320。選用性質的額外處理器1315在圖4中以虛線來表示。一或多個處理器1310、1315一部分包括以上所討論的處理器架構(例如200、300)。在實施例中,其架構包括第一類型順序管線220與選用第二管線221。這些管線(例如ALU管線)可接收ALU指令與資料預取指令。這些管線接收來自指令緩衝器邏輯(instruction buffer logic;IBL)202之至少一個資料預取指令。第二類型順序管線230、231(例如記憶體管線)具有發出槽與執行槽。以發出槽接收來自IB 202的其它指令。資料預取佇列210從管線220、221其中之一或兩者接收至少一個資料預取指令。當管線230、231之至少一執行槽可用時,資料預 取佇列210發出至少一資料預取指令給第二類型順序管線230、231至少其中之一。系統進一步包括一或多個執行單元232、234,用來執行與第二類型順序管線230、231之執行槽相關的指令。執行單元可位於順序管線230與231中,或與管線230、231相關。軟體排程器根據第二類型順序管線之一或多個發出槽的可用性來決定是否發送至少一個資料預取指令給第一類型順序管線(例如220、221)或給第二類型順序管線(例如230、231)。在實施例中,第一類型順序管線係整數管線,用來接收整數指令及資料預取指令。系統1300進一步包括記憶體1340,耦接至一或多個處理單元。第二類型順序管線的一或多個執行單元發送與被執行之指令相關的資料給記憶體。
圖4說明GMCH 1320耦接至記憶體1340,記憶體1340例如是動態隨機存取記憶體(DRAM)。至少在一實施例中,DRAM與非揮發性快取記憶體相關。
GMCH 1320可以是晶片組或晶片組的一部分。GMCH 1320可以與處理器1310、1315通信,並控制處理器1310、1315與記憶體1340之間的相互作用。GMCH 1320也做為處理器1310、1315與系統1300之其它元件間的加速匯流排介面。關於至少一實施例,GMCH 1320經由多點匯流排(諸如前端匯流排(front side bus;FSB)1395與處理器1310、1315通信。
此外,GMCH 1320也耦接至顯示器1345(諸如平面顯示器)。GMCH 1320可包括整合的繪圖加速器。GMCH 1320進一步耦接至輸入/輸出(I/O)控制器集線器(ICH)1350,其用來將各種不同的周邊裝置耦接至系統1300。圖4之實施例中所顯示的例子係外接的繪圖裝置1360連同另一周邊裝置1370,前者可以是耦接至ICH 1350之分離的繪圖裝置。
在系統1300中也可存在有額外或不同的處理器。例如,額外的處理器1315可包括與處理器1310相同的額外處理器,額外處理器係異質於或非對稱於處理器1310、加速器(諸如繪圖加速器或數位信號處理(DSP)單元)、現場可程式閘陣列、或任何其它的處理器。從量度各種不同之特徵而論,實體資源1310、1315之間的各種差異包括架構、微架構、熱、耗電特性、諸如此類。這些差別可有效地顯示出處理元件1310、1315它們本身為非對稱與異質的。關於至少一實施例,不同的處理元件1310、1315可存在於同一晶片封裝內。在軟體(例如軟體排程器)被處理元件1310、1315執行期間,其也完全或至少部分駐在於處理元件1310、1315內。處理元件1310、1315也構成機器可存取儲存媒體與處理器架構200。
現參閱圖5,顯示按照本發明實施例之第二系統1400的方塊圖。如圖5所示,多處理器系統1400係點對點互連系統,且包括第一處理器1470與第二處理器1480經由點對點互連1450耦接。如圖5所示,每一個處理器1470、1480都包括本文所描述的處理器架構(例如200、300)。當軟體(例如軟體排程器)被處理器執行期間,其也完全 或至少部分駐在處理器內。處理器也構成機器可存取儲存媒體。或者,一或多個處理器1470、1480可以是處理器以外的元件,諸如加速器或現場可程式閘陣列。雖然僅以兩個處理器1470、1480來顯示,但須瞭解,本發明之實施例的範圍並不限於此。在其它實施例中,在某處理器中可存在有一或多個額外的處理元件。
處理器1470可進一步包括整合式記憶體控制器集線器(IMC)1472與點對點(P-P)介面1476與1478。同樣地,第二處理器1480可包括IMC1482與點對點(P-P)介面1486與1488。處理器1470、1480使用點對點(PtP)介面電路1478、1488經由點對點(PtP)介面1450交換資料。如圖5所示,IMC 1472、1482將處理器耦接至各自記憶體,即記憶體1442與記憶體1444,其可以是主記憶體局部地附接於各個處理器的一部分。
處理器1470、1480使用點對點介面電路1476、1494、1486、1498經由個別的P-P介面1452,1454與晶片組1490交換資料。晶片組1490也經由高性能圖形介面1439與高性能繪圖電路1438交換資料。
可包括在任一處理器中的共用快取記憶體(未顯示)在兩處理器的外部,但是經由P-P互連與處理器連接,以使得如果處理器進入低耗電模式,任一或兩者處理器的本地快取資訊可儲存在共用快取記憶體中。
晶片組1490經由介面1496耦接至第一匯流排1416。在一實施例中,第一匯流排1416可以是周邊組件互連 (PCI)匯流排,或諸如PCI快捷匯流排或其它第三代I/O互連匯流排,雖然本發明之實施例的範圍不限於此。
如圖5所示,各種輸入/輸出裝置1414可耦接至第一匯流排1416,連同耦接第一匯流排1416的匯流排電橋1418耦接至第二匯流排1420。在一實施例中,第二匯流排1420可以是低接腳數(LPC)匯流排。在一實施例中,可耦接至第二匯流排1420的各種裝置例如包括鍵盤/滑鼠1422、通信裝置1426、及資料儲存單元1428,諸如磁碟機或其它包括有碼1430的大量儲存裝置。此外,音響I/O1424可耦接至第二匯流排1420。請注意,其它的架構也都可行。例如,系統可實施為多點傳輸匯流排或其它這類架構的來取代圖5的點對點架構。
現請參閱圖6,圖中顯示按照本發明之實施例之第三系統1500的方塊圖。圖5與6中同樣的元件負有同樣的參考編號,且為了避免模糊了圖6的其它態樣,圖6的某些態樣已從圖6中刪除。
圖6說明的處理元件1470、1480分別可包括處理器架構(例如200、300)、整合式記憶體與I/O控制邏輯("CL")1472與1482。對於至少一實施例而言,CL 1472、1482可包括記憶體控制器集線器邏輯(IMC),諸如前文與圖4及5相關的描述。此外,CL 1472、1482可包括I/O控制邏輯。圖6不僅說明記憶體1442、1444耦接至CL 1472、1482,還包括I/O裝置1514也耦接至控制邏輯1472、1482。傳統的I/O裝置1515耦接至晶片組1490。
圖7說明係用來說明按照一實施例所實施之系統700的功能性方塊圖。處理系統700的說明實施例包括一或多個具有處理器架構790(例如,處理器架構200、處理器架構300)的處理器(或中央處理單元)705、系統記憶體710、非揮性("NV")記憶體715、資料儲存單元("DSU")720、通信鏈結725、以及晶片組730。所說明的處理系統700可代表任何計算系統,包括桌上型電腦、筆記型電腦、工作站、手持式電腦、伺服器、刀鋒伺服器、諸如此類。
處理系統700的之元件的互連如下。處理器705經由晶片組730通信地耦接至系統記憶體710、NV記憶體715、資料儲存單元720、及通信鏈結725,以往/來發送與接收指令或資料。在一實施例中,NV記憶體715係快閃記憶體裝置。在其它實施例中,NV記憶體715包括唯讀記憶體(ROM)、可程式ROM、可抹除可程式ROM、電氣可抹除可程式ROM、諸如此類任何一種。在一實施例中,系統記憶體710包括隨機存取記憶體(RAM),諸如動態RAM(DRAM)、同步DRAM(SDRAM)、雙資料率SDRAM(DDR SDRAM)、靜態RAM(SRAM)、諸如此類。DSU 720代表用於軟體資料、應用程式、及/或作業系統的任何儲存裝置,但最典型的是非揮發性儲存裝置。DSU 720可選擇性地包括一或多個整合驅動電子(integrated drive electronic;IDE)硬式磁碟機、增強型IDE(enhanced IDE;EIDE)硬式磁碟機、多磁碟機陣列(redundant array of independent disks;RAID)、小型電腦系統介面(small computer system interface;SCSI)硬式磁碟機、諸如此類。雖然所說明的DSU 720是在處理系統700的內部,但DSU 720可外部耦接於處理系統700。通信鏈結725將處理系統700耦接至網路,以使處理系統700可在網路上與一或多部其它電腦通信。通信鏈結725可包括數據機、乙太網路卡、十億位元乙太網路卡、通用序列匯流排(USB)埠、無線網路介面卡、光纖介面、諸如此類。
DSU 720可包括其上儲存有一或多組指令(例如軟體)的機器可存取媒體707,具體化本文所描述的任何一或多個方法或功能。軟體(軟體排程器)在被處理器705執行期間,其也完全或至少部分駐在處理器705內,處理器705也構成機器可存取儲存媒體。
雖然例示性實施例中所顯示的機器可存取媒體707是單一媒體,但“機器可存取媒體”一詞應包括用來儲存一或多組指令的單個媒體或多個媒體(例如,集中式或分散式資料庫、及/或相關的快取記憶體與伺服器)。“機器可存取媒體”也應包括能夠儲存、編碼、或載有供機器執行之指令組並致使機器實施本發明之實施例之任一項或多項方法的任何媒體。因此,“機器可存取媒體”一詞應包括但不限於固態記憶體、光學、及磁性媒體。
因此,機器可存取媒體包括所提供(即儲存及/或傳送)之資訊的形式可被機器(例如電腦、網路裝置、個人數位助理、製造機具、任何具有一或多個處理器組的裝置等)存取的任何機制。例如,機器可存取媒體包括可記錄/不 可記錄媒體(例如唯讀記憶體(ROM);隨機存取記憶體(RAM);磁碟儲存媒體;光學儲存媒體;快閃記憶體裝置等)、以及電、光、聲、或其它傳播信號之形式(例如載波、紅外線信號、數位信號等);等。
如圖7之說明,處理器系統700的每一個子組件包括用於彼此間通信的輸入/輸出(I/O)電路750。I/O電路750可包括阻抗匹配電路,其可被調整以獲得所想要的輸入阻抗,從而減少信號反射及各子組件間的干擾。在一實施例中,PLL架構700(例如PLL架構100)可包括在各種不同的數位系統中。例如,PLL架構790可包括在處理器705及/或通信地耦接於處理器以提供具彈性的時鐘源。時鐘源可提供給處理器705的狀態元件。
須明瞭,為清晰之目的,處理系統700的各種其它元件已從圖7及對其的討論中排除。例如,處理系統700可進一步包括繪圖卡、額外的DSU、其它的永久性資料儲存裝置、諸如此類。晶片組730也可包括用來互連子組件的系統匯流排及及種不同的其它資料匯流排,諸如記憶體控制器集線器與輸入/輸出(I/O)控制器集線器,以及包括用來將周邊裝置連接至晶片組730的資料匯流排(例如周邊組件互連匯流排)。相應地,處理系統700少了圖中所說明的一或多個元件也可操作。例如,處理系統700不需要包括DSU 720。
本文所描述的處理器設計包括了強勢的新微架構設計。在特定的實施例中,此設計包含位在單片矽上的8個多 緒核心,且可每個周期發出多達12個指令給執行管線。12條管線可包括2條M管線(記憶體)、2條A管線(ALU)、2條I管線(整數)、2條F管線(浮點)、3條B管線(分支)、及1條N管線(NOP)。M管線的數量從先前Itanium®處理器的4減少到2。如先前的Itanium®處理器設計,指令按順序被發出與止用。記憶體操作在止用前偵測任何錯誤,但它們可在記憶體操作完成之前止用。使用載入目標暫存器的指令延遲它們的執行,直到載入完成。在儲存完成之前,可止用使用儲存之記憶體結果的記憶體指令。快取階層保證這類記憶體操作將按正常的順序完成。
資料快取階層可由以下的快取層級組成:16 KB第一級資料快取(FLD-核心私用)
256 KB中級資料快取(MLD-核心私用)
32 MB最後一級指令與資料快取(LLC-所有8核心共用)
LLC包含所有其它快取。所有8個核心可共用LLC。MLD與FLD供單個核心私用。特定核心上的執行緒共用所有層級的快取。所有的資料快取可具有64-位元組快取線。為了仿真先前Itanium®處理器之128-位元組快取線的性能,典型上,MLD未命中觸發對兩條64-位元組線的提取,其拼湊成一個對準的128-位元組區塊。此最後的特徵稱為MLD成對線預取處理器架構(例如Itanium®架構),其定義包括或不包括偵錯錯誤位址軟體可用來預取資料進入各種不同的快取層級的lfetch指令。此lfetch指令 不需要關於其它記憶體操作的架構順序。
由於Itanium®架構對於軟體最佳化的支援與焦點包括了軟體資料預取,因此,在本文所描述之處理器設計上執行的軟體,要比在其它架構中之情況更有可能包含軟體資料預取。此軟體資料預取在提高性能方面已十分成功。在一實施例中,在本處理器設計上執行的例示性軟體會是大企業級的應用程式。這些應用程式傾向具有大的快取與記憶體使用量及需要高的記憶體帶寬。資料預取,如所有形式的臆測,當臆測不正確時,會導致性能損失。基於此,使無用的資料預取(未消除快取未命中的資料預取)次數減至最少很重要。資料預取消耗進入、離開記憶體階層之不同層級與在其間的有限帶寬。資料預取移置其它的線離開快取記憶體。無用的資料預取消耗這些資源而無任何獲益,並損害對這類資源之可能的更佳使用。在前文所描述的多執行緒多核心處理器中,諸如通信鏈結與快取記憶體等共用資源會被非臆測的存取極重度地利用。大企業的應用程式傾向強調這些共用資源。在這樣的系統中,限制無用之預取的數量以避免浪費已被非臆測之存取所使用之資源是個關鍵。有趣的是,軟體資料預取技術具有比很多硬體資料預取技術產生較少無用預取的傾向。不過,由於其輸入的動態特性,硬體資料預取技術有能力產生軟體有時無法識別的有用資料預取。軟體與硬體資料預取具有種種其它互補的強項與弱點。本處理器設計使得軟體預取更有效率、提高守恆、互補的高精確度硬體資料預取且不會損害 到軟體資料預取、獲得無重大損失及少許的輕微損失之具有平均廣泛增益的強固性能增益、使所需的設計資源減至最少。
本處理設計的一些特徵增進了軟體資料預取的效率。這些特徵稱為lfetch-on-A與無阻塞lfetch。硬體資料預取特徵包括MLD硬體預取與FLD硬體預取。本處理器設計的微架構特徵係資料預取佇列(DPQ),其為涉及執行與本文所描述之所有特徵相關之資料預取的共用資源。在處理器(例如Itanium®處理器)上執行的軟體碼,可用執行指令之每個周期中可用的執行單元之類型與數量的知識來排程。在先前的Itanium®處理器上,lfetch指令連同所有其它記憶體操作(諸如載入與儲存)都在M管線上執行。在一實施例中,如本文之描述,軟體每周期最多可使用2條M管線的發出槽。於是,使用M-管線發出槽的需求,乃是與lfetch相關的重要成本。有趣的是,雖然M-管線上的發出槽可能不足,但由於本設計之管線中的拖延與重播,周期中有很大一部分的M管線執行槽未被使用。此閑置的帶寬無法為軟體所用,這是因為在順序管線中定義一指令的拖延或重播會拖延或重播所有後續的指令。除了兩條M管線之外,本處理器架構也具有兩條A管線與兩條I管線。A管線的重要性遠比M管線低,且遠比M管線來的有空,這是因為被A管線執行的ALU指令,也可由I管線或M管線來執行。如先前所提及,相對於其它的記憶體操作,lfetch允許以任何順序來執行。因此,lfetch的 非偵錯(non-faulting)特點,僅需要關於其它指令按順序存取它的暫存器。記憶體存取lfetch的部分可被推遲。
在對於降低發出lfetch指令之成本的努力,本設計允許lfetch發給A管線或M管線。當lfetch被向下發給A管線時,其單純地讀取它的位址暫存器,並將其置入DPQ。接著,當M管線被拖延或重播時,lfetch可從DPQ發送到M管線。被發送到A管線的lfetch指令具有較長的潛時(例如最少+7個周期),但其僅需使用M管線的執行槽而非M管線指令的發出槽。軟體排程器可控制lfetch下行到哪條管線,因此,此特徵給予軟體關於M管線發出帶寬取捨lfetch之潛時的能力。
處理器(例如Itanium®處理器)具有硬體分頁查核行程器,其可查詢記憶體中之虛擬湊雜分頁表(virtual hash page table;VHPT)中的轉譯,並將其插入到TLB。在先前的Itanium®處理器中,當lfetch未命中資料TLB並初始化硬體分頁查核行程時,管線拖延一段硬體分頁查核行程的持續時間。以此方法的問題是無用的lfetch會拖延管線一段長的時間。由於lfetch指令固有的臆測,其會無用地嘗試去參考從未被非臆測之指令參考的分頁。此情況的一例是當在迴圈中使用lfetch指令來預取在迴圈之稍後的迭代中可能需要的資料時。在此情況,當迴圈存在時,一些無用的lfetch指令已被發出。這類指令很容易造成無用的硬體分頁查核行程及相關之長潛時的管線拖延。值得注意的是,總是丟棄未命中資料TLB的lfetch指令也不是 好的選擇,因為有時預取是被需要的。此情況的例子是從大位址空間存取資料的迴圈。這類迴圈需要引發相當多的硬體分頁查核行程。如果lfetch指令被丟棄,當它們未命中資料TLB時,則可能喪失很多有用的預取。
為提出此議題並使軟體資料預取更有效率,本設計使用大部分lfetch指令係非偵錯類型,且這類lfetch可關於所有其它指令亂序執行的事實。首先,本設計將硬體分頁查核行程器的能力延伸到使其能夠同時處理多個硬體分頁查核行程。第二,本設計使用DPQ來佇列未命中資料TLB的lfetch指令。因此,在本設計中,未命中資料TLB的lfetch可引發硬體分頁查核行程,並接著被置入DPQ,在硬體分頁查核行程將轉譯插入TLB中之後再發出。當到達相同頁之多個lfetch指令未命中資料TLB時,多個可能的硬體分頁查核行程被合併成單一個行走,且所有的lfetch指令被置入DPQ。如果DPQ被lfetch指令填滿,其將會拖延主管線以避免丟棄lfetch。此技術類似於使快取不阻塞的技術。如同無阻塞快取,當佇列入口被用完時,無阻塞TLB存取變成阻塞存取。
MDL硬體預取器係一順序預取器,其將線從較高階快取或記憶體移入MLD。其追蹤中階資料快取未命中的空間位置,及在觸發未命中的附近可能請求額外的線。如圖3中之說明,預取器根據藉由監視MLD到環380的發送、介面到LLC快取的存取,來追蹤以4K頁面為基礎之多達8個未命中位址流。對於每一個位址流,其記錄最近 的未命中位址以及目前的預取方向與深度。對於在先前未命中之5條快取線以內的每一個未命中,預取器首先在向前或向後的方向發出對應於記錄在對應之歷史登錄之預取深度欄中之對應數量的順序預取。接著,其增加該位址流的預取深度直到4條快取線。本質上,此預取演算法動態地調整中層資料快取之有效的線大小,取決於被觀察之快取未命中的空間位置而定。為減少硬體所引發之預取之潛在的負面影響,MLD預取器僅回應要求的載入未命中做為觸發。軟體引發的預取(lfetch)、儲存未命中、與硬體引發之預取都不予理會。此外,MLD預取要求在非最近使用的狀態中填滿中層資料快取。因此,在相同的組中無用的預取具有較高的可能性先於其它線被逐出,而有用的預取將會在存取該線的第一個要求上被標示為最近使用的。
須明瞭,本說明書從頭的尾提到的“一實施例”或“實施例”意指所描述有關該實施例的特定特徵、結構、或特性包括在至少一實施例中。因此,此強調且需明瞭,在本說明書各部分中所提到的兩或更多個“實施例”、“一實施例”、或“替代實施例”並不必然全都參考同一實施例。此外,在一或多個實施例中也適合結合這些特定特徵、結構、或特性。
在以上對各實施例的詳細描述中有參考附圖,這些附圖構成本說明書的一部分,且其中係藉由繪示但非限制可實行本發明的特定實施例來顯示。在各圖中,在從頭到尾 數個圖中,相同的數字描述實質上類似的組件。對說明之實施例做充分詳細地描述,以使熟悉此方面技術之人士能夠實行本文所揭示的教學。其它的實施例則是利用或衍生自該些實施例,以致於可做結構與邏輯的置換與變化,不會偏離本揭示的範圍。因此,以下的詳細描述並無限制之意,且各不同實施例之範圍僅由所附申請專利範圍連同這些申請專利範圍所規範之完整範圍的相等物來定義。
200‧‧‧處理器架構
202‧‧‧指令緩衝器邏輯
220‧‧‧順序管線
221‧‧‧順序管線
230‧‧‧第二類型順序管線
231‧‧‧第二類型順序管線
218‧‧‧多工器
219‧‧‧多工器
240‧‧‧轉譯後備緩衝區
241‧‧‧轉譯後備緩衝區
210‧‧‧資料預取佇列
250‧‧‧硬體分頁查核行程器
252‧‧‧多工器
300‧‧‧處理器架構
302‧‧‧指令緩衝器邏輯
310‧‧‧資料預取佇列
311‧‧‧多工器
312‧‧‧多工器
314‧‧‧擴展引擎
316‧‧‧第一埠
317‧‧‧第二埠
318‧‧‧多工器
319‧‧‧多工器
320‧‧‧管線
321‧‧‧管線
330‧‧‧管線
331‧‧‧管線
360‧‧‧中階資料快取硬體預取器
370‧‧‧中階資料快取
1300‧‧‧系統
1310‧‧‧處理器
1315‧‧‧處理器
1320‧‧‧圖形與記憶體控制器集線器
1340‧‧‧記憶體
1345‧‧‧顯示器
1350‧‧‧輸入/輸出控制器集線器
1360‧‧‧外接的繪圖裝置
1370‧‧‧peripheral device
1395‧‧‧前端匯流排
1400‧‧‧多處理器系統
1470‧‧‧第一處理器
1480‧‧‧第二處理器
1450‧‧‧點對點互連
1472‧‧‧整合式記憶體控制器集線器
1482‧‧‧整合式記憶體控制器集線器
1476‧‧‧點對點介面
1478‧‧‧點對點介面
1486‧‧‧點對點介面
1488‧‧‧點對點介面
1450‧‧‧點對點介面
1442‧‧‧記憶體
1444‧‧‧記憶體
1494‧‧‧點對點介面
1498‧‧‧點對點介面
1452‧‧‧點對點介面
1454‧‧‧點對點介面
1490‧‧‧晶片組
1438‧‧‧高性能繪圖電路
1439‧‧‧高性能圖形介面
1496‧‧‧介面
1416‧‧‧第一匯流排
1414‧‧‧輸入/輸出裝置
1418‧‧‧匯流排電橋
1420‧‧‧第二匯流排
1422‧‧‧鍵盤/滑鼠
1426‧‧‧通信裝置
1428‧‧‧資料儲存單元
1430‧‧‧碼
1424‧‧‧音響輸入/輸出
1514‧‧‧輸入/輸出裝置
1515‧‧‧傳統的輸入/輸出裝置
700‧‧‧處理系統
790‧‧‧處理器架構
705‧‧‧處理器
710‧‧‧系統記憶體
715‧‧‧非揮性記憶體
720‧‧‧資料儲存單元
725‧‧‧通信鏈結
730‧‧‧晶片組
707‧‧‧機器可存取媒體
750‧‧‧輸入/輸出電路
790‧‧‧PLL架構
380‧‧‧環
本發明的各種實施例係藉由附圖之圖中非限制的例子來說明,其中:圖1說明按照本發明之實施例,提供順序管線之亂序預取指令之電腦實施方法一實施例的流程圖;圖2說明按照本發明一實施例的處理器架構;圖3說明按照本發明另一實施例的處理器架構;圖4係按照本發明一實施例之系統的方塊圖;圖5係按照本發明實施例之第二系統的方塊圖;圖6係按照本發明實施例之第三系統的方塊圖;及圖7說明的功能性方塊圖說明按照本發明一實施例實施的系統。

Claims (20)

  1. 一種處理器架構,包含:至少一順序管線,用來接收資料預取指令與其它指令;轉譯後備緩衝區(TLB),具有若干埠,供將虛擬位址映射到實體位址;資料預取佇列,當在該TLB中未發現與各個資料預取指令相關的個別虛擬位址時,用來接收資料預取指令;以及硬體分頁查核行程器(hardware page walker),當在該TLB中未發現各個資料預取指令時,用來存取記憶體中的分頁表。
  2. 如申請專利範圍第1項之處理器架構,其中,該至少一順序管線係算術邏輯單元(ALU)管線,用來接收ALU指令與資料預取指令。
  3. 如申請專利範圍第1項之處理器架構,進一步包含:第二類型順序管線至少其中之一具有發射槽(issues slots),用來接收複數個其它指令。
  4. 如申請專利範圍第3項之處理器架構,其中,當該至少其中一的該第二類型順序管線的至少一執行槽可用之時,該資料預取佇列將資料預取指令發給該第二類型順序管線的該至少其中之一。
  5. 如申請專利範圍第1項之處理器架構,其中,當多 個指令同時從該硬體分頁查核行程器請求該相同的轉譯時,多硬體分頁查核行程被合併成單分頁查核行程。
  6. 如申請專利範圍第1項之處理器架構,其中,該至少一順序管線係整數管線,用來接收整數指令與資料預取指令。
  7. 如申請專利範圍第1項之處理器架構,其中,當發生多硬體分頁查核行程時,該第二類型順序管線的該至少其中之一執行。
  8. 一種系統,包含:一或多個處理單元,包含,第一類型的順序管線,用來接收至少一資料預取指令;第二類型順序管線至少其中之一具有發射槽,用來接收複數個指令;以及資料預取佇列,用來接收該至少一資料預取指令,並在該第二類型順序管線的該至少其中之一的至少一執行槽可用之時或如果欲先取另一指令時,將該至少一資料預取指令發給該第二類型順序管線的該至少其中之一。
  9. 如申請專利範圍第8項之系統,進一步包含:額外的第一類型順序管線,其中,該第一類型順序管線係算術邏輯單元(ALU)管線,用來接收ALU指令與資料預取指令。
  10. 如申請專利範圍第8項之系統,其中,該第二類型順序管線的該至少其中之一包含記憶體管線。
  11. 如申請專利範圍第10項之系統,進一步包含:一或多個執行單元,用來執行與該記憶體管線之該執行槽相關的指令。
  12. 如申請專利範圍第11項之系統,進一步包含:軟體排程器,用來根據包括該第二類型順序管線的一或多個發射槽之至少其中之一的可用性及該至少一資料預取指令之優先權的一或多個因素,以決定是否發送該至少一資料預取指令給該第一類型順序管線或給該第二類型順序管線。
  13. 如申請專利範圍第11項之系統,其中,該第一類型順序管線係整數管線,用來接收整數指令及資料預取指令。
  14. 如申請專利範圍第11項之系統,進一步包含:記憶體,耦接至該一或多個處理單元,其中,該記憶體管線的該一或多個執行單元發送與該被執行之指令相關的資料給該記憶體。
  15. 一種電腦實施之方法,包含:根據該第二順序管線的一或多個發射槽的可用性來決定是否將資料預取指令發給第一順序管線或給第二順序管線;根據一或多個因素以該第一順序管線接收該資料預取指令;將該資料預取指令發給資料預取佇列;以及當該第二順序管線的至少一執行槽可用時,將該資料 預取指令發給該第二順序管線。
  16. 如申請專利範圍第15項之電腦實施的方法,其中,該第一類型順序管線係算術邏輯單元(ALU)管線,用來接收ALU指令與資料預取指令,其中,該第二順序管線係記憶體管線。
  17. 如申請專利範圍第15項之電腦實施的方法,進一步包含:以該第二順序管線的發射槽接收複數個其它指令,其中,該一或多個因素包括該第二類型順序管線的一或多個發射槽之至少其中之一的不可用性及該資料預取指令之優先權。
  18. 一種包括有資料之機器可存取媒體,當被機器存取時,致使機器執行的操作包含:根據該第二類型順序管線的一或多個發射槽的可用性來決定是否將資料預取指令發給第一類型順序管線或發給第二類型順序管線;根據一或多個因素以該第一順序管線接收該資料預取指令;將該資料預取指令發給資料預取佇列;以及當該第二順序管線的至少一執行槽可用時,將該資料預取指令發給該第二順序管線。
  19. 如申請專利範圍第18項之機器可存取媒體,其中,該第一類型順序管線係算術邏輯單元(ALU)管線,用來接收ALU指令與資料預取指令,其中,該第二順序管線 係記憶體管線。
  20. 如申請專利範圍第18項之機器可存取媒體,進一步包含:以該第二順序管線的發射槽接收複數個其它指令,其中,該一或多個因素包括該第二類型順序管線的一或多個發射槽之至少其中之一的不可用性及該資料預取指令之優先權。
TW101142862A 2011-12-20 2012-11-16 用於順序指令管線中的亂序預取指令的系統與方法 TWI506549B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/066276 WO2013095401A1 (en) 2011-12-20 2011-12-20 System and method for out-of-order prefetch instructions in an in-order pipeline

Publications (2)

Publication Number Publication Date
TW201346755A true TW201346755A (zh) 2013-11-16
TWI506549B TWI506549B (zh) 2015-11-01

Family

ID=48669060

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101142862A TWI506549B (zh) 2011-12-20 2012-11-16 用於順序指令管線中的亂序預取指令的系統與方法

Country Status (3)

Country Link
US (1) US9442861B2 (zh)
TW (1) TWI506549B (zh)
WO (1) WO2013095401A1 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI666587B (zh) * 2017-06-23 2019-07-21 中國商上海兆芯集成電路有限公司 處理器及合併用於解決處理器的重命名尺寸問題的部分寫入結果的方法
CN111415004A (zh) * 2020-03-17 2020-07-14 北京百度网讯科技有限公司 用于输出信息的方法和装置
CN111796759A (zh) * 2019-04-01 2020-10-20 慧荣科技股份有限公司 多平面上的片段数据读取的计算机可读取存储介质及方法
US10949348B2 (en) 2018-08-20 2021-03-16 Silicon Motion, Inc. Storage device and cache area addressing method
TWI740092B (zh) * 2018-08-20 2021-09-21 慧榮科技股份有限公司 儲存裝置及巨集指令的執行方法
US11307798B2 (en) 2018-08-20 2022-04-19 Silicon Motion, Inc. Storage device and method for performing macro command

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2524063B (en) 2014-03-13 2020-07-01 Advanced Risc Mach Ltd Data processing apparatus for executing an access instruction for N threads
US9430392B2 (en) * 2014-03-26 2016-08-30 Intel Corporation Supporting large pages in hardware prefetchers
US9678758B2 (en) 2014-09-26 2017-06-13 Qualcomm Incorporated Coprocessor for out-of-order loads
US9940136B2 (en) 2015-06-26 2018-04-10 Microsoft Technology Licensing, Llc Reuse of decoded instructions
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US10409606B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Verifying branch targets
US11755484B2 (en) 2015-06-26 2023-09-12 Microsoft Technology Licensing, Llc Instruction block allocation
US10095519B2 (en) 2015-09-19 2018-10-09 Microsoft Technology Licensing, Llc Instruction block address register
US20170083343A1 (en) * 2015-09-19 2017-03-23 Microsoft Technology Licensing, Llc Out of order commit
US10175987B2 (en) 2016-03-17 2019-01-08 International Business Machines Corporation Instruction prefetching in a computer processor using a prefetch prediction vector
US20170286118A1 (en) * 2016-04-01 2017-10-05 Intel Corporation Processors, methods, systems, and instructions to fetch data to indicated cache level with guaranteed completion
US10489204B2 (en) 2017-01-31 2019-11-26 Samsung Electronics Co., Ltd. Flexible in-order and out-of-order resource allocation
US10346309B1 (en) 2017-04-26 2019-07-09 Apple Inc. Sequential prefetch boost
US10394558B2 (en) 2017-10-06 2019-08-27 International Business Machines Corporation Executing load-store operations without address translation hardware per load-store unit port
US11175924B2 (en) 2017-10-06 2021-11-16 International Business Machines Corporation Load-store unit with partitioned reorder queues with single cam port
US10417002B2 (en) 2017-10-06 2019-09-17 International Business Machines Corporation Hazard detection of out-of-order execution of load and store instructions in processors without using real addresses
US10606591B2 (en) 2017-10-06 2020-03-31 International Business Machines Corporation Handling effective address synonyms in a load-store unit that operates without address translation
US11093248B2 (en) 2018-09-10 2021-08-17 International Business Machines Corporation Prefetch queue allocation protection bubble in a processor
US11216189B2 (en) 2019-04-01 2022-01-04 Silicon Motion, Inc. Method and computer program product for reading partial data of a page on multiple planes

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5768575A (en) * 1989-02-24 1998-06-16 Advanced Micro Devices, Inc. Semi-Autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for sepculative and out-of-order execution of complex instructions
US5430850A (en) 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
US6490658B1 (en) 1997-06-23 2002-12-03 Sun Microsystems, Inc. Data prefetch technique using prefetch cache, micro-TLB, and history file
US6163839A (en) * 1998-09-30 2000-12-19 Intel Corporation Non-stalling circular counterflow pipeline processor with reorder buffer
US6718494B1 (en) 2000-12-22 2004-04-06 Intel Corporation Method and apparatus for preventing and recovering from TLB corruption by soft error
US20030233530A1 (en) * 2002-06-14 2003-12-18 International Business Machines Corporation Enhanced instruction prefetch engine
US7286548B1 (en) * 2002-08-14 2007-10-23 Redback Networks Inc. Method and apparatus for multicast multiple prefetch
US7404067B2 (en) * 2003-09-08 2008-07-22 Intel Corporation Method and apparatus for efficient utilization for prescient instruction prefetch
US20060136696A1 (en) * 2004-12-16 2006-06-22 Grayson Brian C Method and apparatus for address translation
US20060143401A1 (en) * 2004-12-27 2006-06-29 Jacob Doweck Method and apparatus for prefetching based on cache fill buffer hits
US7461239B2 (en) * 2006-02-02 2008-12-02 International Business Machines Corporation Apparatus and method for handling data cache misses out-of-order for asynchronous pipelines
US7624248B1 (en) * 2006-04-14 2009-11-24 Tilera Corporation Managing memory in a parallel processing environment
US8352705B2 (en) * 2008-01-15 2013-01-08 Vmware, Inc. Large-page optimization in virtual memory paging systems
US8161246B2 (en) * 2009-03-30 2012-04-17 Via Technologies, Inc. Prefetching of next physically sequential cache line after cache line that includes loaded page table entry
US8230177B2 (en) * 2009-05-28 2012-07-24 Oracle America, Inc. Store prefetching via store queue lookahead
US8533438B2 (en) * 2009-08-12 2013-09-10 Via Technologies, Inc. Store-to-load forwarding based on load/store address computation source information comparisons

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI666587B (zh) * 2017-06-23 2019-07-21 中國商上海兆芯集成電路有限公司 處理器及合併用於解決處理器的重命名尺寸問題的部分寫入結果的方法
US10949348B2 (en) 2018-08-20 2021-03-16 Silicon Motion, Inc. Storage device and cache area addressing method
TWI740092B (zh) * 2018-08-20 2021-09-21 慧榮科技股份有限公司 儲存裝置及巨集指令的執行方法
US11307798B2 (en) 2018-08-20 2022-04-19 Silicon Motion, Inc. Storage device and method for performing macro command
CN111796759A (zh) * 2019-04-01 2020-10-20 慧荣科技股份有限公司 多平面上的片段数据读取的计算机可读取存储介质及方法
CN111796759B (zh) * 2019-04-01 2023-11-07 慧荣科技股份有限公司 多平面上的片段数据读取的计算机可读取存储介质及方法
CN111415004A (zh) * 2020-03-17 2020-07-14 北京百度网讯科技有限公司 用于输出信息的方法和装置
CN111415004B (zh) * 2020-03-17 2023-11-03 阿波罗智联(北京)科技有限公司 用于输出信息的方法和装置

Also Published As

Publication number Publication date
US9442861B2 (en) 2016-09-13
TWI506549B (zh) 2015-11-01
US20140195772A1 (en) 2014-07-10
WO2013095401A1 (en) 2013-06-27

Similar Documents

Publication Publication Date Title
TWI506549B (zh) 用於順序指令管線中的亂序預取指令的系統與方法
Li et al. Utility-based hybrid memory management
JP4170218B2 (ja) キャッシュミスに応答してタスクを切り替えることによってキャッシュベース埋め込みプロセッサのスループットを改善する方法および装置
JP4939443B2 (ja) ディスクリプタ・プリフェッチを用いてダイレクト・メモリ・アクセス・ブロック移動を行なう方法、ダイレクト・メモリ・アクセス装置、及びデータ処理システム
US20140208075A1 (en) Systems and method for unblocking a pipeline with spontaneous load deferral and conversion to prefetch
US8145848B2 (en) Processor and method for writeback buffer reuse
US10203878B2 (en) Near memory accelerator
US9418018B2 (en) Efficient fill-buffer data forwarding supporting high frequencies
US20200285580A1 (en) Speculative memory activation
KR20120017471A (ko) 스레드 시프트 : 스레드들의 코어들로의 할당
JP2009540411A (ja) 高速で安価なストア−ロード競合スケジューリング及び転送機構
US10866902B2 (en) Memory aware reordered source
TW201346757A (zh) 指令快取預取的管理
US20080140934A1 (en) Store-Through L2 Cache Mode
US8490071B2 (en) Shared prefetching to reduce execution skew in multi-threaded systems
Cho et al. Taming the killer microsecond
US20090006777A1 (en) Apparatus for reducing cache latency while preserving cache bandwidth in a cache subsystem of a processor
TW202018516A (zh) 用於減少由於位址轉譯未命中而引起的流水線停頓的方法、裝置和系統
US8661169B2 (en) Copying data to a cache using direct memory access
US11599470B2 (en) Last-level collective hardware prefetching
US8127082B2 (en) Method and apparatus for allowing uninterrupted address translations while performing address translation cache invalidates and other cache operations
Fu et al. A hardware-efficient dual-source data replication and local broadcast mechanism in distributed shared caches
Forsell et al. Supporting ordered multiprefix operations in emulated shared memory cmps
TWI317065B (en) Method of accessing cache memory for parallel processing processors
Hoseinghorban et al. Fast write operations in non-volatile memories using latency masking

Legal Events

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