KR20200008759A - 캐시 메모리 및 이를 포함하는 메모리 시스템, 캐시 메모리의 축출 방법 - Google Patents

캐시 메모리 및 이를 포함하는 메모리 시스템, 캐시 메모리의 축출 방법 Download PDF

Info

Publication number
KR20200008759A
KR20200008759A KR1020180082829A KR20180082829A KR20200008759A KR 20200008759 A KR20200008759 A KR 20200008759A KR 1020180082829 A KR1020180082829 A KR 1020180082829A KR 20180082829 A KR20180082829 A KR 20180082829A KR 20200008759 A KR20200008759 A KR 20200008759A
Authority
KR
South Korea
Prior art keywords
cache
memory
sets
data
host
Prior art date
Application number
KR1020180082829A
Other languages
English (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 KR1020180082829A priority Critical patent/KR20200008759A/ko
Priority to US16/287,778 priority patent/US11221965B2/en
Priority to CN201910594058.6A priority patent/CN110727610B/zh
Priority to TW108124280A priority patent/TWI797354B/zh
Publication of KR20200008759A publication Critical patent/KR20200008759A/ko

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
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0877Cache access modes
    • G06F12/0886Variable-length word access
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms

Landscapes

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

Abstract

캐시 메모리는, 호스트와 메모리 간의 통신에 사용되는 캐시 메모리에 있어서, 상기 메모리의 데이터 청크(chunk) 사이즈는 상기 호스트의 데이터 청크 사이즈의 N배이고(N은 2이상의 정수), 상기 캐시 메모리는 다수의 캐시 세트들을 포함하고, 상기 다수의 캐시 세트들 각각은 해당 캐시 세트의 벨리드(valid) 비트; N개의 더티(dirty) 비트들; 태그; 및 상기 N개의 더티 비트들 각각에 대응하고, 각각이 상기 호스트의 데이터 청크 사이즈와 동일한 데이터를 포함하는 N개의 데이터 셋들을 포함할 수 있다.

Description

캐시 메모리 및 이를 포함하는 메모리 시스템, 캐시 메모리의 축출 방법 {CACHE MEMORY AMD MEMORY SYSTEM INCLUDING THE SAME, EVICTION METHOD OF CACHE MEMORY}
본 특허 문헌은 캐시 메모리를 포함하는 메모리 시스템에 관한 것이다.
최근 RRAM(Resistive Random Access Memory), PCRAM(Phase-Change Random Access Memory), MRAM(Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory) 등의 차세대 메모리들에 대한 연구가 활발하게 수행되고 있는데, 차세대 메모리들의 동작 속도는 아직 원하는 속도에 미치지 못하고 있으며 차세대 메모리들의 결함률도 아직 원하는 수준에 미치지 못하고 있다. 또한, 차세대 메모리들은 내구성(endurance)에 문제가 있어 여러번 억세스되면 수명이 급속도로 줄어드는 문제점을 가지고 있다. 그러므로 차세대 메모리들의 동작 속도를 보조해주고 억세스 회수를 줄여줄 캐시 메모리가 요구된다.
한편, 차세대 메모리 뿐만이 아니라 모든 종류의 메모리들은 다양한 종류의 호스트(host)와 동작할 수 있는데, 호스트의 종류마다 청크 사이즈가 다를 수 있다. 따라서 호스트의 데이터 청크(chunk) 사이즈와 메모리의 데이터 청크 사이즈가 서로 다른 경우에, 서로 다른 청크 사이즈를 지원하면서 호스트와 메모리 간의 통신에 사용 가능한 캐시 메모리가 요구된다.
본 발명의 실시예들은 서로 다른 데이터 청크 사이즈를 가지는 호스트와 메모리 간의 통신에 사용 가능한 캐시 메모리 구조를 제공할 수 있다.
본 발명의 일실시예에 따른 호스트와 메모리 간의 통신에 사용되는 캐시 메모리에 있어서, 상기 메모리의 데이터 청크(chunk) 사이즈는 상기 호스트의 데이터 청크 사이즈의 N배이고(N은 2이상의 정수), 상기 캐시 메모리는 다수의 캐시 세트들을 포함하고, 상기 다수의 캐시 세트들 각각은 해당 캐시 세트의 벨리드(valid) 비트; N개의 더티(dirty) 비트들; 태그; 및 상기 N개의 더티 비트들 각각에 대응하고, 각각이 상기 호스트의 데이터 청크 사이즈와 동일한 데이터를 포함하는 N개의 데이터 셋들을 포함할 수 있다.
본 발명의 일실시예에 따른, 데이터 청크(chunk) 사이즈가 서로 다른 호스트와 메모리 간의 통신에 사용되고, 다수의 캐시 세트들을 포함하는 캐시 메모리의 축출(eviction) 방법은, 상기 다수의 캐시 세트들 각각의 축출에 필요한 시간에 기반해 상기 다수의 캐시 세트들 각각에 점수를 부여하는 단계; 및 상기 다수의 캐시 세트들 각각에 부여된 점수를 고려해 상기 다수의 캐시 세트들 중 축출될 캐시 세트를 선정하는 단계를 포함할 수 있다.
본 발명의 일실시예에 따른 메모리 시스템은, 호스트의 데이터 청크(chunk) 사이즈의 N배의 데이터 청크 사이즈를 가지는 메모리; 상기 호스트와 상기 메모리 간의 통신에 사용되고, 다수의 캐시 세트들을 포함하는 캐시 메모리; 상기 캐시 메모리의 히트/미스 여부를 체크하는 히트/미스 체크 회로; 상기 캐시 메모리의 축출(eviction) 동작이 필요한 경우에, 상기 다수의 캐시 세트들 중 축출될 캐시 세트를 결정해 축출하기 위한 축출 회로; 및 상기 메모리의 리드 동작 및 라이트 동작을 제어하기 위한 동작 제어 회로를 포함하고, 상기 다수의 캐시 세트들 각각은 해당 캐시 세트의 벨리드(valid) 비트; N개의 더티(dirty) 비트들; 태그; 및 상기 N개의 더티 비트들 각각에 대응하고, 각각이 상기 호스트의 데이터 청크 사이즈와 동일한 데이터를 포함하는 N개의 데이터 셋들을 포함할 수 있다.
본 발명의 실시예들에 따르면, 캐시 메모리가 서로 다른 데이터 청크 사이즈를 가지는 호스트와 메모리 간의 통신에 사용될 수 있다.
도 1은 본 발명의 일실시예에 따른 메모리 시스템(100)의 구성도.
도 2는 캐시 메모리(111)의 일실시예 구성도.
도 3은 캐시 세트(CACHE SET)의 일실시예 구성도.
도 4는 메모리 시스템(100)의 리드 동작의 일실시예를 도시한 도면.
도 5는 메모리 시스템(100)의 라이트 동작의 일실시예를 도시한 도면.
도 6은 축출 회로(115)의 일실시예 구성도.
도 7은 축출 시간 판단 회로(610)가 캐시 세트들에 점수를 부여하는 방법을 설명하기 위한 도면.
도 8은 축출 회로(115)의 축출 동작의 일실시예를 도시한 도면.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부 도면을 참조하여 설명하기로 한다. 본 발명을 설명함에 있어서, 본 발명의 요지와 무관한 구성은 생략될 수 있다. 각 도면의 구성요소들에 참조 번호를 부가함에 있어서, 동일한 구성요소들에 한해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 번호를 가지도록 하고 있음에 유의하여야 한다.
도 1은 본 발명의 일실시예에 따른 메모리 시스템(100)의 구성도이다.
도 1을 참조하면, 메모리 시스템(100)은 메모리 콘트롤러(110)와 메모리(120)를 포함할 수 있다. 설명의 편의상 메모리 시스템(100)과 함께 동작하는 호스트(1)를 도 1에 함께 도시했다.
호스트(1)는 메모리 콘트롤러(110)에 리퀘스트(REQ)를 보내 메모리(120)의 리드(read) 및 라이트(write) 동작 등을 요청할 수 있다. 호스트(1)는 리드 및 라이트 동작의 요청시에 리드 및 라이트 동작이 수행될 장소를 지정하는 어드레스(ADD_HOST)를 메모리 콘트롤러(110)로 전달할 수 있다. 한편, 호스트(1)는 라이트 동작의 요청시에 메모리 콘트롤러(110)로 라이트 데이터(DATA_HOST)를 전달할 수 있으며, 리드 동작의 요청 이후에 메모리 콘트롤러(110)로부터 리드 데이터(DATA_HOST)를 전달받을 수 있다. 메모리 콘트롤러(110)와 메모리(120) 간에 전달되는 어드레스(ADD) 및 데이터(DATA)와의 구별을 위해 호스트(1)와 메모리 콘트롤러(110) 간에 전달되는 어드레스(ADD_HOST)와 데이터(DATA_HOST)에는 HOST 첨자를 병기했다. 본 실시예에서는 호스트(1)와 메모리 콘트롤러(110) 간에 전달되는 어드레스(ADD_HOST)를 20비트로 예시했다. 또한, 호스트(1)의 데이터 청크(chunk) 사이즈, 즉 호스트(1)의 리드 및 라이트 요청시 한 번에 처리되는 데이터(DATA_HOST)의 사이즈, 가 64비트인 것으로 예시했다.
메모리(120)는 메모리 콘트롤러(110)의 제어에 따라 리드 및 라이트 동작 등을 수행할 수 있다. 메모리(120)는 메모리 콘트롤러(110)로부터 커맨드(CMD)와 어드레스(ADD)를 수신하고, 메모리 콘트롤러(110)와 데이터(DATA)를 송수신할 수 있다. 커맨드(CMD)는 메모리(120)가 수행할 동작을 지시하기 위해 사용될 수 있으며, 어드레스(ADD)는 메모리(120)에서 억세스될 영역을 지정하기 위해 사용될 수 있다. 또한, 라이트 동작시에는 메모리 콘트롤러(110)로부터 메모리(120)로 데이터(DATA)가 전달되고, 리드 동작시에는 메모리(120)로부터 메모리 콘트롤러(110)로 데이터(DATA)가 전달될 수 있다. 메모리(120)의 데이터 청크 사이즈는 호스트(1)의 데이터 청크 사이즈의 N배일 수 있다(N은 2 이상의 정수). 여기서는 N이 4인 것으로, 즉 리드 및 라이트 동작시에 한 번에 처리되는 데이터(DATA)의 사이즈가 256비트인 것으로 예시했다. 메모리(120)의 데이터 청크 사이즈가 호스트(1)의 데이터 청크 사이즈의 4배이므로 어드레싱해야할 영역들의 개수가 1/4로 줄어들 수 있다. 따라서 메모리(120)가 사용하는 어드레스(ADD)의 비트 수는 호스트(1)의 어드레스(ADD_HOST) 비트 수보다 2비트 적을 수 있다. 즉, 메모리(120)가 사용하는 어드레스(ADD)의 비트 수는 18비트일 수 있다. 메모리(120)는 DRAM(Dynamic Random Access Memory), NAND Flash, RRAM(Resistive Random Access Memory), PCRAM(Phase-Change Random Access Memory), MRAM(Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory) 등 여러 종류의 메모리 중 하나일 수 있다.
메모리 콘트롤러(110)는 호스트(1)의 요청에 따라 메모리(120)를 제어할 수 있다. 메모리 콘트롤러(110)는 캐시(cache) 메모리(111), 히트/미스(hit/miss) 체크 회로(113), 축출(eviction) 회로(115) 및 제어 회로(117)를 포함할 수 있다.
캐시 메모리(111)는 호스트(1)와 메모리(120) 간의 통신에서 캐시의 역할을 수행하기 위해 사용될 수 있다. 캐시 메모리(111)는 메모리(120) 보다는 빠른 속도로 동작하고, 메모리(120) 보다는 적은 저장 용량을 가지는 메모리일 수 있다. 호스트(1)의 데이터 청크 사이즈(예, 64비트)와 메모리(120)의 데이터 청크 사이즈(예, 256비트)가 서로 다르므로, 캐시 메모리(111)는 이를 지원하기 위한 구조를 가지는데, 이는 도 2 및 도 3과 함께 자세히 알아보기로 한다.
히트/미스(hit/miss) 체크 회로(113)는 호스트(1)의 리드 및 라이트 동작 요청시에 캐시 메모리(111)의 히트 또는 미스 여부를 체크할 수 있다. 캐시 히트시에는 메모리(120)가 억세스되지 않고 빠르게 동작하는 캐시 메모리(111)가 억세스되므로, 호스트의 리드 및 라이트 동작 요청이 빠르게 처리될 수 있다. 캐시 미스시에는 메모리(120)가 억세스되어야 하므로, 호스트(1)의 리드 및 라이트 동작 요청이 캐시 히트시보다는 느리게 처리될 수 있다.
축출(eviction) 회로(115)는 캐시 메모리(111)에서 사용 가능한 캐시 세트가 없어서 캐시 메모리(111)의 축출 동작이 필요한 경우에 축출될 캐시 세트를 결정해 축출할 수 있다.
제어 회로(117)는 메모리(120)의 리드 및 라이트 동작 등을 제어할 수 있다.
도 2는 캐시 메모리(111)의 일실시예 구성도이다.
도 2를 참조하면, 캐시 메모리(111)는 다수의 캐시 세트들(CACHE SET0~CACHE SET255)을 포함할 수 있다. 여기서는 캐시 세트들(CACHE SET0~CACHE SET255)의 개수를 256개로 예시했다. 256개의 캐시 세트들(CACHE SET0~CACHE SET255)은 0~63의 인덱스(INDEX)로 분류될 수 있다. 예를 들어, 4개의 캐시 세트들(CACHE SET4~CACHE SET7)이 인덱스1(INDEX1)에 포함될 수 있다.
캐시 세트들(CACHE SET0~CACHE SET255)은 호스트(1)의 어드레스(ADD_HOST)의 일부 비트들에 의해 어드레싱될 수 있다. 호스트(1)의 어드레스(ADD_HOST) 20비트 중 6비트가 인덱스로 분류되고, 인덱스로 분류된 어드레스와 대응하는 인덱스(INDEX) 값을 가지는 캐시 세트들이 억세스될 수 있다. 예를 들어, 호스트(1)의 어드레스(HOST_ADD) 중 인덱스 6비트의 값이 62인 경우에 인덱스62(INDEX62)인 4개의 캐시 세트들(CACHE SET248~CACHE SET251)이 억세스될 수 있다.
이와 같이, 하나의 인덱스 값을 공유하는 캐시 세트들이 4개인 캐시 메모리의 구조를 4웨이 셋-어소시에이티브(4 way Set-Associative) 구조라고 한다. 여기서 인덱스(INDEX)가 사라지면 풀리 어소시에이티브(Fully-Associative) 구조가 될 수 있는데, 캐시 메모리(111)가 풀리 어소시에이티브 구조를 가지더라도 이하에서 설명할 실시예들이 적용 가능함은 당연하다.
도 3은 캐시 세트(CACHE SET)의 일실시예 구성도이다. 도 2의 캐시 세트들(CACHE SET0~CACHE SET255) 각각은 도 3와 같이 구성될 수 있다.
도 3을 참조하면, 캐시 세트(CACHE SET)는 벨리드(valid) 비트(V), N개의 더티 비트들(D0~D3), 태그(TAG), N개의 데이터 셋들(DATA0, DATA1, DATA2, DATA3)을 포함할 수 있다.
벨리드 비트(V)는 메모리(120)로부터 해당 캐시 세트로 데이터가 업데이트된 적이 있는지 없는지를 나타내는 비트일 수 있다. 벨리드 비트(V)가 '1'로 활성화된 경우에 메모리(120)로부터 해당 캐시 세트로 데이터가 업데이트된 적이 있다는 것을 나타내고, 벨리트 비트(V)가 '0'으로 비활성화된 경우에는 메모리(120)로부터 해당 캐시 세트로 데이터가 업데이트된 적이 없다는 것을 나타낼 수 있다.
N개의 더티 비트들(D0~D3)은 N개의 데이터 셋들(DATA0, DATA1, DATA2, DATA3)의 더티(dirty) 여부를 나타낼 수 있다. 여기서 N=4인 것을 예시했으므로 더티 비트들 및 데이터 셋들의 개수는 4개일 수 있다. 더티 비트(D0)가 '1'인 경우에는 데이터 셋(DATA0)이 더티 즉, 데이터 셋(DATA0)과 메모리(120)에 저장된 데이터가 일치하지 않음을 나타낼 수 있다. 또한, 더티 비트(D0)가 '0'인 경우에는 데이터 셋(DATA0)과 메모리(120)에 저장된 데이터가 일치함을 나타낼 수 있다. 마찬가지로 더티 비트들(D1~D3)은 데이터 셋들(DATA1~DATA3)의 더티 여부를 나타낼 수 있다.
태그(TAG)는 호스트(1)의 어드레스(ADD_HOST) 20비트에서 인덱스(index) 6비트를 제외한 14비트 중 12비트에 대응하는 정보일 수 있다. 호스트(1)의 어드레스(ADD_HOST)와 해당 캐시 세트의 인덱스(index) 및 태그(TAG)가 일치할 경우에 캐시 히트가 되고 그렇지 않을 경우에 캐시 미스가 될 수 있다. 예를 들어, 호스트(1)의 어드레스(ADD_HOST) 20비트 중 인덱스의 값이 '1'이어서 캐시 세트들(CACHE SET4~CACHE SET7)이 억세스된 경우에, 캐시 세트들(CACHE SET4~CACHE SET7) 중 태그(TAG) 값이 호스트(1)의 어드레스(ADD_HOST) 중 태그(TAG)에 대응하는 12비트와 일치하는 캐시 세트가 존재하는 경우에 캐시 히트일 수 있다.
N개의 데이터 셋들(DATA0, DATA1, DATA2, DATA3), 즉 4개의 데이터 셋들(DATA0, DATA1, DATA2, DATA3), 각각은 64비트의 데이터를 포함할 수 있다. 4개의 데이터 셋들 중 어느 데이터 셋이 억세스될 것인지는 호스트(1)의 어드레스(ADD_HOST) 중 오프셋(OFFSET)에 대응하는 2비트에 의해 결정될 수 있다. 메모리(120)의 데이터 청크 사이즈는 256비트이므로, 메모리(120)로부터 캐시 세트로 데이터가 업데이트되는 경우에는 4개의 데이터 셋들(DATA0, DATA1, DATA2, DATA3)의 데이터가 동시에 업데이트될 수 있다.
하기의 표 1은 호스트의 어드레스(ADD_HOST), 오프셋(OFFSET), 인덱스(INDEX), 태그(TAG) 및 메모리(120)의 어드레스(ADD) 간의 대응 관계를 나타낸 표이다. 표 1을 참조하면, 이들 간의 대응 관계를 명확하게 이해할 수 있다.
ADD_HOST (20bits)
TAG (12bits) INDEX (6bits) OFFSET (2bits)
ADD (18bits) None
도 4는 메모리 시스템(100)의 리드 동작의 일실시예를 도시한 도면이다.
도 4를 참조하면, 리드 동작은 호스트(1)가 메모리 콘트롤러(110)로 리드 동작을 요청하는 리퀘스트(REQ)와 어드레스(ADD_HOST)를 전달하는 것에 시작될 수 있다(401).
이제 히트/미스 체크 회로(113)에 의해 캐시 메모리(111)의 히트 또는 미스 여부가 체크될 수 있다(403). 이는 히트/미스 체크 회로(113)가 어드레스(ADD_HOST)에서 인덱스(INDEX)에 대응하는 6비트를 이용해 캐시 메모리(111)에서 4개의 캐시 세트들을 억세스하고, 억세스된 4개의 캐시 세트들 중 어드레스(ADD_HOST)에서 태그에 대응하는 12비트와 동일한 값의 태그(TAG)를 저장하는 캐시 세트가 존재하는지를 확인하는 것에 의해 수행될 수 있다.
캐시 히트의 경우에(403에서 Y), 히트/미스 체크 회로(113)는 히트된 캐시 세트에 호스트(1)가 요구한 리드 데이터가 존재하는지가 확인될 수 있다(405). 히트된 캐시 세트의 벨리드 비트(V)가 '1'인 경우에는 메모리(120)로부터 히트된 캐시 세트로 데이터가 리드된 이력이 있다는 것을 의미하므로 히트된 캐시 세트에 호스트(1)가 요구한 데이터가 존재한다고 판단될 수 있다. 히트된 캐시 세트의 벨리드 비트(V)가 '0'인 경우에는, 더티 비트들(D0~D3) 중 어드레스(ADD_HOST)의 오프셋(OFFSET)에 대응하는 더티 비트가 '1'인 경우에 호스트(1)가 요구한 리드 데이터가 존재한다고 판단되고, 더티 비트들(D0~D3) 중 어드레스(ADD_HOST)의 오프셋에 대응하는 더티 비트가 '0'인 경우에는 호스트(1)가 요구한 리드 데이터가 존재하지 않는다고 판단될 수 있다.
히트된 캐시 세트에 호스트(1)가 요구한 리드 데이터가 존재하는 경우에(405에서 Y), 히트된 캐시 세트의 데이터 셋들(DATA0~DATA3) 중 호스트(1)가 요구한 리드 데이터에 대응하는 데이터 셋의 데이터가 호스트로 바로 제공될 수 있다(407). 이 경우에는 메모리(120)가 억세스되지 않고 캐시 메모리(111)로부터 호스트(1)로 바로 리드 데이터(DATA_HOST)가 제공되므로, 호스트(1)가 요구한 리드 동작이 빠르게 처리될 수 있다.
히트된 캐시 세트에 호스트(1)가 요구한 리드 데이터가 존재하지 않는 경우에(405에서 N), 제어 회로(117)는 메모리(120)로부터 데이터(DATA)를 리드해 히트된 캐시 세트를 업데이트할 수 있다(409). 제어 회로(117)는 메모리(120)로 리드 커맨드(CMD)와 어드레스(ADD)를 전달해 메모리(120)로부터 데이터(DATA)를 리드할 수 있는데, 이때 어드레스(ADD)는 호스트의 어드레스(ADD_HOST)를 표 1에 따라 변환한 것일 수 있다. 메모리(120)로부터 히트된 캐시 세트로의 데이터 업데이트시에, 더티 비트가 '0'인 데이터 셋들에는 데이터가 업데이트되고 더티 비트가 '1'인 데이터 셋들에는 데이터가 업데이트되지 않을 수 있다. 이는 더티 비트가 '1'인 데이터 셋들의 데이터는 메모리(120)로부터 리드된 데이터보다 더 최신의 데이터이기 때문이다. 예를 들어, 더티 비트들(D0, D1, D2, D3)이 (1, 1, 0, 0)인 경우에, 메모리(120)로부터 리드된 256비트 데이터 중 데이터 셋들(DATA2, DATA3)에 대응하는 128비트의 데이터만이 데이터 셋들(DATA2, DATA3)로 업데이트될 수 있다.
그리고 메모리(120)로부터 리드된 256비트 데이터(DATA) 중 호스트(1)가 요구한 64비트 데이터(DATA_HOST)가 호스트(1)로 전달될 수 있다(411).
캐시 미스의 경우에(403에서 N), 새로운 캐시 세트가 점유될 수 있다(413). 새롭게 점유되는 캐시 세트는 어드레스(ADD_HOST)의 인덱스(INDEX)에 대응하는 4개의 캐시 세트 중 하나일 수 있다. 만약에 4개의 캐시 세트 중 비어있는 캐시 세트, 즉 벨리드 비트(V)와 더티 비트들(D0~D3)이 모두 '0'인 캐시 세트, 가 존재하지 않는 경우에는 4개의 캐시 세트 중 하나를 축출하기 위한 축출 동작이 수행되고, 축출 동작에 의해 비어있게 된 캐시 세트가 새롭게 점유될 수 있다.
이제 제어 회로(117)는 메모리로부터 데이터를 리드해 새롭게 점유된 캐시 세트를 업데이트할 수 있다(415). 제어 회로(117)는 메모리(120)로 리드 커맨드(CMD)와 어드레스(ADD)를 전달해 메모리(120)로부터 데이터(DATA)를 리드할 수 있는데, 이때 어드레스(ADD)는 호스트의 어드레스(ADD_HOST)를 표 1에 따라 변환한 것일 수 있다. 새롭게 점유된 캐시 세트는 비어 있는 상태이므로, 메모리(120)로부터 리드된 256비트의 데이터가 모두 데이터 셋들(DATA0~DATA3)로 업데이트될 수 있다.
그리고 메모리(120)로부터 리드된 256비트 데이터(DATA) 중 호스트(1)가 요구한 64비트 데이터(DATA_HOST)가 호스트(1)로 전달될 수 있다(417).
도 5는 메모리 시스템(100)의 라이트 동작의 일실시예를 도시한 도면이다.
도 5를 참조하면, 라이트 동작은 호스트(1)가 메모리 콘트롤러(110)로 라이트 동작을 요청하는 리퀘스트(REQ)와 어드레스(ADD_HOST) 및 데이터(DATA_HOST)를 전달하는 것에 의해 시작될 수 있다(501).
이제 히트/미스 체크 회로(113)에 의해 캐시 메모리(111)의 히트 또는 미스 여부가 체크될 수 있다(503). 이는 히트/미스 체크 회로(113)가 어드레스(ADD_HOST)에서 인덱스(INDEX)에 대응하는 6비트를 이용해 캐시 메모리(111)에서 4개의 캐시 세트들을 억세스하고, 억세스된 4개의 캐시 세트들 중 어드레스(ADD_HOST)에서 태그에 대응하는 12비트와 동일한 값의 태그(TAG)를 저장하는 캐시 세트가 존재하는지를 확인하는 것에 의해 수행될 수 있다.
캐시 히트의 경우에(503에서 Y), 64비트 데이터(DATA_HOST)가 히트된 캐시 세트에서 어드레스(ADD_HOST)의 오프셋 비트에 대응하는 데이터 셋으로 라이트될 수 있다(505). 그리고 히트된 캐시 세트에서 데이터(DATA_HOST)가 라이트된 오프셋에 대응하는 더티 비트가 '1'로 활성화될 수 있다. 이 경우에는 호스트(1)로부터 전달된 데이터(DATA_HOST)가 히트된 캐시 세트에 라이트되고 라이트 동작이 종료되므로, 호스트(1)가 요구한 라이트 동작이 빠르게 처리될 수 있다.
캐시 미스의 경우에(503에서 N), 새로운 캐시 세트가 점유될 수 있다(507). 새롭게 점유되는 캐시 세트는 어드레스(ADD_HOST)의 인덱스(INDEX)에 대응하는 4개의 캐시 세트 중 하나일 수 있다. 만약에 4개의 캐시 세트 중 비어있는 캐시 세트, 즉 벨리드 비트(V)와 더티 비트들(D0~D3)이 모두 '0'인 캐시 세트, 가 존재하지 않는 경우에는 4개의 캐시 세트 중 하나를 축출하기 위한 축출 동작이 수행되고, 축출 동작에 의해 비어있게 된 캐시 세트가 새롭게 점유될 수 있다.
이제 64비트의 데이터(DATA_HOST)가 새롭게 점유된 캐시 세트에서 어드레스(ADD_HOST)의 오프셋 비트에 대응하는 데이터 셋으로 라이트될 수 있다(509). 그리고 새롭게 점유된 캐시 세트에서 데이터(DATA_HOST)가 라이트된 오프셋에 대응하는 더티 비트가 '1'로 활성화될 수 있다.
도 6은 축출 회로(115)의 일실시예 구성도이다.
도 6을 참조하면, 축출 회로(115)는 축출 시간 판단 회로(610), 억세스 이력 저장 회로(620) 및 축출 결정 회로(630)를 포함할 수 있다.
축출 시간 판단 회로(610)는 캐시 메모리(111)의 캐시 세트들 각각의 축출에 필요한 시간에 기반해 점수를 부여할 수 있다. 예를 들어, 캐시 세트들 중 축출에 많은 시간이 필요한 캐시 세트일수록 낮은 점수를 부여하고, 축출에 적은 시간이 필요한 캐시 세트일수록 높은 점수를 부여할 수 있다. 축출 시간 판단 회로(610)는 캐시 세트들 각각의 벨리드 비트(V)와 더티 비트들(D0~D3)을 이용해 캐시 세트들 각각에 점수를 부여할 수 있는데, 이에 대해서는 도 7과 함께 자세히 알아보기로 한다.
억세스 이력 저장 회로(620)는 캐시 메모리(111)의 캐시 세트들의 억세스 이력을 저장할 수 있다. 즉, 캐시 메모리(111)의 캐시 세트들을 최근에 억세스된 순서대로 정렬해 저장할 수 있다.
축출 결정 회로(630)는 축출 시간 판단 회로(610)에 의해 결정된 점수(SCORE)와 억세스 이력 저장 회로(620)에 저장된 억세스 이력(LRU)을 고려해 캐시 메모리(111)의 캐시 세트들 중 축출될 캐시 세트를 결정하고, 축출이 결정된 캐시 세트를 축출할 수 있다. 예를 들어, 축출 결정 회로(630)는 캐시 세트들 중 점수가 가장 높은 캐시 세트를 추출하되, 점수가 가장 높은 캐시 세트가 여러개인 경우에 여러개의 캐시 세트 중 최근에 억세스된 시간이 가장 오래 경과된 캐시 세트를 축출할 수 있다. 즉, 축출 회로(630)는 축출될 캐시 세트의 선정에 축출 시간 판단 회로(610)에 의해 결정된 점수를 일차적으로 고려하고, 동일한 점수의 캐시 세트들 간에는 LRU(Least Recently Used) 규칙을 적용할 수 있다.
축출 결정 회로(630)가 축출 시간 판단 회로(610)에 의해 결정된 점수가 높은 캐시 세트를 우선적으로 축출하는 것은, 축출 동작에 필요한 시간이 짧을수록 축출 동작의 수행에 의한 메모리 시스템(100)의 퍼포먼스 저하를 방지할 수 있기 때문이다.
도 6의 실시예에서는 축출 결정 회로(630)가 축출 시간 판단 회로(610)에 의해 결정된 점수 이외에 LRU 규칙도 고려하는 것을 예시했지만, 실시예에 따라 억세스 이력 저장 회로(620)가 생략되고, 축출 결정 회로(630)가 축출 시간 판단 회로(610)에 의해 결정된 점수만을 고려할 수도 있음은 당연하다.
도 7은 축출 시간 판단 회로(610)가 캐시 세트들에 점수를 부여하는 방법을 설명하기 위한 도면이다.
도 7에는 벨리드 비트(V)와 더티 비트들(D0~D3)의 값에 따라 캐시 세트들을 4가지(CASE1~CASE4)로 분류했다.
CASE1은 해당 캐시 세트의 벨리드 비트(V)가 '1'이고 더티 비트들(D0~D3)이 모두 '0'인 경우이다. 이 경우 해당 캐시 세트에 저장된 데이터 셋들(DATA0~DATA3)과 메모리(120)의 데이터가 완전히 일치한다는 것을 의미하므로, 해당 캐시 세트의 축출에 리드 및 라이트 동작 중 그 어떤 동작도 필요로 하지 않다. 다만, 벨리드 비트(V)만 '0'으로 변경하는 것으로 해당 캐시 세트의 축출 동작이 완료될 수 있다. 축출 시간 판단 회로(610)는 CASE1과 같은 캐시 세트에 높은 점수(예, 2점)을 부여할 수 있다.
CASE2는 해당 캐시 세트의 벨리드 비트(V)가 '1'이고 더티 비트들(D0~D3) 중 값이 '1'인 더티 비트들이 하나 이상인 경우이다. 이 경우 값이 '1'인 더티 비트들(D0, D2)에 대응하는 데이터 셋들(DATA0, DATA2)의 데이터는 메모리(120)의 데이터와 불일치하고 값이 '0'인 더티 비트들(D1, D3)에 대응하는 데이터 셋들(DATA1, DATA3)의 데이터는 메모리(120)의 데이터와 일치함을 나타낼 수 있다. 이 경우 해당 캐시 세트의 축출을 위해서는 데이터 셋들(DATA0~DATA3) 전체를 메모리(120)에 라이트하는 동작이 필요하다. 메모리(120)의 데이터 청크 사이즈가 256비트이므로, 데이터 셋들(DATA0, DATA2)만을 메모리(120)에 라이트하는 것은 불가능하고 데이터 셋들(DATA0~DATA3)을 한꺼번에 메모리(120)에 라이트해야 한다. 축출 시간 판단 회로(610)는 CASE1과 같은 캐시 세트에 중간 점수(예, 1점)을 부여할 수 있다. 축출 동작이 완료된 후 해당 캐시 세트의 벨리드 비트(V)와 더티 비트들(D0~D3)은 모두 '0'으로 변경될 수 있다.
CASE3은 해당 캐시 세트의 벨리드 비트(V)가 '0'이고 더티 비트들(D0~D3)이 모두 '1'인 경우이다. 이 경우 데이터 셋들(DATA0~DATA3)의 데이터가 모두 더티이므로, 데이터 셋들(DATA0~DATA3)의 데이터가 모두 메모리(120)로 라이트되어야 한다. 즉, 해당 캐시 세트의 축출을 위해서는 데이터 셋들(DATA0~DATA3) 전체를 메모리(120)에 라이트하는 동작이 필요하다. 축출 시간 판단 회로(610)는 CASE3과 같은 캐시 세트에 중간 점수(예, 1점)을 부여할 수 있다. 축출 동작이 완료된 후 해당 캐시 세트의 벨리드 비트(V)와 더티 비트들(D0~D3)은 모두 '0'으로 변경될 수 있다.
CASE4는 해당 캐시 세트의 벨리드 비트(V)가 '0'이고 더티 비트들(D0~D3) 중 일부가 '1'인 경우이다. 이 경우 값이 '1'인 더티 비트(D2)에 대응하는 데이터 셋(DATA2)이 메모리(120)로 업데이트되어야 한다. 그런데 값이 '0'인 더티 비트들(D0, D2, D3)에 대응하는 데이터 셋들(DATA0, DATA2, DATA3)의 값을 해당 캐시 세트로는 알 수가 없다. 따라서 이 경우에는 메모리(120)로부터 먼저 데이터를 리드해 데이터 셋들(DATA0, DATA2, DATA3)의 올바른 값을 알아내고, 데이터 셋들(DATA0, DATA1, DATA2, DATA3)을 메모리(120)로 라이트하는 동작이 필요하다. 즉, 해당 캐시 세트의 축출에 리드 동작 및 라이트 동작이 필요하다. 축출 시간 판단 회로(610)는 CASE4와 같은 캐시 시트에 낮은 점수(예, 0점)을 부여할 수 있다. 축출 동작이 완료된 후 해당 캐시 세트의 벨리드 비트(V)와 더티 비트들(D0~D3)은 모두 '0'으로 변경될 수 있다.
결국, 축출 시간 판단 회로(610)는 축출에 리드 및 라이트 동작의 수행이 필요하지 않아 시간이 거의 필요하지 않은 캐시 세트(CASE1)에는 높은 점수(예, 2점)를 부여하고, 축출에 라이트 동작의 수행이 필요해 어느 정도의 시간이 필요한 캐시 세트(CASE2, CASE3)에는 중간 점수(예, 1점)를 부여하고, 축출에 리드 동작 및 라이트 동작의 수행이 필요해 많은 시간이 필요한 캐시 세트(CASE4)에는 낮은 점수(예, 0점)를 부여할 수 있다.
도 8은 축출 회로(115)의 축출 동작의 일실시예를 도시한 도면이다.
축출 회로(115)의 축출 동작은 리드 동작시에 새로운 캐시 세트를 점유하는 과정(413) 및 라이트 동작시에 새로운 캐시 세트를 점유하기 위한 과정(507)에서 비어 있는 캐시 세트가 존재하지 않는 경우에 수행될 수 있다.
도 8을 참조하면, 축출 회로(115)의 축출 시간 판단 회로(610)는 의해 캐시 세트들의 축출에 필요한 시간에 기반해 캐시 세트들에 점수를 부여할 수 있다(801). 상술한 바와 같이, 축출 시간 판단 회로(610)는 축출에 리드 동작 및 라이트 동작의 수행이 필요하지 않는 캐시 세트에는 높은 점수를 부여하고, 축출에 라이트 동작의 수행이 필요한 캐시 세트에는 중간 점수를 부여하고, 축출에 리드 동작 및 라이트 동작의 수행이 필요한 캐시 세트에는 낮은 점수를 부여할 수 있다.
한편, 축출 회로(115)의 억세스 이력 저장 회로(620)는 캐시 세트들의 억세스 이력을 저장할 수 있다(803). 즉, 캐시 세트들을 최근에 억세스된 순서대로 정렬해 저장할 수 있다.
그리고 축출 결정 회로(630)가 점수(SCORE)와 억세스 이력(LRU)에 기반해 캐시 세트들 중 축출할 캐시 세트를 결정할 수 있다(805). 축출 결정 회로(630)는 점수가 높은 캐시 세트를 축출하되, 점수 높은 캐시 세트가 여러개인 경우에는 억세스 이력을 고려할 수 있다.
이제, 축출 결정 회로(630)는 축출이 결정된 캐시 세트를 축출할 수 있다(807). 축출은 단지 벨리드 비트(V)와 더티 비트들(D0~D3)을 '0'으로 변경하는 것에 의해 수행될 수도 있으며(CASE1), 제어 회로(117)의 제어에 의해 메모리(120)의 라이트 동작을 수행한 이후에 벨리드 비트(V)와 더티 비트들(D0~D3)을 '0'으로 변경하는 것에 의해 수행될 수도 있으며(CASE2, CASE3), 제어 회로(117)의 제어에 의해 메모리(120)의 리드 동작 및 라이트 동작이 수행된 이후에 벨리드 비트(V)와 더티 비트들(D0~D3)을 '0'으로 변경하는 것에 의해 수행될 수도 있다(CASE4).
본 발명의 기술 사상은 상기 바람직한 실시예들에 따라 구체적으로 기술되었으나, 상기한 실시예들은 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술분야에서 통상의 지식을 가진 자라면 본 발명의 기술사상의 범위 내에서 다양한 실시예가 가능함을 알 수 있을 것이다.
100: 메모리 시스템
110: 메모리 콘트롤러
120: 메모리

Claims (18)

  1. 호스트와 메모리 간의 통신에 사용되는 캐시 메모리에 있어서,
    상기 메모리의 데이터 청크(chunk) 사이즈는 상기 호스트의 데이터 청크 사이즈의 N배이고(N은 2이상의 정수),
    상기 캐시 메모리는 다수의 캐시 세트들을 포함하고,
    상기 다수의 캐시 세트들 각각은
    해당 캐시 세트의 벨리드(valid) 비트;
    N개의 더티(dirty) 비트들;
    태그; 및
    상기 N개의 더티 비트들 각각에 대응하고, 각각이 상기 호스트의 데이터 청크 사이즈와 동일한 데이터를 포함하는 N개의 데이터 셋들을 포함하는
    캐시 메모리.
  2. 제 1항에 있어서,
    상기 벨리드 비트는
    상기 메모리로부터 해당 캐시 세트로의 데이터 업데이트 여부를 나타내는
    캐시 메모리.
  3. 제 1항에 있어서,
    상기 N개의 더티 비트들은 상기 N개의 데이터 셋들의 데이터가 상기 메모리의 데이터와 동일한지 여부를 나타내는
    캐시 메모리.
  4. 제 1항에 있어서,
    상기 다수의 캐시 세트들은 상기 호스트의 어드레스의 일부 비트들에 의해 어드레싱되고,
    상기 태그는 상기 호스트의 어드레스의 다른 비트들에 대응하는
    캐시 메모리.
  5. 데이터 청크(chunk) 사이즈가 서로 다른 호스트와 메모리 간의 통신에 사용되고, 다수의 캐시 세트들을 포함하는 캐시 메모리의 축출(eviction) 방법에 있어서,
    상기 다수의 캐시 세트들 각각의 축출에 필요한 시간에 기반해 상기 다수의 캐시 세트들 각각에 점수를 부여하는 단계; 및
    상기 다수의 캐시 세트들 각각에 부여된 점수를 고려해 상기 다수의 캐시 세트들 중 축출될 캐시 세트를 선정하는 단계
    를 포함하는 캐시 메모리의 축출 방법.
  6. 제 5항에 있어서,
    상기 점수를 부여하는 단계에서,
    상기 다수의 캐시 세트들 중 해당 캐시 세트의 축출에 리드 동작 및 라이트 동작이 요구되지 않는 캐시 세트에는 높은 점수가 부여되고,
    상기 다수의 캐시 세트들 중 해당 캐시 세트의 축출에 리드 동작이 요구되지 않고 라이트 동작이 요구되는 캐시 세트에는 중간 점수가 부여되고,
    상기 다수의 캐시 세트들 중 해당 캐시 세트의 축출에 리드 동작과 라이트 동작이 요구되는 캐시 세트에는 낮은 점수가 부여되는
    캐시 메모리의 축출 방법.
  7. 제 5항에 있어서,
    상기 축출될 캐시 세트를 선정하는 단계에서는 LRU(Least Recently Used) 규칙이 더 고려되는
    캐시 메모리의 축출 방법.
  8. 제 6항에 있어서,
    상기 메모리의 데이터 청크 사이즈는 상기 호스트의 데이터 청크 사이즈의 N배이고,
    상기 다수의 캐시 세트들은 상기 호스트의 어드레스의 일부 비트들에 의해 어드레싱되고,
    상기 다수의 캐시 세트들 각각은
    해당 캐시 세트의 벨리드(valid) 비트;
    N개의 더티(dirty) 비트들;
    상기 호스트의 어드레스의 다른 비트들에 대응하는 태그; 및
    상기 N개의 더티 비트들 각각에 대응하고, 각각이 상기 호스트의 데이터 청크 사이즈와 동일한 데이터를 포함하는 N개의 데이터 셋들을 포함하고,
    상기 점수를 부여하는 단계에서,
    상기 다수의 캐시 세트들 각각의 벨리드 비트와 N개의 더티 비트들을 이용해 해당 캐시 세트의 축출에 필요한 동작이 판단되는
    캐시 메모리의 축출 방법.
  9. 제 8항에 있어서,
    벨리드 비트가 활성화되고 N개의 더티 비트가 비활성화된 캐시 세트는 축출에 리드 동작 및 라이트 동작이 필요하지 않다고 판단되고,
    벨리드 비트가 활성화되고 N개의 더티 비트들 중 활성화된 더티 비트가 존재하는 캐시 세트는 축출 동작에 리드 동작이 필요하지 않고 라이트 동작이 필요하다고 판단되고,
    벨리트 비트가 비활성화되고 N개의 더티 비트들 모두가 활성화된 캐시 세트는 축출 동작에 리드 동작이 필요하지 않고 라이트 동작이 필요하다고 판단되고,
    벨리트 비트가 비활성화되고 N개의 더티 비트들 중 일부의 더티 비트가 활성화된 캐시 세트는 축출 동작에 리드 동작과 라이트 동작이 필요하다고 판단되는
    캐시 메모리의 축출 방법.
  10. 호스트의 데이터 청크(chunk) 사이즈의 N배의 데이터 청크 사이즈를 가지는 메모리;
    상기 호스트와 상기 메모리 간의 통신에 사용되고, 다수의 캐시 세트들을 포함하는 캐시 메모리;
    상기 캐시 메모리의 히트/미스 여부를 체크하는 히트/미스 체크 회로;
    상기 캐시 메모리의 축출(eviction) 동작이 필요한 경우에, 상기 다수의 캐시 세트들 중 축출될 캐시 세트를 결정해 축출하기 위한 축출 회로; 및
    상기 메모리의 리드 동작 및 라이트 동작을 제어하기 위한 동작 제어 회로를 포함하고,
    상기 다수의 캐시 세트들 각각은
    해당 캐시 세트의 벨리드(valid) 비트;
    N개의 더티(dirty) 비트들;
    태그; 및
    상기 N개의 더티 비트들 각각에 대응하고, 각각이 상기 호스트의 데이터 청크 사이즈와 동일한 데이터를 포함하는 N개의 데이터 셋들을 포함하는
    메모리 시스템.
  11. 제 10항에 있어서,
    상기 벨리드 비트는
    상기 메모리로부터 해당 캐시 세트로의 데이터 업데이트 여부를 나타내는
    메모리 시스템.
  12. 제 10항에 있어서,
    상기 N개의 더티 비트들은 상기 N개의 데이터 셋들의 데이터가 상기 메모리의 데이터와 동일한지 여부를 나타내는
    메모리 시스템.
  13. 제 10항에 있어서,
    상기 축출 회로는
    상기 다수의 캐시 세트들 각각의 축출에 필요한 시간에 기반에 상기 다수의 캐시 세트들 각각에 점수를 부여하는 축출 시간 판단 회로; 및
    상기 점수에 기반해 상기 다수의 캐시 세트들 중 축출될 캐시 세트를 결정해 축출하는 축출 결정 회로를 포함하는
    메모리 시스템.
  14. 제 13항에 있어서,
    상기 축출 회로는
    상기 다수의 캐시 세트들의 억세스 이력을 저장하는 억세스 이력 저장 회로를 더 포함하고,
    상기 축출 결정 회로는
    상기 축출될 캐시 세트의 결정에 상기 억세스 이력을 더 고려하는
    메모리 시스템.
  15. 제 13항에 있어서,
    상기 축출 시간 판단 회로는
    상기 다수의 캐시 세트들 중 해당 캐시 세트의 축출에 리드 동작 및 라이트 동작이 요구되지 않는 캐시 세트에는 높은 점수를 부여하고,
    상기 다수의 캐시 세트들 중 해당 캐시 세트의 축출에 리드 동작이 요구되지 않고 라이트 동작이 요구되는 캐시 세트에는 중간 점수를 부여하고,
    상기 다수의 캐시 세트들 중 해당 캐시 세트의 축출에 리드 동작과 라이트 동작이 요구되는 캐시 세트에는 낮은 점수를 부여하는
    메모리 시스템.
  16. 제 15항에 있어서,
    상기 축출 시간 판단 회로는
    벨리드 비트가 활성화되고 N개의 더티 비트가 비활성화된 캐시 세트는 축출에 리드 동작 및 라이트 동작이 필요하지 않다고 판단하고,
    벨리드 비트가 활성화되고 N개의 더티 비트들 중 활성화된 더티 비트가 존재하는 캐시 세트는 축출 동작에 리드 동작이 필요하지 않고 라이트 동작이 필요하다고 판단하고,
    벨리트 비트가 비활성화되고 N개의 더티 비트들 모두가 활성화된 캐시 세트는 축출 동작에 리드 동작이 필요하지 않고 라이트 동작이 필요하다고 판단하고,
    벨리트 비트가 비활성화되고 N개의 더티 비트들 중 일부의 더티 비트가 활성화된 캐시 세트는 축출 동작에 리드 동작과 라이트 동작이 필요하다고 판단하는
    메모리 시스템.
  17. 제 10항에 있어서,
    상기 캐시 메모리, 상기 히트/미스 체크 회로, 상기 축출 회로 및 상기 동작 제어 회로는 메모리 콘트롤러에 포함되는
    메모리 시스템.
  18. 제 10항에 있어서,
    상기 다수의 캐시 세트들은 상기 호스트의 어드레스의 일부 비트들에 의해 어드레싱되고,
    상기 태그는 상기 호스트의 어드레스의 다른 비트들에 대응하는
    메모리 시스템.
KR1020180082829A 2018-07-17 2018-07-17 캐시 메모리 및 이를 포함하는 메모리 시스템, 캐시 메모리의 축출 방법 KR20200008759A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020180082829A KR20200008759A (ko) 2018-07-17 2018-07-17 캐시 메모리 및 이를 포함하는 메모리 시스템, 캐시 메모리의 축출 방법
US16/287,778 US11221965B2 (en) 2018-07-17 2019-02-27 Cache memory, memory system including the same, and eviction method of cache memory
CN201910594058.6A CN110727610B (zh) 2018-07-17 2019-07-03 高速缓存存储器、存储系统和高速缓存存储器的逐出方法
TW108124280A TWI797354B (zh) 2018-07-17 2019-07-10 快取記憶體、儲存系統和快取記憶體的逐出方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180082829A KR20200008759A (ko) 2018-07-17 2018-07-17 캐시 메모리 및 이를 포함하는 메모리 시스템, 캐시 메모리의 축출 방법

Publications (1)

Publication Number Publication Date
KR20200008759A true KR20200008759A (ko) 2020-01-29

Family

ID=69161316

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180082829A KR20200008759A (ko) 2018-07-17 2018-07-17 캐시 메모리 및 이를 포함하는 메모리 시스템, 캐시 메모리의 축출 방법

Country Status (4)

Country Link
US (1) US11221965B2 (ko)
KR (1) KR20200008759A (ko)
CN (1) CN110727610B (ko)
TW (1) TWI797354B (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11086791B2 (en) 2019-08-29 2021-08-10 Micron Technology, Inc. Methods for supporting mismatched transaction granularities
KR20220030440A (ko) 2020-08-31 2022-03-11 삼성전자주식회사 전자 장치, 시스템-온-칩, 및 그것의 동작 방법

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5684977A (en) * 1995-03-31 1997-11-04 Sun Microsystems, Inc. Writeback cancellation processing system for use in a packet switched cache coherent multiprocessor system
FR2778254B1 (fr) * 1998-04-29 2002-02-15 Texas Instruments France Circuits,systemes et procedes d'ordinateur utilisant un nettoyage partiel d'une memoire cache
JP3985889B2 (ja) * 2001-08-08 2007-10-03 株式会社ルネサステクノロジ 半導体装置
US6857048B2 (en) * 2002-01-17 2005-02-15 Intel Corporation Pseudo least-recently-used (PLRU) replacement method for a multi-node snoop filter
TWI220944B (en) * 2003-03-18 2004-09-11 Faraday Tech Corp Cache controller unit architecture and applied method
US7010649B2 (en) * 2003-10-14 2006-03-07 International Business Machines Corporation Performance of a cache by including a tag that stores an indication of a previously requested address by the processor not stored in the cache
CN100429633C (zh) * 2004-04-27 2008-10-29 皇家飞利浦电子股份有限公司 一种处理来自磁盘的数据的方法以及使用该方法的装置
US20080010413A1 (en) * 2006-07-07 2008-01-10 Krishnan Kunjunny Kailas Method and apparatus for application-specific dynamic cache placement
US7536512B2 (en) * 2006-09-14 2009-05-19 International Business Machines Corporation Method and apparatus for space efficient identification of candidate objects for eviction from a large cache
JP2011095852A (ja) * 2009-10-27 2011-05-12 Toshiba Corp キャッシュメモリ制御回路
US8504774B2 (en) * 2010-10-13 2013-08-06 Microsoft Corporation Dynamic cache configuration using separate read and write caches
KR101791508B1 (ko) 2011-07-28 2017-10-31 삼성전자 주식회사 비휘발성 메모리 장치
CN102662868B (zh) * 2012-05-02 2015-08-19 中国科学院计算技术研究所 用于处理器的动态组相联高速缓存装置及其访问方法
US9336156B2 (en) 2013-03-14 2016-05-10 Intel Corporation Method and apparatus for cache line state update in sectored cache with line state tracker
KR20150019788A (ko) * 2013-08-16 2015-02-25 에스케이하이닉스 주식회사 캐시 장치 및 그 제어 방법
US9734062B2 (en) * 2013-12-13 2017-08-15 Avago Technologies General Ip (Singapore) Pte. Ltd. System and methods for caching a small size I/O to improve caching device endurance
KR20170075359A (ko) * 2015-12-23 2017-07-03 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 콘트롤러의 동작 방법
US10013362B2 (en) * 2016-05-13 2018-07-03 Verizon Digital Media Services Inc. Deterministic multifactor cache replacement
US10467195B2 (en) * 2016-09-06 2019-11-05 Samsung Electronics Co., Ltd. Adaptive caching replacement manager with dynamic updating granulates and partitions for shared flash-based storage system
US10762000B2 (en) * 2017-04-10 2020-09-01 Samsung Electronics Co., Ltd. Techniques to reduce read-modify-write overhead in hybrid DRAM/NAND memory

Also Published As

Publication number Publication date
CN110727610A (zh) 2020-01-24
TW202006550A (zh) 2020-02-01
US11221965B2 (en) 2022-01-11
TWI797354B (zh) 2023-04-01
CN110727610B (zh) 2023-10-20
US20200026664A1 (en) 2020-01-23

Similar Documents

Publication Publication Date Title
TWI744457B (zh) 對混合記憶體模組進行存取元資料的方法及混合記憶體模組
CN109983536B (zh) 响应标签匹配命令的存储电路
US20110231598A1 (en) Memory system and controller
US20070073974A1 (en) Eviction algorithm for inclusive lower level cache based upon state of higher level cache
KR102453192B1 (ko) 다른 캐시에서의 엔트리들의 가용성을 기반으로 한 캐시 엔트리 교체
US11822483B2 (en) Operating method of memory system including cache memory for supporting various chunk sizes
US20160378593A1 (en) Cache memory, error correction circuitry, and processor system
US10635581B2 (en) Hybrid drive garbage collection
US20170185294A1 (en) Memory system and operating method thereof
US8924652B2 (en) Simultaneous eviction and cleaning operations in a cache
KR20200008759A (ko) 캐시 메모리 및 이를 포함하는 메모리 시스템, 캐시 메모리의 축출 방법
US7472226B1 (en) Methods involving memory caches
US9846647B2 (en) Cache device and control method threreof
US10970220B2 (en) Tags and data for caches
US11593276B2 (en) Data caching methods of cache systems
US20160378671A1 (en) Cache memory system and processor system
KR102521746B1 (ko) 메모리 장치의 주소 맵핑을 관리하는 반도체 장치 및 이를 포함하는 데이터 저장 장치
WO2010098152A1 (ja) キャッシュメモリシステムおよびキャッシュメモリ制御方法
JP2017058951A (ja) メモリシステム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
X701 Decision to grant (after re-examination)