KR102317788B1 - 스토리지 장치 및 스토리지 컨트롤러의 동작 방법 - Google Patents

스토리지 장치 및 스토리지 컨트롤러의 동작 방법 Download PDF

Info

Publication number
KR102317788B1
KR102317788B1 KR1020210062816A KR20210062816A KR102317788B1 KR 102317788 B1 KR102317788 B1 KR 102317788B1 KR 1020210062816 A KR1020210062816 A KR 1020210062816A KR 20210062816 A KR20210062816 A KR 20210062816A KR 102317788 B1 KR102317788 B1 KR 102317788B1
Authority
KR
South Korea
Prior art keywords
command
address
error detection
error
crc
Prior art date
Application number
KR1020210062816A
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 KR1020210062816A priority Critical patent/KR102317788B1/ko
Application granted granted Critical
Publication of KR102317788B1 publication Critical patent/KR102317788B1/ko
Priority to US17/563,422 priority patent/US11899531B2/en
Priority to EP22151718.8A priority patent/EP4089539A1/en
Priority to CN202210118661.9A priority patent/CN115344417A/zh
Priority to JP2022078425A priority patent/JP2022176152A/ja
Priority to US18/400,256 priority patent/US20240232004A9/en

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/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
    • 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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1032Simple parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Medical Informatics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computer Security & Cryptography (AREA)
  • Artificial Intelligence (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

스토리지 장치 및 스토리지 장치의 동작 방법이 개시된다. 본 개시의 기술적 사상에 따른 스토리지 장치는 비휘발성 메모리 및 스토리지 컨트롤러를 포함하고, 스토리지 컨트롤러는, 제1 커맨드, 어드레스 및 제2 커맨드를 생성하고, 제2 커맨드는 제1 커맨드 및 어드레스의 통신 오류를 검출하기 위한 오류 검출 신호를 포함하는 커맨드/어드레스 생성기, 제1 커맨드 및 어드레스로부터 오류 검출 신호를 생성하도록 구성된 오류 검출 모듈, 및 비휘발성 메모리에 제1 커맨드, 어드레스 및 제2 커맨드를 순차적으로 전송하도록 구성된 인터페이스 회로를 포함하고, 제1 커맨드는 비휘발성 메모리에서 수행될 메모리 동작의 종류를 지시하고, 제2 커맨드는 컨펌(confirm) 커맨드에 대응한다.

Description

스토리지 장치 및 스토리지 컨트롤러의 동작 방법{Storage device and operating method of storage controller}
본 개시의 기술적 사상은 메모리 장치에 관한 것이며, 더욱 상세하게는, 커맨드/어드레스의 통신 오류 검출 기능을 갖는 스토리지 컨트롤러, 상기 스토리지 컨트롤러를 포함하는 스토리지 장치 및 상기 스토리지 컨트롤러의 동작 방법에 관한 것이다.
스토리지 장치는 스토리지 컨트롤러와 비휘발성 메모리를 포함하고, 스토리지 컨트롤러는 복수의 데이터 신호 라인들을 통해 비휘발성 메모리에 커맨드, 어드레스, 및 데이터를 전송할 수 있고, 복수의 데이터 신호 라인들을 통해 비휘발성 메모리로부터 데이터를 수신할 수 있다. 스토리지 컨트롤러는 ECC(Error Correction Code) 엔진을 이용하여, 데이터의 송수신 시 발생하는 오류를 검출하고 검출된 오류를 정정할 수 있다. 그러나, 종래의 스토리지 컨트롤러는 커맨드 및 어드레스의 전송 시 발생하는 오류를 검출하기 위한 구성을 가지지 않는다. 이에 따라, 스토리지 컨트롤러에서 비휘발성 메모리에 전송되는 커맨드 및 어드레스의 전송 시 오류가 발생하더라도, 오류의 검출 및 정정이 어려웠다.
본 개시의 기술적 사상은 커맨드 및 어드레스의 통신 오류를 검출할 수 있는 스토리지 장치 및 스토리지 컨트롤러의 동작 방법을 제공한다.
본 개시의 기술적 사상에 따른 스토리지 장치는 비휘발성 메모리 및 상기 비휘발성 메모리를 제어하도록 구성된 스토리지 컨트롤러를 포함하고, 상기 스토리지 컨트롤러는, 제1 커맨드, 어드레스 및 제2 커맨드를 생성하고, 상기 제2 커맨드는 상기 제1 커맨드 및 상기 어드레스의 통신 오류를 검출하기 위한 오류 검출 신호를 포함하는 커맨드/어드레스 생성기, 상기 제1 커맨드 및 상기 어드레스로부터 상기 오류 검출 신호를 생성하도록 구성된 오류 검출 모듈, 및 상기 비휘발성 메모리에 상기 제1 커맨드, 상기 어드레스 및 상기 제2 커맨드를 순차적으로 전송하도록 구성된 인터페이스 회로를 포함하고, 상기 제1 커맨드는 상기 비휘발성 메모리에서 수행될 메모리 동작의 종류를 지시하고, 상기 제2 커맨드는 컨펌(confirm) 커맨드에 대응한다.
본 개시의 기술적 사상에 따른 스토리지 장치는 비휘발성 메모리 및 상기 비휘발성 메모리를 제어하는 스토리지 컨트롤러를 포함하고, 상기 스토리지 컨트롤러는, 복수의 커맨드들/어드레스들을 생성하도록 구성된 커맨드/어드레스 생성기, 상기 복수의 커맨드들/어드레스들의 통신 오류율 및 상기 복수의 커맨드들/어드레스들에 대한 판단 오류율을 기초로, 상기 비휘발성 메모리에 제공할 커맨드 및 어드레스의 통신 오류 발생 여부를 예측하도록 구성된 머신 러닝 모듈, 상기 통신 오류 발생이 예측된 경우, 상기 커맨드 및 상기 어드레스로부터 오류 검출 신호를 생성하도록 구성된 오류 검출 모듈, 및 상기 통신 오류 발생이 예측된 경우, 상기 비휘발성 메모리에 상기 커맨드, 상기 어드레스 및 상기 오류 검출 신호를 전송하도록 구성된 인터페이스 회로를 포함한다.
본 개시의 기술적 사상에 따른 스토리지 컨트롤러의 동작 방법은, 비휘발성 메모리를 제어하는 스토리지 컨트롤러의 동작 방법으로서, 제1 구간 동안 상기 스토리지 컨트롤러에서 상기 비휘발성 메모리에 전송되는 제1 커맨드들/어드레스들 각각의 통신 오류 발생 여부에 대해 머신 러닝 모듈에 의해 학습을 수행하는 단계, 상기 제1 구간 이후의 제2 구간 동안, 상기 스토리지 컨트롤러에서 상기 비휘발성 메모리에 전송되는 제2 커맨드들/어드레스들 각각의 통신 오류 발생 여부에 대해 상기 머신 러닝 모듈에 의해 학습을 수행하는 단계, 상기 제2 구간 동안, 상기 제2 커맨드들/어드레스들 각각에 대해 통신 오류 발생 여부를 판단하고, 상기 통신 오류 발생 여부 판단 결과에 따른 판단 데이터를 수집하는 단계, 상기 제2 구간이 종료하면, 상기 제1 및 제2 커맨드들/어드레스들에 대한 통신 오류율 및 상기 판단 데이터에 기초한 판단 오류율의 합을 기준 값과 비교하는 단계, 및 상기 통신 오류율 및 상기 판단 오류율의 합이 상기 기준 값보다 작으면, 머신 러닝 판단 시스템을 적용하여 커맨드/어드레스에 대한 통신 오류를 예측하는 단계를 포함한다.
본 개시의 기술적 사상에 따른 스토리지 장치는 비휘발성 메모리 및 상기 비휘발성 메모리를 제어하는 스토리지 컨트롤러를 포함하고, 상기 스토리지 컨트롤러는, 커맨드 및 어드레스를 생성하도록 구성된 커맨드/어드레스 생성기, 제1 오류 검출 로직 및 제2 오류 검출 로직을 포함하는 복수의 오류 검출 로직들을 포함하고, 상기 복수의 오류 검출 로직들 중 선택 오류 검출 로직으로 상기 커맨드 및 상기 어드레스에 대한 오류 검출 신호를 생성하는 오류 검출 모듈, 및 상기 비휘발성 메모리에 상기 커맨드, 상기 어드레스 및 상기 오류 검출 신호를 전송하도록 구성된 인터페이스 회로를 포함하고, 상기 오류 검출 모듈은, 상기 제1 오류 검출 로직을 적용하여 복수의 커맨드들/어드레스들 각각에 대한 오류 검출 동작을 수행하고, 상기 복수의 커맨드들/어드레스들의 통신 오류율과 상기 제1 오류 검출 로직의 오류율의 비교 결과에 따라, 상기 선택 오류 검출 로직을 상기 제1 오류 검출 로직에서 상기 제2 오류 검출 로직으로 변경한다.
본 개시의 기술적 사상에 따르면, 스토리지 컨트롤러는 커맨드 및 어드레스로부터 생성된 오류 검출 신호를 포함하는 컨펌 커맨드를 비휘발성 메모리에 전송하고, 이에 따라, 비휘발성 메모리는 오류 검출 신호로부터 커맨드 및 어드레스의 통신 오류를 검출할 수 있다. 또한, 스토리지 컨트롤러는 머신 러닝 모듈을 이용하여 커맨드 및 어드레스의 통신 오류를 예측하고, 통신 오류가 예측된 경우에만 오류 검출 신호(예를 들어, CRC 값)를 비휘발성 메모리에 전송할 수 있고, 이에 따라, 오류 검출 신호의 생성 및 전송에 따른 성능 감소를 줄일 수 있다. 나아가, 스토리지 컨트롤러는 커맨드 및 어드레스의 오류율에 따라 복수의 오류 검출 로직들 중 하나를 선택할 수 있고, 이에 따라, 오류율에 따라 스토리지 컨트롤러의 연산량을 감소시킬 수 있다.
도 1은 본 개시의 일 실시예에 따른 스토리지 장치를 나타내는 블록도이다.
도 2a 및 도 2b는 본 개시의 일 실시예에 따른 비휘발성 메모리의 독출 동작 시, 스토리지 컨트롤러와 비휘발성 메모리 사이의 통신을 나타내는 타이밍도이다.
도 3은 본 개시의 일 실시예에 따른 스토리지 컨트롤러와 비휘발성 메모리 사이의 독출 동작 방법을 나타낸다.
도 4a 및 도 4b는 본 개시의 일 실시예에 따른 비휘발성 메모리의 기입 동작 시, 스토리지 컨트롤러와 비휘발성 메모리 사이의 통신을 나타내는 타이밍도이다.
도 5는 본 개시의 일 실시예에 따른 스토리지 컨트롤러와 비휘발성 메모리 사이의 기입 동작 방법을 나타낸다.
도 6은 본 개시의 일 실시예에 따른 스토리지 컨트롤러를 구체적으로 나타내는 블록도이다.
도 7은 본 개시의 일 실시예에 따른 비휘발성 메모리를 구체적으로 나타내는 블록도이다.
도 8은 본 개시의 일 실시예에 따른 스토리지 장치를 나타내는 블록도이다.
도 9a 내지 도 9c는 본 개시의 일 실시예에 따른 비휘발성 메모리의 독출 동작 시, 스토리지 컨트롤러와 비휘발성 메모리 사이의 통신을 나타내는 타이밍도이다.
도 10a 내지 도 10c는 본 개시의 일 실시예에 따른 비휘발성 메모리의 독출 동작 시, 스토리지 컨트롤러와 비휘발성 메모리 사이의 통신을 나타내는 타이밍도이다.
도 11은 본 개시의 일 실시예에 따른 스토리지 컨트롤러를 구체적으로 나타내는 블록도이다.
도 12는 본 개시의 일 실시예에 따른 스토리지 컨트롤러의 동작 방법을 나타내는 흐름도이다.
도 13은 본 개시의 일 실시예에 따라, 제1 구간에서 스토리지 컨트롤러와 비휘발성 메모리 사이의 동작 방법을 나타내는 흐름도이다.
도 14는 본 개시의 일 실시예에 따라, 제2 구간에서 스토리지 컨트롤러와 비휘발성 메모리 사이의 동작 방법을 나타내는 흐름도이다.
도 15는 본 개시의 일 실시예에 따라, 제3 구간에서 스토리지 컨트롤러와 비휘발성 메모리 사이의 동작 방법을 나타내는 흐름도이다.
도 16a 및 도 16b는 본 개시의 일 실시예에 따라 스토리지 컨트롤러와 비휘발성 메모리 사이의 통신을 나타내는 타이밍도이다.
도 17은 본 개시의 일 실시예에 따른 스토리지 컨트롤러의 동작 방법을 나타내는 흐름도이다.
도 18은 본 개시의 일 실시예에 따른 스토리지 장치를 나타내는 블록도이다.
도 19는 본 발명의 일 실시예에 따른 스토리지 장치가 적용된 시스템을 도시한 도면이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명한다.
도 1은 본 개시의 일 실시예에 따른 스토리지 장치(10)를 나타내는 블록도이다.
도 1을 참조하면, 스토리지 장치(10)는 스토리지 컨트롤러(100) 및 비휘발성 메모리(200)를 포함할 수 있다. 스토리지 장치(10)는 호스트(HOST)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일 예로서, 스토리지 장치(10)는 SSD(Solid State Drive), 임베디드(embedded) 메모리 및 착탈 가능한 외장(external) 메모리 중 적어도 하나를 포함할 수 있다. 스토리지 장치(10)가 SSD인 경우, 스토리지 장치(10)는 NVMe(non-volatile memory express) 표준을 따르는 장치일 수 있다. 스토리지 장치(10)가 임베디드 메모리 혹은 외장(external) 메모리인 경우, 스토리지 장치(10)는 UFS(universal flash storage) 혹은 eMMC(embedded multi-media card) 표준을 따르는 장치일 수 있다.
실시예에 따라, 스토리지 컨트롤러(100)는 컨트롤러, 디바이스 컨트롤러, 또는 메모리 컨트롤러로 지칭될 수도 있다. 일 실시예에서, 비휘발성 메모리(200)는 플래시 메모리를 포함할 수 있고, 이때, 스토리지 컨트롤러(100)는 플래시 메모리 컨트롤러(flash memory controller, FMC)라고 지칭할 수 있다. 실시예에 따라, 비휘발성 메모리(200)는 복수의 메모리 칩들 또는 복수의 메모리 다이(die)들로 구현될 수 있다. 예를 들어, 복수의 메모리 칩들 각각은 DDP(Dual Die Package), QDP(Quadruple Die Package), 또는 ODP(Octuple Die Package)일 수 있다.
스토리지 컨트롤러(100)는 호스트로부터의 기입 요청에 응답하여 비휘발성 메모리(200)에 데이터를 기입하도록 비휘발성 메모리(200)를 제어하거나, 또는 호스트로부터의 독출 요청에 응답하여 비휘발성 메모리(200)에 저장된 데이터를 독출하도록 비휘발성 메모리(200)를 제어할 수 있다. 본 실시예에 따르면, 스토리지 컨트롤러(100)는 커맨드/어드레스 생성기(110), 오류 검출 모듈(120), 인터페이스 회로(130), 및 제1 내지 제4 핀들(P1a 내지 P1d)를 포함할 수 있다. 제1 내지 제4 핀들(P1a 내지 P1d)은 비휘발성 메모리(200)의 제1 내지 제4 핀들(P2a 내지 P2d)에 각각 대응할 수 있다.
커맨드/어드레스 생성기(110)는 비휘발성 메모리(200)를 제어하기 위한 커맨드/어드레스(CMD/ADDR)를 생성할 수 있다. 일 실시예에서, 커맨드/어드레스(CMD/ADDR)는 비휘발성 메모리(200)에 순차적으로 전송되는 제1 커맨드(CMD1), 어드레스(ADDR), 및 제2 커맨드(예를 들어, 도 2a의 CMD2)를 포함하는 커맨드 세트(command set)로서 생성될 수 있다. 제1 커맨드(CMD1)는 메모리 동작의 종류를 나타낼 수 있고, 제2 커맨드(CMD2)는 제1 커맨드(CMD1)와 관련된 메모리 동작을 지시할 수 있다. 실시예에 따라, 제1 커맨드(CMD1)는 "입력 커맨드"라고 지칭할 수 있고, 제2 커맨드(CMD2)는 "컨펌(confirm) 커맨드" 또는 "던(done) 커맨드"라고 지칭할 수 있다.
오류 검출 모듈(120)은 커맨드/어드레스(CMD/ADDR)의 통신 오류를 검출하기 위한 오류 검출 신호(Error Detection Signal)(ED)를 생성할 수 있다. 실시예에 따라, 오류 검출 모듈(120)은 "커맨드 오류 검출 모듈", "커맨드/어드레스 오류 검출 모듈" 또는 "커맨드 세트 오류 검출 모듈"이라고 지칭할 수 있다. 예를 들어, 오류 검출 신호(ED)는 1 비트 신호일 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 오류 검출 신호(ED)는 멀티 비트 신호일 수 있다. 구체적으로, 오류 검출 모듈(120)은 커맨드/어드레스 생성기(110)에서 생성된 제1 커맨드(CMD1) 및 어드레스(ADDR)로부터 오류 검출 신호(ED)를 생성할 수 있고, 생성된 오류 검출 신호(ED)를 커맨드/어드레스 생성기(110)에 제공할 수 있다.
일 실시예에서, 오류 검출 모듈(120)은 제1 커맨드(CMD1) 및 어드레스(ADDR)로부터 패리티 비트(parity bit)를 생성할 수 있고, 생성된 패리티 비트를 오류 검출 신호(ED)로서 출력할 수 있다. 일 실시예에서, 오류 검출 모듈(120)은 제1 커맨드(CMD1) 및 어드레스(ADDR)로부터 CRC(Cyclic Redundancy Check) 값을 생성할 수 있고, 생성된 CRC 값을 오류 검출 신호(ED)로서 출력할 수 있다. 일 실시예에서, 오류 검출 모듈(120)은 제1 커맨드(CMD1) 및 어드레스(ADDR)로부터 체크섬(checksum)을 생성할 수 있고, 생성된 체크섬을 오류 검출 신호(ED)로서 출력할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 오류 검출 모듈(120)은 다양한 오류 검출 프로그램 또는 오류 검출 로직을 이용하여 제1 커맨드(CMD1) 및 어드레스(ADDR)로부터 오류 검출 신호(ED)를 생성할 수 있다.
인터페이스 회로(130)는 제1 핀들(P1a)을 통해 비휘발성 메모리(200)에 복수의 데이터 신호들(DQ)을 전송하거나, 비휘발성 메모리(200)로부터 복수의 데이터 신호들(DQ)을 수신할 수 있다. 복수의 데이터 신호들(DQ)을 통해 커맨드(CMD), 어드레스(ADDR), 및 데이터(DATA)가 전달될 수 있다. 예를 들어, 복수의 데이터 신호들(DQ)은 복수의 데이터 신호 라인들을 통해 각각 전달될 수 있다. 이하에서는, 제1 핀들(P1a)의 개수가 8인 실시예를 중심으로 설명하기로 한다. 그러나, 본 발명은 이에 한정되지 않으며, 제1 핀들(P1a)의 개수는 실시예에 따라 다양하게 변경될 수 있다.
인터페이스 회로(130)는 제2 핀(P1b)을 통해 비휘발성 메모리(200)로부터, 비휘발성 메모리(200)의 상태 정보를 나타내는 레디/비지 출력 신호(nR/B)를 수신할 수 있다. 또한, 인터페이스 회로(130)는 제3 핀(P1c) 및 제4 핀(P1d)을 통해 커맨드 래치 인에이블 신호(CLE) 및 어드레스 래치 인에이블 신호(ALE)를 비휘발성 메모리(200)에 각각 제공할 수 있다. 인터페이스 회로(130)는 인에이블 상태를 가지는 커맨드 래치 인에이블 신호(CLE)를 전송함에 따라 커맨드(CMD)를 포함하는 데이터 신호들(DQ)을 비휘발성 메모리(200)로 전송하고, 인에이블 상태를 가지는 어드레스 래치 인에이블 신호(ALE)를 전송함에 따라 어드레스(ADDR)를 포함하는 데이터 신호들(DQ)을 비휘발성 메모리(200)로 전송할 수 있다.
비휘발성 메모리(200)는 메모리 셀 어레이(210), 제어 로직 회로(220), 및 인터페이스 회로(230)를 포함할 수 있다. 인터페이스 회로(230)는 제1 핀들(P2a)을 통해 스토리지 컨트롤러(100)로부터 복수의 데이터 신호들(DQ)을 수신하거나, 스토리지 컨트롤러(100)에 복수의 데이터 신호들(DQ)을 전송할 수 있다. 또한, 인터페이스 회로(230)는 제3 핀(P2c) 및 제4 핀(P2d)을 통해 스토리지 컨트롤러(100)로부터 커맨드 래치 인에이블 신호(CLE) 및 어드레스 래치 인에이블 신호(ALE)를 각각 수신할 수 있다.
인터페이스 회로(230)는 제2 핀(P2b)을 통해 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(100)에 전송할 수 있다. 비휘발성 메모리(200)가 비지 상태인 경우(즉, 비휘발성 메모리(200) 내부 동작들이 수행 중인 경우), 인터페이스 회로(230)는 비지 상태를 나타내는 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(100)로 전송할 수 있다. 비휘발성 메모리(200)가 레디 상태인 경우(즉, 비휘발성 메모리(200) 내부 동작들이 수행되지 않거나 완료된 경우), 인터페이스 회로(230)는 레디 상태를 나타내는 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(100)로 전송할 수 있다. 예를 들어, 비휘발성 메모리(200)가 독출 커맨드에 응답하여 메모리 셀 어레이(210)로부터 데이터(DATA)를 독출하는 동안, 인터페이스 회로(230)는 비지 상태(예를 들어, 로우 레벨)를 나타내는 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(100)로 전송할 수 있다. 예를 들어, 비휘발성 메모리(200)가 프로그램 커맨드에 응답하여 메모리 셀 어레이(210)로 데이터(DATA)를 프로그램하는 동안, 인터페이스 회로(230)는 비지 상태를 나타내는 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(100)로 전송할 수 있다.
메모리 셀 어레이(210)는 복수의 메모리 셀들을 포함할 수 있다. 예를 들어, 복수의 메모리 셀들은 플래시 메모리 셀들일 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 메모리 셀들은 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) 플래시 메모리 셀들인 실시예를 중심으로 본 발명의 실시예들이 설명될 것이다.
제어 로직 회로(220)는 비휘발성 메모리(200)의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(220)는 커맨드 래치 인에이블 신호(CLE)의 인에이블 구간에서 제1 핀들(P2a)을 통해 수신되는 데이터 신호들(DQ)을 커맨드(CMD)로 판단할 수 있고, 어드레스 래치 인에이블 신호(ALE)의 인에이블 구간에서 제1 핀들(P2a)을 통해 수신되는 데이터 신호들(DQ)을 어드레스(ADDR)로 판단할 수 있다. 제어 로직 회로(220)는 커맨드/어드레스(CMD/ADDR)에 따라 비휘발성 메모리(200)의 다른 구성 요소들을 제어하기 위한 제어 신호들을 생성할 수 있다. 예를 들어, 제어 로직 회로(220)는 메모리 셀 어레이(210)에 데이터(DATA)를 프로그램하거나, 또는 메모리 셀 어레이(210)로부터 데이터(DATA)를 독출하기 위한 각종 제어 신호들을 생성할 수 있다.
일 실시예에서, 제어 로직 회로(220)는 커맨드/어드레스(CMD/ADDR)에 포함된 오류 검출 신호(ED)에 따라, 커맨드/어드레스(CMD/ADDR)에서 통신 오류가 발생했는지 여부를 판단할 수 있다. 판단 결과, 커맨드/어드레스(CMD/ADDR)에서 통신 오류가 발생한 경우, 비휘발성 메모리(200)는 에러 메시지(예를 들어, 도 2b의 E)를 스토리지 컨트롤러(100)에 전송할 수 있다. 예를 들어, 에러 메시지(E)는 제1 핀들(P2a)을 통해 스토리지 컨트롤러(100)에 전송될 수 있다. 한편, 커맨드/어드레스(CMD/ADDR)에서 통신 오류가 발생하지 않은 경우, 비휘발성 메모리(200)는 커맨드/어드레스(CMD/ADDR)에 따른 메모리 동작을 수행할 수 있다. 예를 들어, 커맨드(CDM/ADDR)가 독출 커맨드를 포함하는 경우, 메모리 셀 어레이(210)로부터 데이터(DATA)를 독출할 수 있고, 이에 대해, 도 2a, 도 2b 및 도 3을 참조하여 더욱 자세하게 설명하기로 한다. 예를 들어, 커맨드(CDM/ADDR)가 기입 커맨드를 포함하는 경우, 메모리 셀 어레이(210)에 데이터(DATA)를 기입할 수 있고, 이에 대해, 도 4a, 도 4b 및 도 5를 참조하여 더욱 자세하게 설명하기로 한다.
도 2a 및 도 2b는 본 개시의 일 실시예에 따른 비휘발성 메모리(200)의 독출 동작 시, 스토리지 컨트롤러(100)와 비휘발성 메모리(200) 사이의 통신을 나타내는 타이밍도이다.
도 1 및 도 2a를 함께 참조하면, 스토리지 컨트롤러(100)는 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200)에 제1 커맨드(211), 어드레스(212) 및 제2 커맨드(213)를 순차적으로 전송할 수 있다. 제1 커맨드(211)는 메모리 동작의 종류가 독출 동작임을 나타내는 입력 커맨드(예를 들어, 00h)를 포함할 수 있고, 어드레스(212)는 제1 및 제2 칼럼 어드레스들(C1, C2) 및 제1 내지 제3 로우 어드레스들(R1, R2, R3)을 포함할 수 있다. 제2 커맨드(213)는 독출 페이지 사이즈를 지시하는 컨펌 커맨드일 수 있다. 예를 들어, 독출 페이지의 사이즈가 4KB인 경우 제2 커맨드(213)는 4KB 독출 커맨드(50h)를 포함할 수 있다. 예를 들어, 독출 페이지의 사이즈가 8KB인 경우 제2 커맨드(213)는 8KB 독출 커맨드(20h)를 포함할 수 있다. 예를 들어, 독출 페이지의 사이즈가 16KB인 경우 제2 커맨드(213)는 16KB 독출 커맨드(30h)를 포함할 수 있다.
일 실시예에서, 오류 검출 모듈(120)은 제1 커맨드(211) 및 어드레스(212)로부터 오류 검출 신호(ED)를 생성할 수 있고, 커맨드/어드레스 생성기(110)는 제2 커맨드(213)의 예비 비트(reserved bit)가 오류 검출 신호(ED)를 포함하도록 제2 커맨드(213)를 생성할 수 있다. 예를 들어, 오류 검출 신호(ED)는 제2 커맨드(213)의 MSB(Most Significant Bit)에 포함될 수 있으나, 본 발명은 이에 한정되지 않는다. 비휘발성 메모리(200)는 오류 검출 신호(ED)를 기초로 제1 커맨드(211) 및 어드레스(212)에서 통신 오류가 발생했는지 여부를 판단할 수 있다. 판단 결과, 제1 커맨드(211) 및 어드레스(212)에서 통신 오류가 발생하지 않은 경우, 비휘발성 메모리(200)는 독출 동작을 수행하고, 독출 데이터(R-DATA)를 스토리지 컨트롤러(100)에 전송할 수 있다.
구체적으로, 제2 커맨드(213)의 전송 시점부터 제1 시간(tWB) 이후, 비휘발성 메모리(200)는 독출 동작 시간(tR) 동안 독출 동작을 수행할 수 있다. 독출 동작 시간(tR)의 종료 시점부터 제2 시간(tRR) 이후, 비휘발성 메모리(200)는 복수의 데이터 신호 라인들을 통해 스토리지 컨트롤러(100)에 독출 데이터(R-DATA)를 전송할 수 있다. 예를 들어, 제1 시간(tWB)은 기입 인에이블 신호의 인에이블 구간에 대응할 수 있고, 제2 시간(tRR)은 독출 인에이블 신호의 인에이블 구간에 대응할 수 있다.
도 1 및 도 2b를 참조하면, 비휘발성 메모리(200)는 오류 검출 신호(ED)를 기초로 제1 커맨드(211) 및 어드레스(212)에서 통신 오류가 발생했는지 여부를 판단할 수 있다. 판단 결과, 제1 커맨드(211) 및 어드레스(212)에서 통신 오류가 발생한 경우, 비휘발성 메모리(200)는 에러 메시지(E)를 생성할 수 있고, 복수의 데이터 신호 라인들을 통해 스토리지 컨트롤러(100)에 에러 메시지(E)를 전송할 수 있다. 스토리지 컨트롤러(100)는 에러 메시지(E)에 응답하여, 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200)에 제1 커맨드(214), 어드레스(215) 및 제2 커맨드(216)를 순차적으로 전송할 수 있다. 예를 들어, 제1 커맨드(214), 어드레스(215) 및 제2 커맨드(216)는 이전에 전송된 제1 커맨드(211), 어드레스(212) 및 제2 커맨드(213)와 실질적으로 동일할 수 있으나, 본 발명은 이에 한정되지 않는다.
도 3은 본 개시의 일 실시예에 따른 스토리지 컨트롤러(100)와 비휘발성 메모리(200) 사이의 독출 동작 방법을 나타낸다.
도 1 내지 도 3을 함께 참조하면, 단계 S100에서, 스토리지 컨트롤러(100)는 독출 커맨드 및 어드레스를 생성한다. 예를 들어, 독출 커맨드는 도 2a 및 도 2b의 제1 커맨드(211)에 대응할 수 있고, 어드레스는 도 2a 및 도 2b의 어드레스(212)에 대응할 수 있다. 단계 S110에서, 스토리지 컨트롤러(100)는 독출 커맨드 및 어드레스로부터 오류 검출 신호(ED)를 생성한다. 단계 S120에서, 스토리지 컨트롤러(100)는 오류 검출 신호(ED)를 포함하는 컨펌 커맨드를 생성한다. 예를 들어, 컨펌 커맨드는 도 2a 및 도 2b의 제2 커맨드(213)에 대응할 수 있다.
단계 S130에서, 스토리지 컨트롤러(100)는 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200)에 커맨드/어드레스(CMD/ADDR)를 전송한다. 예를 들어, 커맨드/어드레스(CMD/ADDR)는 독출 커맨드, 어드레스, 및 컨펌 커맨드를 포함할 수 있고, 독출 커맨드, 어드레스, 및 컨펌 커맨드는 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200)에 순차적으로 전송될 수 있다.
단계 S140에서, 비휘발성 메모리(200)는 오류 검출 신호(ED)를 기초로 커맨드/어드레스(CMD/ADDR)의 통신 오류를 검출한다. 여기서, 커맨드/어드레스(CMD/ADDR)의 오류는 커맨드/어드레스(CMD/ADDR)의 전송 과정에서 발생하는 통신 오류일 수 있다. 예를 들어, 제어 로직 회로(220)는 오류 검출 신호(ED)에 대한 로직 연산을 통해 커맨드/어드레스(CMD/ADDR)에서의 통신 오류를 검출할 수 있다.
단계 S150에서, 비휘발성 메모리(200)는 커맨드/어드레스(CMD/ADDR)에서 통신 오류가 발생하는지 여부를 판단한다. 판단 결과, 커맨드/어드레스(CMD/ADDR)에서 통신 오류가 발생하면, 단계 S160에서, 비휘발성 메모리(200)는 스토리지 컨트롤러(100)에 에러 메시지(E)를 전송한다. 예를 들어, 에러 메시지(E)는 복수의 데이터 신호 라인들을 통해 스토리지 컨트롤러(100)에 전송될 수 있다.
단계 S170에서, 스토리지 컨트롤러(100)는 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200)에 커맨드/어드레스(CMD/ADDR)를 다시 전송한다. 예를 들어, 커맨드/어드레스(CMD/ADDR)는 독출 커맨드, 어드레스, 및 컨펌 커맨드를 포함할 수 있고, 독출 커맨드, 어드레스, 및 컨펌 커맨드는 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200)에 순차적으로 전송될 수 있다. 예를 들어, 독출 커맨드, 어드레스, 및 컨펌 커맨드는 도 2b의 제1 커맨드(214), 어드레스(215), 및 제2 커맨드(216)에 각각 대응할 수 있다.
단계 S180에서, 비휘발성 메모리(200)는 커맨드/어드레스(CMD/ADDR)에 따른 독출 동작을 수행한다. 구체적으로, 제어 로직 회로(220)는 독출 동작 시간(tR) 동안 커맨드/어드레스(CMD/ADDR)에 따라 메모리 셀 어레이(210)에 저장된 데이터를 독출할 수 있다. 단계 S190에서, 비휘발성 메모리(200)는 복수의 데이터 신호 라인들을 통해 스토리지 컨트롤러(100)에 독출 데이터(R-DATA)를 전송한다.
도 4a 및 도 4b는 본 개시의 일 실시예에 따른 비휘발성 메모리(200)의 기입 동작 시, 스토리지 컨트롤러(100)와 비휘발성 메모리(200) 사이의 통신을 나타내는 타이밍도이다.
도 1 및 도 4a를 함께 참조하면, 스토리지 컨트롤러(100)는 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200)에 제1 커맨드(411), 어드레스(412), 기입 데이터(W-DATA), 및 제2 커맨드(413)를 순차적으로 전송할 수 있다. 제1 커맨드(411)는 메모리 동작의 종류가 기입 동작임을 나타내는 입력 커맨드(예를 들어, 80h)를 포함할 수 있고, 어드레스(412)는 제1 및 제2 칼럼 어드레스들(C1, C2) 및 제1 내지 제3 로우 어드레스들(R1, R2, R3)을 포함할 수 있다. 제2 커맨드(413)는 기입 동작을 지시하는 컨펌 커맨드(예를 들어, 10h)일 수 있다.
일 실시예에서, 오류 검출 모듈(120)은 제1 커맨드(411) 및 어드레스(412)로부터 오류 검출 신호(ED)를 생성할 수 있고, 커맨드/어드레스 생성기(110)는 제2 커맨드(413)의 예비 비트(reserved bit)가 오류 검출 신호(ED)를 포함하도록 제2 커맨드(413)를 생성할 수 있다. 예를 들어, 오류 검출 신호(ED)는 제2 커맨드(413)의 MSB에 포함될 수 있으나, 본 발명은 이에 한정되지 않는다. 비휘발성 메모리(200)는 오류 검출 신호(ED)를 기초로 제1 커맨드(411) 및 어드레스(412)에서 통신 오류가 발생했는지 여부를 판단할 수 있다. 판단 결과, 제1 커맨드(411) 및 어드레스(412)에서 통신 오류가 발생하지 않은 경우, 비휘발성 메모리(200)는 기입 동작을 수행할 수 있다.
구체적으로, 제2 커맨드(413)의 전송 시점부터 제1 시간(tWB) 이후, 비휘발성 메모리(200)는 프로그램 동작 시간(tPROG) 동안 기입 동작을 수행할 수 있다. 예를 들어, 제1 시간(tWB)은 기입 인에이블 신호의 인에이블 구간에 대응할 수 있다. 프로그램 동작 시간(tPROG)의 종료 시점 이후, 비휘발성 메모리(200)는 복수의 데이터 신호 라인들을 통해 스토리지 컨트롤러(100)에 기입 동작이 완료되었음을 나타내는 응답 메시지를 전송할 수 있다.
도 1 및 도 4b를 참조하면, 비휘발성 메모리(200)는 오류 검출 신호(ED)를 기초로 제1 커맨드(411) 및 어드레스(412)에서 통신 오류가 발생했는지 여부를 판단할 수 있다. 판단 결과, 제1 커맨드(411) 및 어드레스(412)에서 통신 오류가 발생한 경우, 비휘발성 메모리(200)는 에러 메시지(E)를 생성할 수 있고, 복수의 데이터 신호 라인들을 통해 스토리지 컨트롤러(100)에 에러 메시지(E)를 전송할 수 있다. 스토리지 컨트롤러(100)는 에러 메시지(E)에 응답하여, 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200)에 제1 커맨드(414), 어드레스(415), 기입 데이터(W-DATA), 및 제2 커맨드(416)를 순차적으로 전송할 수 있다. 예를 들어, 제1 커맨드(414), 어드레스(415), 기입 데이터(W-DATA), 및 제2 커맨드(416)는 이전에 전송된 제1 커맨드(411), 어드레스(412), 기입 데이터(W-DATA) 및 제2 커맨드(413)와 실질적으로 동일할 수 있으나, 본 발명은 이에 한정되지 않는다. 일 실시예에서, 스토리지 컨트롤러(100)는 에러 메시지(E)에 응답하여, 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200)에 제1 커맨드(414), 어드레스(415), 및 제2 커맨드(416)를 순차적으로 전송할 수도 있고, 이때, 기입 데이터(W-DATA)를 전송하지 않을 수 있다.
도 5는 본 개시의 일 실시예에 따른 스토리지 컨트롤러(100)와 비휘발성 메모리(200) 사이의 기입 동작 방법을 나타낸다.
도 1, 도 4a, 도 4b 및 도 5를 함께 참조하면, 단계 S200에서, 스토리지 컨트롤러(100)는 기입 커맨드 및 어드레스를 생성한다. 예를 들어, 기입 커맨드는 도 4a 및 도 4b의 제1 커맨드(411)에 대응할 수 있고, 어드레스는 도 4a 및 도 4b의 어드레스(412)에 대응할 수 있다. 단계 S210에서, 스토리지 컨트롤러(100)는 기입 커맨드 및 어드레스로부터 오류 검출 신호(ED)를 생성한다. 단계 S220에서, 스토리지 컨트롤러(100)는 오류 검출 신호(ED)를 포함하는 컨펌 커맨드를 생성한다. 예를 들어, 컨펌 커맨드는 도 4a 및 도 4b의 제2 커맨드(413)에 대응할 수 있다.
단계 S230에서, 스토리지 컨트롤러(100)는 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200)에 커맨드/어드레스(CMD/ADDR) 및 기입 데이터(W-DATA)를 전송한다. 예를 들어, 커맨드/어드레스(CMD/ADDR)는 기입 커맨드, 어드레스, 및 컨펌 커맨드를 포함할 수 있고, 기입 커맨드, 어드레스, 기입 데이터(W-DATA) 및 컨펌 커맨드는 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200)에 순차적으로 전송될 수 있다.
단계 S240에서, 비휘발성 메모리(200)는 오류 검출 신호(ED)를 기초로 커맨드/어드레스(CMD/ADDR)의 오류를 검출한다. 예를 들어, 커맨드/어드레스(CMD/ADDR)의 오류는 커맨드/어드레스(CMD/ADDR)의 전송 과정에서 발생하는 통신 오류일 수 있다. 예를 들어, 제어 로직 회로(220)는 오류 검출 신호(ED)에 대한 로직 연산을 통해 커맨드/어드레스(CMD/ADDR)에서의 통신 오류를 검출할 수 있다.
단계 S250에서, 비휘발성 메모리(200)는 커맨드/어드레스(CMD/ADDR)에서 통신 오류가 발생하는지 여부를 판단한다. 판단 결과, 커맨드/어드레스(CMD/ADDR)에서 통신 오류가 발생하면, 단계 S260에서, 비휘발성 메모리(200)는 스토리지 컨트롤러(100)에 에러 메시지(E)를 전송한다. 예를 들어, 에러 메시지(E)는 복수의 데이터 신호 라인들을 통해 스토리지 컨트롤러(100)에 전송될 수 있다.
단계 S270에서, 스토리지 컨트롤러(100)는 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200)에 커맨드/어드레스(CMD/ADDR)를 다시 전송한다. 예를 들어, 커맨드/어드레스(CMD/ADDR)는 기입 커맨드, 어드레스, 및 컨펌 커맨드를 포함할 수 있고, 기입 커맨드, 어드레스, 및 컨펌 커맨드는 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200)에 순차적으로 전송될 수 있다. 예를 들어, 기입 커맨드, 어드레스, 및 컨펌 커맨드는 도 4b의 제1 커맨드(414), 어드레스(415), 및 제2 커맨드(416)에 각각 대응할 수 있다.
단계 S280에서, 비휘발성 메모리(200)는 커맨드/어드레스(CMD/ADDR)에 따른 기입 독출 동작을 수행한다. 구체적으로, 제어 로직 회로(220)는 프로그램 동작 시간(tPROG) 동안 커맨드/어드레스(CMD/ADDR)에 따라 메모리 셀 어레이(210)에 데이터를 기입할 수 있다. 단계 S290에서, 비휘발성 메모리(200)는 복수의 데이터 신호 라인들을 통해 스토리지 컨트롤러(100)에 기입 동작의 완료를 나타내는 응답 메시지를 전송한다.
도 6은 본 개시의 일 실시예에 따른 스토리지 컨트롤러(100)를 구체적으로 나타내는 블록도이다.
도 1 및 도 6을 함께 참조하면, 스토리지 컨트롤러(100)는 커맨드/어드레스 생성기(110), 오류 검출 모듈(120), 프로세서(140), ECC(error correction code) 엔진(150), 호스트 인터페이스(160), 및 비휘발성 메모리 인터페이스(170)를 포함할 수 있고, 이들은 버스(180)를 통해 통신할 수 있다. 프로세서(140)은 CPU(Central Processing Unit)나 마이크로 프로세서 등을 포함할 수 있으며, 스토리지 컨트롤러(100)의 전반적인 동작을 제어할 수 있다. 일 실시예에서, 프로세서(140)는 멀티 코어 프로세서로 구현될 수 있고, 예를 들어, 듀얼 코어 프로세서 또는 쿼드(quad) 코어 프로세서로 구현될 수 있다.
일 실시예에서, 커맨드/어드레스 생성기(110) 및 오류 검출 모듈(120)은 소프트웨어로 구현될 수 있다. 예를 들어, 비휘발성 메모리(200)는 커맨드/어드레스 생성을 위한 프로그램 코드를 저장하고, 스토리지 장치(10)에 전원이 인가되면 비휘발성 메모리(200)에 저장된 프로그램 코드는 스토리지 컨트롤러(100)의 동작 메모리에 로딩될 수 있다. 프로세서(140)는 동작 메모리에 로딩된 프로그램 코드를 실행함으로써 도 1 내지 도 5에 상술된 바와 같이, 오류 검출 신호(ED) 및 커맨드/어드레스(CMD/ADDR)를 생성할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 일 실시예에서, 커맨드/어드레스 생성기(110) 및 오류 검출 모듈(120)은 하드웨어로 구현될 수 있다. 또한, 일 실시예에서, 커맨드/어드레스 생성기(110) 및 오류 검출 모듈(120)은 소프트웨어 및 하드웨어의 조합으로 구현될 수 있다.
도 6에서, 커맨드/어드레스 생성기(110) 및 오류 검출 모듈(120)은 비휘발성 메모리 인터페이스(170)와 다른 기능 블록들로 도시되었으나, 본 발명은 이에 한정되지 않는다. 일 실시예에서, 커맨드/어드레스 생성기(110) 및 오류 검출 모듈(120) 중 적어도 하나는 비휘발성 메모리 인터페이스(170)에 포함되도록 구현될 수 있다.
호스트 인터페이스(160)는 호스트와 패킷(packet)을 송수신할 수 있다. 호스트로부터 호스트 인터페이스(160)로 전송되는 패킷은 커맨드 혹은 비휘발성 메모리(200)에 기록될 데이터 등을 포함할 수 있으며, 호스트 인터페이스(160)로부터 호스트로 전송되는 패킷은 커맨드에 대한 응답 혹은 비휘발성 메모리(200)로부터 독출된 데이터 등을 포함할 수 있다. 비휘발성 메모리 인터페이스(170)는 비휘발성 메모리(200)에 기록될 데이터, 즉, 기입 데이터(예를 들어, 도 4a 및 도 4b의 W-DATA)를 비휘발성 메모리(200)로 송신하거나, 비휘발성 메모리(200)로부터 독출된 데이터, 즉, 독출 데이터(예를 들어, 도 2a 및 도 2b의 R-DATA)를 수신할 수 있다. 이러한 비휘발성 메모리 인터페이스(170)는 토글(Toggle) 혹은 온파이(Open NAND Flash Interface; ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
ECC 엔진(150)은 비휘발성 메모리(200)로부터 독출되는 독출 데이터에 대한 오류 검출 및 정정 기능을 수행할 수 있다. 보다 구체적으로, ECC 엔진(150)은 비휘발성 메모리(200)에 기입될 기입 데이터에 대하여 패리티 비트들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 기입 데이터와 함께 비휘발성 메모리(200) 내에 저장될 수 있다. 비휘발성 메모리(200)로부터의 데이터 독출 시, ECC 엔진(150)은 독출 데이터와 함께 비휘발성 메모리(200)로부터 독출되는 패리티 비트들을 이용하여 독출 데이터의 에러를 정정하고, 에러가 정정된 독출 데이터를 출력할 수 있다. 이와 같이, ECC 엔진(150)은 데이터에 대한 오류 검출 및 정정 기능을 수행할 수 있고, 오류 검출 모듈(120)은 커맨드/어드레스에 대한 오류 검출 기능을 수행할 수 있다. 실시예에 따라, 오류 검출 모듈(120)은 커맨드/어드레스에 대한 오류 검출 및 정정 기능을 수행할 수도 있다.
도시되지는 않았으나, 스토리지 컨트롤러(100)는 플래시 변환 레이어(Flash Translation Layer; FTL), 패킷 매니저, 버퍼 메모리, 및 AES(advanced encryption standard) 엔진을 더 포함할 수 있다. 스토리지 컨트롤러(100)는 플래시 변환 레이어가 로딩되는 워킹 메모리를 더 포함할 수 있으며, 프로세서(140)가 플래시 변환 레이어를 실행하는 것에 의해 비휘발성 메모리(200)에 대한 데이터 기입 및 독출 동작이 제어될 수 있다.
도 7은 본 개시의 일 실시예에 따른 비휘발성 메모리(200)를 구체적으로 나타내는 블록도이다.
도 1 및 도 7을 함께 참조하면, 비휘발성 메모리(200)는 메모리 셀 어레이(210), 제어 로직 회로(220), 인터페이스 회로(230), 페이지 버퍼 회로(240), 전압 생성기(250), 및 로우 디코더(260)를 포함할 수 있다. 인터페이스 회로(230)는 스토리지 컨트롤러(100)로부터 복수의 데이터 신호들(DQ), 커맨드 래치 인에이블 신호(CLE) 및 어드레스 래치 인에이블 신호(ALE)를 수신하고, 스토리지 컨트롤러(100)에 레디/비지 출력 신호(nR/B)를 전송할 수 있다. 예를 들어, 인터페이스 회로(230)는 복수의 구동 드라이버들 및 복수의 수신기들을 포함할 수 있다.
인터페이스 회로(230)는 커맨드 래치 인에이블 신호(CLE) 및 어드레스 래치 인에이블 신호(ALE)를 기초로 복수의 데이터 신호들(DQ)이 커맨드(CMD), 어드레스(ADDR) 또는 데이터(DATA)를 포함하는 것으로 판단할 수 있다. 복수의 데이터 신호들(DQ)이 커맨드(CMD) 또는 어드레스(ADDR)를 포함하는 경우, 인터페이스 회로(230)는 커맨드(CMD) 또는 어드레스(ADDR)를 제어 로직 회로(220)에 제공할 수 있다. 복수의 데이터 신호들(DQ)이 데이터(DATA)를 포함하는 경우, 인터페이스 회로(230)는 데이터(DATA)를 페이지 버퍼 회로(240)에 제공할 수 있다.
제어 로직 회로(220)는 비휘발성 메모리(200) 내의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(220)는 인터페이스 회로(230)로부터의 커맨드(CMD) 및/또는 어드레스(ADDR)에 응답하여 각종 제어 신호들을 출력할 수 있다. 예를 들어, 제어 로직 회로(220)는 전압 제어 신호(CTRL_vol), 로우 어드레스(X-ADDR), 및 컬럼 어드레스(Y-ADDR)를 출력할 수 있다.
제어 로직 회로(220)는 오류 검출 모듈(221)을 포함할 수 있고, 오류 검출 모듈(221)은 커맨드(CMD) 및 어드레스(ADDR)의 통신 오류를 검출할 수 있다. 구체적으로, 오류 검출 모듈(221)은 커맨드(CMD)에 포함되는 오류 검출 신호(ED)에 대한 로직 연산을 수행함으로써, 커맨드(CMD) 및 어드레스(ADDR)의 통신 오류를 검출할 수 있다. 제어 로직 회로(220)는 통신 오류가 검출되면, 에러 메시지를 생성하고, 생성된 에러 메시지를 인터페이스 회로(230)에 제공할 수 있다. 인터페이스 회로(230)는 에러 메시지를 포함하는 복수의 데이터 신호들(DQ)을 스토리지 컨트롤러(100)에 제공할 수 있다. 한편, 제어 로직 회로(220)는 통신 오류가 검출되지 않으며, 커맨드(CMD) 및 어드레스(ADDR)에 따른 메모리 동작을 수행하도록 페이지 버퍼 회로(240), 전압 생성기(250), 및 로우 디코더(260)를 제어할 수 있다.
메모리 셀 어레이(210)는 비트 라인들(BL)을 통해 페이지 버퍼 회로(240)에 연결될 수 있고, 워드 라인들(WL), 스트링 선택 라인들(SSL), 및 그라운드 선택 라인들(GSL)을 통해 로우 디코더(260)에 연결될 수 있다. 예시적인 실시예에서, 메모리 셀 어레이(210)는 3차원 메모리 셀 어레이를 포함할 수 있고, 3차원 메모리 셀 어레이는 복수의 낸드 스트링들을 포함할 수 있다. 각 낸드 스트링은 기판 위에 수직으로 적층된 워드 라인들에 각각 연결된 메모리 셀들을 포함할 수 있다. 미국 특허공개공보 제7,679,133호, 미국 특허공개공보 제8,553,466호, 미국 특허공개공보 제8,654,587호, 미국 특허공개공보 제8,559,235호, 및 미국 특허출원공개공보 제2011/0233648호는 본 명세서에 인용 형식으로 결합된다. 예시적인 실시예에서, 메모리 셀 어레이(210)는 2차원 메모리 셀 어레이를 포함할 수 있고, 2차원 메모리 셀 어레이는 행 및 열 방향을 따라 배치된 복수의 낸드 스트링들을 포함할 수 있다.
페이지 버퍼 회로(240)는 컬럼 어드레스(Y_ADDR)에 응답하여 비트 라인들(BL) 중 적어도 하나의 비트 라인을 선택할 수 있다. 페이지 버퍼 회로(240)는 동작 모드에 따라 기입 드라이버 또는 감지 증폭기로서 동작할 수 있다. 예를 들어, 프로그램 동작 시, 페이지 버퍼 회로(240)는 선택된 비트 라인으로 프로그램될 데이터에 대응하는 비트 라인 전압을 인가할 수 있다. 독출 동작 시, 페이지 버퍼 회로(240)는 선택된 비트 라인의 전류 또는 전압을 감지하여 메모리 셀에 저장된 데이터를 감지할 수 있다.
전압 생성기(250)는 전압 제어 신호(CTRL_vol)를 기반으로 프로그램, 독출, 및 소거 동작들을 수행하기 위한 다양한 종류의 전압들을 생성할 수 있다. 예를 들어, 전압 생성기(250)는 워드 라인 전압(VWL)으로서 프로그램 전압, 독출 전압, 프로그램 검증 전압, 소거 전압 등을 생성할 수 있다. 로우 디코더(260)는 로우 어드레스(X_ADDR)에 응답하여 복수의 워드 라인들(WL) 중 하나를 선택할 수 있고, 복수의 스트링 선택 라인들(SSL) 중 하나를 선택할 수 있다. 예를 들어, 프로그램 동작 시, 로우 디코더(260)는 선택된 워드 라인으로 프로그램 전압 및 프로그램 검증 전압을 인가하고, 독출 동작 시, 선택된 워드 라인으로 독출 전압을 인가할 수 있다.
도 8은 본 개시의 일 실시예에 따른 스토리지 장치(10a)를 나타내는 블록도이다.
도 8을 참조하면, 스토리지 장치(10a)는 스토리지 컨트롤러(100a) 및 비휘발성 메모리(200a)를 포함할 수 있다. 스토리지 장치(10a)는 도 1의 스토리지 장치(10)의 변형 예에 대응하며, 도 1 내지 도 7을 참조하여 상술된 내용은 본 실시예에도 적용될 수 있고, 이에 따라, 중복된 설명은 생락하기로 한다.
커맨드/어드레스 생성기(110a)는 비휘발성 메모리(200a)를 제어하기 위한 커맨드/어드레스(CMD/ADDR)를 생성할 수 있다. 일 실시예에서, 커맨드/어드레스(CMD/ADDR)는 비휘발성 메모리(200a)에 순차적으로 전송되는 제1 커맨드(CMD1), 어드레스(ADDR), 및 제2 커맨드(예를 들어, 도 2a의 CMD2)를 포함하는 커맨드 세트로서 생성될 수 있다.
CRC 모듈(125)은 제1 커맨드(CMD1) 및 어드레스(ADDR)에 대해 CRC를 수행함으로써, CRC 값(CRC-x)을 생성할 수 있다. 구체적으로, CRC 모듈(125)은 복수의 데이터 신호 라인들을 통해 커맨드/어드레스(CMD/ADDR)를 전송할 때, 전송되는 커맨드/어드레스(CMD/ADDR)에 오류가 있는지 확인하기 위한 체크 값, 즉, CRC 값(CRC-x)을 계산할 수 있다. 생성된 CRC 값(CRC-x)은 제1 핀들(P1a)을 통해 비휘발성 메모리(200a)에 전송될 수 있다. 여기서, x는 생성되는 CRC 값의 사이즈에 따라 결정되는 양의 정수일 수 있다. 예를 들어, CRC 모듈(125)이 CRC-16 로직을 수행하는 경우, x는 16이고, CRC 값(CRC-16)은 16 비트 신호로 생성될 수 있다. 예를 들어, CRC 모듈(125)이 CRC-8 로직을 수행하는 경우, x는 8이고, CRC 값(CRC-8)은 8 비트 신호로 생성될 수 있다.
CRC 모듈(125)은 커맨드/어드레스(CMD/ADDR)를 전송하기 전에 커맨드/어드레스(CMD/ADDR)에 따라 CRC 값(CRC-x)을 계산하고, CRC 값(CRC-x)을 커맨드/어드레스(CMD/ADDR)와 함께 비휘발성 메모리(200a)에 전송할 수 있다. 일 실시예에서, CRC 모듈(125)은 커맨드/어드레스(CMD/ADDR)의 전송이 끝난 후 받은 커맨드/어드레스(CMD/ADDR)로 다시 CRC 값(CRC-x)을 계산하고, 두 CRC 값들이 서로 다르면 커맨드/어드레스(CMD/ADDR) 전송 과정에서 잡음 등에 의해 오류가 덧붙여 전송된 것 임을 알 수 있다. 일 실시예에서, CRC 모듈(125)은 비휘발성 메모리(200a)로부터 에러 메시지(E)를 수신하는 경우, 커맨드/어드레스(CMD/ADDR) 전송 과정에서 잡음 등에 의해 오류가 덧붙여 전송된 것 임을 알 수도 있다.
머신 러닝 모듈(190)은 신뢰성 확률 수치에 따라 커맨드/어드레스(CMD/ADDR)의 통신 오류의 발생을 예측할 수 있다. 구체적으로, 머신 러닝 모듈(190)은 커맨드/어드레스(CMD/ADDR)의 실제 오류 발생율, 즉, 통신 오류율(ES)과 머신 러닝에 의해 판단된 판단 오류율(ME)의 합을 기준 값(BC)과 비교할 수 있고, 비교 결과에 따라 커맨드/어드레스(CMD/ADDR) 전송 시 머신 러닝 판단 시스템을 적용할 수 있다.
커맨드/어드레스(CMD/ADDR)의 통신 오류가 발생할 것으로 예측된 경우, 머신 러닝 모듈(190)은 CRC 모듈(125)을 인에이블시킬 수 있고, 이에 따라, CRC 모듈(125)은 제1 커맨드(CMD1) 및 어드레스(ADDR)로부터 CRC 값(CRC-x)를 계산할 수 있고, 스토리지 컨트롤러(100a)는 커맨드/어드레스(CMD/ADDR)와 함께 CRC 값(CRC-x)을 비휘발성 메모리(200a)에 전송할 수 있다. 한편, 커맨드/어드레스(CMD/ADDR)의 통신 오류가 발생하지 않을 것으로 예측된 경우, 머신 러닝 모듈(190)은 CRC 모듈(125)을 디스에이블시킬 수 있고, 이에 따라, 스토리지 컨트롤러(100a)는 커맨드/어드레스(CMD/ADDR)만 비휘발성 메모리(200a)에 전송할 수 있고, CRC 값(CRC-x)은 비휘발성 메모리(200a)에 전송하지 않을 수 있다.
이와 같이, 본 실시예에 따르면, 스토리지 컨트롤러(100a)는 머신 러닝 모듈(190)을 이용하여 커맨드 및 어드레스의 통신 오류를 예측하고, 통신 오류가 예측된 경우에만 오류 검출 신호(예를 들어, CRC 값)를 생성하고, 오류 검출 신호(CRC 값)를 비휘발성 메모리(200a)에 전송할 수 있다. 이에 따라, 스토리지 컨트롤러(100a)는 오류 검출 신호의 생성 및 전송에 따른 성능 감소를 줄일 수 있다.
도 9a 내지 도 9c는 본 개시의 일 실시예에 따른 비휘발성 메모리(200a)의 독출 동작 시, 스토리지 컨트롤러(100a)와 비휘발성 메모리(200a) 사이의 통신을 나타내는 타이밍도이다. 본 실시예에 따른 스토리지 컨트롤러(100a)와 비휘발성 메모리(200a) 사이의 통신은 도 2a 및 도 2b에 예시된 스토리지 컨트롤러(100)와 비휘발성 메모리(200) 사이의 통신의 변형 예에 대응할 수 있고, 도 2a 및 도 2b를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있다.
도 8 및 도 9a를 참조하면, 머신 러닝 모듈(190)은 커맨드/어드레스(CMD/ADDR)의 통신 오류가 발생하지 않을 것으로 예측할 수 있다. 이때, 머신 러닝 모듈(190)은 CRC 모듈(125)을 디스에이블시킬 수 있고, 이에 따라, CRC 모듈(125)은 CRC 값들을 계산하지 않을 수 있다. 스토리지 컨트롤러(100a)는 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200a)에 제1 커맨드(911), 어드레스(912), 및 제2 커맨드(914)를 순차적으로 전송할 수 있다. 예를 들어, 제1 커맨드(911) 및 어드레스(912)는 도 2a의 제1 커맨드(211) 및 어드레스(212)에 각각 대응할 수 있다. 예를 들어, 제2 커맨드(914)는 독출 페이지 사이즈를 지시하는 컨펌 커맨드일 수 있고, 오류 검출 신호를 포함하지 않을 수 있다. 예를 들어, 제2 커맨드(914)는 50h, 20h 또는 30h를 포함할 수 있다. 비휘발성 메모리(200a)는 독출 동작을 수행하고, 독출 데이터(R-DATA)를 스토리지 컨트롤러(100a)에 전송할 수 있다.
도 8 및 도 9b를 함께 참조하면, 머신 러닝 모듈(190)은 커맨드/어드레스(CMD/ADDR)의 통신 오류가 발생할 것으로 예측할 수 있다. 이때, 머신 러닝 모듈(190)은 CRC 모듈(125)을 인에이블시킬 수 있고, 이에 따라, CRC 모듈(125)은 제1 커맨드(911) 및 어드레스(912)로부터 CRC 값들(913)을 계산할 수 있고, 스토리지 컨트롤러(100a)는 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200a)에 제1 커맨드(911), 어드레스(912), CRC 값들(913) 및 제2 커맨드(914)를 순차적으로 전송할 수 있다.
CRC 값들(913)은 CRC 모듈(125)에서 생성되는 CRC 값(CRC-x)에 대응할 수 있다. 예를 들어, CRC 모듈(125)은 CRC-16 오류 검출 로직을 적용하여 제1 커맨드(911) 및 어드레스(912)에 대해 CRC를 수행함으로써, CRC-16(1) 및 CRC-16(2)을 계산할 수 있고, CRC-16(1) 및 CRC-16(2)은 각각 8 비트로 제공될 수 있다. 비휘발성 메모리(200a)는 CRC 값들(913)을 기초로 제1 커맨드(911) 및 어드레스(912)에서 통신 오류가 발생했는지 여부를 판단할 수 있다. 판단 결과, 제1 커맨드(911) 및 어드레스(912)에서 통신 오류가 발생하지 않은 경우, 비휘발성 메모리(200a)는 독출 동작을 수행하고, 독출 데이터(R-DATA)를 스토리지 컨트롤러(100a)에 전송할 수 있다.
도 8 및 도 9c를 참조하면, 비휘발성 메모리(200a)는 CRC 값들(913)을 기초로 제1 커맨드(911) 및 어드레스(912)에서 통신 오류가 발생했는지 여부를 판단할 수 있다. 판단 결과, 제1 커맨드(911) 및 어드레스(912)에서 통신 오류가 발생한 경우, 에러 메시지(E)를 생성할 수 있고, 복수의 데이터 신호 라인들을 통해 스토리지 컨트롤러(100a)에 에러 메시지(E)를 전송할 수 있다. 스토리지 컨트롤러(100a)는 에러 메시지(E)에 응답하여, 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200a)에 제1 커맨드(915), 어드레스(916), CRC 값들(917), 및 제2 커맨드(918)를 순차적으로 전송할 수 있다. 예를 들어, 제1 커맨드(915), 어드레스(916), CRC 값들(917), 및 제2 커맨드(918)는 이전에 전송된 제1 커맨드(911), 어드레스(912), CRC 값들(913) 및 제2 커맨드(914)와 실질적으로 동일할 수 있으나, 본 발명은 이에 한정되지 않는다.
도 10a 내지 도 10c는 본 개시의 일 실시예에 따른 비휘발성 메모리(200a)의 기입 동작 시, 스토리지 컨트롤러(100a)와 비휘발성 메모리(200a) 사이의 통신을 나타내는 타이밍도이다. 본 실시예에 따른 스토리지 컨트롤러(100a)와 비휘발성 메모리(200a) 사이의 통신은 도 4a 및 도 4b에 예시된 스토리지 컨트롤러(100)와 비휘발성 메모리(200) 사이의 통신의 변형 예에 대응할 수 있고, 도 4a 및 도 4b를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있다.
도 8 및 도 10a를 참조하면, 머신 러닝 모듈(190)은 커맨드/어드레스(CMD/ADDR)의 통신 오류가 발생하지 않을 것으로 예측할 수 있다. 이때, 머신 러닝 모듈(190)은 CRC 모듈(125)을 디스에이블시킬 수 있고, 이에 따라, CRC 모듈(125)은 CRC 값들을 계산하지 않을 수 있다. 스토리지 컨트롤러(100a)는 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200a)에 제1 커맨드(1011), 어드레스(1012), 기입 데이터(W-DATA), 및 제2 커맨드(1014)를 순차적으로 전송할 수 있다. 예를 들어, 제1 커맨드(1011) 및 어드레스(1012)는 도 4a의 제1 커맨드(411) 및 어드레스(412)에 각각 대응할 수 있다. 예를 들어, 제2 커맨드(1014)는 기입 동작을 지시하는 컨펌 커맨드(예를 들어, 10h)일 수 있고, 오류 검출 신호를 포함하지 않을 수 있다. 비휘발성 메모리(200a)는 기입 데이터(W-DATA)의 기입 동작을 수행하고, 기입 동작이 완료되면, 복수의 데이터 신호 라인들을 통해 스토리지 컨트롤러(100a)에 기입 동작이 완료되었음을 나타내는 응답 메시지를 전송할 수 있다.
도 8 및 도 10b를 함께 참조하면, 머신 러닝 모듈(190)은 커맨드/어드레스(CMD/ADDR)의 통신 오류가 발생할 것으로 예측할 수 있다. 이때, 머신 러닝 모듈(190)은 CRC 모듈(125)을 인에이블시킬 수 있고, 이에 따라, CRC 모듈(125)은 제1 커맨드(1011) 및 어드레스(1012)로부터 CRC 값들(1013)을 계산할 수 있고, 스토리지 컨트롤러(100a)는 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200a)에 제1 커맨드(1011), 어드레스(1012), CRC 값들(1013), 기입 데이터(W-DATA), 및 제2 커맨드(1014)를 순차적으로 전송할 수 있다.
CRC 값들(1013)은 CRC 모듈(125)에서 생성되는 CRC 값(CRC-x)에 대응할 수 있다. 예를 들어, CRC 모듈(125)은 CRC-16 오류 검출 로직을 적용하여 을 제1 커맨드(1011) 및 어드레스(1012)에 대해 CRC를 수행함으로써, CRC-16(1) 및 CRC-16(2)을 계산할 수 있고, CRC-16(1) 및 CRC-16(2)은 각각 8 비트로 제공될 수 있다. 비휘발성 메모리(200a)는 CRC 값들(1013)을 기초로 제1 커맨드(1011) 및 어드레스(1012)에서 통신 오류가 발생했는지 여부를 판단할 수 있다. 판단 결과, 제1 커맨드(1011) 및 어드레스(1012)에서 통신 오류가 발생하지 않은 경우, 비휘발성 메모리(200a)는 기입 데이터(W-DATA)의 기입 동작을 수행할 수 있다.
도 8 및 도 10c를 참조하면, 비휘발성 메모리(200a)는 CRC 값들(1013)을 기초로 제1 커맨드(1011) 및 어드레스(1012)에서 통신 오류가 발생했는지 여부를 판단할 수 있다. 판단 결과, 제1 커맨드(1011) 및 어드레스(1012)에서 통신 오류가 발생한 경우, 에러 메시지(E)를 생성할 수 있고, 복수의 데이터 신호 라인들을 통해 스토리지 컨트롤러(100a)에 에러 메시지(E)를 전송할 수 있다. 스토리지 컨트롤러(100a)는 에러 메시지(E)에 응답하여, 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200a)에 제1 커맨드(1015), 어드레스(1016), CRC 값들(1017), 및 제2 커맨드(1018)를 순차적으로 전송할 수 있다. 예를 들어, 제1 커맨드(1015), 어드레스(1016), CRC 값들(1017), 및 제2 커맨드(1018)는 이전에 전송된 에 제1 커맨드(1011), 어드레스(1012), CRC 값들(1013) 및 제2 커맨드(1014)와 실질적으로 동일할 수 있으나, 본 발명은 이에 한정되지 않는다.
도 11은 본 개시의 일 실시예에 따른 스토리지 컨트롤러(100a)를 구체적으로 나타내는 블록도이다.
도 8 및 도 11을 함께 참조하면, 스토리지 컨트롤러(100a)는 커맨드/어드레스 생성기(110), CRC 모듈(125), 프로세서(140), ECC 엔진(150), 호스트 인터페이스(160), 비휘발성 메모리 인터페이스(170), 및 머신 러닝 모듈(190)을 포함할 수 있고, 이들은 버스(180)를 통해 통신할 수 있다. 스토리지 컨트롤러(100a)는 도 6의 스토리지 컨트롤러(100)의 변형 예에 대응하며, 도 6을 참조하여 상술된 내용은 본 실시예에도 적용될 수 있다.
일 실시예에서, CRC 모듈(125)은 소프트웨어로 구현될 수 있다. 예를 들어, 비휘발성 메모리(200a)는 CRC 수행을 위한 프로그램 코드를 저장하고, 스토리지 장치(10a)에 전원이 인가되면 비휘발성 메모리(200)에 저장된 프로그램 코드를 스토리지 컨트롤러(100a)의 동작 메모리에 로딩될 수 있다. 프로세서(140a)는 동작 메모리에 로딩된 프로그램 코드를 실행함으로써 커맨드/어드레스(CMD/ADDR)에 대해 CRC를 수행함으로써 CRC 값(CRC-x)을 생성할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 일 실시예에서, CRC 모듈(125)은 하드웨어로 구현될 수 있다. 또한, 일 실시예에서, CRC 모듈(125)은 소프트웨어 및 하드웨어의 조합으로 구현될 수 있다.
일 실시예에서, 머신 러닝 모듈(190)은 소프트웨어로 구현될 수 있다. 예를 들어, 비휘발성 메모리(200a)는 머신 러닝 수행을 위한 프로그램 코드를 저장하고, 스토리지 장치(10a)에 전원이 인가되면 비휘발성 메모리(200)에 저장된 프로그램 코드는 스토리지 컨트롤러(100a)의 동작 메모리에 로딩될 수 있다. 프로세서(140a)는 동작 메모리에 로딩된 프로그램 코드를 실행함으로써 커맨드/어드레스(CMD/ADDR)의 전송 시 발생될 통신 오류를 예측하고, 예측 결과에 따라 CRC 모듈(125)을 인에이블시킬 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 일 실시예에서, 머신 러닝 모듈(190)은 하드웨어로 구현될 수 있다. 또한, 일 실시예에서, 머신 러닝 모듈(190)은 소프트웨어 및 하드웨어의 조합으로 구현될 수 있다.
도 12는 본 개시의 일 실시예에 따른 스토리지 컨트롤러(100a)의 동작 방법을 나타내는 흐름도이다.
도 12를 참조하면, 단계 S310에서, 스토리지 컨트롤러(100a)의 머신 러닝 모듈(190)이 학습을 수행한다. 단계 S310은 스토리지 컨트롤러(100a)의 커맨드/어드레스 생성기(110)가 커맨드/어드레스를 발행(issue)하는 시점에 개시될 수 있다. 구체적으로, 머신 러닝 모듈(190)은 스토리지 컨트롤러(100a)에서 비휘발성 메모리(200a)에 전송되는 커맨드/어드레스 및 상기 커맨드/어드레스에 대한 통신 오류 발생 여부에 대해 학습을 수행할 수 있다.
단계 S320에서, 커맨드/어드레스의 처리 횟수(n)가 제1 기준 값(N1) 보다 큰지 판단한다. 판단 결과, 처리 횟수(n)가 제1 기준 값(N1) 보다 크면 단계 S330을 수행하고, 그렇지 않으면, 머신 러닝 모듈(190)은 계속해서 학습을 수행한다. 예를 들어, 제1 기준 값(N1)은 1,000,000회일 수 있으나, 본 발명은 이에 한정되지 않는다. 머신 러닝 모듈(190)은 제1 구간 동안, 예를 들어, 첫 번째로 전송되는 제1 커맨드/어드레스의 전송 시점부터 1,000,000번째로 전송되는 제1,000,000 커맨드/어드레스의 전송 시점까지 학습을 수행할 수 있다. 이로써, 머신 러닝 모듈(190)은 제1 내지 제1,000,000 커맨드/어드레스들의 통신 오류 발생율, 즉, 통계 수치를 계산할 수 있다. 단계 S310 및 S320에 대한 상세한 설명은 도 13을 참조하여 후술하기로 한다.
단계 S330에서, 머신 러닝 모듈(190)은 커맨드/어드레스의 통신 오류 발생 여부를 예측함으로써 머신 러닝에 의한 판단 데이터를 수집한다. 이때, 머신 러닝 모듈(190)은 스토리지 컨트롤러(100a)에서 비휘발성 메모리(200a)에 전송되는 커맨드/어드레스 및 상기 커맨드/어드레스에 대한 통신 오류 발생 여부에 대해 계속해서 학습을 수행할 수 있다. 단계 S340에서, 커맨드/어드레스의 처리 횟수(n)가 제2 기준 값(N2) 보다 큰지 판단한다. 판단 결과, 처리 횟수(n)가 제2 기준 값(N2) 보다 크면 단계 S350을 수행하고, 그렇지 않으면, 머신 러닝 모듈(190)은 계속해서 학습을 수행한다. 예를 들어, 제2 기준 값(N2)은 2,000,000회일 수 있으나, 본 발명은 이에 한정되지 않는다.
머신 러닝 모듈(190)은 제2 구간 동안, 예를 들어, 1,000,001번째로 전송되는 제1,000,001 커맨드/어드레스 내지 2,000,000번째로 전송되는 제2,000,000 커맨드/어드레스 각각의 통신 오류 발생 여부를 예측함으로써 머신 러닝에 의한 판단 데이터를 수집할 수 있다. 이로써, 머신 러닝 모듈(190)은 머신 러닝에 의한 판단 오류율 또는 판단 오류율(ME)를 계산할 수 있다. 예를 들어, 판단 오류율(ME)은 0.000007일 수 있다.
또한, 머신 러닝 모듈(190)은 제2 구간 동안, 제1,000,001 커맨드/어드레스 내지 제2,000,000 커맨드/어드레스 각각의 통신 오류 발생 여부를 예측함으로써 머신 러닝에 의한 판단 데이터를 계속해서 수집할 수 있다. 이로써, 머신 러닝 모듈(190)은 제1 구간 및 제2 구간 동안, 즉, 제1 커맨드/어드레스 내지 제2,000,000 커맨드/어드레스에 대한 통신 오류 발생율(ES)를 계산할 수 있다. 이때, 통신 오류 발생율(ES)은 실제로 통신 오류가 발생한 통계 수치에 대응할 수 있다. 예를 들어, 통신 오류 발생율(ES)은 0.000007일 수 있다. 단계 S330 및 S340에 대한 상세한 설명은 도 14를 참조하여 후술하기로 한다.
단계 S350에서, 통신 오류 발생율(ES)과 판단 오류율(ME)의 합이 기준 값(BC)보다 작은지 판단한다. 여기서, 기준 값(BC)은 머신 러닝 판단 시스템을 적용하기 위한 기준 값으로서, 예를 들어, 0.0015%, 즉, 0.000015일 수 있다. 판단 결과, 통신 오류 발생율(ES)과 판단 오류율(ME)의 합이 기준 값(BC) 보다 작으면, 단계 S370을 수행하고, 그렇지 않으면 단계 S330을 계속해서 수행할 수 있다. 단계 S360에서, 스토리지 컨트롤러(100a)는 머신 러닝 모듈(190)의 판단 시스템을 적용하여 커맨드/어드레스의 통신 오류 발생 여부를 예측할 수 있다.
예를 들어, 통신 오류 발생율(ES)은 0.000007이고, 판단 오류율(ME)은 0.000007이며, 기준 값(BC)이 0.000015인 경우, 통신 오류 발생율(ES)과 판단 오류율(ME)의 합인 01000014는 기준 값(BC)인 0.000015보다 작다. 이에 따라, 스토리지 컨트롤러(100a)는 이후 발행되는 커맨드/어드레스에 대해서는 머신 러닝 모듈(190)의 판단 시스템을 적용하여 통신 오류의 발생을 예측할 수 있다.
단계 S370에서, 머신 러닝의 판단에 따른 통신 오류 발생율(MES)이 기준 값(BC)보다 작은지 판단한다. 여기서, 통신 오류 발생율(MES)은 머신 러닝 판단 시스템을 적용하여 커맨드/어드레스에 대한 통신 오류 예측을 수행하고, 통신 오류가 예측된 경우에만 CRC 값을 커맨드/어드레스와 함께 전송하는 경우에 실제로 오류가 발생한 통계 수치에 대응할 수 있다. 판단 결과, 통신 오류 발생율(MES)이 기준 값(BC)보다 작으면 단계 S360을 계속해서 수행하고, 그렇지 않으면 단계 S330을 수행할 수 있다.
예를 들어, 통신 오류 발생율(MES)은 0.000016이고, 기준 값(BC)이 0.000015인 경우, 통신 오류 발생율(MES)인 0.000016은 기준 값(BC)인 0.000015보다 크다. 이에 따라, 단계 S330에서, 머신 러닝 모듈(190)이 판단 데이터를 수집하는 단계를 계속해서 수행할 수 있다. 한편, 통신 오류 발생율(MES)이 기준 값(BC) 보다 작은 경우, 머신 러닝 모듈(190)의 판단 시스템이 적합한 것으로 볼 수 있다. 이에 따라, 단계 S360에서, 스토리지 컨트롤러(100a)는 머신 러닝 모듈(190)의 판단 시스템을 계속해서 적용하여 커맨드/어드레스의 통신 오류 발생 여부를 예측할 수 있다. 단계 S360 및 S370에 대한 상세한 설명은 도 15를 참조하여 후술하기로 한다.
도 13는 본 개시의 일 실시예에 따라, 제1 구간에서 스토리지 컨트롤러(100a)와 비휘발성 메모리(200a) 사이의 동작 방법을 나타내는 흐름도이다. 도 9 및 도 13을 함께 참조하면, 제1 구간은 스토리지 컨트롤러(100a)에서 커맨드/어드레스(CMD/ADDR)의 발행 시점부터 커맨드/어드레스(CMD/ADDR)의 처리 횟수(n)가 제1 기준 값(N1)에 도달하는 시점까지의 구간에 대응할 수 있다. 예를 들어, 제1 기준 값(N1)은 1,000,000회일 수 있다.
단계 S400에서, 스토리지 컨트롤러(100a)는 커맨드 및 어드레스를 생성한다. 단계 S410에서, 스토리지 컨트롤러(100a)는 생성된 커맨드 및 어드레스로부터 CRC 값을 생성한다. 예를 들어, 도 9c에 예시된 바와 같이, 스토리지 컨트롤러(100a)는 독출 동작을 지시하는 제1 커맨드(911) 및 어드레스(912)로부터 CRC 값들(913)을 생성할 수 있다. 예를 들어, 도 10c에 예시된 바와 같이, 스토리지 컨트롤러(100a)는 기입 동작을 지시하는 제1 커맨드(1011) 및 어드레스(1012)로부터 CRC 값들(1013)을 생성할 수 있다. 단계 S420에서, 스토리지 컨트롤러(100a)는 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200a)에 커맨드/어드레스(CMD/ADDR) 및 CRC 값(예를 들어, 도 9c의 911 내지 914 또는 도 10c의 1011 내지 1014)을 전송한다.
단계 S440에서, 비휘발성 메모리(200a)는 CRC 값을 기초로 커맨드/어드레스(CMD/ADDR)에서 오류를 검출한다. 단계 S450에서, 비휘발성 메모리(200a)는 오류가 발생했는지 판단한다. 판단 결과, 오류가 발생한 경우, 단계 S460에서, 비휘발성 메모리(200a)는 복수의 데이터 신호 라인들을 통해 스토리지 컨트롤러(100a)에 에러 메시지(E)를 전송한다. 단계 S470에서, 스토리지 컨트롤러(100a)는 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200a)에 커맨드/어드레스 및 CRC 값(예를 들어, 도 9c의 915 내지 918 또는 도 10c의 1015 내지 1018)을 다시 전송한다.
단계 S480에서, 스토리지 컨트롤러(100a)는 머신 러닝을 수행한다. 구체적으로, 머신 러닝 모듈(190)은 제1 구간에서 커맨드/어드레스(CMD/ADDR)에 대한 에러 메시지(E)의 수신 여부를 기초로, 커맨드/어드레스(CMD/ADDR)의 통신 오류 판단을 위한 학습을 수행할 수 있다. 예를 들어, 제1 구간은 제1 내지 제1,000,000 커맨드/어드레스들의 전송 구간에 대응할 수 있다. 이때, 머신 러닝 모듈(190)은 제1 구간에서 제1 내지 제1,000,000 커맨드/어드레스들에서 실제 오류가 발생한 통계 수치를 기초로, 통신 오류 발생율을 계산할 수 있다. 단계 S490에서, 비휘발성 메모리(200a)는 커맨드/어드레스에 따라 메모리 동작을 수행한다.
도 14는 본 개시의 일 실시예에 따라, 제2 구간에서 스토리지 컨트롤러(100a)와 비휘발성 메모리(200a) 사이의 동작 방법을 나타내는 흐름도이다. 도 9 및 도 14를 함께 참조하면, 제2 구간은 스토리지 컨트롤러(100a)에서 커맨드/어드레스(CMD/ADDR)의 처리 횟수(n)가 제1 기준 값(N1) 이후부터 제2 기준 값(N2)에 도달하는 시점까지의 구간에 대응할 수 있다. 예를 들어, 제2 기준 값(N2)은 2,000,000회일 수 있다. 도 14에 도시된 단계 S500 내지 S590은 도 13의 단계 S490 이후에 수행될 수 있다.
단계 S500에서, 스토리지 컨트롤러(100a)는 커맨드 및 어드레스를 생성한다. 단계 S510에서, 스토리지 컨트롤러(100a)는 생성된 커맨드 및 어드레스로부터 CRC 값을 생성한다. 단계 S520에서, 머신 러닝 모듈(190)은 커맨드 및 어드레스에서 통신 오류의 발생 여부를 예측한다. 구체적으로, 머신 러닝 모듈(190)은 제1 구간에서 학습한 결과를 기초로 제2 구간에서 발행되는 커맨드 및 어드레스들 각각에 대해 통신 오류의 발생 여부를 판단할 수 있다. 일 실시예에서, 단계 S510 및 단계 S520은 실질적으로 동시에 수행될 수 있다. 일 실시예에서, 단계 S520은 단계 S510 이전에 수행될 수도 있다. 단계 S530에서, 스토리지 컨트롤러(100a)는 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200a)에 커맨드/어드레스(CMD/ADDR) 및 CRC 값(예를 들어, 도 9c의 911 내지 914 또는 도 10c의 1011 내지 1014)을 전송한다.
단계 S540에서, 비휘발성 메모리(200a)는 CRC 값을 기초로 커맨드/어드레스(CMD/ADDR)에서 오류를 검출한다. 단계 S550에서, 비휘발성 메모리(200a)는 오류가 발생했는지 판단한다. 판단 결과, 오류가 발생한 경우, 단계 S560에서, 비휘발성 메모리(200a)는 복수의 데이터 신호 라인들을 통해 스토리지 컨트롤러(100a)에 에러 메시지(E)를 전송한다. 단계 S570에서, 스토리지 컨트롤러(100a)는 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200a)에 커맨드/어드레스 및 CRC 값(예를 들어, 도 9c의 915 내지 918 또는 도 10c의 1015 내지 1018)을 다시 전송한다.
단계 S580에서, 스토리지 컨트롤러(100a)는 머신 러닝을 통해 예측 데이터 또는 판단 데이터를 수집한다. 예를 들어, 제2 구간은 제1,000,001 내지 제2,000,000 커맨드/어드레스들의 전송 구간에 대응할 수 있다. 구체적으로, 머신 러닝 모듈(190)은 제2 구간에서 제1,000,001 내지 제2,000,000 커맨드/어드레스들 각각에 대한 오류 판단 결과와 실제 오류 발생 결과를 기초로, 머신 러신의 판단 오류율(ME)을 계산할 수 있다. 또한, 머신 러닝 모듈(190)은 제2 구간에서 커맨드/어드레스(CMD/ADDR)에 대한 에러 메시지(E)의 수신 여부를 기초로, 커맨드/어드레스(CMD/ADDR)의 통신 오류 판단을 위한 학습을 계속해서 수행할 수 있다. 이때, 머신 러닝 모듈(190)은 제1 및 제2 구간들에서 제1 내지 제2,000,000 커맨드/어드레스들에서 실제 오류가 발생한 통계 수치를 기초로, 통신 오류 발생율(ES)을 계산할 수 있다. 단계 S590에서, 비휘발성 메모리(200a)는 커맨드/어드레스에 따라 메모리 동작을 수행한다.
도 15는 본 개시의 일 실시예에 따라, 제3 구간에서 스토리지 컨트롤러(100a)와 비휘발성 메모리(200a) 사이의 동작 방법을 나타내는 흐름도이다. 도 9 및 도 15를 함께 참조하면, 제3 구간은 스토리지 컨트롤러(100a)에서 커맨드/어드레스(CMD/ADDR)의 처리 횟수(n)가 제2 기준 값(N2) 이후의 구간에 대응할 수 있다. 예를 들어, 제2 기준 값(N2)은 2,000,000회일 수 있다. 도 15에 도시된 단계 S600 내지 S690은 도 14의 단계 S590 이후에 수행될 수 있다.
단계 S600에서, 스토리지 컨트롤러(100a)는 커맨드 및 어드레스를 생성한다. 단계 S610에서, 머신 러닝 모듈(190)은 커맨드 및 어드레스에서 통신 오류의 발생 여부를 예측한다. 단계 S620에서, 머신 러닝 모듈(190)은 통신 오류가 발생될 것으로 예측되었는지 판단한다. 판단 결과, 통신 오류가 발생될 것으로 예측된 경우 단계 S640을 수행한다. 한편, 통신 오류가 발생되지 않을 것으로 예측된 경우, 단계 S630에서, 스토리지 컨트롤러(100a)는 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200a)에 커맨드/어드레스(CMD/ADDR)를 전송한다.
단계 S640에서, 스토리지 컨트롤러(100a)는 커맨드 및 어드레스로부터 CRC 값을 생성한다. 단계 S650에서, 스토리지 컨트롤러(100a)는 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200a)에 커맨드/어드레스(CMD/ADDR) 및 CRC 값(예를 들어, 도 9c의 911 내지 914 또는 도 10c의 1011 내지 1014)을 전송한다.
단계 S660에서, 비휘발성 메모리(200a)는 CRC 값을 기초로 커맨드/어드레스(CMD/ADDR)에서 오류를 검출한다. 단계 S670에서, 비휘발성 메모리(200a)는 오류가 발생했는지 판단한다. 판단 결과, 오류가 발생한 경우, 단계 S675에서, 비휘발성 메모리(200a)는 복수의 데이터 신호 라인들을 통해 스토리지 컨트롤러(100a)에 에러 메시지(E)를 전송한다. 단계 S680에서, 스토리지 컨트롤러(100a)는 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200a)에 커맨드/어드레스(CMD/ADDR) 및 CRC 값(예를 들어, 도 9c의 915 내지 918 또는 도 10c의 1015 내지 1018)을 다시 전송한다. 단계 S690에서, 비휘발성 메모리(200a)는 커맨드/어드레스 따른 메모리 동작을 수행한다.
도 16a 및 도 16b는 본 개시의 일 실시예에 따라 스토리지 컨트롤러(100a)와 비휘발성 메모리(200a) 사이의 통신을 나타내는 타이밍도이다.
도 8, 도 16a 및 도 16b를 함께 참조하면, CRC 모듈(125)은 제1 오류 검출 로직 및 제2 오류 검출 로직을 포함하는 복수의 오류 검출 로직들을 포함하고, 복수의 오류 검출 로직들 중 선택 오류 검출 로직으로 커맨드 및 어드레스에 대한 오류 검출 신호, 즉, CRC 값을 생성할 수 있다. 구체적으로, CRC 모듈(125)은 제1 오류 검출 로직을 적용하여 복수의 커맨드들/어드레스들 각각에 대한 오류 검출 동작을 수행하고, 복수의 커맨드들/어드레스들의 통신 오류율과 제1 오류 검출 로직의 오류율의 비교 결과에 따라, 선택 오류 검출 로직을 제1 오류 검출 로직에서 상기 제2 오류 검출 로직으로 변경할 수 있다.
일 실시예에서, 제1 오류 검출 로직은 CRC-k 오류 검출 로직이고, 제2 오류 검출 로직은 CRC-m 오류 검출 로직일 수 있다. 여기서, k와 m은 양의 정수이고, k는 m보다 크다. CRC 모듈(125)은 CRC-k 오류 검출 로직을 적용하여 제1 커맨드들/어드레스들 각각으로부터 제1 CRC 값을 계산하고, CRC-k의 오류율이 제1 커맨드들/어드레스들에 대한 통신 오류율보다 크면, CRC-m 오류 검출 로직을 적용하여 제2 커맨드들/어드레스들 각각으로부터 제2 CRC 값을 계산할 수 있다.
일 실시예에서, 복수의 오류 검출 로직들은 제3 오류 검출 로직을 더 포함할 수 있고, 제1 오류 검출 로직은 CRC-k 오류 검출 로직이고, 제3 오류 검출 로직은 CRC-l 오류 검출 로직일 수 있다. 여기서, k와 l은 양의 정수이고, k는 l보다 작다. CRC 모듈(125)은 CRC-k 오류 검출 로직을 적용하여 제1 커맨드들/어드레스들 각각으로부터 제1 CRC 값을 계산하고, CRC-k의 오류율이 제1 커맨드들/어드레스들에 대한 통신 오류율보다 크지 않으면, CRC-l 오류 검출 로직을 적용하여 제2 커맨드들/어드레스들 각각으로부터 제2 CRC 값을 계산할 수 있다.
구체적으로, 스토리지 컨트롤러(100a)는 제1 구간 동안 CRC-16 오류 검출 로직을 적용하여 커맨드/어드레스로부터 CRC 값, 즉, CRC-16을 계산할 수 있다. 예를 들어, 제1 구간은 커맨드/어드레스의 발행 시점부터 커맨드/어드레스들의 처리 횟수 또는 발행 횟수가 소정의 기준 값에 도달할 때까지의 구간에 대응할 수 있다. 스토리지 컨트롤러(100a)는 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200a)에 제1 커맨드(1611), 어드레스(1612), CRC 값들(1613), 및 제2 커맨드(1614)를 순차적으로 전송할 수 있다. 예를 들어, 제1 커맨드(1611)는 메모리 동작의 종류가 독출 동작임을 나타내는 입력 커맨드(예를 들어, 80h)를 포함할 수 있고, 어드레스(1612)는 제1 및 제2 칼럼 어드레스들(C1, C2) 및 제1 내지 제3 로우 어드레스들(R1, R2, R3)을 포함할 수 있다. 제2 커맨드(1614)는 독출 페이지 사이즈를 지시하는 컨펌 커맨드(예를 들어, 50h, 20h, 또는 30h)일 수 있다.
CRC 모듈(125)은 제1 커맨드(1611) 및 어드레스(1612)로부터 CRC 값들(1613)을 계산할 수 있다. 예를 들어, CRC 모듈(125)은 CRC-16 오류 검출 로직을 적용하여 제1 커맨드(1611) 및 어드레스(1612)에 대해 CRC를 수행함으로써, CRC-16(1) 및 CRC-16(2)을 계산할 수 있고, CRC-16(1) 및 CRC-16(2)은 각각 8 비트로 제공될 수 있다. 비휘발성 메모리(200a)는 CRC 값들(1613)을 기초로 제1 커맨드(1611) 및 어드레스(1612)에서 통신 오류가 발생했는지 여부를 판단할 수 있다. 판단 결과, 제1 커맨드(1611) 및 어드레스(1612)에서 통신 오류가 발생하지 않은 경우, 비휘발성 메모리(200a)는 독출 동작을 수행하고, 독출 데이터(1615)를 스토리지 컨트롤러(100a)에 전송할 수 있다.
스토리지 컨트롤러(100a)는 제1 구간 이후의 제2 구간 동안 CRC-8 오류 검출 로직을 적용하여 커맨드/어드레스로부터 CRC 값, 즉, CRC-8을 계산할 수 있다. 예를 들어, 제2 구간은 제1 구간의 종료 시점부터 커맨드/어드레스들의 처리 횟수 또는 발행 횟수가 소정의 기준 값에 도달할 때까지의 구간에 대응할 수 있다. 스토리지 컨트롤러(100a)는 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200a)에 제1 커맨드(1616), 어드레스(1617), CRC 값들(1618), 및 제2 커맨드(1619)를 순차적으로 전송할 수 있다.
CRC 모듈(125)은 제1 커맨드(1616) 및 어드레스(1617)로부터 CRC 값들(1618)을 계산할 수 있다. 예를 들어, CRC 모듈(125)은 CRC-8 오류 검출 로직을 적용하여 제1 커맨드(1616) 및 어드레스(1617)에 대해 CRC를 수행함으로써, CRC-8을 계산할 수 있고, CRC-8은 8 비트로 제공될 수 있다. 비휘발성 메모리(200a)는 CRC 값들(1618)을 기초로 제1 커맨드(1616) 및 어드레스(1617)에서 통신 오류가 발생했는지 여부를 판단할 수 있다. 판단 결과, 제1 커맨드(1616) 및 어드레스(1617)에서 통신 오류가 발생하지 않은 경우, 비휘발성 메모리(200a)는 독출 동작을 수행하고, 독출 데이터(1620)를 스토리지 컨트롤러(100a)에 전송할 수 있다.
스토리지 컨트롤러(100a)는 제2 구간 이후의 제3 구간 동안 CRC-4 오류 검출 로직을 적용하여 커맨드/어드레스로부터 CRC 값, 즉, CRC-4를 계산할 수 있다. 예를 들어, 제3 구간은 제2 구간의 종료 시점부터 커맨드/어드레스들의 처리 횟수 또는 발행 횟수가 소정의 기준 값에 도달할 때까지의 구간에 대응할 수 있다. 스토리지 컨트롤러(100a)는 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200a)에 제1 커맨드(1621), 어드레스(1622), CRC 값들(1623), 및 제2 커맨드(1624)를 순차적으로 전송할 수 있다.
CRC 모듈(125)은 제1 커맨드(1621) 및 어드레스(1622)로부터 CRC 값들(1623)을 계산할 수 있다. 예를 들어, CRC 모듈(125)은 CRC-4 오류 검출 로직을 적용하여 제1 커맨드(1621) 및 어드레스(1622)에 대해 CRC를 수행함으로써, CRC-4를 계산할 수 있고, CRC-4는 4 비트로 제공될 수 있다. 비휘발성 메모리(200a)는 CRC 값들(1623)을 기초로 제1 커맨드(1621) 및 어드레스(1622)에서 통신 오류가 발생했는지 여부를 판단할 수 있다. 판단 결과, 제1 커맨드(1621) 및 어드레스(1622)에서 통신 오류가 발생하지 않은 경우, 비휘발성 메모리(200a)는 독출 동작을 수행하고, 독출 데이터(1625)를 스토리지 컨트롤러(100a)에 전송할 수 있다.
스토리지 컨트롤러(100a)는 제3 구간 이후의 제4 구간 동안 CRC-1 오류 검출 로직을 적용하여 커맨드/어드레스로부터 CRC 값, 즉, CRC-1을 계산할 수 있다. 예를 들어, 제4 구간은 제3 구간의 종료 시점부터 커맨드/어드레스들의 처리 횟수 또는 발행 횟수가 소정의 기준 값에 도달할 때까지의 구간에 대응할 수 있다. 스토리지 컨트롤러(100a)는 복수의 데이터 신호 라인들을 통해 비휘발성 메모리(200a)에 제1 커맨드(1626), 어드레스(1627), CRC 값(1628), 및 제2 커맨드(1629)를 순차적으로 전송할 수 있다.
CRC 모듈(125)은 제1 커맨드(1626) 및 어드레스(16267)로부터 CRC 값(1628)을 계산할 수 있다. 예를 들어, CRC 모듈(125)은 CRC-1 오류 검출 로직을 적용하여 제1 커맨드(1626) 및 어드레스(1627)에 대해 CRC를 수행함으로써, CRC-1를 계산할 수 있고, CRC-1은 1 비트로 제공될 수 있다. 비휘발성 메모리(200a)는 CRC 값(1628)을 기초로 제1 커맨드(1626) 및 어드레스(1627)에서 통신 오류가 발생했는지 여부를 판단할 수 있다. 판단 결과, 제1 커맨드(1626) 및 어드레스(1627)에서 통신 오류가 발생하지 않은 경우, 비휘발성 메모리(200a)는 독출 동작을 수행하고, 독출 데이터(1630)를 스토리지 컨트롤러(100a)에 전송할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, CRC-1은 제2 커맨드(1629)의 예비 비트에 포함될 수도 있다.
도 17은 본 개시의 일 실시예에 따른 스토리지 컨트롤러(100a)의 동작 방법을 나타내는 흐름도이다.
도 8 및 도 17을 함께 참조하면, 스토리지 컨트롤러(100a)는 커맨드/어드레스들의 실제 오류율과 오류 검출 로직의 신뢰성을 비교하고, 비교 결과에 따라 오류 검출 로직을 동적으로 변경할 수 있다. 스토리지 컨트롤러(100a)는 소정의 기준 횟수(N)마다 상기 비교 동작을 반복적으로 수행할 수 있다. 구체적으로, 제1 오류 검출 로직을 적용한 이후 커맨드/어드레스들의 처리 횟수(n)가 기준 횟수(N)에 대응하면, 스토리지 컨트롤러(100a)는 상기 비교 동작을 수행하여 오류 검출 로직의 변경 여부를 결정할 수 있다. 또한, 오류 검출 로직이 제1 오류 검출 로직에서 제2 오류 검출 로직으로 변경된 경우, 제2 오류 검출 로직을 적용한 이후 커맨드/어드레스들의 처리 횟수(n)가 기준 횟수(N)에 대응하면, 스토리지 컨트롤러(100a)는 상기 비교 동작을 수행하여 오류 검출 로직의 변경 여부를 결정할 수 있다. 이하에서는, 오류 검출 로직이 CRC 오류 검출 로직인 경우를 예로 하여 도 8, 도 16 및 도 17을 함께 참조하여 스토리지 컨트롤러(100a)의 동작 방법을 설명하기로 한다.
커맨드가 발행되면, 단계 S710에서, CRC 모듈(125)은 CRC-16 오류 검출 로직을 적용하여 커맨드/어드레스로부터 CRC 값을 계산한다. 단계 S720에서, CRC-16 오류 검출 로직을 적용한 커맨드/어드레스의 처리 횟수(n)가 기준 횟수(N)에 대응하는지 판단한다. 예를 들어, 기준 횟수(N)은 5,000,000회일 수 있으나, 본 발명은 이에 한정되지 않는다. 판단 결과, 커맨드/어드레스의 처리 횟수(n)가 기준 횟수(N)보다 작으면, 단계 S710에서, CRC 모듈(125)은 CRC-16 오류 검출 로직을 계속해서 적용하여 커맨드/어드레스로부터 CRC 값을 계산한다.
한편, 커맨드/어드레스의 처리 횟수(n)가 기준 횟수(N)에 대응하면, 단계 S730에서, CRC-16의 오류율이 실제 오류율보다 큰지 판단한다. 예를 들어, CRC-16의 오류율은 0.000015258789이다. CRC-16의 오류율이 실제 오류율 보다 크면, 단계 S740을 수행한다. 한편, CRC-16의 오류율이 실제 오류율 보다 크지 않으면, 실제 오류율이 매우 높은 것으로 판단할 수 있다. 이 경우, CRC-16 보다 오류율이 낮은 다른 오류 검출 로직을 적용하여 커맨드/어드레스로부터 오류 검출 신호를 생성할 수 있다.
단계 S740에서, CRC 모듈(125)는 CRC-16 보다 오류율이 높은 CRC-8 오류 검출 로직을 적용하여 커맨드/어드레스로부터 CRC 값을 계산한다. 단계 S520에서, CRC-8 오류 검출 로직을 적용한 커맨드/어드레스의 처리 횟수(n)가 기준 횟수(N)에 대응하는지 판단한다. 예를 들어, 기준 횟수(N)은 5,000,000회일 수 있으나, 본 발명은 이에 한정되지 않는다. 판단 결과, 커맨드/어드레스의 처리 횟수(n)가 기준 횟수(N)보다 작으면, 단계 S740에서, CRC 모듈(125)은 CRC-8 오류 검출 로직을 계속해서 적용하여 커맨드/어드레스로부터 CRC 값을 계산한다.
한편, 커맨드/어드레스의 처리 횟수(n)가 기준 횟수(N)에 대응하면, 단계 S760에서, CRC-8의 오류율이 실제 오류율보다 큰지 판단한다. CRC-8의 오류율이 실제 오류율 보다 크면, 단계 S770을 수행한다. 한편, CRC-8의 오류율이 실제 오류율 보다 크지 않으면, 실제 오류율이 높은 것으로 판단할 수 있다. 이 경우, 단계 S710으로 돌아가서, CRC 모듈(125)은 CRC-16 오류 검출 로직을 적용하여 커맨드/어드레스로부터 CRC 값을 계산한다. 예를 들어, CRC-8의 오류율은 0.00390625이고, 실제 오류율(ES)은 0.0015인 경우, CRC-8의 오류율이 실제 오류율(ES) 보다 크므로, 단계 S770을 수행할 수 있다.
단계 S770에서, CRC 모듈(125)는 CRC-8 보다 오류율이 높은 CRC-4 오류 검출 로직을 적용하여 커맨드/어드레스로부터 CRC 값을 계산한다. 단계 S780에서, CRC-4 오류 검출 로직을 적용한 커맨드/어드레스의 처리 횟수(n)가 기준 횟수(N)에 대응하는지 판단한다. 예를 들어, 기준 횟수(N)은 5,000,000회일 수 있으나, 본 발명은 이에 한정되지 않는다. 판단 결과, 커맨드/어드레스의 처리 횟수(n)가 기준 횟수(N)보다 작으면, 단계 S770에서, CRC 모듈(125)은 CRC-4 오류 검출 로직을 계속해서 적용하여 커맨드/어드레스로부터 CRC 값을 계산한다.
한편, 커맨드/어드레스의 처리 횟수(n)가 기준 횟수(N)에 대응하면, 단계 S790에서, CRC-4의 오류율이 실제 오류율보다 큰지 판단한다. 예를 들어, CRC-4의 오류율은 0.0625이다. CRC-4의 오류율이 실제 오류율 보다 크면, 단계 S770을 계속하여 수행한다. 한편, CRC-4의 오류율이 실제 오류율 보다 크지 않으면, 실제 오류율이 높은 것으로 판단할 수 있다. 이 경우, 단계 S740으로 돌아가서, CRC 모듈(125)은 CRC-8 오류 검출 로직을 적용하여 커맨드/어드레스로부터 CRC 값을 계산한다.
상술한 실시예에 따르면, 스토리지 컨트롤러(100a)는 커맨드 및 어드레스의 오류율에 따라 복수의 오류 검출 로직들 중 하나를 선택할 수 있고, 이에 따라, 실제 통신 오류율에 따라 스토리지 컨트롤러(100a)의 연산량을 감소시킬 수 있다.
도 18은 본 개시의 일 실시예에 따른 스토리지 장치(20)를 나타내는 블록도이다. 도 18을 참조하면, 스토리지 장치(20)는 메모리 장치(300) 및 메모리 컨트롤러(400)를 포함할 수 있다. 메모리 장치(300)는 도 1의 비휘발성 메모리(200) 또는 도 8의 비휘발성 메모리(200a)에 대응할 수 있다. 메모리 컨트롤러(400)는 도 1의 스토리지 컨트롤러(100) 또는 도 8의 스토리지 컨트롤러(100a)에 대응할 수 있다.
메모리 장치(300)는 제1 내지 제8 핀들(P11 내지 P18), 메모리 인터페이스 회로(310), 제어 로직 회로(320), 및 메모리 셀 어레이(330)를 포함할 수 있다. 메모리 인터페이스 회로(310)는 제1 핀(P11)을 통해 메모리 컨트롤러(400)로부터 칩 인에이블 신호(nCE)를 수신할 수 있다. 메모리 인터페이스 회로(310)는 칩 인에이블 신호(nCE)에 따라 제2 내지 제8 핀들(P12 내지 P18)을 통해 메모리 컨트롤러(400)와 신호들을 송수신할 수 있다. 예를 들어, 칩 인에이블 신호(nCE)가 인에이블 상태(예를 들어, 로우 레벨)인 경우, 메모리 인터페이스 회로(310)는 제2 내지 제8 핀들(P12 내지 P18)을 통해 메모리 컨트롤러(400)와 신호들을 송수신할 수 있다.
메모리 인터페이스 회로(310)는 제2 내지 제4 핀들(P12 내지 P14)을 통해 메모리 컨트롤러(400)로부터 커맨드 래치 인에이블 신호(CLE), 어드레스 래치 인에이블 신호(ALE), 및 쓰기 인에이블 신호(nWE)를 수신할 수 있다. 메모리 인터페이스 회로(310)는 제7 핀(P17)을 통해 메모리 컨트롤러(400)로부터 데이터 신호(DQ)를 수신하거나, 메모리 컨트롤러(400)로 데이터 신호(DQ)를 전송할 수 있다. 데이터 신호(DQ)를 통해 커맨드(CMD), 어드레스(ADDR), 및 데이터(DATA)가 전달될 수 있다. 예를 들어, 데이터 신호(DQ)는 복수의 데이터 신호 라인들을 통해 전달될 수 있다. 이 경우, 제7 핀(P17)은 복수의 데이터 신호(DQ)들에 대응하는 복수개의 핀들을 포함할 수 있다.
메모리 인터페이스 회로(310)는 쓰기 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 커맨드 래치 인에이블 신호(CLE)의 인에이블 구간(예를 들어, 하이 레벨 상태)에서 수신되는 데이터 신호(DQ)로부터 커맨드(CMD)를 획득할 수 있다. 메모리 인터페이스 회로(310)는 쓰기 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 어드레스 래치 인에이블 신호(ALE)의 인에이블 구간(예를 들어, 하이 레벨 상태)에서 수신되는 데이터 신호(DQ)로부터 어드레스(ADDR)를 획득할 수 있다.
예시적인 실시 예에서, 쓰기 인에이블 신호(nWE)는 고정된(static) 상태(예를 들어, 하이(high) 레벨 또는 로우(low) 레벨)를 유지하다가 하이 레벨과 로우 레벨 사이에서 토글할 수 있다. 예를 들어, 쓰기 인에이블 신호(nWE)는 커맨드(CMD) 또는 어드레스(ADDR)가 전송되는 구간에서 토글할 수 있다. 이에 따라, 메모리 인터페이스 회로(310)는 쓰기 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 커맨드(CMD) 또는 어드레스(ADDR)를 획득할 수 있다.
메모리 인터페이스 회로(310)는 제5 핀(P15)을 통해 메모리 컨트롤러(400)로부터 읽기 인에이블 신호(nRE)를 수신할 수 있다. 메모리 인터페이스 회로(310)는 제6 핀(P16)을 통해 메모리 컨트롤러(400)로부터 데이터 스트로브 신호(DQS)를 수신하거나, 메모리 컨트롤러(400)로 데이터 스트로브 신호(DQS)를 전송할 수 있다.
메모리 장치(300)의 데이터(DATA) 출력 동작에서, 메모리 인터페이스 회로(310)는 데이터(DATA)를 출력하기 전에 제5 핀(P15)을 통해 토글하는 읽기 인에이블 신호(nRE)를 수신할 수 있다. 메모리 인터페이스 회로(310)는 읽기 인에이블 신호(nRE)의 토글링에 기초하여 토글하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 예를 들어, 메모리 인터페이스 회로(310)는 읽기 인에이블 신호(nRE)의 토글링 시작 시간을 기준으로 미리 정해진 딜레이(예를 들어, tDQSRE) 이후에 토글하기 시작하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 메모리 인터페이스 회로(310)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터(DATA)를 포함하는 데이터 신호(DQ)를 전송할 수 있다. 이에 따라, 데이터(DATA)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 정렬되어 메모리 컨트롤러(400)로 전송될 수 있다.
메모리 장치(300)의 데이터(DATA) 입력 동작에서, 메모리 컨트롤러(400)로부터 데이터(DATA)를 포함하는 데이터 신호(DQ)이 수신되는 경우, 메모리 인터페이스 회로(310)는 메모리 컨트롤러(400)로부터 데이터(DATA)와 함께 토글하는 데이터 스트로브 신호(DQS)를 수신할 수 있다. 메모리 인터페이스 회로(310)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터 신호(DQ)로부터 데이터(DATA)를 획득할 수 있다. 예를 들어, 메모리 인터페이스 회로(310)는 데이터 스트로브 신호(DQS)의 상승 에지 및 하강 에지에서 데이터 신호(DQ)를 샘플링함으로써 데이터(DATA)를 획득할 수 있다.
메모리 인터페이스 회로(310)는 제8 핀(P18)을 통해 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(400)로 전송할 수 있다. 메모리 인터페이스 회로(310)는 레디/비지 출력 신호(nR/B)를 통해 메모리 장치(300)의 상태 정보를 메모리 컨트롤러(400)로 전송할 수 있다. 메모리 장치(300)가 비지 상태인 경우(즉, 메모리 장치(300) 내부 동작들이 수행 중인 경우), 메모리 인터페이스 회로(310)는 비지 상태를 나타내는 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(400)로 전송할 수 있다. 메모리 장치(300)가 레디 상태인 경우(즉, 메모리 장치(300) 내부 동작들이 수행되지 않거나 완료된 경우), 메모리 인터페이스 회로(310)는 레디 상태를 나타내는 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(400)로 전송할 수 있다. 예를 들어, 메모리 장치(300)가 페이지 독출 명령에 응답하여 메모리 셀 어레이(330)로부터 데이터(DATA)를 독출하는 동안, 메모리 인터페이스 회로(310)는 비지 상태(예를 들어, 로우 레벨)를 나타내는 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(400)로 전송할 수 있다. 예를 들어, 메모리 장치(300)가 프로그램 명령에 응답하여 메모리 셀 어레이(330)로 데이터(DATA)를 프로그램하는 동안, 메모리 인터페이스 회로(310)는 비지 상태를 나타내는 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(400)로 전송할 수 있다.
제어 로직 회로(320)는 메모리 장치(300)의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(320)는 메모리 인터페이스 회로(310)로부터 획득된 커맨드/어드레스(CMD/ADDR)를 수신할 수 있다. 제어 로직 회로(320)는 수신된 커맨드/어드레스(CMD/ADDR)에 따라 메모리 장치(300)의 다른 구성 요소들을 제어하기 위한 제어 신호들을 생성할 수 있다. 예를 들어, 제어 로직 회로(320)는 메모리 셀 어레이(330)에 데이터(DATA)를 프로그램하거나, 또는 메모리 셀 어레이(330)로부터 데이터(DATA)를 독출하기 위한 각종 제어 신호들을 생성할 수 있다.
메모리 셀 어레이(330)는 제어 로직 회로(320)의 제어에 따라 메모리 인터페이스 회로(310)로부터 획득된 데이터(DATA)를 저장할 수 있다. 메모리 셀 어레이(330)는 제어 로직 회로(320)의 제어에 따라 저장된 데이터(DATA)를 메모리 인터페이스 회로(310)로 출력할 수 있다.
메모리 셀 어레이(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) 플래시 메모리 셀들인 실시 예를 중심으로 본 발명의 실시 예들이 설명될 것이다.
메모리 컨트롤러(400)는 제1 내지 제8 핀들(P21 내지 P28), 및 컨트롤러 인터페이스 회로(410)를 포함할 수 있다. 제1 내지 제8 핀들(P21 내지 P28)은 메모리 장치(300)의 제1 내지 제8 핀들(P11~P18)에 대응할 수 있다. 컨트롤러 인터페이스 회로(410)는 제1 핀(P21)을 통해 메모리 장치(300)로 칩 인에이블 신호(nCE)를 전송할 수 있다. 컨트롤러 인터페이스 회로(410)는 칩 인에이블 신호(nCE)를 통해 선택한 메모리 장치(300)와 제2 내지 제8 핀들(P22~P28)을 통해 신호들을 송수신할 수 있다.
컨트롤러 인터페이스 회로(410)는 제2 내지 제4 핀들(P22 내지 P24)을 통해 커맨드 래치 인에이블 신호(CLE), 어드레스 래치 인에이블 신호(ALE), 및 쓰기 인에이블 신호(nWE)를 메모리 장치(300)로 전송할 수 있다. 컨트롤러 인터페이스 회로(410)는 제7 핀(P27)을 통해 메모리 장치(300)로 데이터 신호(DQ)를 전송하거나, 메모리 장치(300)로부터 데이터 신호(DQ)를 수신할 수 있다.
컨트롤러 인터페이스 회로(410)는 토글하는 쓰기 인에이블 신호(nWE)와 함께 커맨드(CMD) 또는 어드레스(ADDR)를 포함하는 데이터 신호(DQ)를 메모리 장치(300)로 전송할 수 있다. 컨트롤러 인터페이스 회로(410)는 인에이블 상태를 가지는 커맨드 래치 인에이블 신호(CLE)를 전송함에 따라 커맨드(CMD)를 포함하는 데이터 신호(DQ)를 메모리 장치(300)로 전송하고, 인에이블 상태를 가지는 어드레스 래치 인에이블 신호(ALE)를 전송함에 따라 어드레스(ADDR)를 포함하는 데이터 신호(DQ)를 메모리 장치(300)로 전송할 수 있다.
컨트롤러 인터페이스 회로(410)는 제5 핀(P25)을 통해 메모리 장치(300)로 읽기 인에이블 신호(nRE)를 전송할 수 있다. 컨트롤러 인터페이스 회로(410)는 제6 핀(P26)을 통해 메모리 장치(300)로부터 데이터 스트로브 신호(DQS)를 수신하거나, 메모리 장치(300)로 데이터 스트로브 신호(DQS)를 전송할 수 있다.
메모리 장치(300)의 데이터(DATA) 출력 동작에서, 컨트롤러 인터페이스 회로(410)는 토글하는 읽기 인에이블 신호(nRE)를 생성하고, 읽기 인에이블 신호(nRE)를 메모리 장치(300)로 전송할 수 있다. 예를 들어, 컨트롤러 인터페이스 회로(410)는 데이터(DATA)가 출력되기 전에 고정된 상태(예를 들어, 하이 레벨 또는 로우 레벨)에서 토글 상태로 변경되는 읽기 인에이블 신호(nRE)를 생성할 수 있다. 이에 따라, 메모리 장치(300)에서 읽기 인에이블 신호(nRE)에 기초하여 토글하는 데이터 스트로브 신호(DQS)가 생성될 수 있다. 컨트롤러 인터페이스 회로(410)는 메모리 장치(300)로부터 토글하는 데이터 스트로브 신호(DQS)와 함께 데이터(DATA)를 포함하는 데이터 신호(DQ)를 수신할 수 있다. 컨트롤러 인터페이스 회로(410)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터 신호(DQ)로부터 데이터(DATA)를 획득할 수 있다.
메모리 장치(300)의 데이터(DATA) 입력 동작에서, 컨트롤러 인터페이스 회로(410)는 토글하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 예를 들어, 컨트롤러 인터페이스 회로(410)는 데이터(DATA)를 전송하기 전에 고정된 상태(예를 들어, 하이 레벨 또는 로우 레벨)에서 토글 상태로 변경되는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 컨트롤러 인터페이스 회로(410)는 데이터 스트로브 신호(DQS)의 토글 타이밍들에 기초하여 데이터(DATA)를 포함하는 데이터 신호(DQ)를 메모리 장치(300)로 전송할 수 있다.
컨트롤러 인터페이스 회로(410)는 제8 핀(P28)을 통해 메모리 장치(300)로부터 레디/비지 출력 신호(nR/B)를 수신할 수 있다. 컨트롤러 인터페이스 회로(410)는 레디/비지 출력 신호(nR/B)에 기초하여 메모리 장치(300)의 상태 정보를 판별할 수 있다.
도 19는 본 발명의 일 실시예에 따른 스토리지 장치가 적용된 시스템(1000)을 도시한 도면이다.
도 19의 시스템(1000)은 기본적으로 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기 또는 IoT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다. 하지만 도 19의 시스템(1000)은 반드시 모바일 시스템에 한정되는 것은 아니고, 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기(media player) 또는 내비게이션(navigation)과 같은 차량용 장비(automotive device) 등이 될 수도 있다.
도 19를 참조하면, 시스템(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)는 하나 이상의 CPU 코어(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(Vertical NAND) 구조의 플래시 메모리를 포함할 수 있으나, PRAM 및/또는 RRAM 등의 다른 종류의 비휘발성 메모리를 포함할 수도 있다.
스토리지 장치(1300a, 1300b)는 메인 프로세서(1100)와는 물리적으로 분리된 상태로 시스템(1000)에 포함될 수도 있고, 메인 프로세서(1100)와 동일한 패키지 내에 구현될 수도 있다. 또한, 스토리지 장치(1300a, 1300b)는 SSD(solid state device) 혹은 메모리 카드(memory card)와 같은 형태를 가짐으로써, 후술할 연결 인터페이스(1480)와 같은 인터페이스를 통해 시스템(1000)의 다른 구성 요소들과 탈부착 가능하도록 결합될 수도 있다. 이와 같은 스토리지 장치(1300a, 1300b)는 UFS(Universal Flash Storage), eMMC(embedded multi-media card) 혹은 NVMe(non-volatile memory express)와 같은 표준 규약이 적용되는 장치일 수 있으나, 반드시 이에 한정되는 건 아니다.
촬영 장치(1410)는 정지 영상 또는 동영상을 촬영할 수 있으며, 카메라(camera), 캠코더(camcorder) 및/또는 웹캠(webcam) 등일 수 있다. 사용자 입력 장치(1420)는 시스템(1000)의 사용자로부터 입력된 다양한 유형의 데이터를 수신할 수 있으며, 터치 패드(touch pad), 키패드(keypad), 키보드(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, IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC, UFS, eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 비휘발성 메모리; 및
    상기 비휘발성 메모리를 제어하도록 구성된 스토리지 컨트롤러를 포함하고,
    상기 스토리지 컨트롤러는,
    제1 커맨드, 어드레스 및 제2 커맨드를 포함하는 커맨드 세트를 생성하고, 상기 제2 커맨드는 상기 제1 커맨드 및 상기 어드레스의 통신 오류를 검출하기 위한 오류 검출 신호를 포함하는 커맨드/어드레스 생성기;
    상기 제1 커맨드 및 상기 어드레스로부터 상기 오류 검출 신호를 생성하도록 구성된 오류 검출 모듈; 및
    상기 커맨드 세트에 포함되는 상기 제1 커맨드, 상기 어드레스 및 상기 제2 커맨드를, 상기 비휘발성 메모리에 순차적으로 전송하도록 구성된 인터페이스 회로를 포함하고,
    상기 제1 커맨드는 상기 비휘발성 메모리에서 수행될 메모리 동작의 종류를 지시하고, 상기 제2 커맨드는 상기 제1 커맨드와 관련된 메모리 동작을 지시하는 컨펌(confirm) 커맨드에 대응하며,
    상기 비휘발성 메모리는 상기 오류 검출 신호를 기초로 상기 제1 커맨드 및 상기 어드레스의 상기 통신 오류를 검출하는 것을 특징으로 하는 스토리지 장치.
  2. 제1항에 있어서,
    상기 오류 검출 신호는 1 비트 신호인 것을 특징으로 하는 스토리지 장치.
  3. 제1항에 있어서, 상기 오류 검출 모듈은,
    상기 제1 커맨드 및 상기 어드레스로부터 패리티 비트(parity bit)를 생성하고, 생성된 상기 패리티 비트를 상기 오류 검출 신호로서 생성하는 것을 특징으로 하는 스토리지 장치.
  4. 제1항에 있어서, 상기 오류 검출 모듈은,
    상기 제1 커맨드 및 상기 어드레스로부터 CRC(Cyclic Redundancy Check) 값을 생성하고, 생성된 상기 CRC 값을 상기 오류 검출 신호로서 생성하는 것을 특징으로 하는 스토리지 장치.
  5. 제1항에 있어서, 상기 오류 검출 모듈은,
    상기 제1 커맨드 및 상기 어드레스로부터 체크섬(checksum)를 생성하고, 생성된 상기 체크섬을 상기 오류 검출 신호로서 생성하는 것을 특징으로 하는 스토리지 장치.
  6. 제1항에 있어서, 상기 인터페이스 회로는,
    상기 제1 커맨드 및 상기 제2 커맨드의 전송 구간에서 인에이블 레벨을 갖는 커맨드 래치 인에이블 신호를 상기 비휘발성 메모리에 전송하고,
    상기 어드레스의 전송 구간에서 인에이블 레벨을 갖는 어드레스 래치 인에이블 신호를 상기 비휘발성 메모리에 전송하도록 구성된 것을 특징으로 하는 스토리지 장치.
  7. 제1항에 있어서, 상기 비휘발성 메모리는,
    상기 통신 오류가 검출되면, 상기 스토리지 컨트롤러에 오류 메시지를 전송하는 것을 특징으로 하는 스토리지 장치.
  8. 제7항에 있어서, 상기 인터페이스 회로는,
    상기 오류 메시지에 응답하여, 상기 비휘발성 메모리에 상기 제1 커맨드, 상기 어드레스 및 상기 제2 커맨드를 다시 순차적으로 전송하는 것을 특징으로 하는 스토리지 장치.
  9. 제1항에 있어서, 상기 스토리지 컨트롤러는,
    상기 제1 커맨드 및 상기 어드레스의 상기 통신 오류를 예측하기 위한 머신 러닝 모듈을 더 포함하는 것을 특징으로 하는 스토리지 장치.
  10. 제9항에 있어서, 상기 머신 러닝 모듈은,
    상기 통신 오류가 예측되는 경우에는 상기 비휘발성 메모리에 상기 오류 검출 신호를 전송하고, 상기 통신 오류가 예측되지 않는 경우에는 상기 비휘발성 메모리에 상기 오류 검출 신호를 전송하지 않도록 상기 커맨드/어드레스 생성기 및 상기 오류 검출 모듈을 제어하는 것을 특징으로 하는 스토리지 장치.
  11. 비휘발성 메모리; 및
    상기 비휘발성 메모리를 제어하는 스토리지 컨트롤러를 포함하고,
    상기 스토리지 컨트롤러는,
    복수의 커맨드들/어드레스들을 생성하도록 구성된 커맨드/어드레스 생성기;
    상기 복수의 커맨드들/어드레스들의 통신 오류율 및 상기 복수의 커맨드들/어드레스들에 대한 판단 오류율을 기초로, 상기 비휘발성 메모리에 제공할 커맨드 및 어드레스의 통신 오류 발생 여부를 예측하도록 구성된 머신 러닝 모듈;
    상기 통신 오류 발생이 예측된 경우, 상기 커맨드 및 상기 어드레스로부터 오류 검출 신호를 생성하도록 구성된 오류 검출 모듈; 및
    상기 통신 오류 발생이 예측된 경우, 상기 비휘발성 메모리에 상기 커맨드, 상기 어드레스 및 상기 오류 검출 신호를 전송하도록 구성된 인터페이스 회로를 포함하고,
    상기 비휘발성 메모리는 상기 오류 검출 신호를 기초로 상기 커맨드 및 상기 어드레스의 통신 오류를 검출하는 스토리지 장치.
  12. 제11항에 있어서,
    상기 통신 오류율은, 소정 구간 동안 상기 스토리지 컨트롤러에서 상기 비휘발성 메모리에 전송된 상기 복수의 커맨드들/어드레스들에서 실제로 발생한 통신 오류에 기초한 통계 수치이고,
    상기 판단 오류율은, 상기 머신 러닝 모듈에 의해 판단되는 머신 러닝 판단 오류율에 대응하는 것을 특징으로 하는 스토리지 장치.
  13. 제11항에 있어서, 상기 머신 러닝 모듈은,
    제1 구간 동안 발행(issue)되는 제1 커맨드들/어드레스들 및 상기 제1 커맨드들/어드레스들 각각에 대한 통신 오류 발생 여부에 대해 학습을 수행하도록 구성된 것을 특징으로 하는 스토리지 장치.
  14. 제13항에 있어서, 상기 머신 러닝 모듈은,
    상기 제1 구간 이후의 제2 구간 동안 발행되는 제2 커맨드들/어드레스들 각각에 대해 통신 오류 발생 여부를 판단하고, 상기 통신 오류 발생 여부의 판단 결과에 따른 판단 데이터를 수집하도록 구성된 것을 특징으로 하는 스토리지 장치.
  15. 제14항에 있어서,
    상기 통신 오류율은, 상기 제1 커맨드들/어드레스들 각각 및 상기 제2 커맨드들/어드레스들 각각에 대한 통신 오류 발생 여부에 따라 생성되고,
    상기 판단 오류율은, 상기 제2 커맨드들/어드레스들 각각에 대한 상기 통신 오류 발생 여부 판단 결과에 따라 생성되는 것을 특징으로 하는 스토리지 장치.
  16. 제15항에 있어서, 상기 머신 러닝 모듈은,
    상기 제2 구간이 종료하면, 상기 통신 오류율과 상기 판단 오류율의 합이 기준 값보다 작으면, 머신 러닝 판단 시스템을 적용하여 상기 커맨드 및 상기 어드레스에 대해 통신 오류 발생 여부를 예측하는 것을 특징으로 하는 스토리지 장치.
  17. 제11항에 있어서, 상기 커맨드는 제1 커맨드 및 제2 커맨드를 포함하고,
    상기 인터페이스 회로는,
    상기 커맨드 및 상기 어드레스에 대해 상기 통신 오류 발생이 예측되지 않은 경우, 상기 비휘발성 메모리에 상기 제1 커맨드, 상기 어드레스 및 상기 제2 커맨드를 순차적으로 전송하는 것을 특징으로 하는 스토리지 장치.
  18. 제11항에 있어서, 상기 오류 검출 모듈은,
    상기 커맨드 및 상기 어드레스로부터 CRC 값을 생성하고, 생성된 상기 CRC값을 상기 오류 검출 신호로서 생성하는 CRC 모듈을 포함하는 것을 특징으로 하는 스토리지 장치.
  19. 비휘발성 메모리; 및
    상기 비휘발성 메모리를 제어하는 스토리지 컨트롤러를 포함하고,
    상기 스토리지 컨트롤러는,
    커맨드 및 어드레스를 생성하도록 구성된 커맨드/어드레스 생성기;
    제1 오류 검출 로직 및 제2 오류 검출 로직을 포함하는 복수의 오류 검출 로직들을 포함하고, 상기 복수의 오류 검출 로직들 중 선택 오류 검출 로직으로 상기 커맨드 및 상기 어드레스에 대한 오류 검출 신호를 생성하는 오류 검출 모듈; 및
    상기 비휘발성 메모리에 상기 커맨드, 상기 어드레스 및 상기 오류 검출 신호를 전송하도록 구성된 인터페이스 회로를 포함하고,
    상기 오류 검출 모듈은,
    상기 제1 오류 검출 로직을 적용하여 복수의 커맨드들/어드레스들 각각에 대한 오류 검출 동작을 수행하고,
    상기 복수의 커맨드들/어드레스들의 통신 오류율과 상기 제1 오류 검출 로직의 오류율의 비교 결과에 따라, 상기 선택 오류 검출 로직을 상기 제1 오류 검출 로직에서 상기 제2 오류 검출 로직으로 변경하고,
    상기 비휘발성 메모리는 상기 오류 검출 신호를 기초로 상기 커맨드 및 상기 어드레스의 통신 오류를 검출하는 것을 특징으로 하는 스토리지 장치.
  20. 제19항에 있어서, 상기 오류 검출 모듈은,
    상기 커맨드 및 상기 어드레스로부터 CRC 값을 생성하고, 생성된 상기 CRC값을 상기 오류 검출 신호로서 생성하는 CRC 모듈을 포함하는 것을 특징으로 하는 스토리지 장치.
KR1020210062816A 2021-05-14 2021-05-14 스토리지 장치 및 스토리지 컨트롤러의 동작 방법 KR102317788B1 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020210062816A KR102317788B1 (ko) 2021-05-14 2021-05-14 스토리지 장치 및 스토리지 컨트롤러의 동작 방법
US17/563,422 US11899531B2 (en) 2021-05-14 2021-12-28 Storage device and operating method of storage controller
EP22151718.8A EP4089539A1 (en) 2021-05-14 2022-01-17 Storage device and operating method of storage controller
CN202210118661.9A CN115344417A (zh) 2021-05-14 2022-02-08 存储设备
JP2022078425A JP2022176152A (ja) 2021-05-14 2022-05-11 ストレージ装置
US18/400,256 US20240232004A9 (en) 2021-05-14 2023-12-29 Storage device and operating method of storage controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210062816A KR102317788B1 (ko) 2021-05-14 2021-05-14 스토리지 장치 및 스토리지 컨트롤러의 동작 방법

Publications (1)

Publication Number Publication Date
KR102317788B1 true KR102317788B1 (ko) 2021-10-26

Family

ID=78268513

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210062816A KR102317788B1 (ko) 2021-05-14 2021-05-14 스토리지 장치 및 스토리지 컨트롤러의 동작 방법

Country Status (5)

Country Link
US (1) US11899531B2 (ko)
EP (1) EP4089539A1 (ko)
JP (1) JP2022176152A (ko)
KR (1) KR102317788B1 (ko)
CN (1) CN115344417A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102508118B1 (ko) * 2021-11-15 2023-03-08 삼성전자주식회사 스토리지 장치 및 그 동작 방법
KR20230068240A (ko) * 2021-11-10 2023-05-17 삼성전자주식회사 스토리지 장치 및 이의 동작 방법

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230315330A1 (en) * 2022-03-31 2023-10-05 Western Digital Technologies, Inc. Non-volatile memory integrated with artificial intelligence system for preemptive block management

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060122517A (ko) * 2005-05-27 2006-11-30 삼성전자주식회사 리던던시 코드 체크 기능을 가지는 반도체 메모리 장치 및그것을 구비한 메모리 시스템
JP2014241057A (ja) * 2013-06-12 2014-12-25 ソニー株式会社 インターフェース制御回路、メモリシステム、および、インターフェース制御回路の制御方法
KR20160144564A (ko) * 2015-06-08 2016-12-19 삼성전자주식회사 불휘발성 메모리 모듈 및 그것의 동작 방법
KR20170070921A (ko) * 2015-12-14 2017-06-23 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US20200110659A1 (en) * 2018-10-05 2020-04-09 Texas Instruments Incorporated Systems, methods, and apparatus to detect address faults

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101226685B1 (ko) 2007-11-08 2013-01-25 삼성전자주식회사 수직형 반도체 소자 및 그 제조 방법.
US8880970B2 (en) 2008-12-23 2014-11-04 Conversant Intellectual Property Management Inc. Error detection method and a system including one or more memory devices
US9158616B2 (en) * 2009-12-09 2015-10-13 Intel Corporation Method and system for error management in a memory device
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 삼성전자주식회사 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템
CN103999055B (zh) * 2011-12-22 2017-03-01 英特尔公司 访问命令/地址寄存器装置中存储的数据
US20140089755A1 (en) * 2012-09-27 2014-03-27 Shveta KANTAMSETTI Reliability enhancements for high speed memory - parity protection on command/address and ecc protection on data
US9389953B2 (en) * 2013-03-04 2016-07-12 Samsung Electronics Co., Ltd. Semiconductor memory device and system conducting parity check and operating method of semiconductor memory device
KR102367982B1 (ko) 2015-06-22 2022-02-25 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10127074B2 (en) * 2017-01-27 2018-11-13 Futurewei Technologies, Inc. Transaction identification synchronization
DE102019001760A1 (de) 2018-03-19 2019-09-19 Fanuc Corporation Informationsverarbeitungsgerät, maschinelle lernvorrichtungund system
US10896114B2 (en) 2018-05-23 2021-01-19 Seagate Technology Llc Machine learning error prediction in storage arrays
US11119850B2 (en) 2018-06-29 2021-09-14 International Business Machines Corporation Determining when to perform error checking of a storage unit by using a machine learning module
WO2020055616A1 (en) * 2018-09-14 2020-03-19 Rambus Inc. Memory system with error detection

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060122517A (ko) * 2005-05-27 2006-11-30 삼성전자주식회사 리던던시 코드 체크 기능을 가지는 반도체 메모리 장치 및그것을 구비한 메모리 시스템
JP2014241057A (ja) * 2013-06-12 2014-12-25 ソニー株式会社 インターフェース制御回路、メモリシステム、および、インターフェース制御回路の制御方法
KR20160144564A (ko) * 2015-06-08 2016-12-19 삼성전자주식회사 불휘발성 메모리 모듈 및 그것의 동작 방법
KR20170070921A (ko) * 2015-12-14 2017-06-23 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US20200110659A1 (en) * 2018-10-05 2020-04-09 Texas Instruments Incorporated Systems, methods, and apparatus to detect address faults

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230068240A (ko) * 2021-11-10 2023-05-17 삼성전자주식회사 스토리지 장치 및 이의 동작 방법
KR102553263B1 (ko) 2021-11-10 2023-07-10 삼성전자 주식회사 스토리지 장치 및 이의 동작 방법
KR102508118B1 (ko) * 2021-11-15 2023-03-08 삼성전자주식회사 스토리지 장치 및 그 동작 방법

Also Published As

Publication number Publication date
US20220365842A1 (en) 2022-11-17
EP4089539A1 (en) 2022-11-16
JP2022176152A (ja) 2022-11-25
CN115344417A (zh) 2022-11-15
US11899531B2 (en) 2024-02-13
US20240134741A1 (en) 2024-04-25

Similar Documents

Publication Publication Date Title
KR102317788B1 (ko) 스토리지 장치 및 스토리지 컨트롤러의 동작 방법
US9274886B2 (en) Data storage device having a reduced error occurrence, operating method thereof, and data processing system including the same
US11682467B2 (en) Nonvolatile memory device, controller for controlling the same, storage device including the same, and reading method of the same
US12013797B2 (en) Memory controller, memory system and operating method of the memory system using a channel arbitration circuit
KR20220069543A (ko) 스토리지 장치, 스토리지 컨트롤러 및 이를 포함하는 스토리지 시스템
EP4124962A1 (en) Storage devices, storage controllers, and operating methods of storage controllers
CN116954491A (zh) 用于存储控制器的操作方法和包括存储控制器的存储系统
KR102029933B1 (ko) 불휘발성 메모리 장치 및 그것을 포함하는 데이터 저장 장치
KR20220117747A (ko) 데이터 프리페치 제어 기능을 갖는 스토리지 컨트롤러, 스토리지 컨트롤러의 동작 방법, 및 스토리지 장치의 동작 방법
US20230163786A1 (en) Error correction code circuit, memory device including error correction code circuit, and operation method of error correction code circuit
US11901321B2 (en) Three-dimensional (3D) storage device using wafer-to-wafer bonding
EP4141874A1 (en) Storage device, storage controller, and operating method of storage controller
US11868647B2 (en) Nonvolatile memory device, with valley search for threshold voltage, memory controller, and reading method of storage device including the same
US11726871B2 (en) Storage controller for selecting a gear level of a storage device and storage system including the same
US20240232004A9 (en) Storage device and operating method of storage controller
CN114981784A (zh) 用于控制数据储存装置之方法及相关闪存控制器
KR20240028856A (ko) 스토리지 장치, 비휘발성 메모리 장치 및 그 동작 방법
EP4386556A1 (en) Operation method of memory controller configured to control memory device
KR102641756B1 (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
US20230038363A1 (en) Three-dimensional storage device using wafer-to-wafer bonding
US20240193041A1 (en) Operation method of memory controller configured to control memory device
EP4174646A1 (en) Storage device supporting multi-tenant operation and methods of operating same
US20230113615A1 (en) Memory module, memory system, and operation method of memory controller
EP4181136A1 (en) Storage device and operating method of storage device
EP4167091A1 (en) Memory module, memory system, and operation method of memory controller

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant