KR20220092021A - 스토리지 컨트롤러 및 이를 포함하는 스토리지 시스템 - Google Patents

스토리지 컨트롤러 및 이를 포함하는 스토리지 시스템 Download PDF

Info

Publication number
KR20220092021A
KR20220092021A KR1020200183361A KR20200183361A KR20220092021A KR 20220092021 A KR20220092021 A KR 20220092021A KR 1020200183361 A KR1020200183361 A KR 1020200183361A KR 20200183361 A KR20200183361 A KR 20200183361A KR 20220092021 A KR20220092021 A KR 20220092021A
Authority
KR
South Korea
Prior art keywords
memory device
data
level
read
gear level
Prior art date
Application number
KR1020200183361A
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 삼성전자주식회사
Priority to KR1020200183361A priority Critical patent/KR20220092021A/ko
Priority to DE102021121974.4A priority patent/DE102021121974A1/de
Priority to US17/466,392 priority patent/US11726871B2/en
Priority to CN202111606936.5A priority patent/CN114675781A/zh
Publication of KR20220092021A publication Critical patent/KR20220092021A/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/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/1072Adding 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 multilevel memories
    • 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
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

스토리지 시스템이 제공된다. 스토리지 시스템은 단일 레벨 셀을 포함하는 제1 영역 및 제1 영역과 다른 제2 영역을 포함하는 메모리 장치 및 메모리 장치에 액세스하고 메모리 장치를 제어하는 스토리지 컨트롤러를 포함하고, 스토리지 컨트롤러는 제1 기어 레벨로 제1 영역에서 데이터를 리드하고, 복수의 기어 레벨 중 상기 데이터의 에러 및 상기 메모리 장치의 상태에 상응하는 제2 기어 레벨로 변경할 수 있다.

Description

스토리지 컨트롤러 및 이를 포함하는 스토리지 시스템{Storage Controller and Storage system including the same}
본 발명은 스토리지 장치, 및 스토리지 시스템에 관한 것이다.
플래시 메모리는 메모리 셀들의 문턱 전압을 변화시킴으로써 데이터를 저장하고, 미리 정해진 리드 레벨을 이용하여 데이터를 리드한다. 최근 SSD(Solid State Drive) 및 메모리 카드 등의 플래시 메모리를 포함하는 스토리지 장치가 널리 사용되고 있다. 이는 플래시 메모리가 저전력 및 고집적 등의 특성을 갖는 비휘발성 소자이기 때문이다.
플래시 메모리는 호스트로부터 전송받은 라이트 데이터를 저장할 때, 라이트 데이터의 특성에 따라 단일 레벨 셀 영역의 메모리 블록에 저장하거나 멀티 레벨 셀 영역의 메모리 블록에 저장한다.
본 발명이 해결하고자 하는 기술적 과제는 데이터 신뢰성을 보장하면서도 속도가 향상된 스토리지 장치 및 그 동작방법을 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는 메모리 장치의 특성에 따라 데이터를 리드하는 속도를 동적으로 조절하는 스토리지 장치 및 그 동작방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 스토리지 시스템은 단일 레벨 셀을 포함하는 제1 영역 및 제1 영역과 다른 제2 영역을 포함하는 메모리 장치 및 메모리 장치에 액세스하고 메모리 장치를 제어하는 스토리지 컨트롤러를 포함하고, 스토리지 컨트롤러는 제1 기어 레벨로 제1 영역에서 데이터를 리드하고, 복수의 기어 레벨 중 상기 데이터의 에러 및 상기 메모리 장치의 상태에 상응하는 제2 기어 레벨로 변경할 수 있다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법은 메모리 장치로부터 제1 기어 레벨로 데이터를 리드하는 단계 및 메모리 장치의 리드 속도를 리드된 데이터의 에러 및 메모리 장치의 상태에 기초하여 동적으로 변경한 제2 기어 레벨로 설정하는 단계를 포함할 수 있다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 스토리지 시스템은, 데이터를 저장하는 메모리 장치 및 스토리지 컨트롤러를 포함하고, 스토리지 컨트롤러는 메모리 장치에서 리드되는 데이터의 에러를 검출하고 정정하는 ECC 엔진 및 복수의 기어 레벨 중 ECC 엔진으로부터 수신되는 에러의 정도 및 메모리 장치의 상태에 기초하여 동적으로 선택되는 기어 레벨로 메모리 장치에서의 리드 속도를 설정하는 리드 컨트롤러를 포함할 수 있다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 몇몇 실시예에 따른 스토리지 시스템을 간략히 나타낸 블록도이다.
도 2는 도 1의 스토리지 컨트롤러를 구체적으로 나타낸 블록도이다.
도 3은 도 1의 메모리 장치를 구체적으로 나타낸 블록도이다.
도 5 및 도 6은 몇몇 실시예에 따른 스토리지 시스템의 동작방법을 설명하기 위한 개념도이다.
도 7은 몇몇 실시예에 따른 스토리지 시스템의 동작 방법을 설명한 것이다.
도 8은 본 발명의 하나의 실시 예에 따른 메모리 시스템을 나타내는 블록도이다.
도 9는 도 1의 메모리 장치를 나타내는 예시적인 블록도이다.
도 10은 도 1의 메모리 장치에 적용될 수 있는 3D V-NAND 구조에 대해 설명하기 위한 도면이다.
도 11는 도 1의 스토리지(storage) 장치가 적용된 시스템을 도시한 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 기술적 사상에 따른 실시예들에 대해 설명한다.
도 1은 몇몇 실시예에 따른 스토리지 시스템을 간략히 나타낸 블록도이고, 도 2는 도 1의 스토리지 컨트롤러를 구체적으로 나타낸 블록도이며, 도 3은 도 1의 메모리 장치를 구체적으로 나타낸 블록도이다.
도 1을 참고하면, 호스트-스토리지 시스템(10)는 호스트(100) 및 스토리지 장치(200)를 포함할 수 있다. 또한, 스토리지 장치(200)는 스토리지 컨트롤러(210) 및 메모리 장치 (NVM, 220)를 포함할 수 있다. 또한, 본 발명의 예시적인 실시예에 따라, 호스트(100)는 호스트 컨트롤러(110) 및 호스트 메모리(120)를 포함할 수 있다. 호스트 메모리(120)는 스토리지 장치(200)로 전송될 데이터, 혹은 스토리지 장치(200)로부터 전송된 데이터를 임시로 저장하기 위한 버퍼 메모리로서 기능할 수 있다.
스토리지 장치(200)는 호스트(100)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일 예로서, 스토리지 장치(200)는 SSD(Solid State Drive), 임베디드(embedded) 메모리 및 착탈 가능한 외장(external) 메모리 중 적어도 하나를 포함할 수 있다. 스토리지 장치(200)가 SSD인 경우, 스토리지 장치(200)는 NVMe(non-volatile memory express) 표준을 따르는 장치일 수 있다. 스토리지 장치(200)가 임베디드 메모리 혹은 외장(external) 메모리인 경우, 스토리지 장치(200)는 UFS(universal flash storage) 혹은 eMMC(embedded multi-media card) 표준을 따르는 장치일 수 있다. 호스트(100)와 스토리지 장치(200)는 각각 채용된 표준 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다.
스토리지 장치(200)의 메모리 장치(220)가 플래시 메모리를 포함할 때, 상기 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 다른 예로서, 스토리지 장치(200)는 다른 다양한 종류의 비휘발성 메모리들을 포함할 수도 있다. 예를 들어, 스토리지 장치(200)는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torgue MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 및 다른 다양한 종류의 메모리가 적용될 수 있다.
일 실시예에 따라, 호스트 컨트롤러(110)와 호스트 메모리(120)는 별도의 반도체 칩으로 구현될 수 있다. 또는, 일부 실시예들에서, 호스트 컨트롤러(110)와 호스트 메모리(120)는 동일한 반도체 칩에 집적될 수 있다. 일 예로서, 호스트 컨트롤러(110)는 어플리케이션 프로세서(Application Processor)에 구비되는 다수의 모듈들 중 어느 하나일 수 있으며, 상기 어플리케이션 프로세서는 시스템 온 칩(System on Chip, SoC)으로 구현될 수 있다. 또한, 호스트 메모리(120)는 상기 어플리케이션 프로세서 내에 구비되는 임베디드 메모리이거나, 또는 상기 어플리케이션 프로세서의 외부에 배치되는 비휘발성 메모리 또는 메모리 모듈일 수 있다.
호스트 컨트롤러(110)는 호스트 메모리(120)의 데이터(예컨대, 기록 데이터)를 메모리 장치(220)에 저장하거나, 메모리 장치(220)의 데이터(예컨대, 리드 데이터)를 호스트 메모리(120)에 저장하는 동작을 관리할 수 있다.
스토리지 컨트롤러(210)는 호스트 인터페이스(211), 메모리 인터페이스(212) 및 제어유닛(Control, 213)를 포함할 수 있다. 또한, 스토리지 컨트롤러(210)는 플래시 변환 레이어(Flash Translation Layer(FTL), 214), 패킷 매니저(215), 버퍼 메모리(216), ECC(error correction code, 217) 엔진 및 AES(advanced encryption standard, 218) 엔진 및 리드 컨트롤러(300)를 더 포함할 수 있다. 스토리지 컨트롤러(210)는 플래시 변환 레이어(FTL, 214)가 로딩되는 워킹 메모리(미도시)를 더 포함할 수 있으며, 제어유닛(211)가 플래시 변환 레이어를 실행하는 것에 의해 메모리 장치에 대한 데이터 기록 및 리드(Read) 동작이 제어될 수 있다.
호스트 인터페이스(211)는 호스트(100)와 패킷(packet)을 송수신할 수 있다. 호스트(100)로부터 호스트 인터페이스(211)로 전송되는 패킷은 커맨드(command) 혹은 메모리 장치(220)에 기록될 데이터 등을 포함할 수 있으며, 호스트 인터페이스(211)로부터 호스트(100)로 전송되는 패킷은 커맨드에 대한 응답(response) 혹은 메모리 장치(220)로부터 리드된 데이터 등을 포함할 수 있다. 메모리 인터페이스(212)는 메모리 장치(220)에 기록될 데이터를 메모리 장치(220)로 송신하거나, 메모리 장치(220)로부터 리드된 데이터를 수신할 수 있다. 이러한 메모리 인터페이스(212)는 토글(Toggle) 혹은 온파이(ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
플래시 변환 계층(214)은 어드레스 매핑(address mapping), 웨어-레벨링(wear-leveling), 가비지 콜렉션(garbage collection)과 같은 여러 기능을 수행할 수 있다. 어드레스 매핑 동작은 호스트로부터 수신한 논리 어드레스(logical address)를, 메모리 장치(220) 내에 데이터를 실제로 저장하는 데 사용되는 물리 어드레스(physical address)로 바꾸는 동작이다. 웨어-레벨링은 메모리 장치(220) 내의 블록(block)들이 균일하게 사용되도록 하여 특정 블록의 과도한 열화를 방지하기 위한 기술로, 예시적으로 물리 블록(physical block)들의 소거 카운트들을 밸런싱하는 펌웨어 기술을 통해 구현될 수 있다. 가비지 콜렉션은, 블록의 유효 데이터를 새 블록에 복사한 후 기존 블록을 소거(erase)하는 방식을 통해 메모리 장치(220) 내에서 사용 가능한 용량을 확보하기 위한 기술이다.
패킷 매니저(215)는 호스트(100)와 협의된 인터페이스의 프로토콜에 따른 패킷(Packet)을 생성하거나, 호스트(100)로부터 수신된 패킷(Packet)으로부터 각종 정보를 파싱할 수 있다. 또한, 버퍼 메모리(216)는 메모리 장치(220)에 기록될 데이터 혹은 메모리 장치(220)로부터 리드될 데이터를 임시로 저장할 수 있다. 버퍼 메모리(216)는 스토리지 컨트롤러(210) 내에 구비되는 구성일 수 있으나, 스토리지 컨트롤러(210)의 외부에 배치되어도 무방하다.
ECC 엔진(217)은 메모리 장치(220)로부터 리드되는 리드 데이터에 대한 에러 검출 및 정정 기능을 수행할 수 있다. 보다 구체적으로, ECC 엔진(217)은 메모리 장치(220)에 기입될 기입 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 기입 데이터와 함께 메모리 장치(220) 내에 저장될 수 있다. 메모리 장치(220)로부터의 데이터 리드 시, ECC 엔진(217)은 리드 데이터와 함께 메모리 장치(220)로부터 리드되는 패리티 비트들을 이용하여 리드 데이터의 에러를 정정하고, 에러가 정정된 리드 데이터를 출력할 수 있다. 리드 컨트롤러(300)는 ECC 엔진(217)으로부터 에러 검출 여부 및 에러의 정도에 대한 정보를 얻을 수 있다.
AES 엔진(218)은, 스토리지 컨트롤러(210)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)를 이용하여 수행할 수 있다.
리드 컨트롤러(300)는 메모리 장치(220)로부터 데이터를 리드할 때, 메모리 장치(220)의 동작 특성에 따라 리드 속도인 기어 레벨(Gear Level)을 설정할 수 있다.
몇몇 실시예에 따라 메모리 장치(220)의 동작 특성은 데이터 리텐션(Data retention), 메모리 장치(220)의 온도(temperature), 내구성 주기(endurance cycle), 데이터 리드 강도(data read intensive), 칩 자체 특성(chip unique character) 중 적어도 하나를 포함할 수 있다.
리드 컨트롤러(300)는 현재 설정된 제1 기어 레벨(Gear Level)로 메모리 장치(220)로부터 데이터를 리드하고, 리드된 데이터에 대한 에러 및 메모리 장치의 상태를 확인하고, 확인 결과를 복수의 기설정된 조건과 비교하여 제1 기어 레벨을 유지할 것인지 다른 제2 기어 레벨로 변경할 것인지 판단할 수 있다. 일 실시예에 따라, 리드 컨트롤러(300)는 확인된 에러 및 메모리 장치의 상태가 제1 기어 레벨에 대한 기설정된 조건을 만족하면 제1 기어 레벨을 유지하고, 만족하지 않으면 확인된 에러 및 메모리 장치의 상태에 상응하는 조건의 기어 레벨을 선택하여, 제2 기어 레벨로 변경할 수 있다. 몇몇 실시예에 따라, 복수의 기설정된 조건 각각은 리드된 데이터의 에러 정도, 메모리 장치(220)의 상태에 대해 구체적으로 설정된 조건일 수 있다. 예를 들어 기설정된 조건 각각은 에러 임계치, 또는 정정가능한 에러인지 정정불가능한 에러인지, 또는 데이터 리텐션, 메모리 장치의 온도, 내구성 주기, 데이터 리드 강도, 칩 자체 특성 등 적어도 하나에 대해 단계별로 다르게 설정된 값을 포함할 수 있다.
몇몇 실시예에 따라 리드 컨트롤러(300)는 기어 레벨을 판단하기 위해 복수의 기어 레벨에 상응하는 복수의 기설정된 조건을 포함하는 매핑 테이블을 포함할 수 있다.
온도 센서(219)는 메모리 장치(220)의 동작 온도를 센싱할 수 있다. 즉, 메모리 셀의 동작 온도 변화를 센싱할 수 있다. 몇몇 실시예에서 스토리지 컨트롤러(210)는 온도 센서를 구비하지 않을수도 있고, 메모리 장치(220)의 일부로서 구현될 수도 있다. 리드 컨트롤러(300)는 온도 센서(219)로부터 메모리 장치(220)의 온도 정보를 얻을 수 있다.
도 3을 참고하면, 메모리 장치(220)는 셀 레벨(Cell Level)에 따라 구분되는 복수의 영역(401, 402)를 포함할 수 있다. 각 영역은 복수의 메모리 블록들을 포함할 수 있고, 각 영역은 서로 다른 방식으로 관리될 수 있다. 몇몇 실시예에 따라 제1 영역(401)은 싱글 레벨 셀(Single level cell; SLC) 방식으로 관리되고 제2 영역(402)은 멀티 레벨 셀(Multi Level Cell; MLC)방식으로 관리될 수 있다. 또는, 제2 영역(402)은 트리플 레벨 셀(Triple Level Cell ; TLC) 또는 쿼드 레벨 셀(Quad Level Cell; QLC) 방식으로 관리될 수도 있다.
예를 들면, 싱글 레벨 셀(SLC), 멀티 레벨 셀(MLC), 트리플 레벨 셀(TLC)은 메모리 셀 하나에 담을 수 있는 데이터의 용량을 기준으로 구분될 수 있다. 싱글 레벨 셀(SLC)은 셀 하나당 1 비트(bit)만 담을 수 있고, 멀티 레벨 셀(MLC)은 셀 하나당 2 비트를, 트리플 레벨 셀(TLC)은 셀 하나당 3비트를 담을 수 있다. 도시하지는 않았으나 쿼드 레벨 셀(QLC)는 셀 하나당 4비트를 담을 수 있다. 싱글 레벨 셀(SLC)에서 쿼드 레벨 셀(QLC)로 갈수록 담을 수 있는 데이터의 용량은 커지지만, 데이터 액세스 속도는 점점 느려지고, 수명도 짧아진다.
따라서 라이트 데이터 중 일부(메타 데이터)는 제1 영역, 즉, 싱글 레벨 셀(SLC) 영역에 프로그램될 수 있고, 메타 데이터를 제외한 나머지 라이트 데이터들은 제2 영역에 프로그램될 수 있다.
예를 들어, 제1 영역(401)은 제2 영역(402)에 비해 라이트 및 리드 동작이 수행되는 속도가 빠른 편이다. 호스트의 패턴에 따라 자주 변경되는 데이터는 제1 영역(401)에 저장되고 자주 변경되지 않는 데이터는 제2 영역(402)에 저장될 수 있다.
메모리 장치(220)는 사용에 따라 수명기간이 각기 달라짐에도 불구하고 데이터 신뢰성을 위해 제1 영역(401) 또는 제2 영역(402)을 일정한 속도, 예를 들면 고정된 하나의 기어 레벨로만 데이터를 리드하기도 한다. 고정된 기어 레벨은 메모리 장치 신뢰성 측면에서 최악의 조건을 고려하여 신뢰성과 메모리 장치의 수명조건을 만족하는 안정적인 기준으로 설정되기도 한다.
그러나, 메모리 장치(220)를 사용하는 동안 사용자는 대부분 데이터 리드가 실패하는 경우 및 에러 정정이 불가능한 상황을 거의 경험하지 못할 뿐더러, 경험한다 하더라도 메모리 장치(200)의 수명 주기 중 종료 이전 시점에나 경험할 뿐이다. 따라서, 스토리지 컨트롤러(210)는 데이터 신뢰 조건을 완화하여 메모리 장치(220)의 현재 동작 특성에 따라 기어 레벨을 동적으로 변경하여 데이터 리드를 수행할 경우, 메모리 장치(220)의 신뢰성을 보장하는 동시에 보다 빠른 속도로 데이터 리드를 수행함으로써 스토리지 시스템(200)의 성능이 향상될 수 있다. 보다 구체적인 설명은 도 6 및 도 7에서 설명한다.
도 4는 몇몇 실시예에 따라 기어 레벨 설정을 위한 복수의 조건에 대한 매핑 테이블을 나타낸 것이다.
도 4를 참고하면, 스토리지 컨트롤러는 복수의 기어 레벨 각각에 대해 기설정된 조건을 만족하면 해당 기어 레벨로 설정하기 위한 정보를 포함할 수 있다. 예를 들어 매핑 테이블로 저장할 수도 있다.
몇몇 실시예에 따른 매핑 테이블은 복수의 조건에 상응하는 복수의 기어 레벨을 매핑한 것이다. 매핑 테이블은 몇몇 실시예에 따라 도 1 및 도 2에서 설명한 리드 컨트롤러(300)에 저장된 것일 수도 있고, 몇몇 실시예에 따라 스토리지 컨트롤러(210) 내 비휘발성 메모리(미도시)에 저장되어 리드 컨트롤러(300)에 의해 액세스될 수도 있다.
몇몇 실시예에 따라 기어 레벨은 메모리 장치(220)의 최악의 조건을 고려한 최저 속도부터, 최상의 조건을 고려한 최고 속도 사이에서 복수 개의 기어 레벨을 포함할 수 있다. 즉, 매핑 테이블은 복수의 기어 레벨로서, 최대 기어 레벨, 최소 기어 레벨 및 상기 메모리 장치의 동작 특성을 기초로 미리 설정된 적어도 하나의 중간 기어 레벨을 포함할 수 있다.
예를 들어 Level #1은 메모리 장치가 동작할 수 있는 최악의 조건을 고려하여 신뢰성과 안정성이 모두 보장된 최저 속도의 기어 레벨일 수 있다. 예를 들어 Level #5는 메모리 장치가 동작할 수 있는 최상의 조건을 고려하여 데이터 신뢰성과 무결성이 모두 보장된 최고 속도의 기어 레벨일 수 있다.
Level #2, Level #3, Level #4는 Level #1에서 Level #5로 점점 증가하는 속도의 중간 기어 레벨일 수 있다. 일 실시예에 따라 Level #1 내지 Level #5는 각각 서로 일정(Linear)하게 증가하는 기어 레벨을 가질 수 있다. 즉, Level #1과 Level #2의 속도 차이는 Level #2와 Level #3의 속도 차이와 동일할 수 있다. 다른 실시예에 따라 Level #1 내지 Level #5는 각각 서로 일정하지 않게(Non-Linear) 증가하는 기어 레벨을 가질 수 있다. 즉, Level #1과 Level #2의 속도 차이는 Level #2와 Level #3의 속도 차이와 동일하지 않을 수 있다.
기어 레벨은 데이터 리드 타임(tRC)을 달라지게 할 수 있다. 데이터 리드 타임은 메모리 셀 어레이가 활성화 되는 시점부터 데이터가 셀에서 리드되어 페이지 버퍼로 도달하는데까지 걸리는 시간을 의미할 수 있다. 즉, 메모리 인터페이스에서 리드 커맨드(Read CMD) 및 어드레서(ADDR)가 수신된 후 메모리 셀 어레이에서 데이터가 리드되어 페이지 버퍼(440)로 도달되는 시간을 의미할 수 있다.
예를 들어 Level #2의 데이터 리드시간은 Level #1의 데이터 리드시간보다 적게 걸릴 수 있다(tFast_Level2 < tFast_Level1). 예를 들어, Level #3의 데이터 리드시간은 Level #2의 데이터 리드시간보다 적게 걸릴 수 있다(tFast_Level3 < tFast_Level2) .
각각의 기어 레벨은 메모리 장치(220)의 동작 특성에 기초한 기설정된 조건(Predicted Condition)에 따라 가변할 수 있다. 기설정되는 조건들은 몇몇 실시예에 따르면, 사용환경에서 발생되는 데이터 리텐션(Data retention), 메모리 장치의 온도(temperature), 내구성 주기(endurance cycle), 데이터 리드 강도(data read intensive), 칩 자체 특성(chip unique character) 중 적어도 하나가 가지는 기설정된 제약 조건일 수 있다. 상기 제약 조건은 일 실시예에 따라 사용자가 임의로 설정한 예측 조건일 수도 있고, 다른 실시예에 따라 메모리 장치(220)의 동작 조건, 사용 패턴, 데이터 신뢰성을 기초로 학습하여 설정된 학습조건일 수도 있다. 즉, 매핑 테이블은 상기 메모리 장치의 동작 조건, 사용 패턴, 상기 리드된 데이터의 신뢰성을 기초로 학습하여 설정된 테이블일 수 있다.
몇몇 실시예에 따라 기설정된 조건은 각 기어레벨이 다른 기어레벨로 변동되는 트리거 조건일 수 있다. 또는 몇몇 실시예에 따라 기설정된 조건은 최소 값 및 각 기어레벨이 유지되는 유지 조건일 수도 있다.
도시된 예에서 기어레벨 Level #5은 기설정된 조건은 Non_Error, 즉 에러가 발생하지 않는 유지 조건 하에서 유효하게 동작한다. 다시 말하면 리드된 데이터의 에러(Read Error)가 수정가능한 에러(Correctable Error)보다 작을 때, 즉 예러 발생율이 거의 0에 가까울 때 메모리 장치(210)는 최고 속도인 Level #5로 계속하여 동작 할 수 있다. 이 경우 실시예에 따라 수정가능한 에러의 정도는 다양하게 설정가능하다. 일 예를 들어 수정가능한 에러의 개수가 1비트라고 가정하면, 메모리 장치(220)는 리드된 데이터의 에러 개수가 0인 경우에만 Level #5로 동작할 수 있다. 다른 예를 들어 수정가능한 에러의 개수가 2비트라고 가정하면, 메모리 장치(220)는 리드된 데이터의 에러 개수가 0이거나 1인 경우에만 Level #5로 동작할 수 있다. 즉, 에러 임계치의 설정에 따라 기어 레벨 변동을 자주 할 것인지 여부가 달라질 수 있다.
또한 기설정된 조건(Predicted Condition #1)은, 일 실시예에 따라 Level #4에서 Level#3으로 기어레벨을 변경하는 조건일 수도 있고, 다른 실시예에 따라 Level #4의 기어레벨을 유지하는데 허용되는 범위, 즉 유지조건일 수도 있다. 마찬가지로 기설정된 조건 Predicted Condition #2 내지 Predicted Condition #3도 다양한 실시예에 따라 변경 조건 또는 유지 조건으로 설정될 수 있다.
다만 기설정된 조건(Predicted Condition #4)은, 메모리 장치가 동작하는 최악의 조건, 예를 들어 에러가 데이터 리텐션(Data retention), 메모리 장치의 온도(temperature)가 최대한의 임계온도 이상이거나, 내구성 주기(endurance cycle)상 거의 마지막에 이르는 등 메모리 셀의 특성이 나쁜 복수의 상태를 정의하고 어느 하나의 상태라도 해당되면 Level #1의 기어레벨이 되도록 설정할 수 있다.
도 5 및 도 6은 몇몇 실시예에 따른 스토리지 시스템의 동작방법을 설명하기 위한 개념도이다. 도 4를 함께 참조하여 설명한다.
도 5 참고하면, 몇몇 실시예에 따라 리드 컨트롤러(300)는 메모리 장치(210)의 라이프 사이클에서 초기 기어 레벨을 Level #5로 설정하여 데이터를 리드할 수 있다.
몇몇 실시예에 따라 T2 시점에서, Level #5로 데이터를 리드하였는데리드된 데이터의 에러 정도에 따라, 리드 컨트롤러(300)는 기어 레벨을 아래 단계인 Level #4로 설정하여 데이터를 다시 리드해볼 수 있다. 예를 들어 도 4에서 상술한 바와 같이 리드 컨트롤러(300)는 데이터의 에러(Read Error)가 수정가능한 에러(Correctable Error)보다 작으면, 최고 속도인 Level #5에서 한 단계 아래의 속도 Level #4로 기어 레벨을 변경할 수 있다.
메모리 장치에서 Level #4의 기어 레벨로 데이터 리드가 성공하면, Level #4를 유지하고, 실패하면(T3) 다시 아래 단계인 Level #3으로 설정할 수 있다. 이때 데이터 리드 실패 여부는 도 4에서 설명한 기설정된 조건에 기초할 수 있다.
또는 몇몇 실시예에 따라 T2 시점에서, Level #5로 데이터를 리드하였는데 리드된 데이터의 에러가 기설정된 에러율을 초과하면, 리드 컨트롤러(300)는 도 4의 매핑테이블에서 메모리 장치(220)의 현재 동작 특성에 상응하는 기설정된 조건(Predicted Condition)을 선택하고, 선택된 조건에 매핑된 기어 레벨로 설정할 수도 있다. 예를 들어 Level #5에서 Level #4로 변경되는 것이 아니라, 복수의 기설정된 조건 중 현재 동작 특성에 상응하는 어느 하나의 조건에 해당하는 기어 레벨, 예를 들어 Level #5에서 Level #3으로 변경될 수 있다.
이러한 기어 레벨 변경 동작들은 설정된 현재 기어 레벨이 메모리 장치(220)의 최소 기어 레벨인 Level #1이 될 때까지 수행될 수 있다.
한편, 도 6을 참고하면, 몇몇 실시예에 따라 기어 레벨은 메모리 장치(220)의 현재 동작 특성에 따라 현재 설정된 기어 레벨보다 빠른 속도의 기어 레벨로 변경될 수도 있다.
예를 들면, T2 시점에서, 리드 컨트롤러(300)는 메모리 장치(220)의 현재 동작 상태에 따라 Level #5에서 Level #3으로 기어 레벨을 변경하였는데, T3시점에서 메모리 장치(220)의 동작 특성이 회복되는 경향(예를 들어 데이터 리드의 에러가 기설정된 임계치 미만이면서, 동작 온도도 낮은 상태가 일정시간 지속되거나 Level #3으로 동작해도 기설정된 소정의 시간동안 에러가 없이 데이터가 리드되는 상황 등)을 보일 수가 있다.
이 경우 동작 특성 회복 조건에 따라 T3 시점에서 Level #3에서 Level #4로 기어 레벨이 변경될 수도 있다. 동작 특성 회복 조건은 도 4와 같은 매핑 테이블에서 정의되는 조건으로서 몇몇 실시예에 따라 사용자가 설정한 임의의 조건일 수도 있고, 몇몇 실시예에 따라 학습된 데이터로 설정되는 조건일 수도 있다.
도 7은 몇몇 실시예에 따른 스토리지 시스템의 동작 방법을 설명한 것이다.
도 7을 참고하면, 리드 컨트롤러(300)는 먼저기어 레벨을 설정하고(S10), 설정된 기어 레벨로 데이터를 리드하라는 명령을 메모리 장치(220)에 전송할 수 있다(S20, S11). 메모리 장치(220)는 리드 명령에 따라 설정된 기어 레벨로 데이터를 리드하고(S21), 리드 컨트롤러(300)는 리드된 데이터의 에러 및 현재 메모리 장치의 상태를 확인한다(S12).
리드 컨트롤러는 복수의 기설정된 조건 중 확인된 에러의 정도 및 메모리 장치의 상태에 상응하는 조건을 확인하고, 메모리 장치로부터 데이터 리드 속도를 확인된 조건에 따른 기어 레벨로 선택한다(S13). 기설정되는 조건들은 몇몇 실시예에 따르면, 사용환경에서 발생되는 데이터 리텐션(Data retention), 메모리 장치의 온도(temperature), 내구성 주기(endurance cycle), 데이터 리드 강도(data read intensive), 칩 자체 특성(chip unique character) 중 적어도 하나가 가지는 기설정된 제약 조건일 수 있다. 상기 제약 조건은 일 실시예에 따라 사용자가 임의로 설정한 예측 조건일 수도 있고, 다른 실시예에 따라 메모리 장치(220)의 동작 조건, 사용 패턴, 데이터 신뢰성을 기초로 학습하여 설정된 학습조건일 수도 있다.
몇몇 실시예에 따라, 메모리 장치(220)가 복수의 최악 상태 조건 중 어느 하나에 해당하지 않는다면(예를 들어 도 4의 Predicted Condition #4), 메모리 장치는 Level #5 내지 Level #2의 기어 레벨로 동작할 수 있다. 일 예로 리드 컨트롤러는 S11 단계에서, 메모리 장치의 라이프 사이클상 초기에는 메모리 장치의 상태에 기초하여 최고 속도인 Level #5로 설정할 수 있다.
다른 예로, 에러가 발생한 경우, 리드 컨트롤러는 에러의 정도 및 메모리 장치의 현재 상태(NVM state)를 확인하고(S12), 에러 및 메모리 장치의 상태에 상응하는 조건을 선택한다. 이 경우 선택되는 조건은 도 4의 매핑 테이블에 기초하여 Level #4 내지 Level #1 중 어느 하나의 기어 레벨에 상응할 수 있다. 이때 선택되는 기어 레벨은 도 5 또는 도 6에서 상술한 바와 같이 일 실시예에 따라 단계적으로 낮아진 기어 레벨일 수도 있고, 다른 실시예에 따라 적어도 두 단계 이상 낮아진 기어 레벨일 수도 있고, 또다른 실시예에 따라 현재 설정된 기어레벨 보다 높은 기어 레벨일 수도 있다.
리드 컨트롤러는 선택된 기어 레벨이 최소 속도, 즉 Level #1이면(S14), Level #1의 기어레벨로 리드 동작을 계속한다(S15). 그러나 선택된 기어 레벨이 복수의 기설정된 기어 레벨 중 최소 속도인 Level #1이 아니면(S14), 선택된 기어 레벨로 다시 설정하고(S10), S10 내지 S14, S20 내지 S21의 동작을 계속할 수 있다.
도 8은 본 발명의 하나의 실시 예에 따른 메모리 시스템을 나타내는 블록도이다. 도 8을 참조하면, 메모리 시스템(200)은 메모리 장치(220) 및 스토리지 컨트롤러(210)를 포함할 수 있다. 메모리 시스템(200)은 복수의 채널들(CH1~CHm)을 지원할 수 있고, 메모리 장치(220)와 스토리지 컨트롤러(210)는 복수의 채널들(CH1~CHm)을 통해 연결될 수 있다. 예를 들어, 메모리 시스템(200)은 SSD(Solid State Drive)와 같은 스토리지 장치로 구현될 수 있다.
메모리 장치(220)는 복수의 불휘발성 메모리 장치들(NVM11~NVMmn)을 포함할 수 있다. 불휘발성 메모리 장치들(NVM11~NVMmn) 각각은 대응하는 웨이(way)를 통해 복수의 채널들(CH1~CHm) 중 하나에 연결될 수 있다. 예를 들어, 불휘발성 메모리 장치들(NVM11~NVM1n)은 웨이들(W11~W1n)을 통해 제1 채널(CH1)에 연결되고, 불휘발성 메모리 장치들(NVM21~NVM2n)은 웨이들(W21~W2n)을 통해 제2 채널(CH2)에 연결될 수 있다. 예시적인 실시 예에서, 불휘발성 메모리 장치들(NVM11~NVMmn) 각각은 스토리지 컨트롤러(210)로부터의 개별적인 명령에 따라 동작할 수 있는 임의의 메모리 단위로 구현될 수 있다. 예를 들어, 불휘발성 메모리 장치들(NVM11~NVMmn) 각각은 칩(chip) 또는 다이(die)로 구현될 수 있으나, 본 발명이 이에 한정되는 것은 아니다.
스토리지 컨트롤러(210)는 복수의 채널들(CH1~CHm)을 통해 메모리 장치(220)와 신호들을 송수신할 수 있다. 예를 들어, 스토리지 컨트롤러(210)는 채널들(CH1~CHm)을 통해 메모리 장치(220)로 커맨드들(CMDa~CMDm), 어드레스들(ADDRa~ADDRm), 및 데이터(DATAa~DATAm)를 메모리 장치(220)로 전송하거나, 메모리 장치(220)로부터 데이터(DATAa~DATAm)를 수신할 수 있다.
스토리지 컨트롤러(210)는 각각의 채널을 통해 해당 채널에 연결된 불휘발성 메모리 장치들 중 하나를 선택하고, 선택된 불휘발성 메모리 장치와 신호들을 송수신할 수 있다. 또한 스토리지 컨트롤러(210)는 서로 다른 채널들을 통해 메모리 장치(220)와 신호들을 병렬적으로 송수신할 수 있다. 예를 들어, 스토리지 컨트롤러(210)는 제1 채널(CH1)을 통해 메모리 장치(220)로 커맨드(CMDa)를 전송하는 동안 제2 채널(CH2)을 통해 메모리 장치(220)로 커맨드(CMDb)를 전송할 수 있다. 예를 들어, 스토리지 컨트롤러(210)는 제1 채널(CH1)을 통해 메모리 장치(220)로부터 데이터(DATAa)를 수신하는 동안 제2 채널(CH2)을 통해 메모리 장치(220)로부터 데이터(DATAb)를 수신할 수 있다.
스토리지 컨트롤러(210)는 메모리 장치(220)의 전반적인 동작을 제어할 수 있다. 스토리지 컨트롤러(210)는 채널들(CH1~CHm)로 신호를 전송하여 채널들(CH1~CHm)에 연결된 불휘발성 메모리 장치들(NVM11~NVMmn) 각각을 제어할 수 있다.
몇몇 실시예에 따라 메모리 시스템(200)은 메모리 장치(220) 및 스토리지 컨트롤러(210)를 포함할 수 있다. 스토리지 컨트롤러(210)는 도 1의 스토리지 컨트롤러(200)에 대응할 수 있다.
메모리 장치(220)는 제1 내지 제8 핀들(P11~P18), 메모리 인터페이스 회로(221), 제어 로직 회로(222), 및 메모리 셀 어레이(400)를 포함할 수 있다.
메모리 인터페이스 회로(221)는 제1 핀(P11)을 통해 스토리지 컨트롤러(210)로부터 칩 인에이블 신호(nCE)를 수신할 수 있다. 메모리 인터페이스 회로(221)는 칩 인에이블 신호(nCE)에 따라 제2 내지 제8 핀들(P12~P18)을 통해 스토리지 컨트롤러(210)와 신호들을 송수신할 수 있다. 예를 들어, 칩 인에이블 신호(nCE)가 인에이블 상태(예를 들어, 로우 레벨)인 경우, 메모리 인터페이스 회로(221)는 제2 내지 제8 핀들(P12~P18)을 통해 스토리지 컨트롤러(210)와 신호들을 송수신할 수 있다.
메모리 인터페이스 회로(221)는 제2 내지 제4 핀들(P12~P14)을 통해 스토리지 컨트롤러(210)로부터 커맨드 래치 인에이블 신호(CLE), 어드레스 래치 인에이블 신호(ALE), 및 라이트 인에이블 신호(nWE)를 수신할 수 있다. 메모리 인터페이스 회로(221)는 제7 핀(P17)을 통해 스토리지 컨트롤러(210)로부터 데이터 신호(DQ)를 수신하거나, 스토리지 컨트롤러(210)로 데이터 신호(DQ)를 전송할 수 있다. 데이터 신호(DQ)를 통해 커맨드(CMD), 어드레스(ADDR), 및 데이터(DATA)가 전달될 수 있다. 예를 들어, 데이터 신호(DQ)는 복수의 데이터 신호 라인들을 통해 전달될 수 있다. 이 경우, 제7 핀(P17)은 복수의 데이터 신호들에 대응하는 복수개의 핀들을 포함할 수 있다.
메모리 인터페이스 회로(221)는 라이트 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 커맨드 래치 인에이블 신호(CLE)의 인에이블 구간(예를 들어, 하이 레벨 상태)에서 수신되는 데이터 신호(DQ)로부터 커맨드(CMD)를 획득할 수 있다. 메모리 인터페이스 회로(221)는 라이트 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 어드레스 래치 인에이블 신호(ALE)의 인에이블 구간(예를 들어, 하이 레벨 상태)에서 수신되는 데이터 신호(DQ)로부터 어드레스(ADDR)를 획득할 수 있다.
예시적인 실시 예에서, 라이트 인에이블 신호(nWE)는 고정된(static) 상태(예를 들어, 하이(high) 레벨 또는 로우(low) 레벨)를 유지하다가 하이 레벨과 로우 레벨 사이에서 토글할 수 있다. 예를 들어, 라이트 인에이블 신호(nWE)는 커맨드(CMD) 또는 어드레스(ADDR)가 전송되는 구간에서 토글할 수 있다. 이에 따라, 메모리 인터페이스 회로(221)는 라이트 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 커맨드(CMD) 또는 어드레스(ADDR)를 획득할 수 있다.
메모리 인터페이스 회로(221)는 제5 핀(P15)을 통해 스토리지 컨트롤러(210)로부터 리드 인에이블 신호(nRE)를 수신할 수 있다. 메모리 인터페이스 회로(221)는 제6 핀(P16)을 통해 스토리지 컨트롤러(210)로부터 데이터 스트로브 신호(DQS)를 수신하거나, 스토리지 컨트롤러(210)로 데이터 스트로브 신호(DQS)를 전송할 수 있다.
메모리 장치(220)의 데이터(DATA) 출력 동작에서, 메모리 인터페이스 회로(221)는 데이터(DATA)를 출력하기 전에 제5 핀(P15)을 통해 토글하는 리드 인에이블 신호(nRE)를 수신할 수 있다. 메모리 인터페이스 회로(221)는 리드 인에이블 신호(nRE)의 토글링에 기초하여 토글하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 예를 들어, 메모리 인터페이스 회로(221)는 리드 인에이블 신호(nRE)의 토글링 시작 시간을 기준으로 미리 정해진 딜레이(예를 들어, tDQSRE) 이후에 토글하기 시작하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 메모리 인터페이스 회로(221)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터(DATA)를 포함하는 데이터 신호(DQ)를 전송할 수 있다. 이에 따라, 데이터(DATA)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 정렬되어 스토리지 컨트롤러(210)로 전송될 수 있다.
메모리 장치(220)의 데이터(DATA) 입력 동작에서, 스토리지 컨트롤러(210)로부터 데이터(DATA)를 포함하는 데이터 신호(DQ)이 수신되는 경우, 메모리 인터페이스 회로(221)는 스토리지 컨트롤러(210)로부터 데이터(DATA)와 함께 토글하는 데이터 스트로브 신호(DQS)를 수신할 수 있다. 메모리 인터페이스 회로(221)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터 신호(DQ)로부터 데이터(DATA)를 획득할 수 있다. 예를 들어, 메모리 인터페이스 회로(221)는 데이터 스트로브 신호(DQS)의 상승 에지 및 하강 에지에서 데이터 신호(DQ)를 샘플링함으로써 데이터(DATA)를 획득할 수 있다.
메모리 인터페이스 회로(221)는 제8 핀(P18)을 통해 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(210)로 전송할 수 있다. 메모리 인터페이스 회로(221)는 레디/비지 출력 신호(nR/B)를 통해 메모리 장치(220)의 상태 정보를 스토리지 컨트롤러(210)로 전송할 수 있다. 메모리 장치(220)가 비지 상태인 경우(즉, 메모리 장치(220) 내부 동작들이 수행 중인 경우), 메모리 인터페이스 회로(221)는 비지 상태를 나타내는 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(210)로 전송할 수 있다. 메모리 장치(220)가 레디 상태인 경우(즉, 메모리 장치(220) 내부 동작들이 수행되지 않거나 완료된 경우), 메모리 인터페이스 회로(221)는 레디 상태를 나타내는 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(210)로 전송할 수 있다. 예를 들어, 메모리 장치(220)가 페이지 리드 명령에 응답하여 메모리 셀 어레이(400)로부터 데이터(DATA)를 리드하는 동안, 메모리 인터페이스 회로(221)는 비지 상태(예를 들어, 로우 레벨)를 나타내는 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(210)로 전송할 수 있다. 예를 들어, 메모리 장치(220)가 프로그램 명령에 응답하여 메모리 셀 어레이(400)로 데이터(DATA)를 프로그램하는 동안, 메모리 인터페이스 회로(221)는 비지 상태를 나타내는 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(210)로 전송할 수 있다.
제어 로직 회로(222)는 메모리 장치(220)의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(222)는 메모리 인터페이스 회로(221)로부터 획득된 커맨드/어드레스(CMD/ADDR)를 수신할 수 있다. 제어 로직 회로(222)는 수신된 커맨드/어드레스(CMD/ADDR)에 따라 메모리 장치(220)의 다른 구성 요소들을 제어하기 위한 제어 신호들을 생성할 수 있다. 예를 들어, 제어 로직 회로(222)는 메모리 셀 어레이(400)에 데이터(DATA)를 프로그램하거나, 또는 메모리 셀 어레이(400)로부터 데이터(DATA)를 리드하기 위한 각종 제어 신호들을 생성할 수 있다.
메모리 셀 어레이(400)는 제어 로직 회로(222)의 제어에 따라 메모리 인터페이스 회로(221)로부터 획득된 데이터(DATA)를 저장할 수 있다. 메모리 셀 어레이(400)는 제어 로직 회로(222)의 제어에 따라 저장된 데이터(DATA)를 메모리 인터페이스 회로(221)로 출력할 수 있다.
메모리 셀 어레이(400)는 복수의 메모리 셀들을 포함할 수 있다. 예를 들어, 복수의 메모리 셀들은 플래시 메모리 셀들일 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 메모리 셀들은 RRAM(Resistive Random Access Memory) 셀, FRAM(Ferroelectric Random Access Memory) 셀, PRAM(Phase Change Random Access Memory) 셀, TRAM(Thyristor Random Access Memory) 셀, MRAM(Magnetic Random Access Memory) 셀들일 수 있다. 이하에서는, 메모리 셀들이 낸드(NAND) 플래시 메모리 셀들인 실시 예를 중심으로 본 발명의 실시 예들이 설명될 것이다.
스토리지 컨트롤러(210)는 제1 내지 제8 핀들(P21~P28), 및 컨트롤러 인터페이스 회로(410)를 포함할 수 있다. 제1 내지 제8 핀들(P21~P28)은 메모리 장치(220)의 제1 내지 제8 핀들(P11~P18)에 대응할 수 있다.
컨트롤러 인터페이스 회로(410)는 제1 핀(P21)을 통해 메모리 장치(220)로 칩 인에이블 신호(nCE)를 전송할 수 있다. 컨트롤러 인터페이스 회로(410)는 칩 인에이블 신호(nCE)를 통해 선택한 메모리 장치(220)와 제2 내지 제8 핀들(P22~P28)을 통해 신호들을 송수신할 수 있다.
컨트롤러 인터페이스 회로(410)는 제2 내지 제4 핀들(P22~P24)을 통해 커맨드 래치 인에이블 신호(CLE), 어드레스 래치 인에이블 신호(ALE), 및 라이트 인에이블 신호(nWE)를 메모리 장치(220)로 전송할 수 있다. 컨트롤러 인터페이스 회로(410)는 제7 핀(P27)을 통해 메모리 장치(220)로 데이터 신호(DQ)를 전송하거나, 메모리 장치(220)로부터 데이터 신호(DQ)를 수신할 수 있다.
컨트롤러 인터페이스 회로(410)는 토글하는 라이트 인에이블 신호(nWE)와 함께 커맨드(CMD) 또는 어드레스(ADDR)를 포함하는 데이터 신호(DQ)를 메모리 장치(220)로 전송할 수 있다. 컨트롤러 인터페이스 회로(410)는 인에이블 상태를 가지는 커맨드 래치 인에이블 신호(CLE)를 전송함에 따라 커맨드(CMD)를 포함하는 데이터 신호(DQ)를 메모리 장치(220)로 전송하고, 인에이블 상태를 가지는 어드레스 래치 인에이블 신호(ALE)를 전송함에 따라 어드레스(ADDR)를 포함하는 데이터 신호(DQ)를 메모리 장치(220)로 전송할 수 있다.
컨트롤러 인터페이스 회로(410)는 제5 핀(P25)을 통해 메모리 장치(220)로 리드 인에이블 신호(nRE)를 전송할 수 있다. 컨트롤러 인터페이스 회로(410)는 제6 핀(P26)을 통해 메모리 장치(220)로부터 데이터 스트로브 신호(DQS)를 수신하거나, 메모리 장치(220)로 데이터 스트로브 신호(DQS)를 전송할 수 있다.
메모리 장치(220)의 데이터(DATA) 출력 동작에서, 컨트롤러 인터페이스 회로(410)는 토글하는 리드 인에이블 신호(nRE)를 생성하고, 리드 인에이블 신호(nRE)를 메모리 장치(220)로 전송할 수 있다. 예를 들어, 컨트롤러 인터페이스 회로(410)는 데이터(DATA)가 출력되기 전에 고정된 상태(예를 들어, 하이 레벨 또는 로우 레벨)에서 토글 상태로 변경되는 리드 인에이블 신호(nRE)를 생성할 수 있다. 이에 따라, 메모리 장치(220)에서 리드 인에이블 신호(nRE)에 기초하여 토글하는 데이터 스트로브 신호(DQS)가 생성될 수 있다. 컨트롤러 인터페이스 회로(410)는 메모리 장치(220)로부터 토글하는 데이터 스트로브 신호(DQS)와 함께 데이터(DATA)를 포함하는 데이터 신호(DQ)를 수신할 수 있다. 컨트롤러 인터페이스 회로(410)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터 신호(DQ)로부터 데이터(DATA)를 획득할 수 있다.
몇몇 실시예에 따라 컨트롤러 인터페이스 회로(211)는 리드 커맨드(Read CMD) 및 어드레스(ADDR), 리드 인에이블 신호(nRE)를 메모리 장치(220)로 전송할 수 있다. 이 경우 메모리 장치(400)는 리드 인에이블 신호(nRE)에 따라 메모리 셀 어레이(430)로부터 수신된 어드레스에 상응하는 메인 데이터를 리드할 수 있다. 이때 메인 데이터가 리드되는 속도는 리드 컨트롤러(300)에 의해 설정된 기어 레벨에 기초한다. 리드 컨트롤러(300)는 메모리 장치(400)의 상태에 기초하여 기어 레벨을 적응적으로 변경할 수 있다.
메모리 장치(220)의 데이터(DATA) 입력 동작에서, 컨트롤러 인터페이스 회로(410)는 토글하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 예를 들어, 컨트롤러 인터페이스 회로(410)는 데이터(DATA)를 전송하기 전에 고정된 상태(예를 들어, 하이 레벨 또는 로우 레벨)에서 토글 상태로 변경되는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 컨트롤러 인터페이스 회로(410)는 데이터 스트로브 신호(DQS)의 토글 타이밍들에 기초하여 데이터(DATA)를 포함하는 데이터 신호(DQ)를 메모리 장치(220)로 전송할 수 있다.
컨트롤러 인터페이스 회로(410)는 제8 핀(P28)을 통해 메모리 장치(220)로부터 레디/비지 출력 신호(nR/B)를 수신할 수 있다. 컨트롤러 인터페이스 회로(410)는 레디/비지 출력 신호(nR/B)에 기초하여 메모리 장치(220)의 상태 정보를 판별할 수 있다.
도 9는 도 1의 메모리 장치를 나타내는 예시적인 블록도이다. 도 9를 참조하면, 메모리 장치(400)는 제어 로직 회로(420), 메모리 셀 어레이(430), 페이지 버퍼부(440), 전압 생성기(450), 및 로우 디코더(460)를 포함할 수 있다. 도 9에는 도시되지 않았으나, 메모리 장치(400)는 도 9에 도시된 메모리 인터페이스 회로(410)를 더 포함할 수 있고, 또한 컬럼 로직, 프리-디코더, 온도 센서, 커맨드 디코더, 어드레스 디코더 등을 더 포함할 수 있다.
제어 로직 회로(420)는 메모리 장치(400) 내의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(420)는 메모리 인터페이스 회로(410)로부터의 커맨드(CMD) 및/또는 어드레스(ADDR)에 응답하여 각종 제어 신호들을 출력할 수 있다. 예를 들어, 제어 로직 회로(420)는 전압 제어 신호(CTRL_vol), 로우 어드레스(X-ADDR), 및 컬럼 어드레스(Y-ADDR)를 출력할 수 있다.
메모리 셀 어레이(430)는 복수의 메모리 블록들(BLK1 내지 BLKz)을 포함할 수 있고(z는 양의 정수), 복수의 메모리 블록들(BLK1 내지 BLKz) 각각은 복수의 메모리 셀들을 포함할 수 있다. 메모리 셀 어레이(430)는 비트 라인들(BL)을 통해 페이지 버퍼부(440)에 연결될 수 있고, 워드 라인들(WL), 스트링 선택 라인들(SSL), 및 그라운드 선택 라인들(GSL)을 통해 로우 디코더(460)에 연결될 수 있다.
예시적인 실시 예에서, 메모리 셀 어레이(430)는 3차원 메모리 셀 어레이를 포함할 수 있고, 3차원 메모리 셀 어레이는 복수의 낸드 스트링들을 포함할 수 있다. 각 낸드 스트링은 기판 위에 수직으로 적층된 워드 라인들에 각각 연결된 메모리 셀들을 포함할 수 있다. 미국 특허공개공보 제7,679,133호, 미국 특허공개공보 제8,553,466호, 미국 특허공개공보 제8,654,587호, 미국 특허공개공보 제8,559,235호, 및 미국 특허출원공개공보 제2011/0233648호는 본 명세서에 인용 형식으로 결합된다. 예시적인 실시 예에서, 메모리 셀 어레이(430)는 2차원 메모리 셀 어레이를 포함할 수 있고, 2차원 메모리 셀 어레이는 행 및 열 방향을 따라 배치된 복수의 낸드 스트링들을 포함할 수 있다.
페이지 버퍼부(440)는 복수의 페이지 버퍼들(PB1 내지 PBn)을 포함할 수 있고(n은 3 이상의 정수), 복수의 페이지 버퍼들(PB1 내지 PBn)은 복수의 비트 라인들(BL)을 통해 메모리 셀들과 각각 연결될 수 있다. 페이지 버퍼부(440)는 컬럼 어드레스(Y-ADDR)에 응답하여 비트 라인들(BL) 중 적어도 하나의 비트 라인을 선택할 수 있다. 페이지 버퍼부(440)는 동작 모드에 따라 기입 드라이버 또는 감지 증폭기로서 동작할 수 있다. 예를 들어, 프로그램 동작 시, 페이지 버퍼부(440)는 선택된 비트 라인으로 프로그램될 데이터에 대응하는 비트 라인 전압을 인가할 수 있다. 리드 동작 시, 페이지 버퍼부(440)는 선택된 비트 라인의 전류 또는 전압을 감지하여 메모리 셀에 저장된 데이터를 감지할 수 있다.
전압 생성기(450)는 전압 제어 신호(CTRL_vol)를 기반으로 프로그램, 리드, 및 소거 동작들을 수행하기 위한 다양한 종류의 전압들을 생성할 수 있다. 예를 들어, 전압 생성기(450)는 워드 라인 전압(VWL)으로서 프로그램 전압, 리드 전압, 프로그램 검증 전압, 소거 전압 등을 생성할 수 있다.
로우 디코더(460)는 로우 어드레스(X-ADDR)에 응답하여 복수의 워드 라인들(WL) 중 하나를 선택할 수 있고, 복수의 스트링 선택 라인들(SSL) 중 하나를 선택할 수 있다. 예를 들어, 프로그램 동작 시, 로우 디코더(460)는 선택된 워드 라인으로 프로그램 전압 및 프로그램 검증 전압을 인가하고, 리드 동작 시, 선택된 워드 라인으로 리드 전압을 인가할 수 있다.
도 10은 도 1의 메모리 장치에 적용될 수 있는 3D V-NAND 구조에 대해 설명하기 위한 도면이다. 메모리 장치의 스토리지 모듈이 3D V-NAND 타입의 플래시 메모리로 구현될 경우, 스토리지 모듈을 구성하는 복수의 메모리 블록 각각은 도 10에 도시된 바와 같은 등가 회로로 표현될 수 있다.
도 10에 도시된 메모리 블록(BLKi)은 기판 상에 삼차원 구조로 형성되는 삼차원 메모리 블록을 나타낸다. 예를 들어, 메모리 블록(BLKi)에 포함되는 복수의 메모리 낸드 스트링들은 상기 기판과 수직한 방향으로 형성될 수 있다.
도 10을 참조하면, 메모리 블록(BLKi)은 비트 라인들(BL1, BL2, BL3)과 공통 소스 라인(CSL) 사이에 연결되는 복수의 메모리 낸드 스트링들(NS11~NS33)을 포함할 수 있다. 복수의 메모리 낸드 스트링들(NS11~NS33) 각각은 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC1, MC2, ..., MC8) 및 접지 선택 트랜지스터(GST)를 포함할 수 있다. 도 11에는 복수의 메모리 낸드 스트링들(NS11~NS33) 각각이 8개의 메모리 셀들(MC1, MC2, ..., MC8)을 포함하는 것으로 도시되어 있으나, 반드시 이에 한정되는 것은 아니다.
스트링 선택 트랜지스터(SST)는 상응하는 스트링 선택 라인(SSL1, SSL2, SSL3)에 연결될 수 있다. 복수의 메모리 셀들(MC1, MC2, ..., MC8)은 각각 상응하는 게이트 라인(GTL1, GTL2, ..., GTL8)에 연결될 수 있다. 게이트 라인(GTL1, GTL2, ..., GTL8)은 워드 라인들에 해당할 수 있으며, 게이트 라인(GTL1, GTL2, ..., GTL8)의 일부는 더미 워드 라인에 해당할 수 있다. 접지 선택 트랜지스터(GST)는 상응하는 접지 선택 라인(GSL1, GSL2, GSL3)에 연결될 수 있다. 스트링 선택 트랜지스터(SST)는 상응하는 비트 라인(BL1, BL2, BL3)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 연결될 수 있다.
동일 높이의 워드 라인(예를 들면, WL1)은 공통으로 연결되고, 접지 선택 라인(GSL1, GSL2, GSL3) 및 스트링 선택 라인(SSL1, SSL2, SSL3)은 각각 분리될 수 있다. 도 10에는 메모리 블록(BLK)이 여덟 개의 게이트 라인(GTL1, GTL2, ..., GTL8) 및 세 개의 비트 라인들(BL1, BL2, BL3)에 연결되는 것으로 도시되어 있으나, 반드시 이에 한정되는 것은 아니다.
도 11는 도 1의 스토리지(storage) 장치가 적용된 시스템을 도시한 도면이다.
도 11의 시스템(1000)은 기본적으로 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기 또는 IOT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다. 하지만 도 12의 시스템(1000)은 반드시 모바일 시스템에 한정되는 것은 아니고, 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기(media player) 또는 내비게이션(navigation)과 같은 차량용 장비(automotive device) 등이 될 수도 있다.
도 11를 참조하면, 시스템(1000)은 메인 프로세서(main processor)(1100), 메모리(1200a, 1200b) 및 스토리지 장치(1300a, 1300b)를 포함할 수 있으며, 추가로 촬영 장치(image capturing device)(1410), 사용자 입력 장치(user input device)(1420), 센서(1430), 통신 장치(1440), 디스플레이(1450), 스피커(1460), 전력 공급 장치(power supplying device)(1470) 및 연결 인터페이스(connecting interface)(1480) 중 하나 이상을 포함할 수 있다.
메인 프로세서(1100)는 시스템(1000)의 전반적인 동작, 보다 구체적으로는 시스템(1000)을 이루는 다른 구성 요소들의 동작을 제어할 수 있다. 이와 같은 메인 프로세서(1100)는 범용 프로세서, 전용 프로세서 또는 애플리케이션 프로세서(application processor) 등으로 구현될 수 있다.
메인 프로세서(1100)는 하나 이상의 제어유닛 코어(1110)를 포함할 수 있으며, 메모리(1200a, 1200b) 및/또는 스토리지 장치(1300a, 1300b)를 제어하기 위한 컨트롤러(1120)를 더 포함할 수 있다. 실시예에 따라서는, 메인 프로세서(1100)는 AI(artificial intelligence) 데이터 연산 등 고속 데이터 연산을 위한 전용 회로인 가속기(accelerator) 블록(1130)을 더 포함할 수 있다. 이와 같은 가속기 블록(1130)은 GPU(Graphics Processing Unit), NPU(Neural Processing Unit) 및/또는 DPU(Data Processing Unit) 등을 포함할 수 있으며, 메인 프로세서(1100)의 다른 구성 요소와는 물리적으로 독립된 별개의 칩(chip)으로 구현될 수도 있다.
메모리(1200a, 1200b)는 시스템(1000)의 주기억 장치로 사용될 수 있으며, SRAM 및/또는 DRAM 등의 휘발성 메모리를 포함할 수 있으나, 플래시 메모리, PRAM 및/또는 RRAM 등의 비휘발성 메모리를 포함할 수도 있다. 메모리(1200a, 1200b)는 메인 프로세서(1100)와 동일한 패키지 내에 구현되는 것도 가능하다.
스토리지 장치(1300a, 1300b)는 전원 공급 여부와 관계 없이 데이터를 저장하는 비휘발성 저장 장치로서 기능할 수 있으며, 메모리(1200a, 1200b)에 비해 상대적으로 큰 저장 용량을 가질 수 있다. 스토리지 장치(1300a, 1300b)는 스토리지 컨트롤러(1310a, 1310b)와, 스토리지 컨트롤러(1310a, 1310b)의 제어 하에 데이터를 저장하는 비휘발성(non-volatile memory, NVM) 스토리지(1320a, 1320b)를 포함할 수 있다. 비휘발성 스토리지(1320a, 1320b)는 2D(2-dimensional) 구조 혹은 3D(3-dimensional) 구조의 V-NAND 플래시 메모리를 포함할 수 있으나, PRAM 및/또는 RRAM 등의 다른 종류의 비휘발성 메모리를 포함할 수도 있다.
스토리지 장치(1300a, 1300b)는 메인 프로세서(1100)와는 물리적으로 분리된 상태로 시스템(1000)에 포함될 수도 있고, 메인 프로세서(1100)와 동일한 패키지 내에 구현될 수도 있다. 또한, 스토리지 장치(1300a, 1300b)는 메모리 카드(memory card)와 같은 형태를 가짐으로써, 후술할 연결 인터페이스(1480)와 같은 인터페이스를 통해 시스템(1000)의 다른 구성 요소들과 탈부착 가능하도록 결합될 수도 있다. 이와 같은 스토리지 장치(1300a, 1300b)는 UFS(universal flash storage)와 같은 표준 규약이 적용되는 장치일 수 있으나, 반드시 이에 한정되는 건 아니다.
촬영 장치(1410)는 정지 영상 또는 동영상을 촬영할 수 있으며, 카메라(camera), 캠코더(camcorder) 및/또는 웹캠(webcam) 등일 수 있다.
사용자 입력 장치(1420)는 시스템(1000)의 사용자로부터 입력된 다양한 유형의 데이터를 수신할 수 있으며, 터치 패드(touch pad), 키패드(keyboard), 키보드(keyboard), 마우스(mouse) 및/또는 마이크(microphone) 등일 수 있다.
센서(1430)는 시스템(1000)의 외부로부터 획득될 수 있는 다양한 유형의 물리량을 감지하고, 감지된 물리량을 전기 신호로 변환할 수 있다. 이와 같은 센서(1430)는 온도 센서, 압력 센서, 조도 센서, 위치 센서, 가속도 센서, 바이오 센서(biosensor) 및/또는 자이로스코프(gyroscope) 등일 수 있다.
통신 장치(1440)는 다양한 통신 규약에 따라 시스템(1000) 외부의 다른 장치들과의 사이에서 신호의 송신 및 수신을 수행할 수 있다. 이와 같은 통신 장치(1440)는 안테나, 트랜시버(transceiver) 및/또는 모뎀(MODEM) 등을 포함하여 구현될 수 있다.
디스플레이(1450) 및 스피커(1460)는 시스템(1000)의 사용자에게 각각 시각적 정보와 청각적 정보를 출력하는 출력 장치로 기능할 수 있다.
전력 공급 장치(1470)는 시스템(1000)에 내장된 배터리(도시 안함) 및/또는외부 전원으로부터 공급되는 전력을 적절히 변환하여 시스템(1000)의 각 구성 요소들에게 공급할 수 있다.
연결 인터페이스(1480)는 시스템(1000)과, 시스템(1000)에 연결되어 시스템(1000과 데이터를 주고받을 수 있는 외부 장치 사이의 연결을 제공할 수 있다. 연결 인터페이스(1480)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NVM express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC(embedded multi-media card), UFS(Universal Flash Storage), eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야 한다.
100 : 호스트 200 : 스토리지 시스템
210 : 스토리지 컨트롤러 220 : 메모리 장치
300 : 리드 컨트롤러

Claims (20)

  1. 단일 레벨 셀을 포함하는 제1 영역 및 상기 제1 영역과 다른 제2 영역을 포함하는 메모리 장치; 및
    상기 메모리 장치에 액세스하고 상기 메모리 장치를 제어하는 스토리지 컨트롤러를 포함하고,
    상기 스토리지 컨트롤러는
    제1 기어 레벨로 상기 제1 영역에서 데이터를 리드하고,
    복수의 기어 레벨 중 상기 데이터의 에러 및 상기 메모리 장치의 상태에 상응하는 제2 기어 레벨로 변경하는, 스토리지 시스템.
  2. 제1항에 있어서, 상기 제2 영역은 멀티 레벨 셀, 트리플 레벨 셀 또는 쿼드 레벨 셀 중 적어도 하나인, 스토리지 시스템.
  3. 제1항에 있어서, 상기 제2 기어 레벨은
    상기 제1 기어 레벨보다 느린 리드 속도를 가지는, 스토리지 시스템.
  4. 제1항에 있어서, 상기 제2 기어 레벨은
    상기 제1 기어 레벨보다 빨라진 리드 속도를 가지는, 스토리지 시스템.
  5. 제1항에 있어서, 상기 스토리지 컨트롤러는
    복수의 기어 레벨 각각에 상응하는 복수의 기설정된 조건을 저장한 매핑 테이블을 포함하는, 스토리지 시스템.
  6. 제5항에 있어서, 상기 복수의 기설정된 조건은 상기 리드된 데이터의 에러 정도, 데이터 리텐션, 상기 메모리 장치의 온도, 내구성 주기, 데이터 리드 강도, 칩 자체 특성 중 적어도 하나를 포함하는, 스토리지 시스템.
  7. 제5항에 있어서, 상기 스토리지 컨트롤러는
    상기 복수의 기설정된 조건 중 상기 데이터의 에러 및 상기 메모리 장치의 상태에 기초하는 어느 하나의 기설정된 조건을 확인하고, 확인된 조건에 상응하는 기어 레벨을 상기 제2 기어 레벨로 설정하는, 스토리지 시스템.
  8. 제5항에 있어서, 상기 매핑 테이블은 상기 메모리 장치의 동작 조건, 사용 패턴, 상기 리드된 데이터의 신뢰성을 기초로 학습하여 설정된 테이블인, 스토리지 시스템.
  9. 메모리 장치로부터 제1 기어 레벨로 데이터를 리드하는 단계; 및
    상기 메모리 장치의 리드 속도를 상기 리드된 데이터의 에러 및 상기 메모리 장치의 상태에 기초하여 동적으로 변경한 제2 기어 레벨로 설정하는 단계를 포함하는, 스토리지 컨트롤러의 동작방법.
  10. 제9항에 있어서, 상기 제2 기어 레벨은 상기 제1 기어 레벨보다 빠른 속도를 가지는, 스토리지 컨트롤러의 동작방법.
  11. 제9항에 있어서, 상기 제2 기어 레벨은 상기 제1 기어 레벨보다 느린 속도를 가지는, 스토리지 컨트롤러의 동작방법.
  12. 제9항에 있어서, 상기 스토리지 컨트롤러는
    복수의 기어 레벨 각각에 상응하는 복수의 기설정된 조건을 저장한 매핑 테이블을 포함하는, 스토리지 컨트롤러의 동작방법.
  13. 제12항에 있어서, 상기 복수의 기설정된 조건은 상기 리드된 데이터의 에러 정도, 데이터 리텐션, 상기 메모리 장치의 온도, 내구성 주기, 데이터 리드 강도, 칩 자체 특성 중 적어도 하나를 포함하는, 스토리지 컨트롤러의 동작방법.
  14. 제12항에 있어서, 상기 복수의 기설정된 조건은
    상기 메모리 장치의 동작 조건, 사용 패턴, 상기 리드된 데이터의 신뢰성을 기초로 학습되는, 복수의 기어 레벨 각각에 대한 설정조건인, 스토리지 컨트롤러의 동작방법.
  15. 제9항에 있어서, 상기 제1 기어 레벨 또는 상기 제2 기어 레벨로 리드되는 상기 데이터는 상기 메모리 장치 내 싱글 레벨 셀 영역에 저장된 데이터인, 스토리지 컨트롤러의 동작방법.
  16. 데이터를 저장하는 메모리 장치; 및
    스토리지 컨트롤러를 포함하고,
    상기 스토리지 컨트롤러는
    상기 메모리 장치에서 리드되는 데이터의 에러를 검출하고 정정하는 ECC 엔진; 및
    복수의 기어 레벨 중 상기 ECC 엔진으로부터 수신되는 상기 에러의 정도 및 상기 메모리 장치의 상태에 기초하여 동적으로 선택되는 기어 레벨로 상기 메모리 장치에서의 리드 속도를 설정하는 리드 컨트롤러를 포함하는, 스토리지 시스템.
  17. 제16항에 있어서, 상기 메모리 장치는
    싱글 레벨 셀을 포함하는 제1 영역 및 상기 제1 영역을 제외한 나머지 제2 영역을 포함하고,
    상기 선택되는 기어 레벨로 리드되는 데이터는 상기 제1 영역에 저장된 데이터인, 스토리지 시스템.
  18. 제16항에 있어서, 상기 스토리지 컨트롤러는
    상기 복수의 기어 레벨 각각에 상응하는 복수의 기설정된 조건을 저장한 매핑 테이블을 포함하는, 스토리지 시스템.
  19. 제16항에 있어서, 상기 스토리지 컨트롤러는
    상기 복수의 기설정된 조건 중 상기 데이터의 에러 및 상기 메모리 장치의 상태에 기초하는 어느 하나의 기설정된 조건을 확인하고, 확인된 조건에 상응하는 기어 레벨을 선택하는, 스토리지 시스템.
  20. 제19항에 있어서, 상기 스토리지 컨트롤러는 현재 기어 레벨이 상기 메모리 장치의 최소 기어 레벨이면, 상기 현재 기어 레벨로 리드 속도를 유지하는 것인, 스토리지 시스템.
KR1020200183361A 2020-12-24 2020-12-24 스토리지 컨트롤러 및 이를 포함하는 스토리지 시스템 KR20220092021A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020200183361A KR20220092021A (ko) 2020-12-24 2020-12-24 스토리지 컨트롤러 및 이를 포함하는 스토리지 시스템
DE102021121974.4A DE102021121974A1 (de) 2020-12-24 2021-08-25 Speicher-steuereinheit und speichersystem, welches diese enthält
US17/466,392 US11726871B2 (en) 2020-12-24 2021-09-03 Storage controller for selecting a gear level of a storage device and storage system including the same
CN202111606936.5A CN114675781A (zh) 2020-12-24 2021-12-23 存储控制器和包括该存储控制器的存储系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200183361A KR20220092021A (ko) 2020-12-24 2020-12-24 스토리지 컨트롤러 및 이를 포함하는 스토리지 시스템

Publications (1)

Publication Number Publication Date
KR20220092021A true KR20220092021A (ko) 2022-07-01

Family

ID=81972575

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200183361A KR20220092021A (ko) 2020-12-24 2020-12-24 스토리지 컨트롤러 및 이를 포함하는 스토리지 시스템

Country Status (4)

Country Link
US (1) US11726871B2 (ko)
KR (1) KR20220092021A (ko)
CN (1) CN114675781A (ko)
DE (1) DE102021121974A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11543970B2 (en) * 2020-01-15 2023-01-03 Micron Technology, Inc. Managing dynamic temperature throttling thresholds in a memory subsystem

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8583857B2 (en) * 2007-08-20 2013-11-12 Marvell World Trade Ltd. Method and system for object-oriented data storage
KR101226685B1 (ko) 2007-11-08 2013-01-25 삼성전자주식회사 수직형 반도체 소자 및 그 제조 방법.
US9123422B2 (en) * 2012-07-02 2015-09-01 Super Talent Technology, Corp. Endurance and retention flash controller with programmable binary-levels-per-cell bits identifying pages or blocks as having triple, multi, or single-level flash-memory cells
ATE539403T1 (de) * 2008-06-24 2012-01-15 Sandisk Il Ltd Verfahren und vorrichtung zur fehlerkorrektur nach der löschanzahl eines festkörperspeichers
KR101691092B1 (ko) 2010-08-26 2016-12-30 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
US9536970B2 (en) 2010-03-26 2017-01-03 Samsung Electronics Co., Ltd. Three-dimensional semiconductor memory devices and methods of fabricating the same
KR101682666B1 (ko) 2010-08-11 2016-12-07 삼성전자주식회사 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템
US8595597B2 (en) 2011-03-03 2013-11-26 Intel Corporation Adjustable programming speed for NAND memory devices
US20130031431A1 (en) * 2011-07-28 2013-01-31 Eran Sharon Post-Write Read in Non-Volatile Memories Using Comparison of Data as Written in Binary and Multi-State Formats
US9165683B2 (en) * 2013-09-23 2015-10-20 Sandisk Technologies Inc. Multi-word line erratic programming detection
US9569120B2 (en) * 2014-08-04 2017-02-14 Nvmdurance Limited Adaptive flash tuning
AU2016393275B2 (en) * 2016-02-19 2019-10-10 Huawei Technologies Co., Ltd. Method and apparatus for accessing flash memory device
KR20180031289A (ko) 2016-09-19 2018-03-28 삼성전자주식회사 스토리지 장치 및 상기 스토리지 장치의 동작 방법
CN106843771B (zh) 2017-01-26 2019-11-19 合肥兆芯电子有限公司 存储器重读方法、存储器控制电路单元及存储器存储装置
KR102347184B1 (ko) 2017-05-23 2022-01-04 삼성전자주식회사 스토리지 장치 및 상기 스토리지 장치의 동작 방법
US10175892B1 (en) 2017-06-23 2019-01-08 Amazon Technologies, Inc. Adaptive read algorithm for a nonvolatile medium
US10698610B2 (en) * 2018-02-23 2020-06-30 Western Digital Technologies, Inc. Storage system and method for performing high-speed read and write operations
CN110473581B (zh) * 2018-05-09 2020-12-29 建兴储存科技(广州)有限公司 固态储存装置及其相关控制方法
CN111104245B (zh) 2018-10-29 2023-07-14 建兴储存科技(广州)有限公司 固态存储装置的读取重试方法
KR102651440B1 (ko) 2018-11-15 2024-03-27 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
JP2020149123A (ja) * 2019-03-11 2020-09-17 キオクシア株式会社 メモリシステム、及びメモリシステムの制御方法
US11048438B2 (en) * 2019-05-01 2021-06-29 Qualcomm Incorporated Data rate shifting based on temperature
US11188461B2 (en) * 2019-06-19 2021-11-30 Micron Technology, Inc. Garbage collection adapted to memory device life expectancy
JP2021043678A (ja) * 2019-09-10 2021-03-18 キオクシア株式会社 メモリシステム及び方法

Also Published As

Publication number Publication date
DE102021121974A1 (de) 2022-06-30
CN114675781A (zh) 2022-06-28
US11726871B2 (en) 2023-08-15
US20220206893A1 (en) 2022-06-30

Similar Documents

Publication Publication Date Title
KR102381218B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US11567685B2 (en) Storage controller and storage device including the same
US10902924B2 (en) Memory system varying pass voltage based on erase count of target memory block and operating method thereof
US10902928B2 (en) Memory system, operation method thereof, and nonvolatile memory device
CN112435703A (zh) 存储装置及其操作方法
US20210334000A1 (en) Memory system, memory controller and memory device for configuring super blocks
US11961561B2 (en) Memory device and method of operating the same
US20240212769A1 (en) Memory device and method of operating the same
US11726871B2 (en) Storage controller for selecting a gear level of a storage device and storage system including the same
CN112783431A (zh) 存储装置及其操作方法
US11914892B2 (en) Storage device adjusting history read level storage areas based on reliabilities of memory blocks, storage controller, and operating method of storage controller
US10599562B2 (en) Nonvolatile memory device configured to be accessed without block address and method of operating the same
US12001709B2 (en) Storage devices and operating methods of storage controllers
US11842779B2 (en) Memory device and operating method for performing verify operation
US11586379B2 (en) Memory system and method of operating the same
KR20220029286A (ko) 스토리지 장치 및 그 스토리지 컨트롤러의 동작방법
US11782644B2 (en) Memory system and method of operating the same
US20230350576A1 (en) Memory device and program speed control method thereof
KR20230062311A (ko) 스토리지 장치 및 스토리지 장치의 제어 방법
KR20230071024A (ko) 스토리지 시스템 및 스토리지 컨트롤러의 동작방법

Legal Events

Date Code Title Description
A201 Request for examination