TW202334823A - 用於電腦記憶體的效能計數器的設備、方法與電腦可讀取媒體 - Google Patents

用於電腦記憶體的效能計數器的設備、方法與電腦可讀取媒體 Download PDF

Info

Publication number
TW202334823A
TW202334823A TW112116390A TW112116390A TW202334823A TW 202334823 A TW202334823 A TW 202334823A TW 112116390 A TW112116390 A TW 112116390A TW 112116390 A TW112116390 A TW 112116390A TW 202334823 A TW202334823 A TW 202334823A
Authority
TW
Taiwan
Prior art keywords
counter
count value
processor
address range
memory address
Prior art date
Application number
TW112116390A
Other languages
English (en)
Inventor
約翰G 班納特
西亞馬克 塔瓦萊伊
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 TW202334823A publication Critical patent/TW202334823A/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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • 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
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/068Hybrid storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • 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/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Preparing Plates And Mask In Photomechanical Process (AREA)
  • Traffic Control Systems (AREA)
  • Apparatus For Radiation Diagnosis (AREA)

Abstract

在一些例子中,用於電腦記憶體的效能計數器可包括確認關聯於電腦記憶體之一記憶體位址範圍的一請求。該記憶體位址範圍可經指派給複數個指定效能層級中的一指定效能層級。可確認關聯於該記憶體位址範圍之一效能屬性的一效能值,且基於該經確認的效能值,可決定一權重值。基於該經確認的請求及該經決定的權重值,可增加關聯於一計數器的一計數值,該計數器關聯於該記憶體位址範圍。基於對關聯於該計數器的該計數值的分析,可對是否該記憶體位址範圍將被指派給該複數個指定效能層級中的一不同指定效能層級做出一決定。基於該記憶體位址範圍將被指派給該不同指定效能層級的決定,該記憶體位址範圍可經指派給該指定效能層級。

Description

用於電腦記憶體的效能計數器的設備、方法與電腦可讀取媒體
本申請案是申請於2017年11月9日的共同轉讓及共同未決之美國臨時申請案第62/583,909號的非臨時申請案,該揭示案在此藉引用方式整體併入本文。
本申請案有關用於電腦記憶體的效能計數器。
電腦系統可包括各種類型的電腦記憶體。例如,電腦記憶體可包括揮發性記憶體,像是被使用作為電腦系統中之主要儲存的隨機存取記憶體(RAM)。相較於揮發性記憶體,非揮發性記憶體可被使用作為輔助儲存,或永久性儲存。非揮發性記憶體的例子包括唯讀記憶體、快閃記憶體、磁性電腦儲存裝置、等等。
電腦記憶體可為非統一的,在於不同層級之電腦記憶體可針對包括延遲、處理量(throughput)、容量、耐受力(endurance)及持久度(durability)之品質包括不同值。可將延遲描述成在資料傳送或命令執行的一關聯指令之後,在該資料之傳送或該命令之執行開始之前的延誤時間。可將處理量描述成讀取資料或將資料存入電腦記憶體中的速率。進一步,可將耐受力描述成在電腦記憶體變成不可靠之前可應用至該電腦記憶體的程式寫入及/或抹除週期的個數。可將持久度描述成永久性記憶體的屬性,其描述資料在沒有被施加電力的記憶體中可有多長時間維持有效。
為了將電腦系統效能最佳化,電腦記憶體中的內容需要被置放在該電腦記憶體的一適當層級中。例如,某些內容可能需要被置放在該電腦記憶體的包括指定延遲的一層級中,同時其他內容可能需要基於處理量、耐受力、及/或其他因素而被置放在其他層級中。在此方面,要選擇欲置放該內容所在的電腦記憶體之層級而使得所選層級匹配利用該層級之應用程式(或另一裝置)的行為表現(behavior),在技術上是困難的。技術上也是難以預測一應用程式的行為表現以選擇適當層級,其中關聯於電腦系統的作業系統或超管理器(hypervisor)可運用所預測行為表現來對於該內容在一指定層級中的置放位置做出決策。再進一步,要動態地修改內容在電腦記憶體之一指定層級中的置放位置是在技術上困難的,因為不同層級的行為表現以及內容在一特定層級中的置放位置可隨時間改變。
電腦記憶體(或概略的儲存位置)的層級可能也遭受來自複數個來源的爭用,該複數個來源存取或以其他方式運用該層級的內容。例如,一特定層級可包括經適當置放的內容。然而,由於對該特定層級的相對大之存取次數,該特定層級的使用率可導致關聯於該特定層級之電腦系統降低效能。在此方面,要預測一特定層級之使用率何時超過一指定使用率,在技術上是困難的。技術上也難以修改一特定層級的使用率以符合一指定使用率,來於指定成本、效能、或電力消耗位準下增加或維持該電腦系統的效能。
又進一步,電腦記憶體的層級可經界定以藉由「著色」映射成一快取,其中該層級經指定成相同顏色的全部部分將為快取中的相同置放位置競爭。若兩個或兩個以上不同的、具有相同顏色的記憶體集合經常被使用,此種競爭可降低電腦記憶體的效能。在此方面,要靜態地選擇能避免此種效能降低的顏色在技術上是困難的,因為使用率的規律隨時間改變,且進一步因為在被指派一記憶體區域的時間點對於該記憶體區域之規劃使用率的認知有限。在電腦系統上要監測及找到發生此類衝突的區域也在技術上是困難的。
本揭示案提供一種設備,包含:一處理器;及一記憶體,該記憶體儲存機器可讀取指令,當該等機器可讀取指令由該處理器執行時致使該處理器進行下列步驟:確認關聯於電腦記憶體之一記憶體位址範圍的一請求,其中該記憶體位址範圍經指派給複數個指定效能層級中的一指定效能層級;確認關聯於該記憶體位址範圍之一效能屬性的一效能值;基於該經確認的效能值,決定一權重值;基於該經確認的請求及該經決定的權重值,增加關聯於一計數器的一計數值,該計數器關聯於該記憶體位址範圍;基於對關聯於該計數器的該計數值的分析,來決定是否該記憶體位址範圍將被指派給該複數個指定效能層級中的一不同指定效能層級;及基於該記憶體位址範圍將被指派給該不同指定效能層級的決定,指派該記憶體位址範圍給該不同指定效能層級。
本揭示案提供一種電腦實施方法,包含下列步驟:由至少一處理器,確認關聯於電腦記憶體之一記憶體位址範圍的一請求;由該至少一處理器並基於該經確認的請求,增加關聯於一計數器的一計數值,該計數器關聯於該記憶體位址範圍;由該至少一處理器決定一匯總值,該匯總值是作為關聯於該計數器的該計數值與一效能值的函數,該效能值關聯於該記憶體位址範圍之一效能屬性;由該至少一處理器並基於對該匯總值的分析,決定是否該記憶體位址範圍的使用率超過一指定使用率;及基於該記憶體位址範圍的使用率超過該指定使用率的決定,由該至少一處理器修改該記憶體位址範圍的使用率以減少針對該記憶體位址範圍的爭用。
本揭示案提供一種非暫態電腦可讀取媒體,該非暫態電腦可讀取媒體具有機器可讀取指令儲存於其上,當該等機器可讀取指令由一處理器執行時致使該處理器進行下列步驟:確認關聯於包括在電腦記憶體之一記憶體位址範圍中的一分頁的一請求,其中該電腦記憶體包括複數個分頁,該複數個分頁包括該分頁;確認關聯於該記憶體位址範圍之一效能屬性的一效能值;基於該經確認的效能值,決定一權重值;基於該經確認的請求及該經決定的權重值,增加關聯於一計數器的一計數值,該計數器關聯於該分頁;基於對包括該計數器在內之複數個計數器所關聯的計數值的分析來決定該複數個分頁中的一最高活動量分頁,其中該最高活動量分頁被指派給複數個指定效能層級中的一指定效能層級;及將該最高活動量分頁移到該複數個指定效能層級中的另一指定效能層級。
為了簡化及說明之目的,藉由主要參照範例來說明本揭示案。在以下說明中,闡述了數個指定細節以提供對本揭示案的完整理解。然而,將顯而易見可在不受限於這些指定細節下實現本揭示案。在其他情況中,沒有詳細描述某些方法及結構是為了不會不必要地模糊了本揭示案。
在整份本揭示文件中,用語「一」及「一個」意圖標示一特定元件的至少一個。如本文中所用,用語「包括」代表包括但不限於,用語「包含」代表包含但不限於。用語「基於」代表至少部分地基於。
本文中揭露了用於電腦記憶體之效能計數器的設備、用於電腦記憶體之效能計數器的方法、及其上儲存有機器可讀取指令以提供用於電腦記憶體之效能計數器的非暫態電腦可讀取媒體。本文中揭露的該些設備、方法、及非暫態電腦可讀取媒體提供對電腦記憶體中的記憶體模組、大容量記憶體、及其他的計數器的實施。該些計數器可用以解決至少前述之技術難題,藉由取得一應用程式(或另一裝置)的行為表現資料來將電腦記憶體中的內容置放在電腦記憶體的適當層級中。該等計數器可也藉由找到可能的廣泛的爭用來解決至少前述的技術難題,如此賦能開始減少爭用之其他步驟。記憶體模組可包括雙倍資料速率(DDR)雙行記憶體模組(DIMM)及其他,而 大容量記憶體可包括唯讀記憶體、快閃記憶體、及其他。
各計數器可監測一電腦系統內一特定範圍之電腦記憶體的活動。例如,可利用複數個計數器,且該複數個計數器包括的記憶體範圍遍及電腦系統之整個電腦記憶體。各記憶體範圍可對應於一塊電腦記憶體,作業系統(OS)或超管理器能夠將該塊電腦記憶體在不同指定效能層級的電腦記憶體之間移動。
按照範例,該等計數器可包括用於讀取活動及寫入活動兩者、以及不攜帶資料的其他耗時的活動(像是刷新週期、程式週期、及閒置時間)的不同計數器。替代地或額外地,該等計數器可負責讀取活動及寫入活動兩者的匯總。替代地或額外地,該等計數器可包括用於僅只讀取活動的計數器。替代地或額外地,該等計數器可包括用於僅只寫入活動的計數器。替代地或額外地,該等計數器可包括用於記錄週期混合及管線排程(pipelined)之命令活動的計數器。
對於所運用計數器的個數,按照範例,計數器的個數可為足夠用以計算充足之區域個數,以允許系統之整個記憶體涵蓋面積(footprint)內的記憶體活動被及時地掃描,或者預設上具有標準大小的全部區域具有個別的計數器,該些區域是移動的候選。因此,計數器的正確個數可彈性地經指派給感興趣的記憶體區域。例如,計數器可經指派給電腦記憶體的記憶體模組,以用於將內容在不同指定效能層級的記憶體模組之間移動。
該等計數器可也包括總結計數器。在此方面,雖然每個分頁可包括計數器,總結計數器可提供DIMM的總計數。總結計數器可供用於決定是否總活動量落於所關心之閾值以下。
對於計數器大小,按照範例,計數器可足夠大以擷取在各次檢查相關聯計數值之間的間隔中所預期的完整範圍的計數。替代地或額外地,該等計數器可在到達一最大計數值時飽和。替代地或額外地,自由運行的計數器可於滿計數時返轉(wrap around),返回零,而相關聯計數值的檢查可視情況將該等計數值歸零。替代地或額外地,在已檢查計數值之後可將飽和的計數器設成零。替代地或額外地,飽和的計數器可指示出飽和或溢出情況。一般而言,可在檢查之後將任何類型的計數器(自由運行的或飽和的)歸零。
對於電腦系統效能,可針對各種效能測量目的來利用計數器。例如,除了指引記憶體塊在一適當的指定效能層級中之置放位置之外,計數器可用於降低來自複數個來源的爭用,該複數個來源存取或以其他方式運用一特定層級(或一般的儲存位置)的內容。在此方面,計數器可識別出爭用,此可接著用以觸發其他步驟來降低爭用。
如本文中所揭示的計數器可因此供用於同時及有效的收集關於實際電腦記憶體之使用強度的資訊。在此方面,電腦記憶體可被分割成塊狀範圍(像是中央處理單元(CPU)映射表支持的分頁範圍),供作業系統或超管理器演算法指引之用,該些演算法決定將記憶體塊置放到不同的非統一記憶體存取(NUMA)或指定效能層級中之位置。
如本文中所揭示之計數器可包括屬性,像是分頁大小、虛擬到實體的映射、「熱」分頁的態樣、基於存取延遲藉由乘法器對計數器的加載、以及基於讀寫(READ/WRITE)存取之突發性(舉例,其為潛在佇列延遲的指示)對乘法器的調整。超管理器可運用計數器,基於{總和(計數*延遲*突發性)}之彙總來進行虛擬到實體的分頁映射的重分配。可基於「漏水桶」(“leaky bucket”)或精確計數值分析來分析該些計數器。在此方面,精確計數值分析可致使計數器超限(overrun)。漏水桶作法或在超限之後重新裝載該等計數器可提供對存取/操作之「熱度」或「成本」的定性量測。該等計數器可供用於「計數分級(counted bin)」到「數目」的映射,此可經儲存至暫存器中供後續READ之用(例如,(正常, 1)、(重度使用, 2)、(突發使用, 3)、等等)。對於計數器,改變計數模式可為基於超限的(例如,若發生超限,則進入例如對數(Log),且在READ時將計數器歸零)。
對於計數器使用率,超管理器可讀取全部計數器的內容(例如上達100k個或更多個計數器),並將該等計數值排序。例如,超管理器可識別出最低的及最高的計數值。在此方面,對最高計數的指示可表明出具有最繁重使用率的分頁。一快取系統可識別出最熱的分頁,例如,藉由利用實體記憶體位址及虛擬位址(PA,VA)的映射,將爭用者移動至「較快的」較貴的記憶體,並將最冷的分頁移動至相對「較慢的」大容量記憶體。在雙插槽伺服器中,虛擬機器可在任一中央處理單元(CPU)上。進一步,該等虛擬機器可基於記憶體的「熱度」(例如經由計數器所決定)而被移動(例如分配)到不同CPU。可利用該等計數器來基於「熱度」準則重新平衡虛擬機器或被指派給各虛擬機器的分頁,以重新分配DIMM電力(例如,減少電腦系統電力相當於增加記憶體可靠度)。
按照範例,本文中揭露的設備、方法、及非暫態電腦可讀取媒體可包括一電腦系統,該電腦系統包括一處理元件,該處理元件包括記憶體介面及記憶體次系統。記憶體次系統可包括一記憶體緩衝區/控制器(例如對主機記憶體控制器的介面)。該記憶體次系統可包括智慧計數器用以計算事件(例如READ週期、WRITE週期、刷新週期、管線排程週期、等等)。該等智慧計數器可包括複數個計數器(例如基於記憶體容量、及分頁大小)。分頁大小可為基於適當的選擇,該選擇為基於測量結果的精細度、虛擬機器需要、等等。該等智慧計數器可供用於累積計數及處理。用於該等智慧計數器的測量單位及比例可為定量的及定性的。定量的測量單位可包括線性比例、分級比例(binned scale)、飽和/溢出之後的對數比例、飽和水桶、漏水桶、滑動窗、等等。定性的測量單位可包括熱圖(heatmap)、及其他。該等智慧計數器可包括一加權總和,其經決定成(媒體延遲) * (存取頻率) * (突發性)的函數。在此方面,該等計數器可由一「固定的」乘法器基於存取延遲來加載。按照另一例,該等計數器可由一「所計算的」乘法器基於週期的「突發性」(例如經管線排程的週期預知了排入佇列的延誤時間)來加載。該等智慧計數器可提供對匯流排利用率、處理量、及效率(例如資料移動、閒置、刷新、迴轉(turn-around)週期、等等)的指示。進一步,該等智慧計數器可提供對「熱」記憶體分頁的決定(例如用以提供一方法供緩衝區/控制器用以「畫」「熱圖」,以及給智慧緩衝區產生該「熱圖」的能力)。該記憶體次系統可進一步包括一記憶體媒體(例如記憶體裝置)。記憶體媒體可包括不同記憶體類型(例如不同延遲及不同容量)。
按照範例,對於本文中揭露的設備、方法、及非暫態電腦可讀取媒體,該電腦系統可進一步包括一超管理器(例如)用以管理虛擬機器。在此方面,該超管理器可供用於針對各虛擬機器之虛擬位址(VA)到實體記憶體位址(PA)的適當、動態的映射。超管理器可提供對「熱」分頁的指示(基於智慧計數器的採樣)。該超管理器可供用於本文中揭露之「熱圖」的產生。該超管理器可供用於基於所觀察的記憶體流量(例如智慧計數器暫存器的讀數/採樣)的重新分配。該超管理器可供用於針對記憶體存取延遲、電力消耗、以及整體記憶體次系統成本的最佳化。該超管理器可供用於虛擬機器的重新分配與由各虛擬機器所用之分頁的重新分配。進一步,該超管理器可供用於虛擬機器到不同CPU及記憶體媒體類型的重新分配。
對於本文中揭露之設備、方法、及非暫態電腦可讀取媒體,如本文中所述的模組可為用以實施個別模組之功能之硬體及程式化的任意組合。在本文中所述一些例子中,可以數種不同方式實施該些硬體及程式化的組合。例如,用於該等模組的程式化可為儲存在非暫態機器可讀取儲存媒體上的處理器可執行指令,而用於該等模組的硬體可包括用以執行該些指令的處理資源。在這些例子中,實施此種模組的計算裝置可包括儲存該等指令的機器可讀取儲存媒體及用以執行該等指令的該處理資源,或者該機器可讀取儲存媒體可為獨立地儲存且可由該計算裝置及該處理資源存取。在一些例子中,一些模組可經實施在電路系統中。
第1圖圖示按照本揭示案的一實施例的一個用於電腦記憶體之效能計數器的設備(下文中也稱為「設備100」)之佈局。
參看第1圖,設備100可包括一請求決定模組102以確認關聯於電腦記憶體108之記憶體位址範圍106的一請求104。記憶體位址範圍106可經指派給複數個指定效能層級110的一指定效能層級。例如,指定效能層級可基於像是延遲、處理量、耐受力、等等因素而包括不同類型的指定效能。記憶體位址範圍106可對應於電腦記憶體108中的一分頁112,其中分頁112包括由請求104存取的內容114。如第1圖中顯示,分頁(1)到(N)可各經指派給複數個指定效能層級110的一指定效能層級。電腦記憶體108可包括像是RAM之揮發性記憶體、像是唯讀記憶體之非揮發性記憶體、快閃記憶體、磁性電腦儲存裝置、等等。可在一電腦系統116上提供電腦記憶體108。
一計數器控制模組118可確認關聯於記憶體位址範圍106之一效能屬性的一效能值。例如,該效能屬性可包括關聯於記憶體位址範圍106的延遲、突發性、讀寫請求週期分散度、等等。計數器控制模組118可基於經確認的效能值,來決定一權重值。進一步,計數器控制模組118可基於經確認請求104及該經決定的權重值,來增加關聯於一計數器120的一計數值,該計數器120關聯於該記憶體位址範圍。在此方面,電腦記憶體108可包括複數個計數器122。如第1圖中顯示,分頁(1)至(N)可各經指派給計數器122中的對應計數器(1)至(N)。
一計數值分析模組124可基於對關聯於計數器120的計數值126的分析,來決定是否記憶體位址範圍106將被指派給複數個指定效能層級110中的一不同指定效能層級。
基於記憶體位址範圍106將被指派給該不同指定效能層級的決定,一記憶體位址範圍指派模組128可指派記憶體位址範圍106給該不同指定效能層級。
替代地或6額外地,計數值分析模組124可基於對關聯於計數器120之計數值126的分析,來決定是否因(例如)爭用之故,記憶體位址範圍106的使用率超過一指定使用率。在此方面,記憶體位址範圍指派模組128可修改記憶體位址範圍106的使用率,以減少關於記憶體位址範圍106的爭用、平衡包括該電腦記憶體之電腦系統的機器資源,或者改善關於該記憶體位址範圍的效能。在此方面,資源可包括頻寬、電力、等等。
關於爭用,如本文中以進一步細節揭露的,假設電腦系統116的DRAM(未圖示)正被使用做為用於另一記憶體系統(例如DDR DIMM)的快取,可能有多個來源被映射至該快取之一目標記憶體區域中。在此方面,計數值分析模組124可決定該多個來源到該快取之該目標記憶體區域中的映射是可接受的,或者藉由將用於一特定實體記憶體之計數值126與一指定閾值做比較來決定是否應該改變該映射。在此方面,該實體記憶體可代表關聯於計數值126的一快取。基於用於該特定實體記憶體之計數值126超過該指定閾值的決定,一來源映射模組130可改變一來源(或複數個來源)到一不同實體記憶體的映射,該不同實體記憶體將被用作該經重新映射之來源的快取。以此方式,可減少對於原先映射之實體記憶體的爭用。
第2圖圖示包括計數器之一佈局的範例,該些計數器用於測量按照本揭示案之實施例的設備100的電腦記憶體使用率。
參看第2圖,按照範例,可添加計數器122至DIMM(例如DDR DIMM 200)及大容量記憶體202。對於第2圖的例子,DDR DIMM 200可包括DIMM控制器204及動態隨機存取記憶體(DRAM)封裝206。進一步,大容量記憶體202可包括一大容量記憶體控制器208,及大容量記憶體封裝210。
對於第2圖的例子,各分頁112可包括用於讀取操作之數目的一計數器120,分開的另一計數器120用於寫入操作之數目,還有其他計數器用於計算關聯於非帶有資料的週期(像是閒置週期、迴轉週期、及刷新週期)之時脈/週期的數目。各計數器120可涵蓋電腦記憶體108的一記憶體範圍,該範圍匹配一超管理器可管理的分頁112大小。例如,對於x64相容的電腦系統,分頁112的大小可為2MiB。按照另一例,對於ARM-64電腦系統,分頁112的大小可為1MiB。可針對其他類型之電腦系統類似地來決定分頁112的大小。例如,藉由加入計數器值,可容許具不同大小的分頁。例如,對於x64相容的電腦系統及ARM-64電腦系統,該記憶體範圍可經標準化為1MiB,因此對x64相容的電腦系統增加計數器值組對。因此,具有16GiB之記憶體的DIMM可包括16,384個讀取計數器及16,384個寫入計數器。
按照範例,計數器122可為8位元計數器,其飽和於255,並在再次採樣前歸零。在此方面,可利用一快照模式,將該等計數器值複製到分離的靜態記憶體中,而接著該等計數器可被歸零。
按照範例,可在沒有快照下將計數器122採樣。在此方面,可在一穩定的節奏上對該等計數器採樣,該節奏在針對各計數器讀取計數值之間提供幾乎相同的間隔。
對於第2圖的例子,關於第1圖的分頁(1)至(N),OS或超管理器可利用該些計數值來找到大容量記憶體202中的「熱分頁」或DIMM(例如DDR DIMM 200)中的「冷分頁」。來自大容量記憶體202的熱分頁可被移動到DIMM。類似地,DIMM中的冷分頁可被移動到大容量記憶體202。
「熱分頁」指稱的分頁為其用於相關聯記憶體位址範圍106之計數值126超過一指定閾值。替代地,可設定一閾值,其中一分頁即使已放棄電腦系統116中大部分活動之下(因為該電腦系統可能閒置)該分頁不會被認定為熱的。「冷分頁」指稱的分頁為其用於相關聯記憶體位址範圍106之計數值126在一指定閾值之下。
如本文中關於第1圖所揭示,計數值分析模組124可基於對關聯於計數器120的計數值126的分析,來決定是否記憶體位址範圍106將被指派給複數個指定效能層級110的一不同指定效能層級。進一步,基於記憶體位址範圍106將被指派給該不同指定效能層級的決定,記憶體位址範圍指派模組128可指派記憶體位址範圍106給該不同指定效能層級。在此方面,記憶體位址範圍指派模組128可有效地移動「熱分頁」及「冷分頁」的位置。換言之,記憶體位址範圍指派模組128可基於是否一特定分頁是「熱分頁」或「冷分頁」的決定,來有效地重新映射該指定分頁所在位置。
如本文中關於第1圖所揭示,計數值分析模組124可基於對關聯於計數器120的計數值126的分析,來決定是否記憶體位址範圍106將被指派給複數個指定效能層級110的一不同指定效能層級。在此方面,可在有或沒有包括加權因數之下來分析計數值126。
例如,可藉由以與關聯於電腦記憶體108之記憶體位址範圍106的請求的數目(例如各請求104)成正比例的方式增加計數值126,在沒有包括加權因數下分析計數值126。
替代地或額外地,可藉由套用一函數以在有包括加權因數下分析計數值126,該函數計入關聯於電腦記憶體108之記憶體位址範圍106的請求104的不同態樣。例如,可將該加權因數決定為延遲與存取頻率的乘積。例如,關聯於一指定效能層級的延遲可為固定的。然而,若關聯於一指定效能層級的延遲改變(例如從100奈秒(ns)增加到300 ns),則相關聯的計數值可藉一相應權重被增加(例如,因為從100 ns到300 ns的增量而權重為三),來指示出相關聯記憶體區域的利用率。替代地或額外地,關聯於一指定效能層級的延遲可(例如)因為將請求排入佇列而改變。該等計數器可藉由追蹤讀寫週期的混合、週期序列、及命令管線的強度來推斷此種排入佇列延誤時間。
替代地或額外地,可藉由將有關於該些請求的活動突發的程度計入,在有包括加權因數之下分析計數值126。例如,一記憶體控制器可識別出來到該相關聯記憶體模組的請求週期的分散度(例如,讀取接著寫入、連續讀取、等等),此可指示出於該記憶體控制器處有排入佇列。在此方面,計數值可被指派有按照該模組對操作成本的估計的一權重(例如活動的突發性)。
如本文中關於第1圖所揭示,計數器控制模組118可基於經確認的請求104,來增加關聯於該記憶體位址範圍的計數器120。進一步,計數值分析模組124可基於對關聯於計數器120的計數值126的分析,來決定是否記憶體位址範圍106將被指派給複數個指定效能層級110中的一不同指定效能層級。在此方面,計數值126可為基於每個經確認請求104的增量。替代地或額外地,可基於「漏水桶」做法來決定計數值126。對於「漏水桶」做法,可對每個經確認請求104增加其計數值,但對於每個指定時間段(例如毫秒或時脈數),可從該計數器之總計目前計數值減去該總計目前計數值的一指定數量(例如1/10、1/4、或1/3)。以此方式,計數值分析模組124所分析的計數值126可表示針對該相關聯計數器的相對近期的活動,而較舊的活動因此被忽略不計。移除該總計目前計數值的該指定數量可表示對該等計數值指派一衰減(例如指數級衰減)。
替代地或額外地,關於計數值分析模組124之操作,若計數值126已經有一指定時間段(例如120秒)之久未被計數值分析模組124分析,則可清除該計數器,而可分析針對一指定持續時間長(例如在120秒內)的計數值。
替代地或額外地,關於計數值分析模組124的操作,DRAM可主要包括對一種大小(例如快取線大小)的讀寫。然而,依照讀或寫是短或長而定,可對該等計數值指派不同成本(例如權重)。
一旦計數值被計數值分析模組124分析,用於相關聯計數器的計數值可被設成零。例如,一旦計數值被計數值分析模組124讀取,該等計數值可被設成零。
對於計數器超限,當計數器到達一最大計數值時,該計數器可繼續分級,其可為對數函數的形式。在此方面,各接續的計數增加可藉一函數來加權,該函數逐漸地或相反地非逐漸地增加該計數值權重。例如,關於逐漸的增加,一旦計數器到達一最大計數值,下一個計數值可由一因數5來加權,其後的計數值可由一因數10來加權,等等。關於非逐漸的增加,一旦計數器到達一最大計數值,該下一個計數值可由一因數5來加權,其後的計數值可由一因數20來加權,等等。替代地或額外地,當一計數器到達溢出條件時,相同群組中的全部計數器可開始利用新的權重因數。將在用於該組計數器的一權重因數暫存器指示出此情況。替代地或額外地,一計數器中的溢出情況可致使相同群組中的全部計數器將其位元值右移(例如將其內容除以2)。此右移情況可指示在該權重因數暫存器(或一除法因數暫存器)中。
對於爭用,如本文中參照第1圖所揭示,計數值分析模組124可基於對關聯於計數器120之計數值126的分析,來決定是否(例如)因為爭用所致記憶體位址範圍106的使用率超過一指定使用率。在此方面,記憶體位址範圍指派模組128可修改記憶體位址範圍106的使用率,以減少針對於記憶體位址範圍106的爭用。例如,假設電腦系統116的DRAM(未圖示)正被使用作為另一記憶體系統(例如DDR DIMM 200)的快取,可能有多個來源被映射至該快取之目標記憶體區域中。例如,多個虛擬位址可被映射至針對該DRAM的一個實體記憶體。一般而言,記憶體位址空間的多個部分可被設定成利用該實體記憶體作為快取。在此例中,可由計數值分析模組124評估多個虛擬位址到實體記憶體的映射,來決定該映射是否是可接受的,或者是否應改變該映射。
對於其中記憶體位址空間之多個部分可利用該實體記憶體作為快取的例子,有的情況中兩個或更多個記憶體位址空間之部分正相對大量地使用該快取。此種相對大量的使用率可產生爭用,其可能降低電腦系統116的效能(舉例),因為在改變被使用作為快取之該實體記憶體的期間的時間浪費。
按照範例,計數值分析模組124可藉由將用於該特定實體記憶體的計數值126與一指定閾值做比較,來決定是否該映射是可接受的,或是否該映射應被改變。基於用於該特定實體記憶體的計數值126超過該指定閾值的決定,來源映射模組130可將一來源(或複數個來源)的映射改變到一不同實體記憶體,該不同實體記憶體將被使用作為該經重新映射來源之快取。以此方式,可減少針對該原先映射之實體記憶體的爭用。如果在將該來源的映射改到該不同實體記憶體之後沒有減少爭用,則可改變另一來源(或複數個其他來源)的映射到一不同實體記憶體,直到令人滿意地減少爭用為止。
如本文中揭露,「熱分頁」可指其數個計數值超過一指定閾值的分頁。在此方面,可能有多個來源正利用相同的記憶體區域作為快取,而因此若有具有應被放在一快取中的高度使用之分頁(例如熱分頁)的不同來源,且因此該多個來源可能嘗試使用相同的快取空間,則可能產生爭用。
若降低了最熱的分頁上的活動量位準,則對於其他分頁的活動量可經平衡至更統一的位準。在此方面,即使發生有一些爭用,仍可藉由改變來源的映射到不同實體記憶體來減少整體的爭用位準。因此,可基於邏輯到實體定義的重新映射,來重新分配電腦系統116的實體資產。
關於計數器122的使用率,當一超管理器讀取計數器122時,可能有高達幾百個或幾千個計數器122。超管理器可基於計數值來將計數器122排序,而識別出最大的或最小的計數值。對於最小的計數值,為了本文中揭露的快取及爭用,可將最小的計數值識別成重新映射至使用程度較小之位置的目的地。關於多個指定效能層級,最小的計數值可表示移動到一較低指定效能層級之降級的候選者。關於最高的計數值,為了本文中揭露的快取及爭用,對於最熱的分頁,多個爭用者中之一可被移動到一較大分頁。對於多個指定效能層級,在最低效能層級中的最熱的分頁可被移動到較高的指定效能層級。
對於最高的計數值,可以一指定頻率來讀取該等計數值,該頻率可能識別出具有最高的計數值的分頁。例如,若計數器122飽和,則可降低該指定頻率使得該等計數器中沒有或非常少的計數器飽和,如此提供了哪些分頁正接收到最大使用量的指示。
關於計數器122的其他應用,假設一伺服器包括兩個插槽,而虛擬機器經指派給任一插槽,該伺服器中可能有數個虛擬機器而該等虛擬機器可包括不同活動量位準。若最頻繁活動中之虛擬機器中有些虛擬機器經指派給一個插槽,則可藉由將該等虛擬機器中之一移動到另一插槽來增加電腦系統116的效能,使得電腦系統116在系統資源方面被平衡。因此,計數器122可充當記憶體活動量計數器,以估計其他類型之活動(像是CPU使用率),以及藉由移動裝置來重新平衡電腦系統116以有更高機率在系統資源之中得到平衡。在此方面,藉由將用於屬於指定虛擬機器之分頁的計數值相加,可決定一虛擬機器的活動量。
關於計數器122的其他應用,一記憶體匯流排上的活動可轉化成電力消耗。在此方面,資源的重新分配可基於電力消耗。例如,緩衝區的高計數值可提供電力消耗的指示。可利用高計數值來偵測出一特定DIMM為過熱的。例如,若有多個DIMM在一給定的指定效能層級上,而該過熱DIMM正存取分頁,則關於該過熱DIMM的活動可被重新指派給其他DIMM以將負載平衡,而因此平衡了關聯於電腦系統116的電力消耗。
按照範例,第3~5圖分別圖示用於電腦記憶體之效能計數器的範例方塊圖300、範例方法400的流程圖、及一進一步範例方塊圖500。方塊圖300、方法400、及方塊圖500可經實施在以上做為範例而非限制地參照第1圖所述之設備100上。方塊圖300、方法400、及方塊圖500可經實現在其他設備上。除了顯示方塊圖300之外,第3圖顯示設備100的硬體,其可執行方塊圖300的指令。該些硬體可包括一處理器302,以及儲存機器可讀取指令的一記憶體304,當該等機器可讀取指令由該處理器執行時致使該處理器進行方塊圖300的指令。記憶體304可表示一非暫態電腦可讀取媒體。第4圖可表示用於電腦記憶體之效能計數器的範例方法,以及該方法的步驟。第5圖可表示其上儲存有機器可讀取指令的一非暫態電腦可讀取媒體502,用以提供按照範例的用於電腦記憶體之效能計數器。當該等機器可讀取指令被執行時致使一處理器504進行第5圖中也顯示之方塊圖500的指令。
第3圖的處理器302及/或第5圖的處理器504可包括單一或多個處理器或其他硬體處理電路,以執行本文中描述的方法、功能、及其他程序。這些方法、功能及其他程序可經體現為儲存在電腦可讀取媒體上的機器可讀取指令,該電腦可讀取媒體可為非暫態的(例如第5圖的非暫態電腦可讀取媒體502),像是硬體儲存裝置(例如RAM(隨機存取記憶體)、ROM(唯讀記憶體)、EPROM(可抹除、可程式化的ROM)、EEPROM(電可抹除、可程式化的ROM)、硬碟機、及快閃記憶體)。記憶體304可包括RAM,在其中可駐存執行時期期間用於一處理器的機器可讀取指令及資料。
參看第1~3圖,尤其第3圖中的方塊圖300,記憶體304可包括指令306以確認關聯於電腦記憶體之一記憶體位址範圍106的一請求104。記憶體位址範圍106可經指派給複數個指定效能層級110的一指定效能層級。
處理器302可提取、解碼、及執行指令308,以確認關聯於記憶體位址範圍106之一效能屬性的一效能值。
處理器302可提取、解碼、及執行指令310,以基於該經確認效能值來決定一權重值。
處理器302可提取、解碼、及執行指令312,以基於經確認的請求104及經決定的權重值,來增加關聯於計數器120的計數值126,計數器120關聯於記憶體位址範圍106。
處理器302可提取、解碼、及執行指令314,以基於對關聯於計數器120的計數值126的分析,來決定是否記憶體位址範圍106將被指派給複數個指定效能層級110中的一不同指定效能層級。
基於記憶體位址範圍106將被指派給該不同指定效能層級的決定,處理器302可提取、解碼、及執行指令316,以指派記憶體位址範圍106給該不同指定效能層級。
按照本文中揭示的例子,該效能屬性可包括關聯於記憶體位址範圍106的延遲。在此方面,可確認關聯於記憶體位址範圍106之該延遲屬性的延遲值,並基於該經確認的延遲值來決定該權重值。
按照本文中揭示的例子,該效能屬性可包括關聯於記憶體位址範圍106的請求之間歇性增幅或減幅(例如突發性)。在此方面,可確認關聯於記憶體位址範圍106的該請求之間歇性增幅或減幅屬性的該請求之間歇性增幅或減幅值,並可基於經確認的請求之間歇性增幅或減幅值來決定該權重值。
按照本文中揭示的例子,該效能屬性可包括關聯於記憶體位址範圍106的讀寫請求週期分散度。該讀寫請求週期可包括讀取接著寫入、寫入接著讀取、連續讀取、及/或連續寫入。在此方面,可確認關聯於記憶體位址範圍106的該讀寫請求週期分散度屬性的該讀寫請求週期分散度值,並基於該經確認的讀寫請求週期分散度值來決定該權重值。
按照本文中揭示的例子,基於該經確認的效能值,可按照該效能值離一基底效能值的增幅或減幅(例如本文中所揭示關於從100奈秒(ns)到300ns的增加,及其他)來按比例地增加或減少一基底權重值,藉以決定該權重值。藉由將該經決定的權重值與一基底計數值126增量相乘來決定一計數值126增量增幅或減幅,該基底計數值增量關聯於記憶體位址範圍106所關聯的計數器120。基於經確認的請求104,可藉由經決定的計數值126增量增幅或減幅來增加計數值126。
按照本文中揭示的例子,可決定關聯於計數器120的計數值126。可對自從決定關聯於計數器120之計數值126之後是否已經過一指定時間段作出決定。基於自從決定關聯於計數器120之計數值126之後已經過該指定時間段的決定,可將計數值126減少一指定量(例如本文中關於「漏水桶」作法所揭示者)。
按照本文中揭示的例子,可針對一指定持續時間(例如120秒)決定關聯於計數器120的計數值126,該指定持續時間小於關聯於計數器120之全部計數值的一整體持續時間。基於經確認的請求104及該經決定的權重值來增加關聯於計數器120的該經決定的計數值126,計數器120關聯於記憶體位址範圍106。
按照本文中揭示的例子,可對請求104是否包括相對短的讀取、相對短的寫入、相對長的讀取、或相對長的寫入做出決定。基於該經確認的效能值以及對該請求是否包括相對短的讀取、相對短的寫入、相對長的讀取、或相對長的寫入的決定,可決定該權重值。
按照本文中揭示的例子,可對是否計數值126等於一最大計數值126做出一決定。基於計數值126等於該最大計數值126的決定,可決定用以逐漸地增加後續於該最大計數值126之計數值的該權重值。
按照本文中揭示的例子,可對是否計數值126等於一最大計數值126做出一決定。基於計數值126等於該最大計數值126的決定,可決定用以非逐漸地增加後續於該最大計數值126之計數值的該權重值。
參看第1~2圖及第4圖,尤其第4圖,針對方法400,於方塊402,該方法可包括確認關聯於電腦記憶體之記憶體位址範圍106的請求104。
於方塊404,該方法可包括基於經確認的請求104,增加關聯於計數器120的計數值126,計數器120關聯於記憶體位址範圍106。
於方塊406,該方法可包括決定一匯總值,該匯總值是作為關聯於計數器120的計數值106與一效能值的函數,該效能值關聯於記憶體位址範圍106之一效能屬性。
於方塊408,該方法可包括基於對該匯總值的分析,決定是否記憶體位址範圍106的使用率超過一指定使用率。
於方塊410,基於記憶體位址範圍106的使用率超過該指定使用率的決定,該方法可包括修改記憶體位址範圍106的使用率以減少針對記憶體位址範圍106的爭用。例如,基於記憶體位址範圍106之使用率超過該指定使用率的決定,該方法可包括修改記憶體位址範圍106的使用率以減少針對記憶體位址範圍106的爭用,平衡包括該電腦記憶體之電腦系統116的機器資源,或者改善相對於記憶體位址範圍106的效能。在此方面,該等資源可包括頻寬、電力、等等。
參看第1~2圖及第5圖,尤其第5圖,對於方塊圖500,非暫態電腦可讀取媒體502可包括指令506以確認關聯於分頁112的請求104,分頁112包括在電腦記憶體的記憶體位址範圍106中。按照範例,該電腦記憶體可包括複數個分頁,其包括分頁112。
處理器504可提取、解碼、及執行指令508,以確認關聯於記憶體位址範圍106之一效能屬性的一效能值。
處理器504可提取、解碼、及執行指令510,以基於經確認的效能值來決定一權重值。
處理器504可提取、解碼、及執行指令512,以基於經確認的請求104及該經決定的權重值,增加關聯於計數器120的計數值126,計數器120關聯於分頁112。
處理器504可提取、解碼、及執行指令514,以基於對包括計數器120在內之複數個計數器所關聯的計數值的分析,識別出該複數個分頁中的一最高活動量分頁112。在此方面,最高活動量分頁112可經指派給複數個指定效能層級110中的一指定效能層級。
處理器504可提取、解碼、及執行指令516,以將最高活動量分頁112移到複數個指定效能層級110中的另一指定效能層級。
本文中已說明及圖示的是一範例連同其一些變化型。本文中使用的用語、描述、及圖式經闡述作為說明而已,而非意圖做為限制。在本案所請標的的精神及範疇內可能有許多變化型,而本案所請標的意圖由以下申請專利範圍—及其均等範圍—所界定,在該申請專利範圍中所有的用語意欲以其最寬廣合理的意義,除非有相反的表示。
100:用於電腦記憶體設備的效能計數器 102:請求決定模組 104:請求 106:記憶體位址範圍 108:電腦記憶體 110:指定效能層級 112:分頁 114:內容 116:電腦系統 118:計數器控制模組 120,122:計數器 124:計數值分析模組 126:計數值 128:記憶體位址範圍指派模組 130:來源映射模組 200:DDR DIMM 202:大容量記憶體 204:DIMM控制器 206:DRAM封裝 208:大容量記憶體控制器 210:大容量記憶體封裝 300:方塊圖 302:處理器 304:記憶體 306,308,310,312,314,316:指令 400:方法 402,404,406,408,410:方塊 500:方塊圖 502:非暫態電腦可讀取媒體 504:處理器 506,508,510,512,514,516:指令
本揭示案的特徵經圖示作為範例而不限於以下圖中,在該些圖中類似的數字指示出類似的元件,其中:
第1圖圖示按照本揭示案之實施例的用於電腦記憶體設備之效能計數器的佈局;
第2圖圖示包括計數器之一佈局的範例,該些計數器用於針對按照本揭示案之實施例的第1圖之電腦記憶體設備的效能計數器來測量電腦記憶體使用率;
第3圖圖示按照本揭示案之實施例的用於電腦記憶體之效能計數器的方塊圖;
第4圖圖示按照本揭示案之實施例的用於電腦記憶體之效能計數器的方法流程圖;及
第5圖圖示按照本揭示案之另一實施例的用於電腦記憶體之效能計數器的方塊圖。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無
100:用於電腦記憶體設備的效能計數器
102:請求決定模組
104:請求
106:記憶體位址範圍
108:電腦記憶體
110:指定效能層級
112:分頁
114:內容
116:電腦系統
118:計數器控制模組
120,122:計數器
124:計數值分析模組
126:計數值
128:記憶體位址範圍指派模組
130:來源映射模組

Claims (20)

  1. 一種設備,包含: 一處理器;及  一記憶體,該記憶體儲存機器可讀取指令,當該等機器可讀取指令由該處理器執行時致使該處理器進行下列步驟:  基於一經計算計數值增量來增加關聯於一計數器的一計數值,該經計算計數值增量係作為一記憶體位址範圍的一屬性的一函數所決定,該計數器關聯於該記憶體位址範圍,  其中該屬性包括:     關聯於該記憶體位址範圍的一延遲;     關聯於該記憶體位址範圍的請求的一間歇性增幅或減幅;或     關聯於該記憶體位址範圍的讀寫請求週期的一分散度。
  2. 如請求項1所述之設備,其中用以基於作為該記憶體位址範圍的該屬性的該函數所決定的該經計算計數值增量來增加關聯於該記憶體位址範圍之該計數器的該計數值的該等機器可讀取指令,在被該處理器執行時進一步致使該處理器進行下列步驟: 基於關聯於該記憶體位址範圍的一經確認的效能值,按照該效能值離一基底效能值的增幅或減幅來按比例地增加或減少一基底權重值,藉以決定一權重值;  藉由將該經決定的權重值與一基底計數值增量相乘來決定一計數值增量增幅或減幅,該基底計數值增量與關聯於該記憶體位址範圍之該計數器相關聯;及  將該計數值增加該經決定的計數值增量增幅或減幅。
  3. 如請求項1所述之設備,其中當該等機器可讀取指令由該處理器執行時,進一步致使該處理器進行下列步驟: 決定關聯於該計數器的該計數值; 決定自從決定關聯於該計數器之該計數值之後是否已經過一指定時間段;及 基於自從決定關聯於該計數器之該計數值之後已經過該指定時間段的決定,將該計數值減少一指定量。
  4. 如請求項1所述之設備,其中該等機器可讀取指令在由該處理器執行時進一步致使該處理器進行下列步驟: 針對一指定持續時間決定關聯於該計數器的該計數值,該指定持續時間小於關聯於該計數器之全部計數值的一整體持續時間。
  5. 如請求項1所述之設備,其中該等機器可讀取指令在由該處理器執行時進一步致使該處理器進行下列步驟: 決定關聯於該記憶體位址範圍的一請求是否包括相對短的讀取、相對短的寫入、相對長的讀取、或相對長的寫入;及 基於對該請求是否包括該相對短的讀取、該相對短的寫入、該相對長的讀取、或該相對長的寫入的決定,來計算該計數值增量。
  6. 如請求項1所述之設備,其中該等機器可讀取指令在由該處理器執行時進一步致使該處理器進行下列步驟: 決定是否該計數值等於一最大計數值;及 基於該計數值等於該最大計數值的決定,決定用以逐漸地增加後續於該最大計數值之計數值的一權重值。
  7. 如請求項1所述之設備,其中該等機器可讀取指令在由該處理器執行時進一步致使該處理器進行下列步驟: 決定是否該計數值等於一最大計數值;及 基於該計數值等於該最大計數值的決定,決定用以非逐漸地增加後續於該最大計數值之計數值的一權重值。
  8. 一種電腦實施方法,包含下列步驟: 由至少一處理器並基於一計數值增量,來增加關聯於一計數器的一計數值,該計數值增量係作為一記憶體位址範圍的一屬性的一函數所決定,該計數器關聯於該記憶體位址範圍;以及  由該至少一處理器針對一指定持續時間決定關聯於該計數器的該計數值,該指定持續時間小於關聯於該計數器之全部計數值的一整體持續時間。
  9. 如請求項8所述之電腦實施方法,其中該屬性包括關聯於該記憶體位址範圍的一延遲。
  10. 如請求項8所述之電腦實施方法,其中該屬性包括關聯於該記憶體位址範圍的請求之間歇性增幅或減幅。
  11. 如請求項8所述之電腦實施方法,其中該屬性包括在關聯於該記憶體位址範圍的讀寫請求週期分散度。
  12. 如請求項8所述之電腦實施方法,進一步包含下列步驟: 由該至少一處理器決定關聯於該計數器的該計數值; 由該至少一處理器決定自從決定關聯於該計數器之該計數值之後是否已經過一指定時間段;及 基於自從決定關聯於該計數器之該計數值之後已經過該指定時間段的決定,由該至少一處理器將該計數值減少一指定量。
  13. 一種非暫態電腦可讀取媒體,該非暫態電腦可讀取媒體具有機器可讀取指令儲存於其上,當該等機器可讀取指令由一處理器執行時致使該處理器進行下列步驟: 基於一計數值增量來增加關聯於一計數器的一計數值,該計數值增量係作為電腦記憶體之一記憶體位址範圍的一屬性的一函數所決定,其中該記憶體位址範圍包括該電腦記憶體中所包括的複數個分頁中之一分頁。
  14. 如請求項13所述之非暫態電腦可讀取媒體,其中用以基於作為電腦記憶體之該記憶體位址範圍的該屬性的該函數所決定的該計數值增量來增加關聯於該記憶體位址範圍之該計數器的該計數值的該等機器可讀取指令,在被該處理器執行時進一步致使該處理器進行下列步驟: 基於關聯於該記憶體位址範圍的一經確認的效能值,按照該效能值離一基底效能值的增幅或減幅來按比例地增加或減少一基底權重值,藉以決定一權重值;  藉由將該經決定的權重值與一基底計數值增量相乘來決定一計數值增量增幅或減幅,該基底計數值增量關聯於該記憶體位址範圍所關聯的該計數器;及  將該計數值增加該經決定的計數值增量增幅或減幅。
  15. 如請求項13所述之非暫態電腦可讀取媒體,其中當該等機器可讀取指令由該處理器執行時進一步致使該處理器進行下列步驟: 決定關聯於該計數器的該計數值; 決定自從決定關聯於該計數器之該計數值之後是否已經過一指定時間段;及 基於自從決定關聯於該計數器之該計數值之後已經過該指定時間段的決定,將該計數值減少一指定量。
  16. 如請求項13所述之非暫態電腦可讀取媒體,其中該等機器可讀取指令在由該處理器執行時進一步致使該處理器進行下列步驟: 針對一指定持續時間決定關聯於該計數器的該計數值,該指定持續時間小於關聯於該計數器之全部計數值的一整體持續時間。
  17. 如請求項13所述之非暫態電腦可讀取媒體,其中該等機器可讀取指令在由該處理器執行時進一步致使該處理器進行下列步驟: 決定關聯於該記憶體位址範圍的一請求是否包括相對短的讀取、相對短的寫入、相對長的讀取、或相對長的寫入;及 基於對該請求是否包括該相對短的讀取、該相對短的寫入、該相對長的讀取、或該相對長的寫入的決定,來計算該計數值增量。
  18. 如請求項13所述之非暫態電腦可讀取媒體,其中該屬性包括關聯於該記憶體位址範圍的一延遲。
  19. 如請求項13所述之非暫態電腦可讀取媒體,其中該屬性包括關聯於該記憶體位址範圍的請求之間歇性增幅或減幅。
  20. 如請求項13所述之非暫態電腦可讀取媒體,其中該屬性包括在關聯於該記憶體位址範圍的讀寫請求週期分散度。
TW112116390A 2017-11-09 2018-10-09 用於電腦記憶體的效能計數器的設備、方法與電腦可讀取媒體 TW202334823A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762583909P 2017-11-09 2017-11-09
US62/583,909 2017-11-09
US15/984,219 US10509721B2 (en) 2017-11-09 2018-05-18 Performance counters for computer memory
US15/984,219 2018-05-18

Publications (1)

Publication Number Publication Date
TW202334823A true TW202334823A (zh) 2023-09-01

Family

ID=66327181

Family Applications (3)

Application Number Title Priority Date Filing Date
TW112116390A TW202334823A (zh) 2017-11-09 2018-10-09 用於電腦記憶體的效能計數器的設備、方法與電腦可讀取媒體
TW107135560A TWI779110B (zh) 2017-11-09 2018-10-09 用於電腦記憶體的方法、設備及電腦可讀取媒體
TW111118820A TWI804321B (zh) 2017-11-09 2018-10-09 用於電腦記憶體的效能計數器的設備、方法與電腦可讀取媒體

Family Applications After (2)

Application Number Title Priority Date Filing Date
TW107135560A TWI779110B (zh) 2017-11-09 2018-10-09 用於電腦記憶體的方法、設備及電腦可讀取媒體
TW111118820A TWI804321B (zh) 2017-11-09 2018-10-09 用於電腦記憶體的效能計數器的設備、方法與電腦可讀取媒體

Country Status (5)

Country Link
US (3) US10509721B2 (zh)
EP (1) EP3707587B1 (zh)
CN (3) CN111316220B (zh)
TW (3) TW202334823A (zh)
WO (1) WO2019094259A2 (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10509721B2 (en) * 2017-11-09 2019-12-17 Microsoft Technology Licensing, Llc Performance counters for computer memory
US10534543B2 (en) * 2018-06-01 2020-01-14 Micron Technology, Inc. Using counters to efficiently track busy time of storage systems
US10599576B2 (en) * 2018-07-23 2020-03-24 International Business Machines Corporation Hybrid memory access frequency
US10802977B2 (en) * 2018-12-12 2020-10-13 Advanced Micro Devices, Inc. Memory page access counts based on page refresh
WO2020226880A1 (en) * 2019-05-03 2020-11-12 University Of Pittsburgh-Of The Commonwealth System Of Higher Education Method and apparatus for adaptive page migration and pinning for oversubscribed irregular applications
US11080205B2 (en) * 2019-08-29 2021-08-03 Micron Technology, Inc. Classifying access frequency of a memory sub-system component
US12008398B2 (en) * 2019-12-28 2024-06-11 Intel Corporation Performance monitoring in heterogeneous systems
KR20210111993A (ko) * 2020-03-04 2021-09-14 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작 방법
US11693781B2 (en) * 2020-08-20 2023-07-04 Micron Technology, Inc. Caching or evicting host-resident translation layer based on counter
US11442654B2 (en) 2020-10-15 2022-09-13 Microsoft Technology Licensing, Llc Managing and ranking memory resources
US11755235B2 (en) * 2020-11-13 2023-09-12 Ciena Corporation Increasing random access bandwidth of a DDR memory in a counter application
US20230031304A1 (en) * 2021-07-22 2023-02-02 Vmware, Inc. Optimized memory tiering
CN114442927B (zh) * 2021-12-22 2023-11-03 天翼云科技有限公司 一种数据存储空间的管理方法及装置
US20240211409A1 (en) * 2022-12-21 2024-06-27 International Business Machines Corporation Dynamic management of larger pages during runtime
US20240303001A1 (en) * 2023-03-12 2024-09-12 Samsung Electronics Co., Ltd. Systems and methods for monitoring memory accesses

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4947393A (en) 1988-09-12 1990-08-07 Unisys Corporation Activity verification system for memory or logic
EP1331565B1 (en) 2002-01-29 2018-09-12 Texas Instruments France Application execution profiling in conjunction with a virtual machine
US8079031B2 (en) * 2005-10-21 2011-12-13 Intel Corporation Method, apparatus, and a system for dynamically configuring a prefetcher based on a thread specific latency metric
US8171216B2 (en) * 2009-05-29 2012-05-01 Dell Products, Lp System and method for managing devices in an information handling system
US8880835B2 (en) 2009-07-07 2014-11-04 International Business Machines Corporation Adjusting location of tiered storage residence based on usage patterns
US8832381B2 (en) * 2011-02-21 2014-09-09 Advanced Micro Devices, Inc. Cache and a method for replacing entries in the cache
US8478939B2 (en) * 2011-07-07 2013-07-02 Lsi Corporation Relative heat index based hot data determination for block based storage tiering
JP5830599B2 (ja) * 2011-10-28 2015-12-09 株式会社日立製作所 計算機システム及びその管理システム
US8977803B2 (en) * 2011-11-21 2015-03-10 Western Digital Technologies, Inc. Disk drive data caching using a multi-tiered memory
US8738877B2 (en) 2011-12-14 2014-05-27 Advance Micro Devices, Inc. Processor with garbage-collection based classification of memory
US9250813B2 (en) * 2012-07-18 2016-02-02 Hitachi, Ltd. Storage system coupled to a host computer and a management device
US9240235B2 (en) * 2013-12-19 2016-01-19 Sandisk Technologies Inc. Mitigating disturb effects for non-volatile memory
US9411735B2 (en) 2014-04-15 2016-08-09 International Business Machines Corporation Counter-based wide fetch management
US9501420B2 (en) * 2014-10-22 2016-11-22 Netapp, Inc. Cache optimization technique for large working data sets
EP3066571B1 (en) * 2014-12-14 2018-06-13 VIA Alliance Semiconductor Co., Ltd. Cache memory budgeted by ways on memory access type
US10387318B2 (en) * 2014-12-14 2019-08-20 Via Alliance Semiconductor Co., Ltd Prefetching with level of aggressiveness based on effectiveness by memory access type
WO2016097807A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Cache replacement policy that considers memory access type
EP3126987A4 (en) 2015-02-26 2017-11-22 Strato Scale Ltd. Using access-frequency hierarchy for selection of eviction destination
JP6283770B2 (ja) * 2015-04-22 2018-02-21 株式会社日立製作所 ストレージシステム
US20170075593A1 (en) 2015-09-11 2017-03-16 Sandisk Technologies Inc. System and method for counter flush frequency
US20170185292A1 (en) 2015-12-23 2017-06-29 Intel Corporation Memory Management of High-Performance Memory
US10509721B2 (en) * 2017-11-09 2019-12-17 Microsoft Technology Licensing, Llc Performance counters for computer memory

Also Published As

Publication number Publication date
EP3707587A2 (en) 2020-09-16
CN111316220A (zh) 2020-06-19
US11210207B2 (en) 2021-12-28
CN116755634A (zh) 2023-09-15
US20190138437A1 (en) 2019-05-09
US10509721B2 (en) 2019-12-17
WO2019094259A2 (en) 2019-05-16
TWI804321B (zh) 2023-06-01
TWI779110B (zh) 2022-10-01
CN117055806A (zh) 2023-11-14
EP3707587B1 (en) 2024-05-22
US11625322B2 (en) 2023-04-11
TW201933082A (zh) 2019-08-16
WO2019094259A3 (en) 2019-12-26
US20200081826A1 (en) 2020-03-12
TW202236081A (zh) 2022-09-16
CN111316220B (zh) 2023-07-14
US20210374046A1 (en) 2021-12-02

Similar Documents

Publication Publication Date Title
TWI804321B (zh) 用於電腦記憶體的效能計數器的設備、方法與電腦可讀取媒體
US8285961B2 (en) Dynamic performance virtualization for disk access
US7707379B2 (en) Dynamic latency map for memory optimization
US7496711B2 (en) Multi-level memory architecture with data prioritization
US10025504B2 (en) Information processing method, information processing apparatus and non-transitory computer readable medium
US20190179763A1 (en) Method of using memory allocation to address hot and cold data
US20040250041A1 (en) Heap allocation
US9323678B2 (en) Identifying and prioritizing critical instructions within processor circuitry
JP7164733B2 (ja) データ記憶
US20140372673A1 (en) Information processing apparatus, control circuit, and control method
US20220214825A1 (en) Method and apparatus for adaptive page migration and pinning for oversubscribed irregular applications
US20220197563A1 (en) Qos traffic class latency model for just-in-time (jit) schedulers
US20130132704A1 (en) Memory controller and method for tuned address mapping
Hassan et al. Energy-efficient in-memory data stores on hybrid memory hierarchies
WO2017045500A1 (zh) 存储阵列管理方法及装置
US20240078199A1 (en) Just-in-time (jit) scheduler for memory subsystems
Sun et al. HIPA: A hybrid load balancing method in SSDs for improved parallelism performance
Goglin et al. Using performance attributes for managing heterogeneous memory in hpc applications
CN111902804B (zh) 用于管理存储设备的资源并量化i/o请求成本的系统和方法
US20240069808A1 (en) Logical unit number queues and logical unit number queue scheduling for memory devices
Bäckemo et al. Minimizing read bottlenecks in I/O bound systems, Effective and adaptive I/O using C++