KR102571934B1 - 스토리지 시스템 및 스토리지 컨트롤러의 동작방법 - Google Patents

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

Info

Publication number
KR102571934B1
KR102571934B1 KR1020220049653A KR20220049653A KR102571934B1 KR 102571934 B1 KR102571934 B1 KR 102571934B1 KR 1020220049653 A KR1020220049653 A KR 1020220049653A KR 20220049653 A KR20220049653 A KR 20220049653A KR 102571934 B1 KR102571934 B1 KR 102571934B1
Authority
KR
South Korea
Prior art keywords
information
data
metric
word lines
memory device
Prior art date
Application number
KR1020220049653A
Other languages
English (en)
Other versions
KR20230071024A (ko
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 US17/939,021 priority Critical patent/US20230154540A1/en
Priority to EP22198023.8A priority patent/EP4181128A1/en
Priority to CN202211425651.6A priority patent/CN116129968A/zh
Publication of KR20230071024A publication Critical patent/KR20230071024A/ko
Application granted granted Critical
Publication of KR102571934B1 publication Critical patent/KR102571934B1/ko

Links

Images

Classifications

    • 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
    • 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/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

스토리지 시스템이 제공된다. 상기 스토리지 시스템은 메모리 셀 어레이를 포함하는 비휘발성 메모리 장치, 호스트로부터 라이트 명령 및 데이터를 수신하여 상기 메모리 셀 어레이에 상기 데이터를 라이트하도록 상기 비휘발성 메모리 장치를 제어하는 스토리지 컨트롤러를 포함하고,상기 스토리지 컨트롤러는 상기 메모리 셀 어레이 중 상기 데이터를 라이트할 메모리 영역을 확인하고, 상기 메모리 영역에 속한 복수의 워드라인별 특성 정보에 기초하여 복수의 그룹으로 구분하고, 상기 특성 정보에 따라 그룹 단위로 액세스 순서를 재정렬하고, 상기 재정렬된 순서로 액세스 하여 상기 데이터를 상기 메모리 영역에 라이트한다.

Description

스토리지 시스템 및 스토리지 컨트롤러의 동작방법{A STORAGE SYSTEM AND AN OPERATING METHOD OF A STORAGE CONTROLLER}
본 발명은 비휘발성 메모리 장치에 대한 라이트 동작을 수행하는 스토리지 시스템에 대한 것이다.
현대에 이르러 비휘발성 메모리들을 포함하는 스토리지 장치가 널리 사용된다. 상기 스토리지 장치의 예로서 SSD(Solid State Drive), NVMe(Non-Volatile Memory express), eMMC(embedded Multi-Media Card), UFS(Universal Flash Storage) 등이 있다. 상기와 같은 스토리지 장치는 기계적인 구동부가 없어 안정성 및 내구성이 뛰어나며 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 최근 들어 노트북과 같은 전자 시스템뿐만 아니라, 자동차, 항공기, 드론(drone) 등과 같은 다양한 종류의 시스템에 전자 회로가 적용됨에 따라, 스토리지 장치 역시 다양한 종류의 시스템에서 사용되고 있다.
비휘발성 메모리 장치, 예를 들어 NAND 메모리 장치의 세대가 증가하고 블록 사이즈가 커짐에 따라, 하나의 블록 안에서 워드라인별로 서로 다른 특성이 나타난다.
스토리지 컨트롤러가 비휘발성 메모리 장치에 데이터를 라이트하는 경우 버퍼 메모리를 이용하는데, 서로 다른 특성의 워드라인 중 가장 나쁜 특성(worst)의 워드 라인을 기준으로 이용하기 때문에, 라이트 동작 시간이 한참 소요되는 문제가 있다.
본 발명이 해결하려는 과제는 동작 성능이 향상된 스토리지 시스템을 제공하는 것이다.
본 발명이 해결하려는 과제는 워드라인 특성에 따라 라이트 순서를 조정함으로써 라이트 동작 시간이 개선된 스토리지 시스템을 제공하는 것이다.
본 발명이 해결하려는 과제는 워드라인 특성에 따라 라이트 순서를 조정함으로써 버퍼 메모리 사용의 효율성이 강화된 스토리지 시스템을 제공하는 것이다.
본 발명이 해결하려는 과제들은 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 스토리지 시스템은 메모리 셀 어레이를 포함하는 비휘발성 메모리 장치 및 호스트로부터 라이트 명령 및 데이터를 수신하여 상기 메모리 셀 어레이에 상기 데이터를 라이트하도록 상기 비휘발성 메모리 장치를 제어하는 스토리지 컨트롤러를 포함하고, 상기 스토리지 컨트롤러는 상기 메모리 셀 어레이 중 상기 데이터를 라이트할 메모리 영역을 확인하고, 상기 메모리 영역에 속한 복수의 워드라인별 특성 정보에 기초하여 복수의 그룹으로 구분하고, 상기 특성 정보에 따라 그룹 단위로 액세스 순서를 재정렬하고, 상기 재정렬된 순서로 액세스 하여 상기 데이터를 상기 메모리 영역에 라이트할 수 있다.
상기 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 스토리지 시스템은 복수의 워드라인에 연결된 메모리 셀 어레이를 포함하는 비휘발성 메모리 장치 및 호스트로부터 라이트 명령 및 데이터를 수신하여, 상기 데이터를 라이트할 메모리 영역에 속한 워드라인의 액세스 순서를 그룹 단위로 재정렬하고, 재정렬된 그룹 순서로 워드라인 주소를 출력하는 미티게이터를 포함하여, 상기 데이터를 라이트하도록 제어하는 스토리지 컨트롤러를 포함하고, 상기 미티게이터는 상기 복수의 워드라인 각각에 대한 메트릭 정보 및 그룹 정보를 저장하는 특성 테이블, 상기 특성 테이블로부터 상기 메모리 영역의 워드라인에 상응하는 메트릭 정보 및 그룹 정보를 선택하고, 상기 메트릭 정보에 따라 상기 메모리 영역의 워드라인에 대한 액세스 순서를 상기 그룹 단위로 재정렬하는 블록 선택부 및 상기 재정렬된 액세스 순서의 주소를 상기 비휘발성 메모리 장치로 발행하는 선택주소발행부를 포함한다.
상기 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법은 호스트로부터 라이트 명령 및 데이터를 수신하고, 상기 데이터를 라이트할 비휘발성 메모리 장치의 메모리 영역에 대한 워드라인에 상응하는 기저장된 메트릭 정보를 추출하고, 상기 추출된 메트릭 정보에 기초하여 그룹 단위로 재정렬된 순서로 상기 메모리 영역에 액세스하여 상기 데이터를 라이트하고, 상기 비휘발성 메모리 장치로부터 ACK정보를 수신하면, 상기 ACK 정보로부터 실제 메트릭 정보를 산출하여 상기 기저장된 메트릭 정보를 업데이트한다.
도 1은 본 발명의 예시적인 실시예에 따른 호스트-스토리지 시스템을 나타내는 블록도이다.
도 2는 몇몇 실시예에 따른 스토리지 시스템을 나타내는 블록도이다.
도 3은 본 발명의 하나의 실시 예에 따른 메모리 시스템을 나타내는 블록도이다.
도 4는 메모리 장치를 나타내는 예시적인 블록도이다.
도 5는 몇몇 실시예에 따른 미티게이터를 구체적으로 나타낸 블록도이다.
도 6은 몇몇 실시예에 따른 미티게이터를 구체적으로 나타낸 블록도이다.
도 7은 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하는 흐름도이다.
도 8은 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하는 흐름도이다.
도 9는 몇몇 실시예에 따른 피드백 모듈을 구체적으로 나타낸 블록도이다.
도 10은 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하는 흐름도이다.
도 11은 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하는 흐름도이다.
도 12는 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하는 흐름도이다.
도 13은 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하기 위한 워드라인별 프로그램 시간을 나타낸 그래프이고, 도 14 및 도 15는 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하기 위한 개념도이다.
도 16은 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하기 위한 개념도이다.
도 17은 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하기 위한 워드라인별 프로그램 시간을 나타낸 그래프이다.
도 18은 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하기 위한 개념도이다.
이하에서, 도 1 내지 도 18을 참조하여, 본 발명의 몇몇 실시예에 따른 스토리지 장치에 대해서 설명한다.
도 1은 본 발명의 예시적인 실시예에 따른 호스트-스토리지 시스템을 나타내는 블록도이다. 도 2는 몇몇 실시예에 따른 스토리지 시스템을 나타내는 블록도이다.
호스트-스토리지 시스템(10)은 호스트(100) 및 스토리지 장치(200)를 포함할 수 있다. 또한, 스토리지 장치(200)는 스토리지 컨트롤러(210) 및 비휘발성 메모리 (NVM, 220)를 포함할 수 있다. 또한, 본 발명의 예시적인 실시예에 따라, 호스트(100)는 호스트 컨트롤러(110) 및 호스트 메모리(120)를 포함할 수 있다. 호스트 메모리(120)는 스토리지 장치(200)로 전송될 데이터, 혹은 스토리지 장치(200)로부터 전송된 데이터를 임시로 저장하기 위한 호스트 버퍼 메모리로서 기능할 수 있다.
스토리지 장치(200)는 호스트(100)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일 예로서, 스토리지 장치(200)는 SSD(Solid State Drive), 임베디드(embedded) 메모리 및 착탈 가능한 외장(external) 메모리 중 적어도 하나를 포함할 수 있다. 스토리지 장치(200)가 SSD인 경우, 스토리지 장치(200)는 NVMe(non-volatile memory express) 표준을 따르는 장치일 수 있다. 스토리지 장치(200)가 임베디드 메모리 혹은 외장(external) 메모리인 경우, 스토리지 장치(200)는 UFS(universal flash storage) 혹은 eMMC(embedded multi-media card) 표준을 따르는 장치일 수 있다. 호스트(100)와 스토리지 장치(200)는 각각 채용된 표준 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다.
스토리지 장치(200)의 비휘발성 메모리 장치(220)가 플래시 메모리를 포함할 때, 상기 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 다른 예로서, 스토리지 장치(200)는 다른 다양한 종류의 비휘발성 메모리들을 포함할 수도 있다. 예를 들어, 스토리지 장치(200)는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torgue MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 및 다른 다양한 종류의 메모리가 적용될 수 있다.
일 실시예에 따라, 호스트 컨트롤러(110)와 호스트 메모리(120)는 별도의 반도체 칩으로 구현될 수 있다. 또는, 일부 실시예들에서, 호스트 컨트롤러(110)와 호스트 메모리(120)는 동일한 반도체 칩에 집적될 수 있다. 일 예로서, 호스트 컨트롤러(110)는 어플리케이션 프로세서(Application Processor)에 구비되는 다수의 모듈들 중 어느 하나일 수 있으며, 상기 어플리케이션 프로세서는 시스템 온 칩(System on Chip, SoC)으로 구현될 수 있다. 또한, 호스트 메모리(120)는 상기 어플리케이션 프로세서 내에 구비되는 임베디드 메모리이거나, 또는 상기 어플리케이션 프로세서의 외부에 배치되는 비휘발성 메모리 또는 메모리 모듈일 수 있다.
호스트 컨트롤러(110)는 호스트 메모리(120)의 데이터(예컨대, 라이트 데이터)를 비휘발성 메모리 장치(220)에 저장하거나, 비휘발성 메모리 장치(220)의 데이터(예컨대, 리드 데이터)를 호스트 메모리(120)에 저장하는 동작을 관리할 수 있다.
도 2를 참조하면, 스토리지 컨트롤러(210)는 호스트 인터페이스(212), 메모리 인터페이스(211) 및 제어부(213)를 포함할 수 있다. 또한, 스토리지 컨트롤러(210)는 플래시 변환 계층(Flash Translation Layer(FTL), 214), 패킷 매니저(215), 버퍼 메모리(216), ECC(error correction code, 217) 엔진 및 AES(advanced encryption standard, 218) 엔진, 및 미티게이터(Mitigator, 300)를 더 포함할 수 있다. 스토리지 컨트롤러(210)는 플래시 변환 레이어(FTL, 214)가 로딩되는 워킹 메모리(미도시)를 더 포함할 수 있으며, 제어부(213)가 플래시 변환 레이어(214)를 실행하는 것에 의해 비휘발성 메모리 장치(220)에 대한 데이터 라이트 및 리드 동작이 제어될 수 있다.
호스트 인터페이스(212)는 호스트(100)와 패킷(packet)을 송수신할 수 있다. 호스트(100)로부터 호스트 인터페이스(212)로 전송되는 패킷은 커맨드(command) 혹은 비휘발성 메모리 장치(220)에 라이트될 데이터 등을 포함할 수 있으며, 호스트 인터페이스(212)로부터 호스트(100)로 전송되는 패킷은 커맨드에 대한 응답(response) 혹은 비휘발성 메모리 장치(220)로부터 리드된 데이터 등을 포함할 수 있다. 메모리 인터페이스(211)는 비휘발성 메모리 장치(220)에 라이트될 데이터를 비휘발성 메모리 장치(220)로 송신하거나, 비휘발성 메모리 장치(220)로부터 리드된 데이터를 수신할 수 있다. 이러한 메모리 인터페이스(211)는 토글(Toggle) 혹은 온파이(ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
플래시 변환 계층(214)은 어드레스 매핑(address mapping), 웨어-레벨링(wear-leveling), 가비지 콜렉션(garbage collection)과 같은 여러 기능을 수행할 수 있다. 어드레스 매핑 동작은 호스트로부터 수신한 논리 어드레스(logical address)를, 비휘발성 메모리 장치(220)내에 데이터를 실제로 저장하는 데 사용되는 물리 어드레스(physical address)로 바꾸는 동작이다. 웨어-레벨링은 비휘발성 메모리 장치(220)내의 블록(block)들이 균일하게 사용되도록 하여 특정 블록의 과도한 열화를 방지하기 위한 기술로, 예시적으로 물리 블록(physical block)들의 이레이즈 카운트들을 밸런싱하는 펌웨어 기술을 통해 구현될 수 있다. 가비지 콜렉션은, 블록의 유효 데이터를 새 블록에 복사한 후 기존 블록을 이레이즈(erase)하는 방식을 통해 비휘발성 메모리 장치(220)내에서 사용 가능한 용량을 확보하기 위한 기술이다.
패킷 매니저(215)는 호스트(100)와 협의된 인터페이스의 프로토콜에 따른 패킷(Packet)을 생성하거나, 호스트(100)로부터 수신된 패킷(Packet)으로부터 각종 정보를 파싱할 수 있다. 또한, 버퍼 메모리(216)는 비휘발성 메모리 장치(220)에 라이트될 데이터 혹은 비휘발성 메모리 장치(220)로부터 리드될 데이터를 임시로 저장할 수 있다. 버퍼 메모리(216)는 스토리지 컨트롤러(210) 내에 구비되는 구성일 수 있으나, 스토리지 컨트롤러(210)의 외부에 배치되어도 무방하다.
ECC 엔진(217)은 비휘발성 메모리 장치(220)로부터 리드되는 리드 데이터에 대한 오류 검출 및 정정 기능을 수행할 수 있다. 보다 구체적으로, ECC 엔진(217)은 비휘발성 메모리 장치(220)에 기입될 기입 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 기입 데이터와 함께 비휘발성 메모리 장치(220)내에 저장될 수 있다. 비휘발성 메모리 장치(220)로부터의 데이터 리드 시, ECC 엔진(217)은 리드 데이터와 함께 비휘발성 메모리 장치(220)로부터 리드되는 패리티 비트들을 이용하여 리드 데이터의 에러를 정정하고, 에러가 정정된 리드 데이터를 출력할 수 있다.
AES 엔진(218)은, 스토리지 컨트롤러(210)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)를 이용하여 수행할 수 있다.
미티게이터(300)는, 몇몇 실시예에 따라 호스트(100)에서 라이트 명령 및 라이트할 데이터를 수신하면, 라이트 명령에 따른 비휘발성 메모리 장치(220)에 액세스할 메모리 영역을 확인하고, 액세스할 메모리 영역에 속한 워드라인의 특성 정보에 기초하여, 라이트할 워드라인의 순서를 그룹으로 재정렬하여, 재정렬된 그룹의 워드라인에 데이터를 라이트한다.
미티게이터(300)는 복수의 워드라인을 그룹별로 구분할 수 있다. 미티게이터(300)는 기설정된 표준편차 내 범위에 속하는 메트릭값을 갖는 워드라인으로서, 물리적으로 연속되는 주소의 복수의 워드라인을 하나의 그룹으로 구분한다. 예를 들어 하나의 그룹은 물리적으로 연속되는 주소의 k개(k는 3이상의 자연수)의 워드라인을 포함하고, k개의 워드라인 각각의 메트릭값이 k개 워드라인의 평균 메트릭값을 기준으로 기설정된 표준편차 범위에 속하는 메트릭값을 가지는 것일 수 있다.
미티게이터(300)는 몇몇 실시예에 따라 비휘발성 메모리 장치(220)에 데이터를 라이트한 후 수신되는 Ack 정보에 기초하여 상기 워드라인 특성에 대한 정보를 업데이트 한다.
몇몇 실시예에 따라 워드라인의 특성 정보는 상기 워드라인의 메트릭 정보가 그룹으로 구분되어, 특성 테이블에 저장된다. 예를 들어 특성 정보는 워드라인의 메트릭 정보가 초기에는 머신러닝으로 사전학습되어 그룹으로 구분되어 특성 테이블에 저장된다. 미티게이터(300)는 비휘발성 메모리 장치(20)에서 회신되는 이후 Ack 정보에 기초하여 비휘발성 메모리 장치(200)의 수명에 따라 변경되는 워드라인별 메트릭 정보를 업데이트하여 특성 테이블에 저장한다.
도 3은 본 발명의 하나의 실시 예에 따른 메모리 시스템을 나타내는 블록도이다. 도 3을 참조하면, 스토리지 시스템(200)은 비휘발성 메모리 장치(220) 및 스토리지 컨트롤러(210)를 포함할 수 있다. 비휘발성 메모리 장치(220)는 도 3의 복수의 채널들(CH1~CHm) 중 하나를 기반으로 스토리지 컨트롤러(210)와 통신하는 비휘발성 메모리 장치들(NVM11~NVMmn) 중 하나에 대응할 수 있다. 스토리지 컨트롤러(210)는 도 3의 스토리지 컨트롤러(210)에 대응할 수 있다.
비휘발성 메모리 장치(220)는 제1 내지 제8 핀들(P11~P18), 메모리 인터페이스 회로(221), 제어 로직 회로(222), 및 메모리 셀 어레이(400)를 포함할 수 있다.
메모리 인터페이스 회로(221)는 제1 핀(P11)을 통해 스토리지 컨트롤러(210)로부터 칩 인에이블 신호(nCE)를 수신할 수 있다. 메모리 인터페이스 회로(221)는 칩 인에이블 신호(nCE)에 따라 제2 내지 제8 핀들(P12~P18)을 통해 스토리지 컨트롤러(210)와 신호들을 송수신할 수 있다. 예를 들어, 칩 인에이블 신호(nCE)가 인에이블 상태(예를 들어, 로우 레벨)인 경우, 메모리 인터페이스 회로(221)는 제2 내지 제8 핀들(P12~P18)을 통해 스토리지 컨트롤러(210)와 신호들을 송수신할 수 있다.
메모리 인터페이스 회로(221)는 제2 내지 제4 핀들(P12~P14)을 통해 스토리지 컨트롤러(210)로부터 커맨드 래치 인에이블 신호(CLE), 어드레스 래치 인에이블 신호(ALE), 및 라이트 인에이블 신호(nWE)를 수신할 수 있다. 메모리 인터페이스 회로(221)는 제7 핀(P17)을 통해 스토리지 컨트롤러(210)로부터 데이터 신호(DQ)를 수신하거나, 스토리지 컨트롤러(210)로 데이터 신호(DQ)를 전송할 수 있다. 데이터 신호(DQ)를 통해 커맨드(CMD), 어드레스(ADDR), 및 데이터(DATA)가 전달될 수 있다. 예를 들어, 데이터 신호(DQ)는 복수의 데이터 신호 라인들을 통해 전달될 수 있다. 이 경우, 제7 핀(P17)은 복수의 데이터 신호들에 대응하는 복수개의 핀들을 포함할 수 있다.
메모리 인터페이스 회로(221)는 라이트 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 커맨드 래치 인에이블 신호(CLE)의 인에이블 구간(예를 들어, 하이 레벨 상태)에서 수신되는 데이터 신호(DQ)로부터 커맨드(CMD)를 획득할 수 있다. 메모리 인터페이스 회로(221)는 라이트 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 어드레스 래치 인에이블 신호(ALE)의 인에이블 구간(예를 들어, 하이 레벨 상태)에서 수신되는 데이터 신호(DQ)로부터 어드레스(ADDR)를 획득할 수 있다.
예시적인 실시 예에서, 라이트 인에이블 신호(nWE)는 고정된(static) 상태(예를 들어, 하이(high) 레벨 또는 로우(low) 레벨)를 유지하다가 하이 레벨과 로우 레벨 사이에서 토글할 수 있다. 예를 들어, 라이트 인에이블 신호(nWE)는 커맨드(CMD) 또는 어드레스(ADDR)가 전송되는 구간에서 토글할 수 있다. 이에 따라, 메모리 인터페이스 회로(221)는 라이트 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 커맨드(CMD) 또는 어드레스(ADDR)를 획득할 수 있다.
메모리 인터페이스 회로(221)는 제5 핀(P15)을 통해 스토리지 컨트롤러(210)로부터 리드 인에이블 신호(nRE)를 수신할 수 있다. 메모리 인터페이스 회로(221)는 제6 핀(P16)을 통해 스토리지 컨트롤러(210)로부터 데이터 스트로브 신호(DQS)를 수신하거나, 스토리지 컨트롤러(210)로 데이터 스트로브 신호(DQS)를 전송할 수 있다.
비휘발성 메모리 장치(220)의 데이터(DATA) 출력 동작에서, 메모리 인터페이스 회로(221)는 데이터(DATA)를 출력하기 전에 제5 핀(P15)을 통해 토글하는 리드 인에이블 신호(nRE)를 수신할 수 있다. 메모리 인터페이스 회로(221)는 리드 인에이블 신호(nRE)의 토글링에 기초하여 토글하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 예를 들어, 메모리 인터페이스 회로(221)는 리드 인에이블 신호(nRE)의 토글링 시작 시간을 기준으로 미리 정해진 딜레이(예를 들어, tDQSRE) 이후에 토글하기 시작하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 메모리 인터페이스 회로(221)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터(DATA)를 포함하는 데이터 신호(DQ)를 전송할 수 있다. 이에 따라, 데이터(DATA)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 정렬되어 스토리지 컨트롤러(210)로 전송될 수 있다.
비휘발성 메모리 장치(220)의 데이터(DATA) 입력 동작에서, 스토리지 컨트롤러(210)로부터 데이터(DATA)를 포함하는 데이터 신호(DQ)이 수신되는 경우, 메모리 인터페이스 회로(221)는 스토리지 컨트롤러(210)로부터 데이터(DATA)와 함께 토글하는 데이터 스트로브 신호(DQS)를 수신할 수 있다. 메모리 인터페이스 회로(221)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터 신호(DQ)로부터 데이터(DATA)를 획득할 수 있다. 예를 들어, 메모리 인터페이스 회로(221)는 데이터 스트로브 신호(DQS)의 상승 에지 및 하강 에지에서 데이터 신호(DQ)를 샘플링함으로써 데이터(DATA)를 획득할 수 있다.
메모리 인터페이스 회로(221)는 제8 핀(P18)을 통해 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(210)로 전송할 수 있다. 메모리 인터페이스 회로(221)는 레디/비지 출력 신호(nR/B)를 통해 비휘발성 메모리 장치(220)의 상태 정보를 스토리지 컨트롤러(210)로 전송할 수 있다. 비휘발성 메모리 장치(220)가 비지 상태인 경우(즉, 비휘발성 메모리 장치(220) 내부 동작들이 수행 중인 경우), 메모리 인터페이스 회로(221)는 비지 상태를 나타내는 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(210)로 전송할 수 있다. 비휘발성 메모리 장치(220)가 레디 상태인 경우(즉, 비휘발성 메모리 장치(220) 내부 동작들이 수행되지 않거나 완료된 경우), 메모리 인터페이스 회로(221)는 레디 상태를 나타내는 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(210)로 전송할 수 있다. 예를 들어, 비휘발성 메모리 장치(220)가 페이지 리드 명령에 응답하여 메모리 셀 어레이(430)로부터 데이터(DATA)를 리드하는 동안, 메모리 인터페이스 회로(221)는 비지 상태(예를 들어, 로우 레벨)를 나타내는 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(210)로 전송할 수 있다. 예를 들어, 비휘발성 메모리 장치(220)가 프로그램 명령에 응답하여 메모리 셀 어레이(430)로 데이터(DATA)를 프로그램하는 동안, 메모리 인터페이스 회로(221)는 비지 상태를 나타내는 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(210)로 전송할 수 있다.
제어 로직 회로(222)는 비휘발성 메모리 장치(220)의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(222)는 메모리 인터페이스 회로(221)로부터 획득된 커맨드/어드레스(CMD/ADDR)를 수신할 수 있다. 제어 로직 회로(222)는 수신된 커맨드/어드레스(CMD/ADDR)에 따라 비휘발성 메모리 장치(220)의 다른 구성 요소들을 제어하기 위한 제어 신호들을 생성할 수 있다. 예를 들어, 제어 로직 회로(222)는 메모리 셀 어레이(430)에 데이터(DATA)를 프로그램하거나, 또는 메모리 셀 어레이(430)로부터 데이터(DATA)를 리드하기 위한 각종 제어 신호들을 생성할 수 있다.
메모리 셀 어레이(430)는 제어 로직 회로(222)의 제어에 따라 메모리 인터페이스 회로(221)로부터 획득된 데이터(DATA)를 저장할 수 있다. 메모리 셀 어레이(430)는 제어 로직 회로(222)의 제어에 따라 저장된 데이터(DATA)를 메모리 인터페이스 회로(221)로 출력할 수 있다.
메모리 셀 어레이(430)는 복수의 메모리 셀들을 포함할 수 있다. 예를 들어, 복수의 메모리 셀들은 플래시 메모리 셀들일 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 메모리 셀들은 RRAM(Resistive Random Access Memory) 셀, FRAM(Ferroelectric Random Access Memory) 셀, PRAM(Phase Change Random Access Memory) 셀, TRAM(Thyristor Random Access Memory) 셀, MRAM(Magnetic Random Access Memory) 셀들일 수 있다. 이하에서는, 메모리 셀들이 낸드(NAND) 플래시 메모리 셀들인 실시 예를 중심으로 본 발명의 실시 예들이 설명될 것이다.
스토리지 컨트롤러(210)는 제1 내지 제8 핀들(P21~P28), 및 컨트롤러 인터페이스(211)를 포함할 수 있다. 제1 내지 제8 핀들(P21~P28)은 비휘발성 메모리 장치(220)의 제1 내지 제8 핀들(P11~P18)에 대응할 수 있다.
컨트롤러 인터페이스(211)는 제1 핀(P21)을 통해 비휘발성 메모리 장치(220)로 칩 인에이블 신호(nCE)를 전송할 수 있다. 컨트롤러 인터페이스(211)는 칩 인에이블 신호(nCE)를 통해 선택한 비휘발성 메모리 장치(220)와 제2 내지 제8 핀들(P22~P28)을 통해 신호들을 송수신할 수 있다.
컨트롤러 인터페이스(211)는 제2 내지 제4 핀들(P22~P24)을 통해 커맨드 래치 인에이블 신호(CLE), 어드레스 래치 인에이블 신호(ALE), 및 라이트 인에이블 신호(nWE)를 비휘발성 메모리 장치(220)로 전송할 수 있다. 컨트롤러 인터페이스(211)는 제7 핀(P27)을 통해 비휘발성 메모리 장치(220)로 데이터 신호(DQ)를 전송하거나, 비휘발성 메모리 장치(220)로부터 데이터 신호(DQ)를 수신할 수 있다.
컨트롤러 인터페이스(211)는 토글하는 라이트 인에이블 신호(nWE)와 함께 커맨드(CMD) 또는 어드레스(ADDR)를 포함하는 데이터 신호(DQ)를 비휘발성 메모리 장치(220)로 전송할 수 있다. 이 경우 어드레스는 메트릭 정보를 기초로 그룹단위로 재정렬된 순서의 어드레스로 출력될 수 있다.
컨트롤러 인터페이스(211)는 인에이블 상태를 가지는 커맨드 래치 인에이블 신호(CLE)를 전송함에 따라 커맨드(CMD)를 포함하는 데이터 신호(DQ)를 비휘발성 메모리 장치(220)로 전송하고, 인에이블 상태를 가지는 어드레스 래치 인에이블 신호(ALE)를 전송함에 따라 어드레스(ADDR)를 포함하는 데이터 신호(DQ)를 비휘발성 메모리 장치(220)로 전송할 수 있다.
컨트롤러 인터페이스(211)는 제5 핀(P25)을 통해 비휘발성 메모리 장치(220)로 리드 인에이블 신호(nRE)를 전송할 수 있다. 컨트롤러 인터페이스(211)는 제6 핀(P26)을 통해 비휘발성 메모리 장치(220)로부터 데이터 스트로브 신호(DQS)를 수신하거나, 비휘발성 메모리 장치(220)로 데이터 스트로브 신호(DQS)를 전송할 수 있다.
비휘발성 메모리 장치(220)의 데이터(DATA) 출력 동작에서, 컨트롤러 인터페이스(211)는 토글하는 리드 인에이블 신호(nRE)를 생성하고, 리드 인에이블 신호(nRE)를 비휘발성 메모리 장치(220)로 전송할 수 있다. 예를 들어, 컨트롤러 인터페이스(211)는 데이터(DATA)가 출력되기 전에 고정된 상태(예를 들어, 하이 레벨 또는 로우 레벨)에서 토글 상태로 변경되는 리드 인에이블 신호(nRE)를 생성할 수 있다. 이에 따라, 비휘발성 메모리 장치(220)에서 리드 인에이블 신호(nRE)에 기초하여 토글하는 데이터 스트로브 신호(DQS)가 생성될 수 있다. 컨트롤러 인터페이스(211)는 비휘발성 메모리 장치(220)로부터 토글하는 데이터 스트로브 신호(DQS)와 함께 데이터(DATA)를 포함하는 데이터 신호(DQ)를 수신할 수 있다. 컨트롤러 인터페이스(211)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터 신호(DQ)로부터 데이터(DATA)를 획득할 수 있다.
비휘발성 메모리 장치(220)의 데이터(DATA) 입력 동작에서, 컨트롤러 인터페이스(211)는 토글하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 예를 들어, 컨트롤러 인터페이스(211)는 데이터(DATA)를 전송하기 전에 고정된 상태(예를 들어, 하이 레벨 또는 로우 레벨)에서 토글 상태로 변경되는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 컨트롤러 인터페이스(211)는 데이터 스트로브 신호(DQS)의 토글 타이밍들에 기초하여 데이터(DATA)를 포함하는 데이터 신호(DQ)를 비휘발성 메모리 장치(220)로 전송할 수 있다.
컨트롤러 인터페이스(211)는 제8 핀(P28)을 통해 비휘발성 메모리 장치(220)로부터 레디/비지 출력 신호(nR/B)를 수신할 수 있다. 컨트롤러 인터페이스(211)는 레디/비지 출력 신호(nR/B)에 기초하여 비휘발성 메모리 장치(220)의 상태 정보를 판별할 수 있다.
도 4는 메모리 장치를 나타내는 예시적인 블록도이다. 도 4를 참조하면, 비휘발성 메모리 장치(400)는 제어 로직 회로(420), 메모리 셀 어레이(430), 페이지 버퍼부(440), 전압 생성기(450), 및 로우 디코더(460)를 포함할 수 있다. 도 4에는 도시되지 않았으나, 비휘발성 메모리 장치(400)는 메모리 인터페이스 회로(410)를 더 포함할 수 있고, 또한 컬럼 로직, 프리-디코더, 온도 센서, 커맨드 디코더, 어드레스 디코더 등을 더 포함할 수 있다.
제어 로직 회로(420)는 비휘발성 메모리 장치(400) 내의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(420)는 메모리 인터페이스 회로(410)로부터의 커맨드(CMD) 및/또는 어드레스(ADDR)에 응답하여 각종 제어 신호들을 출력할 수 있다. 예를 들어, 제어 로직 회로(420)는 전압 제어 신호(CTRL_vol), 로우 어드레스(X-ADDR), 및 컬럼 어드레스(Y-ADDR)를 출력할 수 있다.
메모리 셀 어레이(430)는 복수의 메모리 블록들(BLK1 내지 BLKz)을 포함할 수 있고(z는 양의 정수), 복수의 메모리 블록들(BLK1 내지 BLKz) 각각은 복수의 메모리 셀들을 포함할 수 있다. 메모리 셀 어레이(430)는 비트 라인들(BL)을 통해 페이지 버퍼부(440)에 연결될 수 있고, 워드 라인들(WL), 스트링 선택 라인들(SSL), 및 그라운드 선택 라인들(GSL)을 통해 로우 디코더(460)에 연결될 수 있다.
예시적인 실시 예에서, 메모리 셀 어레이(430)는 3차원 메모리 셀 어레이를 포함할 수 있고, 3차원 메모리 셀 어레이는 복수의 낸드 스트링들을 포함할 수 있다. 각 낸드 스트링은 기판 위에 수직으로 적층된 워드 라인들에 각각 연결된 메모리 셀들을 포함할 수 있다. 미국 특허공개공보 제7,679,133호, 미국 특허공개공보 제8,553,466호, 미국 특허공개공보 제8,654,587호, 미국 특허공개공보 제8,559,235호, 및 미국 특허출원공개공보 제2011/0233648호는 본 명세서에 인용 형식으로 결합된다. 예시적인 실시 예에서, 메모리 셀 어레이(430)는 2차원 메모리 셀 어레이를 포함할 수 있고, 2차원 메모리 셀 어레이는 행 및 열 방향을 따라 배치된 복수의 낸드 스트링들을 포함할 수 있다.
페이지 버퍼부(440)는 복수의 페이지 버퍼들(PB1 내지 PBn)을 포함할 수 있고(n은 3 이상의 정수), 복수의 페이지 버퍼들(PB1 내지 PBn)은 복수의 비트 라인들(BL)을 통해 메모리 셀들과 각각 연결될 수 있다. 페이지 버퍼부(440)는 컬럼 어드레스(Y-ADDR)에 응답하여 비트 라인들(BL) 중 적어도 하나의 비트 라인을 선택할 수 있다. 페이지 버퍼부(440)는 동작 모드에 따라 기입 드라이버 또는 감지 증폭기로서 동작할 수 있다. 예를 들어, 프로그램 동작 시, 페이지 버퍼부(440)는 선택된 비트 라인으로 프로그램될 데이터에 대응하는 비트 라인 전압을 인가할 수 있다. 리드 동작 시, 페이지 버퍼부(440)는 선택된 비트 라인의 전류 또는 전압을 감지하여 메모리 셀에 저장된 데이터를 감지할 수 있다.
전압 생성기(450)는 전압 제어 신호(CTRL_vol)를 기반으로 프로그램, 리드, 및 이레이즈 동작들을 수행하기 위한 다양한 종류의 전압들을 생성할 수 있다. 예를 들어, 전압 생성기(450)는 워드 라인 전압(VWL)으로서 프로그램 전압, 리드 전압, 프로그램 검증 전압, 이레이즈 전압 등을 생성할 수 있다.
로우 디코더(460)는 로우 어드레스(X-ADDR)에 응답하여 복수의 워드 라인들(WL) 중 하나를 선택할 수 있고, 복수의 스트링 선택 라인들(SSL) 중 하나를 선택할 수 있다. 예를 들어, 라이트 동작 시, 로우 디코더(460)는 선택된 워드 라인으로 프로그램 전압 및 프로그램 검증 전압을 인가하고, 리드 동작 시, 선택된 워드 라인으로 리드 전압을 인가할 수 있다.
도 5는 몇몇 실시예에 따른 미티게이터를 구체적으로 나타낸 블록도이다.
도 5를 참조하면, 미티게이터(300)는 커맨드패킷관리부(310), 블록 선택부(320), 특성테이블(330), 피드백 모듈(340) 및 선택주소발행부(350)를 포함한다.
커맨드패킷관리부(310)는 호스트(100)로부터 라이트 커맨드를 수신하여 블록 선택부(320)로 데이터를 라이트할 메모리 영역에 대한 정보(Add1)를 전달한다. 메모리 영역에 대한 정보(Add1)는 예를 들어 비휘발성 메모리 장치(220)의 시작 주소 및 끝 주소를 포함할 수 있다. 커맨드패킷관리부(310)는 비휘발성 메모리 장치(220)에 대한 라이트 동작이 완료되면, 비휘발성 메모리 장치(220)의 상기 메모리 영역에 대한 피드백 정보(ACK1, ACK2)를 수신하여, 호스트(100)에 라이트 동작이 완료되었음을 알려준다.
블록 선택부(320)는 커맨드패킷관리부(310)로부터 액세스할 메모리 영역에 대한 주소를 수신하면, 메모리 영역의 매트릭 정보를 특성 테이블(330)에서 확인한다. 블록 선택부(320)는 메트릭 정보에 따라 액세스할 메모리 영역에 속한 워드라인의 액세스 순서를 재정렬한다. 블록 선택부(320)는 예를 들어 워드라인의 액세스 순서를 그룹 단위로 재정렬하여 출력할 수 있다. 예를 들어 비휘발성 메모리 장치(220)의 메모리 셀 영역이 제1 내지 제6 그룹으로 구분된다고 하면, 블록 선택부(320)는 제4그룹, 제2그룹, 제5그룹, 제2그룹, 제1그룹, 제6그룹 등과 같이 그룹별로 액세스 순서를 재정렬한다. 다만 그룹으로 구분되어 재정렬되는 워드라인들은 비휘발성 메모리 장치(220)의 라이트 동작 제한(Program Constraint) 조건을 만족한다.
특성 테이블(330)는 몇몇 실시예에 따라 비휘발성 메모리 장치(220)의 특성 정보(Variation Feature Information)를 저장할 수 있다. 특성 테이블(330)은 예를 들어 특성 정보를 학습하고, 학습결과 워드라인별 메트릭 정보를 저장할 수 있다. 특성 정보는 비휘발성 메모리 장치(220)의 특성, 예를 들어 칩 위치 정보, 블록 위치 정보, 데이터 라이트 동작에 소요되는 프로그램 시간 정보(tPROG), 리드 동작에 소요되는 리드 시간 정보(tR), P/E(Program/Erase) 사이클, 공정 인덱스, 웨이퍼 크기 정보 중 적어도 하나의 메트릭 정보를 포함할 수 있다.
몇몇 실시예에 따라 특성 테이블(330)은 비휘발성 메모리 장치(220)의 메모리 셀을 N개의 그룹으로 그룹핑한 정보로서, 각 워드라인이 속하는 그룹 을 표시한 그룹 정보를 저장할 수 있다. N은 2 이상의 자연수이다. 상기 그룹은 물리적 주소가 연속되면서도 메트릭 값이 유사한 M개의 워드라인을 하나의 그룹으로 구분한 것일 수 있다. M은 3이상의 자연수이다.
예를 들어 워드라인 부터 워드라인 이 기설정된 표준편차 범위 내의 메트릭값을 갖는 경우, 워드라인 부터 워드라인 을 하나의 그룹으로 구분하고, 특성 테이블(330)은 상기 워드라인의 메트릭 정보에 그룹 정보를 매핑하여 저장한다. 그룹과 관련해서 이후 도 13에서 상세히 설명한다.
선택주소발행부(350)는 몇몇 실시예에 따라 비휘발성 메모리 장치(220)에 재정렬된 워드라인의 액세스 순서로 액세스 주소를 발행한다. 즉, 선택주소발행부(350)는 재정렬된 그룹 순서로 액세스 주소를 발행한다.
비휘발성 메모리 장치(220)는 선택주소발행부(350)로부터 수신되는 순서대로 워드라인을 활성화하고, 버퍼 메모리(216)로부터 수신되는 데이터(Data2)를 활성화된 워드라인이 속한 메모리 셀에 라이트한다. 버퍼 메모리(216)는 호스트(100)로부터 라이트할 데이터(Data1)를 수신하여 저장할 수 있다.
비휘발성 메모리 장치(220)는 라이트 동작을 완료하면, 상기 메모리 영역에서의 라이트 동작에 대한 메트릭 정보를 ACK1 정보로 전송한다. 피드백 모듈(340)은 비휘발성 메모리 장치(220)로부터 ACK1 정보를 수신하고, ACK1 정보로부터 확인된 상기 메모리 영역에 대한 실제 메트릭 정보에 기초하여 피드백 정보(Fb)로 특성 테이블(330)에 업데이트 한다.
예를 들어 메트릭 정보가 프로그램 시간(tPROG)라고 하면, 피드백 모듈(340)은 비휘발성 메모리 장치(220)에서 상기 메모리 영역에 대한 라이트 동작의 실제 프로그램 시간(tPROG)을 계산하여 피드백 정보(Fb)로서 특성 테이블(330)에 전송한다. 예를 들어 피드백 모듈(340)은 상기 피드백 정보(Fb)가 특성 테이블(300)의 상기 메모리 영역에 기저장된 메트릭 정보와 상이하면, 특성 테이블(330)에 기저장된 메트릭 정보를 상기 피드백 정보(Fb)에 기초하여 업데이트한다.
피드백 모듈(340)은 상기 ACK1 정보에 기초하여 ACK2 정보를 생성하고, 비휘발성 메모리 장치(220)의 동작이 완료되었음을 커맨드패킷관리부(310)를 통해 호스트(100) 또는 제어부(213)로 알린다.
도 6은 몇몇 실시예에 따른 미티게이터를 구체적으로 나타낸 블록도이다. 도 5와의 차이점을 위주로 설명하고 중복되는 설명은 생략한다.
몇몇 실시예에 따라 특성 테이블(330)은 도 5와 같이 다른 미티게이터(300)의 구성요소와 별개의 독립적인 구성요소로 구현될 수 있다. 특성 테이블(330)은 별개의 쓰기가능한 메모리 장치, 예를 들어, 레지스터, 비휘발성 메모리 등으로 구현될 수 있다. 이 경우 피드백 모듈(340)은 피드백 정보(Fb)와 특성 테이블(325)의 메트릭 정보를 비교하고, 기저장된 메트릭 정보가 피드백 정보(Fb)와 상이한 경우, 특성 테이블(325)을 업데이트 한다.
몇몇 실시예에 따라 블록선택부(320)는 도 6과 같이 특성 테이블(325)을 포함할 수 있다. 특성 테이블(325)는 블록선택부(320)에 내장된 형태의 쓰기가능한 비휘발성 메모리로 구현될 수 있다. 피드백 모듈(340)은 ACK1 정보에 기초한 피드백 정보(Fb)를 블록선택부(320)로 전송한다. 블록선택부(320)는 예를 들어 메모리 영역의 워드라인 별로 피드백 정보(Fb)와 특성 테이블(325)의 메트릭 정보를 비교하고, 기저장된 메트릭 정보가 피드백 정보(Fb)와 상이한 경우, 특성 테이블(325)을 업데이트 한다.
도 7은 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하는 흐름도이다.
도 7을 참조하면, 스토리지 컨트롤러(210)는 호스트(100)로부터 라이트 커맨드 및 라이트할 데이터를 수신한다(S10). 스토리지 컨트롤러(210)는, 예를 들어 미티게이터(300)는 라이트 커맨드를 확인하여 비휘발성 메모리 장치(220)에 액세스할 메모리 영역을 확인하고, 메모리 영역의 워드라인별 메트릭 정보를 확인한다. 몇몇 실시예에 따라 미티게이터(300)는 특성 테이블(330 또는 325)에 저장되어 있는 워드라인별 메트릭 정보를 추출하고, 추출된 메트릭 정보에 기초하여 워드라인별, 블록별 액세스 순서를 재정렬한다(S12). 예를 들어 균등한 성능이 나오도록 메트릭 정보에 기초하여 그룹별 액세스 순서를 재정렬하고, 재정렬된 그룹의 블록 및 워드라인 주소를 출력한다(S13).
도 8은 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하는 흐름도이다.
도 7 및 도 8을 참고하면, 스토리지 컨트롤러(210)는 재정렬된 액세스 주소를 출력한다(S20). 예를 들어 재정렬된 주소는 그룹별로 출력될 수 있고, 각 그룹은 블록 및 워드라인 주소를 포함할 수 있다.
비휘발성 메모리 장치(220)는 재정렬된 그룹의 블록 및 워드라인 주소를 수신하면(S30), 수신된 주소에 스토리지 컨트롤러(210)로부터 수신한 데이터를 라이트한다(S21). 비휘발성 메모리 장치는 라이트 동작이 완료되면, 완료를 알리는 ACK1 정보를 스토리지 컨트롤러(210)로 출력한다(S32).
스토리지 컨트롤러(210)는 ACK1 정보를 수신하면(S21), 상기 액세스 주소에 대한 피드백 정보로 분석한다. 예를 들어 스토리지 컨트롤러(210)는 S30에서 액세스 주소 및 데이터를 전송한 시점부터 S21의 ACK1 정보를 수신한 시점까지의 경과된 시간을 상기 피드백 정보로 분석할 수 있다. 또는 비휘발성 메모리 장치(220)는 액세스 주소에서 실제 라이트 동작으로 소요된 프로그램 시간을 포함하여 ACK1 정보로 전송하고, 스토리지 컨트롤러(210)는 ACK1 정보로부터 실제 프로그램 시간(tPROG)를 추출할 수도 있다.
스토리지 컨트롤러(210)는 피드백 정보와 특성 테이블(330)에 기저장된 메트릭 정보를 비교하여 업데이트가 필요한지 확인한다(S23). 만약 피드백 정보가 기저장된 메트릭 정보와 상이한 경우, 스토리지 컨트롤러(210)는 상기 액세스 주소, 예를 들어 워드라인 및 블록 주소에 대한 메트릭 정보를 피드백 정보로 업데이트할 수 있다(S24). 그러나 피드백 정보가 기저장된 메트릭 정보 대비 기설정된 범위 내인 경우, 스토리지 컨트롤러(210)는 다음 재정렬된 액세스 정보의 출력 후 다음 ACK1을 받을 때까지 기저장된 메트릭 정보를 그대로 유지할 수 있다(S23).
도 9는 몇몇 실시예에 따른 피드백 모듈을 구체적으로 나타낸 블록도이다.
도 5 및 도 9를 참조하면, 피드백 모듈(340)은 머신러닝 모델(345)을 포함할 수 있다. 머신러닝 모델(345)은 비휘발성 메모리 장치의 특성 정보를 학습하고, 학습결과 액세스 주소에 상응하는 메트릭 정보를 산출한다. 상기 주소는 예를 들어 블록 주소, 워드라인 주소, 그룹 정보 또는 칩 위치정보 등을 포함한다. 특성 정보는 비휘발성 메모리 장치(220)의 특성, 예를 들어 칩 위치 정보, 블록 위치 정보, 데이터 라이트 동작에 소요되는 프로그램 시간 정보(tPROG), 리드 동작에 소요되는 리드 시간 정보(tR), P/E(Program/Erase) 사이클, 공정 인덱스, 웨이퍼 크기 정보 중 적어도 하나의 메트릭 정보를 포함할 수 있다. 몇몇 실시예에 따라 머신러닝 모델(345)는 상기 메트릭 정보를 그룹별로 구분학습하여 저장할 수도 있다.
피드백 모듈(340)은 비휘발성 메모리 장치(220)로부터 ACK1 정보를 수신한다. 몇몇 실시예에 따라 피드백 모듈(340)은 ACK1 정보로부터 액세스한 메모리 영역에 대한 메트릭 및 실제 측정값들(G)을 수신하거나 산출할수 있다. 피드백 모듈(340)은 특성 테이블(330)에 저장된 특성 정보로부터 상기 액세스 주소, 예를 들어 워드라인에 상응하는 메트릭 및 학습값들(P)을 산출할 수 있다.
몇몇 실시예에 따라 피드백 모듈(340)은 동일 주소에 대한 메트릭의 실제 측정값(G)과 학습값들(P)을 비교하고, 그 차이(diff)를 머신러닝 모델(345)로 역전파(Back Propagation)한다. 머신러닝 모델(345)는 차이값에 기초하여 상기 액세스 주소에 대한 그룹 구분 및 메트릭 정보에 대해 재학습을 수행하고, 재학습으로 산출된 피드백 정보(Fb)를 특성 테이블(330)로 출력한다. 특성 테이블(330)은 피드백 정보(Fb)에 기초하여 상기 액세스 주소에 대한 특성 정보(즉, 그룹 정보 및 메트릭 정보)를 업데이트 할 수 있다.
몇몇 실시예에 따라 머신러닝 모델(345)은 기설정된 P/E 사이클을 초과하면 복수의 워드라인에 대한 그룹 정보 및 메트릭 정보를 재학습하여 리클러스터링을 수행할 수 있다. 또는 몇몇 실시예에 따라 머신러닝 모델(345)은 실제 측정값(G)과 학습값들(P)을 비교한 차이값(diff)이 기설정된 임계치를 초과하면, 복수의 워드라인에 대한 그룹 정보 및 메트릭 정보를 재학습하여 리클러스터링을 수행할 수 있다.
리클러스터링은 액세스 주소에 대해 기설정한 횟수(예를 들어 N번, N은 2이상의 자연수)로 해당 동작(예를 들어 라이트 동작)을 반복하여 메트릭 정보를 새로 측정하고, 새로 측정된 메트릭 정보에 기초하여, 기설정된 표준편차 내 범위의 메트릭값을 갖는 연속적인 워드라인들끼리 하나의 그룹으로 구분하는 동작을 말한다. 특성 테이블(330)은 리클러스터링 결과 수정된 그룹 정보 및 메트릭 정보를 업데이트 할 수 있다.
도 10은 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하는 흐름도이다.
도 10을 참조하면, 스토리지 컨트롤러(210)은 액세스할 워드라인 정보를 수신하면(S40), 피드백 모듈(340)은 특성 테이블(330)로부터 워드라인별 학습된 특성 정보, 예를 들어 학습된 메트릭 정보(P)를 추출한다(S41). 비휘발성 메모리 장치(220)는 상기 워드라인에 대해 라이트 동작을 수행하고, 피드백 모듈(340)은 비휘발성 메모리 장치(220)로부터 회신되는 ACK1 정보로부터 실제 특성 정보, 예를 들어 실제 메트릭 정보(G)를 추출한다(S42). 피드백 모듈(340)은 특성 테이블(330)에 저장된 학습된 메트릭 정보(G)와 실제 메트릭 정보(G)를 비교하여 기설정된 임계치를 초과한 차이가 나면(S43), 상기 워드라인에 대한 리클러스터링을 수행한다(S44). 리클러스터링에 대해서는 도 13 이하에서 상세히 설명한다.
리클러스터링 결과, 피드백 모듈(340)은 특성 테이블(330)의 그룹 정보 및 실제 메트릭 정보(G)를 업데이트하여 저장한다(S45).
도 11은 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하는 흐름도이다.
도 10을 참조하면, 스토리지 컨트롤러(210)은 액세스할 워드라인 정보를 수신하면(S50), 피드백 모듈(340)은 도 9와 달리 상기 워드라인에 대한 P/E 사이클이 기설정된 임계횟수(CTH)에 도달했는지 확인한다(S51). 만약 상기 워드라인에 대한 P/E 사이클이 기설정된 임계횟수를 초과한 경우, 피드백 모듈(340)은 특성 테이블(330)로부터 워드라인별 학습된 특성 정보, 예를 들어 학습된 메트릭 정보(P)를 추출한다(S52). 비휘발성 메모리 장치(220)는 상기 워드라인에 대해 라이트 동작을 수행하고, 피드백 모듈(340)은 비휘발성 메모리 장치(220)로부터 회신되는 ACK1 정보로부터 실제 특성 정보, 예를 들어 실제 메트릭 정보(G)를 추출한다(S53).
피드백 모듈(340)은 상기 워드라인에 대한 리클러스터링을 수행한다(S54). 리클러스터링에 대해서는 도 13 이하에서 상세히 설명한다. 리클러스터링 결과, 피드백 모듈(340)은 특성 테이블(330)의 그룹 정보 및 실제 메트릭 정보(G)를 업데이트하여 저장한다(S55).
도 12는 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하는 흐름도이다.
도 12를 참조하면, 스토리지 컨트롤러(210)은 액세스할 워드라인 정보를 수신하면(S60), 피드백 모듈(340)은 도 9와 달리 상기 워드라인에 대한 P/E 사이클이 기설정된 임계횟수(CTH)에 도달했는지 확인한다(S61). 만약 상기 워드라인에 대한 P/E 사이클이 기설정된 임계횟수를 초과한 경우, 피드백 모듈(340)은 특성 테이블(330)로부터 워드라인별 학습된 특성 정보, 예를 들어 학습된 메트릭 정보(P)를 추출한다(S62). 비휘발성 메모리 장치(220)는 상기 워드라인에 대해 라이트 동작을 수행하고, 피드백 모듈(340)은 비휘발성 메모리 장치(220)로부터 회신되는 ACK1 정보로부터 실제 특성 정보, 예를 들어 실제 메트릭 정보(G)를 추출한다(S63). 피드백 모듈(340)은 특성 테이블(330)에 저장된 학습된 메트릭 정보(G)와 실제 메트릭 정보(G)를 비교하여 기설정된 임계치보다 차이가 나면(S64), 상기 워드라인에 대한 리클러스터링을 수행하고(S65), 리클러스터링 결과, 특성 테이블(330)의 그룹 정보 및 실제 메트릭 정보(G)를 업데이트하여 저장한다(S66). 리클러스터링에 대해서는 도 13 이하에서 상세히 설명한다.
그러나 피드백 모듈(340)은 특성 테이블(330)에 저장된 학습된 메트릭 정보(G)와 실제 메트릭 정보(G)를 비교한 차이가 기설정된 임계치(TH) 이하면(S64), 특성 테이블(330)을 업데이트하지 않고 저장된 메트릭 정보를 유지한다(S67).
도 13은 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하기 위한 워드라인별 프로그램 시간을 나타낸 그래프이고, 도 14 및 도 15는 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하기 위한 개념도이다. 도 13 내지 도 15에서 x축은 하나의 블록에 포함된 복수의 워드라인 넘버로서, 좌측에서 우측으로 워드라인 넘버가 순차적으로 증가하고이고, y축은 각 워드라인의 프로그램 시간(tPROG)으로서 아래에서 위쪽으로 프로그램 시간이 순차적으로 증가하는 것을 나타낸 것이다.
도 13을 참고하면, 하나의 블록에 포함된 워드라인이라고 해도, 블록 내 워드라인 위치에 따라 프로그램 시간이 상이하다. 예를 들면 G1 영역 워드라인들의 프로그램 시간(tPROG)은 G4 영역 워드라인들의 프로그램 시간과 큰 차이를 갖는다. G1 영역의 워드라인 프로그램 시간은 G4 영역의 워드라인 프로그램 시간보다 길 수 있고, 예를 들어 G1 영역의 프로그램 시간은 해당 블록에 포함된 워드라인들의 프로그램 시간 중 최대치에 가까운 일정 범위(tPROG M1 ~ tPROG M2)의 프로그램 시간을 가질 수 있다. 이러한 영역별(예를 들어 G1 내지 G6 영역) 프로그램 시간은 G1 내지 G6 영역은 메모리 액세스 동작으로 각각 활성화된 횟수, 예를 들어 P/E 사이클이 다르거나 공정상 이유로 인해 서로 다른 프로그램 시간(예를 들어 평균 프로그램 시간)을 가질 수 있다.
스토리지 시스템(10)은 프로그램 속도가 가장 느린 구간, 즉 평균 프로그램 시간이 가장 긴 구간(예를 들면 G1 영역)을 기준으로, 비휘발성 메모리 장치(220)로 전송하기 전의 데이터를 저장하기 위해 버퍼 메모리의를 일부 영역을 할당한다.
예를 들어 도 14와 같이 스토리지 컨트롤러(210)가 하나의 블록(BLK1) 내 데이터를 워드라인에 따라 버퍼 메모리를 선형적으로(Linear) 할당하게 되면, 버퍼 메모리(216)로부터 비휘발성 메모리 장치(220)로의 데이터 전송은 프로그램 시간이 느린 구간(WL1~3 영역)의 제약을 받게 된다. 제약을 완화하기 위해 데이터 할당은 G1 영역 및 G2 영역과 같이 프로그램 시간이 느린 구간에 맞추어야 되므로 데이터가 저장되는 버퍼 메모리 사이즈가 늘어나게 된다.
따라서, 도 10, 도 11, 도 12에서 워드라인별 메트릭 특성에 따라 리클러스터링을 수행할 때(S44, S54, S65) 그룹 각각의 성능이 서로 유사하도록 클러스터링을 수행할 수 있다.
몇몇 실시예에 따라 도 15와 같이 블록 각각의 워드라인별 프로그램 시간을 측정하여, 프로그램 시간이 유사하고 연속적인 그룹을 구성하여 라이트 동작을 수행하면, 버퍼 메모리 사이즈의 증가없이 프로그램 시간 제한을 완화할 수 있다.
몇몇 실시예에 따라 프로그램 시간이 유사하고, 물리적으로 주소가 연속적인 워드라인들끼리 그룹으로 클러스터링할 수 있고, 클러스터링된 그룹으로 비휘발성 메모리 장치에 액세스하여 라이트 동작을 수행할 수 있다. 스토리지 컨트롤러(210)는 그룹들끼리 성능이 거의 비슷하도록 클러스터링할 수 있고, 라이트 동작시 버퍼 메모리 사이즈를 추가하지 않아도 프로그램 시간의 제약없이 동작할 수 있다.
클러스터링된 제1 블록(BLK L)의 제1 영역(G1)을 제2 영역(G4)과 제1 그룹으로 묶어서 비휘발성 메모리 장치(220)에 액세스할 수 있다. 예를 들어, 도 15에서 제1 영역(G1)과 제2 영역(G4)은 그룹 간 거리(groupd distance)가 3일 수 있다(G4-G1).
제1 블록(BLK L)의 G1 영역은 프로그램 속도가 느리고 제1 블록(BLK M)의 G4 영역의 프로그램 속도가 빠른 경우, 제1그룹은 제1 블록(BLK L)의 G1 영역과 제1 블록(BLK M)의 G4 영역을 포함하도록 클러스터링하고, 제2 그룹은 제1 블록(BLK L)의 G2 영역과 제2 블록(BLK M)의 G5 영역을 포함하도록 클러스터링할 수 있다. 즉, 스토리지 컨트롤러는 그룹 각각이 성능이 서로 유사하도록 워드라인들을 클러스터링하여 액세스하면, 도 14의 프로그램 시간 그래프 대비 도 15의 프로그램 시간 그래프와 같이, 큰 폭의 변화없이 안정적으로 동작하는 프로그램 시간을 가질 수 있고, 이에 따라 버퍼 메모리(216)와 비휘발성 메모리 장치(220) 간 안정적인 동작이 가능하다.
도 16은 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하기 위한 개념도이다.
도시된 예에서 워드라인 WL0, WL1, WL2, WL3, WL4, WL5, WL6은 연속적으로 배치된 워드라인들이다. 스토리지 컨트롤러(210)가 워드라인 별 실제 메트릭 정보(P)를 기초로 리클러스터링을 수행하여 그룹을 재설정하였는데, 워드라인 WL0, WL1, WL2, WL4는 A그룹, WL3, WL5, WL6은 B그룹으로 클러스터링될 수 있다. 비휘발성 메모리 장치(220)는 물리적으로 연속적인 주소로 액세스해야하는데, 초기 리클러스터링과 같이 하나의 워드라인(WL3, WL4)만 비연속으로 액세스하여 동작할 수 없다. 이와 같이 리클러스터링 후 비연속적인 워드라인이 하나의 그룹에 포함된 경우, 스왑(Swap)을 통해 리클러스터링을 수정할 수 있다.
도시된 예에서 리클러스터링 결과 워드라인 WL3과 워드라인 WL4가 B그룹과 A그룹으로 순서가 결정된 경우, 물리적 주소가 연속되도록 워드라인 WL3은 A그룹으로 워드라인 WL4는 B그룹으로 그룹을 바꿔줄(swap) 수 있다.
도 17은 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하기 위한 워드라인별 프로그램 시간을 나타낸 그래프이다. 도 17에서 x축은 하나의 블록에 포함된 복수의 워드라인 넘버로서, 좌측에서 우측으로 워드라인 넘버가 순차적으로 증가하고, y축은 각 워드라인의 프로그램 시간(tPROG)으로서 아래에서 위쪽으로 프로그램 시간이 순차적으로 증가하는 것을 나타낸 것이다.
도 17을 참조하면, 스토리지 컨트롤러는 연속적인 워드라인이 유사한 메트릭값(예를 들어 프로그램 시간)을 가지는 경우 그룹으로 클러스터링 할 수 있으나, 연속적인 워드라인이라고 하더라도 특정 워드라인은 인접한 다른 워드라인과 메트릭값이 많이 상이한 아웃라이어(outlier)가 포함될 수 있다. 예를 들어 그룹 G3의 경우 O1, 그룹 G4의 O2, 그룹 G5의 O3는 아웃라이어 프로그램 시간을 가질 수 있다.
스토리지 컨트롤러(210)는 리클러스터링 동작시 아웃라이어를 제외하여 성능이 유사하도록 그룹을 설정할 수 있다. 몇몇 실시예에 따라 스토리지 컨트롤러(210)는 기설정된 개수(예를 들어 j 개, j는 3이상의 자연수)의 워드라인에 대한 평균 메트릭값(예를 들어 프로그램 시간)과 각 워드라인의 메트릭값을 비교하여 아웃라이어를 검출할 수 있다. 몇몇 실시예에 따라 아웃라이어를 가진 워드라인은 인접한 워드라인들의 평균 메트릭값으로 재설정하여 그룹이 재설정될 수 있다.
도 18은 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하기 위한 개념도이다.
도 18을 참조하면, 스토리지 컨트롤러(210)는 비휘발성 메모리 장치(220)에 라이트 동작을 수행시 클러스터링된 그룹 단위로 동작을 수행할 수 있다. 도시된 예에서, 제1 블록(BLK L)의 G4, G5, G6 영역은 제2 블록(BLK M)의 G3, G4, G5 영역에 인터리빙되어 라이트되고, 제2 블록(BLK M)의 G3, G4, G5 영역은 제3 블록(BLK N)의 G2, G3, G4영역에 라이트되는 것과 같이 순차적이 아닌, 그룹별 교차 라이팅 동작을 수행하면, 균일한 성능으로 QoS를 향상시킬 수 있다.
또한 스토리지 컨트롤러(210)는 비휘발성 메모리 장치(220)의 동작환경에 따라 변경되는 특성 정보를 피드백을 통해 적응적으로 반영하여 리클러스터링을 수행함으로써, 버퍼 메모리 또한 최대 버퍼사용량을 최소로 사용할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
10: 호스트-스토리지 시스템 100 : 호스트
200: 스토리지 장치 210 : 스토리지 컨트롤러
220: 비휘발성 메모리 장치 300 : 미티게이터

Claims (20)

  1. 메모리 셀 어레이를 포함하는 비휘발성 메모리 장치;
    호스트로부터 라이트 명령 및 데이터를 수신하여 상기 메모리 셀 어레이에 상기 데이터를 라이트하도록 상기 비휘발성 메모리 장치를 제어하는 스토리지 컨트롤러를 포함하고,
    상기 스토리지 컨트롤러는
    상기 메모리 셀 어레이 중 상기 데이터를 라이트할 메모리 영역을 확인하고,
    상기 메모리 영역에 속한 복수의 워드라인별 특성 정보에 기초하여 복수의 그룹으로 구분하고,
    상기 특성 정보에 따라 그룹 단위로 액세스 순서를 재정렬하고,
    상기 재정렬된 순서로 액세스 하여 상기 데이터를 상기 메모리 영역에 라이트 동작을 수행하고,
    상기 비휘발성 메모리 장치는 상기 라이트 동작이 완료되면 Ack 정보를 상기 스토리지 컨트롤러로 출력하고,
    상기 스토리지 컨트롤러는 상기 Ack 정보에 기초하여 상기 특성 정보를 업데이트하는, 스토리지 시스템.
  2. 제1항에 있어서, 상기 워드라인별 특성 정보는
    상기 워드라인의 메트릭 정보가 그룹으로 구분되어, 특성 테이블에 저장된 것인, 스토리지 시스템.
  3. 제2항에 있어서, 상기 비휘발성 메모리 장치는 액세스 주소에서 실제 라이트 동작으로 소요된 프로그램 시간을 포함하는 상기 Ack 정보를 상기 스토리지 컨트롤러로 출력하고,
    상기 스토리지 컨트롤러는 상기 Ack 정보로부터 실제 프로그램 시간을 추출하는, 스토리지 시스템.
  4. 복수의 워드라인에 연결된 메모리 셀 어레이를 포함하는 비휘발성 메모리 장치; 및
    호스트로부터 라이트 명령 및 데이터를 수신하여, 상기 데이터를 라이트할 메모리 영역에 속한 워드라인의 액세스 순서를 그룹 단위로 재정렬하고, 재정렬된 그룹 순서로 워드라인 주소를 출력하는 미티게이터를 포함하여, 상기 데이터를 라이트하도록 제어하는 스토리지 컨트롤러를 포함하고,
    상기 미티게이터는
    상기 복수의 워드라인 각각에 대한 메트릭 정보 및 그룹 정보를 저장하는 특성 테이블;
    상기 특성 테이블로부터 상기 메모리 영역의 워드라인에 상응하는 메트릭 정보 및 그룹 정보를 선택하고, 상기 메트릭 정보에 따라 상기 메모리 영역의 워드라인에 대한 액세스 순서를 상기 그룹 단위로 재정렬하는 블록 선택부; 및
    상기 재정렬된 액세스 순서의 주소를 상기 비휘발성 메모리 장치로 발행하는 선택주소발행부를 포함하는, 스토리지 시스템.
  5. 제4항에 있어서, 상기 특성 테이블은
    상기 비휘발성 메모리 장치의 특성 정보를 학습한 후 저장된 워드라인별 메트릭 정보인, 스토리지 시스템.
  6. 제5항에 있어서, 상기 특성 정보는
    칩 위치 정보, 블록 위치 정보, 데이터 라이트 동작에 소요되는 프로그램 시간 정보, 리드 동작에 소요되는 리드 시간 정보, P/E(Program/Erase) 사이클, 공정 인덱스, 웨이퍼 크기 정보 중 적어도 하나의 메트릭 정보인, 스토리지 시스템.
  7. 제5항에 있어서, 상기 그룹 정보는
    상기 메모리 셀 어레이에 대한 상기 복수의 워드라인을 N개(N은 자연수)의 그룹으로 그룹핑한 정보로서, 각 워드라인이 속하는 그룹을 표시한 것인, 스토리지 시스템.
  8. 제4항에 있어서, 상기 그룹 단위로 구분되는 그룹은
    물리적 주소가 연속되면서도 메트릭값이 유사한 M개(M은 3이상의 자연수)의 워드라인을 포함하는, 스토리지 시스템.
  9. 제4항에 있어서, 상기 스토리지 컨트롤러는
    상기 비휘발성 메모리 장치의 라이트 동작 완료 후 ACK 정보를 수신하여 상기 액세스된 워드라인의 실제 메트릭 정보를 피드백 정보로 하여 상기 특성 테이블을 업데이트하는 피드백 모듈을 더 포함하는, 스토리지 시스템.
  10. 제9항에 있어서, 상기 피드백 모듈은
    상기 액세스된 워드라인에 대한 상기 저장된 메트릭 정보와 상기 실제 메트릭 정보의 차이값에 기초하여 상기 그룹 정보 및 상기 메트릭 정보에 대한 재학습을 수행하는 머신러닝 모델을 포함하는, 스토리지 시스템.
  11. 제10항에 있어서,
    상기 피드백 모듈은 상기 재학습 후 상기 액세스된 워드라인에 대한 상기 피드백 정보를 상기 특성 테이블로 출력하고,
    상기 특성 테이블은 상기 피드백 정보에 기초하여 상기 메트릭 정보 및 상기 그룹 정보를 업데이트하는, 스토리지 시스템.
  12. 제10항에 있어서, 상기 머신러닝 모델은
    기설정된 P/E사이클을 초과하면 리클러스터링을 수행하는, 스토리지 시스템.
  13. 제10항에 있어서, 상기 머신러닝 모델은
    상기 특성 테이블에 저장된 메트릭 정보와 상기 액세스된 워드라인의 실제 메트릭 정보의 차이값이 기설정된 임계치를 초과하면, 리클러스터링을 수행하는, 스토리지 시스템.
  14. 제12항 또는 제13항에 있어서, 상기 리클러스터링은
    상기 복수의 워드라인에 대해 기설정된 횟수로 라이트 동작을 반복하여 상기 메트릭 정보를 재측정하고, 상기 재측정된 메트릭 정보를 기초로 상기 복수의 워드라인을 그룹핑하여 상기 그룹 정보를 업데이트하는 것인, 스토리지 시스템.
  15. 호스트로부터 라이트 명령 및 데이터를 수신하고,
    상기 데이터를 라이트할 비휘발성 메모리 장치의 메모리 영역에 대한 워드라인에 상응하는 기저장된 메트릭 정보를 추출하고,
    상기 추출된 메트릭 정보에 기초하여 그룹 단위로 재정렬된 순서로 상기 메모리 영역에 액세스하여 상기 데이터를 라이트하고,
    상기 비휘발성 메모리 장치로부터 ACK 정보를 수신하면,
    상기 ACK 정보로부터 실제 메트릭 정보를 산출하여 상기 기저장된 메트릭 정보를 업데이트하는, 스토리지 컨트롤러의 동작방법.
  16. 제15항에 있어서,상기 메트릭 정보를 업데이트하는 것은
    상기 기저장된 메트릭 정보와 상기 실제 메트릭 정보의 차이가 기설정된 임계치를 초과하면, 머신러닝으로 복수의 워드라인에 대해 리클러스터링을 수행하는 것인, 스토리지 컨트롤러의 동작방법.
  17. 제15항에 있어서,상기 메트릭 정보를 업데이트하는 것은
    기설정된 P/E사이클을 초과하면, 머신러닝으로 복수의 워드라인에 대해 리클러스터링을 수행하는 것인, 스토리지 컨트롤러의 동작방법.
  18. 제17항에 있어서, 상기 리클러스터링은
    상기 복수의 워드라인에 대해 기설정된 횟수로 라이트 동작을 반복하여 상기 메트릭 정보를 재측정하고, 상기 재측정된 메트릭 정보를 기초로 상기 복수의 워드라인을 그룹핑하여 그룹 정보를 업데이트하는 것인, 스토리지 컨트롤러의 동작방법.
  19. 제15항에 있어서, 상기 그룹 단위는
    각각이 기설정된 표준편차 범위에 속하는 메트릭값을 가지고, 물리적으로 연속되는 k개의 워드라인(k는 3이상의 자연수)을 포함하는 것인, 스토리지 컨트롤러의 동작방법.
  20. 제19항에 있어서, 상기 그룹은
    상기 k개의 워드라인에 대한 평균 메트릭값과 상기 k 개의 워드라인 각각의 메트릭값과 비교하여, 상기 k개의 워드라인 중 아웃라이어를 가진 워드라인을 검출하고,
    상기 아웃라이어를 가진 워드라인은 인접한 워드라인의 평균 메트릭값으로 재설정하는, 스토리지 컨트롤러의 동작방법.
KR1020220049653A 2021-11-15 2022-04-21 스토리지 시스템 및 스토리지 컨트롤러의 동작방법 KR102571934B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US17/939,021 US20230154540A1 (en) 2021-11-15 2022-09-07 Storage system and operating method of storage controller
EP22198023.8A EP4181128A1 (en) 2021-11-15 2022-09-27 Storage system and operating method of storage controller
CN202211425651.6A CN116129968A (zh) 2021-11-15 2022-11-14 存储系统及存储控制器的操作方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020210156783 2021-11-15
KR20210156783 2021-11-15

Publications (2)

Publication Number Publication Date
KR20230071024A KR20230071024A (ko) 2023-05-23
KR102571934B1 true KR102571934B1 (ko) 2023-08-29

Family

ID=86544887

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220049653A KR102571934B1 (ko) 2021-11-15 2022-04-21 스토리지 시스템 및 스토리지 컨트롤러의 동작방법

Country Status (1)

Country Link
KR (1) KR102571934B1 (ko)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110078728A (ko) * 2009-12-31 2011-07-07 주식회사 하이닉스반도체 반도체 메모리 소자 및 이의 동작 방법
KR20170028152A (ko) * 2015-09-03 2017-03-13 에스케이하이닉스 주식회사 메모리 시스템 및 그 동작 방법
KR102406727B1 (ko) * 2015-12-16 2022-06-08 에스케이하이닉스 주식회사 반도체 메모리 장치 및 반도체 시스템
KR102395196B1 (ko) * 2017-10-17 2022-05-06 삼성전자주식회사 파라미터 교정 기능을 갖는 스토리지 장치 및 상기 스토리지 장치의 동작 방법
KR102533072B1 (ko) * 2018-08-13 2023-05-17 에스케이하이닉스 주식회사 블록의 상태에 따라 사용 여부를 결정하는 메모리 시스템 및 메모리 시스템의 동작 방법
US11221769B2 (en) * 2019-09-27 2022-01-11 Samsung Electronics Co., Ltd. Performing noise cancellation on a memory device using a neural network
KR20210066630A (ko) * 2019-11-28 2021-06-07 삼성전자주식회사 스토리지 장치, 및 상기 스토리지 장치의 동작 방법

Also Published As

Publication number Publication date
KR20230071024A (ko) 2023-05-23

Similar Documents

Publication Publication Date Title
US10102920B2 (en) Memory system with a weighted read retry table
WO2018004746A1 (en) Systems and methods for optimizing media read times
CN106971754B (zh) 非易失性存储器设备、包括其的存储装置和操作其的方法
US11715516B2 (en) Nonvolatile memory device including a fast read page and a storage device including the same
US10902928B2 (en) Memory system, operation method thereof, and nonvolatile memory device
US20210334000A1 (en) Memory system, memory controller and memory device for configuring super blocks
US20220350539A1 (en) Dynamic memory address write policy translation based on performance needs
KR20200072139A (ko) 메모리 시스템 및 그것의 동작방법
US11321170B2 (en) Memory system, memory controller, and method for operating memory system
CN112099730A (zh) 存储器件及其访问方法
US20230068702A1 (en) On-die cross-temperature management for a memory device
US11961561B2 (en) Memory device and method of operating the same
US11726871B2 (en) Storage controller for selecting a gear level of a storage device and storage system including the same
KR102571934B1 (ko) 스토리지 시스템 및 스토리지 컨트롤러의 동작방법
US11462281B1 (en) Intervallic dynamic start voltage and program verify sampling in a memory sub-system
EP4181128A1 (en) Storage system and operating method of storage controller
US20240029801A1 (en) Memory read calibration based on memory device-originated metrics characterizing voltage distributions
US20240161836A1 (en) Memory read voltage threshold tracking based on memory device-originated metrics characterizing voltage distributions
EP3783614B1 (en) Nonvolatile memory device including a fast read page and a storage device including the same
US20230326532A1 (en) Faster multi-cell read operation using reverse read calibrations
US11923014B2 (en) Memory system compensating for performance deterioration of a memory device
US11688465B2 (en) Memory system having memory controller
US20240231642A1 (en) Self-optimizing corrective read offsets with lateral charge migration proxies
CN112542201B (zh) 存储设备及操作该存储设备的方法
US20230359388A1 (en) Memory read calibration based on memory device-originated metadata characterizing voltage distributions

Legal Events

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