TW201937375A - 對持續性記憶體之cpu快取刷新 - Google Patents

對持續性記憶體之cpu快取刷新 Download PDF

Info

Publication number
TW201937375A
TW201937375A TW108103273A TW108103273A TW201937375A TW 201937375 A TW201937375 A TW 201937375A TW 108103273 A TW108103273 A TW 108103273A TW 108103273 A TW108103273 A TW 108103273A TW 201937375 A TW201937375 A TW 201937375A
Authority
TW
Taiwan
Prior art keywords
memory
host system
write
power
data
Prior art date
Application number
TW108103273A
Other languages
English (en)
Other versions
TWI696075B (zh
Inventor
保羅 史東雷格
撒米爾 米托
Original Assignee
美商美光科技公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商美光科技公司 filed Critical 美商美光科技公司
Publication of TW201937375A publication Critical patent/TW201937375A/zh
Application granted granted Critical
Publication of TWI696075B publication Critical patent/TWI696075B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/30Means for acting in the event of power-supply failure or interruption, e.g. power-supply fluctuations
    • 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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3212Monitoring battery levels, e.g. power saving mode being initiated when battery voltage goes below a certain level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/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
    • 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/0608Saving storage space on storage systems
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0653Monitoring storage devices or systems
    • 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security 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/62Details of cache specific to multiprocessor cache arrangements

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)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本發明提供一種計算系統,其具有一電力損失偵測器及用於儲存與自一主機系統接收之寫入命令相關聯之資料的記憶體組件。回應於偵測到一將臨電力損失而自該主機系統之一受保護寫入佇列刷新該等寫入命令。該計算系統進一步包含用於經由一記憶體介面接收該等寫入命令之一處理裝置。該處理裝置進一步用於回應於藉由該偵測器偵測到該電力損失而:停用該記憶體介面;及儲存與在停用該記憶體介面之前接收之寫入命令相關聯的該資料。使用由一或多個電容器供應之電力將該資料儲存於該等記憶體組件之一或多者中。

Description

對持續性記憶體之CPU快取刷新
本文中揭示之至少一些實施例一般而言係關於記憶體系統,且更特定言之(但不非限制地)係關於對計算系統中之持續性記憶體之CPU快取刷新。
一記憶體子系統可為一記憶體模組,諸如一雙列直插記憶體模組(DIMM)、一小型DIMM (SO-DIMM)或一非揮發性雙列直插記憶體模組(NVDIMM)。一記憶體子系統可為一儲存系統,諸如一固態硬碟(SSD)或一硬碟機(HDD)。一記憶體子系統可包含儲存資料之一或多個記憶體組件。記憶體組件可為例如非揮發性記憶體組件及揮發性記憶體組件。記憶體組件之實例包含記憶體積體電路。一些記憶體積體電路係揮發性的且需要電力來維持經儲存資料。一些記憶體積體電路係非揮發性的且甚至在未被供電時仍可保留經儲存資料。非揮發性記憶體之實例包含快閃記憶體、唯讀記憶體(ROM)、可程式化唯讀記憶體(PROM)、可擦除可程式化唯讀記憶體(EPROM)及電可擦除可程式化唯讀記憶體(EEPROM)記憶體等。揮發性記憶體之實例包含動態隨機存取記憶體(DRAM)及靜態隨機存取記憶體(SRAM)。一般而言,一主機系統可利用一記憶體子系統來將資料儲存於記憶體組件處及自記憶體組件擷取資料。
例如,一電腦可包含一主機系統及附接至主機系統之一或多個記憶體子系統。主機系統可具有與一或多個記憶體子系統通信以儲存及/或擷取資料及指令之一中央處理單元(CPU)。用於一電腦之指令可包含作業系統、裝置驅動程式及應用程式。一作業系統管理電腦中之資源且為應用程式提供常見服務,諸如記憶體分配及資源之分時。一裝置驅動程式操作或控制電腦中之一特定類型之裝置;且作業系統使用裝置驅動程式來提供由該類型之裝置提供之資源及/或服務。一電腦系統之一中央處理單元(CPU)可運行一作業系統及裝置驅動程式以將服務及/或資源提供至應用程式。中央處理單元(CPU)可運行使用服務及/或資源之一應用程式。例如,實施一類型之電腦系統應用程式之一應用程式可指示中央處理單元(CPU)將資料儲存於一記憶體子系統之記憶體組件中及自記憶體組件擷取資料。
可使用互連將一主機系統附接至一記憶體子系統。例如,藉由加速器快取同調互連(CCIX)標準描述一種類型之互連,該標準經建立以使硬體加速器及處理器能夠跨一異質多處理器系統中之共用記憶體維持快取同調性。CCIX介面標準規範實現通用處理器與加速裝置之間用於異質計算之同調互連技術。CCIX意欲實現專注於加速應用之互連,諸如機器學習、網路處理、儲存卸載、記憶體內資料庫及4G/5G無線技術。
CCIX標準容許基於不同指令集架構之處理器將快取同調之同級處理的優點擴展至若干加速裝置,包含例如FPGA、GPU、網路/儲存配接器、智慧型網路及客製ASIC。CCIX意欲擴展既有資料中心硬體及軟體基礎設施。
在一項實施例中,一種計算系統包括:一偵測器,其用於偵測自一電源供應器提供之電力之一損失;至少一個電容器,其用於在該電力損失之後提供電力用於儲存資料;複數個記憶體組件,其等用於儲存與自一主機系統接收之寫入命令相關聯之資料,其中回應於藉由一電源供應器監控器提供至該主機系統之一信號而自該主機系統之一記憶體控制器之一受保護寫入佇列刷新寫入命令,且其中該電源供應器監控器回應於偵測到來自該電源供應器之電力之一將臨損失而提供該信號;一快取區,其用於經由一記憶體介面自該主機系統接收寫入命令;及一處理裝置,其與該複數個記憶體組件可操作地耦合以:藉由該快取區經由該記憶體介面接收自該受保護寫入佇列刷新之該等寫入命令;及回應於藉由該偵測器偵測到該電力損失而:停用該記憶體介面,且儲存對應於在停用該記憶體介面之前藉由該快取區接收之自該受保護寫入佇列刷新的寫入命令之資料,其中使用由該至少一個電容器供應之電力將該資料儲存於該複數個記憶體組件之至少一者中。
在另一實施例中,一種方法包括:藉由一快取區經由一記憶體介面接收自一主機系統之一記憶體控制器之一受保護寫入佇列刷新之寫入命令;藉由一偵測器偵測一電力損失;及回應於偵測到該電力損失而:停用該記憶體介面,且儲存與在停用該記憶體介面之前藉由該快取區接收之自該受保護寫入佇列刷新的該等寫入命令相關聯之資料,其中使用由至少一個電容器供應之電力將該資料儲存於該複數個記憶體組件之至少一者中。
相關申請案
本申請案主張Stonelake等人於2018年2月5日申請之標題為「CPU Cache Flushing to Persistent Memory with Reduced Instructions」之美國臨時申請案序號62/626,565之優先權,該申請案之全部內容宛如全文闡述般以引用的方式併入本文中。
本發明之至少一些態樣係關於對具有一或多個記憶體子系統之一電腦系統中之持續性記憶體的CPU快取刷新。一記憶體子系統在下文中亦稱為一「記憶體裝置」。一記憶體子系統之一實例係經由一記憶體匯流排連接至一中央處理單元(CPU)之一記憶體模組。記憶體模組之實例包含一雙列直插記憶體模組(DIMM)、一小型DIMM (SO-DIMM)、一非揮發性雙列直插記憶體模組(NVDIMM)等。一記憶體子系統之另一實例係經由一周邊互連(例如,一輸入/輸出匯流排、一儲存區域網路)連接至中央處理單元(CPU)之一儲存裝置。儲存裝置之實例包含一固態硬碟(SSD)、一快閃隨身碟、一通用串列匯流排(USB)快閃隨身碟及一硬碟機(HDD)。在一些實施例中,記憶體子系統係提供記憶體功能及儲存功能兩者之一混合記憶體/儲存子系統。一般而言,一主機系統可利用包含一或多個記憶體組件之一記憶體子系統。主機系統可提供待儲存於記憶體子系統處之資料且可請求待自記憶體子系統擷取之資料。
在一些情況中,針對意欲使用持續性記憶體技術(諸如某些DIMM)之計算系統,已定義新指令以實現一持續性記憶體程式設計模型。此等新指令包含自CPU快取區(例如,CLWB及CLFLUSHOPT)刷新線之快取刷新指令。在Intel架構指令集擴展程式設計參考(其與各種平台(包含支援Intel DIMM之平台)相關)中描述此等新指令之實例。此等指令提供一種用於將儲存自一CPU快取區刷新至一持續域(其中儲存電力故障安全之一平台之資料路徑的部分)之方法。
此等新指令包含一個所謂的PCOMMIT,其意欲在其中自CPU快取區刷新不足以到達持續域之平台上使用。例如,PCOMMIT指令容許一應用程式按需刷新一記憶體子系統之寫入未決佇列。在該等平台上,需要使用PCOMMIT之一額外步驟以確保儲存已自一主機系統之記憶體控制器寫入未決佇列傳遞至DIMM,DIMM係該等平台上之持續域。因此,使用PCOMMIT指令導致一更複雜程式設計模型,其中一應用程式含有用於偵測是否需要PCOMMIT指令之邏輯。例如,用於將值儲存至持續性記憶體位置之一指令序列更複雜。
在一種情況中,一儲存沿一資料路徑(MOV)將資料移動至持續性記憶體。當一應用程式執行一MOV指令時,儲存通常最終在CPU快取區中。像CLWB之指令可用於自CPU快取區刷新儲存。此時,儲存可在記憶體控制器中之寫入未決佇列(WPQ)中花費一些時間。經設計以在電力故障或關機時自動刷新WPQ之一平台上可存在一電力故障安全持續域。用於執行此刷新之一個此平台級特徵稱為異步DRAM再新(ADR)。
本發明之至少一些態樣藉由使用一備份組件來儲存與自一CPU快取區刷新之寫入命令相關聯的資料而解決上述及其他缺陷。將資料儲存於非揮發性記憶體(例如,持續性記憶體,諸如交叉點記憶體)中。在一項實例中,交叉點記憶體係3DXP記憶體。備份組件藉由在一計算系統電源供應器中提供足夠滯留量以自記憶體控制器之受保護寫入佇列刷新任何剩餘寫入命令而消除對PCOMMIT或類似指令(例如,一MCOMMIT指令)之使用。例如,在不具有PCOMMIT或類似指令之情況下,用於將值儲存至持續性記憶體位置之一指令序列更簡單。
更明確言之,在各項實施例中,備份組件確保當計算系統中存在一電力損失事件時,與經刷新寫入命令相關聯之資料係由使用在偵測到電力損失之後提供電力之一或多個電容器的一記憶體系統儲存。在一項實例中,經由一CCIX互連接收經刷新寫入命令。
例如,根據本文中之各項實施例,當使用備份組件時,不必修改一軟體應用程式以支援一PCOMMIT、MCOMMIT或類似指令。代替性地,軟體應用程式及/或計算系統可確保在軟體使用所快取之記憶體區時刷新CPU快取區。在一項實例中,在一計算系統中實施異步DRAM再新以確保刷新CPU快取區。藉由使用備份組件,記憶體系統具有足夠滯留電力以儲存與經刷新寫入命令相關聯之資料。在一項實例中,一電源供應器發信號通知其他系統組件電力故障將臨,此引起刷新一記憶體系統中之寫入未決佇列。
在一項實例中,一計算系統刷新一寫入未決佇列。例如,此可為一唯內核設施,其用於刷新寫入至DIMM命令暫存器或在內核想要確保將一儲存立即刷新至DIMM之情況中由內核使用之命令。在一些情況中,一應用不知道正在使用此刷新機制。藉由使用備份組件,提供足夠滯留電力以儲存與自寫入未決佇列刷新之寫入命令相關聯的資料。
圖1繪示根據本發明之一些實施例之具有一記憶體子系統110之一例示性計算系統100。記憶體子系統110可包含媒體,諸如記憶體組件109A至109N。記憶體組件109A至109N可為揮發性記憶體組件、非揮發性記憶體組件或此等組件之一組合。在一些實施例中,記憶體子系統110係一記憶體模組。一記憶體模組之實例包含一DIMM、NVDIMM及NVDIMM-P。在一些實施例中,記憶體子系統係一儲存系統。一儲存系統之一實例係一SSD。在一些實施例中,記憶體子系統110係一混合記憶體/儲存子系統。一般而言,計算環境可包含使用記憶體子系統110之一主機系統120。例如,主機系統120可將資料寫入至記憶體子系統110及自記憶體子系統110讀取資料。
主機系統120可為一計算裝置,諸如一桌上型電腦、膝上型電腦、網路伺服器、行動裝置或包含一記憶體及一處理裝置之此計算裝置。主機系統120可包含或耦合至記憶體子系統110,使得主機系統120可自記憶體子系統110讀取資料或將資料寫入至記憶體子系統110。主機系統120可經由一實體主機介面耦合至記憶體子系統110。如本文中所使用,「耦合至」一般指代組件之間之一連接,其可為一間接通信連接或直接通信連接(例如,不具有介入組件),無論是有線還是無線,包含諸如電連接、光學連接、磁性連接等之連接。一實體主機介面之實例包含但不限於一串列進階技術附接(SATA)介面、一快速周邊組件互連(PCIe)介面、通用串列匯流排(USB)介面、光纖通道、串列附接SCSI (SAS)、一雙倍資料速率(DDR)記憶體匯流排等。實體主機介面可用於在主機系統120與記憶體子系統110之間傳輸資料。主機系統120可進一步利用一快速NVM (NVMe)介面以在記憶體子系統110藉由PCIe介面與主機系統120耦合時存取記憶體組件109A至109N。實體主機介面可提供用於在記憶體子系統110與主機系統120之間傳遞控制、位址、資料及其他信號之一介面。圖1繪示一記憶體子系統110作為一實例。一般而言,主機系統120可經由一相同通信連接、多個各別通信連接及/或一通信連接組合存取多個記憶體子系統。
主機系統120包含一處理裝置118及一控制器116。主機系統120之處理裝置118可為例如一微處理器、一中央處理單元(CPU)、一處理器之一處理核心、一執行單元等。在一些例項中,控制器116可被稱為一記憶體控制器、一記憶體管理單元及/或一起始器。在一項實例中,控制器116控制經由耦合於主機系統120與記憶體子系統110之間之一匯流排進行的通信。
一般而言,控制器116可將命令或請求發送至記憶體子系統110以對記憶體組件109A至109N進行所要存取。控制器116可進一步包含用於與記憶體子系統110通信之介面電路。介面電路可將自記憶體子系統110接收之回應轉換成用於主機系統120之資訊。
主機系統120之控制器116可與記憶體子系統110之控制器115通信以執行諸如在記憶體組件109A至109N處讀取資料、寫入資料或擦除資料之操作及其他此等操作。在一些例項中,控制器116整合於處理裝置118之相同封裝內。在其他例項中,控制器116與處理裝置118之封裝分離。控制器116及/或處理裝置118可包含硬體,諸如一或多個積體電路及/或離散組件、一緩衝記憶體、一快取記憶體或其等之一組合。控制器116及/或處理裝置118可為一微控制器、專用邏輯電路(例如,一場可程式化閘陣列(FPGA)、一特定應用積體電路(ASIC)等)或另一適合處理器。
記憶體組件109A至109N可包含不同類型之非揮發性記憶體組件及/或揮發性記憶體組件之任何組合。非揮發性記憶體組件之一實例包含一反及(NAND)型快閃記憶體。記憶體組件109A至109N之各者可包含一或多個記憶體胞陣列,諸如單位階胞(SLC)或多位階胞(MLC) (例如,三位階胞(TLC)或四位階胞(QLC))。在一些實施例中,一特定記憶體組件可包含記憶體胞之一SLC部分及一MLC部分兩者。記憶體胞之各者可儲存由主機系統120使用之一或多個資料位元(例如,資料區塊)。儘管描述非揮發性記憶體組件(諸如NAND型快閃記憶體),然記憶體組件109A至109N可基於任何其他類型之記憶體,諸如一揮發性記憶體。在一些實施例中,記憶體組件109A至109N可為但不限於隨機存取記憶體(RAM)、唯讀記憶體(ROM)、動態隨機存取記憶體(DRAM)、同步動態隨機存取記憶體(SDRAM)、相變記憶體(PCM)、磁隨機存取記憶體(MRAM)、自旋轉移力矩(STT)-MRAM、鐵電隨機存取記憶體(FeTRAM)、鐵電RAM (FeRAM)、導電橋接RAM (CBRAM)、電阻式隨機存取記憶體(RRAM)、基於氧化物之RRAM (OxRAM)、反或(NOR)快閃記憶體、電可擦除可程式化唯讀記憶體(EEPROM)、基於奈米線之非揮發性記憶體、併有憶阻器技術之記憶體,及一交叉點非揮發性記憶體胞陣列。一交叉點非揮發性記憶體陣列可基於一體電阻變化、結合一可堆疊交叉網格資料存取陣列執行位元儲存。另外,與許多基於快閃之記憶體相反,交叉點非揮發性記憶體可執行一就地寫入操作,其中可在先前未擦除一非揮發性記憶體胞之情況下程式化該非揮發性記憶體胞。此外,記憶體組件109A至109N之記憶體胞可被分組為可指代用於儲存資料之記憶體組件之一單位的記憶體頁或資料區塊。
記憶體子系統110之控制器115可與記憶體組件109A至109N通信以執行諸如在記憶體組件109A至109N處讀取資料、寫入資料或擦除資料之操作及其他此等操作(例如,對由控制器116排程於一命令匯流排上之命令作出回應)。控制器115可包含硬體,諸如一或多個積體電路及/或離散組件、一緩衝記憶體或其等之一組合。控制器115可為一微控制器、專用邏輯電路(例如,一場可程式化閘陣列(FPGA)、一特定應用積體電路(ASIC)等)或另一適合處理器。控制器115可包含一處理裝置117 (處理器),處理裝置117經組態以執行儲存於本地記憶體119中之指令。在所繪示實例中,控制器115之本地記憶體119包含一嵌入式記憶體,該嵌入式記憶體經組態以儲存用於執行控制記憶體子系統110之操作(包含處置記憶體子系統110與主機系統120之間之通信)之各種程序、操作、邏輯流程及常式的指令。在一些實施例中,本地記憶體119可包含儲存記憶體指針、經提取資料等之記憶體暫存器。本地記憶體119亦可包含用於儲存微程式碼之唯讀記憶體(ROM)。雖然圖1中之例示性記憶體子系統110已被繪示為包含控制器115,但在本發明之另一實施例中,一記憶體子系統110可不包含一控制器115,且可代替性地依賴於外部控制(例如,其由一外部主機、或由與記憶體子系統分離之一處理器或一控制器提供)。
一般而言,控制器115可自主機系統120接收命令或操作,且可將命令或操作轉換成用於達成對記憶體組件109A至109N之所要存取的指令或適當命令。控制器115可負責與記憶體組件109A至109N相關聯之其他操作,諸如損耗均衡操作、廢棄項目收集操作、錯誤偵測及錯誤校正碼(ECC)操作、加密操作、快取操作及一邏輯區塊位址與一實體區塊位址之間之位址轉譯。控制器115可進一步包含用於經由實體主機介面與主機系統120通信之主機介面電路。主機介面電路可將自主機系統接收之命令轉換成用於存取記憶體組件109A至109N之命令指令,以及將與記憶體組件109A至109N相關聯之回應轉換成用於主機系統120之資訊。
記憶體子系統110亦可包含未繪示之額外電路或組件。在一些實施例中,記憶體子系統110可包含一快取區或緩衝器(例如,DRAM或SRAM)及可自控制器115接收一位址且解碼該位址以存取記憶體組件109A至109N的位址電路(例如,一列解碼器及一行解碼器)。
計算系統100包含記憶體子系統110中之一備份組件113以處置與自主機系統120之至少一個快取區刷新之寫入命令相關聯之資料的儲存。在一項實施例中,藉由主機系統120提供備份組件113之一部分。在此實施例中,主機系統120處之備份組件113自一或多個電源接收指示來自該等電源之一者之一電力故障將臨的一電力故障信號(圖1中未展示) (參見例如圖2)。備份組件113用於避免受保護寫入佇列上之資料損失,直至資料已被儲存(例如,藉由寫入至持續性記憶體)。
在一項實例中,快取區係控制器116中之一受保護寫入佇列。記憶體子系統110通常可與主機系統120通信以經由例如自主機系統120接收資料之一CCIX互連或另一記憶體介面將資料儲存於一儲存媒體(例如,3DXP)中。在一項實例中,經儲存資料與回應於已偵測到一電力損失事件而刷新之寫入命令相關聯。在一項實施例中,將經刷新資料儲存於記憶體子系統110 (例如,一DIMM)之3DXP記憶體中。
在各項實施例中,計算系統100可運行包含用於在接收到指示一將臨電力供應損失之一信號時自一CPU快取區刷新資料的指令之軟體(例如,運行於主機系統120之一CPU中之軟體)。與先前方法相比,根據本實施例之軟體使用減少數目個指令來執行對CPU快取區之刷新。更明確言之,在一項實施例中,消除MCOMMIT指令且軟體(例如,一應用程式軟體)不需要MCOMMIT指令以自CPU快取區刷新資料。在一項實施例中,計算系統100包含兩個或更多個CPU,且各CPU可包含待刷新之兩個或更多個快取區。
在一項實施例中,計算系統100回應於偵測到電力損失而實施一異步DRAM再新(ADR)序列。在一些實施例中,計算系統100可包含NVDIMM及持續性記憶體兩者,且應用ADR以保護意欲儲存於NVDIMM及持續性記憶體兩者中之資料。在一項實例中,ADR用於發信號通知其他系統組件電力故障將臨,從而引起控制器116之寫入未決佇列被刷新且經由一介面發送至記憶體子系統110。
在各項實例中,當自CPU快取區刷新資料時,將資料寫入至持續性記憶體(例如,交叉點記憶體組件109A)。在一些實例中,持續性記憶體使用一CCIX介面附接至CPU。在一些實例中,持續性記憶體係3DXP記憶體。在其他實施例中,可使用一不同記憶體介面,及/或可將各種其他類型之儲存類記憶體用作持續性記憶體。
在一些實施例中,記憶體子系統110中之控制器115及/或處理裝置117包含備份組件113之至少一部分。例如,控制器115及/或處理裝置117可包含實施備份組件113之邏輯電路。例如,記憶體子系統110之處理裝置117 (處理器)可經組態以執行儲存於記憶體中之指令,以執行用於儲存備份組件113之資料之操作,如本文中描述。在其他實施例中,備份組件113之至少一部分係主機系統120之一作業系統、一裝置驅動程式或一應用程式之部分。在一項實例中,一中央處理單元(CPU)可將資料儲存於連接至CPU之一記憶體系統中。例如,中央處理單元(CPU)可經組態以使用備份組件113儲存資料。
圖2展示根據本發明之一些實施例之儲存與由記憶體模組201及203自一主機系統205接收之寫入命令相關聯之資料的一計算系統。主機系統205係主機系統120之一實例且可包含備份組件113之至少一部分。記憶體模組201及203各自為記憶體子系統110之一實例。
主機系統205經由記憶體介面209將寫入命令發送至記憶體模組201,且經由記憶體介面207將寫入命令發送至記憶體模組203。在各項實施例中,記憶體模組201使用備份組件113將資料儲存於非揮發性記憶體中。在一項實例中,記憶體模組201將資料儲存於3DXP記憶體中。記憶體介面209係例如一CCIX互連。
在一項實施例中,記憶體模組203將資料儲存於非揮發性記憶體中。在一項實例中,記憶體模組203係一NVDIMM。記憶體介面207係例如一DDR匯流排。
一電源供應器213在正常操作期間將電力提供至記憶體模組201及記憶體模組203。一電源供應器監控器211在計算系統之操作期間監控電源供應器213。電源供應器監控器211偵測自電源供應器213提供之電力之一將臨損失。回應於偵測到將臨電力損失,電源供應器監控器211將一電力故障信號提供至主機系統205。在各項實施例中,主機系統205回應於接收到電力故障信號而實施一異步DRAM再新(ADR)序列。
在各項實施例中,自主機系統205之記憶體控制器之一或多個受保護寫入佇列刷新寫入命令。例如,與記憶體模組201通信之主機系統205之一記憶體控制器(例如,控制器116)自其受保護寫入佇列刷新寫入命令。此等經刷新寫入命令經由記憶體介面209發送至記憶體模組201。
在一項實例中,與記憶體模組203通信之主機系統205之另一記憶體控制器自其受保護寫入佇列刷新寫入命令。此等經刷新寫入命令經由記憶體介面207發送至記憶體模組203。
根據各項實施例,備份組件113偵測自電源供應器213提供至記憶體模組201之電力之一損失。回應於偵測到提供至記憶體模組201之電力之損失,停用記憶體介面209。例如,不經由記憶體介面209執行進一步讀取或寫入操作。
另外,回應於偵測到電力損失,將對應於自主機系統205之受保護寫入佇列刷新且在停用記憶體介面209之前接收的寫入命令之資料儲存於記憶體模組201之一或多個記憶體組件中。在各項實施例中,備份組件113使用由一或多個電容器供應之電力來保持電力,直至將資料儲存於記憶體模組201上之一非揮發性記憶體中。在一項實例中,電容器在記憶體模組201內部。在一項實例中,一或多個電容器係記憶體模組201之一滯留電容器組之部分。
在一項實施例中,當自電源供應器213獲得之一供應電壓下降至低於一預定臨限值時,記憶體模組201之一偵測器偵測到一電力損失。在一項實施例中,回應於偵測到電力損失,備份組件113寫入與此電力故障處置相關聯之一日誌。
在一項實例中,將偵測到一電力損失之一電力故障臨限值設定為10.5 V。在一項實例中,一或多個電容器提供至少10 ms之滯留時間。在一項實例中,在主機系統205自電源供應器監控器211接收到電力故障信號之後之20 ms內完成將資料儲存於記憶體模組201之一或多個記憶體組件中。
在一項實例中,一母板(未展示)包含附接至NVDIMM (例如,記憶體模組203)及持續性記憶體(例如,記憶體模組201中之一或多個記憶體組件)之多個CPU。持續性記憶體透過一CCIX介面連接至系統中。例如,各CPU具有至NVDIMM之一記憶體控制器及至持續性記憶體之一CCIX介面。在一項實例中,記憶體控制器係一標準DDR控制器。
在一項實例中,藉由CCIX介面上之持續性記憶體接收之任何寫入係持續性的。運行於CPU中之軟體確保將資料持續性地寫入至持續性記憶體,且確保任何資料儲存皆係持續性的。
在一項實例中,計算系統包含電壓調節器(未展示)及充當電源供應器監控器211之一FPGA。在另一實例中,FPGA (或替代地,CPLD或離散邏輯)過濾來自一或多個電源供應器之數位「電力正常(power OK)」信號。在此實例中,電源供應器包含在供應器之儲存電容器已耗盡之前撤銷(deassert)一「電力正常」信號之一電源監控器。在另一實例中,在具有直接監控(若干)電源供應器電壓之比較器之一母板上實施一更複雜電路,且母板上存在足以確保在偵測到一電力損失之後存在足夠滯留時間的額外電容,此延長備份時間。
計算系統自例如一AC電源供應器獲得電力,該AC電源供應器可為機架級或可與一伺服器在一相同單元中(例如,12伏特電源及12伏特軌道調節器)。在一項實例中,持續性記憶體本身以可純粹由母板上之調節器傳遞之12伏特電壓運行。
電壓調節器向下調節至由FPGA及NVDIMM及(若干) CPU使用之電壓,且包含例如多個電壓軌。在一項實例中,FPGA係監控電源供應器213之一平台監控裝置。例如,若FPGA偵測到存在一電源失效狀態(例如,存在一將臨電力故障),則FPGA可觸發至(若干) CPU之一或多個信號。
在一項實例中,偵測到一電力損失觸發至CPU之一信號(例如,一強制自我再新或電力故障信號)。信號在電力(例如,12伏特)實際下降之前提供一定量警告。因此,系統具有例如1毫秒或更短之時間,此係因為當前電源供應器供應能量之能力將結束。
在一項實例中,由FPGA提供之一電力故障信號引起CPU作為一ADR序列之部分將受保護寫入緩衝(例如,寫入佇列309)保存至(若干) NVDIMM中之持續性記憶體及/或DRAM。在一項實例中,系統已觸發警告或中斷CPU。各CPU獲得信號或訊息,且CPU自受保護寫入緩衝器(例如,當前存在於CPU快取區外部之任何寫入)寫入。CPU快取區已由軟體刷新,但該等寫入可能仍在去往NVDIMM之DIMM或持續性記憶體之CCIX互連之中間佇列中。信號強制CPU刷新受保護寫入緩衝器。信號為CPU提供足夠時間以確保將該等寫入推出。
在一項實例中,在已將記憶體控制器佇列中之寫入推送至NVDIMM之DRAM之後,母板上之CPU確證一保存信號。在一項實例中,CPU接收指示NVDIMM將其等DRAM中之資料備份至持續性儲存器之一信號。
在一項實例中,如在CPU與持續性記憶體之間,已將CPU中之寫入推出至持續性記憶體。此時,持續性記憶體確保只要已完成至主機之該等寫入,則持續性記憶體控制器將存留該等寫入直至將其等儲存。此時,可安全地移除電力(例如,12伏特可下降至低於持續性記憶體之極限,且持續性記憶體將保護該等寫入)。
在一項實例中,一軟體應用程式不需要發出MCOMMIT指令以獲得對應於自CPU至持續性記憶體之儲存的資料。例如,無其他資料必須在CCIX鏈路上自CPU轉至持續性記憶體。系統可使用ADR特徵來刷出該等最後寫入。在各項實施例中,此可節省一處理步驟。
圖3展示根據本發明之一些實施例之一記憶體模組301,其用於儲存與自一主機系統305之一寫入佇列309接收之寫入命令相關聯之資料。主機系統305係主機系統120或205之一實例,且記憶體模組301係記憶體模組201之一實例。記憶體模組301接收自電源供應器213提供之電力。
主機系統305包含具有寫入佇列309之一控制器307。控制器307係控制器116之一實例。記憶體模組301經由一記憶體介面303與控制器307通信。在一項實例中,記憶體介面303係一CCIX互連。寫入佇列309係一受保護寫入佇列,其包含回應於例如由電源供應器監控器211 (圖2中所展示)提供至主機系統305之一電力故障信號而刷新之寫入命令。
記憶體模組301包含用於經由記憶體介面303自主機系統305接收寫入命令之一快取區317。記憶體模組301進一步包含用於偵測自電源供應器213提供之電力之一損失之一偵測器313。在偵測到一電力損失時,偵測器313將一信號提供至一記憶體控制器311。記憶體控制器311係控制器115之一實例。
回應於自偵測器313接收到指示偵測電力損失之信號,記憶體控制器311引起記憶體模組301停用記憶體介面303且儲存與藉由快取區317經由記憶體介面303接收之寫入命令相關聯的資料。在各項實施例中,已回應於提供至主機系統305之指示來自電源供應器213之電力之一將臨損失的一信號(例如,圖2之電力故障信號)而自寫入佇列309刷新寫入命令。
記憶體模組301包含具有一或多個電容器之一電容器組319。在藉由偵測器313偵測到電力損失之後,電容器組319供應用於藉由記憶體模組301儲存資料之電力。資料之儲存包含將資料自快取區317寫入至非揮發性記憶體315。在一項實例中,非揮發性記憶體315係交叉點記憶體(例如,3DXP記憶體)。
在一項實例中,主機系統305使用ADR進行電力損失保護。主機系統305確保在止用(retire)最後儲存屏障(store fense)指令(例如,SFENCE)之前全部待存留儲存在寫入佇列309中。例如,主機系統305確保在下一SFENCE指令之前,與先前SFENCE指令相關聯之經儲存資料經刷新至寫入佇列309。在一項實例中,當存在一電力損失事件時,電力滯留達一足夠時間使得資料自寫入佇列309刷新且至快取區317中。在一項實例中,記憶體介面303係CCIX互連。因此,在下一SFENCE指令之前不需要一MCOMMIT指令。代替性地,主機系統305及記憶體模組301一起運作以確保將提交SFENCE指令之間之儲存指令之結果。
圖4展示根據本發明之一些實施例之用於對持續性記憶體進行CPU快取刷新之一方法。圖4之方法可由處理邏輯執行,該處理邏輯可包含硬體(例如,處理裝置、電路、專用邏輯、可程式化邏輯、微程式碼、一裝置之硬體、積體電路等)、軟體(例如,運行或執行於一處理裝置上之指令)或其等之一組合。
在一些實施例中,圖4之方法至少部分由圖1或圖2之備份組件113執行。儘管以一特定序列或順序展示,然除非另有指定,否則可修改程序之順序。因此,所繪示實施例應僅被理解為實例,且所繪示程序可依一不同順序執行,且一些程序可並行執行。另外,在各項實施例中,可省略一或多個程序。因此,並非每項實施例皆需要全部程序。其他程序流程係可能的。
例如,可在圖1或圖2之一計算系統中運用主機系統120及記憶體子系統110或記憶體模組201實施圖4之方法。在一項實例中,備份組件113可至少部分經由圖3之記憶體模組301及圖3之主機系統305實施。
在圖4中之方塊401處,經由一記憶體介面接收寫入命令。自一主機系統之一記憶體控制器之一受保護寫入佇列刷新寫入命令。在一項實例中,藉由記憶體模組301經由記憶體介面303自控制器307接收寫入命令。在一項實例中,受保護寫入佇列係寫入佇列309,且藉由快取區317接收寫入命令。
在方塊403,偵測一電力損失。在一項實例中,藉由記憶體模組301之偵測器313偵測電力損失。
在方塊405,回應於偵測到電力損失而停用記憶體介面。在一項實例中,偵測器313將指示偵測到電力損失之一信號提供至記憶體控制器311。在一項實例中,停用記憶體介面303。
在方塊407,儲存與在停用記憶體介面之前接收之自受保護寫入佇列刷新的寫入命令相關聯之資料。在一項實例中,記憶體控制器311引起回應於自偵測器313接收到信號而停用記憶體介面303。在一項實例中,將資料儲存於記憶體模組301之非揮發性記憶體315中。在一項實例中,記憶體模組201之備份組件113提供電力,直至已將資料儲存於記憶體模組201之非揮發性記憶體中。
在一項實施例中,一計算系統(例如,記憶體模組301)包含:一偵測器(例如,偵測器313),其用於偵測自一電源供應器(例如,電源供應器213)提供之電力之一損失;至少一個電容器(例如,電容器組319),其用於在電力損失之後提供電力以儲存資料;及一或多個記憶體組件(例如,非揮發性記憶體315),其用於儲存與自一主機系統(例如,主機系統305)接收之寫入命令相關聯之資料。回應於藉由一電源供應器監控器(例如,電源供應器監控器211)提供至主機系統之一信號而自主機系統之一記憶體控制器(例如,控制器307)之一受保護寫入佇列(例如,寫入佇列309)刷新寫入命令,且電源供應器監控器回應於偵測到來自電源供應器之電力之一將臨損失而提供信號。
計算系統進一步包含:一快取區(例如,快取區317),其用於經由一記憶體介面(例如,介面303)自主機系統接收寫入命令;及一處理裝置(例如,控制器311),其與記憶體組件可操作地耦合以:藉由快取區經由記憶體介面接收自受保護寫入佇列刷新之寫入命令。處理裝置進一步用於回應於藉由偵測器偵測到電力損失而:停用記憶體介面,且儲存對應於在停用記憶體介面之前藉由快取區接收之自受保護寫入佇列刷新的寫入命令之資料。使用由至少一個電容器供應之電力將資料儲存於記憶體組件之至少一者中。
在一項實施例中,受保護寫入佇列中之寫入命令對應於待由主機系統(例如,主機系統305)存留之儲存,且執行於主機系統上之軟體在止用儲存之前將寫入命令移動至受保護寫入佇列。在一項實施例中,軟體確保在一儲存屏障指令之後之任何儲存在主機系統中變得全域可見之前,該儲存屏障指令之前之儲存在主機系統中全域可見。
在一項實施例中,寫入命令自主機系統之一處理裝置之至少一個快取區移動至受保護寫入佇列。
在一項實施例中,至少一個電容器提供至少10 ms之滯留時間。
在一項實施例中,當自電源供應器獲得之一供應電壓下降至低於一預定臨限值時,偵測器偵測到電力損失。
在一項實施例中,受保護寫入佇列中之寫入命令對應於由主機系統之一處理裝置提交至記憶體控制器之寫入操作。
在一項實施例中,藉由執行於主機系統上之軟體將寫入操作提交至記憶體控制器,且回應於藉由電源供應器監控器提供至主機系統之信號而基於由軟體提供之一指令刷新寫入命令。
在一項實施例中,在主機系統自電源供應器監控器接收到信號之後之20 ms內將資料儲存於記憶體組件之至少一者中。
在一項實施例中,處理裝置進一步用於回應於藉由偵測器偵測到電力損失而寫入與電力故障處置相關聯之一日誌。在一項實例中,日誌包含電力故障處置之一開始時間、一結束時間及/或一持續時間。
在一項實施例中,快取區(例如,快取區317)包括靜態隨機存取記憶體(SRAM),且將資料儲存於非揮發性記憶體中。
在一項實施例中,在一異步記憶體再新序列(例如,一ADR序列)期間自受保護寫入佇列刷新寫入命令。
在一項實施例中,一種方法包含:藉由一快取區經由一記憶體介面接收自一主機系統之一記憶體控制器之一受保護寫入佇列刷新之寫入命令;藉由一偵測器偵測一電力損失;及回應於偵測到電力損失而:停用記憶體介面,且儲存與在停用記憶體介面之前藉由快取區接收之自受保護寫入佇列刷新的寫入命令相關聯之資料。使用由至少一個電容器供應之電力將資料儲存於至少記憶體組件中。
在一項實施例中,回應於藉由一電源供應器監控器提供至主機系統之一信號而自受保護寫入佇列刷新寫入命令,且電源供應器監控器回應於偵測到由一電源供應器提供之電力之一將臨損失而提供該信號。
在一項實施例中,受保護寫入佇列中之寫入命令對應於待由主機系統存留之儲存,且執行於主機系統上之軟體在止用儲存之前將寫入命令移動至受保護寫入佇列。
在一項實施例中,寫入命令自主機系統之一處理裝置之至少一個快取區移動至受保護寫入佇列。
在一項實施例中,在一異步記憶體再新序列期間自受保護寫入佇列刷新寫入命令。
在一項實施例中,該方法進一步包含回應於偵測到電力損失而寫入與儲存資料相關聯之一日誌。在一項實施例中,日誌包含電力故障處理之一開始時間。
在一項實施例中,一非暫時性電腦儲存媒體儲存指令,該等指令在由具有一偵測器、至少一個電容器及一或多個記憶體組件之一記憶體模組執行時引起該記憶體模組執行一方法,該方法包含:經由一記憶體介面自一主機系統之一受保護寫入佇列接收寫入命令;藉由偵測器偵測一電力損失;及回應於偵測到電力損失而:停用記憶體介面,且儲存與自受保護寫入佇列接收之寫入命令相關聯之資料。使用由至少一個電容器供應之電力將資料儲存於非揮發性記憶體中。
在一項實例中,使用消除MCOMMIT指令之一持續性記憶體模型。計算系統在系統電源供應器中提供足夠滯留量(來自系統電源供應器之足夠警告)以自一CPU快取區刷出最後寫入(寫入在去往CCIX互連之途中),且此可運用異步DRAM再新(ADR)來實施。接著,不需要修改軟體以支援MCOMMIT指令(例如,可消除MCOMMIT指令且不必重新編譯軟體)。軟體僅需要確保CPU快取區經刷新(例如,當軟體使用可快取之記憶體區時)。
一記憶體子系統一般可具有非揮發性儲存媒體。非揮發性儲存媒體之實例包含形成於一積體電路中之記憶體胞及塗佈於硬磁碟上之磁性材料。非揮發性儲存媒體可在未消耗電力之情況下維持儲存於其中之資料/資訊。記憶體胞可使用各種記憶體/儲存技術實施,諸如NAND邏輯閘、NOR邏輯閘、相變記憶體(PCM)、磁性記憶體(MRAM)、電阻式隨機存取記憶體、交叉點儲存及記憶體裝置(例如,3DXP記憶體)。一交叉點記憶體裝置使用無電晶體之記憶體元件,該等記憶體元件之各者具有在一起堆疊為一行之一記憶體胞及一選擇器。記憶體元件行經由兩層垂直線敷設(lay of wires)連接,其中一層敷設在記憶體元件行上方且另一層敷設在記憶體元件行下方。可在兩個層之各者上之一條線的一交叉點處個別地選擇各記憶體元件。交叉點記憶體裝置係快速的且非揮發性的,且可用作用於處理及儲存之一統一記憶體集區。
一記憶體子系統之控制器可運行韌體以回應於來自一處理裝置之通信而執行操作。韌體一般為提供對工程計算裝置之控制、監控及資料操縱的一類型之電腦程式。
涉及控制器之操作之一些實施例可使用由控制器執行之電腦指令(諸如控制器之韌體)來實施。在一些例項中,硬體電路可用於實施至少一些功能。韌體最初可儲存於非揮發性儲存媒體或另一非揮發性裝置中,且載入至揮發性DRAM及/或一處理器內快取記憶體中以由控制器執行。
一非暫時性電腦儲存媒體可用於儲存一記憶體子系統之韌體之指令及/或一般而言作業系統之指令。在一項實例中,當藉由一處理裝置執行指令時,指令引起處理裝置執行上文論述之一方法。
圖5係其中可操作本發明之實施例之一例示性電腦系統600之一方塊圖。圖5繪示一電腦系統600之一例示性機器,可在電腦系統600內執行用於引起該機器執行本文中論述之方法論之任一或多者的一指令集。在一些實施例中,電腦系統600可對應於包含、耦合至或利用一記憶體子系統(例如,圖1之記憶體子系統110)之一主機系統(例如,圖1之主機系統120),或其可用於執行一備份組件113之操作(例如,以執行指令而執行對應於關於圖1至圖4描述之備份組件113之操作)。在替代實施例中,機器可連接(例如,連網)至一LAN、一內部網路、一外部網路及/或網際網路中之其他機器。機器可在用戶端-伺服器網路環境中以一伺服器或一用戶端機器之身份操作,在一同級間(或分佈式)網路環境中作為一同級機器,或在一雲端計算基礎設施或環境中作為一伺服器或一用戶端機器。
機器可為一個人電腦(PC)、一平板PC、一機上盒(STB)、一個人數位助理(PDA)、一蜂巢式電話、一網路設備、一伺服器、一網路路由器、一交換機或橋接器,或能夠執行指定待由該機器採取之動作之一指令集(循序地或以其他方式)的任何機器。此外,雖然繪示一單一機器,但術語「機器」亦應被視為包含個別地或聯合地執行一(或多個)指令集以執行本文中論述之方法論之任一或多者的任何機器集合。
例示性電腦系統600包含經由一匯流排630 (其可包含多個匯流排)彼此通信之一處理裝置602、一主記憶體604 (例如,唯讀記憶體(ROM)、快閃記憶體、動態隨機存取記憶體(DRAM) (諸如同步DRAM (SDRAM)或Rambus DRAM (RDRAM))、靜態隨機存取記憶體(SRAM)等)及一資料儲存系統618。
處理裝置602表示一或多個通用處理裝置,諸如一微處理器、一中央處理單元或類似者。更特定言之,處理裝置可為一複雜指令集計算(CISC)微處理器、精簡指令集計算(RISC)微處理器、極長指令字(VLIW)微處理器、或實施其他指令集之一處理器、或實施一指令集組合之處理器。處理裝置602亦可為一或多個專用處理裝置,諸如一特定應用積體電路(ASIC)、一場可程式化閘陣列(FPGA)、一數位信號處理器(DSP)、網路處理器或類似者。處理裝置602經組態以執行用於執行本文中論述之操作及步驟之指令626。電腦系統600可進一步包含一網路介面裝置608以經由網路620通信。
資料儲存系統618可包含一機器可讀儲存媒體624 (亦被稱為一電腦可讀媒體),一或多個指令626集或體現本文中描述之方法論或功能之任一或多者的軟體儲存於機器可讀儲存媒體624上。指令626亦可在其藉由電腦系統600執行期間完全或至少部分駐留在主記憶體604及/或處理裝置602內,主記憶體604及處理裝置602亦構成機器可讀儲存媒體。機器可讀儲存媒體624、資料儲存系統618及/或主記憶體604可對應於圖1之記憶體子系統110。
在一項實施例中,指令626包含用於實施對應於一備份組件113 (例如,關於圖1至圖4描述之備份組件113)之功能性的指令。雖然機器可讀儲存媒體624在一實例實施例中被展示為一單一媒體,但術語「機器可讀儲存媒體」應被視為包含儲存一或多個指令集之一單一媒體或多個媒體。術語「機器可讀儲存媒體」亦應被視為包含能夠儲存或編碼一指令集以由機器執行且引起機器執行本發明之方法論之任一或多者的任何媒體。因此,術語「機器可讀儲存媒體」應被視為包含但不限於固態記憶體、光學媒體及磁性媒體。
已依據對一電腦記憶體內之資料位元之操作的演算法及符號表示呈現前文[實施方式]之一些部分。此等演算法描述及表示係由熟習資料處理技術者使用以最有效地將其等工作實質傳達給其他熟習此項技術者之方式。在此且一般而言,一演算法被認為是導致一所要結果之一自我一致操作序列。操作係需要實體操縱實體量之操作。通常但非必要,此等量採取能夠被儲存、組合、比較及以其他方式操縱之電信號或磁信號之形式。主要出於常用之原因,已證實將此等信號稱為位元、值、元件、符號、字元、項、數字或類似者有時是方便的。
然而,應記住,全部此等及類似術語應與適當實體量相關聯且僅為應用於此等量之方便標籤。本發明可涉及一電腦系統或類似電子計算裝置將表示為電腦系統之暫存器及記憶體內之實體(電子)量的資料操縱及變換成類似地表示為電腦系統記憶體或暫存器或其他此等資訊儲存系統內之實體量的其他資料之動作及程序。
本發明亦係關於一種用於執行本文中之操作之設備。此設備可專門建構用於所欲目的,或其可包含藉由儲存於電腦中之一電腦程式選擇性地啟動或重新組態之一通用電腦。此一電腦程式可儲存於一電腦可讀儲存媒體中,諸如但不限於任何類型之磁碟,包含軟碟、光碟、CD-ROM及磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、EPROM、EEPROM、磁卡或光卡、或適於儲存電子指令之任何類型之媒體,其等各自耦合至一電腦系統匯流排。
本文中呈現之演算法及顯示器並非固有地與任何特定電腦或其他設備相關。各種通用系統可搭配根據本文中之教示之程式使用,或可證實建構一更專業設備以執行方法係方便的。多種此等系統之結構將如下文描述中所闡述般出現。另外,未參考任何特定程式設計語言描述本發明。將明白,可使用多種程式設計語言來實施如本文中描述之本發明之教示。
本發明可被提供為一電腦程式產品或軟體,其可包含其上儲存有指令之一機器可讀媒體,該等指令可用於程式化一電腦系統(或其他電子裝置)以執行根據本發明之一程序。一機器可讀媒體包含用於以一機器(例如,一電腦)可讀之一形式儲存資訊之任何機構。在一些實施例中,一機器可讀(例如,電腦可讀)媒體包含一機器(例如,一電腦)可讀儲存媒體,諸如一唯讀記憶體(「ROM」)、隨機存取記憶體(「RAM」)、磁碟儲存媒體、光學儲存媒體、快閃記憶體組件等。
在本描述中,各種功能及操作被描述為由電腦指令執行或引起以簡化描述。然而,熟習此項技術者將認知,此等表達意謂功能因藉由一或多個控制器或處理器(諸如一微處理器)執行電腦指令而產生。替代地或組合地,可使用具有或不具有軟體指令之專用電路(諸如使用特定應用積體電路(ASIC)或場可程式化閘陣列(FPGA))來實施功能及操作。可使用不具有軟體指令之硬接線電路或結合軟體指令來實施實施例。因此,技術既不限於硬體電路及軟體之任何特定組合亦不限於藉由資料處理系統執行之指令之任何特定來源。
在前述說明書中,已參考本發明之特定實例實施例描述本發明之實施例。將顯而易見的是,可在不脫離如下文發明申請專利範圍中所闡述之本發明之實施例之更廣泛精神及範疇之情況下對本發明之實施例進行各種修改。因此,本說明書及圖式應被視為闡釋性意義而非限制性意義。
100‧‧‧計算系統
109A至109N‧‧‧記憶體組件
110‧‧‧記憶體子系統
113‧‧‧備份組件
115‧‧‧控制器
116‧‧‧控制器
117‧‧‧處理裝置
118‧‧‧處理裝置
119‧‧‧本地記憶體
120‧‧‧主機系統
201‧‧‧記憶體模組
203‧‧‧記憶體模組
205‧‧‧主機系統
207‧‧‧記憶體介面
209‧‧‧記憶體介面
211‧‧‧電源供應器監控器
213‧‧‧電源供應器
301‧‧‧記憶體模組
303‧‧‧記憶體介面
305‧‧‧主機系統
307‧‧‧控制器
309‧‧‧寫入佇列
311‧‧‧記憶體控制器
313‧‧‧偵測器
315‧‧‧非揮發性記憶體
317‧‧‧快取區
319‧‧‧電容器組
401‧‧‧方塊
403‧‧‧方塊
405‧‧‧方塊
407‧‧‧方塊
600‧‧‧電腦系統
602‧‧‧處理裝置
604‧‧‧主記憶體
608‧‧‧網路介面裝置
618‧‧‧資料儲存系統
620‧‧‧網路
624‧‧‧機器可讀儲存媒體
626‧‧‧指令
630‧‧‧匯流排
在隨附圖式之圖中藉由實例且非限制之方式繪示實施例,其中相似參考指示類似元件。
圖1繪示根據本發明之一些實施例之具有一記憶體子系統之一例示性計算系統。
圖2展示根據本發明之一些實施例之儲存與自一主機系統接收之寫入命令相關聯之資料的一計算系統。
圖3展示根據本發明之一些實施例之用於儲存與自一主機系統之一寫入佇列接收之寫入命令相關聯之資料的一記憶體模組。
圖4展示根據本發明之一些實施例之用於對持續性記憶體進行CPU快取刷新之一方法。
圖5係其中可操作本發明之實施例之一例示性電腦系統之一方塊圖。

Claims (15)

  1. 一種計算系統,其包括: 一偵測器,其用於偵測自一電源供應器提供之電力之一損失; 至少一個電容器,其用於在該電力損失之後提供電力以儲存資料; 複數個記憶體組件,其等用於儲存與自一主機系統接收之寫入命令相關聯之資料,其中回應於藉由一電源供應器監控器提供至該主機系統之一信號而自該主機系統之一記憶體控制器之一受保護寫入佇列刷新寫入命令,且其中該電源供應器監控器回應於偵測到來自該電源供應器之電力之一將臨損失而提供該信號; 一快取區,其用於經由一記憶體介面自該主機系統接收寫入命令;及 一處理裝置,其與該複數個記憶體組件可操作地耦合以: 藉由該快取區經由該記憶體介面接收自該受保護寫入佇列刷新之該等寫入命令;及 回應於藉由該偵測器偵測到該電力損失而: 停用該記憶體介面,及 儲存對應於在停用該記憶體介面之前藉由該快取區接收之自該受保護寫入佇列刷新的寫入命令之資料,其中使用由該至少一個電容器供應之電力將該資料儲存於該複數個記憶體組件之至少一者中。
  2. 如請求項1之系統,其中該受保護寫入佇列中之該等寫入命令對應於待由該主機系統存留之儲存,且其中執行於該主機系統上之軟體在止用該等儲存之前將該等寫入命令移動至該受保護寫入佇列。
  3. 如請求項2之系統,其中該軟體確保在一儲存屏障指令之後之任何儲存在該主機系統中變得全域可見之前,該儲存屏障指令之前之儲存在該主機系統中全域可見。
  4. 如請求項1之系統,其中將該等寫入命令自該主機系統之一處理裝置之至少一個快取區移動至該受保護寫入佇列。
  5. 如請求項1之系統,其中當自該電源供應器獲得之一供應電壓下降至低於一預定臨限值時,該偵測器偵測到該電力損失。
  6. 如請求項1之系統,其中該受保護寫入佇列中之該等寫入命令對應於由該主機系統之一處理裝置提交至該記憶體控制器之寫入操作。
  7. 如請求項6之系統,其中藉由執行於該主機系統上之軟體將該等寫入操作提交至該記憶體控制器,且回應於藉由該電源供應器監控器提供至該主機系統之該信號而基於由該軟體提供之一指令刷新該等寫入命令。
  8. 如請求項1之系統,其中該快取區包括靜態隨機存取記憶體,且將該資料儲存於非揮發性記憶體中。
  9. 如請求項1之系統,其中在一異步記憶體再新序列期間自該受保護寫入佇列刷新該等寫入命令。
  10. 一種方法,其包括: 藉由一快取區經由一記憶體介面接收自一主機系統之一記憶體控制器之一受保護寫入佇列刷新之寫入命令; 藉由一偵測器偵測一電力損失;及 回應於偵測到該電力損失而: 停用該記憶體介面,及 儲存與在停用該記憶體介面之前藉由該快取區接收之自該受保護寫入佇列刷新的該等寫入命令相關聯之資料,其中使用由至少一個電容器供應之電力將該資料儲存於該複數個記憶體組件之至少一者中。
  11. 如請求項10之方法,其中回應於藉由一電源供應器監控器提供至該主機系統之一信號而自該受保護寫入佇列刷新該等寫入命令,且其中該電源供應器監控器回應於偵測到由一電源供應器提供之電力之一將臨損失而提供該信號。
  12. 如請求項10之方法,其中該受保護寫入佇列中之該等寫入命令對應於待由該主機系統存留之儲存,且其中執行於該主機系統上之軟體在止用該等儲存之前將該等寫入命令移動至該受保護寫入佇列。
  13. 如請求項10之方法,其中將該等寫入命令自該主機系統之一處理裝置之至少一個快取區移動至該受保護寫入佇列。
  14. 如請求項10之方法,其中在一異步記憶體再新序列期間自該受保護寫入佇列刷新該等寫入命令。
  15. 如請求項10之方法,其進一步包括回應於偵測到該電力損失而寫入與儲存該資料相關聯之一日誌。
TW108103273A 2018-02-05 2019-01-29 對持續性記憶體之cpu快取刷新 TWI696075B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862626565P 2018-02-05 2018-02-05
US62/626,565 2018-02-05
US16/167,189 US11016890B2 (en) 2018-02-05 2018-10-22 CPU cache flushing to persistent memory
US16/167,189 2018-10-22

Publications (2)

Publication Number Publication Date
TW201937375A true TW201937375A (zh) 2019-09-16
TWI696075B TWI696075B (zh) 2020-06-11

Family

ID=67475559

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108103273A TWI696075B (zh) 2018-02-05 2019-01-29 對持續性記憶體之cpu快取刷新

Country Status (6)

Country Link
US (2) US11016890B2 (zh)
EP (1) EP3750063A4 (zh)
KR (1) KR102416956B1 (zh)
CN (1) CN111684422B (zh)
TW (1) TWI696075B (zh)
WO (1) WO2019152304A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI744039B (zh) * 2020-10-15 2021-10-21 威聯通科技股份有限公司 分散式儲存系統及應用於上之資料同步方法

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10534540B2 (en) * 2016-06-06 2020-01-14 Micron Technology, Inc. Memory protocol
US10949293B2 (en) * 2018-07-24 2021-03-16 Micron Technology Inc. Erroneous bit discovery in memory system
US11709623B2 (en) * 2018-08-03 2023-07-25 Sk Hynix Nand Product Solutions Corp. NAND-based storage device with partitioned nonvolatile write buffer
CN111192607B (zh) * 2019-12-29 2022-07-15 浪潮(北京)电子信息产业有限公司 一种存储系统掉电保护方法、装置及相关组件
US11656967B2 (en) * 2020-02-13 2023-05-23 MemRay Corporation Method and apparatus for supporting persistence and computing device
KR102470888B1 (ko) * 2020-02-13 2022-11-25 주식회사 멤레이 지속성 지원 장치 및 방법, 그리고 컴퓨팅 장치
JP2022050757A (ja) 2020-09-18 2022-03-31 キオクシア株式会社 メモリシステム
US11455251B2 (en) * 2020-11-11 2022-09-27 Advanced Micro Devices, Inc. Enhanced durability for systems on chip (SOCs)
CN112947931B (zh) * 2021-02-22 2023-10-03 武汉大学 基于相变存储器的循环转数组的损耗均衡编译方法
CN113360425A (zh) * 2021-06-28 2021-09-07 深圳市高德信通信股份有限公司 一种分布式多级缓存系统

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7536506B2 (en) 2004-06-21 2009-05-19 Dot Hill Systems Corporation RAID controller using capacitor energy source to flush volatile cache data to non-volatile memory during main power outage
US20060242458A1 (en) * 2005-03-31 2006-10-26 Daniel Feldman Computer volatile memory power backup system
US7451348B2 (en) * 2005-08-04 2008-11-11 Dot Hill Systems Corporation Dynamic write cache size adjustment in raid controller with capacitor backup energy source
US20090083483A1 (en) 2007-09-24 2009-03-26 International Business Machines Corporation Power Conservation In A RAID Array
US8325554B2 (en) 2008-07-10 2012-12-04 Sanmina-Sci Corporation Battery-less cache memory module with integrated backup
US8261012B2 (en) * 2009-10-30 2012-09-04 Western Digital Technologies, Inc. Non-volatile semiconductor memory comprising power fail circuitry for flushing write data in response to a power fail signal
US9128762B2 (en) 2009-12-15 2015-09-08 Micron Technology, Inc. Persistent content in nonvolatile memory
US9043642B2 (en) * 2010-12-20 2015-05-26 Avago Technologies General IP Singapore) Pte Ltd Data manipulation on power fail
US20120221767A1 (en) * 2011-02-28 2012-08-30 Apple Inc. Efficient buffering for a system having non-volatile memory
US9213386B2 (en) * 2012-10-22 2015-12-15 Micron Technology, Inc. Apparatuses and methods and for providing power responsive to a power loss
US9256384B2 (en) * 2013-02-04 2016-02-09 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for reducing write latency in a data storage system by using a command-push model
US20150095578A1 (en) 2013-09-27 2015-04-02 Kshitij Doshi Instructions and logic to provide memory fence and store functionality
US20160188414A1 (en) 2014-12-24 2016-06-30 Intel Corporation Fault tolerant automatic dual in-line memory module refresh
US9971686B2 (en) 2015-02-23 2018-05-15 Intel Corporation Vector cache line write back processors, methods, systems, and instructions
US20160378344A1 (en) * 2015-06-24 2016-12-29 Intel Corporation Processor and platform assisted nvdimm solution using standard dram and consolidated storage
US9792190B2 (en) 2015-06-26 2017-10-17 Intel Corporation High performance persistent memory
US10303477B2 (en) * 2015-06-26 2019-05-28 Intel Corporation Persistent commit processors, methods, systems, and instructions
US10372185B2 (en) * 2015-07-28 2019-08-06 Western Digital Technologies, Inc. Enhanced power control of data storage arrays
KR102274038B1 (ko) * 2015-08-03 2021-07-09 삼성전자주식회사 백업 기능을 갖는 메모리 모듈
US9965289B2 (en) 2015-08-21 2018-05-08 Dell Products L.P. Systems and methods for real-time cache flush measurements in an information handling system
US10049004B2 (en) 2015-12-09 2018-08-14 Samsung Electronics Co., Ltd. Electronic system with memory data protection mechanism and method of operation thereof
US10204022B2 (en) * 2016-08-15 2019-02-12 Oracle International Corporation Efficient memory management for persistent memory
US10459234B2 (en) * 2017-08-29 2019-10-29 Facebook, Inc. Controlling a head-mounted display system in low power situations

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI744039B (zh) * 2020-10-15 2021-10-21 威聯通科技股份有限公司 分散式儲存系統及應用於上之資料同步方法
US11544012B2 (en) 2020-10-15 2023-01-03 Qnap Systems, Inc. Distributed storage system and data synchronization method applied thereto

Also Published As

Publication number Publication date
WO2019152304A1 (en) 2019-08-08
US20190243759A1 (en) 2019-08-08
EP3750063A4 (en) 2021-06-02
KR20200108367A (ko) 2020-09-17
CN111684422B (zh) 2023-10-20
CN111684422A (zh) 2020-09-18
KR102416956B1 (ko) 2022-07-05
EP3750063A1 (en) 2020-12-16
TWI696075B (zh) 2020-06-11
US11016890B2 (en) 2021-05-25
US20210240624A1 (en) 2021-08-05

Similar Documents

Publication Publication Date Title
TWI696075B (zh) 對持續性記憶體之cpu快取刷新
US11669451B2 (en) Multi-plane switching of non-volatile memory
US20220197564A1 (en) Memory activation timing management
CN113643745B (zh) 存储器子系统中的存储器裸片的峰值电流的管理
KR20220117294A (ko) 커패시터 상태 점검
CN114530173A (zh) 存储器系统及其操作方法
CN114237975A (zh) 存储器系统、存储器装置和操作存储器装置的方法
US11734071B2 (en) Memory sub-system tier allocation
US11934686B2 (en) Data reordering at a memory subsystem
US11735272B2 (en) Noise reduction during parallel plane access in a multi-plane memory device
US11803322B2 (en) Memory system and operating method supporting fast boot using host memory buffer and default enabled information
US11853573B2 (en) Storage device sharing system and operating method thereof
US11221949B2 (en) Multi state purgatory for media management for a memory subsystem
US11954349B2 (en) Memory system for executing a target operation based on a program state of a super memory block and operating method thereof
US11742002B2 (en) Memory activation timing management
US11455109B2 (en) Automatic wordline status bypass management
US20240036741A1 (en) Memory system, memory controller and method for operating memory system, capable of determining target meta memory block on the basis of detected target state
CN112384890B (zh) 预测性分页以加速存储器存取
CN112384890A (zh) 预测性分页以加速存储器存取
CN115691616A (zh) 基于管芯生成的脉冲信号的状态轮询
CN115917653A (zh) 存储器装置中位线驱动器与页缓冲器电路系统的隔离