KR20240030248A - 스토리지 장치 - Google Patents

스토리지 장치 Download PDF

Info

Publication number
KR20240030248A
KR20240030248A KR1020220109014A KR20220109014A KR20240030248A KR 20240030248 A KR20240030248 A KR 20240030248A KR 1020220109014 A KR1020220109014 A KR 1020220109014A KR 20220109014 A KR20220109014 A KR 20220109014A KR 20240030248 A KR20240030248 A KR 20240030248A
Authority
KR
South Korea
Prior art keywords
data
volatile memory
block
storage controller
parity
Prior art date
Application number
KR1020220109014A
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 KR1020220109014A priority Critical patent/KR20240030248A/ko
Priority to US18/314,978 priority patent/US20240069751A1/en
Priority to EP23192345.9A priority patent/EP4332775A1/en
Priority to CN202311093076.9A priority patent/CN117637002A/zh
Publication of KR20240030248A publication Critical patent/KR20240030248A/ko

Links

Images

Classifications

    • 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/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/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/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/12Programming voltage switching circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/24Bit-line control circuits

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

Abstract

스토리지 장치는, 적어도 제1 및 제2 비휘발성 메모리를 포함하는 복수의 비휘발성 메모리들; 복수의 데이터 블록들에 대한 XOR 연산을 수행함으로써 패리티 블록을 생성하고, 상기 복수의 데이터 블록들 및 상기 패리티 블록을 상기 복수의 비휘발성 메모리들에 분산하여 제공하는 스토리지 컨트롤러; 및 상기 복수의 비휘발성 메모리들과 상기 스토리지 컨트롤러 간에 신호를 전달하는 데이터 버스를 포함하고, 상기 스토리지 컨트롤러는 호스트로부터 신규 데이터 블록을 수신하고, 상기 신규 데이터 블록에 대응하는 기존 데이터 블록에 연관된 기존 패리티 블록이 저장된 상기 제2 비휘발성 메모리로 상기 신규 데이터 블록을 제공하고, 상기 기존 데이터 블록이 저장된 상기 제1 비휘발성 메모리는, 상기 기존 데이터 블록을 상기 스토리지 컨트롤러를 통하지 않고 상기 데이터 버스를 통해 상기 제2 비휘발성 메모리로 제공하고, 상기 제2 비휘발성 메모리는 상기 신규 데이터 블록, 상기 기존 데이터 블록 및 상기 기존 패리티 블록에 대한 XOR 연산을 수행함으로써 신규 패리티 블록을 생성하고, 상기 신규 패리티 블록을 저장한다.

Description

스토리지 장치 {STORAGE DEVICE}
본 발명은 비휘발성 메모리를 포함하는 스토리지 장치에 관한 것이다.
비휘발성 메모리 장치는 컴퓨터, 스마트폰, PDA, 디지털 카메라, 캠코더, 보이스 리코더, MP3 플레이어, 휴대용 컴퓨터(Handheld PC)와 같은 정보 기기들의 음성 및 영상 데이터 저장 매체로서 널리 사용되고 있다. 비휘발성 메모리 기반의 대용량 스토리지 장치의 대표적인 예로 SSD(Solid State Drive)가 있다.
스토리지 장치의 대용량화 추세에 부응하여, 스토리지 장치는 다수의 비휘발성 메모리들을 포함할 수 있다. 스토리지 장치는 성능을 개선하고 데이터의 신뢰성을 보장하기 위해, 데이터 블록들에 패리티 연산을 수행하여 패리티 블록을 생성하고, 데이터 블록들과 패리티 블록을 상기 다수의 비휘발성 메모리들에 걸쳐서 저장할 수 있다.
본 발명은 다수의 비휘발성 메모리들에 걸쳐서 저장된 데이터 블록들 중 일부가 업데이트되는 경우, 상기 일부의 데이터 블록에 연관된 패리티 블록을 업데이트하기 위해 필요한 자원 소모량을 줄임으로써 성능이 개선된 스토리지 장치를 제공하고자 한다.
본 발명은 비휘발성 메모리들이 스토리지 컨트롤러를 통하지 않고 데이터를 송수신할 수 있도록 함으로써, 비휘발성 메모리들 간 데이터 이동을 위한 자원 소모량을 줄일 수 있는 스토리지 장치를 제공하고자 한다.
본 발명의 실시 예에 따른 스토리지 장치는, 적어도 제1 및 제2 비휘발성 메모리를 포함하는 복수의 비휘발성 메모리들; 복수의 데이터 블록들에 대한 XOR 연산을 수행함으로써 패리티 블록을 생성하고, 상기 복수의 데이터 블록들 및 상기 패리티 블록을 상기 복수의 비휘발성 메모리들에 분산하여 제공하는 스토리지 컨트롤러; 및 상기 복수의 비휘발성 메모리들과 상기 스토리지 컨트롤러 간에 신호를 전달하는 데이터 버스를 포함하고, 상기 스토리지 컨트롤러는 호스트로부터 신규 데이터 블록을 수신하고, 상기 신규 데이터 블록에 대응하는 기존 데이터 블록에 연관된 기존 패리티 블록이 저장된 상기 제2 비휘발성 메모리로 상기 신규 데이터 블록을 제공하고, 상기 기존 데이터 블록이 저장된 상기 제1 비휘발성 메모리는, 상기 기존 데이터 블록을 상기 스토리지 컨트롤러를 통하지 않고 상기 데이터 버스를 통해 상기 제2 비휘발성 메모리로 제공하고, 상기 제2 비휘발성 메모리는 상기 신규 데이터 블록, 상기 기존 데이터 블록 및 상기 기존 패리티 블록에 대한 XOR 연산을 수행함으로써 신규 패리티 블록을 생성하고, 상기 신규 패리티 블록을 저장한다.
본 발명의 실시 예에 따른 스토리지 장치는, 적어도 제1 및 제2 비휘발성 메모리를 포함하는 복수의 비휘발성 메모리들; 복수의 데이터 블록들에 대한 XOR 연산을 수행함으로써 패리티 블록을 생성하고, 상기 복수의 데이터 블록들 및 패리티 블록을 상기 복수의 비휘발성 메모리들에 분산하여 제공하는 스토리지 컨트롤러; 및 상기 복수의 비휘발성 메모리들과 상기 스토리지 컨트롤러 간에 신호를 전달하는 데이터 버스를 포함하고, 상기 스토리지 컨트롤러는 호스트로부터 신규 데이터 블록을 수신하고, 상기 신규 데이터 블록에 대응하는 기존 데이터 블록이 저장된 상기 제1 비휘발성 메모리로 상기 신규 데이터 블록을 제공하고, 상기 제1 비휘발성 메모리는, 상기 신규 데이터 블록 및 상기 기존 데이터 블록에 대한 XOR 연산을 수행함으로써 차이 데이터를 생성하고, 상기 차이 데이터를 상기 스토리지 컨트롤러를 통하지 않고 상기 기존 데이터 블록에 연관된 기존 패리티 블록이 저장된 상기 제2 비휘발성 메모리로 제공하고, 상기 제2 비휘발성 메모리는 상기 차이 데이터 및 상기 기존 패리티 블록에 대한 XOR 연산을 수행함으로써 신규 패리티 블록을 생성하고, 상기 신규 패리티 블록을 저장한다.
본 발명의 실시 예에 따른 스토리지 장치는, 복수의 비휘발성 메모리들; 상기 복수의 비휘발성 메모리들을 제어하는 스토리지 컨트롤러; 및 상기 복수의 비휘발성 메모리들과 상기 스토리지 컨트롤러 간에 신호를 전달하는 데이터 버스를 포함하고, 상기 스토리지 컨트롤러는 상기 복수의 비휘발성 메모리들 중 소스(source) 비휘발성 메모리의 데이터 출력 기능을 인에이블하고, 상기 복수의 비휘발성 메모리들 중 목적지(destination) 비휘발성 메모리의 데이터 입력 기능을 인에이블하며, 상기 데이터 버스로 리드 인에이블 신호를 출력하며, 상기 소스 비휘발성 메모리는 상기 리드 인에이블 신호에 응하여 내부에 저장된 데이터를 상기 데이터 버스로 출력하고, 상기 목적지 비휘발성 메모리는 상기 리드 인에이블 신호를 무시하며, 상기 데이터 버스로 출력된 데이터를 획득한다.
본 발명의 실시 예에 따른 스토리지 장치는, 적어도 제1 및 제2 비휘발성 메모리를 포함하는 복수의 비휘발성 메모리들; 복수의 데이터 블록들 및 상기 복수의 데이터 블록들에 대한 패리티 블록을 상기 복수의 비휘발성 메모리들에 스트라이핑하는 스토리지 컨트롤러; 및 상기 복수의 비휘발성 메모리들과 상기 스토리지 컨트롤러 간에 신호를 전달하는 복수의 데이터 버스들을 포함하고, 상기 스토리지 컨트롤러는 호스트로부터 신규 데이터 블록을 수신하고, 상기 제1 비휘발성 메모리에 저장되고 상기 신규 데이터 블록에 대응하는 기존 데이터 블록과 상기 신규 데이터 블록에서 서로 다른 값을 갖는 비트들을 나타내는 차이 데이터를, 상기 기존 데이터 블록에 연관된 기존 패리티 블록이 저장된 상기 제2 비휘발성 메모리가 획득하도록 제어하고, 상기 제2 비휘발성 메모리는 상기 차이 데이터 및 상기 기존 패리티 블록을 이용하여 신규 패리티 블록을 생성하고, 상기 신규 패리티 블록을 저장한다.
본 발명의 실시 예에 따른 스토리지 장치는, 패리티 블록을 저장하는 비휘발성 메모리 내부에서 패리티 연산을 수행함으로써 스토리지 컨트롤러의 버퍼 메모리 자원의 소모량을 줄일 수 있다.
본 발명의 실시 예에 따른 스토리지 장치는, 스토리지 컨트롤러를 통하지 않고 비휘발성 메모리들 간의 데이터 이동을 수행할 수 있으므로 비휘발성 메모리들 간 데이터 이동을 위한 자원 소모량을 줄일 수 있다.
본 발명이 해결하려는 과제들은 이상에서 언급한 과제로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 실시 예에 따른 스토리지 장치를 나타내는 블록도이다.
도 2 내지 도 4는 본 발명의 실시 예에 따른 스토리지 장치를 자세히 설명하기 위한 도면들이다.
도 5a 내지 도 5c는 스토리지 장치의 스트라이핑 동작을 설명하기 위한 도면들이다.
도 6a 내지 도 6e는 본 발명의 제1 실시 예에 따른 스토리지 장치의 스트라이프 업데이트 방법을 설명하기 위한 도면들이다.
도 7a 내지 도 7b는 본 발명의 제2 실시 예에 따른 스토리지 장치의 스트라이프 업데이트 방법을 설명하기 위한 도면들이다.
도 8a 내지 도 8d는 본 발명의 실시 예와는 다른 비교예에 따른 스토리지 장치의 데이터 송수신 방법을 설명하기 위한 도면들이다.
도 9a 내지 도 9b는 본 발명의 실시 예에 따른 비휘발성 메모리들 간 데이터 송수신 방법을 설명하는 도면들이다.
도 10a 내지 도 10b는 본 발명의 실시 예들에 따른 스토리지 장치를 나타내는 도면들이다.
도 11 내지 도 12c는 본 발명의 실시 예에 따른 스토리지 장치의 스트라이프 업데이트 방법을 설명하기 위한 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예를 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 스토리지 장치를 나타내는 블록도이다.
스토리지 장치(100)는 호스트(Host)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일 예로서, 스토리지 장치(100)는 SSD(Solid State Drive), 임베디드(embedded) 메모리 및 착탈 가능한 외장(external) 메모리 중 적어도 하나를 포함할 수 있다. 스토리지 장치(100)가 SSD인 경우, 스토리지 장치(100)는 NVMe(non-volatile memory express) 표준을 따르는 장치일 수 있다. 스토리지 장치(100)가 임베디드 메모리 혹은 외장(external) 메모리인 경우, 스토리지 장치(100)는 UFS(universal flash storage) 혹은 eMMC(embedded multi-media card) 표준을 따르는 장치일 수 있다. 호스트와 스토리지 장치(100)는 각각 채용된 표준 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다.
호스트는 전자 장치, 예를 들어 휴대폰, MP3 플레이어, 랩탑 컴퓨터 등과 같은 휴대용 전자 장치들, 또는 데스크탑 컴퓨터, 게임기, TV, 프로젝터 등과 같은 전자 장치들을 포함할 수 있다. 호스트는 적어도 하나의 운영 체제(OS: operating system)를 포함할 수 있다. 운영 체제는 호스트의 기능 및 동작을 전반적으로 관리 및 제어할 수 있다.
도 1을 참조하면, 스토리지 장치(100)는 스토리지 컨트롤러(110), 메모리 장치(120) 및 데이터 버스(101)를 포함할 수 있다. 메모리 장치(120)는 호스트로부터 제공된 데이터를 저장하고, 호스트의 요청에 응하여 데이터를 출력할 수 있다. 스토리지 컨트롤러(110)는 호스트로부터의 요청에 응답하여 메모리 장치(120)를 제어할 수 있다. 데이터 버스(101)는 스토리지 컨트롤러(110) 및 메모리 장치(120) 간에 신호를 전달할 수 있다.
스토리지 컨트롤러(110)는 버퍼 메모리(116)를 포함할 수 있다. 버퍼 메모리(116)는 메모리 장치(120)에 저장될 데이터와, 메모리 장치(120)로부터 출력된 데이터를 버퍼링할 수 있다.
메모리 장치(120)는 전원이 공급되지 않아도 저장된 데이터를 유지할 수 있다. 메모리 장치(120)는 프로그램 동작을 통해 호스트(100)로부터 제공된 데이터를 저장할 수 있고, 리드 동작을 통해 메모리 장치(120)에 저장된 데이터를 출력할 수 있다. 메모리 장치(120)는 복수의 비휘발성 메모리들(NVM11-NVM14)을 포함할 수 있다. 비휘발성 메모리들(NVM11-NVM14)은 복수의 메모리 블록들을 포함할 수 있다. 메모리 블록은 각각이 복수의 메모리 셀들을 포함하는 복수의 페이지들을 포함할 수 있다. 메모리 셀들은 페이지 단위로 프로그램(program) 또는 리드(read)될 수 있으며, 메모리 블록 단위로 이레이즈(erase)될 수 있다.
복수의 비휘발성 메모리들(NVM11-NVM14)은 데이터 버스(101)에 연결된 채널(CH1) 및 복수의 웨이들(W11-W14)을 통해 스토리지 컨트롤러(110)와 신호를 송수신할 수 있다. 복수의 비휘발성 메모리들(NVM11-NVM14)은 하나의 데이터 버스(101)를 공유할 수 있다.
복수의 비휘발성 메모리들(NVM11-NVM14)은 서로 독립적으로 동작할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 하나의 채널(CH1)을 통해 복수의 비휘발성 메모리들(NVM11-NVM14) 각각으로 순차적으로 커맨드들을 제공할 수 있다. 그러나, 순차적으로 커맨드들을 수신한 비휘발성 메모리들(NVM11-NVM14)은 서로 병렬적으로 동작할 수 있다.
스토리지 컨트롤러(110)는 비휘발성 메모리들(NVM11-NVM14)의 병렬 동작을 이용하여 스토리지 장치(100)의 성능 및 신뢰성을 개선하기 위해, 데이터 블록들 및 상기 데이터 블록들에 기초하여 생성된 패리티 블록을 스트라이핑할 수 있다. 데이터 블록들 및 패리티 블록을 스트라이핑한다는 것은, 상기 데이터 블록들 및 상기 패리티 블록을 복수의 비휘발성 메모리들(NVM11-NVM14)에 분산하여 제공하고, 상기 데이터 블록들 및 패리티 블록이 복수의 비휘발성 메모리들(NVM11-NVM14)에 걸쳐서 저장되도록 제어하는 것을 지칭할 수 있다.
도 1을 참조하면, 버퍼 메모리(116)는 정해진 크기의 데이터 블록들(DBLK1-DBLK3)을 버퍼링할 수 있다. 예를 들어, 데이터 블록들(DBLK1-DBLK3)은 호스트로부터 수신된 데이터를 포함할 수 있다.
스토리지 컨트롤러(110)는 버퍼링된 데이터 블록들(DBLK1-DBLK3)에 패리티 연산을 수행함으로써 패리티 블록(PBLK)을 생성할 수 있다. 구체적으로, 스토리지 컨트롤러(110)는 데이터 블록들(DBLK1-DBLK3)에 포함된 데이터 비트들 각각에 대해서 동일한 자릿수의 비트들끼리 XOR 연산을 수행함으로써 하나의 패리티 블록(PBLK)을 생성할 수 있다.
스토리지 컨트롤러(110)는 데이터 블록들(DBLK1-DBLK3) 및 패리티 블록(PBLK)을 복수의 비휘발성 메모리들(NVM11-NVM14)에 걸쳐서 저장할 수 있다. 예를 들어, 제1 데이터 블록(DBLK1)은 제1 비휘발성 메모리(NVM11)에 저장되고, 제2 데이터 블록(DBLK2)은 제2 비휘발성 메모리(NVM12)에 저장되고, 제3 데이터 블록(DBLK3)은 제3 비휘발성 메모리(NVM13)에 저장되며, 패리티 블록(PBLK)은 제4 비휘발성 메모리(NVM14)에 저장될 수 있다.
한편, 비휘발성 메모리들(NVM11-NVM14)에 저장되는 데이터 블록들(DBLK1-DBLK3) 및 패리티 블록(PBLK) 각각에는 패리티 비트들을 포함하는 내부 패리티가 부가될 수 있다. 상기 내부 패리티는 데이터 블록들(DBLK1-DBLK3) 및 패리티 블록(PBLK) 각각에 대한 ECC(Error Correction Coding) 인코딩 연산, 예를 들어 LDPC(Low Density Parity Coding) 연산을 수행함으로써 생성될 수 있다.
도 1에서 내부 패리티가 부가된 데이터 블록들(DBLK1-DBLK3)은 데이터 청크들(DCNK1-DCNK3)로 표시되고, 내부 패리티가 부가된 패리티 블록(PBLK)은 패리티 청크(PCNK)로 표시된다. 데이터 청크들(DCNK1-DCNK3) 및 패리티 청크(PCNK)는 합쳐서 스트라이프로 지칭될 수 있다. 만약 데이터 청크들(DCNK1-DCNK3) 중 하나의 데이터 청크가 ECC 디코딩 연산으로 정정될 수 없는 경우, 스트라이프에 포함된 나머지 데이터 청크들 및 패리티 청크에 대한 패리티 연산을 수행함으로써 상기 데이터 청크를 복구할 수 있다. 따라서, 스토리지 장치(100)가 비휘발성 메모리들(NVM11-NVM14)에 데이터를 스트라이핑하는 경우, 데이터의 신뢰성이 보장될 수 있다.
한편, 스트라이프에 포함된 기존 데이터 청크들 중 하나가 업데이트되는 경우, 상기 기존 데이터 청크와 동일한 스트라이프에 포함된 기존 패리티 청크 또한 업데이트되어야 한다. 따라서, 스토리지 장치(100)의 성능 저하가 야기될 수 있다.
구체적으로, 스토리지 장치(100)는 신규 데이터 블록, 기존 데이터 블록 및 기존 패리티 블록을 이용하여 패리티 연산함으로써 신규 패리티 블록을 생성하고, 상기 신규 패리티 블록에 내부 패리티를 부가함으로써 패리티 청크를 업데이트할 수 있다. 만약 스토리지 컨트롤러(110)가 상기 패리티 청크를 업데이트해야 한다면, 메모리 장치(120)에 저장된 기존 데이터 블록 및 기존 패리티 블록이 버퍼 메모리(116)로 로드되어야 하고, 신규 데이터 블록 및 업데이트된 패리티 블록이 메모리 장치(120)로 프로그램되어야 한다. 따라서, 스토리지 컨트롤러(110)와 메모리 장치(120) 간의 데이터 입출력의 양이 증가하고, 버퍼 메모리(116)의 사용량이 증가할 수 있다. 결과적으로, 스토리지 장치(100)의 성능이 저하될 수 있다.
본 발명의 실시 예에 따르면, 스토리지 장치(100)는 패리티 연산을 메모리 장치(120)로 오프로딩할 수 있다. 예를 들어, 비휘발성 메모리들(NVM11-NVM14) 중에서 기존 패리티 청크를 저장하고 있는 제4 비휘발성 메모리(NVM14)에서 패리티 연산을 수행함으로써 패리티 청크를 업데이트할 수 있다. 한편, 제4 비휘발성 메모리(NVM14)는 패리티 청크를 업데이트하기 위해서 기존 데이터 블록을 필요로 할 수 있다.
본 발명의 실시 예에 따르면, 비휘발성 메모리들(NVM11-NVM14) 각각은 스토리지 컨트롤러(110)를 통하지 않고, 데이터 버스(101)를 통해 데이터를 송수신할 수 있다. 예를 들어, 제4 비휘발성 메모리(NVM14)는 스토리지 컨트롤러(110)를 통하지 않고 제1 비휘발성 메모리(NVM11)로부터 기존 데이터 블록을 획득할 수 있다.
또한, 비휘발성 메모리들(NVM11-NVM14)은 ECC 인코딩 및 ECC 디코딩 연산을 수행할 수 있다. 따라서, 제1 비휘발성 메모리(NVM11)는 기존 데이터 청크에 ECC 디코딩 연산을 수행함으로써 에러가 정정된 데이터 블록을 생성할 수 있다. 제4 비휘발성 메모리(NVM14)는 에러가 정정된 데이터 블록을 획득할 수 있다.
본 발명의 실시 예에 따르면, 스토리지 컨트롤러(110)와 메모리 장치(120) 간의 데이터 입출력의 양이 감소할 수 있으며, 버퍼 메모리(116)의 사용량이 감소할 수 있다. 따라서, 스토리지 장치(100)의 성능이 향상될 수 있다.
본 발명의 실시 예들에 따른 스토리지 장치가 도 2 내지 도 4를 참조하여 자세히 설명된다.
도 2는 본 발명의 실시 예에 따른 스토리지 장치를 나타내는 블록도이다.
도 2를 참조하면, 스토리지 장치(200)는 스토리지 컨트롤러(210) 및 메모리 장치(220)를 포함할 수 있다. 도 2의 스토리지 컨트롤러(210) 및 메모리 장치(220)는 도 1을 참조하여 설명된 스토리지 컨트롤러(110) 및 메모리 장치(120)에 대응할 수 있다. 메모리 장치(220)와 스토리지 컨트롤러(210)는 복수의 채널들(CH1-CH4)을 통해 연결될 수 있다. 예를 들어, 스토리지 장치는 SSD(Solid State Drive)로 구현될 수 있다.
메모리 장치(220)는 복수의 비휘발성 메모리들(NVM11-NVM44)을 포함할 수 있다. 비휘발성 메모리들(NVM11-NVM44) 각각은 대응하는 웨이(way)를 통해 복수의 채널들(CH1-CH4) 중 하나에 연결될 수 있다. 예를 들어, 비휘발성 메모리들(NVM11-NVM14)은 웨이들(W11-W14)을 통해 제1 채널(CH1)에 연결되고, 비휘발성 메모리들(NVM21-NVM24)은 웨이들(W21-W24)을 통해 제2 채널(CH2)에 연결될 수 있다.
예시적인 실시 예에서, 비휘발성 메모리들(NVM11-NVM44) 각각은 컨트롤러(210)로부터의 개별적인 커맨드에 따라 동작할 수 있는 임의의 메모리 단위로 구현될 수 있다. 예를 들어, 비휘발성 메모리들(NVM11-NVM44) 각각은 칩(chip) 또는 다이(die)로 구현될 수 있다.
스토리지 컨트롤러(210)는 복수의 채널들(CH1-CH4)을 통해 메모리 장치(220)와 신호들을 송수신할 수 있다. 예를 들어, 스토리지 컨트롤러(210)는 채널들(CH1-CH4)을 통해 메모리 장치(220)로 커맨드들, 어드레스들 및 데이터를 전송하거나, 메모리 장치(220)로부터 데이터를 수신할 수 있다.
스토리지 컨트롤러(210)는 각각의 채널을 통해 해당 채널에 연결된 비휘발성 메모리들 중 하나를 선택하고, 선택된 비휘발성 메모리와 신호들을 송수신할 수 있다. 스토리지 컨트롤러(210)는 채널을 통해 선택된 비휘발성 메모리로 커맨드, 어드레스 및 데이터를 전송하거나, 선택된 비휘발성 메모리로부터 데이터를 수신할 수 있다.
스토리지 컨트롤러(210)는 서로 다른 채널들을 통해 메모리 장치(220)와 신호들을 병렬적으로 송수신할 수 있다. 예를 들어, 스토리지 컨트롤러(210)는 제1 채널(CH1)을 통해 메모리 장치(220)로 커맨드를 전송하는 동안 제2 채널(CH2)을 통해 메모리 장치(220)로 다른 커맨드를 전송할 수 있다. 그리고, 스토리지 컨트롤러(210)는 제1 채널(CH1)을 통해 메모리 장치(220)로부터 데이터를 수신하는 동안, 제2 채널(CH2)을 통해 메모리 장치(220)로부터 다른 데이터를 수신할 수 있다.
동일한 채널을 통해 스토리지 컨트롤러(210)와 연결된 비휘발성 메모리들 각각은 병렬적으로 내부 동작을 수행할 수 있다. 예를 들어, 스토리지 컨트롤러(210)는 제1 채널(CH1)을 통해 비휘발성 메모리들(NVM11-NVM14)로 커맨드 및 어드레스를 순차적으로 전송할 수 있다. 비휘발성 메모리들(NVM11-NVM14)로 커맨드 및 어드레스가 전송되면, 비휘발성 메모리들(NVM11-NVM14) 각각은 상기 커맨드에 따른 동작을 병렬적으로 수행할 수 있다.
도 2에서는 메모리 장치(220)가 4개의 채널을 통해 스토리지 컨트롤러(210)와 통신하고, 메모리 장치(220)의 각 채널에 4개씩 연결된 비휘발성 메모리들을 포함하는 것으로 도시된다. 그러나, 본 발명은 이에 제한되지 않으며, 채널들의 개수와 하나의 채널에 연결된 비휘발성 메모리의 개수는 다양하게 변경될 수 있다.
도 3은 도 2의 스토리지 장치에 포함되는 스토리지 컨트롤러를 더욱 자세히 설명하기 위한 도면이다.
스토리지 컨트롤러(210)는 호스트 인터페이스(211), 메모리 인터페이스(212) 및 CPU(Central Processing Unit, 213)를 포함할 수 있다. 또한, 스토리지 컨트롤러(210)는 패킷 매니저(215), 버퍼 메모리(216) 및 AES(Advanced Encryption Standard) 엔진(218)을 더 포함할 수 있다. CPU(213)는 FTL(Flash Translation Layer, 214)를 구동할 수 있으며, 컨트롤러(210)는 FTL(214)가 로딩되는 워킹 메모리(도시되지 않음)를 더 포함할 수 있다.
호스트 인터페이스(211)는 호스트와 패킷(packet)을 송수신할 수 있다. 호스트로부터 호스트 인터페이스(211)로 전송되는 패킷은 커맨드(command) 혹은 메모리 장치(220)에 기록될 데이터 등을 포함할 수 있으며, 호스트 인터페이스(211)로부터 호스트로 전송되는 패킷은 커맨드에 대한 응답(response) 혹은 메모리 장치(220)로부터 독출된 데이터 등을 포함할 수 있다.
메모리 인터페이스(212)는 메모리 장치(220)에 기록될 데이터를 메모리 장치(220)로 송신하거나, 메모리 장치(220)로부터 독출된 데이터를 수신할 수 있다. 이러한 메모리 인터페이스(212)는 토글(Toggle) 혹은 온파이(Open NAND Flash Interface; ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
FTL(214)은 주소 매핑(address mapping) 동작을 비롯해서, 메모리 장치(220)를 관리하기 위한 여러 기능을 수행할 수 있다. 주소 매핑 동작은 호스트로부터 수신한 논리 주소(logical address)를, 메모리 장치(220) 내에 데이터를 실제로 저장하는 데 사용되는 물리 주소(physical address)로 바꾸는 동작이다. FTL(214)는 논리 주소를 물리 주소로 변환하기 위해, 논리 주소와 물리 주소 간의 맵핑 관계를 나타내는 맵 데이터를 생성할 수 있다.
패킷 매니저(215)는 호스트와 협의된 인터페이스의 프로토콜에 따른 패킷(Packet)을 생성하거나, 호스트로부터 수신된 패킷(Packet)으로부터 각종 정보를 파싱할 수 있다.
버퍼 메모리(216)는 메모리 장치(220)에 기록될 데이터 혹은 메모리 장치(220)로부터 독출될 데이터를 임시로 저장할 수 있다. 버퍼 메모리(216)는 스토리지 컨트롤러(210) 내에 구비되는 구성일 수 있으나, 스토리지 컨트롤러(210)의 외부에 배치되어도 무방하다.
AES 엔진(218)은, 스토리지 컨트롤러(210)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)를 이용하여 수행할 수 있다.
도 4는 도 2의 스토리지 장치에 포함되는 비휘발성 메모리를 더욱 자세히 설명하기 위한 도면이다.
도 4는 비휘발성 메모리를 나타내는 예시적인 블록도이다. 도 4를 참조하면, 비휘발성 메모리(300)는 ECC 로직 회로(310), 제어 로직 회로(320), 메모리 셀 어레이(330), 페이지 버퍼 그룹(340), 전압 생성기(350), 및 로우 디코더(360)를 포함할 수 있다. 도 4에는 도시되지 않았으나, 비휘발성 메모리(300)는 외부로부터 커맨드(CMD) 및 어드레스(ADDR)를 수신하고, 외부와 데이터(DATA)를 주고받기 위한 메모리 인터페이스 회로를 더 포함할 수 있고, 또한 컬럼 로직, 프리-디코더, 온도 센서, 커맨드 디코더, 어드레스 디코더 등을 더 포함할 수 있다. 도 4의 비휘발성 메모리(300)는 도 2에 도시된 비휘발성 메모리들(NVM11-NVM44) 중 어느 것과도 대응할 수 있다.
ECC 로직 회로(310)는 메모리 장치(220)로부터 독출되는 독출 데이터에 대한 에러 검출 및 정정 기능을 수행할 수 있다. 보다 구체적으로, ECC 로직 회로(310)는 메모리 장치(220)에 기입될 기입 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 기입 데이터와 함께 메모리 장치(220) 내에 저장될 수 있다. 메모리 장치(220)로부터의 데이터 독출 시, ECC 로직 회로(310)는 독출 데이터와 함께 메모리 장치(220)로부터 독출되는 패리티 비트들을 이용하여 독출 데이터의 에러를 정정하고, 에러가 정정된 독출 데이터를 출력할 수 있다.
제어 로직 회로(320)는 비휘발성 메모리(300) 내의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(320)는 메모리 인터페이스 회로로부터의 커맨드(CMD) 및/또는 어드레스(ADDR)에 응답하여 각종 제어 신호들을 출력할 수 있다. 예를 들어, 제어 로직 회로(320)는 전압 제어 신호(CTRL_vol), 로우 어드레스(X-ADDR), 및 컬럼 어드레스(Y-ADDR)를 출력할 수 있다.
메모리 셀 어레이(330)는 복수의 메모리 블록들(BLK1 내지 BLKz)을 포함할 수 있고(z는 양의 정수), 복수의 메모리 블록들(BLK1 내지 BLKz) 각각은 복수의 메모리 셀들을 포함할 수 있다. 메모리 셀 어레이(330)는 비트 라인들(BL)을 통해 페이지 버퍼부(340)에 연결될 수 있고, 워드 라인들(WL), 스트링 선택 라인들(SSL), 및 그라운드 선택 라인들(GSL)을 통해 로우 디코더(360)에 연결될 수 있다.
메모리 셀 어레이(330)는 복수의 메모리 셀들을 포함할 수 있다. 예를 들어, 복수의 메모리 셀들은 플래시 메모리 셀들일 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 메모리 셀들은 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) 플래시 메모리 셀들인 실시 예를 중심으로 본 발명의 실시 예들이 설명될 것이다.
예시적인 실시 예에서, 메모리 셀 어레이(330)는 3차원 메모리 셀 어레이를 포함할 수 있고, 3차원 메모리 셀 어레이는 복수의 낸드 스트링들을 포함할 수 있다. 각 낸드 스트링은 기판 위에 수직으로 적층된 워드 라인들에 각각 연결된 메모리 셀들을 포함할 수 있다. 미국 특허공개공보 제7,679,133호, 미국 특허공개공보 제8,553,466호, 미국 특허공개공보 제8,654,587호, 미국 특허공개공보 제8,559,235호, 및 미국 특허출원공개공보 제2011/0233648호는 본 명세서에 인용 형식으로 결합된다. 예시적인 실시 예에서, 메모리 셀 어레이(330)는 2차원 메모리 셀 어레이를 포함할 수 있고, 2차원 메모리 셀 어레이는 행 및 열 방향을 따라 배치된 복수의 낸드 스트링들을 포함할 수 있다.
페이지 버퍼 그룹(340)은 복수의 페이지 버퍼들(PB1-PBn)을 포함할 수 있고(n은 3 이상의 정수), 복수의 페이지 버퍼들(PB1-PBn)은 복수의 비트 라인들(BL)을 통해 메모리 셀들과 각각 연결될 수 있다. 페이지 버퍼 그룹(340)은 컬럼 어드레스(Y-ADDR)에 응답하여 비트 라인들(BL) 중 적어도 하나의 비트 라인을 선택할 수 있다. 페이지 버퍼 그룹(340)은 동작 모드에 따라 기입 드라이버 또는 감지 증폭기로서 동작할 수 있다. 예를 들어, 프로그램 동작 시, 페이지 버퍼 그룹(340)은 선택된 비트 라인으로 프로그램될 데이터에 대응하는 비트 라인 전압을 인가할 수 있다. 독출 동작 시, 페이지 버퍼 그룹(340)는 선택된 비트 라인의 전류 또는 전압을 감지하여 메모리 셀에 저장된 데이터를 감지할 수 있다. 복수의 페이지 버퍼들(PB1-PBn) 각각은, 프로그램될 데이터 비트 또는 감지된 데이터 비트를 버퍼링하기 위한 복수의 래치들을 포함할 수 있다.
전압 생성기(350)는 전압 제어 신호(CTRL_vol)를 기반으로 프로그램, 독출, 및 소거 동작들을 수행하기 위한 다양한 종류의 전압들을 생성할 수 있다. 예를 들어, 전압 생성기(350)는 워드 라인 전압(VWL)으로서 프로그램 전압, 독출 전압, 프로그램 검증 전압, 소거 전압 등을 생성할 수 있다.
로우 디코더(360)는 로우 어드레스(X-ADDR)에 응답하여 복수의 워드 라인들(WL) 중 하나를 선택할 수 있고, 복수의 스트링 선택 라인들(SSL) 중 하나를 선택할 수 있다. 예를 들어, 프로그램 동작 시, 로우 디코더(360)는 선택된 워드 라인으로 프로그램 전압 및 프로그램 검증 전압을 인가하고, 독출 동작 시, 선택된 워드 라인으로 독출 전압을 인가할 수 있다.
도 1을 참조하여 설명된 것과 같이, 스토리지 장치(200)는 저장된 데이터의 신뢰성을 보장하기 위해 ECC 연산 및 패리티 연산을 수행하고, 데이터를 스트라이핑할 수 있다. 도 5a 내지 도 5c는 스토리지 장치의 스트라이핑 동작을 설명하기 위한 도면들이다.
도 5a는 하나의 스트라이프에 포함될 수 있는 데이터 청크(DCNK)를 예시한다. 데이터 청크(DCNK)는 데이터 블록(DBLK) 및 내부 패리티(PINT)를 포함할 수 있다. 데이터 블록(DBLK)은 호스트에 의해 액세스될 수 있는 데이터일 수 있으며, 정해진 크기를 가질 수 있다. 예를 들어, 데이터 블록(DBLK)은 하나 이상의 논리 주소에 할당된 저장 공간에 해당하는 크기를 가질 수 있다. 내부 패리티(PINT)는 데이터 블록(BLNK)에 대한 ECC 인코딩 연산을 수행함으로써 생성된 패리티 비트들을 포함할 수 있다.
도 5b는 하나의 스트라이프(Stripe)를 예시한다. 스트라이프는 정해진 수의 데이터 청크들(DCNK1-DCNK3) 및 패리티 청크(PCNK)를 포함할 수 있다. 경우에 따라, 하나의 스트라이프에 포함된 데이터 청크들(DCNK1-DCNK3)은 논리적으로 연속하는 데이터를 포함할 수 있다. 예를 들어, 호스트로부터 연속하여 수신된 데이터는 정해진 크기의 데이터 블록들(DBLK1-DBLK3)로 나누어질 수 있다. 데이터 블록들(DBLK1-DBLK3) 각각에 내부 패리티(PINT)가 부가됨으로써 데이터 청크들(DCNK1-DCNK3)이 생성될 수 있다.
패리티 청크(PCNK)는 정해진 개수의 데이터 청크들(DCNK1-DCNK3)을 이용한 패리티 연산에 기초하여 생성될 수 있다. 예를 들어, 데이터 청크들(DCNK1-DCNK3) 각각의 복수의 비트들에 대해, 동일한 자릿수를 갖는 비트들끼리 XOR 연산을 함으로써 패리티 청크(PCNK)를 생성할 수 있다. 그러나, 스트라이프에 포함될 수 있는 데이터 청크들의 개수와, 본 발명에 적용될 수 있는 패리티 연산 방식은 이에 제한되지 않는다.
하나의 스트라이프는 복수의 비휘발성 메모리들(NVM11-NVM14)에 걸쳐서 저장될 수 있다. 예를 들어, 제1 데이터 청크(DCNK1)는 제1 비휘발성 메모리(NVM11), 제2 데이터 청크(DCNK2)는 제2 비휘발성 메모리(NVM12), 제3 데이터 청크(DCNK3)는 제3 비휘발성 메모리(NVM13)에 저장될 수 있으며, 패리티 청크(PCNK)는 제4 비휘발성 메모리(NVM14)에 저장될 수 있다.
스트라이프에 포함된 데이터 청크에 정정 불가능한 에러가 발생하더라도, 상기 스트라이프에 포함된 나머지 데이터 청크들 및 패리티 청크를 이용하면 상기 데이터 청크가 복구될 수 있다. 도 5c는 데이터 청크의 복구 방법을 나타낸다.
예를 들어, 호스트로부터 제2 데이터 블록(DBLK2)이 요청되는 경우, 스토리지 장치는 제2 데이터 블록(DBLK2)이 포함된 제2 데이터 청크(DCNK2)의 ECC 디코딩 연산을 수행함으로써 에러가 정정된 제2 데이터 블록(DBLK2)을 호스트로 제공할 수 있다. 그러나, 제2 데이터 청크(DCNK2)에 포함된 에러 비트의 수가 ECC 디코딩 연산에 의해 정정될 수 있는 한계를 초과하는 경우, ECC 디코딩 연산을 수행하더라도 제2 데이터 청크(DCNK2)의 에러가 정정될 수 없다.
제2 데이터 청크(DCNK2)를 복구하기 위해, 나머지 데이터 청크들(DCNK1, DCNK3)과 패리티 청크(PCNK)에 대한 패리티 연산이 수행될 수 있다. 예를 들어, 데이터 청크들(DCNK1, DCNK3)과 패리티 청크(PCNK) 각각에 대해 ECC 디코딩 연산을 수행하면 데이터 청크들(DCNK1, DCNK3)과 패리티 청크(PCNK)의 에러가 정정될 수 있다. 그리고, 에러가 정정된 데이터 청크들(DCNK1, DCNK3)과 패리티 청크(PCNK)의 동일한 자릿수의 비트들끼리 XOR 연산을 수행하면 제2 데이터 청크(DCNK2)가 복구될 수 있다.
한편, 어떤 스트라이프에 포함된 데이터 청크가 업데이트되면, 상기 스트라이프에 포함되는 기존 패리티 청크는 더 이상 유효하지 않게 되므로, 기존 패리티 청크 또한 업데이트될 수 있다. 패리티 청크는, 기존 패리티 청크, 기존 데이터 청크 및 신규 데이터 청크에 대한 XOR 연산을 수행함으로써 업데이트될 수 있다. 예를 들어, 기존 데이터 청크 및 신규 데이터 청크에 XOR 연산을 수행하면 상기 기존 데이터 청크와 상기 신규 데이터 청크에서 어느 자릿수의 비트들이 서로 다른 값을 갖는지를 나타내는 차이 데이터가 생성될 수 있다. 상기 기존 패리티 청크와 상기 차이 데이터의 XOR 연산을 수행하면 상기 기존 데이터 청크와 상기 신규 데이터 청크에서 서로 다른 값을 갖는 자릿수의 비트들이 반전됨으로써 패리티 청크가 업데이트될 수 있다.
본 발명의 실시 예에 따르면, 스토리지 장치는 패리티 청크를 업데이트하는 동작의 적어도 일부를 비휘발성 메모리로 오프로딩함으로써 스토리지 장치의 성능을 향상시킬 수 있다.
도 6a 내지 도 6e는 본 발명의 제1 실시 예에 따라 스토리지 장치가 패리티 청크를 업데이트하는 방법을 설명하기 위한 도면이다. 도 6a 내지 도 6e에서는 도 1을 참조하여 설명된 스토리지 장치(100)를 예로 들어 패리티 청크의 업데이트 방법이 설명된다.
도 6a를 참조하면, 단계 S11에서 스토리지 컨트롤러(110)는 호스트로부터 신규 데이터 블록(NDBLK1)을 수신하고, 신규 데이터 블록(NDBLK1)을 버퍼 메모리(116)에 버퍼링할 수 있다. 신규 데이터 블록(NDBLK1)은 메모리 장치(120)에 저장된 기존 데이터 청크(ODCNK1)에 포함된 기존 데이터 블록이 업데이트된 데이터일 수 있다. 예를 들어, 신규 데이터 블록(NDBLK1)은 상기 기존 데이터 블록과 동일한 논리 주소를 가질 수 있다.
단계 S12에서, 스토리지 컨트롤러(110)는 신규 데이터 블록(NDBLK1)을 제1 채널(CH1) 및 제1 웨이(W11)를 통해 제1 비휘발성 메모리(NVM11)로 제공할 수 있다. 단계 S13에서, 제1 비휘발성 메모리(NVM11)는 신규 데이터 블록(NDBLK1)에 ECC 인코딩 연산을 수행함으로써 신규 데이터 청크(NDCNK1)를 생성하고, 신규 데이터 청크(NDCNK1)를 페이지 버퍼 그룹(PBG)에 버퍼링할 수 있다. 단계 S14에서, 제1 비휘발성 메모리(NVM12)는 버퍼링된 신규 데이터 청크(NDCNK1)를 메모리 셀 어레이(MCA)에 프로그램할 수 있다.
기존 데이터 청크(ODCNK1)는 다른 데이터 청크들(ODCNK2-ODCNK3) 및 기존 패리티 청크(OPCNK)와 함께 하나의 스트라이프를 구성할 수 있다. 신규 데이터 블록(NDBLK1)에 기초하여 기존 데이터 청크(ODCNK1)를 업데이트하는 경우, 기존 패리티 청크(OPCNK) 또한 업데이트되어야 할 수 있다.
도 6b를 참조하면, 단계 S15에서 스토리지 컨트롤러(110)는 신규 데이터 블록(NDBLK1)을 기존 패리티 청크(OPCNK)가 저장된 제4 비휘발성 메모리(NVM14)로 제공할 수 있다.
단계 S16에서, 제4 비휘발성 메모리(NVM14)는 스토리지 컨트롤러(110)로부터 수신된 신규 데이터 블록(NDBLK1)에 ECC 인코딩 연산을 수행함으로써 신규 데이터 청크(NDCNK1)를 생성할 수 있다. 그리고, 제4 비휘발성 메모리(NVM14)는 신규 데이터 청크(NDCNK1)를 페이지 버퍼 그룹(PBG)에 버퍼링할 수 있다.
단계 S17에서, 제4 비휘발성 메모리(NVM14)는 메모리 셀 어레이(MCA)에 저장된 기존 패리티 청크(OPCNK)를 페이지 버퍼 그룹(PBG)에 버퍼링할 수 있다. 제4 비휘발성 메모리(NVM14)는 ECC 로직 회로를 이용하여 메모리 셀 어레이(MCA)로부터 독출된 기존 패리티 청크(OPCNK)의 에러를 검출 및 정정한 후에, 에러가 정정된 기존 패리티 청크(OPCNK)를 페이지 버퍼 그룹(PBG)에 버퍼링할 수 있다.
한편, 페이지 버퍼 그룹(PBG)은 각각이 메모리 셀 어레이(MCA)의 비트 라인에 대응하는 복수의 페이지 버퍼들을 포함할 수 있으며, 복수의 페이지 버퍼들 각각은 복수의 래치(latch)들을 포함할 수 있다. 따라서, 페이지 버퍼 그룹(PBG)은 신규 데이터 청크(NDCNK1)와 기존 패리티 청크(OPCNK)를 함께 버퍼링할 수 있다.
도 6c를 참조하면, 제1 비휘발성 메모리(NVM11)는 기존 데이터 청크(ODCNK1)를 제4 비휘발성 메모리(NVM14)로 제공할 수 있다. 본 발명의 실시 예에 따르면, 제1 비휘발성 메모리(NVM11)가 기존 데이터 청크(ODCNK1)를 스토리지 컨트롤러(110)로 전송하지 않고, 데이터 버스(101)를 통해 곧바로 제4 비휘발성 메모리(NVM14)로 전송할 수 있다. 바꾸어 말하면, 상기 기존 데이터 청크(ODCNK1)는 버퍼 메모리(116)를 경유하지 않고 비휘발성 메모리(NVM14)로 전송될 수 있다.
비휘발성 메모리들 간에 스토리지 컨트롤러(110)를 통하지 않고 데이터 버스(101)를 통해 데이터를 전송할 수 있는 방법은 도 8a 내지 도 9b를 참조하여 후술된다.
다시 도 6c를 참조하면, 제4 비휘발성 메모리(NVM14)의 페이지 버퍼 그룹(PBG)에는 신규 데이터 청크(NDCNK1)와 기존 패리티 청크(OPCNK)와 함께 기존 데이터 청크(ODCNK1)가 버퍼링될 수 있다. 한편, 제1 비휘발성 메모리(NVM11)에서 제4 비휘발성 메모리(NVM14)로 전송되는 기존 데이터 청크(ODCNK1)는 제1 및 제4 비휘발성 메모리(NVM11, NVM14)의 ECC 로직 회로를 경유할 수 있다. 따라서, 제4 비휘발성 메모리(NVM14)에 버퍼링되는 기존 데이터 청크(ODCNK1)는 에러가 정정된 데이터 청크일 수 있다.
제4 비휘발성 메모리(NVM14)는 페이지 버퍼 그룹(PBG)에 버퍼링된 신규 데이터 청크(NDCNK1), 기존 패리티 청크(OPCNK) 및 기존 데이터 청크(ODCNK1)에 대한 패리티 연산을 수행할 수 있다.
도 6d는 제4 비휘발성 메모리(NVM14)의 페이지 버퍼 그룹을 상세히 도시한다. 도 4를 참조하여 설명된 것과 같이, 페이지 버퍼 그룹에는 복수의 페이지 버퍼들(PB1-PBn)이 포함될 수 있다. 페이지 버퍼(PB1-PBn)들 각각은 복수의 래치들을 포함할 수 있으며, 복수의 비트라인들로부터 1비트씩 리드된 데이터를 버퍼링할 수 있다.
도 6d는 복수의 페이지 버퍼들(PB1-PBn) 중 3개의 페이지 버퍼들(PB1-PB3)을 예시한다. 제1 페이지 버퍼(PB1)의 래치들(LA11-LA1m)에 신규 데이터 청크(NDCNK1)가 버퍼링되고, 제2 페이지 버퍼(PB2)의 래치들(LA21-LA2m)에 기존 데이터 청크(ODCNK1)가 버퍼링되고, 제3 페이지 버퍼(PB3)의 래치들(LA31-LA3m)에 기존 패리티 청크(OPCNK)가 버퍼링될 수 있다. 제4 비휘발성 메모리(NVM14)는 각 페이지 버퍼들(PB1-PB3)에 버퍼링된 데이터끼리 XOR 연산을 수행함으로써 신규 패리티 청크를 생성할 수 있다. 예를 들어, 제4 비휘발성 메모리(NVM14)는 첫 번째 래치들(LA11, LA12, LA13)에 버퍼링된 비트들, 두 번째 래치들(LA21, LA22, LA23)에 버퍼링된 비트들부터, 마지막 래치들(LA1m, LA2m, LA3m)에 버퍼링된 비트들까지 각각 XOR 연산을 수행할 수 있다. XOR 연산을 위해, 페이지 버퍼 그룹은 연산기를 더 포함할 수 있다.
도 6e를 참조하면, 단계 S19에서 제4 비휘발성 메모리(NVM14)는 페이지 버퍼 그룹 내에서의 XOR 연산을 통해 생성된, 신규 패리티 청크(NPCNK)를 메모리 셀 어레이에 프로그램할 수 있다.
스토리지 컨트롤러(110)는 버퍼 메모리(116)에 버퍼링된 맵 데이터(MAPD)를 업데이트함으로써 스트라이프의 업데이트를 완료할 수 있다. 구현에 따라, 맵 데이터(MAPD)는 메모리 장치(120)에 저장된 스트라이프들 각각에 대응하는 논리 주소들과 물리 주소들, 그리고 패리티 청크가 저장된 물리 주소들의 관계를 포함할 수 있다. 예를 들어, 맵 데이터(MAPD)는 기존 데이터 청크들(ODCNK1-ODCNK3) 및 패리티 청크(OPCNK)를 포함하는 제1 스트라이프(Stripe1)에 대해서, 기존 데이터 청크들(ODCNK1-ODCNK3)을 가리키는 논리 주소들(LBA1-LBA3)과, 기존 데이터 청크들(ODCNK1-ODCNK3)이 저장된 저장 공간을 가리키는 물리 주소들(PA11-PA31) 간의 매핑 관계를 포함할 수 있다. 그리고, 패리티 청크(PCNK)가 저장된 물리 주소(PA41)를 더 포함할 수 있다.
신규 데이터 청크(NDCNK1)와 신규 패리티 청크(NPCNK)는 각각 기존 데이터 청크(ODCNK1) 및 기존 패리티 청크(OPCNK)와는 다른 저장 공간에 저장될 수 있다. 스토리지 컨트롤러(110)는 기존 데이터 청크(ODCNK1) 및 기존 패리티 청크(OPCNK) 대신에 신규 데이터 청크(NDCNK1) 및 신규 패리티 청크(NPCNK)가 액세스될 수 있도록, 맵 데이터(MAPD)에서 논리 주소(LBA1)에 매핑된 물리 주소(PA12)를 업데이트하고, 패리티 청크가 저장된 물리 주소(PA42)를 업데이트할 수 있다.
도 6a 내지 도 6e를 참조하여 설명된 본 발명의 제1 실시 예에 따르면, 메모리 장치(120)의 제4 비휘발성 메모리(NVM14)에서 패리티 연산을 수행함으로써 신규 패리티 청크(NPCNK)를 생성할 수 있다. 그리고, 제4 비휘발성 메모리(NVM14)는 스토리지 컨트롤러(110)를 통하지 않고 제1 비휘발성 메모리(NVM11)로부터 패리티 연산을 수행하기 위해 필요로 하는 기존 데이터 청크(NDCNK1)를 획득할 수 있다. 따라서, 스토리지 컨트롤러(110)와 메모리 장치(120) 간 데이터 입출력 양이 감소하고 버퍼 메모리(116)의 사용량이 감소할 수 있다. 결과적으로, 스토리지 장치(100)의 오버헤드가 경감되고 성능이 향상될 수 있다.
한편, 본 발명의 제1 실시 예에 따르면, 신규 패리티 청크(NPCNK)를 생성하기 위해 기존 패리티 청크(OPCNK)를 저장하고 있는 제4 비휘발성 메모리(NVM14)에서 기존 데이터 청크(ODCNK1), 신규 데이터 청크(NDCNK1) 및 기존 패리티 청크(OPCNK)에 대한 패리티 연산을 수행할 수 있다. 그러나, 본 발명은 제4 비휘발성 메모리(NVM14)가 신규 패리티 청크(NPCNK)를 생성하기 위한 모든 패리티 연산을 수행하는 것으로 제한되지 않으며, 기존 데이터 청크(ODCNK1)를 저장하고 있는 제1 비휘발성 메모리(NVM11)와 제4 비휘발성 메모리(NVM14)가 패리티 연산을 나누어 수행할 수 있다.
도 7a 내지 도 7b는 본 발명의 제2 실시 예에 따라 스토리지 장치가 패리티 청크를 업데이트하는 방법을 설명하기 위한 도면들이다. 도 7a 내지 도 7b에서는 도 1을 참조하여 설명된 스토리지 장치(100)를 예로 들어 패리티 청크 업데이트 방법이 설명되며, 본 발명의 제1 실시 예와 공통된 내용은 간략히 설명된다.
도 7a를 참조하면, 단계 S21에서 스토리지 컨트롤러(110)는 호스트로부터 신규 데이터 블록(NDBLK1)을 수신하고, 신규 데이터 블록(NDBLK1)을 버퍼 메모리(116)에 버퍼링할 수 있다. 단계 S22에서, 스토리지 컨트롤러(110)는 기존 데이터 청크(NDCNK1)가 저장된 제1 비휘발성 메모리(NVM11)에 신규 데이터 블록(NDBLK1)을 제공할 수 있다.
단계 S23에서, 제1 비휘발성 메모리(NVM11)는 ECC 로직 회로를 이용하여 신규 데이터 블록(NDBLK1)에 대한 ECC 인코딩 연산을 수행함으로써 신규 데이터 청크(NDCNK1)를 생성할 수 있다. 제1 비휘발성 메모리(NVM11)는 신규 데이터 청크(NDCNK1)를 페이지 버퍼 그룹(PBG)에 버퍼링할 수 있다.
단계 S24에서, 제1 비휘발성 메모리(NVM11)는 신규 데이터 청크(NDCNK1)를 메모리 셀 어레이(MCA)에 프로그램할 수 있다. 제1 비휘발성 메모리(NVM11)는, 신규 데이터 청크(NDCNK1)를 프로그램한 이후에도 신규 데이터 청크(NDCNK1)를 페이지 버퍼 그룹(PBG)에 버퍼링된 채로 유지할 수 있다.
단계 S25에서, 제1 비휘발성 메모리(NVM11)는 기존 데이터 청크(ODCNK1)를 메모리 셀 어레이(MCA)로부터 리드하고, 기존 데이터 청크(ODCNK1)를 페이지 버퍼 그룹(PBG)에 버퍼링할 수 있다. 제1 비휘발성 메모리(NVM11)는 기존 데이터 청크(ODCNK1) 및 신규 데이터 청크(NDCNK1)의 비트들에 대해 XOR 연산을 수행함으로써, 기존 데이터 청크(ODCNK1) 및 신규 데이터 청크(NDCNK1)에서 어느 자릿수의 비트들이 서로 다른 값을 갖는지를 나타내는 차이 데이터(DIFF1)를 생성할 수 있다.
도 7b를 참조하면, 단계 S26에서 기존 패리티 청크(OPCNK)를 저장하고 있는 제4 비휘발성 메모리(NVM14)는 스토리지 컨트롤러(110)를 경유하지 않고 제1 비휘발성 메모리(NVM11)로부터 차이 데이터(DIFF1)를 획득하고, 획득한 차이 데이터(DIFF1)를 페이지 버퍼 그룹(PBG)에 버퍼링할 수 있다.
단계 S27에서, 제4 비휘발성 메모리(NVM14)는 메모리 셀 어레이(MCA)로부터 기존 패리티 청크(OPCNK)를 획득하고, 페이지 버퍼 그룹(PBG)에 버퍼링할 수 있다. 제4 비휘발성 메모리(NVM14)는 페이지 버퍼 그룹(PBG)에 버퍼링된 차이 데이터(DIFF1) 및 기존 패리티 청크(OPCNK)에 대한 XOR 연산을 수행함으로써 신규 패리티 청크(NPCNK)를 생성할 수 있다.
단계 S28에서, 제4 비휘발성 메모리(NVM14)는 신규 패리티 청크(NPCNK)를 메모리 셀 어레이(MCA)에 프로그램함으로써 스트라이프의 업데이트를 완료할 수 있다.
도 7a 및 도 7b를 참조하여 설명된 본 발명의 제2 실시 예에 따르면, 기존 데이터 청크(ODCNK1)를 저장하고 있는 제1 비휘발성 메모리(NVM11)가 기존 데이터 청크(ODCNK1)와 신규 데이터 청크(NDCNK1)를 이용하여 XOR 연산을 수행하고, 차이 데이터(DIFF1)를 제4 비휘발성 메모리(NVM14)로 제공할 수 있다. 제4 비휘발성 메모리(NVM14)는 스토리지 컨트롤러(110)로부터 신규 데이터 청크(NDCNK1)를 획득하지 않더라도 차이 데이터(DIFF1)를 이용하여 신규 패리티 청크(NPCNK)를 생성할 수 있다. 따라서, 스토리지 컨트롤러(110)와 메모리 장치(120) 간 데이터 입출력 양이 더욱 감소하고, 스토리지 장치(100)의 성능이 향상될 수 있다.
이하에서, 비휘발성 메모리들 간에 스토리지 컨트롤러(110)를 통하지 않고 데이터 버스(101)를 통해 데이터를 전송할 수 있는 방법이 도 8a 내지 도 9b를 참조하여 자세히 설명된다.
도 8a 내지 도 8d는 본 발명의 실시 예와는 다른 비교예에 따른 스토리지 장치의 데이터 송수신 방법을 설명하기 위한 도면들이다. 도 8a 내지 도 8d를 참조하면, 비교예에 따른 스토리지 장치는 본 발명의 실시 예에 따른 스토리지 장치와 유사하게 스토리지 컨트롤러, 데이터 버스(BUS) 및 복수의 비휘발성 메모리들(NVM1-NVM4)을 포함할 수 있다.
도 8a 및 도 8b는 스토리지 컨트롤러가 제1 비휘발성 메모리(NVM1)로부터 데이터를 획득하는 방법을 설명한다.
도 8a를 참조하면, 스토리지 컨트롤러는 제1 비휘발성 메모리(NVM1)로 데이터를 요청하기 위해, 제1 비휘발성 메모리(NVM1)가 연결된 채널(CH)로 리드 인에이블 신호(RE)를 출력할 수 있다. 비휘발성 메모리들(NVM1-NVM4)은 데이터 버스(BUS)를 공유할 수 있다. 채널(CH)로 출력된 리드 인에이블 신호(RE)는 데이터 버스(BUS)를 통해 비휘발성 메모리들(NVM1-NVM4)에 전달될 수 있다.
스토리지 컨트롤러는 비휘발성 메모리들(NVM1-NVM4) 중 제1 비휘발성 메모리(NVM1)만이 리드 인에이블 신호(RE)에 응하여 데이터를 출력할 수 있도록 제1 비휘발성 메모리(NVM1)만을 인에이블할 수 있다. 구체적으로, 스토리지 컨트롤러는 리드 인에이블 신호(RE)를 출력하기 전에, 제1 비휘발성 메모리(NVM1)에 대한 칩 인에이블 신호를 출력함으로써 제1 비휘발성 메모리(NVM1)를 인에이블할 수 있다. 인에이블된 제1 비휘발성 메모리(NVM1)는 리드 인에이블 신호(RE)에 응하여 유효한 동작을 수행할 수 있다. 그러나, 나머지 비휘발성 메모리들(NVM2-NVM4)은 디스에이블되어 있으므로, 전달된 리드 인에이블 신호(RE)를 무시할 수 있다.
도 8b를 참조하면, 제1 비휘발성 메모리(NVM1)는 리드 인에이블(RE) 신호에 응하여 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 출력할 수 있다. 제1 비휘발성 메모리(NVM1)가 웨이(W1)를 통해 출력하는 신호들(DQ/DQS)은, 데이터 버스(BUS)를 통해 스토리지 컨트롤러뿐만 아니라, 나머지 비휘발성 메모리(NVM2-NVM4)로도 전달될 수 있다. 그러나, 나머지 비휘발성 메모리들(NVM2-NVM4)은 디스에이블되어 있으므로, 전달된 신호들(DQ/DQS)를 무시할 수 있으며, 스토리지 컨트롤러는 신호들(DQ/DQS)을 유효하게 수신할 수 있다.
비교예에 따른 스토리지 장치에서, 비휘발성 메모리들 간에 스토리지 컨트롤러를 통하지 않고 데이터를 전송하는 것에는 한계가 있다. 도 8c 및 도 8d는 제1 비휘발성 메모리(NVM1)에서 제4 비휘발성 메모리(NVM4)로 직접 데이터를 전송하려는 경우를 예로 들어, 비교예에 따른 스토리지 장치에서 비휘발성 메모리들 간에 데이터를 전송하는 것의 한계를 설명한다.
도 8c를 참조하면, 제1 비휘발성 메모리(NVM1)는 데이터를 출력하기 위해 인에이블되고, 제4 비휘발성 메모리(NVM4)는 데이터를 유효하게 수신하기 위해 인에이블될 수 있다.
스토리지 컨트롤러는 채널(CH)을 통해 리드 인에이블 신호(RE)를 출력할 수 있다. 제1 비휘발성 메모리(NVM1)에 도달한 리드 인에이블 신호(RE)는 유효하게 수신될 수 있으며, 제2 및 제3 비휘발성 메모리(NVM2, NVM3)에 도달한 리드 인에이블 신호(RE)는 무시될 수 있다. 한편, 데이터를 수신하기 위해 인에이블된 제4 비휘발성 메모리(NVM4)에서도 리드 인에이블 신호(RE)가 유효하게 수신될 수 있다.
도 8d를 참조하면, 제1 비휘발성 메모리(NVM1)는 리드 인에이블 신호(RE)에 응하여 신호들(DQ/DQS)을 출력할 수 있다. 제1 비휘발성 메모리(NVM1)로부터 출력된 신호들(DQ/DQS)은 데이터 버스(BUS)를 통해 제4 비휘발성 메모리(NVM4)로 도달할 수 있다.
그런데, 신호들(DQ/DQS)을 수신해야 할 제4 비휘발성 메모리(NVM4)도 마찬가지로 리드 인에이블 신호(RE)에 응하여 신호들(DQ/DQS)을 출력할 수 있다. 제1 비휘발성 메모리(NVM1)로부터 출력된 신호들과 제4 비휘발성 메모리(NVM4)로부터 출력된 신호들이 충돌할 수 있다. 따라서, 제4 비휘발성 메모리(NVM4)는 제1 비휘발성 메모리(NVM1)로부터 출력된 신호들(DQ/DQS)을 정상적으로 수신하지 못할 수 있다.
본 발명의 실시 예에 따르면, 스토리지 컨트롤러는 비휘발성 메모리의 데이터 입력 또는 출력을 선택적으로 인에이블할 수 있다. 예를 들어, 입력-인에이블된 비휘발성 메모리는 라이트 인에이블 신호(WE)를 유효하게 수신할 수 있으나, 리드 인에이블 신호(RE)는 무시할 수 있다. 반면에, 출력-인에이블된 비휘발성 메모리는 리드 인에이블 신호(RE)를 유효하게 수신할 수 있으나, 라이트 인에이블 신호(WE)는 무시할 수 있다.
도 9a 및 도 9b는 본 발명의 실시 예에 따른 비휘발성 메모리들 간 데이터 송수신 방법을 설명하는 도면들이다. 도 9a 및 도 9b의 스토리지 장치(100)는 도 1을 참조하여 설명된 스토리지 장치(100)에 대응할 수 있다. 도 9a 및 도 9b에서 제1 비휘발성 메모리(NVM1)에서 제4 비휘발성 메모리(NVM4)로 직접 데이터를 전송하려는 경우를 예로 들어 본 발명의 실시 예가 설명된다.
도 9a를 참조하면, 스토리지 컨트롤러(110)는 제1 비휘발성 메모리(NVM11)의 데이터가 제4 비휘발성 메모리(NVM14)로 전달될 수 있도록 제1 비휘발성 메모리(NVM11)의 데이터 출력 기능을 인에이블하고, 제4 비휘발성 메모리(NVM14)의 데이터 입력 기능을 인에이블할 수 있다.
스토리지 컨트롤러(110)는 채널(CH1)로 리드 인에이블 신호(RE)를 출력할 수 있다. 채널(CH1)로 출력된 리드 인에이블 신호(RE)는 데이터 버스(101)를 통해 비휘발성 메모리들(NVM11-NVM14)로 전달될 수 있다. 리드 인에이블 신호(RE)는 출력 기능이 인에이블된 제1 비휘발성 메모리(NVM11)에서 유효하게 수신될 수 있다. 그러나, 리드 인에이블 신호(RE)는 디스에이블된 제2 및 제3 비휘발성 메모리(NVM2, NVM3)와 입력-인에이블된 제4 비휘발성 메모리(NVM14)에서는 무시될 수 있다.
도 9b를 참조하면, 제1 비휘발성 메모리(NVM11)는 리드 인에이블 신호(RE)에 응하여 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 웨이(W11)를 통해 출력할 수 있다. 반면에, 리드 인에이블 신호(RE)가 무시된 제4 비휘발성 메모리(NVM14)에서는 신호들을 출력하지 않을 수 있다.
제1 비휘발성 메모리(NVM11)로부터 출력된 신호들(DQ/DQS)은 입력 기능이 인에이블된 제4 비휘발성 메모리(NVM14)에서 유효하게 수신될 수 있으며, 디스에이블된 제2 및 제3 비휘발성 메모리(NVM12, NVM13)에서는 무시될 수 있다. 결과적으로, 제4 비휘발성 메모리(NVM14)는 제1 비휘발성 메모리(NVM11)로부터 출력된 신호들(DQ/DQS)을 스토리지 컨트롤러(110)를 통하지 않고 데이터 버스(101)를 통해 수신할 수 있다.
도 9a 및 도 9b를 참조하여 설명된 바에 따르면, 비휘발성 메모리들 간에 스토리지 컨트롤러(110)를 통하지 않고 데이터를 전송할 수 있다. 비휘발성 메모리들 간에 데이터를 전송하는 것은 스토리지 컨트롤러(110)에 의해 제어될 수 있다. 예를 들어, 전송될 데이터가 저장된 소스(source) 비휘발성 메모리와, 상기 데이터가 전송될 목적지(destination) 비휘발성 메모리를 지정하는 이동(move) 커맨드가 정의될 수 있다. 스토리지 컨트롤러(110)는 메모리 장치(120)로 리드 커맨드, 라이트 커맨드를 전송하는 것과 마찬가지로 이동 커맨드를 출력함으로써 비휘발성 메모리들 간에 데이터를 전송하도록 지시할 수 있다.
본 발명의 실시 예에 따르면, 스토리지 컨트롤러(110)는 비휘발성 메모리들의 입력 기능 및 출력 기능을 선택적으로 인에이블할 수 있으며, 비휘발성 메모리들 간에 스토리지 컨트롤러(110)를 경유하지 않고 데이터 전송을 가능하게 할 수 있다. 따라서, 스토리지 컨트롤러(110)와 비휘발성 메모리들 간의 데이터 입출력 양이 감소하고, 스토리지 장치(100)의 성능이 향상될 수 있다.
한편, 스토리지 컨트롤러와 비휘발성 메모리들에는, 입력 인에이블 신호와 출력 인에이블 신호를 송수신하기 위한 입출력 핀들이 포함될 수 있다.
도 10a 내지 도 10b는 본 발명의 실시 예들에 따른 스토리지 장치를 나타내는 도면들이다.
도 10a는 본 발명의 실시 예에 따른 스토리지 장치(400a)를 나타내는 블록도이다. 도 10a를 참조하면, 스토리지 장치(400a)는 스토리지 컨트롤러(410) 및 비휘발성 메모리(420)를 포함할 수 있다. 비휘발성 메모리(420)는 도 2의 복수의 채널들(CH1-CH4) 중 하나를 기반으로 스토리지 컨트롤러와 통신하는 비휘발성 메모리들(NVM11-NVM44)중 어느 것과도 대응할 수 있다. 스토리지 컨트롤러(410)는 도 2의 스토리지 컨트롤러(210)에 대응할 수 있다.
비휘발성 메모리(420)는 제1 내지 제10 핀들(P10-P19), 메모리 인터페이스 회로(421), 제어 로직 회로(422) 및 메모리 셀 어레이(423)를 포함할 수 있다.
메모리 인터페이스 회로(421)는 제1 내지 제3 핀들(P10-P12)을 통해 스토리지 컨트롤러(410)로부터 칩 인에이블 신호(nCE), 입력 인에이블 신호(IE) 및 출력 인에이블 신호(OE)를 수신할 수 있다.
예를 들어, 칩 인에이블 신호(nCE)가 인에이블 상태(예를 들어, 로우 레벨)이고 입력 인에이블 신호(IE)가 인에이블 상태(예를 들어, 하이 레벨)이며, 출력 인에이블 신호(OE)가 디스에이블 상태(예를 들어, 로우 레벨)인 경우, 비휘발성 메모리(420)는 입력-인에이블될 수 있다. 비휘발성 메모리(420)가 입력-인에이블된 경우, 메모리 인터페이스 회로(421)는 리드 인에이블 신호(nRE)를 전달하는 제7 핀(P16)을 제외한 나머지 핀들(P13-P15, P17-P19)을 통해 스토리지 컨트롤러(410)와 신호들을 송수신할 수 있다.
반면에, 칩 인에이블 신호(nCE)가 인에이블 상태이고 입력 인에이블 신호(IE)가 디스에이블 상태이며, 출력 인에이블 신호(OE)가 인에이블 상태인 경우, 비휘발성 메모리(420)는 출력-인에이블될 수 있다. 비휘발성 메모리(420)가 출력-인에이블된 경우, 메모리 인터페이스 회로(421)는 라이트 인에이블 신호(nWE)를 전달하는 제6 핀(P15)을 제외한 나머지 핀들(P13-P14, P16-P19)을 통해 스토리지 컨트롤러(410)와 신호들을 송수신할 수 있다.
메모리 인터페이스 회로(421)는 제4 내지 제6 핀들(P12-P14)을 통해 스토리지 컨트롤러(410)로부터 커맨드 래치 인에이블 신호(CLE), 어드레스 래치 인에이블 신호(ALE), 및 라이트 인에이블 신호(nWE)를 수신할 수 있다. 메모리 인터페이스 회로(421)는 제8 핀(P17)을 통해 스토리지 컨트롤러(410)로부터 데이터 신호(DQ)를 수신하거나, 스토리지 컨트롤러(410)로 데이터 신호(DQ)를 전송할 수 있다. 데이터 신호(DQ)를 통해 커맨드(CMD), 어드레스(ADDR), 및 데이터(DATA)가 전달될 수 있다. 예를 들어, 데이터 신호(DQ)는 복수의 데이터 신호 라인들을 통해 전달될 수 있다. 이 경우, 제8 핀(P17)은 복수의 데이터 신호(DQ)들에 대응하는 복수의 핀들을 포함할 수 있다.
메모리 인터페이스 회로(421)는 라이트 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 커맨드 래치 인에이블 신호(CLE)의 인에이블 구간(예를 들어, 하이 레벨 상태)에서 수신되는 데이터 신호(DQ)로부터 커맨드(CMD)를 획득할 수 있다. 메모리 인터페이스 회로(421)는 라이트 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 어드레스 래치 인에이블 신호(ALE)의 인에이블 구간(예를 들어, 하이 레벨 상태)에서 수신되는 데이터 신호(DQ)로부터 어드레스(ADDR)를 획득할 수 있다.
메모리 인터페이스 회로(421)는 제6 핀(P15)을 통해 스토리지 컨트롤러(410)로부터 리드 인에이블 신호(nRE)를 수신할 수 있다. 메모리 인터페이스 회로(421)는 제6 핀(P16)을 통해 스토리지 컨트롤러(410)로부터 데이터 스트로브 신호(DQS)를 수신하거나, 스토리지 컨트롤러(410)로 데이터 스트로브 신호(DQS)를 전송할 수 있다.
메모리 장치(420)의 데이터(DATA) 출력 동작에서, 메모리 인터페이스 회로(421)는 데이터(DATA)를 출력하기 전에 제6 핀(P15)을 통해 토글하는 리드 인에이블 신호(nRE)를 수신할 수 있다. 메모리 인터페이스 회로(421)는 리드 인에이블 신호(nRE)의 토글링에 기초하여 토글하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 메모리 인터페이스 회로(421)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터(DATA)를 포함하는 데이터 신호(DQ)를 전송할 수 있다. 이에 따라, 데이터(DATA)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 정렬되어 스토리지 컨트롤러(410)로 전송될 수 있다.
메모리 장치(420)의 데이터(DATA) 입력 동작에서, 스토리지 컨트롤러(410)로부터 데이터(DATA)를 포함하는 데이터 신호(DQ)가 수신되는 경우, 메모리 인터페이스 회로(421)는 스토리지 컨트롤러(410)로부터 데이터(DATA)와 함께 토글하는 데이터 스트로브 신호(DQS)를 수신할 수 있다. 메모리 인터페이스 회로(421)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터 신호(DQ)로부터 데이터(DATA)를 획득할 수 있다.
메모리 인터페이스 회로(421)는 제9 핀(P18)을 통해 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(410)로 전송할 수 있다. 메모리 인터페이스 회로(421)는 레디/비지 출력 신호(nR/B)를 통해 비휘발성 메모리(420)의 상태 정보를 스토리지 컨트롤러(410)로 전송할 수 있다.
제어 로직 회로(422)는 비휘발성 메모리(420)의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(422)는 도 4를 참조하여 설명된 제어 로직 회로(320)에 대응할 수 있다.
메모리 셀 어레이(423)는 제어 로직 회로(422)의 제어에 따라 메모리 인터페이스 회로(421)로부터 획득한 데이터(DATA)를 저장할 수 있다. 메모리 셀 어레이(423)는 제어 로직 회로(422)의 제어에 따라 저장된 데이터(DATA)를 메모리 인터페이스 회로(421)로 출력할 수 있다.
스토리지 컨트롤러(410)는 제1 내지 제10 핀들(P20-P29), 및 컨트롤러 인터페이스 회로(411)를 포함할 수 있다. 제1 내지 제10 핀들(P20-P29)은 비휘발성 메모리(420)의 제1 내지 제10 핀들(P10-P19)에 대응할 수 있다.
도 10b는 본 발명의 실시 예에 따른 스토리지 장치(400b)를 나타내는 블록도이다. 도 10b를 참조하면, 스토리지 장치(400b)는 일부 핀들을 제외하고는, 스토리지 장치(400a)와 실질적으로 동일한 구성을 포함할 수 있다. 이하에서는, 스토리지 장치(400a)와 스토리지 장치(400b)의 공통점에 대해서는 간략히 설명된다.
비휘발성 메모리(420)는 제1 내지 제9 핀들(P31-P39)을 포함할 수 있다. 제3 내지 제9 핀들(P33-P39)은 도 10a를 참조하여 설명된 제4 내지 제10 핀들(P13-P19)에 대응할 수 있다. 메모리 인터페이스 회로(421)는 제1 핀(P31)을 통해 스토리지 컨트롤러(410)로부터 칩 입력 인에이블 신호(nCIE)를 수신할 수 있으며, 제2 핀(P32)을 통해 스토리지 컨트롤러(410)로부터 칩 출력 인에이블 신호(nCOE)를 수신할 수 있다.
예를 들어, 칩 입력 인에이블 신호(nCIE)가 인에이블 상태(예를 들어, 로우 레벨)인 경우 비휘발성 메모리(420)는 입력-인에이블될 수 있으며, 칩 출력 인에이블 신호(nCOE)가 인에이블 상태(예를 들어, 로우 레벨)인 경우 비휘발성 메모리는 출력-인에이블될 수 있다.
스토리지 컨트롤러(410)는 제1 내지 제9 핀들(P41-P49)을 포함할 수 있다. 제3 내지 제9 핀들(P43-P49)은 도 10a를 참조하여 설명된 제4 내지 제10 핀들(P23-P29)에 대응할 수 있다. 스토리지 컨트롤러(410)는 제1 핀(P41)을 통해 비휘발성 메모리(420)로 칩 입력 인에이블 신호(nCIE)를 출력함으로써 비휘발성 메모리(420)를 입력-인에이블할 수 있으며, 제2 핀(P42)을 통해 비휘발성 메모리(420)로 칩 출력 인에이블 신호(nCOE)를 출력함으로써 비휘발성 메모리(420)를 출력-인에이블할 수 있다.
도 1 내지 도 10b에서는 스트라이프가 하나의 채널을 공유하는 비휘발성 메모리들 내에서 스트라이핑되고, 각 비휘발성 메모리는 하나의 플레인을 포함하는 경우를 예로 들어 본 발명의 실시 예들이 설명되었다. 그러나, 본 발명은 이에 제한되지 않는다. 예를 들어, 스트라이프는 각 비휘발성 메모리가 복수의 플레인들을 포함하는 경우 복수의 플레인들에 걸쳐서 저장될 수 있으며, 스트라이프는 복수의 채널들 각각에 연결된 비휘발성 메모리들에 걸쳐서 저장될 수도 있다. 이하에서, 본 발명의 다양한 실시 예들에 따른 스토리지 장치의 스트라이프 업데이트 방법이 도 11 내지 도 12c를 참조하여 설명된다.
도 11은 본 발명의 실시 예에 따른 스토리지 장치의 스트라이프 업데이트 방법을 설명하기 위한 도면이다.
도 11을 참조하면, 스토리지 장치(500)는 스토리지 컨트롤러(510), 메모리 장치(520) 및 데이터 버스(501)를 포함할 수 있다. 스토리지 컨트롤러(510)는 메모리 장치(520)에 저장될 데이터를 버퍼링하거나, 메모리 장치(520)로부터 출력된 데이터를 버퍼링하기 위한 버퍼 메모리(516)를 포함할 수 있다. 스토리지 컨트롤러(510)는 메모리 장치(520)와 신호를 송수신하기 위해, 채널(CH1)을 통해 데이터 버스(501)에 연결될 수 있다.
메모리 장치(520)는 복수의 비휘발성 메모리들(NVM11-NVM14)을 포함할 수 있다. 복수의 비휘발성 메모리들(NVM11-NVM14)은 스토리지 컨트롤러(510)와 데이터를 송수신하기 위해, 웨이들(W11-W14)을 통해 데이터 버스(501)에 연결될 수 있다. 복수의 비휘발성 메모리들(NVM11-NVM14) 각각은 복수의 플레인들(PL1, PL2)을 포함할 수 있다. 하나의 비휘발성 메모리에 포함된 플레인들(PL1, PL2)은 은 서로 병렬적으로 프로그램 동작, 리드 동작 등을 수행할 수 있다.
스토리지 컨트롤러(510)는 하나의 스트라이프를 비휘발성 메모리들(NVM11-NVM14)에 포함된 복수의 플레인들(PL1, PL2)에 걸쳐서 저장할 수 있다. 예를 들어, 스토리지 컨트롤러(510)는 호스트로부터 수신된 데이터의 크기가 7개의 데이터 블록들에 해당하는 경우, 7개의 데이터 블록들 각각에 대한 패리티 연산을 수행함으로써 패리티 블록을 생성할 수 있다. 스토리지 컨트롤러(510)는 7개의 데이터 블록들과 패리티 블록을 비휘발성 메모리들(NVM11-NVM14)로 분산할 수 있다. 비휘발성 메모리들(NVM11-NVM14) 각각은 데이터 블록 또는 패리티 블록에 ECC 인코딩 연산을 수행함으로써 데이터 청크 또는 패리티 청크를 생성하고, 복수의 플레인들(PL1, PL2)에 데이터 청크 또는 패리티 청크를 프로그램할 수 있다.
도 11은 하나의 스트라이프를 구성하는 기존 데이터 청크들(ODC1-ODC7) 및 기존 패리티 청크(OPC)가 비휘발성 메모리들(NVM11-NVM14)의 플레인들(PL1, PL2)에 걸쳐서 저장된 상태를 예시한다.
호스트로부터 기존 데이터 청크(ODC1)에 포함된 데이터 블록의 신규 데이터 블록(NDB1)이 수신된 경우, 스토리지 장치(500)는 단계 S31 내지 단계 S34에 걸쳐서 패리티 청크를 업데이트할 수 있다.
단계 S31에서, 스토리지 컨트롤러(510)는 버퍼 메모리(516)에 버퍼링된 신규 데이터 블록(NDB1)을, 기존 데이터 청크(ODC1)가 저장된 제1 비휘발성 메모리(NVM11)로 제공할 수 있다. 제1 비휘발성 메모리(NVM11)는 ECC 로직 회로를 이용하여 신규 데이터 블록(NDB1)에 패리티 비트를 부가함으로써 신규 데이터 청크(NDC1)를 생성하고, 생성된 데이터 청크(NDC1)를 제1 플레인(PL1)에 연관된 페이지 버퍼 그룹(PBG)에 버퍼링할 수 있다. 제1 비휘발성 메모리(NVM11)는 신규 데이터 청크(NDC1)를 제1 플레인(PL1)에 프로그램할 수 있다.
단계 S32에서, 스토리지 컨트롤러(510)는 신규 데이터 블록(NDB1)을, 기존 패리티 청크(OPC)가 저장된 제4 비휘발성 메모리(NVM14)로 제공할 수 있다. 제4 비휘발성 메모리(NVM14)는 ECC 로직 회로를 이용하여 신규 데이터 청크(NDC1)를 생성하고, 생성된 데이터 청크(NDC1)를 제2 플레인(PL2)에 연관된 페이지 버퍼 그룹(PBG)에 버퍼링할 수 있다.
단계 S33에서, 제1 비휘발성 메모리(NVM11)는 제1 플레인(PL1)로부터 기존 데이터 청크(ODC1)를 리드하고, 리드된 기존 데이터 청크(ODC1)를 스토리지 컨트롤러(510)를 통하지 않고 제4 비휘발성 메모리(NVM14)로 제공할 수 있다.
단계 S34에서, 제4 비휘발성 메모리(NVM14)는 제2 플레인(PL2)로부터 기존 패리티 청크(OPC)를 리드하고, 페이지 버퍼 그룹(PBG)에 버퍼링할 수 있다. 제4 비휘발성 메모리(NVM14)는 기존 데이터 청크(ODC1), 기존 패리티 청크(OPC) 및 신규 데이터 청크(NDC1)에 대한 패리티 연산을 수행함으로써 신규 패리티 청크(NPC)를 생성할 수 있다. 단계 S35에서, 제4 비휘발성 메모리(NVM14)는 신규 패리티 청크(NPC)를 제2 플레인(PL2)에 프로그램함으로써 스트라이프 업데이트를 완료할 수 있다.
도 12a 내지 도 12c는 본 발명의 실시 예에 따른 스토리지 장치의 스트라이프 업데이트 방법을 설명하기 위한 도면이다.
도 12a를 참조하면, 스토리지 장치(600)는 스토리지 컨트롤러(610), 메모리 장치(620) 및 복수의 데이터 버스들(601, 602)을 포함할 수 있다. 메모리 장치(620)는 복수의 비휘발성 메모리들(NVM11-NVM24)을 포함할 수 있다. 스토리지 컨트롤러(610)는 제1 채널(CH1)에 연결된 제1 데이터 버스(601)를 통해 비휘발성 메모리들(NVM11-NVM14)과 신호를 송수신할 수 있으며, 제2 채널(CH2)에 연결된 제2 데이터 버스(602)를 통해 비휘발성 메모리들(NVM21-NVM24)과 신호를 송수신할 수 있다.
스토리지 컨트롤러(610)는 하나의 스트라이프를 복수의 채널들(CH1, CH2)에 연결된 비휘발성 메모리들(NVM11-NVM24)에 걸쳐서 저장할 수 있다. 도 12a는 복수의 기존 데이터 청크들(ODCNK1-ODCNK7) 및 패리티 청크(OPCNK)가 비휘발성 메모리들(NVM11-NVM24)에 걸쳐서 저장된 상태를 예시한다.
본 발명의 실시 예에 따르면, 기존 패리티 청크(OPCNK)가 저장된 비휘발성 메모리(NVM24)와 동일한 데이터 버스(602)에 연결된 비휘발성 메모리에 저장된 데이터 청크가 업데이트되는 경우, 비휘발성 메모리(NVM24)는 스토리지 컨트롤러(610)를 통하지 않고 상기 기존 데이터 청크를 획득할 수 있으며, 상기 획득한 기존 데이터 청크를 이용하여 패리티 청크를 업데이트할 수 있다.
도 12b를 참조하면, 스토리지 장치(600)는 단계 S41 내지 단계 S45에 걸쳐서 패리티 청크를 업데이트할 수 있다.
단계 S41에서, 스토리지 컨트롤러(610)는 버퍼 메모리(616)에 버퍼링된 신규 데이터 블록(NDBLK5)을, 신규 데이터 블록(NDBLK5)에 대응하는 기존 데이터 청크(ODCNK5)가 저장된 비휘발성 메모리(NVM21)로 제공할 수 있다. 비휘발성 메모리(NVM21)는 신규 데이터 블록(NDBLK5)에 패리티 비트를 부가함으로써 신규 데이터 청크(NDCNK5)를 생성하고, 신규 데이터 청크(NDCNK5)를 메모리 셀 어레이(MCA)에 프로그램할 수 있다.
단계 S42에서, 스토리지 컨트롤러(610)는 신규 데이터 블록(NDBLK5)을 기존 패리티 청크(OPCNK)가 저장된 비휘발성 메모리(NVM24)로 제공할 수 있다. 비휘발성 메모리(NVM24)는 신규 데이터 청크(NDCNK5)를 생성하고, 생성된 데이터 청크(NDCNK5)를 페이지 버퍼 그룹(PBG)에 버퍼링할 수 있다.
단계 S43에서, 비휘발성 메모리(NVM24)는 비휘발성 메모리(NVM21)로부터 기존 데이터 청크(ODCNK5)를 획득할 수 있다. 비휘발성 메모리들(NVM21, NVM24)은 동일한 데이터 버스(602)를 공유하므로, 비휘발성 메모리(NVM21)는 스토리지 컨트롤러(610)를 통하지 않고 기존 데이터 청크(ODCNK5)를 비휘발성 메모리(NVM24)로 전송할 수 있다.
단계 S44에서, 비휘발성 메모리(NVM24)는 기존 패리티 청크(OPCNK)를 페이지 버퍼 그룹(PBG)으로 로드할 수 있다. 비휘발성 메모리(NVM24)는 기존 데이터 청크(ODCNK5), 기존 패리티 청크(OPCNK) 및 신규 데이터 청크(NDCNK5)에 대한 패리티 연산을 수행함으로써 신규 패리티 청크(NPCNK)를 생성할 수 있다. 단계 S45에서, 비휘발성 메모리(NVM24)는 신규 패리티 청크(NPCNK)를 메모리 셀 어레이(MCA)에 프로그램할 수 있다.
본 발명의 실시 예에 따르면, 비휘발성 메모리(NVM24)와 다른 데이터 버스(601)에 연결된 비휘발성 메모리에 저장된 기존 데이터 청크가 업데이트되는 경우, 비휘발성 메모리(NVM24)는 스토리지 컨트롤러(610)를 통하여 패리티 청크 업데이트를 위해 필요한 데이터를 획득하고, 기존 패리티 청크(OPCNK)와 상기 데이터에 대한 패리티 연산을 수행함으로써 패리티 청크를 업데이트할 수 있다.
도 12c를 참조하면, 스토리지 장치(600)는 단계 S51 내지 단계 S56에 걸쳐서 패리티 청크를 업데이트할 수 있다.
단계 S51에서, 스토리지 컨트롤러(610)는 버퍼 메모리(616)에 버퍼링된 신규 데이터 블록(NDBLK1)을, 신규 데이터 블록(NDBLK1)에 대응하는 기존 데이터 청크(ODCNK1)가 저장된 비휘발성 메모리(NVM11)로 제공할 수 있다. 비휘발성 메모리(NVM11)는 신규 데이터 블록(NDBLK1)에 패리티 비트를 부가함으로써 신규 데이터 청크(NDCNK1)를 생성하고, 신규 데이터 청크(NDCNK1)를 메모리 셀 어레이(MCA)에 프로그램할 수 있다.
단계 S52에서, 스토리지 컨트롤러(610)는 비휘발성 메모리(NVM11)로부터 기존 데이터 블록(ODBLK1)을 획득할 수 있다. 구체적으로, 비휘발성 메모리(NVM11)는 ECC 로직 회로를 이용하여 메모리 셀 어레이(MCA)에 저장된 기존 데이터 청크(ODCNK1)의 에러를 정정함으로써 에러 정정된 기존 데이터 블록(ODBLK1)을 획득하고, 기존 데이터 블록(ODBLK1)을 스토리지 컨트롤러(610)로 출력할 수 있다.
단계 S53에서, 스토리지 컨트롤러(610)는 신규 데이터 블록(NDBLK1) 및 기존 데이터 블록(ODBLK1)의 XOR 연산을 수행함으로써 신규 데이터 블록(NDBLK1) 및 기존 데이터 블록(ODBLK1)의 차이 데이터(DIFF1)를 생성할 수 있다.
단계 S54에서, 스토리지 컨트롤러(610)는 차이 데이터(DIFF1)를 비휘발성 메모리(NVM24)로 제공할 수 있다. 비휘발성 메모리(NVM24)는 차이 데이터(DIFF1)를 페이지 버퍼 그룹(PBG)에 버퍼링할 수 있다.
단계 S55에서, 비휘발성 메모리(NVM24)는 기존 패리티 청크(OPCNK)를 페이지 버퍼 그룹(PBG)으로 로드할 수 있다. 비휘발성 메모리(NVM24)는 ECC 로직 회로를 이용하여 기존 패리티 청크(OPCNK)의 에러를 정정할 수 있다. 비휘발성 메모리(NVM24)는 에러 정정된 기존 패리티 청크(OPCNK) 및 차이 데이터(DIFF1)에 대한 XOR 연산을 수행함으로써 신규 패리티 청크(NPCNK)를 생성할 수 있다.
단계 S56에서, 비휘발성 메모리(NVM24)는 신규 패리티 청크를 메모리 셀 어레이(MCA)에 프로그램함으로써 패리티 청크 업데이트를 완료할 수 있다.
본 발명의 실시 예에 따르면, 스토리지 장치(600)는 동일한 데이터 버스에 연결된 비휘발성 메모리들 간에는 스토리지 컨트롤러(610)를 통하지 않고 데이터를 전송할 수 있으므로, 패리티 청크 업데이트를 위한 데이터 입출력의 양 및 버퍼 메모리(616) 사용량을 줄일 수 있다. 또한, 스토리지 장치(600)는 업데이트된 데이터 청크와 패리티 청크가 서로 다른 데이터 버스에 연결된 비휘발성 메모리들에 저장된 경우에도, 일부 패리티 연산을 비휘발성 메모리로 오프로딩함으로써 패리티 청크 업데이트를 위한 데이터 입출력의 양 및 버퍼 메모리(616) 사용량을 줄일 수 있다. 따라서, 스토리지 장치(600)의 성능이 개선될 수 있다.
본 발명은 상술한 실시형태 및 첨부된 도면에 의해 한정되는 것이 아니며 첨부된 청구범위에 의해 한정하고자 한다. 따라서, 청구범위에 기재된 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 당 기술분야의 통상의 지식을 가진 자에 의해 다양한 형태의 치환, 변형 및 변경이 가능할 것이며, 이 또한 본 발명의 범위에 속한다고 할 것이다.
100, 200, 400, 500, 600: 스토리지 장치
110, 210, 410, 510, 610: 스토리지 컨트롤러
120, 220, 420, 520, 620: 메모리 장치

Claims (20)

  1. 스토리지 장치에 있어서,
    적어도 제1 및 제2 비휘발성 메모리를 포함하는 복수의 비휘발성 메모리들;
    복수의 데이터 블록들에 대한 XOR 연산을 수행함으로써 패리티 블록을 생성하고, 상기 복수의 데이터 블록들 및 상기 패리티 블록을 상기 복수의 비휘발성 메모리들에 분산하여 제공하는 스토리지 컨트롤러; 및
    상기 복수의 비휘발성 메모리들과 상기 스토리지 컨트롤러 간에 신호를 전달하는 데이터 버스를 포함하고,
    상기 스토리지 컨트롤러는 호스트로부터 신규 데이터 블록을 수신하고, 상기 신규 데이터 블록에 대응하는 기존 데이터 블록에 연관된 기존 패리티 블록이 저장된 상기 제2 비휘발성 메모리로 상기 신규 데이터 블록을 제공하고,
    상기 기존 데이터 블록이 저장된 상기 제1 비휘발성 메모리는, 상기 기존 데이터 블록을 상기 스토리지 컨트롤러를 통하지 않고 상기 데이터 버스를 통해 상기 제2 비휘발성 메모리로 제공하고,
    상기 제2 비휘발성 메모리는 상기 신규 데이터 블록, 상기 기존 데이터 블록 및 상기 기존 패리티 블록에 대한 XOR 연산을 수행함으로써 신규 패리티 블록을 생성하고, 상기 신규 패리티 블록을 저장하는
    스토리지 장치.
  2. 제1항에 있어서,
    상기 스토리지 컨트롤러는
    상기 제1 비휘발성 메모리로 상기 신규 데이터 블록을 제공하고, 상기 제1 비휘발성 메모리가 상기 신규 데이터 블록을 저장하도록 제어하는
    스토리지 장치.
  3. 제1항에 있어서,
    상기 복수의 비휘발성 메모리들 각각은
    메모리 셀 어레이 및 ECC(Error Correction Coding) 로직 회로를 포함하고, 상기 스토리지 컨트롤러로부터 획득한 데이터 블록 또는 패리티 블록에 ECC 인코딩 연산을 수행함으로써 상기 데이터 블록 또는 패리티 블록에 내부 패리티가 부가된 데이터 청크 또는 패리티 청크를 생성하고, 상기 데이터 청크 또는 패리티 청크를 상기 메모리 셀 어레이에 저장하는
    스토리지 장치.
  4. 제3항에 있어서,
    상기 스토리지 컨트롤러는
    상기 복수의 데이터 블록들의 논리 주소들과 상기 복수의 데이터 블록들이 저장된 물리 주소들 간의 매핑 관계 및 상기 패리티 청크가 저장된 물리 주소를 포함하는 맵 데이터를 저장하는
    스토리지 장치.
  5. 제4항에 있어서,
    상기 스토리지 컨트롤러는
    상기 신규 데이터 블록의 물리 주소와 상기 신규 패리티 블록의 물리 주소를 상기 맵 데이터에 업데이트하는
    스토리지 장치.
  6. 제1항에 있어서,
    상기 기존 데이터 블록은
    상기 신규 데이터 블록과 동일한 논리 주소를 갖는
    스토리지 장치.
  7. 제1항에 있어서,
    상기 제2 비휘발성 메모리는
    워드 라인들 및 비트 라인들을 포함하는 메모리 셀 어레이; 및
    각각이 상기 비트 라인들에 대응하며, 복수의 래치들을 포함하는 복수의 페이지 버퍼들을 포함하고,
    상기 제2 비휘발성 메모리는
    상기 스토리지 컨트롤러로부터 획득한 상기 신규 데이터 블록을 상기 복수의 페이지 버퍼들 중 제1 페이지 버퍼에 버퍼링하고, 상기 제1 비휘발성 메모리로부터 획득한 상기 기존 데이터 블록을 상기 복수의 페이지 버퍼들 중 제2 페이지 버퍼에 버퍼링하고, 상기 메모리 셀 어레이에 저장된 상기 기존 패리티 블록을 상기 복수의 페이지 버퍼들 중 제3 페이지 버퍼에 버퍼링하며, 상기 제1 내지 제3 페이지 버퍼들 각각에 버퍼링된 데이터 비트들에 XOR 연산을 수행함으로써 상기 신규 패리티 블록을 생성하는
    스토리지 장치.
  8. 스토리지 장치에 있어서,
    적어도 제1 및 제2 비휘발성 메모리를 포함하는 복수의 비휘발성 메모리들;
    복수의 데이터 블록들에 대한 XOR 연산을 수행함으로써 패리티 블록을 생성하고, 상기 복수의 데이터 블록들 및 패리티 블록을 상기 복수의 비휘발성 메모리들에 분산하여 제공하는 스토리지 컨트롤러; 및
    상기 복수의 비휘발성 메모리들과 상기 스토리지 컨트롤러 간에 신호를 전달하는 데이터 버스를 포함하고,
    상기 스토리지 컨트롤러는 호스트로부터 신규 데이터 블록을 수신하고, 상기 신규 데이터 블록에 대응하는 기존 데이터 블록이 저장된 상기 제1 비휘발성 메모리로 상기 신규 데이터 블록을 제공하고,
    상기 제1 비휘발성 메모리는, 상기 신규 데이터 블록 및 상기 기존 데이터 블록에 대한 XOR 연산을 수행함으로써 차이 데이터를 생성하고, 상기 차이 데이터를 상기 스토리지 컨트롤러를 통하지 않고 상기 기존 데이터 블록에 연관된 기존 패리티 블록이 저장된 상기 제2 비휘발성 메모리로 제공하고,
    상기 제2 비휘발성 메모리는 상기 차이 데이터 및 상기 기존 패리티 블록에 대한 XOR 연산을 수행함으로써 신규 패리티 블록을 생성하고, 상기 신규 패리티 블록을 저장하는
    스토리지 장치.
  9. 스토리지 장치에 있어서,
    복수의 비휘발성 메모리들;
    상기 복수의 비휘발성 메모리들을 제어하는 스토리지 컨트롤러; 및
    상기 복수의 비휘발성 메모리들과 상기 스토리지 컨트롤러 간에 신호를 전달하는 데이터 버스를 포함하고,
    상기 스토리지 컨트롤러는
    상기 복수의 비휘발성 메모리들 중 소스(source) 비휘발성 메모리의 데이터 출력 기능을 인에이블하고, 상기 복수의 비휘발성 메모리들 중 목적지(destination) 비휘발성 메모리의 데이터 입력 기능을 인에이블하며, 상기 데이터 버스로 리드 인에이블 신호를 출력하며,
    상기 소스 비휘발성 메모리는
    상기 리드 인에이블 신호에 응하여 내부에 저장된 데이터를 상기 데이터 버스로 출력하고,
    상기 목적지 비휘발성 메모리는
    상기 리드 인에이블 신호를 무시하며, 상기 데이터 버스로 출력된 데이터를 획득하는
    스토리지 장치.
  10. 제9항에 있어서,
    상기 데이터 버스로 출력된 데이터는
    상기 스토리지 컨트롤러를 통하지 않고 상기 목적지 비휘발성 메모리로 입력되는
    스토리지 장치.
  11. 제9항에 있어서,
    상기 스토리지 컨트롤러는
    상기 복수의 비휘발성 메모리들에 저장될 데이터 또는 상기 복수의 비휘발성 메모리들로부터 출력된 데이터를 버퍼링하는 데이터 버퍼를 포함하고,
    상기 데이터 버스로 출력된 데이터는
    상기 데이터 버퍼에 버퍼링되지 않고 상기 목적지 비휘발성 메모리로 입력되는
    스토리지 장치.
  12. 제9항에 있어서,
    상기 스토리지 컨트롤러는
    상기 소스 비휘발성 메모리 및 상기 목적지 비휘발성 메모리를 지정하는 이동(move) 커맨드를 사용하여 상기 소스 비휘발성 메모리의 출력 기능을 인에이블하고, 상기 목적지 비휘발성 메모리의 입력 기능을 인에이블하며, 상기 소스 비휘발성 메모리의 상기 데이터 출력 및 상기 목적지 비휘발성 메모리의 상기 데이터 획득을 제어하는
    스토리지 장치.
  13. 제9항에 있어서,
    상기 스토리지 컨트롤러는
    호스트로부터 복수의 데이터 블록들을 수신하고, 상기 복수의 데이터 블록들의 패리티 연산을 수행함으로써 패리티 블록을 생성하고, 상기 복수의 데이터 블록들 및 패리티 블록이 상기 복수의 비휘발성 메모리들에 걸쳐서 저장되도록 상기 복수의 비휘발성 메모리들을 제어하는
    스토리지 장치.
  14. 제13항에 있어서,
    상기 스토리지 컨트롤러는
    호스트로부터 신규 데이터 블록을 수신하고, 상기 신규 데이터 블록에 대응하는 기존 데이터 청크가 저장된 비휘발성 메모리를 상기 소스 비휘발성 메모리로 결정하고, 상기 기존 데이터 청크와 동일한 스트라이프에 포함된 기존 패리티 블록이 저장된 비휘발성 메모리를 상기 목적지 비휘발성 메모리로 결정하며, 상기 소스 비휘발성 메모리가 상기 데이터 버스를 통해 상기 목적지 비휘발성 메모리로 상기 기존 데이터 청크를 이동시키도록 제어하는
    스토리지 장치.
  15. 제9항에 있어서,
    상기 스토리지 컨트롤러는
    칩 인에이블 신호, 출력-인에이블 신호 및 입력-인에이블 신호를 출력하기 위한 복수의 핀들을 포함하고,
    상기 복수의 비휘발성 메모리들 각각은
    칩 인에이블 신호, 출력-인에이블 신호 및 입력-인에이블 신호를 수신하기 위한 복수의 핀들을 포함하며,
    상기 스토리지 컨트롤러는
    상기 소스 비휘발성 메모리의 칩 인에이블 신호 및 출력-인에이블 신호를 인에이블함으로써 출력 기능을 인에이블하며, 상기 목적지 비휘발성 메모리의 칩 인에이블 신호 및 입력-인에이블 신호를 인에이블함으로써 입력 기능을 인에이블하는
    스토리지 장치.
  16. 제9항에 있어서,
    상기 스토리지 컨트롤러는
    칩 출력-인에이블 신호 및 칩 입력-인에이블 신호를 출력하기 위한 복수의 핀들을 포함하고,
    상기 복수의 비휘발성 메모리들 각각은
    칩 출력-인에이블 신호 및 칩 입력-인에이블 신호를 수신하기 위한 복수의 핀들을 포함하는
    스토리지 장치.
  17. 스토리지 장치에 있어서,
    적어도 제1 및 제2 비휘발성 메모리를 포함하는 복수의 비휘발성 메모리들;
    복수의 데이터 블록들 및 상기 복수의 데이터 블록들에 대한 패리티 블록을 상기 복수의 비휘발성 메모리들에 스트라이핑하는 스토리지 컨트롤러; 및
    상기 복수의 비휘발성 메모리들과 상기 스토리지 컨트롤러 간에 신호를 전달하는 복수의 데이터 버스들을 포함하고,
    상기 스토리지 컨트롤러는
    호스트로부터 신규 데이터 블록을 수신하고, 상기 제1 비휘발성 메모리에 저장되고 상기 신규 데이터 블록에 대응하는 기존 데이터 블록과 상기 신규 데이터 블록에서 서로 다른 값을 갖는 비트들을 나타내는 차이 데이터를, 상기 기존 데이터 블록에 연관된 기존 패리티 블록이 저장된 상기 제2 비휘발성 메모리가 획득하도록 제어하고,
    상기 제2 비휘발성 메모리는
    상기 차이 데이터 및 상기 기존 패리티 블록을 이용하여 신규 패리티 블록을 생성하고, 상기 신규 패리티 블록을 저장하는
    스토리지 장치.
  18. 제17항에 있어서,
    상기 스토리지 컨트롤러는
    상기 복수의 데이터 블록들에 대해 XOR 연산을 수행함으로써 상기 패리티 블록을 생성하는
    스토리지 장치.
  19. 제18항에 있어서,
    상기 제1 비휘발성 메모리 및 상기 제2 비휘발성 메모리는 상기 복수의 데이터 버스들 중 서로 다른 데이터 버스에 연결되고,
    상기 스토리지 컨트롤러는
    상기 제1 비휘발성 메모리로부터 상기 기존 데이터 블록을 획득하고, 상기 기존 데이터 블록 및 상기 신규 데이터 블록의 XOR 연산을 수행함으로써 상기 차이 데이터를 생성하고, 상기 차이 데이터를 상기 제2 비휘발성 메모리로 제공하는
    스토리지 장치.
  20. 제18항에 있어서,
    상기 제1 비휘발성 메모리 및 상기 제2 비휘발성 메모리는 상기 복수의 데이터 버스들 중 서로 동일한 제1 데이터 버스에 연결되고,
    상기 스토리지 컨트롤러는
    상기 제1 비휘발성 메모리가 상기 기존 데이터 블록을 상기 스토리지 컨트롤러를 통하지 않고 상기 제1 데이터 버스를 통해 상기 제2 비휘발성 메모리로 전송하도록 제어하고, 상기 신규 데이터 블록을 상기 제2 비휘발성 메모리로 제공하며, 상기 제2 비휘발성 메모리가 상기 기존 데이터 블록 및 상기 신규 데이터 블록에 XOR 연산을 수행함으로써 상기 차이 데이터를 획득하도록 제어하는
    스토리지 장치.

KR1020220109014A 2022-08-30 2022-08-30 스토리지 장치 KR20240030248A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020220109014A KR20240030248A (ko) 2022-08-30 2022-08-30 스토리지 장치
US18/314,978 US20240069751A1 (en) 2022-08-30 2023-05-10 Storage devices including nonvolatile memory and related methods
EP23192345.9A EP4332775A1 (en) 2022-08-30 2023-08-21 Storage devices including nonvolatile memory and related methods
CN202311093076.9A CN117637002A (zh) 2022-08-30 2023-08-28 包括非易失性存储器的存储装置及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220109014A KR20240030248A (ko) 2022-08-30 2022-08-30 스토리지 장치

Publications (1)

Publication Number Publication Date
KR20240030248A true KR20240030248A (ko) 2024-03-07

Family

ID=87760662

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220109014A KR20240030248A (ko) 2022-08-30 2022-08-30 스토리지 장치

Country Status (4)

Country Link
US (1) US20240069751A1 (ko)
EP (1) EP4332775A1 (ko)
KR (1) KR20240030248A (ko)
CN (1) CN117637002A (ko)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200319819A1 (en) * 2019-04-02 2020-10-08 Dell Products, Lp Method and Apparatus for Improving Parity Redundant Array of Independent Drives Write Latency in NVMe Devices

Also Published As

Publication number Publication date
US20240069751A1 (en) 2024-02-29
EP4332775A1 (en) 2024-03-06
CN117637002A (zh) 2024-03-01

Similar Documents

Publication Publication Date Title
US9075531B2 (en) Storage device
US8711624B2 (en) Memory device and self interleaving method thereof
KR101888074B1 (ko) 저장 장치 및 불휘발성 메모리 장치, 그리고 그것의 동작 방법
KR102537373B1 (ko) 메모리 시스템에서의 데이터 전달 방법 및 장치
US20130036339A1 (en) Memory device
KR20190099693A (ko) 메모리 시스템 및 그것의 동작 방법
US10296233B2 (en) Method of managing message transmission flow and storage device using the method
US20220164123A1 (en) Storage controller and storage device including the same
US20130097366A1 (en) Storage device and user device using the same
US20140006859A1 (en) Storage system and data managing method thereof
KR20200011832A (ko) 메모리 시스템에서의 데이터 처리 방법 및 장치
KR20190083148A (ko) 데이터 저장 장치 및 그것의 동작 방법 및 그것을 포함하는 데이터 처리 시스템
KR20130008300A (ko) 오버 프로그램을 이용하여 소거 동작을 수행하는 플래시 메모리 장치 및 그 동작방법
CN112542201A (zh) 存储设备及操作该存储设备的方法
WO2010024506A1 (en) Flash based storage device using page buffer as write cache and method of using the same
KR20180064588A (ko) 메모리 제어 장치 및 방법
US12001709B2 (en) Storage devices and operating methods of storage controllers
US11586379B2 (en) Memory system and method of operating the same
KR20230043408A (ko) 메모리 컨트롤러 및 스토리지 장치
KR20240030248A (ko) 스토리지 장치
KR20180127594A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR102697634B1 (ko) 스토리지 장치 및 전자 시스템
US11822800B2 (en) Storage system including host and storage device and operation method thereof
US20240028507A1 (en) Storage system and method of operating the storage system
US20230114199A1 (en) Storage device