KR102668086B1 - Computing system including nonvolatile memory module - Google Patents
Computing system including nonvolatile memory module Download PDFInfo
- Publication number
- KR102668086B1 KR102668086B1 KR1020180090387A KR20180090387A KR102668086B1 KR 102668086 B1 KR102668086 B1 KR 102668086B1 KR 1020180090387 A KR1020180090387 A KR 1020180090387A KR 20180090387 A KR20180090387 A KR 20180090387A KR 102668086 B1 KR102668086 B1 KR 102668086B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- predetermined block
- block
- hash function
- volatile memory
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/30—Providing cache or TLB in specific location of a processing system
- G06F2212/305—Providing cache or TLB in specific location of a processing system being part of a memory device, e.g. cache DRAM
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
본 발명은 직전 주기에 적용된 직전 해시 함수와 현재 주기에 적용되는 현재 해시 함수를 선택적으로 이용하여 비휘발성 메모리로의 데이터 플러싱을 제한함으로써 시스템의 성능을 향상시킬 수 있는 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템을 제공한다.
본원의 제1 발명에 따른 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템은, 호스트 장치; 비휘발성 메모리; 상기 호스트 장치와 상기 비휘발성 메모리 간에 배치되고, 상기 호스트 장치의 데이터를 임시 저장하고, 복수의 세트를 포함하고, 상기 복수의 세트 각각은 복수의 블록을 포함하고, 상기 복수의 블록 각각은 기본 태그와 추가 태그가 결합된 확장 태그를 포함하는 DRAM cache; 상기 호스트 장치로부터 복수 비트의 리퀘스트 어드레스를 수신하는 메모리 콘트롤러; 및 상기 메모리 콘트롤러로부터 리퀘스트 어드레스를 수신하고, 복수의 세트용 비트 카운터를 이용하여 상기 리퀘스트 어드레스를 계수함으로써 상기 DRAM cache의 해시 함수를 결정하는 비트 카운터 콘트롤러를 포함한다.The present invention is a computing device including a non-volatile memory module that can improve system performance by limiting data flushing to non-volatile memory by selectively using the previous hash function applied to the previous cycle and the current hash function applied to the current cycle. Provides a system.
A computing system using a non-volatile memory module according to the first invention of the present application includes a host device; non-volatile memory; disposed between the host device and the non-volatile memory, temporarily stores data of the host device, and includes a plurality of sets, each of the plurality of sets including a plurality of blocks, each of the plurality of blocks having a basic tag. DRAM cache containing extended tags combined with additional tags; a memory controller that receives a plural-bit request address from the host device; and a bit counter controller that receives a request address from the memory controller and determines a hash function of the DRAM cache by counting the request address using a plurality of set bit counters.
Description
본 발명은 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템에 관한 것으로, 더욱 상세하게는 DRAM을 cache로 사용하고 비휘발성 메모리를 저장 장치로 이용하는 하이브리드 메모리에서 DRAM cache에 비트 카운터 기법을 적용하여 비휘발성 메모리로의 플러시를 효율적으로 함으로써 시스템의 성능을 향상시킬 수 있는 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템에 관한 것이다.The present invention relates to a computing system including a non-volatile memory module, and more specifically, in a hybrid memory that uses DRAM as a cache and non-volatile memory as a storage device, by applying a bit counter technique to the DRAM cache to non-volatile memory. It relates to a computing system including a non-volatile memory module that can improve system performance by efficiently flushing.
일반적으로 비휘발성 메모리는 non-volatility, high scalability, byte-addressable 등의 장점으로 인하여 DRAM을 대체할 수 있는 메모리로 각광받고 있지만, DRAM에 비해 읽기/쓰기 성능이 현저히 낮고 수명이 짧다는 문제가 있다.In general, non-volatile memory is in the spotlight as a memory that can replace DRAM due to its advantages such as non-volatility, high scalability, and byte-addressability, but it has the problem of significantly lower read/write performance and shorter lifespan compared to DRAM. .
비휘발성 메모리에 DRAM cache를 활용하는 하이브리드 메모리는 비휘발성 메모리로의 읽기/쓰기 요청 횟수를 줄여 메모리의 읽기/쓰기 성능을 향상시키며 비휘발성 메모리의 수명을 향상시킨다.Hybrid memory that utilizes DRAM cache for non-volatile memory improves memory read/write performance by reducing the number of read/write requests to non-volatile memory and improves the lifespan of non-volatile memory.
하지만, DRAM cache 접근이 일부 set에 집중되어 발생하는 경우, 해당 set에 대한 cache miss가 증가하여 비휘발성 메모리로의 데이터 축출(eviction)이 증가하므로 읽기/쓰기 성능과 비휘발성 메모리의 수명을 감소시킨다.However, when DRAM cache access occurs concentrated on some sets, cache misses for that set increase and data eviction to non-volatile memory increases, thereby reducing read/write performance and the lifespan of non-volatile memory. .
또한, 접근이 자주 발생하는 블록을 DRAM cache에서 비휘발성 메모리로 eviction을 하게 되면 비휘발성 메모리로의 쓰기 요청이 자주 발생하여 읽기/쓰기 성능과 비휘발성 메모리의 수명을 감소시킨다.Additionally, when frequently accessed blocks are evictioned from the DRAM cache to non-volatile memory, write requests to the non-volatile memory occur frequently, reducing read/write performance and the lifespan of the non-volatile memory.
이에 DRAM cache에 비트 카운터를 사용하여 index bits를 주기적으로 변경함으로써 DRAM cache 내 set를 고르게 사용할 필요가 있다. 이 경우, index bits를 주기적으로 변경할 때마다 DRAM cache 내 데이터를 비휘발성 메모리로 플러싱 하고, DRAM cache를 비워야 하므로, 시스템의 입장에서는 DRAM cache 내 set를 고르게 사용할 수 있다는 장점이 있는 반면, 주기적인 데이터 플러싱으로 인해 시스템에 부담으로 작용하게 되는 단점이 발생한다. Accordingly, it is necessary to use the set in the DRAM cache evenly by periodically changing the index bits using a bit counter in the DRAM cache. In this case, every time the index bits are periodically changed, the data in the DRAM cache must be flushed to non-volatile memory and the DRAM cache must be emptied, so from the system's perspective, there is an advantage that the sets in the DRAM cache can be used evenly, but periodic data Flushing has the disadvantage of putting a burden on the system.
본 발명은 직전 주기에 적용된 직전 해시 함수와 현재 주기에 적용되는 현재 해시 함수를 선택적으로 이용하여 비휘발성 메모리로의 데이터 플러싱을 제한함으로써 시스템의 성능을 향상시킬 수 있는 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템을 제공한다.The present invention is a computing device including a non-volatile memory module that can improve system performance by limiting data flushing to non-volatile memory by selectively using the previous hash function applied to the previous cycle and the current hash function applied to the current cycle. Provides a system.
본원의 제1 발명에 따른 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템은, 호스트 장치; 비휘발성 메모리; 상기 호스트 장치와 상기 비휘발성 메모리 간에 배치되고, 상기 호스트 장치의 데이터를 임시 저장하고, 복수의 세트를 포함하고, 상기 복수의 세트 각각은 복수의 블록을 포함하고, 상기 복수의 블록 각각은 기본 태그와 추가 태그가 결합된 확장 태그를 포함하는 DRAM cache; 상기 호스트 장치로부터 복수 비트의 리퀘스트 어드레스를 수신하는 메모리 콘트롤러; 및 상기 메모리 콘트롤러로부터 리퀘스트 어드레스를 수신하고, 복수의 세트용 비트 카운터를 이용하여 상기 리퀘스트 어드레스를 계수함으로써 상기 DRAM cache의 해시 함수를 결정하는 비트 카운터 콘트롤러를 포함한다.A computing system using a non-volatile memory module according to the first invention of the present application includes a host device; non-volatile memory; disposed between the host device and the non-volatile memory, temporarily stores data of the host device, and includes a plurality of sets, each of the plurality of sets including a plurality of blocks, each of the plurality of blocks having a basic tag. DRAM cache containing extended tags combined with additional tags; a memory controller that receives a plural-bit request address from the host device; and a bit counter controller that receives a request address from the memory controller and determines a hash function of the DRAM cache by counting the request address using a plurality of set bit counters.
바람직하게는, 상기 비트 카운터 콘트롤러는 상기 DRAM cache 내 상기 복수의 블록 각각의 직전 해시 함수와 현재 해시 함수를 기억한다.Preferably, the bit counter controller stores the previous hash function and the current hash function of each of the plurality of blocks in the DRAM cache.
바람직하게는, 상기 DRAM cache 내 소정 블록의 데이터 상태가 'dirty'이고, 상기 소정 블록에의 데이터 Read 요청 또는 데이터 Write 요청시, 상기 소정 블록의 직전 해시 함수나 현재 해시 함수로 hit 하면, 상기 비트 카운터 콘트롤러는 상기 블록의 데이터 상태를 'dirty'로 유지한다.Preferably, the data state of a certain block in the DRAM cache is 'dirty', and when a data read request or a data write request is made to the certain block, if a hit is made with the previous hash function or the current hash function of the certain block, the bit The counter controller maintains the data state of the block as 'dirty'.
바람직하게는, 상기 DRAM cache 내 소정 블록의 데이터 상태가 'dirty'이고, 상기 소정 블록의 데이터를 축출하고자 할 때, 상기 비트 카운터 콘트롤러는 상기 블록의 데이터를 플러싱 하고, 상기 소정 블록의 데이터 상태를 'dirty'에서 'invalid'로 천이시킨다.Preferably, when the data state of a certain block in the DRAM cache is 'dirty' and the data of the certain block is to be evicted, the bit counter controller flushes the data of the block and changes the data state of the certain block to 'dirty'. Transition from 'dirty' to 'invalid'.
바람직하게는, 상기 DRAM cache 내 소정 블록의 데이터 상태가 'clean'이고, 상기 소정 블록에의 데이터 Read 요청시, 상기 소정 블록의 직전 해시 함수나 현재 해시 함수(Xc)로 hit 하면, 상기 비트 카운터 콘트롤러는 상기 소정 블록의 데이터 상태를 'clean'으로 유지한다.Preferably, the data state of a certain block in the DRAM cache is 'clean', and when a request to read data to the certain block is made, if a hit is made with the previous hash function or the current hash function (Xc) of the certain block, the bit counter The controller maintains the data state of the predetermined block as 'clean'.
바람직하게는, 상기 DRAM cache 내 소정 블록의 데이터 상태가 'clean'이고, 상기 소정 블록에의 데이터 Write 요청시, 상기 소정 블록의 직전 해시 함수나 현재 해시 함수로 hit 하면, 상기 비트 카운터 콘트롤러는 상기 소정 블록의 데이터 상태를 'clean'에서 'dirty'로 천이시킨다.Preferably, when the data state of a predetermined block in the DRAM cache is 'clean' and a request to write data to the predetermined block is made with the previous hash function or the current hash function of the predetermined block, the bit counter controller The data status of a certain block is transitioned from 'clean' to 'dirty'.
바람직하게는, 상기 DRAM cache 내 소정 블록의 데이터 상태가 'clean'이고, 상기 소정 블록 내 데이터가 상기 비휘발성 메모리로 축출되면, 상기 비트 카운터 콘트롤러는 상기 소정 블록의 데이터 상태를 'clean'에서 'invalid'로 천이시킨다.Preferably, when the data state of a certain block in the DRAM cache is 'clean' and the data in the certain block is expelled to the non-volatile memory, the bit counter controller changes the data state of the certain block from 'clean' to 'clean'. Transition to ‘invalid’.
바람직하게는, 상기 DRAM cache 내 소정 블록의 데이터 상태가 'invalid'이고, 상기 소정 블록에의 데이터 Write 요청시, 상기 소정 블록의 직전 해시 함수와 현재 해시 함수가 모두 miss 이면, 상기 비트 카운터 콘트롤러는 상기 현재 해시 함수를 이용하여 상기 DRAM cache 내 소정 블록의 address에 대응하는 상기 비휘발성 메모리의 address에 저장된 데이터를 상기 DRAM cache 내 소정 블록의 address로 읽어들이고, 상기 DRAM cache 내 소정 블록의 데이터 상태를 'invalid'에서 'dirty'로 천이시킨다.Preferably, if the data status of a predetermined block in the DRAM cache is 'invalid', and when requesting to write data to the predetermined block, both the previous hash function and the current hash function of the predetermined block are misses, the bit counter controller Using the current hash function, data stored at the address of the non-volatile memory corresponding to the address of the predetermined block in the DRAM cache is read to the address of the predetermined block in the DRAM cache, and the data state of the predetermined block in the DRAM cache is checked. Transition from 'invalid' to 'dirty'.
바람직하게는, 상기 DRAM cache 내 소정 블록의 데이터 상태가 'invalid'이고, 상기 소정 블록에의 데이터 Read 요청시, 상기 소정 블록의 직전 해시 함수와 현재 해시 함수(Xc)가 모두 miss 이면, 상기 비트 카운터 콘트롤러는 상기 현재 해시 함수를 이용하여 상기 DRAM cache 내 소정 블록의 address에 대응하는 상기 비휘발성 메모리의 address에 저장된 데이터를 상기 DRAM cache 내 소정 블록의 address로 읽어들이고, 상기 DRAM cache 내 소정 블록의 데이터 상태를 'invalid'에서 'clean'으로 천이시킨다.Preferably, if the data state of a predetermined block in the DRAM cache is 'invalid', and when requesting to read data to the predetermined block, both the previous hash function and the current hash function (Xc) of the predetermined block are misses, the bit The counter controller uses the current hash function to read data stored at the address of the non-volatile memory corresponding to the address of the predetermined block in the DRAM cache to the address of the predetermined block in the DRAM cache, and reads the data stored in the address of the predetermined block in the DRAM cache. Transitions the data status from 'invalid' to 'clean'.
바람직하게는, 상기 직전 해시 함수를 이용하여 상기 DRAM cache 내 소정 블록에 접근할 때 hit 하는 경우, 상기 소정 블록의 데이터 상태가 'dirty'이고, 상기 소정 블록에의 데이터 Write 요청이면, 상기 비트 카운터 콘트롤러는 상기 소정 블록의 데이터 상태를 'invalid'로 천이시키고, 상기 소정 블록을 상기 현재 해시 함수로 접근하여 데이터 Write를 수행한다.Preferably, when a hit is made when accessing a predetermined block in the DRAM cache using the previous hash function, the data state of the predetermined block is 'dirty', and if there is a request to write data to the predetermined block, the bit counter The controller transitions the data state of the predetermined block to 'invalid', accesses the predetermined block using the current hash function, and performs data writing.
바람직하게는, 상기 소정 블록의 데이터 상태가 'dirty'이고, 상기 소정 블록에의 데이터 Read 요청이면, 상기 비트 카운터 콘트롤러는 상기 소정 블록의 데이터 상태를 'invalid'로 천이시키고, 상기 소정 블록 대신 상기 현재 해시 함수로 접근하는 블록에 데이터 Read를 수행한다.Preferably, if the data state of the predetermined block is 'dirty' and there is a request to read data to the predetermined block, the bit counter controller transitions the data state of the predetermined block to 'invalid' and replaces the predetermined block with the data state. Data read is performed on the block accessed by the current hash function.
바람직하게는, 상기 소정 블록의 데이터 상태가 'dirty'이고, 상기 소정 블록의 데이터를 상기 소정 블록의 address에 대응하는 상기 비휘발성 메모리의 address로 축출하고자 할 때, 상기 비트 카운터 콘트롤러는 상기 소정 블록의 데이터를 상기 비휘발성 메모리의 address로 플러싱 하고, 상기 소정 블록의 데이터 상태를 'dirty'에서 'invalid'로 천이시킨다.Preferably, when the data state of the predetermined block is 'dirty' and the data of the predetermined block is to be expelled to the address of the non-volatile memory corresponding to the address of the predetermined block, the bit counter controller is configured to block the predetermined block. Data of is flushed to the address of the non-volatile memory, and the data state of the predetermined block is transitioned from 'dirty' to 'invalid'.
바람직하게는, 상기 소정 블록의 데이터 상태가 'clean'이고, 상기 소정 블록에의 데이터 Write 요청이면, 상기 비트 카운터 콘트롤러는 상기 소정 블록의 데이터 상태를 'invalid'로 천이시키고, 상기 소정 블록을 상기 현재 해시 함수로 접근하는 블록에 데이터 Write를 수행한다.Preferably, when the data state of the predetermined block is 'clean' and there is a request to write data to the predetermined block, the bit counter controller transitions the data state of the predetermined block to 'invalid', and transfers the predetermined block to 'invalid'. Write data to the block currently accessed by the hash function.
바람직하게는, 상기 소정 블록의 데이터 상태가 'clean'이고, 상기 소정 블록에의 데이터 Read 요청이면, 상기 비트 카운터 콘트롤러는 상기 소정 블록의 데이터 상태를 'invalid'로 천이시키고, 상기 소정 블록 대신 상기 현재 해시 함수로 접근하는 블록에 데이터 Read를 수행한다.Preferably, if the data state of the predetermined block is 'clean' and a data read request is made to the predetermined block, the bit counter controller transitions the data state of the predetermined block to 'invalid' and replaces the predetermined block with the data state. Data read is performed on the block accessed by the current hash function.
바람직하게는, 상기 소정 블록의 데이터 상태가 'clean'이고, 상기 소정 블록 내 데이터가 상기 비휘발성 메모리로 축출되면, 상기 비트 카운터 콘트롤러는 상기 소정 블록의 데이터 상태를 'clean'에서 'invalid'로 천이시킨다.Preferably, when the data state of the predetermined block is 'clean' and the data in the predetermined block is expelled to the non-volatile memory, the bit counter controller changes the data state of the predetermined block from 'clean' to 'invalid'. Transition.
바람직하게는, 상기 소정 DRAM cache 내 소정 블록이 invalid 상태에서, 상기 소정 블록에의 데이터 Write 요청시, 상기 소정 블록에 상기 직전 해시 함수와 현재 해시 함수로 접근하여 모두 miss 이면, 상기 비트 카운터 콘트롤러는 상기 현재 해시 함수를 이용하여 상기 DRAM cache 내 소정 블록의 address에 대응하는 상기 비휘발성 메모리의 address에 저장된 데이터를 상기 DRAM cache 내 소정 블록의 address로 읽어들이고, 상기 DRAM cache 내 소정 블록을 'invalid' 상태에서 'dirty' 상태로 천이시킨다.Preferably, when a predetermined block in the predetermined DRAM cache is in an invalid state and a request is made to write data to the predetermined block, if the predetermined block is accessed using the previous hash function and the current hash function and both miss, the bit counter controller Data stored at the address of the non-volatile memory corresponding to the address of the predetermined block in the DRAM cache is read to the address of the predetermined block in the DRAM cache using the current hash function, and the predetermined block in the DRAM cache is 'invalid' Transition from state to 'dirty' state.
바람직하게는, 상기 DRAM cache 내 소정 블록이 invalid 상태에서, 상기 소정 블록에의 데이터 Read 요청시, 상기 소정 블록에 상기 직전 해시 함수와 현재 해시 함수로 접근하여 모두 miss 이면, 상기 비트 카운터 콘트롤러는 상기 현재 해시 함수를 이용하여 상기 DRAM cache 내 소정 블록의 address에 대응하는 상기 비휘발성 메모리의 address에 저장된 데이터를 상기 DRAM cache 내 소정 블록의 address로 읽어들이고, 상기 DRAM cache 내 소정 블록을 'invalid' 상태에서 'clean' 상태로 천이시킨다.Preferably, when a predetermined block in the DRAM cache is in an invalid state, when a request is made to read data to the predetermined block, if the predetermined block is accessed using the previous hash function and the current hash function and both miss, the bit counter controller Data stored at the address of the non-volatile memory corresponding to the address of the predetermined block in the DRAM cache is read to the address of the predetermined block in the DRAM cache using the current hash function, and the predetermined block in the DRAM cache is placed in an 'invalid' state. transitions to the 'clean' state.
바람직하게는, 상기 DRAM cache 내 소정 블록의 데이터 상태가 'dirty' 이고, 상기 소정 블록에의 데이터 Read 요청 또는 데이터 Write 요청시, 상기 현재 해시 함수로 hit 이면, 데이터 상태를 현 상태로 유지한다.Preferably, if the data state of a certain block in the DRAM cache is 'dirty' and when a data read request or data write request to the certain block is hit with the current hash function, the data state is maintained in the current state.
바람직하게는, 상기 DRAM cache 내 소정 블록의 데이터 상태가 'clean' 이고, 상기 소정 블록에의 데이터 Write 요청시, 상기 현재 해시 함수로 hit 이면, 상기 데이터 상태를 'clean' 에서 'dirty'로 천이시킨다.Preferably, the data state of a certain block in the DRAM cache is 'clean', and when a request to write data to the certain block is made, if the current hash function is a hit, the data state is transitioned from 'clean' to 'dirty'. I order it.
바람직하게는, 상기 DRAM cache 내 소정 블록의 데이터 상태가 'clean' 이고, 상기 소정 블록에의 데이터 Read 요청시, 상기 현재 해시 함수로 hit 이면, 상기 데이터 상태를 현 상태로 유지한다.Preferably, if the data state of a certain block in the DRAM cache is 'clean' and a hit is made with the current hash function when a request to read data to the certain block is made, the data state is maintained in its current state.
또한, 본원의 제2 발명에 따른 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템은, 호스트 장치; 비휘발성 메모리; 상기 호스트 장치와 상기 비휘발성 메모리 간에 배치되고, 상기 호스트 장치의 데이터를 임시 저장하고, 복수의 세트를 포함하고, 상기 복수의 세트 각각은 복수의 블록을 포함하고, 상기 복수의 블록 각각은 기본 태그와 추가 태그가 결합된 확장 태그를 포함하는 DRAM cache; 및 상기 호스트 장치로부터 복수 비트의 리퀘스트 어드레스를 수신하고, 복수의 세트용 비트 카운터를 이용하여 상기 리퀘스트 어드레스를 계수함으로써 상기 DRAM cache의 해시 함수를 결정하는 메모리 콘트롤러를 포함한다.Additionally, a computing system using a non-volatile memory module according to the second invention of the present application includes a host device; non-volatile memory; disposed between the host device and the non-volatile memory, temporarily stores data of the host device, and includes a plurality of sets, each of the plurality of sets including a plurality of blocks, each of the plurality of blocks having a basic tag. DRAM cache containing extended tags combined with additional tags; and a memory controller that receives a plurality of bits of a request address from the host device and determines a hash function of the DRAM cache by counting the request addresses using a plurality of set bit counters.
본 발명에 따르면, 직전 주기에 적용된 직전 해시 함수와 현재 주기에 적용되는 현재 해시 함수를 선택적으로 이용하여 비휘발성 메모리로의 데이터 플러싱을 제한함으로써 시스템의 성능을 향상시킬 수 있다.According to the present invention, system performance can be improved by limiting data flushing to non-volatile memory by selectively using the previous hash function applied to the previous cycle and the current hash function applied to the current cycle.
도 1은 본 발명의 일실시예에 따른 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템의 전체 블록도,
도 2는 본 발명의 다른 실시예에 따른 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템의 전체 블록도,
도 3은 본 발명의 일실시예에 따른 비휘발성 메모리 모듈 내 비트 카운트를 설명하는 도면,
도 4는 본 발명의 일실시예에 따른 cache DRAM 내 address bits에 대한 access request 처리시 비트 카운터 값 변화를 설명하기 위한 도면,
도 5는 본 발명의 일실시예에 따라 cache DRAM에 BCS 기법을 적용하기 전과 후의 request miss 분포를 나타내는 도면,
도 6은 본 발명의 일실시예에 따라 BCS에서 해시 함수의 재설정을 설명하는 도면,
도 7은 본 발명의 일실시예에 따라 해시 함수의 재설정시 일부 캐시 블록만 플러싱 하는 기법의 예시도,
도 8은 본 발명의 일실시예에 따른 캐시 블록의 상태 천이 프로토콜 예시도, 및
도 9는 본 발명의 다른 실시예에 따른 캐시 블록의 상태 천이 프로토콜 예시도이다.1 is an overall block diagram of a computing system including a non-volatile memory module according to an embodiment of the present invention;
2 is an overall block diagram of a computing system including a non-volatile memory module according to another embodiment of the present invention;
3 is a diagram illustrating a bit count in a non-volatile memory module according to an embodiment of the present invention;
FIG. 4 is a diagram illustrating changes in bit counter values when processing an access request for address bits in a cache DRAM according to an embodiment of the present invention;
Figure 5 is a diagram showing request miss distribution before and after applying the BCS technique to cache DRAM according to an embodiment of the present invention;
Figure 6 is a diagram illustrating resetting the hash function in BCS according to an embodiment of the present invention;
Figure 7 is an example of a technique for flushing only some cache blocks when resetting the hash function according to an embodiment of the present invention.
Figure 8 is an exemplary state transition protocol of a cache block according to an embodiment of the present invention, and
Figure 9 is an example diagram of a state transition protocol of a cache block according to another embodiment of the present invention.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예를 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시 예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예는 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. The advantages and features of the present invention and methods for achieving them will become clear by referring to the embodiments described in detail below along with the accompanying drawings. However, the present invention is not limited to the embodiments disclosed below and may be implemented in various different forms. The present embodiments are only provided to ensure that the disclosure of the present invention is complete and to provide common knowledge in the technical field to which the present invention pertains. It is provided to fully inform those who have the scope of the invention, and the present invention is only defined by the scope of the claims.
본 명세서에서 사용된 용어는 실시 예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 ‘포함한다(comprises)’ 및/또는 ‘포함하는(comprising)’은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.The terms used in this specification are for describing embodiments and are not intended to limit the invention. As used herein, singular forms also include plural forms, unless specifically stated otherwise in the context. As used in the specification, 'comprises' and/or 'comprising' refers to the presence of one or more other components, steps, operations and/or elements. or does not rule out addition.
하나의 소자(elements)가 다른 소자와 ‘접속된(connected to)’ 또는 ‘커플링된(coupled to)’ 이라고 지칭되는 것은, 다른 소자와 직접 연결 또는 커플링 된 경우 또는 중간에 다른 소자를 개재한 경우를 모두 포함한다. 반면, 하나의 소자가 다른 소자와 ‘직접 접속된(directly connected to)’ 또는 ‘직접 커플링된(directly coupled to)’으로 지칭되는 것은 중간에 다른 소자를 개재하지 않은 것을 나타낸다. ‘및/또는’은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.One element is said to be ‘connected to’ or ‘coupled to’ another element, when it is directly connected or coupled to another element or with another element intervening. Includes all cases. On the other hand, when one element is referred to as ‘directly connected to’ or ‘directly coupled to’ another element, it indicates that there is no intervening other element. ‘And/or’ includes each and every combination of one or more of the mentioned items.
명세서 전문에 걸쳐 동일한 참조 부호는 동일한 구성 요소를 지칭한다. 따라서, 동일한 참조 부호 또는 유사한 참조 부호들은 해당 도면에서 언급 또는 설명되지 않았더라도, 다른 도면을 참조하여 설명될 수 있다. 또한, 참조 부호가 표시되지 않았더라도, 다른 도면들을 참조하여 설명될 수 있다. The same reference numerals refer to the same elements throughout the specification. Accordingly, the same or similar reference signs may be described with reference to other drawings even if they are not mentioned or described in the corresponding drawings. Additionally, even if reference signs are not indicated, description may be made with reference to other drawings.
본 발명에서 캐시 축출(cache eviction)이라 함은 DRAM cache의 특정 set에서 더 이상 저장할 공간이 없을 경우, 기존에 저장된 block의 데이터를 비휘발성 메모리로 축출하는 행위를 의미한다.In the present invention, cache eviction refers to the act of evicting data from previously stored blocks to non-volatile memory when there is no more storage space in a specific set of DRAM cache.
또한, 본 발명에서 플러싱(flush, flushing)이라 함은 DRAM cache의 데이터를 비휘발성 메모리에 덮어 쓰게 하고, DRAM cache를 초기화하는 행위를 의미한다.Additionally, in the present invention, flushing refers to the act of overwriting data in the DRAM cache to non-volatile memory and initializing the DRAM cache.
또한, 본 발명에 따르면, DRAM cache는 식별 가능한 복수의 세트를 포함하고, 개별 세트는 식별 가능한 복수의 블록을 포함하며, 개별 블록은 서로 식별 가능하도록 각각의 tag를 포함한다.Additionally, according to the present invention, the DRAM cache includes a plurality of identifiable sets, the individual sets include a plurality of identifiable blocks, and the individual blocks include respective tags so that they can be identified from each other.
도 1은 본 발명의 일실시예에 따른 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템의 전체 블록도이다.1 is an overall block diagram of a computing system including a non-volatile memory module according to an embodiment of the present invention.
본 발명의 일실시예에 따른 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템은 호스트 장치(110), 메모리 콘트롤러(120), 비트 카운터 콘트롤러(130), DRAM cache(140), 및 비휘발성 메모리(150)를 포함한다.A computing system including a non-volatile memory module according to an embodiment of the present invention includes a host device 110, a memory controller 120, a bit counter controller 130, a DRAM cache 140, and a non-volatile memory 150. Includes.
호스트 장치(110)는 호스트, 서버, 저장 영역 네트워크(SAN: storage area network)의 저장 콘트롤러, 워크스테이션, 개인용 컴퓨터, 랩터 컴퓨터, 핸드헬드 컴퓨터, 수퍼컴퓨터, 컴퓨터 클러스터, 네트워크 스위치, 라우터, 또는 응용기기, 데이터베이스 또는 저장 응용기기, 데이터 획득 또는 데이터 캡처 시스템, 진단 시스템, 테스트 시스템, 로봇, 포터블 전자 기기, 무선 기기 등일 수 있다.Host device 110 may be a host, server, storage controller of a storage area network (SAN), workstation, personal computer, raptor computer, handheld computer, supercomputer, computer cluster, network switch, router, or application. It may be a device, database or storage application, data acquisition or data capture system, diagnostic system, test system, robot, portable electronic device, wireless device, etc.
본 발명의 일실시예에 따르면, 호스트 장치(110)는 메모리 콘트롤러(120)와 통신할 수 있다. 메모리 콘트롤러(120)는 호스트 장치(110)로부터 read/write request와 request address를 수신한다.According to one embodiment of the present invention, the host device 110 may communicate with the memory controller 120. The memory controller 120 receives a read/write request and request address from the host device 110.
본 발명의 일실시예에 따르면, 메모리 콘트롤러(120)는 비트 카운터 콘트롤러(130)와 통신할 수 있다. 비트 카운터 콘트롤러(130)는 메모리 콘트롤러(120)로부터 read/write request와 request address를 수신하고, 메모리 콘트롤러(120)로부터 수신되는 request address를 복수의 세트용 비트 카운터(131, BCS: Bit Counter for Set)와 복수의 태그용 비트 카운터(133, BCT: Bit Counter for Tag)를 이용하여 변경된 request address를 생성하여 출력하고, 데이터를 DRAM cache에 캐싱하고, 캐싱된 데이터를 DRAM cache(140)에서 비휘발성 메모리(150)로 축출(evict) 할 수 있다. 여기서, DRAM cache(140)에서 비휘발성 메모리(150)로 축출한다는 것은 DRAM cache(140)의 소정 address에 저장된 데이터를 상기 DRAM cache(140)의 소정 address와 동일한 address를 가지는 비휘발성 메모리(150) 내 대응 address에 저장하고, 상기 DRAM cache(140)의 소정 address에 저장된 데이터를 삭제하는 것을 의미한다. 한편, 일반적으로 DRAM cache의 저장 능력은 비휘발성 메모리의 저장 능력에 비해 현저히 작고, 비휘발성 메모리의 일부 영역에는 DRAM cache 내 다수의 address와 동일한 address들이 존재한다. According to one embodiment of the present invention, the memory controller 120 may communicate with the bit counter controller 130. The bit counter controller 130 receives a read/write request and a request address from the memory controller 120, and converts the request address received from the memory controller 120 into a plurality of bit counters (131, BCS: Bit Counter for Set). ) and a plurality of tag bit counters (133, BCT: Bit Counter for Tag) to generate and output the changed request address, cache the data in the DRAM cache, and convert the cached data into a non-volatile form in the DRAM cache (140). It can be evict to memory 150. Here, eviction from the DRAM cache 140 to the non-volatile memory 150 means that data stored at a predetermined address of the DRAM cache 140 is transferred to the non-volatile memory 150 having the same address as the predetermined address of the DRAM cache 140. This means storing data at a corresponding address and deleting data stored at a predetermined address in the DRAM cache 140. Meanwhile, in general, the storage capacity of a DRAM cache is significantly smaller than that of non-volatile memory, and addresses that are identical to multiple addresses in the DRAM cache exist in some areas of the non-volatile memory.
본 발명에 따르면, 비휘발성 메모리(150, NVM: non-volatile memory)는 예컨대, ReRAM(resistive RAM)인 경우, 가변 저항부는 저항체(Resistive Material, PCMO막 등)으로 형성될 수 있고, PCRAM(phase change RAM)인 경우 칼코게나이드막으로 형성될 수 있으며, MRAM인 경우 자화물질의 자성층으로 형성될 수 있고, STTRAM(spin-transfer torque RAM)인 경우, 자화물질의 자화 반전 소자층으로 형성될 수 있다. According to the present invention, if the non-volatile memory (150, NVM) is, for example, ReRAM (resistive RAM), the variable resistor may be formed of a resistive material (Resistive Material, PCMO film, etc.), and PCRAM (phase change RAM), it can be formed as a chalcogenide film, in the case of MRAM, it can be formed as a magnetic layer of a magnetized material, and in the case of STTRAM (spin-transfer torque RAM), it can be formed as a magnetization reversal element layer of a magnetized material. there is.
본 발명의 일실시예에 따르면, 비트 카운터 콘트롤러(130), DRAM cache(140) 및 비휘발성 메모리(150)가 하나의 모듈 형태로 구현될 수 있다.According to one embodiment of the present invention, the bit counter controller 130, DRAM cache 140, and non-volatile memory 150 may be implemented in the form of a single module.
도 2는 본 발명의 다른 실시예에 따른 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템의 전체 블록도이다.Figure 2 is an overall block diagram of a computing system including a non-volatile memory module according to another embodiment of the present invention.
본 발명의 다른 실시예에 따르면, 메모리 콘트롤러(220) 내에 복수의 세트용 비트 카운터(221)와 복수의 태그용 비트 카운터(223)가 구현될 수 있다. According to another embodiment of the present invention, a plurality of set bit counters 221 and a plurality of tag bit counters 223 may be implemented in the memory controller 220.
본 발명의 일실시예에 따르면, 호스트 장치(110)는 메모리 콘트롤러(220)와 통신할 수 있다. 메모리 콘트롤러(120)는 호스트 장치(110)로부터 read/write request와 request address를 수신하고, 호스트 장치(110)로부터 수신되는 request address를 복수의 세트용 비트 카운터(221)와 복수의 태그용 비트 카운터(223)를 이용하여 변경된 request address를 생성하여 출력하고, 데이터를 DRAM cache(140)에 캐싱하고, 캐시 처리된 데이터를 DRAM cache(140)에서 비휘발성 메모리(150)로 축출할 수 있다. According to one embodiment of the present invention, the host device 110 may communicate with the memory controller 220. The memory controller 120 receives a read/write request and a request address from the host device 110, and uses the request address received from the host device 110 as a bit counter 221 for a plurality of sets and a bit counter for a plurality of tags. Using 223, the changed request address can be generated and output, data can be cached in the DRAM cache 140, and the cached data can be expelled from the DRAM cache 140 to the non-volatile memory 150.
본 발명의 일실시예에 따르면, DRAM cache(140) 및 비휘발성 메모리(150)가 하나의 모듈 형태로 구현될 수 있다.According to one embodiment of the present invention, the DRAM cache 140 and the non-volatile memory 150 may be implemented in the form of a single module.
도 3은 본 발명의 일실시예에 따른 비휘발성 메모리 모듈 내 비트 카운터 동작을 설명하는 도면으로서, 도 1에 기반하여 설명하기로 한다.FIG. 3 is a diagram illustrating a bit counter operation in a non-volatile memory module according to an embodiment of the present invention, and will be described based on FIG. 1.
도 3에 도시된 바와 같이, DRAM cache(140)는 4개의 sets(set 00, set 01, set 10, set 11)를 포함하고, 개별 set는 복수의 블록(block0 ~ 3)를 포함하고, 개별 블록은 각각의 태그(Tag 0, Tag 1, ...)를 포함하고, 개별 태그마다 소정 크기의 데이터(Data0, Data1, ...)를 저장할 수 있다. 도 3에서는 제3 블록 및 제4 블록(block 2, block3)을 생략하였다.As shown in FIG. 3, the DRAM cache 140 includes four sets (set 00, set 01, set 10, set 11), each set includes a plurality of blocks (block0 to 3), and each set A block includes each tag (Tag 0, Tag 1, ...), and can store data (Data0, Data1, ...) of a certain size for each tag. In Figure 3, the third and fourth blocks (block 2 and block 3) are omitted.
비트 카운터 콘트롤러(130)가 메모리 콘트롤러(120)로부터 read/write request와 request address(b5, b4, b3, b2, b1, b0)를 수신하면, 비트 카운터 콘트롤러(130) 내 6개의 세트용 비트 카운터(131: BCS0, BCS1, BCS2, BCS3, BCS4, BCS5)는 각각 순차적으로 수신되는 request address를 소정 횟수 동안 계수한다. 여기서 6 bits의 request address 중 임의의 2 bits를 index로 사용하고, 나머지 4 bits를 B-tag로 사용할 수 있다. When the bit counter controller 130 receives a read/write request and request address (b5, b4, b3, b2, b1, b0) from the memory controller 120, 6 set bit counters in the bit counter controller 130 (131: BCS0, BCS1, BCS2, BCS3, BCS4, BCS5) counts request addresses received sequentially for a predetermined number of times. Here, 2 random bits of the 6-bit request address can be used as an index, and the remaining 4 bits can be used as a B-tag.
한편, 본 발명에 따르면, DRAM cache 내 모든 블록은 B-tag(Basic tag)에 A-tag(Added tag)가 결합된 E-tag(Extended tag)를 구비한다. 여기서, A-tag는 현재 구간에 생성된 해시 함수로 해당 블록에 접근하는지 혹은 직전 구간에 생성된 해시 함수로 해당 블록에 접근하는지를 표시한다. 즉, 본 발명에 따르면, A-tag로는 구간마다 "0"과 "1"을 교번적으로 사용한다.Meanwhile, according to the present invention, all blocks in the DRAM cache are equipped with an E-tag (Extended tag) in which a B-tag (Basic tag) and an A-tag (Added tag) are combined. Here, A-tag indicates whether the block is accessed using a hash function created in the current section or whether the block is accessed using a hash function created in the previous section. That is, according to the present invention, “0” and “1” are used alternately in each section as the A-tag.
예컨대, 수신되는 request address가 6 bits이므로, 6개의 세트용 비트 카운터(131)가 필요하고, 세트용 비트 카운터가 210 횟수 동안 계수한다면, 개별 세트용 비트 카운터는 10개의 비트 카운터로 구현될 수 있다. 여기서 10개의 비트 카운터 내 중 1개는 부호 표시용이고, 나머지 9개는 비트 카운트용이다.For example, since the received request address is 6 bits, 6 set bit counters 131 are needed, and if the set bit counter counts 2 10 times, the individual set bit counters can be implemented with 10 bit counters. there is. Here, one of the 10 bit counters is for sign indication, and the remaining 9 are for bit counting.
그리고, 비트 카운터 콘트롤러(130)는 개별 세트용 비트 카운터(131)가 계수한 6비트에 대하여 각각의 절대치를 생성하고, 생성된 절대치를 2개씩 묶어 15개의 조합을 생성하여 합산한다. 즉, 6개 중 2개를 선택하는 조합은 6C2=15에 의해 만들어질 수 있다. 예로써, (b5, b4), (b5, b3), (b5, b2), (b5, b1), (b5, b0), (b4, b3), (b4, b2), (b4, b1), (b4, b0), (b3, b2), (b3, b1), (b3, b0), (b2, b1), (b2, b0), (b1, b0) 등일 수 있다.Then, the bit counter controller 130 generates an absolute value for each of the 6 bits counted by the individual set bit counter 131, and groups the generated absolute values into two to create 15 combinations and add them. In other words, a combination of selecting 2 out of 6 can be created by 6C2=15. For example, (b5, b4), (b5, b3), (b5, b2), (b5, b1), (b5, b0), (b4, b3), (b4, b2), (b4, b1) , (b4, b0), (b3, b2), (b3, b1), (b3, b0), (b2, b1), (b2, b0), (b1, b0), etc.
계속해서, 비트 카운터 콘트롤러(130)는 15개의 조합에 대하여 합산한 절대치 합산값의 크기를 비교하고, 상대적으로 가장 작은 절대치 합산값을 가진 조합을 DRAM cache의 index용 해시 함수로 선택할 수 있다. 여기서, 해시 함수(hash function)라 함은 비트 카운터 콘트롤러(130)가 호스트 장치로부터 수신되는 read/write request와 request address를 이용하여 index bits를 찾아내기 위한 인자(factor)를 의미한다. 한편, 절대치를 생성하는 이유는 도 4에서 설명하기로 한다. Subsequently, the bit counter controller 130 compares the size of the absolute sum of the 15 combinations and selects the combination with the relatively smallest absolute sum as the hash function for the index of the DRAM cache. Here, the hash function refers to a factor for the bit counter controller 130 to find index bits using the read/write request and request address received from the host device. Meanwhile, the reason for generating absolute values will be explained in FIG. 4.
이와 같이 소정 횟수 동안 request address를 계수하고, 계수한 절대치 합산값이 가장 작은 조합을 해시 함수로 선택하게 되면, 소정 횟수 동안 해당 set로의 접근 횟수가 나머지 set로의 접근 횟수에 비해 상대적으로 가장 빈번하였음을 의미한다. 이에 따라 DRAM cache 내 set를 고르게 사용할 수 있는 효과가 있다. 이에 대해서는 도 5에서 예를 들어 설명하기로 한다.In this way, if the request address is counted for a predetermined number of times and the combination with the smallest absolute sum of the counted values is selected as the hash function, it means that the number of accesses to the set during the predetermined number of times was relatively most frequent compared to the number of accesses to the remaining sets. it means. This has the effect of allowing the sets within the DRAM cache to be used evenly. This will be explained with an example in FIG. 5.
비트 카운터 콘트롤러(130) 내 태그용 비트 카운터(133)는, request miss가 발생할 때마다 해당 set 내의 개별 tag bits를 계수하고, tag bits의 계수한 절대치 합산값이 가장 작은 블록을 선택하여 비휘발성 메모리(150) 내 DRAM cache의 address와 동일한 address로 축출한다. 본 발명에 따르면, 태그용 비트 카운터(133)는 세트별로 하나씩 구현될 수 있고, 4개의 sets(set 00, set 01, set 10, set 11)를 포함하므로, 비트 카운터 콘트롤러(130)는 4개의 태그용 비트 카운터를 포함하여 구현될 수 있다. The tag bit counter 133 in the bit counter controller 130 counts individual tag bits in the corresponding set whenever a request miss occurs, and selects the block with the smallest sum of the counted absolute values of the tag bits to create a non-volatile memory. (150) It is evicted to the same address as the address of my DRAM cache. According to the present invention, the tag bit counter 133 can be implemented one for each set, and includes four sets (set 00, set 01, set 10, set 11), so the bit counter controller 130 has four sets. It can be implemented including a bit counter for tags.
비트 카운터(131, 133)의 동작은 도 4 및 도 5에서 상세하게 설명하기로 한다.The operation of the bit counters 131 and 133 will be described in detail in FIGS. 4 and 5.
도 4는 본 발명의 일실시예에 따른 DRAM cache 내 address에 대한 access request 처리시 세트용 비트 카운터 값 변화를 설명하기 위한 도면이다.FIG. 4 is a diagram illustrating changes in the set bit counter value when processing an access request for an address in a DRAM cache according to an embodiment of the present invention.
본 발명에 따르면, 각각의 request address를 계수하는 방법은 request address가 "1"이면 (+)1로 계수하고, request address가 "0"이면 (-)1로 계수한다. According to the present invention, in the method of counting each request address, if the request address is "1", it is counted as (+)1, and if the request address is "0", it is counted as (-)1.
초기에는 제6 내지 제1 세트용 비트 카운터(BCS5 ~ BCS0)에 "0 0 0 0 0 0" 값이 저장되어 있다가, 제1 address(Addr0) "1 1 0 1 1 0"이 입력되면, 위와 같은 본 발명에 따른 request address 계수 방법에 따라 제6 내지 제1 세트용 비트 카운터(BCS5 ~ BCS0)는 "1 1 -1 1 1 -1"로 계수한다. Initially, the value “0 0 0 0 0 0” is stored in the sixth to first set bit counters (BCS5 to BCS0), and when the first address (Addr0) “1 1 0 1 1 0” is input, According to the request address counting method according to the present invention as described above, the sixth to first set bit counters (BCS5 to BCS0) count as “1 1 -1 1 1 -1.”
이후 제2 address(Addr1) "1 0 0 1 0 1"이 입력되면, 제6 내지 제1 세트용 비트 카운터(BCS5 ~ BCS0)는 "2 0 -2 2 0 0" 로 계수한다.Afterwards, when the second address (Addr1) “1 0 0 1 0 1” is input, the sixth to first set bit counters (BCS5 to BCS0) count as “2 0 -2 2 0 0”.
이러한 방식으로, 제m address(Addr(m-1)) "1 1 0 0 0 1"이 입력되면, 제6 내지 제1 세트용 비트 카운터(BCS5 ~ BCS0)는 "-5 5 9 6 0 4"로 계수한다.In this way, when the mth address (Addr(m-1)) "1 1 0 0 0 1" is input, the bit counters (BCS5 to BCS0) for the 6th to 1st sets are "-5 5 9 6 0 4 "Counted as
그런데 6개의 세트용 비트 카운터에 계수된 15개의 비트 조합에 대하여 절대치를 취하고, 이들을 가산한다. 이들 가운데 비트 조합(b1, b0)에 대응하는 제1 및 제2 세트용 비트 카운터(BCS0, BCS1) 각각에 계수된 값 "4" "0"에 절대치를 취하고, 이들을 가산한 값(4+0=4)이 가장 작다. 따라서 비트 조합(b1, b0)을 DRAM cache의 해시 함수로 선택한다. However, the absolute values of the 15 bit combinations counted in the 6 set bit counters are taken, and these are added. Among these, the absolute value is taken for the values "4" and "0" counted in each of the first and second set bit counters (BCS0, BCS1) corresponding to the bit combination (b1, b0), and the value obtained by adding these (4+0) =4) is the smallest. Therefore, the bit combination (b1, b0) is selected as the hash function of the DRAM cache.
그리고 6 bits의 request address 중 나머지 4 bits(b5 ~ b2)를 tag로 사용한다.And the remaining 4 bits (b5 ~ b2) of the 6-bit request address are used as tags.
이와 같이 비트 카운터 콘트롤러(130)는 소정 횟수 동안 입력되는 request address를 계수하여 절대치 합산값이 가장 작은 비트 조합을 해시 함수로 선택함으로써 DRAM cache 내 set를 고르게 사용할 수 있는 효과가 있다.In this way, the bit counter controller 130 counts request addresses input for a predetermined number of times and selects the bit combination with the smallest absolute value as a hash function, which has the effect of enabling even use of the set in the DRAM cache.
도 5a는 DRAM cache에 BCS 기법을 적용하기 전의 request miss 분포를 나타내는 도면이고, 도 5b는 본 발명의 일실시예에 따라 DRAM cache에 BCS 기법을 적용한 후의 cache miss 분포를 나타내는 도면이다.FIG. 5A is a diagram showing the request miss distribution before applying the BCS technique to the DRAM cache, and FIG. 5B is a diagram showing the cache miss distribution after applying the BCS technique to the DRAM cache according to an embodiment of the present invention.
예컨대, 도 5a에 도시된 DRAM cache에 BCS 기법을 적용하기 전의 request miss 분포를 보면, index bits를, 하위 비트(b1, b0)로 고정하여 access request를 처리하는 경우, 특정 set로의 접근이 집중되는 것을 볼 수 있다. 즉, 전체 6회의 접근 중 5회를 index bits "0 0"에 접근하게 된다. 이로 인해 4회의 request miss가 발생하여 비휘발성 메모리에 4회의 write requests가 발생한다.For example, looking at the request miss distribution before applying the BCS technique to the DRAM cache shown in Figure 5a, when an access request is processed by fixing the index bits to the lower bits (b1, b0), access to a specific set is concentrated. You can see that. In other words, index bits “0 0” are accessed 5 times out of a total of 6 times. This causes 4 request misses, resulting in 4 write requests to non-volatile memory.
하지만, 도 5b에 도시된 바와 같이, 본 발명의 일실시예에 따라 DRAM cache에 BCS 기법을 적용하면, access requests로 동일한 request address가 입력되는 경우에도, set별 접근 집중도를 완화시킬 수 있다.However, as shown in Figure 5b, if the BCS technique is applied to the DRAM cache according to an embodiment of the present invention, the concentration of access for each set can be alleviated even when the same request address is input for access requests.
예컨대, 비트 조합(b5, b4)에 대응하는 제5 및 제6 세트용 비트 카운터(BCS4, BCS5)에 각각 계수된 값 "0" "0"에 절대치를 취하고, 이들을 가산하면 절대치 합산값은 0이다. 비트 조합(b3, b2)에 대응하는 제3 및 제4 세트용 비트 카운터(BCS2, BCS3)에 각각 계수된 값 "2" "2"에 절대치를 취하고, 이들을 가산하면 절대치 합산값은 4이다. 비트 조합(b1, b0)에 대응하는 제1 및 제2 세트용 비트 카운터(BCS0, BCS1)에 각각 계수된 값 "0" "1"에 절대치를 취하고, 이들을 가산하면 절대치 합산값은 1이다. For example, if the absolute values are taken for the values "0" and "0" counted in the fifth and sixth set bit counters (BCS4, BCS5) corresponding to the bit combinations (b5, b4), and these are added, the absolute value sum is 0. am. If the absolute values of "2" and "2" counted in the third and fourth set bit counters (BCS2, BCS3) corresponding to the bit combinations (b3, b2) are taken, and these are added, the total absolute value is 4. If the absolute values are taken from the values "0" and "1" counted in the first and second set bit counters (BCS0, BCS1) corresponding to the bit combinations (b1, b0), respectively, and these are added, the total absolute value is 1.
여기서, 15개의 조합에 대하여 모두 절대치를 취하고 가산하여 절대치가 가장 작은 조합을 선별해야 하나, 설명의 편의를 위하여 3개의 조합에 대해서만 설명하였음을 이해하여야 한다.Here, the absolute values of all 15 combinations must be taken and added to select the combination with the smallest absolute value, but it should be understood that only 3 combinations have been described for convenience of explanation.
따라서 비트 조합(b5, b4)을 해시 함수로 선택한다. 이 경우, access requests가 set_index bits "0 0"로 1회, set_index bits "0 1"로 2회, set_index bits "1 0"으로 2회, set_index bits "1 1"로 1회가 각각 발생하여 세트별 접근이 분산됨을 알 수 있다. 이로 인해 2회의 request miss가 발생하므로 비휘발성 메모리로의 write request도 2회로 줄어드는 것을 알 수 있다. Therefore, the bit combination (b5, b4) is selected as the hash function. In this case, access requests occur once with set_index bits “0 0”, twice with set_index bits “0 1”, twice with set_index bits “1 0”, and once with set_index bits “1 1”. It can be seen that star access is distributed. Because of this, two request misses occur, so it can be seen that the write request to non-volatile memory is also reduced to two.
도 6은 본 발명의 일실시예에 따라 BCS에서 해시 함수의 재설정을 설명하는 도면이다. Figure 6 is a diagram illustrating resetting the hash function in BCS according to an embodiment of the present invention.
본 발명에 따르면, 비트 카운터 콘트롤러(130)는 6개의 세트용 비트 카운터(131)를 이용하여 해시 함수를 소정 횟수마다 재설정하고, 특정 address를 새로운 해시 함수로 결정하는 순간 DRAM cache(140) 내 데이터들을 비휘발성 메모리(150)로 플러싱(flush) 하여 DRAM cache(140)를 삭제한다. According to the present invention, the bit counter controller 130 uses six set bit counters 131 to reset the hash function every predetermined number of times, and at the moment of determining a specific address as a new hash function, the data in the DRAM cache 140 The DRAM cache 140 is deleted by flushing them to the non-volatile memory 150.
즉, 비트 카운터 콘트롤러(130)는 이전 구간 Previous Interval(i-1) 동안 세트용 비트 카운터에 카운트 값이 누적되면 현재 구간 Current Interval(i)에서 사용할 해시 함수를 재설정하고, DRAM cache(140) 내 데이터를 비휘발성 메모리(150)로 플러시(flush) 한다. That is, the bit counter controller 130 resets the hash function to be used in the current interval Current Interval(i) when the count value is accumulated in the set bit counter during the previous interval Previous Interval(i-1), and within the DRAM cache 140 Data is flushed to non-volatile memory 150.
이후 동일한 방식으로 비트 카운터 콘트롤러(130)는 현재 구간 Current Interval(i) 동안 세트용 비트 카운터에 카운트 값이 누적되면 다음 구간 Next Interval(i+1)에서 사용할 해시 함수를 재설정하고, DRAM cache(140) 내 데이터를 비휘발성 메모리(150)로 플러시(flush) 한다. Thereafter, in the same manner, the bit counter controller 130 resets the hash function to be used in the next interval Next Interval (i+1) when the count value is accumulated in the set bit counter during the current interval Current Interval (i), and the DRAM cache (140 ) Flush my data to non-volatile memory (150).
여기서, 소정 횟수마다 DRAM cache의 데이터를 비휘발성 메모리로 플러시 하는 이유는 다음과 같다. Here, the reason why data from the DRAM cache is flushed to the non-volatile memory every predetermined number of times is as follows.
이전 구간 Previous Interval(i-1)에 적용되는 해시 함수와 현재 구간 Current Interval(i)에 적용되는 해수 함수가 다르거나 현재 구간 Current Interval(i)에 적용되는 해수 함수와 다음 구간 Next Interval(i+1)에 적용되는 해수 함수가 다르게 되면 소정 데이터를 저장하는 DRAM cache의 address와 비휘발성 메모리의 address가 불일치하게 된다. The hash function applied to the previous interval Previous Interval(i-1) and the solution function applied to the current interval Current Interval(i) are different, or the solution function applied to the current interval Current Interval(i) and the next interval Next Interval(i+ If the solution function applied to 1) is different, the address of the DRAM cache storing predetermined data and the address of the non-volatile memory become inconsistent.
이러한 문제점을 해소하기 위하여 개별 구간마다 DRAM cache의 address와 비휘발성 메모리의 address를 일치시키기 위해 매 구간이 시작될 때마다 DRAM cache(140) 내 데이터를 비휘발성 메모리(150)로 플러시(flush) 할 필요가 있다.To solve this problem, it is necessary to flush the data in the DRAM cache (140) to the non-volatile memory (150) at the start of each section in order to match the address of the DRAM cache and the address of the non-volatile memory for each section. There is.
도 7은 본 발명의 일실시예에 따라 해시 함수의 재설정시 일부 캐시 블록만 플러시 하는 기법의 예시도이다.Figure 7 is an example diagram of a technique for flushing only some cache blocks when resetting the hash function according to an embodiment of the present invention.
본 발명의 일실시예에 따르면, 비트 카운터 콘트롤러(130)는 6 bits의 request address 중 2 bits의 index를 제외한 나머지 4 bits를 개별 블록의 B-tag로 사용한다. According to one embodiment of the present invention, the bit counter controller 130 uses the remaining 4 bits of the 6-bit request address, excluding the 2-bit index, as the B-tag of the individual block.
도 7에 도시된 바와 같이, DRAM cache(140) 내 i번째 set에 4개의 블록(block0 ~ block3)을 위한 각각의 B-tag(tag0 ~ tag3)가 이미 저장되어 있다고 가정하자. 이때 DRAM cache(140) 내 제2 블록(blokc1)에 새로운 B-tag를 저장하고자 하면, DRAM cache(140) 내 제2 블록(block1)에 request address용 B-tag가 이미 저장되어 있기 때문에 request miss가 발생한다. As shown in FIG. 7, assume that each B-tag (tag0 to tag3) for four blocks (block0 to block3) is already stored in the ith set in the DRAM cache 140. At this time, if you want to store a new B-tag in the second block (blockc1) in the DRAM cache (140), the request misses because the B-tag for the request address is already stored in the second block (block1) in the DRAM cache (140). occurs.
request miss가 발생하면, 비트 카운터 콘트롤러(130)는 해당 세트의 태그용 비트 카운터(133)에 저장된 값과 개별 블록(block0 ~ block3)의 B-tag(tag0 ~ tag3)를 각각 가산한다. 예컨대, 태그용 비트 카운터(133)에 저장된 값(-4 2 2 0)과 제4 B-tag(tag3)의 태그 비트(1 1 0 0)를 가산하면 (-3 3 2 -1)이 된다. 태그용 비트 카운터(133)에 저장된 값(-4 2 2 0)과 제3 B-tag(tag2)의 태그비트(0 1 0 0)를 가산하면 (-5 3 1 -1)이 된다. 태그용 비트 카운터(133)에 저장된 값(-4 2 2 0)과 제2 B-tag(tag1)의 태그 비트(1 1 0 1)를 가산하면 (-3 3 1 -1)이 된다. 마지막으로, 태그용 비트 카운터(133)에 저장된 값(-4 2 2 0)과 제1 B-tag(tag0)의 태그 비트(0 1 0 1)를 가산하면 (-4 4 -2 2)이 된다. When a request miss occurs, the bit counter controller 130 adds the value stored in the bit counter 133 for the tag of the corresponding set and the B-tag (tag0 to tag3) of the individual block (block0 to block3). For example, adding the value (-4 2 2 0) stored in the tag bit counter 133 and the tag bit (1 1 0 0) of the fourth B-tag (tag3) results in (-3 3 2 -1). . Adding the value (-4 2 2 0) stored in the tag bit counter 133 and the tag bit (0 1 0 0) of the third B-tag (tag2) results in (-5 3 1 -1). Adding the value (-4 2 2 0) stored in the tag bit counter 133 and the tag bit (1 1 0 1) of the second B-tag (tag1) results in (-3 3 1 -1). Finally, by adding the value (-4 2 2 0) stored in the tag bit counter 133 and the tag bit (0 1 0 1) of the first B-tag (tag0), (-4 4 -2 2) is obtained. do.
본 발명에 따르면, 해당 세트의 태그용 비트 카운터(133)에 저장된 값과 개별 블록(block0 ~ block3)의 B-tag(tag0 ~ tag3)를 각각 가산하는 방법은 request address가 "1"이면 (+)1로 계수하고, request address가 "0"이면 (-)1로 계수한다. According to the present invention, the method of adding the value stored in the bit counter 133 for the tag of the corresponding set and the B-tag (tag0 to tag3) of the individual block (block0 to block3) is, if the request address is "1" (+ ) Counts as 1, and if the request address is "0", it counts as (-)1.
비트 카운터 콘트롤러(130)는 가산한 축출 후보 블록별 결과값의 절대치 합산값이 가장 작은 블록을 축출 블록으로 선택한다. 예컨대, 제2 블록(block1)의 절대치 합산값이 8로 가장 작기 때문에 제2 블록(block1)을 축출 블록으로 선택한다.The bit counter controller 130 selects the block with the smallest absolute sum of the result values for each added eviction candidate block as the eviction block. For example, since the absolute sum of the second block (block1) is the smallest at 8, the second block (block1) is selected as the eviction block.
비트 카운터 콘트롤러(130)는 DRAM cache(140) 내 선택된 축출 블록인 제2 블록(block1)을 비휘발성 메모리(150)로 축출한다.The bit counter controller 130 evicts the second block (block1), which is the selected eviction block in the DRAM cache 140, to the non-volatile memory 150.
비트 카운터 콘트롤러(130)는 호스트 장치(110)로부터 입력되는 새로운 request address를 DRAM cache(140) 내 비어 있는 블록인 제2 블록(block1)에 삽입한다.The bit counter controller 130 inserts a new request address input from the host device 110 into the second block (block1), which is an empty block in the DRAM cache 140.
마지막으로, 비트 카운터 콘트롤러(130)는 축출되는 tag(1 1 0 1)와 기 저장된 태그용 비트 카운터 결과값 (-4 2 2 0)에 가산하여 새로운 태그용 비트 카운터 결과값 (-3 3 1 -1)으로 갱신한다.Finally, the bit counter controller 130 adds the bit counter result value for the new tag (-3 3 1) by adding it to the tag to be evicted (1 1 0 1) and the previously stored bit counter result value for the tag (-4 2 2 0). Update to -1).
본 발명에 따르면, A-tag로는 구간마다 "0"과 "1"을 교번적으로 사용하는바, 이전 구간(i-1)의 A-tag가 "0"이면 해당 블록에 접근한 것으로 세트 된 상태에서, 이전 구간(i-1)의 A-tag가 "1"이라면 이전 구간(i-1)에서는 해당 블록에 접근하지 않은 것을 의미한다. 그리고, 이전 구간(i-1)의 A-tag가 "1"인 경우, 해당 블록에 접근이 이루어지면 비트 카운터 콘트롤러(130)는 해당 블록의 A-tag를 "1"에서 "0"으로 전환시킨다.According to the present invention, "0" and "1" are used alternately for each section as the A-tag, and if the A-tag of the previous section (i-1) is "0", it is set as accessing the corresponding block. In this state, if the A-tag of the previous section (i-1) is "1", it means that the corresponding block was not accessed in the previous section (i-1). And, if the A-tag of the previous section (i-1) is "1", when the corresponding block is accessed, the bit counter controller 130 changes the A-tag of the corresponding block from "1" to "0". I order it.
예컨대, 이전 구간(i-1)에서 생성된 해시 함수로 해당 블록에 접근하면 A-tag를 "0"으로 세트한다. 이전 구간(i-1)에서 현재 구간(i)으로 전환하는 순간, A-tag를 확인하여 이전 구간(i-1)에서 생성된 해시 함수로 접근된 블록은 DRAM cache 내에 데이터를 유지하는 한편, 그 전 구간(i-2)에서 생성된 해시 함수로 접근된 블록이면 DRAM cache 내 데이터를 비휘발성 메모리로 플러시 한다. For example, when accessing the block with the hash function generated in the previous section (i-1), A-tag is set to "0". At the moment of switching from the previous section (i-1) to the current section (i), the A-tag is checked and the block accessed with the hash function generated in the previous section (i-1) maintains its data in the DRAM cache. If the block is accessed with the hash function generated in the previous section (i-2), the data in the DRAM cache is flushed to non-volatile memory.
즉, 이전 구간(i-1)에서 현재 구간(i)으로 전환하는 순간, A-tag가 "0"이면 DRAM cache 내에 데이터를 유지하는 한편, A-tag가 "1"이면 DRAM cache 내 데이터를 비휘발성 메모리로 플러시 한다. 다시 말해서, 이전 구간(i-1)에서 현재 구간(i)으로 전환하는 순간, 임의 블록의 A-tag가 "0"이 아니고 "1"이면, 해당 블록은 이전 구간(i-1) 동안 접근되지 않았음을 의미한다. In other words, at the moment of switching from the previous section (i-1) to the current section (i), if the A-tag is "0", the data is maintained in the DRAM cache, while if the A-tag is "1", the data in the DRAM cache is stored. Flush to non-volatile memory. In other words, at the moment of switching from the previous section (i-1) to the current section (i), if the A-tag of any block is "1" instead of "0", the block is accessed during the previous section (i-1). It means it didn't work.
이후, 현재 구간(i)에서 생성된 해시 함수로 소정 블록에 접근하면 해당 블록의 A-tag를 "1"로 세트한다. 현재 구간(i)에서 다음 구간(i+1)으로 전환하는 순간, A-tag를 확인하여 해당 구간(i)에서 생성된 해시 함수로 접근한 블록은 DRAM cache 내에 데이터를 유지하는 한편, 이전 구간(i-1)에서 생성된 해시 함수로 접근한 블록이면 DRAM cache 내 데이터를 비휘발성 메모리로 플러시 한다. Afterwards, when a certain block is accessed using the hash function generated in the current section (i), the A-tag of the block is set to "1". At the moment of switching from the current section (i) to the next section (i+1), the A-tag is checked and the block accessed with the hash function generated in the corresponding section (i) maintains its data in the DRAM cache, while the previous section If the block is accessed with the hash function generated in (i-1), the data in the DRAM cache is flushed to non-volatile memory.
즉, 현재 구간(i)에서 다음 구간(i+1)으로 전환하는 순간, 소정 블록의 A-tag가 "1"이면 DRAM cache 내 해당 블록의 데이터를 유지하는 한편, 소정 블록의 A-tag가 "0"이면 DRAM cache 내 데이터를 비휘발성 메모리로 플러시 한다. In other words, at the moment of switching from the current section (i) to the next section (i+1), if the A-tag of a certain block is "1", the data of the corresponding block in the DRAM cache is maintained, and the A-tag of the certain block is maintained. If it is "0", the data in the DRAM cache is flushed to non-volatile memory.
결국, DRAM cache 내에는 이전 구간에 접근이 발생한 블록과, 현재 구간에 접근이 발생한 블록으로 구분할 수 있다. 본 발명에 따르면, DRAM cache 내 블록의 접근을 위하여 이전 구간의 해시 함수를 저장하기 위한 영역이 마련되고, 매 구간마다 이전 구간의 해시 함수를 갱신한다.Ultimately, the DRAM cache can be divided into blocks where access occurred in the previous section and blocks where access occurred in the current section. According to the present invention, an area is provided to store the hash function of the previous section in order to access blocks in the DRAM cache, and the hash function of the previous section is updated in each section.
이를 통해 본 발명에서는 구간마다 DRAM cache 내 모든 블록을 플러시 하지 않고 해당 구간의 해시 함수로 접근되지 않은 블록에 대해서만 비휘발성 메모리로 플러시 함으로써 비휘발성 메모리로의 쓰기 요청을 획기적으로 줄일 수 있다. 본 발명을 적용하는 경우, DRAM cache 내 전체 블록 중 5 내지 15% 정도만 플러시 되는 것으로 확인되었다.Through this, the present invention does not flush all blocks in the DRAM cache for each section, but only blocks that are not accessed by the hash function of the section are flushed to non-volatile memory, thereby dramatically reducing write requests to non-volatile memory. When applying the present invention, it was confirmed that only about 5 to 15% of all blocks in the DRAM cache are flushed.
도 8은 본 발명의 일실시예에 따른 DRAM cache 내 개별 블록의 상태 천이 프로토콜 예시도로서, 도 7의 일부 블록만 플러시 하기 위한 프로토콜이다.FIG. 8 is an example diagram of a state transition protocol for individual blocks in a DRAM cache according to an embodiment of the present invention, and is a protocol for flushing only some blocks in FIG. 7.
본 발명의 일실시예에 따르면, 비트 카운터 콘트롤러(130)는 DRAM cache 내 개별 블록의 직전 해시 함수(Xp: Previous hash function)와 현재 해시 함수(Xc: Current hash function)를 기억하며, DRAM cache 내 일부 블록의 상태 천이 프로토콜은 다음과 같다. According to one embodiment of the present invention, the bit counter controller 130 remembers the previous hash function (Xp: Previous hash function) and the current hash function (Xc: Current hash function) of individual blocks in the DRAM cache. The state transition protocols of some blocks are as follows.
i) dirty 상태i) dirty state
- DRAM cache 내 소정 블록의 데이터 상태가 'dirty'이고, 해당 블록 내 데이터 Read 요청시, 해당 블록의 직전 해시 함수(Xp)나 현재 해시 함수(Xc)로 hit 하면(RdHit X{p//c}), 비트 카운터 콘트롤러(130)는 DRAM cache 내 해당 블록의 데이터 상태를 'dirty'로 유지한다(S810).- If the data status of a certain block in the DRAM cache is 'dirty' and a request is made to read data in the block, a hit is made with the previous hash function (Xp) or the current hash function (Xc) of the block (RdHit }), the bit counter controller 130 maintains the data state of the corresponding block in the DRAM cache as 'dirty' (S810).
- DRAM cache 내 소정 블록의 데이터가 'dirty'이고, 해당 블록 내 데이터 Write 요청시, 해당 블록의 직전 해시 함수(Xp)나 현재 해시 함수(Xc)로 hit 하면(WrHit X{p//c}), 비트 카운터 콘트롤러(130)는 DRAM cache 내 해당 블록의 데이터 상태를 'dirty'로 유지한다(S820).- If the data of a certain block in the DRAM cache is 'dirty' and a request is made to write data in the block, a hit is made with the previous hash function (Xp) or the current hash function (Xc) of the block (WrHit ), the bit counter controller 130 maintains the data state of the corresponding block in the DRAM cache as 'dirty' (S820).
- DRAM cache 내 소정 블록의 데이터 상태가 'dirty'이고, DRAM cache 내 블록의 데이터를 축출하고자 할 때(evict), 비트 카운터 콘트롤러(130)는 DRAM cache 내 해당 블록의 데이터를 플러싱 한다. 이때 비트 카운터 콘트롤러(130)는 DRAM cache 내 블록의 데이터 상태를 'dirty'에서 'invalid'로 천이시킨다(S830). - When the data status of a certain block in the DRAM cache is 'dirty' and the data of the block in the DRAM cache is to be evicted (evict), the bit counter controller 130 flushes the data of the corresponding block in the DRAM cache. At this time, the bit counter controller 130 transitions the data state of the block in the DRAM cache from 'dirty' to 'invalid' (S830).
즉, DRAM cache 내 소정 블록의 데이터 상태가 'dirty'이고, DRAM cache 내 블록의 데이터를 축출하게 되면(evict), DRAM cache 내 해당 블록의 데이터를 비휘발성 메모리에 저장하는(flush) 것과 함께 DRAM cache 내 해당 블록의 데이터 상태를 초기화시킨다. In other words, if the data status of a certain block in the DRAM cache is 'dirty' and the data of the block in the DRAM cache is evicted (evict), the data of the corresponding block in the DRAM cache is stored (flushed) in non-volatile memory and the DRAM Initializes the data state of the corresponding block in the cache.
ii) clean 상태ii) clean state
- DRAM cache 내 소정 블록의 데이터 상태가 'clean'이고, 해당 블록 내 데이터 Read 요청시, 해당 블록의 직전 해시 함수(Xp)나 현재 해시 함수(Xc)로 hit 하면(RdHit X{p//c}), 비트 카운터 콘트롤러(130)는 DRAM cache 내 해당 블록의 데이터 상태를 'clean'으로 유지한다(S840).- If the data status of a certain block in the DRAM cache is 'clean' and a request is made to read data in the block, a hit is made with the previous hash function (Xp) or the current hash function (Xc) of the block (RdHit }), the bit counter controller 130 maintains the data state of the corresponding block in the DRAM cache as 'clean' (S840).
- DRAM cache 내 소정 블록의 데이터 상태가 'clean'이고, 해당 블록 내 데이터 Write 요청시, 해당 블록의 직전 해시 함수(Xp)나 현재 해시 함수(Xc)로 hit 하면(WrHit X{p//c}), 비트 카운터 콘트롤러(130)는 DRAM cache 내 해당 블록의 데이터 상태를 'clean'에서 'dirty'로 천이시킨다(S850). - If the data status of a certain block in the DRAM cache is 'clean' and a request is made to write data in the block, a hit is made with the previous hash function (Xp) or the current hash function (Xc) of the block (WrHit }), the bit counter controller 130 transitions the data state of the corresponding block in the DRAM cache from 'clean' to 'dirty' (S850).
즉, DRAM cache 내 소정 블록의 데이터 상태가 'clean'이고, 해당 블록 내 데이터 Write 요청시, 직전 해시 함수(Xp)나 현재 해시 함수(Xc)로 hit 하면, DRAM cache 내 해당 블록의 데이터는 새로운 데이터가 기입되어 비휘발성 메모리의 동일 address 내 데이터와 불일치하게 되므로 비트 카운터 콘트롤러(130)는 DRAM cache 내 해당 블록의 데이터 상태를 'clean'에서 'dirty'로 천이시킨다.In other words, the data status of a certain block in the DRAM cache is 'clean', and when a write request for data in the block is made, if a hit is made with the previous hash function (Xp) or the current hash function (Xc), the data of the block in the DRAM cache is new. Since data is written and becomes inconsistent with data in the same address of the non-volatile memory, the bit counter controller 130 transitions the data state of the corresponding block in the DRAM cache from 'clean' to 'dirty'.
- DRAM cache 내 소정 블록의 데이터 상태가 'clean'이고, 해당 블록 내 데이터가 비휘발성 메모리로 축출되면(evict), 비트 카운터 콘트롤러(130)는 DRAM cache 내 해당 블록의 데이터 상태를 'clean'에서 'invalid'로 천이시킨다(S860).- When the data state of a certain block in the DRAM cache is 'clean' and the data in the block is evicted to non-volatile memory, the bit counter controller 130 changes the data state of the block in the DRAM cache from 'clean'. Transition to 'invalid' (S860).
iii) invalid 상태iii) invalid status
- DRAM cache 내 소정 블록의 데이터 상태가 'invalid'이고, 해당 블록 내 데이터 Write 요청시, 해당 블록의 직전 해시 함수(Xp)와 현재 해시 함수(Xc)가 모두 miss 이면(WrMiss X{p&&c}), 비트 카운터 콘트롤러(130)는 현재 해시 함수(Xc)를 이용하여 비휘발성 메모리의 해당 address의 데이터를 DRAM cache 내 동일 address로 읽어들이고(BusRd Xc), DRAM cache 내 해당 블록의 데이터 상태를 'invalid'에서 'dirty'로 천이시킨다(S870).- If the data status of a certain block in the DRAM cache is 'invalid', and when requesting to write data in the block, both the previous hash function (Xp) and the current hash function (Xc) of the block are misses (WrMiss X{p&&c}) , the bit counter controller 130 reads the data of the corresponding address of the non-volatile memory to the same address in the DRAM cache using the current hash function (Xc) (BusRd ' to 'dirty' (S870).
- DRAM cache 내 소정 블록의 데이터 상태가 'invalid'이고, 해당 블록 내 데이터 Read 요청시, 해당 블록의 직전 해시 함수(Xp)와 현재 해시 함수(Xc)가 모두 miss 이면(RdMiss X{p&&c}), 비트 카운터 콘트롤러(130)는 현재 해시 함수(Xc)를 이용하여 비휘발성 메모리의 해당 address의 데이터를 DRAM cache 내 동일 address로 읽어들이고(BusRd Xc), DRAM cache 내 해당 블록의 데이터 상태를 'invalid'에서 'clean'으로 천이시킨다(S880).- If the data status of a certain block in the DRAM cache is 'invalid', and when requesting to read data in the block, both the previous hash function (Xp) and the current hash function (Xc) of the block are misses (RdMiss X{p&&c}) , the bit counter controller 130 reads the data of the corresponding address of the non-volatile memory to the same address in the DRAM cache using the current hash function (Xc) (BusRd ' to 'clean' (S880).
도 9는 본 발명의 다른 실시예에 따른 DRAM cache 내 개별 블록의 상태 천이 프로토콜 예시도로서, 점진적으로 데이터를 축출하기 위한 프로토콜이다.Figure 9 is an exemplary state transition protocol of an individual block in a DRAM cache according to another embodiment of the present invention, which is a protocol for gradually evicting data.
본 발명의 다른 실시예에 따르면, 직전 해시 함수(Xp)를 이용하여 DRAM cache 내 개별 블록에 접근할 때 hit이 발생하면 다음과 같은 동작을 수행한다.According to another embodiment of the present invention, if a hit occurs when accessing an individual block in the DRAM cache using the previous hash function (Xp), the following operation is performed.
i) dirty 상태i) dirty state
- 해당 블록의 데이터 상태가 'dirty'이고, 해당 블록에 데이터를 쓰라는 Write 요청이면(WrHit Xp), 비트 카운터 콘트롤러(130)는 해당 블록의 데이터 상태를 'invalid'로 천이시키고, 해당 블록을 현재 해시 함수(Xc)로 접근하여 데이터 Write를 수행한다(Wr Xc)(S910).- If the data state of the corresponding block is 'dirty' and there is a Write request to write data to the block (WrHit Access the current hash function (Xc) and perform data write (Wr Xc) (S910).
- 해당 블록의 데이터 상태가 'dirty'이고, 해당 블록에 저장된 데이터를 읽으라는 Read 요청이면(RdHit Xp), 비트 카운터 콘트롤러(130)는 해당 블록의 데이터 상태를 'invalid'로 천이시키고, 비트 카운터 콘트롤러(130)는 해당 블록 대신 현재 해시 함수(Xc)로 접근하는 블록에 저장된 데이터의 Read를 수행한다(Move to Xc)(S915).- If the data state of the block is 'dirty' and a Read request is made to read the data stored in the block (RdHit The controller 130 reads the data stored in the block currently accessed by the hash function (Xc) instead of the corresponding block (Move to Xc) (S915).
- DRAM cache 내 소정 블록의 데이터 상태가 'dirty'이고, 해당 블록의 데이터를 축출하고자 할 때(evict), 비트 카운터 콘트롤러(130)는 DRAM cache 내 해당 블록의 데이터를 플러싱 한다. 이때 비트 카운터 콘트롤러(130)는 DRAM cache 내 블록의 데이터 상태를 'dirty'에서 'invalid'로 천이시킨다(S920). - When the data status of a certain block in the DRAM cache is 'dirty' and the data of the block is to be evicted (evict), the bit counter controller 130 flushes the data of the block in the DRAM cache. At this time, the bit counter controller 130 transitions the data state of the block in the DRAM cache from 'dirty' to 'invalid' (S920).
즉, DRAM cache 내 소정 블록의 데이터 상태가 'dirty'이고, DRAM cache 내 블록의 데이터를 축출하게 되면(evict), DRAM cache 내 해당 블록의 데이터를 비휘발성 메모리에 저장하는(flush) 것과 함께 DRAM cache 내 해당 블록의 데이터 상태를 초기화시킨다. In other words, if the data status of a certain block in the DRAM cache is 'dirty' and the data of the block in the DRAM cache is evicted (evict), the data of the corresponding block in the DRAM cache is stored (flushed) in non-volatile memory and the DRAM Initializes the data state of the corresponding block in the cache.
ii) clean 상태ii) clean state
- 해당 블록의 데이터 상태가 'clean'이고, 해당 블록에 데이터를 쓰라는 Write 요청이면(WrHit Xp), 비트 카운터 콘트롤러(130)는 해당 블록의 데이터 상태를 'invalid'로 천이시키고, 해당 블록을 현재 해시 함수(Xc)로 접근하여 데이터 Write를 수행한다(Wr Xc)(S930).- If the data status of the block is 'clean' and a Write request is made to write data to the block (WrHit Access the current hash function (Xc) and perform data write (Wr Xc) (S930).
- 해당 블록의 데이터 상태가 'clean'이고, 해당 블록에 저장된 데이터를 읽으라는 Read 요청이면(RdHit Xp), 비트 카운터 콘트롤러(130)는 해당 블록의 데이터 상태를 'invalid'로 천이시키고, 비트 카운터 콘트롤러(130)는 해당 블록 대신 현재 해시 함수(Xc)로 접근하는 블록에 저장된 데이터의 Read를 수행한다(Move to Xc)(S935).- If the data state of the block is 'clean' and a Read request is made to read the data stored in the block (RdHit The controller 130 reads the data stored in the block currently accessed by the hash function (Xc) instead of the corresponding block (Move to Xc) (S935).
- DRAM cache 내 소정 블록의 데이터 상태가 'clean'이고, 해당 블록 내 데이터가 비휘발성 메모리로 축출되면(evict), 비트 카운터 콘트롤러(130)는 DRAM cache 내 해당 블록의 데이터 상태를 'clean'에서 'invalid'로 천이시킨다(S940).- When the data state of a certain block in the DRAM cache is 'clean' and the data in the block is evicted to non-volatile memory, the bit counter controller 130 changes the data state of the block in the DRAM cache from 'clean'. Transition to 'invalid' (S940).
iii) invalid 상태iii) invalid status
- DRAM cache 내 소정 블록이 invalid 상태에서, 해당 블록 내 데이터의 Write 요청시, 해당 블록에 직전 해시 함수(Xp)와 현재 해시 함수(Xc)로 모두 miss 이면(WrMiss X{p&&c}), 비트 카운터 콘트롤러(130)는 현재 해시 함수(Xc)를 이용하여 비휘발성 메모리의 해당 address의 데이터를 DRAM cache 내 동일 address로 읽어들이고(BusRd Xc), DRAM cache 내 해당 블록을 'invalid' 상태에서 'dirty' 상태로 천이시킨다(S950).- When a certain block in the DRAM cache is invalid and a write request is made for data in the block, if both the previous hash function (Xp) and the current hash function (Xc) miss in the block (WrMiss X{p&&c}), the bit counter The controller 130 reads the data of the corresponding address in the non-volatile memory to the same address in the DRAM cache using the current hash function (Xc) (BusRd Transition to this state (S950).
- DRAM cache 내 소정 블록이 invalid 상태에서, 해당 블록 내 데이터의 Read 요청시, 해당 블록에 직전 해시 함수(Xp)와 현재 해시 함수(Xc)로 모두 miss 이면(RdMiss X{p&&c}), 비트 카운터 콘트롤러(130)는 현재 해시 함수(Xc)를 이용하여 비휘발성 메모리의 해당 address의 데이터를 DRAM cache 내 동일 address로 읽어들이고(BusRd Xc), DRAM cache 내 해당 블록을 'invalid' 상태에서 'clean' 상태로 천이시킨다(S955).- When a certain block in the DRAM cache is invalid and a request is made to read data in the block, if both the previous hash function (Xp) and the current hash function (Xc) miss in the block (RdMiss X{p&&c}), the bit counter The controller 130 uses the current hash function (Xc) to read the data of the corresponding address in the non-volatile memory to the same address in the DRAM cache (BusRd Transition to this state (S955).
한편, DRAM cache 내 소정 블록의 데이터 상태가 'dirty' 에서 데이터의 Read 또는 Write 요청시 현재 해시 함수(Xc)로 hit 이면(RdHit Xc, WrHit Xc), 현 상태를 유지하고, 해당 요청을 수행한다(S960, S965).Meanwhile, if the data state of a certain block in the DRAM cache is 'dirty' and a hit is made with the current hash function (Xc) when requesting to read or write data (RdHit Xc, WrHit Xc), the current state is maintained and the request is performed. (S960, S965).
그리고, DRAM cache 내 소정 블록의 데이터 상태가 'clean' 에서 데이터의 Write 요청시 현재 해시 함수(Xc)로 hit 이면(WrHit Xc), 'clean' 상태를 'dirty' 상태로 천이시키고 해당 요청을 수행한다(S970).Also, if the data state of a certain block in the DRAM cache is 'clean' and is hit by the current hash function (Xc) when requesting data write (WrHit Do it (S970).
하지만, DRAM cache 내 소정 블록의 데이터 상태가 'clean' 에서 데이터의 Read 요청시 현재 해시 함수(Xc)로 hit 이면(RdHit Xc), 현 상태를 유지하고, 해당 요청을 수행한다(S975).However, if the data state of a certain block in the DRAM cache is 'clean' and the current hash function (Xc) is hit (RdHit Xc) when a data read request is made, the current state is maintained and the request is performed (S975).
이상, 첨부된 도면을 참조하여 본 발명의 실시 예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예에는 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.Above, embodiments of the present invention have been described with reference to the attached drawings, but those skilled in the art will understand that the present invention can be implemented in other specific forms without changing the technical idea or essential features. You will understand that it exists. Therefore, the embodiments described above should be understood in all respects as illustrative and not restrictive.
110: 호스트 장치
120: 메인 콘트롤러
130: 비트 카운터 콘트롤러
131: 세트용 비트 카운터
133: 태그용 비트 카운터
140: DRAM cache
150: 비휘발성 메모리
220: 메모리 콘트롤러110: host device
120: main controller
130: Bit counter controller
131: Bit counter for sets
133: Bit counter for tags
140: DRAM cache
150: non-volatile memory
220: memory controller
Claims (40)
비휘발성 메모리;
상기 호스트 장치와 상기 비휘발성 메모리 간에 배치되고, 상기 호스트 장치의 데이터를 임시 저장하고, 복수의 세트를 포함하고, 상기 복수의 세트 각각은 복수의 블록을 포함하고, 상기 복수의 블록 각각은 기본 태그와 추가 태그가 결합된 확장 태그를 포함하는 DRAM cache;
상기 호스트 장치로부터 복수 비트의 리퀘스트 어드레스를 수신하는 메모리 콘트롤러; 및
상기 메모리 콘트롤러로부터 리퀘스트 어드레스를 수신하고, 복수의 세트용 비트 카운터를 이용하여 상기 리퀘스트 어드레스를 계수함으로써 상기 DRAM cache의 해시 함수를 결정하는 비트 카운터 콘트롤러를 포함하고,
상기 비트 카운터 콘트롤러는 상기 DRAM cache 내 상기 복수의 블록 각각의 직전 해시 함수와 현재 해시 함수를 기억하고,
상기 직전 해시 함수를 이용하여 상기 DRAM cache 내 소정 블록에 접근할 때 hit 하는 경우, 상기 소정 블록의 데이터 상태가 'dirty'이고, 상기 소정 블록에의 데이터 Write 요청이면, 상기 비트 카운터 콘트롤러는 상기 소정 블록의 데이터 상태를 'invalid'로 천이시키고, 상기 소정 블록을 상기 현재 해시 함수로 접근하여 데이터 Write를 수행하는 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
host device;
non-volatile memory;
disposed between the host device and the non-volatile memory, temporarily stores data of the host device, and includes a plurality of sets, each of the plurality of sets including a plurality of blocks, each of the plurality of blocks having a basic tag. DRAM cache containing extended tags combined with additional tags;
a memory controller that receives a plural-bit request address from the host device; and
A bit counter controller that receives a request address from the memory controller and determines a hash function of the DRAM cache by counting the request address using a plurality of set bit counters,
The bit counter controller stores the previous hash function and the current hash function of each of the plurality of blocks in the DRAM cache,
When a hit is made when accessing a predetermined block in the DRAM cache using the previous hash function, if the data state of the predetermined block is 'dirty' and a data write request is made to the predetermined block, the bit counter controller A computing system using a non-volatile memory module characterized by transitioning the data state of a block to 'invalid' and performing data write by accessing the predetermined block with the current hash function.
상기 DRAM cache 내 소정 블록의 데이터 상태가 'dirty'이고, 상기 소정 블록에의 데이터 Read 요청 또는 데이터 Write 요청시, 상기 소정 블록의 직전 해시 함수나 현재 해시 함수로 hit 하면, 상기 비트 카운터 콘트롤러는 상기 블록의 데이터 상태를 'dirty'로 유지하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 1,
If the data status of a certain block in the DRAM cache is 'dirty' and a hit is made with the previous hash function or the current hash function of the certain block when a data read request or data write request is made to the certain block, the bit counter controller A computing system using a non-volatile memory module characterized by maintaining the data state of the block as 'dirty'.
상기 DRAM cache 내 소정 블록의 데이터 상태가 'dirty'이고, 상기 소정 블록의 데이터를 축출하고자 할 때, 상기 비트 카운터 콘트롤러는 상기 블록의 데이터를 플러싱 하고, 상기 소정 블록의 데이터 상태를 'dirty'에서 'invalid'로 천이시키는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 1,
When the data state of a certain block in the DRAM cache is 'dirty' and the data of the certain block is to be evicted, the bit counter controller flushes the data of the block and changes the data state of the certain block from 'dirty'. A computing system using a non-volatile memory module characterized by transition to 'invalid'.
상기 DRAM cache 내 소정 블록의 데이터 상태가 'clean'이고, 상기 소정 블록에의 데이터 Read 요청시, 상기 소정 블록의 직전 해시 함수나 현재 해시 함수(Xc)로 hit 하면, 상기 비트 카운터 콘트롤러는 상기 소정 블록의 데이터 상태를 'clean'으로 유지하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 1,
If the data state of a predetermined block in the DRAM cache is 'clean' and a request to read data to the predetermined block is made with the previous hash function or current hash function (Xc) of the predetermined block, the bit counter controller A computing system using a non-volatile memory module that maintains the data state of the block as 'clean'.
상기 DRAM cache 내 소정 블록의 데이터 상태가 'clean'이고, 상기 소정 블록에의 데이터 Write 요청시, 상기 소정 블록의 직전 해시 함수나 현재 해시 함수로 hit 하면, 상기 비트 카운터 콘트롤러는 상기 소정 블록의 데이터 상태를 'clean'에서 'dirty'로 천이시키는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 1,
If the data status of a predetermined block in the DRAM cache is 'clean' and a request to write data to the predetermined block is made with the previous hash function or current hash function of the predetermined block, the bit counter controller generates the data of the predetermined block. A computing system using a non-volatile memory module characterized by transitioning the state from 'clean' to 'dirty'.
상기 DRAM cache 내 소정 블록의 데이터 상태가 'clean'이고, 상기 소정 블록 내 데이터가 상기 비휘발성 메모리로 축출되면, 상기 비트 카운터 콘트롤러는 상기 소정 블록의 데이터 상태를 'clean'에서 'invalid'로 천이시키는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 1,
When the data state of a certain block in the DRAM cache is 'clean' and the data in the certain block is expelled to the non-volatile memory, the bit counter controller transitions the data state of the certain block from 'clean' to 'invalid'. A computing system using a non-volatile memory module.
상기 DRAM cache 내 소정 블록의 데이터 상태가 'invalid'이고, 상기 소정 블록에의 데이터 Write 요청시, 상기 소정 블록의 직전 해시 함수와 현재 해시 함수가 모두 miss 이면, 상기 비트 카운터 콘트롤러는 상기 현재 해시 함수를 이용하여 상기 DRAM cache 내 소정 블록의 address에 대응하는 상기 비휘발성 메모리의 address에 저장된 데이터를 상기 DRAM cache 내 소정 블록의 address로 읽어들이고, 상기 DRAM cache 내 소정 블록의 데이터 상태를 'invalid'에서 'dirty'로 천이시키는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 1,
If the data status of a predetermined block in the DRAM cache is 'invalid', and when requesting to write data to the predetermined block, both the previous hash function and the current hash function of the predetermined block are misses, the bit counter controller executes the current hash function. Data stored at the address of the non-volatile memory corresponding to the address of the predetermined block in the DRAM cache is read to the address of the predetermined block in the DRAM cache, and the data status of the predetermined block in the DRAM cache is changed from 'invalid'. A computing system using a non-volatile memory module characterized by transition to 'dirty'.
상기 DRAM cache 내 소정 블록의 데이터 상태가 'invalid'이고, 상기 소정 블록에의 데이터 Read 요청시, 상기 소정 블록의 직전 해시 함수와 현재 해시 함수(Xc)가 모두 miss 이면, 상기 비트 카운터 콘트롤러는 상기 현재 해시 함수를 이용하여 상기 DRAM cache 내 소정 블록의 address에 대응하는 상기 비휘발성 메모리의 address에 저장된 데이터를 상기 DRAM cache 내 소정 블록의 address로 읽어들이고, 상기 DRAM cache 내 소정 블록의 데이터 상태를 'invalid'에서 'clean'으로 천이시키는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 1,
If the data status of a predetermined block in the DRAM cache is 'invalid' and when a data read request is made to the predetermined block, both the previous hash function and the current hash function (Xc) of the predetermined block are misses, the bit counter controller Data stored at the address of the non-volatile memory corresponding to the address of the predetermined block in the DRAM cache is read to the address of the predetermined block in the DRAM cache using the current hash function, and the data state of the predetermined block in the DRAM cache is changed to ' A computing system using a non-volatile memory module characterized by transition from 'invalid' to 'clean'.
상기 소정 블록의 데이터 상태가 'dirty'이고, 상기 소정 블록에의 데이터 Read 요청이면, 상기 비트 카운터 콘트롤러는 상기 소정 블록의 데이터 상태를 'invalid'로 천이시키고, 상기 소정 블록 대신 상기 현재 해시 함수로 접근하는 블록에 데이터 Read를 수행하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 1,
If the data state of the predetermined block is 'dirty' and a data read request is made to the predetermined block, the bit counter controller transitions the data state of the predetermined block to 'invalid' and uses the current hash function instead of the predetermined block. A computing system using a non-volatile memory module, characterized in that data read is performed on the accessed block.
상기 소정 블록의 데이터 상태가 'dirty'이고, 상기 소정 블록의 데이터를 상기 소정 블록의 address에 대응하는 상기 비휘발성 메모리의 address로 축출하고자 할 때, 상기 비트 카운터 콘트롤러는 상기 소정 블록의 데이터를 상기 비휘발성 메모리의 address로 플러싱 하고, 상기 소정 블록의 데이터 상태를 'dirty'에서 'invalid'로 천이시키는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 11,
When the data state of the predetermined block is 'dirty' and the data of the predetermined block is to be expelled to the address of the non-volatile memory corresponding to the address of the predetermined block, the bit counter controller transfers the data of the predetermined block to the address of the non-volatile memory. A computing system using a non-volatile memory module, characterized in that flushing to an address of non-volatile memory and transitioning the data state of the predetermined block from 'dirty' to 'invalid'.
상기 소정 블록의 데이터 상태가 'clean'이고, 상기 소정 블록에의 데이터 Write 요청이면, 상기 비트 카운터 콘트롤러는 상기 소정 블록의 데이터 상태를 'invalid'로 천이시키고, 상기 소정 블록을 상기 현재 해시 함수로 접근하는 블록에 데이터 Write를 수행하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 11,
If the data state of the predetermined block is 'clean' and there is a request to write data to the predetermined block, the bit counter controller transitions the data state of the predetermined block to 'invalid' and transfers the predetermined block to the current hash function. A computing system using a non-volatile memory module characterized by writing data to an accessed block.
상기 소정 블록의 데이터 상태가 'clean'이고, 상기 소정 블록에의 데이터 Read 요청이면, 상기 비트 카운터 콘트롤러는 상기 소정 블록의 데이터 상태를 'invalid'로 천이시키고, 상기 소정 블록 대신 상기 현재 해시 함수로 접근하는 블록에 데이터 Read를 수행하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 11,
If the data state of the predetermined block is 'clean' and a data read request is made to the predetermined block, the bit counter controller transitions the data state of the predetermined block to 'invalid' and uses the current hash function instead of the predetermined block. A computing system using a non-volatile memory module, characterized in that data read is performed on the accessed block.
상기 소정 블록의 데이터 상태가 'clean'이고, 상기 소정 블록 내 데이터가 상기 비휘발성 메모리로 축출되면, 상기 비트 카운터 콘트롤러는 상기 소정 블록의 데이터 상태를 'clean'에서 'invalid'로 천이시키는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 11,
When the data state of the predetermined block is 'clean' and the data in the predetermined block is expelled to the non-volatile memory, the bit counter controller transitions the data state of the predetermined block from 'clean' to 'invalid'. A computing system using a non-volatile memory module.
상기 DRAM cache 내 소정 블록이 invalid 상태에서, 상기 소정 블록에의 데이터 Write 요청시, 상기 소정 블록에 상기 직전 해시 함수와 현재 해시 함수로 접근하여 모두 miss 이면, 상기 비트 카운터 콘트롤러는 상기 현재 해시 함수를 이용하여 상기 DRAM cache 내 소정 블록의 address에 대응하는 상기 비휘발성 메모리의 address에 저장된 데이터를 상기 DRAM cache 내 소정 블록의 address로 읽어들이고, 상기 DRAM cache 내 소정 블록을 'invalid' 상태에서 'dirty' 상태로 천이시키는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 11,
When a predetermined block in the DRAM cache is invalid and a request is made to write data to the predetermined block, if the predetermined block is accessed with the previous hash function and the current hash function and both miss, the bit counter controller uses the current hash function. Data stored at the address of the non-volatile memory corresponding to the address of the predetermined block in the DRAM cache is read to the address of the predetermined block in the DRAM cache, and the predetermined block in the DRAM cache is changed from 'invalid' to 'dirty'. A computing system using a non-volatile memory module characterized by transitioning between states.
상기 DRAM cache 내 소정 블록이 invalid 상태에서, 상기 소정 블록에의 데이터 Read 요청시, 상기 소정 블록에 상기 직전 해시 함수와 현재 해시 함수로 접근하여 모두 miss 이면, 상기 비트 카운터 콘트롤러는 상기 현재 해시 함수를 이용하여 상기 DRAM cache 내 소정 블록의 address에 대응하는 상기 비휘발성 메모리의 address에 저장된 데이터를 상기 DRAM cache 내 소정 블록의 address로 읽어들이고, 상기 DRAM cache 내 소정 블록을 'invalid' 상태에서 'clean' 상태로 천이시키는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 11,
When a predetermined block in the DRAM cache is invalid and a request is made to read data to the predetermined block, if the predetermined block is accessed with the previous hash function and the current hash function and both miss, the bit counter controller uses the current hash function. Data stored at the address of the non-volatile memory corresponding to the address of the predetermined block in the DRAM cache is read to the address of the predetermined block in the DRAM cache, and the predetermined block in the DRAM cache is changed from 'invalid' to 'clean'. A computing system using a non-volatile memory module characterized by transitioning between states.
상기 DRAM cache 내 소정 블록의 데이터 상태가 'dirty' 이고, 상기 소정 블록에의 데이터 Read 요청 또는 데이터 Write 요청시, 상기 현재 해시 함수로 hit 이면, 데이터 상태를 현 상태로 유지하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 1,
If the data state of a certain block in the DRAM cache is 'dirty' and when a data read request or data write request to the certain block is hit with the current hash function, the data state is maintained in the current state. A computing system using volatile memory modules.
상기 DRAM cache 내 소정 블록의 데이터 상태가 'clean' 이고, 상기 소정 블록에의 데이터 Write 요청시, 상기 현재 해시 함수로 hit 이면, 상기 데이터 상태를 'clean' 에서 'dirty'로 천이시키는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 18,
If the data state of a certain block in the DRAM cache is 'clean' and a hit is made with the current hash function when requesting to write data to the certain block, the data state is transitioned from 'clean' to 'dirty'. A computing system using non-volatile memory modules.
상기 DRAM cache 내 소정 블록의 데이터 상태가 'clean' 이고, 상기 소정 블록에의 데이터 Read 요청시, 상기 현재 해시 함수로 hit 이면, 상기 데이터 상태를 현 상태로 유지하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 18,
A non-volatile memory module characterized in that, if the data state of a certain block in the DRAM cache is 'clean' and a hit is made with the current hash function when a request to read data to the certain block is made, the data state is maintained in the current state. Computing system using .
비휘발성 메모리;
상기 호스트 장치와 상기 비휘발성 메모리 간에 배치되고, 상기 호스트 장치의 데이터를 임시 저장하고, 복수의 세트를 포함하고, 상기 복수의 세트 각각은 복수의 블록을 포함하고, 상기 복수의 블록 각각은 기본 태그와 추가 태그가 결합된 확장 태그를 포함하는 DRAM cache; 및
상기 호스트 장치로부터 복수 비트의 리퀘스트 어드레스를 수신하고, 복수의 세트용 비트 카운터를 이용하여 상기 리퀘스트 어드레스를 계수함으로써 상기 DRAM cache의 해시 함수를 결정하는 메모리 콘트롤러를 포함하고,
상기 메모리 콘트롤러는 상기 DRAM cache 내 상기 복수의 블록 각각의 직전 해시 함수와 현재 해시 함수를 기억하고,
상기 직전 해시 함수를 이용하여 상기 DRAM cache 내 소정 블록에 접근할 때 hit 하는 경우, 상기 소정 블록의 데이터 상태가 'dirty'이고, 상기 소정 블록에의 데이터 Write 요청이면, 상기 메모리 콘트롤러는 상기 소정 블록의 데이터 상태를 'invalid'로 천이시키고, 상기 소정 블록을 상기 현재 해시 함수로 접근하여 데이터 Write를 수행하는 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
host device;
non-volatile memory;
disposed between the host device and the non-volatile memory, temporarily stores data of the host device, and includes a plurality of sets, each of the plurality of sets including a plurality of blocks, each of the plurality of blocks having a basic tag. DRAM cache containing extended tags combined with additional tags; and
a memory controller that receives a plural-bit request address from the host device and determines a hash function of the DRAM cache by counting the request addresses using a plurality of set bit counters;
The memory controller stores the previous hash function and the current hash function of each of the plurality of blocks in the DRAM cache,
When a hit is made when accessing a predetermined block in the DRAM cache using the previous hash function, if the data state of the predetermined block is 'dirty' and a data write request is made to the predetermined block, the memory controller blocks the predetermined block. A computing system using a non-volatile memory module characterized by transitioning the data state to 'invalid' and performing data write by accessing the predetermined block with the current hash function.
상기 DRAM cache 내 소정 블록의 데이터 상태가 'dirty'이고, 상기 소정 블록에의 데이터 Read 요청 또는 데이터 Write 요청시, 상기 소정 블록의 직전 해시 함수나 현재 해시 함수로 hit 하면, 상기 메모리 콘트롤러는 상기 블록의 데이터 상태를 'dirty'로 유지하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 21,
When the data status of a certain block in the DRAM cache is 'dirty' and a request to read data or write data to the certain block occurs, if a hit is made with the previous hash function or the current hash function of the certain block, the memory controller blocks the block. A computing system using a non-volatile memory module, characterized in that the data state is maintained as 'dirty'.
상기 DRAM cache 내 소정 블록의 데이터 상태가 'dirty'이고, 상기 소정 블록의 데이터를 축출하고자 할 때, 상기 메모리 콘트롤러는 상기 블록의 데이터를 플러싱 하고, 상기 소정 블록의 데이터 상태를 'dirty'에서 'invalid'로 천이시키는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 21,
When the data state of a certain block in the DRAM cache is 'dirty' and the data of the certain block is to be evicted, the memory controller flushes the data of the block and changes the data state of the certain block from 'dirty' to ' A computing system using a non-volatile memory module characterized by transition to 'invalid'.
상기 DRAM cache 내 소정 블록의 데이터 상태가 'clean'이고, 상기 소정 블록에의 데이터 Read 요청시, 상기 소정 블록의 직전 해시 함수나 현재 해시 함수(Xc)로 hit 하면, 상기 메모리 콘트롤러는 상기 소정 블록의 데이터 상태를 'clean'으로 유지하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 21,
If the data status of a predetermined block in the DRAM cache is 'clean' and a request to read data to the predetermined block is made with the previous hash function or current hash function (Xc) of the predetermined block, the memory controller blocks the predetermined block. A computing system using a non-volatile memory module, characterized in that the data state is maintained as 'clean'.
상기 DRAM cache 내 소정 블록의 데이터 상태가 'clean'이고, 상기 소정 블록에의 데이터 Write 요청시, 상기 소정 블록의 직전 해시 함수나 현재 해시 함수로 hit 하면, 상기 메모리 콘트롤러는 상기 소정 블록의 데이터 상태를 'clean'에서 'dirty'로 천이시키는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 21,
If the data state of a predetermined block in the DRAM cache is 'clean' and a request to write data to the predetermined block is made with the previous hash function or the current hash function of the predetermined block, the memory controller determines the data state of the predetermined block. A computing system using a non-volatile memory module characterized by transitioning from 'clean' to 'dirty'.
상기 DRAM cache 내 소정 블록의 데이터 상태가 'clean'이고, 상기 소정 블록 내 데이터가 상기 비휘발성 메모리로 축출되면, 상기 메모리 콘트롤러는 상기 소정 블록의 데이터 상태를 'clean'에서 'invalid'로 천이시키는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 21,
When the data state of a certain block in the DRAM cache is 'clean' and the data in the certain block is expelled to the non-volatile memory, the memory controller transitions the data state of the certain block from 'clean' to 'invalid'. A computing system using a non-volatile memory module.
상기 DRAM cache 내 소정 블록의 데이터 상태가 'invalid'이고, 상기 소정 블록에의 데이터 Write 요청시, 상기 소정 블록의 직전 해시 함수와 현재 해시 함수가 모두 miss 이면, 상기 메모리 콘트롤러는 상기 현재 해시 함수를 이용하여 상기 DRAM cache 내 소정 블록의 address에 대응하는 상기 비휘발성 메모리의 address에 저장된 데이터를 상기 DRAM cache 내 소정 블록의 address로 읽어들이고, 상기 DRAM cache 내 소정 블록의 데이터 상태를 'invalid'에서 'dirty'로 천이시키는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 21,
If the data status of a certain block in the DRAM cache is 'invalid' and when requesting to write data to the certain block, both the previous hash function and the current hash function of the certain block are misses, the memory controller uses the current hash function. Data stored at the address of the non-volatile memory corresponding to the address of the predetermined block in the DRAM cache is read to the address of the predetermined block in the DRAM cache, and the data status of the predetermined block in the DRAM cache is changed from 'invalid' to ' A computing system using a non-volatile memory module characterized by transition to 'dirty'.
상기 DRAM cache 내 소정 블록의 데이터 상태가 'invalid'이고, 상기 소정 블록에의 데이터 Read 요청시, 상기 소정 블록의 직전 해시 함수와 현재 해시 함수(Xc)가 모두 miss 이면, 상기 메모리 콘트롤러는 상기 현재 해시 함수를 이용하여 상기 DRAM cache 내 소정 블록의 address에 대응하는 상기 비휘발성 메모리의 address에 저장된 데이터를 상기 DRAM cache 내 소정 블록의 address로 읽어들이고, 상기 DRAM cache 내 소정 블록의 데이터 상태를 'invalid'에서 'clean'으로 천이시키는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 21,
If the data status of a predetermined block in the DRAM cache is 'invalid' and when a request is made to read data to the predetermined block, both the previous hash function and the current hash function (Xc) of the predetermined block are misses, the memory controller Data stored at the address of the non-volatile memory corresponding to the address of the predetermined block in the DRAM cache is read to the address of the predetermined block in the DRAM cache using a hash function, and the data state of the predetermined block in the DRAM cache is changed to 'invalid'. A computing system using a non-volatile memory module characterized by transition from 'to 'clean'.
상기 소정 블록의 데이터 상태가 'dirty'이고, 상기 소정 블록에의 데이터 Read 요청이면, 상기 메모리 콘트롤러는 상기 소정 블록의 데이터 상태를 'invalid'로 천이시키고, 상기 소정 블록 대신 상기 현재 해시 함수로 접근하는 블록에 데이터 Read를 수행하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 21,
If the data state of the predetermined block is 'dirty' and a data read request is made to the predetermined block, the memory controller transitions the data state of the predetermined block to 'invalid' and accesses the current hash function instead of the predetermined block. A computing system using a non-volatile memory module, characterized in that data read is performed on a block.
상기 소정 블록의 데이터 상태가 'dirty'이고, 상기 소정 블록의 데이터를 상기 소정 블록의 address에 대응하는 상기 비휘발성 메모리의 address로 축출하고자 할 때, 상기 메모리 콘트롤러는 상기 소정 블록의 데이터를 상기 비휘발성 메모리의 address로 플러싱 하고, 상기 소정 블록의 데이터 상태를 'dirty'에서 'invalid'로 천이시키는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 31,
When the data state of the predetermined block is 'dirty' and the data of the predetermined block is to be evicted to the address of the non-volatile memory corresponding to the address of the predetermined block, the memory controller transfers the data of the predetermined block to the non-volatile memory. A computing system using a non-volatile memory module, characterized in that flushing to an address of volatile memory and transitioning the data state of the predetermined block from 'dirty' to 'invalid'.
상기 소정 블록의 데이터 상태가 'clean'이고, 상기 소정 블록에의 데이터 Write 요청이면, 상기 메모리 콘트롤러는 상기 소정 블록의 데이터 상태를 'invalid'로 천이시키고, 상기 소정 블록을 상기 현재 해시 함수로 접근하는 블록에 데이터 Write를 수행하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 31,
If the data state of the predetermined block is 'clean' and there is a request to write data to the predetermined block, the memory controller transitions the data state of the predetermined block to 'invalid' and accesses the predetermined block with the current hash function. A computing system using a non-volatile memory module characterized by writing data to a block.
상기 소정 블록의 데이터 상태가 'clean'이고, 상기 소정 블록에의 데이터 Read 요청이면, 상기 메모리 콘트롤러는 상기 소정 블록의 데이터 상태를 'invalid'로 천이시키고, 상기 소정 블록 대신 상기 현재 해시 함수로 접근하는 블록에 데이터 Read를 수행하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 31,
If the data state of the predetermined block is 'clean' and a data read request is made to the predetermined block, the memory controller transitions the data state of the predetermined block to 'invalid' and accesses the current hash function instead of the predetermined block. A computing system using a non-volatile memory module, characterized in that data read is performed on a block.
상기 소정 블록의 데이터 상태가 'clean'이고, 상기 소정 블록 내 데이터가 상기 비휘발성 메모리로 축출되면, 상기 메모리 콘트롤러는 상기 소정 블록의 데이터 상태를 'clean'에서 'invalid'로 천이시키는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 31,
When the data state of the predetermined block is 'clean' and the data in the predetermined block is expelled to the non-volatile memory, the memory controller transitions the data state of the predetermined block from 'clean' to 'invalid'. A computing system using a non-volatile memory module.
상기 DRAM cache 내 소정 블록이 invalid 상태에서, 상기 소정 블록에의 데이터 Write 요청시, 상기 소정 블록에 상기 직전 해시 함수와 현재 해시 함수로 접근하여 모두 miss 이면, 상기 메모리 콘트롤러는 상기 현재 해시 함수를 이용하여 상기 DRAM cache 내 소정 블록의 address에 대응하는 상기 비휘발성 메모리의 address에 저장된 데이터를 상기 DRAM cache 내 소정 블록의 address로 읽어들이고, 상기 DRAM cache 내 소정 블록을 'invalid' 상태에서 'dirty' 상태로 천이시키는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 31,
When a predetermined block in the DRAM cache is invalid and a request is made to write data to the predetermined block, if the predetermined block is accessed using the previous hash function and the current hash function and both miss, the memory controller uses the current hash function. Data stored at the address of the non-volatile memory corresponding to the address of the predetermined block in the DRAM cache is read to the address of the predetermined block in the DRAM cache, and the predetermined block in the DRAM cache is changed from an 'invalid' state to a 'dirty' state. A computing system using a non-volatile memory module characterized by transition to .
상기 DRAM cache 내 소정 블록이 invalid 상태에서, 상기 소정 블록에의 데이터 Read 요청시, 상기 소정 블록에 상기 직전 해시 함수와 현재 해시 함수로 접근하여 모두 miss 이면, 상기 메모리 콘트롤러는 상기 현재 해시 함수를 이용하여 상기 DRAM cache 내 소정 블록의 address에 대응하는 상기 비휘발성 메모리의 address에 저장된 데이터를 상기 DRAM cache 내 소정 블록의 address로 읽어들이고, 상기 DRAM cache 내 소정 블록을 'invalid' 상태에서 'clean' 상태로 천이시키는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 31,
When a predetermined block in the DRAM cache is invalid and a request is made to read data to the predetermined block, if the predetermined block is accessed using the previous hash function and the current hash function and both miss, the memory controller uses the current hash function. Data stored at the address of the non-volatile memory corresponding to the address of the predetermined block in the DRAM cache is read to the address of the predetermined block in the DRAM cache, and the predetermined block in the DRAM cache is changed from an 'invalid' state to a 'clean' state. A computing system using a non-volatile memory module characterized by transition to .
상기 DRAM cache 내 소정 블록의 데이터 상태가 'dirty' 이고, 상기 소정 블록에의 데이터 Read 요청 또는 데이터 Write 요청시, 상기 현재 해시 함수로 hit 이면, 데이터 상태를 현 상태로 유지하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 21,
If the data state of a certain block in the DRAM cache is 'dirty' and when a data read request or data write request to the certain block is hit with the current hash function, the data state is maintained in the current state. A computing system using volatile memory modules.
상기 DRAM cache 내 소정 블록의 데이터 상태가 'clean' 이고, 상기 소정 블록에의 데이터 Write 요청시, 상기 현재 해시 함수로 hit 이면, 상기 데이터 상태를 'clean' 에서 'dirty'로 천이시키는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 38,
If the data state of a certain block in the DRAM cache is 'clean' and a hit is made with the current hash function when requesting to write data to the certain block, the data state is transitioned from 'clean' to 'dirty'. A computing system using non-volatile memory modules.
상기 DRAM cache 내 소정 블록의 데이터 상태가 'clean' 이고, 상기 소정 블록에의 데이터 Read 요청시, 상기 현재 해시 함수로 hit 이면, 상기 데이터 상태를 현 상태로 유지하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
In claim 38,
A non-volatile memory module characterized in that, if the data state of a certain block in the DRAM cache is 'clean' and a hit is made with the current hash function when a request to read data to the certain block is made, the data state is maintained in the current state. Computing system using .
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180090387A KR102668086B1 (en) | 2018-08-02 | 2018-08-02 | Computing system including nonvolatile memory module |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180090387A KR102668086B1 (en) | 2018-08-02 | 2018-08-02 | Computing system including nonvolatile memory module |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200015074A KR20200015074A (en) | 2020-02-12 |
KR102668086B1 true KR102668086B1 (en) | 2024-05-21 |
Family
ID=69569605
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180090387A Active KR102668086B1 (en) | 2018-08-02 | 2018-08-02 | Computing system including nonvolatile memory module |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102668086B1 (en) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050172082A1 (en) | 2004-01-30 | 2005-08-04 | Wei Liu | Data-aware cache state machine |
US20120166756A1 (en) * | 2008-01-23 | 2012-06-28 | Oracle International Corporation | Index generation for cache memories |
US20120324172A1 (en) * | 2011-06-17 | 2012-12-20 | Lsi Corporation | Cache Replacement Using Active Cache Line Counters |
US20180011708A1 (en) * | 2015-12-17 | 2018-01-11 | The Charles Stark Draper Laboratory, Inc. | Techniques for metadata processing |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120079682A (en) * | 2011-01-05 | 2012-07-13 | 삼성전자주식회사 | Memory device having dram cache and system including the memory device |
KR102523141B1 (en) * | 2016-02-15 | 2023-04-20 | 삼성전자주식회사 | Nonvolatile memory module comprising volatile memory device and nonvolatile memory device |
KR102778454B1 (en) * | 2016-03-24 | 2025-03-11 | 삼성전자주식회사 | Method and apparatus for controlling memory |
KR101814047B1 (en) * | 2016-05-12 | 2018-01-02 | 고려대학교 산학협력단 | Memory management apparatus in cache for providing a persistent-consistency of persistent memories and method thereof |
-
2018
- 2018-08-02 KR KR1020180090387A patent/KR102668086B1/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050172082A1 (en) | 2004-01-30 | 2005-08-04 | Wei Liu | Data-aware cache state machine |
US20120166756A1 (en) * | 2008-01-23 | 2012-06-28 | Oracle International Corporation | Index generation for cache memories |
US20120324172A1 (en) * | 2011-06-17 | 2012-12-20 | Lsi Corporation | Cache Replacement Using Active Cache Line Counters |
US20180011708A1 (en) * | 2015-12-17 | 2018-01-11 | The Charles Stark Draper Laboratory, Inc. | Techniques for metadata processing |
Also Published As
Publication number | Publication date |
---|---|
KR20200015074A (en) | 2020-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7051546B2 (en) | Memory system and control method | |
JP5943096B2 (en) | Data migration for composite non-volatile storage | |
JP5492324B1 (en) | Processor system | |
CN104991743B (en) | Loss equalizing method applied to solid state hard disc resistance-variable storing device caching | |
US20080168236A1 (en) | Performance of a cache by detecting cache lines that have been reused | |
KR20210057193A (en) | Hybrid wear leveling operation based on subtotal write counter | |
JP6527951B2 (en) | Data backup apparatus and method | |
CN102841854A (en) | Method and system for executing data reading based on dynamic hierarchical memory cache (hmc) awareness | |
CN103150136A (en) | Implementation method of least recently used (LRU) policy in solid state drive (SSD)-based high-capacity cache | |
KR102354848B1 (en) | Cache Memory Device and Electronic System including the Same | |
CN110347338B (en) | Hybrid memory data exchange processing method, system and readable storage medium | |
CN109359062A (en) | A metadata read cache method, device and device | |
KR102754785B1 (en) | Rinsing of cache lines from common memory pages to memory | |
JP2010097557A (en) | Set associative cache apparatus and cache method | |
US20170161203A1 (en) | Increased memory capacity | |
WO2015087651A1 (en) | Device, program, recording medium, and method for extending service life of memory, | |
WO2016141817A1 (en) | Data backup device and method | |
KR102668086B1 (en) | Computing system including nonvolatile memory module | |
US20190087324A1 (en) | Memory system and method | |
KR101351550B1 (en) | Dual Buffer Architecture and Data Management for Non-Volatile based Main Memory | |
JP2019020965A (en) | Information processing device, program, and information processing method | |
KR101546707B1 (en) | Hybrid main memory-based memory access control method | |
KR102605343B1 (en) | Computing system including nonvolatile memory module and its method | |
CN112181864B (en) | Address tag allocation scheduling and multipath cache write-back method for Path ORAM | |
KR102710288B1 (en) | Computing system using bit counter and its computing method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20180802 |
|
PG1501 | Laying open of application | ||
A201 | Request for examination | ||
PA0201 | Request for examination |
Patent event code: PA02012R01D Patent event date: 20210720 Comment text: Request for Examination of Application Patent event code: PA02011R01I Patent event date: 20180802 Comment text: Patent Application |
|
E902 | Notification of reason for refusal | ||
PE0902 | Notice of grounds for rejection |
Comment text: Notification of reason for refusal Patent event date: 20231218 Patent event code: PE09021S01D |
|
E701 | Decision to grant or registration of patent right | ||
PE0701 | Decision of registration |
Patent event code: PE07011S01D Comment text: Decision to Grant Registration Patent event date: 20240514 |
|
GRNT | Written decision to grant | ||
PR0701 | Registration of establishment |
Comment text: Registration of Establishment Patent event date: 20240517 Patent event code: PR07011E01D |
|
PR1002 | Payment of registration fee |
Payment date: 20240517 End annual number: 3 Start annual number: 1 |
|
PG1601 | Publication of registration |