TW202403556A - 記憶體系統及其操作方法 - Google Patents
記憶體系統及其操作方法 Download PDFInfo
- Publication number
- TW202403556A TW202403556A TW112100346A TW112100346A TW202403556A TW 202403556 A TW202403556 A TW 202403556A TW 112100346 A TW112100346 A TW 112100346A TW 112100346 A TW112100346 A TW 112100346A TW 202403556 A TW202403556 A TW 202403556A
- Authority
- TW
- Taiwan
- Prior art keywords
- cache
- column
- hit
- memory
- access
- Prior art date
Links
- 238000011017 operating method Methods 0.000 title claims 2
- 230000004044 response Effects 0.000 claims abstract description 5
- 238000000034 method Methods 0.000 claims description 11
- 230000009977 dual effect Effects 0.000 claims description 5
- 238000013500 data storage Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 14
- 238000012545 processing Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000001994 activation Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000005672 electromagnetic field Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000010079 rubber tapping Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6024—History based prefetching
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)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本發明係關於一種記憶體系統,該記憶體系統包括:主記憶體裝置,被配置為包括多條列線;快取記憶體裝置,被配置為包括多個快取列、列敲擊狀態值和存取選擇位元,多個快取列用於快取列線中儲存的資料,每個快取列包括快取資料,列敲擊狀態值用於儲存相應列線的存取次數,存取選擇位元根據列敲擊狀態值來設置;以及記憶體控制器,被配置為回應於來自主機的請求,控制對主記憶體裝置和快取記憶體裝置中的一個執行存取操作,主記憶體裝置和快取記憶體裝置中的一個是根據快取命中的快取列的存取選擇位元而選擇的。
Description
本發明的多種實施例係關於一種半導體設計技術,並且更具體地,係關於一種包括半導體記憶體裝置的記憶體系統及其操作方法。
近來,計算範例已經轉變為可以隨時隨地使用電腦系統的遍存計算環境。因此,諸如行動電話、數位相機和筆記型電腦的便攜式電子裝置的使用迅速增加。這些便攜式電子裝置通常使用具有記憶體裝置的資料儲存裝置。資料儲存裝置用來儲存用於便攜式電子裝置的資料。因為使用記憶體裝置的資料儲存裝置不具有機械驅動器,所以該資料儲存裝置具有優異的穩定性和耐久性、高資訊存取速度以及低功耗。
然而,當連續存取記憶體單元時,與相應記憶體單元相鄰的記憶體單元可能持續暴露於由這種存取引起的電磁場,並且記憶體單元中的所儲存的資料失真的可能性可能增加。這種現象稱為列敲擊(row hammering)
相關申請案的交叉引用:
本申請請求於2022年7月11日提交的韓國專利申請第10-2022-0084986號的優先權,其整體透過引用併入本文。
本發明的實施例係關於一種記憶體系統,其能夠將主記憶體裝置的每條列線的存取次數作為列敲擊狀態值儲存到快取記憶體裝置的快取列中,並基於所儲存的列敲擊狀態值管理對主記憶體裝置的存取。
根據本發明的實施例,一種記憶體系統包括:主記憶體裝置,被配置為包括多條列線;快取記憶體裝置,被配置為包括多個快取列、列敲擊狀態值和存取選擇位元,多個快取列用於快取列線中儲存的資料,每個快取列包括快取資料,列敲擊狀態值用於儲存相應列線的存取次數,存取選擇位元根據列敲擊狀態值來設置;以及記憶體控制器,被配置為回應於來自主機的請求控制對主記憶體裝置和快取記憶體裝置中的一個執行存取操作,主記憶體裝置和快取記憶體裝置中的一個是根據快取命中的快取列的存取選擇位元而選擇的。
根據本發明的實施例,一種記憶體系統的操作方法包括:當主機請求對主記憶體裝置的列線進行存取操作時,從快取記憶體裝置的多個快取列中搜索快取命中的快取列;根據快取命中的快取列的存取選擇位元對主記憶體裝置和快取記憶體中的一個執行存取操作;並且當對列線執行存取操作時增加快取命中的快取列的列敲擊狀態值,並當列敲擊狀態值達到閾值時設置存取選擇位元。
根據本發明的實施例,記憶體系統可以透過在列線的存取次數達到閾值之前允許存取主記憶體裝置的列線,而當列線的存取次數達到閾值時允許存取快取記憶體裝置的快取列,來防止列敲擊引起的資料損壞和失真。
此外,根據本發明的實施例,在透過高速計算鏈路(Compute Xpress Link, CXL)介面與主機通訊的記憶體系統中,可以透過使用現有的快取記憶體裝置管理每條列線的存取次數來有效地使用有限的記憶體資源。
參照圖式,下面將更詳細地描述本發明的多種實施例。本發明可以具有不同形式的實施例,並且不應理解為受限於本文所闡述的實施例。相反,提供這些實施例使得本發明將更加透徹和完整,並且將本發明的範圍充分地傳達給本領域的技術人員。貫穿本發明,在本發明的各種圖式和實施例中相同的參考符號指代相同的部件。
將理解的是,當元件被稱為“耦接”或“連接”到另一元件時,這可能表示這兩個元件直接耦接,或者這兩個元件透過插入其間的另一電路彼此電連接。將進一步理解的是,在本說明書中使用的術語“包括”、“包含”、“具有”等指定存在所陳述的特徵、數字、步驟、操作、元件、組件和/或其組合,但不排除存在或添加一個或多個其他特徵、數字、步驟、操作、元件、組件和/或其組合。在本發明中,除非上下文另有明確說明,否則單數形式也旨在包括複數形式。
在以下實施例中,為了聚焦於刷新操作,將省略與資料輸入/輸出操作相關的配置的描述,並且將主要描述列控制操作。
圖1是示出根據本發明的實施例的資料儲存裝置1的方塊圖。
參照圖1,資料儲存裝置1可以包括主機10和記憶體系統20。
主機10可以是被稱為核心的獨立且實用的處理器,並且可以利用一個處理器實施,也可以被實施為包括兩個或多個處理器的多核心處理器。主機10可以使用諸如以下的各種通訊標準或介面中的至少一種來與記憶體系統20通訊:通用序列匯流排(USB)、序列AT附件(SATA)、序列SCSI(SAS)、高速晶片間(HSIC)、小型電腦系統介面(SCSI)、週邊組件互連(PCI)、高速PCI(PCIe)、高速非揮發性記憶體(NVMe)、高速計算鏈路(CXL)、通用快閃(UFS)、安全數位(SD)、多媒體卡(MMC)、嵌入式MMC(eMMC)、雙列直插式記憶體模組(DIMM)、寄存式DIMM(RDIMM)和低負載DIMM(LRDIMM)。
記憶體系統20可以根據主機10提供的請求儲存資料或讀出所儲存的資料。記憶體系統20可以用作主機10的主儲存裝置或輔助儲存裝置。記憶體系統20可以用作在主機10的控制下儲存資料的裝置,並且裝置的示例包括:行動電話、智慧型手機、MP3播放器、筆記型電腦、桌上型電腦、遊戲機、TV、平板PC或車載資訊娛樂系統。
根據作為與主機10的通訊方法的主機介面,記憶體系統20可以被製造為各種類型的裝置中的一種。例如,記憶體系統20可以被配置為諸如以下的各種類型的記憶體模組中的一種:SSD,MMC、eMMC、RS-MMC和微型MMC形式的多媒體卡,SD、迷你SD、微型SD形式的安全數位卡,通用序列匯流排(USB)記憶體模組,通用快閃(UFS)裝置,個人電腦記憶卡國際協會(PCMCIA)卡型記憶體裝置,週邊組件互連(PCI)卡型記憶體裝置,高速PCI(PCI-e或PCIe)卡型記憶體裝置,緊凑型快閃(CF)卡,智能媒體卡和記憶棒。
記憶體系統20可以被製造為各種封裝類型中的任意一種。例如,記憶體系統20可以被製造為諸如以下的各種封裝類型中的任意一種:堆疊封裝(POP)、系統級封裝(SIP)、系統單晶片(SOC)、多晶片封裝(MCP)、晶片直接封裝(COB)、晶圓級製造封裝(WFP)和晶圓級堆疊封裝(WSP)。
詳細地,記憶體系統20可以包括記憶體控制器100和記憶體裝置200。
記憶體控制器100可以控制記憶體系統20的全部操作並且控制主機10和記憶體裝置200之間的資料交換。透過根據來自主機10的請求REQ產生命令CMD和位址ADDR並將命令CMD和位址ADDR提供給記憶體裝置200,記憶體控制器100可以控制記憶體裝置200的寫入(或程式)操作和讀取操作。例如,記憶體控制器100可以在寫入操作期間將從主機10提供的資料DQ提供給記憶體裝置200。記憶體控制器100可以在讀取操作期間將從記憶體裝置200讀取的資料DQ提供給主機10。
記憶體裝置200可以回應於記憶體控制器100的控制而操作。記憶體裝置200可以根據從記憶體控制器100提供的命令CMD、位址ADDR和/或資料DQ執行寫入(或程式)操作、讀取操作等。
在實施例中,記憶體裝置200可以是雙倍資料速率同步動態隨機存取記憶體(DDR SDRAM)、第四代低功率雙倍資料速率(LPDDR4)SDRAM、圖形雙倍資料速率(GDDR)SDRAM、低功率DDR(LPDDR)、Rambus動態隨機存取記憶體(RDRAM)、NAND快閃記憶體、垂直NAND快閃記憶體、NOR快閃記憶體、電阻隨機存取記憶體(RRAM)、相變隨機存取記憶體(PRAM)、磁阻隨機存取記憶體(MRAM)、鐵電隨機存取記憶體(FRAM)、自旋轉移力矩隨機存取記憶體(STT-RAM)等。
在下文中,在主機10與記憶體控制器100之間傳輸的資料被稱為主機資料HDATA,在寫入操作期間從記憶體控制器100提供給記憶體裝置200的資料DQ被稱為寫入資料WDATA,並且在讀取操作期間從記憶體裝置200讀取的資料DQ被稱為讀取資料RDATA。
圖2是示出根據本發明的實施例的記憶體系統20的配置圖。
參照圖2,記憶體控制器100可以回應於主機10的請求REQ,向記憶體裝置200提供命令CMD和位址ADDR,與主機10交換主機資料HDATA,並與記憶體裝置200交換資料DQ。例如,記憶體控制器100可以在讀取操作期間將從記憶體裝置200讀取的讀取資料RDATA作為主機資料HDATA提供給主機10,並且可以在寫入操作期間將從主機10提供的主機資料HDATA作為寫入資料WDATA提供給記憶體裝置200。
記憶體裝置200可以接收從記憶體控制器100提供的命令CMD、位址ADDR和/或資料DQ。當命令CMD指示寫入操作時,記憶體裝置200可以將寫入資料WDATA寫入由位址ADDR選擇的記憶體區域中。當命令CMD指示讀取操作時,記憶體裝置200可以從由位址ADDR選擇的記憶體區域讀取讀取資料RDATA並將讀取資料RDATA輸出到記憶體控制器100。記憶體裝置200可以包括主記憶體裝置210和用於快取主記憶體裝置210中儲存的資料的快取記憶體裝置220。主記憶體裝置210可以利用以上參照圖1描述的記憶體裝置中的至少一個來配置。快取記憶體裝置220可以包括動態隨機存取記憶體(DRAM)和靜態RAM(SRAM)。較佳地,主記憶體裝置210可以被實施為DRAM,並且快取記憶體裝置220可以被實施為SRAM。
主記憶體裝置210可以包括記憶體單元陣列212,在記憶體單元陣列212中,多個記憶體單元以陣列形式布置在多條字元線(下面稱為列線(RL1至RLn(n為自然數))和多條位元線(下面稱為行線)之間。主記憶體裝置210可以存取記憶體單元陣列212的由位址ADDR選擇的區域,以執行由命令CMD指示的操作。例如,主記憶體裝置210可以執行寫入(或程式)操作、讀取操作等。在寫入操作期間,主記憶體裝置210可以將寫入資料WDATA程式到由位址ADDR選擇的區域中。在讀取操作期間,主記憶體裝置210可以從由位址ADDR選擇的區域讀取讀取資料RDATA。在這些實例中,位址ADDR可以包括列位址和行位址,並且由位址ADDR選擇的區域可以是由列位址指定的列線和由行位址指定的行線劃定的區域。
在下文中,在本發明的實施例中,可以將以列為單位執行的啟動操作定義為存取操作。例如,存取操作可以包括需要存取由列位址指定的列線的操作的寫入(或程式)操作和讀取操作。另外,在實施例中,主記憶體裝置210是具有包括列線的記憶體單元陣列的記憶體裝置。在不限於任意特定類型或實施方案的情況下,記憶體裝置可能產生列敲擊。
快取記憶體裝置220是在處理速度相對較高的處理器(即,記憶體控制器100)與處理速度相對較低的主記憶體裝置210之間臨時儲存資訊的高速記憶體裝置。快取記憶體裝置220可以包括用於快取列線RL1至RLn中儲存的資料的多個快取列CL1至CLm(其中m為自然數)。較佳地,快取列CL1至CLm的數量m可以小於列線RL1至RLn的數量n(即,m<n)。在實施例中,快取記憶體裝置220的快取列CL1至CLm中的每一個可以與列線RL1至RLn中的一個相對應,並且可以包括用於儲存相應列線的存取次數的列敲擊狀態值(圖3中的“RH_S”)以及根據列敲擊狀態值RH_S設置的存取選擇位元(圖3中的“AS”)。將參照圖3描述快取記憶體裝置220的詳細配置。
另一方面,快取記憶體裝置220的特徵可以在於,當裝置由於空間有限而導致快取已滿時必須刪除現有資料以加載新資料。為此,資料引用概率低的資料可以根據快取替換策略來刪除,或者可以寫回主記憶體裝置210且可以用新資料替換該空間中的資料。
記憶體控制器100可以包括主機介面(I/F)110、處理器120、緩衝記憶體130、存取管理器140、記憶體介面(I/F)150和匯流排170。
主機介面110可以被配置為在處理器120的控制下與耦接到記憶體系統20的主機通訊。例如,主機介面110可以從主機接收請求REQ和主機資料HDATA,並且可以透過記憶體介面150接收從記憶體裝置200讀取的資料DQ並將資料DQ作為主機資料HDATA輸出到主機。特別地,在本發明的實施例中,主機介面110可以透過高速計算鏈路(CXL)介面或雙列直插式記憶體模組(DIMM)介面與主機通訊。
處理器120可以執行各種操作或包括用於控制記憶體裝置200的韌體。處理器120可以包括微控制單元(MCU)和中央處理單元(CPU)。處理器120可以透過主機介面110接收從主機提供的請求REQ和主機資料HDATA。處理器120可以產生與請求REQ相對應的各種命令(例如,啟動命令、讀取命令和寫入命令)與位址,並透過記憶體介面150將它們與主機資料HDATA一起傳輸到記憶體裝置200。處理器120通常可以控制主機介面110、緩衝記憶體130、存取管理器140和記憶體介面150。
緩衝記憶體130可以臨時儲存待從主機傳輸到記憶體裝置200或待從記憶體裝置200傳輸到主機的資料。較佳地,緩衝記憶體130可以被配置為諸如DRAM和SRAM的隨機存取記憶體。儘管圖2示出緩衝記憶體130位於記憶體控制器100中,但是本發明不特別限制於此,而是緩衝記憶體130可以位於記憶體控制器100的外部
存取管理器140可以管理快取記憶體裝置220的快取列CL1至CLm。例如,當假設第二快取列CL2與第k列線RLk相對應時,每當對第k列線RLk執行存取操作時(即,當存取或啟動第k列線RLk時),存取管理器140可以增加作為快取命中的快取列的第二快取列列CL2的列敲擊狀態值RH_S。另外,存取管理器140可以根據列敲擊狀態值RH_S設置快取命中的第二快取列CL2的存取選擇位元AS。例如,存取管理器140可以設置由於列敲擊而發生資料損壞的情況的閾值,當列敲擊狀態值RH_S小於該閾值時將存取選擇位元AS設置為低位元,並且當列敲擊狀態值RH_S達到該閾值時將存取選擇位元AS設置為高位元。存取管理器140可以在快取命中的快取列的存取選擇位元AS為高位元時控制對快取命中的快取列執行存取操作,並且可以在快取命中的快取列的存取選擇位元AS為低位元時控制對主記憶體裝置320的列線或快取命中的快取列執行存取操作。
記憶體介面150可以被配置為在處理器120的控制下與記憶體裝置200通訊。例如,記憶體介面150可以將命令CMD、位址ADDR和/或寫入資料WDATA傳輸到記憶體裝置200,並且可以將從記憶體裝置200讀取的讀取資料RDATA傳輸到主機介面110。
如上所述,根據本發明,記憶體控制器100被配置為當回應來自主機的請求REQ而執行存取操作時,根據快取命中的快取列的存取選擇位元AS來控制對主記憶體裝置210和快取記憶體裝置220中的一個執行存取操作。因此,記憶體系統20可以在列線的存取次數達到閾值之前允許存取主記憶體裝置210的列線,而當列線的存取次數達到閾值時允許存取快取記憶體裝置220的快取列。因此,可以防止由於特定列線的大量啟動而導致耦接到特定列線或相鄰列線的記憶體單元的資料被損壞的列敲擊現象。
圖3是示出根據本發明的實施例的圖2中所示的快取記憶體裝置220的詳細配置圖。
參照圖3,快取記憶體裝置220可以包括用於快取主記憶體裝置210中儲存的資料的多個快取列。例如,在圖3中,示出了包括第1至第2048快取列的快取記憶體裝置220。
第1至第2048快取列中的每一個都可以包括諸如以下的字段:有效位元V、存取選擇位元AS、列敲擊狀態值RH_S、標籤位址TAG_A、以及快取資料CDATA。例如,圖3示出了每個快取列CL,其包括1位元有效位元V、1位元存取選擇位元AS、5位元列敲擊狀態值RH_S、16位元標籤位址TAG、32位元組快取資料CDATA的字段。根據實施例,每個快取列中可以額外包括用於區分第1至第2048快取列的列索引。
有效位元V可以包括指示相應快取列中的字段是否有效的資訊,即指示相應快取列是否正在使用的資訊。當字段有效時,有效位元V可以設置為高位元。在下文中,當特定位元為高位元時被描述為設置(set),並且當特定位元為低位元時被描述為釋放(release)。
快取資料CDATA可以是儲存在主記憶體裝置210中的寫入資料WDATA或待從主記憶體裝置210讀取的讀取資料RDATA。
標籤位址TAG_A可以包括位址資訊(即,列位址資訊),該位址資訊指定主記憶體裝置210的、與相應快取列相對應的列線的位置。作為參考,當從主機10請求存取操作時,記憶體控制器100可以透過基於每個快取列中包括的標籤位址TAG_A搜索快取命中的快取列來確定快取命中或快取未命中。
列敲擊狀態值RH_S可以指示與相應快取列相對應的列線的存取次數。列敲擊狀態值RH_S可以具有每當存取(或啟動)相應的列線時(即,每當對相應列線執行存取操作(例如,讀取操作或寫入操作)時)增加“+1”的值。在圖3中,列敲擊狀態值RH_S由5位元組成,但本發明的實施例不限於此,並且列敲擊狀態值RH_S可以設置為1位元組(即,8位元)或更少。
存取選擇位元AS可以包括指示執行存取操作的裝置的資訊,例如主記憶體裝置210或快取記憶體裝置220的資訊。例如,可以在存取選擇位元AS為低位元時對主記憶體裝置210的與標籤位址TAG_A相對應的列線執行存取操作,並且可以在存取選擇位元AS為高位元時對相應快取列執行存取操作。
下文中,將參照圖1至圖6描述根據本發明的實施例的操作記憶體系統的方法。
圖4至圖6是用於描述根據本發明的實施例的記憶體系統的操作的流程圖。
參照圖4,當從主機10接收到請求REQ(在S410)時,記憶體控制器100可以在快取記憶體裝置220中搜索具有與請求REQ相對應的標籤位址TAG_A的快取列(在S420)。當搜索到具有與請求REQ相對應的標籤位址TAG_A的快取列(即,快取命中的快取列)(S420為“是”)時,將參照圖5至圖6描述操作“A”。
如果未搜索到快取命中的快取列(S420為“否”),即,在快取未命中的情況下,記憶體控制器100可以區分請求REQ是否為指示讀取操作的請求(在S430)。
當請求REQ是指示寫入操作的請求(S430為“否”)時,記憶體控制器100可以控制記憶體裝置200執行寫入未命中操作(“WRITE MISS”)。記憶體控制器100可以向主記憶體裝置210提供與請求REQ相對應的寫入命令CMD、位址ADDR和寫入資料WDATA,並且主記憶體裝置210可以執行將寫入資料WDATA程式到由位址ADDR選擇的區域中的寫入操作(在S440)。在這種情況下,可以透過位址ADDR中之中的列位址選擇一條或多條列線,並且可以透過位址ADDR中之中的行位址選擇一條或多條行線,並且可以對由所選擇列線和所選擇行線指定的區域執行寫入操作。
下文中,記憶體控制器100可以檢查快取記憶體裝置220是否不具有空的快取列(在S450)。例如,記憶體控制器100可以基於有效位元V搜索空的快取列。記憶體控制器100可以檢查快取記憶體裝置220的每個快取列的有效位元V並且獲得其中有效位元V被釋放為低位元的空的快取列(S450為“否”)。
如果不存在空的快取列,則記憶體控制器100可以確定快取記憶體裝置220為快取已滿(S450為“是”),並且可以根據快取替換策略,透過應用驅逐演算法對占用的快取列中的一個執行驅逐操作(在S460)。例如,可以基於先入先出(FIFO)列表、最不頻繁使用(LFU)列表和最近使用(LRU)列表來使用驅逐演算法,該FIFO列表選擇快取列之中最舊的快取列,LFU列表從加載到快取記憶體裝置220的快取列之中選擇最少使用的快取列,LRU列表從加載到快取記憶體裝置220的快取列之中選擇最久未使用的快取列。記憶體控制器100可以透過應用驅逐演算法來將所選擇快取列的所有字段初始化。當所選擇快取列的存取選擇位元AS被設置為高位元時,記憶體控制器100可以將快取資料CDATA寫回到主記憶體裝置210的與標籤位址ADDR相對應的列線。因此,記憶體控制器100可以獲取空的快取列。
當獲取到空的快取列時,記憶體控制器100可以透過將寫入資料WDATA儲存為所獲取的快取列的快取資料CDATA並將所獲取的快取列的有效位元V設置為高位元來將新的快取列添加到快取記憶體裝置220中。另外,記憶體控制器100可以將所獲取的快取列的存取選擇位元AS釋放為低位元,並且將列敲擊狀態值RH_S初始化為“0”(在S470)。
另一方面,當請求REQ是指示讀取操作的請求(S430為“是”)時,記憶體控制器100可以控制記憶體裝置200執行讀取未命中操作(“READ MISS”)。記憶體控制器100可以向主記憶體裝置210提供與請求REQ相對應的讀取命令CMD和位址ADDR,並且主記憶體裝置210可以執行從由位址ADDR選擇的區域讀取讀取資料RDATA的讀取操作(在S480)。
下文中,記憶體控制器100可以基於有效位元V檢查快取記憶體裝置220是否不具有空的快取列(在S450)。如上所述,當不存在空的快取列時(S450為“是”),記憶體控制器100可以透過執行驅逐操作來獲得空的快取列(在S460)。在獲取到空的快取列之後,記憶體控制器100可以透過將讀取資料RDATA儲存為所獲取的快取列的快取資料CDATA並將所獲取的快取列的有效位元V設置為高位元來將新的快取列添加到快取記憶體裝置220中。另外,記憶體控制器100可以將所獲取的快取列的存取選擇位元AS釋放為低位元,並且將列敲擊狀態值RH_S初始化為“0”(在S470)。
參照圖5,示出了對快取命中(Cache HIT)的快取列的操作“A”(S420 為“是”)。在快取命中的情況下,記憶體控制器100可以區分請求REQ是否為指示讀取操作的請求(在S510)。當請求REQ是指示讀取操作的請求(S510為“是”)時,將參照圖6描述操作“B”。
參照圖5,如果請求REQ是指示寫入操作的請求(S510為“否”)時,記憶體控制器100可以控制記憶體裝置200執行寫入命中操作(“WRITE HIT”)。記憶體控制器100可以向記憶體裝置200提供與請求REQ相對應的寫入命令CMD、位址ADDR和寫入資料WDATA。記憶體控制器100可以檢查快取命中的快取列的存取選擇位元AS是否被釋放為低位元(在S520)。
當快取命中的快取列的存取選擇位元AS被設置為高位元(S520為“否”)時,記憶體控制器100可以控制快取記憶體裝置220執行將寫入資料WDATA寫入快取記憶體裝置220的快取命中的快取列的寫入操作(在S530)。因此,僅對快取命中的快取列執行寫入操作而不存取主記憶體裝置210,從而防止由於列敲擊而引起的主記憶體裝置210的資料損壞和失真。
當快取命中的快取列的存取選擇位元AS被釋放為低位元(S520為“是”)時,記憶體控制器100可以檢查快取命中的快取列的列敲擊狀態值RH_S是否已經達到閾值(在S540)。如果列敲擊狀態值RH_S未達到閾值(S540為“否”),則記憶體控制器100可以控制主記憶體裝置210執行將寫入資料WDATA寫入到由位址ADDR選擇的區域中的寫入操作(在S550)。在執行寫入操作之後,記憶體控制器100可以將快取命中的快取列的列敲擊狀態值RH_S增加“+1”(在S560)。
當列敲擊狀態值RH_S達到閾值(S540為“是”)時,記憶體控制器100可以從主記憶體裝置210的與位址ADDR相對應的列線讀取資料並將所讀取的資料更新為快取命中的快取列的快取資料CDATA(在S570)。另外,記憶體控制器100可以控制快取記憶體裝置220執行將寫入資料WDATA寫入到快取命中的快取列的寫入操作(在S580)。例如,寫入操作可以包括遮罩寫入操作或部分寫入操作。在執行寫入操作之後,記憶體控制器100可以將快取命中的快取列的存取選擇位元AS設置為高位元(在S590)。
根據實施例,當列敲擊狀態值RH_S達到閾值(S540為“是”)時,記憶體控制器100可以控制主記憶體裝置210執行寫入操作,並將從執行寫入操作的列線讀取的資料更新為快取命中的快取列的快取資料CDATA。另一方面,在不執行遮罩寫入操作或部分寫入操作的記憶體系統中,可以省略從列線讀取資料並將所讀取的資料更新為快取命中的快取列的快取資料CDATA的操作(在S570)。
參照圖6,示出了操作“B”,在操作“B”中請求REQ調用讀取操作(S510為“是”)。記憶體控制器100可以控制記憶體裝置200執行讀取命中操作(“READ HIT”)。記憶體控制器100可以向記憶體裝置200提供與請求REQ的相對應的讀取命令CMD和位址ADDR。記憶體控制器100可以檢查快取命中的快取列的存取選擇位元AS是否被釋放為低位元(在S610)。
當快取命中的快取列的存取選擇位元AS被設置為高位元(S610為“否”)時,記憶體控制器100可以控制快取記憶體裝置220執行從快取命中的快取列讀取讀取資料RDATA的讀取操作(在S620)。因此,僅對快取命中的快取列執行讀取操作而不存取主記憶體裝置210,從而防止由於列敲擊而引起的主記憶體裝置210的資料損壞和失真。
當快取命中的快取列的存取選擇位元AS被釋放為低位元(S610為“是”)時,記憶體控制器100可以檢查快取命中的快取列的列敲擊狀態值RH_S是否被設置為“0”(在S630)。如果存取選擇位元AS被釋放為低位元且列敲擊狀態值RH_S為“0”(S630為“是”),則在添加圖4描述的新的快取列之後不執行額外的存取操作。也就是說,由於在添加新的快取列之後不執行額外的存取操作時,列線中儲存的資料與該快取列的快取資料CDATA相同,因此記憶體控制器100可以控制快取記憶體裝置220執行讀取操作(在S620)。因此,可以防止列敲擊並減少操作延遲和開銷。
參照圖6,當快取命中的快取列的存取選擇位元AS被釋放為低位元(S610為“是”)並且快取命中的快取列的列敲擊狀態值RH_S不為“0”(S630為“否”)時,記憶體控制器100可以檢查快取命中的快取列的列敲擊狀態值RH_S是否達到閾值(在S640)。當列敲擊狀態值RH_S大於“0”但未達到閾值(S630為“否”且S640為“否”)時,記憶體控制器100可以控制主記憶體裝置210執行從由位址ADDR選擇的區域讀取讀取資料RDATA的讀取操作(在S650)。在執行讀取操作之後,記憶體控制器100可以將快取命中的快取列的列敲擊狀態值RH_S增加“+1”(在S660)。
替代地,當列敲擊狀態值RH_S達到閾值(S640為“是”)時,記憶體控制器100可以控制主記憶體裝置210執行讀取讀取資料RDATA的讀取操作(在S670),並將讀取資料RDATA更新為快取命中的快取列的快取資料CDATA(在S680)。在執行讀取操作之後,記憶體控制器100可以將快取命中的快取列的存取選擇位元AS設置為高位元(在S690)。
下文中,將在詳細示例中描述根據本發明的實施例的讀取操作或寫入操作。
圖7A至圖7E是描述根據本發明的實施例的記憶體系統的示例性操作的示圖。圖7A至圖7E示出了當順序地執行寫入操作時快取列的狀態。
參照圖7A,根據來自主機10的請求REQ,記憶體控制器100(未示出)可以產生寫入命令CMD(下文中稱為“WT”)、位址ADDR“0x10”和寫入資料WDATA“0x1234”(①)。如果未搜索到具有與位址ADDR“0x10”相對應的標籤位址TAG_A的快取列(即,快取命中的快取列)(②,“WRITE MISS”),則記憶體控制器100可以控制主記憶體裝置210執行將寫入資料WDATA“0x1234”寫入到由位址ADDR“0x10”選擇的區域的寫入操作(③)。此後,記憶體控制器100可以從高速快取記憶體裝置220獲取空的快取列,並且透過將寫入資料WDATA“0x1234”儲存為所獲取的快取列的快取資料CDATA並將有效位元V設置為高位元來將新的快取列添加到快取記憶體裝置220。記憶體控制器100可以將所添加的快取列的存取選擇位元AS釋放為低位元,並且將列敲擊狀態值RH_S初始化為“0”(④)。另一方面,當未搜索到空的快取列時,記憶體控制器100可以根據快取替換策略,透過應用驅逐演算法來執行選擇占用的快取列中的一個的驅逐操作。
參照圖7B,記憶體控制器100可以產生與來自主機10的請求REQ相對應的寫入命令WT、位址ADDR“0x10”和寫入資料WDATA“0x2345”(①)。由於基於位址ADDR“0x10”搜索到快取命中的快取列(②,“WRITE HIT”),記憶體控制器100可以檢查快取命中的快取列的存取選擇位元AS是被設置為高位元還是被釋放為低位元。如果存取選擇位元AS被釋放為低位元且列敲擊狀態值RH_S為“0”,則記憶體控制器100可以控制主記憶體裝置210執行將寫入資料WDATA“0x2345”寫入到由位址ADDR“0x10”選擇的區域中的寫入操作(③)。在執行寫入操作之後,記憶體控制器100可以透過將列敲擊狀態值RH_S增加“+1”來更新快取命中的快取列(④)。
參照圖7C,在列敲擊狀態值RH_S達到閾值(例如“31”)之前,可以透過每當對與位址ADDR“0x10”相對應的列線執行存取操作時將列敲擊狀態值RH_S遞增“+1”來更新快取命中的快取列(④)。
參照圖7D,記憶體控制器100可以產生與來自主機10的請求REQ相對應的寫入命令WT、位址ADDR“0x10”和寫入資料WDATA“0x5678”(①)。由於快取命中的快取列的列敲擊狀態值RH_S已達到閾值“31”,因此記憶體控制器100可以從主記憶體裝置210的與位址ADDR“0x10”相對應的列線讀取資料並將所讀取的資料更新為快取命中的快取列的快取資料CDATA(③)。另外,快取記憶體裝置220可以執行將寫入資料WDATA“0x5678”寫入到快取命中的快取列的寫入操作(④)。在執行寫入操作之後,記憶體控制器100可以透過將存取選擇位元AS設置為高位元來更新快取命中的快取列(⑤)。
參照圖7E,記憶體控制器100可以產生與來自主機10的請求REQ相對應的寫入命令WT、位址ADDR“0x10”和寫入資料WDATA“0x6789”(①)。由於快取命中的快取列的存取選擇位元AS被設置為高位元(②),因此記憶體控制器100可以控制快取記憶體裝置220執行將寫入資料WDATA“0x6789”寫入到快取命中的快取列的寫入操作(③)。也就是說,在存取選擇位元AS設置為高位元之後,每當對位址ADDR“0x10”執行讀取操作或寫入操作時,可以僅對快取命中的快取列執行讀取操作或寫入操作而無需存取主記憶體裝置210。因此,可以防止由於列敲擊引起的主記憶體裝置210的資料損壞和失真。
圖8A至圖8H是描述根據本發明的實施例的記憶體系統的示例性操作的示圖。圖8A至圖8H示出了當順序地執行讀取操作和寫入操作時快取列的狀態。
參照圖8A,根據來自主機10的請求REQ,記憶體控制器100可以產生讀取命令CMD(下文中稱為“RD”)、位址ADDR“0x10”(①)。如果未搜索到具有與位址ADDR“0x10”相對應的標籤位址TAG_A的快取列(即,快取命中的快取列)(②,“READ MISS”),則記憶體控制器100可以控制主記憶體裝置執行從由位址ADDR“0x10”選擇的區域讀取讀取資料RDATA的讀取操作(③)。此後,記憶體控制器100可以從快取記憶體裝置220獲得空的快取列,並且透過將讀取資料RDATA“0x1234”儲存為所獲取的快取列的快取資料CDATA並將有效位元V設置為高位元來將新的快取列添加到快取記憶體裝置220。記憶體控制器100可以將所添加的快取列的存取選擇位元AS釋放為低位元,並且將列敲擊狀態值RH_S初始化為“0”(④)。另一方面,當未搜索到空的快取列時,記憶體控制器100可以根據快取替換策略,透過應用驅逐演算法來執行選擇占用的快取列中的一個的驅逐操作。
參照圖8B,記憶體控制器100可以產生與主機10的請求REQ相對應的讀取命令RD和位址ADDR“0x10”(①)。由於基於位址ADDR“0x10”搜索到快取命中的快取列(②,“READ HIT”),因此記憶體控制器100可以檢查存取選擇位元AS和列敲擊狀態值RH_S。如果存取選擇位元AS被釋放為低位元且列敲擊狀態值RH_S為“0”,則列線中儲存的資料與快取命中的快取列的快取資料CDATA相同,因此記憶體控制器100可以控制快取記憶體裝置220執行從快取命中的快取列讀取讀取資料RDATA“0x1234”的讀取操作(③)。在這種情況下,由於未存取主記憶體裝置210的列線,因此不更新包括列敲擊狀態值RH_S的快取命中的快取列的字段。
參照圖8C,記憶體控制器100可以產生與主機10的請求REQ相對應的寫入命令WT、位址ADDR“0x10”和寫入資料WDATA“0x2345”(①)。由於搜索到快取命中的快取列(②,“WRITE HIT”),因此記憶體控制器100可以檢查存取選擇位元AS和列敲擊狀態值RH_S。當存取選擇位元AS被釋放為低位元且列敲擊狀態值RH_S為“0”時,記憶體控制器100可以控制主記憶體裝置210執行將寫入資料WDATA“0x2345”寫入到由位址ADDR“0x10”選擇的區域中的寫入操作(③)。在執行寫入操作之後,記憶體控制器100可以透過將列敲擊狀態值RH_S增加“+1”來更新快取命中的快取列(④)。
參照圖8D,記憶體控制器100可以產生與主機10的請求REQ相對應的讀取命令RD和位址ADDR“0x10”(①)。由於搜索到快取命中的快取列(②,“READ HIT”),因此記憶體控制器100可以檢查存取選擇位元AS和列敲擊狀態值RH_S。當存取選擇位元(AS)被釋放為低位元且列敲擊狀態值RH_S為“1”時,記憶體控制器100可以控制主記憶體裝置210執行從由位址ADDR“0x10”選擇的區域中讀取讀取資料WDATA“0x2345”的讀取操作(③)。在執行讀取操作之後,記憶體控制器100可以透過將列敲擊狀態值RH_S增加“+1”來更新快取命中的快取列(④)。
參照圖8E,在列敲擊狀態值RH_S達到閾值(例如“31”)之前,可以透過每當對與位址ADDR“0x10”相對應的列線執行存取操作時將列敲擊狀態值RH_S增加“+1”來更新快取命中的快取列(④)。
參照圖8F,記憶體控制器100可以產生與主機10的請求REQ相對應的讀取命令RD和位址ADDR“0x10”(①)。由於快取命中的快取列的列敲擊狀態值RH_S已達到閾值“31”,因此記憶體控制器100可以控制主記憶體裝置210執行從與位址ADDR“0x10”相對應的列線中讀取最後儲存的讀取資料RDATA“0x3456”的讀取操作(③)。另外,記憶體控制器100可以將讀取資料RDATA更新為快取命中的快取列的快取資料CDATA(④),並且將存取選擇位元AS設置為高位元(⑤)。
參照圖8G和圖8H,在存取選擇位元AS設置為高位元之後,每當對位址ADDR“0x10”執行讀取操作或寫入操作時,可以僅對快取命中的快取列執行讀取操作或寫入操作而無需存取主記憶體裝置210。因此,可以防止由於列敲擊引起的主記憶體裝置210的資料損壞和失真。
圖9是示出根據本發明的另一實施例的資料儲存裝置1000的方塊圖。
參照圖9,資料儲存裝置1000可以包括主機1100和記憶體系統1200。記憶體系統1200可以包括記憶體控制器1210、第一記憶體裝置1220和第二記憶體裝置1230。
在一些實施例中,記憶體控制器1210可以透過高速計算鏈路(CXL)介面或雙列直插式記憶體模組(DIMM)介面與主機1100通訊。記憶體控制器1210可以具有與圖2的記憶體控制器100基本相同的配置。
在圖9中,第一記憶體裝置1220可以是第一層記憶體,並且第二記憶體裝置1230可以是第二層記憶體。當主機1100請求存取時,第二層記憶體可以是具有比第一層記憶體更低優先級(即,更低層)的記憶體。主機1100可以首先請求第一層記憶體中的所需資料,並且當第一層記憶體中不存在該資料時,主機110可以請求第二層記憶體中的資料。如果由主機1100請求的資料儲存在第一層記憶體或第二層記憶體中,則可以存在快取命中,並且如果未儲存在第一層記憶體或第二層記憶體中,則可能存在快取未命中。
在本發明的實施例中,第一記憶體裝置1220可以對應於圖2至圖6中描述的主記憶體裝置210,並且第二記憶體裝置1230可以對應於圖2至圖6中描述的快取記憶體裝置220。因此,根據本發明的實施例,在透過高速計算鏈路(Compute Xpress Link, CXL)介面與主機通訊的記憶體系統中,可以將現有的第二記憶體裝置用作快取記憶體裝置,透過管理列線的存取次數來有效地使用有限的記憶體資源。
圖10是示出根據本發明的又一實施例的資料儲存裝置2000的方塊圖。在圖10中,記憶體模組被示為記憶體系統的示例。
參照圖10,資料儲存裝置2000可以包括主機2100、第一記憶體模組2200和第二記憶體模組2300。資料儲存裝置2000中包括的記憶體模組的數量不受限於本實施例。
第一記憶體模組2200包括記憶體控制器2210和記憶體裝置2220,並且可以透過第一介面與主機2100通訊。第二記憶體模組2300可以包括記憶體控制器2310和記憶體裝置2320,並且可以透過第二介面與主機2100通訊。第一介面和第二介面可以彼此不同。例如,第一介面可以包括雙列直插式記憶體模組(DIMM)介面,並且第二介面可以包括高速計算鏈路(CXL)介面。
在圖10中,第一記憶體模組2200可以是第一層記憶體,並且第二記憶體模組2300可以是第二層記憶體。當主機2100請求存取時,第二層記憶體可以是具有比第一層記憶體更低優先級(即,更低層)的記憶體。主機2100可以首先請求第一層記憶體中的所需資料,並且當第一層記憶體中不存在該資料時請求第二層記憶體中的資料。如果由主機2100請求的資料儲存在第一層記憶體或第二層記憶體中,則可以存在快取命中,並且如果未儲存在第一層記憶體或第二層記憶體中,則可能存在快取未命中。
記憶體裝置2220和記憶體裝置2320中的至少一個可以對應於根據本發明的實施例的圖2至圖6中描述的記憶體裝置200,並且可以類似地包括相應的主記憶體裝置210和快取記憶體裝置220。
圖式和說明書中已經描述了本發明的多種實施例。雖然這裡使用了特定的術語,但是這些術語只是為了描述本發明的實施例。因此,本發明不限於上述實施例,並且在本發明的精神和範圍內可以進行許多變化。對本領域技術人員來說顯而易見的是,除了本文中公開的實施例之外,還可以基於本發明的技術範圍進行各種修改。可以組合這些實施例以形成額外的實施例。
需要說明的是,雖然結合本發明的實施例對本發明的技術精神進行了描述,但這僅是為了說明性目的,而不應理解為限制性目的。本領域的普通技術人員應理解的是,在不脫離本發明和所附申請專利範圍的技術精神的情況下,可以對其進行各種改變。
例如,對於上述實施例中作為示例提供的邏輯閘和電晶體,可以根據輸入訊號的極性來實施不同的位置和類型。此外,可以組合這些實施例以形成額外的實施例。
1:資料儲存裝置
10:主機
20:記憶體系統
100:記憶體控制器
110:主機介面
120:處理器
130:緩衝記憶體
140:存取管理器
150:記憶體介面
170:匯流排
200:記憶體裝置
210:主記憶體裝置
212:記憶體單元陣列
220:快取記憶體裝置
1000:資料儲存裝置
1100:主機
1200:記憶體系統
1210:記憶體控制器
1220:第一記憶體裝置
1230:第二記憶體裝置
2000:資料儲存裝置
2100:主機
2200:第一記憶體模組
2210:記憶體控制器
2220:記憶體裝置
2300:第二記憶體模組
2310:記憶體控制器
2320:記憶體裝置
A:操作
ADDR:位址
AS:存取選擇位元
B:操作
Cache HIT:快取命中
CDATA:快取資料
CL:快取列
CL1~CLm:快取列
CMD:命令
DQ:資料
HDATA:主機資料
RD:讀取命令
RDATA:讀取資料
READ:讀取操作
READ HIT:讀取命中操作
READ MISS:讀取未命中操作
REQ:請求
RH_S:列敲擊狀態值
RL:列線
RL1~RLn:列線
S410~S480:步驟
S510~S590:步驟
S610~S690:步驟
TAG_A:標籤位址
V:有效位元
WDATA:寫入資料
WRITE:寫入操作
WRITE HIT:寫入命中操作
WRITE MISS:寫入未命中操作
WT:寫入命令
圖1是示出根據本發明的實施例的資料儲存裝置的方塊圖。
圖2是示出根據本發明的實施例的記憶體系統的配置圖。
圖3是示出根據本發明的實施例的圖2中所示的快取記憶體裝置的詳細配置圖。
圖4至圖6是用於描述根據本發明的實施例的記憶體系統的操作的流程圖。
圖7A至圖7E是描述根據本發明的實施例的記憶體系統的示例性操作的示圖。
圖8A至圖8H是描述根據本發明的實施例的記憶體系統的示例性操作的示圖。
圖9是示出根據本發明的另一實施例的資料儲存裝置的方塊圖。
圖10是示出根據本發明的又一實施例的資料儲存裝置的方塊圖。
20:記憶體系統
100:記憶體控制器
110:主機介面
120:處理器
130:緩衝記憶體
140:存取管理器
150:記憶體介面
170:匯流排
200:記憶體裝置
210:主記憶體裝置
212:記憶體單元陣列
220:快取記憶體裝置
ADDR:位址
CL1~CLm:快取列
CMD:命令
DQ:資料
HDATA:主機資料
RDATA:讀取資料
REQ:請求
RL1~RLn:列線
WDATA:寫入資料
Claims (20)
- 一種記憶體系統,包括: 主記憶體裝置,包括多條列線; 快取記憶體裝置,包括多個快取列、列敲擊狀態值和存取選擇位元,所述多個快取列用於快取所述列線中儲存的資料,每個快取列包括快取資料,所述列敲擊狀態值用於儲存相應列線的存取次數,所述存取選擇位元根據所述列敲擊狀態值來設置;以及 記憶體控制器,回應於來自主機的請求控制對所述主記憶體裝置和所述快取記憶體裝置中的一個執行存取操作,所述主記憶體裝置和所述快取記憶體裝置中的一個是根據快取命中的快取列的所述存取選擇位元而選擇的。
- 如請求項1所述的記憶體系統,其中,當對與來自所述主機的所述請求相對應的列線執行所述存取操作時,所述記憶體控制器增加所述快取命中的快取列的所述列敲擊狀態值。
- 如請求項1所述的記憶體系統,其中,當所述快取命中的快取列的所述列敲擊狀態值達到閾值時,所述記憶體控制器將所述快取命中的快取列的所述存取選擇位元設置為高位元。
- 如請求項1所述的記憶體系統,其中,所述記憶體控制器: 在所述快取命中的快取列的所述存取選擇位元為高位元時,控制對所述快取命中的快取列執行所述存取操作,並且 在所述快取命中的快取列的所述存取選擇位元為低位元時,控制對所述快取命中的快取列或與所述請求相對應的列線執行所述存取操作。
- 如請求項4所述的記憶體系統, 其中,所述存取操作包括寫入操作,並且 當所述快取命中的快取列的所述存取選擇位元為所述低位元時,其中,所述記憶體控制器: 在所述快取命中的快取列的所述列敲擊狀態值達到閾值之前,控制對所述列線執行所述寫入操作,並增加所述快取命中的快取列的所述列敲擊狀態值,並且 在所述快取命中的快取列的所述列敲擊狀態值達到所述閾值時,控制對所述快取命中的快取列執行所述寫入操作,並將所述快取命中的快取列的所述存取選擇位元設置為高位元。
- 如請求項5所述的記憶體系統,其中,當所述快取命中的快取列的所述列敲擊狀態值達到所述閾值時,所述記憶體控制器從所述列線讀取資料並將所讀取的資料更新為所述快取命中的快取列的所述快取資料,並且控制對所述快取命中的快取列執行所述寫入操作。
- 如請求項4所述的記憶體系統, 其中,所述存取操作包括讀取操作,並且 當所述快取命中的快取列的所述存取選擇位元為所述低位元時,其中,所述記憶體控制器: 控制對所述列線執行所述讀取操作,同時僅當所述快取命中的快取列的所述列敲擊狀態值被初始化時控制對所述快取命中的快取列執行所述讀取操作。
- 如請求項1所述的記憶體系統,其中,所述記憶體控制器控制對與所述請求相對應的列線執行所述存取操作,並且在發生快取未命中時將與所述列線相對應的快取列添加到所述快取記憶體裝置中。
- 如請求項8所述的記憶體系統,其中,當所述快取記憶體裝置的快取已滿時,所述記憶體控制器對所述多個快取列中根據快取替換策略而選擇的快取列執行驅逐操作。
- 如請求項9所述的記憶體系統,其中,在所述驅逐操作期間,當所選擇的快取列的所述存取選擇位元被設置為高位元時,所述記憶體控制器將所選擇的快取列的所述快取資料寫回到相應列線。
- 如請求項1所述的記憶體系統,其中,所述記憶體控制器透過高速計算鏈路(CXL)介面或雙列直插式記憶體模組(DIMM)介面與所述主機通訊。
- 如請求項1所述的記憶體系統, 其中,每個快取列進一步包括標籤位址,所述標籤位址包括指定相應列線的位置的位址資訊,並且 其中,所述記憶體控制器基於所述多個快取列中的每一個中包括的所述標籤位址來搜索所述快取命中的快取列。
- 一種記憶體系統的操作方法,包括: 當主機請求對主記憶體裝置的列線進行存取操作時,從快取記憶體裝置的多個快取列中搜索快取命中的快取列; 根據所述快取命中的快取列的存取選擇位元對所述主記憶體裝置和所述快取記憶體中的一個執行所述存取操作;並且 在對所述列線執行所述存取操作時增加所述快取命中的快取列的列敲擊狀態值,並且在所述列敲擊狀態值達到閾值時設置存取選擇位元。
- 如請求項13所述的操作方法,執行所述存取操作包括: 當所述存取選擇位元為高位元時,對所述快取命中的快取列執行所述存取操作;並且 當所述存取選擇位元為低位元時,對所述快取命中的快取列或所述列線執行所述存取操作。
- 如請求項14所述的操作方法, 其中,所述存取操作包括寫入操作,並且 當所述快取命中的快取列的所述存取選擇位元為所述低位元時,其中,執行所述存取操作包括: 在所述列敲擊狀態值達到閾值之前,對所述列線執行所述寫入操作,並增加所述列敲擊狀態值,並且 在所述列敲擊狀態值達到所述閾值時,對所述快取命中的快取列執行所述寫入操作,並將所述存取選擇位元設置為高位元。
- 如請求項15所述的操作方法,其中,當所述列敲擊狀態值達到所述閾值時,在從所述列線中讀取資料並將所讀取的資料更新為所述快取命中的快取列的快取資料之後,對所述快取命中的快取列執行所述寫入操作。
- 如請求項14所述的操作方法, 其中,所述存取操作包括讀取操作,並且 當所述快取命中的快取列的所述存取選擇位元為所述低位元時,其中,執行所述存取操作包括: 對所述列線執行所述讀取操作,同時僅當所述列敲擊狀態值被初始化時控制對所述快取命中的快取列執行所述讀取操作。
- 如請求項13所述的操作方法,其中,搜索快取命中的快取列進一步包括: 當發生快取未命中時,對所述列線執行所述存取操作並將與所述列線相對應的快取列添加到所述快取記憶體中。
- 如請求項18所述的操作方法,其中,添加快取列包括: 當所述快取記憶體裝置的快取已滿時,對所述多個快取列中根據快取替換策略而選擇的快取列執行驅逐操作。
- 如請求項19所述的操作方法,進一步包括: 在所述驅逐操作期間,當所選擇的快取列的所述存取選擇位元被設置為高位元時,將所選擇的快取列的快取資料寫回到相應列線。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020220084986A KR20240008073A (ko) | 2022-07-11 | 2022-07-11 | 메모리 시스템 및 그의 동작 방법 |
KR10-2022-0084986 | 2022-07-11 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202403556A true TW202403556A (zh) | 2024-01-16 |
Family
ID=89431338
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW112100346A TW202403556A (zh) | 2022-07-11 | 2023-01-05 | 記憶體系統及其操作方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240012755A1 (zh) |
KR (1) | KR20240008073A (zh) |
TW (1) | TW202403556A (zh) |
-
2022
- 2022-07-11 KR KR1020220084986A patent/KR20240008073A/ko unknown
- 2022-11-29 US US18/059,763 patent/US20240012755A1/en active Pending
-
2023
- 2023-01-05 TW TW112100346A patent/TW202403556A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
US20240012755A1 (en) | 2024-01-11 |
KR20240008073A (ko) | 2024-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11614866B2 (en) | Nonvolatile memory device and operation method thereof | |
KR102518095B1 (ko) | 스토리지 장치 및 시스템 | |
US8443144B2 (en) | Storage device reducing a memory management load and computing system using the storage device | |
US11709777B2 (en) | Memory system | |
MX2008014859A (es) | Dispositivo de memoria hibrida con interfase individual. | |
US10203909B2 (en) | Nonvolatile memory modules comprising volatile memory devices and nonvolatile memory devices | |
US10592419B2 (en) | Memory system | |
EP3696680B1 (en) | Method and apparatus to efficiently track locations of dirty cache lines in a cache in a two level main memory | |
US20210064535A1 (en) | Memory system including heterogeneous memories, computer system including the memory system, and data management method thereof | |
US10599579B2 (en) | Dynamic cache partitioning in a persistent memory module | |
US9990283B2 (en) | Memory system | |
CN111078130A (zh) | 存储器控制器及具有存储器控制器的存储器系统 | |
US10191664B2 (en) | Memory system | |
US9977604B2 (en) | Memory system | |
US20170109277A1 (en) | Memory system | |
US10445003B2 (en) | Memory system for dualizing first memory based on operation mode | |
US20170109066A1 (en) | Memory system | |
JP6228523B2 (ja) | メモリ制御回路および半導体記憶装置 | |
US20170109086A1 (en) | Memory system | |
US20170109067A1 (en) | Memory system | |
US20170109071A1 (en) | Memory system | |
US20170109074A1 (en) | Memory system | |
TW202403556A (zh) | 記憶體系統及其操作方法 | |
US20170153994A1 (en) | Mass storage region with ram-disk access and dma access | |
US20230096111A1 (en) | Memory controller, storage device, and host device |