TW201832087A - 偵測與處理儲存串流的系統與方法 - Google Patents

偵測與處理儲存串流的系統與方法 Download PDF

Info

Publication number
TW201832087A
TW201832087A TW106137464A TW106137464A TW201832087A TW 201832087 A TW201832087 A TW 201832087A TW 106137464 A TW106137464 A TW 106137464A TW 106137464 A TW106137464 A TW 106137464A TW 201832087 A TW201832087 A TW 201832087A
Authority
TW
Taiwan
Prior art keywords
cache
address
storage
store
stream
Prior art date
Application number
TW106137464A
Other languages
English (en)
Other versions
TWI774703B (zh
Inventor
王昊
迪利普 慕修克里什南
布萊恩 C. 格雷森
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 TW201832087A publication Critical patent/TW201832087A/zh
Application granted granted Critical
Publication of TWI774703B publication Critical patent/TWI774703B/zh

Links

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/30181Instruction operation extension or modification
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • 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/502Control mechanisms for virtual memory, cache or TLB using adaptive policy

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Burglar Alarm Systems (AREA)
  • Control Of Vending Devices And Auxiliary Devices For Vending Devices (AREA)

Abstract

根據一個一般態樣,一種設備可包括加載/儲存電路及區大小偵測電路。所述加載/儲存電路可被配置成發出欲將資料儲存於記憶體系統中的多個儲存指令。所述區大小偵測電路可被配置成至少部分地基於追蹤所述多個儲存指令中的多個快取線位址條目來確定多個快取中欲儲存儲存指令串流的快取,其中所述位址條目中的每一者被以不同的頻率進行更新。

Description

儲存串流偵測與處理的系統與方法
本發明大體而言是有關於微處理器,且更具體而言是有關於一種儲存串流偵測與處理的系統與方法。
在處理器(中央處理單元(central processing unit,CPU))的背景下的串流資料(streaming data)一般而言是將資料寫入至虛擬空間中的連續或相連的記憶體位置的儲存或寫入指令序列。大的資料區塊往往將藉由一系列寫入或儲存操作而被移動至或儲存至記憶體。串流資料或「儲存串流(store streaming)」的典型例子是「記憶體複製(memory copy)」,「記憶體複製」是將記憶體區塊自源位置複製至目的地位置的常用方法。在硬體中,此種方法轉化為自源位置提取資料的加載或讀取操作串流,然後轉化為將所加載資料複製至目的地位置的儲存或寫入操作串流。一些應用(applications)可簡單地利用儲存串流來對大的記憶體區塊進行初始化。
有時,該些儲存串流是非時間性的(non-temporal)。亦即,資料往往僅被提及一次且接著在近期內不被重新使用。舉例而言,典型的記憶體複製操作在程式執行期間可涉及移動僅會被提及一次的幾千位元組(kilobyte,KB)或幾百萬位元組(megabyte,MB)的資料。對處理器的快取(例如,二級(level 2,L2)快取、一級(level 1,L1)快取及三級(level 3,L3)快取)內的儲存資料進行快取可能會取代其他有用的位於快取內的資料(cache-resident data),且會有害於效能。
為避免快取污染(cache pollution),應用往往可能會試圖提供使硬體能夠知曉串流資料將不被進行快取的指示(例如,藉由指令操作碼及記憶體類型)。然而,可能存在指令集(instruction set)內得不到所述指示的情形。為應對此種擔憂,諸多硬體設計會包含動態地偵測儲存圖案(pattern of store)的機構並查找具有大的大小的儲存串流圖案(以將其直接串流至系統記憶體)的情形。
使用以上硬體儲存串流偵測方式有助於避免快取污染這一普遍問題。然而,一些應用(例如,編譯器(compiler)等)傾向於在一定期間內重新存取原本將適用於二級快取或三級快取內的具有相當大的大小的儲存串流。對於此種應用,進行快取將更為有益。然而,使用傳統硬體偵測方式使得該些儲存串流將被重複地寫入至記憶體,進而佔用系統記憶體頻寬及耗用電力且无法获得快取儲存的益處。
根據一個一般態樣,一種設備可包括加載/儲存電路及區大小偵測電路。所述加載/儲存電路可被配置成發出欲將資料儲存於記憶體系統中的多個儲存指令。所述區大小偵測電路可被配置成至少部分地基於追蹤所述多個儲存指令中的多個快取線位址條目來確定多個快取中欲儲存儲存指令串流的快取,其中所述位址條目中的每一者被以不同的頻率進行更新。
根據另一一般態樣,一種方法可包括:接收欲將資料儲存於記憶體系統中的多個儲存指令,其中所述記憶體系統被配置成至少暫時地將所述資料儲存於至少一個快取中。所述方法可包括:藉由區大小偵測電路至少部分地基於追蹤所述多個儲存指令中的多個位址條目來選擇欲儲存儲存指令串流的快取,其中所述位址條目中的每一者被以不同的頻率進行更新。
根據另一一般態樣,一種系統可包括多個處理器、快取系統及區大小偵測電路。所述多個處理器可各自被配置成發出欲將資料儲存於快取系統中的儲存指令串流。所述快取系統可被配置成將資料儲存於由多個快取層級(cache tier)構成的階層(hierarchy)中。區大小偵測電路可被配置成至少部分地基於判斷所述儲存指令串流是否包括迭代儲存指令串流(iterative stream of store instruction)及重複大小迭代儲存指令串流(repetition size iterative stream of store instruction)來確定所述快取層級中的哪一者欲儲存所述儲存指令串流。
以下在附圖及說明中對一或多個實作方式的詳細內容進行陳述。其他特徵將藉由說明及圖式且藉由申請專利範圍而顯而易見。
一種資料儲存系統及/或方法,且更具體而言是有關於對寫入或儲存指令串流的處理進行的管理,其實質上如各圖中的至少一者中所示及/或結合各圖中的至少一者所述,如在申請專利範圍中更完整地陳述。
在下文中將參考其中示出一些示例性實施例的附圖來更充分地闡述各種示例性實施例。然而,本發明所揭露主題可實施為諸多不同形式,而不應被視為僅限於本文所述的示例性實施例。確切而言,提供該些示例性實施例是為了使此揭露內容將透徹及完整,並將向熟習此項技術者充分傳達本發明所揭露主題的範圍。在圖式中,為清晰起見,可誇大層及區的大小及相對大小。
應理解,當稱一元件或層「位於」另一元件或層「上」、「連接至」或「耦合至」另一元件或層時,所述元件或層可直接位於所述另一元件或層上、直接連接至或直接耦合至所述另一元件或層,抑或可存在中間元件或層。相比之下,當稱一元件「直接位於」另一元件或層「上」、「直接連接至」或「直接耦合至」另一元件或層時,則不存在中間元件或層。通篇中相同編號指代相同元件。本文所使用的用語「及/或」包括相關聯列出項中一或多者的任意及所有組合。
應理解,儘管在本文中可能使用用語「第一」、「第二」、「第三」等來闡述各種元件、組件、區、層、及/或區段,然而該些元件、組件、區、層、及/或區段不應受限於該些用語。該些用語僅用於區分各個元件、組件、區、層或區段。因此,在不背離本發明所揭露主題的教示內容的條件下,以下所論述的第一元件、組件、區、層、或區段可被稱為第二元件、組件、區、層、或區段。
為易於說明,本文中可能使用例如「在…之下(beneath)」、「在…下面(below)」、「下方的(lower)」、「在…之上(above)」、「上方的(upper)」等空間相對性用語來闡述圖中所示的一個元件或特徵與另一(其他)元件或特徵的關係。應理解,所述空間相對性用語旨在除圖中所繪示的定向以外亦囊括所述裝置在使用或操作中的不同定向。舉例而言,若圖中的裝置被翻轉,則被闡述為在其他元件或特徵「下面」或「之下」的元件此時將被定向為在所述其他元件或特徵「之上」。因此,示例性用語「在…下面」可囊括上方與下方兩種定向。所述裝置亦可具有其他定向(旋轉90度或處於其他定向),且本文中所使用的空間相對性描述語將相應地進行解釋。
本文所使用的術語僅用於闡述特定示例性實施例,而並非旨在限制本發明所揭露主題。除非上下文中清楚地另外指示,否則本文所使用的單數形式「一(a/an)」及「所述(the)」旨在亦包含複數形式。更應理解,當在本說明書中使用用語「包括(comprises及/或comprising)」時,是指明所陳述特徵、整數、步驟、操作、元件、及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件、及/或其群組的存在或添加。
本文中參考作為理想化示例性實施例(及中間結構)的示意圖的剖視圖來闡述示例性實施例。如此一來,預期會因例如製造技術及/或容差而偏離圖示形狀。因此,示例性實施例不應被視為僅限於本文所示的區的特定形狀,而是包括由例如製造而引起的形狀偏差。舉例而言,被示為矩形的被植入區通常將具有圓的或彎曲的特徵及/或在其邊緣具有植入濃度梯度,而非自被植入區至未被植入區為二元變化。同樣地,藉由植入而形成的隱埋區(buried region)可於所述隱埋區與進行植入時所經的表面之間的區中形成某種植入。因此,在圖中所示的區是示意性的,且其形狀並非旨在示出裝置的區的實際形狀,亦非旨在限制本發明所揭露主題的範圍。
除非另外定義,否則本文所使用的全部用語(包括技術及科學用語)的含義均與本發明所揭露主題所屬技術領域中具有通常知識者所通常理解的含義相同。更應理解,用語(例如在常用字典中所定義的用語)應被解釋為具有與其在相關技術的上下文中的含義一致的含義,且除非本文中進行明確定義,否則不應將其解釋為具有理想化或過於正式的意義。
在下文中,將參考附圖詳細地闡釋示例性實施例。
圖1是根據所揭露主題的系統100的示例性實施例的方塊圖。在所示實施例中,系統100可包括計算裝置,例如(舉例而言,膝上型電腦(laptop)、桌上型電腦(desktop)、工作站(workstation)、個人數位助理(personal digital assistant)、智慧型電話(smartphone)、平板(tablet)及其他適宜的電腦)。在各種實施例中,系統100可包括積體電路,例如微處理器、處理器或系統晶片(system-on-a-chip,SoC)。應理解,以上僅為幾個說明性例子,所揭露主題並非僅限於所述說明性例子。
在各種實施例中,系統100可包括被配置成執行各種指令或進行操作的處理器或中央處理單元。在所示實施例中,系統100可包括被配置成發出加載(讀取)或儲存(寫入)操作的加載/儲存單元(load/store unit,LSU)或電路102。在所示實施例中,將論述儲存操作。然而,可形成以加載操作為著重點或慮及加載操作的實施例。應理解,以上僅為一個說明性例子,所揭露主題並非僅限於此。
此外,系統100亦可包括記憶體系統108。在所示實施例中,記憶體系統108可包括排列於一系列快取層級(tiered series of cache)中的多個記憶體。所述一系列快取層級可包括(概念上自最低的層級至最高的層級)系統記憶體142(例如,動態隨機存取記憶體(dynamic random access memory,DRAM)、反及記憶體(NAND memory))、三級快取132、二級快取122及一級快取112。
如上所述,記憶體系統108可包括多個記憶體儲存層級(tier of memory storage)。如熟習此項技術者所理解,記憶體系統層級一般試圖使速度與大小平衡。在拓撲上更靠近或更接近加載/儲存單元102的層級往往較距加載/儲存單元102(或大體而言,處理器)更遠(在拓撲上)的層級快但較距加載/儲存單元102更遠的所述層級小。舉例而言,一級快取112可最靠近加載/儲存單元102,且是記憶體系統中最小且最快的層級。二級快取122可在距加載/儲存單元102的距離上介於中間,且較系統記憶體142小但較一級快取112大,並且較系統記憶體142快但較一級快取112慢。同樣地,三級快取132可處於二級快取122與系統記憶體142之間,且較系統記憶體142小但較系統記憶體142快。系統記憶體142可為距加載/儲存單元102或處理器最遠的層級,且是所有層級中最慢但最大的層級。應理解,以上僅為幾個說明性例子,所揭露主題並非僅限於所述說明性例子。
如上所述,當記憶體層級的大小受到限制時,選取何物來儲存於此層級中會成為問題。若存在大量欲儲存資料,則大的資料可將其他資料擠出。快取或記憶體層級可有效地被大的資料集壟斷(或主導)。若將重新使用資料集,則對快取的此種主導可能不會造成問題。所述資料可藉由處於所述快取中而被更快速地存取。相反,若將不重新使用或最少量地使用資料集,則對快取的此種主導可能使所述快取實際上無用或適得其反,因為所述快取被不需要的資料填滿。
為儲存通訊量(traffic)或一系列儲存指令,更佳的方式是按照傳統在各種快取層級中進行分配。作為另一選擇,有時更佳的方式是繞過所述一或多個快取層級且直接寫入至記憶體(例如,系統記憶體142或半永久記憶體104)。舉例而言,在某一級快取(例如,三級快取132)中分配資料且繞過上級快取(例如,一級快取112及二級快取122)可為期望的。在一些實施例中,儲存並不會寫入至快取線(cache line,CL)的每個位元組(byte,B)。與其中快取線被儲存寫滿的完整儲存串流(full store stream)相對照,此被稱作局部儲存串流(partial store stream)。在此種實施例中,關於選取哪一快取層級來用於局部儲存串流的所期望選取方案可與完整儲存串流情景中的所期望選取方案不同。
在各種實施例中,加載/儲存單元102可發出儲存指令192或多個儲存指令192。在各種實施例中,儲存指令192可包括欲儲存的資料190、以及指示其中欲儲存資料190的記憶體位址的記憶體位址部分191。記憶體位址191可為虛擬的或實體的且可出現在記憶體系統108的記憶體中的一或多者中或者甚至不出現在記憶體系統108的所述記憶體中。在此種實施例中,當快取儲存資料或不再儲存資料時,與該些相應快取層級相關聯的記憶體位址可有所改變。
在所示實施例中,記憶體系統108可包括記憶體互連件(memory interconnector)106。在此種實施例中,記憶體互連件106可將儲存指令192路由至目標快取層級或半永久記憶體104。傳統上,記憶體互連件106將會將儲存指令192路由至最高級快取(例如,一級快取112),且接著視需要將相關聯的記憶體位址191分配(加載或儲存)至其他快取層級(例如,二級快取112)中。
在所示實施例中,記憶體互連件106可联络或包括儲存串流偵測器電路(store stream detector circuit)152、區大小偵測器電路(region size detector circuit)154及/或儲存組合監測器電路(store combine monitor circuit)156。儲存串流偵測器電路152、區大小偵測器電路154及儲存組合監測器電路156可偵測是否出現儲存串流192,且若出現儲存串流192,則偵測將所述串流儲存於何處。
在所示實施例中,系統100可包括儲存串流偵測器電路152。在各種實施例中,儲存串流偵測器電路152可被配置成偵測何时由多個儲存操作192構成對相連記憶體空間進行的資料儲存操作串流或一系列儲存操作。在一些實施例中,此可包括軟體須知(software hint),但在所示實施例中,儲存串流偵測器電路152可被配置成對儲存串流進行硬體偵測。在各種實施例中,儲存串流偵測器電路152可包含於記憶體系統108(如圖所示)中,或者在另一實施例中包含於加載/儲存單元102中。借鑒圖2論述儲存串流偵測器電路152的實施例。
所揭露主題試圖至少部分地確定將儲存指令串流寫入至哪一快取層級。舉例而言,諸多應用迭代地寫入至相同的記憶體區。若所述記憶體區的大小小於快取階層的給定層級的快取大小,則在繞過上級快取的同時將串流資料分配於此級中可為有益的。在所揭露主題的各種實施例中,示出一種確定迭代儲存串流的區大小(且因此確定所期望快取層級)的方法。
在所示實施例中,處理器100可包括區大小偵測器電路154。在各種實施例中,區大小偵測器電路154可被配置成確定儲存指令串流的目的地的快取層級。在一些實施例中,區大小偵測器電路154可至少部分地基於追蹤所述多個儲存指令192中的多個快取線位址條目來進行此操作,其中位址條目中的每一者是以不同的頻率進行更新。在一些實施例中,此可包括選擇快取大小較迭代儲存指令串流的區大小大的快取層級。在各種實施例中,區大小偵測器電路154可包含於記憶體系統108(如圖所示)中,或者在另一實施例中,包含於加載/儲存單元102中。借鑒圖3及圖4論述區大小偵測器電路154的實施例。
在諸多應用中,儲存串流可寫入至諸多快取線但並不會對每單個快取線的每個位元組進行寫入。此被稱作局部儲存串流(與當對完整快取線進行寫入時的完整儲存串流相對)。局部儲存串流往往表現出更複雜的折衷(trade-off)。繞過局部儲存串流資料的快取的效能影響往往是針對特定應用及/或特定機器的,且可視具體情形而為正面的或負面的。因此,一種判斷繞過快取還是在局部儲存串流的快取中進行分配的方法是期望的。
在所示實施例中,系統100可包括儲存組合監測器電路156。在各種實施例中,儲存組合監測器電路156可被配置成追蹤以快取線粒度程度(cache line level of granularity)加以組合的儲存指令的數目,且採用所述數目來確定局部儲存串流處理。在各種實施例中,儲存組合監測器電路156可包含於記憶體系統108(如圖所示)中,或者在另一實施例中,包含於加載/儲存單元102中。在圖5中論述儲存組合監測器電路156的實施例。
在各種實施例中,儲存串流偵測器電路152、區大小偵測器電路154及儲存組合監測器電路156可獨立地運作或正交地運作。在此種實施例中,系統100可包括儲存串流偵測器電路152、區大小偵測器電路154及儲存組合監測器電路156中的一或多者。
在各種實施例中,系統100可包括半永久記憶體104。半永久記憶體104可被配置成將資料以半永久方式儲存於快取層級外。在此種實施例中,半永久記憶體104可將所有資料190儲存於系統100中,而記憶體系統108則接著對資料190的各種版本進行快取。在各種實施例中,半永久記憶體104可包括非揮發性記憶體,例如(舉例而言,硬驅動機(hard drive)或固態驅動機(solid-state drive))。應理解,以上僅為幾個說明性例子,所揭露主題並非僅限於所述說明性例子。
圖2是根據所揭露主題的一種技術200的示例性實施例的流程圖。在各種實施例中,技術200可被實施為電路,具體而言實施為儲存串流偵測器電路。
在此種實施例中,儲存串流偵測器電路152可被配置成偵測記憶體系統108應進入還是應退出儲存串流模式。在此種實施例中,記憶體系統108可投入區大小偵測器154、儲存組合監測器156及/或被配置成處理儲存串流的其他電路。相反,當所述多個儲存指令不構成儲存串流時,記憶體系統可以各別的方式處理所述儲存指令,所述各別的方式傳統上包括將所述儲存指令儲存於最高快取層級中且使資料向下流動至較低快取層級(正常情況下將如此)。應理解,以上僅為一個說明性例子,所揭露主題並非僅限於所述說明性例子。
在所示實施例中,儲存串流偵測器可被配置成追蹤漏失(miss)的數目以及所有儲存指令的數目。儲存串流偵測器可接著將各所述數目與相應臨限值進行比較,且基於此比較來進入或退出儲存串流模式。
在所示實施例中,在201處,本儲存串流偵測器電路偵測儲存指令。在214處,本儲存串流偵測器電路對儲存計數器值進行遞增。在202處,本儲存串流偵測器電路判斷是否已出現快取命中(cache hit)或快取漏失(cache miss)。若儲存指令造成快取漏失,則本儲存串流偵測器電路對漏失計數器值進行遞增。若儲存指令造成快取命中,則漏失計數器可不受到影響。
在所示實施例中,儲存串流偵測器可被配置成判斷在儲存指令的指定窗口內是否出現特定數目個快取漏失。若出現特定數目個快取漏失,則記憶體系統可進入儲存串流模式。若未出現特定數目個快取漏失,則記憶體系統可退出儲存串流模式。在一個實施例中,窗口臨限值(window threshold)可為128個儲存,且漏失臨限值(miss threshold)可為64個漏失。應理解,以上僅為一個說明性例子,所揭露主題並非僅限於所述說明性例子。
在216處,本儲存串流偵測器電路將儲存計數器值與窗口臨限值進行比較。在218處,若當前儲存計數器值的數目大於(或在一些實施例中等於)窗口臨限值,則記憶體系統可退出(或不處於)儲存串流模式。在此種實施例中,在退出儲存串流模式時,儲存計數器值及漏失計數器值可被重設為零。
在206處,本儲存串流偵測器電路將漏失計數器值與漏失臨限值進行比較。在208處,若當前漏失計數器值大於(或在一些實施例中等於)漏失臨限值,則記憶體系統可進入(或處於)儲存串流模式。在此種實施例中,在進入儲存串流模式時,儲存計數器值及漏失計數器值可被重設為零。
在替代性實施例中,可使用儲存漏失與所有儲存的累計大小來替代對所述漏失及儲存的計數。舉例而言,若在512個位元組的儲存內出現多於256個位元組的漏失,則可作出進入儲存串流模式的決策。
在各種實施例中,窗口臨限值及漏失臨限值可被動態地調整,且基於退出及進入準則而有所不同。舉例而言,處於進入的目的,可使用512個位元組內的256個位元組的漏失/窗口臨限值,但若在128個位元組的儲存內出現少於64個位元組的漏失,則可能出現退出儲存串流模式的情況。此可單獨地控制處理器以多快的速度進入或退出儲存串流模式。應理解,以上僅為幾個說明性例子,所揭露主題並非僅限於所述說明性例子。
圖3是根據所揭露主題的資料結構302及電路300的示例性實施例的圖。在各種實施例中,資料結構302及電路300可被實施為電路,具體而言實施為如上所述的區大小偵測器電路。
在所示實施例中,區大小偵測器300可被配置成偵測區大小且確定迭代儲存串流的目的地或快取層級。在各種實施例中,諸多應用在儲存串流期間迭代地寫入至相同的記憶體區。若區的大小大於特定級的快取大小,則在此級處分配資料可能是有害的。相反,若所述區小於快取層級中的下一級的快取大小,則跳過或繞過較高快取層級而將串流資料直接分配至較低快取層級可為有益的。
在所示實施例中,區大小偵測器300可被配置成監測被寫入的是哪些記憶體位址,且判斷相同的位址是否被再三地寫入。區大小偵測器300可被配置成以多種頻率來進行此種操作,以使得偵測或監測不同的重複週期。在一些實施例中,該些頻率可與各種快取層級的快取大小相關聯。在此種實施例中,區大小偵測器300可確定哪一快取大小最緊密匹配儲存串流的重複週期。
在所示實施例中,可採用位址條目表302來追蹤記憶體位址(位於位址條目中)及其重複(或其缺乏(lack))。在此種實施例中,位址條目表302可包含各自被以給定頻率進行更新的位址條目或位址列的數目。每一位址條目可包括近期位址欄位(recent address field)352、當前週期旗標(current period flag)354及最末週期旗標(last period flag)356,近期位址欄位352被配置成儲存在當前週期的起始處採樣的最近期快取線位址,當前週期旗標354被配置成指示在所述當前週期內所述最近期位址是否已在所述多個儲存指令內出現至少第二次,最末週期旗標356被配置成指示最末週期的末尾處的所述當前週期旗標的值。在一些實施例中,位址條目表302亦可包括所選擇區欄位(selected field region)358以指示當前儲存串流最適合於哪一區。儘管,應理解以上僅為一個說明性例子,所揭露主題並非僅限於所述說明性例子。
在一個實施例中,儲存指令301出現。儲存指令301的記憶體位址經过位址過濾器303,位址過濾器303將儲存指令以快取線粒度加以組合。因此,若在短的時間週期中有多個儲存指令對相同的快取線進行存取,則僅一個快取線位址可自位址過濾器303中出來。在所示實施例中,區大小偵測器300可包括多個計數器311、312、313及314(統稱為計數器308),所述多個計數器311、312、313及314對被儲存指令存取的快取線的累計大小進行計數並判斷自最末會計週期(last accounting period)起是否已出現累計大小的正確值。如參考圖4所更詳細闡述,每一計數器及位址條目可與特定頻率或累計大小(例如,512個位元組、64個位元組)相關聯。作為替代,其他實施例可對儲存指令或者該些計數器的快取線的數目進行計數。
當已達到頻率事件(frequency event)或在第一儲存指令出現時,可將快取線位址儲存於位址欄位352中。此後,當每一快取線位址出現時,可將所述快取線位址與位址欄位352中的快取線位址進行比較。此可藉由比較器電路(comparator circuit)304來進行。若所述兩個位址(當前的與最近期採樣的)匹配,則當前週期旗標(HCP )354內的命中得到設定。其他實施例可僅對在快取中漏失的儲存指令進行所述比較。
在每一週期的末尾處,可將HCP 354複製至具有最末週期(HLP )旗標356的命中。並且,此HCP 旗標354可被重設。在新週期期間,若新採樣的位址352與儲存指令中的最末位址相同,則HCP 旗標354可得到設定。
若HCP 旗標354與HLP 旗標356同時得到設定,則此指示已在兩個連續週期內觀察到相同的位址,且指示已偵測到迭代儲存串流的大小。此可藉由比較器電路306來確定。在此種實施例中,可選擇與位址條目或頻率相關聯的快取層級且可將儲存串流引導至此快取層級。
圖4是根據所揭露主題的資料結構400的示例性實施例的方塊圖。在所示實施例中,示出區大小偵測器的工作的例子。應理解,以上僅為一個說明性例子,所揭露主題並非僅限於所述說明性例子。
在所示實施例中,採用四個位址條目;然而可使用更多或更少的條目。在所示實施例中,位址條目是以256位元組(B)、512位元組、1千位元組(KB)及2千位元組的頻率進行採樣。應理解,以上僅為幾個說明性例子,所揭露主題並非僅限於所述說明性例子。
在所示實施例中,儲存串流490包括針對6個不同的快取線位址A、B、C、D、E及F的6個儲存指令。該些儲存指令每384個位元組(即,具有64位元組快取線的6個快取線)進行一次重複(至少在位址方面)。在所示實施例中,儲存串流490重複31 /6 次,但儲存串流490可在所示部分出現之後繼續進行重複。應理解,以上僅為幾個說明性例子,所揭露主題並非僅限於所述說明性例子。
在所示實施例中,在指令401處,作為初始儲存指令及快取線位址,所有位址條目(例如,256位元組、512位元組、1千位元組、2千位元組)对初始位址A進行採樣。位址A被放置於位址條目表的相應近期位址欄位中。
在指令402處,將新的快取線位址(位址B)與最近期採樣的位址(位址A)進行比較。在此種情形中,所述兩個位址不匹配且每一位址條目或頻率的HCP 旗標保持被清除。在指令403及404處出現相同的情況,但與採樣位址A進行比較的是新的位址C及D。
在指令405處,第一位址條目達到256位元組週期且現將其近期位址欄位採樣至位址E。第二位址條目、第三位址條目及第四位址條目尚未達到其相應的採樣頻率,且其近期位址欄位保持為位址A。
指令406(位址F)的出現與指令402、403及404的出現非常相似。然而,指令407以位址A的回歸來標記儲存串流的首次重複。對於第一位址條目,當前位址A被與採樣位址E進行比較,二者不匹配。然而,對於第二位址條目、第三位址條目及第四位址條目,當前位址A被與採樣位址A進行比較,二者匹配。如此一來,第二位址條目、第三位址條目及第四位址條目的相應HCP 旗標得到設定,此指示儲存串流在所述第二位址條目、第三位址條目及第四位址條目的頻率或週期內進行重複。
指令408(位址B)的出現與指令406的出現非常相似。然而,儘管當前位址B與採樣位址A不匹配,然而HCP 旗標保持被設定或在第二位址條目、第三位址條目及第四位址條目中保持不變。
指令409(位址C)出現於第512位元組處。此指令與第一位址條目的週期及第二位址條目的週期(256位元組及512位元組)對齊,且當前位址C被採樣至所述第一位址條目及第二位址條目的近期位址欄位中。第三位址條目的近期位址欄位及第四位址條目的近期位址欄位保持為位址A。第一位址條目(其為清除)及第二位址條目(其為設定)的HCP 旗標被複製至其HLP 旗標。第一位址條目及第二位址條目的HCP 旗標接著被清除。第三位址條目及第四位址條目的HCP 旗標及HLP 旗標因尚未達到所述第三位址條目及第四位址條目的相應週期而保持不變。
指令410、411及412(位址D、E及F)的出現與指令402、403及404相似。指令413(位址A)的出現與指令407相似,但第一位址條目的新採樣位址現為位址A。指令414(位址B)的出現與指令402相似。
自第一位址條目、第三位址條目及第四位址條目的角度來看,指令415(位址C)的出現與指令414相似。然而,第二位址條目已採樣的是位址C且因此,當前位址與採樣位址的比較得到匹配(與指令407相似)。第二位址條目對其HCP 旗標進行設定。
在指令415處,第二位址條目對其HCP 旗標與HLP 旗標二者進行設定。此意指已偵測到區大小落於256位元組邊界與512位元組邊界之間。若(如在此實施例中)第二位址條目與第二快取層級相關聯,則儲存串流490可被引導至第二快取層級。第一快取層級可被跳過。
儘管儲存串流490可被引導至第二快取層級,然而指令416(位址D)的出現可與指令414相似。除可滿足第三位址條目的頻率邊界(1千位元組)且對當前位址進行採樣、並且對旗標進行複製及清除以外,指令417(位址E)可與指令409相似。指令418及419(位址F及位址A)的出現可與指令413相似。在此種實施例中,儲存串流490仍可被引導至第二快取層級,直至選擇出新的快取層級。
在各種實施例中,多個快取層級可與所述區大小匹配。舉例而言,互動儲存串流可在恰好快取大小邊界上进行重复,且兩個快取大小可為彼此的倍數,以使得每較小頻率位址條目的週期且每隔較大頻率位址條目的週期出現一次匹配。在此種實施例中,與較小頻率位址條目相關聯的快取層級可被選擇作為儲存串流的目的地或目標。應理解,以上僅為一個說明性例子,所揭露主題並非僅限於所述說明性例子。
在各種實施例中,每一追蹤條目可僅在一段週期中追蹤一個位址,此可能對雜訊敏感。在一些實施例中,此可藉由採用多個追蹤結構來進行改善。舉例而言,兩個條目均每64千位元組進行一次更新,但在所述兩個條目的更新點之間存在偏移量(offset),例如1千位元組的偏移量。在處於訓練狀態(training state)中時,區大小偵測器可僅在兩個條目均表明偵測到區時進入所偵測到的狀態(detected state)。在處於所偵測到的狀態中時,區大小偵測器可僅在兩個條目均表明在過去的週期中未觀察到位址重複時退出。
圖5是根據所揭露主題的資料結構502及電路500的示例性實施例的圖。在各種實施例中,資料結構502及電路500可被實施為電路,具體而言實施為如上所述的儲存組合監測器電路。
在各種實施例中,儲存組合監測器500可被配置成對局部儲存串流(即,寫入至小於完整快取線的串流)的處理進行表徵及管理。偶爾,儲存串流會串流至半永久記憶體或非揮發性快取層級。此目標記憶體往往為必須一次寫入一個完整快取線的固態裝置。當僅局部快取線需要被寫入時,此需要進行讀取-修改-寫入操作(read-modify-write operation)。在此種操作中,完整快取線被讀取,接著被使用新資料進行修改,且接著作為完整快取線被回寫。此會導致儲存操作的費用(overhead)顯著增加且因此是有時直接串流至記憶體可能會對效能產生負面影響的原因。儲存組合監測器500可被配置成追蹤每一快取線的所組合的儲存數目,並判斷儲存串流是否應使用具有較少費用的目標快取層級(即,不需要立即進行讀取-修改-寫入操作的快取層級)。
在各種實施例中,確定處理局部儲存串流的最有利方式的關鍵特性是追蹤每一快取線的所組合的儲存數目(NC )。在一個實施例中,若大多數快取線的NC 低於臨限值(NCTH )(即,所述組合往往相對稀疏),則使儲存串流分配至快取中而非直接寫入至記憶體中可為期望的。否則,使儲存串流跳過所述快取且直接寫入至記憶體可為期望的。
局部儲存串流的處理往往較完整儲存串流昂貴,乃因其需要進行讀取-修改-寫入。因此,每一交易(即,將局部快取線寫入至記憶體)通常需要更多的資源,例如頻寬、讀取-寫入轉回(read-write turnaround)、佇列與緩衝(queuing & buffering)。稀疏的局部儲存串流指示每一指令的交易的數目為相對高的。因此,將串流資料分配至不使用讀取-修改-寫入操作(即,在本機中容許進行局部快取線寫入)的快取層級會使讀取自寫入解耦。在此種實施例中,在進行正常快取系統逐出、回寫操作時,所儲存資料可最終被回寫至半永久的或非揮發性的較低快取層級。此既能避免局部快取線寫入(乃因快取線已被組合於較高快取層級中)又能將局部寫入延遲至較遲的時間(延遲至快取逐出時),因此會使其他多餘資源使用要求分散在長的時間週期內。
在所示實施例中,儲存組合監測器500可包括追蹤表502,追蹤表502被配置成追蹤每一快取線的所組合的儲存數目。在所示實施例中,追蹤表502可每一列或每一條目包括位址或快取線欄位(cache line field)552以及所組合的儲存數目計數欄位(stores count field)556,位址或快取線欄位552辨識與快取線相關聯的位址的區或直接辨識所述快取線,所述所組合的儲存數目計數欄位556辨識此快取線已經歷組合儲存(combining store)的次數。在一些實施例中,追蹤表502亦可包括有效欄位(valid field)554,有效欄位554指示快取線是否包括有效資料,且若不包括有效資料,則可自表502逐出所述條目。應理解,上述僅為幾個說明性例子,所揭露主題並非僅限於所述說明性例子。
在501處,本儲存組合監測器偵測儲存漏失。在一個實施例中,可判斷(例如,藉由比較器503)在追蹤表502中是否已包括與儲存漏失相關聯的位址或快取線。若不包括與儲存漏失相關聯的位址或快取線,則可在追蹤表502中創建所述位址的新條目。在一些實施例中,所述條目可使用為0的初始NC 556來創建。在另一實施例中,所述條目可使用為1的初始NC 556來創建。若所述條目已存在,則可使NC 556遞增1(如由計數器505所示)。
比較器電路504示出可判斷儲存漏失的NC 556是否大於(或等於)組合臨限值(NCTH )。若快取線已經歷大於(或等於)臨限量的組合儲存,則可使不良快取線(CL)計數器遞減(如由電路508示出)。相反,若快取線已經歷小於臨限量的組合儲存,則可使不良快取線(CL)計數器遞增(如由電路506示出)。不良快取線計數器可監測快取層級的多少部分會經受讀取-修改-寫入操作。在各種實施例中,不良快取線計數器可為在最大值與最小值兩方面上均飽和的飽和計數器。在具有3位元計數器的一個此種實施例中,最大值可為7且最小值可為0。應理解,以上僅為一個說明性例子,所揭露主題並非僅限於所述說明性例子。
在所示實施例中,若不良快取線計數器在其最小值處飽和,則可設定繞過快取旗標(bypass cache flag)(由記憶體510示出)。當設定此種旗標(或發送訊號)時,儲存串流可繞過快取且被寫入至記憶體。相反,在一個實施例中,若不良快取線計數器在其最大值處飽和,則可清除繞過快取旗標(由記憶體512示出),且可將儲存串流儲存於快取中。應理解,上述僅為幾個說明性例子,所揭露主題並非僅限於所述說明性例子。
儘管所揭露主題已被論述為针对整個記憶體系統,然而在各種實施例中儲存串流偵測器、區大小偵測器及/或儲存組合監測器可在記憶體系統的子集上運作。舉例而言,電路可在每一串流中運作或僅針對特定記憶體位址進行運作。在多重處理器(multi-processor)或多重加載/儲存單元系統(multi-LSU system)的情形中,電路可僅針對所述多重處理器的子集進行運作。應理解,上述僅為幾個說明性例子,所揭露主題並非僅限於所述說明性例子。
圖6是可包括根據所揭露主題的原理而形成的半導體裝置的資訊處理系統600的示意性方塊圖。
參考圖6,資訊處理系統600可包括根據所揭露主題的原理而構造的裝置中的一或多者。在另一實施例中,資訊處理系統600可採用或執行根據所揭露主題的原理的一或多種技術。
在各種實施例中,資訊處理系統600可包括計算裝置(例如(舉例而言)膝上型電腦、桌上型電腦、工作站、伺服器、刀鋒型伺服器(blade server)、個人數位助理、智慧型電話、平板電腦、及其他適宜的電腦等)或虛擬機或者其虛擬計算裝置。在各種實施例中,資訊處理系統600可由使用者(圖中未示出)使用。
根據所揭露主題的資訊處理系統600可更包括中央處理單元(CPU)、邏輯、或處理器610。在一些實施例中,處理器610可包括一或多個功能單元區塊(functional unit block,FUB)或組合邏輯區塊(combinational logic block,CLB)615。在此種實施例中,組合邏輯區塊可包括各種布林邏輯運算(Boolean logic operation)(例如,反及、反或、非、互斥或等)、穩定邏輯裝置(例如,正反器(flip-flop)、鎖存器等)、其他邏輯裝置、或其組合。該些組合邏輯運算可以簡單或複雜方式配置成處理輸入訊號以達成所期望結果。應理解,儘管闡述了同步組合邏輯運算的幾個說明性例子,但所揭露主題並非僅限於此,而是可包括異步運算或其混合形式。在一個實施例中,所述組合邏輯運算可包括多個互補金屬氧化物半導體(complementary metal oxide semiconductor,CMOS)電晶體。在各種實施例中,該些互補金屬氧化物半導體電晶體可被排列成實行邏輯運算的閘;然而應理解,亦可使用其他技術,且所述其他技術處於所揭露主題的範圍內。
根據所揭露主題的資訊處理系統600可更包括揮發性記憶體620(例如,隨機存取記憶體(Random Access Memory,RAM)等)。根據所揭露主題的資訊處理系統600可更包括非揮發性記憶體630(例如,硬驅動機、光學記憶體、反及記憶體或快閃記憶體等)。在一些實施例中,揮發性記憶體620、非揮發性記憶體630、或其組合或部分可被稱為「儲存媒體」。在各種實施例中,揮發性記憶體620及/或非揮發性記憶體630可被配置成以半永久形式或實質上永久形式儲存資料。
在各種實施例中,資訊處理系統600可包括一或多個網路介面640,所述一或多個網路介面640被配置成使得資訊處理系統600能夠成為通訊網路的一部分並經由通訊網路進行通訊。Wi-Fi協定的例子可包括但不限於電氣及電子工程師學會(Institute of Electrical and Electronics Engineers,IEEE)802.11g、IEEE 802.11n等。蜂巢式協定(cellular protocol)的例子可包括但不限於:IEEE 802.16m(亦稱為高級無線都會區域網路(Wireless-Metropolitan Area Network Advanced,Wireless-MAN Advanced))、高級長期演進(Long Term Evolution Advanced,LTE Advanced)、增強型資料速率全球行動通訊系統(Global System for Mobile Communication,GSM)演進技術(Enhanced Data rates for GSM Evolution,EDGE)、演進高速封包存取(Evolved High-Speed Packet Access,HSPA+)等。有線協定(wired protocol)的例子可包括但不限於IEEE 802.3(亦稱為乙太網路)、光纖通道(fibre channel)、電力線(power line)通訊(例如,家庭插電(HomePlug)、IEEE 1901等)等。應理解,以上僅為幾個說明性例子,所揭露主題並非僅限於所述說明性例子。
根據所揭露主題的資訊處理系統600可更包括使用者介面單元650(例如,顯示器配接器、觸覺式介面、人機介面裝置(human interface device)等)。在各種實施例中,此使用者介面單元650可被配置成自使用者接收輸入及/或提供輸出至使用者。亦可使用其他種類的裝置來提供與使用者的交互;舉例而言,被提供至使用者的回饋可為任何形式的感覺回饋(sensory feedback),例如視覺回饋、聽覺回饋、或觸覺回饋;且來自使用者的輸入可以任何形式(包括聲音輸入、語音輸入、或觸覺輸入)接收。
在各種實施例中,資訊處理系統600可包括一或多個其他裝置或硬體組件660(例如,顯示器或監視器、鍵盤、滑鼠、照相機、指紋讀取器、視訊處理器等)。應理解,以上僅為幾個說明性例子,所揭露主題並非僅限於所述說明性例子。
根據所揭露主題的資訊處理系統600可更包括一或多個系統匯流排605。在此種實施例中,系統匯流排605可被配置成以通訊方式耦合處理器610、揮發性記憶體620、非揮發性記憶體630、網路介面640、使用者介面單元650、及一或多個硬體組件660。經處理器610處理的資料或自非揮發性記憶體630的外部輸入的資料可儲存於非揮發性記憶體630或揮發性記憶體620中。
在各種實施例中,資訊處理系統600可包括或執行一或多個軟體組件670。在一些實施例中,軟體組件670可包括作業系統(operating system,OS)及/或應用。在一些實施例中,作業系統可被配置成向應用提供一或多個服務,並管理資訊處理系統600的所述應用及所述各種硬體組件(例如,處理器610、網路介面640等)或用作資訊處理系統600的所述應用與所述各種硬體組件之間的媒介。在此種實施例中,資訊處理系統600可包括一或多個本機應用(native application),所述一或多個本機應用可在本機安裝(例如,安裝於非揮發性記憶體630內,等)且被配置成直接由處理器610執行且直接與作業系統交互。在此種實施例中,本機應用可包括預編譯機器可執行碼。在一些實施例中,本機應用可包括被配置成將源碼或目標碼轉譯成隨後由處理器610執行的可執行碼的以下應用:腳本解譯器(例如,C shell(csh)、蘋果腳本(AppleScript)、自動熱鍵(AutoHotkey)等)或虛擬執行機器(virtual execution machine,VM)(例如,爪哇(Java)虛擬機、微軟共用語言執行環境(Microsoft Common Language Runtime)等)。
上述半導體裝置可使用各種封裝技術來包封。舉例而言,根據所揭露主題的原理而構造的半導體裝置可使用以下中的任一者來包封:堆疊式封裝(package on package,POP)技術、球柵陣列(ball grid array,BGA)技術、晶片級封裝(chip scale package,CSP)技術、塑膠帶引線晶片載體(plastic leaded chip carrier,PLCC)技術、塑膠雙列直插封裝(plastic dual in-line package,PDIP)技術、疊片內晶粒包裝(die in waffle pack)技術、晶圓內晶粒形式(die in wafer form)技術、板上晶片(chip on board,COB)技術、陶瓷雙列直插封裝(ceramic dual in-line package,CERDIP)技術、塑膠公制方形扁平封裝(plastic metric quad flat package,PMQFP)技術、塑膠方形扁平封裝(plastic quad flat package,PQFP)技術、小外廓封裝(small outline package,SOIC)技術、收縮型小外廓封裝(shrink small outline package,SSOP)技術、薄小外廓封裝(thin small outline package,TSOP)技術、薄方形扁平封裝(thin quad flat package,TQFP)技術、系統內封裝(system in package,SIP)技術、多晶片封裝(multi-chip package,MCP)技術、晶圓級製作封裝(wafer-level fabricated package,WFP)技術、晶圓級處理堆疊封裝(wafer-level processed stack package,WSP)技術、或熟習此項技術者將知的其他技術。
各方法步驟可由執行電腦程式的一或多個可程式化處理器對輸入資料進行操作並產生輸出而進行各種功能。各方法步驟亦可由專用邏輯電路(例如,現場可程式化閘陣列(field programmable gate array,FPGA)或應用專用積體電路(application-specific integrated circuit,ASIC))進行且設備可實作為所述專用邏輯電路。
在各種實施例中,電腦可讀取媒體可包括指令,所述指令在執行時使裝置進行所述方法步驟中的至少一部分。在一些實施例中,電腦可讀取媒體可包含於磁性媒體(magnetic medium)、光學媒體(optical medium)、其他媒體、或其組合(例如,光碟唯讀記憶體(CD-ROM)、硬驅動機、唯讀記憶體、快閃驅動機等)中。在此種實施例中,電腦可讀取媒體可為有形的、非暫時性(non-transitory)實施的製品。
儘管已參考示例性實施例闡述了所揭露主題的原理,但對熟習此項技術者而言將顯而易見,在不背離該些所揭露概念的精神及範圍條件下,可作出各種變化及潤飾。因此,應理解,以上實施例並非為限制性的,而是僅為說明性的。因此,所揭露概念的範圍應由以下申請專利範圍及其等效範圍的最廣可容許解釋來確定,而不應由前述說明來約束或限制。因此應理解,隨附申請專利範圍旨在涵蓋落於實施例的範圍內的所有此種潤飾及變化。
100‧‧‧系統/處理器
102‧‧‧電路/加載/儲存單元
104‧‧‧半永久記憶體
106‧‧‧記憶體互連件
108‧‧‧記憶體系統
112‧‧‧一級快取
122‧‧‧二級快取
132‧‧‧三級快取
142‧‧‧系統記憶體
152‧‧‧儲存串流偵測器電路
154‧‧‧區大小偵測器電路
156‧‧‧儲存組合監測器電路
190‧‧‧資料
191‧‧‧記憶體位址部分
192‧‧‧儲存指令/儲存/儲存操作
200‧‧‧技術
201、202、204、206、208、214、216、218、501‧‧‧步驟
300‧‧‧電路/區大小偵測器電路
301‧‧‧儲存指令
302‧‧‧資料結構/位址條目表
303‧‧‧位址過濾器
304、306、504‧‧‧比較器電路
308、311、312、313、314、505‧‧‧計數器
352‧‧‧位址欄位/近期位址欄位/新採樣的位址
354‧‧‧當前週期旗標
356‧‧‧最末週期旗標
358‧‧‧所選擇區欄位
400‧‧‧資料結構
401、402、403、404、405、406、407、408、409、410、411、412、413、414、415、416、417、418、419‧‧‧指令
490‧‧‧儲存串流
500‧‧‧電路/儲存組合監測器電路
502‧‧‧資料結構/表/追蹤表
503‧‧‧比較器
506、508‧‧‧電路
510、512‧‧‧記憶體
552‧‧‧快取線欄位
554‧‧‧有效欄位
556‧‧‧所組合的儲存數目計數欄位
600‧‧‧資訊處理系統
605‧‧‧系統匯流排
610‧‧‧處理器
615‧‧‧組合邏輯區塊
620‧‧‧揮發性記憶體
630‧‧‧非揮發性記憶體
640‧‧‧網路介面
650‧‧‧使用者介面單元
660‧‧‧硬體組件
670‧‧‧軟體組件
A‧‧‧位址/初始位址/快取線位址
B、C、D、E、F‧‧‧位址/快取線位址
圖1是根據所揭露主題的系統的示例性實施例的方塊圖。
圖2是根據所揭露主題的一種技術的示例性實施例的流程圖。
圖3是根據所揭露主題的資料結構及電路的示例性實施例的圖。
圖4是根據所揭露主題的資料結構的示例性實施例的方塊圖。
圖5是根據所揭露主題的資料結構及電路的示例性實施例的圖。
圖6是可包括根據所揭露主題的原理而形成的裝置的資訊處理系統的示意性方塊圖。
在各種圖式中相同參考符號指示相同元件。

Claims (20)

  1. 一種設備,包括: 加載/儲存電路,被配置成發出欲將資料儲存於記憶體系統中的多個儲存指令;以及 區大小偵測電路,被配置成至少部分地基於追蹤所述多個儲存指令中的多個快取線位址條目來確定多個快取中欲儲存儲存指令串流的快取,其中所述位址條目中的每一者被以不同的頻率進行更新。
  2. 如申請專利範圍第1項所述的設備,其中所述位址條目中的每一者被以與相關聯的快取的大小相關聯的頻率進行更新。
  3. 如申請專利範圍第1項所述的設備,其中所述區大小偵測電路包括位址條目表,所述位址條目表具有每一更新頻率的位址條目,其中所述位址條目中的每一者包括: 近期位址欄位,被配置成儲存在當前週期的起始處被採樣的最近期位址, 當前週期旗標,被配置成指示在所述當前週期內所述最近期位址是否已在所述多個儲存指令內出現至少第二次,以及 最末週期旗標,被配置成指示最末週期的末尾處的所述當前週期旗標的值。
  4. 如申請專利範圍第1項所述的設備,其中所述區大小偵測電路被配置成基於哪一位址條目-若有-指示已在兩個連續的追蹤週期內出現位址匹配來選擇欲儲存所述儲存指令串流的所述快取。
  5. 如申請專利範圍第1項所述的設備,更包括: 儲存串流偵測電路,被配置成至少部分地基於所選擇快取的快取命中的數目、以及所述儲存指令的大小來偵測所述多個儲存指令是否包括儲存指令串流。
  6. 如申請專利範圍第1項所述的設備,更包括: 儲存組合監測器電路,被配置成追蹤以快取線粒度程度加以組合的儲存指令的數目,並採用所述數目來確定局部儲存串流處理。
  7. 如申請專利範圍第6項所述的設備,更包括半永久記憶體,所述半永久記憶體被配置成至少半永久地儲存至少局部地及暫時性地儲存於至少一個快取中的資料;以及 其中所述儲存組合監測器電路被配置成至少部分地基於與所述儲存指令串流相關聯的稀疏快取線的數目是否低於臨限值來判斷所述儲存指令串流是將被直接儲存於快取中還是儲存於所述半永久記憶體中。
  8. 如申請專利範圍第6項所述的設備,其中所述儲存組合監測器電路包括: 先進先出位址緩衝器,被配置成追蹤有多少儲存被組合至每一快取線中。
  9. 如申請專利範圍第6項所述的設備,其中所述儲存組合監測器電路包括: 飽和計數器,被配置成指示快取線已超過所述臨限值的次數。
  10. 如申請專利範圍第1項所述的設備,其中所述區大小偵測電路被配置成以基於相同數目個位元組的頻率、但以不同的偏移量來更新至少兩個位址條目。
  11. 一種方法,包括: 接收欲將資料儲存於記憶體系統中的多個儲存指令,其中所述記憶體系統被配置成至少暫時地將所述資料儲存於至少一個快取中;以及 藉由區大小偵測電路至少部分地基於追蹤所述多個儲存指令中的多個位址條目來選擇欲儲存儲存指令串流的快取,其中所述位址條目中的每一者被以不同的頻率進行更新。
  12. 如申請專利範圍第11項所述的方法,其中所述位址條目中的每一者被以與相關聯的快取的大小相關聯的頻率進行更新。
  13. 如申請專利範圍第11項所述的方法,其中所述區大小偵測電路包括位址條目表,所述位址條目表具有每一更新頻率的位址條目,其中所述位址條目中的每一者包括: 近期位址欄位,被配置成儲存在當前週期的起始處被採樣的最近期位址, 當前週期旗標,被配置成指示在所述當前週期內所述最近期位址是否已在所述多個儲存指令內出現至少第二次,以及 最末週期旗標,被配置成指示最末週期的末尾處的所述當前週期旗標的值。
  14. 如申請專利範圍第11項所述的方法,其中選擇欲儲存所述儲存指令串流的所述快取是基於哪一位址條目-若有-指示已在兩個連續的追蹤週期內出現位址匹配。
  15. 如申請專利範圍第11項所述的方法,更包括: 藉由儲存串流偵測電路至少部分地基於所選擇快取的快取命中的數目、以及所述儲存指令的大小來偵測所述多個儲存指令是否包括儲存指令串流。
  16. 如申請專利範圍第11項所述的方法,更包括: 藉由儲存組合監測器電路來追蹤以快取線粒度程度加以組合的儲存指令的數目,並採用所述數目來確定局部儲存串流處理。
  17. 如申請專利範圍第16項所述的方法,更包括: 至少部分地基於與所述儲存指令串流相關聯的稀疏快取線的數目是否低於臨限值來判斷所述儲存指令串流是將被直接儲存於快取中還是儲存於半永久記憶體中。
  18. 如申請專利範圍第16項所述的方法,其中所述儲存組合監測器電路包括: 先進先出位址緩衝器,被配置成追蹤有多少儲存被組合至每一快取線中。
  19. 如申請專利範圍第16項所述的方法,其中所述儲存組合監測器電路包括: 飽和計數器,被配置成指示快取線已超過所述臨限值的次數。
  20. 如申請專利範圍第11項所述的方法,更包括: 以基於相同數目個位元組的頻率、但以不同的偏移量來更新至少兩個位址條目。
TW106137464A 2016-12-12 2017-10-30 偵測與處理儲存串流的系統與方法 TWI774703B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662433232P 2016-12-12 2016-12-12
US62/433,232 2016-12-12
US15/422,442 US10649904B2 (en) 2016-12-12 2017-02-01 System and method for store streaming detection and handling
US15/422,442 2017-02-01

Publications (2)

Publication Number Publication Date
TW201832087A true TW201832087A (zh) 2018-09-01
TWI774703B TWI774703B (zh) 2022-08-21

Family

ID=62490098

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106137464A TWI774703B (zh) 2016-12-12 2017-10-30 偵測與處理儲存串流的系統與方法

Country Status (4)

Country Link
US (1) US10649904B2 (zh)
KR (1) KR102452660B1 (zh)
CN (1) CN108228237B (zh)
TW (1) TWI774703B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11010092B2 (en) 2018-05-09 2021-05-18 Micron Technology, Inc. Prefetch signaling in memory system or sub-system
US10714159B2 (en) 2018-05-09 2020-07-14 Micron Technology, Inc. Indication in memory system or sub-system of latency associated with performing an access command
US10754578B2 (en) 2018-05-09 2020-08-25 Micron Technology, Inc. Memory buffer management and bypass
US10942854B2 (en) 2018-05-09 2021-03-09 Micron Technology, Inc. Prefetch management for memory
KR20200059493A (ko) * 2018-11-21 2020-05-29 에스케이하이닉스 주식회사 데이터 처리 시스템

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5590292A (en) * 1992-12-08 1996-12-31 Compaq Computer Corporation Scalable tree structured high speed input/output subsystem architecture
US5781926A (en) * 1996-05-20 1998-07-14 Integrated Device Technology, Inc. Method and apparatus for sub cache line access and storage allowing access to sub cache lines before completion of line fill
US7194582B1 (en) * 2003-05-30 2007-03-20 Mips Technologies, Inc. Microprocessor with improved data stream prefetching
US8051250B2 (en) * 2007-03-14 2011-11-01 Hewlett-Packard Development Company, L.P. Systems and methods for pushing data
US20090083490A1 (en) * 2007-09-26 2009-03-26 International Business Machines Coproration System to Improve Data Store Throughput for a Shared-Cache of a Multiprocessor Structure and Associated Methods
US8667221B2 (en) 2008-04-08 2014-03-04 Intel Corporation Detection of streaming data in cache
US7958317B2 (en) 2008-08-04 2011-06-07 International Business Machines Corporation Cache directed sequential prefetch
US8667225B2 (en) 2009-09-11 2014-03-04 Advanced Micro Devices, Inc. Store aware prefetching for a datastream
US8271729B2 (en) * 2009-09-18 2012-09-18 International Business Machines Corporation Read and write aware cache storing cache lines in a read-often portion and a write-often portion
US8438456B2 (en) 2009-10-05 2013-05-07 Cleversafe, Inc. Method and apparatus for dispersed storage of streaming data

Also Published As

Publication number Publication date
CN108228237B (zh) 2023-04-07
CN108228237A (zh) 2018-06-29
KR102452660B1 (ko) 2022-10-11
KR20180067405A (ko) 2018-06-20
TWI774703B (zh) 2022-08-21
US20180165211A1 (en) 2018-06-14
US10649904B2 (en) 2020-05-12

Similar Documents

Publication Publication Date Title
TWI774703B (zh) 偵測與處理儲存串流的系統與方法
US11768946B2 (en) Low memory overhead heap management for memory tagging
US11487675B1 (en) Collecting statistics for persistent memory
KR102424121B1 (ko) 프리-페치 유닛, 그것을 포함하는 장치 및 그것의 동작 방법
US11169925B2 (en) Capturing temporal store streams into CPU caches by dynamically varying store streaming thresholds
US10593380B1 (en) Performance monitoring for storage-class memory
US10235290B2 (en) Hot page selection in multi-level memory hierarchies
KR102513446B1 (ko) 집적된 컨펌 대기열 회로를 포함하는 장치 및 그것의 동작 방법
US9632958B2 (en) System for migrating stash transactions
US11030030B2 (en) Enhanced address space layout randomization
US9875191B2 (en) Electronic device having scratchpad memory and management method for scratchpad memory
KR102398604B1 (ko) 연쇄 프리 패칭을 위한 장치 및 그것의 동작 방법
WO2016015583A1 (zh) 一种内存管理方法、装置以及内存控制器
WO2017005761A1 (en) Method for managing a distributed cache
CN110716694A (zh) 用于存储管理的装置及系统
Zhou et al. Gas: A heterogeneous memory architecture for graph processing
JP7038656B2 (ja) キャッシュへのアクセス
TW201933120A (zh) 用以避免負載填充衝突的設備以及系統
US9542318B2 (en) Temporary cache memory eviction
CN104932989B (zh) 数据到高速缓冲层次低延迟层级中的机会性高速缓冲注入
KR20150110401A (ko) 저 레이턴시 레벨의 캐시로 캐시 인젝션을 수행하는 방법, 및 그 방법을 이용하는 장치 및 시스템

Legal Events

Date Code Title Description
GD4A Issue of patent certificate for granted invention patent