KR20190141991A - Computing system including nonvolatile memory module and its method - Google Patents

Computing system including nonvolatile memory module and its method Download PDF

Info

Publication number
KR20190141991A
KR20190141991A KR1020180068945A KR20180068945A KR20190141991A KR 20190141991 A KR20190141991 A KR 20190141991A KR 1020180068945 A KR1020180068945 A KR 1020180068945A KR 20180068945 A KR20180068945 A KR 20180068945A KR 20190141991 A KR20190141991 A KR 20190141991A
Authority
KR
South Korea
Prior art keywords
bit
tag
value
dram cache
nonvolatile memory
Prior art date
Application number
KR1020180068945A
Other languages
Korean (ko)
Other versions
KR102605343B1 (en
Inventor
김선욱
이원준
한미선
Original Assignee
에스케이하이닉스 주식회사
고려대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사, 고려대학교 산학협력단 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020180068945A priority Critical patent/KR102605343B1/en
Publication of KR20190141991A publication Critical patent/KR20190141991A/en
Application granted granted Critical
Publication of KR102605343B1 publication Critical patent/KR102605343B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

The present invention provides a computing system including non-volatile memory module, which uses a bit counter to uniformly use a set of a DRAM cache, maintains a frequently-accessed block among DRAM cache blocks and removes an infrequently-accessed block from a non-volatile memory to reduce the number of requests to the non-volatile memory so as to increase read/write performance and extend the lifespan of the non-volatile memory; and a method thereof. According to the present invention, the computing system using a non-volatile memory module comprises: a host device; a non-volatile memory; a DRAM cache disposed between the host device and the non-volatile memory, temporarily storing data of the host device, and including a plurality of sets; a memory controller receiving a request address of a plurality of bits from the host device; and a bit counter controller receiving the request address from the memory controller and counting the request address by using a bit counter for the plurality of sets so as to determine a hash function for the DRAM cache.

Description

비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템 및 그 방법{COMPUTING SYSTEM INCLUDING NONVOLATILE MEMORY MODULE AND ITS METHOD}Computing system including non-volatile memory module and method therefor {COMPUTING SYSTEM INCLUDING NONVOLATILE MEMORY MODULE AND ITS METHOD}

본 발명은 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템 및 그 방법에 관한 것으로, 더욱 상세하게는 DRAM을 cache로 사용하고 비휘발성 메모리를 저장 장치로 이용하는 하이브리드 메모리에서 DRAM cache에 비트 카운터 기법을 적용하여 비휘발성 메모리로의 접근 횟수를 줄임으로써 읽기/쓰기 성능과 비휘발성 메모리의 수명을 향상시킬 수 있는 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템 및 그 방법에 관한 것이다.The present invention relates to a computing system including a nonvolatile memory module and a method thereof, and more particularly, to a non-volatile memory by applying a bit counter technique to a DRAM cache in a hybrid memory using a DRAM as a cache and a nonvolatile memory as a storage device. The present invention relates to a computing system and a method including a nonvolatile memory module capable of improving the read / write performance and the lifetime of the nonvolatile memory by reducing the number of accesses to the volatile memory.

일반적으로 비휘발성 메모리는 non-volatility, high scalability, byte-addressable 등의 장점으로 인하여 DRAM을 대체할 수 있는 메모리로 각광받고 있지만, DRAM에 비해 읽기/쓰기 성능이 현저히 낮고 수명이 짧다는 문제가 있다.In general, non-volatile memory has been spotlighted as a memory that can replace DRAM due to its advantages such as non-volatility, high scalability, and byte-addressable, but it has a problem that its read / write performance is significantly lower and its life is shorter than that of DRAM. .

비휘발성 메모리에 DRAM cache를 활용하는 하이브리드 메모리는 비휘발성 메모리로의 읽기/쓰기 요청 횟수를 줄여 메모리의 읽기/쓰기 성능을 향상시키며 비휘발성 메모리의 수명을 향상시킨다.Hybrid memory, which utilizes DRAM cache for nonvolatile memory, reduces the number of read / write requests to nonvolatile memory, improving memory read / write performance and improving the lifetime of nonvolatile memory.

하지만, DRAM cache 접근이 일부 set에 집중되어 발생하는 경우, 해당 set에 대한 cache miss가 증가하여 비휘발성 메모리로의 데이터 축출(eviction)이 증가하므로 읽기/쓰기 성능과 비휘발성 메모리의 수명을 감소시킨다.However, if the DRAM cache access is concentrated in some sets, the cache miss for that set increases, which increases data eviction into nonvolatile memory, which reduces read / write performance and the lifetime of nonvolatile memory. .

또한, 접근이 자주 발생하는 블록을 DRAM cache에서 비휘발성 메모리로 eviction을 하게 되면 비휘발성 메모리로의 쓰기 요청이 자주 발생하여 읽기/쓰기 성능과 비휘발성 메모리의 수명을 감소시킨다.In addition, when the frequently accessed blocks are evictioned from the DRAM cache to the nonvolatile memory, write requests to the nonvolatile memory frequently occur, thereby reducing the read / write performance and the lifetime of the nonvolatile memory.

US 9092337 Apparatus, system, and method for managing eviction of dataUS 9092337 Apparatus, system, and method for managing eviction of data US 9529730 Methods for cache line evictionUS 9529730 Methods for cache line eviction US 9886395 Evicting cached storesUS 9886395 Evicting cached stores

본 발명은 비트 카운터를 사용하여 DRAM cache의 set를 고르게 사용하고, DRAM cache block 중 자주 접근하는 block은 유지하되 자주 접근하지 않은 block은 비휘발성 메모리에 축출함으로써 비휘발성 메모리로의 요청 횟수를 줄여 읽기/쓰기 성능을 향상시키고, 비휘발성 메모리의 수명을 연장할 수 있는 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템 및 그 방법을 제공한다.According to the present invention, a bit counter is used to evenly use a set of DRAM caches, while maintaining frequently accessed blocks among DRAM cache blocks, and removing infrequently accessed blocks to nonvolatile memory to reduce the number of requests to the nonvolatile memory. A computing system and method are provided that include a nonvolatile memory module that can improve / write performance and extend the life of a nonvolatile memory.

본원의 제1 발명에 따른 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템은, 호스트 장치; 비휘발성 메모리; 상기 호스트 장치와 상기 비휘발성 메모리 간에 배치되고, 상기 호스트 장치의 데이터를 임시 저장하고, 복수의 세트를 포함하는 DRAM cache; 상기 호스트 장치로부터 복수 비트의 리퀘스트 어드레스를 수신하는 메모리 콘트롤러; 및 상기 메모리 콘트롤러로부터 상기 리퀘스트 어드레스를 수신하고, 복수의 세트용 비트 카운터를 이용하여 상기 리퀘스트 어드레스를 계수함으로써 상기 DRAM cache의 해시 함수를 결정하는 비트 카운터 콘트롤러를 포함한다.Computing system using a nonvolatile memory module according to the first invention of the present application, a host device; Nonvolatile memory; A DRAM cache disposed between the host device and the nonvolatile memory, the DRAM cache temporarily storing data of the host device and including a plurality of sets; A memory controller configured to receive a plurality of bit request addresses from the host device; And a bit counter controller that receives the 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 counts the request address bit by bit by using the plurality of set bit counters for a predetermined number of times, and generates a bit-by-bit count value, and bit-by-bit that takes an absolute value in the bit-by-bit count value. Generate an absolute value, generate a bit combination that combines at least two absolute values of each bit, and generate an address corresponding to the bit combination having the smallest value among the sum of the sum of the absolute values of the bits in the bit combination; A hash function of a DRAM cache may be determined and one of the plurality of sets may be selected by the hash function.

바람직하게는, 상기 DRAM cache 내 세트 각각은 상호 식별 가능한 태그를 가진 복수의 블록을 포함하고, 상기 비트 카운터 콘트롤러는 상기 DRAM cache 내 세트 각각에 대응하는 복수의 태그용 비트 카운터를 더 포함할 수 있다.Advantageously, each set in said DRAM cache includes a plurality of blocks having mutually identifiable tags, and said bit counter controller may further comprise a plurality of bit counters for a tag corresponding to each set in said DRAM cache. .

바람직하게는, 상기 비트 카운터 콘트롤러는 상기 해시 함수에 의해 상기 복수의 세트 중 어느 하나를 선택할 때에 상기 DRAM cache 내 데이터를 상기 비휘발성 메모리로 플러싱 할 수 있다.Advantageously, said bit counter controller is capable of flushing data in said DRAM cache to said non-volatile memory when selecting any one of said plurality of sets by said hash function.

바람직하게는, 상기 세트용 비트 카운터는 상기 리퀘스트 어드레스 비트 내 개별 비트가 "1"이면 양의 값으로, 개별 비트가 "0"이면 음의 값으로 계수한다.Advantageously, said set bit counter counts as a positive value if an individual bit in said request address bit is "1" and a negative value if an individual bit is "0".

바람직하게는, 상기 복수의 태그용 비트 카운터는 상기 복수 비트의 리퀘스트 어드레스 중 상기 해시 함수를 결정하는 인덱스 비트를 제외한 각각의 태그 비트를 계수하고, 상기 비트 카운터 콘트롤러는 상기 DRAM cache 내 소정 세트에 대응하는 상기 태그용 비트 카운터에 계수된 값과 상기 소정 세트 내 각각의 축출 후보 블록 내 각각의 태그 비트를 가산하여 각각의 태그 비트별 합산값을 생성하고, 상기 태그 비트별 합산값에 절대치를 취한 태그 비트별 절대값을 생성하고, 상기 각각의 태그 비트별 절대값을 합산한 태그 합산값 중 가장 작은 값을 가진 축출 후보 블록을 축출 블록으로 선택하여 상기 비휘발성 메모리로 축출하고, 상기 세트용 비트 카운터는 상기 리퀘스트 어드레스 비트 내 개별 비트가 "1"이면 양의 값으로, 개별 비트가 "0"이면 음의 값으로 계수한다.Advantageously, said plurality of tag bit counters count each tag bit except an index bit for determining said hash function among said plurality of bit request addresses, and said bit counter controller corresponds to a predetermined set in said DRAM cache. A tag obtained by adding the counted value to the tag bit counter and each tag bit in each eviction candidate block in the predetermined set to generate a sum value for each tag bit, and taking an absolute value to the sum value for each tag bit. Generating an absolute value for each bit, selecting an eviction candidate block having the smallest value among the tag sum values obtained by summing the absolute values for each tag bit as an eviction block and evicting it into the nonvolatile memory; Is a positive value if the individual bit in the request address bit is "1" and negative if the individual bit is "0". Count by value.

본원의 제2 발명에 따른 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템은, 호스트 장치; 비휘발성 메모리; 상기 호스트 장치와 상기 비휘발성 메모리 간에 배치되고, 상기 호스트 장치의 데이터를 임시 저장하고, 복수의 세트를 포함하는 DRAM cache; 및 상기 호스트 장치로부터 상기 리퀘스트 어드레스 비트를 수신하고, 상기 메모리 콘트롤러로부터 상기 리퀘스트 어드레스를 수신하고, 복수의 세트용 비트 카운터를 이용하여 상기 리퀘스트 어드레스를 계수함으로써 상기 DRAM cache의 해시 함수를 결정하는 메모리 콘트롤러를 포함한다.Computing system using a nonvolatile memory module according to the second invention of the present application, a host device; Nonvolatile memory; A DRAM cache disposed between the host device and the nonvolatile memory, the DRAM cache temporarily storing data of the host device and including a plurality of sets; And a memory controller for determining a hash function of the DRAM cache by receiving the request address bit from the host device, receiving the request address from the memory controller, and counting the request address using a plurality of set bit counters. It includes.

바람직하게는, 상기 메모리 콘트롤러는, 소정 횟수 동안 상기 복수의 세트용 비트 카운터를 이용하여 상기 리퀘스트 어드레스를 비트별로 계수하여 비트별 계수값을 생성하고, 상기 비트별 계수값에 절대치를 취한 비트별 절대값을 생성하고, 상기 비트별 절대값을 적어도 둘 이상 조합한 비트 조합을 생성하고, 상기 비트 조합 내 비트별 절대값을 합산한 합산값 중 가장 작은 값을 가진 비트 조합에 대응하는 어드레스를 상기 DRAM cache의 해시 함수로 결정하고 상기 해시 함수에 의해 상기 복수의 세트 중 어느 하나를 선택할 수 있다.Preferably, the memory controller counts the request address bit by bit by using the plurality of set bit counters for a predetermined number of times, and generates a bit-by-bit count value, and the bit-by-bit absolute value that takes an absolute value in the bit-by-bit count value. Generate a value, generate a bit combination that combines at least two absolute values of the bits, and generate an address corresponding to the bit combination having the smallest value among the sum of the sum of the absolute values of the bits in the bit combination; A hash function of a cache may be determined and one of the plurality of sets may be selected by the hash function.

바람직하게는, 상기 DRAM cache 내 세트 각각은 상호 식별 가능한 태그 비트를 가진 복수의 블록을 포함하고, 상기 메모리 콘트롤러는 상기 DRAM cache 내 세트 각각에 대응하는 복수의 태그용 비트 카운터를 더 포함할 수 있다.Preferably, each set in the DRAM cache includes a plurality of blocks having mutually identifiable tag bits, and the memory controller may further include a plurality of tag bit counters corresponding to each set in the DRAM cache. .

바람직하게는, 상기 메모리 콘트롤러는 상기 해시 함수에 의해 상기 복수의 세트 중 어느 하나를 선택할 때에 상기 DRAM cache 내 데이터를 상기 비휘발성 메모리로 플러싱 할 수 있다.Advantageously, the memory controller is capable of flushing data in the DRAM cache to the nonvolatile memory when selecting any one of the plurality of sets by the hash function.

바람직하게는, 상기 복수의 태그용 비트 카운터는 상기 복수 비트의 리퀘스트 어드레스 중 상기 해시 함수를 결정하는 인덱스 비트를 제외한 각각의 태그 비트를 계수하고, 상기 메모리 콘트롤러는 상기 DRAM cache 내 소정 세트에 대응하는 상기 태그용 비트 카운터에 계수된 값과 상기 소정 세트 내 각각의 축출 후보 블록 내 각각의 태그 비트를 가산하여 각각의 태그 비트별 합산값을 생성하고, 상기 태그 비트별 합산값에 절대치를 취한 태그 비트별 절대값을 생성하고, 상기 각각의 태그 비트별 절대값을 합산한 태그 합산값 중 가장 작은 값을 가진 축출 후보 블록을 축출 블록으로 선택하여 상기 비휘발성 메모리로 축출하고, 상기 세트용 비트 카운터는 상기 리퀘스트 어드레스 비트 내 개별 비트가 "1"이면 양의 값으로, 개별 비트가 "0"이면 음의 값으로 계수할 수 있다.Advantageously, said plurality of tag bit counters count each tag bit except an index bit for determining said hash function of said plurality of bit request addresses, and said memory controller corresponds to a predetermined set in said DRAM cache. A tag bit obtained by adding the counted value to the tag bit counter and each tag bit in each eviction candidate block in the predetermined set to generate a sum value for each tag bit, and taking an absolute value to the sum value for each tag bit. Generates an absolute value for each tag, selects an eviction candidate block having the smallest value among the tag sum values obtained by summing the absolute values for each tag bit, and extracts the extracted candidate block into the nonvolatile memory; A positive value if the individual bit in the request address bit is "1", a negative value if the individual bit is "0". It may coefficient.

바람직하게는, 상기 호스트 장치는, 호스트, 서버, 저장 영역 네트워크의 저장 콘트롤러, 워크스테이션, 개인용 컴퓨터, 핸드헬드 컴퓨터, 수퍼컴퓨터, 컴퓨터 클러스터, 네트워크 스위치, 라우터, 데이터베이스, 데이터 획득 시스템, 진단 시스템, 테스트 시스템, 로봇, 포터블 전자 기기, 무선 기기 중 어느 하나일 수 있다.Preferably, the host device comprises a host, a server, a storage controller of a storage area network, a workstation, a personal computer, a handheld computer, a supercomputer, a computer cluster, a network switch, a router, a database, a data acquisition system, a diagnostic system, It may be one of a test system, a robot, a portable electronic device, and a wireless device.

바람직하게는, 상기 비휘발성 메모리는, ReRAM, PCRAM, MRAM, STTRAM 중 어느 하나일 수 있다.Preferably, the nonvolatile memory may be any one of ReRAM, PCRAM, MRAM, and STTRAM.

본원의 제3 발명에 따른 비휘발성 메모리 모듈을 이용한 컴퓨팅 방법은, DRAM cache에 request miss가 발생하는 단계; 비트 카운터 콘트롤러가 태그용 비트 카운터에 저장된 값과 상기 DRAM cache의 소정 세트 내 복수의 축출 후보 블록에 포함된 태그 비트를 가산하여 태그 비트별 합산값을 생성하는 단계; 상기 비트 카운터 콘트롤러가 상기 태그 비트별 합산값에 절대치를 취해 태그 비트별 절대값을 생성하는 단계; 상기 비트 카운터 콘트롤러가 상기 태그 비트별 절대값을 합산하여 상기 축출 후보 블록별로 태그 절대값을 생성하고, 상기 축출 후보 블록별 태그 절대값 중 가장 작은 값을 가진 축출 후보 블록을 축출 블록으로 선택하는 단계; 및 상기 비트 카운터 콘트롤러가 상기 DRAM cache 내 선택된 축출 블록을 비휘발성 메모리로 축출하는 단계를 포함한다.Computing method using a nonvolatile memory module according to the third invention of the present invention, the step of generating a request miss in the DRAM cache; Generating, by a bit counter controller, a sum value for each tag bit by adding a value stored in a bit counter for a tag and tag bits included in a plurality of eviction candidate blocks in a predetermined set of the DRAM cache; Generating, by the bit counter controller, an absolute value of the tag bit sum value to generate an absolute value of each tag bit; Generating, by the bit counter controller, the absolute value of each tag bit by adding the absolute value of each tag bit, and generating an absolute tag value of each of the evicted candidate blocks, and selecting an evicted candidate block having the smallest value among the absolute values of the tags of the evicted candidate blocks as the evicted block; ; And extracting, by the bit counter controller, the selected eviction block in the DRAM cache into nonvolatile memory.

바람직하게는, 상기 비트 카운터 콘트롤러가 호스트 장치로부터 입력되는 새로운 request address bits 내 태그 비트를 상기 DRAM cache 내 비어 있는 블록에 삽입하는 단계; 및 상기 비트 카운터 콘트롤러가 상기 축출 블록의 태그 비트를 상기 태그용 비트 카운터의 결과값에 가산하여 갱신하는 단계를 더 포함할 수 있다.Advantageously, the bit counter controller inserts a tag bit in a new request address bits input from a host device into an empty block in said DRAM cache; And updating, by the bit counter controller, adding a tag bit of the eviction block to a result value of the tag bit counter.

본 발명에 따르면, 비트 카운터를 사용하여 DRAM cache의 set를 고르게 사용하고, DRAM cache block 중 자주 접근하는 block은 유지하되 자주 접근하지 않은 block은 비휘발성 메모리에 축출함으로써 비휘발성 메모리로의 요청 횟수를 줄여 읽기/쓰기 성능을 향상시키고, 비휘발성 메모리의 수명을 연장할 수 있다.According to the present invention, a bit counter is used to evenly use a set of DRAM caches, while maintaining frequently accessed blocks among DRAM cache blocks, and removing infrequently accessed blocks into nonvolatile memory, the number of requests to the nonvolatile memory is determined. This can improve read / write performance and extend the life of nonvolatile memory.

도 1은 본 발명의 일실시예에 따른 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템의 전체 블록도,
도 2는 본 발명의 다른 실시예에 따른 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템의 전체 블록도,
도 3은 본 발명의 일실시예에 따른 비휘발성 메모리 모듈 내 비트 카운트를 설명하는 도면,
도 4는 본 발명의 일실시예에 따른 cache DRAM 내 address bits에 대한 access request 처리시 비트 카운터 값 변화를 설명하기 위한 도면,
도 5는 본 발명의 일실시예에 따라 cache DRAM에 BCS 기법을 적용하기 전과 후의 request miss 분포를 나타내는 도면,
도 6은 본 발명의 일실시예에 따라 BCS에서 인덱스 비트의 재설정을 설명하는 도면,
도 7은 본 발명의 일실시예에 따라 cache DRAM에 BCT 기법의 적용을 설명하는 도면, 및
도 8은 본 발명의 일실시예에 따른 BCT 기법 적용 흐름도이다.
1 is a block diagram of a computing system including a nonvolatile memory module according to an embodiment of the present invention;
2 is an overall block diagram of a computing system including a nonvolatile memory module according to another embodiment of the present invention;
3 is a diagram illustrating a bit count in a nonvolatile memory module according to one embodiment of the present invention;
4 is a diagram illustrating a change in a bit counter value when an access request is processed for address bits in a cache DRAM according to an embodiment of the present invention;
5 is a diagram illustrating request miss distribution before and after applying a BCS scheme to a cache DRAM according to an embodiment of the present invention;
6 is a diagram illustrating resetting of an index bit in a BCS according to one embodiment of the present invention;
7 is a diagram illustrating application of a BCT technique to a cache DRAM according to an embodiment of the present invention; and
8 is a flow chart of applying a BCT technique according to an embodiment of the present invention.

본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예를 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시 예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예는 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. Advantages and features of the present invention, and methods for achieving them will be apparent with reference to the embodiments described below in detail in conjunction with the accompanying drawings. However, the present invention is not limited to the embodiments disclosed below, but may be implemented in various forms, and only the present embodiments are intended to complete the disclosure of the present invention, and the general knowledge in the art to which the present invention pertains. It is provided to fully convey the scope of the invention to those skilled in the art, and the present invention is defined only by the scope of the claims.

본 명세서에서 사용된 용어는 실시 예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 ‘포함한다(comprises)’ 및/또는 ‘포함하는(comprising)’은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. In this specification, the singular also includes the plural unless specifically stated otherwise in the phrase. As used herein, the words "comprises" and / or "comprising" refer to the presence of one or more other components, steps, operations and / or elements. Or does not exclude additions.

하나의 소자(elements)가 다른 소자와 ‘접속된(connected to)’ 또는 ‘커플링된(coupled to)’ 이라고 지칭되는 것은, 다른 소자와 직접 연결 또는 커플링 된 경우 또는 중간에 다른 소자를 개재한 경우를 모두 포함한다. 반면, 하나의 소자가 다른 소자와 ‘직접 접속된(directly connected to)’ 또는 ‘직접 커플링된(directly coupled to)’으로 지칭되는 것은 중간에 다른 소자를 개재하지 않은 것을 나타낸다. ‘및/또는’은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.When one element is referred to as being 'connected to' or 'coupled to' another element, it may be directly connected or coupled to another element or through another element in between. This includes all cases. On the other hand, when one device is referred to as 'directly connected to' or 'directly coupled to' with another device, the device does not include another device in the middle. 'And / or' includes each and all combinations of one or more of the items mentioned.

명세서 전문에 걸쳐 동일한 참조 부호는 동일한 구성 요소를 지칭한다. 따라서, 동일한 참조 부호 또는 유사한 참조 부호들은 해당 도면에서 언급 또는 설명되지 않았더라도, 다른 도면을 참조하여 설명될 수 있다. 또한, 참조 부호가 표시되지 않았더라도, 다른 도면들을 참조하여 설명될 수 있다. Like reference numerals refer to like elements throughout the specification. Accordingly, the same or similar reference numerals may be described with reference to other drawings, even if not mentioned or described in the corresponding drawings. Also, although reference numerals are not indicated, they may be described with reference to other drawings.

본 발명에서 캐시 축출(cache eviction)이라 함은 DRAM cache의 특정 set에서 더 이상 저장할 공간이 없을 경우, 기존에 저장된 block의 데이터를 비휘발성 메모리로 축출하는 행위를 의미한다.In the present invention, cache eviction refers to the act of extracting data of a previously stored block into nonvolatile memory when there is no more space to store in a specific set of DRAM cache.

또한, 본 발명에서 플러싱(flush, flushing)이라 함은 DRAM cache의 데이터를 비휘발성 메모리에 덮어 쓰게 하고, DRAM cache를 초기화하는 행위를 의미한다.In addition, in the present invention, flushing means flushing the data of the DRAM cache onto the nonvolatile memory and initializing the DRAM cache.

또한, 본 발명에 따르면, DRAM cache는 식별 가능한 복수의 세트를 포함하고, 개별 세트는 식별 가능한 복수의 블록을 포함하며, 개별 블록은 서로 식별 가능하도록 각각의 tag를 포함한다.Further, 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 as to be mutually identifiable.

도 1은 본 발명의 일실시예에 따른 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템의 전체 블록도이다.1 is an overall block diagram of a computing system including a nonvolatile memory module according to an embodiment of the present invention.

본 발명의 일실시예에 따른 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템은 호스트 장치(110), 메모리 콘트롤러(120), 비트 카운터 콘트롤러(130), DRAM cache(140), 및 비휘발성 메모리(150)를 포함한다.A computing system including a nonvolatile 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 nonvolatile memory 150. It includes.

호스트 장치(110)는 호스트, 서버, 저장 영역 네트워크(SAN: storage area network)의 저장 콘트롤러, 워크스테이션, 개인용 컴퓨터, 랩터 컴퓨터, 핸드헬드 컴퓨터, 수퍼컴퓨터, 컴퓨터 클러스터, 네트워크 스위치, 라우터, 또는 응용기기, 데이터베이스 또는 저장 응용기기, 데이터 획득 또는 데이터 캡처 시스템, 진단 시스템, 테스트 시스템, 로봇, 포터블 전자 기기, 무선 기기 등일 수 있다.The 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. Devices, databases or storage applications, data acquisition or data capture systems, diagnostic systems, test systems, robots, portable electronic devices, wireless devices, and the like.

본 발명의 일실시예에 따르면, 호스트 장치(110)는 메모리 콘트롤러(120)와 통신할 수 있다. 메모리 콘트롤러(120)는 호스트 장치(110)로부터 read/write request와 request address를 수신한다.According to an 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 a 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 an 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 sets the request addresses received from the memory controller 120 into a plurality of bit counters for sets B131 (BCS). And a plurality of bit counters for tag (133, BCT) to generate and output the changed request address, cache the data in the DRAM cache, and cache the data in the DRAM cache 140. It can evict into the memory 150. Here, the eviction from the DRAM cache 140 to the nonvolatile memory 150 means that the data stored in the predetermined address of the DRAM cache 140 has the same address as the predetermined address of the DRAM cache 140. It means that the data stored in the corresponding address and the data stored in the predetermined address of the DRAM cache 140 is deleted. On the other hand, in general, the storage capacity of the DRAM cache is significantly smaller than the storage capacity of the nonvolatile memory, and in some areas of the nonvolatile memory, there are multiple addresses and the same addresses in the DRAM cache.

본 발명에 따르면, 비휘발성 메모리(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, when the non-volatile memory (150, NVM) is, for example, a ReRAM (resistive RAM), the variable resistor unit may be formed of a resistive material (Resistive Material, PCMO film, etc.), and the PCRAM (phase change RAM) may be formed as a chalcogenide layer, and in the case of MRAM, it may be formed as a magnetic layer of a magnetic material, and in the case of spin-transfer torque RAM (STTRAM), it may be formed as a magnetization reversal element layer of a magnetic material. have.

본 발명의 일실시예에 따르면, 비트 카운터 콘트롤러(130), DRAM cache(140) 및 비휘발성 메모리(150)가 하나의 모듈 형태로 구현될 수 있다.According to an embodiment of the present invention, the bit counter controller 130, the DRAM cache 140, and the nonvolatile memory 150 may be implemented in one module form.

도 2는 본 발명의 다른 실시예에 따른 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템의 전체 블록도이다.2 is an overall block diagram of a computing system including a nonvolatile memory module according to another embodiment of the present invention.

본 발명의 다른 실시예에 따르면, 메모리 콘트롤러(220) 내에 복수의 세트용 비트 카운터(221)와 복수의 태그용 비트 카운터(223)가 구현될 수 있다. According to another exemplary 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 an 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 stores a plurality of set bit counters 221 and a plurality of tag bit counters based on the request addresses received from the host device 110. The changed request address may be generated and output using the memory 223, the data may be cached in the DRAM cache 140, and the cached data may be extracted from the DRAM cache 140 to the nonvolatile memory 150.

본 발명의 일실시예에 따르면, DRAM cache(140) 및 비휘발성 메모리(150)가 하나의 모듈 형태로 구현될 수 있다.According to an embodiment of the present invention, the DRAM cache 140 and the nonvolatile memory 150 may be implemented in one module form.

도 3은 본 발명의 일실시예에 따른 비휘발성 메모리 모듈 내 비트 카운터 동작을 설명하는 도면으로서, 도 1에 기반하여 설명하기로 한다.FIG. 3 is a diagram illustrating a bit counter operation in a nonvolatile memory module according to an embodiment of the present invention, and will be described with reference to 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), and the individual set includes a plurality of blocks (blocks 0 to 3). The block includes each tag Tag 0, Tag 1, ..., and stores data Data0, Data1, ... of a predetermined size for each tag. In FIG. 3, the third block and the fourth block 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를 tag로 사용할 수 있다. When the bit counter controller 130 receives a read / write request and a request address (b5, b4, b3, b2, b1, b0) from the memory controller 120, six sets of bit counters in the bit counter controller 130 are present. (131: BCS0, BCS1, BCS2, BCS3, BCS4, BCS5) respectively count the request addresses sequentially received for a predetermined number of times. Here, any 2 bits of the 6-bit request address can be used as an index and the remaining 4 bits can be used as a tag.

예컨대, 수신되는 request address가 6 bits이므로, 6개의 세트용 비트 카운터(131)가 필요하고, 세트용 비트 카운터가 210 횟수 동안 계수한다면, 개별 세트용 비트 카운터는 10개의 비트 카운터로 구현될 수 있다. 여기서 10개의 비트 카운터 내 중 1개는 부호 표시용이고, 나머지 9개는 비트 카운트용이다.For example, since the received request address is 6 bits, if six sets of bit counters 131 are required and the set bits counter counts for 2 10 times, the individual sets of bit counters may be implemented as 10 bits counters. have. Here, one of the ten bit counters is for sign display and the remaining nine are for bit count.

그리고, 비트 카운터 콘트롤러(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) 등일 수 있다.The bit counter controller 130 generates absolute values for each of the six bits counted by the individual set bit counters 131, and generates 15 combinations by combining the generated absolute values by two. That is, a combination of selecting two of six can be made 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) and the like.

계속해서, 비트 카운터 콘트롤러(130)는 15개의 조합에 대하여 합산한 절대치 합산값의 크기를 비교하고, 상대적으로 가장 작은 절대치 합산값을 가진 조합을 DRAM cache의 index용 해시 함수로 선택할 수 있다. 여기서, 해시 함수(hash function)라 함은 비트 카운터 콘트롤러(130)가 호스트 장치로부터 수신되는 read/write request와 request address를 이용하여 index bits를 찾아내기 위한 인자(factor)를 의미한다. 한편, 절대치를 생성하는 이유는 도 4에서 설명하기로 한다. Subsequently, the bit counter controller 130 may compare the magnitudes of the sums of the absolute values summed over the 15 combinations, and select the combination having the relatively smallest sum value as the hash function for indexing the DRAM cache. Here, the hash function refers to a factor for the bit counter controller 130 to find index bits using a read / write request and a request address received from the host device. Meanwhile, the reason for generating the absolute value will be described with reference to FIG. 4.

이와 같이 소정 횟수 동안 request address를 계수하고, 계수한 절대치 합산값이 가장 작은 조합을 해시 함수로 선택하게 되면, 소정 횟수 동안 해당 set로의 접근 횟수가 나머지 set로의 접근 횟수에 비해 상대적으로 가장 빈번하였음을 의미한다. 이에 따라 DRAM cache 내 set를 고르게 사용할 수 있는 효과가 있다. 이에 대해서는 도 5에서 예를 들어 설명하기로 한다.As such, when the request address is counted for a predetermined number of times, and the combination with the smallest absolute value is selected as the hash function, the number of accesses to the corresponding set is the most frequent for the predetermined number of times. it means. Accordingly, there is an effect that the set in the DRAM cache can be used evenly. This will be described with reference to 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 bit counter 133 for the tag in the bit counter controller 130 counts individual tag bits in the corresponding set each time a request miss occurs, selects a block having the smallest counted absolute value of the tag bits, and selects a nonvolatile memory. At 150, the address is extracted to the same address as the DRAM cache. According to the present invention, since the bit counter 133 for a tag may be implemented one by one and includes four sets (set 00, set 01, set 10, and set 11), the bit counter controller 130 has four It can be implemented by including a bit counter for a tag.

비트 카운터(131, 133)의 동작은 도 4 및 도 5에서 상세하게 설명하기로 한다.The operation of the bit counters 131 and 133 will be described in detail with reference to FIGS. 4 and 5.

도 4는 본 발명의 일실시예에 따른 DRAM cache 내 address에 대한 access request 처리시 세트용 비트 카운터 값 변화를 설명하기 위한 도면이다.FIG. 4 is a diagram illustrating a change of a set bit counter value when an access request is processed 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, the method for counting each request address counts as (+) 1 when the request address is "1", and counts as (-) 1 when the request address is "0".

초기에는 제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 inputted, 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 are counted 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" 로 계수한다.Then, 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 manner, when the mth address (Addr (m-1)) "1 1 0 0 0 1" is input, the sixth to first set bit counters BCS5 to BCS0 are set to "-5 5 9 6 0 4 Count as "

그런데 6개의 세트용 비트 카운터에 계수된 15개의 비트 조합에 대하여 절대치를 취하고, 이들을 가산한다. 이들 가운데 비트 조합(b1, b0)에 대응하는 제1 및 제2 세트용 비트 카운터(BCS0, BCS1) 각각에 계수된 값 "4" "0"에 절대치를 취하고, 이들을 가산한 값(4+0=4)이 가장 작다. 따라서 비트 조합(b1, b0)을 DRAM cache의 해시 함수로 선택한다. By the way, the absolute values are taken for the 15 bit combinations counted in the 6 set bit counters, and they are added. Among these, the absolute value is taken from the value "4" "0" counted in each of the first and second set bit counters BCS0 and BCS1 corresponding to the bit combinations b1 and b0, and the values (4 + 0) are added. = 4) is the smallest. Therefore, bit combinations b1 and b0 are selected as hash functions of the DRAM cache.

그리고 6 bits의 request address 중 나머지 4 bits(b5 ~ b2)를 tag로 사용한다.And the remaining 4 bits (b5 ~ b2) of the 6 bits request address is used as a tag.

이와 같이 비트 카운터 콘트롤러(130)는 소정 횟수 동안 입력되는 request address를 계수하여 절대치 합산값이 가장 작은 비트 조합을 해시 함수로 선택함으로써 DRAM cache 내 set를 고르게 사용할 수 있는 효과가 있다.As such, the bit counter controller 130 counts the request address input for a predetermined number of times and selects the bit combination having the smallest absolute value as a hash function, thereby enabling the use of a set in the DRAM cache evenly.

도 5a는 DRAM cache에 BCS 기법을 적용하기 전의 request miss 분포를 나타내는 도면이고, 도 5b는 본 발명의 일실시예에 따라 DRAM cache에 BCS 기법을 적용한 후의 cache miss 분포를 나타내는 도면이다.FIG. 5A illustrates a request miss distribution before applying a BCS scheme to a DRAM cache, and FIG. 5B illustrates a cache miss distribution after applying a BCS scheme to a 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, in the request miss distribution before applying the BCS scheme to the DRAM cache illustrated in FIG. 5A, when the access request is processed by fixing the index bits to the lower bits b1 and b0, access to a specific set is concentrated. You can see that. That is, five out of six accesses approach index bits "0 0". As a result, four request misses occur and four write requests occur in the nonvolatile memory.

하지만, 도 5b에 도시된 바와 같이, 본 발명의 일실시예에 따라 DRAM cache에 BCS 기법을 적용하면, access requests로 동일한 request address가 입력되는 경우에도, set별 접근 집중도를 완화시킬 수 있다.However, as shown in FIG. 5B, when the BCS scheme is applied to the DRAM cache according to an embodiment of the present invention, even when the same request address is input as access requests, the concentration of access for each set may be alleviated.

예컨대, 비트 조합(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, the absolute value is taken as the value "0" "0" counted in the fifth and sixth set bit counters BCS4 and BCS5 corresponding to the bit combinations b5 and b4, and the sum of these values is zero. to be. The absolute value is taken as the value " 2 " " 2 " respectively counted in the third and fourth set bit counters BCS2 and BCS3 corresponding to the bit combinations b3 and b2. The absolute value is taken as the value " 0 " " 1 " counted in the first and second set bit counters BCS0 and BCS1 respectively corresponding to the bit combinations b1 and b0.

여기서, 15개의 조합에 대하여 모두 절대치를 취하고 가산하여 절대치가 가장 작은 조합을 선별해야 하나, 설명의 편의를 위하여 3개의 조합에 대해서만 설명하였음을 이해하여야 한다.Here, one of the 15 combinations must take the absolute value and add it to select the combination with the smallest absolute value, but it should be understood that only three combinations have been described for convenience of description.

따라서 비트 조합(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, bit combinations b5 and b4 are selected as hash functions. 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 the star access is distributed. As a result, two request misses occur, indicating that the write request to the nonvolatile memory is also reduced by two times.

도 6은 본 발명의 일실시예에 따라 BCS에서 해시 함수의 재설정을 설명하는 도면이다. 6 is a diagram illustrating resetting of a hash function in a 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 the six sets of 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 flushed by flushing them to the nonvolatile memory 150.

즉, 비트 카운터 콘트롤러(130)는 이전 구간 Previous Interval(i-1) 동안 세트용 비트 카운터에 카운트 값이 누적되면 현재 구간 Current Interval(i)에서 사용할 해시 함수를 재설정하고, DRAM cache(140) 내 데이터를 비휘발성 메모리(150)로 플러시(flush) 한다. That is, when the count value is accumulated in the set bit counter during the previous interval Previous Interval (i-1), the bit counter controller 130 resets the hash function to be used in the current interval Current Interval (i), The data is flushed to the nonvolatile memory 150.

이후 동일한 방식으로 비트 카운터 콘트롤러(130)는 현재 구간 Current Interval(i) 동안 세트용 비트 카운터에 카운트 값이 누적되면 다음 구간 Next Interval(i+1)에서 사용할 해시 함수를 재설정하고, DRAM cache(140) 내 데이터를 비휘발성 메모리(150)로 플러시(flush) 한다. Then, in the same manner, when the count value is accumulated in the set bit counter during the current interval Current Interval (i), the bit counter controller 130 resets the hash function to be used in the next interval Next Interval (i + 1), and the DRAM cache (140) ) Flush the data into the nonvolatile memory 150.

여기서, 소정 횟수마다 DRAM cache의 데이터를 비휘발성 메모리로 플러시 하는 이유는 다음과 같다. Here, the reason for flushing the data of the DRAM cache to the nonvolatile 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 seawater function applied to the current interval Current Interval (i) are different or the seawater function applied to the current interval Current Interval (i) and the next interval Next Interval (i + If the seawater function applied to 1) is different, the address of the DRAM cache storing the predetermined data and the address of the nonvolatile memory are inconsistent.

이러한 문제점을 해소하기 위하여 개별 구간마다 DRAM cache의 address와 비휘발성 메모리의 address를 일치시키기 위해 매 구간이 시작될 때마다 DRAM cache(140) 내 데이터를 비휘발성 메모리(150)로 플러시(flush) 할 필요가 있다.To solve this problem, in order to match the address of the DRAM cache and the address of the nonvolatile memory in each section, it is necessary to flush the data in the DRAM cache 140 to the nonvolatile memory 150 at the beginning of each section. There is.

도 7은 본 발명의 일실시예에 따라 DRAM cache에 BCT 기법의 적용을 설명하는 도면이고, 도 8은 본 발명의 일실시예에 따른 BCT 기법 적용 흐름도이다. 7 is a diagram illustrating an application of a BCT technique to a DRAM cache according to an embodiment of the present invention, and FIG. 8 is a flowchart illustrating an application of the BCT technique according to an embodiment of the present invention.

본 발명의 일실시예에 따르면, 비트 카운터 콘트롤러(130)는 6 bits의 request address 중 2 bits의 index를 제외한 나머지 4 bits를 개별 블록의 tag로 사용한다. According to an embodiment of the present invention, the bit counter controller 130 uses the remaining 4 bits except the index of 2 bits among the 6-bit request address as a tag of the individual block.

도 7에 도시된 바와 같이, DRAM cache(140) 내 i번째 set에 4개의 블록(block0 ~ block3)을 위한 각각의 태그(tag0 ~ tag3)가 이미 저장되어 있다고 가정하자. 이때 DRAM cache(140) 내 제2 블록(blokc1)에 새로운 tag를 저장하고자 하면, DRAM cache(140) 내 제2 블록(block1)에 request address용 tag가 이미 저장되어 있기 때문에 request miss가 발생한다(S810). As shown in FIG. 7, it is assumed that respective tags tag0 to tag3 for four blocks block0 to block3 are already stored in the i-th set in the DRAM cache 140. At this time, if a new tag is to be stored in the second block (blokc1) in the DRAM cache 140, a request miss occurs because a tag for the request address is already stored in the second block (block1) in the DRAM cache 140 ( S810).

request miss가 발생하면, 비트 카운터 콘트롤러(130)는 해당 세트의 태그용 비트 카운터(133)에 저장된 값과 개별 블록(block0 ~ block3)의 태그(tag0 ~ tag3)를 각각 가산한다(S820). 예컨대, 태그용 비트 카운터(133)에 저장된 값(-4 2 2 0)과 제4 태그(tag3)의 태그 비트(1 1 0 0)를 가산하면 (-3 3 2 -1)이 된다. 태그용 비트 카운터(133)에 저장된 값(-4 2 2 0)과 제3 태그(tag2)의 태그비트(0 1 0 0)를 가산하면 (-5 3 1 -1)이 된다. 태그용 비트 카운터(133)에 저장된 값(-4 2 2 0)과제2 태그(tag1)의 태그 비트(1 1 0 1)를 가산하면 (-3 3 1 -1)이 된다. 마지막으로, 태그용 비트 카운터(133)에 저장된 값(-4 2 2 0)과 제1 태그(tag0)의 태그 비트(0 1 0 1)를 가산하면 (-4 4 -2 2)이 된다. If a request miss occurs, the bit counter controller 130 adds the values stored in the corresponding bit counter 133 and the tags tag0 to tag3 of the individual blocks block0 to block3 (S820). For example, when the value (-4 2 2 0) stored in the tag bit counter 133 and the tag bit 1 1 0 0 of the fourth tag tag3 are added, it is (-3 3 2 -1). When the value (-4 2 2 0) stored in the tag bit counter 133 and the tag bit (0 1 0 0) of the third tag tag2 are added, it becomes (-5 3 1 -1). When the value (-4 2 2 0) stored in the tag bit counter 133 and the tag bit 1 1 0 1 of the second tag tag1 are added, it becomes (-3 3 1 -1). Finally, the value (-4 2 2 0) stored in the tag bit counter 133 and the tag bit (0 1 0 1) of the first tag tag0 are added to (-4 4-2 2).

본 발명에 따르면, 해당 세트의 태그용 비트 카운터(133)에 저장된 값과 개별 블록(block0 ~ block3)의 태그(tag0 ~ tag3)를 각각 가산하는 방법은 request address가 "1"이면 (+)1로 계수하고, request address가 "0"이면 (-)1로 계수한다. According to the present invention, the method of adding the value stored in the set bit counter for tag 133 and the tags tag0 to tag3 of individual blocks block0 to block3 respectively is (+) 1 when the request address is "1". If the request address is "0", it counts as (-) 1.

비트 카운터 콘트롤러(130)는 가산한 축출 후보 블록별 결과값의 절대치 합산값이 가장 작은 블록을 축출 블록으로 선택한다(S830). 예컨대, 제2 블록(block1)의 절대치 합산값이 8로 가장 작기 때문에 제2 블록(block1)을 축출 블록으로 선택한다.The bit counter controller 130 selects the block having the smallest absolute value sum of the added result values for each eviction candidate block as the eviction block (S830). For example, since the absolute sum value of the second block block1 is the smallest of eight, the second block block1 is selected as the eviction block.

비트 카운터 콘트롤러(130)는 DRAM cache(140) 내 선택된 축출 블록인 제2 블록(block1)을 비휘발성 메모리(150)로 축출한다(S840).The bit counter controller 130 evicts the second block block1, which is the selected ejection block in the DRAM cache 140, to the nonvolatile memory 150 (S840).

비트 카운터 콘트롤러(130)는 호스트 장치(110)로부터 입력되는 새로운 request address를 DRAM cache(140) 내 비어 있는 블록인 제2 블록(block1)에 삽입한다(S850).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 (S850).

마지막으로, 비트 카운터 콘트롤러(130)는 축출되는 tag(1 1 0 1)와 기 저장된 태그용 비트 카운터 결과값 (-4 2 2 0)에 가산하여 새로운 태그용 비트 카운터 결과값 (-3 3 1 -1)으로 갱신한다(S860).Finally, the bit counter controller 130 adds the evicted tag (1 1 0 1) and the pre-stored bit counter result value (-4 2 2 0) to the new bit counter result value (-3 3 1). -1) (S860).

이상, 첨부된 도면을 참조하여 본 발명의 실시 예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예에는 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.While the embodiments of the present invention have been described above with reference to the accompanying drawings, those skilled in the art to which the present invention pertains may implement the present invention in other specific forms without changing the technical spirit or essential features thereof. You will understand that. Therefore, it should be understood that the embodiments described above are exemplary in all respects and not restrictive.

110: 호스트 장치
120: 메인 콘트롤러
130: 비트 카운터 콘트롤러
131: 세트용 비트 카운터
133: 태그용 비트 카운터
140: DRAM cache
150: 비휘발성 메모리
220: 메모리 콘트롤러
S810: request miss 발생 단계
S820: BCT 절대치 합산 단계
S830: 최소 절대치 합산값 선택 단계
S840: 선택된 블록 축출 단계
S850: 새로운 블록 삽입 단계
S860: BCT 갱신 단계
110: host device
120: main controller
130: beat counter controller
131: bit counter for set
133: Bit counter for tag
140: DRAM cache
150: nonvolatile memory
220: memory controller
S810: step of request miss occurrence
S820: BCT Absolute Summing Step
S830: selecting the minimum absolute sum value
S840: Selected Block Ejection Step
S850: Insert new block step
S860: BCT update step

Claims (17)

호스트 장치;
비휘발성 메모리;
상기 호스트 장치와 상기 비휘발성 메모리 간에 배치되고, 상기 호스트 장치의 데이터를 임시 저장하고, 복수의 세트를 포함하는 DRAM cache;
상기 호스트 장치로부터 복수 비트의 리퀘스트 어드레스를 수신하는 메모리 콘트롤러; 및
상기 메모리 콘트롤러로부터 상기 리퀘스트 어드레스를 수신하고, 복수의 세트용 비트 카운터를 이용하여 상기 리퀘스트 어드레스를 계수함으로써 상기 DRAM cache의 해시 함수를 결정하는 비트 카운터 콘트롤러
를 포함하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
A host device;
Nonvolatile memory;
A DRAM cache disposed between the host device and the nonvolatile memory, the DRAM cache temporarily storing data of the host device and including a plurality of sets;
A memory controller configured to receive a plurality of bit request addresses from the host device; And
A bit counter controller that receives the 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
Computing system using a nonvolatile memory module comprising a.
제1항에 있어서,
상기 비트 카운터 콘트롤러는, 소정 횟수 동안 상기 복수의 세트용 비트 카운터를 이용하여 상기 리퀘스트 어드레스를 비트별로 계수하여 비트별 계수값을 생성하고, 상기 비트별 계수값에 절대치를 취한 비트별 절대값을 생성하고, 상기 비트별 절대값을 적어도 둘 이상 조합한 비트 조합을 생성하고, 상기 비트 조합 내 비트별 절대값을 합산한 합산값 중 가장 작은 값을 가진 비트 조합에 대응하는 어드레스를 상기 DRAM cache의 해시 함수로 결정하고 상기 해시 함수에 의해 상기 복수의 세트 중 어느 하나를 선택하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
The method of claim 1,
The bit counter controller generates the count value for each bit by counting the request address bit by bit using the plurality of set bit counters for a predetermined number of times, and generates the bit value absolute value that takes an absolute value in the bit count value. Generate a bit combination that combines at least two absolute values of each bit, and hash an address corresponding to the bit combination having the smallest value among the sum of the sum of the absolute values of the bits in the bit combination; Determining a function and selecting one of the plurality of sets by the hash function.
제2항에 있어서,
상기 DRAM cache 내 세트 각각은 상호 식별 가능한 태그를 가진 복수의 블록을 포함하고, 상기 비트 카운터 콘트롤러는 상기 DRAM cache 내 세트 각각에 대응하는 복수의 태그용 비트 카운터를 더 포함하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
The method of claim 2,
Each set in the DRAM cache includes a plurality of blocks having mutually identifiable tags, and the bit counter controller further comprises a plurality of tag bit counters corresponding to each set in the DRAM cache. Computing system.
제2항에 있어서,
상기 비트 카운터 콘트롤러는 상기 해시 함수에 의해 상기 복수의 세트 중 어느 하나를 선택할 때에 상기 DRAM cache 내 데이터를 상기 비휘발성 메모리로 플러싱 하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
The method of claim 2,
And the bit counter controller flushes data in the DRAM cache to the nonvolatile memory when selecting any one of the plurality of sets by the hash function.
제2항에 있어서,
상기 세트용 비트 카운터는 상기 리퀘스트 어드레스 비트 내 개별 비트가 "1"이면 양의 값으로, 개별 비트가 "0"이면 음의 값으로 계수하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
The method of claim 2,
And the set bit counter counts a positive value if the individual bit in the request address bit is "1" and a negative value if the individual bit is "0".
제3항에 있어서,
상기 복수의 태그용 비트 카운터는 상기 복수 비트의 리퀘스트 어드레스 중 상기 해시 함수를 결정하는 인덱스 비트를 제외한 각각의 태그 비트를 계수하고,
상기 비트 카운터 콘트롤러는 상기 DRAM cache 내 소정 세트에 대응하는 상기 태그용 비트 카운터에 계수된 값과 상기 소정 세트 내 각각의 축출 후보 블록 내 각각의 태그 비트를 가산하여 각각의 태그 비트별 합산값을 생성하고, 상기 태그 비트별 합산값에 절대치를 취한 태그 비트별 절대값을 생성하고, 상기 각각의 태그 비트별 절대값을 합산한 태그 합산값 중 가장 작은 값을 가진 축출 후보 블록을 축출 블록으로 선택하여 상기 비휘발성 메모리로 축출하고,
상기 세트용 비트 카운터는 상기 리퀘스트 어드레스 비트 내 개별 비트가 "1"이면 양의 값으로, 개별 비트가 "0"이면 음의 값으로 계수하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
The method of claim 3,
The plurality of tag bit counters count each tag bit except the index bit that determines the hash function among the plurality of bit request addresses.
The bit counter controller adds a counted value to the tag bit counter corresponding to a predetermined set in the DRAM cache and each tag bit in each eviction candidate block in the predetermined set to generate a sum value for each tag bit. Generate an absolute value for each tag bit taking an absolute value to the total value for each tag bit, and select an eviction candidate block having the smallest value among the tag total values obtained by summing the absolute values for each tag bit as an eviction block; Evicted into the nonvolatile memory,
And the set bit counter counts a positive value if the individual bit in the request address bit is "1" and a negative value if the individual bit is "0".
호스트 장치;
비휘발성 메모리;
상기 호스트 장치와 상기 비휘발성 메모리 간에 배치되고, 상기 호스트 장치의 데이터를 임시 저장하고, 복수의 세트를 포함하는 DRAM cache; 및
상기 호스트 장치로부터 상기 리퀘스트 어드레스 비트를 수신하고, 상기 메모리 콘트롤러로부터 상기 리퀘스트 어드레스를 수신하고, 복수의 세트용 비트 카운터를 이용하여 상기 리퀘스트 어드레스를 계수함으로써 상기 DRAM cache의 해시 함수를 결정하는 메모리 콘트롤러
를 포함하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
A host device;
Nonvolatile memory;
A DRAM cache disposed between the host device and the nonvolatile memory, the DRAM cache temporarily storing data of the host device and including a plurality of sets; And
A memory controller that determines the hash function of the DRAM cache by receiving the request address bit from the host device, receiving the request address from the memory controller, and counting the request address using a plurality of set bit counters
Computing system using a nonvolatile memory module comprising a.
제7항에 있어서,
상기 메모리 콘트롤러는, 소정 횟수 동안 상기 복수의 세트용 비트 카운터를 이용하여 상기 리퀘스트 어드레스를 비트별로 계수하여 비트별 계수값을 생성하고, 상기 비트별 계수값에 절대치를 취한 비트별 절대값을 생성하고, 상기 비트별 절대값을 적어도 둘 이상 조합한 비트 조합을 생성하고, 상기 비트 조합 내 비트별 절대값을 합산한 합산값 중 가장 작은 값을 가진 비트 조합에 대응하는 어드레스를 상기 DRAM cache의 해시 함수로 결정하고 상기 해시 함수에 의해 상기 복수의 세트 중 어느 하나를 선택하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
The method of claim 7, wherein
The memory controller generates the count value for each bit by counting the request address bit by bit using the plurality of set bit counters for a predetermined number of times, and generates the bit value absolute value having the absolute value in the bit count value. And generating a bit combination that combines at least two absolute values of the bits, and converting an address corresponding to the bit combination having the smallest value among the sum of the sum of the absolute values of the bits in the bit combination to the hash function of the DRAM cache. And select one of the plurality of sets by the hash function.
제8항에 있어서,
상기 DRAM cache 내 세트 각각은 상호 식별 가능한 태그 비트를 가진 복수의 블록을 포함하고, 상기 메모리 콘트롤러는 상기 DRAM cache 내 세트 각각에 대응하는 복수의 태그용 비트 카운터를 더 포함하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
The method of claim 8,
Each set in the DRAM cache includes a plurality of blocks having mutually identifiable tag bits, and the memory controller further comprises a plurality of tag bit counters corresponding to each of the sets in the DRAM cache. Computing system.
제9항에 있어서,
상기 메모리 콘트롤러는 상기 해시 함수에 의해 상기 복수의 세트 중 어느 하나를 선택할 때에 상기 DRAM cache 내 데이터를 상기 비휘발성 메모리로 플러싱 하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
The method of claim 9,
And the memory controller flushes data in the DRAM cache into the nonvolatile memory when selecting one of the plurality of sets by the hash function.
제9항에 있어서,
상기 세트용 비트 카운터는 상기 리퀘스트 어드레스 비트 내 개별 비트가 "1"이면 양의 값으로, 개별 비트가 "0"이면 음의 값으로 계수하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
The method of claim 9,
And the set bit counter counts a positive value if the individual bit in the request address bit is "1" and a negative value if the individual bit is "0".
제9항에 있어서,
상기 복수의 태그용 비트 카운터는 상기 복수 비트의 리퀘스트 어드레스 중 상기 해시 함수를 결정하는 인덱스 비트를 제외한 각각의 태그 비트를 계수하고,
상기 메모리 콘트롤러는 상기 DRAM cache 내 소정 세트에 대응하는 상기 태그용 비트 카운터에 계수된 값과 상기 소정 세트 내 각각의 축출 후보 블록 내 각각의 태그 비트를 가산하여 각각의 태그 비트별 합산값을 생성하고, 상기 태그 비트별 합산값에 절대치를 취한 태그 비트별 절대값을 생성하고, 상기 각각의 태그 비트별 절대값을 합산한 태그 합산값 중 가장 작은 값을 가진 축출 후보 블록을 축출 블록으로 선택하여 상기 비휘발성 메모리로 축출하고,
상기 세트용 비트 카운터는 상기 리퀘스트 어드레스 비트 내 개별 비트가 "1"이면 양의 값으로, 개별 비트가 "0"이면 음의 값으로 계수하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
The method of claim 9,
The plurality of tag bit counters count each tag bit except the index bit that determines the hash function among the plurality of bit request addresses.
The memory controller adds the counted value to the tag bit counter corresponding to the predetermined set in the DRAM cache and each tag bit in each eviction candidate block in the predetermined set to generate a sum value for each tag bit. Generating an absolute value for each tag bit taking an absolute value to the total value for each tag bit, selecting an eviction candidate block having the smallest value among the tag total values for which the absolute value for each tag bit is added, and selecting the eviction block; Evicted into non-volatile memory,
And the set bit counter counts a positive value if the individual bit in the request address bit is "1" and a negative value if the individual bit is "0".
제1항에 있어서,
상기 호스트 장치는, 호스트, 서버, 저장 영역 네트워크의 저장 콘트롤러, 워크스테이션, 개인용 컴퓨터, 핸드헬드 컴퓨터, 수퍼컴퓨터, 컴퓨터 클러스터, 네트워크 스위치, 라우터, 데이터베이스, 데이터 획득 시스템, 진단 시스템, 테스트 시스템, 로봇, 포터블 전자 기기, 무선 기기 중 어느 하나인 것을 특징으로 하는
비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
The method of claim 1,
The host device may include a host, a server, a storage controller of a storage area network, a workstation, a personal computer, a handheld computer, a supercomputer, a computer cluster, a network switch, a router, a database, a data acquisition system, a diagnostic system, a test system, a robot. The portable electronic device may be any one of a wireless device.
Computing system using nonvolatile memory module.
제1항에 있어서,
상기 비휘발성 메모리는, ReRAM, PCRAM, MRAM, STTRAM 중 어느 하나인 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
The method of claim 1,
The nonvolatile memory is a computing system using a nonvolatile memory module, characterized in that any one of ReRAM, PCRAM, MRAM, STTRAM.
DRAM cache에 request miss가 발생하는 단계;
비트 카운터 콘트롤러가 태그용 비트 카운터에 저장된 값과 상기 DRAM cache의 소정 세트 내 복수의 축출 후보 블록에 포함된 태그 비트를 가산하여 태그 비트별 합산값을 생성하는 단계;
상기 비트 카운터 콘트롤러가 상기 태그 비트별 합산값에 절대치를 취해 태그 비트별 절대값을 생성하는 단계;
상기 비트 카운터 콘트롤러가 상기 태그 비트별 절대값을 합산하여 상기 축출 후보 블록별로 태그 절대값을 생성하고, 상기 축출 후보 블록별 태그 절대값 중 가장 작은 값을 가진 축출 후보 블록을 축출 블록으로 선택하는 단계; 및
상기 비트 카운터 콘트롤러가 상기 DRAM cache 내 선택된 축출 블록을 비휘발성 메모리로 축출하는 단계
를 포함하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 방법.
Generating a request miss in the DRAM cache;
Generating, by a bit counter controller, a sum value for each tag bit by adding a value stored in a bit counter for a tag and tag bits included in a plurality of eviction candidate blocks in a predetermined set of the DRAM cache;
Generating, by the bit counter controller, an absolute value of the tag bit sum value to generate an absolute value of each tag bit;
Generating a tag absolute value for each of the evicted candidate blocks by summing the absolute values of the tag bits by the bit counter controller, and selecting the evicted candidate block having the smallest value among the tag absolute values of the evicted candidate blocks as the evicted block; ; And
The bit counter controller evicting a selected eviction block in the DRAM cache into non-volatile memory
Computing method using a nonvolatile memory module comprising a.
제15항에 있어서,
상기 비트 카운터 콘트롤러가 호스트 장치로부터 입력되는 새로운 request address bits 내 태그 비트를 상기 DRAM cache 내 비어 있는 블록에 삽입하는 단계; 및
상기 비트 카운터 콘트롤러가 상기 축출 블록의 태그 비트를 상기 태그용 비트 카운터의 결과값에 가산하여 갱신하는 단계
를 더 포함하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 방법.
The method of claim 15,
The bit counter controller inserting a tag bit in a new request address bits input from a host device into an empty block in the DRAM cache; And
Updating, by the bit counter controller, adding a tag bit of the eviction block to a result value of the tag bit counter
Computing method using a nonvolatile memory module further comprising.
제16항에 있어서,
상기 태그용 비트 카운터는 상기 리퀘스트 어드레스 비트 내 개별 비트가 "1"이면 양의 값으로, 개별 비트가 "0"이면 음의 값으로 계수하는
비휘발성 메모리 모듈을 이용한 컴퓨팅 방법.
The method of claim 16,
The tag bit counter counts positive values when the individual bits in the request address bits are "1" and negative values when the individual bits are "0".
Computing method using a nonvolatile memory module.
KR1020180068945A 2018-06-15 2018-06-15 Computing system including nonvolatile memory module and its method KR102605343B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180068945A KR102605343B1 (en) 2018-06-15 2018-06-15 Computing system including nonvolatile memory module and its method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180068945A KR102605343B1 (en) 2018-06-15 2018-06-15 Computing system including nonvolatile memory module and its method

Publications (2)

Publication Number Publication Date
KR20190141991A true KR20190141991A (en) 2019-12-26
KR102605343B1 KR102605343B1 (en) 2023-11-23

Family

ID=69103832

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180068945A KR102605343B1 (en) 2018-06-15 2018-06-15 Computing system including nonvolatile memory module and its method

Country Status (1)

Country Link
KR (1) KR102605343B1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
KR20150027976A (en) * 2013-09-05 2015-03-13 에스케이하이닉스 주식회사 3 Dimension Semiconductor Device And Method of Manufacturing The same

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
KR20150027976A (en) * 2013-09-05 2015-03-13 에스케이하이닉스 주식회사 3 Dimension Semiconductor Device And Method of Manufacturing The same

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
US 9092337 Apparatus, system, and method for managing eviction of data
US 9529730 Methods for cache line eviction
US 9886395 Evicting cached stores

Also Published As

Publication number Publication date
KR102605343B1 (en) 2023-11-23

Similar Documents

Publication Publication Date Title
JP6916751B2 (en) Hybrid memory module and its operation method
US10387315B2 (en) Region migration cache
US7380065B2 (en) Performance of a cache by detecting cache lines that have been reused
Jokar et al. Sequoia: A high-endurance NVM-based cache architecture
US7783836B2 (en) System and method for cache management
US8806137B2 (en) Cache replacement using active cache line counters
US20170235681A1 (en) Memory system and control method of the same
US9501419B2 (en) Apparatus, systems, and methods for providing a memory efficient cache
CN110018971B (en) cache replacement technique
US20110252215A1 (en) Computer memory with dynamic cell density
US8583874B2 (en) Method and apparatus for caching prefetched data
KR102329308B1 (en) Cache replacement policy methods and systems
US10997080B1 (en) Method and system for address table cache management based on correlation metric of first logical address and second logical address, wherein the correlation metric is incremented and decremented based on receive order of the first logical address and the second logical address
KR102354848B1 (en) Cache Memory Device and Electronic System including the Same
US20170123979A1 (en) Systems, devices, and methods for handling partial cache misses
US10366011B1 (en) Content-based deduplicated storage having multilevel data cache
US8949530B2 (en) Dynamic index selection in a hardware cache
US20150212744A1 (en) Method and system of eviction stage population of a flash memory cache of a multilayer cache system
US11836092B2 (en) Non-volatile storage controller with partial logical-to-physical (L2P) address translation table
KR102605343B1 (en) Computing system including nonvolatile memory module and its method
KR102668086B1 (en) Computing system including nonvolatile memory module
US9251070B2 (en) Methods and apparatus for multi-level cache hierarchies
US8756362B1 (en) Methods and systems for determining a cache address
US10942859B2 (en) Computing system and method using bit counter
US9165088B2 (en) Apparatus and method for multi-mode storage

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant