KR102605343B1 - 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템 및 그 방법 - Google Patents

비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템 및 그 방법 Download PDF

Info

Publication number
KR102605343B1
KR102605343B1 KR1020180068945A KR20180068945A KR102605343B1 KR 102605343 B1 KR102605343 B1 KR 102605343B1 KR 1020180068945 A KR1020180068945 A KR 1020180068945A KR 20180068945 A KR20180068945 A KR 20180068945A KR 102605343 B1 KR102605343 B1 KR 102605343B1
Authority
KR
South Korea
Prior art keywords
bit
volatile memory
tag
dram cache
value
Prior art date
Application number
KR1020180068945A
Other languages
English (en)
Other versions
KR20190141991A (ko
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/ko
Publication of KR20190141991A publication Critical patent/KR20190141991A/ko
Application granted granted Critical
Publication of KR102605343B1 publication Critical patent/KR102605343B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/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

본 발명은 비트 카운터를 사용하여 DRAM cache의 set를 고르게 사용하고, DRAM cache block 중 자주 접근하는 block은 유지하되 자주 접근하지 않은 block은 비휘발성 메모리에 축출함으로써 비휘발성 메모리로의 요청 횟수를 줄여 읽기/쓰기 성능을 향상시키고, 비휘발성 메모리의 수명을 연장할 수 있는 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템 및 그 방법을 제공한다.
본원의 제1 발명에 따른 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템은, 호스트 장치; 비휘발성 메모리; 상기 호스트 장치와 상기 비휘발성 메모리 간에 배치되고, 상기 호스트 장치의 데이터를 임시 저장하고, 복수의 세트를 포함하는 DRAM cache; 상기 호스트 장치로부터 복수 비트의 리퀘스트 어드레스를 수신하는 메모리 콘트롤러; 및 상기 메모리 콘트롤러로부터 상기 리퀘스트 어드레스를 수신하고, 복수의 세트용 비트 카운터를 이용하여 상기 리퀘스트 어드레스를 계수함으로써 상기 DRAM cache의 해시 함수를 결정하는 비트 카운터 콘트롤러를 포함한다.

Description

비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템 및 그 방법{COMPUTING SYSTEM INCLUDING NONVOLATILE MEMORY MODULE AND ITS METHOD}
본 발명은 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템 및 그 방법에 관한 것으로, 더욱 상세하게는 DRAM을 cache로 사용하고 비휘발성 메모리를 저장 장치로 이용하는 하이브리드 메모리에서 DRAM cache에 비트 카운터 기법을 적용하여 비휘발성 메모리로의 접근 횟수를 줄임으로써 읽기/쓰기 성능과 비휘발성 메모리의 수명을 향상시킬 수 있는 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템 및 그 방법에 관한 것이다.
일반적으로 비휘발성 메모리는 non-volatility, high scalability, byte-addressable 등의 장점으로 인하여 DRAM을 대체할 수 있는 메모리로 각광받고 있지만, DRAM에 비해 읽기/쓰기 성능이 현저히 낮고 수명이 짧다는 문제가 있다.
비휘발성 메모리에 DRAM cache를 활용하는 하이브리드 메모리는 비휘발성 메모리로의 읽기/쓰기 요청 횟수를 줄여 메모리의 읽기/쓰기 성능을 향상시키며 비휘발성 메모리의 수명을 향상시킨다.
하지만, DRAM cache 접근이 일부 set에 집중되어 발생하는 경우, 해당 set에 대한 cache miss가 증가하여 비휘발성 메모리로의 데이터 축출(eviction)이 증가하므로 읽기/쓰기 성능과 비휘발성 메모리의 수명을 감소시킨다.
또한, 접근이 자주 발생하는 블록을 DRAM cache에서 비휘발성 메모리로 eviction을 하게 되면 비휘발성 메모리로의 쓰기 요청이 자주 발생하여 읽기/쓰기 성능과 비휘발성 메모리의 수명을 감소시킨다.
US 9092337 Apparatus, system, and method for managing eviction of data US 9529730 Methods for cache line eviction US 9886395 Evicting cached stores
본 발명은 비트 카운터를 사용하여 DRAM cache의 set를 고르게 사용하고, DRAM cache block 중 자주 접근하는 block은 유지하되 자주 접근하지 않은 block은 비휘발성 메모리에 축출함으로써 비휘발성 메모리로의 요청 횟수를 줄여 읽기/쓰기 성능을 향상시키고, 비휘발성 메모리의 수명을 연장할 수 있는 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템 및 그 방법을 제공한다.
본원의 제1 발명에 따른 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템은, 호스트 장치; 비휘발성 메모리; 상기 호스트 장치와 상기 비휘발성 메모리 간에 배치되고, 상기 호스트 장치의 데이터를 임시 저장하고, 복수의 세트를 포함하는 DRAM cache; 상기 호스트 장치로부터 복수 비트의 리퀘스트 어드레스를 수신하는 메모리 콘트롤러; 및 상기 메모리 콘트롤러로부터 상기 리퀘스트 어드레스를 수신하고, 복수의 세트용 비트 카운터를 이용하여 상기 리퀘스트 어드레스를 계수함으로써 상기 DRAM cache의 해시 함수를 결정하는 비트 카운터 콘트롤러를 포함한다.
바람직하게는, 상기 비트 카운터 콘트롤러는, 소정 횟수 동안 상기 복수의 세트용 비트 카운터를 이용하여 상기 리퀘스트 어드레스를 비트별로 계수하여 비트별 계수값을 생성하고, 상기 비트별 계수값에 절대치를 취한 비트별 절대값을 생성하고, 상기 비트별 절대값을 적어도 둘 이상 조합한 비트 조합을 생성하고, 상기 비트 조합 내 비트별 절대값을 합산한 합산값 중 가장 작은 값을 가진 비트 조합에 대응하는 어드레스를 상기 DRAM cache의 해시 함수로 결정하고 상기 해시 함수에 의해 상기 복수의 세트 중 어느 하나를 선택할 수 있다.
바람직하게는, 상기 DRAM cache 내 세트 각각은 상호 식별 가능한 태그를 가진 복수의 블록을 포함하고, 상기 비트 카운터 콘트롤러는 상기 DRAM cache 내 세트 각각에 대응하는 복수의 태그용 비트 카운터를 더 포함할 수 있다.
바람직하게는, 상기 비트 카운터 콘트롤러는 상기 해시 함수에 의해 상기 복수의 세트 중 어느 하나를 선택할 때에 상기 DRAM cache 내 데이터를 상기 비휘발성 메모리로 플러싱 할 수 있다.
바람직하게는, 상기 세트용 비트 카운터는 상기 리퀘스트 어드레스 비트 내 개별 비트가 "1"이면 양의 값으로, 개별 비트가 "0"이면 음의 값으로 계수한다.
바람직하게는, 상기 복수의 태그용 비트 카운터는 상기 복수 비트의 리퀘스트 어드레스 중 상기 해시 함수를 결정하는 인덱스 비트를 제외한 각각의 태그 비트를 계수하고, 상기 비트 카운터 콘트롤러는 상기 DRAM cache 내 소정 세트에 대응하는 상기 태그용 비트 카운터에 계수된 값과 상기 소정 세트 내 각각의 축출 후보 블록 내 각각의 태그 비트를 가산하여 각각의 태그 비트별 합산값을 생성하고, 상기 태그 비트별 합산값에 절대치를 취한 태그 비트별 절대값을 생성하고, 상기 각각의 태그 비트별 절대값을 합산한 태그 합산값 중 가장 작은 값을 가진 축출 후보 블록을 축출 블록으로 선택하여 상기 비휘발성 메모리로 축출하고, 상기 세트용 비트 카운터는 상기 리퀘스트 어드레스 비트 내 개별 비트가 "1"이면 양의 값으로, 개별 비트가 "0"이면 음의 값으로 계수한다.
본원의 제2 발명에 따른 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템은, 호스트 장치; 비휘발성 메모리; 상기 호스트 장치와 상기 비휘발성 메모리 간에 배치되고, 상기 호스트 장치의 데이터를 임시 저장하고, 복수의 세트를 포함하는 DRAM cache; 및 상기 호스트 장치로부터 상기 리퀘스트 어드레스 비트를 수신하고, 상기 메모리 콘트롤러로부터 상기 리퀘스트 어드레스를 수신하고, 복수의 세트용 비트 카운터를 이용하여 상기 리퀘스트 어드레스를 계수함으로써 상기 DRAM cache의 해시 함수를 결정하는 메모리 콘트롤러를 포함한다.
바람직하게는, 상기 메모리 콘트롤러는, 소정 횟수 동안 상기 복수의 세트용 비트 카운터를 이용하여 상기 리퀘스트 어드레스를 비트별로 계수하여 비트별 계수값을 생성하고, 상기 비트별 계수값에 절대치를 취한 비트별 절대값을 생성하고, 상기 비트별 절대값을 적어도 둘 이상 조합한 비트 조합을 생성하고, 상기 비트 조합 내 비트별 절대값을 합산한 합산값 중 가장 작은 값을 가진 비트 조합에 대응하는 어드레스를 상기 DRAM cache의 해시 함수로 결정하고 상기 해시 함수에 의해 상기 복수의 세트 중 어느 하나를 선택할 수 있다.
바람직하게는, 상기 DRAM cache 내 세트 각각은 상호 식별 가능한 태그 비트를 가진 복수의 블록을 포함하고, 상기 메모리 콘트롤러는 상기 DRAM cache 내 세트 각각에 대응하는 복수의 태그용 비트 카운터를 더 포함할 수 있다.
바람직하게는, 상기 메모리 콘트롤러는 상기 해시 함수에 의해 상기 복수의 세트 중 어느 하나를 선택할 때에 상기 DRAM cache 내 데이터를 상기 비휘발성 메모리로 플러싱 할 수 있다.
바람직하게는, 상기 복수의 태그용 비트 카운터는 상기 복수 비트의 리퀘스트 어드레스 중 상기 해시 함수를 결정하는 인덱스 비트를 제외한 각각의 태그 비트를 계수하고, 상기 메모리 콘트롤러는 상기 DRAM cache 내 소정 세트에 대응하는 상기 태그용 비트 카운터에 계수된 값과 상기 소정 세트 내 각각의 축출 후보 블록 내 각각의 태그 비트를 가산하여 각각의 태그 비트별 합산값을 생성하고, 상기 태그 비트별 합산값에 절대치를 취한 태그 비트별 절대값을 생성하고, 상기 각각의 태그 비트별 절대값을 합산한 태그 합산값 중 가장 작은 값을 가진 축출 후보 블록을 축출 블록으로 선택하여 상기 비휘발성 메모리로 축출하고, 상기 세트용 비트 카운터는 상기 리퀘스트 어드레스 비트 내 개별 비트가 "1"이면 양의 값으로, 개별 비트가 "0"이면 음의 값으로 계수할 수 있다.
바람직하게는, 상기 호스트 장치는, 호스트, 서버, 저장 영역 네트워크의 저장 콘트롤러, 워크스테이션, 개인용 컴퓨터, 핸드헬드 컴퓨터, 수퍼컴퓨터, 컴퓨터 클러스터, 네트워크 스위치, 라우터, 데이터베이스, 데이터 획득 시스템, 진단 시스템, 테스트 시스템, 로봇, 포터블 전자 기기, 무선 기기 중 어느 하나일 수 있다.
바람직하게는, 상기 비휘발성 메모리는, ReRAM, PCRAM, MRAM, STTRAM 중 어느 하나일 수 있다.
본원의 제3 발명에 따른 비휘발성 메모리 모듈을 이용한 컴퓨팅 방법은, DRAM cache에 request miss가 발생하는 단계; 비트 카운터 콘트롤러가 태그용 비트 카운터에 저장된 값과 상기 DRAM cache의 소정 세트 내 복수의 축출 후보 블록에 포함된 태그 비트를 가산하여 태그 비트별 합산값을 생성하는 단계; 상기 비트 카운터 콘트롤러가 상기 태그 비트별 합산값에 절대치를 취해 태그 비트별 절대값을 생성하는 단계; 상기 비트 카운터 콘트롤러가 상기 태그 비트별 절대값을 합산하여 상기 축출 후보 블록별로 태그 절대값을 생성하고, 상기 축출 후보 블록별 태그 절대값 중 가장 작은 값을 가진 축출 후보 블록을 축출 블록으로 선택하는 단계; 및 상기 비트 카운터 콘트롤러가 상기 DRAM cache 내 선택된 축출 블록을 비휘발성 메모리로 축출하는 단계를 포함한다.
바람직하게는, 상기 비트 카운터 콘트롤러가 호스트 장치로부터 입력되는 새로운 request address bits 내 태그 비트를 상기 DRAM cache 내 비어 있는 블록에 삽입하는 단계; 및 상기 비트 카운터 콘트롤러가 상기 축출 블록의 태그 비트를 상기 태그용 비트 카운터의 결과값에 가산하여 갱신하는 단계를 더 포함할 수 있다.
본 발명에 따르면, 비트 카운터를 사용하여 DRAM cache의 set를 고르게 사용하고, DRAM cache block 중 자주 접근하는 block은 유지하되 자주 접근하지 않은 block은 비휘발성 메모리에 축출함으로써 비휘발성 메모리로의 요청 횟수를 줄여 읽기/쓰기 성능을 향상시키고, 비휘발성 메모리의 수명을 연장할 수 있다.
도 1은 본 발명의 일실시예에 따른 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템의 전체 블록도,
도 2는 본 발명의 다른 실시예에 따른 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템의 전체 블록도,
도 3은 본 발명의 일실시예에 따른 비휘발성 메모리 모듈 내 비트 카운트를 설명하는 도면,
도 4는 본 발명의 일실시예에 따른 cache DRAM 내 address bits에 대한 access request 처리시 비트 카운터 값 변화를 설명하기 위한 도면,
도 5는 본 발명의 일실시예에 따라 cache DRAM에 BCS 기법을 적용하기 전과 후의 request miss 분포를 나타내는 도면,
도 6은 본 발명의 일실시예에 따라 BCS에서 인덱스 비트의 재설정을 설명하는 도면,
도 7은 본 발명의 일실시예에 따라 cache DRAM에 BCT 기법의 적용을 설명하는 도면, 및
도 8은 본 발명의 일실시예에 따른 BCT 기법 적용 흐름도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예를 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시 예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예는 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
본 명세서에서 사용된 용어는 실시 예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 ‘포함한다(comprises)’ 및/또는 ‘포함하는(comprising)’은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
하나의 소자(elements)가 다른 소자와 ‘접속된(connected to)’ 또는 ‘커플링된(coupled to)’ 이라고 지칭되는 것은, 다른 소자와 직접 연결 또는 커플링 된 경우 또는 중간에 다른 소자를 개재한 경우를 모두 포함한다. 반면, 하나의 소자가 다른 소자와 ‘직접 접속된(directly connected to)’ 또는 ‘직접 커플링된(directly coupled to)’으로 지칭되는 것은 중간에 다른 소자를 개재하지 않은 것을 나타낸다. ‘및/또는’은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
명세서 전문에 걸쳐 동일한 참조 부호는 동일한 구성 요소를 지칭한다. 따라서, 동일한 참조 부호 또는 유사한 참조 부호들은 해당 도면에서 언급 또는 설명되지 않았더라도, 다른 도면을 참조하여 설명될 수 있다. 또한, 참조 부호가 표시되지 않았더라도, 다른 도면들을 참조하여 설명될 수 있다.
본 발명에서 캐시 축출(cache eviction)이라 함은 DRAM cache의 특정 set에서 더 이상 저장할 공간이 없을 경우, 기존에 저장된 block의 데이터를 비휘발성 메모리로 축출하는 행위를 의미한다.
또한, 본 발명에서 플러싱(flush, flushing)이라 함은 DRAM cache의 데이터를 비휘발성 메모리에 덮어 쓰게 하고, DRAM cache를 초기화하는 행위를 의미한다.
또한, 본 발명에 따르면, DRAM cache는 식별 가능한 복수의 세트를 포함하고, 개별 세트는 식별 가능한 복수의 블록을 포함하며, 개별 블록은 서로 식별 가능하도록 각각의 tag를 포함한다.
도 1은 본 발명의 일실시예에 따른 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템의 전체 블록도이다.
본 발명의 일실시예에 따른 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템은 호스트 장치(110), 메모리 콘트롤러(120), 비트 카운터 콘트롤러(130), DRAM cache(140), 및 비휘발성 메모리(150)를 포함한다.
호스트 장치(110)는 호스트, 서버, 저장 영역 네트워크(SAN: storage area network)의 저장 콘트롤러, 워크스테이션, 개인용 컴퓨터, 랩터 컴퓨터, 핸드헬드 컴퓨터, 수퍼컴퓨터, 컴퓨터 클러스터, 네트워크 스위치, 라우터, 또는 응용기기, 데이터베이스 또는 저장 응용기기, 데이터 획득 또는 데이터 캡처 시스템, 진단 시스템, 테스트 시스템, 로봇, 포터블 전자 기기, 무선 기기 등일 수 있다.
본 발명의 일실시예에 따르면, 호스트 장치(110)는 메모리 콘트롤러(120)와 통신할 수 있다. 메모리 콘트롤러(120)는 호스트 장치(110)로부터 read/write request와 request address를 수신한다.
본 발명의 일실시예에 따르면, 메모리 콘트롤러(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들이 존재한다.
본 발명에 따르면, 비휘발성 메모리(150, NVM: non-volatile memory)는 예컨대, ReRAM(resistive RAM)인 경우, 가변 저항부는 저항체(Resistive Material, PCMO막 등)으로 형성될 수 있고, PCRAM(phase change RAM)인 경우 칼코게나이드막으로 형성될 수 있으며, MRAM인 경우 자화물질의 자성층으로 형성될 수 있고, STTRAM(spin-transfer torque RAM)인 경우, 자화물질의 자화 반전 소자층으로 형성될 수 있다.
본 발명의 일실시예에 따르면, 비트 카운터 콘트롤러(130), DRAM cache(140) 및 비휘발성 메모리(150)가 하나의 모듈 형태로 구현될 수 있다.
도 2는 본 발명의 다른 실시예에 따른 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템의 전체 블록도이다.
본 발명의 다른 실시예에 따르면, 메모리 콘트롤러(220) 내에 복수의 세트용 비트 카운터(221)와 복수의 태그용 비트 카운터(223)가 구현될 수 있다.
본 발명의 일실시예에 따르면, 호스트 장치(110)는 메모리 콘트롤러(220)와 통신할 수 있다. 메모리 콘트롤러(120)는 호스트 장치(110)로부터 read/write request와 request address를 수신하고, 호스트 장치(110)로부터 수신되는 request address를 복수의 세트용 비트 카운터(221)와 복수의 태그용 비트 카운터(223)를 이용하여 변경된 request address를 생성하여 출력하고, 데이터를 DRAM cache(140)에 캐싱하고, 캐시 처리된 데이터를 DRAM cache(140)에서 비휘발성 메모리(150)로 축출할 수 있다.
본 발명의 일실시예에 따르면, DRAM cache(140) 및 비휘발성 메모리(150)가 하나의 모듈 형태로 구현될 수 있다.
도 3은 본 발명의 일실시예에 따른 비휘발성 메모리 모듈 내 비트 카운터 동작을 설명하는 도면으로서, 도 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)을 생략하였다.
비트 카운터 콘트롤러(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로 사용할 수 있다.
예컨대, 수신되는 request address가 6 bits이므로, 6개의 세트용 비트 카운터(131)가 필요하고, 세트용 비트 카운터가 210 횟수 계수한다면, 개별 세트용 비트 카운터는 10개의 비트 카운터로 구현될 수 있다. 여기서 10개의 비트 카운터 내 중 1개는 부호 표시용이고, 나머지 9개는 비트 카운트용이다.
그리고, 비트 카운터 콘트롤러(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) 등일 수 있다.
계속해서, 비트 카운터 콘트롤러(130)는 15개의 조합에 대하여 합산한 절대치 합산값의 크기를 비교하고, 상대적으로 가장 작은 절대치 합산값을 가진 조합을 DRAM cache의 index용 해시 함수로 선택할 수 있다. 여기서, 해시 함수(hash function)라 함은 비트 카운터 콘트롤러(130)가 호스트 장치로부터 수신되는 read/write request와 request address를 이용하여 index bits를 찾아내기 위한 인자(factor)를 의미한다. 한편, 절대치를 생성하는 이유는 도 4에서 설명하기로 한다.
이와 같이 소정 횟수 request address를 계수하고, 계수한 절대치 합산값이 가장 작은 조합을 해시 함수로 선택하게 되면, 소정 횟수 동안 해당 set로의 접근 횟수가 나머지 set로의 접근 횟수에 비해 상대적으로 가장 빈번하였음을 의미한다. 이에 따라 DRAM cache 내 set를 고르게 사용할 수 있는 효과가 있다. 이에 대해서는 도 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개의 태그용 비트 카운터를 포함하여 구현될 수 있다.
비트 카운터(131, 133)의 동작은 도 4 및 도 5에서 상세하게 설명하기로 한다.
도 4는 본 발명의 일실시예에 따른 DRAM cache 내 address에 대한 access request 처리시 세트용 비트 카운터 값 변화를 설명하기 위한 도면이다.
본 발명에 따르면, 각각의 request address를 계수하는 방법은 request address가 "1"이면 (+)1로 계수하고, request address가 "0"이면 (-)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"로 계수한다.
이후 제2 address(Addr1) "1 0 0 1 0 1"이 입력되면, 제6 내지 제1 세트용 비트 카운터(BCS5 ~ BCS0)는 "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"로 계수한다.
그런데 6개의 세트용 비트 카운터에 계수된 15개의 비트 조합에 대하여 절대치를 취하고, 이들을 가산한다. 이들 가운데 비트 조합(b1, b0)에 대응하는 제1 및 제2 세트용 비트 카운터(BCS0, BCS1) 각각에 계수된 값 "4" "0"에 절대치를 취하고, 이들을 가산한 값(4+0=4)이 가장 작다. 따라서 비트 조합(b1, b0)을 DRAM cache의 해시 함수로 선택한다.
그리고 6 bits의 request address 중 나머지 4 bits(b5 ~ b2)를 tag로 사용한다.
이와 같이 비트 카운터 콘트롤러(130)는 입력되는 request address를 소정 횟수 계수하여 절대치 합산값이 가장 작은 비트 조합을 해시 함수로 선택함으로써 DRAM cache 내 set를 고르게 사용할 수 있는 효과가 있다.
도 5a는 DRAM cache에 BCS 기법을 적용하기 전의 request miss 분포를 나타내는 도면이고, 도 5b는 본 발명의 일실시예에 따라 DRAM cache에 BCS 기법을 적용한 후의 cache miss 분포를 나타내는 도면이다.
예컨대, 도 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가 발생한다.
하지만, 도 5b에 도시된 바와 같이, 본 발명의 일실시예에 따라 DRAM cache에 BCS 기법을 적용하면, access requests로 동일한 request address가 입력되는 경우에도, set별 접근 집중도를 완화시킬 수 있다.
예컨대, 비트 조합(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이다.
여기서, 15개의 조합에 대하여 모두 절대치를 취하고 가산하여 절대치가 가장 작은 조합을 선별해야 하나, 설명의 편의를 위하여 3개의 조합에 대해서만 설명하였음을 이해하여야 한다.
따라서 비트 조합(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회로 줄어드는 것을 알 수 있다.
도 6은 본 발명의 일실시예에 따라 BCS에서 해시 함수의 재설정을 설명하는 도면이다.
본 발명에 따르면, 비트 카운터 콘트롤러(130)는 6개의 세트용 비트 카운터(131)를 이용하여 해시 함수를 소정 횟수마다 재설정하고, 특정 address를 새로운 해시 함수로 결정하는 순간 DRAM cache(140) 내 데이터들을 비휘발성 메모리(150)로 플러싱(flush) 하여 DRAM cache(140)를 삭제한다.
즉, 비트 카운터 콘트롤러(130)는 이전 구간 Previous Interval(i-1) 동안 세트용 비트 카운터에 카운트 값이 누적되면 현재 구간 Current Interval(i)에서 사용할 해시 함수를 재설정하고, DRAM cache(140) 내 데이터를 비휘발성 메모리(150)로 플러시(flush) 한다.
이후 동일한 방식으로 비트 카운터 콘트롤러(130)는 현재 구간 Current Interval(i) 동안 세트용 비트 카운터에 카운트 값이 누적되면 다음 구간 Next Interval(i+1)에서 사용할 해시 함수를 재설정하고, DRAM cache(140) 내 데이터를 비휘발성 메모리(150)로 플러시(flush) 한다.
여기서, 소정 횟수마다 DRAM cache의 데이터를 비휘발성 메모리로 플러시 하는 이유는 다음과 같다.
이전 구간 Previous Interval(i-1)에 적용되는 해시 함수와 현재 구간 Current Interval(i)에 적용되는 해시 함수가 다르거나 현재 구간 Current Interval(i)에 적용되는 해시 함수와 다음 구간 Next Interval(i+1)에 적용되는 해시 함수가 다르게 되면 소정 데이터를 저장하는 DRAM cache의 address와 비휘발성 메모리의 address가 불일치하게 된다.
이러한 문제점을 해소하기 위하여 개별 구간마다 DRAM cache의 address와 비휘발성 메모리의 address를 일치시키기 위해 매 구간이 시작될 때마다 DRAM cache(140) 내 데이터를 비휘발성 메모리(150)로 플러시(flush) 할 필요가 있다.
도 7은 본 발명의 일실시예에 따라 DRAM cache에 BCT 기법의 적용을 설명하는 도면이고, 도 8은 본 발명의 일실시예에 따른 BCT 기법 적용 흐름도이다.
본 발명의 일실시예에 따르면, 비트 카운터 콘트롤러(130)는 6 bits의 request address 중 2 bits의 index를 제외한 나머지 4 bits를 개별 블록의 tag로 사용한다.
도 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).
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)이 된다.
본 발명에 따르면, 해당 세트의 태그용 비트 카운터(133)에 저장된 값과 개별 블록(block0 ~ block3)의 태그(tag0 ~ tag3)를 각각 가산하는 방법은 request address가 "1"이면 (+)1로 계수하고, request address가 "0"이면 (-)1로 계수한다.
비트 카운터 콘트롤러(130)는 가산한 축출 후보 블록별 결과값의 절대치 합산값이 가장 작은 블록을 축출 블록으로 선택한다(S830). 예컨대, 제2 블록(block1)의 절대치 합산값이 8로 가장 작기 때문에 제2 블록(block1)을 축출 블록으로 선택한다.
비트 카운터 콘트롤러(130)는 DRAM cache(140) 내 선택된 축출 블록인 제2 블록(block1)을 비휘발성 메모리(150)로 축출한다(S840).
비트 카운터 콘트롤러(130)는 호스트 장치(110)로부터 입력되는 새로운 request address를 DRAM cache(140) 내 비어 있는 블록인 제2 블록(block1)에 삽입한다(S850).
마지막으로, 비트 카운터 콘트롤러(130)는 축출되는 tag(1 1 0 1)와 기 저장된 태그용 비트 카운터 결과값 (-4 2 2 0)에 가산하여 새로운 태그용 비트 카운터 결과값 (-3 3 1 -1)으로 갱신한다(S860).
이상, 첨부된 도면을 참조하여 본 발명의 실시 예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예에는 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
110: 호스트 장치
120: 메인 콘트롤러
130: 비트 카운터 콘트롤러
131: 세트용 비트 카운터
133: 태그용 비트 카운터
140: DRAM cache
150: 비휘발성 메모리
220: 메모리 콘트롤러
S810: request miss 발생 단계
S820: BCT 절대치 합산 단계
S830: 최소 절대치 합산값 선택 단계
S840: 선택된 블록 축출 단계
S850: 새로운 블록 삽입 단계
S860: BCT 갱신 단계

Claims (17)

  1. 호스트 장치;
    비휘발성 메모리;
    상기 호스트 장치와 상기 비휘발성 메모리 간에 배치되고, 상기 호스트 장치의 데이터를 임시 저장하고, 복수의 세트를 포함하는 DRAM cache;
    상기 호스트 장치로부터 복수 비트의 리퀘스트 어드레스를 수신하는 메모리 콘트롤러; 및
    상기 메모리 콘트롤러로부터 상기 리퀘스트 어드레스를 수신하고, 복수의 세트용 비트 카운터를 이용하여 상기 리퀘스트 어드레스를 계수함으로써 상기 DRAM cache의 해시 함수를 결정하는 비트 카운터 콘트롤러를 포함하고,
    상기 비트 카운터 콘트롤러는, 상기 복수의 세트용 비트 카운터를 이용하여 해시 함수로 선택할 정도의 횟수 동안 상기 리퀘스트 어드레스를 비트별로 계수하여 비트별 계수값을 생성하고, 상기 비트별 계수값에 절대치를 취한 비트별 절대값을 생성하고, 상기 비트별 절대값을 적어도 둘 이상 조합한 비트 조합을 생성하고, 상기 비트 조합 내 비트별 절대값을 합산한 합산값 중 가장 작은 값을 가진 비트 조합에 대응하는 어드레스를 상기 DRAM cache의 해시 함수로 결정하고 상기 해시 함수에 의해 상기 복수의 세트 중 어느 하나를 선택하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
  2. 삭제
  3. 제1항에 있어서,
    상기 DRAM cache 내 세트 각각은 상호 식별 가능한 태그를 가진 복수의 블록을 포함하고, 상기 비트 카운터 콘트롤러는 상기 DRAM cache 내 세트 각각에 대응하는 복수의 태그용 비트 카운터를 더 포함하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
  4. 제1항에 있어서,
    상기 비트 카운터 콘트롤러는 상기 해시 함수에 의해 상기 복수의 세트 중 어느 하나를 선택할 때에 상기 DRAM cache 내 데이터를 상기 비휘발성 메모리로 플러싱 하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
  5. 제1항에 있어서,
    상기 세트용 비트 카운터는 상기 리퀘스트 어드레스 비트 내 개별 비트가 "1"이면 1로, 개별 비트가 "0"이면 (-)1로 계수하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
  6. 제3항에 있어서,
    상기 복수의 태그용 비트 카운터는 상기 복수 비트의 리퀘스트 어드레스 중 상기 해시 함수를 결정하는 인덱스 비트를 제외한 각각의 태그 비트를 계수하고,
    상기 비트 카운터 콘트롤러는 상기 DRAM cache 내 소정 세트에 대응하는 상기 태그용 비트 카운터에 계수된 값과 상기 소정 세트 내 각각의 축출 후보 블록 내 각각의 태그 비트를 가산하여 각각의 태그 비트별 합산값을 생성하고, 상기 태그 비트별 합산값에 절대치를 취한 태그 비트별 절대값을 생성하고, 상기 각각의 태그 비트별 절대값을 합산한 태그 합산값 중 가장 작은 값을 가진 축출 후보 블록을 축출 블록으로 선택하여 상기 비휘발성 메모리로 축출하고,
    상기 세트용 비트 카운터는 상기 리퀘스트 어드레스 비트 내 개별 비트가 "1"이면 1로, 개별 비트가 "0"이면 (-)1로 계수하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
  7. 호스트 장치;
    비휘발성 메모리;
    상기 호스트 장치와 상기 비휘발성 메모리 간에 배치되고, 상기 호스트 장치의 데이터를 임시 저장하고, 복수의 세트를 포함하는 DRAM cache; 및
    상기 호스트 장치로부터 리퀘스트 어드레스 비트와 리퀘스트 어드레스를 수신하고, 복수의 세트용 비트 카운터를 이용하여 상기 리퀘스트 어드레스를 계수함으로써 상기 DRAM cache의 해시 함수를 결정하는 메모리 콘트롤러를 포함하고,
    상기 메모리 콘트롤러는, 상기 복수의 세트용 비트 카운터를 이용하여 해시 함수로 선택할 정도의 횟수 동안 상기 리퀘스트 어드레스를 비트별로 계수하여 비트별 계수값을 생성하고, 상기 비트별 계수값에 절대치를 취한 비트별 절대값을 생성하고, 상기 비트별 절대값을 적어도 둘 이상 조합한 비트 조합을 생성하고, 상기 비트 조합 내 비트별 절대값을 합산한 합산값 중 가장 작은 값을 가진 비트 조합에 대응하는 어드레스를 상기 DRAM cache의 해시 함수로 결정하고 상기 해시 함수에 의해 상기 복수의 세트 중 어느 하나를 선택하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
  8. 삭제
  9. 제7항에 있어서,
    상기 DRAM cache 내 세트 각각은 상호 식별 가능한 태그 비트를 가진 복수의 블록을 포함하고, 상기 메모리 콘트롤러는 상기 DRAM cache 내 세트 각각에 대응하는 복수의 태그용 비트 카운터를 더 포함하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
  10. 제9항에 있어서,
    상기 메모리 콘트롤러는 상기 해시 함수에 의해 상기 복수의 세트 중 어느 하나를 선택할 때에 상기 DRAM cache 내 데이터를 상기 비휘발성 메모리로 플러싱 하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
  11. 제9항에 있어서,
    상기 세트용 비트 카운터는 상기 리퀘스트 어드레스 비트 내 개별 비트가 "1"이면 1로, 개별 비트가 "0"이면 (-)1로 계수하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
  12. 제9항에 있어서,
    상기 복수의 태그용 비트 카운터는 복수 비트로 형성되는 상기 리퀘스트 어드레스 중 상기 해시 함수를 결정하는 인덱스 비트를 제외한 각각의 태그 비트를 계수하고,
    상기 메모리 콘트롤러는 상기 DRAM cache 내 소정 세트에 대응하는 상기 태그용 비트 카운터에 계수된 값과 상기 소정 세트 내 각각의 축출 후보 블록 내 각각의 태그 비트를 가산하여 각각의 태그 비트별 합산값을 생성하고, 상기 태그 비트별 합산값에 절대치를 취한 태그 비트별 절대값을 생성하고, 상기 각각의 태그 비트별 절대값을 합산한 태그 합산값 중 가장 작은 값을 가진 축출 후보 블록을 축출 블록으로 선택하여 상기 비휘발성 메모리로 축출하고,
    상기 세트용 비트 카운터는 상기 리퀘스트 어드레스 비트 내 개별 비트가 "1"이면 1로, 개별 비트가 "0"이면 (-)1로 계수하는 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
  13. 제1항에 있어서,
    상기 호스트 장치는, 호스트, 서버, 저장 영역 네트워크의 저장 콘트롤러, 워크스테이션, 개인용 컴퓨터, 핸드헬드 컴퓨터, 수퍼컴퓨터, 컴퓨터 클러스터, 네트워크 스위치, 라우터, 데이터베이스, 데이터 획득 시스템, 진단 시스템, 테스트 시스템, 로봇, 포터블 전자 기기, 무선 기기 중 어느 하나인 것을 특징으로 하는
    비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
  14. 제1항에 있어서,
    상기 비휘발성 메모리는, ReRAM, PCRAM, MRAM, STTRAM 중 어느 하나인 것을 특징으로 하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 시스템.
  15. DRAM cache에 request miss가 발생하는 단계;
    비트 카운터 콘트롤러가 태그용 비트 카운터에 저장된 값과 상기 DRAM cache의 소정 세트 내 복수의 축출 후보 블록에 포함된 태그 비트를 가산하여 태그 비트별 합산값을 생성하는 단계;
    상기 비트 카운터 콘트롤러가 상기 태그 비트별 합산값에 절대치를 취해 태그 비트별 절대값을 생성하는 단계;
    상기 비트 카운터 콘트롤러가 상기 태그 비트별 절대값을 합산하여 상기 축출 후보 블록별로 태그 절대값을 생성하고, 상기 축출 후보 블록별 태그 절대값 중 가장 작은 값을 가진 축출 후보 블록을 축출 블록으로 선택하는 단계; 및
    상기 비트 카운터 콘트롤러가 상기 DRAM cache 내 선택된 축출 블록을 비휘발성 메모리로 축출하는 단계
    를 포함하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 방법.
  16. 제15항에 있어서,
    상기 비트 카운터 콘트롤러가 호스트 장치로부터 입력되는 새로운 request address bits 내 태그 비트를 상기 DRAM cache 내 비어 있는 블록에 삽입하는 단계; 및
    상기 비트 카운터 콘트롤러가 상기 축출 후보 블록의 태그 비트를 상기 태그용 비트 카운터의 결과값에 가산하여 갱신하는 단계
    를 더 포함하는 비휘발성 메모리 모듈을 이용한 컴퓨팅 방법.
  17. 제16항에 있어서,
    상기 태그용 비트 카운터는 상기 리퀘스트 어드레스 비트 내 개별 비트가 "1"이면 1로, 개별 비트가 "0"이면 (-)1로 계수하는
    비휘발성 메모리 모듈을 이용한 컴퓨팅 방법.
KR1020180068945A 2018-06-15 2018-06-15 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템 및 그 방법 KR102605343B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180068945A KR102605343B1 (ko) 2018-06-15 2018-06-15 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180068945A KR102605343B1 (ko) 2018-06-15 2018-06-15 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템 및 그 방법

Publications (2)

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

Family

ID=69103832

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180068945A KR102605343B1 (ko) 2018-06-15 2018-06-15 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템 및 그 방법

Country Status (1)

Country Link
KR (1) KR102605343B1 (ko)

Citations (2)

* 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

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150027976A (ko) * 2013-09-05 2015-03-13 에스케이하이닉스 주식회사 3차원 반도체 장치 및 그 제조방법

Patent Citations (2)

* 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

Also Published As

Publication number Publication date
KR20190141991A (ko) 2019-12-26

Similar Documents

Publication Publication Date Title
US7380065B2 (en) Performance of a cache by detecting cache lines that have been reused
US9274959B2 (en) Handling virtual memory address synonyms in a multi-level cache hierarchy structure
Jokar et al. Sequoia: A high-endurance NVM-based cache architecture
US7783836B2 (en) System and method for cache management
US8595463B2 (en) Memory architecture with policy based data storage
US9501419B2 (en) Apparatus, systems, and methods for providing a memory efficient cache
CN107153707B (zh) 一种针对非易失内存的哈希表构建方法及系统
KR102329308B1 (ko) 캐시 교체 정책 방법들 및 시스템들
CN110018971B (zh) 缓存替换技术
US8583874B2 (en) Method and apparatus for caching prefetched data
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
KR102575913B1 (ko) 비대칭 세트 결합된 캐시
KR102440128B1 (ko) 통합된 객체 인터페이스를 위한 메모리 관리 장치, 시스템 및 그 방법
US20170123979A1 (en) Systems, devices, and methods for handling partial cache misses
KR102354848B1 (ko) 캐시 메모리 장치 및 이를 포함하는 전자 시스템
US10366011B1 (en) Content-based deduplicated storage having multilevel data cache
US10048868B2 (en) Replacement of a block with a compressed block to increase capacity of a memory-side cache
CN108628770B (zh) 用于高性能高速缓存的基于近期最少使用的热跟踪机制增强
US10776262B2 (en) Memory system and operating method thereof
KR102605343B1 (ko) 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템 및 그 방법
US10339052B2 (en) Massive access request for out-of-core textures by a parallel processor with limited memory
KR102668086B1 (ko) 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템
US10467137B2 (en) Apparatus, system, integrated circuit die, and method to determine when to bypass a second level cache when evicting modified data from a first level cache
KR102710288B1 (ko) 비트 카운터를 이용하는 컴퓨팅 시스템 및 방법
US10942860B2 (en) Computing system and method using bit counter

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