KR102547825B1 - 호스트 메모리 버퍼를 사용하는 메모리 시스템 및 그것의 동작 방법 - Google Patents

호스트 메모리 버퍼를 사용하는 메모리 시스템 및 그것의 동작 방법 Download PDF

Info

Publication number
KR102547825B1
KR102547825B1 KR1020220055613A KR20220055613A KR102547825B1 KR 102547825 B1 KR102547825 B1 KR 102547825B1 KR 1020220055613 A KR1020220055613 A KR 1020220055613A KR 20220055613 A KR20220055613 A KR 20220055613A KR 102547825 B1 KR102547825 B1 KR 102547825B1
Authority
KR
South Korea
Prior art keywords
memory buffer
host memory
host
retention
command
Prior art date
Application number
KR1020220055613A
Other languages
English (en)
Other versions
KR20230068263A (ko
Inventor
이범희
김우람
김현석
박기현
이수연
조현규
최신호
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to US17/979,554 priority Critical patent/US20230142174A1/en
Priority to CN202211399628.4A priority patent/CN116107497A/zh
Priority to EP22206748.0A priority patent/EP4180938A1/en
Publication of KR20230068263A publication Critical patent/KR20230068263A/ko
Application granted granted Critical
Publication of KR102547825B1 publication Critical patent/KR102547825B1/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/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
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 메모리 시스템에 관한 것으로, 좀 더 자세하게는 호스트 메모리 버퍼를 사용하는 메모리 시스템 및 그것의 동작 방법에 관한 것이다. 본 발명의 실시 예에 따른 호스트 및 스토리지 장치를 포함하는 메모리 시스템의 동작 방법은, 상기 호스트에 포함된 호스트 메모리의 일부를 상기 스토리지 장치의 컨트롤러가 사용하기 위한 호스트 메모리 버퍼로 할당하는 단계, 상기 호스트 메모리 버퍼를 활성화하도록 셋 특성 커맨드를 설정하는 단계, 상기 호스트 메모리 버퍼의 응답 속도에 대한 정보를 포함하는 리텐션 커맨드를 설정하는 단계 및 상기 리텐션 커맨드에 기초해서, 상기 호스트 메모리 버퍼의 운영 모드를 선택하는 단계를 포함한다. 본 발명의 실시 예에 따른 메모리 시스템은 호스트 메모리 버퍼의 응답 속도에 기초하여 호스트 메모리 버퍼의 운영 모드 중 최적의 모드를 함으로써, 전체적인 메모리 시스템의 성능을 향상시킬 수 있다.

Description

호스트 메모리 버퍼를 사용하는 메모리 시스템 및 그것의 동작 방법{MEMORY SYSTEM USING HOST MEMORY BUFFER AND OPERATION METHOD THEREOF}
본 발명은 메모리 시스템에 관한 것으로, 좀 더 자세하게는 호스트 메모리 버퍼를 사용하는 메모리 시스템 및 그것의 동작 방법에 관한 것이다.
플래시 메모리 기반의 대용량 스토리지 장치의 예로 솔리드 스테이트 드라이브(Solid State Drive: 이하, SSD)가 대표적이다. SSD의 폭발적인 수요 증가와 함께 그 용도는 다양하게 분화되고 있다. 예를 들면, 서버용 SSD, 클라이언트용 SSD, 데이터 센터용 SSD 등으로 용도가 세분화될 수 있다. SSD의 인터페이스는 이러한 각각의 용도에 따라 최적의 속도와 신뢰성을 제공할 수 있어야 한다. 이러한 요구를 충족하기 위해서 최적의 SSD 인터페이스로 SATA, PCIe, SAS 등이 적용되고 있다. 특히, 최근에는 PCIe 기반의 NVMe나, UFS 기반의 UME(Unified Memory Extension)가 활발히 연구되고 스토리지 장치들에 적용되고 있는 실정이다. 이들 인터페이스에서는 장치 간 메모리 공유 기능을 제공하고 있다. 예를 들어, 호스트가 호스트 내의 메모리 영역의 일부를 스토리지 장치에 할당할 수 있으며, 할당된 메모리 영역은 호스트 메모리 버퍼(Host Memory Buffer: HMB)라 칭해질 수 있다.
이러한 메모리 공유 기법에 있어서, 스토리지 장치가 호스트 메모리 버퍼(HMB)를 효율적으로 사용하기 위한 기법에 대한 요구가 높아지고 있다. 호스트 메모리 버퍼(HMB)는 호스트 내에 위치하지만, 호스트 메모리 버퍼(HMB)의 활용은 스토리지 장치에 의해서 이루어지기 때문이다. 특히, 종래 기술에 의하면, 호스트는 스토리지 장치에 호스트 메모리 버퍼(HMB)의 사용 가능 여부에 대한 활성화(enable) 신호 또는 비활성화(disable) 신호만을 전송할 뿐, 호스트 메모리 버퍼(HMB)의 응답 속도 등에 대한 정보를 전송하지 않는다. 이 경우, 스토리지 장치는 호스트 메모리 버퍼(HMB)의 응답 속도와 무관하게 호스트 메모리 버퍼(HMB)에 접근(access)하여 동작하게 되며, 이는 전체적인 메모리 시스템의 성능 하락을 야기한다.
본 발명의 목적은 호스트 메모리 버퍼의 응답 속도에 따라 호스트 메모리 버퍼의 운용을 달리할 수 있는 메모리 시스템을 제공하는데 있다.
본 발명의 실시 예에 따른 호스트 및 스토리지 장치를 포함하는 메모리 시스템의 동작 방법은, 상기 호스트에 포함된 호스트 메모리의 일부를 상기 스토리지 장치의 컨트롤러가 사용하기 위한 호스트 메모리 버퍼로 할당하는 단계; 상기 호스트 메모리 버퍼를 활성화하도록 셋 특성 커맨드를 설정하는 단계; 상기 호스트 메모리 버퍼의 응답 속도에 대한 정보를 포함하는 리텐션 커맨드를 설정하는 단계; 상기 리텐션 커맨드에 기초해서, 상기 호스트 메모리 버퍼의 운영 모드를 선택하는 단계; 및 상기 호스트 메모리 버퍼의 운용 모드의 성능 목표(performance objective)에 기초해서, 상기 컨트롤러가 지원하는 복수의 파워 상태 중 하나의 파워 상태를 선택하는 단계를 포함한다.
본 발명의 실시 예에 따른 호스트 및 스토리지 장치를 포함하는 메모리 시스템의 동작 방법은, 상기 호스트에 포함된 호스트 메모리의 일부를 상기 스토리지 장치의 컨트롤러가 사용하기 위한 호스트 메모리 버퍼로 할당하는 단계; 상기 호스트 메모리 버퍼를 활성화하도록 셋 특성 커맨드를 설정하는 단계; 상기 호스트 메모리 버퍼의 응답 속도에 대한 정보를 포함하는 리텐션 커맨드를 설정하는 단계; 및 상기 리텐션 커맨드에 기초해서, 상기 호스트 메모리 버퍼의 운영 모드를 선택하는 단계를 포함한다.
본 발명의 실시 예에 따른 호스트의 호스트 메모리를 공유하는 스토리지 장치는, 상기 호스트 메모리의 일부 영역을 상기 스토리지 장치의 호스트 메모리 버퍼로 사용하기 위한 인터페이스; 및 상기 호스트 메모리 버퍼의 응답 속도가 느려지는 리텐션이 발생한 경우에, 상기 호스트 메모리 버퍼의 응답 속도에 기초하여 상기 호스트 메모리 버퍼에 대한 운용 모드로 제1 내지 제3 모드 중 하나의 모드를 선택하는 스토리지 장치를 포함하며, 상기 제1 모드가 선택된 경우, 상기 스토리지 장치의 상기 호스트 메모리 버퍼에 대한 접근이 허용되고, 상기 제2 모드가 선택된 경우, 상기 스토리지 장치의 상기 호스트 메모리 버퍼에 대한 접근이 허용되며, 상기 스토리지는 상기 호스트 메모리 버퍼에 저장된 데이터 중 자주 사용되는 데이터를 회수하여 저장하고, 상기 제3 모드가 선택된 경우, 상기 스토리지의 장치의 상기 호스트 메모리 버퍼에 대한 접근은 허용되지 않는다.
본 발명의 실시 예에 따른 메모리 시스템은 호스트 메모리 버퍼의 응답 속도에 기초하여 호스트 메모리 버퍼의 운영 모드 중 최적의 모드를 선택하고, 선택된 모드에 따라 호스트 메모리 버퍼를 운용한다. 이에 따라, 전체적인 메모리 시스템의 성능이 향상될 수 있다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 2는 도 1의 호스트 메모리의 일 예를 보여주는 블록도이다.
도 3은 도 1의 스토리지 컨트롤러의 구성을 예시적으로 보여주는 블록도이다.
도 4는 리텐션 커맨드의 일 예를 예시적으로 보여주는 도면이다.
도 5는 도 1의 메모리 시스템의 동작의 일 예를 보여주는 순서도이다.
도 6은 호스트가 리텐션 커맨드를 설정하는 도 5의 S120 단계의 일 예를 보여주는 순서도이다.
도 7은 스토리지 장치가 운용 모드를 선택하는 도 5의 S140 단계의 일 예를 보여주는 순서도이다.
도 8 및 도 9는 리텐션이 발생 시에 호스트와 스토리지 컨트롤러 사이의 커맨드 전송 동작을 좀 더 자세히 설명하기 위한 도면들이다.
도 10은 본 발명의 실시 예에 따른 메모리 시스템의 일 예를 보여주는 블록도이고, 도 11은 도 10의 스토리지 컨트롤러의 일 예를 보여주는 블록도이다.
도 12a 내지 도 12e는 도 10의 호스트와 스토리지 컨트롤러 사이의 커맨드 전송 동작의 일 예를 보여주는 도면이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템(1000A)을 보여주는 블록도이다. 도 1을 참조하면, 본 발명의 실시 예에 따른 메모리 시스템(1000A)은 호스트(1100)와 스토리지 장치(1200)를 포함한다.
본 발명의 실시 예에 따른 메모리 시스템(1000A)은 호스트 메모리(1130)의 일부 영역을 스토리지 장치(1200)와 공유하는 호스트 메모리 버퍼 기능을 지원한다. 아울러, 스토리지 장치(1200)에 할당된 호스트 메모리 버퍼(1120)의 응답 속도가 정상 속도에 비하여 지연된 리텐션(retention)이 발생하는 경우, 호스트(1100)는 리텐션 커맨드(Retention command)를 스토리지 장치(1200)에 전송한다. 스토리지 장치(1200)는 리텐션 커맨드에 기초하여 복수의 모드들 중 최적의 성능을 발휘하는 모드를 선택하고, 선택된 모드에 따라 호스트 메모리 버퍼(1120)를 운용한다. 이에 따라, 메모리 시스템(1000A)의 전체적인 성능이 향상될 수 있다.
좀 더 자세히 설명하면, 호스트(1100)는 스토리지 장치(1200)에 데이터를 기입하거나, 스토리지 장치(1200)에 저장된 데이터를 읽어낸다. 이를 위해, 호스트(1100)는 스토리지 장치(1200)에 데이터를 기입하기 위한 커맨드(CMD)와 어드레스(ADDR)를 전달할 수 있다. 또한, 호스트(1100)는 스토리지 장치(1200)에 저장된 데이터를 읽어내기 위한 커맨드(CMD)와 어드레스(ADDR)를 스토리지 장치(1200)에 전달할 수 있다. 호스트(1100)는 프로세서(1110), 호스트 메모리(1130), 인터페이스 회로(1150)를 포함한다.
호스트 메모리(1130)에는 응용 프로그램, 파일 시스템, 장치 드라이버 등이 로드될 수 있다. 이 밖에도, 호스트 메모리(1130)에는 호스트(1100)에서 구동되는 다양한 소프트웨어나 데이터가 로드될 수 있다. 특히, 호스트(1100)는 호스트 메모리(1130)의 일부 영역을 스토리지 장치(1200)의 버퍼(Buffer) 역할을 담당하는 호스트 메모리 버퍼(1120)로 할당할 수 있다.
호스트 메모리 버퍼(1120)는 스토리지 장치(1200)가 사용할 수 있도록 호스트 메모리(1130)의 영역 중 스토리지 장치(1200)에 할당된 영역이다. 예를 들어, 스토리지 장치(1200)에 호스트 메모리 버퍼(1120)가 할당되면, 상기 호스트 메모리 버퍼(1120)는 스토리지 장치(1200)가 배타적으로 사용할 수 있도록 제공된다. 이때, 호스트(1100)는 호스트 메모리 설명자 목록(host memory descriptor list)에서 상기 호스트 메모리 버퍼(1120)를 삭제할 수 있다.
호스트 메모리 버퍼(1120)에는 리텐션(Retention)이 발생할 수 있다. 여기서, 리텐션은 호스트 메모리 버퍼(1120)의 응답 속도가 정상적인 경우에 비하여 느려진 상태를 의미한다. 예를 들어, 파워 절약 모드(power saving mode) 시에 호스트 메모리(1130)가 200ms 간격으로 활성화(activate)되도록 설정되었다고 가정하자. 만약 호스트(1100)가 파워 절약 모드에 진입한다면, 호스트 메모리 버퍼(1120)의 응답 속도가 정상적인 경우에 비하여 느려지는 리텐션이 발생하게 된다. 이외에도, 호스트 메모리 버퍼(1120)의 메모리 셀들의 열화, 불량 메모리 셀들에 대한 대체 동작의 수행 등과 같은 다양한 원인으로, 리텐션이 발생할 수 있다.
호스트 메모리 버퍼(1120)에 리텐션이 발생하면, 호스트(1100)는 스토리지 장치(1200)에 리텐션 커맨드(Retention command)를 전송한다. 여기서, 리텐션 커맨드는 리텐션이 발생한 호스트 메모리 버퍼(1120)의 어드레스 및 지연된 응답 속도에 대응하는 리텐션 레벨(Retention Level)을 포함한다. 일 실시 예에 있어서, 호스트 메모리 버퍼(1120)는 복수의 HMB 영역들로 구분되고, 복수의 HMB 영역들 중 적어도 하나의 HMB 영역에 리텐션이 발생할 수 있다. 이 경우, 호스트(1100)는 리텐션이 발생한 HMB 영역에 대응하는 어드레스 및 리텐션 레벨을 스토리지 장치(1200)에 전송할 수도 있다.
인터페이스 회로(1150)는 호스트(1100)와 스토리지 장치(1200) 사이에서 물리적 연결을 제공한다. 즉, 인터페이스 회로(1150)는 호스트(1100)에서 발행하는 다양한 요청에 대응하는 커맨드, 어드레스, 데이터 등을 스토리지 장치(1200)와의 인터페이싱 방식으로 변환한다. 인터페이스 회로(1150)의 프로토콜로는 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI), UFS(Universal Flash Storage) 중 적어도 어느 하나일 수 있다.
스토리지 장치(1200)는 NVM 서브 시스템(NVM subsystem)이라고도 칭해질 수 있으며, 호스트(1100)의 데이터 스토리지로 제공된다. 또한, 스토리지 장치(1200)는 호스트(1100)의 호스트 메모리(1130)의 일부 영역을 호스트 메모리 버퍼(1120)로 할당 받고, 상기 호스트 메모리 버퍼(1120)를 내부 버퍼와 동일하게 사용할 수 있다. 스토리지 장치(1200)는 호스트 인터페이스(1220), 스토리지 컨트롤러(1240), 그리고 불휘발성 메모리 장치(1260)를 포함한다.
호스트 인터페이스(1220)는 호스트(1100)와의 데이터 교환을 위한 스토리지 장치(1200)의 물리적 통신 채널로서 제공된다. 호스트 인터페이스(1220)는 스토리지 장치(1200)의 버퍼 기능을 호스트 메모리 버퍼(1120)가 지원할 수 있는 인터페이싱 프로토콜을 가질 수 있다. 즉, 호스트 인터페이스(1220)는 호스트(1100)의 메모리 자원과 스토리지 장치(2100)의 메모리 자원을 상호 공유하기 위한 인터페이싱 방식일 수 있다. 예를 들어, 호스트 인터페이스(1220)에 의해서 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼(1120)와 스토리지 장치(1200)의 내부 버퍼를 하나의 메모리 맵으로 관리할 수 있다.
스토리지 컨트롤러(1240)는 스토리지 장치(1200)의 전반적인 동작을 제어한다. 스토리지 컨트롤러(1240)는 호스트(1100)로부터 수신된 리텐션 커맨드에 기초하여 호스트 메모리 버퍼(1120)의 운영 모드를 선택하는 동작 모드 컨트롤러(1243)를 포함한다.
동작 모드 컨트롤러(1243)는 호스트(1100)로부터 리텐션 커맨드를 수신하고, 리텐션 커맨드에 기초하여 리텐션이 발생한 호스트 메모리 버퍼(1120)의 리텐션 레벨을 확인한다. 또한, 동작 모드 컨트롤러(1243)는 리텐션 레벨에 기초하여 호스트 메모리 버퍼(1120)에 대한 운용 모드들 중 최적의 성능을 발휘하는 모드를 선택하고, 선택된 모드에 따라 리텐션이 발생한 호스트 메모리 버퍼(1120)를 운용할 수 있다.
예를 들어, 동작 모드 컨트롤러(1243)는 리텐션 레벨에 따라 스토리지 장치(1200)의 호스트 메모리 버퍼(1120)에 대한 접근을 허용하거나 차단하는 모드를 선택할 수 있다. 또한, 동작 모드 컨트롤러(1243)는 리텐션 레벨에 따라 호스트 메모리 버퍼(1120)에 저장된 데이터 중 일부를 회수하고, 회수된 데이터를 스토리지 장치(1200)의 내부에 저장하는 모드를 선택할 수 있다. 이와 같이, 리텐션 레벨에 따라 리텐션이 발생한 호스트 메모리 버퍼(1120)의 운용 모드를 달리함으로써, 메모리 시스템(1000A)의 전체적인 성능이 향상될 수 있다.
불휘발성 메모리 장치(1260)는 스토리지 장치(1200)의 저장 매체로 제공된다. 불휘발성 메모리 장치(1260)는 플래시 메모리, PRAM, MRAM, ReRAM, FRAM, 자기 디스크 등과 같은 불휘발성 메모리를 포함할 수 있다.
이상에서 살펴본 바와 같이, 본 발명의 실시 예에 따른 메모리 시스템(1000A)은 리텐션 레벨에 기초하여 호스트 메모리 버퍼(1120)에 대한 운용 모드들 중 최적의 모드를 선택하고, 선택된 모드에 따라 호스트 메모리 버퍼(1120)를 운용한다. 이와 같이, 리텐션 레벨에 따라 호스트 메모리 버퍼(1120)의 운용을 달리함으로써, 메모리 시스템(1000A)의 전체적인 성능이 향상될 수 있다.
도 2는 도 1의 호스트 메모리(1130)의 일 예를 보여주는 블록도이다. 도 2에서는, 설명의 편의상, 호스트 메모리 버퍼(1120)가 제1 내지 제3 HMB 영역들(1122, 1124, 1126)로 구분된다고 가정된다.
호스트 메모리(1130)는 호스트(1100)에 구비된 메모리이다. 호스트 메모리(1130)는 호스트(1100)에 의해 요청되는 데이터를 저장하거나 출력할 수 있다. 예를 들어, 호스트 메모리(1130)는 DRAM이나 SRAM과 같은 휘발성 메모리로 구현될 수 있다. 그러나, 호스트 메모리(1130)의 구현은 목적에 따라 다양하게 구현될 수 있으며, 불휘발성 메모리로도 구현될 수 있다.
호스트 메모리 버퍼(1120)는 스토리지 장치(1200)의 버퍼로 사용될 수 있도록 호스트 메모리(1130)의 일부 영역을 스토리지 장치(1200)에 할당한 영역이다. 즉, 스토리지 장치(1200)는 호스트 메모리 버퍼(1120)를 내부 버퍼(internal buffer)로서 사용할 수 있다. 스토리지 장치(1200)에 구비되는 내부 버퍼의 경우, 비용, 장치 사이즈, 설계상 한계 등과 같은 다양한 이슈들 때문에, 충분한 용량을 제공하기 어려울 수 있다. 그러나, 본 발명의 실시 예에 따른 호스트(1100)는 호스트 메모리(1130)의 일부 영역을 스토리지 장치(1200)가 사용하도록 스토리지 장치(1200)에 할당하였기 때문에, 스토리지 장치(1200)는 충분한 버퍼 용량을 확보할 수 있다.
호스트 메모리 버퍼(1120)는 다양한 기준에 따라 복수의 HMB 영역들(1122, 1124, 1126)로 구분될 수 있다.
일 실시 예에 있어서, 호스트 메모리 버퍼(1120)는 저장되는 데이터의 접근 빈도에 따라 복수의 HMB 영역들(1122, 1124, 1126)로 구분될 수 있다. 예를 들어, 제1 HMB 영역(1122)에는 스토리지 장치(1200)의 접근 빈도가 높은 데이터가 저장되고, 제2 HMB 영역(1124)에는 스토리지 장치(1200)의 접근 빈도가 중간인 데이터가 저장되며, 제3 HMB 영역(1126)에는 스토리지 장치(1200)의 접근 빈도가 낮은 데이터가 저장될 수 있다.
또한, 일 실시 예에 있어서, 호스트 메모리 버퍼(1120)는 저장되는 데이터의 종류에 따라 복수의 HMB 영역들(1122, 1124, 1126)로 구분될 수 있다. 예를 들어, 제1 HMB 영역(1122)에는 스토리지 장치(1200)의 맵핑 데이터가 저장되고, 제2 HMB 영역(1124)에는 사용자 데이터가 저장되며, 제3 HMB 영역(1126)에는 스토리지 장치(1200)를 관리하기 위한 관리 데이터가 저장될 수 있다. 한편, 호스트 메모리 버퍼(1120)는 저장되는 데이터의 속성 이외에도 메모리 셀들의 열화 정도 등 다양한 기준에 따라 복수의 HMB 영역들(1122, 1124, 1126)로 구분될 수 있다.
리텐션은 호스트 메모리 버퍼(1120)의 복수의 HMB 영역들(1122, 1124, 1126) 중 일부 영역에 발생할 수 있다. 이 경우, 호스트(1100)는 복수의 HMB 영역들(1122, 1124, 1126) 중 리텐션이 발생한 HMB 영역에 대한 리텐션 커맨드를 스토리지 장치(1200, 도 1 참조)에 전송할 수 있다. 스토리지 장치(1200)는 HMB 영역에 대한 리텐션 커맨드를 수신하고, 동작 모드 컨트롤러(1243, 도 1 참조)는 리텐션 커맨드에 기초하여 리텐션이 발생한 HMB 영역에 대한 운영 모드를 선택할 수 있다.
도 3은 도 1의 스토리지 컨트롤러(1240)의 구성을 예시적으로 보여주는 블록도이다. 도 3을 참조하면, 스토리지 컨트롤러(1240)는 CPU(1241), 동작 모드 컨트롤러(1243), 및 플래시 인터페이스(1245)을 포함한다.
CPU(1241)는 스토리지 장치(1100)의 전반적인 동작을 제어할 수 있다. 예를 들어, CPU(1241)는 호스트(1100)로부터의 커맨드에 응답하여 불휘발성 메모리 장치(1260)에 데이터를 기입하거나 불휘발성 메모리 장치(1260)에 저장된 데이터를 읽어 내기 위해 플래시 인터페이스(1245)를 제어할 수 있다.
동작 모드 컨트롤러(1243)는 호스트 인터페이스(1220, 도 1 참조)를 통하여 호스트 메모리 버퍼(1120)에 대한 리텐션 커맨드를 수신한다. 동작 모드 컨트롤러(1243)는 호스트 메모리 버퍼(1120)의 리텐션 레벨을 확인하고, 이에 기초하여 호스트 메모리 버퍼(1120)에 대한 복수의 운용 모드들 중 최적의 모드를 선택한다. 이를 위해, 동작 모드 컨트롤러(1243)는 리텐션 레벨 확인 모듈(1242) 및 동작 모드 결정 모듈(1244)을 포함할 수 있다.
리텐션 레벨 확인 모듈(1242)은 리텐션 커맨드에 포함된 호스트 메모리 버퍼(1120)에 대한 리텐션 레벨을 확인한다. 예를 들어, 호스트 메모리 버퍼(1120)가 복수의 HMB 영역들로 구분되는 경우, 리텐션 레벨 확인 모듈(1242)은 복수의 HMB 영역들 중 리텐션이 발생한 HMB 영역의 리텐션 레벨을 확인할 수 있다.
동작 모드 결정 모듈(1244)은 리텐션 레벨에 기초하여 호스트 메모리 버퍼(1120)에 대한 운용 모드들 중 최적의 모드를 선택하고, 선택된 모드에 따라 리텐션이 발생한 호스트 메모리 버퍼(1120)를 운용할 수 있다.
예를 들어, 이하에서 설명될 바와 같이, 동작 모드 결정 모듈(1244)은 리텐션 레벨에 따라 제1 내지 제3 모드(Mode1~Mode3) 중 하나의 모드를 선택할 수 있다. 제1 모드(Mode1)가 선택된 경우, 동작 모드 결정 모듈(1244)은 스토리지 장치(1200)가 리텐션이 발생한 호스트 메모리 버퍼(1120)에 접근하는 것을 허용할 수 있다. 제2 모드(Mode2)가 선택된 경우, 동작 모드 결정 모듈(1244)은 스토리지 장치(1200)가 리텐션이 발생한 호스트 메모리 버퍼(1120)에 접근하는 것을 허용하되, 자주 사용하는 데이터를 리텐션이 발생한 호스트 메모리 버퍼(1120)로부터 회수하여 스토리지 장치(1200)에 저장할 수 있다. 제3 모드(Mode 3)가 선택된 경우, 동작 모드 결정 모듈(1244)은 스토리지 장치(1200)가 리텐션이 발생한 호스트 메모리 버퍼(1120)에 접근하는 것을 허용하지 않을 수 있다.
도 4는 리텐션 커맨드의 일 예를 예시적으로 보여주는 도면이다. 설명의 편의상, 도 4에서는 호스트 메모리 버퍼(1120, 도 1 참조)가 제1 내지 제3 HMB 영역들(HMB1~HMB3)로 구분되고, 제1 내지 제3 HMB 영역들(HMB1~HMB3) 각각에 리텐션이 발생한다고 가정된다.
도 4를 참조하면, 리텐션 커맨드는 리텐션이 발생한 호스트 메모리 버퍼(1120)의 어드레스(ADDR) 및 리텐션 레벨(Retention Level)을 포함한다.
리텐션 레벨은 응답 속도의 지연 정도에 따라 복수의 레벨들로 구분될 수 있다. 호스트(1100, 도 1 참조)는 호스트 메모리 버퍼(1120)의 응답 속도의 지연 정도에 기초하여, 리텐션이 발생한 호스트 메모리 버퍼(1120)의 리텐션 레벨을 결정할 수 있다.
예를 들어, 도 4에 도시된 바와 같이, 제1 HMB 내지 제3 HMB 영역(HMB1~HMB3)의 예상 응답 시간이 각각 500ms, 200ms, 90ms라고 가정하자. 그리고, 제1 및 제2 기준 응답 시간(TH1, TH2)이 각각 90ms, 300ms라고 가정하자.
제1 HMB 영역(HMB1)의 예상 응답 시간은 500ms로, 이는 제2 기준 응답 시간(TH2)인 300ms보다 크다. 이 경우, 호스트(1100)는 제1 HMB 영역(HMB1)의 응답 속도가 매우 느린 것으로 판단할 수 있으며, 제1 HMB 영역(HMB1)의 리텐션 레벨을 'X'로 결정할 수 있다. 여기서, 'X'의 리텐션 레벨은 호스트 메모리 버퍼로 사용 불가능한 상태임을 가리킬 수 있다. 리텐션 레벨이 'X' 인 경우, 동작 모드 결정 모듈(1244, 도 3 참조)은 제1 HMB 영역(HMB1)의 운용 모드로 제3 모드(Mode3)를 선택할 수 있다. 이에 따라, 스토리지 장치(1200)가 제1 HMB 영역(HMB1)에 접근하는 것이 차단될 수 있다.
제2 HMB 영역(HMB2)의 예상 응답 시간은 200ms로, 이는 제1 기준 응답 시간(TH1)인 100ms보다는 크고 제2 기준 응답 시간(TH2)인 300ms보다는 작다. 이 경우, 호스트(1100)는 제2 HMB 영역(HMB2)의 응답 속도가 중간 정도 느린 것으로 판단할 수 있으며, 제2 HMB 영역(HMB2)의 리텐션 레벨을 '1'로 결정할 수 있다. 리텐션 레벨이 '1' 인 경우, 동작 모드 결정 모듈(1244)은 제2 HMB 영역(HMB2)의 운용 모드로 제2 모드(Mode2)를 선택할 수 있다. 이에 따라, 스토리지 장치(1200)가 제2 HMB 영역(HMB2)에 접근하는 것이 허용되되, 자주 사용하는 데이터는 제2 HMB 영역(HMB2)으로부터 회수하여 스토리지 장치(1200)에 저장될 수 있다.
제3 HMB 영역(HMB3)의 예상 응답 시간은 90ms로, 이는 제1 기준 응답 시간(TH1)인 100ms보다는 작다. 이 경우, 호스트(1100)는 제3 HMB 영역(HMB3)의 응답 속도가 조금 느린 것으로 판단할 수 있으며, 제3 HMB 영역(HMB3)의 리텐션 레벨을 '2'로 결정할 수 있다. 리텐션 레벨이 '2' 인 경우, 동작 모드 결정 모듈(1244)은 제3 HMB 영역(HMB3)의 운용 모드로 제1 모드(Mode1)를 선택할 수 있다. 이에 따라, 스토리지 장치(1200)가 제3 HMB 영역(HMB3)에 접근하는 것이 허용되고, 제3 HMB 영역(HMB3)은 리텐션 발생 여부와 무관하게 계속해서 내부 버퍼로서 사용될 수 있다.
이상에서 설명된 바와 같이, 본 발명의 실시 예에 따른 호스트(1100)는 응답 속도의 지연 정도에 따라 호스트 메모리 버퍼(1120)의 리텐션 레벨을 설정할 수 있다. 아울러, 동작 모드 컨트롤러(1243)는 리텐션 레벨에 기초하여 호스트 메모리 버퍼(1120)에 대한 최적의 운용 모드를 선택할 수 있다.
도 5는 도 1의 메모리 시스템(1000A)의 동작의 일 예를 보여주는 순서도이다.
S110 단계에서, 호스트(1100)는 호스트 메모리(1130)의 일부 영역을 스토리지 장치(1200)가 사용하기 위한 호스트 메모리 버퍼(1120)로 할당한다.
S120 단계에서, 호스트(1100)는 리텐션이 발생한 호스트 메모리 버퍼(1120)의 응답 속도에 기초하여 리텐션 커맨드를 설정한다.
S130 단계에서, 호스트(1100)는 리텐션 커맨드를 스토리지 장치(1200)에 전송한다.
S140 단계에서, 스토리지 장치(1200)는 리텐션 커맨드를 수신하고, 수신된 리텐션 커맨드에 기초하여 호스트 메모리 버퍼(1120)에 대한 운용 모드를 선택한다.
S150 단계에서, 스토리지 장치(1200)는 호스트(1100)로부터 리텐션 회복 커맨드(Retention Recovery command)를 수신한다. 이에 따라, 스토리지 장치(1200)는 호스트 메모리 버퍼(1120)를 내부 버퍼로 사용하는 동작이 재개(resume)된다.
도 6은 호스트(1100)가 리텐션 커맨드를 설정하는 도 5의 S120 단계의 일 예를 보여주는 순서도이다. 설명의 편의상, 도 6에서는 도 4와 동일하게 제1 및 제2 기준 응답 시간(TH1, TH2)에 기초하여 리텐션 레벨이 설정된다고 가정된다.
S121 단계에서, 호스트(1100)는 리텐션이 발생한 호스트 메모리 버퍼(1120)의 예상 응답 시간을 확인한다.
S122 단계에서, 호스트(1100)는 예상 응답 시간이 제1 기준 응답 시간(TH1)보다 큰 지를 확인한다.
만약 예상 응답 시간이 제1 기준 응답 시간(TH1)보다 작다면, 호스트(1100)는 호스트 메모리 버퍼(1120)의 리텐션 레벨을 '2'로 설정한다(S123 단계). 반대로, 만약 예상 응답 시간이 제1 기준 응답 시간(TH1)보다 크다면, 호스트(1100)는 예상 응답 시간이 제2 기준 응답 시간(TH2)보다 큰 지를 확인한다(S124 단계).
만약 예상 응답 시간이 제2 기준 응답 시간(TH2)보다 작다면, 호스트(1100)는 호스트 메모리 버퍼(1120)의 리텐션 레벨을 '1'로 설정한다(S125 단계). 반대로, 만약 예상 응답 시간이 제2 기준 응답 시간(TH2)보다 크다면, 호스트(1100)는 호스트 메모리 버퍼(1120)의 리텐션 레벨을 'X'로 설정한다(S126 단계).
이상에서 설명된 바와 같이, 호스트(1100)는 리텐션이 발생한 호스트 메모리 버퍼(1120)의 응답 속도에 따라 리텐션 레벨을 설정할 수 있다.
도 7은 스토리지 장치(1200)가 운용 모드를 선택하는 도 5의 S140 단계의 일 예를 보여주는 순서도이다. 설명의 편의상, 도 7에서는 리텐션 레벨이 '2', '1', 'X'인 리텐션 커맨드가 수신된다고 가정된다.
S141 단계에서, 스토리지 장치(1200)는 호스트 메모리 버퍼(1120)의 리텐션 레벨을 확인한다. 만약 리텐션 레벨이 '2'라면, 제1 모드(Mode1)를 선택하는 S142 단계가 수행된다. 만약 리텐션 레벨이 '1'라면, 제2 모드(Mode2)를 선택하는 S143 단계가 수행된다. 만약 리텐션 레벨이 'X'라면, 제3 모드(Mode1)를 선택하는 S144 단계가 수행된다.
S142 단계에서, 스토리지 장치(1200)는 제1 모드(Mode1)를 선택한다. 이 경우, 스토리지 장치(1200)는 리텐션이 발생한 호스트 메모리 버퍼(1120)에 접근할 수 있다. 즉, 리텐션으로 인한 응답 속도의 저하가 전체적인 성능에 미치는 영향이 미미하기 때문에, 스토리지 장치(1200)는 호스트 메모리 버퍼(1120)를 리텐션 발생 여부와 무관하게 계속해서 내부 버퍼로 사용할 수 있다.
S143 단계에서, 스토리지 장치(1200)는 제2 모드(Mode2)를 선택한다. 이 경우, 스토리지 장치(1200)는 리텐션이 발생한 호스트 메모리 버퍼(1120)에 접근할 수는 있으나, 원활한 동작을 위하여 호스트 메모리 버퍼(1120)로의 접근은 최소화될 수 있다. 이를 위해, 스토리지 장치(1200)는 자주 사용하는 데이터를 호스트 메모리 버퍼(1120)로부터 회수하고, 이를 저장할 수 있다.
좀 더 자세히 설명하면, S143_1 단계에서, 스토리지 장치(1200)는 호스트 메모리 버퍼(1120)에 접근할 수 있다. S143_2 단계에서, 스토리지 장치(1200)는 자주 사용하는 데이터를 호스트 메모리 버퍼(1120)로부터 회수하고, 이를 내부에 저장할 수 있다. S143_3 단계에서, 스토리지 장치(1200)는 회수된 데이터를 이용하여 각종 백그라운드 동작을 수행할 수 있다. 또한, 필요에 따라, 스토리지 장치(1200)는 다시 호스트 메모리 버퍼(1120)에 접근하고, 필요한 데이터를 더 회수할 수도 있다.
한편, S144 단계에서, 스토리지 장치(1200)는 제3 모드(Mode3)를 선택한다. 이 경우, 스토리지 장치(1200)가 리텐션이 발생한 호스트 메모리 버퍼(1120)에 접근하는 것은 허용되지 않는다. 다만, 백그라운드 동작에 필요한 데이터의 회수가 필요한지 여부에 따라, 스토리지 장치(1200)의 호스트 메모리 버퍼(1120)에 대한 접근 차단은 필요한 데이터를 회수한 이후에 실행될 수 있다.
좀 더 자세히 설명하면, S144_1 단계에서, 스토리지 장치(1200)는 호스트 메모리 버퍼(1120)에 백그라운드 동작 등을 위해서 필요한 데이터가 있는지 판단한다.
만약 필요한 데이터가 없다면, 스토리지 장치(1200)가 호스트 메모리 버퍼(1120)에 접근하는 것이 허용되지 않는다(S144_6 단계). 이 경우, 스토리지 장치(1200)는 딥 슬립(deep sleep) 상태에 진입하거나, 이전에 저장된 데이터를 이용하여 백그라운드 동작을 수행할 수 있다.
반대로, 만약 필요한 데이터가 있다면, 스토리지 장치(1200)는 호스트 메모리 버퍼(1120)에 접근한다(S144_2 단계). 이후, 스토리지 장치(1200)는 백그라운드 동작 등에 필요한 데이터를 호스트 메모리 버퍼(1120)로부터 회수하고, 이를 내부에 저장한다(S144_3 단계). 이후, 스토리지 장치(1200)의 호스트 메모리 버퍼(1120)에 대한 접근이 차단되고(S144_4 단계), 스토리지 장치(1200)는 회수된 데이터를 이용하여 백그라운드 동작을 수행할 수 있다.
이상에서 설명된 바와 같이, 스토리지 장치(1200)는 호스트 메모리 버퍼(1200)의 리텐션 레벨에 기초하여 호스트 메모리 버퍼(1120)의 운용 모드들 중 최적의 모드를 선택하고, 선택된 모드에 따라 호스트 메모리 버퍼(1120)를 운용할 수 있다.
도 8 및 도 9는 리텐션이 발생 시에 호스트와 스토리지 컨트롤러 사이의 커맨드 전송 동작을 좀 더 자세히 설명하기 위한 도면들이다. 명확한 설명을 위해, 도 8에서는 일반적인 호스트와 스토리지 컨트롤러 사이의 커맨드 전송 동작이 설명되고, 도 9에서는 본 발명의 실시 예에 따른 호스트(1100, 도 1 참조)와 스토리지 컨트롤러(1240, 도 1 참조) 사이의 커맨드 전송 동작이 설명될 것이다.
먼저, 도 8을 참조하면, S10 단계에서, 호스트는 EHM(Enable Host Memory) 커맨드와 MR(Memory Return) 커맨드의 비트를 각각 '1'로 설정한다. 이에 따라, 호스트 메모리 버퍼가 활성화된 상태에서, 호스트 메모리 버퍼를 호스트로 반납하기 위한 동작이 수행된다.
S20 단계에서, 호스트 메모리 버퍼가 비활성화 되기 전에, 스토리지 컨트롤러는 호스트 메모리 버퍼에 저장된 데이터를 회수한다.
S30 단계에서, 호스트는 EHM 커맨드와 MR 커맨드의 비트를 각각 '0'과 '1'로 설정한다. 이에 따라, 호스트 메모리 버퍼는 비활성화되고, 호스트 메모리 버퍼는 반납(return)된다.
S40 단계에서, 스토리지 컨트롤러는 딥 슬립 상태에 진입하거나 백그라운드 동작을 수행한다. 이때, 호스트 메모리 버퍼는 이미 반납되었기 때문에, 스토리지 컨트롤러는 호스트 메모리 버퍼에 저장된 데이터를 사용할 수 없다.
S50 단계에서, 호스트 메모리 버퍼가 리텐션에서 회복된다. 이 경우, 호스트는 EHM 커맨드와 MR 커맨드의 비트를 각각 '1'과 '0'으로 설정한다. 이에 따라, 호스트는 호스트 메모리 버퍼를 스토리지 컨트롤러에 다시 할당하고, 해당 호스트 메모리 버퍼는 활성화된다.
S60 단계에서, 스토리지 컨트롤러는 호스트 메모리 버퍼에 필요한 데이터를 다시 저장하는 재건(rebuilding) 동작을 수행한다.
이상에서 살펴본 바와 같이, 일반적인 메모리 시스템은 EHM 커맨드 및 MR 커맨드와 같은 셋 특성 커맨드(Set Feature command)만을 제공할 뿐, 본 발명과 같은 리텐션 커맨드를 제공하지 않는다. 따라서, 호스트 메모리 버퍼의 응답 속도가 정상 속도보다 느려지는 리텐션이 발생하는 경우, 일반적인 메모리 시스템은 호스트 메모리 버퍼를 비활성화하고, 리텐션이 발생한 호스트 메모리 버퍼를 반납하는 것이 일반적이다.
이 경우, 일반적인 메모리 시스템은 호스트 메모리 버퍼가 비활성화되기 전에 호스트 메모리 버퍼에 저장된 데이터를 모두 회수하여야 한다. 따라서, 이에 따른 시간 지연(latency)이 발생하게 된다. 아울러, 리텐션으로부터 회복되면, 일반적인 메모리 시스템은 호스트 메모리 버퍼를 다시 할당하고, 호스트 메모리 버퍼에 데이터를 다시 저장하는 재건(rebuilding) 동작을 수행하여야 한다. 따라서, 이에 따른 시간 지연이 또 발생하게 된다.
도 9a는 본 발명의 일 실시 예에 따른 호스트(1100)와 스토리지 컨트롤러(1240) 사이의 커맨드 전송 동작의 일 예를 보여주는 도면이다. 도 9a에서는 도 7에서 설명된 제1 모드(Mode1)에서의 커맨드 전송 동작이 예시적으로 설명될 것이다.
S1110 단계에서, 호스트(1100)는 EHM 커맨드와 MR 커맨드의 비트를 각각 '1'과 '0'으로 설정한다. 이에 따라, 호스트 메모리 버퍼(HMB)가 활성화(enable)된 상태에서 이하의 동작이 수행될 수 있다. 아울러, 호스트 메모리 버퍼(HMB)는 반납되지 않는다.
S1120 단계에서, 호스트(1100)는 리텐션 커맨드를 스토리지 컨트롤러(1240)에 전송한다. 리텐션 커맨드는 리텐션이 발생한 호스트 메모리 버퍼(HMB)의 어드레스 및 리텐션 레벨을 포함한다. 예를 들어, 도 7과 같이, 리텐션 레벨이 '2'라고 가정하자. 이 경우, 스토리지 컨트롤러(1240)는 리텐션 레벨이 '2'임을 확인하고, 제1 모드(Mode1)를 호스트 메모리 버퍼(HMB)의 운용 모드로 선택한다. 따라서, 스토리지 컨트롤러(1240)는 리텐션 발생과 무관하게 호스트 메모리 버퍼(HMB)를 계속해서 내부 버퍼로 사용한다.
S1130 단계에서, 호스트(1100)는 I/O 커맨드를 스토리지 컨트롤러(1240)에 전송한다.
S1140 단계에서, 스토리지 컨트롤러(1240)는 호스트(1100)로부터 수신된 I/O 커맨드를 처리한다. 이때, 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼(HMB)에 자유롭게 접근할 수 있다.
S1150 단계에서, 호스트(1100)는 스토리지 컨트롤러(1240)에 리텐션 회복(Retention Recovery) 커맨드를 전송한다.
이상에서 설명된 바와 같이, 제1 모드(Mode1)에서, 본 발명의 실시 예에 따른 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼(HMB)를 반납하지 않고 계속해서 내부 버퍼로 사용한다. 따라서, 도 8의 일반적인 메모리 시스템과 달리, 본 발명의 실시 예에 따른 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼에 저장된 데이터를 회수하는 동작(즉, 도 8의 S20단계)을 수행할 필요가 없다. 결과적으로, 호스트 메모리 버퍼(HMB)로부터 데이터를 회수함으로써 발생하는 시간 지연이 방지될 수 있다.
아울러, 호스트 메모리 버퍼(HMB)를 계속해서 내부 버퍼로 사용하기 때문에, 본 발명의 실시 예에 따른 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼(HMB)를 재건하는 동작(즉, 도 8의 S60 단계)을 수행할 필요가 없다. 따라서, 호스트 메모리 버퍼(HMB) 재건으로 인하여 발생하는 시간 지연 역시 방지될 수 있다.
도 9b는 본 발명의 일 실시 예에 따른 호스트(1100)와 스토리지 컨트롤러(1240) 사이의 커맨드 전송 동작의 일 예를 보여주는 도면이다. 도 9b에서는 도 7에서 설명된 제2 모드(Mode2)에서의 커맨드 전송 동작의 일 예가 설명될 것이다.
S1210 단계에서, 호스트(1100)는 EHM 커맨드와 MR 커맨드의 비트를 각각 '1'과 '0'으로 설정한다. 이에 따라, 호스트 메모리 버퍼(HMB)가 활성화된 상태에서 이하의 동작이 수행될 수 있다.
S1220 단계에서, 호스트(1100)는 리텐션 커맨드를 스토리지 컨트롤러(1240)에 전송한다. 예를 들어, 도 7과 같이, 리텐션 레벨이 '1'이라고 가정하자. 이 경우, 스토리지 컨트롤러(1240)는 리텐션 레벨이 '1'임을 확인하고, 이에 대응하는 제2 모드(Mode2)를 호스트 메모리 버퍼(HMB)의 운용 모드로 선택할 수 있다.
S1230 단계에서, 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼(HMB)로부터 자주 사용하는 데이터를 회수하고, 이를 스토리지 장치(1200)에 저장한다.
S1240 단계에서, 스토리지 컨트롤러(1240)는 회수된 데이터를 이용하여 백그라운드 동작을 수행한다. 이때, 만약 백그라운드 동작에 필요하다면, 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼(HMB)에 다시 접근하여 필요한 데이터를 더 회수할 수도 있다. 다만, S1230 단계에서 자주 사용하는 데이터가 이미 회수되었기 때문에, 스토리지 컨트롤러(1240)의 호스트 메모리 버퍼(HMB)에 대한 접근은 최소화될 수 있다.
S1250 단계에서, 호스트(1100)는 스토리지 컨트롤러(1240)에 리텐션 회복(Retention Recovery) 커맨드를 전송한다.
S1260 단계에서, 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼(HMB)의 컨텐츠를 업데이트 한다.
이상에서 설명된 바와 같이, 제2 모드(Mode2)에서, 본 발명의 실시 예에 따른 스토리지 컨트롤러(1240)는 리텐션이 발생한 호스트 메모리 버퍼(HMB)로의 접근이 최소화될 수 있도록 동작할 수 있다. 특히, 도 8의 일반적인 스토리지 컨트롤러가 호스트 메모리 버퍼에 저장된 데이터를 모두 회수함에 반하여, 본 발명의 실시 예에 따른 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼(HMB)로부터 자주 사용하는 데이터만을 회수할 수 있다. 따라서, 데이터 회수로 인한 시간 지연이 감소될 수 있다.
아울러, 본 발명의 실시 예에 따른 호스트(1100)는 MR 커맨드의 비트를 계속해서 '0'으로 설정한다. 따라서, 호스트 메모리 버퍼(HMB)는 반납되지 않으며, 호스트 메모리 버퍼(HMB)에 저장된 데이터는 계속해서 유지된다. 따라서, 도 8의 일반적인 스토리지 컨트롤러가 새로 할당된 호스트 메모리 버퍼에 데이터를 모두 다시 저장해야 하는 것에 비하여, 본 발명의 실시 예에 따른 스토리지 커트롤러(1240)는 변경된 데이터만을 업데이트할 수 있다. 결과적으로, 호스트 메모리 버퍼(HMB)의 재개(resume) 동작에 소요되는 시간이 감소될 수 있다.
도 9c는 본 발명의 일 실시 예에 따른 호스트(1100)와 스토리지 컨트롤러(1240) 사이의 커맨드 전송 동작의 일 예를 보여주는 도면이다. 도 9c에서는 도 7에서 설명된 제2 모드(Mode2)에서의 커맨드 전송 동작의 다른 예가 설명될 것이다. 도 9c에서 설명되는 동작은 도 9b의 동작과 유사하다. 따라서, 중복되는 설명은 이하 생략될 것이다.
S1310 단계에서, 호스트(1100)는 EHM 커맨드와 MR 커맨드의 비트를 각각 '1'과 '0'으로 설정한다.
S1320 단계에서, 호스트(1100)는 리텐션 커맨드를 스토리지 컨트롤러(1240)에 전송한다. 예를 들어, 리텐션 레벨은 '1'이라고 가정하자. 이 경우, 스토리지 컨트롤러(1240)는 제2 모드(Mode2)를 선택한다.
S1330 단계에서, 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼(HMB)로부터 자주 사용하는 데이터를 회수하고, 이를 스토리지 장치(1200)에 저장한다.
S1340 단계에서, 호스트(1100)는 I/O 커맨드를 스토리지 컨트롤러(1240)로 전송한다.
S1350 단계에서, 스토리지 컨트롤러(1240)는 회수된 데이터를 이용하여 I/O 커맨드를 처리한다. 이때, 만약 I/O 커맨드 처리에 필요하다면, 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼(HMB)에 다시 접근하여 필요한 데이터를 더 회수할 수도 있다. 다만, S1330 단계에서 자주 사용하는 데이터를 이미 회수하였기 때문에, 스토리지 컨트롤러(1240)의 호스트 메모리 버퍼(HMB)에 대한 접근은 최소화될 수 있다.
S1360 단계에서, 호스트(1100)는 스토리지 컨트롤러(1240)에 리텐션 회복 커맨드를 전송한다.
S1370 단계에서, 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼(HMB)를 업데이트 한다.
이상에서 설명된 바와 같이, 제2 모드(Mode2)에서, 본 발명의 실시 예에 따른 스토리지 컨트롤러(1240)는 리텐션이 발생한 호스트 메모리 버퍼(HMB)에 대한 접근을 최소화한 상태에서 I/O 커맨드를 처리할 수 있다.
도 9d는 본 발명의 일 실시 예에 따른 호스트(1100)와 스토리지 컨트롤러(1240) 사이의 커맨드 전송 동작의 일 예를 보여주는 도면이다. 도 9d에서는 도 7에서 설명된 제3 모드(Mode3)에서의 커맨드 전송 동작의 일 예가 설명될 것이다.
S1410 단계에서, 호스트(1100)는 EHM 커맨드와 MR 커맨드의 비트를 각각 '1'과 '0'으로 설정한다.
S1420 단계에서, 호스트(1100)는 리텐션 커맨드를 스토리지 컨트롤러(1240)에 전송한다. 예를 들어, 도 7과 같이, 리텐션 레벨은 'X'이라고 가정하자. 이 경우, 스토리지 컨트롤러(1240)는 제3 모드(Mode3)를 선택한다.
S1430 단계에서, 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼(HMB)로부터 백그라운드 동작에 필요한 데이터를 회수하고, 이를 스토리지 장치(1200)에 저장한다.
S1440 단계에서, 스토리지 컨트롤러(1240)는 호스트(1100)에 필요한 데이터의 회수가 완료되었음을 알려주는 확인 신호(ACK)를 전송한다. 이후, 스토리지 장치(1200)가 호스트 메모리 버퍼(1120)로 접근하는 것이 차단된다.
S1450 단계에서, 스토리지 컨트롤러(1240)는 백그라운드 동작을 수행한다. 이때, 스토리지 컨트롤러(1240)가 호스트 메모리 버퍼(1120)로 접근하는 것은 허용되지 않으며, 스토리지 컨트롤러(1240)는 회수된 데이터나 기존에 저장된 데이터만을 이용하여 백그라운드 동작을 수행한다.
S1460 단계에서, 호스트(1100)는 스토리지 컨트롤러(1240)에 리텐션 회복(Retention Recovery) 커맨드를 전송한다.
S1470 단계에서, 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼(HMB)의 컨텐츠를 업데이트 한다.
이상에서 설명된 바와 같이, 제3 모드(Mode3)에서, 본 발명의 실시 예에 따른 호스트(1100)가 설정하는 리텐션 커맨드는 스토리지 컨트롤러(1240)가 호스트 메모리 버퍼(HMB)에 접근하는 것을 차단하는 옵션(option)으로 기능한다.
일반적으로, 호스트가 파워 절약 모드에 진입하는 경우, 스토리지 컨트롤러의 호스트 메모리 버퍼에 대한 접근은 호스트의 웨이크-업(wake-up)을 야기할 수 있다. 이는 파워 절약 모드의 효과를 반감시키는 요인이 된다. 그러나, 본 발명이 실시 예에 따른 리텐션 커맨드는 스토리지 컨트롤러(1240)의 호스트 메모리 버퍼(HMB)에 대한 접근을 차단하는 옵션으로 기능한다. 따라서, 호스트(1100)가 파워 절약 모드에 진입하는 경우, 호스트(1100)는 리텐션 커맨드의 리텐션 레벨을 'X'로 설정함으로써, 원치 않는 웨이크-업의 발생을 미연에 방지할 수 있다.
아울러, 본 발명의 실시 예에 따른 호스트(1100)는 호스트 메모리 버퍼(HMB)를 반납하지 않기 때문에, 호스트 메모리 버퍼(HMB)의 재개에 소요되는 시간이 감소될 수 있다.
도 9e는 본 발명의 일 실시 예에 따른 호스트(1100)와 스토리지 컨트롤러(1240) 사이의 커맨드 전송 동작의 일 예를 보여주는 도면이다. 도 9e에서는 도 7에서 설명된 제3 모드(Mode3)에서의 커맨드 전송 동작의 다른 예가 설명될 것이다. 도 9e에서 설명되는 동작은 도 9d의 동작과 유사하다. 따라서, 중복되는 설명은 이하 생략될 것이다.
S1510 단계에서, 호스트(1100)는 EHM 커맨드와 MR 커맨드의 비트를 각각 '1'과 '0'으로 설정한다.
S1520 단계에서, 호스트(1100)는 리텐션 커맨드를 스토리지 컨트롤러(1240)에 전송한다. 예를 들어, 리텐션 레벨이 'X'이라고 가정하자. 이 경우, 스토리지 컨트롤러(1240)는 제3 모드(Mode3)를 선택한다.
S1530 단계에서, 스토리지 컨트롤러(1240)의 호스트 메모리 버퍼(HMB)로에 대한 접근이 차단된다. 이에 따라, 스토리지 컨트롤러(1240)는 아이들 상태(idle state)에 진입하거나, 기존에 스토리지 장치(1200)에 저장된 데이터를 이용하여 백그라운드 동작 등을 수행할 수 있다.
S1540 단계에서, 호스트(1100)는 스토리지 컨트롤러(1240)에 리텐션 회복(Retention Recovery) 커맨드를 전송한다.
S1550 단계에서, 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼(HMB)의 컨텐츠를 업데이트 한다.
이상에서 설명된 바와 같이, 제3 모드(Mode3)에서, 리텐션 커맨드는 스토리지 컨트롤러(1240)가 호스트 메모리 버퍼(HMB)에 접근하는 것을 즉시 차단할 수도 있다.
한편, 상술한 설명은 예시적인 것이며, 본 발명의 기술적 사상은 다양하게 변형 및 응용될 수 있다. 이하에서는, 본 발명의 응용 예들이 계속해서 설명될 것이다.
도 10은 본 발명의 실시 예에 따른 메모리 시스템(1000B)의 일 예를 보여주는 블록도이고, 도 11은 도 10의 스토리지 컨트롤러(1240_1)의 일 예를 보여주는 블록도이다. 도 10의 메모리 시스템(1000B)은 도 1의 메모리 시스템(1000A)과 유사하고, 도 11의 스토리지 컨트롤러(1240_1)는 도 3의 스토리지 컨트롤러(1240)와 유사하다. 따라서, 동일하거나 유사한 구성요소는 동일하거나 유사한 참조 번호를 사용하여 표기되며, 중복되는 설명은 이하 생략될 것이다.
도 10의 메모리 시스템(1000B)은 파워 관리(power management) 기능을 추가로 지원할 수 있다. 예를 들어, 메모리 시스템(1000B)은 동적 파워 관리(dynamic power management) 기능을 지원할 수 있으며, 호스트(1100_1)는 스토리지 장치(1200_1)가 가장 좋은 성능을 발휘할 수 있도록 파워 상태(power states)를 조정(modifying)할 수 있다. 이를 위해, 호스트(1100_1)는 파워 매니저(1140)를 포함하고, 동작 모드 컨트롤러(1243_1)는 파워 상태 설명자 테이블(1246)을 포함할 수 있다.
파워 매니저(1140)는 스토리지 장치(1200_1)로부터 성능 통계(performance statics)에 대한 정보를 수신한다. 예를 들어, 파워 매니저(1140)는 스토리지 컨트롤러(1240)가 지원하는 복수의 파워 상태들 각각에 대한 성능 통계에 대한 정보를 수신할 수 있다. 성능 통계에 대한 정보는 MP(Maximum power), ENLAT(Entry Latency), EXLAT(Exit Latency), RRT(Relative Read Throughput), RRL(Relative Read Latency), RWT(Relative Write Throughput), RWL(Relative Write Latency)에 대한 정보를 포함할 수 있다.
파워 매니저(1140)는 복수의 파워 상태들 각각에 대한 성능 통계에 기초하여 스토리지 장치(1200_1)의 성능을 극대화할 수 있는 파워 상태를 선택할 수 있다. 특히, 본 발명의 실시 예에 따른 파워 매니저(1140)는 호스트 메모리 버퍼(1120)의 운용 모드에 기초하여 파워 상태를 선택할 수 있다. 이 경우, 호스트 메모리 버퍼(1120)의 운용 모드는 성능 목표(Performance Objective)로서 파워 매니저(1140)에 제공될 수 있다. 또한, 다른 예로, 파워 매니저(1140)는 호스트 메모리 버퍼(1120)의 리텐션 레벨에 기초하여 파워 상태를 선택할 수도 있다. 이 경우에, 호스트(1100_1)에 의하여 설정된 리텐션 커맨드가 성능 목표로서 파워 매니저(1140)에 제공될 수 있다.
파워 상태 설명자 테이블(1246)은 스토리지 컨트롤러(1200_1)가 지원하는 복수의 파워 상태들 각각에 대한 성능 통계에 대한 정보를 관리한다. 예를 들어, 스토리지 컨트롤러(1200_1)는 최대 32개의 파워 상태를 지원할 수 있으며, 파워 상태 설명자 테이블(1246)은 32개 파워 상태 각각에 대한 MP 등의 성능 통계를 관리할 수 있다.
이상에서 살펴본 바와 같이, 본 발명의 실시 예에 따른 메모리 시스템(1000B)은 파워 관리 기능을 추가로 지원한다. 특히, 파워 매니저(1140)는 리텐션이 발생한 호스트 메모리 버퍼(1120)의 리텐션 레벨 및/또는 호스트 메모리 버퍼(1120)의 운용 모드에 기초하여 복수의 파워 상태들 중 최적의 파워 상태를 선택할 수 있다. 결과적으로, 본 발명의 실시 예에 따른 호스트(1100_1)는 스토리지 장치(1200_1)를 더욱 정확하게 제어할 수 있으며, 이에 따라 전체적인 메모리 시스템(1000B)의 성능이 향상될 수 있다.
도 12a 내지 도 12e는 도 10의 호스트(1100_1)와 스토리지 컨트롤러(1240_1) 사이의 커맨드 전송 동작의 일 예를 보여주는 도면이다. 호스트(1100_1)로부터 스토리지 컨트롤러(1240_1)로 파워 상태 커맨드가 추가로 전송된다는 점을 제외하고는, 도 12a 내지 도 12e의 동작은 도 9a 내지 도 9e의 동작과 유사하다. 따라서, 중복되는 설명은 이하 생략될 것이다.
도 12a는 제1 모드(Mode1)에서의 호스트(1100_1)와 스토리지 컨트롤러(1240_1) 사이의 커맨드 전송 동작의 일 예를 보여주는 도면이다.
S2110 단계에서, 호스트(1100_1)는 EHM 커맨드와 MR 커맨드의 비트를 각각 '1'과 '0'으로 설정한다.
S2120 단계에서, 호스트(1100_1)는 리텐션 커맨드를 스토리지 컨트롤러(1240_1)에 전송한다. 예를 들어, 리텐션이 발생한 호스트 메모리 버퍼(HMB)의 리텐션 레벨이 '2'라고 가정하자. 이 경우, 스토리지 컨트롤러(1240_1)는 호스트 메모리 버퍼(HMB)의 운용 모드로 제1 모드(Mode1)를 선택한다. 따라서, 스토리지 컨트롤러(1240_1)는 호스트 메모리 버퍼(HMB)에 자유롭게 접근할 수 있다.
S2130 단계에서, 호스트(1100_1)는 호스트 메모리 버퍼(HMB)의 리텐션 레벨(즉, '2') 및/또는 운용 모드(즉, 제1 모드)에 기초하여 액티브 파워 상태(Active Power State)를 선택하고, 이를 스토리지 컨트롤러(1240_1)에 전송한다. 여기서, 액티브 파워 상태는 스토리지 컨트롤러(1240_1)가 I/O 커맨드의 처리를 포함하여 다양한 동작을 수행하는 것을 지원하는 파워 상태를 가리킨다.
S2140 단계에서, 호스트(1100_1)는 I/O 커맨드를 스토리지 컨트롤러(1240_1)에 전송한다.
S2150 단계에서, 스토리지 컨트롤러(1240_1)는 호스트(1100_1)로부터 수신된 I/O 커맨드를 처리한다. 이때, 스토리지 컨트롤러(1240_1)는 호스트 메모리 버퍼(HMB)에 자유롭게 접근하여 I/O 커맨드에 필요한 데이터를 획득할 수 있다.
S2160 단계에서, 호스트(1100_1)는 스토리지 컨트롤러(1240_1)에 리텐션 회복(Retention Recovery) 커맨드를 전송한다.
이상에서 설명된 바와 같이, 본 발명의 실시 예에 따른 메모리 시스템(1000B)은 리텐션 레벨을 고려하여 호스트 메모리 버퍼(HMB)의 운용 모드를 선택함을 물론, 리텐션 레벨을 고려하여 스토리지 컨트롤러(1240_1)의 파워 상태를 결정할 수 있다. 따라서, 스토리지 장치(1240_1)에 대한 정확한 제어가 가능하며, 결과적으로 메모리 시스템(1000B)의 전체적인 성능이 향상될 수 있다.
도 12b는 제2 모드(Mode2)에서의 호스트(1100_1)와 스토리지 컨트롤러(1240_1) 사이의 커맨드 전송 동작의 일 예를 보여주는 도면이다.
S2210 단계에서, 호스트(1100_1)는 EHM 커맨드와 MR 커맨드의 비트를 각각 '1'과 '0'으로 설정한다.
S2220 단계에서, 호스트(1100_1)는 리텐션 커맨드를 스토리지 컨트롤러(1240_1)에 전송한다. 예를 들어, 리텐션 레벨이 '1'이라고 가정하자. 이 경우, 스토리지 컨트롤러(1240_1)는 호스트 메모리 버퍼(HMB)의 운용 모드로 제2 모드(Mode2)를 선택한다.
S2230 단계에서, 호스트(1100_1)는 호스트 메모리 버퍼(HMB)의 리텐션 레벨(즉, '1') 및/또는 운용 모드(즉, 제2 모드)에 기초하여, 호스트(1100_1)는 파워 상태로 비-동작 파워 상태(Non-Operational Power State: NOPS)를 선택한다.
S2240 단계에서, 스토리지 컨트롤러(1240_1)는 호스트 메모리 버퍼(HMB)로부터 자주 사용하는 데이터를 회수하고, 이를 스토리지 장치(1200_1)에 저장한다.
S2250 단계에서, 스토리지 컨트롤러(1240_1)는 회수된 데이터를 이용하여 비-동작 파워 상태에서 허용되는 동작들을 수행한다. 예를 들어, 비-동작 파워 상태에서, 스토리지 컨트롤러(1200_1)는 PMR(Persistent Memory Region) 접근 동작, CMB(Controller Memory Buffer) 접근 동작, 백그라운드 동작 등을 수행할 수 있으나, I/O 커맨드 처리 동작을 수행할 수는 없다.
이때, 만약 필요하다면, 스토리지 컨트롤러(1240_1)는 호스트 메모리 버퍼(HMB)에 다시 접근하여 필요한 데이터를 더 회수할 수도 있다. 다만, S2240 단계에서 자주 사용하는 데이터가 이미 회수되었기 때문에, 스토리지 컨트롤러(1240_1)의 호스트 메모리 버퍼(HMB)에 대한 접근은 최소화될 수 있다.
S2260 단계에서, 호스트(1100_1)는 스토리지 컨트롤러(1240_1)에 리텐션 회복(Retention Recovery) 커맨드를 전송한다.
S2270 단계에서, 스토리지 컨트롤러(1240_1)는 호스트 메모리 버퍼(HMB)의 컨텐츠를 업데이트 한다.
이상에서 설명된 바와 같이, 제2 모드(Mode2)에서, 본 발명의 실시 예에 따른 스토리지 컨트롤러(1240)는 리텐션이 발생한 호스트 메모리 버퍼(HMB)로의 접근이 최소화될 수 있도록 동작할 수 있다. 아울러, 본 발명의 실시 예에 따른 호스트(1100_1)는 스토리지 컨트롤러(1200_1)를 비-동작 파워 상태로 동작하게 할 수 있다.
도 12c는 제2 모드(Mode2)에서의 호스트(1100)와 스토리지 컨트롤러(1240) 사이의 커맨드 전송 동작의 다른 예를 보여주는 도면이다.
S2310 단계에서, 호스트(1100_1)는 EHM 커맨드와 MR 커맨드의 비트를 각각 '1'과 '0'으로 설정한다.
S2320 단계에서, 호스트(1100_1)는 리텐션 커맨드를 스토리지 컨트롤러(1240)에 전송한다. 예를 들어, 리텐션 레벨이 '1'이라고 가정하자. 이 경우, 스토리지 컨트롤러(1240_1)는 제2 모드(Mode2)를 호스트 메모리 버퍼(HMB)의 운용 모드로 선택한다.
S2330 단계에서, 호스트(1100_1)는 스토리지 컨트롤러(1200_1)에 적합한 파워 상태로 액티브 파워 상태를 선택한다.
S2340 단계에서, 스토리지 컨트롤러(1240_1)는 호스트 메모리 버퍼(HMB)로부터 자주 사용하는 데이터를 회수하고, 이를 스토리지 장치(1200_1)에 저장한다.
S2350 단계에서, 호스트(1100_1)는 I/O 커맨드를 스토리지 컨트롤러(1240_1)로 전송한다.
S2360 단계에서, 스토리지 컨트롤러(1240_1)는 회수된 데이터를 이용하여 I/O 커맨드를 처리한다. 이때, 만약 I/O 커맨드 처리에 필요하다면, 스토리지 컨트롤러(1240_1)는 호스트 메모리 버퍼(HMB)에 다시 접근하여 필요한 데이터를 더 회수할 수도 있다. 다만, S2340 단계에서 자주 사용하는 데이터를 이미 회수하였기 때문에, 스토리지 컨트롤러(1240_1)의 호스트 메모리 버퍼(HMB)에 대한 접근은 최소화될 수 있다.
S2370 단계에서, 호스트(1100_1)는 스토리지 컨트롤러(1240_1)에 리텐션 회복(Retention Recovery) 커맨드를 전송한다.
S2380 단계에서, 스토리지 컨트롤러(1240_1)는 호스트 메모리 버퍼(HMB)의 컨텐츠를 업데이트 한다.
이상에서 설명된 바와 같이, 제2 모드(Mode2)에서, 스토리지 컨트롤러(1240)는 리텐션이 발생한 호스트 메모리 버퍼(HMB)에 대한 접근을 최소화한 상태에서 I/O 커맨드를 처리할 수 있으며, 이때 호스트(1100_1)는 스토리지 컨트롤러(1200_1)에 적합한 파워 상태로 액티브 파워 상태를 선택할 수 있다.
도 12d는 제3 모드(Mode3)에서의 호스트(1100)와 스토리지 컨트롤러(1240) 사이의 커맨드 전송 동작의 일 예를 보여주는 도면이다.
S2410 단계에서, 호스트(1100_1)는 EHM 커맨드와 MR 커맨드의 비트를 각각 '1'과 '0'으로 설정한다.
S2420 단계에서, 호스트(1100_1)는 리텐션 커맨드를 스토리지 컨트롤러(1240_1)에 전송한다. 예를 들어, 리텐션 레벨이 'X'라고 가정하자. 이 경우, 스토리지 컨트롤러(1240)는 제3 모드(Mode3)를 선택한다.
S2430 단계에서, 호스트(1100_1)는 호스트 메모리 버퍼(HMB)의 리텐션 레벨(즉, 'X') 및/ 또는 운용 모드(즉, 제3 모드)에 기초하여, 스토리지 컨트롤러(1240_1)의 파워 상태로 비-동작 파워 상태(NOPS)를 선택한다.
S2440 단계에서, 스토리지 컨트롤러(1240_1)는 호스트 메모리 버퍼(HMB)로부터 비-동작 파워 상태에서 필요한 데이터를 회수하고, 이를 스토리지 장치(1200_1)에 저장한다.
S2450 단계에서, 스토리지 컨트롤러(1240_1)는 호스트(1100_1)에 필요한 데이터의 회수가 완료되었음을 알려주는 확인 신호(ACK)를 전송한다. 이후, 스토리지 장치(1200_1)가 호스트 메모리 버퍼(HMB)로 접근하는 것이 차단된다.
S2460 단계에서, 스토리지 컨트롤러(1240_1)는 회수된 데이터를 이용하여 비-동작 파워 상태에서 허용되는 동작을 수행한다.
S2470 단계에서, 호스트(1100_1)는 스토리지 컨트롤러(1240_1)에 리텐션 회복(Retention Recovery) 커맨드를 전송한다.
S2480 단계에서, 스토리지 컨트롤러(1240_1)는 호스트 메모리 버퍼(HMB)의 컨텐츠를 업데이트 한다.
이상에서 설명된 바와 같이, 제3 모드(Mode3)에서, 리텐션 커맨드는 스토리지 컨트롤러(1240_1)가 호스트 메모리 버퍼(HMB)에 접근하는 것을 차단하는 옵션(option)으로 기능할 수 있다. 아울러, 호스트(1100_1)는 스토리지 컨트롤러(1200_1)에 적합한 파워 상태로 비-동작 파워 상태를 선택할 수 있다.
도 12e는 제3 모드(Mode3)에서의 호스트(1100)와 스토리지 컨트롤러(1240) 사이의 커맨드 전송 동작의 일 예를 보여주는 도면이다.
S2510 단계에서, 호스트(1100_1)는 EHM 커맨드와 MR 커맨드의 비트를 각각 '1'과 '0'으로 설정한다.
S2520 단계에서, 호스트(1100_1)는 리텐션 커맨드를 스토리지 컨트롤러(1240_1)에 전송한다. 예를 들어, 리텐션 레벨이 'X'라고 가정하자. 이 경우, 스토리지 컨트롤러(1240)는 제3 모드(Mode3)를 호스트 메모리 버퍼(HMB)의 운용 모드로 선택한다.
S2430 단계에서, 호스트(1100_1)는 호스트 메모리 버퍼(HMB)의 리텐션 레벨(즉, 'X') 및/또는 운용 모드(즉, 제3 모드)에 기초하여, 스토리지 컨트롤러(1240_1)의 파워 상태로 비-동작 파워 상태(NOPS)를 선택한다.
S2540 단계에서, 스토리지 컨트롤러(1240_1)가 호스트 메모리 버퍼(1120_1)로 접근하는 것은 허용되지 않는다. 이 경우, 스토리지 컨트롤러(1240_1)는 기존에 스토리지 장치(1200)에 저장된 데이터를 이용하여 비-동작 상태에서 허용되는 동작들을 수행할 수 있다.
S2550 단계에서, 호스트(1100_1)는 스토리지 컨트롤러(1240_1)에 리텐션 회복(Retention Recovery) 커맨드를 전송한다.
S2560 단계에서, 스토리지 컨트롤러(1240_1)는 호스트 메모리 버퍼(HMB)에 저장된 컨텐츠를 업데이트 한다.
이상에서 설명된 바와 같이, 제3 모드(Mode3)에서, 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼(HMB)에 접근하는 것이 즉시 차단되며, 비-동작 파워 상태로 동작할 수 있다.
한편, 앞선 설명에서, EHM 커맨드와 리텐션 커맨드는 서로 독립적인 셋 특성 커맨드로 설명되었다. 다만, 이는 예시적인 것이며, 리텐션 커맨드는 EHM 커맨드를 대체할 수도 있다. 예를 들어, EHM 커맨드의 비트 '1'은 리텐션 커맨드의 리텐션 레벨 'X'로 대체될 수 있다. 또한, EHM 커맨드의 비트 '1'은 리텐션 레벨 'X'를 제외한 다른 리텐션 레벨들(즉, 리텐션 레벨 '1', '2' 등)로 대체될 수 있다. 결과적으로, 앞선 실시 예들에 있어서, EHM 커맨드는 리텐션 커맨드에 의하여 대체될 수 있다.
한편, 상술한 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술한 실시 예들 이외에도, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들도 포함될 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술한 실시 예들에 국한되어 정해져서는 안되며, 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
EHM: Enable Host Memory
MR: Memory Return
HMB: Host Memory Buffer
NOPS: Non-Operational Power State
CMD: command
ADDR: address

Claims (20)

  1. 호스트 및 스토리지 장치를 포함하는 메모리 시스템의 동작 방법에 있어서:
    상기 호스트에 포함된 호스트 메모리의 일부를 상기 스토리지 장치의 컨트롤러가 사용하기 위한 호스트 메모리 버퍼로 할당하는 단계;
    상기 호스트 메모리 버퍼를 활성화하도록 셋 특성 커맨드를 설정하는 단계;
    상기 호스트 메모리 버퍼의 응답 속도에 대한 정보를 포함하는 리텐션 커맨드를 설정하는 단계;
    상기 리텐션 커맨드에 기초해서, 상기 호스트 메모리 버퍼의 운영 모드를 선택하는 단계; 및
    상기 호스트 메모리 버퍼의 운용 모드의 성능 목표(performance objective)에 기초해서, 상기 컨트롤러가 지원하는 복수의 파워 상태 중 하나의 파워 상태를 선택하는 단계를 포함하는 메모리 시스템의 동작 방법.
  2. 제1 항에 있어서,
    상기 호스트는 비-동작 파워 상태를 상기 컨트롤러의 파워 상태로 선택하는 메모리 시스템의 동작 방법.
  3. 제2 항에 있어서,
    상기 컨트롤러는 상기 비-동작 파워 상태에서 허용된 동작을 수행하기 위해 상기 호스트 메모리 버퍼에 저장된 데이터의 적어도 일부를 회수하는 단계를 더 포함하는 메모리 시스템의 동작 방법.
  4. 제3 항에 있어서,
    상기 컨트롤러는 상기 호스트 메모리 버퍼에 저장된 데이터의 적어도 일부를 회수하는 단계가 완료되었음을 통지하는 확인 신호를 상기 호스트에 전송하는 단계를 더 포함하며,
    상기 확인 신호가 전송된 이후, 상기 컨트롤러의 상기 호스트 메모리 버퍼로의 접근은 허용되지 않는 메모리 시스템의 동작 방법.
  5. 제2 항에 있어서,
    상기 비-동작 파워 상태가 선택된 이후, 상기 컨트롤러의 상기 호스트 메모리 버퍼로의 접근은 허용되지 않는 메모리 시스템의 동작 방법.
  6. 제5 항에 있어서,
    상기 리텐션 커맨드는 상기 컨트롤러의 상기 호스트 메모리 버퍼로의 접근을 차단하기 위한 옵션으로 기능하는 메모리 시스템의 동작 방법.
  7. 제1 항에 있어서,
    상기 호스트 메모리 버퍼의 예상 응답 시간이 기준 응답 시간 보다 작은 경우에, 상기 컨트롤러의 상기 호스트 메모리 버퍼로의 접근이 허용되는 메모리 시스템의 동작 방법.
  8. 제7 항에 있어서,
    상기 컨트롤러의 상기 호스트 메모리 버퍼로의 접근이 허용되는 경우에, 상기 호스트는 액티브 파워 상태를 상기 컨트롤러의 파워 상태로 선택하는 메모리 시스템의 동작 방법.
  9. 제1 항에 있어서,
    상기 호스트 메모리 버퍼는 적어도 두 개의 영역을 포함하며, 상기 리텐션 커맨드는 상기 적어도 두 개의 영역 각각에 대한 응답 속도의 정보를 포함하는 메모리 시스템의 동작 방법.
  10. 제1 항에 있어서,
    상기 컨트롤러가 상기 호스트로부터 리텐션 회복 커맨드를 수신하는 단계; 및
    상기 스토리지 장치에 저장된 데이터를 상기 호스트 메모리 버퍼에 업데이트하는 단계를 더 포함하는 메모리 시스템의 동작 방법.
  11. 호스트 및 스토리지 장치를 포함하는 메모리 시스템의 동작 방법에 있어서:
    상기 호스트에 포함된 호스트 메모리의 일부를 상기 스토리지 장치의 컨트롤러가 사용하기 위한 호스트 메모리 버퍼로 할당하는 단계;
    상기 호스트 메모리 버퍼를 활성화하도록 셋 특성 커맨드를 설정하는 단계;
    상기 호스트 메모리 버퍼의 응답 속도에 대한 정보를 포함하는 리텐션 커맨드를 설정하는 단계; 및
    상기 리텐션 커맨드에 기초해서, 상기 호스트 메모리 버퍼의 운영 모드를 선택하는 단계를 포함하는 메모리 시스템의 동작 방법.
  12. 제11 항에 있어서,
    상기 호스트 메모리 버퍼에 저장된 데이터의 적어도 일부를 회수하여 상기 스토리지 장치에 저장하는 단계를 더 포함하는 메모리 시스템의 동작방법.
  13. 제12 항에 있어서,
    상기 컨트롤러는 상기 호스트 메모리 버퍼에 저장된 데이터의 적어도 일부를 회수하는 단계가 완료되었음을 통지하는 확인 신호를 상기 호스트에 전송하는 단계를 더 포함하며,
    상기 확인 신호가 전송된 이후, 상기 컨트롤러의 상기 호스트 메모리 버퍼로의 접근은 허용되지 않는 메모리 시스템의 동작 방법.
  14. 제11 항에 있어서,
    상기 리텐션 커맨드는 상기 컨트롤러의 상기 호스트 메모리 버퍼로의 접근을 허용하지 않는 옵션으로 기능하는 메모리 시스템의 동작 방법.
  15. 제11 항에 있어서,
    상기 리텐션 커맨드는 상기 호스트 메모리 버퍼의 어드레스 및 리텐션 레벨을 포함하며, 상기 리텐션 레벨은 상기 호스트 메모리 버퍼의 예상 응답 시간과 적어도 하나의 기준 응답 시간을 비교하여 생성되는 메모리 시스템의 동작 방법.
  16. 제15 항에 있어서,
    상기 컨트롤러는 상기 리텐션 커맨드에 포함된 상기 리텐션 레벨에 따라 상기 호스트 메모리 버퍼의 운영 모드를 선택하는 메모리 시스템의 동작 방법.
  17. 제15 항에 있어서,
    상기 호스트 메모리 버퍼는 적어도 두 개의 영역을 포함하며, 상기 리텐션 커맨드는 상기 적어도 두 개의 영역 각각에 대한 리텐션 레벨을 포함하는 메모리 시스템의 동작 방법.
  18. 제11 항에 있어서,
    상기 컨트롤러가 상기 호스트로부터 리텐션 회복 커맨드를 수신하는 단계; 및
    상기 스토리지 장치에 저장된 데이터를 상기 호스트 메모리 버퍼에 업데이트하는 단계를 더 포함하는 메모리 시스템의 동작 방법.
  19. 호스트의 호스트 메모리를 공유하는 스토리지 장치에 있어서:
    상기 호스트 메모리의 일부 영역을 상기 스토리지 장치의 호스트 메모리 버퍼로 사용하기 위한 인터페이스; 및
    상기 호스트 메모리 버퍼의 응답 속도가 느려지는 리텐션이 발생한 경우에, 상기 호스트 메모리 버퍼의 응답 속도에 기초하여 상기 호스트 메모리 버퍼에 대한 운용 모드로 제1 내지 제3 모드 중 하나의 모드를 선택하는 스토리지 장치를 포함하며,
    상기 제1 모드가 선택된 경우, 상기 스토리지 장치의 상기 호스트 메모리 버퍼에 대한 접근이 허용되고,
    상기 제2 모드가 선택된 경우, 상기 스토리지 장치의 상기 호스트 메모리 버퍼에 대한 접근이 허용되며, 상기 스토리지는 상기 호스트 메모리 버퍼에 저장된 데이터 중 자주 사용되는 데이터를 회수하여 저장하고,
    상기 제3 모드가 선택된 경우, 상기 스토리지의 장치의 상기 호스트 메모리 버퍼에 대한 접근은 허용되지 않는, 스토리지 장치.
  20. 제19 항에 있어서,
    상기 제3 모드에서 상기 스토리지의 장치의 상기 호스트 메모리 버퍼에 대한 접근은 허용되지 않는 동안에, 상기 호스트 메모리 버퍼의 활성화에 대한 EHM 커맨드는 활성화 상태이고, 상기 호스트 메모리 버퍼의 반납에 대한 MR 커맨드는 비활성화 상태인 스토리지 장치.
KR1020220055613A 2021-11-10 2022-05-04 호스트 메모리 버퍼를 사용하는 메모리 시스템 및 그것의 동작 방법 KR102547825B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US17/979,554 US20230142174A1 (en) 2021-11-10 2022-11-02 Memory system using host memory buffer and operation method thereof
CN202211399628.4A CN116107497A (zh) 2021-11-10 2022-11-09 使用主机存储器缓冲区的存储器系统及其操作方法
EP22206748.0A EP4180938A1 (en) 2021-11-10 2022-11-10 Memory system using host memory buffer and operation method thereof

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20210154276 2021-11-10
KR1020210154276 2021-11-10

Publications (2)

Publication Number Publication Date
KR20230068263A KR20230068263A (ko) 2023-05-17
KR102547825B1 true KR102547825B1 (ko) 2023-06-27

Family

ID=86547599

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220055613A KR102547825B1 (ko) 2021-11-10 2022-05-04 호스트 메모리 버퍼를 사용하는 메모리 시스템 및 그것의 동작 방법

Country Status (1)

Country Link
KR (1) KR102547825B1 (ko)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102210961B1 (ko) * 2013-06-12 2021-02-03 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 동적 접근 방법
TWI710899B (zh) * 2015-10-14 2020-11-21 南韓商三星電子股份有限公司 計算系統以及其操作方法
KR102384759B1 (ko) * 2017-11-13 2022-04-11 삼성전자주식회사 호스트 메모리 버퍼를 사용하기 위해 호스트 장치와 속성 정보를 공유하는 스토리지 장치 및 그것을 포함하는 전자 장치
KR20200122115A (ko) * 2019-04-17 2020-10-27 에스케이하이닉스 주식회사 데이터 처리 시스템 및 이의 동작 방법
KR20210077923A (ko) * 2019-12-18 2021-06-28 에스케이하이닉스 주식회사 전력사용량을 관리하기 위해 인공지능을 사용하는 데이터 처리 시스템
KR20210110071A (ko) * 2020-02-28 2021-09-07 삼성전자주식회사 스토리지 장치 및 상기 스토리지 장치의 동작 방법

Also Published As

Publication number Publication date
KR20230068263A (ko) 2023-05-17

Similar Documents

Publication Publication Date Title
US10725677B2 (en) Systems and methods for efficient power state transitions
US8918580B2 (en) Storage device with buffer memory including non-volatile RAM and volatile RAM
US8151020B2 (en) Storage subsystem with configurable buffer
US9927999B1 (en) Trim management in solid state drives
JP6517685B2 (ja) メモリシステムおよび制御方法
KR102533072B1 (ko) 블록의 상태에 따라 사용 여부를 결정하는 메모리 시스템 및 메모리 시스템의 동작 방법
US20150262632A1 (en) Grouping storage ports based on distance
US20180173419A1 (en) Hybrid ssd with delta encoding
CN111007991B (zh) 基于nvdimm分离读写请求的方法及其计算机
WO2011128928A1 (en) Storage device
JP2013242908A (ja) ソリッドステートメモリ、それを含むコンピュータシステム及びその動作方法
KR20210096133A (ko) 구역화된 네임스페이스들에서의 기록 커맨드들의 유지
US8819350B2 (en) Memory system
US10459803B2 (en) Method for management tables recovery
US11422930B2 (en) Controller, memory system and data processing system
KR20200074464A (ko) 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
JP2019169101A (ja) 電子機器、コンピュータシステム、および制御方法
US10877853B2 (en) Data storage device and operation method optimized for recovery performance, and storage system having the same
US11474750B2 (en) Storage control apparatus and storage medium
CN114764396A (zh) 数据存储装置及其操作方法
KR20210008826A (ko) 논리 블록 어드레싱 범위 충돌 크롤러
KR102547825B1 (ko) 호스트 메모리 버퍼를 사용하는 메모리 시스템 및 그것의 동작 방법
CN118051179A (zh) 用于使用多个分区的分区命名空间存储的技术
TWI782847B (zh) 用來在儲存伺服器中進行基於管線的存取管理的方法及設備
EP4180938A1 (en) Memory system using host memory buffer and operation method thereof

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right