KR20210024188A - 기입 버퍼 관리 - Google Patents

기입 버퍼 관리 Download PDF

Info

Publication number
KR20210024188A
KR20210024188A KR1020217004564A KR20217004564A KR20210024188A KR 20210024188 A KR20210024188 A KR 20210024188A KR 1020217004564 A KR1020217004564 A KR 1020217004564A KR 20217004564 A KR20217004564 A KR 20217004564A KR 20210024188 A KR20210024188 A KR 20210024188A
Authority
KR
South Korea
Prior art keywords
data
buffer
memory component
memory
processing device
Prior art date
Application number
KR1020217004564A
Other languages
English (en)
Inventor
웨이 왕
장리 주
잉 위 타이
닝 천
전강 천
청 위안 우
Original Assignee
마이크론 테크놀로지, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크론 테크놀로지, 인크. filed Critical 마이크론 테크놀로지, 인크.
Publication of KR20210024188A publication Critical patent/KR20210024188A/ko

Links

Images

Classifications

    • 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/0793Remedial or corrective actions
    • 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/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
    • 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/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
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1608Error detection by comparing the output signals of redundant hardware
    • G06F11/1612Error detection by comparing the output signals of redundant hardware where the redundant component is persistent storage
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents

Abstract

판독 동작과 연관된 판독 데이터 경로 내의 버퍼에서 데이터에 대한 사전 탐색을 바이패스하는, 메모리 컴포넌트들로부터 데이터를 검색하기 위한 판독 동작이 수행될 수 있다. 버퍼에서 데이터에 대한 사전 탐색을 바이패스하는 판독 동작을 수행하는 것에 응답하여, 데이터가 호스트 시스템으로 반환된다.

Description

기입 버퍼 관리
본 개시의 구현예들은 메모리 서브-시스템들에 관한 것으로서, 보다 더 구체적으로, 메모리 서브-시스템들에서 기입 버퍼 관리에 관한 것이다.
메모리 서브-시스템은 고체-상태 드라이브(solid-state drive; SSD)와 같은 저장 시스템일 수 있으며, 데이터를 저장하는 하나 이상의 메모리 컴포넌트들을 포함할 수 있다. 메모리 서브-시스템은 비-휘발성 메모리 컴포넌트들 및 휘발성 메모리 컴포넌트들과 같은 메모리 컴포넌트들을 포함할 수 있다. 일반적으로, 호스트 시스템은, 메모리 서브-시스템의 메모리 컴포넌트들에 데이터를 저장하고 메모리 서브-시스템의 메모리 컴포넌트들로부터 데이터를 검색하기 위하여 메모리 서브-시스템을 사용할 수 있다.
본 개시는 이하에서 주어지는 상세한 설명으로부터 그리고 본 개시의 다양한 구현예들의 첨부된 도면으로부터 더 완전하게 이해될 것이다.
도 1은 본 개시의 일부 구현예들에 따른 메모리 서브-시스템을 포함하는 예시적인 컴퓨팅 환경을 예시한다.
도 2는 본 개시의 일부 구현예들에 따른 메모리 서브-시스템을 포함하는 다른 예시적인 컴퓨팅 환경을 예시한다.
도 3은 일부 구현예들에 따른 판독 동작을 수행하는 예시적인 방법의 순서도이다.
도 4는 일부 구현예들에 따른 판독 동작을 수행하는 예시적인 방법의 순서도이다.
도 5는, 본 개시의 구현예들이 동작할 수 있는 컴퓨터 시스템의 예시적인 기계의 블록도이다.
본 개시의 측면들은 메모리 서브-시스템들에서의 버퍼 관리에 관한 것이다. 메모리 서브-시스템은 또한 이하에서 "메모리 디바이스"로 지칭된다. 메모리 서브-시스템의 일 예는 고체-상태 드라이브(SSD)와 같은 저장 시스템이다. 일부 구현예들에 있어서, 메모리 서브-시스템은 하이브리드 메모리/저장 서브-시스템이다. 일반적으로, 호스트 시스템은 하나 이상의 메모리 컴포넌트들을 포함하는 메모리 서브-시스템을 사용할 수 있다. 호스트 시스템은 메모리 서브-시스템에 저장될 데이터를 제공할 수 있으며, 메모리 서브-시스템으로부터 검색될 데이터를 요청할 수 있다.
메모리 서브-시스템에 의해 사용되는 메모리 컴포넌트들은, 메모리 서브-시스템의 동작에서 도전들을 제공하는 특정 특성들을 가질 수 있다. 예를 들어, 메모리 컴포넌트들은, 데이터가 메모리 컴포넌트에서의 위치에 기입된 이후에 시간의 윈도우 내에(예를 들어, 1 밀리초(ms) 내에) 메모리 컴포넌트들에서의 그 위치로부터 데이터를 판독하는 것이 데이터 내에 많은 수의 오류들을 야기할 수 있는 특성을 가질 수 있다. 오류들의 수는 메모리 서브-시스템에 의해 사용되는 오류 정정 코드(error correcting code; ECC)의 오류 정정 능력을 넘을 수 있으며, 판독 실패를 초래할 수 있다. 일부 통상적인 시스템들은, 메모리 컴포넌트들 상의 위치에 기입된 데이터가 정확하게 프로그래밍되는 것을 보장하기 위하여 그리고 데이터 손상을 회피하기 위하여 지연 기간(예를 들어, 1ms 이상) 이후에 메모리 컴포넌트들에 대하여 판독 동작들을 수행한다. 지연 기간은, 메모리 컴포넌트들로부터 데이터를 검색하고 데이터를 호스트 시스템으로 반환함에 있어서 긴 레이턴시(latency)를 초래함으로써 메모리 서브-시스템의 서비스의 품질을 감소시킬 수 있다.
기입 동작들의 수행에 있어서, 메모리 서브-시스템은 버퍼(예를 들어, 최근 기입 버퍼)에 기입될 데이터를 로딩하고 저장할 수 있다. 버퍼에 저장된 데이터는 데이터를 메모리 컴포넌트들에 기입하기 위해 사용될 수 있다. 버퍼로부터의 데이터는 지연(예를 들어, 지연된 판독) 없이 판독될 수 있으며, 데이터는 상대적으로 작은 수의 오류들을 가지고 버퍼로부터 검색될 수 있다. 버퍼는, 예를 들어, 데이터가 새로운 기입 동작과 관련된 새로운 데이터에 의해 오버라이트(overwrite)될 때까지 특정한 양의 시간 동안 데이터를 저장할 수 있다. 새로운 데이터가 버퍼 상에 저장되며, 메모리 컴포넌트들에 기입하기 위해 사용된다. 일부 통상적인 시스템들은, 판독 동작의 수행에 있어, 메모리 컴포넌트들로부터 데이터를 판독하기 이전에 매 판독 동작에 대하여 판독될 데이터의 탐색에서 버퍼를 조사한다. 매 판독 동작에 대하여 버퍼에서의 데이터에 대한 초기 탐색은 메모리 컴포넌트들의 특성들에 의해 야기되는 데이터 손상을 감소시킬 수 있지만, 데이터를 검색하고 데이터를 호스트 시스템으로 반환하는데 있어서 레이턴시를 증가시킴으로써 서비스의 감소된 품질에 기여할 수 있다. 예를 들어, 매 판독 동작에 대한 버퍼에서의 데이터에 대한 초기 탐색은 시간을 소요하며, 이는 증가된 레이턴시에 기여한다. 버퍼들이 더 커짐에 따라, 매 판독 동작에 대한 버퍼에서의 데이터에 대한 초기 탐색에 의해 초래되는 레이턴시가 증가한다. 최근에 기입된 메모리 컴포넌트들의 위치들에서 수행되는 판독 동작들의 수는 메모리 서브-시스템의 판독 동작들의 총 수의 비례적으로 작은 양일 수 있으며, 이는 매 판독 동작에 대한 버퍼에서의 데이터에 대한 초기 탐색에 의해 초래되는 레이턴시를 훨씬 더 바람직하지 않게 만든다.
본 개시의 측면들은, 버퍼에서의 데이터에 대한 초기 탐색을 바이패스하고 메모리 컴포넌트들로부터 데이터를 직접 판독하는 판독 동작을 수행함으로써 이상의 그리고 다른 결함들을 해결한다. 일부 구현예들에 있어서, 초기 오류 정정 코드 동작들은 메모리 컴포넌트들로부터 검색된 데이터에 대해 수행된다. 오류 정정 코드 동작들에 의해 데이터가 손상되지 않았다는 것 또는 정확하다는 것을 결정하는 것에 응답하여, 데이터가 호스트 시스템으로 반환된다. 초기 오류 정정 코드 동작들에 의해 데이터가 정정될 수 없다는 것을 결정하는 것에 응답하여, 제어기는 데이터에 대하여 버퍼를 탐색한다. 일부 구현예들에 있어서, 버퍼로부터 데이터를 찾는 것에 응답하여, 버퍼로부터의 데이터가 호스트 시스템으로 반환되고 메모리 컴포넌트들을 재-프로그래밍(예를 들어, 재-기입)하기 위해 사용된다.
버퍼에서의 데이터에 대한 초기 탐색을 바이패스하고 메모리 컴포넌트들로부터 데이터를 직접 판독하는 판독 동작을 수행하는 것과 같은 본 개시의 측면들은, (예를 들어, 호스트 시스템으로의) 데이터의 반환에서 레이턴시를 감소시킴으로써 메모리 서브-시스템의 서비스의 품질을 개선하고 판독 동작과 같은 메모리 동작들의 수행에 있어서 메모리 서브-시스템들의 속도를 개선함으로써 메모리 서브-시스템들의 동작을 개선한다. 추가적으로, 메모리 서브-시스템의 동작은, 예를 들어, 제어기의 버퍼로부터의 데이터를 사용하여 메모리 컴포넌트들을 재프로그래밍함으로써 메모리 서브-시스템에 저장된 데이터의 신뢰도를 증가시킴으로써 추가로 개선된다.
도 1은 본 개시의 일부 구현예들에 따른 메모리 서브-시스템(110)을 포함하는 예시적인 컴퓨팅 환경(100)을 예시한다. 메모리 서브-시스템(110)은 메모리 컴포넌트들(112A 내지 112N)과 같은 매체를 포함할 수 있다. 메모리 컴포넌트들(112A 내지 112N)은 휘발성 메모리 컴포넌트들, 비-휘발성 메모리 컴포넌트들, 또는 이들의 조합일 수 있다. 일부 구현예들에 있어서, 메모리 서브-시스템은 저장 시스템이다. 저장 시스템의 일 예는 SSD이다. 일부 구현예들에 있어서, 메모리 서브-시스템(110)은 하이브리드 메모리/저장 서브-시스템이다. 일반적으로, 컴퓨팅 환경(100)은, 메모리 서브-시스템(110)을 사용하는 호스트 시스템(120)을 포함할 수 있다. 예를 들어, 호스트 시스템(120)은 메모리 서브-시스템(110)에 데이터를 기입할 수 있으며, 메모리 서브-시스템(110)으로부터 데이터를 판독할 수 있다.
호스트 시스템(120)은 데스크탑 컴퓨터, 랩탑 컴퓨터, 네트워크 서버, 모바일 디바이스, 또는 메모리 및 프로세싱 디바이스를 포함하는 이러한 컴퓨팅 디바이스와 같은 컴퓨팅 디바이스일 수 있다. 호스트 시스템(120)은, 호스트 시스템(120)이 메모리 서브-시스템(110)으로부터 데이터를 판독하거나 또는 이에 데이터를 기입할 수 있도록 메모리 서브-시스템(110)을 포함하거나 또는 이에 결합될 수 있다. 호스트 시스템(120)은 물리적 호스트 인터페이스를 통해 메모리 서브-시스템(110)에 결합될 수 있다. 본원에서 사용될 때, "에 결합된"은 일반적으로 컴포넌트들 사이의 연결을 지칭하며, 이는, 전기적, 광학적, 자기적, 등과 같은 연결들을 포함하여, 유선이든 또는 무선이든, 간접 통신 연결 또는 (예를 들어, 매개 컴포넌트들이 없는) 직접 통신 연결일 수 있다. 물리적 호스트 인터페이스의 예들은, 비제한적으로, 직렬 고급 기술 부착(serial advanced technology attachment; SATA) 인터페이스, 주변 컴포넌트 상호연결 익스프레스(peripheral component interconnect express; PCIe) 인터페이스, 범용 직렬 버스(universal serial bus; USB) 인터페이스, 파이버 채널(Fibre Channel), 직렬 부착형 SCSI(Serial Attached SCSI; SAS), 등을 포함한다. 물리적 호스트 인터페이스는 호스트 시스템(120)과 메모리 서브-시스템(110) 사이에 데이터를 송신하기 위해 사용될 수 있다. 호스트 시스템(120)은 추가로, 메모리 서브-시스템(110)이 PCIe 인터페이스에 의해 호스트 시스템(120)과 결합될 때, 메모리 컴포넌트들(112A 내지 112N)을 액세스하기 위하여 NVM 익스프레스(NVM Express; NVMe) 인터페이스를 사용할 수 있다. 물리적 호스트 인터페이스는, 메모리 서브-시스템(110)과 호스트 시스템(120) 사이에서 제어, 어드레스, 데이터, 및 다른 신호들을 전달하기 위한 인터페이스를 제공할 수 있다.
메모리 컴포넌트들(112A 내지 112N)은 상이한 유형들의 비-휘발성 메모리 컴포넌트들 및/또는 휘발성 메모리 컴포넌트들의 임의의 조합을 포함할 수 있다. 비-휘발성 메모리 컴포넌트들의 일 예는 부정-논리곱(negative-and; NAND) 유형의 플래시 메모리를 포함한다. 메모리 컴포넌트들(112A 내지 112N)의 각각은 단일 레벨 셀(single level cell; SLC)들 또는 다중-레벨 셀(multi-level cell; MLC)들(예를 들어, 삼중 레벨 셀(triple level cell; TLC)들 또는 사중-레벨 셀(quad-level cell; QLC)들)과 같은 메모리 셀들의 하나 이상의 어레이들을 포함할 수 있다. 일부 구현예들에 있어서, 특정 메모리 컴포넌트는 메모리 셀들의 SLC 부분 및 MLC 부분 둘 모두를 포함할 수 있다. 메모리 셀들의 각각은 호스트 시스템(120)에 의해 사용되는 데이터의 하나 이상의 비트들(예를 들어, 데이터 블록들)을 저장할 수 있다. NAND 유형 플래시 메모리와 같은 비-휘발성 메모리 컴포넌트들이 설명되지만, 메모리 컴포넌트들(112A 내지 112N)은 휘발성 메모리와 같은 임의의 다른 유형의 메모리에 기초할 수 있다. 일부 구현예들에 있어서, 메모리 컴포넌트들(112A 내지 112N)은, 비제한적으로, 랜덤 액세스 메모리(random access memory; RAM), 판독-전용 메모리(read-only memory; ROM), 동적 랜덤 액세스 메모리(dynamic random access memory; DRAM), 동기식 동적 랜덤 액세스 메모리(synchronous dynamic random access memory; SDRAM), 상 변화 메모리(phase change memory; PCM), 마그네토 랜덤 액세스 메모리(magneto random access memory; MRAM), 부정-논리곱(negative-or; NOR) 플래시 메모리, 전기적 소거가능 프로그램가능 판독-전용 메모리(electrically erasable programmable read-only memory; EEPROM), 및 비-휘발성 메모리 셀들의 교차점 어레이일 수 있다. 비-휘발성 메모리의 교차점 어레이는, 스택가능 교차-그리드형 데이터 액세스 어레이와 함께, 벌크(bulk) 저항의 변화에 기반하여 비트 저장을 수행할 수 있다. 추가적으로, 다수의 플래시-기반 메모리들과는 대조적으로, 교차점 비-휘발성 메모리는 제-위치 기입 동작(write in-place operation)을 수행할 수 있으며, 여기에서 비-휘발성 메모리 셀은 비-휘발성 메모리 셀을 미리 소거하지 않고 프로그래밍될 수 있다. 추가로, 메모리 컴포넌트들(112A 내지 112N)의 메모리 셀들은, 데이터를 저장하기 위해 사용되는 메모리 컴포넌트들의 유닛으로 지칭될 수 있는 메모리 페이지들 또는 데이터 블록들로 그룹화될 수 있다.
메모리 시스템 제어기(115)(이하에서 "제어기"로 지칭됨)는, 메모리 컴포넌트들(112A 내지 112N)에서 데이터를 판독하는 것, 데이터를 기입하는 것, 또는 데이터를 소거하는 것과 같은 동작들 및 다른 이러한 동작들을 수행하기 위해 메모리 컴포넌트들(112A 내지 112N)과 통신할 수 있다. 제어기(115)는 하나 이상의 집적 회로들 및/또는 이산 컴포넌트들, 버퍼 메모리, 또는 이들의 조합과 같은 하드웨어를 포함할 수 있다. 제어기(115)는 마이크로제어기, 특수 목적 로직 회로부(예를 들어, 필드 프로그램가능 게이트 어레이(field programmable gate array; FPGA), 애플리케이션 특정 집적 회로(application specific integrated circuit; ASIC), 등), 또는 다른 적절한 프로세서일 수 있다. 제어기(115)는 로컬 메모리(119)에 저장된 명령어(instruction)들을 실행하도록 구성된 프로세서(프로세싱 디바이스)(117)를 포함할 수 있다. 예시된 예에 있어서, 제어기(115)의 로컬 메모리(119)는, 메모리 서브-시스템(110)과 호스트 시스템(120) 사이의 통신들을 핸들링하는 것을 포함하여, 메모리 서브-시스템(110)의 동작을 제어하는 다양한 프로세스들, 동작들, 로직 흐름들, 및 루틴들을 수행하기 위한 명령어들을 저장하도록 구성된 내장 메모리를 포함한다. 일부 구현예들에 있어서, 로컬 메모리(119)는 메모리 포인터들, 페치(fetch)된 데이터, 등을 저장하는 메모리 레지스터들을 포함할 수 있다. 로컬 메모리(119)는 또한 마이크로-코드를 저장하기 위한 판독-전용 메모리(ROM)을 포함할 수 있다. 도 1에서 예시적인 메모리 서브-시스템(110)이 제어기(115)를 포함하는 것으로 예시되었지만, 본 개시의 다른 구현예에 있어서, 메모리 서브-시스템(110)은 제어기(115)를 포함하지 않을 수 있으며, 그 대신에 (예를 들어, 외부 호스트에 의해, 또는 메모리 서브-시스템과는 별개의 프로세서 또는 제어기에 의해 제공되는) 외부 제어에 의존할 수 있다.
일반적으로, 제어기(115)는 호스트 시스템(120)으로부터 명령(command)들 또는 동작들을 수신할 수 있으며, 메모리 컴포넌트들(112A 내지 112N)에 대한 희망되는 액세스를 달성하기 위해 명령들 또는 동작들을 명령어들 또는 적절한 명령들로 변환할 수 있다. 제어기(115)는 다른 동작들, 예컨대, 마모 레벨링 동작들, 가비지 수집 동작들, 오류 검출 및 오류-정정 코드(error-correcting code; ECC) 동작들, 암호화 동작들, 캐싱 동작들, 및 메모리 컴포넌트들(112A 내지 112N)와 연관된 논리적 블록 어드레스 및 물리적 블록 어드레스 사이의 어드레스 번역(translation)들을 담당할 수 있다. 제어기(115)는 물리적 호스트 인터페이스를 통해 호스트 시스템(120)과 통신하기 위한 호스트 인터페이스 회로부를 더 포함할 수 있다. 호스트 인터페이스 회로부는 호스트 시스템으로부터 수신된 명령들을 메모리 컴포넌트들(112A 내지 112N)을 액세스하기 위한 명령 명령어들로 변환할 뿐만 아니라, 메모리 컴포넌트들(112A 내지 112N)과 연관된 응답들을 호스트 시스템(120)에 대한 정보로 변환할 수 있다.
일부 구현예들에 있어서, 제어기(115)는, 호스트 인터페이스 회로부로부터 수신된 호스트 명령어들을 번역하기 위해 사용되는 하드웨어(예를 들어, 회로부), 소프트웨어(예를 들어, 펌웨어), 또는 이들의 조합을 포함하는 호스트 메모리 번역 회로부(미도시)를 포함할 수 있다. 호스트 메모리 번역 회로부는, 호스트 어드레스들(예를 들어, 논리적 어드레스들)을 메모리 컴포넌트(112A-112N)의 메모리 어드레스들(예를 들어, 물리적 어드레스들)로 번역하도록 구성될 수 있다. 예를 들어, 호스트 시스템(120)은 제어기(115)로 하나 이상의 요청들(예를 들어, 판독 요청, 기입 요청, 등)을 전송할 수 있다. 요청들은 호스트 명령 및 이에 대하여 호스트 명령이 수행될 데이터의 호스트 어드레스들을 포함할 수 있다. 예를 들어, 판독 요청은 호스트 판독 명령 및 판독되도록 요청된 데이터의 호스트 어드레스들을 포함할 수 있다. 기입 요청은 호스트 기입 명령 및 기입되도록 요청된 데이터의 호스트 어드레스들을 포함할 수 있다. 호스트 어드레스들은 호스트 메모리 번역 회로부에 의해 메모리 어드레스들, 예컨대, 메모리 컴포넌트들(112A-112N)의 특정 데이터 유닛들을 식별하는 물리적 메모리 어드레스들로 변환될 수 있다.
메모리 서브-시스템(110)은 또한 예시되지 않은 추가적인 회로부 또는 컴포넌트들을 포함할 수 있다. 일부 구현예들에 있어서, 메모리 서브-시스템(110)은 캐시 또는 버퍼(예를 들어, DRAM) 및, 제어기(115)로부터 어드레스를 수신하고 메모리 컴포넌트들(112A 내지 112N)을 액세스하기 위해 어드레스를 디코딩할 수 있는 어드레스 회로부(예를 들어, 로우 디코더 및 컬럼 디코더)를 포함할 수 있다.
메모리 서브-시스템(110)은 본원에서 설명되는 동작들을 수행하기 위한 버퍼 관리 컴포넌트(113)(예를 들어, 회로부, 전용 로직, 프로그램가능 로직, 펌웨어, 등)를 포함한다. 일부 구현예들에 있어서, 제어기(115)는 버퍼 관리 컴포넌트(113)의 적어도 일 부분을 포함한다. 예를 들어, 제어기(115)는 본원에서 설명되는 동작들을 실행하기 위하여 로컬 메모리(119)에 저장된 명령어들을 실행하도록 구성된 프로세서(117)(프로세싱 디바이스)를 포함할 수 있다. 일부 구현예들에 있어서, 버퍼 관리 컴포넌트(113)는 호스트 시스템(110), 애플리케이션, 또는 운영 시스템의 부분이다.
일부 구현예들에 있어서, 버퍼 관리 컴포넌트(113)는 메모리 컴포넌트들(112)에 저장된 데이터를 판독하기 위한 요청을 호스트 시스템(120)으로부터 수신할 수 있다. 데이터를 판독하기 위한 요청에 응답하여, 버퍼 관리 컴포넌트(113)는, 판독 동작과 연관된 판독 데이터 경로에서 버퍼에서의 데이터에 대한 초기 탐색을 바이패스하는, 메모리 컴포넌트들(112)로부터 데이터를 판독하는 판독 동작을 수행한다. 버퍼에서의 데이터에 대한 초기 탐색을 바이패스하는 판독 동작을 수행하는 것에 응답하여, 버퍼 관리 컴포넌트(113)는 데이터를 호스트 시스템(120)으로 반환한다. 버퍼 관리 컴포넌트(113)의 동작들에 대한 추가적인 세부사항들이 이하에서 설명된다.
도 2는 본 개시의 일부 구현예들에 따른 메모리 서브-시스템을 포함하는 다른 예시적인 컴퓨팅 환경(200)을 예시한다. 도 1의 컴퓨팅 환경(100)의 엘리먼트들이 도 2를 예시하는 것을 돕기 위해 사용될 수 있다. 예를 들어, 컴퓨팅 환경(200)은 도 1의 호스트 시스템(120), 제어기(115), 및 메모리 컴포넌트들(112A-112N)을 포함한다. 컴퓨팅 환경(200)이 제한이 아니라 예시의 목적들을 위해 제공된다는 것이 주목될 수 있다. 구현예들에 있어서, 컴퓨팅 환경(200)은 도 1의 컴퓨팅 환경(100)의 일부, 모든, 더 많거나 또는 상이한 엘리먼트들을 포함할 수 있거나 또는 전혀 포함하지 않을 수 있다. 컴퓨팅 환경(200)의 메모리 서브-시스템(210)은 도 1의 메모리 서브-시스템(110)의 일부, 전부, 더 많은 또는 상이한 엘리먼트들을 포함할 수 있거나 또는 전혀 포함하지 않을 수 있다. 버퍼 관리 컴포넌트(113)는 도 2의 제어기(115)에 대하여 설명되는 동작들 중 하나 이상을 수행할 수 있다.
일부 구현예들에 있어서, 제어기(115)는 호스트 인터페이스(I/F)(220), 호스트 메모리 번역부(222), 버퍼(224), 콘텐트-어드레스가능 메모리(content-addressable memory; CAM)(226), 및 버퍼 관리 컴포넌트(113)를 포함할 수 있다.
일부 구현예들에 있어서, 메모리 컴포넌트들(112A-112N)은, 비-휘발성 메모리 셀들의 교차점 어레이를 포함하는 비-휘발성 메모리 컴포넌트들과 같은 비-휘발성 메모리 컴포넌트들을 포함할 수 있다. 이상에서 언급된 바와 같이, 비-휘발성 메모리의 교차점 어레이는, 스택가능 교차-그리드형 데이터 액세스 어레이와 함께, 벌크(bulk) 저항의 변화에 기반하여 비트 저장을 수행할 수 있다. 추가적으로, 위치-밖 기입 동작(write out-of-place operation)들(예를 들어, 기입될 위치의 데이터는 다른 데이터가 그 위치에 프로그래밍될 수 있기 이전에 소거됨)을 수행하는 다수의 플래시-기반 메모리들과는 대조적으로, 교차점 비-휘발성 메모리는 제-위치 기입 동작을 수행할 수 있으며, 여기에서 비-휘발성 메모리 셀은 비-휘발성 메모리 셀을 미리 소거하지 않고 프로그래밍될 수 있다. 본 개시의 측면들은 일반적으로 다른 유형들의 비-휘발성 메모리 컴포넌트들 또는 다른 유형들의 메모리 컴포넌트들에 적용될 수 있다.
일부 구현예들에 있어서, 제어기(115)는, 호스트 시스템(120)과 인터페이싱하기 위해 사용되는 하드웨어(예를 들어, 회로부), 소프트웨어(예를 들어, 펌웨어), 또는 이들의 조합을 포함하는 호스트 인터페이스(I/F)(220)를 포함할 수 있다. 호스트 인터페이스(220)는 (예를 들어, 주변 컴포넌트 상호연결 익스프레스(PCIe) 버스를 사용하여) 호스트 시스템으로부터 수신된 명령 패킷들을 호스트 메모리 번역부(222)에 대한 명령 명령어들로 변환할 수 있다. 호스트 인터페이스(220)는 또한 호스트 메모리 번역부(222)로부터의 응답들을 호스트 시스템(120)으로의 송신을 위한 호스트 명령들로 변환할 수 있다. 예를 들어, 호스트 시스템(120)은 제어기(115)의 호스트 인터페이스(220)로 메모리 컴포넌트들(112)에 저장된 데이터를 판독하기 위한 판독 요청, 메모리 컴포넌트들(112)에 데이터를 저장하기 위한 기입 요청, 또는 메모리 컴포넌트들(112)에 저장된 데이터를 소거하기 위한 소거 요청을 전송할 수 있다. 호스트 인터페이스(220)는 판독 요청을, 메모리 컴포넌트들(112)에서 데이터를 판독하기 위해 제어기(115)에 의해 수행되는 판독 동작으로 변환하고 데이터를 호스트 시스템(120)으로 반환할 수 있다. 호스트 인터페이스(220)는 기입 요청을, 호스트 시스템(120)으로부터 수신된 데이터를 메모리 컴포넌트들(112)에 기입하기 위해 제어기(115)에 의해 수행되는 기입 동작으로 변환할 수 있다. 호스트 인터페이스는 소거 요청을, 메모리 컴포넌트들(112)에서 데이터를 소거하기 위해 제어기(115)에 의해 수행되는 소거 동작으로 변환할 수 있다. 판독 동작들, 기입 동작들, 소거 동작들은 일부 메모리 동작들의 예들이다.
일부 구현예들에 있어서, 제어기(115)는, 호스트 인터페이스(220)로부터 수신된 호스트 명령어들을 번역하기 위해 사용되는 하드웨어(예를 들어, 회로부), 소프트웨어(예를 들어, 펌웨어), 또는 이들의 조합을 포함하는 호스트 메모리 번역부(222)를 포함할 수 있다. 호스트 메모리 번역부(222)는, 호스트 어드레스들(예를 들어, 논리적 어드레스들)을 메모리 컴포넌트들(112)의 메모리 어드레스들(예를 들어, 물리적 어드레스들)로 번역하도록 구성될 수 있다. 예를 들어, 호스트 시스템(120)은 제어기(115)로 하나 이상의 요청들(예를 들어, 판독 요청, 기입 요청, 등)을 전송할 수 있다. 요청들은 호스트 명령 및 이에 대하여 호스트 명령이 수행될 데이터의 호스트 어드레스들을 포함할 수 있다. 예를 들어, 판독 요청은 호스트 판독 명령 및 판독되도록 요청된 데이터의 호스트 어드레스들을 포함할 수 있다. 기입 요청은 호스트 기입 명령 및 기입되도록 요청된 데이터의 호스트 어드레스들을 포함할 수 있다. 호스트 어드레스들은 호스트 메모리 번역부(222)에 의해 메모리 어드레스들, 예컨대, 메모리 컴포넌트들(112)의 특정 논리적 유닛 번호(logical unit number; LUN)들을 식별하는 물리적 메모리 어드레스들로 변환될 수 있다. 논리적 유닛 번호는 메모리의 유닛을 지칭할 수 있다. 예를 들어, 메모리의 유닛은 메모리 컴포넌트(112)의 다이(die)일 수 있다. 다른 구현예들에 있어서, 메모리의 유닛은 메모리의 상이한 양일 수 있다.
일부 구현예들에 있어서, 제어기(115)는, 메모리 컴포넌트들(112)에 기입될 또는 최근에(예를 들어, 1ms 이내에) 기입된 데이터(본원에서 "호스트 데이터"로도 지칭됨)를 저장하기 위한 하드웨어(예를 들어, 회로부), 소프트웨어(예를 들어, 펌웨어) 또는 이들의 조합을 포함할 수 있는 버퍼(224)를 포함할 수 있다. 일부 구현예들에 있어서, 버퍼(224)(본원에서 "최근 기입 버퍼" 또는 "기입 버퍼"로도 지칭됨)는 정적 랜덤 액세스 메모리(SRAM)와 같은 휘발성 메모리를 포함할 수 있다. 예를 들어, (예를 들어 호스트 시스템(120)으로부터의 기입 요청에 응답하는) 기입 동작의 수행에 있어서, 제어기(115)는 기입될 데이터를 버퍼(224) 상에 일시적으로 저장하고, 메모리 컴포넌트(112)에 데이터를 기입하기 위해 버퍼(224)로부터 데이터를 검색할 수 있다. (예를 들어, 새로운 기입 요청들에 응답하여) 새로운 데이터가 버퍼(224)에 의해 수신됨에 따라, 버퍼(224)에서의 더 오래된 데이터는 (예를 들어, 선입선출(first-in first-out; FIFO) 기법을 사용하여) 오버라이트된다.
일부 구현예들에 있어서, 제어기(115)는, 버퍼(224)에 저장된 데이터를 나타내는 정보를 저장하기 위한 하드웨어(예를 들어, 회로부), 소프트웨어(예를 들어, 펌웨어), 또는 이들의 조합을 포함할 수 있는 콘텐트-어드레스가능 메모리(CAM)(226)를 포함할 수 있다. 일부 구현예들에 있어서, 기입 동작의 수행에 있어서, 데이터는 버퍼(224) 상에 저장되며, 데이터와 연관된 (예를 들어, 메모리 컴포넌트들(112)의) 메모리 어드레스들은 콘텐트-어드레스가능 메모리(226)에 저장될 수 있다. 구현예들에 있어서, 콘텐트-어드레스가능 메모리(226)는 룩업-테이블(lookup-table) 기능을 구현할 수 있으며, 여기에서 콘텐트-어드레스가능 메모리(226)는 데이터 워드(예를 들어, 메모리 어드레스)를 수신하고, 데이터가 콘텐트-어드레스가능 메모리(226)에 저장되어 있는지 여부를 결정하기 위해 그것의 메모리를 탐색한다. 일부 구현예들에 있어서, 데이터 워드를 찾는 것에 응답하여, 콘텐트-어드레스가능 메모리(226)는, 데이터 워드와 연관된 버퍼에서의 데이터 또는 버퍼에서의 데이터의 위치를 반환할 수 있다. 일부 구현예들에 있어서, 콘텐트-어드레스가능 메모리(226)는 전용 비교 회로부를 사용하여 단일 클럭 사이클에서 룩업-테이블 기능을 수행할 수 있다.
구현예들에 있어서, 판독 동작을 수행하기 위해, 제어기(115)는 버퍼(224)에서 데이터에 대한 탐색을 수행할 수 있다. 제어기(115)는 데이터의 연관된 메모리 어드레스에 대하여 콘텐트-어드레스가능 메모리(226)를 탐색할 수 있다. 콘텐트-어드레스가능 메모리(226)에서 판독될 데이터의 메모리 어드레스를 찾는 것에 응답하여, 제어기(115)는, 데이터가 버퍼(224)에 저장되어 있으며 (예를 들어, 메모리 컴포넌트들(112)이 아니라) 버퍼(224)로부터 데이터를 검색할 것을 결정할 수 있다. 콘텐트-어드레스가능 메모리(226)에서 판독될 데이터의 메모리 어드레스를 찾지 못하는 것에 응답하여, 제어기(115)는, 데이터가 콘텐트-어드레스가능 메모리(226)에 저장되어 있지 않다는 것을 결정할 수 있다.
구현예들에 있어서, 제어기(115)의 엘리먼트들은 판독 동작 또는 기입 동작의 수행에서 사용되는 단순화된 데이터 경로(205)(예를 들어, 판독 데이터 경로 또는 기입 데이터 경로)를 예시한다. 데이터 경로(205)는 데이터 프로세싱 동작들을 수행하는 하나 이상의 기능적 유닛들을 포함할 수 있다. 데이터 경로(205)는 호스트 인터페이스(220), 호스트 메모리 번역부(222), 버퍼(224), 및 콘텐트-어드레스가능 메모리(226)를 포함한다. 컴퓨팅 환경(200)의 데이터 경로는 보다 더 일반적으로, 호스트 시스템(120), 제어기(115)의 데이터 경로(205), 및 메모리 컴포넌트들(112)로 지칭될 수 있다.
도 3은 일부 구현예들에 따른 판독 동작을 수행하는 예시적인 방법의 순서도이다. 방법(300)은, 하드웨어(예를 들어, 프로세싱 디바이스, 회로부, 전용 로직, 프로그램가능 로직, 마이크로코드, 디바이스의 하드웨어, 집적 회로, 등), 소프트웨어(예를 들어, 프로세싱 디바이스 상에서 실행되거나 또는 구동되는 명령어들), 또는 이들의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 일부 구현예들에 있어서, 방법(300)은 도 1 또는 도 2의 제어기(115)의 버퍼 관리 컴포넌트(113)에 의해 수행될 수 있다. 다른 구현예들에 있어서, 방법(300)은 동일하거나 또는 상이한 순서로 수행되는 동일하거나, 상이하거나, 추가적이거나, 또는 더 적은 동작들을 포함할 수 있다. 특정 시퀀스 또는 순서로 도시되었지만, 달리 명시되지 않는 한, 프로세스들의 순서가 수정될 수 있다. 따라서, 예시된 구현예들은 오로지 예들로서 이해되어야 하며, 예시된 동작들은 상이한 순서로 수행될 수 있으며, 일부 동작들은 병렬로 수행될 수 있다. 추가적으로, 다양한 구현예들에서 하나 이상의 동작들이 생략될 수 있다. 따라서, 모든 구현예에 있어서 모든 동작들이 요구되는 것은 아니다. 다른 프로세스 흐름들이 가능하다. 선행하는 도면들의 엘리먼트들이 도 3을 예시하는 것을 돕기 위해 사용될 수 있다.
블록(305)에서, 프로세싱 로직은 메모리 컴포넌트들(112)에 저장된 데이터를 판독하기 위한 판독 요청을 호스트 시스템(120)으로부터 수신한다. 판독 요청은 도 2에 대하여 추가로 설명된다.
블록(310)에서, 프로세싱 로직은, 판독 요청에 응답하여, 판독 동작을 수행하고 메모리 컴포넌트들(112)로부터 데이터를 판독한다. 프로세싱 로직은 데이터와 연관된 하나 이상의 메모리 어드레스들을 사용하여 메모리 컴포넌트들(112)로부터 데이터를 판독할 수 있다. 구현예들에 있어서, 판독 동작을 수행하기 위하여, 프로세싱 로직은 판독 동작과 연관된 데이터 경로(205)에서 버퍼(224)에서의 데이터에 대한 초기 탐색(본원에서 "사전 탐색"으로도 지칭됨)을 바이패스한다. 예를 들어, 메모리 컴포넌트들(112)에서 데이터에 대하여 탐색하기 이전에 버퍼에서 데이터에 대한 초기 탐색을 수행하는 것이 아니라, 제어기(115)는 버퍼(224)에서의 데이터의 초기 탐색을 바이패스하며, (예를 들어, 버퍼(224)에서 데이터에 대하여 미리 탐색하지 않고) 메모리 컴포넌트들(112)로부터 데이터를 직접 판독할 수 있다.
블록(315)에서, 프로세싱 로직은 메모리 컴포넌트들(112)로부터 판독된 데이터에 대하여 하나 이상의 오류 정정 코드(ECC) 동작들을 수행한다. 일부 구현예들에 있어서, 제어기(115)는 데이터 내의 오류들을 검출하거나 또는 정정하는 것을 시도하기 위해 하나 이상의 오류 정정 코드 동작들을 수행할 수 있다. 예를 들어, 하나 이상의 오류 정정 코드 동작들은 데이터의 하나 이상의 오류들을 검출할 수 있다. 오류를 검출하는 것에 응답하여, 제어기(115)는 데이터의 복수의 오류들을 정정하기 위해 하나 이상의 추가적인 오류 정정 코드 동작들을 수행할 수 있다. 하나 이상의 오류 정정 코드 동작들은, 오류 정정 코드의 정정 성능(본원에서 "t"로도 지칭됨)보다 더 적거나 또는 동일한 복수의 오류들을 정정할 수 있다. 데이터 내의 오류들의 수가 오류 정정 코드의 정정 성능보다 더 큰 경우, 오류 정정 코드는 데이터 내의 모든 오류들을 정정할 수 없다(예를 들어, 정정이 불가능한 오류). 구현예들에 있어서, 오류 정정 코드 동작들은, 다른 것들 중에서도, 패리티 체크, 제품 코드, BCH(Bose-Chaudhuri-Hocquenghem) 코드, 저 밀도 패리티 코드(Low Density Parity Code; LDPC)와 같은 오류 정정 코드들의 하나 이상의 클래스들과 연관될 수 있다.
블록(320)에서, 프로세싱 로직은, 하나 이상의 오류 정정 코드 동작들을 고려하여 메모리 컴포넌트들(112)로부터 판독된 데이터에 오류가 없는지 여부를 결정한다. 일 구현예에 있어서, 프로세싱 로직은 메모리 컴포넌트들(112)로부터 판독된 데이터 내의 임의의 오류들을 검출하지 않는다. 데이터가 임의의 오류들을 포함하지 않는다고 결정하는 것에 응답하여, 프로세싱 로직은 블록(330)으로 진행하고, 메모리 컴포넌트들(112)로부터 판독된 데이터를 호스트 시스템(120)으로 반환할 수 있다.
다른 구현예에 있어서, 프로세싱 로직은, 데이터에 대해 수행된 하나 이상의 오류 정정 코드 동작들이 메모리 컴포넌트들(112)로부터 판독된 데이터의 하나 이상의 오류들(예를 들어, 정정가능 오류들)을 정정한다고 결정할 수 있다(예를 들어, 데이터의 오류들의 수는 오류 정정 코드의 오류 정정 성능보다 더 작거나 또는 동일하다). 데이터 내의 오류들이 정정되었다는 것(그리고 데이터 내에 어떠한 오류들도 남아 있지 않다는 것)을 결정하는 것에 응답하여, 프로세싱 로직은 블록(330)으로 진행하며, 정정된 데이터를 호스트 시스템(120)으로 반환할 수 있다.
일부 구현예에 있어서, 하나 이상의 오류 정정 코드 동작들은 데이터에서 검출된 하나 이상의 오류들(예를 들어, 정정이 불가능한 오류들)을 정정할 수 없다(예를 들어, 데이터의 오류들의 수가 오류 정정 코드의 오류 정정 성능보다 더 크거나 또는 동일하다). 프로세싱 로직은, 하나 이상의 오류 정정 코드 동작들이 메모리 컴포넌트들(112)로부터 판독된 데이터의 오류(들)(예를 들어, 정정이 불가능한 오류)를 정정하지 않는다는 것을 결정할 수 있다. 하나 이상의 오류 정정 코드 동작들이 메모리 컴포넌트들(112)로부터 판독된 데이터의 오류(들)(예를 들어, 정정이 불가능한 오류)를 정정하지 않는다고 결정하는 것에 응답하여, 프로세싱 로직은 버퍼(224)에서 데이터에 대한 후속 탐색을 수행하기 위해 블록(325)으로 진행한다.
블록(325)에서, 프로세싱 로직은 버퍼(224)에서 데이터에 대한 후속 탐색(예를 들어, 메모리 컴포넌트들(112)로부터 데이터를 판독하는 것에 후속함)을 수행한다. 버퍼(224)에서 데이터에 대한 탐색은 도 2에 대하여 추가로 설명된다.
블록(335)에서, 버퍼(224)에서 데이터에 대한 후속 탐색을 수행하는 것에 응답하여, 프로세싱 로직은 데이터가 버퍼(224)에 저장되었는지 여부를 결정한다. 구현예들에 있어서, 데이터가 버퍼(224)에 저장되어 있다고 결정하는 것에 응답하여, 프로세싱 로직은 버퍼(224)로부터 데이터를 판독하고, 버퍼(224)로부터 판독된 데이터를 호스트 시스템(120)으로 반환하기 위해 블록(330)으로 진행한다. 구현예들에 있어서, 데이터가 버퍼(224)에 저장되어 있다고 결정하는 것에 응답하여, 프로세싱 로직은 버퍼(224)로부터 데이터를 판독하고, 메모리 컴포넌트들(112)에 데이터를 재-기입하기 위해 블록(345)으로 진행한다. (이상에서 설명된 바와 같이) 데이터가 메모리 컴포넌트들(112)에 기입된 직후에 데이터를 판독함으로써 메모리 컴포넌트들(112)로부터 판독된 데이터가 손상된 경우들에 있어서, 데이터를 재-기입하는 것이 손상된 데이터를 정정할 수 있다는 것이 주목될 수 있다. 일부 구현예들에 있어서, 데이터가 버퍼(224)에 저장되어 있지 않다고 결정하는 것에 응답하여, 프로세싱 로직은 오류 복구를 수행하기 위해 블록(340)으로 진행한다.
블록(340)에서, 데이터가 버퍼(224)에 저장되어 있지 않다고 결정하는 것에 응답하여, 프로세싱 로직은 메모리 컴포넌트들(112)로부터 판독된 데이터 내의 오류들(예를 들어, 블록(320)의 ECC를 통해 정정이 불가능한 오류들)을 정정하기 위해 하나 이상의 오류 복구 동작들을 수행한다. 오류 복구 동작들은 오류 정정 코드 동작들과 유사할 수 있으며, 그 결과 오류 복구 동작들은 오류 복구의 정정 성능보다 더 작거나 또는 동일한 복수의 오류들을 정정할 수 있다(또는 ECC의 유사한 클래스들을 포함할 수 있다). 일부 구현예들에 있어서, 오류 복구 동작들은 블록(315)의 오류 정정 코드 동작들보다 더 복잡하다(예를 들어, 디바이스 판독 파라미터들, ECC 파라미터들, 등을 변화시킨다). 구현예들에 있어서, 오류 복구 동작들의 오류 정정 능력은 블록(315)의 오류 정정 코드 동작들의 오류 정정 능력보다 더 클 수 있다(예를 들어, 더 많은 수의 오류들을 정정할 수 있다). 일부 구현예들에 있어서, 오류 복구 동작들의 수행에 의해 초래되는 레이턴시는 블록(315)의 오류 정정 코드 동작들의 수행에 의해 초래되는 레이턴시보다 더 클 수 있다. 예를 들어, 오류 복구 동작들의 수행은 블록(310)의 오류 정정 코드 동작들보다 더 긴 시간을 소요하며, 이는 데이터를 호스트 시스템(120)으로 반환함에 있어서 더 큰 지연을 초래할 수 있다.
일부 구현예들에 있어서, 오류 복구 동작이 메모리 컴포넌트들(112)로부터 판독된 데이터 내의 오류들을 정정하는데 실패했다고 결정하는 것에 응답하여, 프로세싱 로직은 (예를 들어, 정정이 불가능한 오류를 갖는 데이터를 식별하는) 리포트를 생성하며, 리포트를 호스트 시스템(120)으로 제출한다(미도시).
일부 구현예들에 있어서, 오류 복구 동작들을 사용하여 메모리 컴포넌트들(112)로부터 판독된 데이터 내의 오류들을 정정하는 것에 응답하여, 프로세싱 로직은 블록(330)으로 진행하고 정정된 데이터를 호스트 시스템(120)으로 반환한다. 일부 구현예들에 있어서, 오류 복구 동작들을 사용하여 메모리 컴포넌트들(112)로부터 판독된 데이터 내의 오류들을 정정하는 것에 응답하여, 프로세싱 로직은 데이터를 메모리 컴포넌트들(112)에 재-기입하기 위해 블록(345)으로 진행한다.
(이상에서 언급된 바와 같이) 블록(330)에서, 프로세싱 로직은 판독 요청(예를 들어, 블록(305))에 응답하여 데이터를 호스트 시스템(120)으로 반환한다.
블록(345)에서, 프로세싱 로직은 버퍼에 저장된 데이터를 메모리 컴포넌트들(112)에 기입하기 위하여 기입 동작(예를 들어, 재-기입 동작)을 수행한다. 일부 구현예들에 있어서, 기입 동작은 제-위치 기입 동작이다. 일부 구현예들에 있어서, 기입 동작의 수행은 버퍼(224)의 데이터를, 판독 동작이 이로부터 데이터를 판독하는(예를 들어, 블록(310)) 메모리 컴포넌트들(112)의 동일한 위치(예를 들어, 동일한 메모리 어드레스)에 기입한다. 데이터는 판독 동작(예를 들어, 블록(310))에 의해 손상될 수 있으며, 프로세싱 로직은 손상된 데이터를 정정하기 위하여 데이터를 메모리 컴포넌트들(112)의 동일한 위치에 기입한다는 것이 주목될 수 있다. 일부 구현예들에 있어서, 프로세싱 로직은 블록(330) 및 블록(345)의 동작들을 동시에, 순차적으로, 또는 달리 수행할 수 있다.
도 4는 일부 구현예들에 따른 판독 동작을 수행하는 예시적인 방법의 순서도이다. 방법(400)은, 하드웨어(예를 들어, 프로세싱 디바이스, 회로부, 전용 로직, 프로그램가능 로직, 마이크로코드, 디바이스의 하드웨어, 집적 회로, 등), 소프트웨어(예를 들어, 프로세싱 디바이스 상에서 실행되거나 또는 구동되는 명령어들), 또는 이들의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 일부 구현예들에 있어서, 방법(400)은 도 1 또는 도 2의 제어기(115)의 버퍼 관리 컴포넌트(113)에 의해 수행될 수 있다. 다른 구현예들에 있어서, 방법(400)은 동일하거나 또는 상이한 순서로 수행되는 동일하거나, 상이하거나, 추가적이거나, 또는 더 적은 동작들을 포함할 수 있다는 것이 주목될 수 있다. 특정 시퀀스 또는 순서로 도시되었지만, 달리 명시되지 않는 한, 프로세스들의 순서가 수정될 수 있다. 따라서, 예시된 구현예들은 오로지 예들로서 이해되어야 하며, 예시된 동작들은 상이한 순서로 수행될 수 있으며, 일부 동작들은 병렬로 수행될 수 있다. 추가적으로, 다양한 구현예들에서 하나 이상의 동작들이 생략될 수 있다. 따라서, 모든 구현예에 있어서 모든 동작들이 요구되는 것은 아니다. 다른 프로세스 흐름들이 가능하다. 선행하는 도면들의 엘리먼트들이 도 4를 예시하는 것을 돕기 위해 사용될 수 있다.
블록(405)에서, 프로세싱 로직은 메모리 컴포넌트들(112)에 저장된 호스트 데이터를 판독하기 위한 요청을 호스트 시스템(120)으로부터 수신한다. 블록(410)에서, 호스트 데이터를 판독하기 위한 요청에 응답하여, 프로세싱 로직은, 메모리 컴포넌트들(112)로부터 호스트 데이터를 판독하며 판독 동작과 연관된 판독 데이터 경로(205)에서 버퍼(224)에서의 호스트 데이터에 대한 초기 탐색을 바이패스하는, 판독 동작을 수행한다. 블록(415)에서, 버퍼(224)에서의 호스트 데이터에 대한 초기 탐색을 바이패스하는 판독 동작을 수행하는 것에 응답하여, 프로세싱 로직은 호스트 데이터를 호스트 시스템(120)으로 반환한다.
도 5는, 기계가 본원에서 논의되는 방법들 중 임의의 하나 이상의 수행하게끔 하기 위하여 명령어들의 세트가 실행될 수 있는 컴퓨터 시스템(500)의 예시적인 기계를 예시한다. 일부 실시예들에 있어서, 컴퓨터 시스템(500)은 메모리 서브-시스템(예를 들어, 도 1의 메모리 서브-시스템(110) 또는 도 2의 메모리 서브-시스템(210))을 포함하거나, 이에 결합되거나, 또는 이를 사용하는 호스트 시스템(예를 들어, 도 1의 호스트 시스템(120))에 대응할 수 있거나, 또는 제어기의 동작들을 수행하기 위해(예를 들어, 도 1 또는 도 2의 버퍼 관리 컴포넌트(113)에 대응하는 동작들을 수행하기 위하여 운영 시스템을 실행하기 위해) 사용될 수 있다. 대안적인 실시예들에 있어, 기계는 LAN, 인트라넷, 엑스트라넷, 및/또는 인터넷 내에서 다른 기계들에 연결(예를 들어, 네트워킹)될 수 있다. 기계는 클라이언트-서버 네트워크 환경에서 서버의 자격으로 또는 클라이언트 기계의 자격으로 동작할 수 있거나, 피어-투-피어(peer-to-peer)(또는 분산형) 네트워크 환경에서 피어 기계로서 동작할 수 있거나, 또는 클라우드 컴퓨팅 인프라스트럭처 또는 환경에서 서버 또는 클라이언트 기계로서 동작할 수 있다.
기계는 개인용 컴퓨터(personal computer; PC), 태블릿 PC, 셋-탑 박스(set-top box; STB), 개인 디지털 보조장치(Personal Digital Assistant; PDA), 셀룰러 폰, 웹 기기, 서버, 네트워크 라우터, 스위치 또는 브리지, 또는 기계에 의해 취해질 액션들을 지정하는 (순차적인 또는 다른) 명령어들의 세트를 실행하는 것이 가능한 임의의 기계일 수 있다. 또한, 단일 기계가 예시되었지만, 용어 "기계"는 또한 본원에서 논의된 방법들 중 임의의 하나 이상의 방법을 수행하기 위한 명령어들의 세트(또는 복수의 세트들)을 개별적으로 또는 함께 실행하는 기계들의 임의의 집합을 포함하는 것으로 고려되어야만 한다.
예시적인 컴퓨터 시스템(500)은, 버스(530)를 통해 서로 통신하는 프로세싱 디바이스(502), 주 메모리(504)(예를 들어, 판독-전용 메모리(ROM), 플래시 메모리, 동기식 DRAM(SDRAM) 또는 램버스 DRAM(Rambus DRAM; RDRAM)과 같은 동적 랜덤 액세스 메모리(DRAM), 등), 정적 메모리(506)(예를 들어, 플래시 메모리, 정적 랜덤 액세스 메모리(static random access memory; SRAM), 등), 및 데이터 저장 시스템(518)을 포함한다.
프로세싱 디바이스(502)는 마이크로프로세서, 중앙 프로세싱 유닛, 또는 유사한 것과 같은 하나 이상의 범용 프로세싱 디바이스들을 나타낸다. 더 구체적으로, 프로세싱 디바이스는, 복합 명령어 세트 컴퓨팅(complex instruction set computing; CISC) 마이크로프로세서, 감소 명령어 세트 컴퓨팅(reduced instruction set computing; RISC) 마이크로프로세서, 훨씬 긴 명령어 워드(very long instruction word; VLIW) 마이크로프로세서, 또는 다른 명령어 세트들을 구현하는 프로세서, 또는 명령어 세트들의 조합을 구현하는 프로세서들일 수 있다. 프로세싱 디바이스(502)는 또한 애플리케이션 특정 집적 회로(application specific integrated circuit; ASIC), 필드 프로그램가능 게이트 어레이(field programmable gate array; FPGA), 디지털 신호 프로세서(digital signal processor; DSP), 네트워크 프로세서, 또는 유사한 것과 같은 하나 이상의 전용 프로세싱 디바이스들일 수 있다. 프로세싱 디바이스(502)는 본원에서 논의되는 동작들 및 단계들을 수행하기 위하여 명령어들(526)을 실행하도록 구성된다. 컴퓨터 시스템(500)은 네트워크(520)를 통해 통신하기 위한 네트워크 인터페이스 디바이스(508)를 더 포함할 수 있다.
데이터 저장 시스템(518)은, 본원에서 설명된 방법들 또는 기능들 중 임의의 하나 이상을 구체화하는 명령어들(526) 또는 소프트웨어의 하나 이상의 세트들이 저장된 기계-판독가능 저장 매체(524)(컴퓨터-판독가능 저장 매체로도 알려짐)를 포함할 수 있다. 명령어들(526)은 또한 컴퓨터 시스템(500)에 의한 그것의 실행 동안, 완전히 또는 적어도 부분적으로, 주 메모리(504) 내에 및/또는 프로세싱 디바이스(502) 내에 상주할 수 있으며, 주 메모리(504) 및 프로세싱 디바이스(502)가 또한 기계-판독가능 저장 매체를 구성한다. 기게-판독가능 저장 매체(524), 데이터 저장 시스템(518), 및/또는 주 메모리(504)는 도 1의 메모리 서브-시스템(110) 또는 도 2의 메모리 서브-시스템(210)에 대응할 수 있다.
일 실시예에 있어서, 명령어들(526)은 버퍼 관리 컴포넌트(예를 들어, 도 1 또는 도 2의 버퍼 관리 컴포넌트(113))에 대응하는 기능을 구현하기 위한 명령어들을 포함한다. 예시적인 실시예에 있어서 기계-판독가능 저장 매체(524)가 단일 매체로서 도시되었지만, 용어 "기계-판독가능 저장 매체"는 명령어들의 하나 이상의 세트들을 저장하는 단일 매체 또는 다수의 매체들을 포함하는 것으로 고려되어야만 한다. 용어 "기계-판독가능 저장 매체"는 또한, 기계로 하여금 본 개시의 방법들 중 임의의 하나 이상을 수행하게끔 하며 기계에 의한 실행을 위한 명령어들의 세트를 저장하거나 또는 인코딩할 수 있는 임의의 매체를 포함하는 것으로 고려되어야만 한다. 따라서 용어 "기계-판독가능 저장 매체"는, 비제한적으로, 고체-상태 메모리들, 광 매체들 및 자기 매체들을 포함하는 것으로 고려되어야만 한다.
선행하는 상세한 설명의 일부 부분들은 컴퓨터 메모리 내의 데이터 비트들에 대한 동작들의 심볼적 표현들 및 알고리즘의 관점에서 제공된다. 이러한 알고리즘적 설명들 및 표현들은 가장 효율적으로 그들의 작업의 내용을 다른 당업자들에게 전달하기 위해 데이터 프로세싱 분야의 당업자들에 의해 사용되는 방식들이다. 여기에서 그리고 전반적으로 알고리즘은 희망되는 결과를 야기하는 동작들의 자기-무모순(self-consistent) 시퀀스인 것으로 이해된다. 동작들은 물리적 수량들의 물리적 조작들을 필요로 하는 동작들이다. 필수적이지는 않지만, 일반적으로, 이러한 수량들은 저장되며, 결합되고, 비교되며 그리고 달리 조작될 수 있는 전기 또는 자기 신호들의 형태를 취한다. 원칙적으로 일반적인 사용을 이유로, 때때로 이러한 신호들을 비트들, 값들, 엘리먼트들, 심볼들, 문자들, 용어들, 숫자들, 또는 유사한 것으로 지칭하는 것이 편리하다는 것이 증명되었다.
그러나, 이러한 그리고 유사한 용어들의 전부가 적절한 물리적 수량들과 연관될 것이며, 이들은 단지 이러한 수량들에 적용될 편리한 라벨들에 불과하다는 것을 명심해야만 한다. 본 개시는, 컴퓨터 시스템의 레지스터 및 메모리들 내의 물리적(전자) 수량들로서 표현되는 데이터를 조작하고 이를 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 이러한 정보 저장 시스템들 내의 물리적 수량들로서 유사하게 표현되는 다른 데이터로 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 디바이스의 액션 및 프로세스들을 언급할 수 있다.
본 개시는 또한 본원의 동작들을 수행하기 위한 장치와 관련된다. 이러한 장치는 의도되는 목적들을 위해 특별하게 구성될 수 있거나, 또는 이는 컴퓨터 내에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 또는 재구성되는 범용 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은, 각각이 컴퓨터 시스템 버스에 결합되는, 컴퓨터 판독가능 저장 매체, 예컨대 비제한적으로, 플로피 디스크들, 광 디스크들, CD-ROM들, 및 자기-광 디스크들을 포함하는 임의의 유형의 디스크, 판독-전용 메모리(ROM)들, 랜덤 액세스 메모리(RAM)들, EPROM들, EEPROM들, 자기 또는 광 카드들, 또는 전자 명령어들을 저장하기에 적합한 임의의 유형의 매체에 저장될 수 있다.
본원에서 제공되는 알고리즘들 및 디스플레이들은 본질적으로 임의의 특정 컴퓨터 또는 다른 장치와 연관되지 않는다. 다양한 범용 시스템들이 본원의 기술들에 따라 프로그램과 함께 사용될 수 있거나, 또는 방법을 수행하기 위한 더 특화된 장치를 구성하는 것이 편리한 것으로 판명될 수 있다. 이러한 다양한 시스템들에 대한 구조는 이하의 설명에서 기술되는 바와 같이 나타날 것이다. 이에 더하여, 특정 개시는 임의의 특정 프로그래밍 언어를 참조하여 설명되지 않는다. 다양한 프로그래밍 언어들이 본원에서 설명된 바와 같은 본 개시의 교시들을 구현하기 위해 사용될 수 있다는 것이 이해될 것이다.
본 개시는, 컴퓨터 시스템(또는 다른 전자 디바이스들)을 본 개시에 따른 프로세스를 수행하도록 프로그래밍하기 위해 사용될 수 있는 저장된 명령어들을 갖는 기계-판독가능 매체를 포함할 수 있는 컴퓨터 프로그램 제품 또는 소프트웨어로서 제공될 수 있다. 기계-판독가능 매체는 기계(예를 들어, 컴퓨터)에 의해 판독가능한 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함한다. 일부 실시예들에 있어서, 기계-판독가능(예를 들어, 컴퓨터-판독가능) 매체는, 기계(예를 들어, 컴퓨터) 판독가능 저장 매체 예컨대 판독 전용 메모리(read only memory; "ROM"), 랜덤 액세스 메모리(random access memory; "RAM"), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 컴포넌트들, 등을 포함한다.
전술한 명세서에서, 본 개시의 실시예들은 그것의 특정한 예시적인 실시예들을 참조하여 설명되었다. 다음의 청구항들에서 기술되는 바와 같은 본 개시의 실시예들의 광범위한 사상 및 범위로부터 벗어나지 않고 이에 대한 다양한 수정들이 이루이질 수 있다는 것이 명백할 것이다. 따라서, 본 명세서 및 도면들은 제한적인 의미가 아니라 예시적인 의미로서 간주되어야 한다.
또한, 단어 "예" 또는 "예시적인"은 본원에서 예, 사례, 또는 예시로서 역할한다는 것을 의미하기 위해 사용된다. 본원에서 예" 또는 "예시적인"으로서 설명된 임의의 측면 또는 설계는 반드시 다른 측면들 또는 설계들보다 더 선호되거나 바람직한 것으로는 해석되지 않아야 한다. 오히려, 단어들 "예" 또는 "예시적인"의 사용은 명확한 방식으로 개념을 제공하도록 의도된다. 본 출원에서 사용되는 바와 같은 용어 "또는"은 배타적인 "또는"이 아니라 포괄적인 "또는"을 의미하도록 의도된다. 즉, 달리 명시되지 않거나 또는 문맥으로부터 명확하지 않은 경우, "X가 A 또는 B를 포함한다"는 자연적인 포괄적 치환들 중 임의의 것을 의미하도록 의도된다. 즉, X가 A를 포함하거나; X가 B를 포함하거나; 또는 X가 A 및 B 둘 모두를 포함하는 경우, "X가 A 또는 B를 포함한다"가 전술한 사례들 중 임의 사례 하에서 충족된다. 이에 더하여, 본 출원 및 첨부된 청구항들에서 사용되는 바와 같은 관사들 "일(a 및 an)"은, 달리 명시되거나 또는 문맥으로부터 단수형을 지시하는 것이 명확하지 않은 한, "하나 이상"을 의미하는 것으로 해석될 수 있다. 또한, 전체에 걸쳐 용어 "일 구현예" 또는 "하나의 구현예" 또는 "일 실시예" 또는 "하나의 실시예"의 사용은, 달리 이와 같이 설명되지 않는 한, 동일한 구현예 또는 실시예를 의미하도록 의도되지 않는다. 본원에서 사용되는 용어들 "제 1", "제 2", "제 3", "제 4", 등은 상이한 엘리먼트들을 구별하기 위한 라벨들로서 의미되며, 반드시 그들의 수치적 지정에 따른 일반적인 의미를 갖는 것은 아닐 수 있다.

Claims (20)

  1. 시스템으로서,
    메모리 컴포넌트; 및
    상기 메모리 컴포넌트에 결합된 프로세싱 디바이스를 포함하며, 상기 프로세싱 디바이스는,
    호스트 시스템으로부터 상기 메모리 컴포넌트에 저장된 데이터를 판독하기 위한 요청을 수신하고;
    상기 데이터를 판독하기 위한 상기 요청에 응답하여, 상기 메모리 컴포넌트로부터 상기 데이터를 검색하기 위한 판독 동작을 수행하며;
    상기 메모리 컴포넌트로부터 검색된 상기 데이터가 정정될 수 없는 오류를 포함하는지 여부를 결정하고; 및
    상기 메모리 컴포넌트로부터 검색된 상기 데이터가 정정될 수 없는 오류를 포함한다고 결정하는 것에 응답하여, 상기 메모리 컴포넌트와 연관된 데이터 경로 내의 버퍼에서 상기 데이터를 탐색하는, 시스템.
  2. 청구항 1에 있어서, 상기 메모리 컴포넌트로부터 상기 데이터를 검색하기 위한 상기 판독 동작을 수행하기 위하여, 상기 프로세싱 디바이스는 추가로,
    상기 데이터가 상기 버퍼에 저장되어 있는지 여부를 결정하기 위한 상기 버퍼의 초기 탐색의 사전 수행 없이 상기 메모리 컴포넌트로부터 직접 상기 데이터를 판독하는, 시스템.
  3. 청구항 1에 있어서, 상기 프로세싱 디바이스는 추가로,
    상기 메모리 컴포넌트로부터 검색된 상기 데이터에 대하여 하나 이상의 오류 정정 코드 동작들을 수행하는, 시스템.
  4. 청구항 3에 있어서, 상기 프로세싱 디바이스는 추가로,
    상기 하나 이상의 오류 정정 코드 동작들의 수행을 고려하여 상기 메모리 컴포넌트로부터 검색된 상기 데이터에 오류가 없다는 것을 결정하고; 및
    상기 메모리 컴포넌트로부터 검색된 상기 데이터에 오류가 없다는 것을 결정하는 것에 응답하여, 상기 메모리 컴포넌트로부터 검색된 상기 데이터를 상기 호스트 시스템으로 반환하는, 시스템.
  5. 청구항 3에 있어서, 상기 프로세싱 디바이스는 추가로,
    상기 데이터에 대해 수행된 상기 하나 이상의 오류 정정 코드 동작들이 상기 메모리 컴포넌트로부터 검색된 상기 데이터의 오류를 정정하였다는 것을 결정하고; 및
    상기 하나 이상의 오류 정정 코드 동작들이 상기 오류를 정정하였다는 것을 결정하는 것에 응답하여, 상기 정정된 데이터를 상기 호스트 시스템으로 반환하는, 시스템.
  6. 청구항 3에 있어서, 상기 프로세싱 디바이스는 추가로,
    상기 하나 이상의 오류 정정 코드 동작들의 수행을 고려하여 상기 메모리 컴포넌트로부터 검색된 상기 데이터가 정정될 수 없는 오류인 상기 오류를 포함한다는 것을 결정하는, 시스템.
  7. 청구항 6에 있어서, 상기 프로세싱 디바이스는 추가로,
    상기 데이터가 상기 버퍼에 저장되어 있다는 것을 결정하고; 및
    상기 데이터가 상기 버퍼에 저장되어 있다는 것을 결정하는 것에 응답하여, 상기 버퍼로부터 상기 데이터를 검색하되, 상기 버퍼로부터 검색된 상기 데이터는 상기 호스트 시스템으로 반환되는, 시스템.
  8. 청구항 7에 있어서, 상기 프로세싱 디바이스는 추가로,
    상기 데이터가 상기 버퍼에 저장되어 있다는 것을 결정하는 것에 응답하여, 상기 버퍼로부터의 상기 데이터를 상기 메모리 컴포넌트에 기입하기 위한 제-위치 기입 동작을 수행하는, 시스템.
  9. 청구항 8에 있어서, 상기 제-위치 기입 동작은, 상기 판독 동작이 상기 데이터를 검색했던 상기 메모리 컴포넌트의 동일한 위치에 상기 데이터를 기입하는, 시스템.
  10. 청구항 7에 있어서, 상기 프로세싱 디바이스는 추가로,
    상기 데이터가 상기 버퍼에 저장되어 있지 않다는 것을 결정하는 것에 응답하여, 상기 데이터에 대하여 오류 복구 동작들을 수행하는, 시스템.
  11. 청구항 1에 있어서, 상기 메모리 컴포넌트는, 제-위치 기입 동작들이 수행되는 비-휘발성 메모리 컴포넌트를 포함하는, 시스템.
  12. 청구항 1에 있어서, 상기 버퍼는 상기 메모리 컴포넌트에 가장 최근에 기입된 데이터를 저장하기 위한 하나 이상의 휘발성 메모리 컴포넌트를 포함하는, 시스템.
  13. 방법으로서,
    프로세싱 디바이스에 의해, 호스트 시스템으로부터 메모리 컴포넌트에 저장된 데이터를 판독하기 위한 요청을 수신하는 단계;
    상기 프로세싱 디바이스에 의해, 상기 데이터를 판독하기 위한 상기 요청에 응답하여, 상기 메모리 컴포넌트로부터 상기 데이터를 검색하기 위한 판독 동작을 수행하는 단계;
    상기 메모리 컴포넌트로부터 검색된 상기 데이터가 정정될 수 없는 오류를 포함하는지 여부를 결정하는 단계;
    상기 메모리 컴포넌트로부터 검색된 상기 데이터가 정정될 수 없는 오류를 포함한다고 결정하는 것에 응답하여, 메모리 서브-시스템과 연관된 데이터 경로 내의 버퍼에서 상기 데이터를 탐색하는 단계를 포함하는, 방법.
  14. 청구항 13에 있어서, 상기 방법은,
    상기 메모리 컴포넌트로부터 검색된 상기 데이터에 대하여 오류 정정 코드 동작들을 수행하는 단계를 더 포함하는, 방법.
  15. 청구항 14에 있어서, 상기 방법은,
    상기 하나 이상의 오류 정정 코드 동작들의 수행을 고려하여 상기 메모리 컴포넌트로부터 검색된 상기 데이터에 오류가 없다는 것을 결정하는 단계; 및
    상기 메모리 컴포넌트로부터 검색된 상기 데이터에 오류가 없다는 것을 결정하는 것에 응답하여, 상기 메모리 컴포넌트로부터 검색된 상기 데이터를 상기 호스트 시스템으로 반환하는 단계를 더 포함하는, 방법.
  16. 청구항 14에 있어서, 상기 방법은,
    상기 하나 이상의 오류 정정 코드 동작들을 고려하여 상기 메모리 컴포넌트로부터 검색된 상기 데이터가 정정될 수 없는 상기 오류를 포함한다는 것을 결정하는, 단계;
    상기 데이터가 상기 버퍼에 저장되어 있다는 것을 결정하는 단계; 및
    상기 데이터가 상기 버퍼에 저장되어 있다는 것을 결정하는 것에 응답하여, 상기 버퍼로부터 상기 데이터를 검색하는 단계로서, 상기 버퍼로부터 검색된 상기 데이터는 상기 호스트 시스템으로 반환되는, 단계를 더 포함하는, 방법.
  17. 프로세싱 디바이스에 의한 실행에 응답하여, 상기 프로세싱 디바이스가 하기의 동작들을 수행하게끔 하는 명령어들을 포함하는 비-일시적인 컴퓨터-판독가능 매체로서, 상기 프로세싱 디바이스는,
    판독 동작과 연관된 판독 데이터 경로 내의 버퍼에서 데이터에 대한 사전 탐색을 바이패스하는, 메모리 컴포넌트들로부터 데이터를 검색하기 위한 상기 판독 동작을 수행하고; 및
    상기 버퍼에서 데이터에 대한 상기 사전 탐색을 바이패스하는 상기 판독 동작을 수행하는 것에 응답하여, 상기 데이터를 호스트 시스템으로 반환하는, 비-일시적인 컴퓨터-판독가능 매체.
  18. 청구항 17에 있어서, 상기 프로세싱 디바이스는 추가로, 상기 메모리 컴포넌트로부터 검색된 상기 데이터에 대하여 오류 정정 코드 동작들을 수행하는, 비-일시적인 컴퓨터-판독가능 매체.
  19. 청구항 18에 있어서, 상기 프로세싱 디바이스는 추가로, 상기 하나 이상의 오류 정정 코드 동작들이 상기 메모리 컴포넌트로부터 검색된 상기 데이터 내의 오류를 정정하지 않는다는 것을 결정하고; 및
    상기 하나 이상의 오류 정정 코드 동작들이 상기 메모리 컴포넌트로부터 검색된 상기 데이터 내의 오류를 정정하지 않는다는 것을 결정하는 것에 응답하여, 상기 버퍼에서 상기 데이터에 대한 후속 탐색을 수행하는, 비-일시적인 컴퓨터-판독가능 매체.
  20. 청구항 19에 있어서, 상기 프로세싱 디바이스는 추가로,
    상기 버퍼에서 상기 데이터에 대한 상기 후속 탐색의 수행에 기초하여 상기 데이터가 상기 버퍼에 저장되어 있다는 것을 결정하고; 및
    상기 데이터가 상기 버퍼에 저장되어 있다는 것을 결정하는 것에 응답하여, 상기 버퍼로부터 상기 데이터를 검색하되, 상기 버퍼로부터 검색된 상기 데이터는 상기 호스트 시스템으로 반환되는, 비-일시적인 컴퓨터-판독가능 매체.
KR1020217004564A 2018-07-19 2019-07-18 기입 버퍼 관리 KR20210024188A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/039,683 2018-07-19
US16/039,683 US10877835B2 (en) 2018-07-19 2018-07-19 Write buffer management
PCT/US2019/042461 WO2020018831A1 (en) 2018-07-19 2019-07-18 Write buffer management

Publications (1)

Publication Number Publication Date
KR20210024188A true KR20210024188A (ko) 2021-03-04

Family

ID=69161892

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217004564A KR20210024188A (ko) 2018-07-19 2019-07-18 기입 버퍼 관리

Country Status (4)

Country Link
US (2) US10877835B2 (ko)
EP (1) EP3824381A4 (ko)
KR (1) KR20210024188A (ko)
WO (1) WO2020018831A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210031518A (ko) * 2018-08-09 2021-03-19 마이크론 테크놀로지, 인크 선택 가능한 구성 프로파일들을 포함한 전력 구성 컴포넌트

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10877835B2 (en) * 2018-07-19 2020-12-29 Micron Technology, Inc. Write buffer management
US11734115B2 (en) * 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
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

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4887235A (en) * 1982-12-17 1989-12-12 Symbolics, Inc. Symbolic language data processing system
FR2655222B1 (fr) * 1989-11-28 1992-02-07 Alcatel Transmission Procede et dispositif de transmission numerique d'informations, avec demande automatique de retransmission, ou "arq".
US7224702B2 (en) * 2000-08-30 2007-05-29 The Chinese University Of Hong Kong System and method for error-control for multicast video distribution
EP1223578A3 (en) * 2000-12-12 2008-07-16 Kabushiki Kaisha Toshiba Data processing method using error-correcting code and an apparatus using the same method
US8904098B2 (en) * 2007-06-01 2014-12-02 Netlist, Inc. Redundant backup using non-volatile memory
US8638653B2 (en) * 2008-03-27 2014-01-28 Intel Corporation Adaptive transmissions for optimized application delivery in wireless networks
US8959280B2 (en) * 2008-06-18 2015-02-17 Super Talent Technology, Corp. Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear
US8301948B2 (en) * 2009-08-10 2012-10-30 Hitachi Global Storage Technologies Netherlands B.V. Storage device with adaptive error-correcting code for improved areal efficiency
US8352831B2 (en) * 2009-12-29 2013-01-08 Cleversafe, Inc. Digital content distribution utilizing dispersed storage
CN107317586B (zh) * 2011-01-14 2020-11-06 Ge视频压缩有限责任公司 熵编码设备和方法、熵解码设备和方法、及存储介质
US9128887B2 (en) * 2012-08-20 2015-09-08 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Using a buffer to replace failed memory cells in a memory component
KR102050896B1 (ko) 2013-02-19 2019-12-02 삼성전자주식회사 메모리 컨트롤러 및 그것의 동작 방법
US9298549B2 (en) * 2013-12-11 2016-03-29 International Business Machines Corporation Read buffer architecture supporting integrated XOR-reconstructed and read-retry for non-volatile random access memory (NVRAM) systems
US9514848B2 (en) 2014-04-03 2016-12-06 Lite-On Electronics (Guangzhou) Limited Solid state drive and associated error check and correction method
JP2015215774A (ja) 2014-05-12 2015-12-03 Tdk株式会社 メモリコントローラ、メモリシステム及びメモリ制御方法
US9547449B2 (en) 2014-11-12 2017-01-17 International Business Machines Corporation Performance optimization of read functions in a memory system
KR20190032433A (ko) * 2016-07-18 2019-03-27 난토믹스, 엘엘씨 분산 머신 학습 시스템들, 장치, 및 방법들
US10567006B2 (en) 2016-08-05 2020-02-18 Sandisk Technologies Llc Data relocation
US10877835B2 (en) * 2018-07-19 2020-12-29 Micron Technology, Inc. Write buffer management

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210031518A (ko) * 2018-08-09 2021-03-19 마이크론 테크놀로지, 인크 선택 가능한 구성 프로파일들을 포함한 전력 구성 컴포넌트

Also Published As

Publication number Publication date
EP3824381A4 (en) 2022-04-20
CN112543908A (zh) 2021-03-23
WO2020018831A1 (en) 2020-01-23
US20210073068A1 (en) 2021-03-11
US10877835B2 (en) 2020-12-29
US11526395B2 (en) 2022-12-13
EP3824381A1 (en) 2021-05-26
US20200026595A1 (en) 2020-01-23

Similar Documents

Publication Publication Date Title
US11526395B2 (en) Write buffer management
US11749373B2 (en) Bad block management for memory sub-systems
US11726869B2 (en) Performing error control operation on memory component for garbage collection
CN113126903A (zh) 用于在存储器接口中实现写后读命令的系统和方法
US20210232342A1 (en) Temperature correction in memory sub-systems
KR20210030482A (ko) 기입 동작과 관련된 사전 판독 동작의 조정
US11868202B2 (en) Granular error reporting on multi-pass programming of non-volatile memory
US11158396B2 (en) Data redirection upon failure of a program operation
US11080132B2 (en) Generating error checking data for error detection during modification of data in a memory sub-system
CN114270304A (zh) 存储器组件的同一平面内的数据压缩
US11726874B2 (en) Storing critical data at a memory system
CN112543908B (zh) 写入缓冲器管理
US11842787B2 (en) Error read flow component
US11221912B2 (en) Mitigating an undetectable error when retrieving critical data during error handling
CN113508365A (zh) 存储器子系统的提前解码终止

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application