KR20200004119A - 메모리 시스템 및 그의 동작 방법 - Google Patents

메모리 시스템 및 그의 동작 방법 Download PDF

Info

Publication number
KR20200004119A
KR20200004119A KR1020180077176A KR20180077176A KR20200004119A KR 20200004119 A KR20200004119 A KR 20200004119A KR 1020180077176 A KR1020180077176 A KR 1020180077176A KR 20180077176 A KR20180077176 A KR 20180077176A KR 20200004119 A KR20200004119 A KR 20200004119A
Authority
KR
South Korea
Prior art keywords
cache
bit
data
memory
cache line
Prior art date
Application number
KR1020180077176A
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 KR1020180077176A priority Critical patent/KR20200004119A/ko
Priority to US16/232,248 priority patent/US10970208B2/en
Priority to CN201910098305.3A priority patent/CN110674054B/zh
Publication of KR20200004119A publication Critical patent/KR20200004119A/ko

Links

Images

Classifications

    • 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
    • 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/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/0877Cache access modes
    • 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
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management

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

제안 발명은 메모리 시스템 및 그의 동작 방법에 관한 것으로, 메인 메모리 및 상기 메인 메모리에 저장된 데이터를 캐쉬하기 위한 다수의 캐쉬 라인을 포함하는 캐쉬 메모리를 포함하고, 상기 다수의 캐쉬 라인 각각은, 캐쉬 데이터, 상기 캐쉬 데이터가 유효한지를 알리는 유효 비트 및 상기 메인 메모리의 리드 데이터가 로딩 중임을 알리는 로딩 비트를 포함하는 메모리 장치; 및 상기 유효 비트 및 상기 로딩 비트를 참조하여 상기 메모리 장치를 스케쥴링하는 메모리 컨트롤러를 포함할 수 있다.

Description

메모리 시스템 및 그의 동작 방법 {MEMORY SYSTEM AND OPERATING METHOD THEREOF}
본 특허문헌은 반도체 설계 기술에 관한 것으로, 구체적으로는 비휘발성 메모리 장치 및 휘발성 메모리 장치를 포함하는 하이브리드 메모리 시스템에 관한 것이다.
대규모 메모리 시스템에서 휘발성 메모리를 메인 메모리(main memory)로 사용하는 것은 높은 전력 소모와 집적도의 한계로 인하여 제한이 있다. 휘발성 메모리로는 예컨대 DRAM(Dynamic Random Access Memory)이 있다.
높은 전력 소모와 집적도의 한계를 극복하기 위해 최근에 비휘발성 메모리의 개발이 활발히 이루어지고 있다. 비휘발성 메모리로는 예컨대 PCRAM(Phase Change Random Access Memory), MRAM (Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory), RRAM(Resistive Random Access Memory), STT-RAM(Spin-Torque Transfer Random Access Memory) 등이 있다. 비휘발성 메모리는 저장된 데이터를 유지하기 위해 에너지를 소모할 필요가 없기 때문에 휘발성 메모리에 비해 작은 전력 소모와 높은 집적도를 나타낸다. 반면에, 비휘발성 메모리는 리드/라이트 속도로 나타나는 성능 및 라이트 내구성(write endurance)이 휘발성 메모리보다 낮은 단점을 갖는다.
최근, 휘발성 메모리의 장점과 비휘발성 메모리의 장점을 모두 활용할 수 있는 하이브리드(hybrid) 메모리 시스템이 제안되었다. 하이브리드 메모리 시스템은 메인 메모리로 비휘발성 메모리를 이용하고, 캐쉬 메모리로 휘발성 메모리를 이용할 수 있다. 이 때, 메인 메모리로 비휘발성 메모리를 이용하면서 단가는 낮아질 수 있지만, 레이턴시가 길어지게 된다. 메인 메모리의 레이턴시가 길어져 오랜 시간 동안 리드 응답을 못 받게 되면, 호스트로부터 요청이 수신되었을 때 이를 제대로 처리하지 못하는 상황이 발생할 수 있다.
본 발명의 실시예가 해결하고자 하는 기술적 과제는, 상대적으로 긴 레이턴시를 가지는 메인 메모리를 사용하는 메모리 시스템에서, 메인 메모리의 리드 데이터가 캐쉬 메모리로 로딩 중임을 알리는 로딩 비트를 이용하여 데이터를 관리할 수 있는 방법을 제공하는 데 있다.
본 발명의 일 실시예에 따르면, 메모리 시스템은, 메인 메모리 및 상기 메인 메모리에 저장된 데이터를 캐쉬하기 위한 다수의 캐쉬 라인을 포함하는 캐쉬 메모리를 포함하고, 상기 다수의 캐쉬 라인 각각은, 캐쉬 데이터, 상기 캐쉬 데이터가 유효한지를 알리는 유효 비트 및 상기 메인 메모리의 리드 데이터가 로딩 중임을 알리는 로딩 비트를 포함하는 메모리 장치; 및 상기 유효 비트 및 상기 로딩 비트를 참조하여 상기 메모리 장치를 스케쥴링하는 메모리 컨트롤러를 포함할 수 있다.
본 발명의 일 실시예에 따르면, 메모리 시스템은, 비휘발성 메모리 장치; 상기 비휘발성 메모리 장치에 저장된 데이터를 캐쉬하기 위한 다수의 캐쉬 라인을 포함하고, 상기 다수의 캐쉬 라인 각각은, 캐쉬 데이터, 태그 어드레스, 상기 캐쉬 데이터가 유효한지를 알리는 유효 비트, 상기 캐쉬 데이터와 상기 비휘발성 메모리 장치의 데이터와 불일치함을 알리는 더티 비트 및 상기 비휘발성 메모리 장치의 리드 데이터가 로딩 중임을 알리는 로딩 비트를 포함하는 휘발성 메모리 장치; 및 상기 유효 비트, 상기 더티 비트 및 상기 로딩 비트를 참조하여 상기 휘발성 메모리 장치를 스케쥴링하는 메모리 컨트롤러를 포함할 수 있다.
본 발명의 일 실시예에 따르면, 메모리 시스템의 동작 방법은, 메인 메모리 및 상기 메인 메모리에 저장된 데이터를 캐쉬하기 위한 다수의 캐쉬 라인을 포함하는 캐쉬 메모리를 포함하고, 상기 다수의 캐쉬 라인 각각은, 캐쉬 데이터, 상기 캐쉬 데이터가 유효한지를 알리는 유효 비트 및 상기 메인 메모리의 리드 데이터가 로딩 중임을 알리는 로딩 비트를 포함하는 메모리 장치를 제공하는 단계; 호스트로부터 리드 요청이 입력되면, 캐쉬 히트된 캐쉬 라인의 로딩 비트의 설정 유무를 확인하는 단계; 및 상기 로딩 비트가 설정된 경우, 상기 리드 데이터가 상기 캐쉬 라인에 저장될 때까지 대기한 후, 상기 로딩 비트를 해제하고 상기 유효 비트를 설정하고, 상기 캐쉬 라인의 캐쉬 데이터를 출력하는 단계를 포함할 수 있다.
제안된 실시예에 따른 메모리 시스템은, 캐쉬 히트도 아니고 캐쉬 미스도 아닌 애매한 상태의 캐쉬 메모리를 스케쥴링함으로써 메모리 시스템의 오동작을 방지하고 성능을 향상시킬 수 있다.
도 1 은 본 발명의 실시예에 따른 하이브리드(hybrid) 메모리 시스템을 설명하는 블록도 이다.
도 2 는 도 1 의 캐쉬 메모리의 캐쉬 라인의 구조를 설명하는 도면 이다.
도 3 은 본 발명의 실시예에 따라 로딩 비트가 설정된 경우 리드 동작 시의 메모리 컨트롤러의 동작을 설명하는 도면 이다.
도 4 는 본 발명의 실시예에 따라 로딩 비트가 설정된 경우 라이트 동작 시의 메모리 컨트롤러의 동작을 설명하는 도면 이다.
도 5 는 본 발명의 실시예에 따른 메모리 시스템의 리드 동작을 설명하는 순서도 이다.
도 6 은 본 발명의 실시예에 따른 메모리 시스템의 라이트 동작을 설명하는 순서도 이다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예들을 첨부 도면을 참조하여 설명하고자 한다.
본 발명의 실시예들은 비휘발성 메모리를 메인 메모리로 이용하고, 휘발성 메모리를 캐쉬 메모리로 이용하는 하이브리드(hybrid) 메모리 시스템을 예로 들어 설명될 것이다. 그러나, 본 발명은 메인 메모리 및 캐쉬 메모리를 포함하는 메모리 시스템에 모두 적용될 수 있다.
도 1 은 본 발명의 실시예에 따른 하이브리드 메모리 시스템(100)을 나타내는 블록도 이다. 도 2 는 도 1 의 캐쉬 메모리(152)의 캐쉬 라인의 구조를 설명하는 도면 이다.
도 1 을 참조하면, 메모리 시스템(100)은, 호스트(200)에 의해서 액세스되는 데이터를 저장하는 하이브리드 메모리 장치(150) 및 하이브리드 메모리 장치(150)로의 데이터 저장을 제어하는 메모리 컨트롤러(130)를 포함할 수 있다.
메모리 컨트롤러(130)는, 호스트(200)로부터의 요청에 응답하여 커맨드(CMD), 어드레스(ADDR), 및 데이터(DATA)를 하이브리드 메모리 장치(150)로 제공하여 하이브리드 메모리 장치(150)의 리드(read), 라이트(write)/프로그램(program), 이레이즈(erase) 동작을 제어할 수 있다. 예컨대, 메모리 컨트롤러(130)는, 리드 동작 시 하이브리드 메모리 장치(150)로부터 독출된 리드 데이터(RDATA)를 호스트(200)로 제공하고, 라이트 동작 시 호스트(200)로부터 제공된 라이트 데이터(WDATA)를 하이브리드 메모리 장치(150)에 저장할 수 있다.
하이브리드 메모리 장치(150)는, 메모리 컨트롤러(130)로부터 제공되는 커맨드(CMD), 어드레스(ADDR), 및 데이터(DATA)를 각각 수신하고, 라이트 명령에 대응하는 커맨드(CMD)가 입력되면 어드레스(ADDR)에 대응하는 메모리 영역에 라이트 데이터(WDATA)를 라이트하고, 리드 명령에 대응하는 커맨드(CMD)가 입력되면 어드레스(ADDR)에 대응하는 메모리 영역으로부터 리드 데이터(RDATA)를 독출하여 메모리 컨트롤러(130)로 전송한다.
하이브리드 메모리 장치(150)는, 메인 메모리(154) 및 메인 메모리(154)에 저장된 데이터를 캐쉬하기 위한 캐쉬 메모리(152)를 포함할 수 있다. 메인 메모리(154)는, 비휘발성 메모리 장치로 구현될 수 있다. 비휘발성 메모리 장치는 ROM(Read Only Memory), MROM(Mask ROM), PROM(Programmable ROM), EPROM(Erasable ROM), EEPROM(Electrically Erasable ROM), FRAM(Ferromagnetic ROM), PCRAM(Phase change RAM), STT-MRAM(Spin-Torque Transfer RAM), RRAM(Resistive RAM), 플래시 메모리를 포함할 수 있다. 캐쉬 메모리(152)는, DRAM(Dynamic Random Access Memory), SRAM(Static RAM)을 포함할 수 있다. 바람직하게는, 메인 메모리(154)는, PCRAM으로 구현되고, 캐쉬 메모리(152)는 DRAM으로 구현될 수 있다.
일반적으로, PCRAM은 DRAM보다 우수한 확장성(scalability)을 갖는 반면, DRAM에 비해 리드/라이트 동작 속도가 느리고, 라이트 동작을 수행할 때 더 많은 에너지를 사용하며 제한적인 라이트 내구성을 갖는다. 따라서, 하이브리드 메모리 장치(150)는, PCRAM으로 구현된 저속의 비휘발성 메모리 장치를 메인 메모리(154)로 사용하고, DRAM으로 구현된 고속의 휘발성 메모리 장치를 캐쉬 메모리(152)로 사용할 수 있다.
캐쉬 메모리(152)는 처리 속도가 상대적으로 고속인 프로세서(즉, 메모리 컨트롤러(130))와 상대적으로 저속인 메인 메모리(154) 사이에서 일시적으로 정보를 저장하는 고속의 기억 장치이다. 메모리 시스템(100)은 데이터를 메인 메모리(154)에 저장하기 전에 캐쉬 메모리(152)에 저장함으로, 머지 동작(merge operation)이나 블록 소거(block erase) 횟수 등을 줄일 수 있다. 즉, 자주 참조되는 데이터를 고속 메모리 장치(예를 들어, DRAM)에 저장해서 저속 메모리 장치(예를 들어, PCRAM)로의 접근 횟수를 줄임으로 성능을 높일 수 있다. 캐쉬 메모리(152)는 한정된 공간으로 인하여 캐쉬-풀(Cache-Full)일 때 새로운 데이터 로딩을 위하여 기존에 존재하는 데이터를 삭제해야 하는 특성을 지닌다. 이를 위해, 캐쉬-풀(Cache-Full)일 때, 캐쉬 교체 정책(cache replacement policy)에 따라 데이터 참조 확률이 낮은 데이터를 삭제하거나 메인 메모리(154)로 라이트-백(WRITE-BACK)하고 해당 공간의 데이터를 새로운 데이터로 교체할 수 있다.
도 2 를 참조하면, 캐쉬 메모리(152)는 메인 메모리(154)에 저장된 데이터를 캐쉬하기 위한 다수의 캐쉬 라인을 구비할 수 있다.
호스트(200)로부터 라이트 요청이 입력되면, 메모리 컨트롤러(130)는 캐쉬 메모리(152)를 구성하는 다수의 캐쉬 라인의 사용 가능 여부를 결정하며, 사용 가능한 경우 데이터를 해당 캐쉬 라인 별로 저장할 수 있다. 예를 들어, 도 2 에는 제 1 내지 제 2048 캐쉬 라인을 구비하는 캐쉬 메모리(152)가 도시되어 있다.
제 1 내지 제 2048 캐쉬 라인 각각은, 캐쉬 데이터(CDATA), 태그 어드레스(TAG_A), 유효 비트(VALID BIT, V), 더티 비트(DIRTY BIT, D) 및 로딩 비트(LOADING BIT, L)를 포함할 수 있다. 예를 들어, 도 2 에는 32 바이트(Byte)의 캐쉬 데이터(CDATA), 16 비트의 태그 어드레스(TAG), 1 비트의 유효 비트(VALID BIT, V), 1 비트의 더티 비트(DIRTY BIT, D) 및 1 비트의 로딩 비트(LOADING BIT, L)가 도시되어 있다. 참고로, 제 1 내지 제 2048 캐쉬 라인을 구별하기 위한 라인 인덱스가 각각의 캐쉬 라인에 추가로 포함될 수 있다.
캐쉬 데이터(CDATA)는, 메인 메모리(154)에 저장된 라이트 데이터 혹은 메인 메모리(154)로부터 독출될 리드 데이터일 수 있다.
태그 어드레스(TAG_A)는, 캐쉬 데이터(CDATA)의 저장 위치를 지정하는 어드레스 정보를 포함할 수 있다. 이하에서는, 해당 비트가 하이 비트인 경우, 설정(set)된 것으로 설명하고, 해당 비트가 로우 비트인 경우 해제(release)된 것으로 설명한다.
유효 비트(V)는, 해당 캐쉬 라인에 저장된 캐쉬 데이터(CDATA)가 유효한지를 알리는 정보를 포함할 수 있다. 유효 비트(V)는, 캐쉬 데이터(CDATA)가 유효한 경우 하이 비트로 설정될 수 있다.
더티 비트(D)는, 해당 캐쉬 라인에 저장된 캐쉬 데이터(CDATA)가 메인 메모리(154)에 라이트-백 되었는지를 알리는 정보, 즉, 캐쉬 데이터(CDATA)가 메인 메모리(154)의 데이터와 다른지에 대한 정보를 포함할 수 있다. 더티 비트(D)는, 캐쉬 데이터(CDATA)가 메인 메모리(154)에 라이트-백되어야 할 필요가 있을 때 하이 비트로 설정되고, 해당 캐쉬 라인에 저장된 캐쉬 데이터(CDATA)가 메인 메모리(154)로 라이트-백 되었을 때 로우 비트로 해제될 수 있다. 예를 들어, 더티 비트(D)는, 라이트 동작 수행 시 하이 비트로 설정될 수 있다. 더티 비트(D)가 설정, 즉, 하이 비트가 되면, 캐쉬 데이터(CDATA)가 캐쉬 메모리(152)에만 저장되어 있는 상태일 수 있다.
로딩 비트(L)는, 리드 요청에 따라 메인 메모리(도 1 의 154)로부터 독출된 리드 데이터가 해당 캐쉬 라인으로 로딩 중임을 알리는 정보를 포함할 수 있다. 로딩 비트(L)는, 메인 메모리(154)의 리드 데이터가 해당 캐쉬 라인으로 로딩 중인 경우 하이 비트로 설정되고, 로딩이 완료되어 캐쉬 데이터(CDATA)가 해당 캐쉬 라인에 도착하여 저장되면 로우 비트로 해제될 수 있다.
제안 발명에서, 메모리 컨트롤러(130)는, 로딩 비트(L)와 유효 비트(V)를 동시에 설정되지 않도록, 즉, 동시에 하이 비트가 되지 않도록 관리할 수 있다. 메모리 컨트롤러(130)는, 캐쉬 메모리(152)의 각 캐쉬 라인에 저장된 태그 어드레스(TAG_A), 유효 비트(V), 더티 비트(D) 및 로딩 비트(L)를 참조하여 메모리 장치(150)를 스케쥴링할 수 있다.
메모리 컨트롤러(130)는, 리드 요청 시 리드 데이터의 어드레스에 대응하는 태그 어드레스(TAG_A)를 가지는 캐쉬 라인을 검색할 수 있다. 검색된 캐쉬 라인이 존재하는 경우, 즉, 캐쉬 히트인 경우, 메모리 컨트롤러(130)는 캐쉬 히트된 캐쉬 라인의 유효 비트(V) 또는 로딩 비트(L)가 설정되어 있는지를 확인하고, 이에 따라 메모리 장치(150)의 리드 동작을 스케쥴링 할 수 있다. 관련된 설명은 도 3 을 참조하여 설명하기로 한다.
반면, 메모리 컨트롤러(130)는, 라이트 요청 시 라이트 데이터의 어드레스에 대응하는 태그 어드레스(TAG_A)를 가지는 캐쉬 라인을 검색할 수 있다. 검색된 캐쉬 라인이 존재하는 경우, 메모리 컨트롤러(130)는 캐쉬 히트된 캐쉬 라인의 유효 비트(V) 또는 로딩 비트(L)가 설정되어 있는지를 확인하고, 이에 따라 메모리 장치(150)의 라이트 동작을 스케쥴링 할 수 있다. 관련된 설명은 도 4 를 참조하여 설명하기로 한다.
한편, 메인 메모리를 상대적으로 긴 레이턴시를 가지는 PCRAM 등의 비휘발성 메모리 장치로 구성할 때, 로딩 비트(L)가 없는 경우 다음과 같은 이슈가 발생할 수 있다.
0x00, 0x01, 0x02, 0x03, 0x00 의 어드레스에 관한 제 1 내지 제 5 리드 요청(R0, R1, R2, R3, R4)이 순차적으로 입력된다고 가정한다. 메모리 컨트롤러(130)는, 제 1 리드 요청(R0)에 따라 0x00의 어드레스에 대응되는 태그 어드레스(TAG_A)를 가지는 캐쉬 라인을 검색한다. 캐쉬 히트된 캐쉬 라인이 없는 경우, 메모리 컨트롤러(130)는, 캐쉬 메모리(152)의 빈 캐쉬 라인을 확보하고, 0x00의 어드레스에 할당된 리드 데이터를 메인 메모리(154)에 요청할 수 있다. 이 때, 메모리 컨트롤러(130)는, 확보된 캐쉬 라인의 유효 비트(V)를 하이 비트로 설정할 수 있다.
이후, 0x01, 0x02, 0x03 의 어드레스에 관한 제 2 내지 제 4 리드 요청(R1, R2, R3)이 순차적으로 처리된 후, 메모리 컨트롤러(130)는, 제 5 리드 요청(R4)에 따라 0x00 의 어드레스에 대응되는 태그 어드레스(TAG_A)를 가지는 캐쉬 라인을 검색한다. 이 때, 메모리 컨트롤러(130)는, 최초로 입력된 0x00 의 어드레스에 관한 제 1 리드 요청(R0)이 처리 된 후이므로 캐쉬 히트된 캐쉬 라인의 캐쉬 데이터(CDATA)가 유효하다고 판단하고, 해당 캐쉬 라인의 캐쉬 데이터(CDATA)를 바로 호스트로 제공할 수 있다. 하지만, 실제로는, 메인 메모리(154)의 긴 레이턴시로 인해, 메인 메모리(154)로부터 리드 데이터가 캐쉬 메모리(152)에 도착하지 않아 캐쉬 히트도 아니고 캐쉬 미스도 아닌 애매한 상태가 된다.
제안 발명에서는, 메인 메모리(154)로부터 독출된 리드 데이터가 해당 캐쉬 라인으로 로딩 중임을 알리는 로딩 비트(L)를 이용하여 메모리 장치(150)를 스케쥴링 함으로써 메모리 시스템의 오동작을 방지하고 성능을 향상시킬 수 있다.
도 3 은 본 발명의 실시예에 따라 로딩 비트(L)가 설정된 경우 리드 동작 시의 메모리 컨트롤러의 동작을 설명하는 도면 이다. 설명의 편의를 위해, 도 3 에는 도 1 의 캐쉬 메모리(152)와 메인 메모리(154) 만이 도시되어 있다.
도 3 을 참조하면, 호스트로부터 리드 요청(R_REQ)이 입력되면(①), 메모리 컨트롤러(130)는 리드 데이터(RDATA)의 어드레스에 대응하는 태그 어드레스(TAG_A)를 가지는 캐쉬 라인을 캐쉬 메모리(152)로부터 검색한다. 이 때, 캐쉬 히트된 캐쉬 라인(C_HIT_CL)의 로딩 비트(L)가 설정되고 유효 비트(V)가 해제된 경우(②), 메모리 컨트롤러(130)는, 이전의 리드 요청에 의해 리드 데이터(RDATA)가 메인 메모리(154)로부터 캐쉬 히트된 캐쉬 라인(C_HIT_CL)로 로딩 중이라고 판단할 수 있다.
메모리 컨트롤러(130)는, 리드 데이터(RDATA)가 캐쉬 히트된 캐쉬 라인(C_HIT_CL)에 도착할 때까지 대기(WAIT)한다(③). 이 후, 리드 데이터(RDATA)가 캐쉬 히트된 캐쉬 라인(C_HIT_CL)에 도착하여 캐쉬 데이터(CDATA)로 저장되면, 메모리 컨트롤러(130)는, 로딩 비트(L)를 해제하고 유효 비트(V)를 설정함(④)으로써 캐쉬 히트된 캐쉬 라인(C_HIT_CL)의 캐쉬 데이터(CDATA)가 유효한 값임을 알릴 수 있다. 메모리 컨트롤러(130)는, 캐쉬 히트된 캐쉬 라인(C_HIT_CL)의 캐쉬 데이터(CDATA)를 리드 데이터(RDATA)로 호스트에 출력할 수 있다(⑤).
한편, 상기에서는, 로딩 비트(L)를 해제하고 유효 비트(V)를 설정(④)한 후 리드 데이터(RDATA)를 출력(⑤)하는 것으로 설명하였지만 제안 발명은 이에 한정되지 않는다. 실시예에 따라, 리드 데이터(RDATA)를 출력(⑤)한 후 해당 비트들을 설정(④)할 수 있고, 리드 데이터(RDATA)를 출력(⑤)하는 동작과 해당 비트들을 설정(④)하는 동작을 동시에 수행할 수도 있다.
도 4 는 본 발명의 실시예에 따라 로딩 비트(L)가 설정된 경우 라이트 동작 시의 메모리 컨트롤러의 동작을 설명하는 도면 이다. 설명의 편의를 위해, 도 4 에는, 도 1 의 캐쉬 메모리(152)와 메인 메모리(154) 만이 도시되어 있다.
도 4 를 참조하면, 호스트로부터 라이트 요청(W_REQ)이 입력되면(①), 메모리 컨트롤러(130)는 라이트 데이터(WDATA)의 어드레스에 대응하는 태그 어드레스(TAG_A)를 가지는 캐쉬 라인을 캐쉬 메모리(152)로부터 검색한다. 이 때, 캐쉬 히트된 캐쉬 라인(C_HIT_CL)의 로딩 비트(L)가 설정되고 유효 비트(V)가 해제된 경우(②), 메모리 컨트롤러(130)는, 이전의 리드 요청에 의해 리드 데이터(RDATA)가 메인 메모리(154)로부터 캐쉬 히트된 캐쉬 라인(C_HIT_CL)로 로딩 중이라고 판단할 수 있다.
메모리 컨트롤러(130)는, 라이트 데이터(WDATA)를 캐쉬 히트된 캐쉬 라인(C_HIT_CL)의 캐쉬 데이터(CDATA)로 라이트할 수 있다(③). 메모리 컨트롤러(130)는, 캐쉬 히트된 캐쉬 라인(C_HIT_CL)의 유효 비트(V) 및 더티 비트(D)를 하이 비트로 설정하고 로딩 비트(L)는 로우 비트로 해제함(④)으로써 캐쉬 히트된 캐쉬 라인(C_HIT_CL)의 캐쉬 데이터(CDATA)가 유효한 값이지만 메인 메모리(154)의 데이터와는 다른 값임을 알릴 수 있다. 이때, 메모리 컨트롤러(130)는, 로딩 비트(L)와 유효 비트(V)를 동시에 하이 비트가 되지 않도록 관리할 수 있다.
메모리 컨트롤러(130)는, 리드 데이터(RDATA)가 캐쉬 히트된 캐쉬 라인(C_HIT_CL)에 도착할 때까지 대기(WAIT)한다(⑤). 이 후, 리드 데이터(RDATA)가 캐쉬 히트된 캐쉬 라인(C_HIT_CL)에 도착하면, 메모리 컨트롤러(130)는, 리드 데이터(RDATA)를 폐기할 수 있다(⑦). 이 때, 메모리 컨트롤러(130)는, 캐쉬 히트된 캐쉬 라인(C_HIT_CL)의 유효 비트(V), 더티 비트(D) 및 로딩 비트(L)의 설정은 그대로 유지할 수 있다(⑥).
한편, 상기에서는, 라이트 데이터(WDATA)를 라이트(③) 한 후, 유효 비트(V) 및 더티 비트(D)를 설정하고 로딩 비트(L)를 해제(④)하는 것으로 설명하였지만 제안 발명은 이에 한정되지 않는다. 실시예에 따라, 해당 비트들을 설정(④)한 후 라이트 데이터(WDATA)를 라이트(③)할 수 있고, 라이트 데이터(WDATA)를 라이트(③)하는 동작과 해당 비트들을 설정(④)하는 동작은 동시에 수행될 수도 있다.
상기와 같이, 제안 발명은 상대적으로 긴 레이턴시를 가지는 비휘발성 메모리를 메인 메모리로, 디램을 캐쉬 메모리로 사용하는 하이브리드 메모리 시스템에서, 메인 메모리의 리드 데이터가 캐쉬 메모리로 로딩 중임을 알리는 로딩 비트를 이용하여 데이터를 관리한다. 따라서, 캐쉬 히트도 아니고 캐쉬 미스도 아닌 애매한 상태의 캐쉬 메모리를 스케쥴링함으로써 메모리 시스템의 오동작을 방지하고 성능을 향상시킬 수 있다.
이하, 도 1 내지 도 6 을 참조하여, 본 발명의 구체적인 동작에 대해 설명한다.
도 5 는 본 발명의 실시예에 따른 메모리 시스템의 리드 동작을 설명하는 순서도 이다.
도 5 를 참조하면, 메모리 컨트롤러(130)는 호스트로부터 리드 요청(R_REQ)이 입력되면(S510), 리드 데이터(RDATA)의 어드레스에 대응하는 태그 어드레스(TAG_A)를 가지는 캐쉬 라인을 캐쉬 메모리(152)로부터 검색한다(S520).
캐쉬 히트된 캐쉬 라인(C_HIT_CL)이 검색되는 경우(S530의 “YES”), 메모리 컨트롤러(130)는, 로딩 비트(L)와 유효 비트(V)를 확인한다(S540).
캐쉬 히트된 캐쉬 라인(C_HIT_CL)의 로딩 비트(L)가 하이 비트로 설정된 경우(S540의 “L=1”), 메모리 컨트롤러(130)는, 이전의 리드 요청에 의해 리드 데이터(RDATA)가 메인 메모리(154)로부터 캐쉬 히트된 캐쉬 라인(C_HIT_CL)로 로딩 중이라고 판단할 수 있다.
메모리 컨트롤러(130)는, 리드 데이터(RDATA)가 캐쉬 히트된 캐쉬 라인(C_HIT_CL)에 도착할 때까지 대기(WAIT)한다(S542). 이 후, 리드 데이터(RDATA)가 캐쉬 히트된 캐쉬 라인(C_HIT_CL)에 도착하여 캐쉬 데이터(CDATA)로 저장되면, 메모리 컨트롤러(130)는, 로딩 비트(L)를 로우 비트로 해제하고 유효 비트(V)를 하이 비트로 설정하고, 캐쉬 히트된 캐쉬 라인(C_HIT_CL)의 캐쉬 데이터(CDATA)를 리드 데이터(RDATA)로 호스트에 출력할 수 있다(S544).
반면, 캐쉬 히트된 캐쉬 라인(C_HIT_CL)의 로딩 비트(L)가 로우 비트로 해제되고 유효 비트(V)가 하이 비트로 설정된 경우(S540의 “V=1”), 메모리 컨트롤러(130)는, 캐쉬 히트된 캐쉬 라인(C_HIT_CL)의 캐쉬 데이터(CDATA)를 리드 데이터(RDATA)로 호스트에 출력하고, 현재의 로딩 비트(L) 및 유효 비트(V)의 상태는 유지할 수 있다(S546).
한편, 캐쉬 히트된 캐쉬 라인(C_HIT_CL)이 검색되지 않는 경우(S530의 “NO”), 즉, 캐쉬 미스일 경우, 메모리 컨트롤러(130)는, 캐쉬 메모리(152)로부터 빈(empty) 캐쉬 라인을 확보할 수 있다(S550). 메모리 컨트롤러(130)는, 유효 비트(V), 더티 비트(D) 및 로딩 비트(L)를 토대로 빈(empty) 캐쉬 라인을 검색할 수 있다.
보다 자세히, 메모리 컨트롤러(130)는, 캐쉬 메모리(152)의 각 캐쉬 라인의 유효 비트(V), 더티 비트(D) 및 로딩 비트(L)를 확인한다(S5510). 이 때, 하나의 캐쉬 라인의 유효 비트(V), 더티 비트(D) 및 로딩 비트(L)가 모두 로우 비트로 해제된 경우(S5510의 “ALL = 0”), 메모리 컨트롤러(130)는, 해당 캐쉬 라인을 빈(empty) 캐쉬 라인으로 획득할 수 있다(S5550).
반면, 하나의 캐쉬 라인의 유효 비트(V), 더티 비트(D) 및 로딩 비트(L) 중 하나라도 설정되어 있는 경우(S5510의 “ANY OF V/D/L = 1”), 메모리 컨트롤러(130)는, 해당 캐쉬 라인을 점유된(occupied) 캐쉬 라인으로 판단하고, 다음 캐쉬 라인을 확인할 수 있다(5530). 해당 캐쉬 라인이 마지막 캐쉬 라인일 경우(S5520의 “YES”), 메모리 컨트롤러(130)는, 캐쉬 메모리(152)가 캐쉬-풀(Cache-Full)인 것으로 판단하고, 캐쉬 교체 정책(cache replacement policy)에 따른 축출 알고리즘(eviction algorithm)을 적용하여 점유된 캐쉬 라인들 중 하나를 선택할 수 있다(S5540). 예를 들어, 축출 알고리즘(eviction algorithm)은 캐시에 적재된 지 가장 오래된 블록을 교체하는 선입 선출(FIFO:First In First Out) 리스트, 캐시에 적재된 후 가장 적게 사용된 블록을 교체하는 최소 사용 빈도(LFU:Least Frequently Used) 리스트, 캐시에 적재된 후 사용되지 않은 태로 가장 오래 머무른 블록을 교체하는 최소 최근 사용(LRU:Least Recently Used) 리스트 중 하나를 토대로 수행 될 수 있다. 메모리 컨트롤러(130)는, 축출 알고리즘(eviction algorithm)을 적용하여 선택된 캐쉬 라인의 캐쉬 데이터를 삭제하거나 메인 메모리(154)로 라이트-백함으로써 빈 캐쉬 라인을 획득할 수 있다(S5550).
이후, 메모리 컨트롤러(130)는, 획득된 캐쉬 라인의 로딩 비트(L)를 하이 비트로 설정하고, 리드 요청된 리드 데이터(RDATA)를 메인 메모리(154)에 요청한다(S552). 메모리 컨트롤러(130)는, 리드 데이터(RDATA)가 획득된 캐쉬 라인에 도착할 때까지 대기(WAIT)한다(S554). 이 후, 리드 데이터(RDATA)가 획득된 캐쉬 라인에 도착하여 캐쉬 데이터(CDATA)로 저장되면, 메모리 컨트롤러(130)는, 로딩 비트(L)를 로우 비트로 해제하고 유효 비트(V)를 하이 비트로 설정하고, 획득된 캐쉬 라인의 캐쉬 데이터(CDATA)를 리드 데이터(RDATA)로 호스트에 출력할 수 있다(S556).
도 6 은 본 발명의 실시예에 따른 메모리 시스템의 라이트 동작을 설명하는 순서도 이다.
도 6 을 참조하면, 메모리 컨트롤러(130)는 호스트로부터 라이트 요청(W_REQ)이 입력되면(S610), 라이트 데이터(WDATA)의 어드레스에 대응하는 태그 어드레스(TAG_A)를 가지는 캐쉬 라인을 캐쉬 메모리(152)로부터 검색한다(S620).
캐쉬 히트된 캐쉬 라인(C_HIT_CL)이 검색되는 경우(S630의 “YES”), 메모리 컨트롤러(130)는, 로딩 비트(L)와 유효 비트(V)를 확인한다(S640).
캐쉬 히트된 캐쉬 라인(C_HIT_CL)의 로딩 비트(L)가 하이 비트로 설정된 경우(S640의 “L=1”), 메모리 컨트롤러(130)는, 이전의 리드 요청에 의해 리드 데이터(RDATA)가 메인 메모리(154)로부터 캐쉬 히트된 캐쉬 라인(C_HIT_CL)로 로딩 중이라고 판단할 수 있다.
메모리 컨트롤러(130)는, 라이트 데이터(WDATA)를 캐쉬 히트된 캐쉬 라인(C_HIT_CL)의 캐쉬 데이터(CDATA)로 라이트하고, 캐쉬 히트된 캐쉬 라인(C_HIT_CL)의 유효 비트(V) 및 더티 비트(D)를 하이 비트로 설정하고 로딩 비트(L)는 로우 비트로 해제한다(S642). 이 때, 더티 비트(D)가 로직 하이로 변경된 것은 새로운 데이터가 캐쉬 메모리(152)에 저장되었다는 것을 의미하며, 메인 메모리(154)에는 새로운 데이터의 라이트 동작이 수행되지 않은 상태를 의미한다.
메모리 컨트롤러(130)는, 리드 데이터(RDATA)가 캐쉬 히트된 캐쉬 라인(C_HIT_CL)에 도착할 때까지 대기(WAIT)한다(S644). 이 후, 리드 데이터(RDATA)가 캐쉬 히트된 캐쉬 라인(C_HIT_CL)에 도착하면, 메모리 컨트롤러(130)는, 리드 데이터(RDATA)를 폐기한다(S646). 이 때, 메모리 컨트롤러(130)는, 캐쉬 히트된 캐쉬 라인(C_HIT_CL)의 유효 비트(V), 더티 비트(D) 및 로딩 비트(L)의 설정은 그대로 유지할 수 있다.
반면, 캐쉬 히트된 캐쉬 라인(C_HIT_CL)의 로딩 비트(L)가 로우 비트로 해제되고 유효 비트(V)가 하이 비트로 설정된 경우(S640의 “V=1”), 메모리 컨트롤러(130)는, 라이트 데이터(WDATA)를 캐쉬 히트된 캐쉬 라인(C_HIT_CL)의 캐쉬 데이터(CDATA)로 저장하고, 더티 비트(D)는 하이 비트로 설정하고 유효 비트(V)는 설정된 상태를 유지할 수 있다(S648).
이 후, 캐쉬 메모리(152)가 캐쉬-풀(Cache-Full)이 되어 캐쉬 교체 정책(cache replacement policy)에 따라 선택된 캐쉬 라인이 축출(eviction)되거나, 또는 호스트로부터 라이트-백 요청이 입력되면(S650의 “YES”), 메모리 컨트롤러(130)는, 더티 비트(D)가 설정된 캐쉬 라인의 캐쉬 데이터(CDATA)를 메인 메모리(154)에 라이트-백하고 더티 비트(D)를 로우 비트로 해제할 수 있다(S652). 상기와 같이, 라이트-백 동작이 수행한 후, 더티 비트(D)를 해제함으로써 캐쉬 메모리(152)와 메인 메모리(154) 사이의 일관성을 유지한 상태임을 알릴 수 있다.
한편, 캐쉬 히트된 캐쉬 라인(C_HIT_CL)이 검색되지 않는 경우(S630의 “NO”), 즉, 캐쉬 미스일 경우, 메모리 컨트롤러(130)는, 캐쉬 메모리(152)로부터 빈(empty) 캐쉬 라인을 확보할 수 있다(S660). 메모리 컨트롤러(130)는, 유효 비트(V), 더티 비트(D) 및 로딩 비트(L)를 토대로 빈(empty) 캐쉬 라인을 검색할 수 있다.
보다 자세히, 메모리 컨트롤러(130)는, 캐쉬 메모리(152)의 각 캐쉬 라인의 유효 비트(V), 더티 비트(D) 및 로딩 비트(L)를 확인한다(S6610). 이 때, 하나의 캐쉬 라인의 유효 비트(V), 더티 비트(D) 및 로딩 비트(L)가 모두 로우 비트로 해제된 경우(S6610의 “ALL = 0”), 메모리 컨트롤러(130)는, 해당 캐쉬 라인을 빈(empty) 캐쉬 라인으로 획득할 수 있다(S6650).
반면, 하나의 캐쉬 라인의 유효 비트(V), 더티 비트(D) 및 로딩 비트(L) 중 하나라도 설정되어 있는 경우(S6610의 “ANY OF V/D/L = 1”), 메모리 컨트롤러(130)는, 해당 캐쉬 라인을 점유된(occupied) 캐쉬 라인으로 판단하고, 다음 캐쉬 라인을 확인할 수 있다(6630). 해당 캐쉬 라인이 마지막 캐쉬 라인일 경우(S6620의 “YES”), 메모리 컨트롤러(130)는, 캐쉬 메모리(152)가 캐쉬-풀(Cache-Full)인 것으로 판단하고, 캐쉬 교체 정책(cache replacement policy)에 따른 축출 알고리즘(eviction algorithm)을 적용하여 점유된 캐쉬 라인들 중 하나를 선택할 수 있다(S6640). 메모리 컨트롤러(130)는, 축출 알고리즘(eviction algorithm)을 적용하여 선택된 캐쉬 라인의 캐쉬 데이터를 삭제하거나 메인 메모리(154)로 라이트-백함으로써 빈 캐쉬 라인을 획득할 수 있다(S6650).
메모리 컨트롤러(130)는, 라이트 데이터(WDATA)를 획득된 캐쉬 라인의 캐쉬 데이터(CDATA)로 저장하고, 더티 비트(D) 및 유효 비트(V)를 하이 비트로 설정할 수 있다(S662).
이 후, 캐쉬 메모리(152)가 캐쉬-풀(Cache-Full)이 되어 캐쉬 교체 정책(cache replacement policy)에 따라 선택된 캐쉬 라인이 축출(eviction)되거나, 또는 호스트로부터 라이트-백 요청이 입력되면(S664의 “YES”), 메모리 컨트롤러(130)는, 더티 비트(D)가 설정된 캐쉬 라인의 캐쉬 데이터(CDATA)를 메인 메모리(154)에 라이트-백하고 더티 비트(D)를 로우 비트로 해제할 수 있다(S666).
본 발명의 기술 사상은 상기 바람직한 실시예에 따라 구체적으로 기록되었으나, 상기한 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술 분야의 통상의 전문가라면 본 발명의 기술 사상의 범위 내에서 다양한 실시예가 가능함을 이해할 수 있을 것이다.

Claims (23)

  1. 메인 메모리 및 상기 메인 메모리에 저장된 데이터를 캐쉬하기 위한 다수의 캐쉬 라인을 포함하는 캐쉬 메모리를 포함하고, 상기 다수의 캐쉬 라인 각각은, 캐쉬 데이터, 상기 캐쉬 데이터가 유효한지를 알리는 유효 비트 및 상기 메인 메모리의 리드 데이터가 로딩 중임을 알리는 로딩 비트를 포함하는 메모리 장치; 및
    상기 유효 비트 및 상기 로딩 비트를 참조하여 상기 메모리 장치를 스케쥴링하는 메모리 컨트롤러
    를 포함하는 메모리 시스템.
  2. 제 1 항에 있어서,
    상기 메모리 컨트롤러는,
    리드 동작 시, 캐쉬 히트된 캐쉬 라인의 로딩 비트가 설정된 경우,
    상기 리드 데이터가 상기 캐쉬 라인에 저장될 때까지 대기한 후, 상기 로딩 비트를 해제하고 상기 유효 비트를 설정하고 상기 캐쉬 라인의 캐쉬 데이터를 출력하는 메모리 시스템.
  3. 제 1 항에 있어서,
    상기 메모리 컨트롤러는,
    리드 동작 시, 캐쉬 히트된 캐쉬 라인의 유효 비트가 설정된 경우,
    상기 캐쉬 라인의 캐쉬 데이터를 출력하는 메모리 시스템.
  4. 제 1 항에 있어서,
    상기 메모리 컨트롤러는,
    라이트 동작 시, 캐쉬 히트된 캐쉬 라인의 로딩 비트가 설정된 경우,
    라이트 데이터를 상기 캐쉬 라인의 캐쉬 데이터로 저장하고, 상기 유효 비트를 설정하고, 상기 로딩 비트를 해제하고,
    상기 리드 데이터가 상기 캐쉬 라인에 도착하면 상기 리드 데이터를 폐기하는 메모리 시스템
  5. 제 1 항에 있어서,
    상기 메모리 컨트롤러는,
    라이트 동작 시, 캐쉬 히트된 캐쉬 라인의 유효 비트가 설정된 경우,
    라이트 데이터를 상기 캐쉬 라인의 캐쉬 데이터로 저장하고, 상기 유효 비트는 설정된 상태를 유지하는 메모리 시스템
  6. 제 1 항에 있어서,
    상기 다수의 캐쉬 라인 각각은 상기 캐쉬 데이터의 저장 위치를 지정하는 태그 어드레스를 더 포함하고,
    상기 메모리 컨트롤러는, 상기 각 캐쉬 라인에 포함된 태그 어드레스를 토대로 캐쉬 히트된 캐쉬 라인을 검색하는 메모리 시스템.
  7. 제 1 항에 있어서,
    상기 다수의 캐쉬 라인 각각은,
    상기 캐쉬 데이터와 상기 메인 메모리의 데이터가 불일치함을 알리는 더티 비트를 더 포함하는 메모리 시스템.
  8. 비휘발성 메모리 장치;
    상기 비휘발성 메모리 장치에 저장된 데이터를 캐쉬하기 위한 다수의 캐쉬 라인을 포함하고, 상기 다수의 캐쉬 라인 각각은, 캐쉬 데이터, 태그 어드레스, 상기 캐쉬 데이터가 유효한지를 알리는 유효 비트, 상기 캐쉬 데이터와 상기 비휘발성 메모리 장치의 데이터와 불일치함을 알리는 더티 비트 및 상기 비휘발성 메모리 장치의 리드 데이터가 로딩 중임을 알리는 로딩 비트를 포함하는 휘발성 메모리 장치; 및
    상기 유효 비트, 상기 더티 비트 및 상기 로딩 비트를 참조하여 상기 휘발성 메모리 장치를 스케쥴링하는 메모리 컨트롤러
    를 포함하는 메모리 시스템.
  9. 제 8 항에 있어서,
    상기 메모리 컨트롤러는,
    상기 태그 어드레스를 토대로 캐쉬 히트된 캐쉬 라인을 검색하는 메모리 시스템.
  10. 제 9 항에 있어서,
    상기 메모리 컨트롤러는,
    리드 동작 시, 상기 캐쉬 히트된 캐쉬 라인의 로딩 비트가 설정된 경우,
    상기 리드 데이터가 상기 캐쉬 라인에 저장될 때까지 대기한 후, 상기 로딩 비트를 해제하고 상기 유효 비트를 설정하고 상기 캐쉬 라인의 캐쉬 데이터를 출력하는 메모리 시스템.
  11. 제 9 항에 있어서,
    상기 메모리 컨트롤러는,
    리드 동작 시, 상기 캐쉬 히트된 캐쉬 라인의 유효 비트가 설정된 경우,
    상기 캐쉬 라인의 캐쉬 데이터를 출력하는 메모리 시스템.
  12. 제 9 항에 있어서,
    상기 메모리 컨트롤러는,
    라이트 동작 시, 상기 캐쉬 히트된 캐쉬 라인의 로딩 비트가 설정된 경우,
    라이트 데이터를 상기 캐쉬 라인의 캐쉬 데이터로 저장하고 상기 더티 비트 및 상기 유효 비트를 설정하고 상기 로딩 비트를 해제하고,
    상기 리드 데이터가 상기 캐쉬 라인에 도착하면 상기 리드 데이터를 폐기하는 메모리 시스템
  13. 제 9 항에 있어서,
    상기 메모리 컨트롤러는,
    라이트 동작 시, 상기 캐쉬 히트된 캐쉬 라인의 유효 비트가 설정된 경우,
    라이트 데이터를 상기 캐쉬 라인의 캐쉬 데이터로 저장하고, 상기 더티 비트를 설정하고 상기 유효 비트는 설정된 상태를 유지하는 메모리 시스템
  14. 메인 메모리 및 상기 메인 메모리에 저장된 데이터를 캐쉬하기 위한 다수의 캐쉬 라인을 포함하는 캐쉬 메모리를 포함하고, 상기 다수의 캐쉬 라인 각각은, 캐쉬 데이터, 상기 캐쉬 데이터가 유효한지를 알리는 유효 비트 및 상기 메인 메모리의 리드 데이터가 로딩 중임을 알리는 로딩 비트를 포함하는 메모리 장치를 제공하는 단계;
    호스트로부터 리드 요청이 입력되면, 캐쉬 히트된 캐쉬 라인의 로딩 비트의 설정 유무를 확인하는 단계; 및
    상기 로딩 비트가 설정된 경우, 상기 리드 데이터가 상기 캐쉬 라인에 저장될 때까지 대기한 후, 상기 로딩 비트를 해제하고 상기 유효 비트를 설정하고, 상기 캐쉬 라인의 캐쉬 데이터를 출력하는 단계
    를 포함하는 메모리 시스템의 동작 방법.
  15. 제 14 항에 있어서,
    상기 리드 요청 시 상기 캐쉬 히트된 캐쉬 라인의 상기 로딩 비트가 해제되고 상기 유효 비트가 설정된 경우,
    상기 캐쉬 라인의 캐쉬 데이터를 출력하는 단계
    를 더 포함하는 메모리 시스템의 동작 방법.
  16. 제 14 항에 있어서,
    상기 다수의 캐쉬 라인 각각은,
    상기 캐쉬 데이터가 상기 메인 메모리의 데이터와 불일치함을 알리는 더티 비트
    를 더 포함하는 메모리 시스템의 동작 방법.
  17. 제 16 항에 있어서,
    상기 호스트로부터 라이트 요청이 입력되면, 상기 캐쉬 히트된 캐쉬 라인의 로딩 비트의 설정 유무를 확인하는 단계;
    상기 로딩 비트가 설정된 경우, 라이트 데이터를 상기 캐쉬 라인의 캐쉬 데이터로 저장하고 상기 더티 비트 및 상기 유효 비트를 설정하고, 상기 로딩 비트를 해제하는 단계; 및
    상기 리드 데이터가 상기 캐쉬 라인에 도착하면 상기 리드 데이터를 폐기하는 단계
    를 더 포함하는 메모리 시스템의 동작 방법.
  18. 제 17 항에 있어서,
    상기 라이트 요청 시 상기 캐쉬 히트된 캐쉬 라인의 상기 로딩 비트가 해제되고, 상기 유효 비트가 설정된 경우,
    상기 라이트 데이터를 상기 캐쉬 라인의 캐쉬 데이터로 저장하고, 상기 더티 비트를 설정하고 상기 유효 비트는 설정된 상태를 유지하는 단계
    를 더 포함하는 메모리 시스템의 동작 방법.
  19. 제 16 항에 있어서,
    상기 다수의 캐쉬 라인 각각은, 상기 캐쉬 데이터의 저장 위치를 지정하는 태그 어드레스를 더 포함하고,
    상기 각 캐쉬 라인에 포함된 태그 어드레스를 토대로 상기 캐쉬 히트된 캐쉬 라인을 검색하는 단계
    를 더 포함하는 메모리 시스템의 동작 방법.
  20. 제 19 항에 있어서,
    상기 캐쉬 히트된 캐쉬 라인이 검색되지 않는 경우, 상기 유효 비트, 상기 더티 비트 및 상기 로딩 비트를 토대로 빈 캐쉬 라인을 검색하는 단계; 및
    상기 빈 캐쉬 라인이 검색되지 않은 경우, 캐쉬 교체 정책에 따라 빈 캐쉬 라인을 획득하는 단계
    를 더 포함하는 메모리 시스템의 동작 방법.
  21. 제 20 항에 있어서,
    상기 리드 요청 시, 상기 캐쉬 히트된 캐쉬 라인이 검색되지 않는 경우,
    상기 리드 데이터를 상기 메인 메모리에 요청하고, 상기 로딩 비트를 설정하는 단계; 및
    상기 리드 데이터가 상기 획득된 캐쉬 라인에 저장될 때까지 대기한 후, 상기 로딩 비트를 해제하고 상기 유효 비트를 설정하고 상기 획득된 캐쉬 라인의 캐쉬 데이터를 출력하는 단계
    를 포함하는 메모리 시스템의 동작 방법.
  22. 제 20 항에 있어서,
    라이트 요청 시, 상기 캐쉬 히트된 캐쉬 라인이 검색되지 않는 경우,
    라이트 데이터를 상기 획득된 캐쉬 라인의 캐쉬 데이터로 저장하고, 상기 더티 비트 및 상기 유효 비트를 설정하는 단계
    를 더 포함하는 메모리 시스템의 동작 방법.
  23. 제 22 항에 있어서,
    상기 더티 비트가 설정된 캐쉬 라인의 캐쉬 데이터를 상기 메인 메모리로 라이트-백 하고 상기 더티 비트를 해제하는 단계
    를 더 포함하는 메모리 시스템의 동작 방법.
KR1020180077176A 2018-07-03 2018-07-03 메모리 시스템 및 그의 동작 방법 KR20200004119A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020180077176A KR20200004119A (ko) 2018-07-03 2018-07-03 메모리 시스템 및 그의 동작 방법
US16/232,248 US10970208B2 (en) 2018-07-03 2018-12-26 Memory system and operating method thereof
CN201910098305.3A CN110674054B (zh) 2018-07-03 2019-01-31 存储系统及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180077176A KR20200004119A (ko) 2018-07-03 2018-07-03 메모리 시스템 및 그의 동작 방법

Publications (1)

Publication Number Publication Date
KR20200004119A true KR20200004119A (ko) 2020-01-13

Family

ID=69065652

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180077176A KR20200004119A (ko) 2018-07-03 2018-07-03 메모리 시스템 및 그의 동작 방법

Country Status (3)

Country Link
US (1) US10970208B2 (ko)
KR (1) KR20200004119A (ko)
CN (1) CN110674054B (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11487653B2 (en) * 2019-09-27 2022-11-01 Micron Technology, Inc. L2P translation techniques in limited RAM systems to increase random write performance using multiple L2P caches
US20210110328A1 (en) * 2019-10-14 2021-04-15 Oracle International Corporation Techniques for configuring workflow event processing and identifier federation
US20210019069A1 (en) * 2019-10-21 2021-01-21 Intel Corporation Memory and storage pool interfaces

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3210590B2 (ja) * 1996-11-29 2001-09-17 株式会社日立製作所 マルチプロセッサシステムおよびキャッシュコヒーレンシ制御方法
CN102016810A (zh) * 2008-04-22 2011-04-13 Nxp股份有限公司 具有允许写入未预先加载的高速缓存行的高速缓存电路的多处理电路
JP2012203560A (ja) 2011-03-24 2012-10-22 Toshiba Corp キャッシュメモリおよびキャッシュシステム
KR101306623B1 (ko) 2011-08-12 2013-09-11 주식회사 에이디칩스 캐시메모리의 캐시 웨이 락킹방법
JP5803614B2 (ja) * 2011-11-29 2015-11-04 ソニー株式会社 不揮発性キャッシュメモリ、不揮発性キャッシュメモリの処理方法、コンピュータシステム
JP2013222434A (ja) * 2012-04-19 2013-10-28 Nec Corp キャッシュ制御装置、キャッシュ制御方法、及びそのプログラム
WO2014158156A1 (en) * 2013-03-28 2014-10-02 Hewlett-Packard Development Company, L.P. Storing data from cache lines to main memory based on memory addresses
US9235521B2 (en) * 2013-07-22 2016-01-12 Avago Technologies General Ip (Singapore) Pte Ltd Cache system for managing various cache line conditions
KR20170075396A (ko) * 2015-12-23 2017-07-03 고려대학교 산학협력단 메모리 시스템

Also Published As

Publication number Publication date
CN110674054A (zh) 2020-01-10
US20200012601A1 (en) 2020-01-09
CN110674054B (zh) 2023-08-08
US10970208B2 (en) 2021-04-06

Similar Documents

Publication Publication Date Title
US10379746B2 (en) Information processing apparatus, storage device, and computer program product
US20200264980A1 (en) Apparatus and method of handling caching of persistent data
US10126964B2 (en) Hardware based map acceleration using forward and reverse cache tables
KR101449524B1 (ko) 스토리지 장치 및 컴퓨팅 시스템
US9256527B2 (en) Logical to physical address mapping in storage systems comprising solid state memory devices
KR102273622B1 (ko) 거대한 페이지들을 지원하는 메모리 관리
US10860244B2 (en) Method and apparatus for multi-level memory early page demotion
US20110161597A1 (en) Combined Memory Including a Logical Partition in a Storage Memory Accessed Through an IO Controller
US8954672B2 (en) System and method for cache organization in row-based memories
KR102609974B1 (ko) 일관성 유닛을 갖는 멀티-레벨 시스템 메모리를 위한 메모리 제어기
US10261901B2 (en) Method and apparatus for unneeded block prediction in a computing system having a last level cache and a multi-level system memory
US20170091099A1 (en) Memory controller for multi-level system memory having sectored cache
US10635581B2 (en) Hybrid drive garbage collection
US10120806B2 (en) Multi-level system memory with near memory scrubbing based on predicted far memory idle time
KR20200004119A (ko) 메모리 시스템 및 그의 동작 방법
WO2015041151A1 (ja) キャッシュメモリシステムおよびプロセッサシステム
US10606517B2 (en) Management device and information processing device
US10915453B2 (en) Multi level system memory having different caching structures and memory controller that supports concurrent look-up into the different caching structures
US20170109072A1 (en) Memory system
US20220229552A1 (en) Computer system including main memory device having heterogeneous memories, and data management method thereof
US11822481B2 (en) Semiconductor device and method for controlling semiconductor device
JP7024127B2 (ja) 管理装置、情報処理装置、管理方法、およびプログラム
JP7118827B2 (ja) 情報処理装置、メモリ制御方法およびプログラム
US20220374360A1 (en) Memory device and method for accessing memory device
GR20170200172U (el) Μια διαταξη και μια μεθοδος διαχειρισης της αποθηκευσης σε κρυφη μνημη επιμονων δεδομενων