KR20200127793A - 메모리 장치의 캐시 시스템 및 캐시 시스템의 데이터 캐싱 방법 - Google Patents

메모리 장치의 캐시 시스템 및 캐시 시스템의 데이터 캐싱 방법 Download PDF

Info

Publication number
KR20200127793A
KR20200127793A KR1020190052599A KR20190052599A KR20200127793A KR 20200127793 A KR20200127793 A KR 20200127793A KR 1020190052599 A KR1020190052599 A KR 1020190052599A KR 20190052599 A KR20190052599 A KR 20190052599A KR 20200127793 A KR20200127793 A KR 20200127793A
Authority
KR
South Korea
Prior art keywords
dirty
dirty line
node
stored
cache
Prior art date
Application number
KR1020190052599A
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 KR1020190052599A priority Critical patent/KR20200127793A/ko
Priority to TW108144696A priority patent/TWI805878B/zh
Priority to US16/712,478 priority patent/US11269785B2/en
Priority to CN201911299308.XA priority patent/CN111881069A/zh
Publication of KR20200127793A publication Critical patent/KR20200127793A/ko
Priority to US17/585,305 priority patent/US11593276B2/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/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
    • G06F12/124Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list being minimized, e.g. non MRU
    • 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
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/305Providing cache or TLB in specific location of a processing system being part of a memory device, e.g. cache DRAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping

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

메모리 장치의 데이터 캐시 시스템은, 복수개의 블록들을 갖는 캐시 메모리와, 복수개의 블록들 중 정해진 개수의 더티 라인들 각각에 대한 상태 정보를 저장하는 더티 라인 리스트와, 그리고 캐시 메모리의 데이터 캐싱 동작을 제어하고, 데이터 캐싱 동작에 따른 상기 더티 라인의 상태 변동을 상기 더티 라인 리스트에 반영하는 캐시 컨트롤러를 포함한다. 상기 캐시 컨트롤러는, 가장 최근에 사용되지 않은(LRU) 더티 라인에 대한 상태 정보가 더티 라인 리스트의 정해진 저장 위치에 항상 저장되도록 상기 더티 라인 리스트를 제어한다.

Description

메모리 장치의 캐시 시스템 및 캐시 시스템의 데이터 캐싱 방법{Cache system for memory device and data chaching method in the cache system}
본 개시의 여러 실시예들은 메모리 장치에 관한 것으로서, 특히 메모리 장치의 캐시 시스템 및 캐시 시스템의 데이터 캐싱 방법에 관한 것이다.
일반적으로 중앙처리장치(CPU)와 같은 호스트(host)의 처리속도 증가에 비해 메모리의 처리속도 증가는 매우 느리다. 이에 따라 호스트와 메모리 사이에는 속도 차이가 발생하는데 이를 해결하기 위하여 대부분의 메모리 시스템에서는 캐시 메모리를 이용하는 캐시 시스템(cache system)을 채용하고 있다. 메모리 시스템에서 캐시 시스템은, 호스트와 메모리 사이에서 독립적으로 배치되거나, 또는 호스트 컨트롤러 또는 메모리 컨트롤러 내에 배치될 수 있다.
본 출원이 해결하고자 하는 과제는, 더티 라인의 개수가 정해진 숫자로 유지되도록 더티 라인을 운영하고, 더티 라인의 개수 유지를 위해 퇴거 대상을 선정하는데 있어서 가장 최근에 사용되지 않은(LRU; Least Recently Used) 더티 라인을 직접적으로 파악할 수 있도록 하는 메모리 장치의 데이터 캐시 시스템 및 캐시 시스템의 데이터 캐싱 방법을 제공하는 것이다.
본 개시의 일 예에 따른 메모리 장치의 데이터 캐시 시스템은, 복수개의 블록들을 갖는 캐시 메모리와, 복수개의 블록들 중 정해진 개수의 더티 라인들 각각에 대한 상태 정보를 저장하는 더티 라인 리스트와, 그리고 캐시 메모리의 데이터 캐싱 동작을 제어하고, 데이터 캐싱 동작에 따른 상기 더티 라인의 상태 변동을 상기 더티 라인 리스트에 반영하는 캐시 컨트롤러를 포함한다. 상기 캐시 컨트롤러는, 가장 최근에 사용되지 않은(LRU) 더티 라인에 대한 상태 정보가 더티 라인 리스트의 정해진 저장 위치에 항상 저장되도록 상기 더티 라인 리스트를 제어한다.
본 개시의 일 예에 다른 캐시 시스템의 데이터 캐싱 방법은, 세트 인덱스에 의해 구분되는 복수개의 블록들을 갖는 캐시 메모리와, 복수개의 블록들 중 정해진 개수의 더티 라인들 각각에 대한 상태 정보를 저장하는 복수개의 노드들을 포함하는 더티 라인 리스트와, 캐시 메모리의 데이터 캐싱 동작 및 더티 라인 리스트의 노드들 각각의 상태 정보 저장 상태를 제어하는 캐시 컨트롤러를 포함하는 캐시 시스템의 데이터 캐싱 방법에 있어서, 캐시 메모리 내의 더티 라인들 중 가장 최근에 사용되지 않은(LRU) 더티 라인에 대한 정보가 더티 라인 리스트의 노드들 중 최하위 노드에 저장되도록 하는 단계와, 그리고 데이터 캐싱 동작에 의한 더티 라인의 개수 증가로 캐시 메모리 내에서의 더티 라인들의 개수가 더티 라인 리스트의 노드들 개수를 초과하는 오버플로가 발생되는 경우, 더티 라인 리스트의 노드들 중 최하위 노드에 저장된 상태 정보를 갖는 더티 라인을 강제 퇴거시키는 단계를 포함한다.
여러 실시예들에 따르면, 더티 리스트를 이용함으로써, 더티 라인의 개수가 정해진 숫자로 유지되도록 더티 라인을 운영함으로서, 파워가 갑자기 꺼지는 이벤트가 발생하더라도 더티 라인의 데이터를 모두 메모리로 쓸 수 있도록 할 수 있으며, 더티 라인의 개수 유지를 위해 퇴거 대상을 선정하는데 있어서 가장 최근에 사용되지 않은(LRU; Least Recently Used) 더티 라인을 직접적으로 파악할 수 있다는 이점이 제공된다.
도 1은 본 개시에 따른 메모리 장치의 캐시 시스템의 일 예를 나타내 보인 블록도이다.
도 2는 본 개시에 따른 메모리 장치의 캐시 시스템의 캐시 메모리 구성의 일 예를 나타내 보인 도면이다.
도 3은 각각 본 개시에 따른 메모리 장치의 캐시 시스템의 더티 라인 리스트 구성의 일 예를 나타내 보인 도면이다.
도 4는 본 개시에 따른 메모리 장치의 캐시 시스템에서의 라이트 히트에서의 데이터 캐싱 동작의 일 예를 설명하기 위해 나타내 보인 도면이다.
도 5는 본 개시에 따른 메모리 장치의 캐시 시스템에서의 라이트 미스에서의 데이터 캐싱 동작의 일 예를 설명하기 위해 나타내 보인 도면이다.
도 6은 본 개시에 따른 메모리 장치의 캐시 시스템의 데이터 캐싱 동작을 설명하기 위해 나타내 보인 플로챠트이다.
도 7은 본 개시에 따른 캐시 시스템에서 더티 라인 리스트의 동작을 설명하기 위해 나타내 보인 플로챠트이다.
도 8 내지 도 10은 본 개시에 따른 캐시 시스템에서 라이트 히트이고 더티 라인 개수가 증가하며 오버플로가 발생하지 않는 경우에서의 더티 라인 리스트를 제어하는 과정을 설명하기 위해 나타내 보인 도면들이다.
도 11 내지 도 13은 본 개시에 따른 캐시 시스템에서 라이트 히트이고 더티 라인 개수가 증가하며 오버플로가 발생하는 경우에서의 더티 라인 리스트를 제어하는 과정을 설명하기 위해 나타내 보인 도면들이다.
도 14 내지 도 16은 본 개시에 따른 캐시 시스템에서 라이트 미스이고 더티 라인 개수가 증가하며 오버플로가 발생하지 않는 경우에서의 더티 라인 리스트를 제어하는 과정을 설명하기 위해 나타내 보인 도면들이다.
도 17 내지 도 19는 본 개시에 따른 캐시 시스템에서 라이트 미스이고 더티 라인 개수가 증가하며 오버플로가 발생하는 경우에서의 더티 라인 리스트를 제어하는 과정을 설명하기 위해 나타내 보인 도면들이다.
도 20 내지 도 22는 본 개시에 따른 캐시 시스템에서 라이트 히트이고 더티 라인 개수가 증가하지 않으며 오버플로가 발생하지 않는 경우에서의 더티 라인 리스트를 제어하는 과정을 설명하기 위해 나타내 보인 도면들이다.
도 23 내지 도 25는 본 개시에 따른 캐시 시스템에서 라이트 히트이고 더티 라인 개수가 증가하지 않으며 오버플로가 발생하는 경우에서의 더티 라인 리스트를 제어하는 과정을 설명하기 위해 나타내 보인 도면들이다.
도 26 내지 도 28은 본 개시에 따른 캐시 시스템에서 라이트 미스이고 더티 라인 개수가 증가하지 않으며 오버플로가 발생하지 않는 경우에서의 더티 라인 리스트를 제어하는 과정을 설명하기 위해 나타내 보인 도면들이다.
도 29 내지 도 31은 본 개시에 따른 캐시 시스템에서 라이트 미스이고 더티 라인 개수가 증가하지 않으며 오버플로가 발생하는 경우에서의 더티 라인 리스트를 제어하는 과정을 설명하기 위해 나타내 보인 도면들이다.
본 출원의 예의 기재에서 "제1" 및 "제2"와 같은 기재는 부재를 구분하기 위한 것이며, 부재 자체를 한정하거나 특정한 순서를 의미하는 것으로 사용된 것은 아니다. 또한, 어느 부재의 "상"에 위치하거나 "상부", "하부", 또는 "측면"에 위치한다는 기재는 상대적인 위치 관계를 의미하는 것이지 그 부재에 직접 접촉하거나 또는 사이 계면에 다른 부재가 더 도입되는 특정한 경우를 한정하는 것은 아니다. 또한, 어느 한 구성 요소가 다른 구성 요소에 "연결되어 있다"거나 "접속되어 있다"의 기재는, 다른 구성 요소에 전기적 또는 기계적으로 직접 연결되어 있거나 또는 접속되어 있을 수 있으며, 또는, 중간에 다른 별도의 구성 요소들이 개재되어 연결 관계 또는 접속 관계를 구성할 수도 있다.
캐시 시스템에서의 데이터 라이트(data write)의 처리 방식들 중 라이트 백(write back) 방식은, 호스트로부터의 라이트 요청이 발생하는 경우 새로우 데이터를 캐시 시스템 내의 캐시 메모리에만 저장하고, 나중에 메모리에 저장하는 방식으로 데이터 라이트를 수행하는 방식이다. 따라서 이 경우 캐시 메모리에 저장되어 있는 데이터와 메모리에 저장되어 있는 데이터가 일치하지 않는 경우가 발생된다. 메모리에 저장된 데이터와 다른 값의 데이터를 포함하고 있는 캐시 메모리 영역은 "더티 라인(dirty line)"으로 정의될 수 있다. 캐시 메모리 내에 더티 라인이 존재하는 상태에서 파워가 갑자기 꺼지면, 캐시 메모리에 저장되어 있던 데이터를 메모리에 모두 쓰지 못하는 경우가 발생될 수 있다. 일반적으로 파워가 갑자기 꺼지는 이벤트(이하 "SPO(Suddenly Power Off) 이벤트"라 함)가 발생되면, 메모리 시스템 내의 충전 소자, 예컨대 커패시터를 통해 제한된 시간 동안 캐시 메모리에 있는 불일치 데이터를 메모리에 라이트할 수 있다. 따라서 캐시 시스템의 캐시 메모리 내의 더티 라인의 개수는, SPO 이벤트 발생시 내부의 충전 소자에 의해 메모리에 라이트할 수 있는 개수를 넘지 않아야 한다. 본 개시의 여러 실시예에서는 더티 라인 리스트(dirty line list)를 이용함으로써 더티 라인의 개수가 정해진 숫자로 유지되도록 할 수 있는 메모리 장치의 캐시 시스템 및 메모리 장치의 캐싱 방법을 제시한다. 여러 실시예들에 따르면, 더티 라인의 정해진 개수 유지를 위해 퇴거(eviction) 대상을 선정하는데 있어서 가장 최근에 사용되지 않은(LRU; Least Recently Used) 더티 라인에 대한 정보를 즉시 알 수 있다.
도 1은 본 개시에 따른 메모리 장치의 캐시 시스템의 일 예를 나타내 보인 블록도이다. 그리고 도 2 및 도 3은 각각 본 개시에 따른 메모리 장치의 캐시 시스템의 캐시 메모리 구성 및 더티 라인 리스트 구성의 일 예를 나타내 보인 도면들이다. 도 1을 참조하면, 캐시 시스템(cache system)(100)은, 호스트(host)와 메모리(memory) 사이에 배치되어 호스트에 의한 메모리로의 데이터 라이트 요청에 대응하여 데이터 캐싱 동작을 수행한다. 일 예에서 호스트는, 중앙처리장치(CPU)와 같은 프로세서일 수 있다. 일 예에서 메모리는 디램(DRAM)과 같은 휘발성 메모리일 수 있으며, 또한 상변화램(PCRAM)과 같은 불휘발성 메모리일 수도 있다. 일 예에서, 캐시 시스템(100)은, 캐시 메모리(cache memory)(110)와, 캐시 컨트롤러(cache controller)(120)와, 그리고 더티 라인 리스트(dirty line list)(130)를 포함하여 구성될 수 있다. 캐시 메모리(110)는, 호스트로부터 메모리로 쓰여질 데이터를 임시로 저장하는 저장영역들을 갖는다. 일 예에서 캐시 메모리(110)는 에스램(SRAM) 또는 디램(DRAM)으로 구성될 수 있다. 캐시 메모리(110)에 저장되어 있는 데이터는, 캐시 컨트롤러(120)의 제어 동작에 의해 메모리로 전송될 수 있다.
도 2에 나타낸 바와 같이, 캐시 메모리(110)는, 4개의 웨이들(way-0, way-1, way-2, way-3)을 포함할 수 있다. 본 예에서 4개의 웨이들을 예로 들었지만, 이는 단지 하나의 예일 뿐이며, 하나의 웨이이거나, 또는 4개 외의 다른 복수개의 웨이들일 수도 있다. 웨이들(way-0, way-1, way-2, way-3) 각각은, 복수개의 동일한 개수, 예컨대 128개의 블록들(blocks)을 갖는다. 블록들 각각은 바이너리 스트림으로 구성되는 세트 인덱스(set index)로 구분될 수 있다. 예컨대 웨이들(way-0, way-1, way-2, way-3) 각각의 첫번째 블록은 "00000000"의 세트 인덱스를 갖는다. 웨이들(way-0, way-1, way-2, way-3) 각각의 마지막 블록은 "11111111"의 세트 인덱스를 갖는다. 세트 인덱스는 메모리 내의 데이터 저장 영역을 지정하는 어드레스의 일부에 대응될 수 있다. 블록들(blocks) 각각에는 유효비트(valid bit), 태그(tag), 및 데이터(data)가 저장될 수 있다. 유효비트는, 데이터의 유효성을 알려주며, "0" 또는 "1"의 값을 가질 수 있다. 태그(tag)는, 세트 인덱스를 구성하는 바이너리 스트림과 함께 메모리 내의 데이터 저장 영역을 지정하는 어드레스에 대응될 수 있다. 예컨대 세트 인덱스가 "00000000"이고 태그(tag)가 "11"인 블록은, 메모리의 어드레스들 중 "1100000000"의 어드레스에 대응된다.
캐시 컨트롤러(120)는, 호스트로부터의 라이트 관련 정보, 예컨대 세트 인덱스(set index), 태그(tag), 및 라이트 데이터(write data)를 입력받고, 캐시 메모리(110)의 데이터 캐싱 동작이 적절하게 이루어지도록 일련의 제어 동작을 수행한다. 캐시 컨트롤러(120)는, 데이터 캐싱 동작을 수행하기 위해, 캐시 메모리(110)로부터 캐시 정보(cache information)를 입력받을 수 있으며, 세트 인덱스(set index), 태그(tag), 라이트 데이터(write data), 및 라이트 제어 신호(write control signal)를 전송할 수 있다. 또한 캐시 컨트롤러(120)는, 더티 라인 리스트에 대한 제어 동작을 수행하기 위해, 더티 라인 리스트(130)로 제어 명령어(control_command)를 전송할 수 있다.
구체적으로 호스트(host)로부터 태그(tag), 세트 인덱스(set index) 및 라이트 데이터(write data)가 전송되면, 캐시 컨트롤러(120)는, 캐시 메모리(110)로부터 캐시 정보(cache information)를 액세스(access)한다. 캐시 정보에는, 캐시 메모리(110) 내에서 전송된 세트 인덱스(set index)를 블록들 내에 전송된 태그(tag)가 존재하는지의 여부가 포함될 수 있다. 캐시 정보에 따라, 캐시 컨트롤러(120)는 라이트 히트(write hit)인지 라이트 미스(write miss)인지를 판단한 후, 그에 따른 캐시 라이트 동작을 수행한다. 캐시 라이트 동작은, 호스트로부터 전달된 태그(tag), 세트 인덱스(set index) 및 라이트 데이터(write data)와 함께 라이트 제어 신호(write control signal)를 캐시 메모리(110)에 전송함으로써 이루어질 수 있다. 캐시 라이트 동작에 의해 캐시 메모리(110) 내의 더티 라인 분포가 변경되면, 캐시 컨트롤러(120)는, 더티 라인 리스트에 더티 라인의 변경 상태가 반영되도록 하는 제어 명령어(control_command)를 전송한다.
도 3에 나타낸 바와 같이, 더티 라인 리스트(130)는, 스택(stack) 구조의 복수개, 예컨대 64의 노드들(131-1, 131-2, …, 131-63, 131-64)을 포함하는 레지스터 스택(register stack)으로 구성될 수 있다. 본 예에서 64개의 노드들(131-1, 131-2, …, 131-63, 131-64을 예로 들었지만, 노드들의 개수는, SPO 이벤트 발생시 내부의 충전 소자에 의해 메모리에 라이트할 수 있는 캐시 메모리(110)의 블록들 개수로 한정될 수 있다. 본 예의 경우, 갑자기 파워가 차단되더라도, 캐시 메모리(110) 내의 64개의 더티 라인들에 저장된 데이터를 메모리에 라이트할 수 있다. 복수개의 노드영역들(131-1, 131-2, …, 131-63, 131-64) 각각에는, 캐시 메모리(110) 내의 더티 라인의 상태 정보가 저장된다. 일 예에서 더티 라인의 상태 정보에는, 캐시 메모리(110) 내에서의 더티 라인의 웨이(way) 및 세트 인덱스(set index)에 관한 정보가 포함된다. 예컨대 웨이 "1" 및 세트 인덱스 "set_index_00"이 저장되어 있는 노드(131-1)는, 캐시 메모리(110)에서 웨이 "1" 및 세트 인덱스 "set_index_00"에 의해 지정되는 블록이 더티 라인이라는 것을 나타내준다. 캐시 메모리(110)가 하나의 웨이로 구성되는 경우, 웨이에 관한 정보는 없을 수 있다. 일 예에서 노드들(131-1, 131-2, …, 131-63, 131-64) 각각은 "0000000"부터 "1111111"까지의 노드 어드레스를 가질 수 있다. 더티 라인 리스트(130)를 구성하는 노드들(131-1, 131-2, …, 131-63, 131-64) 각각은 노드 어드레스에 의해 그 위치가 특정될 수 있다.
캐시 시스템(100)에서의 데이터 캐싱 동작에 의해 첫번째 더티 라인이 생성되는 경우, 생성된 더티 라인의 세트 인덱스 및 웨이에 관한 정보는, 최하위의 저장영역 어드레스인 "0000000"을 갖는 노드영역(131-1)에 저장된다. 이후 캐시 메모리(110)에서의 퇴거 동작에 의한 더티 라인의 변동이 발생되기 전까지, 더티 라인이 새롭게 생성될 때마다, 생성된 더티 라인의 세트 인덱스 및 웨이에 관한 정보가 노드 어드레스가 증가되는 순서대로 노드 내에 순차적으로 저장된다. 본 예에 따른 더티 라인 리스트(130)에서, 최하위의 노드 어드레스, 즉 "0000000"의 노드 어드레스를 갖는 노드(131-1)에는 항상 가장 최근에 사용되지 않는(LRU) 더티 라인의 상태 정보가 저장된다. 그리고 노드 어드레스가 증가할수록, 최근에 사용되지 않은 기간이 줄어드는 순서로 더티 라인에 대한 상태 정보가 저장된다. 더티 라인의 상태 정보가 저장되어 있는 노드들 중에서 최상위의 노드 어드레스를 갖는 노드에는 가장 최근에 사용된(MRU; Most Recently Used) 더티 라인의 상태 정보가 저장된다. 더티 라인 리스트(130)의 모든 노드들(131-1, 131-2, …, 131-63, 131-64)에 더티 라인의 상태 정보가 저장되는 경우, 오버플로(overflow) 상태가 된다. 반면에 더티 라인 리스트(130)의 모든 노드들(131-1, 131-2, …, 131-63, 131-64) 중 비어 있는 노드들이 있는 경우 오버플로가 아닌 상태가 된다.
캐시 메모리(110)에서 강제 퇴거가 발생되는 경우, 캐시 컨트롤러(120)는, 더티 라인 리스트(130) 내에서 최하위의 노드 어드레스, 즉 "0000000"의 노드 어드레스를 갖는 노드(131-1)에 저장되어 있는 상태 정보에 대응하는 더티 라인을 강제 퇴거 대상으로 설정한다. 이에 따라 캐시 메모리(110)에서 강제 퇴거가 발생되는 경우, 캐시 메모리(110) 내에서 가장 최근에 사용되지 않은(LRU) 더티 라인을 ??기 위한 검색 동작 없이, 가장 최근에 사용되지 않은(LRU) 더티 라인에 대한 퇴거 동작이 자동으로 수행될 수 있다. 강제 퇴거가 수행된 후에는, 노드(131-1)에 저장되어 있던 더티 라인에 대한 상태 정보가 삭제된다.
캐시 메모리(110) 내에서 정상 퇴거가 수행되는 경우, 캐시 컨트롤러(120)는, 더티 라인 리스트(130) 내의 노드들(131-1, 131-2, …, 131-63, 131-64) 중 어느 하나의 노드에 있는 더티 라인에 대한 상태 정보를 다른 노드로 이동시키는 제어 동작을 수행한다. 구체적으로 노드 어드레스 "0000001"를 갖는 노드(131-2)에 저장된 상태 정보에 대응되는 더티 라인에 대해 정상 퇴거 동작이 수행되어야 하는 경우, 노드(131-2)에 저장되어 있는 더티 라인의 상태 정보는, 더티 라인의 상태 정보가 저장된 노드들 중 최상위의 어드레스를 갖는 노드로 이동된다. 그리고 더티 라인의 상태 정보가 저장된 노드들 중 최상위의 어드레스를 갖는 노드부터 노드 어드레스가 감소되는 방향으로 순차적으로 상태 정보가 쉬프트(shift)된다. 예컨대 노드 어드레스 "0000001"의 노드(131-2)에 대응되는 더티 라인에 대한 정상 퇴거가 수행되어야 하는 경우, 노드(131-2)에 저장되어 있는 상태 정보는, 최상위 노드(131-64)로 이동된다. 그리고 최상위 노드(131-64)에 저장된 상태 정보("0", "set index_63)는 바로 하위의 노드 어드레스 "1111110"를 갖는 노드(131-63)로 쉬프트된다. 계속해서 노드(131-63)에 저장된 상태 정보("3", "set index_62)는 바로 하위의 노드 어드레스 "1111101"를 갖는 노드(131-62)로 쉬프트된다. 이와 같은 방식으로 노드(131-3)에 저장된 상태 정보("0", "set index_02)는, 정상 퇴거에 의한 이동으로 인해 비워진 노드(131-2)로 쉬프트된다.
본 개시에 따른 캐시 시스템(100)에서의 데이터 캐싱 동작은, "라이트 히트(write hit)"에 따른 데이터 캐싱 동작과, "라이트 미스(write miss)"에 따른 데이터 캐싱 동작을 포함할 수 있다. 본 예에서 "라이트 히트(write hit)"는 캐시 메모리(110)에서 라이트 데이터가 쓰여질 세트 인덱스를 갖는 블록 내에 라이트 데이터가 갖는 태그와 동일한 태그가 존재하는 경우로 정의될 수 있다. 이에 따라 "라이트 히트(write hit)"의 경우, 캐시 라이트(cache write)가 이루어질 캐시 메모리(110)의 블록 내에 라이트하고자 하는 어드레스를 갖는 메모리 영역의 데이터가 저장되어 있는 상태에서 데이터 캐싱 동작이 수행된다. 이때 캐시 메모리(110)에 저장되어 있는 데이터가 동일한 어드레스의 메모리 영역에서 저장되어 있는 데이터와 일치하는 경우, 즉 더티 라인이 아닌 경우, 캐시 라이트 동작에 의해 전체 더티 라인의 개수는 증가된다. 반면에 캐시 메모리(110)에 저장되어 있는 데이터가 동일한 어드레스의 메모리 영역에서 저장되어 있는 데이터와 일치하지 않는 경우, 즉 더티 라인인 경우, 캐시 라이트 동작에 의해 더티 라인이 새롭게 추가되지만, 기존의 더티 라인은 제거되므로 전체 더티 라인의 개수는 변하지 않는다.
"라이트 미스(write miss)"는 캐시 메모리(110)에서 라이트 데이터가 쓰여질 세트 인덱스를 갖는 블록 내에 라이트 데이터가 갖는 태그와 동일한 태그가 존재하지 않는 경우로 정의될 수 있다. 이에 따라 "라이트 미스(write miss)"의 경우, 캐시 라이트(cache write)가 이루어질 캐시 메모리(110)의 블록 내에 라이트하고자 하는 제1 어드레스와는 다른 제2 어드레스를 갖는 메모리 영역의 데이터가 저장되어 있는 상태에서 데이터 캐싱 동작이 수행된다. 이때 캐시 메모리(110)에 저장되어 있는 데이터가 동일한 제2 어드레스의 메모리 영역에 저장되어 있는 데이터와 일치하는 경우, 즉 더티 라인이 아닌 경우, 캐시 라이트 동작에 의해 전체 더티 라인의 개수는 증가된다. 반면에 캐시 메모리(110)에 저장되어 있는 데이터가 동일한 제2 어드레스의 메모리 영역에 저장되어 있는 데이터와 일치하지 않는 경우, 즉 더티 라인인 경우, 캐시 메모리(110)에 저장되어 있던 데이터를 제2 어드레스의 메모리 영역에 쓰는 퇴거(evition) 동작을 수행한 후에, 캐시 라이트 동작을 수행한다. 따라서 이 경우 라이트 데이터의 캐시 라이트에 의해 더티 라인이 증가하지만, 기존의 더티 라인이 퇴거 동작에 의해 제거되므로, 전체 더티 라인들의 개수는 변하지 않는다. 반면에 캐시 메모리(110)에 저장되어 있는 데이터가 동일한 제2 어드레스의 메모리 영역에 저장되어 있는 데이터와 일치하는 경우, 즉 더티 라인아 이닌 경우, 별도의 퇴거 동작 없이 캐시 라이트 동작을 수행한다. 따라서 이 경우 라이트 데이터의 캐시 라이트에 의한 더티 라인의 증가로, 전체 더티 라인들의 개수는 증가된다.
도 4는 본 개시에 따른 메모리 장치의 캐시 시스템에서의 라이트 히트에서의 데이터 캐싱 동작의 일 예를 설명하기 위해 나타내 보인 도면이다. 도 4를 참조하면, 메모리 내에서 "1000000011"의 어드레스를 갖는 영역(155)에 제1 데이터(DATA_A)를 쓰는 요청이 발생되는 경우를 예로 들기로 한다. 그리고 캐시 메모리(110) 내에서 "00000011"의 세트 인덱스를 갖는 블록(115)에 태그 "10" 및 제2 데이터(DATA_B)가 저장되어 있는 상태인 경우를 예로 들기로 한다. 라이트할 어드레스가 "1000000011"이므로, 캐시 메모리(110) 내에서 "00000011"의 세트 인덱스를 갖는 블록(115)을 대상으로 캐시 라이트가 수행되며, 태그로 "10"이 저장된다. 구체적으로 캐시 컨트롤러(120)는, 호스트 요청에 응답하여 캐시 메모리(110)로부터의 캐시 정보(cache information)를 액세스하여, 세트 인덱스가 "00000011"인 블록(115)에 저장되어 있는 태그 정보를 파악한다. 본 예에서, 캐시 메모리(110)의 세트 인덱스 "00000011"인 블록(115)에 태그 "10"이 저장되어 있으므로, 캐시 컨트롤러(120)는 라이트 히트(write hit)에 따른 캐시 라이트 동작을 수행한다. 이때 캐시 메모리(110)의 세트 인덱스 "00000011"인 블록(115)은 더티 라인이 아니거나, 또는 더티 라인일 수 있다.
예컨대 캐시 메모리(110)의 세트 인덱스 "00000011"인 블록(115)에 제2 데이터(DATA_B)가 저장되어 있고, 메모리 내에서 어드레스 "1000000011"을 갖는 영역(155)에도 동일한 제2 데이터(DATA_B)가 저장되어 있는 경우, 캐시 메모리(110)의 세트 인덱스 "00000011"인 블록(115)은 더티 라인에 해당되지 않는다. 캐시 라이트(cache write) 동작에 의해, 캐시 메모리(110)의 세트 인덱스 "00000011"인 블록(115)에는 기존의 제2 데이터(DATA_B)가 라이트할 제1 데이터(DATA_A)로 덮여 쓰여진다. 이와 같은 캐시 라이트(cache write) 동작에 의해 캐시 메모리(110)의 세트 인덱스 "00000011"인 블록(115)은 더티 라인에 새롭게 추가되며, 따라서 전체 더티 라인들의 개수는 하나 증가된다. 반면에 캐시 메모리(110)의 세트 인덱스 "00000011"인 블록(115)에 제2 데이터(DATA_B)가 저장되어 있고, 메모리 내에서 어드레스 "1000000011"을 갖는 영역(155)에는 제2 데이터(DATA_B)와는 다른 제3 데이터(DATA_C)가 저장되어 있는 경우, 캐시 메모리(110)의 세트 인덱스 "00000011"인 블록(115)은 더티 라인에 해당된다. 캐시 라이트(cache write) 동작에 의해, 캐시 메모리(110)의 세트 인덱스 "00000011"인 블록(115)에는 기존의 제2 데이터(DATA_B)가 라이트할 제1 데이터(DATA_A)로 덮여 쓰여진다. 이와 같은 캐시 라이트(cache write) 동작에 의해 캐시 메모리(110)의 세트 인덱스 "00000011"인 블록(115)은 더티 라인에 새롭게 추가된다. 그러나 캐시 라이트 동작 이전에 더티 라인에 포함되어 있던 기존의 더티 라인이 제거됨으로써, 전체 더티 라인들의 개수는 변화되지 않는다.
도 5는 본 개시에 따른 메모리 장치의 캐시 시스템에서의 라이트 미스트에서의 데이터 캐싱 동작의 일 예를 설명하기 위해 나타내 보인 도면이다. 도 5를 참조하면, 메모리 내에서 "1000000011"의 어드레스를 갖는 영역(155)에 제1 데이터(DATA_A)를 쓰는 요청이 발생되는 경우를 예로 들기로 한다. 그리고 캐시 메모리(110) 내에서 "00000011"의 세트 인덱스를 갖는 블록(115)에 태그 "11" 및 제4 데이터(DATA_D)가 저장되어 있는 상태인 경우를 예로 들기로 한다. 라이트할 어드레스가 "1000000011"이므로, 캐시 메모리(110) 내에서 "00000011"의 세트 인덱스를 갖는 블록(115)을 대상으로 캐시 라이트가 수행되며, 태그로 "10"이 저장된다. 구체적으로 캐시 컨트롤러(120)는, 호스트 요청에 응답하여 캐시 메모리(110)로부터의 캐시 정보(cache information)를 액세스하여, 세트 인덱스가 "00000011"인 블록(115)에 저장되어 있는 태그 정보를 파악한다. 본 예에서, 캐시 메모리(110)의 세트 인덱스 "00000011"인 블록(115)에 태그 "11"이 저장되어 있으므로, 캐시 컨트롤러(120)는 라이트 미스(write miss)에 따른 캐시 라이트 동작을 수행한다. 이때 캐시 메모리(110)의 세트 인덱스 "00000011"인 블록(115)은 더티 라인이 아니거나, 또는 더티 라인일 수 있다.
예컨대 캐시 메모리(110)의 세트 인덱스 "00000011"인 블록(115)에 제4 데이터(DATA_D)가 저장되어 있고, 메모리 내에서 어드레스 "1100000011"을 갖는 영역(156)에도 동일한 제4 데이터(DATA_D)가 저장되어 있는 경우, 캐시 메모리(110)의 세트 인덱스 "00000011"인 블록(115)은 더티 라인에 해당되지 않는다. 캐시 라이트(cache write) 동작에 의해, 캐시 메모리(110)의 세트 인덱스 "00000011"인 블록(115)에는 기존의 제D 데이터(DATA_D)가 라이트할 제1 데이터(DATA_A)로 덮여 쓰여지고, 태그도 기존의 "11"에서 "10"으로 변경된다. 이와 같은 캐시 라이트(cache write) 동작에 의해 캐시 메모리(110)의 세트 인덱스 "00000011"인 블록(115)은 더티 라인에 새롭게 추가되며, 따라서 전체 더티 라인들의 개수는 하나 증가된다. 반면에 캐시 메모리(110)의 세트 인덱스 "00000011"인 블록(115)에 제4 데이터(DATA_D)가 저장되어 있고, 메모리 내에서 어드레스 "1100000011"을 갖는 영역(156)에는 제4 데이터(DATA_D)와는 다른 제5 데이터(DATA_E)가 저장되어 있는 경우, 캐시 메모리(110)의 세트 인덱스 "00000011"인 블록(115)은 더티 라인에 해당된다. 이 경우 캐시 라이트(cache write) 동작을 수행하기 전에, 더티 라인이었던 캐시 메모리(110)의 세트 인덱스 "00000011"인 블록(115)에 저장되어 있던 제4 데이터(DATA_D)에 대한 퇴거(eviction) 동작이 먼저 수행된다. 이 퇴거 동작에 의해, 캐시 메모리(110)의 세트 인덱스 "00000011"인 블록(115)에 저장되어 있던 제4 데이터(DATA_D)는 "1100000011"의 어드레스를 갖는 메모리 영역(156)에 쓰여진다. 퇴거 동작이 끝나면, 캐시 라이트 동작을 수행하여, 캐시 메모리(110)의 세트 인덱스 "00000011"인 블록(115)에는 라이트할 제1 데이터(DATA_A)가 저장되며, 태그도 기존의 "11"에서 "10"으로 변경된다. 이 경우 캐시 라이트 동작에 의해 새로운 더티 라인이 추가되었지만, 캐시 라이트 동작 이전에 더티 라인에 포함되어 있던 기존의 더티 라인이 퇴거 동작에 의해 제거됨으로써, 전체 더티 라인들의 개수는 변화되지 않는다.
도 6은 본 개시에 따른 메모리 장치의 캐시 시스템의 데이터 캐싱 동작을 설명하기 위해 나타내 보인 플로챠트이다. 도 6을 참조하면, 단계 210에서 호스트로부터의 라이트 요청이 발생되면, 단계 220에서 라이트 히트(write hit)인지 라이트 미스(write miss)인지의 여부를 판단한다. 단계 220의 판단에서 라이트 히트(write hit)인 경우 단계 280을 수행하고, 라이트 미스(write miss)인 경우 단계 230을 수행한다. 먼저 라이트 미스(write miss)인 경우, 단계 230에서 컨플릭트(conflict) 발생 여부를 판단한다. 단계 230에서의 컨플릭트(conflict) 발생 여부의 판단은, 라이트할 캐시 메모리(110)의 세트 인덱스를 갖는 블록이 더티 라인인지의 여부를 통해 이루어질 수 있다. 라이트할 캐시 메모리(110)의 세트 인덱스를 갖는 블록이 더티 라인인 경우, 단계 230에서 컨플릭트(conflict)가 발생한 것으로 판단한다. 반면에 라이트할 캐시 메모리(110)의 세트 인덱스를 갖는 블록이 더티 라인이 아닌 경우, 단계 230에서 컨플릭트(conflict)가 발생하지 않은 것으로 판단한다.
단계 230에서 컨플릭트(conflict)가 발생한 경우, 단계 240에서 라이트할 캐시 메모리(110)의 세트 인덱스를 갖는 블록, 즉 더티 라인에 대한 정상 퇴거(normal eviction)를 수행한다. 본 예에서 "정상 퇴거"는, 캐시 메모리(110) 내의 라이트 데이터 갱신으로 인한 기존의 더티 라인에 대한 퇴거로 정의될 수 있다. 정상 퇴거에 의해, 라이트할 캐시 메모리(110)의 세트 인덱스를 갖는 블록, 즉 더티 라인에 저장되어 있던 데이터는 메모리에 쓰여진다. 정상 퇴거가 수행된 후에는, 단계 270에서 캐시 메모리(110)에 라이트 데이터를 쓰는 캐시 라이트(cache write) 동작이 수행된다. 이에 따라 라이트할 캐시 메모리(110)의 세트 인덱스를 갖는 블록은 퇴거 동작이 수행된 기존의 데이터에서 라이트 데이터로 갱신되며, 태그값도 변경된다.
단계 230에서 컨플릭트(conflict)가 발생하지 않은 경우, 단계 250에서 오버플로(overflow) 여부를 판단한다. 오버플로(overflow) 발생 여부는, 데이터 캐싱 동작에 의해 더티 라인의 개수가 정해진 개수를 초과하는지의 여부를 판단함으로써 수행될 수 있다. 본 예에서 "더티 라인들의 정해진 개수"는, SPO 이벤트 발생시 메모리에 라이트할 수 있는 캐시 메모리(110)의 블록들의 개수로 정의될 수 있다. 본 예에서 더티 라인의 정해진 개수는 더티 라인 리스트(130)의 저장영역들의 개수와 일치한다. 단계 250에서 데이터 캐싱 동작에 의해 더티 라인의 개수가 정해진 개수를 초과하는 경우 오버플로(overflow)가 발생한 것으로 판단한다. 반면에 단계 250에서 데이터 캐싱 동작에 의해 더티 라인의 개수가 정해진 개수를 초과하지 않는 경우 오버플로(overflow)가 발생하지 않은 것으로 판단한다.
단계 250에서 오버플로(overflow)가 발생한 경우, 단계 260에서 더티 라인에 대한 강제 퇴거(forced eviction)를 수행한다. 본 예에서 "강제 퇴거"는, 캐시 메모리(110) 내의 전체 더티 라인들의 개수 초과로 인한 퇴거로 정의될 수 있다. 강제 퇴거는, 현재의 더티 라인들 중 가장 최근에 사용되지 않은(LRU; Least Recently Used) 더티 라인에 대해 수행된다. 이에 따라 가장 최근에 사용되지 않은(LRU; Least Recently Used) 더티 라인에 저장된 데이터는 메모리에 쓰여진다. 강제 퇴거가 수행된 후에는, 단계 270에서 캐시 메모리(110)에 라이트 데이터를 쓰는 캐시 라이트(cache write) 동작이 수행된다. 라이트 미스의 경우, 태그값도 변경된다. 단계 250에서 오버플로(overflow)가 발생되지 않은 경우, 즉 라이트 미스에 따른 데이터 캐싱 동작에 의해 더티 라인이 새롭게 추가되더라도, 전체 더티 라인들의 개수가 정해진 개수를 초과하지 않는 경우, 단계 270에서 캐시 메모리(110)에 라이트 데이터를 쓰는 캐시 라이트(cache write) 동작이 수행된다.
다음에 라이트 히트(write hit)인 경우, 단계 280에서 데이터 캐싱 동작에 의해 전체 더티 라인들의 개수가 증가하는지의 여부를 판단한다. 도 4를 참조하여 설명한 바와 같이, 라이트 히트(write hit)의 경우, 캐시 메모리(110) 내에서 라이트 데이터가 쓰여질 블록이 더티 라인인 경우 전체 더티 라인들의 개수는 변하지 않는다. 반면에 캐시 메모리(110) 내에서 라이트 데이터가 쓰여질 블록이 더티 라인이 아닌 경우, 전체 더티 라인들의 개수는 하나 증가한다. 단계 280에서 데이터 캐싱 동작에 의해 전체 더티 라인들의 개수가 증가하지 않는 경우, 단계 270에서 캐시 메모리(110) 내에 라이트 데이터를 쓰는 캐시 라이트 동작을 수행한다. 반면에 단계 280에서 데이터 캐싱 동작에 의해 전체 더티 라인들의 개수가 증가하는 경우, 단계 250에서 오버플로(overflow) 여부를 판단한다. 단계 250에서 오버플로(overflow)가 발생한 경우, 단계 260에서 더티 라인에 대한 강제 퇴거(forced eviction)를 수행한다. 이에 따라 가장 최근에 사용되지 않은(LRU; Least Recently Used) 더티 라인에 저장된 데이터는 메모리에 쓰여진다. 강제 퇴거가 수행된 후에는, 단계 270에서 캐시 메모리(110)에 라이트 데이터를 쓰는 캐시 라이트(cache write) 동작이 수행된다. 단계 250에서 오버플로(overflow)가 발생되지 않은 경우, 즉 라이트 미스에 따른 데이터 캐싱 동작에 의해 더티 라인이 새롭게 추가되더라도, 전체 더티 라인들의 개수가 정해진 개수를 초과하지 않는 경우, 단계 270에서 캐시 메모리(110)에 라이트 데이터를 쓰는 캐시 라이트(cache write) 동작이 수행된다
도 7은 본 개시에 따른 캐시 시스템에서 더티 라인 리스트의 동작을 설명하기 위해 나타내 보인 플로챠트이다. 도 7을 참조하면, 단계 310에서 더티 라인의 개수가 증가하는지의 여부를 판단한다. 단계 310에서 더티 라인 개수가 증가하는 경우는, 캐시 메모리(110) 내의 타겟 블록, 즉 캐시 메모리(110) 내에서 캐시 라이트가 이루어질 블록이 더티 라인이 아닌 경우에 해당될 수 있다. 단계 310에서 더티 라인의 개수가 증가하면, 단계 320에서 오버플로가 발생하는지의 여부를 판단한다. 즉 단계 310에서 더티 라인 생성으로 더티 라인의 개수가 증가함에 따라, 더티 라인들의 갯수가 더티 라인 리스트(130)의 노드들 개수를 초과하는 오버플로가 발생될 수 있다. 단계 320에서의 오버플로 발생 여부의 판단은, 더티 라인 리스트(130)로부터 캐시 컨트롤러(120)로부터 전송되는 더티 라인 리스트 정보 데이터(dirty line list info data)를 기초로 이루어질 수 있다. 오버플로가 발생되면 캐시 메모리(110)의 가장 최근에 사용되지 않은 더티 라인에 대한 강제 퇴거가 수행되어야 한다. 단계 320의 판단에서 오버플로가 발생되면, 단계 330에서 더티 라인 리스트(130)에 저장되어 있는 강제 퇴거된 더티 라인에 대한 상태 정보를 삭제한다. 단계 340에서 더티 라인 리스트(130)의 노드들 각각에 저장된 상태 정보를 하위 어드레스를 갖는 노드로 쉬프트시킨다. 단계 350에서 더티 라인 리스트(130)의 노드들 중 최상위 어드레스를 갖는 노드에 생성된 더티 라인의 상태 정보를 저장한다. 단계 320의 판단에서 오버플로가 발생되지 않으면, 단계 360에서 생성된 더티 라인에 대한 상태 정보를 더티 라인 리스트(130)의 비어 있는 노드들 중 최하위 노드 어드레스를 갖는 노드에 저장한다.
단계 310에서 더티 라인 개수가 증가하지 않는 경우는, 캐시 메모리(110)의 타겟 블록에 이미 더티 라인이 저장되어 있는 경우에 해당한다. 또한 더티 라인 개수가 증가하지 않으므로, 오버플로는 발생되지 않는다. 이 경우 단계 370에서 라이트 히트(write hit)인지 라이트 미스(write miss)인지의 여부를 판단한다. 단계 370에서 라이트 히트인 경우, 캐시 메모리(110)의 타겟 블록에 저장되어 있는 더티 라인에 대한 정상 퇴거는 불필요하다. 이 경우 단계 380에서 생성되는 더티 라인에 대한 상태 정보를 더티 라인에 대한 상태 정보가 저장된 노드들 중 최상위 노드 어드레스를 갖는 노드로 이동시킨다. 이와 같은 이동에 의해, 생성된 더티 라인에 대한 상태 정보가 이동되어 저장되는 노드부터 이동되어 삭제되는 노드에 이르기까지, 각 노드에 저장되어 있는 더티 라인에 대한 상태 정보는, 순차적으로 바로 아래의 노드 어드레스를 갖는 노드로 쉬프트된다. 단계 370에서 라이트 미스인 경우, 캐시 메모리(110)의 타겟 블록에 저장되어 있는 더티 라인에 대한 정상 퇴거가 수행되어야 한다. 이 경우 단계 390에서 정상 퇴거된 더티 라인에 대한 상태 정보를 상태 정보가 저장된 노드들 중 최상위 노드 어드레스를 갖는 노드로 이동시킨다. 이 경우에도 정상 퇴거된 더티 라인에 대한 상태 정보가 이동되어 저장되는 노드부터 이동되어 삭제되는 노드에 이르기까지, 각 노드에 저장되어 있는 더티 라인에 대한 상태 정보는, 순차적으로 바로 아래의 노드 어드레스를 갖는 노드로 쉬프트된다.
이하에서는 여러 예들을 통해 도 7의 더티 라인 리스트의 동작 과정을 보다 상세하게 설명하기로 한다. 이하의 여러 예들에서, 캐시 메모리(110)의 유효비트와 더티 라인 리스트(130)의 웨이에 대한 값들은 생략되었다.
도 8 내지 도 10은 본 개시에 따른 캐시 시스템에서 라이트 히트이고 더티 라인 개수가 증가하며, 오버플로가 발생하지 않는 경우에서의 더티 라인 리스트를 제어하는 과정을 설명하기 위해 나타내 보인 도면들이다. 먼저 도 8에 나타낸 바와 같이, 캐시 메모리(110)의 세트 인덱스 "00000010"의 블록에 태그 "11" 및 데이터 "DATA_B"가 저장되어 있고, 세트 인덱스 "11111101"의 블록에 태그 "11" 및 데이터 "DATA_C"가 저장되어 있다. 이때 데이터 "DATA_B"가 저장되어 있는 블록은 더티 라인이 아닌 경우, 즉 메모리 내에서 어드레스 "1100000010"을 갖는 영역에 데이터 "DATA_B"가 쓰여져 있는 경우이다. 데이터 "DATA_C"가 저장되어 있는 블록은 더티 라인, 특히 가장 최근에 사용되지 않은(LRU) 더티 라인인 경우로 예시한다. 더티 라인 리스트(130)에는 최하위 노드 어드레스 "0000000"의 최하위 노드(131-1)부터 노드 어드레스 "1111101"의 노드(131-62)에 이르기까지 세트 인덱스가 저장되어 있다. 더티 라인 리스트(130)에서 최하위 노드 어드레스 "0000000"의 노드(131-1)에는 가장 최근에 사용되지 않은(LRU) 더티 라인의 세트 인덱스인 "11111101"이 저장되어 있다. 노드 어드레스 "1111110"의 노드(131-63) 및 노드 어드레스 "1111111"의 최상위 노드(131-64)는 비워 있는 상태, 즉 오버플로가 발생되지 않는 상태이다. 이와 같은 상태에서 메모리의 어드레스 "1100000010"에 데이터 "DATA_A"에 대한 라이트(write) 요청이 발생하면, 캐시 메모리(110)에서 세트 인덱스 "00000010"의 블록에 각각 태그 "11" 및 데이터 "DATA_A"를 저장시키는 캐시 라이트 동작이 수행된다.
이 경우는, 도 7의 플로챠트를 참조하여 설명한 바와 같이, 단계 310에서 더티 라인의 개수가 증가하고, 단계 320에서 오버플로가 발생하지 않는 경우에 해당한다. 따라서 단계 360에서의 생성된 더티 라인에 대한 상태 정보를 비어 있는 노드들 중 최하위 노드 어드레스를 갖는 노드에 저장시킨다. 구체적으로, 도 9에 나타낸 바와 같이, 세트 인덱스 "00000010"의 블록에 태그 "11" 및 데이터 "DATA_A"가 저장되고, 더티 라인 리스트(130)의 비어 있는 노드들 중 최하위 노드 어드레스, 즉 "1111110"의 노드 어드레스를 갖는 노드(131-63)에 생성되는 더티 라인의 세트 인덱스 "00000010"가 저장된다. 이에 따라, 도 10에 나타낸 바와 같이, 기존에는 더티 라인이 아니었지만, 캐시 라이트 동작에 의해 태그 "11" 및 데이터 "DATA_A"가 저장된 캐시 메모리(110)의 세트 인덱스 "00000010"의 블록은 더티 라인으로 변경된다. 특히 캐시 메모리(110)의 세트 인덱스 "00000010"의 블록은 가장 최근에 사용된(MRU) 더티 라인을 구성한다.
도 11 내지 도 13은 본 개시에 따른 캐시 시스템에서 라이트 히트이고 더티 라인 개수가 증가하며 오버플로가 발생하는 경우에서의 더티 라인 리스트를 제어하는 과정을 설명하기 위해 나타내 보인 도면들이다. 먼저 도 11에 나타낸 바와 같이, 캐시 메모리(110)의 세트 인덱스 "00000010"의 블록에 태그 "11" 및 데이터 "DATA_B"가 저장되어 있고, 세트 인덱스 "11111101"의 블록에 태그 "11" 및 데이터 "DATA_C"가 저장되어 있다. 이때 데이터 "DATA_B"가 저장되어 있는 블록은 더티 라인이 아닌 경우, 즉 메모리 내에서 어드레스 "1100000010"을 갖는 영역에 데이터 "DATA_B"가 쓰여져 있는 경우이다. 데이터 "DATA_C"가 저장되어 있는 블록은 더티 라인, 특히 가장 최근에 사용되지 않은(LRU) 더티 라인인 경우로 예시한다. 더티 라인 리스트(130)에는 최하위 노드 어드레스 "0000000"의 최하위 노드(131-1)부터 최상위 노드 어드레스 "1111111"의 노드(131-64)에 이르기까지 모든 노드에 세트 인덱스가 저장되어 있다. 더티 라인 리스트(130)에서 최하위 노드 어드레스 "0000000"의 노드(131-1)에는 가장 최근에 사용되지 않은(LRU) 더티 라인의 세트 인덱스인 "11111101"이 저장되어 있다. 노드 어드레스 "1111111"의 최상위 노드(131-64)에는 가장 최근에 사용된(MRU) 더티 라인의 세트 인덱스인 "00010101"이 저장되어 있는 상태이다. 이와 같은 상태에서 메모리의 어드레스 "1100000010"에 데이터 "DATA_A"에 대한 라이트(write) 요청이 발생하면, 캐시 메모리(110)에서 세트 인덱스 "00000010"의 블록에 각각 태그 "11" 및 데이터 "DATA_A"를 저장시키는 캐시 라이트 동작이 수행된다.
이 경우는, 도 7의 플로챠트를 참조하여 설명한 바와 같이, 단계 310에서 더티 라인의 개수가 증가하고, 단계 320에서 오버플로가 발생하는 경우에 해당한다. 따라서 도 7의 단계 330 내지 단계 350의 과정들이 수행된다. 구체적으로, 도 12에 나타낸 바와 같이, 세트 인덱스인 "11111101"인 가장 최근에 사용되지 않은(LRU) 더티 라인에 대한 강제 퇴거가 수행된다. 이에 따라 메모리의 어드레스 "1111111101" 영역에는 데이터 "DATA_C"가 쓰여진다. 더티 라인 리스트(130)의 최하위 노드 어드레스 "0000000"의 노드(131-1)에 저장되어 있던 가장 최근에 사용되지 않은(LRU) 더티 라인의 상태 정보, 즉 세트 인덱스 "11111101"는 삭제된다. 그리고 도면에서 화살표로 나타낸 바와 같이, 노드들 각각에 저장된 상태 정보는 하위의 노드 어드레스를 갖는 노드로 쉬프트된다. 그리고 데이터 "DATA_A"에 의해 새로 생성되는 더티 라인에 대한 상태 정보, 즉 세트 인덱스 "00000010"은 더티 라인 리스트(130)의 최상위의 노드 어드레스 "1111111"를 갖는 노드(131-64)에 저장된다. 이에 따라 도 13에 나타낸 바와 같이, 캐시 메모리(110)의 세트 인덱스 "00000010"의 블록에 태그 "11" 및 데이터 "DATA_A"가 저장되고, 이 블록은 가장 최근에 사용된(MRU) 더티 라인을 구성한다. 캐시 메모리(110)의 세트 인덱스 "11111101"의 블록은 더 이상 더티 라인에 포함되지 않는다. 더티 라인 리스트(130)의 최하위 노드 어드레스, 즉 "0000000"의 노드 어드레스를 갖는 노드(131-1)에는 노드 어드레스 "0000001"의 노드(131-2)에 저장되어 있던 세트 인덱스 "10011101"이 쉬프트되어 저장된다. 이에 따라 캐시 메모리(110)에서 세트 인덱스 "10011101"의 블록이 가장 최근에 사용되지 않은(LRU) 더티 라인을 구성한다.
도 14 내지 도 16은 본 개시에 따른 캐시 시스템에서 라이트 미스이고 더티 라인 개수가 증가하며 오버플로가 발생하지 않는 경우에서의 더티 라인 리스트를 제어하는 과정을 설명하기 위해 나타내 보인 도면들이다. 먼저 도 14에 나타낸 바와 같이, 캐시 메모리(110)의 세트 인덱스 "00000010"의 블록에 태그 "00" 및 데이터 "DATA_B"가 저장되어 있고, 세트 인덱스 "11111101"의 블록에 태그 "11" 및 데이터 "DATA_C"가 저장되어 있다. 이때 데이터 "DATA_B"가 저장되어 있는 블록은, 더티 라인이 아닌 경우, 즉 메모리 내에서 어드레스 "1100000010"을 갖는 영역에 데이터 "DATA_B"가 쓰여져 있는 경우이다. 데이터 "DATA_C"가 저장되어 있는 블록은 더티 라인, 특히 가장 최근에 사용되지 않은(LRU) 더티 라인인 경우로 예시한다. 더티 라인 리스트(130)에는 최하위 노드 어드레스 "0000000"의 최하위 노드(131-1)부터 노드 어드레스 "1111101"의 노드(131-62)에 이르기까지 세트 인덱스가 저장되어 있다. 더티 라인 리스트(130)에서 최하위 노드 어드레스 "0000000"의 노드(131-1)에는 가장 최근에 사용되지 않은(LRU) 더티 라인의 세트 인덱스인 "11111101"이 저장되어 있다. 노드 어드레스 "1111110"의 노드(131-63) 및 노드 어드레스 "1111111"의 최상위 노드(131-64)는 비워 있는 상태, 즉 오버플로가 발생되지 않는 상태이다. 이와 같은 상태에서 메모리의 어드레스 "1100000010"에 데이터 "DATA_A"에 대한 라이트(write) 요청이 발생하면, 캐시 메모리(110)에서 세트 인덱스 "00000010"의 블록에 각각 태그 "11" 및 데이터 "DATA_A"를 저장시키는 캐시 라이트 동작이 수행된다.
이 경우는, 도 7의 플로챠트를 참조하여 설명한 바와 같이, 단계 310에서 더티 라인의 개수가 증가하고, 단계 320에서 오버플로가 발생하지 않는 경우에 해당한다. 따라서 단계 360에서의 생성된 더티 라인에 대한 상태 정보를 비어 있는 노드들 중 최하위 노드 어드레스를 갖는 노드에 저장시킨다. 구체적으로, 도 15 및 도 16에 나타낸 바와 같이, 세트 인덱스 "00000010"의 블록에 태그 "11" 및 데이터 "DATA_A"가 저장되고, 더티 라인 리스트(130)의 비어 있는 노드들 중 최하위 노드 어드레스, 즉 "1111110"의 노드 어드레스를 갖는 노드(131-63)에 새롭게 생성된 더티 라인의 세트 인덱스 "00000010"가 저장된다. 이에 따라, 기존에는 더티 라인이 아니었지만, 캐시 라이트 동작에 의해 태그 "11" 및 데이터 "DATA_A"가 저장된 캐시 메모리(110)의 세트 인덱스 "00000010"의 블록은 더티 라인으로 변경된다. 특히 캐시 메모리(110)의 세트 인덱스 "00000010"의 블록은 가장 최근에 사용된(MRU) 더티 라인을 구성한다.
도 17 내지 도 19는 본 개시에 따른 캐시 시스템에서 라이트 미스이고 더티 라인 개수가 증가하며 오버플로가 발생하는 경우를 나타낸다. 먼저 도 17에 나타낸 바와 같이, 캐시 메모리(110)의 세트 인덱스 "00000010"의 블록에 태그 "00" 및 데이터 "DATA_B"가 저장되어 있고, 세트 인덱스 "11111101"의 블록에 태그 "11" 및 데이터 "DATA_C"가 저장되어 있다. 이때 데이터 "DATA_B"가 저장되어 있는 블록은, 더티 라인이 아닌 경우, 즉 메모리 내에서 어드레스 "1100000010"을 갖는 영역에 데이터 "DATA_B"가 쓰여져 있는 경우이다. 데이터 "DATA_C"가 저장되어 있는 블록은 더티 라인, 특히 가장 최근에 사용되지 않은(LRU) 더티 라인인 경우로 예시한다. 더티 라인 리스트(130)에는 최하위 노드 어드레스 "0000000"의 최하위 노드(131-1)부터 최상위 노드 어드레스 "1111111"의 노드(131-64)에 이르기까지 모든 노드에 세트 인덱스가 저장되어 있다. 더티 라인 리스트(130)에서 최하위 노드 어드레스 "0000000"의 노드(131-1)에는 가장 최근에 사용되지 않은(LRU) 더티 라인의 세트 인덱스인 "11111101"이 저장되어 있다. 노드 어드레스 "1111111"의 최상위 노드(131-64)에는 가장 최근에 사용된(MRU) 더티 라인의 세트 인덱스인 "00010101"이 저장되어 있는 상태이다. 이와 같은 상태에서 메모리의 어드레스 "1100000010"에 데이터 "DATA_A"에 대한 라이트(write) 요청이 발생하면, 캐시 메모리(110)에서 세트 인덱스 "00000010"의 블록에 각각 태그 "11" 및 데이터 "DATA_A"를 저장시키는 캐시 라이트 동작이 수행된다.
이 경우는, 도 7의 플로챠트를 참조하여 설명한 바와 같이, 단계 310에서 더티 라인의 개수가 증가하고, 단계 320에서 오버플로가 발생하는 경우에 해당한다. 따라서 도 7의 단계 330 내지 단계 350의 과정들이 수행된다. 구체적으로, 도 18에 나타낸 바와 같이, 세트 인덱스인 "11111101"인 가장 최근에 사용되지 않은(LRU) 더티 라인에 대한 강제 퇴거가 수행된다. 이에 따라 메모리의 어드레스 "1111111101" 영역에는 데이터 "DATA_C"가 쓰여진다. 더티 라인 리스트(130)의 최하위 노드 어드레스 "0000000"의 노드(131-1)에 저장되어 있던 가장 최근에 사용되지 않은(LRU) 더티 라인의 상태 정보, 즉 세트 인덱스 "11111101"는 삭제된다. 그리고 도면에서 화살표로 나타낸 바와 같이, 노드들 각각에 저장된 상태 정보는 하위의 노드 어드레스를 갖는 노드로 쉬프트된다. 그리고 데이터 "DATA_A"에 의해 새로 생성되는 더티 라인에 대한 상태 정보, 즉 세트 인덱스 "00000010"은 더티 라인 리스트(130)의 최상위의 노드 어드레스 "1111111"를 갖는 노드(131-64)에 저장된다. 이에 따라 도 19에 나타낸 바와 같이, 캐시 메모리(110)의 세트 인덱스 "00000010"의 블록에 태그 "11" 및 데이터 "DATA_A"가 저장되고, 이 블록은 가장 최근에 사용된(MRU) 더티 라인을 구성한다. 캐시 메모리(110)의 세트 인덱스 "11111101"의 블록은 더 이상 더티 라인에 포함되지 않는다. 더티 라인 리스트(130)의 최하위 노드 어드레스, 즉 "0000000"의 노드 어드레스를 갖는 노드(131-1)에는 노드 어드레스 "0000001"의 노드(131-2)에 저장되어 있던 세트 인덱스 "10011101"이 쉬프트되어 저장된다. 이에 따라 캐시 메모리(110)에서 세트 인덱스 "10011101"의 블록이 가장 최근에 사용되지 않은(LRU) 더티 라인을 구성한다.
도 20 내지 도 22는 본 개시에 따른 캐시 시스템에서 라이트 히트이고 더티 라인 개수가 증가하지 않으며 오버플로가 발생하지 않는 경우에서의 더티 라인 리스트를 제어하는 과정을 설명하기 위해 나타내 보인 도면들이다. 먼저 도 20에 나타낸 바와 같이, 캐시 메모리(110)의 세트 인덱스 "00000010"의 블록에 태그 "11" 및 데이터 "DATA_B"가 저장되어 있고, 세트 인덱스 "11111101"의 블록에 태그 "11" 및 데이터 "DATA_C"가 저장되어 있다. 이때 데이터 "DATA_B"가 저장되어 있는 블록은, 더티 라인인 경우, 즉 메모리 내에서 어드레스 "1100000010"을 갖는 영역에 데이터 "DATA_B"가 아직 쓰이지 않은 경우이다. 데이터 "DATA_C"가 저장되어 있는 블록은 더티 라인, 특히 가장 최근에 사용되지 않은(LRU) 더티 라인인 경우로 예시한다. 더티 라인 리스트(130)에는 최하위 노드 어드레스 "0000000"의 최하위 노드(131-1)부터 노드 어드레스 "1111101"의 노드(131-62)에 이르기까지 세트 인덱스가 저장되어 있다. 더티 라인 리스트(130)에서 최하위 노드 어드레스 "0000000"의 노드(131-1)에는 가장 최근에 사용되지 않은(LRU) 더티 라인의 세트 인덱스인 "11111101"이 저장되어 있다. 노드 어드레스 "1111110"의 노드(131-63) 및 노드 어드레스 "1111111"의 최상위 노드(131-64)는 비워 있는 상태, 즉 오버플로가 발생되지 않는 상태이다. 이와 같은 상태에서 메모리의 어드레스 "1100000010"에 데이터 "DATA_A"에 대한 라이트(write) 요청이 발생하면, 캐시 메모리(110)에서 세트 인덱스 "00000010"의 블록에 데이터 "DATA_A"를 저장시키는 캐시 라이트 동작이 수행된다.
이 경우는, 도 7의 플로챠트를 참조하여 설명한 바와 같이, 단계 310에서 더티 라인의 개수가 증가하지 않고, 단계 370에서 라이트 히트(write hit)인 경우에 해당한다. 따라서 단계 380에서의 새롭게 생성되는 더티 라인에 대한 상태 정보를 상태 정보가 저장된 노드들 중 최상위 노드 어드레스를 갖는 노드로 이동시킨다. 구체적으로, 도 21에 나타낸 바와 같이, 노드 어드레스 "0000001"의 노드(131-2)에 저장되어 있는 새롭게 생성되는 더티 라인의 세트 인덱스 "00000010"를 상태 정보를 갖는 노드들 중 최상위 노드 어드레스를 갖는 노드, 즉 노드 어드레스 "1111101"의 노드(131-62)로 이동시킨다. 노드 어드레스 "1111101"의 노드(131-62)로 세트 인덱스 "00000010"이 이동됨에 따라, 노드 어드레스 "1111101"의 노드(131-62)에 저장되어 있던 세트 인덱스 "11110101"은 바로 아래의 노드 어드레스를 갖는 노드로 쉬프트된다. 이와 같은 쉬프트는, 도면에서 화살표로 나타낸 바와 같이, 새롭게 생성되는 더티 라인의 세트 인덱스 "00000010"의 이동으로 비워진 노드(131-2)가 채워질때까지 순차적으로 이루어진다. 캐시 메모리(110)의 세트 인덱스 "00000010"의 블록은, 기존에는 두번째로 가장 최근에 사용되지 않은(LRU) 더티 라인이어서, 더티 라인 리스트(130)의 노드(131-2)에 그 상태 정보, 즉 세트 인덱스가 저장되어 있었다. 그러나 도 22에 나타낸 바와 같이, 캐시 라이트 동작에 의해, 캐시 메모리(110)의 세트 인덱스 "00000010"의 블록은, 가장 최근에 사용된(MRU) 더티 라인을 구성하며, 이에 따라 더티 라인 리스트(130)의 노드(131-62)에 그 상태 정보, 즉 세트 인덱스가 저장되게 된다.
도 23 내지 도 25는 본 개시에 따른 캐시 시스템에서 라이트 히트이고 더티 라인 개수가 증가하지 않으며 오버플로가 발생하는 경우를 나타낸다. 먼저 도 23에 나타낸 바와 같이, 캐시 메모리(110)의 세트 인덱스 "00000010"의 블록에 태그 "11" 및 데이터 "DATA_B"가 저장되어 있고, 세트 인덱스 "11111101"의 블록에 태그 "11" 및 데이터 "DATA_C"가 저장되어 있다. 이때 데이터 "DATA_B"가 저장되어 있는 블록은, 더티 라인인 경우, 즉 메모리 내에서 어드레스 "1100000010"을 갖는 영역에 데이터 "DATA_B"가 아직 쓰이지 않은 경우이다. 데이터 "DATA_C"가 저장되어 있는 블록은 더티 라인, 특히 가장 최근에 사용되지 않은(LRU) 더티 라인인 경우로 예시한다. 더티 라인 리스트(130)에는 최하위 노드 어드레스 "0000000"의 최하위 노드(131-1)부터 최상위 노드 어드레스 "1111111"의 노드(131-64)에 이르기까지 모든 노드에 세트 인덱스가 저장되어 있다. 더티 라인 리스트(130)에서 최하위 노드 어드레스 "0000000"의 노드(131-1)에는 가장 최근에 사용되지 않은(LRU) 더티 라인의 세트 인덱스인 "11111101"이 저장되어 있다. 노드 어드레스 "1111111"의 최상위 노드(131-64)에는 가장 최근에 사용된(MRU) 더티 라인의 세트 인덱스인 "00010101"이 저장되어 있는 상태이다. 이와 같은 상태에서 메모리의 어드레스 "1100000010"에 데이터 "DATA_A"에 대한 라이트(write) 요청이 발생하면, 캐시 메모리(110)에서 세트 인덱스 "00000010"의 블록에 데이터 "DATA_A"를 저장시키는 캐시 라이트 동작이 수행된다.
이 경우는, 도 7의 플로챠트를 참조하여 설명한 바와 같이, 단계 310에서 더티 라인의 개수가 증가하지 않고, 단계 370에서 라이트 히트(write hit)인 경우에 해당한다. 따라서 단계 380에서의 새롭게 생성되는 더티 라인에 대한 상태 정보를 상태 정보가 저장된 노드들 중 최상위 노드 어드레스를 갖는 노드로 이동시키는 동작이 수행된다. 구체적으로, 도 24에 나타낸 바와 같이, 노드 어드레스 "0000001"의 노드(131-2)에 저장되어 있는 새롭게 생성되는 더티 라인의 세트 인덱스 "00000010"를 상태 정보를 갖는 노드들 중 최상위 노드 어드레스를 갖는 노드, 즉 노드 어드레스 "1111111"의 노드(131-64)로 이동시킨다. 노드 어드레스 "1111111"의 노드(131-64)로 세트 인덱스 "00000010"이 이동됨에 따라, 노드 어드레스 "1111111"의 노드(131-64)에 저장되어 있던 세트 인덱스 "0001010"은 바로 아래의 노드 어드레스 "1111110"를 갖는 노드(131-63)로 쉬프트된다. 이와 같은 쉬프트는, 도면에서 화살표로 나타낸 바와 같이, 새롭게 생성되는 더티 라인의 세트 인덱스 "00000010"의 이동으로 비워진 노드(131-2)가 채워질때까지 순차적으로 이루어진다. 캐시 메모리(110)의 세트 인덱스 "00000010"의 블록은, 기존에는 두번째로 가장 최근에 사용되지 않은(LRU) 더티 라인이어서, 더티 라인 리스트(130)의 노드(131-2)에 그 상태 정보, 즉 세트 인덱스가 저장되어 있었다. 그러나 도 25에 나타낸 바와 같이, 캐시 라이트 동작에 의해, 캐시 메모리(110)의 세트 인덱스 "00000010"의 블록은, 가장 최근에 사용된(MRU) 더티 라인을 구성하며, 이에 따라 더티 라인 리스트(130)의 최상위 노드 어드레스 "1111111"를 갖는 최상위 노드(131-64)에 그 상태 정보, 즉 세트 인덱스가 저장되게 된다.
도 26 내지 도 28은 본 개시에 따른 캐시 시스템에서 라이트 미스이고 더티 라인 개수가 증가하지 않으며 오버플로가 발생하지 않는 경우에서의 더티 라인 리스트를 제어하는 과정을 설명하기 위해 나타내 보인 도면들이다. 먼저 도 26에 나타낸 바와 같이, 캐시 메모리(110)의 세트 인덱스 "00000010"의 블록에 태그 "00" 및 데이터 "DATA_B"가 저장되어 있고, 세트 인덱스 "11111101"의 블록에 태그 "11" 및 데이터 "DATA_C"가 저장되어 있다. 이때 데이터 "DATA_B"가 저장되어 있는 블록은, 더티 라인인 경우, 즉 메모리 내에서 어드레스 "1100000010"을 갖는 영역에 데이터 "DATA_B"가 아직 쓰이지 않은 경우이다. 데이터 "DATA_C"가 저장되어 있는 블록은 더티 라인, 특히 가장 최근에 사용되지 않은(LRU) 더티 라인인 경우로 예시한다. 더티 라인 리스트(130)에는 최하위 노드 어드레스 "0000000"의 최하위 노드(131-1)부터 노드 어드레스 "1111101"의 노드(131-62)에 이르기까지 세트 인덱스가 저장되어 있다. 더티 라인 리스트(130)에서 최하위 노드 어드레스 "0000000"의 노드(131-1)에는 가장 최근에 사용되지 않은(LRU) 더티 라인의 세트 인덱스인 "11111101"이 저장되어 있다. 노드 어드레스 "1111110"의 노드(131-63) 및 노드 어드레스 "1111111"의 최상위 노드(131-64)는 비워 있는 상태, 즉 오버플로가 발생되지 않는 상태이다. 이와 같은 상태에서 메모리의 어드레스 "1100000010"에 데이터 "DATA_A"에 대한 라이트(write) 요청이 발생하면, 캐시 메모리(110)에서 세트 인덱스 "00000010"의 블록에 데이터 "DATA_A"를 저장시키는 캐시 라이트 동작이 수행된다.
이 경우는, 도 7의 플로챠트를 참조하여 설명한 바와 같이, 단계 310에서 더티 라인의 개수가 증가하지 않고, 단계 370에서 라이트 미스(write miss)인 경우에 해당한다. 따라서 단계 390에서의 정상 퇴거된 더티 라인에 대한 상태 정보를 상태 정보가 저장된 노드들 중 최상위 노드 어드레스를 갖는 노드로 이동시키는 동작이 수행된다. 구체적으로, 도 27에 나타낸 바와 같이, 노드 어드레스 "0000001"의 노드(131-2)에 저장되어 있는 정상 퇴거되는 더티 라인의 세트 인덱스 "00000010"를 상태 정보를 갖는 노드들 중 최상위 노드 어드레스를 갖는 노드, 즉 노드 어드레스 "1111101"의 노드(131-62)로 이동시킨다. 노드 어드레스 "1111101"의 노드(131-62)로 세트 인덱스 "00000010"이 이동됨에 따라, 노드 어드레스 "1111101"의 노드(131-62)에 저장되어 있던 세트 인덱스 "11110101"은 바로 아래의 노드 어드레스를 갖는 노드로 쉬프트된다. 이와 같은 쉬프트는, 도면에서 화살표로 나타낸 바와 같이, 새롭게 생성되는 더티 라인의 세트 인덱스 "00000010"의 이동으로 비워진 노드(131-2)가 채워질때까지 순차적으로 이루어진다. 캐시 메모리(110)의 세트 인덱스 "00000010"의 블록은, 기존에는 두번째로 가장 최근에 사용되지 않은(LRU) 더티 라인이어서, 더티 라인 리스트(130)의 노드(131-2)에 그 상태 정보, 즉 세트 인덱스가 저장되어 있었다. 그러나 도 28에 나타낸 바와 같이, 캐시 라이트 동작에 의해, 캐시 메모리(110)의 세트 인덱스 "00000010"의 블록은, 가장 최근에 사용된(MRU) 더티 라인을 구성하며, 이에 따라 더티 라인 리스트(130)의 노드(131-62)에 그 상태 정보, 즉 세트 인덱스가 저장되게 된다.
도 29 내지 도 31은 본 개시에 따른 캐시 시스템에서 라이트 미스이고 더티 라인 개수가 증가하지 않으며 오버플로가 발생하는 경우를 나타낸다. 먼저 도 29에 나타낸 바와 같이, 캐시 메모리(110)의 세트 인덱스 "00000010"의 블록에 태그 "00" 및 데이터 "DATA_B"가 저장되어 있고, 세트 인덱스 "11111101"의 블록에 태그 "11" 및 데이터 "DATA_C"가 저장되어 있다. 이때 데이터 "DATA_B"가 저장되어 있는 블록은, 더티 라인인 경우, 즉 메모리 내에서 어드레스 "1100000010"을 갖는 영역에 데이터 "DATA_B"가 아직 쓰이지 않은 경우이다. 데이터 "DATA_C"가 저장되어 있는 블록은 더티 라인, 특히 가장 최근에 사용되지 않은(LRU) 더티 라인인 경우로 예시한다. 더티 라인 리스트(130)에는 최하위 노드 어드레스 "0000000"의 최하위 노드(131-1)부터 최상위 노드 어드레스 "1111111"의 노드(131-64)에 이르기까지 모든 노드에 세트 인덱스가 저장되어 있다. 더티 라인 리스트(130)에서 최하위 노드 어드레스 "0000000"의 노드(131-1)에는 가장 최근에 사용되지 않은(LRU) 더티 라인의 세트 인덱스인 "11111101"이 저장되어 있다. 노드 어드레스 "1111111"의 최상위 노드(131-64)에는 가장 최근에 사용된(MRU) 더티 라인의 세트 인덱스인 "00010101"이 저장되어 있는 상태이다. 이와 같은 상태에서 메모리의 어드레스 "1100000010"에 데이터 "DATA_A"에 대한 라이트(write) 요청이 발생하면, 캐시 메모리(110)에서 세트 인덱스 "00000010"의 블록에 데이터 "DATA_A"를 저장시키는 캐시 라이트 동작이 수행된다.
이 경우는, 도 7의 플로챠트를 참조하여 설명한 바와 같이, 단계 310에서 더티 라인의 개수가 증가하지 않고, 단계 370에서 라이트 미스(write miss)인 경우에 해당한다. 따라서 단계 390에서의 정상 퇴거된 더티 라인에 대한 상태 정보를 상태 정보가 저장된 노드들 중 최상위 노드 어드레스를 갖는 노드로 이동시키는 동작이 수행된다. 구체적으로, 도 30에 나타낸 바와 같이, 노드 어드레스 "0000001"의 노드(131-2)에 저장되어 있는 정상 퇴거되는 더티 라인의 세트 인덱스 "00000010"를 상태 정보를 갖는 노드들 중 최상위 노드 어드레스를 갖는 노드, 즉 노드 어드레스 "1111111"의 노드(131-64)로 이동시킨다. 노드 어드레스 "1111111"의 노드(131-64)로 세트 인덱스 "00000010"이 이동됨에 따라, 노드 어드레스 "1111111"의 노드(131-642)에 저장되어 있던 세트 인덱스 "0001010"은 바로 아래의 노드 어드레스 "1111110"를 갖는 노드(131-63)로 쉬프트된다. 이와 같은 쉬프트는, 도면에서 화살표로 나타낸 바와 같이, 새롭게 생성되는 더티 라인의 세트 인덱스 "00000010"의 이동으로 비워진 노드(131-2)가 채워질때까지 순차적으로 이루어진다. 캐시 메모리(110)의 세트 인덱스 "00000010"의 블록은, 기존에는 두번째로 가장 최근에 사용되지 않은(LRU) 더티 라인이어서, 더티 라인 리스트(130)의 노드(131-2)에 그 상태 정보, 즉 세트 인덱스가 저장되어 있었다. 그러나 도 31에 나타낸 바와 같이, 캐시 라이트 동작에 의해, 캐시 메모리(110)의 세트 인덱스 "00000010"의 블록은, 가장 최근에 사용된(MRU) 더티 라인을 구성하며, 이에 따라 더티 라인 리스트(130)의 최상위 노드 어드레스 "1111111"를 갖는 최상위 노드(131-64)에 그 상태 정보, 즉 세트 인덱스가 저장되게 된다.
상술한 바와 같이 본 출원의 실시 형태들을 도면들을 예시하며 설명하지만, 이는 본 출원에서 제시하고자 하는 바를 설명하기 위한 것이며, 세밀하게 제시된 형상으로 본 출원에서 제시하고자 하는 바를 한정하고자 한 것은 아니다.
100...캐시 시스템 110...캐시 메모리
120...캐시 컨트롤러 130...더티 라인 리스트

Claims (26)

  1. 복수개의 블록들을 갖는 캐시 메모리;
    상기 복수개의 블록들 중 정해진 개수의 더티 라인들 각각에 대한 상태 정보를 저장하는 더티 라인 리스트; 및
    상기 캐시 메모리의 데이터 캐싱 동작을 제어하고, 상기 데이터 캐싱 동작에 따른 상기 더티 라인의 상태 변동을 상기 더티 라인 리스트에 반영하되, 가장 최근에 사용되지 않은(LRU) 더티 라인에 대한 상태 정보가 상기 더티 라인 리스트의 정해진 저장 위치에 항상 저장되도록 제어하는 캐시 컨트롤러를 포함하는 메모리 장치의 캐시 시스템.
  2. 제1항에 있어서,
    상기 캐시 메모리는, 상기 복수개의 블록들을 갖는 적어도 하나 이상의 웨이를 포함하는 메모리 장치의 캐시 시스템.
  3. 제1항에 있어서,
    상기 캐시 메모리의 복수개의 블록들은, 바이너리 스트림으로 구성되는 세트 인덱스로 구분되는 메모리 장치의 캐시 시스템.
  4. 제3항에 있어서,
    상기 캐시 메모리의 복수개의 블록들 각각에는 유효비트, 태그, 및 데이터가 저장되는 메모리 장치의 캐시 시스템.
  5. 제3항에 있어서,
    상기 더티 라인 리스트는, 상기 더티 라인에 대한 상태 정보가 저장될 수 있는 복수개의 노드들을 포함하는 메모리 장치의 캐시 시스템.
  6. 제5항에 있어서,
    상기 더티 라인 리스트에 포함되는 복수개의 노드들의 개수는, 파워가 갑자기 꺼지는 이벤트가 발생할 때 내부의 충전 소자에 의해 메모리에 라이트할 수 있는 상기 캐시 메모리의 블록들의 개수로 한정되는 메모리 장치의 캐시 시스템.
  7. 제1항에 있어서,
    상기 캐시 메모리의 복수개의 블록들은 바이너리 스트림으로 구성되는 세트 인덱스로 구분되며, 그리고
    상기 더티 라인에 대한 상태 정보는, 상기 캐시 메모리의 세트 인덱스를 포함하는 메모리 장치의 캐시 시스템.
  8. 제1항에 있어서,
    상기 더티 라인 리스트는, 상기 더티 라인에 대한 상태 정보가 저장될 수 있는 복수개의 노드들을 포함하되, 상기 복수개의 노드들은 각각 노드 어드레스에 의해 그 위치가 특정되는 메모리 장치의 캐시 시스템.
  9. 제8항에 있어서,
    상기 가장 최근에 사용되지 않은(LRU) 더티 라인의 상태 정보는, 상기 복수개의 노드들 중 최하위 노드 어드레스를 갖는 최하위 노드에 항상 저장되는 메모리 장치의 캐시 시스템.
  10. 제1항에 있어서,
    상기 더티 라인 리스트는, 상기 더티 라인에 대한 상태 정보가 저장될 수 있는 복수개의 노드들을 포함하고,
    상기 캐시 컨트롤러는, 노드 어드레스가 증가할수록 최근에 사용되지 않은 기간이 줄어드는 순서로 상기 더티 라인에 대한 상태 정보가 상기 노드에 저장되도록 상기 더티 라인 리스트를 제어하는 메모리 장치의 캐시 시스템.
  11. 제1항에 있어서,
    상기 더티 라인 리스트는, 상기 더티 라인에 대한 상태 정보가 저장될 수 있는 복수개의 노드들을 포함하고,
    상기 캐시 컨트롤러는, 상기 캐시 메모리의 데이터 캐싱 동작에 의해 더티 라인의 개수가 증가하고, 상기 더티 라인의 개수 증가로 더티 라인의 개수가 상기 더티 라인 리스트의 노드들 개수를 초과하는 오버플로가 발생되는 경우, 상기 더티 라인 리스트의 최하위 노드에 저장된 상태 정보를 갖는 더티 라인을 상기 가장 최근에 사용되지 않은(LRU) 더티 라인으로 판정하여 강제 퇴거시키는 메모리 장치의 캐시 시스템.
  12. 제11항에 있어서,
    상기 캐시 컨트롤러는, 상기 강제 퇴거된 더티 라인에 대한 상태 정보를 상기 더티 라인 리스트의 최하위 노드로부터 삭제하고, 상기 노드들 각각에 저장된 상태 정보를 하위의 노드 어드레스를 갖는 노드로 쉬프트시키며, 그리고 최상위의 노드에 상기 데이터 캐싱 동작에 의해 생성된 더티 라인의 상태 정보를 저장시키는 메모리 장치의 캐시 시스템.
  13. 제1항에 있어서,
    상기 더티 라인 리스트는, 상기 더티 라인에 대한 상태 정보가 저장될 수 있는 복수개의 노드들을 포함하고,
    상기 캐시 컨트롤러는, 상기 캐시 메모리의 데이터 캐싱 동작에 의해 더티 라인의 개수가 증가하고, 상기 더티 라인의 개수 증가로 상기 오버플로가 발생되지 않는 경우, 상기 데이터 캐싱 동작에 의해 생성된 더티 라인에 대한 상태 정보를 상기 더티 라인 리스트에서 상태 정보가 저장되지 않은 노드들 중 최하위의 노드 어드레스를 갖는 노드에 저장시키는 메모리 장치의 캐시 시스템.
  14. 제1항에 있어서,
    상기 더티 라인 리스트는, 상기 더티 라인에 대한 상태 정보가 저장될 수 있는 복수개의 노드들을 포함하고,
    상기 캐시 컨트롤러는, 상기 캐시 메모리의 데이터 캐싱 동작에 의해 더티 라인의 개수가 증가하지 않고, 라이트 히트인 경우, 상기 데이터 캐싱 동작에 의해 생성되는 더티 라인에 대한 상태 정보를 상기 더티 라인 리스트에서 상태 정보가 저장된 노드들 중 최상위 노드 어드레스를 갖는 노드로 이동시키는 메모리 장치의 캐시 시스템.
  15. 제1항에 있어서,
    상기 더티 라인 리스트는, 상기 더티 라인에 대한 상태 정보가 저장될 수 있는 복수개의 노드들을 포함하고,
    상기 캐시 컨트롤러는, 상기 캐시 메모리의 데이터 캐싱 동작에 의해 생성되는 더티 라인에 대한 상태 정보가 이동되어 저장되는 노드부터 상기 생성되는 더티 라인에 대한 상태 정보가 이동되어 비워지는 노드까지 상기 더티 라인에 대한 상태 정보가 하위의 노드로 쉬프트되도록 하는 메모리 장치의 캐시 시스템.
  16. 제1항에 있어서,
    상기 더티 라인 리스트는, 상기 더티 라인에 대한 상태 정보가 저장될 수 있는 복수개의 노드들을 포함하고,
    상기 캐시 컨트롤러는, 상기 캐시 메모리의 데이터 캐싱 동작에 의해 더티 라인의 개수가 증가하지 않고, 라이트 미스인 경우, 상기 캐시 메모리 내에서 라이트할 블록에 저장되어 있던 더티 라인에 대한 정상 퇴거를 수행하고, 상기 정상 퇴거된 더티 라인에 대한 상태 정보를 상기 더티 라인 리스트에서 상태 정보가 저장된 노드들 중 최상위 노드 어드레스를 갖는 노드로 이동시키는 메모리 장치의 캐시 시스템.
  17. 제1항에 있어서,
    상기 더티 라인 리스트는, 상기 더티 라인에 대한 상태 정보가 저장될 수 있는 복수개의 노드들을 포함하고,
    상기 캐시 컨트롤러는, 상기 데이터 캐싱 동작에 의해 정상 퇴거된 더티 라인에 대한 상태 정보가 이동되어 저장되는 노드부터 상기 정상 퇴거된 더티 라인에 대한 상태 정보가 이동되어 비워지는 노드까지 상기 더티 라인에 대한 상태 정보가 하위의 노드로 쉬프트되도록 하는 메모리 장치의 캐시 시스템.
  18. 세트 인덱스에 의해 구분되는 복수개의 블록들을 갖는 캐시 메모리와, 상기 복수개의 블록들 중 정해진 개수의 더티 라인들 각각에 대한 상태 정보를 저장하는 복수개의 노드들을 포함하는 더티 라인 리스트와, 상기 캐시 메모리의 데이터 캐싱 동작 및 상기 더티 라인 리스트의 노드들 각각의 상태 정보 저장 상태를 제어하는 캐시 컨트롤러를 포함하는 캐시 시스템의 데이터 캐싱 방법에 있어서,
    상기 캐시 메모리 내의 더티 라인들 중 가장 최근에 사용되지 않은(LRU) 더티 라인에 대한 정보가 상기 더티 라인 리스트의 노드들 중 최하위 노드에 저장되도록 하는 단계; 및
    상기 데이터 캐싱 동작에 의한 더티 라인의 개수 증가로 상기 캐시 메모리 내에서의 더티 라인들의 개수가 상기 더티 라인 리스트의 노드들 개수를 초과하는 오버플로가 발생되는 경우, 상기 더티 라인 리스트의 노드들 중 최하위 노드에 저장된 상태 정보를 갖는 더티 라인을 강제 퇴거시키는 단계를 포함하는 캐시 시스템의 데이터 캐싱 방법.
  19. 제18항에 있어서,
    상기 더티 라인 리스트에 포함되는 복수개의 노드들의 개수는, 파워가 갑자기 꺼지는 이벤트가 발생할 때 내부의 충전 소자에 의해 메모리에 라이트할 수 있는 상기 캐시 메모리의 블록들의 개수로 한정되는 캐시 시스템의 데이터 캐싱 방법.
  20. 제18항에 있어서,
    상기 더티 라인 리스트의 노드들 중 최하위 노드에 저장된 상태 정보를 갖는 더티 라인을 강제 퇴거시키는 단계를 수행한 후에,
    상기 강제 퇴거된 더티 라인에 대한 상태 정보를 상기 더티 라인 리스트의 최하위 노드로부터 삭제하는 단계;
    상기 노드들 각각에 저장된 상태 정보를 하위의 노드로 쉬프트시키는 단계; 및
    최상위의 노드에 상기 데이터 캐싱 동작에 의해 생성된 더티 라인의 상태 정보를 저장시키는 단계를 더 포함하는 캐시 시스템의 데이터 캐싱 방법.
  21. 제20항에 있어서,
    상기 캐시 메모리의 데이터 캐싱 동작에 의해 더티 라인의 개수가 증가하고, 상기 더티 라인의 개수 증가로 상기 오버플로가 발생되지 않는 경우, 상기 데이터 캐싱 동작에 의해 생성된 더티 라인에 대한 상태 정보를 상기 더티 라인 리스트에서 상태 정보가 저장되지 않은 노드들 중 최하위의 노드에 저장시키는 단계를 더 포함하는 캐시 시스템의 데이터 캐싱 방법.
  22. 제20항에 있어서,
    상기 캐시 메모리의 데이터 캐싱 동작에 의해 더티 라인의 개수가 증가하지 않고, 라이트 히트인 경우, 상기 데이터 캐싱 동작에 의해 생성되는 더티 라인에 대한 상태 정보를 상기 더티 라인 리스트에서 상태 정보가 저장된 노드들 중 최상위 노드로 이동시키는 단계를 더 포함하는 캐시 시스템의 데이터 캐싱 방법.
  23. 제22항에 있어서,
    상기 데이터 캐싱 동작에 의해 생성되는 더티 라인에 대한 상태 정보가 이동되어 저장되는 노드부터 상기 생성되는 더티 라인에 대한 상태 정보가 이동되어 비워지는 노드까지 상기 더티 라인에 대한 상태 정보는 하위의 노드로 쉬프트되도록 하는 단계를 더 포함하는 캐시 시스템의 데이터 캐싱 방법.
  24. 제18항에 있어서,
    상기 캐시 메모리의 데이터 캐싱 동작에 의해 더티 라인의 개수가 증가하지 않고, 라이트 미스인 경우, 상기 캐시 메모리 내에서 라이트할 블록에 저장되어 있던 더티 라인에 대한 정상 퇴거를 수행하는 단계를 더 포함하는 캐시 시스템의 데이터 캐싱 방법.
  25. 제24항에 있어서,
    상기 정상 퇴거된 더티 라인에 대한 상태 정보를 상기 더티 라인 리스트에서 상태 정보가 저장된 노드들 중 최상위 노드로 이동시키는 단계를 더 포함하는 캐시 시스템의 데이터 캐싱 방법.
  26. 제25항에 있어서,
    상기 데이터 캐싱 동작에 의해 정상 퇴거된 더티 라인에 대한 상태 정보가 이동되어 저장되는 노드부터 상기 정상 퇴거된 더티 라인에 대한 상태 정보가 이동되어 비워지는 노드까지 상기 더티 라인에 대한 상태 정보는 하위의 노드로 쉬프트되도록 하는 단계를 더 포함하는 캐시 시스템의 데이터 캐싱 방법.
KR1020190052599A 2019-05-03 2019-05-03 메모리 장치의 캐시 시스템 및 캐시 시스템의 데이터 캐싱 방법 KR20200127793A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020190052599A KR20200127793A (ko) 2019-05-03 2019-05-03 메모리 장치의 캐시 시스템 및 캐시 시스템의 데이터 캐싱 방법
TW108144696A TWI805878B (zh) 2019-05-03 2019-12-06 儲存系統的快取系統及其資料快取方法
US16/712,478 US11269785B2 (en) 2019-05-03 2019-12-12 Cache systems of memory systems and data caching methods of cache systems
CN201911299308.XA CN111881069A (zh) 2019-05-03 2019-12-17 存储系统的高速缓存系统及其数据高速缓存方法
US17/585,305 US11593276B2 (en) 2019-05-03 2022-01-26 Data caching methods of cache systems

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190052599A KR20200127793A (ko) 2019-05-03 2019-05-03 메모리 장치의 캐시 시스템 및 캐시 시스템의 데이터 캐싱 방법

Publications (1)

Publication Number Publication Date
KR20200127793A true KR20200127793A (ko) 2020-11-11

Family

ID=73015913

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190052599A KR20200127793A (ko) 2019-05-03 2019-05-03 메모리 장치의 캐시 시스템 및 캐시 시스템의 데이터 캐싱 방법

Country Status (4)

Country Link
US (2) US11269785B2 (ko)
KR (1) KR20200127793A (ko)
CN (1) CN111881069A (ko)
TW (1) TWI805878B (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117891754B (zh) * 2024-03-13 2024-05-10 广东琴智科技研究院有限公司 处理器Cache结构的缓存方法、计算子系统以及智能计算平台

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5307477A (en) * 1989-12-01 1994-04-26 Mips Computer Systems, Inc. Two-level cache memory system
US5666551A (en) * 1994-06-30 1997-09-09 Digital Equipment Corporation Distributed data bus sequencing for a system bus with separate address and data bus protocols
GB2385174B (en) * 1999-01-19 2003-11-26 Advanced Risc Mach Ltd Memory control within data processing systems
US20050044320A1 (en) * 2003-08-19 2005-02-24 Sun Microsystems, Inc. Cache bank interface unit
US7555610B2 (en) * 2003-11-18 2009-06-30 Panasonic Corporation Cache memory and control method thereof
US7958312B2 (en) * 2005-11-15 2011-06-07 Oracle America, Inc. Small and power-efficient cache that can provide data for background DMA devices while the processor is in a low-power state
US8180968B2 (en) 2007-03-28 2012-05-15 Oracle America, Inc. Reduction of cache flush time using a dirty line limiter
US9218292B2 (en) * 2013-06-18 2015-12-22 International Business Machines Corporation Least-recently-used (LRU) to first-dirty-member distance-maintaining cache cleaning scheduler
EP3049937A4 (en) 2013-09-27 2017-05-17 Intel Corporation Cache operations for memory management
US9891974B2 (en) * 2014-09-10 2018-02-13 Toshiba Memory Corporation Memory system
JP6039772B1 (ja) * 2015-09-16 2016-12-07 株式会社東芝 メモリシステム
US9710383B1 (en) * 2015-09-29 2017-07-18 EMC IP Holding Company LLC Caching techniques
KR102515417B1 (ko) * 2016-03-02 2023-03-30 한국전자통신연구원 캐시 메모리 장치 및 그것의 동작 방법
US11016669B2 (en) * 2018-05-01 2021-05-25 Qualcomm Incorporated Persistent write data for energy-backed memory
US10740187B1 (en) * 2019-01-31 2020-08-11 EMC IP Holding Company LLC Systems and methods of managing and creating snapshots in a cache-based storage system

Also Published As

Publication number Publication date
TWI805878B (zh) 2023-06-21
US11269785B2 (en) 2022-03-08
US11593276B2 (en) 2023-02-28
CN111881069A (zh) 2020-11-03
TW202042070A (zh) 2020-11-16
US20200349089A1 (en) 2020-11-05
US20220147464A1 (en) 2022-05-12

Similar Documents

Publication Publication Date Title
US6615318B2 (en) Cache management system with multiple cache lists employing roving removal and priority-based addition of cache entries
CN1307559C (zh) 以高速缓存连贯性为基础的高速缓存线的预加载和预控制
US9003099B2 (en) Disc device provided with primary and secondary caches
US9772948B2 (en) Determining a criterion for movement of data from a primary cache to a secondary cache
KR102453192B1 (ko) 다른 캐시에서의 엔트리들의 가용성을 기반으로 한 캐시 엔트리 교체
US6842826B1 (en) Method and apparatus for providing efficient management of least recently used (LRU) algorithm insertion points corresponding to defined times-in-cache
CN102841854A (zh) 根据动态分级存储器缓存认知执行数据读取的方法和系统
US20170315916A1 (en) Directory management method, node controller, and system
US20180113815A1 (en) Cache entry replacement based on penalty of memory access
CN107329704A (zh) 一种缓存镜像方法及控制器
JP3460617B2 (ja) ファイル制御装置
US20080301372A1 (en) Memory access control apparatus and memory access control method
CN109478164A (zh) 用于存储用于高速缓存条目传输的高速缓存位置信息的系统和方法
US20120260041A1 (en) Simultaneous eviction and cleaning operations in a cache
CN107710172A (zh) 存储器的访问系统及方法
US11625326B2 (en) Management of coherency directory cache entry ejection
CN104978283A (zh) 一种内存访问控制方法,及装置
CN114327270A (zh) 一种请求处理方法、装置、设备及可读存储介质
CN109815168A (zh) 用于少标记缓冲器实现的系统和方法
KR20200127793A (ko) 메모리 장치의 캐시 시스템 및 캐시 시스템의 데이터 캐싱 방법
TWI797354B (zh) 快取記憶體、儲存系統和快取記憶體的逐出方法
JP5673232B2 (ja) ストレージシステム
JPS6154547A (ja) 3レベルの階層メモリを備えたデ−タ処理システム
US20080263281A1 (en) Cache memory system using temporal locality information and a data storage method
JP2854667B2 (ja) ディスク・キャッシュ制御方式

Legal Events

Date Code Title Description
A201 Request for examination