KR102599176B1 - 호스트 메모리 버퍼를 사용하는 스토리지 장치 및 그것의 메모리 관리 방법 - Google Patents

호스트 메모리 버퍼를 사용하는 스토리지 장치 및 그것의 메모리 관리 방법 Download PDF

Info

Publication number
KR102599176B1
KR102599176B1 KR1020180140166A KR20180140166A KR102599176B1 KR 102599176 B1 KR102599176 B1 KR 102599176B1 KR 1020180140166 A KR1020180140166 A KR 1020180140166A KR 20180140166 A KR20180140166 A KR 20180140166A KR 102599176 B1 KR102599176 B1 KR 102599176B1
Authority
KR
South Korea
Prior art keywords
host
buffer
error
area
storage device
Prior art date
Application number
KR1020180140166A
Other languages
English (en)
Other versions
KR20200056538A (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 KR1020180140166A priority Critical patent/KR102599176B1/ko
Priority to US16/539,729 priority patent/US11011243B2/en
Priority to CN201910948791.3A priority patent/CN111190841A/zh
Publication of KR20200056538A publication Critical patent/KR20200056538A/ko
Priority to US17/307,314 priority patent/US11501843B2/en
Priority to US17/952,370 priority patent/US11854630B2/en
Application granted granted Critical
Publication of KR102599176B1 publication Critical patent/KR102599176B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • 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/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/004Error avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/008Reliability or availability analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/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/0658Controller construction 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
    • G06F3/0673Single storage device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Abstract

본 발명의 실시 예에 따른 호스트의 호스트 메모리를 공유하는 스토리지 장치는, 상기 호스트 메모리의 일부 영역을 상기 스토리지 장치의 버퍼로 사용하기 위한 인터페이스, 그리고 상기 버퍼의 제 1 영역의 열화 정보를 모니터링하고, 상기 모니터링 결과에 기초하여 상기 제 1 영역에 대한 오류 예측 통지를 상기 호스트에 전송하는 스토리지 컨트롤러를 포함한다.

Description

호스트 메모리 버퍼를 사용하는 스토리지 장치 및 그것의 메모리 관리 방법{STORAGE DEVICE USING HOST MEMORY BUFFER AND MEMORY MANAGEMENT METHOD THEREOF}
본 발명은 반도체 메모리 장치에 관한 것으로, 좀 더 구체적으로는 호스트 메모리 버퍼를 사용하는 스토리지 장치 및 그것의 메모리 관리 방법에 관한 것이다.
플래시 메모리 기반의 대용량 스토리지 장치의 예로 솔리드 스테이트 드라이브(Solid State Drive: 이하, SSD)가 대표적이다. SSD의 폭발적인 수요 증가와 함께 그 용도는 다양하게 분화되고 있다. 예를 들면, 서버용 SSD, 클라이언트용 SSD, 데이터 센터용 SSD 등으로 용도가 세분화될 수 있다. SSD의 인터페이스는 이러한 각각의 용도에 따라 최적의 속도와 신뢰성을 제공할 수 있어야 한다. 이러한 요구를 충족하기 위해서 최적의 SSD 인터페이스로 SATA, PCIe, SAS 등이 적용되고 있다. 특히, 최근에는 PCIe 기반의 NVMe나, UFS 기반의 UME(Unified Memory Extension)가 활발히 연구되고 스토리지 장치들에 적용되고 있는 실정이다. 이들 인터페이스에서는 장치간 메모리 공유 기능을 제공하고 있다. 따라서, 이러한 메모리 자원의 공유 기법을 사용하는 스토리지의 데이터 관리 방법이 필요하다.
메모리 공유 기법을 사용하는 스토리지 장치에 있어서, 호스트와 공유하는 메모리의 신뢰성 관리가 문제가 된다. 호스트에 위치하지만, 호스트가 스토리지 장치에 할당한 메모리 영역에 대한 메모리 관리는 스토리지 장치에 의해서 이루어지기 때문이다. 더불어, 호스트와 공유하는 호스트의 메모리 영역(이하에서는, 호스트 메모리 버퍼라 칭함)에는 스토리지 장치를 관리하기 위한 데이터가 로드되고 업데이트된다. 따라서, 호스트 메모리 버퍼(HMB)에 저장되는 데이터의 신뢰성을 관리하기 위한 기술이나 기준이 절실한 실정이다.
본 발명의 목적은 호스트의 메모리 자원을 공유하는 스토리지 장치에서, 공유되는 메모리 영역의 신뢰성을 제공할 수 있는 스토리지 장치 및 그것의 동작 방법을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명의 호스트의 호스트 메모리를 공유하는 스토리지 장치는, 상기 호스트 메모리의 일부 영역을 상기 스토리지 장치의 버퍼로 사용하기 위한 인터페이스, 그리고 상기 버퍼의 제 1 영역의 열화 정보를 모니터링하고, 상기 모니터링 결과에 기초하여 상기 제 1 영역에 대한 오류 예측 통지를 상기 호스트에 전송하는 스토리지 컨트롤러를 포함한다.
상기 목적을 달성하기 위한 본 발명의 실시 예에 따른 호스트의 호스트 메모리를 버퍼로 할당받는 스토리지 장치의 메모리 관리 방법은, 상기 스토리지 장치가 상기 버퍼를 복수의 버퍼 영역들로 구분하고, 상기 구분된 복수의 버퍼 영역들 각각의 열화 정보를 검출하는 단계, 상기 스토리지 장치가 상기 검출된 열화 정보 중에서 미리 결정된 임계치를 초과하는 제 1 버퍼 영역이 존재하는지 판단하는 단계, 그리고 상기 판단 결과에 따라 상기 호스트에 상기 제 1 버퍼 영역에 대한 오류 예측 통지를 전송하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명의 실시 예에 따른 호스트의 호스트 메모리의 일부 영역을 버퍼로 할당받는 스토리지 장치는, 상기 호스트와 통신하기 위한 인터페이스, 불휘발성 메모리 장치, 그리고 상기 인터페이스를 통하여 상기 호스트로부터 할당받은 버퍼를 복수의 버퍼 영역들로 구분하여 열화 상태를 모니터링하고, 상기 모니터링 결과에 따라 상기 호스트에 오류 통지 또는 오류 예측 통지를 전송하는 스토리지 컨트롤러를 포함한다.
이상과 같은 본 발명의 실시 예에 따르면, 호스트와 호스트 메모리를 공유하는 스토리지 장치가 호스트 메모리 버퍼(HMB) 영역을 모니터링할 수 있다. 스토리지 장치는 호스트 메모리 버퍼(HMB) 영역의 모니터링 결과를 참조하여 오류나 열화를 검출 또는 예측하여 치명적인 결함의 발생을 미연에 방지할 수 있다.
도 1은 본 발명의 실시 예에 따른 스토리지 장치가 연결되는 컴퓨터 시스템을 간략히 보여주는 블록도이다.
도 2는 도 1에 도시된 호스트 메모리를 예시적으로 보여주는 블록도이다.
도 3은 도 1에 도시된 스토리지 컨트롤러의 구성을 예시적으로 보여주는 블록도이다.
도 4는 본 발명의 실시 예에 따른 호스트 메모리 버퍼의 영역별 헬스 상태 테이블을 예시적으로 보여준다.
도 5는 도 3에 도시된 HMB 컨트롤러 또는 오류 검출 모듈의 동작을 예시적으로 보여주는 순서도이다.
도 6은 도 5의 스토리지 컨트롤러와 호스트의 상호 동작을 예시적으로 보여주는 도면이다.
도 7은 본 발명의 HMB 컨트롤러의 오류 예측 모듈의 동작을 예시적으로 보여주는 순서도이다.
도 8은 본 발명의 호스트와 오류 예측 모듈의 상호 동작을 예시적으로 보여주는 도면이다.
도 9는 본 발명의 실시 예에 따른 오류 통지나 오류 예측 통지를 호스트로 전송하기 위한 별도의 채널을 갖는 스토리지 장치를 보여주는 블록도이다.
도 10은 본 발명의 다른 실시 예에 따른 통지 채널을 갖는 스토리지 장치를 보여주는 블록도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
이하에서는, 플래시 메모리 장치를 사용하는 솔리드 스테이트 드라이브(SSD)가 본 발명의 특징 및 기능을 설명하기 위한 스토리지 장치의 예로서 사용될 것이다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 본 발명은 다른 실시 예들을 통해 또한, 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다.
도 1은 본 발명의 실시 예에 따른 스토리지 장치가 연결되는 컴퓨터 시스템을 간략히 보여주는 블록도이다. 도 1을 참조하면, 본 발명의 실시 예에 따른 컴퓨터 시스템(1000)은 호스트(1100)와 스토리지 장치(1200)를 포함한다.
호스트(1100)는 불휘발성 메모리 장치(1260)에 데이터를 저장하거나 독출하기 위해 스토리지 장치(1200)에 접근할 것이다. 스토리지 장치(1200)는 호스트(1100)의 접근 요청에 따라 데이터를 불휘발성 메모리 장치(1260)에 저장하거나 읽어낸다. 스토리지 장치(1200)는 호스트(1100)의 호스트 메모리(1130)의 일부 영역을 호스트 메모리 버퍼(1120)로 할당받는다. 스토리지 장치(1200)는 호스트 메모리 버퍼(1120)에 대해 마스터(Master)로서 관리할 수 있다.
호스트(1100)는 스토리지 장치(1200)에 데이터를 기입하거나, 스토리지 장치(1200)에 저장된 데이터를 읽어낸다. 호스트(1100)는 스토리지 장치(1200)에 데이터를 기입하기 위해 명령어와 어드레스를 제공할 것이다. 호스트(1100)는 스토리지 장치(1200)에 저장된 데이터를 읽어내기 위한 명령어와 어드레스를 스토리지 장치(1200)에 전달할 수 있을 것이다.
호스트(1100)는 프로세서(1110), 호스트 메모리(1130), 인터페이스 회로(1150)를 포함할 수 있다. 호스트 메모리(1130)에는 응용 프로그램, 파일 시스템, 장치 드라이버 등이 로드될 수 있다. 이 밖에도 호스트 메모리(1130)에는 호스트(1100)에서 구동되는 다양한 소프트웨어나 데이터가 로드될 수 있다. 특히, 호스트(1100)는 호스트 메모리(1130)의 일부 영역을 스토리지 장치(1200)의 버퍼(Buffer) 역할을 담당하는 호스트 메모리 버퍼(1120)로 할당할 수 있다.
호스트 메모리 버퍼(1120)는 스토리지 장치(1200)가 호스트 메모리(1130)를 버퍼로써 사용 가능하도록 할당된다. 본 발명의 호스트 메모리 버퍼(1120)의 영역은 스토리지 장치(1200)에 의해서 모니터링된다. 스토리지 장치(1200)는 호스트 메모리 버퍼(1120)를 영역별로 구분하고, 각 영역들에 대해 열화 상태를 모니터링할 수 있다. 더불어, 스토리지 장치(1200)는 호스트 메모리 버퍼(1120)의 구분된 영역들에 저장된 데이터의 에러율을 모니터링하여 오류 여부를 판단할 수 있다.
이러한 모니터링 결과를 스토리지 장치(1200)로부터 통지받으면, 호스트(1100)는 호스트 메모리 버퍼(1120)의 전체 또는 일부 영역을 재할당(Reallocation)할 수 있다. 예를 들면, 제 2 호스트 메모리 버퍼(1123)의 열화가 특정 수준 이상으로 진행된 것으로 스토리지 장치(1200)로부터 통지를 받은 것으로 가정하자. 그러면, 호스트(1100)는 스토리지 장치(1200)의 통지에 응답하여 제 2 호스트 메모리 버퍼(1123)를 제 1 호스트 메모리 버퍼(1121)로 재할당할 수 있다.
인터페이스 회로(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)는 호스트(1100)의 데이터 스토리지로 제공될 수 있다. 스토리지 장치(1200)는 호스트 인터페이스(1220), 스토리지 컨트롤러(1240), 그리고 불휘발성 메모리 장치(1260)를 포함할 수 있다. 스토리지 장치(1200)는 호스트(1100)로부터 제공되는 명령어(CMD)에 응답하여 불휘발성 메모리 장치(1260)에 접근하거나, 호스트(1100)에 의해서 요청된 다양한 동작을 수행할 수 있다.
호스트 인터페이스(1220)는 호스트(1100)와의 데이터 교환을 위한 스토리지 장치(1200)의 물리적 통신 채널로서 제공된다. 호스트 인터페이스(1220)는 바람직하게는 스토리지 장치(1200)의 버퍼 기능을 호스트 메모리 버퍼(1120)가 지원할 수 있는 인터페이싱 프로토콜을 가질 수 있다. 즉, 호스트 인터페이스(1220)는 호스트(1100)의 메모리 자원과 스토리지 장치(2100)의 메모리 자원을 상호 공유하기 위한 인터페이싱 방식일 수 있다. 예를 들면, 호스트 인터페이스(1220)에 의해서 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼(1120)와 스토리지 장치(1200)의 내부 버퍼(미도시)를 하나의 메모리 맵으로 관리할 수 있을 것이다.
스토리지 컨트롤러(1240)는 호스트(1100)와 스토리지 장치(1200) 사이에서 인터페이싱을 제공한다. 스토리지 컨트롤러(1240)는 호스트(1100)로부터의 요청에 따라 불휘발성 메모리 장치(1260)에 유저 데이터를 기입할 수 있다. 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼(1120)를 전담하여 관리하는 호스트 메모리 버퍼 컨트롤러(1242)를 포함할 수 있다. 호스트 메모리 버퍼 컨트롤러(1242)는 호스트 메모리 버퍼(1120)의 영역별 열화 상태나 데이터의 에러율을 모니터링할 수 있다. 그리고 호스트 메모리 버퍼 컨트롤러(1242)는 특정 기준의 에러율이나 기준 레벨 이상의 열화가 존재하는지 모니터링할 수 있다. 호스트 메모리 버퍼 컨트롤러(1242)는 호스트 메모리 버퍼(1120)의 데이터 에러가 발생하면 에러가 발행하였음을 호스트(1100)에 통지한다. 또는, 호스트 메모리 버퍼 컨트롤러(1242)는 열화의 수준이 더 심화되어 심각한 오류가 발생하기 전에 미리 호스트(1100)에 이러한 정보를 통지할 수 있다.
불휘발성 메모리 장치(1260)는 스토리지 장치(1200)의 저장 매체로 제공된다. 불휘발성 메모리 장치(1260)는 플래시 메모리, PRAM, MRAM, ReRAM, FRAM, 자기 디스크 등과 같은 불휘발성 메모리를 포함할 수 있다.
이상의 본 발명의 실시 예에 따르면, 스토리지 장치(1200)는 호스트 메모리 버퍼(1120)를 모니터링하고 그 결과에 따라 오류 예측 통지나 오류 통지를 호스트(1100)에 통지할 수 있다. 호스트 메모리 버퍼(1120)의 특정 영역에서 정정 불가한 에러가 발생한 것으로 모니터링되면, 스토리지 장치(1200)는 호스트(1100)에 오류 통지를 전달할 수 있다. 그러면, 호스트(1100)는 호스트 메모리 버퍼(1120)의 메모리 영역을 재할당할 수 있다. 더불어, 스토리지 장치(1200)는 호스트 메모리 버퍼(1120)의 열화 상태를 영역별로 모니터링하고 그 결과를 호스트(1100)에 통지할 수 있다. 호스트 메모리 버퍼(1120)의 특정 영역에서 에러가 발행하지 않았다 하더라도, 특정 영역의 열화의 수준이 임계치를 초과한 것으로 모니터링될 수 있다. 그러면, 스토리지 장치(1200)는 호스트(1100)에 이러한 오류 예측 통지를 전달하여 호스트 메모리 버퍼(1120)의 특정 영역을 다른 영역으로 재할당받을 수 있다.
이상에서 설명된 본 발명의 컴퓨터 시스템(1000)에 따르면, 본 발명의 스토리지 장치(1200)는 호스트 메모리 버퍼(1120)를 영역별로 모니터링할 수 있다. 그리고 모니터링 결과(오류, 오류 예측)를 호스트(1100)에 통지하여 호스트 메모리 버퍼(1120)의 재할당(Reallocation)을 요청할 수 있다.
도 2는 도 1에 도시된 호스트 메모리를 예시적으로 보여주는 블록도이다. 도 2를 참조하면, 호스트 메모리(1130)의 일부 영역은 호스트 버퍼 메모리(1120)로 할당될 수 있다. 더불어, 스토리지 장치(1200)로부터의 통지(Notify)나 요청(Request)에 따라 호스트 버퍼 메모리(1120)는 호스트 메모리(1130)의 다른 메모리 영역에 재할당될 수 있다.
호스트 메모리(1130)는 호스트(1100)에 구비된 메모리이다. 예를 들면, 호스트 메모리(1130)는 DRAM이나 SRAM과 같은 휘발성 메모리나 불휘발성 메모리로도 구현될 수 있다. 하지만, 호스트 메모리(1130)의 구현은 목적에 따라 다양하게 구현될 수 있음은 잘 이해될 것이다. 호스트 메모리(1130)는 호스트(1100)에 의해 요청되는 데이터를 저장하거나 출력할 수 있다. 더불어, 호스트 메모리(1130)에는 스토리지 장치(1200)의 버퍼로 할당되는 호스트 메모리 버퍼(1120)가 포함된다. 호스트 메모리 버퍼(1120)는 호스트 메모리(1130)의 특정 메모리 영역에 할당되거나, 스토리지 장치(1200)의 정보에 따른 최적 사이즈로 호스트 메모리(1130) 상에서 할당될 수 있을 것이다.
호스트 메모리 버퍼(1120)는 호스트 메모리(1130)의 일부 영역을 스토리지 장치(1200)의 버퍼로 사용되도록 할당된 메모리 영역이다. 따라서, 스토리지 장치(1200)는 별도의 내부 버퍼(Internal Buffer) 없이 호스트 메모리 버퍼(1120)를 버퍼 용도로 사용할 수 있다. 스토리지 장치(1200)에 구비되는 내부 버퍼(Internal buffer)의 경우, 비용, 장치 사이즈, 설계상 한계 등과 같은 다양한 이슈들 때문에, 충분한 용량을 제공하기 어려울 수 있다. 하지만, 호스트 메모리(1130)의 일부 영역을 스토리지 장치(1200)가 사용하도록 호스트 메모리 버퍼(1120)로 공유할 수 있다면, 스토리지 장치(1200)는 충분한 버퍼 용량을 확보할 수 있을 것이다.
호스트 메모리 버퍼(1120)는 예를 들면 저장되는 데이터(이하, 버퍼 데이터라 칭함)의 속성에 따라 복수의 HMB 영역들(1122, 1124, 1126)로 구분될 수 있다. 예컨대, 제 1 HMB 영역(1122)에는 스토리지 장치(1200)의 맵핑 데이터가 저장될 수 있다. 제 2 HMB 영역(1124)에는 사용자 데이터가 저장될 수 있다. 제 3 HMB 영역(1126)에는 스토리지 장치(1200)를 관리하기 위한 관리 데이터가 저장될 수 있다. 하지만, 복수의 HMB 영역들(1122, 1124, 1126)의 구분 기준은 저장되는 데이터의 속성에만 국한되지 않는다. 메모리 관리의 용이성을 위해 호스트 버퍼 메모리(1120)는 복수의 영역들로 구분될 수 있다.
저장되는 데이터의 속성에 따라 호스트 메모리 버퍼(1120)를 복수의 영역들로 구분하는 경우, HMB 컨트롤러(1243)에 의한 헬스 상태의 모니터링이 효율적으로 수행될 수 있다. 즉, 결함이나 데이터 오류, 열화 진행 상태를 각 HMB 영역별로 구분하여 모니터링하는 경우, 어느 하나의 HMB 영역을 새로운 HMB 영역으로 재할당하기가 용이할 수 있다.
이상에서 설명된 호스트 메모리 버퍼(1120)는 저장되는 버퍼 데이터의 속성에 따라 복수의 HMB 영역들로 구분될 수 있음이 설명되었다. 그리고 호스트 메모리 버퍼(1120)는 복수의 HMB 영역들(1122, 1124, 1126) 단위로 헬스 상태가 모니터링될 수 있다. 모니터링 결과에 따라, 어느 하나의 HMB 영역은 다른 새로운 호스트 메모리의 영역으로 재할당될 수 있다.
도 3은 도 1에 도시된 스토리지 컨트롤러의 구성을 예시적으로 보여주는 블록도이다. 도 3을 참조하면, 본 발명의 스토리지 컨트롤러(1240)는 CPU(1241), HMB 컨트롤러(1243), 플래시 인터페이스(1245), 그리고 에러 정정 블록(1247)을 포함할 수 있다. 특히, HMB 컨트롤러(1243)는 호스트 버퍼 메모리(1120)를 관리하기 위한 모듈들(1242, 1244) 및 HMB 헬스 상태 테이블(1246)을 구동하거나 포함할 수 있다.
CPU(1241)는 스토리지 장치(1100)의 다양한 메모리 관리 동작을 수행할 수 있다. 예를 들면, CPU(1241)는 호스트(1100)로부터의 명령어에 응답하여 불휘발성 메모리 장치(1260)에 데이터를 기입하기 위해 HMB 컨트롤러(1243) 및 플래시 인터페이스(1245)를 제어할 수 있다. CPU(1241)는 호스트 메모리 버퍼(1120)로부터 데이터를 읽어오도록 HMB 컨트롤러(1243)에 요청할 수 있다.
HMB 컨트롤러(1243)는 CPU(1241)의 요청에 따라 데이터를 호스트 메모리 버퍼(1120)에 기록하거나, 기록된 데이터를 호스트 메모리 버퍼(1120)로부터 읽어올 수 있다. HMB 컨트롤러(1243)는 호스트 메모리 버퍼(1120)의 결함이나 열화에 따른 데이터 오류나 헬스 상태를 모니터링할 수 있다. HMB 컨트롤러(1243)는 호스트 메모리 버퍼(1120)의 데이터 오류나 헬스 상태를 모니터링하기 위한 오류 검출 모듈(1242), 오류 예측 모듈(1244), 그리고 HMB 헬스 상태 테이블(1246)을 포함할 수 있다.
오류 검출 모듈(1242)은 호스트 메모리 버퍼(1120)로부터 독출되는 데이터의 에러의 존재나, 에러율 또는 에러의 정정 가능 여부를 참조하여 호스트 메모리 버퍼(1120)의 결함을 판단한다. 예를 들면, 오류 검출 모듈(1242)은 호스트 메모리 버퍼(1120)의 특정 HMB 영역으로부터 독출된 데이터에 정정 불가한 에러가 검출되는 경우, 해당 HMB 영역의 결함이나 열화로 판단할 것이다. 이러한 판단에 기초하여 MB 컨트롤러(1243)는 호스트(1100)에 해당 HMB 영역의 재할당을 요청하거나 오류 통지를 발행할 것이다.
오류 예측 모듈(1244)은 호스트 메모리 버퍼(1120)로부터 독출되는 데이터의 에러율을 지속적으로 모니터링하거나, 또는 읽기 횟수나 쓰기 횟수를 모니터링하여 HMB 헬스 상태 테이블에 업데이트한다. 예를 들면, 오류 예측 모듈(1244)은 호스트 메모리 버퍼(1120)의 특정 HMB 영역에 대한 쓰기 횟수가 임계치보다 큰 것으로 검출되면, 특정 HMB 영역에서 추후에 결함이 발생할 것으로 예측할 것이다. 그리고 이러한 예측에 기초하여 HMB 컨트롤러(1243)는 호스트(1100)에 특정 HMB 영역의 재할당을 요청할 수 있을 것이다.
HMB 헬스 상태 테이블(1246)은 오류 검출 모듈(1242)이나 오류 예측 모듈(1244)에서 모니터링되는 HMB 영역들 각각의 헬스 상태 정보가 저장되고 업데이트된다. HMB 헬스 상태 테이블(1246)에 업데이트되는 HMB 영역들 각각의 읽기 횟수, 쓰기 횟수, 에러율에 따라 호스트(1100)로의 HMB 재할당 요청이 발생할 수 있다.
에러 정정 블록(1247)은 호스트 메모리 버퍼(1120)로부터 독출된 데이터의 에러를 검출한다. 호스트 메모리 버퍼(1120)로부터의 독출 데이터에 정정 가능한 에러가 존재하면, 에러 정정 블록(1247)은 검출된 에러를 정정할 수 있다. 에러 정정 블록(1247)은 호스트 메모리 버퍼(1120)로부터의 독출 데이터의 에러 비트 수나 에러율, 또는 검출된 에러의 정정 가능 여부 등을 HMB 컨트롤러(1243)에 제공할 수 있다.
이상에서 설명된 본 발명의 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼(1120)의 오류를 검출하거나, 열화의 진행에 따른 오류를 예측할 수 있다. 더불어, 스토리지 컨트롤러(1240)는 검출된 오류나 오류 예측 정보를 기초로, 호스트(1100)에 오류 통지나 오류 예측 통지를 전달할 수 있다. 호스트(1100)는 오류 통지나 오류 예측 통지에 응답하여, 해당 HMB 영역을 호스트 메모리(1130)의 정상적인 메모리 영역에 재할당할 수 있다.
도 4는 본 발명의 실시 예에 따른 호스트 메모리 버퍼의 영역별 헬스 상태 테이블을 예시적으로 보여준다. 도 4를 참조하면, 저장되는 버퍼 데이터의 속성에 따라 호스트 메모리 버퍼(1120)는 복수의 영역들로 구분될 수 있다. 그리고 HMB 헬스 상태 테이블(1246)에는 복수의 영역들 각각에 대한 열화 정보나 오류 정보가 저장되고 업데이트된다.
호스트 메모리 버퍼(1120)의 영역별 헬스 상태는 구분된 영역들 단위로 관리되고 업데이트될 수 있다. 예시적인 영역별 헬스 상태를 나타내는 정보에는 해당 영역의 쓰기 횟수, 읽기 횟수, 그리고 해당 영역에 저장된 데이터로부터 검출된 에러율을 포함할 수 있다. 하지만, HMB 헬스 상태 테이블(1246)에 저장되는 헬스 상태 정보에는 호스트 메모리 버퍼(1120)의 영역들 각각에 대한 다른 관리 파라미터들도 사용될 수 있음은 잘 이해될 것이다.
예시적으로, 제 1 HMB 영역(HMB1)에는 불휘발성 메모리 장치(1260)의 어드레스의 맵핑을 위한 맵핑 데이터(Mapping data)가 저장될 수 있다. 제 2 HMB 영역(HMB2)에는 스토리지 장치(1200)에 프로그램될 사용자 데이터(User data)가 일시적으로 저장될 수 있을 것이다. 그리고 제 3 HMB 영역(HMB3)에는 스토리지 장치(1200)의 관리나 제어를 위한 관리 데이터(Management data)가 저장될 수 있을 것이다.
HMB 컨트롤러(1243)의 오류 검출 모듈(1242)이나 오류 예측 모듈(1244)은 HMB 헬스 상태 테이블(1246)의 영역들(HMB1, HMB2, HMB3) 각각의 쓰기 횟수(WC), 읽기 횟수(RC), 그리고 에러율(ER)을 모니터링하고 업데이트한다. 오류 검출 모듈(1242)은 특정 HMB 영역에서 검출된 에러율(ER)이 정정 불가한 값에 대응하는 경우, 해당 HMB 영역에 대한 오류 통지를 호스트(1100)로 전송할 수 있다. 그리고 쓰기 횟수(WC), 읽기 횟수(RC), 그리고 에러율(ER) 중 어느 하나가 임계치를 초과하는 항목이 발생하면, 오류 예측 모듈(1244)은 호스트(1100)에 해당 HMB 영역에 대한 오류 예측 통지를 전송할 수 있다. 오류 통지나 오류 예측 통지에는 해당 HMB 영역에 대한 재할당 요청 정보도 포함할 수 있다.
도 5는 HMB 컨트롤러의 오류 검출 동작을 예시적으로 보여주는 순서도이다. 도 5를 참조하면, HMB 컨트롤러(1243)는 호스트 메모리 버퍼(1120)로부터의 독출 데이터의 에러율(ER)을 영역별로 검출 및 모니터링할 수 있다.
S110 단계에서, HMB 컨트롤러(1243)는 CPU(1241)로부터 제공되는 호스트 메모리 버퍼(1120)로의 접근 요청을 검출 또는 수신한다. 여기서, 설명의 간략화를 위해 호스트 메모리 버퍼(1120)에 대한 독출 요청이 수신된 것으로 가정하기로 한다.
S120 단계에서, HMB 컨트롤러(1243)는 호스트 메모리 버퍼(1120)로부터 출력되는 독출 데이터의 오류의 존재 여부를 검출한다. 즉, 에러 정정 블록(1247)에 의하여 호스트 메모리 버퍼(1120)에서 출력되는 독출 데이터의 에러가 검출된 것이다.
S130 단계에서, HMB 컨트롤러(1243)는 호스트 메모리 버퍼(1120)로부터 출력되는 독출 데이터의 에러율(ER)이 에러율 임계치(THe)를 초과했는지 판단한다. 만일, 독출 데이터의 에러율(ER)이 에러율 임계치(THe)보다 큰 것으로 판단되면, 절차는 S150 단계로 이동한다. 반면, 독출 데이터의 에러율(ER)이 에러율 임계치(THe)보다 크지 않은 것으로 판단되면, 절차는 S140 단계로 이동한다.
S140 단계에서, HMB 컨트롤러(1243)는 에러가 검출되지 않은 독출 데이터를 사용한 메모리 관리 동작을 수행할 수 있을 것이다. 또는, 스토리지 컨트롤러(1240)는 정정 가능한 에러를 포함하는 독출 데이터의 에러를 정정할 것이다. 그리고 스토리지 컨트롤러(1240)는 에러가 정정된 독출 데이터를 사용하여 메모리 관리 동작이나, 데이터 전송 동작을 수행할 것이다.
S150 단계에서, HMB 컨트롤러(1243)는 호스트 메모리 버퍼(1120)의 특정 영역이 오염된 것으로 판단하고, 이러한 정보를 호스트(1100)에 통지한다. 또는, 스토리지 컨트롤러(1240)는 정정 불가한 에러가 검출되는 HMB 영역을 호스트 메모리(1300)의 새로운 영역으로 할당해 줄 것을 요청할 수 있다.
S160 단계에서, 스토리지 컨트롤러(1240)는 HMB 헬스 상태 테이블(1246)에 저장된 HMB 영역의 에러율(ER)을 업데이트한다. 이후, 스토리지 컨트롤러(1240)는 새로운 HMB 영역을 할당받을 경우, HMB 헬스 상태 테이블(1246)에 새로 할당받은 영역에 대한 항목을 신설할 것이다.
도 6은 오류 통지를 전송하는 스토리지 컨트롤러와 호스트의 상호 동작을 예시적으로 보여주는 도면이다. 도 6을 참조하면, 스토리지 장치(1200)로부터의 오류 통지에 응답하여 호스트(1100)는 HMB 영역의 재할당을 수행한다.
S210 단계에서, 스토리지 장치(1200)는 호스트 메모리 버퍼(1120)에 저장된 데이터의 읽기 요청을 호스트(1100)에 전송한다.
S220 단계에서, 호스트(1100)는 호스트 메모리 버퍼(1120)는 지정된 HMB 영역의 데이터를 독출하여 스토리지 장치(1200)로 전송할 것이다.
S230 단계에서, 스토리지 컨트롤러(1240)는 에러 정정 블록(1247)을 사용하여 호스트 메모리 버퍼(1120)에서 독출된 데이터의 에러가 존재하는지 검출할 것이다. 만일, 독출된 데이터에 에러가 검출되지 않으면(No), S260 단계에서 스토리지 컨트롤러(1240)는 독출된 데이터를 처리할 것이다. 예를 들면, 독출된 데이터를 이용하여 스토리지 장치(1200)의 메모리 관리 동작을 수행하던지, 또는 독출된 데이터를 호스트(1100)나 불휘발성 메모리 장치(1260)에 전달할 것이다.
만일, 독출된 데이터에 에러가 존재하면(Yes), 스토리지 컨트롤러(1240)는 에러율의 크기를 참조하여 호스트(1100)에 오류 통지(Corruption notify)를 전달하거나, 에러 정정을 통해서 독출 데이터를 처리할 수 있다. 예시적으로, 에러율(ER)의 크기가 에러율 임계치(THe)를 초과하는 경우, S250 단계에서 스토리지 컨트롤러(1240)는 에러의 정정이 불가한 것으로 판단하여 호스트(1100)에 오류 통지(Corruption notify)를 전달한다.
S270 단계에서, 호스트(1100)는 오류 통지된 호스트 메모리 버퍼(1120)의 HMB 영역을 정상적인 메모리 영역으로 재할당할 것이다. 또는, 호스트(1100)는 오류 통지된 호스트 메모리 버퍼(1120)의 일부 영역이나 장치에 대한 동작 파라미터, 트레이닝 파라미터의 조정 또는 초기화를 시도할 수 있을 것이다.
도 7은 본 발명의 HMB 컨트롤러의 오류 예측 모듈의 동작을 예시적으로 보여주는 순서도이다. 도 7을 참조하면, HMB 컨트롤러(1243)는 호스트 메모리 버퍼(1120)의 HMB 영역별 헬스 상태를 모니터링하고, 모니터링 결과에 따라 오류 예측 통지를 발행할 수 있다.
S310 단계에서, HMB 컨트롤러(1243)는 호스트 메모리 버퍼(1120)의 접근 요청들을 참조하여 데이터 속성 또는 특정 기준으로 구분된 HMB 영역들 각각의 헬스 상태 정보를 모니터링할 수 있다. 여기서, 설명의 편의를 위해 호스트 메모리 버퍼(1120)의 각 HMB 영역들에 대한 쓰기 횟수(WC) 또는 읽기 횟수(RC)를 모니터링하는 경우를 예로 들기로 한다. 하지만, 오류 예측을 위해 HMB 컨트롤러(1243)는 에러율(ER)을 사용할 수도 있을 것이다. 즉, HMB 컨트롤러(1243) 용인될 수 있는 정정 가능한 에러를 모니터링하고, 위험도가 높아지면 오류 예측 통지의 전송을 결정할 수 있다.
S320 단계에서, HMB 컨트롤러(1243)는 HMB 영역들 중에서 쓰기 횟수(WC)가 쓰기 임계치(TH_wc)를 초과하는 적어도 하나의 영역이 존재하는지 체크할 수 있다. 또는, HMB 컨트롤러(1243)는 HMB 영역들 중에서 읽기 횟수(RC)가 읽기 임계치(TH_rc)를 초과하는 영역이 존재하는지 체크할 수 있다. 만일, 읽기 횟수(RC)나 쓰기 횟수(WC)가 각각의 임계치들(TH_wc, TH_rc)에 미치지 못한다면(No 방향), 절차는 S310으로 이동하여 헬스 상태 모니터링은 계속할 것이다. 반면, 읽기 횟수(RC)나 쓰기 횟수(WC)가 각각의 임계치들(TH_wc, TH_rc)보다 큰 HMB 영역이 존재한다면(Yes 방향), 절차는 S330으로 이동한다.
S330 단계에서, HMB 컨트롤러(1243)는 특정 HMB 영역에 대한 오류 예측 통지를 호스트(1100)로 전송한다. 오류 예측 통지(Corrupt prediction notify)는 단순히 오류 예측을 지시하는 신호일 수도 있고, 오류가 예측된 HMB 영역의 위치 또는 재할당을 요청하는 정보도 포함할 수 있다.
S340 단계에서, HMB 컨트롤러(1243)는 HMB 헬스 상태 테이블(1246)에 저장된 해당 HMB 영역의 읽기 횟수(RC) 또는 쓰기 횟수(WC)를 업데이트한다. HMB 컨트롤러(1243)는 새로운 HMB 영역을 할당받을 경우, HMB 헬스 상태 테이블(1246)에 새로 할당받은 영역에 대한 항목을 신설하고 유지할 것이다.
HMB 컨트롤러(1243)는 호스트 메모리 버퍼(1120)의 영역별 헬스 상태 모니터링을 통해서 치명적인 오류가 발생하기 전에 미리 호스트(1100)에 오류 예측 통지를 전달할 수 있다. 따라서, 호스트 메모리 버퍼(1120)에서 발생하는 진행성 결함이나 열화에 의한 치명적인 오류 문제를 미연에 방지하여 스토리지 장치(1200)의 동작 신뢰성을 높일 수 있다.
도 8은 본 발명의 호스트와 오류 예측 모듈의 상호 동작을 예시적으로 보여주는 도면이다. 도 8을 참조하면, 스토리지 장치(1200)는 호스트 메모리 버퍼(1120)의 HMB 영역별 헬스 상태를 모니터링하고, 모니터링 결과에 따라 오류 예측 통지를 호스트(1100)에 전달한다.
S410 단계에서, 스토리지 장치(1200)는 호스트 메모리 버퍼(1120)의 HMB 영역들의 쓰기 횟수(WC)를 체크한다. 만일, 쓰기 횟수(WC)가 쓰기 임계치(TH_wc)보다 큰 HMB 영역이 존재하는 경우, 스토리지 컨트롤러(1200)는 호스트(1100)에 오류 예측 통지를 전달할 것이다. 하지만, 쓰기 횟수(WC)가 쓰기 임계치(TH_wc)보다 큰 HMB 영역이 검출되지 않는 경우, 스토리지 컨트롤러(1200)는 읽기 횟수(RC)를 검출하기 위한 S420 단계로 이동한다.
S420 단계에서, 스토리지 장치(1200)는 호스트 메모리 버퍼(1120)의 HMB 영역들의 읽기 횟수(RC)를 체크한다. 만일, HMB 영역들 중에서 읽기 횟수(RC)가 읽기 임계치(TH_rc)보다 큰 적어도 하나의 영역이 존재하는 경우(Yes), 스토리지 컨트롤러(1200)는 S430 단계로 이동하여 호스트(1100)에 오류 예측 통지를 전달할 것이다. 하지만, 읽기 횟수(RC)가 읽기 임계치(TH_rc)보다 큰 HMB 영역이 검출되지 않는 경우(No), 스토리지 컨트롤러(1200)는 헬스 상태를 모니터링 동작을 계속할 것이다(S410).
S440 단계에서, 호스트(1100)는 오류 예측 통지에 응답하여 오류가 예측된 HMB 영역을 다른 정상적인 메모리 영역으로 재할당할 수 있을 것이다. 또는 호스트(1100)는 오류가 예측된 호스트 메모리 버퍼(1120)의 일부 영역이나 일부 장치에 대한 동작 파라미터를 조정할 수도 있을 것이다. 예를 들면, 호스트(1100)는 오류가 예측된 호스트 메모리 버퍼(1120)의 일부 영역이나 일부 장치에 대한 초기화 또는 동작 파라미터, 트레이닝 파라미터의 조정을 시도할 수 있다.
도 9는 본 발명의 실시 예에 따른 오류 통지나 오류 예측 통지를 호스트로 전송하기 위한 별도의 채널을 갖는 스토리지 장치를 보여주는 블록도이다. 도 9를 참조하면, 스토리지 장치(1200)는 호스트(1100)의 호스트 메모리 버퍼(HMB) 영역의 오류 통지나 오류 예측 통지를 전송하기 위한 통지 채널(1350)을 포함할 수 있다.
호스트(1100)와 스토리지 장치(1200)는 데이터의 전달을 위한 입출력 채널(1300)을 포함할 수 있다. 호스트(1100)와 스토리지 장치(1200)는 다양한 인터페이스 방식으로 통신할 수 있다. 특히, 본 발명의 호스트(1100) 및 스토리지 장치(1200)는 호스트 메모리 버퍼(HMB)에 발생하는 오염이나, 호스트 메모리 버퍼(HMB)의 재할당을 요청하는 통지 채널(1350)을 포함할 수 있다. 통지 채널(1350)을 위해 호스트(1100) 및 스토리지 장치(1200)는 별도의 핀이나 패드를 포함할 수 있을 것이다. 또는, 호스트(1100) 및 스토리지 장치(1200)는 기존의 핀들 중에서 사용되지 않는 핀을 본 발명의 통지 채널(1350)을 위한 핀으로 사용할 수도 있을 것이다.
도 10은 본 발명의 다른 실시 예에 따른 통지 채널을 갖는 스토리지 장치를 보여주는 블록도이다. 도 10을 참조하면, 스토리지 장치(2200)는 호스트(2100)의 호스트 메모리 버퍼(HMB) 영역의 오류 통지나 오류 예측 통지를 벤더(Vendor) 메시지 채널을 통해서 구현할 수 있다.
호스트(2100)와 스토리지 장치(2200)는 데이터의 전달을 위한 입출력 채널(2300)을 포함할 수 있다. 스토리지 장치(2200)는 호스트 메모리 버퍼(HMB)의 오류 통지나 오류 예측 통지 또는 호스트 메모리 버퍼의 재할당을 요청하는 메시지를 기존의 벤더 메시지 채널을 사용하여 전송할 수도 있을 것이다.
이상에서와 같이 도면과 명세서에서 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허 청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (10)

  1. 호스트의 호스트 메모리를 공유하는 스토리지 장치에 있어서:
    상기 호스트 메모리의 일부 영역을 상기 스토리지 장치의 버퍼로 사용하기 위한 인터페이스; 그리고
    상기 버퍼의 제 1 영역의 열화 정보를 모니터링하고, 상기 모니터링 결과에 기초하여 상기 제 1 영역에 대한 오류 예측 통지를 상기 호스트에 전송하는 스토리지 컨트롤러를 포함하고,
    상기 열화 정보는 상기 제 1 영역에 저장된 데이터의 에러율, 상기 제 1 영역의 읽기 횟수, 상기 제 1 영역의 쓰기 횟수 중 적어도 하나를 포함하고,
    상기 스토리지 컨트롤러는 상기 읽기 횟수와 상기 쓰기 횟수 중 적어도 하나가 각각의 임계치를 초과하면 상기 오류 예측 통지를 상기 호스트에 전송하는 스토리지 장치.
  2. 제 1 항에 있어서,
    상기 스토리지 컨트롤러는 상기 열화 정보를 검출하는 호스트 메모리 버퍼 컨트롤러를 포함하는 스토리지 장치.
  3. 제 2 항에 있어서,
    상기 호스트 메모리 버퍼 컨트롤러는:
    상기 에러율에 따라 상기 데이터의 오류를 판단하는 오류 검출 모듈;
    상기 읽기 횟수 또는 상기 쓰기 횟수를 모니터링하여 상기 제 1 영역의 오류 발생을 예측하는 오류 예측 모듈; 그리고
    상기 제 1 영역에 대한 상기 에러율, 상기 읽기 횟수, 그리고 상기 쓰기 횟수를 저장하고 업데이트하는 헬스 상태 테이블을 포함하는 스토리지 장치.
  4. 제 3 항에 있어서,
    상기 호스트 메모리 버퍼 컨트롤러는 상기 헬스 상태 테이블을 참조하여 상기 읽기 횟수와 상기 쓰기 횟수 중 적어도 하나가 상기 각각의 임계치를 초과하면 상기 오류 예측 통지를 상기 호스트에 전송하는 스토리지 장치.
  5. 제 3 항에 있어서,
    상기 호스트 메모리 버퍼 컨트롤러는 상기 헬스 상태 테이블을 참조하여 상기 에러율이 기준치를 초과하는 경우, 오류 통지를 상기 호스트에 전송하는 스토리지 장치.
  6. 제 3 항에 있어서,
    상기 호스트 메모리 버퍼 컨트롤러는 상기 헬스 상태 테이블을 참조하여 상기 호스트 메모리의 상기 제 1 영역의 상기 호스트 메모리의 제 2 영역으로의 재할당을 요청하는 스토리지 장치.
  7. 제 1 항에 있어서,
    상기 스토리지 컨트롤러는 상기 호스트에 상기 인터페이스의 메시지 전송 채널을 통해서 상기 오류 예측 통지를 전송하는 스토리지 장치.
  8. 제 1 항에 있어서,
    상기 스토리지 컨트롤러는 상기 호스트와 약속된 별도의 핀을 통해서 상기 오류 예측 통지를 상기 호스트에 전송하는 스토리지 장치.
  9. 호스트의 호스트 메모리를 버퍼로 할당받는 스토리지 장치의 메모리 관리 방법에 있어서:
    상기 스토리지 장치가 상기 버퍼를 복수의 버퍼 영역들로 구분하고, 상기 구분된 복수의 버퍼 영역들 각각의 읽기 횟수, 쓰기 횟수 또는 에러율을 포함하는 열화 정보를 검출하는 단계;
    상기 스토리지 장치가 상기 검출된 열화 정보에 기초하여 상기 복수의 버퍼 영역들 중 상기 읽기 횟수와 상기 쓰기 횟수 중 적어도 하나가 각각의 임계치를 초과하는 제 1 버퍼 영역이 존재하는지 판단하는 단계; 그리고
    상기 판단 결과에 따라 상기 호스트에 상기 제 1 버퍼 영역에 대한 오류 예측 통지를 전송하는 단계를 포함하는 메모리 관리 방법.
  10. 호스트의 호스트 메모리를 버퍼로 사용하는 스토리지 장치에 있어서:
    상기 호스트와 통신하기 위한 인터페이스;
    불휘발성 메모리 장치; 그리고
    상기 인터페이스를 통하여 상기 호스트로부터 할당받은 버퍼 영역을 복수의 버퍼 영역들로 구분하고, 상기 구분된 복수의 버퍼 영역들 단위로 열화 상태를 모니터링하고, 상기 모니터링 결과에 따라 상기 호스트에 오류 통지 또는 오류 예측 통지를 전송하는 스토리지 컨트롤러를 포함하고,
    상기 열화 상태는 상기 복수의 버퍼 영역들 각각에 저장된 데이터의 에러율, 상기 복수의 버퍼 영역들 각각의 읽기 횟수, 상기 복수의 버퍼 영역들 각각의 쓰기 횟수 중 적어도 하나를 포함하고,
    상기 스토리지 장치는 상기 복수의 버퍼 영역들 중 상기 읽기 횟수와 상기 쓰기 횟수 중 적어도 하나가 각각의 임계치를 초과하는 제 1 버퍼 영역이 존재하는 경우, 상기 호스트에 상기 제 1 버퍼 영역에 대한 상기 오류 예측 통지를 전송하는 스토리지 장치.
KR1020180140166A 2018-11-14 2018-11-14 호스트 메모리 버퍼를 사용하는 스토리지 장치 및 그것의 메모리 관리 방법 KR102599176B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020180140166A KR102599176B1 (ko) 2018-11-14 2018-11-14 호스트 메모리 버퍼를 사용하는 스토리지 장치 및 그것의 메모리 관리 방법
US16/539,729 US11011243B2 (en) 2018-11-14 2019-08-13 Storage device that uses a host memory buffer and a memory management method including the same
CN201910948791.3A CN111190841A (zh) 2018-11-14 2019-09-30 存储设备及其存储器管理方法
US17/307,314 US11501843B2 (en) 2018-11-14 2021-05-04 Storage device that uses a host memory buffer and a memory management method including the same
US17/952,370 US11854630B2 (en) 2018-11-14 2022-09-26 Storage device that uses a host memory buffer and a memory management method including the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180140166A KR102599176B1 (ko) 2018-11-14 2018-11-14 호스트 메모리 버퍼를 사용하는 스토리지 장치 및 그것의 메모리 관리 방법

Publications (2)

Publication Number Publication Date
KR20200056538A KR20200056538A (ko) 2020-05-25
KR102599176B1 true KR102599176B1 (ko) 2023-11-08

Family

ID=70550515

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180140166A KR102599176B1 (ko) 2018-11-14 2018-11-14 호스트 메모리 버퍼를 사용하는 스토리지 장치 및 그것의 메모리 관리 방법

Country Status (3)

Country Link
US (3) US11011243B2 (ko)
KR (1) KR102599176B1 (ko)
CN (1) CN111190841A (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11068365B2 (en) * 2018-08-23 2021-07-20 Micron Technology, Inc. Data recovery within a memory sub-system without moving or processing the data through a host
KR102599176B1 (ko) 2018-11-14 2023-11-08 삼성전자주식회사 호스트 메모리 버퍼를 사용하는 스토리지 장치 및 그것의 메모리 관리 방법
US11775378B2 (en) * 2019-12-16 2023-10-03 Micron Technology, Inc. Memory health status reporting
US11450392B2 (en) * 2019-12-17 2022-09-20 Micron Technology, Inc. Selective read disturb sampling
US20220108037A1 (en) * 2020-10-02 2022-04-07 Western Digital Technologies, Inc. Data Storage Devices and Related Methods to Secure Host Memory Buffers with Low Latency
US20220179593A1 (en) * 2020-10-02 2022-06-09 Western Digital Technologies, Inc. DRAM-Less SSD With Secure HMB For Low Latency
US11630604B2 (en) 2020-10-29 2023-04-18 Silicon Motion Inc. Methods for controlling data storage device, and associated flash memory controller
US20230025601A1 (en) * 2021-07-23 2023-01-26 Micron Technology, Inc. Initializing memory systems
US20230064781A1 (en) * 2021-08-31 2023-03-02 Micron Technology, Inc. Dynamic buffer limit for at-risk data
JP2023037883A (ja) 2021-09-06 2023-03-16 キオクシア株式会社 情報処理装置
TW202321897A (zh) * 2021-11-15 2023-06-01 南韓商三星電子股份有限公司 儲存裝置及其操作方法
US11816337B2 (en) * 2021-12-06 2023-11-14 Western Digital Technologies, Inc. Enterprise host memory buffer
US11847323B1 (en) * 2022-06-07 2023-12-19 Westem Digital Technologies, Inc. Data storage device and method for host buffer management

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180018101A1 (en) * 2016-07-13 2018-01-18 Sandisk Technologies Llc Methods, systems, and computer readable media for write classification and aggregation using host memory buffer (hmb)
US20180039541A1 (en) * 2016-08-05 2018-02-08 Sandisk Technologies Llc Data relocation

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7009872B2 (en) * 2003-12-22 2006-03-07 Hewlett-Packard Development Company, L.P. MRAM storage device
US8032674B2 (en) * 2004-07-19 2011-10-04 Marvell International Ltd. System and method for controlling buffer memory overflow and underflow conditions in storage controllers
US7664889B2 (en) * 2005-09-29 2010-02-16 Intel Corporation DMA descriptor management mechanism
US7984359B2 (en) * 2006-05-01 2011-07-19 Seagate Technology, Llc Correction of data errors in a memory buffer
JP4575346B2 (ja) * 2006-11-30 2010-11-04 株式会社東芝 メモリシステム
US8046524B2 (en) * 2007-08-08 2011-10-25 Sandisk Technologies Inc. Managing processing delays in an isochronous system
US20100061207A1 (en) * 2008-09-09 2010-03-11 Seagate Technology Llc Data storage device including self-test features
WO2010054410A2 (en) * 2008-11-10 2010-05-14 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for predicting failures in solid-state storage
WO2012157029A1 (en) * 2011-05-19 2012-11-22 Hitachi, Ltd. Storage control apparatus and management method for semiconductor-type storage device
JP6041546B2 (ja) * 2012-06-08 2016-12-07 キヤノン株式会社 情報処理装置及びその制御方法、並びにプログラム
US9575884B2 (en) 2013-05-13 2017-02-21 Qualcomm Incorporated System and method for high performance and low cost flash translation layer
US9252817B2 (en) * 2014-01-10 2016-02-02 SanDisk Technologies, Inc. Dynamic log-likelihood ratio mapping for error correcting code decoding
US9361182B2 (en) * 2014-05-20 2016-06-07 Transcend Information, Inc. Method for read disturbance management in non-volatile memory devices
US9563382B2 (en) * 2014-06-05 2017-02-07 Sandisk Technologies Llc Methods, systems, and computer readable media for providing flexible host memory buffer
US10268584B2 (en) 2014-08-20 2019-04-23 Sandisk Technologies Llc Adaptive host memory buffer (HMB) caching using unassisted hinting
KR102466412B1 (ko) 2016-01-14 2022-11-15 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US20170242606A1 (en) * 2016-02-19 2017-08-24 Sandisk Technologies Llc Methods and systems for transitioning to and from different storage device power states using host memory buffer (hmb)
US10642496B2 (en) * 2016-04-01 2020-05-05 Sandisk Technologies Inc. Out of order read transfer with host memory buffer
US10157004B2 (en) 2016-04-14 2018-12-18 Sandisk Technologies Llc Storage system and method for recovering data corrupted in a host memory buffer
US20170351452A1 (en) * 2016-06-01 2017-12-07 Intel Corporation Dynamic host memory buffer allocation
KR20180016679A (ko) 2016-08-04 2018-02-19 삼성전자주식회사 호스트 메모리를 이용하는 데이터 저장 장치 및 그것의 동작 방법
US10069597B2 (en) * 2016-09-07 2018-09-04 Western Digital Technologies, Inc. Aggregated metadata transfer at a data storage device
US10055164B2 (en) * 2016-09-07 2018-08-21 Sandisk Technologies Llc Data storage at an access device
US10254972B2 (en) 2016-09-13 2019-04-09 Toshiba Memory Corporation Storage device and storage system
KR20180054394A (ko) 2016-11-15 2018-05-24 삼성전자주식회사 호스트 메모리 버퍼(Host Memory Buffer)를 관리하기 위한 NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하는 솔리드 스테이트 저장 장치(solid state storage device), 이를 포함하는 시스템 및 호스트의 호스트 메모리 버퍼를 관리하는 방법
US10372382B2 (en) * 2016-12-29 2019-08-06 Western Digital Technologies, Inc. Methods and apparatus for read disturb detection based on logical domain
KR20180130140A (ko) * 2017-05-29 2018-12-07 에스케이하이닉스 주식회사 데이터 처리 시스템 및 데이터 처리 방법
US10642727B1 (en) * 2017-09-27 2020-05-05 Amazon Technologies, Inc. Managing migration events performed by a memory controller
US10459662B1 (en) * 2017-09-27 2019-10-29 Amazon Technologies, Inc. Write failure handling for a memory controller to non-volatile memory
TWI647567B (zh) * 2017-12-13 2019-01-11 國立中正大學 使用記憶體位址定位冷熱存取區間之方法
KR102599176B1 (ko) 2018-11-14 2023-11-08 삼성전자주식회사 호스트 메모리 버퍼를 사용하는 스토리지 장치 및 그것의 메모리 관리 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180018101A1 (en) * 2016-07-13 2018-01-18 Sandisk Technologies Llc Methods, systems, and computer readable media for write classification and aggregation using host memory buffer (hmb)
US20180039541A1 (en) * 2016-08-05 2018-02-08 Sandisk Technologies Llc Data relocation

Also Published As

Publication number Publication date
US20210257034A1 (en) 2021-08-19
US11501843B2 (en) 2022-11-15
US11011243B2 (en) 2021-05-18
US20200151040A1 (en) 2020-05-14
US20230020537A1 (en) 2023-01-19
CN111190841A (zh) 2020-05-22
KR20200056538A (ko) 2020-05-25
US11854630B2 (en) 2023-12-26

Similar Documents

Publication Publication Date Title
KR102599176B1 (ko) 호스트 메모리 버퍼를 사용하는 스토리지 장치 및 그것의 메모리 관리 방법
KR102599188B1 (ko) 호스트 메모리를 사용하는 스토리지 장치 및 그것의 동작 방법
US9524107B2 (en) Host-based device drivers for enhancing operations in redundant array of independent disks systems
US10459639B2 (en) Storage unit and storage system that suppress performance degradation of the storage unit
CN112597069A (zh) 存储系统、主机系统和存储系统的操作方法
EP3514674B1 (en) Method and device for writing stored data into storage medium based on flash memory
CN109213441B (zh) 能够管理工作而无需处理器干预的存储装置
KR20190074194A (ko) 저장 디바이스 메모리 공간에의 직접적인 호스트 액세스
CN111475438B (zh) 提供服务质量的io请求处理方法及其装置
CN111258493B (zh) 控制器、存储器控制器、存储设备以及操作控制器的方法
US9898201B2 (en) Non-volatile memory device, and storage apparatus to reduce a read retry occurrence frequency and prevent read performance from lowering
US20180275894A1 (en) Storage system
US20220291996A1 (en) Systems, methods, and devices for fault resilient storage
US20230251931A1 (en) System and device for data recovery for ephemeral storage
CN112667422A (zh) 内存故障处理方法及装置、计算设备、存储介质
KR102331926B1 (ko) 저장 장치를 포함하는 호스트 시스템의 동작 방법 및 저장 장치 제어기의 동작 방법
CN115458013A (zh) 存储装置及其操作方法
KR20150041873A (ko) 데이터 처리 시스템
US20230280917A1 (en) Storage system and method of operating the same
US10956245B1 (en) Storage system with host-directed error scanning of solid-state storage devices
US10908988B2 (en) Storage apparatus
US20210349780A1 (en) Systems, methods, and devices for data recovery with spare storage device and fault resilient storage device
US10606509B2 (en) Data storage device managing write tag, writing operation method thereof, and storage system including the same
US20180335963A1 (en) Method and system for hardware accelerated copyback

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant