KR102507302B1 - 스토리지 장치 및 상기 스토리지 장치의 동작 방법 - Google Patents
스토리지 장치 및 상기 스토리지 장치의 동작 방법 Download PDFInfo
- Publication number
- KR102507302B1 KR102507302B1 KR1020180007894A KR20180007894A KR102507302B1 KR 102507302 B1 KR102507302 B1 KR 102507302B1 KR 1020180007894 A KR1020180007894 A KR 1020180007894A KR 20180007894 A KR20180007894 A KR 20180007894A KR 102507302 B1 KR102507302 B1 KR 102507302B1
- Authority
- KR
- South Korea
- Prior art keywords
- buffer
- memory
- read
- controller
- error bits
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 39
- 239000000872 buffer Substances 0.000 claims abstract description 237
- 230000003139 buffering effect Effects 0.000 claims abstract description 23
- 238000012544 monitoring process Methods 0.000 claims description 68
- 230000007423 decrease Effects 0.000 claims description 12
- 238000012937 correction Methods 0.000 claims description 5
- 230000006870 function Effects 0.000 claims description 4
- 238000001514 detection method Methods 0.000 claims description 3
- 230000003068 static effect Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 20
- 230000008859 change Effects 0.000 description 9
- 238000011017 operating method Methods 0.000 description 7
- 238000013507 mapping Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 239000008186 active pharmaceutical agent Substances 0.000 description 4
- 230000002542 deteriorative effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 101000927793 Homo sapiens Neuroepithelial cell-transforming gene 1 protein Proteins 0.000 description 1
- 101001124937 Homo sapiens Pre-mRNA-splicing factor 38B Proteins 0.000 description 1
- 101000631937 Homo sapiens Sodium- and chloride-dependent glycine transporter 2 Proteins 0.000 description 1
- 101000639975 Homo sapiens Sodium-dependent noradrenaline transporter Proteins 0.000 description 1
- 102100028886 Sodium- and chloride-dependent glycine transporter 2 Human genes 0.000 description 1
- 230000033001 locomotion Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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/073—Error 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 memory management context, e.g. virtual memory or cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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/0727—Error 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1048—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
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 메모리, 제1 메모리에서 발생한 에러 비트의 개수 또는 발생 빈도를 모니터링하고 에러 비트의 개수 또는 발생 빈도를 기초로 기입 데이터 또는 독출 데이터를 버퍼링하기 위한 버퍼 메모리를 동적으로 결정하도록 구성된 컨트롤러, 그리고 에러 비트의 개수 또는 발생 빈도가 임계 개수 이상인 경우 기입 데이터 또는 독출 데이터를 버퍼링하도록 구성된 제2 메모리를 포함한다.
Description
본 개시의 기술적 사상은 스토리지 장치에 관한 것이며, 더욱 상세하게는, 스토리지 장치 및 상기 스토리지 장치의 동작 방법에 관한 것이다.
최근 SSD(Solid State Drive)와 같은 스토리지 장치가 널리 사용되고 있다. 스토리지 장치는 예를 들어, 플래시 메모리와 같은 비휘발성 메모리와, 비휘발성 메모리를 제어하는 컨트롤러를 포함하고, 컨트롤러는 예를 들어, SRAM(Static Random Access Memory)과 같은 내부 메모리를 포함할 수 있다. 스토리지 장치의 입출력 속도가 고속화되고 저장 용량이 증가함에 따라, 컨트롤러에 포함된 내부 메모리의 용량 및 기능이 증가하고 있다. 이때, 내부 메모리에서 소프트 에러가 발생할 수 있고, 이로써, 스토리지 장치의 신뢰성이 저하될 수 있다.
본 개시의 기술적 사상은 내부 메모리의 데이터 손상을 방지함으로써 스토리지 장치의 신뢰성을 향상시킬 수 있는 스토리지 장치 및 상기 스토리지 장치의 동작 방법을 제공한다.
본 개시의 기술적 사상에 따른 스토리지 장치는, 비휘발성 메모리, 상기 비휘발성 메모리에 기입하기 위한 기입 데이터 또는 상기 비휘발성 메모리로부터 독출된 독출 데이터를 버퍼링하도록 구성된 제1 메모리를 포함하고, 상기 제1 메모리에서 발생한 에러 비트의 개수 또는 상기 에러 비트의 발생 빈도를 기초로 상기 기입 데이터 또는 상기 독출 데이터를 버퍼링하기 위한 버퍼 메모리를 동적으로 결정하도록 구성된 컨트롤러, 및 상기 에러 비트의 개수 또는 상기 에러 비트의 발생 빈도가 임계치 이상인 경우, 상기 기입 데이터 또는 상기 독출 데이터를 버퍼링하도록 구성된 제2 메모리를 포함한다.
또한, 본 개시의 기술적 사상에 따른 스토리지 장치는, 비휘발성 메모리, 및 상기 비휘발성 메모리에 기입하기 위한 기입 데이터 또는 상기 비휘발성 메모리로부터 독출된 독출 데이터를 버퍼링하기 위한 버퍼링 영역을 포함하는 메모리를 포함하는 컨트롤러를 포함하고, 상기 컨트롤러는, 상기 버퍼링 영역에서 발생한 에러 비트의 개수 또는 상기 에러 비트의 발생 빈도를 기초로 상기 메모리의 리드 온리 영역에 대한 재기입(rewrite) 주기를 동적으로 결정하고, 결정된 상기 재기입 주기에 따라 상기 리드 온리 영역에 대한 재기입 동작을 동적으로 제어한다.
또한, 본 개시의 기술적 사상에 따른 스토리지 장치의 동작 방법은, 비휘발성 메모리, 및 상기 비휘발성 메모리를 제어하는 컨트롤러를 포함하는 스토리지 장치의 동작 방법으로서, 상기 컨트롤러에 의해, 상기 컨트롤러에 포함된 제1 메모리에서 발생한 에러 비트의 개수 또는 상기 에러 비트의 발생 빈도를 모니터링하는 단계, 상기 컨트롤러에 의해, 상기 에러 비트의 개수 또는 상기 에러 비트의 발생 빈도를 임계치와 비교하는 단계, 상기 에러 비트의 개수 또는 상기 에러 비트의 발생 빈도가 상기 임계치 이상인 경우, 상기 비휘발성 메모리에 기입하기 위한 기입 데이터 또는 상기 비휘발성 메모리로부터 독출된 독출 데이터를 상기 컨트롤러 외부에 배치된 제2 메모리에 버퍼링하는 단계, 및 상기 에러 비트의 개수 또는 상기 에러 비트의 발생 빈도가 상기 임계치 미만인 경우, 상기 기입 데이터 또는 상기 독출 데이터를 상기 제1 메모리에 버퍼링하는 단계를 포함한다.
또한, 본 개시의 기술적 사상에 따른 스토리지 장치의 동작 방법은, 비휘발성 메모리, 및 상기 비휘발성 메모리를 제어하는 컨트롤러를 포함하는 스토리지 장치의 동작 방법으로서, 상기 컨트롤러에 의해, 상기 컨트롤러에 포함된 메모리의 버퍼링 영역에서 발생한 에러 비트의 개수 또는 상기 에러 비트의 발생 빈도를 모니터링하는 단계, 상기 컨트롤러에 의해, 상기 에러 비트의 개수 또는 상기 에러 비트의 발생 빈도를 기초로 상기 메모리의 리드 온리 영역에 대한 재기입 주기를 동적으로 결정하는 단계, 및 상기 컨트롤러에 의해, 결정된 상기 재기입 주기에 따라 상기 리드 온리 영역에 대한 재기입 동작을 동적으로 제어하는 단계를 포함한다.
본 개시의 기술적 사상에 따르면, 컨트롤러에 포함된 메모리에서 발생한 에러 비트의 개수 또는 상기 에러 비트의 발생 빈도를 기초로 기입 버퍼 또는 독출 버퍼를 동적으로 결정함으로써, 기입 버퍼 또는 독출 버퍼에 버퍼링된 데이터의 소프트 에러를 방지할 수 있고, 이로써, 스토리지 장치의 신뢰성을 향상시킬 수 있다.
또한, 본 개시의 기술적 사상에 따르면, 컨트롤러에 포함된 메모리에서 발생한 에러 비트의 개수 또는 상기 에러 비트의 발생 빈도를 기초로 컨트롤러의 리드 온리 영역에 대한 재기입 주기를 동적으로 결정하고, 결정된 재기입 주기에 따라 리드 온리 영역에 대한 재기입 동작을 동적으로 제어할 수 있다. 이에 따라, 리드 온리 영역의 소프트 에러에 의한 데이터 손상을 방지할 수 있고, 이로써, 스토리지 장치의 신뢰성을 향상시킬 수 있다.
도 1은 본 개시의 일 실시예에 따른 스토리지 시스템을 나타내는 블록도이다.
도 2a는 본 개시의 일 실시예에 따른 스토리지 시스템의 노멀 독출 경로를 나타내고, 도 2b는 본 개시의 일 실시예에 따른 스토리지 시스템의 수정 독출 경로를 나타낸다.
도 3a는 본 개시의 일 실시예에 따른 스토리지 시스템의 노멀 기입 경로를 나타내고, 도 3b는 본 개시의 일 실시예에 따른 스토리지 시스템의 수정 기입 경로를 나타낸다.
도 4는 본 개시의 일 실시예에 따른 스토리지 장치의 일 예를 나타내는 블록도이다.
도 5는 도 4의 컨트롤러의 일 예를 상세하게 나타내는 블록도이다.
도 6은 도 4의 컨트롤러의 다른 예를 상세하게 나타내는 블록도이다.
도 7은 본 개시의 일 실시예에 따른 스토리지 장치의 일 예를 나타내는 블록도이다.
도 8은 도 7의 컨트롤러의 일 예를 상세하게 나타내는 블록도이다.
도 9는 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 10은 도 9의 동작 방법의 일 예에 따른 호스트, 컨트롤러 및 비휘발성 메모리 사이의 동작을 나타내는 흐름도이다.
도 11은 도 9의 동작 방법의 다른 예에 따른 호스트, 컨트롤러 및 비휘발성 메모리 사이의 동작을 나타내는 흐름도이다.
도 12는 본 개시의 일 실시예에 따른 스토리지 장치의 일 예를 나타내는 블록도이다.
도 13은 본 개시의 일 실시예에 따른 스토리지 장치의 다른 예를 나타내는 블록도이다.
도 14는 도 13의 컨트롤러의 일 예를 상세하게 나타내는 블록도이다.
도 15는 도 13의 컨트롤러의 다른 예를 상세하게 나타내는 블록도이다.
도 16은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 17은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 18은 도 16의 동작 방법의 일 예에 따른 컨트롤러 및 비휘발성 메모리 사이의 동작을 나타내는 흐름도이다.
도 19는 본 개시의 일 실시예에 따른 네트워크 시스템을 나타낸다.
도 20은 본 개시의 일 실시예에 따른 네트워크 시스템을 나타낸다.
도 21은 본 개시의 일 실시예에 따른 전자 장치를 나타낸다.
도 2a는 본 개시의 일 실시예에 따른 스토리지 시스템의 노멀 독출 경로를 나타내고, 도 2b는 본 개시의 일 실시예에 따른 스토리지 시스템의 수정 독출 경로를 나타낸다.
도 3a는 본 개시의 일 실시예에 따른 스토리지 시스템의 노멀 기입 경로를 나타내고, 도 3b는 본 개시의 일 실시예에 따른 스토리지 시스템의 수정 기입 경로를 나타낸다.
도 4는 본 개시의 일 실시예에 따른 스토리지 장치의 일 예를 나타내는 블록도이다.
도 5는 도 4의 컨트롤러의 일 예를 상세하게 나타내는 블록도이다.
도 6은 도 4의 컨트롤러의 다른 예를 상세하게 나타내는 블록도이다.
도 7은 본 개시의 일 실시예에 따른 스토리지 장치의 일 예를 나타내는 블록도이다.
도 8은 도 7의 컨트롤러의 일 예를 상세하게 나타내는 블록도이다.
도 9는 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 10은 도 9의 동작 방법의 일 예에 따른 호스트, 컨트롤러 및 비휘발성 메모리 사이의 동작을 나타내는 흐름도이다.
도 11은 도 9의 동작 방법의 다른 예에 따른 호스트, 컨트롤러 및 비휘발성 메모리 사이의 동작을 나타내는 흐름도이다.
도 12는 본 개시의 일 실시예에 따른 스토리지 장치의 일 예를 나타내는 블록도이다.
도 13은 본 개시의 일 실시예에 따른 스토리지 장치의 다른 예를 나타내는 블록도이다.
도 14는 도 13의 컨트롤러의 일 예를 상세하게 나타내는 블록도이다.
도 15는 도 13의 컨트롤러의 다른 예를 상세하게 나타내는 블록도이다.
도 16은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 17은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 18은 도 16의 동작 방법의 일 예에 따른 컨트롤러 및 비휘발성 메모리 사이의 동작을 나타내는 흐름도이다.
도 19는 본 개시의 일 실시예에 따른 네트워크 시스템을 나타낸다.
도 20은 본 개시의 일 실시예에 따른 네트워크 시스템을 나타낸다.
도 21은 본 개시의 일 실시예에 따른 전자 장치를 나타낸다.
도 1은 본 개시의 일 실시예에 따른 스토리지 시스템(SS)을 나타내는 블록도이다.
도 1을 참조하면, 스토리지 시스템(SS)은 스토리지 장치(10) 및 호스트(20)를 포함하고, 스토리지 장치(10)는 컨트롤러(100) 및 비휘발성 메모리(Non Volatile Memory, NVM)(200)를 포함할 수 있다. 컨트롤러(100)는 제1 메모리(110)를 포함하고, 스토리지 장치(10)는 제2 메모리(300)를 더 포함할 수 있다. 이하에서는, 제1 메모리(110)는 컨트롤러(100) 내부에 배치된 메모리를 지칭하고, 제2 메모리(300)는 컨트롤러(100) 외부에 배치된 메모리를 지칭하기로 한다.
호스트(20)는 다양한 인터페이스를 통하여 스토리지 장치(10)와 통신할 수 있고, 기입 요청 또는 독출 요청 등을 스토리지 장치(10)에 전달할 수 있다. 예를 들어, 호스트(20)는 AP(Application Processor) 또는 SoC(System-On-a-Chip)로 구현될 수 있다. 호스트(20)는 기입 요청을 스토리지 장치(10)에 전송할 수 있고, 스토리지 장치(10)는 기입 요청에 응답하여 비휘발성 메모리(200)에 데이터를 기입할 수 있다. 호스트(20)는 독출 요청을 스토리지 장치(10)에 전송할 수 있고, 스토리지 장치(10)는 독출 요청에 응답하여 비휘발성 메모리(200)로부터 데이터를 독출할 수 있다.
컨트롤러(100)는 호스트(20)로부터 수신한 기입 요청에 응답하여 비휘발성 메모리(200)에 데이터를 기입하거나, 또는 호스트(20)로부터 수신한 독출 요청에 응답하여 비휘발성 메모리(200)로부터 데이터를 독출하도록 비휘발성 메모리(200)를 제어할 수 있다. 제1 메모리(110)는 비휘발성 메모리(200)에 기입하기 위한 기입 데이터 또는 비휘발성 메모리(200)로부터 독출된 독출 데이터를 버퍼링할 수 있다. 예를 들어, 제1 메모리(110)는 SRAM(Static Random Access Memory)일 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 제1 메모리(110)는 다양한 종류의 휘발성 메모리 또는 비휘발성 메모리로 구현될 수 있다.
스토리지 장치(10)의 입출력 속도가 고속화되고 저장 용량이 증가함에 따라, 컨트롤러(100)에 포함된 제1 메모리(110)의 용량 및 기능이 증가하고 있다. 예를 들어, 제1 메모리(110)가 SRAM일 수 있는데, SRAM은 DRAM에 비해 상대적으로 SER(Soft Error Rate)이 높은 특징이 있다. 특히, SRAM은 데이터 입출력 속도가 증가하거나 사용 환경의 고도가 높아지는 경우 SER이 증가할 수 있다. 이로써, SRAM에 저장된 데이터의 비트 플립(bit flip)이 발생할 수 있고, 결과적으로, 스토리지 장치(10)의 신뢰성이 저하될 수 있다. 본 개시의 실시예들에 따르면, 스토리지 장치(10)의 신뢰성이 저하되는 것을 방지하기 위하여, 컨트롤러(100)는 제1 메모리(110)에서 발생한 비트 플립, 즉, 에러 비트를 모니터링하고, 모니터링된 에러 비트에 따라 제1 메모리(110)와 관련된 동작들을 동작으로 제어할 수 있다.
일 실시예에서, 컨트롤러(100)는 제1 메모리(110)에서 발생한 에러 비트의 개수 또는 에러 비트의 발생 빈도를 기초로 기입 데이터 또는 독출 데이터를 버퍼링하기 위한 버퍼 메모리를 동적으로 결정할 수 있다. 구체적으로, 컨트롤러(100)는 제1 메모리(110)에서 발생한 에러 비트의 개수 또는 에러 비트의 발생 빈도를 임계치와 비교하고, 에러 비트의 개수 또는 에러 비트의 발생 빈도가 임계치 미만인 경우 버퍼 메모리를 제1 메모리(110)로 결정하고, 에러 비트의 개수 또는 에러 비트의 발생 빈도가 임계치 이상인 경우 버퍼 메모리를 제2 메모리(300)로 결정할 수 있다.
일 실시예에서, 컨트롤러(100)는 기입 데이터 또는 독출 데이터의 입출력 속도를 모니터링하고, 입출력 속도를 기초로 기입 데이터 또는 독출 데이터를 버퍼링하기 위한 버퍼 메모리를 동적으로 결정할 수 있다. 예를 들어, 컨트롤러(100)는 제1 메모리(110)에 버퍼링된 데이터의 입출력 속도를 기초로 기입 데이터 또는 독출 데이터의 입출력 속도를 모니터링할 수 있다. 구체적으로, 컨트롤러(100)는 입출력 속도를 임계 속도와 비교하고, 입출력 속도가 임계 속도 미만인 경우 버퍼 메모리를 제1 메모리(110)로 결정하고, 입출력 속도가 임계 속도 이상인 경우 버퍼 메모리를 제2 메모리(300)로 결정할 수 있다.
일 실시예에서, 컨트롤러(100)는 제1 메모리(110)에서 발생한 에러 비트의 개수 또는 에러 비트의 발생 빈도를 기초로 제1 메모리(110)에 포함된 리드 온리 영역에 대한 재기입 주기를 동적으로 결정하고, 결정된 재기입 주기에 따라 리드 온리 영역에 대해 재기입 동작을 제어할 수 있다. 구체적으로, 컨트롤러(100)는 제1 메모리(110)에서 발생한 에러 비트의 개수 또는 에러 비트의 발생 빈도가 임계치 이상인 경우 재기입 주기를 감소시킬 수 있고, 이에 따라, 리드 온리 영역에 대한 재기입 동작의 횟수를 증가시킬 수 있다.
일 실시예에서, 컨트롤러(100)는 기입 데이터 또는 독출 데이터의 입출력 속도를 기초로 제1 메모리(110)에 포함된 리드 온리 영역에 대한 재기입 주기를 동적으로 결정하고, 결정된 재기입 주기에 따라 리드 온리 영역에 대해 재기입 동작을 제어할 수 있다. 구체적으로, 컨트롤러(100)는 입출력 속도가 임계 속도 이상인 경우 재기입 주기를 감소시킬 수 있고, 이에 따라, 리드 온리 영역에 대한 재기입 동작의 횟수를 증가시킬 수 있다.
일 실시예에서, 제2 메모리(300)는 제1 메모리(110)에서 발생한 에러 비트의 개수 또는 에러 비트의 발생 빈도가 임계치 이상인 경우, 기입 데이터 또는 독출 데이터를 버퍼링할 수 있다. 일 실시예에서, 제2 메모리(300)는 기입 데이터 또는 독출 데이터의 입출력 속도가 임계 속도 이상인 경우, 기입 데이터 또는 독출 데이터를 버퍼링할 수 있다. 예를 들어, 제2 메모리(300)는 DRAM(Dynamic Random Access Memory)일 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 제2 메모리(300)는 다양한 종류의 휘발성 메모리 또는 비휘발성 메모리로 구현될 수 있다. 또한, 일부 실시예들에서, 제2 메모리(300)는 컨트롤러(100) 내부에 구현될 수도 있다.
비휘발성 메모리(200)는 복수의 메모리 셀들을 포함하는 메모리 셀 어레이(Memory Cell Array)(MCA)를 포함할 수 있고, 메모리 셀 어레이(MCA)는 메타 데이터를 저장하기 위한 메타 영역(210) 및 사용자 데이터를 저장하기 위한 스토리지 영역(220)을 포함할 수 있다. 일 실시예에서, 비휘발성 메모리(200)는 플래쉬 메모리 장치를 포함할 수 있고, 예를 들어, 낸드(NAND) 플래쉬 메모리 장치를 포함할 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 비휘발성 메모리(200)는 ReRAM(resistive RAM), PRAM(phase change RAM), MRAM(magnetic RAM)과 같은 저항형 메모리 장치를 포함할 수 있다.
스토리지 시스템(SS)은 예를 들어, PC(personal computer), 데이터 서버, 네트워크-결합 스토리지, IoT(Internet of Things) 장치, 또는 휴대용 전자 기기로 구현될 수 있다. 휴대용 전자 기기는, 랩탑 컴퓨터, 이동 전화기, 스마트폰, 태블릿 PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라, 디지털 비디오 카메라, 오디오 장치, PMP(portable multimedia player), PND(personal navigation device), MP3 플레이어, 휴대용 게임 콘솔(handheld game console), e-북(e-book), 웨어러블 기기 등일 수 있다.
일부 실시예들에서, 스토리지 장치(10)는 전자 장치에 내장되는 내부 메모리일 수 있다. 예를 들어, 스토리지 장치(10)는 SSD, 임베디드 UFS(Universal Flash Storage) 메모리 장치 또는 eMMC(embedded Multi-Media Card)일 수 있다. 일부 실시예들에서, 스토리지 장치(10)는 전자 장치에 착탈 가능한 외장 메모리일 수 있다. 예를 들어, 스토리지 장치(10)는 UFS 메모리 카드, CF(Compact Flash), SD(Secure Digital), Micro-SD(Micro Secure Digital), Mini-SD(Mini Secure Digital), xD(extreme Digital) 또는 메모리 스틱(Memory Stick)일 수 있다.
도 2a는 본 개시의 일 실시예에 따른 스토리지 시스템(SSa)의 노멀 독출 경로(Normal Read Path)(NRP)를 나타내고, 도 2b는 본 개시의 일 실시예에 따른 스토리지 시스템(SSa)의 수정 독출 경로(Corrected Read Path)(CRP)를 나타낸다.
도 2a 및 도 2b를 참조하면, 스토리지 시스템(SSa)은 스토리지 장치(10') 및 호스트(20)를 포함하고, 스토리지 장치(10')는 컨트롤러(100'), 비휘발성 메모리(200) 및 제2 메모리(300)를 포함할 수 있다. 컨트롤러(100')는 독출 버퍼(111a) 및 버퍼 매니저(112)를 포함할 수 있다. 독출 버퍼(111a)는 도 1의 제1 메모리(110)의 일 예에 대응할 수 있고, 구체적으로, 제1 메모리(110)의 일부 영역에 대응할 수 있다.
버퍼 매니저(112)는 독출 버퍼(111a)에서 발생한 에러 비트의 개수 또는 발생 빈도를 임계치와 비교하고, 비교 결과를 기초로 독출 버퍼(111a) 또는 제2 메모리(300)를 버퍼 메모리로 결정할 수 있다. 일 실시예에서, 버퍼 매니저(112)는 소프트웨어 또는 펌웨어로 구현될 수 있고, 제1 메모리(110)에 로딩될 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 일부 실시예들에서, 버퍼 매니저(112)는 하드웨어로 구현될 수도 있다.
일 실시예에서, 버퍼 매니저(112)는 독출 버퍼(111a)에서 발생한 에러 비트의 개수가 임계 개수 미만인 경우 버퍼 메모리를 독출 버퍼(111a)로 결정할 수 있고, 이때, 독출 경로는 도 2a에 예시된 노멀 독출 경로(NRP)에 대응할 수 있다. 이어서, 버퍼 매니저(112)는 독출 버퍼(111a)에서 발생한 에러 비트의 개수가 임계 개수 이상으로 증가하면, 버퍼 메모리를 제2 메모리(300)로 변경할 수 있고, 이때, 독출 경로는 도 2b에 예시된 수정 독출 경로(CRP)로 변경될 수 있다.
일 실시예에서, 버퍼 매니저(112)는 독출 버퍼(111a)에서 발생한 에러 비트의 개수가 임계 개수 이상인 경우 버퍼 메모리를 제2 메모리(300)로 결정할 수 있고, 이때, 독출 경로는 도 2b에 예시된 수정 독출 경로(CRP)에 대응할 수 있다. 이어서, 버퍼 매니저(112)는 독출 버퍼(111a)에서 발생한 에러 비트의 개수가 임계 개수 미만으로 감소하면, 버퍼 메모리를 다시 독출 버퍼(111a)로 변경할 수 있고, 이때, 독출 경로는 도 2a에 예시된 노멀 독출 경로(NRP)로 변경될 수 있다.
도 3a는 본 개시의 일 실시예에 따른 스토리지 시스템(SSb)의 노멀 기입 경로(Normal Write Path)(NWP)를 나타내고, 도 3b는 본 개시의 일 실시예에 따른 스토리지 시스템(SSb)의 수정 기입 경로(Corrected Write Path)(CWP)를 나타낸다.
도 3a 및 도 3b를 참조하면, 스토리지 시스템(SSb)은 스토리지 장치(10") 및 호스트(20)를 포함하고, 스토리지 장치(10")는 컨트롤러(100"), 비휘발성 메모리(200) 및 제2 메모리(300)를 포함할 수 있다. 컨트롤러(100")는 기입 버퍼(111b) 및 버퍼 매니저(112)를 포함할 수 있다. 기입 버퍼(111b)는 도 1의 제1 메모리(110)의 일 예에 대응할 수 있고, 구체적으로, 제1 메모리(110)의 일부 영역에 대응할 수 있다.
버퍼 매니저(112)는 기입 버퍼(111b)에서 발생한 에러 비트의 개수를 임계 개수와 비교하고, 비교 결과를 기초로 기입 버퍼(111b) 또는 제2 메모리(300)를 버퍼 메모리로 결정할 수 있다. 일 실시예에서, 버퍼 매니저(112)는 소프트웨어 또는 펌웨어로 구현될 수 있고, 도 1의 제1 메모리(110)에 로딩될 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 일부 실시예들에서, 버퍼 매니저(112)는 하드웨어로 구현될 수도 있다.
일 실시예에서, 버퍼 매니저(112)는 기입 버퍼(111b)에서 발생한 에러 비트의 개수가 임계 개수 미만인 경우 버퍼 메모리를 기입 버퍼(111b)로 결정할 수 있고, 이때, 기입 경로는 도 3a에 예시된 노멀 기입 경로(NWP)에 대응할 수 있다. 이어서, 버퍼 매니저(112)는 기입 버퍼(111b)에서 발생한 에러 비트의 개수가 임계 개수 이상으로 증가하면, 버퍼 메모리를 제2 메모리(300)로 변경할 수 있고, 이때, 기입 경로는 도 3b에 예시된 수정 기입 경로(CWP)로 변경될 수 있다.
일 실시예에서, 버퍼 매니저(112)는 기입 버퍼(111b)에서 발생한 에러 비트의 개수가 임계 개수 이상인 경우 버퍼 메모리를 제2 메모리(300)로 결정할 수 있고, 이때, 기입 경로는 도 3b에 예시된 수정 기입 경로(CWP)에 대응할 수 있다. 이어서, 버퍼 매니저(112)는 기입 버퍼(111b)에서 발생한 에러 비트의 개수가 임계 개수 미만으로 감소하면, 버퍼 메모리를 다시 기입 버퍼(111b)로 변경할 수 있고, 이때, 기입 경로는 도 3a에 예시된 노멀 기입 경로(NWP)로 변경될 수 있다.
도 4는 본 개시의 일 실시예에 따른 스토리지 장치의 일 예(10a)를 나타내는 블록도이다.
도 4를 참조하면, 스토리지 장치(10a)는 컨트롤러(100a), 비휘발성 메모리(200) 및 제2 메모리(300)를 포함할 수 있고, 컨트롤러(100a)는 버퍼(111), 버퍼 매니저(112) 및 모니터링 모듈(113)을 포함할 수 있다. 버퍼(111)는 비휘발성 메모리(200)에 기입하기 위한 기입 데이터 또는 비휘발성 메모리(200)로부터 독출된 독출 데이터를 버퍼링할 수 있다. 본 실시예에 따른 스토리지 장치(10a)는 도 1의 스토리지 장치(10)의 일 구현 예에 대응할 수 있다. 따라서, 도 1 내지 도 3b를 참조하여 상술된 내용은 본 실시예에 적용될 수 있고, 중복된 설명은 생략하기로 한다.
일 실시예에서, 모니터링 모듈(113)은 버퍼(111)에서 발생한 에러 비트를 모니터링할 수 있다. 예를 들어, 모니터링 모듈(113)은 버퍼(111)에 입력되는 데이터와 버퍼(111)로부터 출력되는 데이터를 비교함으로써 에러 비트의 개수를 모니터링할 수 있다. 예를 들어, 모니터링 모듈(113)은 모니터링 에러 비트의 개수를 기록하는 에러 상태 레지스터(error status register)를 포함하도록 구현될 수 있다.
이때, 버퍼 매니저(112)는 모니터링 모듈(113)로부터 에러 비트의 개수를 수신하고, 수신한 에러 비트의 개수를 임계 개수와 비교하고, 비교 결과를 기초로 버퍼 메모리를 버퍼(111) 또는 제2 메모리(300)로 결정할 수 있다. 일 실시예에서, 버퍼 매니저(112)는 에러 상태 레지스터에 기록된 값이 임계 개수에 도달한 경우 버퍼 메모리를 변경할 수 있다.
일 실시예에서, 모니터링 모듈(113)은 버퍼(111)에 입력되는 데이터와 버퍼(111)로부터 출력되는 데이터를 기초로 데이터 입출력 속도를 모니터링할 수 있다. 예를 들어, 모니터링 모듈(113)은 모니터링 데이터 입출력 속도를 기록하는 입출력 속도 레지스터를 포함하도록 구현될 수 있다. 일 실시예에서, 모니터링 모듈(113)은 최대 데이터 사용 속도(maximum data usage rate)를 모니터링할 수 있다. 예를 들어, 모니터링 모듈(113)은 모니터링된 최대 데이터 사용률을 기록하는 최대 데이터 사용 속도 레지스터를 포함하도록 구현될 수 있다.
이때, 버퍼 매니저(112)는 모니터링 모듈(113)로부터 데이터 입출력 속도를 수신하고, 수신한 데이터 입출력 속도를 임계 속도와 비교하고, 비교 결과를 기초로 버퍼 메모리를 버퍼(111) 또는 제2 메모리(300)로 결정할 수 있다. 일 실시예에서, 버퍼 매니저(112)는 입출력 속도 레지스터 또는 최대 데이터 사용 속도 레지스터에 기록된 값이 임계 속도에 도달한 경우 버퍼 메모리를 변경할 수 있다.
도 5는 도 4의 컨트롤러의 일 예(100a')를 상세하게 나타내는 블록도이다.
도 5를 참조하면, 컨트롤러(100a')는 제1 메모리(110a), 프로세서(120), 호스트 인터페이스(130), DRAM 컨트롤러(140) 및 비휘발성 메모리 인터페이스(150)를 포함할 수 있고, 이들은 버스(160)를 통해 서로 통신할 수 있다. 예를 들어, 도 4의 제2 메모리(300)는 DRAM일 수 있고, 이에 따라, 컨트롤러(100a')는 DRAM을 제어하기 위한 DRAM 컨트롤러(140)를 포함할 수 있다.
프로세서(120)는 중앙 처리 장치나 마이크로 프로세서 등을 포함할 수 있으며, 컨트롤러(100a')의 전반적인 동작을 제어할 수 있다. 일 실시예에서, 프로세서(120)는 멀티 코어 프로세서로 구현될 수 있고, 예를 들어, 듀얼 코어 프로세서 또는 쿼드 코어(quad) 프로세서로 구현될 수 있다. 제1 메모리(110a)는 프로세서(120)의 제어에 따라 동작하며, 동작 메모리, 버퍼 메모리, 캐시 메모리 등으로 사용될 수 있다. 예를 들어, 제1 메모리(110a)는 DRAM, SRAM과 같은 휘발성 메모리 또는 PRAM, 플래시 메모리와 같은 비휘발성 메모리로 구현될 수도 있다.
제1 메모리(110a)에는 버퍼 매니저(112a) 및 모니터링 모듈(113a)이 로딩될 수 있다. 버퍼 매니저(112a) 및 모니터링 모듈(113a)은 펌웨어 또는 소프트웨어로 구현될 수 있고, 제1 메모리(110a)에 로딩될 수 있다. 버퍼 매니저(112a)는 도 4의 버퍼 매니저(112)의 일 구현 예에 대응할 수 있고, 모니터링 모듈(113a)은 도 4의 모니터링 모듈(113)의 일 구현 예에 대응할 수 있다. 제1 메모리(110a)는 버퍼(111)를 포함할 수 있고, 버퍼(111)는 기입 버퍼 또는 독출 버퍼로 이용될 수 있다.
호스트 인터페이스(130)는 호스트(예를 들어, 도 1의 20)와 컨트롤러(100a') 사이의 인터페이스를 제공할 수 있고, 예를 들어, USB(Universal Serial Bus), MMC, PCI-E(PCIExpress), ATA(AT Attachment), SATA(Serial AT Attachment), PATA(Parallel AT Attachment), SCSI(Small Computer System Interface), SAS(Serial Attached SCSI), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics) 등에 따른 인터페이스를 제공할 수 있다.
비휘발성 메모리 인터페이스(150)는 컨트롤러(100a')와 비휘발성 메모리(200) 사이의 인터페이스를 제공할 수 있다. 예를 들어, 맵핑 테이블 등과 같은 메타 데이터, 기입 데이터, 및 독출 데이터가 비휘발성 메모리 인터페이스(150)를 통해 컨트롤러(100a')와 비휘발성 메모리(200) 사이에서 송수신될 수 있다. 일 실시예에서, 비휘발성 메모리 인터페이스(150)의 개수는 스토리지 장치(10a)에 포함된 비휘발성 메모리 칩의 개수 또는, 컨트롤러(100a')와 비휘발성 메모리(200) 사이의 채널들의 개수에 대응할 수 있다.
도 6은 도 4의 컨트롤러의 다른 예(100a")를 상세하게 나타내는 블록도이다.
도 6을 참조하면, 컨트롤러(100a")는 제1 메모리(110a'), 프로세서(120), 버퍼 매니저(112b), 모니터링 모듈(113b), 호스트 인터페이스(130), DRAM 컨트롤러(140) 및 비휘발성 메모리 인터페이스(150)를 포함할 수 있고, 이들은 버스(160)를 통해 서로 통신할 수 있다. 본 실시예에 따른 컨트롤러(100a")는 도 5의 컨트롤러(100a')의 변형 예에 대응할 수 있는바, 중복된 설명은 생략하기로 한다.
제1 메모리(110a')는 버퍼(111)를 포함할 수 있고, 버퍼(111)는 기입 버퍼 또는 독출 버퍼로 이용될 수 있다. 버퍼 매니저(112b) 및 모니터링 모듈(113b)은 하드웨어로 구현될 수 있고, 이에 따라, 메모리(110a') 외부에 배치될 수 있다. 버퍼 매니저(112b)는 도 4의 버퍼 매니저(112)의 일 구현 예에 대응할 수 있고, 모니터링 모듈(113b)은 도 4의 모니터링 모듈(113)의 일 구현 예에 대응할 수 있다.
도 7은 본 개시의 일 실시예에 따른 스토리지 장치의 일 예(10b)를 나타내는 블록도이다.
도 7을 참조하면, 스토리지 장치(10b)는 컨트롤러(100b), 비휘발성 메모리(200) 및 제2 메모리(300)를 포함할 수 있고, 컨트롤러(100b)는 버퍼(111), 버퍼 매니저(112), 모니터링 모듈(113') 및 ECC(Error Check and Correction) 모듈(114)을 포함할 수 있다. 본 실시예에 따른 스토리지 장치(10b)는 도 4의 스토리지 장치(10a)의 변형 예에 대응할 수 있는바, 중복된 설명은 생략하기로 한다.
ECC 모듈(114)은 버퍼(111)에 버퍼링된 데이터에 대해 에러 검출 및 정정 동작을 수행할 수 있다. 모니터링 모듈(113')은 ECC 모듈(114)에서 정정된 에러를 기초로, 버퍼(111)에서 발생한 에러 비트의 개수를 모니터링할 수 있다. 버퍼 매니저(112)는 모니터링 모듈(113')로부터 에러 비트의 개수를 수신하고, 수신한 에러 비트의 개수를 임계 개수와 비교하고, 비교 결과를 기초로 버퍼 메모리를 버퍼(111) 또는 제2 메모리(300)로 결정할 수 있다.
도 8은 도 7의 컨트롤러의 일 예(100b')를 상세하게 나타내는 블록도이다.
도 8을 참조하면, 컨트롤러(100b')는 제1 메모리(110b), 프로세서(120), 호스트 인터페이스(130), DRAM 컨트롤러(140) 및 비휘발성 메모리 인터페이스(150)를 포함할 수 있고, 이들은 버스(160)를 통해 서로 통신할 수 있다. 예를 들어, 도 7의 제2 메모리(300)는 DRAM일 수 있고, 이에 따라, 컨트롤러(100b')는 DRAM을 제어하기 위한 DRAM 컨트롤러(140)를 포함할 수 있다. 본 실시예에 따른 컨트롤러(100b')는 도 5의 컨트롤러(100a')의 변형 예에 대응할 수 있는바, 중복된 설명은 생략하기로 한다.
제1 메모리(110b)에는 버퍼 매니저(112a), 모니터링 모듈(113a') 및 ECC 모듈(114a)이 로딩될 수 있다. 버퍼 매니저(112a), 모니터링 모듈(113a') 및 ECC 모듈(114a)은 펌웨어 또는 소프트웨어로 구현될 수 있고, 제1 메모리(110b)에 로딩될 수 있다. 버퍼 매니저(112a)는 도 7의 버퍼 매니저(112)의 일 구현 예에 대응할 수 있고, 모니터링 모듈(113a')은 도 7의 모니터링 모듈(113')의 일 구현 예에 대응할 수 있고, ECC 모듈(114a)는 도 7의 ECC 모듈(114)의 일 구현 예에 대응할 수 있다. 제1 메모리(110b)는 버퍼(111)를 포함할 수 있고, 버퍼(111)는 기입 버퍼 또는 독출 버퍼로 이용될 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 도 7의 버퍼 매니저(112), 모니터링 모듈(113a') 및 ECC 모듈(114) 중 적어도 하나는 하드웨어로 구현될 수 있고, 이에 따라, 제1 메모리(110b) 외부에 배치될 수도 있다.
도 9는 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 9를 참조하면, 본 실시예에 따른 스토리지 장치의 동작 방법은 버퍼 메모리를 동적으로 결정하는 방법일 수 있고, 예를 들어, 도 1의 스토리지 장치(10), 도 4의 스토리지 장치(10a), 도 6의 스토리지 장치(10b)에서 시계열적으로 수행되는 단계들을 포함할 수 있다. 이하에서는 도 1 및 도 9를 함께 참조하여 본 실시예에 따른 스토리지 장치의 동작 방법을 설명하기로 한다.
단계 S110에서, 제1 메모리에서 발생한 에러 비트의 개수를 모니터링한다. 예를 들어, 컨트롤러(100)는 제1 메모리(110)에서 발생한 에러 비트의 개수를 주기적으로 또는 비주기적으로 모니터링할 수 있다. 예를 들어, 호스트(20)로부터 독출 요청이 수신된 경우, 컨트롤러(100)는 제1 메모리(110)에서 발생한 에러 비트의 개수를 모니터링할 수 있다. 또한, 일부 실시예들에서, 제1 메모리에서 발생한 에러 비트의 발생 빈도를 모니터링할 수도 있다.
단계 S120에서, 에러 비트의 개수를 임계 개수와 비교한다. 예를 들어, 컨트롤러(100)는 에러 상태 레지스터에 기록된 에러 비트의 개수가 임계 개수 이상인지 판단할 수 있다. 일 실시예에서, 임계 개수는 미리 결정될 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 일부 실시예들에서, 임계 개수는 동작 중에 동적으로 변경될 수도 있다. 또한, 일부 실시예들에서, 에러 비트의 발생 빈도를 임계치와 비교할 수도 있다. 단계 S130에서, 에러 비트의 개수가 임계 개수 이상인지 판단한다. 판단 결과, 에러 비트의 개수가 임계 개수 이상인 경우 단계 S140을 수행한다. 한편, 에러 비트의 개수가 임계 개수 미만인 경우 단계 S150을 수행한다.
단계 S140에서, 제2 메모리에 데이터를 버퍼링한다. 예를 들어, 컨트롤러(100)는 제2 메모리(300)를 버퍼 메모리로 결정할 수 있고, 제2 메모리(300)를 기입 버퍼 또는 독출 버퍼로 이용할 수 있다. 이에 따라, 제1 메모리(110)에서 비트 플립의 발생으로 인해 스토리지 장치(10)의 신뢰성이 저하되는 것을 방지할 수 있다. 단계 S150에서, 제1 메모리에 데이터를 버퍼링한다. 예를 들어, 컨트롤러(100)는 제1 메모리(110)를 버퍼 메모리로 결정할 수 있고, 제1 메모리(110)를 기입 버퍼 또는 독출 버퍼로 이용할 수 있다. 이에 따라, 제1 메모리(110)의 빠른 속도를 이용하여 스토리지 장치(10)의 성능을 향상시킬 수 있다.
또한, 일부 실시예들에서, 본 동작 방법은 기입 데이터 또는 독출 데이터의 입출력 속도를 모니터링하는 단계, 및 입출력 속도를 기초로 기입 데이터 또는 독출 데이터를 버퍼링하기 위한 버퍼 메모리를 제1 또는 제2 메모리로 동적으로 결정하는 단계를 더 포함할 수 있다. 구체적으로, 컨트롤러(100)는 제1 메모리(110)에서 입력되는 데이터 및 출력되는 데이터를 기초로 데이터 입출력 속도를 모니터링할 수 있다. 컨트롤러(100)는 모니터링된 데이터 입출력 속도가 임계 속도 이상인 경우 버퍼 메모리를 제2 메모리(300)로 결정할 수 있다. 또한, 컨트롤러(100)는 모니터링된 데이터 입출력 속도가 임계 속도 미만인 경우 버퍼 메모리를 제1 메모리(110)로 결정할 수 있다.
도 10은 도 9의 동작 방법의 일 예에 따른 호스트(20), 컨트롤러(100) 및 비휘발성 메모리(200) 사이의 동작을 나타내는 흐름도이다. 호스트(20), 컨트롤러(100) 및 비휘발성 메모리(200)는 도 1의 호스트(20), 컨트롤러(100) 및 비휘발성 메모리(200)에 각각 대응할 수 있다.
도 10을 참조하면, 단계 S210에서, 호스트(20)는 컨트롤러(100)에 독출 요청을 전송할 수 있다. 일 실시예에서, 호스트(20)는 컨트롤러(100)에 독출 요청과 함께 논리 주소를 전달할 수 있다. 일 실시예에서, 호스트(20)는 컨트롤러(100)에 독출 요청과 함께 키(key)를 전달할 수 있고, 이때, 컨트롤러(100) 및 비휘발성 메모리(200)는 키-밸류 스토리지 장치를 구성할 수 있다.
단계 S220에서, 컨트롤러(100)는 제1 메모리(110)에서 발생한 에러 비트들을 모니터링할 수 있다. 일 실시예에서, 컨트롤러(100)는 제1 메모리(110)에 입력되는 데이터와 제1 메모리(110)로부터 출력되는 데이터를 비교함으로써 에러 비트의 개수를 모니터링할 수 있다. 일 실시예에서, 컨트롤러(100)는 제1 메모리(110)에 대한 ECC 동작의 결과를 기초로 에러 비트의 개수를 모니터링할 수 있다.
단계 S230에서, 컨트롤러(100)는 에러 비트들의 개수를 임계 개수와 비교할 수 있다. 단계 S240에서, 컨트롤러(100)는 비교 결과를 기초로 독출 버퍼를 결정할 수 있다. 예를 들어, 컨트롤러(100)는 에러 비트들의 개수가 임계 개수 이상인 경우 제2 메모리(300)를 독출 버퍼로 결정할 수 있다. 예를 들어, 컨트롤러(100)는 에러 비트들의 개수가 임계 개수 미만인 경우 제1 메모리(110)를 독출 버퍼로 결정할 수 있다.
단계 S250에서, 컨트롤러(100)는 독출 커맨드를 발행할 수 있다. 일 실시예에서, 컨트롤러(100)는 맵핑 테이블(예를 들어, L2P(Logical-to-Physical) 맵핑 테이블)을 참조하여, 호스트(20)로부터 수신한 논리 주소를 물리 주소로 변환할 수 있다. 일 실시예에서, 컨트롤러(100)는 맵핑 테이블(예를 들어, K2P(Key-to-Physical Address) 맵핑 테이블)을 참조하여, 호스트(20)로부터 수신한 키를 물리 주소로 변환할 수 있다.
단계 S260에서, 컨트롤러(100)는 비휘발성 메모리(200)에 독출 커맨드를 전송할 수 있다. 이때, 컨트롤러(100)는 독출 커맨드와 함께 물리 주소를 전송할 수 있다. 단계 S270에서, 비휘발성 메모리(200)는 독출 동작을 수행할 수 있다. 구체적으로, 비휘발성 메모리(200)는 물리 주소에 저장된 데이터를 독출할 수 있다. 단계 S275에서, 비휘발성 메모리(200)는 데이터를 컨트롤러(100)에 전송할 수 있다.
단계 S280에서, 컨트롤러(100)는 결정된 독출 버퍼에 데이터를 버퍼링할 수 있다. 예를 들어, 단계 S240에서, 독출 버퍼가 제1 메모리(110)로 결정된 경우, 컨트롤러(100)는 제1 메모리(110)에 데이터를 버퍼링할 수 있다. 예를 들어, 단계 S240에서, 독출 버퍼가 제2 메모리(300)로 결정된 경우, 컨트롤러(100)는 제2 메모리(300)에 데이터를 버퍼링할 수 있다. 단계 S290에서, 컨트롤러(100)는 호스트(20)에 데이터를 전송할 수 있다.
도 11은 도 9의 동작 방법의 다른 예에 따른 호스트(20), 컨트롤러(100) 및 비휘발성 메모리(200) 사이의 동작을 나타내는 흐름도이다. 호스트(20), 컨트롤러(100) 및 비휘발성 메모리(200)는 도 1의 호스트(20), 컨트롤러(100) 및 비휘발성 메모리(200)에 각각 대응할 수 있다.
도 11을 참조하면, 단계 S310에서, 호스트(20)는 컨트롤러(100)에 기입 요청을 전송할 수 있다. 일 실시예에서, 호스트(20)는 컨트롤러(100)에 기입 요청과 함께 데이터를 전달할 수 있다. 일 실시예에서, 호스트(20)는 컨트롤러(100)에 기입 요청과 함께 키-밸류(value) 쌍(pair)을 전달할 수 있고, 이때, 컨트롤러(100) 및 비휘발성 메모리(200)는 키-밸류 스토리지 장치를 구성할 수 있다.
단계 S320에서, 컨트롤러(100)는 제1 메모리(110)에서 발생한 에러 비트들을 모니터링할 수 있다. 일 실시예에서, 컨트롤러(100)는 제1 메모리(110)에 입력되는 데이터와 제1 메모리(110)로부터 출력되는 데이터를 비교함으로써 에러 비트의 개수를 모니터링할 수 있다. 일 실시예에서, 컨트롤러(100)는 제1 메모리(110)에 대한 ECC 동작의 결과를 기초로 에러 비트의 개수를 모니터링할 수 있다.
단계 S330에서, 컨트롤러(100)는 에러 비트들의 개수를 임계 개수와 비교할 수 있다. 단계 S340에서, 컨트롤러(100)는 비교 결과를 기초로 기입 버퍼를 결정할 수 있다. 예를 들어, 컨트롤러(100)는 에러 비트들의 개수가 임계 개수 이상인 경우 제2 메모리(300)를 기입 버퍼로 결정할 수 있다. 예를 들어, 컨트롤러(100)는 에러 비트들의 개수가 임계 개수 미만인 경우 제1 메모리(110)를 기입 버퍼로 결정할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 단계 S320 내지 S340은 단계 S310 이전에 수행될 수 있다. 이에 따라, 컨트롤러(100)는 제1 메모리(110)에서 발생한 에러 비트들을 모니터링하여 미리 기입 버퍼를 결정하고, 기입 요청이 수신되면 미리 결정된 기입 버퍼에 데이터를 버퍼링할 수 있다.
단계 S350에서, 컨트롤러(100)는 결정된 기입 버퍼에 데이터를 버퍼링할 수 있다. 예를 들어, 단계 S340에서, 기입 버퍼가 제1 메모리(110)로 결정된 경우, 컨트롤러(100)는 제1 메모리(110)에 데이터를 버퍼링할 수 있다. 예를 들어, 단계 S340에서, 기입 버퍼가 제2 메모리(300)로 결정된 경우, 컨트롤러(100)는 제2 메모리(300)에 데이터를 버퍼링할 수 있다.
단계 S360에서, 컨트롤러(100)는 기입 커맨드를 발행할 수 있다. 이때, 컨트롤러(100)는 비휘발성 메모리(200)에 데이터를 저장하기 위한 물리 주소를 생성할 수 있다. 단계 S370에서, 컨트롤러(100)는 비휘발성 메모리(200)에 기입 커맨드를 전송할 수 있다. 이때, 컨트롤러(100)는 기입 커맨드와 함께 데이터를 전송할 수 있다. 단계 S380에서, 비휘발성 메모리(200)는 기입 동작을 수행할 수 있다. 구체적으로, 비휘발성 메모리(200)는 물리 주소에 데이터를 기입할 수 있다. 단계 S385에서, 비휘발성 메모리(200)는 기입 동작이 완료되었음을 나타내는 응답 메시지를 컨트롤러(100)에 전송할 수 있다. 단계 S390에서, 컨트롤러(100)는 호스트(20)에 기입 동작이 완료되었음을 나타내는 응답 메시지를 전송할 수 있다.
도 12는 본 개시의 일 실시예에 따른 스토리지 장치의 일 예(30)를 나타내는 블록도이다.
도 12를 참조하면, 스토리지 장치(30)는 컨트롤러(400) 및 비휘발성 메모리(200)를 포함할 수 있다. 또한, 스토리지 장치(30)는 도 1과 같이 제2 메모리(300), 예를 들어, DRAM을 더 포함할 수도 있다. 컨트롤러(400)는 버퍼 메모리(411), 리드 온리 메모리(412) 및 재기입 매니저(413)를 포함할 수 있다. 일 실시예에서, 버퍼 메모리(411)와 리드 온리 메모리(412)는 단일 메모리 칩으로 구현될 수 있다. 예를 들어, 버퍼 메모리(411)와 리드 온리 메모리(412)는 SRAM으로 구현될 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 버퍼 메모리(411)와 리드 온리 메모리(412)는 복수의 메모리 칩들로 각각 구현될 수도 있다.
버퍼 메모리(411)는 비휘발성 메모리(200)에 기입하기 위한 기입 데이터 또는 비휘발성 메모리(200)로부터 독출된 독출 데이터를 버퍼링할 수 있다. 또한, 버퍼 메모리(411)는 호스트로부터 수신한 논리 주소 또는 키를 비휘발성 메모리(200)의 물리 주소로 변환하기 위한 맵핑 테이블을 저장할 수도 있다. 리드 온리 메모리(412)는 컨트롤러(400)의 제어 동작을 수행하기 위한 메타 데이터를 저장할 수 있다. 예를 들어, 리드 온리 메모리(412)는 펌웨어 코드, ECC 인코더, ECC 디코더, ARM 코드 등과 같은 메타 데이터를 저장할 수 있다.
예를 들어, 버퍼 메모리(411) 및 리드 온리 메모리(412)는 SRAM으로 구현될 수 있다. 상술한 바와 같이, SRAM은 데이터 입출력 속도가 증가하거나 사용 환경의 고도가 높아지는 경우 SER이 증가할 수 있다. 이로써, SRAM에 저장된 데이터의 비트 플립이 발생할 수 있는데, 리드 온리 메모리(412)는 스토리지 장치(30)의 동작에 중요한 메타 데이터를 저장하므로, 메타 데이터가 손상되지 않도록 리드 온리 메모리(412)에 대해 주기적으로 재기입 동작 또는 리프레시(refresh) 동작을 수행하는 것이 중요하다.
재기입 매니저(413)는 버퍼 메모리(411)에서 발생한 에러 비트의 개수 또는 에러 비트의 발생 빈도를 임계치와 비교하고, 비교 결과를 기초로 리드 온리 메모리(412)의 재기입 주기를 결정할 수 있다. 일 실시예에서, 재기입 매니저(413)는 소프트웨어 또는 펌웨어로 구현될 수 있고, 도 1의 제1 메모리(110)에 로딩될 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 일부 실시예들에서, 재기입 매니저(413)는 하드웨어로 구현될 수도 있다.
일 실시예에서, 재기입 매니저(413)는 버퍼 메모리(411)에서 발생한 에러 비트의 개수가 임계 개수 이상인 경우 재기입 주기를 감소시킬 수 있고, 이에 따라, 리드 온리 메모리(412)에 대한 재기입 동작의 횟수가 증가할 수 있다. 이어서, 재기입 매니저(413)는 버퍼 메모리(411)에서 발생한 에러 비트의 개수가 임계 개수 미만으로 감소하면 재기입 주기를 다시 증가시킬 수 있고, 이에 따라, 리드 온리 메모리(412)에 대한 재기입 동작의 횟수가 다시 감소할 수 있다.
일 실시예에서, 재기입 매니저(413)는 버퍼 메모리(411)에서 발생한 에러 비트의 개수가 임계 개수 미만인 경우 재기입 주기를 유지할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 재기입 매니저(413)는 버퍼 메모리(411)에서 발생한 에러 비트의 개수가 임계 개수 미만인 경우 재기입 주기를 증가시킬 수도 있고, 이에 따라, 리드 온리 메모리(412)에 대한 재기입 동작의 횟수가 감소할 수 있다. 이어서, 재기입 매니저(413)는 버퍼 메모리(411)에서 발생한 에러 비트의 개수가 임계 개수 이상으로 증가하면 재기입 주기를 감소시킬 수 있고, 이에 따라, 리드 온리 메모리(412)에 대한 재기입 동작의 횟수가 증가할 수 있다.
도 13은 본 개시의 일 실시예에 따른 스토리지 장치의 다른 예(30a)를 나타내는 블록도이다.
도 13을 참조하면, 스토리지 장치(30a)는 컨트롤러(400a) 및 비휘발성 메모리(200)를 포함할 수 있다. 컨트롤러(400a)는 버퍼 메모리(411), 리드 온리 메모리(412), 재기입 매니저(413) 및 모니터링 모듈(414)를 포함할 수 있다. 본 실시예에 따른 스토리지 장치(30a)는 도 12의 스토리지 장치(30)의 일 구현 예에 대응할 수 있다.
일 실시예에서, 모니터링 모듈(414)은 버퍼 메모리(411)에서 발생한 에러 비트를 모니터링할 수 있다. 예를 들어, 모니터링 모듈(414)은 버퍼 메모리(411)에 입력되는 데이터와 버퍼 메모리(411)로부터 출력되는 데이터를 비교함으로써 에러 비트의 개수를 모니터링할 수 있다. 예를 들어, 모니터링 모듈(414)은 모니터링 에러 비트의 개수를 기록하는 에러 상태 레지스터를 포함하도록 구현될 수 있다.
이때, 재기입 매니저(413)는 모니터링 모듈(414)로부터 에러 비트의 개수를 수신하고, 수신한 에러 비트의 개수를 임계 개수와 비교하고, 비교 결과를 기초로 리드 온리 메모리(412)에 대한 재기입 주기를 결정할 수 있다. 일 실시예에서, 재기입 매니저(413)는 에러 상태 레지스터에 기록된 값이 임계 개수에 도달한 경우 리드 온리 메모리(412)에 대한 재기입 주기를 변경할 수 있다.
일 실시예에서, 모니터링 모듈(414)은 버퍼 메모리(411)에 입력되는 데이터와 버퍼 메모리(411)로부터 출력되는 데이터를 기초로 데이터 입출력 속도를 모니터링할 수 있다. 예를 들어, 모니터링 모듈(414)은 모니터링 데이터 입출력 속도를 기록하는 입출력 속도 레지스터를 포함하도록 구현될 수 있다. 일 실시예에서, 모니터링 모듈(414)은 최대 데이터 사용 속도를 모니터링할 수 있다. 예를 들어, 모니터링 모듈(414)은 모니터링된 최대 데이터 사용 속도를 기록하는 최대 데이터 사용 속도 레지스터를 포함하도록 구현될 수 있다.
이때, 재기입 매니저(413)는 모니터링 모듈(414)로부터 데이터 입출력 속도를 수신하고, 수신한 데이터 입출력 속도를 임계 속도와 비교하고, 비교 결과를 기초로 리드 온리 메모리(412)에 대한 재기입 주기를 결정할 수 있다. 일 실시예에서, 재기입 매니저(413)는 입출력 속도 레지스터 또는 최대 데이터 사용 속도 레지스터에 기록된 값이 임계 속도에 도달한 경우 리드 온리 메모리(412)에 대한 재기입 주기를 변경할 수 있다.
도 14는 도 13의 컨트롤러의 일 예(400a')를 상세하게 나타내는 블록도이다.
도 14를 참조하면, 컨트롤러(400a')는 메모리(410), 프로세서(420), 호스트 인터페이스(430) 및 비휘발성 메모리 인터페이스(440)를 포함할 수 있고, 이들은 버스(450)를 통해 서로 통신할 수 있다. 일부 실시예들에서, 도 13의 스토리지 장치(30a)는 DRAM을 더 포함할 수 있고, 이때, 컨트롤러(400a')는 DRAM을 제어하기 위한 DRAM 컨트롤러를 더 포함할 수 있다.
프로세서(420)는 중앙 처리 장치나 마이크로 프로세서 등을 포함할 수 있으며, 컨트롤러(400a')의 전반적인 동작을 제어할 수 있다. 프로세서(420)는 도 5의 프로세서(120)와 실질적으로 유사하게 구현될 수 있다. 메모리(410)는 프로세서(420)의 제어에 따라 동작하며, 동작 메모리, 버퍼 메모리, 캐시 메모리 등으로 사용될 수 있다. 예를 들어, 메모리(410)는 DRAM, SRAM과 같은 휘발성 메모리 또는 PRAM, 플래시 메모리와 같은 비휘발성 메모리로 구현될 수도 있다.
메모리(410)에는 재기입 매니저(413a) 및 모니터링 모듈(414a)이 로딩될 수 있다. 재기입 매니저(413a) 및 모니터링 모듈(414a)은 펌웨어 또는 소프트웨어로 구현될 수 있고, 메모리(410)에 로딩될 수 있다. 재기입 매니저(413a)는 도 13의 재기입 매니저(413)의 일 구현 예에 대응할 수 있고, 모니터링 모듈(414a)은 도 13의 모니터링 모듈(414)의 일 구현 예에 대응할 수 있다. 메모리(410)는 버퍼링 영역(411a) 및 리드 온리 영역(412a)을 포함할 수 있고, 버퍼링 영역(411a)은 기입 버퍼 또는 독출 버퍼로 이용될 수 있다. 버퍼링 영역(411a)은 도 13의 버퍼 메모리(411)의 일 구현 예에 대응할 수 있고, 리드 온리 영역(412a)은 도 13의 리드 온리 메모리(412)의 일 구현 예에 대응할 수 있다.
호스트 인터페이스(430)는 호스트(예를 들어, 도 1의 20)와 컨트롤러(400a') 사이의 인터페이스를 제공할 수 있고, 도 5의 호스트 인터페이스(130)와 실질적으로 유사하게 구현될 수 있다. 비휘발성 메모리 인터페이스(440)는 컨트롤러(400a')와 비휘발성 메모리(200) 사이의 인터페이스를 제공할 수 있고, 도 5의 비휘발성 메모리 인터페이스(150)와 실질적으로 유사하게 구현될 수 있다.
도 15는 도 13의 컨트롤러의 다른 예(400a")를 상세하게 나타내는 블록도이다.
도 15를 참조하면, 컨트롤러(400a")는 메모리(410'), 프로세서(420), 재기입 매니저(413b), 모니터링 모듈(414b), 호스트 인터페이스(430) 및 비휘발성 메모리 인터페이스(440)를 포함할 수 있고, 이들은 버스(450)를 통해 서로 통신할 수 있다. 본 실시예에 따른 컨트롤러(400a")는 도 14의 컨트롤러(400a')의 변형 예에 대응할 수 있는바, 중복된 설명은 생략하기로 한다.
메모리(410')는 버퍼링 영역(411a) 및 리드 온리 영역(412a)을 포함할 수 있고, 버퍼링 영역(411a)은 기입 버퍼 또는 독출 버퍼로 이용될 수 있다. 재기입 매니저(413b) 및 모니터링 모듈(414b)은 하드웨어로 구현될 수 있고, 이에 따라, 메모리(410') 외부에 배치될 수 있다. 재기입 매니저(413b)는 도 13의 재기입 매니저(413)의 일 구현 예에 대응할 수 있고, 모니터링 모듈(414b)은 도 13의 모니터링 모듈(414)의 일 구현 예에 대응할 수 있다.
도 16은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 16을 참조하면, 본 실시예에 따른 스토리지 장치의 동작 방법은 컨트롤러 내의 리드 온리 메모리의 재기입 동작을 동적으로 제어하는 방법일 수 있고, 예를 들어, 도 12의 스토리지 장치(30) 또는 도 13의 스토리지 장치(30a)에서 시계열적으로 수행되는 단계들을 포함할 수 있다. 이하에서는 도 12 및 도 16을 함께 참조하여 본 실시예에 따른 스토리지 장치의 동작 방법을 설명하기로 한다.
단계 S410에서, 버퍼링 영역에서 발생한 에러 비트의 개수를 모니터링한다. 예를 들어, 컨트롤러(400)는 버퍼 메모리(411)에서 발생한 에러 비트의 개수를 주기적으로 또는 비주기적으로 모니터링할 수 있다. 예를 들어, 호스트로부터 독출 요청 또는 기입 요청이 수신된 경우, 컨트롤러(400)는 버퍼 메모리(411)에서 발생한 에러 비트의 개수를 모니터링할 수 있다. 또한, 일부 실시예들에서, 버퍼링 영역에서 발생한 에러 비트의 발생 빈도를 모니터링할 수도 있다.
단계 S420에서, 에러 비트의 개수를 기초로 리드 온리 영역에 대한 재기입 주기를 동적으로 결정한다. 예를 들어, 컨트롤러(400)는 에러 상태 레지스터에 기록된 에러 비트의 개수를 기초로 리드 온리 메모리(412)에 대한 재기입 주기를 동적으로 결정할 수 있다. 일 실시예에서, 컨트롤러(400)는 에러 비트의 개수를 임계 개수와 비교하고, 에러 비트의 개수가 임계 개수 이상인 경우 재기입 주기를 감소시키고, 에러 비트의 개수가 임계 값 미만으로 감소할 경우 재기입 주기를 증가시킬 수 있다. 또한, 일부 실시예들에서, 에러 비트의 발생 빈도를 기초로 리드 온리 영역에 대한 재기입 주기를 동적으로 결정할 수도 있다. 나아가, 일부 실시예들에서, 본 동작 방법은 기입 데이터 또는 독출 데이터의 입출력 속도를 모니터링하는 단계, 및 입출력 속도를 기초로 재기입 주기를 동적으로 결정하는 단계를 더 포함할 수 있다.
단계 S430에서, 결정된 재기입 주기에 따라 리드 온리 영역에 대한 재기입 동작을 동적으로 제어한다. 예를 들어, 컨트롤러(400)는 리드 온리 메모리(412)에 대한 재기입 동작을 동적으로 제어할 수 있다. 구체적으로, 컨트롤러(400)는 비휘발성 메모리(200)의 메타 영역(210)에 저장된 메타 데이터를 독출하고, 독출된 메타 데이터를 리드 온리 메모리(412)에 재기입할 수 있다. 이에 따라, 리드 온리 메모리(412)에서 비트 플립이 발생하는 것을 방지할 수 있고, 결과적으로, 스토리지 장치(30)의 신뢰성이 향상될 수 있다.
도 17은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 17을 참조하면, 본 실시예에 따른 스토리지 장치의 동작 방법은 도 16의 동작 방법의 일 구현 예에 대응할 수 있다. 단계 S510에서, 버퍼링 영역에서 발생한 에러 비트의 개수를 모니터링한다. 단계 S520에서, 에러 비트의 개수를 임계 개수와 비교한다. 단계 S530에서, 에러 비트의 개수가 임계 개수 이상인지 판단한다. 판단 결과, 에러 비트의 개수가 임계 개수 이상인 경우 단계 S540을 수행한다. 단계 S540에서, 재기입 주기를 감소한다. 한편, 에러 비트의 개수가 임계 개수 미만인 경우 단계 S550을 수행한다. 단계 S550에서, 재기입 주기를 감소한다.
단계 S560에서, 에러 비트의 개수가 임계 개수 미만인지 판단한다. 판단 결과, 에러 비트의 개수가 임계 개수 미만인 경우 단계 S570을 수행한다. 한편, 에러 비트의 개수가 임계 개수 이상인 경우 단계 S550을 수행한다. 이와 같이, 본 실시예에 따르면, 에러 비트의 개수와 임계 개수의 비교 결과에 따라 재기입 주기를 결정한 후에도 지속적으로 에러 비트의 개수와 임계 개수를 비교하고, 비교 결과에 따라 재기입 주기를 다시 변경할 수 있다.
도 18은 도 16의 동작 방법의 일 예에 따른 컨트롤러(400) 및 비휘발성 메모리(200) 사이의 동작을 나타내는 흐름도이다. 컨트롤러(400) 및 비휘발성 메모리(200)는 도 12의 컨트롤러(400) 및 비휘발성 메모리(200)에 각각 대응할 수 있다.
단계 S610에서, 컨트롤러(400)는 버퍼링 영역에서 발생한 에러 비트를 모니터링한다. 단계 S620에서, 컨트롤러(400)는 에러 비트의 개수를 임계 개수와 비교한다. 단계 S630에서, 컨트롤러(400)는 비교 결과를 기초로 재기입 주기를 결정한다. 단계 S640에서, 컨트롤러(400)는 결정된 재기입 주기에 따라 독출 커맨드를 발행한다.
단계 S650에서, 컨트롤러(400)는 비휘발성 메모리(200)에 독출 커맨드를 전송한다. 단계 S660에서, 비휘발성 메모리(200)는 메타 영역(210)으로부터 메타 데이터를 독출한다. 단계 S670에서, 비휘발성 메모리(200)는 컨트롤러(400)에 메타 데이터를 전송한다. 단계 S680에서, 컨트롤러(400)는 리드 온리 메모리에 메타 데이터를 재기입한다.
일 실시예에서, 컨트롤러(400)는 재기입 동작을 수행할 때마다 비휘발성 메모리(200)에 대한 독출 동작을 수행할 수 있고, 비휘발성 메모리(200)로부터 독출된 메타 데이터를 리드 온리 메모리 또는 리드 온리 영역에 바로 재기입할 수 있다. 이 경우, 재기입 주기에 따라 단계 S640 내지 S670이 반복될 수 있다.
일 실시예에서, 컨트롤러(400)는 스토리지 장치에 전원이 인가되면 비휘발성 메모리(200)에 대한 독출 동작을 수행할 수 있고, 비휘발성 메모리(200)로부터 독출된 메타 데이터를 DRAM에 로딩할 수 있다. 이어서, 컨트롤러(400)는 재기입 동작을 수행할 때마다 DRAM에 로딩된 메타 데이터를 리드 온리 메모리 또는 리드 온리 영역에 재기입할 수 있다. 이 경우, 재기입 동작이 반복되더라도 단계 S640 내지 S670은 반복되지 않을 수 있다.
도 19는 본 개시의 일 실시예에 따른 네트워크 시스템(1000)을 나타낸다.
도 19를 참조하면, 네트워크 시스템(1000)은 서버 시스템(1100) 및 네트워크(NET)를 통해 서버 시스템(1100)과 통신하는 복수의 터미널들(1210 내지 1230)을 포함할 수 있다. 서버 시스템(1100)은 서버(1110)와 SSD(1120)를 포함할 수 있다. 이때, 서버(1110)는 상술한 실시예들의 호스트에 대응할 수 있고, SSD(1120)는 상술한 실시예들의 스토리지 장치에 대응할 수 있다.
일 실시예에서, SSD(1120)는 도 1 내지 도 18을 참조하여 상술된 실시예들을 이용하여 구현될 수 있다. 구체적으로, SSD(1120)는 비휘발성 메모리 및 컨트롤러를 포함할 수 있고, 컨트롤러는 메모리, 예를 들어, SRAM을 포함할 수 있다. SSD(1120)는 컨트롤러에 포함된 메모리에서 발생한 에러 비트를 주기적으로 또는 비주기적으로 모니터링하고, 모니터링 결과에 따라 버퍼 메모리를 동적으로 결정하거나 리드 온리 메모리에 대한 재기입 주기를 동적으로 결정할 수 있다.
도 20은 본 개시의 일 실시예에 따른 네트워크 시스템(2000)을 나타낸다.
도 20을 참조하면, 네트워크 시스템(2000)은 클라이언트 그룹(2100)과 데이터 센터(2200)를 포함할 수 있다. 클라이언트 그룹(2100)은 제1 네트워크(NET1), 예를 들어, 인터넷을 통해 데이터 센터(2200)와 통신하는 클라이언트 장치들(C)을 포함할 수 있다. 데이터 센터(2200)는 각종 데이터를 모아두고 서비스를 제공하는 시설로서, 제2 네트워크(NET2), 예를 들어, LAN(Local Area Network) 또는 인트라넷을 통해 서로 통신하는 어플리케이션 서버 그룹(2210), 데이터베이스 서버 그룹(2220) 및 오브젝트 캐시 서버 그룹(2230)을 포함할 수 있다.
어플리케이션 서버 그룹(2210)은 어플리케이션 서버 장치들(AS)을 포함할 수 있고, 어플리케이션 서버 장치들(AS)은 클라이언트 그룹(2100)으로부터 수신한 요청을 처리하고, 클라이언트 그룹(2100)의 요청에 따라 데이터베이스 서버 그룹(2220) 또는 오브젝트 캐시 서버 그룹(2230)을 액세스할 수 있다. 데이터베이스 서버 그룹(2220)은 어플리케이션 서버 장치들(AS)에 의해 처리된 데이터를 저장하는 데이터베이스 서버 장치들(DS)을 포함할 수 있다. 오브젝트 캐시 서버 그룹(2230)은 데이터베이스 서버 장치들(DS)에 저장되는 데이터 또는 데이터베이스 서버 장치들(DS)로부터 독출된 데이터를 임시로 저장하는 오브젝트 캐시 서버 장치들(OCS)을 포함할 수 있고, 이에 따라, 어플리케이션 서버 장치들(AS)과 데이터베이스 서버 장치들(DS) 사이에서 캐시의 기능을 수행할 수 있다.
일 실시예에서, 오브젝트 캐시 서버 장치들(OCS)는 도 1 내지 도 18을 참조하여 상술된 실시예들을 이용하여 구현될 수 있다. 구체적으로, 오브젝트 캐시 서버 장치들(OCS) 각각은 비휘발성 메모리 및 컨트롤러를 포함할 수 있고, 컨트롤러는 메모리, 예를 들어, SRAM을 포함할 수 있다. 오브젝트 캐시 서버 장치들(OCS) 각각은 컨트롤러에 포함된 메모리에서 발생한 에러 비트를 주기적으로 또는 비주기적으로 모니터링하고, 모니터링 결과에 따라 버퍼 메모리를 동적으로 결정하거나 리드 온리 메모리에 대한 재기입 주기를 동적으로 결정할 수 있다.
도 21은 본 개시의 일 실시예에 따른 전자 장치(3000)를 나타낸다.
도 21을 참조하면, 전자 장치(3000)는 프로세서(3100), 메모리 장치(3200), 스토리지 장치(3300), 모뎀(3400), 입출력 장치(3500) 및 파워 서플라이(3600)를 포함할 수 있다. 일 실시예에서, 스토리지 장치(3300)는 도 1 내지 도 18을 참조하여 상술된 실시예들을 이용하여 구현될 수 있다. 구체적으로, 스토리지 장치(3300)는 비휘발성 메모리 및 컨트롤러를 포함할 수 있고, 컨트롤러는 메모리, 예를 들어, SRAM을 포함할 수 있다. 스토리지 장치(3300)는 컨트롤러에 포함된 메모리에서 발생한 에러 비트를 주기적으로 또는 비주기적으로 모니터링하고, 모니터링 결과에 따라 버퍼 메모리를 동적으로 결정하거나 리드 온리 메모리에 대한 재기입 주기를 동적으로 결정할 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
Claims (20)
- 비휘발성 메모리;
상기 비휘발성 메모리의 외부에 배치되고, 상기 비휘발성 메모리에 기입하기 위한 기입 데이터 또는 상기 비휘발성 메모리로부터 독출된 독출 데이터를 버퍼링하도록 구성된 SRAM(Static Random Access Memory) 버퍼;
상기 비휘발성 메모리의 외부에 배치된 DRAM(Dynamic Random Access Memory) 버퍼; 및
상기 비휘발성 메모리를 제어하도록 구성된 컨트롤러를 포함하고,
상기 컨트롤러는,
상기 SRAM 버퍼에 입력되는 데이터와 상기 SRAM 버퍼에서 출력되는 데이터를 비교함으로써 에러 비트의 개수를 모니터링하는 모니터링 모듈; 및
상기 모니터링 모듈로부터 수신한 상기 에러 비트의 개수를 임계치와 비교함으로써, 상기 기입 데이터에 대한 기입 버퍼 또는 상기 독출 데이터에 대한 독출 버퍼를 결정하는 버퍼 매니저를 포함하며,
상기 버퍼 매니저는,
기입 동작 중에, 상기 에러 비트의 개수가 상기 임계치 미만이면 상기 SRAM 버퍼를 상기 기입 버퍼로 결정하고, 상기 에러 비트의 개수가 상기 임계치 이상이면 상기 SRAM 버퍼 대신 상기 DRAM 버퍼를 상기 기입 버퍼로 결정하며,
독출 동작 중에, 상기 에러 비트의 개수가 상기 임계치 미만이면 상기 SRAM 버퍼를 상기 독출 버퍼로 결정하고, 상기 에러 비트의 개수가 상기 임계치 이상이면 상기 SRAM 버퍼 대신 상기 DRAM 버퍼를 상기 독출 버퍼로 결정하는 스토리지 장치. - 제1항에 있어서,
상기 모니터링 모듈은, 상기 SRAM 버퍼에서 발생한 상기 에러 비트의 발생 빈도를 더 모니터링하고,
상기 버퍼 매니저는, 상기 모니터링 모듈로부터 수신한 상기 에러 비트의 발생 빈도를 임계 빈도와 비교함으로써, 상기 기입 버퍼 또는 상기 독출 버퍼를 결정하도록 더 구성된 것을 특징으로 하는 스토리지 장치. - 제1항에 있어서, 상기 컨트롤러는,
상기 에러 비트의 개수가 상기 임계치 미만이면, 상기 SRAM 버퍼에서 상기 비휘발성 메모리로의 노멀(normal) 기입 경로에 따라 상기 기입 동작을 수행하거나 또는 상기 비휘발성 메모리에서 상기 SRAM 버퍼로의 노멀 독출 경로에 따라 상기 독출 동작을 수행하고,
상기 에러 비트의 개수가 상기 임계치 이상이면, 상기 DRAM 버퍼에서 상기 비휘발성 메모리로의 수정 기입 경로에 따라 상기 기입 동작을 수행하거나 또는 상기 비휘발성 메모리에서 상기 DRAM 버퍼로의 수정 독출 경로에 따라 상기 독출 동작을 수행하는 것을 특징으로 하는 스토리지 장치. - 제1항에 있어서,
상기 컨트롤러는, 상기 SRAM 버퍼에 버퍼링된 데이터에 대해 에러 검출 및 정정 동작을 수행하도록 구성된 ECC(Error Check and Correction) 모듈을 포함하는 것을 특징으로 하는 스토리지 장치. - 제4항에 있어서,
상기 모니터링 모듈은, 상기 ECC 모듈에서 정정된 에러를 기초로 상기 에러 비트의 개수를 모니터링하는 것을 특징으로 하는 스토리지 장치. - 제1항에 있어서,
상기 모니터링 모듈은, 상기 기입 데이터 또는 상기 독출 데이터의 입출력 속도를 더 모니터링하고,
상기 버퍼 매니저는, 상기 입출력 속도를 기초로 상기 기입 버퍼 또는 상기 독출 버퍼를 동적으로 결정하도록 구성된 것을 특징으로 하는 스토리지 장치. - 제6항에 있어서, 상기 버퍼 매니저는,
상기 입출력 속도를 임계 속도와 비교하고, 상기 입출력 속도가 상기 임계 속도 미만인 경우 상기 SRAM 버퍼를 상기 기입 버퍼 또는 상기 독출 버퍼로 결정하고, 상기 입출력 속도가 상기 임계 속도 이상인 경우 상기 DRAM 버퍼를 상기 기입 버퍼 또는 상기 독출 버퍼로 결정하는 것을 특징으로 하는 스토리지 장치. - 제1항에 있어서, 상기 버퍼 매니저는,
상기 기입 동작 중에, 상기 에러 비트의 개수가 상기 임계치 미만으로 감소하면, 상기 DRAM 버퍼 대신 상기 SRAM 버퍼를 상기 기입 버퍼로 다시 결정하는 것을 특징으로 하는 스토리지 장치. - 제1항에 있어서, 상기 버퍼 매니저는,
상기 독출 동작 중에, 상기 에러 비트의 개수가 상기 임계치 미만으로 감소하면, 상기 DRAM 버퍼 대신 상기 SRAM 버퍼를 상기 독출 버퍼로 다시 결정하는 것을 특징으로 하는 스토리지 장치. - 비휘발성 메모리; 및
버퍼 메모리 및 리드 온리 메모리를 포함하는 컨트롤러를 포함하고,
상기 버퍼 메모리는 휘발성 메모리 셀들을 포함하며, 상기 비휘발성 메모리에 기입하기 위한 기입 데이터 또는 상기 비휘발성 메모리로부터 독출된 독출 데이터를 버퍼링하고,
상기 리드 온리 메모리는 휘발성 메모리 셀들을 포함하며, 상기 컨트롤러의 제어 동작을 수행하기 위한 메타 데이터를 저장하고,
상기 컨트롤러는,
상기 버퍼 메모리에서 발생한 에러 비트의 개수 또는 상기 에러 비트의 발생 빈도를 모니터링하고,
상기 에러 비트의 개수 또는 상기 에러 비트의 상기 발생 빈도의 함수로서, 상기 리드 온리 메모리에 대한 리프레시(refresh) 주기를 동적으로 결정하고,
결정된 상기 리프레시 주기에 따라 상기 리드 온리 메모리에 대한 리프레쉬 동작을 동적으로 제어하는 것을 특징으로 하는 스토리지 장치. - 제10항에 있어서, 상기 컨트롤러는,
상기 에러 비트의 개수 또는 상기 에러 비트의 발생 빈도를 임계치와 비교하고, 상기 에러 비트의 개수 또는 상기 에러 비트의 발생 빈도가 상기 임계치 이상인 경우 상기 리프레시 주기를 감소시키고, 상기 에러 비트의 개수 또는 상기 에러 비트의 발생 빈도가 상기 임계치 미만으로 감소할 경우 상기 리프레시 주기를 증가시키도록 구성된 재기입 매니저를 포함하는 것을 특징으로 하는 스토리지 장치. - 제10항에 있어서,
상기 비휘발성 메모리는, 상기 리드 온리 메모리에 저장되는 상기 메타 데이터를 저장하는 메타 영역을 포함하고,
상기 컨트롤러는, 결정된 상기 리프레시 주기에 따라 상기 메타 영역에 저장된 상기 메타 데이터를 상기 리드 온리 메모리에 재기입하는 것을 특징으로 하는 스토리지 장치. - 제10항에 있어서, 상기 컨트롤러는,
상기 버퍼 메모리에 입력되는 데이터와 상기 버퍼 메모리에서 출력되는 데이터를 비교함으로써 상기 에러 비트의 개수 또는 상기 에러 비트의 발생 빈도를 모니터링하도록 구성된 모니터링 모듈을 포함하는 것을 특징으로 하는 스토리지 장치. - 제10항에 있어서, 상기 컨트롤러는,
상기 버퍼 메모리에 버퍼링된 데이터에 대해 에러 검출 및 정정 동작을 수행하도록 구성된 ECC 모듈을 포함하는 것을 특징으로 하는 스토리지 장치. - 제14항에 있어서,
상기 컨트롤러는, 상기 ECC 모듈에서 정정된 에러를 기초로 상기 에러 비트의 개수 또는 상기 에러 비트의 발생 빈도를 모니터링하도록 구성된 모니터링 모듈을 더 포함하는 것을 특징으로 하는 스토리지 장치. - 제10항에 있어서, 상기 컨트롤러는,
상기 기입 데이터 또는 상기 독출 데이터의 입출력 속도를 더 모니터링하고, 상기 입출력 속도를 기초로 상기 리프레시 주기를 동적으로 결정하도록 구성된 것을 특징으로 하는 스토리지 장치. - 제16항에 있어서, 상기 컨트롤러는,
상기 입출력 속도를 임계 속도와 비교하고, 상기 입출력 속도가 상기 임계 속도 이상인 경우 상기 리프레시 주기를 감소시키고, 상기 입출력 속도가 상기 임계 속도 미만으로 감소할 경우 상기 리프레시 주기를 증가시키도록 구성된 재기입 관리 모듈을 포함하는 것을 특징으로 하는 스토리지 장치. - 제10항에 있어서,
상기 버퍼 메모리는 SRAM인 것을 특징으로 하는 스토리지 장치. - 비휘발성 메모리, 및 상기 비휘발성 메모리를 제어하는 컨트롤러를 포함하는 스토리지 장치의 동작 방법으로서,
상기 컨트롤러에 의해, 상기 컨트롤러에 포함된 SRAM 버퍼에서 발생한 에러 비트의 개수 또는 상기 에러 비트의 발생 빈도를 모니터링하는 단계;
상기 컨트롤러에 의해, 상기 에러 비트의 개수 또는 상기 에러 비트의 발생 빈도를 임계치와 비교하는 단계;
상기 에러 비트의 개수 또는 상기 에러 비트의 발생 빈도가 상기 임계치 미만인 경우, 상기 비휘발성 메모리에 기입하기 위한 기입 데이터 또는 상기 비휘발성 메모리로부터 독출된 독출 데이터를 상기 SRAM 버퍼에 버퍼링하는 단계;
상기 에러 비트의 개수 또는 상기 에러 비트의 발생 빈도가 상기 임계치 이상인 경우, 상기 기입 데이터 또는 상기 독출 데이터를 상기 컨트롤러 외부에 배치된 DRAM 버퍼에 버퍼링하는 단계; 및
상기 에러 비트의 개수 또는 상기 에러 비트의 발생 빈도가 상기 임계치 미만으로 감소하는 경우, 상기 기입 데이터 또는 상기 독출 데이터를 상기 SRAM 버퍼에 버퍼링하는 단계를 포함하는 방법. - 비휘발성 메모리, 및 상기 비휘발성 메모리를 제어하는 컨트롤러를 포함하는 스토리지 장치의 동작 방법으로서,
상기 컨트롤러에 의해, 상기 컨트롤러에 포함된 버퍼 메모리에서 발생한 에러 비트의 개수 또는 상기 에러 비트의 발생 빈도를 모니터링하는 단계;
상기 컨트롤러에 의해, 상기 에러 비트의 개수 또는 상기 에러 비트의 발생 빈도를 기초로 상기 컨트롤러에 포함된 리드 온리 메모리에 대한 리프레시(refresh) 주기를 동적으로 결정하는 단계; 및
상기 컨트롤러에 의해, 결정된 상기 리프레시 주기에 따라 상기 리드 온리 메모리에 대한 리프레시 동작을 동적으로 제어하는 단계를 포함하는 방법.
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180007894A KR102507302B1 (ko) | 2018-01-22 | 2018-01-22 | 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
DE102018120964.9A DE102018120964A1 (de) | 2018-01-22 | 2018-08-28 | Integrierte Schaltungsspeichervorrichtungen mit verbesserter Pufferspeichernutzung während Lese- und Schreiboperationen |
US16/117,295 US11086561B2 (en) | 2018-01-22 | 2018-08-30 | Integrated circuit memory devices with enhanced buffer memory utilization during read and write operations and methods of operating same |
CN201811190300.5A CN110069357B (zh) | 2018-01-22 | 2018-10-12 | 集成电路存储器装置及其操作方法 |
JP2018232649A JP7308025B2 (ja) | 2018-01-22 | 2018-12-12 | 集積回路装置及びストレージ装置 |
US17/369,606 US12061817B2 (en) | 2018-01-22 | 2021-07-07 | Integrated circuit memory devices with enhanced buffer memory utilization during read and write operations and methods of operating same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180007894A KR102507302B1 (ko) | 2018-01-22 | 2018-01-22 | 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190089429A KR20190089429A (ko) | 2019-07-31 |
KR102507302B1 true KR102507302B1 (ko) | 2023-03-07 |
Family
ID=67145196
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180007894A KR102507302B1 (ko) | 2018-01-22 | 2018-01-22 | 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11086561B2 (ko) |
JP (1) | JP7308025B2 (ko) |
KR (1) | KR102507302B1 (ko) |
CN (1) | CN110069357B (ko) |
DE (1) | DE102018120964A1 (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7219397B2 (ja) * | 2019-01-18 | 2023-02-08 | 富士通株式会社 | 情報処理装置、記憶制御装置および記憶制御プログラム |
US11908504B2 (en) * | 2021-04-13 | 2024-02-20 | Seagate Technology Llc | Front end buffer having ferroelectric field effect transistor (FeFET) based memory |
KR20230060817A (ko) * | 2021-10-28 | 2023-05-08 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
KR20240015986A (ko) * | 2022-07-28 | 2024-02-06 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러, 메모리 컨트롤러를 포함하는 메모리 시스템 및 그것의 동작 방법 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090161466A1 (en) * | 2007-12-20 | 2009-06-25 | Spansion Llc | Extending flash memory data retension via rewrite refresh |
US20130246847A1 (en) * | 2012-03-19 | 2013-09-19 | Samsung Electronics Co., Ltd. | Method of detecting error in write data and data processing system to perform the method |
US20150242144A1 (en) * | 2014-02-26 | 2015-08-27 | Fujitsu Limited | Storage device, controller, and non-transitory computer-readable recording medium having stored therein control program |
US20160034327A1 (en) * | 2014-08-01 | 2016-02-04 | Samsung Electronics Co., Ltd. | Method of operating non-volatile memory device |
Family Cites Families (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3746319B2 (ja) | 1995-11-08 | 2006-02-15 | 株式会社ルネサステクノロジ | 半導体記憶装置 |
JP3789998B2 (ja) | 1997-01-17 | 2006-06-28 | 株式会社ルネサステクノロジ | メモリ内蔵プロセサ |
JP3250032B2 (ja) * | 1997-04-09 | 2002-01-28 | 日本アイ・ビー・エム株式会社 | 動的バンド幅変更データ転送方法及びシステム |
US6832340B2 (en) | 2000-01-26 | 2004-12-14 | Hewlett-Packard Development Company, L.P. | Real-time hardware memory scrubbing |
US7398302B2 (en) * | 2001-03-30 | 2008-07-08 | Hitachi, Ltd. | Remote copy with path selection and prioritization |
JP2005100259A (ja) | 2003-09-26 | 2005-04-14 | Hitachi Ltd | ドライブの2重障害を防止するアレイ型ディスク装置、プログラム、及び方法 |
JP4237109B2 (ja) | 2004-06-18 | 2009-03-11 | エルピーダメモリ株式会社 | 半導体記憶装置及びリフレッシュ周期制御方法 |
JP4617847B2 (ja) * | 2004-11-04 | 2011-01-26 | 株式会社日立製作所 | 情報処理システム及びアクセス方法 |
US8209363B2 (en) * | 2007-10-09 | 2012-06-26 | Cleversafe, Inc. | File system adapted for use with a dispersed data storage network |
JP4846383B2 (ja) * | 2006-02-10 | 2011-12-28 | 株式会社日立製作所 | 情報処理装置 |
US7631228B2 (en) | 2006-09-12 | 2009-12-08 | International Business Machines Corporation | Using bit errors from memory to alter memory command stream |
US8706968B2 (en) * | 2007-12-06 | 2014-04-22 | Fusion-Io, Inc. | Apparatus, system, and method for redundant write caching |
JP4939234B2 (ja) | 2007-01-11 | 2012-05-23 | 株式会社日立製作所 | フラッシュメモリモジュール、そのフラッシュメモリモジュールを記録媒体として用いたストレージ装置及びそのフラッシュメモリモジュールのアドレス変換テーブル検証方法 |
US7966447B2 (en) * | 2007-07-06 | 2011-06-21 | Hewlett-Packard Development Company, L.P. | Systems and methods for determining refresh rate of memory based on RF activities |
US7793150B1 (en) * | 2007-10-16 | 2010-09-07 | Nvidia Corporation | System, method, and computer program product for saving an unprocessed portion of a push buffer in response to an error |
US8015438B2 (en) | 2007-11-29 | 2011-09-06 | Qimonda Ag | Memory circuit |
US20090217281A1 (en) * | 2008-02-22 | 2009-08-27 | John M Borkenhagen | Adaptable Redundant Bit Steering for DRAM Memory Failures |
JP4489127B2 (ja) | 2008-02-29 | 2010-06-23 | 株式会社東芝 | 半導体記憶装置 |
US8782326B2 (en) | 2009-04-01 | 2014-07-15 | Seiko Epson Corporation | Memory device and system including a memory device electronically connectable to a host circuit |
JP2010250511A (ja) | 2009-04-14 | 2010-11-04 | Kyushu Univ | キャッシュメモリ装置 |
US8122166B2 (en) * | 2009-04-20 | 2012-02-21 | International Business Machines Corporation | Management of redundant physical data paths in a computing system |
US8638602B1 (en) | 2010-09-10 | 2014-01-28 | Western Digital Technologies, Inc. | Background selection of voltage reference values for performing memory read operations |
KR101736384B1 (ko) * | 2010-09-29 | 2017-05-16 | 삼성전자주식회사 | 비휘발성 메모리 시스템 |
US8619555B2 (en) * | 2010-11-17 | 2013-12-31 | Netapp, Inc. | Method and system for path selection in a network |
CN102541983B (zh) * | 2011-10-25 | 2013-07-31 | 无锡城市云计算中心有限公司 | 一种分布式文件系统中多客户端缓存同步的方法 |
US10359949B2 (en) | 2011-10-31 | 2019-07-23 | Apple Inc. | Systems and methods for obtaining and using nonvolatile memory health information |
KR20130060791A (ko) * | 2011-11-30 | 2013-06-10 | 삼성전자주식회사 | 마모도 제어 로직을 포함하는 메모리 시스템, 데이터 저장 장치, 메모리 카드, 그리고 솔리드 스테이트 드라이브 |
JP5722754B2 (ja) * | 2011-12-06 | 2015-05-27 | 株式会社日立製作所 | ソフトエラー耐性調整機能を備えた電子システム装置及びソフトエラー耐性調整方法 |
JP5303753B2 (ja) * | 2012-02-10 | 2013-10-02 | 日本電信電話株式会社 | 波長選択スイッチシステム及び波長選択スイッチの制御方法 |
KR101888009B1 (ko) * | 2012-02-28 | 2018-09-07 | 삼성전자주식회사 | 저장 장치 |
KR101351550B1 (ko) | 2012-04-18 | 2014-01-22 | 연세대학교 산학협력단 | 비휘발성 메인 메모리 기반을 위한 이중 버퍼 구조 및 데이터 운영 방식 |
US8848471B2 (en) | 2012-08-08 | 2014-09-30 | International Business Machines Corporation | Method for optimizing refresh rate for DRAM |
WO2014102886A1 (en) * | 2012-12-28 | 2014-07-03 | Hitachi, Ltd. | Information processing apparatus and cache control method |
US20150363261A1 (en) | 2013-01-31 | 2015-12-17 | Hewlett-Packard Development Company, L.P. | Ram refresh rate |
CN105518800B (zh) * | 2013-06-14 | 2018-11-30 | 三星电子株式会社 | 半导体存储器装置及其ecc方法 |
US9361221B1 (en) | 2013-08-26 | 2016-06-07 | Sandisk Technologies Inc. | Write amplification reduction through reliable writes during garbage collection |
US9323607B2 (en) | 2014-04-29 | 2016-04-26 | Seagate Technology Llc | Data recovery once ECC fails to correct the data |
KR102210327B1 (ko) | 2014-08-21 | 2021-02-01 | 삼성전자주식회사 | 에러 알림 기능이 있는 메모리 장치 |
KR102295223B1 (ko) | 2015-01-13 | 2021-09-01 | 삼성전자주식회사 | 속도 모드 관리자를 포함하는 저장 장치 및 사용자 장치 |
KR102372888B1 (ko) | 2015-06-15 | 2022-03-10 | 삼성전자주식회사 | 저장 장치의 온도별 데이터 관리 방법 |
JP2017157257A (ja) | 2016-03-01 | 2017-09-07 | 東芝メモリ株式会社 | 半導体記憶装置及びメモリシステム |
US10373656B2 (en) * | 2016-09-26 | 2019-08-06 | Toshiba Memory Corporation | Memory system that carries out temperature-based access to a memory chip |
US9747158B1 (en) | 2017-01-13 | 2017-08-29 | Pure Storage, Inc. | Intelligent refresh of 3D NAND |
US10248330B2 (en) * | 2017-05-30 | 2019-04-02 | Seagate Technology Llc | Data storage device with buffer tenure management |
US10176886B1 (en) * | 2017-07-07 | 2019-01-08 | Seagate Technology Llc | Multi-level data block error detection code |
-
2018
- 2018-01-22 KR KR1020180007894A patent/KR102507302B1/ko active IP Right Grant
- 2018-08-28 DE DE102018120964.9A patent/DE102018120964A1/de active Pending
- 2018-08-30 US US16/117,295 patent/US11086561B2/en active Active
- 2018-10-12 CN CN201811190300.5A patent/CN110069357B/zh active Active
- 2018-12-12 JP JP2018232649A patent/JP7308025B2/ja active Active
-
2021
- 2021-07-07 US US17/369,606 patent/US12061817B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090161466A1 (en) * | 2007-12-20 | 2009-06-25 | Spansion Llc | Extending flash memory data retension via rewrite refresh |
US20130246847A1 (en) * | 2012-03-19 | 2013-09-19 | Samsung Electronics Co., Ltd. | Method of detecting error in write data and data processing system to perform the method |
US20150242144A1 (en) * | 2014-02-26 | 2015-08-27 | Fujitsu Limited | Storage device, controller, and non-transitory computer-readable recording medium having stored therein control program |
US20160034327A1 (en) * | 2014-08-01 | 2016-02-04 | Samsung Electronics Co., Ltd. | Method of operating non-volatile memory device |
Also Published As
Publication number | Publication date |
---|---|
CN110069357B (zh) | 2024-08-27 |
DE102018120964A1 (de) | 2019-07-25 |
US12061817B2 (en) | 2024-08-13 |
US20210334037A1 (en) | 2021-10-28 |
US20190227738A1 (en) | 2019-07-25 |
KR20190089429A (ko) | 2019-07-31 |
US11086561B2 (en) | 2021-08-10 |
JP7308025B2 (ja) | 2023-07-13 |
CN110069357A (zh) | 2019-07-30 |
JP2019128948A (ja) | 2019-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20240096392A1 (en) | Data storage device and operating method thereof | |
US11216362B2 (en) | Data storage device and operating method thereof | |
KR102347184B1 (ko) | 스토리지 장치 및 상기 스토리지 장치의 동작 방법 | |
US10943639B2 (en) | Data storage device and operating method thereof | |
JP7308025B2 (ja) | 集積回路装置及びストレージ装置 | |
KR102362229B1 (ko) | 메모리 컨트롤러, 메모리 시스템 및 메모리 컨트롤러를 포함하는 어플리케이션 프로세서 | |
US20200218653A1 (en) | Controller, data storage device, and operating method thereof | |
US11520694B2 (en) | Data storage device and operating method thereof | |
US11061614B2 (en) | Electronic apparatus having data retention protection and operating method thereof | |
KR20200121645A (ko) | 컨트롤러 및 그것의 동작 방법과 메모리 시스템 | |
KR20200048978A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
CN114840451A (zh) | 存储装置、存储系统和操作存储装置的方法 | |
KR20200114052A (ko) | 컨트롤러, 메모리 시스템 및 그것의 동작 방법 | |
KR20200114086A (ko) | 컨트롤러, 메모리 시스템 및 그것의 동작 방법 | |
CN111625187B (zh) | 一种存储器及其控制方法与存储系统 | |
US11144380B2 (en) | Memory controller and storage device including the same | |
CN112540869A (zh) | 存储器控制器、存储装置和存储装置的操作方法 | |
KR20140128823A (ko) | 멀티-트랜잭션의 아토믹 라이트 방법 | |
KR20210034456A (ko) | 메모리 컨트롤러, 스토리지 장치 및 상기 스토리지 장치의 동작 방법 | |
KR20200034312A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US12045483B2 (en) | Storage device including indirect access module, method of operating the same, and method of operating storage system including the same | |
US11450394B2 (en) | Controller and operating method thereof | |
KR20240124572A (ko) | 연산 스토리지 시스템, 연산 스토리지 시스템의 동작 방법 및 전자 장치 | |
KR20200042780A (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 |