KR20200054402A - 호스트 메모리를 사용하는 스토리지 장치 및 그것의 동작 방법 - Google Patents

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

Info

Publication number
KR20200054402A
KR20200054402A KR1020180137228A KR20180137228A KR20200054402A KR 20200054402 A KR20200054402 A KR 20200054402A KR 1020180137228 A KR1020180137228 A KR 1020180137228A KR 20180137228 A KR20180137228 A KR 20180137228A KR 20200054402 A KR20200054402 A KR 20200054402A
Authority
KR
South Korea
Prior art keywords
data
host
error
buffer
error correction
Prior art date
Application number
KR1020180137228A
Other languages
English (en)
Other versions
KR102599188B1 (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 KR1020180137228A priority Critical patent/KR102599188B1/ko
Priority to DE102019111132.3A priority patent/DE102019111132A1/de
Priority to US16/533,894 priority patent/US11016846B2/en
Priority to CN201910768035.2A priority patent/CN111177040B/zh
Publication of KR20200054402A publication Critical patent/KR20200054402A/ko
Priority to US17/239,621 priority patent/US20210248035A1/en
Application granted granted Critical
Publication of KR102599188B1 publication Critical patent/KR102599188B1/ko

Links

Images

Classifications

    • 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/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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
    • 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
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • 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
    • 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/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/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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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]

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)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명의 실시 예에 따른 호스트의 메모리를 공유하는 스토리지 장치는, 상기 호스트와 데이터를 교환하기 위한 시리얼 인터페이스, 그리고 상기 시리얼 인터페이스를 통하여 상기 호스트로부터 할당받은 호스트 메모리 버퍼에 버퍼링 데이터를 저장하고, 상기 버퍼링 데이터를 제 1 에러 정정 부호로 인코딩 및 디코딩하는 스토리지 컨트롤러를 포함한다.

Description

호스트 메모리를 사용하는 스토리지 장치 및 그것의 동작 방법{STORAGE DEVICE USING HOST MEMORY AND OPERATING METHOD THEREOF}
본 발명은 반도체 메모리 장치에 관한 것으로, 좀 더 구체적으로는 호스트의 메모리를 사용하는 스토리지 장치 및 그것의 동작 방법에 관한 것이다.
플래시 메모리 기반의 대용량 스토리지 장치의 예로 솔리드 스테이트 드라이브(Solid State Drive: 이하, SSD)가 대표적이다. SSD의 폭발적인 수요 증가와 함께 그 용도는 다양하게 분화되고 있다. 예를 들면, 서버용 SSD, 클라이언트용 SSD, 데이터 센터용 SSD 등으로 용도가 세분화될 수 있다. SSD의 인터페이스는 이러한 각각의 용도에 따라 최적의 속도와 신뢰성을 제공할 수 있어야 한다. 이러한 요구를 충족하기 위해서 최적의 SSD 인터페이스로 SATA, PCIe, SAS 등이 적용되고 있다. 특히, 최근에는 PCIe 기반의 NVMe나, UFS 기반의 UME(Unified Memory Extension)가 활발히 연구되고 스토리지 장치들에 적용되고 있는 실정이다. 이들 인터페이스에서는 장치간 메모리 공유 기능을 제공하고 있다. 따라서, 이러한 메모리 자원의 공유 기법을 사용하는 스토리지의 데이터 관리 방법이 필요하다.
일반적으로 스토리지 장치는 맵핑 테이블에 빠르게 접근하기 위해 별도의 휘발성 메모리(Volatile memory)를 포함할 수 있다. 데이터 저장 장치는 전원이 들어오면 맵핑 테이블을 휘발성 메모리에 저장할 수 있다. 상술한 휘발성 메모리는 DRAM(Dynamic random access memory) 또는 SRAM(Static random access memory)일 수 있다. 하지만, 휘발성 메모리의 사용에 따라 스토리지 장치의 면적 및 비용이 증가되는 문제점이 있다.
본 발명의 목적은 메모리 자원의 공유 기법을 적용하는 인터페이스를 채용한 시스템에서 버퍼링 데이터의 신뢰성을 제공할 수 있는 스토리지 장치 및 그것의 동작 방법을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명의 호스트의 메모리를 공유하는 스토리지 장치는, 상기 호스트와 데이터를 교환하기 위한 시리얼 인터페이스, 그리고 상기 시리얼 인터페이스를 통하여 상기 호스트로부터 할당받은 호스트 메모리 버퍼에 버퍼링 데이터를 저장하고, 상기 버퍼링 데이터를 제 1 에러 정정 부호로 인코딩 및 디코딩하는 스토리지 컨트롤러를 포함한다.
상기 목적을 달성하기 위한 본 발명의 실시 예에 따른 호스트의 메모리를 버퍼로 할당받는 스토리지 장치의 동작 방법은, 상기 스토리지 장치가 상기 버퍼로부터 버퍼링 데이터를 읽어오는 단계, 제 1 에러 정정 엔진을 사용하여 상기 버퍼링 데이터의 에러를 검출하는 단계, 그리고 검출된 상기 에러가 정정 불가능한 경우, 상기 버퍼링 데이터를 상기 호스트에 재요청한다.
상기 목적을 달성하기 위한 본 발명의 실시 예에 따른 호스트의 메모리의 일부 영역을 버퍼로 할당받는 스토리지 장치는, 상기 호스트와 데이터를 교환하기 위한 인터페이스, 불휘발성 메모리 장치, 그리고 상기 인터페이스를 통하여 상기 호스트로부터 할당받은 버퍼에 버퍼링 데이터를 저장하고, 상기 버퍼링 데이터를 참조하여 상기 불휘발성 메모리 장치를 제어하며, 상기 버퍼링 데이터를 에러 정정 부호로 인코딩 또는 디코딩하는 스토리지 컨트롤러를 포함하되, 상기 스토리지 컨트롤러는 상기 인터페이스에서 발생하는 상기 버퍼링 데이터의 수신 오류시에 소실된 패킷의 일부를 더미 데이터로 대체한다.
이상과 같은 본 발명의 실시 예에 따르면, 호스트 메모리 버퍼의 자원을 공유할 수 있는 인터페이스를 갖는 스토리지 장치의 데이터 신뢰성 및 시스템 안정성을 높일 수 있다.
도 1은 본 발명의 실시 예에 따른 스토리지 장치가 연결되는 컴퓨터 시스템을 간략히 보여주는 블록도이다.
도 2는 도 1에 도시된 호스트의 구성을 예시적으로 보여주는 블록도이다.
도 3은 도 1에 도시된 스토리지 컨트롤러의 구성을 예시적으로 보여주는 블록도이다.
도 4는 본 발명의 호스트 메모리 버퍼에 데이터를 저장하는 동작을 간략히 보여주는 순서도이다.
도 5는 도 3에 도시된 제 1 에러 정정 엔진의 간략히 보여주는 블록도이다.
도 6은 본 발명의 실시 예에 따른 호스트 메모리 버퍼를 관리하는 방법을 보여주는 도면이다.
도 7은 본 발명의 실시 예에 따른 호스트 메모리 버퍼로부터 데이터를 독출하는 과정을 보여주는 순서도이다.
도 8은 본 발명의 HMB 컨트롤러에 의해서 수행되는 호스트 메모리 버퍼의 리페어 동작을 예시적으로 보여주는 블록도이다.
도 9는 호스트 메모리 버퍼와 스토리지 장치 사이에서 발생하는 데이터 교환 절차를 간략히 보여주는 도면이다.
도 10은 본 발명의 다른 실시 예에 따른 스토리지 장치의 특징을 보여주는 도면이다.
도 11은 링크다운 발생시 본 발명의 실시 예에 따른 스토리지 장치의 동작을 보여주는 순서도이다.
도 12는 링크다운 발생시 본 발명의 다른 실시 예에 따른 스토리지 장치의 동작을 보여주는 순서도이다.
도 13은 도 12에서 설명된 호스트 메모리 버퍼로 전송되는 데이터의 복구 방법을 설명하는 도면이다.
도 14는 본 발명의 다른 실시 예에 따른 컴퓨터 시스템을 보여주는 블록도이다.
도 15는 본 발명의 스토리지 장치의 동작을 간략히 보여주는 순서도이다.
도 16은 본 발명의 실시 예들에 따른 불휘발성 메모리 시스템이 적용된 메모리 카드 시스템을 보여주는 블록도이다.
도 17은 본 발명에 따른 불휘발성 메모리 시스템이 적용된 SSD(Solid State Drive) 시스템을 예시적으로 보여주는 블록도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
이하에서는, 플래시 메모리 장치를 사용하는 솔리드 스테이트 드라이브(SSD)가 본 발명의 특징 및 기능을 설명하기 위한 스토리지 장치의 예로서 사용될 것이다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 본 발명은 다른 실시 예들을 통해 또한, 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다.
도 1은 본 발명의 실시 예에 따른 스토리지 장치가 연결되는 컴퓨터 시스템을 간략히 보여주는 블록도이다. 도 1을 참조하면, 컴퓨터 시스템(1000)은 호스트(1100)와 스토리지 장치(1200)를 포함한다. 컴퓨터 시스템(1000)은 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트 폰, 웨어러블(Wearable) 장치, 워크스테이션, 하나 이상의 서버, 전기 자동차, 가전기기, 의료기기 등과 같은 전자 장치들 중 하나일 수 있다.
호스트(1100)는, 예를 들면, 데이터를 독출하기 위해 스토리지 장치(1200)에 접근할 것이다. 그리고 스토리지 장치(1200)는 호스트(1100)의 쓰기나 읽기 요청에 따라 데이터를 불휘발성 메모리 장치(1260)에 저장하거나 읽어낸다. 특히, 스토리지 장치(1200)는 호스트(1100)에 구비된 호스트 메모리 버퍼(1125)를 데이터 버퍼로 사용할 수 있다. 그리고 스토리지 장치(1200)는 호스트에 구비된 메모리(1120)에 대해 마스터(Master)로서 호스트 메모리 버퍼(1125) 영역을 관리할 수 있다. 특히, 스토리지 장치(1200)는 호스트 메모리 버퍼(1125)에 저장하는 데이터를 에러 정정 부호(Error Correction Code: 이하, ECC)로 인코딩할 수 있다. 좀 더 자세히 설명하면 다음과 같다.
호스트(1100)는 스토리지 장치(1200)에 데이터를 기입하거나, 스토리지 장치(1200)에 저장된 데이터를 읽어낸다. 호스트(1100)는 스토리지 장치(1200)에 데이터를 기입하기 위해 명령어와 어드레스를 제공할 것이다. 호스트(1100)는 스토리지 장치(1200)에 저장된 데이터를 읽어내기 위한 명령어와 어드레스를 스토리지 장치(1200)에 전달할 수 있을 것이다.
호스트(1100)는 프로세서(1110), 호스트 메모리(1120), 인터페이스 회로(1130)를 포함할 수 있다. 호스트 메모리(1120)에는 응용 프로그램, 파일 시스템, 장치 드라이버 등이 로드될 수 있다. 이 밖에도 호스트 메모리(1120)에는 호스트(1100)에서 구동되는 다양한 소프트웨어나 데이터가 로드될 수 있다. 특히, 호스트(1100)는 호스트 메모리(1120)의 일부 영역을 스토리지 장치(1200)의 버퍼(Buffer)로 할당할 수 있다. 이하에서는 스토리지 장치(1200)의 버퍼로 할당되는 호스트 메모리(1120)의 일부 영역을 호스트 메모리 버퍼(1125, HMB)라 칭하기로 한다.
호스트 메모리 버퍼(1125)는 스토리지 장치(1200)가 호스트 메모리(1120)를 버퍼로써 이용하기 위해 할당된다. 특히, 본 발명의 호스트 메모리 버퍼(1125)에는 스토리지 장치(1200)에서 에러 정정 부호로 인코딩되거나 패리티(Parity)를 갖는 데이터가 저장될 수 있다. 일단, 스토리지 장치(1200)의 버퍼로서 호스트 메모리 버퍼(1125)가 할당되면, 호스트 메모리 버퍼(1125)에 대해서는 스토리지 장치(1200)가 마스터로서, 호스트 메모리(1120)가 슬레이브로서 동작한다. 따라서, 호스트 메모리 버퍼(1125)에 저장된 데이터(이하, 버퍼링 데이터라 칭함)의 신뢰성 보장에 관련해서 호스트(1100)는 실질적으로 아무런 권한을 가질 수 없다.
본 발명의 호스트 메모리 버퍼(1125)에 저장되는 버퍼링 데이터는 스토리지 장치(1200)에서 인코딩된 에러 정정 부호나 패리티를 갖는다. 그리고 버퍼링 데이터는 호스트(1100)에 의한 별도의 처리없이 스토리지 장치(1200)에 전달된다. 하지만, 호스트 메모리 버퍼(1125)에서 제공받은 버퍼링 데이터는 스토리지 장치(1200)에 구비된 별도의 에러 정정 부호 엔진을 사용하여 디코딩될 수 있다. 따라서, 호스트 메모리 버퍼(1125)에 저장되는 버퍼링 데이터의 신뢰성을 확보할 수 있다.
인터페이스 회로(1130)는 호스트(1100)와 스토리지 장치(1200) 사이에서 물리적 연결을 제공한다. 즉, 인터페이스 회로(1130)는 호스트(1100)에서 발행하는 다양한 접근 요청에 대응하는 명령어, 어드레스, 데이터 등을 스토리지 장치(1200)와의 인터페이싱 방식으로 변환한다. 인터페이스 회로(1130)의 프로토콜로는 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)의 버퍼 기능을 호스트 메모리 버퍼(1125)가 지원할 수 있는 인터페이싱 프로토콜을 가질 수 있다. 즉, 시리얼 인터페이스(1220)는 호스트(1100)의 메모리 자원과 스토리지 장치(2100)의 메모리 자원을 상호 공유하기 위한 인터페이싱 방식일 수 있다. 예를 들면, 시리얼 인터페이스(1220)에 의해서 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼(1125)와 스토리지 장치(1200)의 내부 버퍼(미도시)를 하나의 메모리 맵으로 관리할 수 있을 것이다.
스토리지 컨트롤러(1240)는 호스트(1100)와 스토리지 장치(1200) 사이에서 인터페이싱을 제공한다. 스토리지 컨트롤러(1240)는 호스트(1100)로부터의 요청에 따라 불휘발성 메모리 장치(1260)에 유저 데이터를 기입할 수 있다. 이때, 호스트(1100)에서 제공되는 쓰기 데이터는 호스트 메모리 버퍼(1125)에 버퍼링된 후에 불휘발성 메모리 장치(1260)에 기입될 것이다. 더불어, 스토리지 컨트롤러(1240)는 호스트(1100)의 명령어에 응답하여 불휘발성 메모리 장치(1260)에 저장된 데이터를 호스트(1100)로 출력할 수 있다. 불휘발성 메모리 장치(1260)에 저장된 데이터는 스토리지 컨트롤러(1240)에 의해서 호스트 메모리 버퍼(1125)에 저장된 후에 다시 호스트(1100)에 전달될 수 있다.
스토리지 컨트롤러(1240)는 에러 정정 부호의 처리를 위해 제 1 에러 정정 엔진(1242) 및 제 2 에러 정정 엔진(1244)을 포함할 수 있다. 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼(1225)에 저장되는 버퍼링 데이터의 에러 정정 부호의 인코딩 및 디코딩을 위한 제 1 에러 정정 엔진(1242)을 포함한다. 스토리지 컨트롤러(1240)는 불휘발성 메모리 장치(1260)와 교환되는 데이터의 에러 정정 부호 인코딩 및 디코딩을 위해 제 2 에러 정정 엔진(1244)을 포함한다.
불휘발성 메모리 장치(1260)는 스토리지 장치(1200)의 저장 매체로 제공된다. 불휘발성 메모리 장치(1260)는 플래시 메모리, PRAM, MRAM, ReRAM, FRAM 등과 같은 불휘발성 메모리를 포함할 수 있다.
이상의 본 발명의 실시 예에 따르면, 스토리지 장치(1200)는 호스트 메모리 버퍼(1125)에 저장되는 버퍼링 데이터에 대한 에러 정정 부호를 처리할 수 있다. 버퍼링 데이터에는 실질적으로 불휘발성 메모리 장치(1260)를 관리하기 위한 맵핑 데이터나 메타 데이터가 포함된다. 버퍼링 데이터에 에러가 발생하는 경우, 그리고 이러한 에러가 치유되지 못하고 전파되는 경우에는 실질적으로 스토리지 장치(1200) 전체의 제어나 관리에 문제가 될 수밖에 없다. 따라서, 호스트(1100)에 위치하지만 스토리지 장치(1200)의 버퍼로 할당된 호스트 메모리 버퍼(1225)의 신뢰성 보장이 중요할 수밖에 없다. 본 발명의 스토리지 장치(1200)는 버퍼링 데이터의 에러 관리를 전담하는 제 1 에러 정정 엔진(1242)을 사용하여 이러한 심각한 문제에 대처할 수 있다.
도 2는 도 1에 도시된 호스트(1100)의 구성을 예시적으로 보여주는 블록도이다. 도 2를 참조하면, 호스트(1100)는 프로세서(1110), 호스트 메모리(1120), 그리고 인터페이스 회로(1130)를 포함할 수 있다.
프로세서(1110)는 호스트 메모리 버퍼(120)에 로드된 다양한 소프트웨어(응용 프로그램, 운영 체제, 장치 드라이버)를 실행한다. 프로세서(1110)는 운영 체제(OS), 응용 프로그램들(Application Program)을 실행할 수 있다. 프로세서(1110)는 동종 멀티-코어 프로세서(Homogeneous Multi-Core Processor) 또는 이종 멀티-코어 프로세서(Heterogeneous Multi-Core Processor)로 제공될 수도 있을 것이다.
호스트 메모리(1120)는 호스트(1100)에 구비되는 메모리이다. 호스트 메모리(1120)는 예를 들면 DRAM이나 SRAM과 같은 휘발성 메모리로 제공되거나 불휘발성 메모리로도 구현될 수 있다. 하지만, 호스트 메모리(1120)의 구현은 목적에 따라 다양하게 구현될 수 있음은 잘 이해될 것이다. 호스트 메모리(1120)는 호스트(1100)에 의해 요청되는 데이터를 저장하거나 출력할 수 있다. 더불어, 호스트 메모리(1120)에는 스토리지 장치(1200)의 버퍼로 할당되는 호스트 메모리 버퍼(1125)가 포함된다. 호스트 메모리 버퍼(1125)는 호스트 메모리(1120)의 특정 메모리 영역에 할당되거나, 스토리지 장치(1200)의 정보에 따른 최적 사이즈로 호스트 메모리(1120) 상에서 할당될 수 있을 것이다.
호스트 메모리 버퍼(1125)는 호스트 메모리(1120)의 일부가 스토리지 장치(1200)의 버퍼로 사용되도록 할당된 영역이다. 따라서, 스토리지 장치(1200)는 별도의 내부 버퍼(Internal Buffer) 없이 호스트 메모리 버퍼(1125)를 사용할 수 있다. 스토리지 장치(1200)에 구비되는 내부 버퍼의 경우, 비용, 장치 사이즈, 설계상 한계 등과 같은 다양한 이슈들 때문에, 충분한 용량을 제공하기 어려울 수 있다. 대신, 호스트 메모리 버퍼(1125)의 자원을 공유할 수 있다면, 스토리지 장치(1200)는 충분한 버퍼 용량을 확보할 수 있을 것이다.
호스트 메모리 버퍼(1125)에 저장되는 버퍼링 데이터는 에러 정정 부호로 인코딩된 후에 저장된다. 따라서, 버퍼링 데이터는 ECC 인코딩에 따른 부호어를 포함하거나, 패리티를 포함할 수 있다. 스토리지 장치(1200)는 버퍼링 데이터를 에러 정정 부호 인코딩을 수행하여 호스트 메모리 버퍼(1125)에 저장할 것이다. 예를 들면, 스토리지 장치(1200)는 에러 정정 부호 인코딩(ECC Encoding)을 수행한 후, 데이터는 호스트 메모리 버퍼(1125)의 데이터 영역에 저장하고, 패리티는 ECC 영역에 저장할 수도 있을 것이다. 하지만, 에러 정정 부호가 데이터와 패리티를 구분하지 않는 방식인 경우, 데이터 영역이나 패리티 영역의 구분없이 호스트 메모리 버퍼(1125)에 저장될 것이다.
인터페이스 회로(1130)는 호스트(1100)와 스토리지 장치(1200) 사이에서 물리적 연결을 제공한다. 즉, 인터페이스 회로(1130)는 호스트(1100)에서 발행하는 다양한 접근 요청에 대응하는 명령어, 어드레스, 데이터 등을 스토리지 장치(1200)와의 인터페이싱 방식으로 변환한다. 인터페이스 회로(1130)의 프로토콜로는 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) 중 적어도 어느 하나일 수 있다.
이상에서 설명된 호스트(1100)는 호스트 메모리(1120)의 일부 영역을 스토리지 장치(1200)의 호스트 메모리 버퍼(1125)로 할당한다. 하지만, 호스트(1100)는 호스트 메모리 버퍼(1125)로 할당된 호스트 메모리(1120)의 일부 영역에 대해서는 데이터 관리에 관한 권한을 갖지 못한다. 호스트 메모리 버퍼(1125)로 할당된 호스트 메모리(1120)의 일부 영역은 스토리지 장치(1200)의 스토리지 컨트롤러(1240)에 의해서 관리된다. 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼(1125)에 저장되는 버퍼링 데이터의 신뢰성을 보장하기 위한 제 1 에러 정정 부호 엔진(1242)을 구비할 수 있다.
도 3은 도 1에 도시된 스토리지 컨트롤러(1240)의 구성을 예시적으로 보여주는 블록도이다. 도 3을 참조하면, 본 발명의 스토리지 컨트롤러(1240)는 CPU(1241), HMB 컨트롤러(1243), 제 2 에러 정정 엔진(1244), 그리고 플래시 인터페이스(1245)를 포함할 수 있다. 특히, HMB 컨트롤러(1243)는 호스트 버퍼 메모리(1125)에 저장되는 데이터를 위한 제 1 에러 정정 엔진(1242)을 포함할 수 있다.
CPU(1241)는 스토리지 장치(1100)의 다양한 메모리 관리 동작을 수행할 수 있다. 예를 들면, CPU(1241)는 호스트(1100)로부터의 명령어에 응답하여 불휘발성 메모리 장치(1260)에 데이터를 기입하기 위해 HMB 컨트롤러(1243) 및 플래시 인터페이스(1245)를 제어할 수 있다. HMB 컨트롤러(1243)는 DMA를 통해서 전달되는 버퍼링 데이터에 대한 ECC 인코딩을 수행할 것이다. HMB 컨트롤러(1243)는 ECC 인코딩된 버퍼링 데이터를 호스트 메모리 버퍼(1125)에 기입할 것이다. 버퍼링 데이터가 필요한 경우, CPU(1241)는 호스트 메모리 버퍼(1125)로부터 버퍼링 데이터를 읽어오도록 HMB 컨트롤러(1243)에 요청한다. 그러면 HMB 컨트롤러(1243)는 버퍼링 데이터를 호스트 메모리 버퍼(1125)로부터 읽어온다. HMB 컨트롤러(1243)는 읽어온 버퍼링 데이터에 대한 ECC 디코딩을 수행한다. ECC 디코딩을 통해서 버퍼링 데이터에 포함되는 에러가 검출 또는 정정될 수 있을 것이다.
CPU(1241)는 ECC 디코딩된 버퍼링 데이터를 사용하여 불휘발성 메모리 장치(1260)를 관리할 수 있다. 또는, 버퍼링 데이터가 불휘발성 메모리 장치(1260)에 기록되는 데이터인 경우, CPU(1241)는 불휘발성 메모리 장치(1260)에 버퍼링 데이터가 기입되도록 플래시 인터페이스(1245)를 제어할 수 있다. 플래시 인터페이스(1245)는 CPU(1241)의 제어에 따라 버퍼링 데이터를 불휘발성 메모리 장치(1260)에 프로그램한다.
이상에서는 불휘발성 메모리 장치(1260)에 버퍼링 데이터를 쓰는 경우에 CPU(1241)의 제어 동작이 설명되었다. 하지만, 호스트(1100)로부터 불휘발성 메모리 장치(1260)에 저장된 데이터의 읽기 요청을 수신한 경우에도 CPU(1241)는 유사한 방식으로 HMB 컨트롤러(1243)와 플래시 인터페이스(1245)를 제어할 수 있다. 하지만, 불휘발성 메모리 장치(1260)로부터의 데이터 읽기 동작에도 CPU(1241)는 플래시 인터페이스(1245)가 먼저 불휘발성 메모리 장치(1260)로부터 데이터를 독출하도록 제어할 것이다. 이어서, 독출된 읽기 데이터에 대한 호스트 메모리 버퍼(1125)로의 버퍼링 및 호스트(1100)로의 출력을 위해 CPU(1241)는 HMB 컨트롤러(1243)를 제어할 것이다. 호스트 메모리 버퍼(1125)로의 버퍼링시 HMB 컨트롤러(1243)는 제 1 에러 정정 엔진(1242)을 사용하여 항상 ECC 인코딩 및 ECC 디코딩을 수행할 것이다.
더불어, 호스트 메모리 버퍼(1125)에 저장되는 버퍼링 데이터는 스토리지 장치(1200)를 관리하기 위한 맵핑 데이터나 메타 데이터에 한정되지 않음은 잘 이해될 것이다. 즉, 호스트 메모리 버퍼(1125)에 저장되는 버퍼링 데이터는 호스트(1100)에 의해서 스토리지 장치(1200)에 쓰기 요청되거나 읽기 요청되는 데이터가 일시적으로 저장된 데이터일 수도 있다.
도 4는 본 발명의 호스트 메모리 버퍼에 데이터를 저장하는 동작을 간략히 보여주는 순서도이다. 도 4를 참조하면, HMB 컨트롤러(1243)는 호스트 메모리 버퍼(1125)에 접근하기 위해서는 반드시 ECC 인코딩 또는 ECC 디코딩을 수행한다.
S110 단계에서, HMB 컨트롤러(1243)는 CPU(1241)로부터 제공되는 호스트 메모리 버퍼(1125)로의 접근 요청을 검출 또는 수신한다. 예를 들면, HMB 컨트롤러(1243)는 내부의 레지스터에 CPU(1241)가 기입하는 명령어를 식별하여 호스트 메모리 버퍼(1125)로의 접근 요청을 확인할 수 있다.
S120 단계에서, HMB 컨트롤러(1243)는 호스트 메모리 버퍼(1125)로의 접근 요청의 형태를 식별한다. 예를 들면, HMB 컨트롤러(1243)는 CPU(1241)에서 전달한 접근 요청이 쓰기 동작인지 또는 읽기 동작인지 식별할 수 있다. 만일, 호스트 메모리 버퍼(1125)로의 접근 요청이 읽기 동작에 해당하면, 절차는 S130 단계로 이동한다. 반면, 호스트 메모리 버퍼(1125)로의 접근 요청이 쓰기 동작에 대응하면, 절차는 S160 단계로 이동할 것이다.
S130 단계에서, HMB 컨트롤러(1243)는 읽기 요청된 데이터를 호스트 메모리 버퍼(1125)의 지정된 영역으로부터 읽어온다. 이때, 호스트 메모리 버퍼(1125)로부터 읽혀진 데이터는 ECC 인코딩을 통해서 생성된 부호어나 패리티가 포함될 것이다. HMB 컨트롤러(1243)는 DMA(미도시)를 통해서 호스트 메모리 버퍼(1125)로부터 데이터를 수신할 수 있다.
S140 단계에서, HMB 컨트롤러(1243)는 호스트 메모리 버퍼(1125)로부터의 독출 데이터에 대한 ECC 디코딩을 수행하도록 제 1 에러 정정 엔진(1242)을 제어한다. ECC 디코딩을 통해서 독출된 데이터에 에러가 존재하면, HMB 컨트롤러(1243)는 검출된 에러를 정정하기 위한 연산을 수행할 것이다. 특히, 검출된 에러가 정정이 불가한 경우라면, HMB 컨트롤러(1243)는 읽기 재시도(Read retry)와 같은 처리를 수행할 수도 있다.
S150 단계에서, HMB 컨트롤러(1243)는 ECC 디코딩에 의해서 처리된 독출된 데이터를 CPU(1241)에 반환한다. 그러면, CPU(1241)는 독출된 데이터를 참조하여 스토리지 장치(1200)의 제반 메모리 관리 동작을 수행할 것이다. 예를 들면, 독출된 데이터가 맵핑 데이터인 경우, CPU(1241)는 맵핑 데이터를 이용하여 불휘발성 메모리 장치(1260)에 접근할 것이다. 호스트 메모리 버퍼(1125)로부터의 독출 데이터가 불휘발성 메모리 장치(1260)에 프로그램될 유저 데이터일 수도 있다. 이 경우, CPU(1241)는 유저 데이터를 제 2 에러 정정 엔진(1244, 도 3 참조)을 사용하여 ECC 인코딩한 후에 불휘발성 메모리 장치(1260)에 프로그램하도록 플래시 인터페이스(1245)를 제어할 수 있다.
S160 단계에서, HMB 컨트롤러(1243)는 호스트 메모리 버퍼(1125)에 쓰기 요청된 데이터를 제 1 에러 정정 엔진(1242)을 사용하여 ECC 인코딩한다. 제 1 에러 정정 엔진(1242)을 통해서 쓰기 요청된 데이터는 부호어로 인코딩되거나 패리티 비트를 포함하게 될 것이다.
S170 단계에서, HMB 컨트롤러(1243)는 ECC 인코딩에 의해서 처리된 쓰기 데이터를 호스트 메모리 버퍼(1125)의 지정된 영역에 기입할 것이다. HMB 컨트롤러(1243)는 DMA를 통해서 쓰기 데이터를 호스트 메모리 버퍼(1125)에 전달할 수도 있을 것이다.
이상에서는, 본 발명의 실시 예에 따른 HMB 컨트롤러(1243)에 의한 호스트 메모리 버퍼(1125)의 접근 방법이 간략히 설명되었다. 특히, HMB 컨트롤러(1243)는 호스트 메모리 버퍼(1125)에 저장되는 버퍼링 데이터를 처리하기 위해 별도의 제 1 에러 정정 엔진(1242)을 가질 수 있다. 호스트 메모리 버퍼(1125)에 버퍼링되는 데이터를 위한 전용의 에러 정정 수단을 구비함으로써 버퍼링 데이터의 높은 신뢰성을 확보할 수 있다.
도 5는 도 3에 도시된 제 1 에러 정정 엔진의 예시를 간략히 보여주는 블록도이다. 도 5를 참조하면, 제 1 에러 정정 엔진(1242)은 독출된 데이터로부터 신드롬을 생성하고, 신드롬을 사용하여 에러 위치를 검출하는 방식을 사용할 수 있다. 여기서, BCH 부호(Bose-Chaudhuri Hocquenghem code) 방식의 제 1 에러 정정 엔진(1242)이 설명되었지만, 에러 위치를 검출할 수 있는 다른 다양한 에러 정정 부호 방식들이 본 발명의 기술에 사용될 수 있음은 잘 이해될 것이다. 제 1 에러 정정 엔진(1242)은 제 1 버퍼(121), 신드롬 계산 블록(122), 치엔 서치 블록(123), 에러 어드레스 발생기(124), 정정부(125), 그리고 제 2 버퍼(126)를 포함할 수 있다.
제 1 버퍼(121)는 호스트 메모리 버퍼(1125)로부터 전송되는 부호어 단위의 독출 데이터 R(x)를 저장한다. 제 1 버퍼(121)에 저장된 데이터 R(x)는 신드롬 계산 블록(122)에 제공될 것이다.
신드롬 계산 블록(122)은 독출 데이터 R(x)를 제공받아 신드롬 S(x)를 계산한다. 예를 들면, 신드롬 S(x)는 제공되는 독출 데이터 R(x)에 패리티 검출 다항식 H(x)를 곱함으로써 계산될 수 있다. 패리티 검출 다항식 H(x)은 생성 다항식 G(x)의 근을 적용하여 만들어진다. 신드롬 S(x)을 통해서, 독출 데이터 R(x)의 에러 존재 여부가 검출된다. 신드롬 S(x)은 데이터 R(x)에 대한 제반 에러 정보를 포함한다. 즉, 신드롬 S(x)에는 에러의 위치와 패턴 및 에러의 사이즈까지 포함된다. 따라서, 신드롬 S(x)를 통해서 독출 데이터 R(x)에 대한 제반 에러 비트의 검출, 에러의 정정 가능성 판단, 에러의 정정 연산이 이루어질 수 있다.
치엔 서치 블록(123)은 신드롬 S(x)를 사용하여 에러 정정 벡터 E(x)를 생성할 수 있다. 신드롬 계산 블록(122)에 의해서 계산된 신드롬 S(x)는 도시되지는 않았지만, KES 블록(Key Equation Solver Block)으로 전달될 수 있다. KES 블록에 의해서 신드롬 S(x)로부터 에러 위치 다항식(Error Location Polynomial) σ(x)와 에러 패턴 다항식 ω(x)이 생성될 수 있다. 치엔 서치 블록(123)은 에러 위치 다항식의 근을 계산한다. 그리고 에러 위치 다항식을 통해서 검색된 에러 위치들 각각에 대응하는 에러의 크기를 계산한다. 치엔 서치 블록(143은 치엔 서치 알고리즘(Chien Search Algorithm)을 통해 독출 데이터 R(x)의 에러 위치와 에러 크기를 구하면, 이러한 에러를 정정하기 위한 에러 정정 벡터 E(x)를 출력한다. 에러 정정 벡터 E(x)에는 전달된 부호어 상에서의 에러 위치 정보를 포함한다.
에러 어드레스 발생기(124)는 에러 정정 벡터 E(x)를 사용하여 페이지 버퍼(130)에서 덮어쓰기 되어야 할 부분 데이터의 어드레스 정보를 생성할 수 있다. 에러 어드레스 발생기(124)는 정정된 데이터로 덮어쓰기 되어야 하는 페이지 버퍼(130)의 위치에 대응하는 페이지 버퍼 어드레스(PB_ADD)를 생성한다.
정정부(125)는 에러 정정 벡터 E(x)를 이용하여 에러가 존재하는 데이터를 정정한다. 정정부(125)는 제 1 버퍼(121)에 저장된 독출 데이터 R(x)와 치엔 서치 블록(123)에 의해서 계산된 에러 정정 벡터 E(x)에 대한 배타적 논리합(XOR) 연산을 수행하여 독출 데이터 R(x)에 포함된 에러를 정정할 수 있다. 에러가 정정된 데이터는 제 2 버퍼(126)에 저장될 것이다.
도 6은 본 발명의 실시 예에 따른 호스트 메모리 버퍼를 관리하는 방법을 보여주는 도면이다. 도 6을 참조하면, 스토리지 장치(1200)는 호스트 메모리 버퍼(1125)로부터 독출되는 데이터의 에러 정정 또는 리페어 기능을 수행할 수 있다. 여기서, 스토리지 컨트롤러(1240)가 호스트 메모리 버퍼(1125)로부터 독출되는 데이터를 불휘발성 메모리 장치(1260)에 기입하는 경우를 예로 들어 설명하기로 한다.
호스트 메모리 버퍼(1125)로부터의 독출 데이터는 시리얼 인터페이스(1220)를 경유하여 스토리지 컨트롤러(1240)에 전달된다. 호스트 메모리 버퍼(1125)에 저장되는 모든 데이터는 ECC 인코딩이 적용된 상태이다. 더불어, 도시되지는 않았지만, 시리얼 인터페이스(1220)를 위시한 스토리지 장치(1200)의 프론트 엔드(Front End) 장치에는 DMA가 포함될 수 있다. DMA를 통해서 호스트 메모리 버퍼(1125)의 데이터는 스토리지 컨트롤러(1240)에 전달될 수 있을 것이다. 이러한 데이터의 전달은 도면의 기호 ①로 도시되어 있다.
스토리지 컨트롤러(1240)에 전달된 호스트 메모리 버퍼(1125)로부터 전달된 독출 데이터는 제 1 에러 정정 엔진(1242)에 의해서 ECC 디코딩 처리된다. 즉, 호스트 메모리 버퍼(1125)와 교환되는 데이터의 ECC 인코딩 및 ECC 디코딩을 전담하기 위해 마련된 제 1 에러 정정 엔진(1242)을 사용하여 독출 데이터가 디코딩된다. 이때, 호스트 메모리 버퍼(1125)로부터의 독출 데이터에 에러가 존재하는지 검출된다. 만일, 호스트 메모리 버퍼(1125)로부터의 독출 데이터에 에러가 존재하지 않는 경우, 스토리지 컨트롤러(1240)는 독출 데이터를 이용하여 메모리 관리 동작을 수행할 것이다. 더불어, 독출 데이터를 불휘발성 메모리 장치(1260)에 업데이트해야 하는 경우, 스토리지 컨트롤러(1240)는 제 2 에러 정정 엔진(1244)을 사용하여 독출 데이터를 인코딩할 것이다. 하지만, 호스트 메모리 버퍼(1125)로부터의 독출 데이터에 정정 가능한 에러가 존재하는 경우에는 에러 정정 연산이 수행된다. 에러가 정정된 독출 데이터가 메모리 관리 동작에 사용되거나, 불휘발성 메모리 장치(1260)로의 프로그램을 위해 제 2 에러 정정 엔진(1244)으로 전달될 것이다. 이러한 데이터의 전달은 도면의 기호 ②로 도시되어 있다.
하지만, 호스트 메모리 버퍼(1125)로부터의 독출 데이터에 정정 불가한 에러가 존재하는 경우에는, 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼(1125)로부터 지정된 영역의 데이터에 대한 읽기 재시도(Read retry)를 수행할 수 있다. 만일, 제한된 횟수의 읽기 재시도에도 정정 불가한 에러가 지속적으로 검출되는 경우, 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼(1125)의 해당 영역에 대한 메모리 맵을 조정하도록 호스트(1100)에 요청할 수 있다. 즉, 정정 불가한 에러가 검출되는 호스트 메모리 버퍼(1125)의 어드레스를 정상적인 메모리 영역으로 리맵핑(Remapping)할 수 있을 것이다. 그리고 정정 불가한 에러가 검출되는 호스트 메모리 버퍼(1125)의 영역을 맵아웃(Map out)시켜, 추후에 발생할 수 있는 접근 시도를 차단할 수 있다.
호스트 메모리 버퍼(1125)로부터의 독출 데이터에 대한 제 1 에러 정정 엔진에 의한 처리가 완료되면, 독출 데이터는 제 2 에러 정정 엔진(1244)에 전달될 수 있다. 제 2 에러 정정 엔진(1244)은 불휘발성 메모리 장치(1260)와 교환되는 모든 데이터에 대한 에러를 검출하고 정정할 수 있다. 제 2 에러 정정 엔진(1244)에 의해서 ECC 인코딩된 데이터는 불휘발성 메모리 장치(1260)에 프로그램된다. 이러한 데이터의 전달은 도면의 기호 ③으로 도시되어 있다.
이상에서는 호스트 메모리 버퍼(1125)로부터의 독출 데이터를 불휘발성 메모리 장치(1260)에 저장하는 경우의 제반 처리 과정이 설명되었다. 이러한 시나리오는 본 발명의 제 1 에러 정정 엔진(1242)과 제 2 에러 정정 엔진(1244)의 기능을 설명하기 위해 사용한 예시일 뿐이다. 호스트 메모리 버퍼(1125)로부터의 독출 데이터는 맵핑 데이터나 메타 데이터일 수 있다. 따라서, 독출 데이터는 불휘발성 메모리 장치(1260)에 저장되지 않을 수도 있다.
도 7은 본 발명의 실시 예에 따른 호스트 메모리 버퍼로부터 데이터를 독출하는 과정을 보여주는 순서도이다. 도 7을 참조하면, 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼(1125)로부터 수신된 데이터에 대해서 제 1 에러 정정 엔진(1242)을 사용하여 ECC 디코딩을 수행한다. 그리고 ECC 디코딩의 결과에 따라 다양한 메모리 관리 동작을 수행할 수 있다.
S210 단계에서, 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼(1125)로부터의 독출 데이터를 수신한다. 특히, 스토리지 컨트롤러(1240)에 포함되는 호스트 메모리 버퍼(1125)를 전담하여 제어하는 HMB 컨트롤러(1243)가 독출 데이터를 수신할 수 있다.
S220 단계에서, HMB 컨트롤러(1243)는 수신된 독출 데이터에 대한 ECC 디코딩을 수행한다. 수신된 독출 데이터에는 ECC 인코딩에 의해서 생성된 패리티가 포함될 수 있다. 또는, 수신된 독출 데이터는 ECC 인코딩에 의해서 부호어 형태로 전달될 수 있다. 특히, HMB 컨트롤러(1243)는 제 1 에러 정정 엔진(1242)을 사용하여 ECC 디코딩을 수행할 수 있을 것이다.
S230 단계에서, HMB 컨트롤러(1243)는 ECC 디코딩의 결과에 따른 동작 분기를 수행한다. 만일, 호스트 메모리 버퍼(1125)로부터의 독출 데이터에 에러가 검출되지 않으면, 절차는 S290 단계로 이동할 것이다. 반면, 호스트 메모리 버퍼(1125)로부터의 독출 데이터에 에러가 존재하는 것으로 검출되면, 절차는 S240 단계로 이동할 것이다.
S240 단계에서, HMB 컨트롤러(1243)는 검출된 에러가 정정 가능한지의 여부에 따라 동작 분기를 수행한다. 예를 들면, 독출 데이터의 에러 비트 수가 정정 가능한 경우, 절차는 S280 단계로 이동한다. 반면, 독출된 데이터의 에러 비트 수가 정정 불가한 수에 해당하는 경우, 절차는 S250 단계로 이동할 것이다.
S250 단계에서, HMB 컨트롤러(1243)는 독출된 데이터의 에러 정정이 불가하기에, 호스트 메모리 버퍼(1125)에 대한 읽기 재시도를 수행할 것이다. 그리고 호스트 메모리 버퍼(1125)로부터 읽기 재시도를 통해서 수신된 독출 데이터가 HMB 컨트롤러(1243)에 전달될 것이다.
S260 단계에서, HMB 컨트롤러(1243)는 호스트 메모리 버퍼(1125)로부터 읽기 재시도를 통한 독출 데이터에 대한 ECC 디코딩을 수행할 것이다. ECC 디코딩의 결과, 에러가 존재하지만 정정 가능한 경우, 절차는 S280 단계로 이동한다. 반면, 읽기 재시도를 통해 독출된 데이터에도 여전히 정정 불가한 에러가 존재하는 경우, 절차는 S270 단계로 이동한다.
S270 단계에서, HMB 컨트롤러(1243)는 스토리지 컨트롤러(1240)의 CPU(1241)에 읽기 실패(Read fail)를 통지한다. 그러면, 스토리지 컨트롤러(1240)는 읽기 실패 정보를 기초로 메모리 관리 정책을 실행할 것이다. 즉, 스토리지 컨트롤러(1240)는 호스트(1100)에 읽기 실패를 통지하고, 새로운 호스트 메모리 버퍼(1125)를 할당하도록 요청할 수 있다. 그러면 호스트(1100)는 HMB 컨트롤러(1243)는 정정 불가한 에러가 존재하는 호스트 메모리 버퍼(1125)의 데이터 영역을 리페어할 수 있다. 예를 들면, 호스트(1100)는 정정 불가한 에러가 존재하는 호스트 메모리 버퍼(1125)의 일부 영역을 접근 불가한 메모리 영역으로 지정하거나, 해당 영역을 다른 정상적인 메모리 영역으로 대체할 수 있을 것이다.
S280 단계에서, HMB 컨트롤러(1243)는 독출 데이터의 검출된 에러를 정정한다. 예를 들면, HMB 컨트롤러(1243)는 제 1 에러 정정 엔진(1242)을 사용하여 독출 데이터에서 검출된 정정 가능한 에러를 정정한다.
S290 단계에서, HMB 컨트롤러(1243)는 에러가 정정된 데이터를 CPU(1241)로 반환한다. 그러면, CPU(1241)는 더 이상 에러가 존재하지 않는 독출 데이터를 사용하여 메모리 관리 동작을 수행할 수 있다. 또는, CPU(1241)는 에러가 존재하지 않는 독출 데이터를 다시 불휘발성 메모리 장치(1245)로 저장하기 위한 조작이나, 호스트(1100)로 전송하기 위한 메모리 관리 동작을 수행할 수도 있을 것이다.
이상에서는 본 발명의 호스트 메모리 버퍼(1125)로부터 수신된 독출 데이터의 처리 과정이 설명되었다. 호스트 메모리 버퍼(1125)로부터의 독출 데이터는 대부분 메모리 관리 동작에 사용하는 맵핑 데이터나 메타 데이터일 수 있다. 이러한 데이터에 에러가 존재하는 경우, 에러 전파에 따라 스토리지 장치(1200)에 치명적일 수 있다. 하지만, 본 발명의 에러 정정 절차에 의해, 호스트 메모리 버퍼(1125)로부터의 독출 데이터의 신뢰성이 보장될 수 있다.
도 8은 본 발명의 호스트에 의해서 수행되는 호스트 메모리 버퍼의 리페어 동작을 예시적으로 보여주는 블록도이다. 도 8을 참조하면, 읽기 실패 통지에 응답하여 호스트(1100)는 호스트 메모리 버퍼(1125)의 읽기 실패 영역에 대해서 리페어를 수행할 수 있다.
호스트(1100)는 정정 불가한 에러가 특정 횟수 이상으로 반복적으로 검출되거나, 읽기 실패가 반복되는 호스트 메모리 버퍼(1125)의 읽기 실패 영역을 다른 정상적인 영역으로 대체시킬 수 있다. 이러한 리페어 방법은 ①로 도시되어 있다. 이러한 읽기 실패 영역에 대한 리페어를 위해서, 호스트(1100)는 호스트 메모리 버퍼(1125)에 대한 어드레스 맵핑 테이블을 재설정해야 한다. 즉, 페일 영역의 어드레스를 대체된 정상 영역의 어드레스로 맵핑하면, 읽기 실패 영역으로의 접근 시도는 실제로는 정상 영역으로 접근된다.
또는, 호스트(1100)는 정정 불가한 에러가 특정 횟수 이상으로 반복적으로 검출되거나, 읽기 실패가 반복되는 호스트 메모리 버퍼(1125)의 읽기 실패 영역을 맵핑 테이블에서 제외(Mapout)시킬 수 있다. 이러한 리페어 방법은 ②로 도시되어 있다. 호스트(1100)는 호스트 메모리 버퍼(1125)에 대한 어드레스 맵핑 테이블에서 페일 영역에 대응하는 어드레스를 무효화 또는 삭제하여, 페일 영역으로의 접근을 원천적으로 차단시킬 수 있다.
도 9는 호스트 메모리 버퍼와 스토리지 장치 사이에서 발생하는 데이터 교환 절차를 간략히 보여주는 도면이다. 도 9를 참조하면, 스토리지 장치(1200)가 호스트 메모리 버퍼(1125)로부터 데이터를 읽어내는 절차가 설명될 것이다.
S310 단계에서, 스토리지 장치(1200)가 호스트 메모리 버퍼(1125)에 저장된 데이터의 읽기 요청을 전송한다.
S320 단계에서, 호스트 메모리 버퍼(1125)는 지정된 메모리 영역의 데이터를 스토리지 장치(1200)로 전송할 것이다. 이때, 호스트 메모리 버퍼(1125)로부터 스토리지 장치(1200)로 전송되는 독출 데이터(RD)는 데이터와 ECC 패리티를 포함하는 부호어를 포함할 수 있을 것이다. 특히, 독출 데이터(RD)는 시리얼 인터페이스 방식의 패킷 형태로 전송될 수도 있음은 잘 이해될 것이다.
S330 단계에서, 스토리지 장치(1200)의 HMB 컨트롤러(1243)는 수신된 독출 데이터(RD)에 대한 ECC 디코딩을 수행한다. HMB 컨트롤러(1243)는 앞서 설명한 제 1 에러 정정 엔진(1242)을 사용하여 ECC 디코딩을 수행할 수 있을 것이다. 만일, 호스트 메모리 버퍼(1125)로부터 제공된 독출 데이터(RD)에 에러가 검출되지 않으면(No 방향), 절차는 S360 단계로 이동할 것이다. 반면, 호스트 메모리 버퍼(1125)로부터의 독출 데이터(RD)에 에러가 존재하는 것으로 검출되면(Yes 방향), 절차는 S340 단계로 이동할 것이다.
S340 단계에서, HMB 컨트롤러(1243)는 검출된 에러의 정정 가능 여부에 따라 동작 분기를 수행한다. 독출 데이터의 에러 비트 수가 정정 가능한 경우(Yes 방향), 절차는 S345 단계로 이동한다. 반면, 독출 데이터의 에러 비트 수가 정정 불가한 경우, 절차는 S350 단계로 이동할 것이다.
S345 단계에서, HMB 컨트롤러(1243)는 독출 데이터의 에러를 정정한다. 이어서, S360 단계에서, 스토리지 컨트롤러(1240)는 HMB 컨트롤러(1243)로부터 전달된 독출 데이터를 처리할 것이다. 예를 들면, 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼(1125)로부터 수신된 독출 데이터를 사용하여 메모리 관리 동작을 수행하거나, 독출 데이터를 호스트(1100)나 불휘발성 메모리 장치(1260)에 전달할 수도 있을 것이다.
반면, S350 단계에서, 현재 수행된 호스트 메모리 버퍼(1125)의 독출 동작의 횟수(nRR)가 임계치(TH)를 초과한 재독출 횟수에 인지를 검출한다. 만일, 현재 수행된 호스트 메모리 버퍼(1125)의 독출 동작의 횟수(nRR)가 임계치(TH)보다 작거나 같으면, 절차는 읽기 재시도(Read Retry)를 위한 절차로 이동한다. 반면, 현재 수행된 호스트 메모리 버퍼(1125)의 독출 동작의 횟수(nRR)가 임계치(TH)보다 큰 경우, 절차는 S355 단계로 이동한다.
S355 단계에서, HMB 컨트롤러(1243)는 호스트 메모리 버퍼(1125)의 읽기 실패(Read fail)를 CPU(1241, 도 3 참조)에 통지할 것이다. 그러면, CPU(1241)는 읽기 실패 상황에 해당하는 메모리 관리 정책을 활성화할 수 있을 것이다.
도 10은 본 발명의 다른 실시 예에 따른 스토리지 장치의 특징을 보여주는 도면이다. 도 10을 참조하면, 스토리지 장치(1200)는 호스트 메모리 버퍼(1125)로부터 데이터가 전달될 때 발생하는 링크다운(Link down)과 같은 상태에서 발생하는 시스템 행(System hang)을 풀어줄 수 있다.
스토리지 컨트롤러(1240)의 요청에 따라 호스트 메모리 버퍼(1125)로부터의 독출 데이터가 스토리지 장치(1200)로 전송될 것이다. 호스트 메모리 버퍼(1125)로부터 전송되는 독출 데이터는 시리얼 인터페이스(1220)를 경유하여 스토리지 컨트롤러(1240)에 전달될 것이다. 독출 데이터는 시리얼 인터페이스(1220)를 통해서 전송되기 위하여 패킷 형태로 전송될 수 있다. 하지만, 시리얼 인터페이스(1220)에서 발생하는 오류나 전송 채널에 유입되는 노이즈에 의하여 패킷 전송이 중지되는 경우가 발생할 수 있다. 예를 들면, 하나의 패킷이 전송되는 중간에 일부 패킷만 전송되고, 패킷의 나머지 부분은 전송되지 못하게 되는 경우가 있다. 이 경우, 시리얼 인터페이스(1220)의 DMA는 패킷 수신을 완료하지 못하고, 시스템의 동작은 중지 상태가 될 수 있다. 이러한 상태를 DMA 중지(DMA Hang)라 칭하기로 한다. DMA 중지(DMA Hang)가 발생하면, 시리얼 인터페이스(1220)를 통한 데이터 전송이나 스토리지 장치(1200)의 제반 동작들이 중지될 수 있다.
본 발명의 스토리지 장치(1200)는 이런 DMA 중지(DMA Hang)를 해소하기 위해 전송이 중지된 패킷을 더미 데이터(또는 가비지 데이터)로 채워서 전송 패킷을 구성하여 시스템 행을 해제시킬 수 있다. 또는, 본 발명의 스토리지 장치(1200)는 전송이 중지된 패킷에 대한 에러 정정 연산을 수행하여 불완전 패킷을 복구할 수 있다. 불완전 패킷은 독출된 데이터를 포함하지 않지만 일단 패킷의 형태를 완성하고 있기에 DMA 중지는 해소시킬 수 있다.
먼저, 호스트 메모리 버퍼(1125)로부터 데이터가 전달될 때, 스토리지 컨트롤러(1240)는 시리얼 인터페이스(1220)에 데이터 전송이 중지되는 상태를 인지하게 될 것이다. 스토리지 컨트롤러(1240)는 시리얼 인터페이스(1220)의 링크다운(Link down)의 검출에 응답하여, 수신된 패킷의 소실된 부분을 더미 데이터로 채울 것이다. 그리고 더미 데이터를 사용하여 완성된 패킷을 DMA에 전달하면, DMA 중지 상태는 해소될 수 있다. 물론, 수신된 패킷은 무효 데이터로 처리되어야 한다.
다른 실시 예에서, DMA 중지(DMA Hang)가 발생하면, 스토리지 컨트롤러(1240)는 수신된 패킷의 일부분을 사용하여 ECC 디코딩을 수행할 수도 있을 것이다. 만일, ECC 디코딩의 결과, 소실된 패킷의 나머지 부분의 복구가 가능하면, 복구된 데이터를 수신 데이터로 처리할 수 있다. 그러면, DMA 중지 상태는 해소될 수 있다.
도 11은 링크다운 발생시 본 발명의 실시 예에 따른 스토리지 장치의 동작을 보여주는 순서도이다. 도 11을 참조하면, 스토리지 장치(1200)는 제 1 에러 정정 엔진을 사용하여 링크다운(Link down)이나 DMA 중지 상태를 해소시킬 수 있다.
S410 단계에서, 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼(1125)에 저장된 데이터의 읽기 요청을 전송한다. 그러면, 시리얼 인터페이스(1220)에 구비된 DMA에 의해서 호스트 메모리 버퍼(1125)의 지정된 메모리 위치에 대한 읽기 및 출력이 수행된다. 이때, 시리얼 인터페이스(1220)에 전송되는 데이터는 패킷 형태로 전달될 것이다.
S420 단계에서, 스토리지 컨트롤러(1240)는 시리얼 인터페이스(1220)는 DMA에 의해서 전송되는 독출 데이터를 패킷 단위로 수신할 것이다. 즉, 수신된 복수의 패킷들의 링크 정보를 사용하여 독출 데이터를 구성할 수 있을 것이다.
S430 단계에서, 스토리지 컨트롤러(1240)는 시리얼 인터페이스(1220)의 링크다운이나 DMA 중지를 모니터링한다. 하나의 패킷이 전송중인 상황에서 링크다운이 발생한 것으로 판단되면(Yes 방향), 절차는 S440 단계로 이동한다. 반면, 링크다운이나 DMA 중지가 발행하지 않은 경우(No 방향), 절차는 S450 단계로 이동한다.
S440 단계에서, 스토리지 컨트롤러(1240)는 전송중인 패킷의 수신된 부분만을 사용하여 ECC 디코딩을 수행할 수 있다. 만일, ECC 디코딩을 사용하여 패킷의 소실된 부분을 복구할 수 있다면, 스토리지 컨트롤러(1240)는 소실된 부분의 데이터를 복구할 것이다.
S450 단계에서, 스토리지 컨트롤러(1240)는 수신된 데이터를 불휘발성 메모리 장치(1260)에 저장하기 위한 추가 절차를 진행할 것이다.
이상에서는 링크다운이나 DMA 중지 발생시, 본 발명의 ECC 디코딩을 통해서 소실된 데이터를 복구함으로써, 링크다운이나 DMA 중지 문제를 해소시킬 수 있음이 설명되었다.
도 12는 링크다운 발생시 본 발명의 다른 실시 예에 따른 스토리지 장치의 동작을 보여주는 순서도이다. 도 12를 참조하면, 스토리지 장치(1200)는 더미 데이터를 사용하여 링크다운 상태나 DMA 중지 상태를 해소시킬 수 있다.
S510 단계에서, 스토리지 컨트롤러(1240)는 호스트 메모리 버퍼(1125)에 저장된 데이터의 읽기 요청을 전송한다. 그러면, 시리얼 인터페이스(1220)에 구비된 DMA에 의해서 호스트 메모리 버퍼(1125)의 지정된 메모리 위치에 대한 읽기 및 출력이 수행된다. 이때, 시리얼 인터페이스(1220)에 전송되는 데이터는 패킷 형태로 전달될 것이다.
S520 단계에서, 스토리지 컨트롤러(1240)는 시리얼 인터페이스(1220)는 DMA에 의해서 전송되는 독출 데이터를 패킷 단위로 수신할 것이다. 즉, 수신된 복수의 패킷들의 링크 정보를 사용하여 독출 데이터를 구성할 수 있을 것이다.
S530 단계에서, 스토리지 컨트롤러(1240)는 시리얼 인터페이스(1220)의 링크다운이나 DMA 중지를 모니터링한다. 하나의 패킷이 전송중인 상황에서 링크다운이 발생한 것으로 판단되면(Yes 방향), 절차는 S550 단계로 이동한다. 반면, 링크다운이나 DMA 중지가 발행하지 않은 경우(No 방향), 절차는 S540 단계로 이동한다.
S540 단계에서, 스토리지 컨트롤러(1240)는 수신된 데이터를 불휘발성 메모리 장치(1260)에 저장하기 위한 데이터 처리를 수행한다. 즉, 스토리지 컨트롤러(1240)는 수신된 데이터를 제 2 에러 정정 엔진(1244)을 사용하여 불휘발성 메모리 장치(1260)에 프로그램하기 위한 ECC 인코딩을 수행할 수 있을 것이다. 물론, 수신된 데이터는 호스트(1100)로 전송될 수도 있다.
S550 단계에서, 스토리지 컨트롤러(1240)는 수신된 패킷의 소실된 부분을 더미 비트들로 채우는 패킷 복구를 수행한다. 예를 들면, 패킷의 수신된 부분은 수신된 비트들로 유지하고, 수신되지 못한 소실된 부분은 논리 '1'로 채우는 방식으로 패킷을 재구성할 수 있다.
S560 단계에서, 스토리지 컨트롤러(1240)는 재구성된 하나의 패킷을 DMA에 제공하여 DMA 중지를 해제시킬 수 있다. 더불어, 재구성된 패킷은 실제로는 무효한 데이터임을 알려주기 위해서 데이터 소실 정보를 CPU(1241)에 전달할 수 있다.
이상에서는 링크다운이나 DMA 중지 발생시에 시스템 행 상태를 해소시킬 수 있는 본 발명의 스토리지 장치(1200)의 동작들이 설명되었다. 스토리지 장치(1200)가 호스트 메모리 버퍼(1125)에 대해서 마스터(Master)로서 작용함에 따라, 호스트 메모리 버퍼(1125)에 저장되는 데이터에 대해 호스트(1100)의 개입은 불가능하게 된다. 따라서, 호스트 메모리 버퍼(1125)에 저장되는 데이터의 전송중에 발생하는 링크다운이나 DMA 중지(DMA Hang)와 같은 상황을 해소하기 위한 호스트(1100)의 개입은 기대하기 어렵다. 본 발명의 스토리지 장치(1200)는 이러한 상황에서 전송되는 패킷의 복구나 에러 정정을 수행하여 시스템이 중지되는 상황을 미연에 방지할 수 있다.
도 13은 도 12에서 설명된 호스트 메모리 버퍼로 전송되는 데이터의 복구 방법을 설명하는 도면이다. 도 13을 참조하면, 호스트 메모리 버퍼(1125)로부터 스토리지 장치(1200)로 전송되는 패킷의 일부가 소실될 수 있다. 패킷의 소실은 DMA 중지나 링크다운과 같은 상태를 야기시킨다. 본 발명에서는 이러한 패킷의 소실에 의해서 발생되는 DMA 중지나 링크다운을 해소시킬 수 있다.
호스트 메모리 버퍼(1125)에서 스토리지 장치(1200)로 전송되는 데이터(1300)가 도시되어 있다. 호스트 메모리 버퍼(1125)에서 전송되는 데이터는 패킷 단위로 분리되어 전송될 수 있다. 하나의 패킷은 예를 들면 헤더(Header)와 페이로드(Payload) 등으로 구성될 수 있다. 각각의 패킷은 헤더에 포함되는 링크 정보를 이용하여 하나의 데이터 단위로 재구성된다.
전송된 패킷(1300)은 오류나 노이즈에 의한 링크다운(Link down) 발생시 전송된 패킷의 일부만이 스토리지 장치(1200)에 수신될 수 있다. 스토리지 장치(1200)는 링크다운에 의해서 패킷의 일부(1310)만을 수신할 수 있다. 그리고 패킷의 나머지 부분은 소실된 패킷 부분(1330)이 된다. 패킷의 소실에 따라 DMA 중지나 시스템 중지가 야기될 수 있다. 따라서, 본 발명의 스토리지 컨트롤러(1240)는 소실된 패킷 부분(1330)을 더미 비트로 채워서 하나의 패킷이 수신된 것으로 처리할 수 있다. 예를 들면, 소실된 패킷 부분(1330)을 더미 비트 '1'로 채워서 하나의 수신된 패킷으로 처리할 수 있다.
실제로 도시된 패킷은 더미 비트에 의해서 재구성된 패킷으로 소실된 패킷 부분(1330)이 더미 비트 부분(1335)으로 치환된다. 재구성된 패킷은 의미있는 데이터는 아니지만, DMA 중지나 링크다운시 발생하는 시스템 중지와 같은 상황을 해소시키는데 도움을 줄 수 있다.
도 14는 본 발명의 다른 실시 예에 따른 컴퓨터 시스템을 보여주는 블록도이다. 도 14를 참조하면, 다른 실시 예에 따른 컴퓨터 시스템(2000)은 호스트(2100)와 스토리지 장치(2200)를 포함한다. 호스트(2100)의 구성 및 기능은 도 1에서 설명되었으므로, 호스트(2100)에 대한 설명은 생략하기로 한다.
본 발명의 스토리지 장치(2200)는 호스트(2100)의 데이터 스토리지로 제공될 수 있다. 스토리지 장치(2200)는 시리얼 인터페이스(2220), 스토리지 컨트롤러(2240), 그리고 불휘발성 메모리 장치(2260)를 포함할 수 있다. 스토리지 장치(2200)는 호스트(2100)로부터 제공되는 명령어(CMD)에 응답하여 불휘발성 메모리 장치(2260)에 접근하거나, 호스트(2100)에 의해서 요청된 다양한 동작을 수행할 수 있다.
시리얼 인터페이스(2220)는 호스트(2100)와의 데이터 교환을 위한 스토리지 장치(2200)의 물리적 통신 채널로서 제공된다. 스토리지 컨트롤러(2240)는 호스트(2100)와 스토리지 장치(2200) 사이에서 인터페이싱을 제공한다. 스토리지 컨트롤러(2240)는 호스트(2100)로부터의 요청에 따라 불휘발성 메모리 장치(2260)에 데이터를 기입할 수 있다. 이때, 호스트(2100)에서 제공되는 쓰기 데이터는 호스트 메모리 버퍼(2125)에 버퍼링된 후에 불휘발성 메모리 장치(2260)에 기입될 것이다. 더불어, 스토리지 컨트롤러(2240)는 호스트(2100)의 명령어에 응답하여 불휘발성 메모리 장치(2260)에 저장된 데이터를 호스트(2100)로 출력할 수 있다. 불휘발성 메모리 장치(2260)에 저장된 데이터는 스토리지 컨트롤러(2240)에 의해서 호스트 메모리 버퍼(2125)에 저장된 후에 다시 호스트(2100)에 전달될 수 있다.
스토리지 컨트롤러(2240)는 에러 정정 부호(Error Correction Code)의 처리를 위해 통합 에러 정정 엔진(2245)을 포함할 수 있다. 스토리지 컨트롤러(2240)는 호스트 메모리 버퍼(2225)에 버퍼링되는 데이터(경로 ①)의 에러 정정 부호의 인코딩 및 디코딩을 위한 통합 에러 정정 엔진(2245)을 사용한다. 또한, 스토리지 컨트롤러(240)는 불휘발성 메모리 장치(2260)와 교환되는 데이터(경로 ②)의 에러 정정 부호 인코딩 및 디코딩을 위해 통합 에러 정정 엔진(2245)을 사용할 수 있다.
즉, 통합 에러 정정 엔진(2245)은 호스트 메모리 버퍼(2125)와 교환되는 데이터의 에러의 검출/정정 그리고 불휘발성 메모리 장치(2260)와 교환되는 데이터의 에러의 검출/정정을 위해서 사용될 수 있다.
이상의 본 발명의 실시 예에 따르면, 스토리지 장치(2200)는 호스트 메모리 버퍼(2125)에 저장되는 데이터와 불휘발성 메모리 장치(2260)에 저장되는 데이터를 처리하기 위한 통합 에러 정정 엔진(2245)을 사용할 수 있다. 따라서, 스토리지 장치(2200)의 버퍼용으로 할당된 호스트 메모리 버퍼(2225)의 신뢰성과 불휘발성 메모리 장치(2260)에 대한 데이터 신뢰성을 동시에 보장할 수 있다.
도 15는 본 발명의 스토리지 장치의 동작을 간략히 보여주는 순서도이다. 도 15를 참조하면, 스토리지 컨트롤러(2240)는 호스트 메모리 버퍼(2125)로의 버퍼링 또는 불휘발성 메모리 장치(2260)로의 접근을 위해 통합 에러 정정 엔진(2245)을 사용할 수 있다.
S610 단계에서, 스토리지 컨트롤러(2240)는 명령어나 메모리 관리 동작시 발생하는 요청들을 모니터링하여 호스트 메모리 버퍼(2125) 또는 불휘발성 메모리 장치(2260)로의 접근 요청을 검출 또는 수신한다.
S620 단계에서, 스토리지 컨트롤러(2240)는 접근 요청의 타깃 메모리를 식별한다. 만일, 접근 타깃이 호스트 메모리 버퍼(2125)인 경우, 절차는 S630 단계로 이동한다. 반면, 접근 타깃이 불휘발성 메모리 장치(2260)인 경우, 절차는 S660 단계로 이동한다.
S630 단계에서, 호스트 메모리 버퍼(2125)로의 접근 요청의 형태를 식별한다. 예를 들면, 호스트 메모리 버퍼(2125)로의 접근 요청이 쓰기 동작인지 또는 읽기 동작인지 식별할 수 있다. 만일, 호스트 메모리 버퍼(2125)로의 접근 요청이 쓰기 동작에 대응하면(Write), 절차는 S640 단계로 이동한다. 반면, 호스트 메모리 버퍼(2125)로의 접근 요청이 읽기 동작에 대응하면, 절차는 S650 단계로 이동할 것이다.
S640 단계에서, 스토리지 컨트롤러(2240)는 쓰기 요청된 데이터를 통합 에러 정정 엔진(2245)을 사용하여 처리한다. 이때, 통합 에러 정정 엔진(2245)을 통해서 호스트 메모리 버퍼(2125)에 할당된 ECC 인코딩에 따라 쓰기 요청된 데이터를 처리할 수 있다.
S645 단계에서, 스토리지 컨트롤러(2240)는 ECC 인코딩에 의해서 생성된 쓰기 데이터를 호스트 메모리 버퍼(2125)의 지정된 영역에 기입할 것이다. 스토리지 컨트롤러(2240)는 DMA를 통해서 쓰기 데이터를 호스트 메모리 버퍼(2125)에 전달할 수도 있을 것이다.
S650 단계에서, 스토리지 컨트롤러(2240)는 읽기 요청된 데이터를 호스트 메모리 버퍼(2125)의 지정된 영역으로부터 읽어온다. 이때, 호스트 메모리 버퍼(2125)로부터 읽혀진 데이터는 ECC 인코딩을 통해서 생성된 패리티가 포함될 것이다. 스토리지 컨트롤러(2240)는 DMA를 통해서 호스트 메모리 버퍼(2125)로부터 데이터를 수신할 수 있다.
S655 단계에서, 스토리지 컨트롤러(2240)는 호스트 메모리 버퍼(2125)로부터 독출된 데이터에 대한 ECC 디코딩을 수행하도록 통합 에러 정정 엔진(2245)을 제어한다. ECC 디코딩을 통해서 독출된 데이터에 에러가 존재하면, 통합 에러 정정 엔진(2245)은 검출된 에러를 정정하기 위한 연산을 수행할 것이다. 특히, 검출된 에러가 정정이 불가한 경우라면, 스토리지 컨트롤러(2240)는 읽기 재시도(Read retry)와 같은 처리를 수행할 수도 있다.
S660 단계에서, 불휘발성 메모리 장치(2260)로의 접근 요청의 형태를 식별한다. 예를 들면, 불휘발성 메모리 장치(2260)로의 접근 요청이 쓰기 동작인지 또는 읽기 동작인지 식별할 수 있다. 만일, 불휘발성 메모리 장치(2260)로의 접근 요청이 쓰기 동작에 대응하면(Write), 절차는 S670 단계로 이동한다. 반면, 불휘발성 메모리 장치(2260)로의 접근 요청이 읽기 동작에 대응하면, 절차는 S680 단계로 이동할 것이다.
S670 단계에서, 스토리지 컨트롤러(2240)는 불휘발성 메모리 장치(2260)로의 쓰기 요청된 데이터를 통합 에러 정정 엔진(2245)을 사용하여 처리한다. 이때, 통합 에러 정정 엔진(2245)을 통해서 ECC2 인코딩에 따라 쓰기 요청된 데이터를 처리할 수 있다.
S675 단계에서, 스토리지 컨트롤러(2240)는 ECC 인코딩에 의해서 생성된 쓰기 데이터를 불휘발성 메모리 장치(2260)의 지정된 영역에 프로그램할 것이다.
S680 단계에서, 스토리지 컨트롤러(2240)는 읽기 요청된 데이터를 불휘발성 메모리 장치(2260)의 지정된 영역으로부터 읽어온다. 이때, 불휘발성 메모리 장치(2260)로부터 읽혀진 데이터는 ECC 인코딩을 통해서 생성된 패리티가 포함될 것이다.
S685 단계에서, 스토리지 컨트롤러(2240)는 불휘발성 메모리 장치(2260)로부터 독출된 데이터에 대한 ECC 디코딩을 수행하도록 통합 에러 정정 엔진(2245)을 제어한다. ECC 디코딩을 통해서 독출된 데이터에 에러가 존재하면, 통합 에러 정정 엔진(2245)은 검출된 에러를 정정하기 위한 연산을 수행할 것이다.
이상에서는, 본 발명의 실시 예에 따른 통합 에러 정정 엔진(2245)을 포함하는 스토리지 컨트롤러(2240)의 호스트 메모리 버퍼(2125) 및 불휘발성 메모리 장치(2260)로의 접근 방법이 간략히 설명되었다.
도 16은 본 발명의 실시 예들에 따른 불휘발성 메모리 시스템이 적용된 메모리 카드 시스템을 보여주는 블록도이다. 도 16을 참조하면, 메모리 카드 시스템(3000)은 메모리 컨트롤러(3100) 그리고 불휘발성 메모리(3200)를 포함한다.
메모리 컨트롤러(3100)는 불휘발성 메모리(3200)와 연결된다. 메모리 컨트롤러(3100)는 불휘발성 메모리(3200)를 액세스하도록 구성된다. 예를 들어, 메모리 컨트롤러(3100)는 불휘발성 메모리(3200)의 읽기, 쓰기, 소거, 그리고 배경(background) 동작을 제어하도록 구성된다. 배경(background) 동작은 마모도 관리, 가비지 콜렉션 등과 같은 동작들을 포함한다.
메모리 컨트롤러(3100)는 예시적으로 SRAM(3110), CPU(3120), 호스트 인터페이스(3130), HMB 에러 정정 엔진(3140), 그리고 메모리 인터페이스(3150)를 포함할 수 있다. 메모리 컨트롤러(3100)는 도 1 및 도 3을 참조하여 설명된 스토리지 컨트롤러(1240)와 같이 호스트 메모리 버퍼(HMB, 미도시)로의 데이터 버퍼링을 제어한다. 특히, 메모리 컨트롤러(3100)는 호스트 메모리 버퍼(HMB)에 버퍼링하는 데이터의 ECC 인코딩 및 디코딩을 위해 HMB 에러 정정 엔진(3140)을 포함할 수 있다.
메모리 컨트롤러(3100)는 호스트 인터페이스(3130)를 통해 외부 장치와 통신할 수 있다. 메모리 컨트롤러(3100)는 특정한 통신 규격에 따라 외부 장치(예를 들어, 호스트)와 통신할 수 있다. 예시적으로, 호스트 인터페이스(3130)는 USB (Universal Serial Bus), MMC (multimedia card), eMMC(embedded MMC), PCI (peripheral component interconnection), PCI-E (PCI-express), ATA (Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI (small computer small interface), ESDI (enhanced small disk interface), IDE (Integrated Drive Electronics), 파이어와이어(Firewire), UFS(Universal Flash Storage), NVMe (Nonvolatile Memory express) 등과 같은 다양한 통신 규격들 중 적어도 하나를 통해 외부 장치와 통신하도록 구성된다.
불휘발성 메모리(3200)는 EPROM (Electrically Erasable and Programmable ROM), 낸드 플래시 메모리, 노어 플래시 메모리, PRAM (Phase-change RAM), ReRAM (Resistive RAM), FRAM (Ferroelectric RAM), STT-MRAM(Spin-Torque Magnetic RAM) 등과 같은 다양한 불휘발성 메모리 소자들로 구현될 수 있다.
예시적으로, 메모리 컨트롤러(3100) 및 불휘발성 메모리(3200)는 하나의 반도체 장치로 집적될 수 있다. 메모리 컨트롤러(3100) 및 불휘발성 메모리(3200)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 메모리 컨트롤러(3100) 및 불휘발성 메모리(3200)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro, eMMC), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
도 17은 본 발명에 따른 불휘발성 메모리 시스템이 적용된 SSD(Solid State Drive) 시스템을 예시적으로 보여주는 블록도이다. 도 17을 참조하면, SSD 시스템(4000)은 호스트(4100) 및 SSD(4200)를 포함한다. SSD(2200)는 SSD 컨트롤러(4210), 버퍼 메모리(4220), 그리고 복수의 불휘발성 메모리 장치들(4230)을 포함한다.
호스트(4100)는 호스트(4100) 내부에 구비된 메모리의 일정 영역을 호스트 메모리 버퍼(4150)로 할당한다. 그리고 호스트 메모리 버퍼(4150)로 할당된 영역에 대한 제반 접근 권한을 SSD 컨트롤러(4210)에 위임할 것이다.
SSD 컨트롤러(4210)는 호스트(4100)로부터 수신된 신호(SIG)에 응답하여 복수의 불휘발성 메모리 장치들(4230)을 제어할 수 있다. 예시적으로, SSD 컨트롤러(4210)는 도 1 및 도 3을 참조하여 설명된 호스트 메모리 버퍼(4150)에 버퍼링 되는 데이터의 에러 정정 연산을 수행할 수 있다. 호스트 메모리 버퍼(4150)에 버퍼링되는 데이터의 에러 정정 연산을 위해 SSD 컨트롤러(4210)는 HMB 에러 정정 엔진(4250)을 포함할 수 있다.
버퍼 메모리(4220)는 SSD(4200)의 버퍼 메모리로 동작한다. 예를 들어, 버퍼 메모리(4220)는 호스트(4100)로부터 수신된 데이터 또는 복수의 불휘발성 메모리 장치들(4230)로부터 수신된 데이터를 임시 저장하거나, 메타 데이터(예를 들어, 매핑 테이블)를 임시 저장할 수 있다. 버퍼 메모리(4220)는 DRAM, SDRAM, DDR SDRAM, LPDDR SDRAM, SRAM 등과 같은 휘발성 메모리 또는 FRAM ReRAM, STT-MRAM, PRAM 등과 같은 불휘발성 메모리들을 포함할 수 있다. 하지만, 본 발명의 호스트 버퍼 메모리(4150)의 할당에 따라 버퍼 메모리(4220)는 최소한의 사이즈로 제공되거나, 어떤 경우에는 버퍼 메모리가(4220)가 존재하지 않을 수도 있다.
이상에서와 같이 도면과 명세서에서 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허 청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 호스트의 호스트 메모리를 공유하는 스토리지 장치에 있어서:
    상기 호스트와 데이터를 교환하기 위한 시리얼 인터페이스; 그리고
    상기 시리얼 인터페이스를 통하여 상기 호스트로부터 할당받은 호스트 메모리 버퍼에 버퍼링 데이터를 저장하고, 상기 버퍼링 데이터를 제 1 에러 정정 부호로 인코딩 또는 디코딩하는 스토리지 컨트롤러를 포함하는 스토리지 장치.
  2. 제 1 항에 있어서,
    상기 호스트 메모리 버퍼는 데이터 영역 및 패리티 영역을 포함하는 스토리지 장치.
  3. 제 1 항에 있어서,
    저장 매체로서 제공되는 불휘발성 메모리 장치를 더 포함하고,
    상기 스토리지 컨트롤러는:
    상기 버퍼링 데이터를 상기 제 1 에러 정정 부호로 인코딩 또는 디코딩하는 제 1 에러 정정 엔진; 그리고
    상기 불휘발성 메모리 장치와 교환되는 스토리지 데이터를 제 2 에러 정정 부호로 인코딩 또는 디코딩하는 제 2 에러 정정 엔진을 포함하는 스토리지 장치.
  4. 제 3 항에 있어서,
    상기 스토리지 컨트롤러는 상기 호스트 메모리 버퍼와 교환되는 상기 버퍼링 데이터를 관리하기 위한 호스트 메모리 버퍼(HMB) 컨트롤러를 더 포함하는 스토리지 장치.
  5. 제 4 항에 있어서,
    상기 호스트 메모리 버퍼 컨트롤러는 상기 호스트 메모리 버퍼와의 직접 메모리 접근을 수행하기 위한 DMA 컨트롤러를 포함하는 스토리지 장치.
  6. 제 3 항에 있어서,
    상기 스토리지 컨트롤러는 상기 버퍼링 데이터의 에러를 검출하고, 상기 검출된 에러가 정정 가능하면, 상기 검출된 에러를 정정한 후에 상기 에러 정정된 버퍼링 데이터를 상기 불휘발성 메모리 장치에 저장하는 스토리지 장치.
  7. 제 6 항에 있어서,
    상기 스토리지 컨트롤러는 상기 검출된 에러가 정정 불가능하면, 상기 호스트 메모리 버퍼로부터 상기 버퍼링 데이터를 재독출하는 스토리지 장치.
  8. 제 6 항에 있어서,
    상기 스토리지 컨트롤러는 상기 검출된 에러가 정정 불가능하면, 상기 호스트에 상기 버퍼링 데이터의 읽기 실패를 통지하는 스토리지 장치.
  9. 제 8 항에 있어서,
    상기 호스트는 상기 버퍼링 데이터의 상기 읽기 실패에 응답하여 상기 호스트 메모리의 다른 영역에 상기 호스트 메모리 버퍼를 재할당하는 스토리지 장치.
  10. 제 1 항에 있어서,
    상기 스토리지 컨트롤러는 상기 호스트 메모리 버퍼로부터 상기 버퍼링 데이터를 수신할 때, 상기 시리얼 인터페이스의 링크다운이 발생하는 경우, 상기 버퍼링 데이터의 소실된 패킷을 더미 데이터로 대체하여 시스템 중지를 해제하는 스토리지 장치.
  11. 제 10 항에 있어서,
    상기 스토리지 컨트롤러는 상기 소실된 패킷을 상기 더미 데이터로 대체하기 전에 상기 제 1 에러 정정 부호를 사용한 디코딩을 통하여 일차적으로 복구하는 스토리지 장치.
  12. 호스트의 호스트 메모리를 버퍼로 할당받는 스토리지 장치의 동작 방법에 있어서:
    상기 스토리지 장치가 상기 버퍼로부터 버퍼링 데이터를 읽어오는 단계;
    제 1 에러 정정 엔진을 사용하여 상기 버퍼링 데이터의 에러를 검출하는 단계; 그리고
    상기 검출된 에러가 정정 불가능한 경우, 상기 버퍼링 데이터를 상기 호스트에 재요청하는 동작 방법.
  13. 제 12 항에 있어서,
    상기 검출된 에러가 정정 가능한 경우, 상기 제 1 에러 정정 엔진을 사용하여 상기 버퍼링 데이터의 상기 검출된 에러를 정정하는 동작 방법.
  14. 제 13 항에 있어서,
    상기 에러 정정된 버퍼링 데이터를 상기 스토리지 장치의 저장 매체에 저장하는 경우, 상기 에러 정정된 버퍼링 데이터를 제 2 에러 정정 엔진을 사용하여 인코딩하는 단계를 더 포함하는 동작 방법.
  15. 제 12 항에 있어서,
    상기 버퍼에 저장될 버퍼링 데이터를 수신하는 단계;
    상기 수신된 버퍼링 데이터를 상기 제 1 에러 정정 엔진을 사용하여 에러 정정 부호 인코딩을 수행하는 단계; 그리고
    상기 인코딩된 버퍼링 데이터를 상기 버퍼에 기입하는 단계를 더 포함하는 동작 방법.
  16. 호스트의 호스트 메모리의 일부 영역을 버퍼로 할당받는 스토리지 장치에 있어서:
    상기 호스트와 데이터를 교환하기 위한 인터페이스;
    불휘발성 메모리 장치; 그리고
    상기 인터페이스를 통하여 상기 호스트로부터 할당받은 버퍼에 버퍼링 데이터를 저장하고, 상기 버퍼링 데이터를 참조하여 상기 불휘발성 메모리 장치를 제어하며, 상기 버퍼링 데이터를 에러 정정 부호로 인코딩 또는 디코딩하는 스토리지 컨트롤러를 포함하되,
    상기 스토리지 컨트롤러는 상기 인터페이스에서 발생하는 상기 버퍼링 데이터의 수신 오류시에 소실된 패킷의 일부를 더미 데이터로 대체하는 스토리지 장치.
  17. 제 16 항에 있어서,
    상기 스토리지 컨트롤러는 상기 수신 오류시, 상기 에러 정정 부호를 사용하여 상기 소실된 패킷의 상기 일부를 복구하는 스토리지 장치.
  18. 제 16 항에 있어서,
    상기 스토리지 컨트롤러는 상기 수신 오류시 발생하는 상기 인터페이스의 중지 상태를 상기 더미 데이터로 대체한 패킷을 사용하여 해제하는 스토리지 장치.
  19. 제 18 항에 있어서,
    상기 스토리지 컨트롤러는 상기 중지 상태의 해제 이후에 상기 호스트에 상기 버퍼링 데이터의 수신 실패를 통지하는 스토리지 장치.
  20. 제 16 항에 있어서,
    상기 더미 데이터로 복구된 상기 소실된 패킷은 무효 데이터로 처리되는 스토리지 장치.
KR1020180137228A 2018-11-09 2018-11-09 호스트 메모리를 사용하는 스토리지 장치 및 그것의 동작 방법 KR102599188B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020180137228A KR102599188B1 (ko) 2018-11-09 2018-11-09 호스트 메모리를 사용하는 스토리지 장치 및 그것의 동작 방법
DE102019111132.3A DE102019111132A1 (de) 2018-11-09 2019-04-30 Speichereinrichtung, die Hostspeicher nutzt und Betriebsverfahren dafür
US16/533,894 US11016846B2 (en) 2018-11-09 2019-08-07 Storage device using host memory and operating method thereof
CN201910768035.2A CN111177040B (zh) 2018-11-09 2019-08-20 共享主机存储器的存储装置及其操作方法和存储系统
US17/239,621 US20210248035A1 (en) 2018-11-09 2021-04-25 Storage device using host memory and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180137228A KR102599188B1 (ko) 2018-11-09 2018-11-09 호스트 메모리를 사용하는 스토리지 장치 및 그것의 동작 방법

Publications (2)

Publication Number Publication Date
KR20200054402A true KR20200054402A (ko) 2020-05-20
KR102599188B1 KR102599188B1 (ko) 2023-11-08

Family

ID=70469130

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180137228A KR102599188B1 (ko) 2018-11-09 2018-11-09 호스트 메모리를 사용하는 스토리지 장치 및 그것의 동작 방법

Country Status (4)

Country Link
US (2) US11016846B2 (ko)
KR (1) KR102599188B1 (ko)
CN (1) CN111177040B (ko)
DE (1) DE102019111132A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11599268B2 (en) 2020-10-07 2023-03-07 SK Hynix Inc. Storage device and method of operating the same
US11841767B2 (en) 2021-11-24 2023-12-12 Samsung Electronics Co., Ltd. Controller controlling non-volatile memory device, storage device including the same, and operating method thereof

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200121645A (ko) * 2019-04-16 2020-10-26 에스케이하이닉스 주식회사 컨트롤러 및 그것의 동작 방법과 메모리 시스템
JP7442025B2 (ja) * 2019-08-30 2024-03-04 株式会社ユニテックス インタフェース変換装置
US11204833B1 (en) * 2020-06-19 2021-12-21 Western Digital Technologies, Inc. NVM endurance group controller using shared resource architecture
US11734018B2 (en) * 2020-07-17 2023-08-22 Western Digital Technologies, Inc. Parallel boot execution of memory devices
KR20220012019A (ko) * 2020-07-22 2022-02-03 삼성전자주식회사 메모리 모듈 및 이를 포함하는 메모리 시스템
KR20220018757A (ko) * 2020-08-07 2022-02-15 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법
US11500589B2 (en) * 2020-10-05 2022-11-15 Western Digital Technologies, Inc. Command draining using host memory buffer
US11829237B1 (en) 2021-03-05 2023-11-28 Apple Inc. Error detection and recovery when streaming data
TWI798680B (zh) * 2021-04-14 2023-04-11 群聯電子股份有限公司 主機記憶體緩衝區管理方法、記憶體儲存裝置與記憶體控制電路單元
US11803322B2 (en) * 2021-05-03 2023-10-31 SK Hynix Inc. Memory system and operating method supporting fast boot using host memory buffer and default enabled information
TWI783522B (zh) * 2021-06-11 2022-11-11 群聯電子股份有限公司 資料重建方法、記憶體儲存裝置及記憶體控制電路單元
CN113360429A (zh) * 2021-06-21 2021-09-07 群联电子股份有限公司 数据重建方法、存储器存储装置及存储器控制电路单元
CN113468083B (zh) * 2021-07-02 2024-01-26 成都忆芯科技有限公司 一种双端口NVMe控制器及控制方法
US11531473B1 (en) * 2021-09-10 2022-12-20 Western Digital Technologies, Inc. Selective HMB backup in NVM for low power mode
US11893275B2 (en) 2021-09-20 2024-02-06 Western Digital Technologies, Inc. DRAM-less SSD with recovery from HMB loss
US11809742B2 (en) 2021-09-20 2023-11-07 Western Digital Technologies, Inc. Recovery from HMB loss
EP4266175A1 (de) * 2022-04-22 2023-10-25 Siemens Mobility GmbH Verfahren zum rechnergestützten betreiben einer speichereinheit und ausführen von applikationsprogrammen mit speicherüberprüfung auf speicherfehler
US20240120947A1 (en) * 2022-10-07 2024-04-11 Micron Technology, Inc. Error detection and classification at a host device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110125892A (ko) * 2010-05-14 2011-11-22 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법
KR20170054633A (ko) * 2015-11-09 2017-05-18 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7831882B2 (en) * 2005-06-03 2010-11-09 Rambus Inc. Memory system with error detection and retry modes of operation
US8543742B2 (en) 2007-02-22 2013-09-24 Super Talent Electronics, Inc. Flash-memory device with RAID-type controller
KR101425957B1 (ko) * 2007-08-21 2014-08-06 삼성전자주식회사 이씨씨 제어 회로 및 그것을 포함하는 멀티채널 메모리시스템
JP2010009642A (ja) * 2008-06-24 2010-01-14 Toshiba Corp 半導体記憶装置およびそのテスト方法
US8327066B2 (en) 2008-09-30 2012-12-04 Samsung Electronics Co., Ltd. Method of managing a solid state drive, associated systems and implementations
US8341311B1 (en) 2008-11-18 2012-12-25 Entorian Technologies, Inc System and method for reduced latency data transfers from flash memory to host by utilizing concurrent transfers into RAM buffer memory and FIFO host interface
KR102020466B1 (ko) * 2012-10-04 2019-09-10 에스케이하이닉스 주식회사 버퍼 메모리 장치를 포함하는 데이터 저장 장치
KR102048765B1 (ko) * 2013-01-15 2020-01-22 삼성전자주식회사 메모리 시스템의 동작 방법 및 메모리 시스템
US10841317B2 (en) * 2015-03-31 2020-11-17 Dell Products, Lp Processing content sharing system data from a plurality of remotely connected computing devices in physical or virtualized space
US10025747B2 (en) * 2015-05-07 2018-07-17 Samsung Electronics Co., Ltd. I/O channel scrambling/ECC disassociated communication protocol
US9870284B2 (en) * 2015-05-27 2018-01-16 International Business Machines Corporation First responder parities for storage array
KR102466412B1 (ko) 2016-01-14 2022-11-15 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US10002405B2 (en) 2016-01-22 2018-06-19 Intel Corporation Smart optimization of unused graphics buffer memory in computing environments
US10157004B2 (en) 2016-04-14 2018-12-18 Sandisk Technologies Llc Storage system and method for recovering data corrupted in a host memory buffer
KR102636039B1 (ko) * 2016-05-12 2024-02-14 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 읽기 방법 및 카피백 방법
US10055164B2 (en) * 2016-09-07 2018-08-21 Sandisk Technologies Llc Data storage at an access device
CN107918571B (zh) * 2016-10-08 2021-04-30 上海宝存信息科技有限公司 测试储存单元的方法以及使用该方法的装置
KR20180054394A (ko) 2016-11-15 2018-05-24 삼성전자주식회사 호스트 메모리 버퍼(Host Memory Buffer)를 관리하기 위한 NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하는 솔리드 스테이트 저장 장치(solid state storage device), 이를 포함하는 시스템 및 호스트의 호스트 메모리 버퍼를 관리하는 방법
US10394706B2 (en) * 2017-11-02 2019-08-27 Western Digital Technologies, Inc. Non-volatile storage with adaptive command prediction
US20190042364A1 (en) * 2018-06-25 2019-02-07 Intel Corporation Technologies for maintaining data integrity during data transmissions
KR20210014473A (ko) * 2019-07-30 2021-02-09 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 라이트 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110125892A (ko) * 2010-05-14 2011-11-22 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법
KR20170054633A (ko) * 2015-11-09 2017-05-18 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11599268B2 (en) 2020-10-07 2023-03-07 SK Hynix Inc. Storage device and method of operating the same
US11841767B2 (en) 2021-11-24 2023-12-12 Samsung Electronics Co., Ltd. Controller controlling non-volatile memory device, storage device including the same, and operating method thereof

Also Published As

Publication number Publication date
CN111177040B (zh) 2024-03-08
DE102019111132A1 (de) 2020-05-14
KR102599188B1 (ko) 2023-11-08
US20210248035A1 (en) 2021-08-12
CN111177040A (zh) 2020-05-19
US11016846B2 (en) 2021-05-25
US20200151055A1 (en) 2020-05-14

Similar Documents

Publication Publication Date Title
KR102599188B1 (ko) 호스트 메모리를 사용하는 스토리지 장치 및 그것의 동작 방법
CN108073470B (zh) 执行地址映射表的纠错的存储器系统及其控制方法
US11011243B2 (en) Storage device that uses a host memory buffer and a memory management method including the same
US11157357B2 (en) Operation methods of memory system and host, and computing system
US10102060B2 (en) Storage apparatus and data control method of storing data with an error correction code
KR102107723B1 (ko) 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법
KR102647418B1 (ko) 반도체장치 및 반도체시스템
KR20220021186A (ko) 데이터 처리 시스템 내 데이터를 공유하는 장치 및 방법
KR20220001222A (ko) 베드 블록을 처리하는 메모리 시스템 및 동작 방법
US11288183B2 (en) Operating method of memory system and host recovering data with write error
US10802958B2 (en) Storage device, its controlling method, and storage system having the storage device
US20210191626A1 (en) Data processing system
CN109753238B (zh) 数据存储设备及其操作方法
US10642758B2 (en) Storage drive and method of executing a compare command
JP2019023936A (ja) 記憶装置及びメモリシステム
US11416365B2 (en) Method and system for open NAND block detection and correction in an open-channel SSD
CN112579329A (zh) 快速处理uecc的方法及其存储设备
US20240111426A1 (en) Data Storage Device That Detects and Releases Bottlenecks In Hardware
US11966582B2 (en) Data storage device that detects and releases bottlenecks
US11537466B2 (en) Detection of data discrepancy after XOR recovery
US20240111427A1 (en) Data Storage Device That Detects And Releases Input Queue Bottlenecks
KR102667430B1 (ko) 호스트 메모리를 이용하는 데이터 저장 장치 및 그것의 동작 방법
CN117642716A (zh) 从hmb丢失的恢复
KR20180016679A (ko) 호스트 메모리를 이용하는 데이터 저장 장치 및 그것의 동작 방법

Legal Events

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