KR20210152385A - 메모리 장치 및 이의 동작 방법 - Google Patents

메모리 장치 및 이의 동작 방법 Download PDF

Info

Publication number
KR20210152385A
KR20210152385A KR1020210062163A KR20210062163A KR20210152385A KR 20210152385 A KR20210152385 A KR 20210152385A KR 1020210062163 A KR1020210062163 A KR 1020210062163A KR 20210062163 A KR20210062163 A KR 20210062163A KR 20210152385 A KR20210152385 A KR 20210152385A
Authority
KR
South Korea
Prior art keywords
memory
parameters
embedding
network
memory cells
Prior art date
Application number
KR1020210062163A
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 삼성전자주식회사
Publication of KR20210152385A publication Critical patent/KR20210152385A/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
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/54Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/30Power supply circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • General Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Neurology (AREA)
  • Computer Hardware Design (AREA)
  • Probability & Statistics with Applications (AREA)
  • Read Only Memory (AREA)

Abstract

본 개시의 기술적 사상에 따른 메모리 장치의 동작 방법은, 신경망을 이용하여 복수의 임베딩 파라미터를 기초로 정보 비트들의 세트를 하나 이상의 메모리 셀에 프로그래밍하는 단계, 상기 복수의 임베딩 파라미터와 함께 학습되는 복수의 네트워크 파라미터를 포함하는 신경망을 이용하여 상기 하나 이상의 메모리 셀의 전압 레벨을 기초로 예측된 정보 비트들의 세트를 결정하는 단계 및 상기 예측된 정보 비트들의 세트를 기초로 상기 메모리 장치로부터 상기 정보 비트들을 독출하는 단계를 포함할 수 있다.

Description

메모리 장치 및 이의 동작 방법 {MEMORY DEVICE AND METHOD OF OPERATING MEMORY DEVICE}
본 개시의 기술적 사상은 메모리 장치 및 이의 동작 방법에 관한 것으로서, 구체적으로 프로그램 전압을 선택하는 메모리 장치 및 이의 동작 방법에 관한 것이다.
메모리 장치는 일반적으로 데이터를 저장하기 위한 전자 장치에 사용된다. NAND 플래시 메모리 장치들은 각 메모리 셀에 여러 비트들의 데이터가 저장되는 것을 허용하고, 제조 비용 및 성능의 향상을 제공한다. 복수의 비트들의 데이터가 저장되는 메모리 셀은 멀티-레벨 메모리 셀로 지칭될 수 있다. 멀티-레벨 메모리 셀은 메모리 셀의 임계 전압 범위를 복수의 전압 상태들로 분할할 수 있고, 메모리 셀에 기입된 데이터 값들은 메모리 셀 전압 레벨들을 이용하여 추출될 수 있다.
메모리 셀들을 프로그램하기 위해 이용되는 전압 레벨들은 이론적 검토를 기초로 수동적으로 결정될 수 있다. 그러나, 전압 레벨들의 수동적 선택은 독출 오류들을 최소화하기 위한 최적의 전압 레벨들을 제공할 수 없다. 따라서, 본 기술 분야에서는 메모리 셀들에 데이터를 프로그램하기 위한 전압 레벨들을 결정하는 향상된 시스템에 대한 요구가 있다.
본 개시의 기술적 사상은 프로그램 전압을 선택하는 메모리 장치 및 이의 동작 방법을 제공한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 메모리 장치의 동작 방법은, 신경망을 이용하여 복수의 임베딩 파라미터를 기초로 정보 비트들의 세트를 하나 이상의 메모리 셀에 프로그래밍하는 단계, 상기 복수의 임베딩 파라미터와 함께 학습되는 복수의 네트워크 파라미터를 포함하는 신경망을 이용하여 상기 하나 이상의 메모리 셀의 전압 레벨을 기초로 예측된 정보 비트들의 세트를 결정하는 단계 및 상기 예측된 정보 비트들의 세트를 기초로 상기 메모리 장치로부터 상기 정보 비트들을 독출하는 단계를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 메모리 장치의 인공 신경망의 학습 방법은, 복수의 임베딩 파라미터 및 복수의 네트워크 파라미터를 초기화하는 단계, 상기 복수의 임베딩 파라미터를 기초로 정보 비트들의 세트를 하나 이상의 메모리 셀의 전압 레벨에 매핑하는 단계, 상기 복수의 네트워크 파라미터를 기초로 인공 신경망을 이용하여 예측된 정보 비트들의 세트를 확인하는 단계 및 상기 예측된 정보 비트들의 세트의 적어도 일부를 기초로 상기 복수의 임베딩 파라미터 및 상기 복수의 네트워크 파라미터를 업데이트하는 단계를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 메모리 장치는, 복수의 메모리 셀, 복수의 임베딩 파라미터를 기초로 하는 임베딩 레이어를 포함하는 프로그래밍 구성 요소 및 복수의 네트워크 파라미터를 기초로 하는 신경망을 포함하는 독출 구성 요소를 포함하고, 상기 복수의 네트워크 파라미터는 상기 복수의 임베딩 파라미터와 함께 학습된다.
본 개시의 예시적 실시예에 따른 메모리 장치 및 이의 동작 방법에 의하면, 신경망을 이용하여 최적화된 프로그램 전압을 선택할 수 있다.
도 1은 본 개시의 예시적 실시예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템을 나타내는 도면이다.
도 2는 도 1의 메모리 시스템의 예시적 실시예를 나타내는 도면이다.
도 3은 도 1의 비휘발성 메모리 장치의 예시적 실시예를 나타내는 도면이다.
도 4는 도 3의 메모리 셀 어레이의 예시적 실시예를 나타내는 도면이다.
도 5는 도 4의 메모리 셀 어레이의 메모리 블록의 예시적 실시예를 나타내는 도면이다.
도 6은 본 개시의 예시적 실시예에 따른 전압 레벨 성상도를 나타내는 도면이다.
도 7은 본 개시의 예시적 실시예에 따른 학습 기반 메모리 시스템을 나타내는 도면이다.
도 8은 본 개시의 예시적 실시예에 따른 프로그램 네트워크를 나타내는 도면이다.
도 9는 본 개시의 예시적 실시예에 따른 독출 네트워크를 나타내는 도면이다.
도 10은 본 개시의 예시적 실시예에 따른 메모리 장치의 동작을 위한 프로세스를 나타내는 도면이다.
도 11은 본 개시의 예시적 실시예에 따른 메모리 장치에 대한 정보의 프로그램을 위한 프로세스를 나타내는 도면이다.
도 12는 본 개시의 예시적 실시예에 따른 메모리 장치의 프로그램 전압들을 선택하는 인공 신경망의 학습을 위한 프로세스를 나타내는 도면이다.
본 개시는 메모리 장치에 대한 데이터 프로그램 및 독출을 위한 방법 및 시스템에 대한 것으로서, 구체적으로, 메모리 장치의 프로그램 전압들의 선택에 관한 것이다. 본 개시의 특정 실시예들은, 구체적으로, 각 메모리 셀에 5 또는 6비트의 데이터를 저장할 수 있는 NAND 플래시 메모리 장치에 관한 것이다.
메모리 장치는 일반적으로 데이터를 저장하기 위한 전자 장치에 사용된다. NAND 플래시 메모리 장치들은 각 메모리 셀에 여러 비트들의 데이터가 저장되는 것을 허용하고, 제조 비용 및 성능의 향상을 제공한다. 복수의 비트들의 데이터가 저장되는 메모리 셀은 멀티-레벨 메모리 셀로 지칭될 수 있다. 멀티-레벨 메모리 셀은 메모리 셀의 임계 전압 범위를 복수의 전압 단계들로 분할할 수 있고, 메모리 셀에 기입된 데이터 값들은 메모리 셀 전압 레벨들을 이용하여 추출될 수 있다.
메모리 장치로부터 정보를 독출하기 위해 각 셀의 전압이 측정되고, 해당 셀에 저장된 전압 레벨이 추론될 수 있다. 그리고 비트들이 복구될 수 있다. 전압 레벨들의 개수와 메모리 신뢰성 사이에는 트레이드 오프(trade-off)가 존재할 수 있다. 셀 당 비트 수가 클수록, 각 셀에 더 많은 비트들이 존재하는 메모리 장치에 더 많은 정보가 저장될 수 있다. 또는, 동일한 동적 범위 내에서 더 많은 수의 구별 가능한 전압들이 이용될 수 있으므로, 서로 다른 레벨들을 나타내는 전압들이 더욱 촘촘하게 채워질 수 있다. 결과적으로, 셀 프로그래밍 또는 셀 독출에서의 노이즈는 특정 레벨의 전압을 다른 레벨을 나타내는 다른 전압으로 변경시킬 가능성이 더 크므로, 셀 독출 시에 오류를 발생시킬 수 있다.
메모리 장치에는 기입 노이즈, 간섭 노이즈, 노화, 독출 동작과 같이 잘못된 정보의 독출을 유발할 수 있는 다양한 노이즈 발생원들이 존재할 수 있다. 기입 노이즈는 프로그래밍 절차로 인해 의도된 전압과는 다른, 프로그램 직후의 셀의 전압을 의미한다. 간섭 노이즈는 서로 다른 인접 셀의 프로그래밍의 결과로 인해 변화하는 셀의 전압의 함수를 의미한다. 셀들에 대한 프로그래밍은 다른 셀들에 영향을 미치는 교란을 유발시킬 수 있다. 노화는 장치에 기입하고 독출하는 횟수가 많을수록 더욱 증가하는 것의 의미할 수 있다. 또한, 셀의 프로그래밍 간의 시간이 길수록, 셀의 노이즈가 더 많이 생성될 수 있다. 또한, 셀의 독출 동작은 노이즈 및 교란들을 유발할 수 있다.
메모리 장치는 채널이라고 할 수 있다. 기입 및/또는 전송 동작이 채널로 채널로 이동하거나, 채널을 통해 이동할 수 있으므로 채널이라는 용어가 사용될 수 있다.
메모리 프로그래밍은 메모리 셀에 대한 전압의 인가를 기초로 하는 복잡한 프로세스이다. 그러나 셀 전압은 현재 전압 레벨, 펄스 파워 및 셀 간 간섭들과 같은 변수들에 의해 영향을 받을 수 있다. 셀 전압은 억제된 셀 분할, 워드라인 간 커플링 및 셀 유지에 의해 영향 받을 수도 있다. 또한, NAND 장치에 기입한 결과는 확률적일 수 있다. 예를 들어, 데이터에 노이즈가 많아, 관측에 문제가 발생할 수 있다.
프로그래밍 전압들을 선택하는 종래의 접근 방식들은 시행 착오와 같은 수동 최적화 기술들을 사용한다. 이와 같은 수동 프로세스는 최적의 성능을 제공하지 못하며, 통계 데이터를 통합할 수 없다. 또한, 목표 전압과 같은 성공 지표들은 특정 적용들에 대해 생성될 수 있으며, 여러 적용들에는 적합하지 않을 수 있다. 또한, 수동 최적화는 리소스 집약적일 수 있고, 다른 지표가 더 빠르고 효율적으로 작동할 수 있도록 다양한 지표들을 손상시킬 수 있다.
따라서, 본 개시의 시스템 및 방법은 셀의 개선된 프로그램 전압들을 찾는 데에 이용될 수 있다. 셀의 프로그램 전압들을 찾는 특정 방법들은 학습 기반 메모리 시스템을 이용할 수 있다. 학습 기반 메모리 시스템은 프로그램 네트워크, NAND 메모리(또는 NAND 채널) 및 독출 네트워크를 포함할 수 있다. NAND 메모리는 복수의 서로 다른 전압 레벨들을 이용하여 프로그램되는 복수의 메모리 셀들을 포함할 수 있다.
본 개시의 실시예는 플래시 메모리 컨트롤러에서 이용될 수 있다. 또한, 본 개시는 비트오류율(bit-error-rate) 측면에서 현재의 수동 최적화 프로세스를 능가할 수 있고, 수동 최적화 프로세스에 비해 빠른 개발의 장점이 있다.
본 개시는 셀 당 비트 수 N과 셀 개수 K를 고려하여, 변조를 위해 최적화된 성상도를 찾는 방법을 설명한다. 이 방법은 자동으로 수행될 수 있으며, 실제 NAND 채널로부터의 데이터를 사용하여 데이터를 구동할 수 있으므로, 채널에 특별히 적합한 성상도를 찾을 수 있다. 본 개시의 실시예들은 주어진 셀 당 비트 수에 대해 독출 시, 적은 수의 오류들을 생성하는 성상도를 찾을 수 있다.
본 개시는 상기 성상도를 찾기 위해 머신 러닝을 이용할 수 있다. 학습 프로세스는 특정 NAND 칩 사례가 아닌 제품 개발 중에 오프라인으로 수행될 수 있다. 학습 프로세스 결과들은 유사한 사양의 모든 사례들의 NAND 칩들에 적용할 수 있다.
머신 러닝 설정은 프로그램 네트워크 모듈, 독출 네트워크 및 NAND 채널로 구성될 수 있다. 프로그램 네트워크는 레벨을 입력으로 취하고, 상기 레벨에 대한 전압 시퀀스를 반환할 수 있다. 프로그램 네트워크는 성상도에 의해 수행되는 매핑이다. 프로그램 네트워크는 전압들의 지속적인 최적화를 가능하게 한다. 독출 네트워크는 메모리 셀들의 감지된 전압 레벨들을 기초로 기존의 정보를 예측할 수 있다.
이하에서는, 첨부된 도면을 참조하여 본 개시의 실시예를 보다 상세하게 설명한다. 동일한 참조 번호들은 첨부된 도면들에 걸쳐 동일한 요소를 지칭할 수 있다.
본 개시에서, "제1", "제2", "제3" 등의 용어는 하나의 구성 요소를 다른 구성 요소와 구별하기 위해 사용되나, 본 개시는 이에 제한되지 않는다. 따라서, 예시적 실시예에서 "제1" 구성 요소는 다른 예시적 실시예에서 "제2"구성 요소로 설명될 수 있다.
달리 명시하지 않는 한, 각각의 예시적 실시예 내의 특징 또는 측면의 설명들은 일반적으로 다른 예시적 실시예의 다른 유사한 특징 또는 측면에 대해 이용 가능한 것으로 간주될 수 있다.
본 개시에서 사용된 바와 같이, 단수의 표현은 달리 명시하지 않는 한, 복수의 표현도 포함하도록 의도될 수 있다.
여기서, 하나의 값이 다른 값과 거의 같거나 다른 값과 실질적으로 동일하거나 같다고 설명하는 경우, 측정 오차 내에서 값들이 서로 같거나, 또는 측정 가능하게 동일하지 않는다면 당업자에 의해 이해되는 바와 같이 서로 기능적으로 동일할 정도로 값들이 충분히 가까운 것으로 이해될 수 있다. 예를 들어, 본 개시에 사용된 용어 "약"은 언급된 값을 포함하고, 문제의 측정과 특정 수량의 측정과 관련된 오류(즉, 측정 시스템의 한계)를 고려하여 당업자에 의해 결정된 특정 값에 대한 허용 가능한 편차 범위 내를 의미할 수 있다. 예를 들어, "약"은 당업자에 의해 이해되는 하나 이상의 표준 편차 이내를 의미할 수 있다. 또한, 파라미터들이 본 개시에서 "약" 특정 값을 갖는 것으로 설명될 수 있으나, 예시적 실시예에 따르면, 파라미터는 당업자에 의해 이해되는 바와 같이 측정 오차 내의 특정 값 또는 대략적인 특정 값일 수 있다.
예시적인 메모리 시스템
도 1은 본 개시의 예시적 실시예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템을 나타내는 도면이다.
도 1을 참조하면, 데이터 처리 시스템(10)은 호스트(100) 및 메모리 시스템(200)을 포함할 수 있다. 도 1에 도시된 메모리 시스템(200)은 데이터 처리 기능을 포함하는 다양한 시스템에서 활용될 수 있다. 다양한 시스템은, 예를 들어, 스마트폰, 태블릿 컴퓨터와 같은 모바일 장치를 포함하는 다양한 장치일 수 있다. 그러나 다양한 장치들의 종류가 이에 한정되는 것은 아니다.
메모리 시스템(200)은 다양한 종류의 메모리 장치들을 포함할 수 있다. 여기서, 본 개시의 실시예들은 비휘발성 메모리인 메모리 장치를 포함하는 것으로 설명한다. 그러나 실시예들이 이에 한정되는 것은 아니다. 예를 들어, 메모리 시스템(200)은 휘발성 메모리인 메모리 장치를 포함할 수 있다.
예시적인 실시예에 따르면, 메모리 시스템(200)은, 예를 들어, ROM(read-only memory), 자기 디스크, 광 디스크, 플래시 메모리 등과 같은 비휘발성 메모리 장치를 포함할 수 있다. 플래시 메모리는 MOSFET(Metal-Oxide-Semiconductor Field Effect Transistor)의 문턱 전압 변화에 따른 데이터를 저장하는 메모리로, 예를 들어, NAND 및 NOR 플래시 메모리를 포함할 수 있다. 메모리 시스템(200)은, 예를 들어, 임베디드 멀티미디어 카드(eMMC), 시큐어 디지털(SD) 카드, 마이크로 SD 카드 또는 범용 플래시 스토리지(UFS)와 같은 비휘발성 메모리 장치를 포함하는 메모리 카드를 사용하여 구현될 수 있다. 또는, 메모리 시스템(200)은, 예를 들어, 비휘발성 메모리 장치를 포함하는 SSD를 사용하여 구현될 수 있다. 여기서, 메모리 시스템(200)의 구성 및 동작은 메모리 시스템(200)이 비휘발성 메모리 시스템인 것으로 가정하여 설명한다. 그러나, 메모리 시스템(200)은 이에 제한되지 않는다. 호스트(100)는 예를 들어, 모바일 장치에 탑재된 SoC(system-on-chip) AP (application processor) 또는 컴퓨터 시스템에 포함된 중앙 처리 장치(CPU)를 포함할 수 있다.
전술한 바와 같이, 호스트(100)는 AP (110)를 포함할 수 있다. AP(110)는 다양한 IP(Intellectual Property) 블록을 포함할 수 있다. 예를 들어, AP(110)는 메모리 시스템(200)을 제어하는 메모리 장치 드라이버(111)를 포함할 수 있다. 호스트(100)는 메모리 시스템(200)과 통신하여 메모리 동작과 관련된 커맨드를 전송하고 전송된 커맨드에 응답하여 확인 커맨드를 수신할 수 있다. 호스트(100)는 또한 메모리 동작과 관련된 정보 테이블(예를 들어, INFO_TABLE)과 관련하여 메모리 시스템(200)과 통신할 수 있다.
메모리 시스템(200)은, 예를 들어, 메모리 컨트롤러(210) 및 메모리 장치(220)를 포함할 수 있다. 메모리 컨트롤러(210)는 호스트(100)로부터 메모리 동작과 관련된 커맨드를 수신하고, 수신한 커맨드를 이용하여 내부 커맨드 및 내부 클럭 신호를 생성하고, 메모리 장치(220)에 내부 커맨드 및 내부 클럭 신호를 제공할 수 있다. 메모리 장치(220)는 내부 커맨드에 응답하여 메모리 셀 어레이에 기입 데이터를 저장하거나, 내부 커맨드에 응답하여 메모리 컨트롤러(210)에 독출 데이터를 제공할 수 있다.
메모리 장치(220)는 메모리 장치(220)의 전원이 켜지지 않더라도 내부에 저장된 데이터를 유지하는 메모리 셀 어레이를 포함할 수 있다. 메모리 셀 어레이는 메모리 셀들로서, 예를 들어, NAND 또는 NOR 플래시 메모리, 자기 저항성 랜덤 액세스 메모리(MRAM), 저항성 랜덤 액세스 메모리(RRAM), 강유전체 액세스 메모리 (FRAM), 또는 상변화 메모리(PCM)를 포함할 수 있다. 예를 들어, 메모리 셀 어레이가 낸드 플래시 메모리를 포함하는 경우, 메모리 셀 어레이는 복수의 블록과 복수의 페이지를 포함할 수 있다. 데이터는 페이지 단위로 프로그래밍되고 독출될 수 있으며, 데이터는 블록 단위로 소거될 수 있다. 메모리 셀 어레이에 포함된 메모리 블록들의 예는 도 4에 도시된다.
도 2는 도 1의 메모리 시스템의 예시적 실시예를 나타내는 도면이다.
도 2를 참조하면, 메모리 시스템(200)은 메모리 장치(220) 및 메모리 컨트롤러(210)를 포함한다. 메모리 컨트롤러(210)는 본 명세서에서 컨트롤러 회로로 지칭될 수 있다. 메모리 장치(220)는 메모리 컨트롤러(210)의 제어에 따라 기입, 독출 또는 소거를 수행할 수 있다.
메모리 컨트롤러(210)는 호스트(100)로부터 수신된 요청 또는 내부적으로 지정된 스케줄에 따라 메모리 장치(220)를 제어할 수 있다. 메모리 컨트롤러(210)는 컨트롤러 코어(211), 내부 메모리(214), 호스트 인터페이스 블록(215) 및 메모리 인터페이스 블록(216)을 포함할 수 있다. 또한, 메모리 컨트롤러(210)는 호스트 인터페이스 블록(215)에 제1 장치 정보(DI1)를 제공하고, 컨트롤러 코어(211)에 제2 장치 정보(DI2)를 제공하도록 구성된 장치 정보 스토리지(217)를 포함할 수 있다.
컨트롤러 코어(211)는 메모리 제어 코어(212) 및 머신 러닝 코어(213)를 포함할 수 있으며, 이들 코어 각각은, 하나 이상의 프로세서에 의해 구현될 수 있다. 메모리 제어 코어(212)는 호스트(100)로부터 수신된 요청 또는 내부적으로 지정된 스케줄에 따라 메모리 장치(220)를 제어하고 액세스 할 수 있다. 메모리 제어 코어 (212)는 메모리 시스템(200)의 관리 또는 운영에 사용되는 다양한 메타 데이터 및 코드를 관리하고 실행할 수 있다.
머신 러닝 코어(213)는 아래에서 더 상세히 설명되는 바와 같이, 메모리 장치(220)에 대한 노이즈 제거를 수행하도록 설계된 신경망의 학습 및 추론을 수행하는 데 사용될 수 있다.
내부 메모리(214)는, 예를 들어, 컨트롤러 코어(211)가 사용하는 시스템 메모리, 메모리 장치(220)의 데이터를 저장하는 캐시 메모리, 호스트 간의 데이터를 일시적으로 저장하는 버퍼 메모리로 사용될 수 있다. 내부 메모리(214)는 메모리 시스템(200)에 할당된 논리 어드레스와 메모리 장치(220)의 물리 어드레스 사이의 관계를 나타내는 매핑 테이블(MT)을 저장할 수 있다. 내부 메모리(214)는, 예를 들어, DRAM 또는 SRAM을 포함할 수 있다.
일 실시 예에서, 도 9를 참조하여 설명한 독출 네트워크와 같은 신경망은 메모리 컨트롤러(210)의 내부 메모리(214) 또는 메모리 장치(220)에 저장된 컴퓨터 프로그램에 포함될 수 있다. 신경망을 포함하는 컴퓨터 프로그램은 메모리 장치(220)에 저장된 데이터를 디노이즈(denoise)하기 위해 머신 러닝 코어(213)에 의해 실행될 수 있다. 따라서, 예시적인 실시예에 따르면, 메모리 시스템(200)은 메모리 장치(220)의 정상적인 독출 동작 동안 메모리 장치(220)에 저장된 데이터를 디노이즈 할 수 있다. 즉, 메모리 시스템(200)의 제조가 완료된 후, 메모리 시스템(200)의 정상 동작 동안, 특히 메모리 장치(220)로부터 데이터를 독출하는 메모리 시스템(200)의 정상 독출 동작 동안, 독출 중인 메모리 장치(220)에 저장된 데이터는 메모리 시스템(200)에 국부적으로 저장되어 실행되는 신경망을 이용하여 디노이즈되고, 디노이즈된 데이터는 메모리 장치(220)로부터 독출될 수 있다.
호스트 인터페이스 블록(215)은, 예를 들어, 물리적 블록과 같이, 호스트(100)와 통신하기 위한 구성 요소를 포함할 수 있다. 메모리 인터페이스 블록(216)은, 예를 들어, 물리적 블록과 같이, 메모리 장치(220)와 통신하기 위한 구성 요소를 포함할 수 있다.
이하에서는, 시간에 따른 메모리 시스템(200)의 동작을 설명한다. 메모리 시스템(200)에 전원이 공급되면, 메모리 시스템(200)은 호스트(100)와 초기화를 수행할 수 있다.
호스트 인터페이스 블록(215)은 호스트(100)로부터 수신된 제1 요청(REQ1)을 메모리 제어 코어(212)에 제공할 수 있다. 제1 요청(REQ1)은 커맨드(예를 들어, 독출 커맨드 또는 기입 커맨드) 및 논리 어드레스를 포함할 수 있다. 메모리 제어 코어(212)는 제1 요청(REQ1)을 메모리 장치(220)에 적합한 제2 요청(REQ2)으로 변환할 수 있다.
예를 들어, 메모리 제어 코어(212)는 커맨드의 포맷을 변환할 수 있다. 메모리 제어 코어(212)는 내부 메모리(214)에 저장된 매핑 테이블(MT)을 참조하여 어드레스 정보(AI)를 획득할 수 있다. 메모리 제어 코어(212)는 어드레스 정보(AI)를 이용하여 논리 어드레스를 메모리 장치(220)의 물리적 어드레스로 변환할 수 있다. 메모리 제어 코어(212)는 메모리 장치(220)에 적합한 제2 요청(REQ2)을 메모리 인터페이스 블록 (216)에 제공할 수 있다.
메모리 인터페이스 블록(216)은 메모리 제어 코어(212)로부터의 제2 요청 (REQ2)을 큐에 등록할 수 있다. 메모리 인터페이스 블록(216)은 큐에 처음 등록 된 요청을 제3 요청(REQ3)으로서 메모리 장치(220)로 전송할 수 있다.
제1 요청(REQ1)이 기입 요청인 경우, 호스트 인터페이스 블록(215)은 호스트(100)로부터 수신된 데이터를 내부 메모리(214)에 기입할 수 있다. 제3 요청(REQ3)가 기입 요청인 경우, 메모리 인터페이스 블록(216)은 내부 메모리(214)에 저장된 데이터를 메모리 장치(220)에 전송할 수 있다.
데이터 기입이 완료되면, 메모리 장치(220)는 제3 응답(RESP3)을 메모리 인터페이스 블록(216)에 전송할 수 있다. 제3 응답(RESP3)에 응답하여, 메모리 인터페이스 블록(216)은 데이터가 완전히 기록되었음을 나타내는 제2 응답(RESP2)을 메모리 제어 코어(212)에 제공할 수 있다.
내부 메모리(214)에 데이터가 저장된 후, 또는 제2 응답(RESP2)가 수신된 후, 메모리 제어 코어(212)는 호스트 인터페이스 블록(215)을 통해 요청이 완료되었음을 알리는 제1 응답(RESP1)을 호스트(100)로 전송할 수 있다.
제1 요청(REQ1)이 독출 요청인 경우, 독출 요청은 제2 요청(REQ2) 및 제3 요청(REQ3)을 통해 메모리 장치(220)로 전송될 수 있다. 메모리 인터페이스 블록(216)은 메모리 장치(220)로부터 수신된 데이터를 내부 메모리(214)에 저장할 수 있다. 데이터 전송이 완료되면, 메모리 장치(220)는 제3 응답(RESP3)를 메모리 인터페이스 블록(216)으로 전송할 수 있다.
제3 응답(RESP3)이 수신됨에 따라, 메모리 인터페이스 블록(216)은 데이터가 완전히 독출되었음을 나타내는 제2 응답(RESP2)을 메모리 제어 코어(212)에 제공할 수 있다. 제2 응답(RESP2)가 수신됨에 따라, 메모리 제어 코어(212)는 호스트 인터페이스 블록(215)을 통해 제1 응답(RESP1)을 호스트(100)로 전송할 수 있다.
호스트 인터페이스 블록(215)은 내부 메모리(214)에 저장된 데이터를 호스트(100)로 전송할 수 있다. 예시적 실시예에서, 제1 요청(REQ1)에 대응하는 데이터가 내부 메모리(214)에 저장되어있는 경우, 제2 요청(REQ2) 및 제3 요청(REQ3)은 생략될 수 있다.
메모리 장치(220)는, 또한, 제1 직렬 주변기기 인터페이스 정보(SPI1)를 메모리 인터페이스 블록(216)으로 전송할 수 있다. 메모리 인터페이스 블록(216)은 제2 직렬 주변기기 인터페이스 정보(SPI2)를 컨트롤러 코어(211)로 전송할 수 있다.
도 3은 도 1의 비휘발성 메모리 장치의 예시적 실시예를 나타내는 도면이다. 도 3을 참조하면, 메모리 장치(220)는 예를 들어, 메모리 셀 어레이(221), 제어 로직(222), 전압 생성부(223), 로우 디코더(224) 및 페이지 버퍼(225)를 포함할 수 있다.
메모리 셀 어레이(221)는 하나 이상의 스트링 선택 라인(SSL), 복수의 워드 라인(WL), 하나 이상의 접지 선택 라인(GSL) 및 복수의 비트 라인(BL)에 연결될 수 있다. 메모리 셀 어레이(221)는 복수의 워드 라인(WL)과 복수의 비트 라인(BL)의 교차점에 배치된 복수의 메모리 셀을 포함할 수 있다.
제어 로직(222)은 메모리 컨트롤러(210)로부터 커맨드(CMD)(예를 들어, 내부 커맨드) 및 어드레스(ADD)를 수신하고, 메모리 컨트롤러(210)로부터 메모리 장치(220) 내의 다양한 기능 블록을 제어하기 위한 제어 신호(CTRL)를 수신할 수 있다. 제어 로직(222)은 커맨드(CMD), 어드레스(ADD) 및 제어 신호(CTRL)에 기초하여 메모리 셀 어레이(221)에 데이터를 기입하거나, 메모리 셀 어레이(221)로부터 데이터를 독출하기 위한 다양한 제어 신호(CTRL)를 출력할 수 있다. 이와 같은 방식으로, 제어 로직(222)은 메모리 장치(220)의 전반적인 동작을 제어할 수 있다.
제어 로직(222)에서 출력되는 다양한 제어 신호(CTRL)는 전압 생성부(223), 로우 디코더(224) 및 페이지 버퍼(225)로 제공될 수 있다. 예를 들어, 제어 로직(222)은 전압 제어 신호(CTRL_vol)를 전압 생성부(223)에 제공하고, 로우 디코더(224)에 로우 어드레스(X-ADD)를 제공하고, 페이지 버퍼(225)에 칼럼 어드레스(Y-ADD)를 제공할 수 있다.
전압 생성부(223)는 전압 제어 신호(CTRL_vol)에 기초하여 메모리 셀 어레이(221)에 대한 프로그램, 독출 및 소거 동작을 수행하기 위한 다양한 전압을 생성 할 수 있다. 예를 들어, 전압 생성부(223)는 복수의 워드 라인(WL)을 구동하기 위한 제1 구동 전압(VWL), 복수의 스트링 선택 라인(SSL)을 구동하기 위한 제2 구동 전압(VSSL) 및 복수의 접지 선택 라인(GSL)을 구동하기 위한 제3 구동 전압(VGSL)을 생성할 수 있다. 이때, 제1 구동 전압(VWL)은 프로그램 전압(예를 들어, 기입 전압), 독출 전압, 소거 전압, 패스 전압 또는 프로그램 검증 전압일 수 있다. 또한, 제2 구동 전압(VSSL)은 스트링 선택 전압(예를 들어, 온 전압 또는 오프 전압)일 수 있다. 또한, 제3 구동 전압(VGSL)은 접지 선택 전압(예를 들어, 온 전압 또는 오프 전압)일 수 있다.
로우 디코더(224)는 복수의 워드 라인(WL)을 통해 메모리 셀 어레이(221)와 연결되고, 제어 로직(222)으로부터 수신된 로우 어드레스(X-ADD)에 응답하여 복수의 워드 라인(WL)의 일부를 활성화할 수 있다. 예를 들어, 독출 동작에서 로우 디코더(224)는 선택된 워드 라인에 독출 전압을 인가하고, 선택되지 않은 워드 라인에 패스 전압을 인가할 수 있다.
프로그램 동작에서 로우 디코더(224)는 선택된 워드 라인에 프로그램 전압을 인가하고, 선택되지 않은 워드 라인에 패스 전압을 인가할 수 있다. 일 실시예에서, 복수의 프로그램 루프 중 적어도 하나에서, 로우 디코더(224)는 선택된 워드 라인 및 추가로 선택된 워드 라인에 프로그램 전압을 인가할 수 있다.
페이지 버퍼(225)는 복수의 비트 라인(BL)을 통해 메모리 셀 어레이(221)와 연결될 수 있다. 예를 들어, 독출 동작에서 페이지 버퍼(225)는 메모리 셀 어레이(221)에 저장된 데이터를 출력하는 감지 증폭기로 동작할 수 있다. 또는 프로그램 동작에서 페이지 버퍼(225)는 메모리 셀 어레이(221)에 원하는 데이터를 기입하는 기입 드라이버로 동작할 수 있다.
도 4 및 도 5는 3차원 플래시 메모리를 이용하여 메모리 시스템(200)을 구현한 실시예를 나타낸다. 3차원 플래시 메모리는 3차원(예를 들어, 수직) NAND (예를 들어, VNAND) 메모리 셀을 포함할 수 있다. 3차원 메모리 셀을 포함하는 메모리 셀 어레이(221)의 구현은 아래에서 설명한다. 후술하는 각 메모리 셀은 NAND 메모리 셀일 수 있다.
도 4는 도 3의 메모리 셀 어레이의 예시적 실시예를 나타내는 도면이다.
도 4를 참조하면, 본 개시의 예시적 실시예에 따른 메모리 셀 어레이(221)는 복수의 메모리 블록(BLK1~BLKz)(여기서, z는 1보다 큰 양의 정수)을 포함한다. 각 메모리 블록(BLK1~BLKz)은 3차원 구조(예를 들어, 수직 구조)를 갖는다. 예를 들어, 각 메모리 블록들(BLK1~BLKz)은 제1 내지 제3 방향으로 연장되는 구조를 포함할 수 있다. 예를 들어, 각 메모리 블록(BLK1~BLKz)은 제2 방향으로 연장되는 복수의 낸드 스트링을 포함할 수 있다. 복수의 낸드 스트링은 예를 들어, 제1 내지 제3 방향으로 제공될 수 있다.
각각의 NAND 스트링은 비트 라인(BL), 스트링 선택 라인(SSL), 접지 선택 라인(GSL), 워드 라인(WL) 및 공통 소스 라인(CSL)에 연결된다. 즉, 각 메모리 블록(BLK1~BLKz)은 복수의 비트 라인(BL), 복수의 스트링 선택 라인(SSL), 복수의 접지 선택 라인(GSL), 복수의 워드 라인(WL) 및 공통 소스 라인(CSL)에 연결될 수 있다. 메모리 블록들(BLK1~BLKz)은 도 5를 참조하여 이하에서 더 구체적으로 설명될 것이다.
도 5는 본 발명의 에시적 실시예에 따른 메모리 블록(BLKi)의 회로도이다. 도 5는 도 4의 메모리 셀 어레이(221)의 메모리 블록들(BLK1~BLKz) 중 하나의 예를 나타낸다. 도 5에 도시된 메모리 셀 및 워드 라인의 수는 예시일 뿐이며, 임의의 적절한 수의 메모리 셀 및 워드 라인이 사용될 수 있다.
메모리 블록(BLKi)은 복수의 셀 스트링(CS11~CS41, CS12~CS42)을 포함할 수 있다. 복수의 셀 스트링(CS11~CS41, CS12~CS42)은 로우 및 칼럼 방향으로 배열되어 로우와 칼럼을 형성할 수 있다. 셀 스트링(CS11~CS41, CS12~CS42) 각각은 접지 선택 트랜지스터(GST), 메모리 셀(MC1~MC6) 및 스트링 선택 트랜지스터(SST)를 포함 할 수 있다. 각각의 셀 스트링(CS11~CS41, CS12~CS42)에 포함되는 접지 선택 트랜지스터(GST), 메모리 셀(MC1~MC6) 및 스트링 선택 트랜지스터(SST)는 기판과 실질적으로 수직인 높이 방향으로 적층될 수 있다.
복수의 셀 스트링(CS11~CS41, CS12~CS42)의 칼럼들은 각각 서로 다른 스트링 선택 라인(SSL1~SSL4)에 연결될 수 있다. 예를 들어, 셀 스트링(CS11, CS12)의 스트링 선택 트랜지스터(SST)는 스트링 선택 라인(SSL1)에 공통으로 연결될 수 있다. 셀 스트링(CS21, CS22)의 스트링 선택 트랜지스터(SST)는 스트링 선택 라인 (SSL2)에 공통으로 연결될 수 있다. 셀 스트링(CS31, CS32)의 스트링 선택 트랜지스터(SST)는 스트링 선택 라인(SSL3)에 공통으로 연결될 수 있다. 셀 스트링(CS41, CS42)의 스트링 선택 트랜지스터(SST)는 스트링 선택 라인(SSL4)에 공통으로 연결될 수 있다.
복수의 셀 스트링(CS11~CS41, CS12~CS42)의 로우들은 각각 서로 다른 비트 라인(BL1, BL2)에 연결될 수 있다. 예를 들어, 셀 스트링(CS11~CS41)의 스트링 선택 트랜지스터(SST)는 비트 라인(BL1)에 공통으로 연결될 수 있다. 셀 스트링 (CS12~CS42)의 스트링 선택 트랜지스터(SST)는 비트 라인(BL2)에 공통으로 연결될 수 있다.
복수의 셀 스트링(CS11~CS41, CS12~CS42)의 칼럼들은 각각 서로 다른 접지 선택 라인(GSL1~GSL4)에 연결될 수 있다. 예를 들어, 셀 스트링(CS11, CS12)의 접지 선택 트랜지스터(GST)는 접지 선택 라인(GSL1)에 공통으로 연결될 수 있다. 셀 스트링(CS21, CS22)의 접지 선택 트랜지스터(GST)는 접지 선택 라인(GSL2)에 공통으로 연결될 수 있다. 셀 스트링(CS31, CS32)의 접지 선택 트랜지스터(GST)는 접지 선택 라인(GSL3)에 공통으로 연결될 수 있다. 셀 스트링(CS41, CS42)의 접지 선택 트랜지스터(GST)는 접지 선택 라인(GSL4)에 공통으로 연결될 수 있다.
기판과 동일한 높이에 배치된 메모리 셀(또는, 접지 선택 트랜지스터(GST))은 공통적으로 단일 워드 라인에 연결될 수 있고, 기판과 다른 높이에 배치된 메모리 셀은 서로 다른 워드 라인들(WL1 ~ WL6)에 연결될 수 있다. 예를 들어, 메모리 셀들(MC1)은 워드 라인(WL1)에 공통으로 연결될 수 있다. 메모리 셀들(MC2)은 워드 라인(WL2)에 공통으로 연결될 수 있다. 메모리 셀들(MC3)은 워드 라인(WL3)에 공통으로 연결될 수 있다. 메모리 셀들(MC4)은 워드 라인(WL4)에 공통으로 연결될 수 있다. 메모리 셀들(MC5)은 워드 라인(WL5)에 공통으로 연결될 수 있다. 메모리 셀들(MC6)은 워드 라인(WL6)에 공통으로 연결될 수 있다. 셀 스트링(CS11~CS41, CS12~CS42)의 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 공통으로 연결될 수 있다.
변조(Modulation)
도 6은 본 개시의 예시적 실시예에 따른 전압 레벨 성상도(600)를 나타내는 도면이다. 전압 레벨 성상도(600)는 본 개시의 실시예들에 따라 메모리 장치에 데이터를 프로그래밍하는데 사용될 수 있는 변조 방식의 예를 나타낸다. 변조 방식은 메모리 셀을 주어진 수(K로 표시)의 그룹으로 그룹화하고, 각 메모리 셀의 전압 레벨을 이산 레벨(N으로 표시)로 분할하는 것을 포함할 수 있다.
전압 레벨 성상도(600)는 셀 당 2비트(bpc)를 갖는 2개의 셀들, 즉 N = 2bpc 및 K = 2인 셀들을 포함한다. 그러나, 다른 실시예에서, 상이한 수의 셀들 및 bpc가 사용될 수 있다. 각 셀은 하나의 축으로 표시되고, 각 정보 심볼(605)은 한 쌍의 전압 레벨(각 셀에 대해 하나씩)로 표시될 수 있다. 셀들의 수는 축의 개수를 결정할 수 있고, bpc는 포텐셜 전압 레벨들의 개수를 결정할 수 있다.
예를 들어, bpc = N이면 셀 당 전압 레벨들의 수는 2N이 될 수 있다. 따라서, 여기에는 전압 레벨 성상도(600)는 16개의 정보 심볼(605)을 포함하도록 각각 4개의 레벨을 갖는 2개의 축이 존재한다. 한편, 정보 심볼(605)의 위치가 완벽하게 정렬되지 않음에 유의해야 한다. 즉, 전압 레벨이 균일하지 않을 수 있으며 각 셀에 대해 동일하지 않을 수 있다.
따라서, NAND 장치에 정보를 기록하기 위해 변조가 사용될 수 있다. 간단히 말해서, 변조는 셀 당 N비트를 기입하는 대신 K 셀들 당 N*K 비트를 기입한다. NAND 장치에 비트스트림을 저장하기 위해 정보의 스트림은 (N*K)비트의 크기의 그룹으로 그룹핑될 수 있다. 각 그룹은 2N*K의 다른 값들의 조합을 가질 수 있다. 따라서 각 그룹에서 [0, (2N*K-1)]의 범위 내의 숫자 L로 매핑이 수행될 수 있다.
서로 겹치지 않는 세트의 K 셀들에 대하여, 단일 레벨이 기입될 수 있다. 각 레벨은 고정되며 미리 결정된 매핑에 의해 V1(L), V2(L),??, VK(L)와 같은 K 전압들의 고유한 시퀀스와 연관될 수 있다. 따라서, 레벨 L을 K 셀들에 저장하기 위해, 첫번째 셀이 전압 V1(L)로, 두 번째 셀이 전압 V2(L) 등으로 공동으로 프로그램될 수 있다.
만약 성상도가 정확하게 계산된 경우, 변조는 신뢰도를 증가시킬 수 있다(예를 들어, 오류율을 감소시킬 수 있다). 이는 공동으로 프로그램된 셀들 간에 간섭 노이즈가 존재하는 경우에 해당된다. 통신 분야에서, 변조는 유사한 이유로 널리 사용된다. 물리적 채널 및 통신 요구를 기초로 적절한 변조 방식이 선택될 수 있다.
변조는 셀 당 비 정수(non-integer)의 비트들을 저장하도록 제공된다. 예를 들어, 2개의 셀에 7비트를 저장하여 셀 당 3½비트를 저장할 수 있다. 즉, 128개의 레벨(128=27)이 존재하고, 이들을 2개의 셀에 기입하면, 셀당 비트 수는 셀당 3½ 비트와 같다.
또 다른 예에서, N*K가 정수가 아니더라도, 2(N*K)가 정수라는 제한과 함께 셀 당 비 정수의 비트들을 사용할 수 있다. 예를 들어, 메모리 장치는 K=3 셀들 및 2(N*K)=30000을 기반으로 할 수 있다. 이 경우 비트 수가 정수가 아닐 수도 있는 N*K이므로, 정보 비트들의 세트를 검출하는 데 어려움이 있을 수 있다. 즉, N*K = log2(30000)
Figure pat00001
14.9이다. 따라서, 이 경우(N*K가 비 정수인 경우)는 두 가지 조건이 유지되는 상황으로 제한될 수 있다. 즉, 1) 정보 비트들의 수는 N*K를 가장 가까운 정수(즉, 본 실시예에서는, 15)로 반올림하여 획득하고, 2) 정보 비트들의 일부 조합은 입력 및 출력에서 허용되지 않는다. 이는 입력에 대한 옵션이 215개 미만일 수 있음을 의미한다. 예를 들어, 허용되는 조합 개수는 최대 30000개다.
다양한 실시예에 따르면, 셀의 프로그램 전압 선택은 PAM(Pulse Amplitude Modulation) 변조 알고리즘에 의해 수행될 수 있으며, 여기서 코딩된 비트들은 셀 당 비트 수의 그룹들로 분할된다. 예를 들어, TLC(트리플 레벨 셀)에서, 셀 당 비트 수는 3이다. 각 셀 그룹은 심볼이라 지칭할 수 있다. 예를 들어, 비트들 010의 심볼은 2와 같다. NVth 동적 범위는 셀 당 2N 비트들로 구분될 수 있다. 예를 들어, 3Vth 동적 범위는 8개의 목표 전압으로 구분될 수 있다. 각 타겟 전압은, 인접한 타겟 전압들 간에는 단일 비트만 변경되는 그레이 코드를 사용하여 심볼에 매핑된다. 예를 들어, 동적 범위가 -3V와 4V 사이인 경우, -3V의 변조는 111, -2V의 변조는 110, -1V의 변조는 100, 0V의 변조는 101, 1V의 변조는 001, 2V의 변조는 000, 3V의 변조는 010, 4V의 변조는 011이다.
예시적인 변조는 AWGN(Additive white Gaussian noise) 채널에 해당될 수 있다. 그러나 많은 경우들에서, NAND 채널과 AWGN 채널이 동일하지 않으며, PAM 변조가 반드시 NAND 채널에 최적인 것은 아니다. 또는, 휴리스틱 최적화를 수행하여 성능이 향상된 타겟 전압들을 찾을 수 있다.
학습 기반 메모리
도 7은 본 개시의 예시적 실시예에 따른 학습 기반 메모리 시스템을 나타내는 도면이다. 도 7에서 도시된 예는, 프로그램 네트워크(700), 메모리 장치(705) 및 독출 네트워크(710)를 포함할 수 있다.
예시적 실시예에서, 프로그램 네트워크(700) 및 독출 네트워크(710)는 인공 신경망(ANN)을 포함할 수 있다. ANN은 인간 두뇌의 뉴런에 느슨하게 대응할 수 있는 연결된 노드(일명, 인공 뉴런)를 포함하는 하드웨어 또는 소프트웨어 구성 요소 일 수 있다. 각 연결 또는 엣지는, (뇌의 물리적 시냅스와 같이) 한 노드에서 다른 노드로 신호를 전송할 수 있다. 노드가 신호를 수신하면 신호를 처리한 후, 처리된 신호를 연결된 다른 노드로 전송할 수 있다. 일부 실시예에서, 노드 간의 신호는 실수를 포함할 수 있고, 각 노드의 출력은 입력들의 합계의 함수로 계산될 수 있다. 각 노드 및 엣지는, 신호가 처리되고 전송되는 방법을 결정하는 하나 이상의 노드 가중치와 연관될 수 있다.
본 개시의 ANN에 대한 설명은 문자 그대로보다 더 비유적임에 유의해야 한다. 다시 말하면, 본 개시는 ANN을 해석하는 한 가지 방법을 설명하나, 반드시 ANN의 구현되는 방법인 것은 아니다. ANN의 하드웨어 또는 소프트웨어 구현에서, 신호 송수신은 문자 그대로 수행되지 않을 수 있다.
학습 프로세스 동안, 이러한 가중치들은 (현재 결과와 목표 결과의 차이에 대하여, 특정 방법에 대응하는 손실 함수를 최소화함으로써) 결과의 정확도를 높이기 위해 조정될 수 있다. 엣지의 가중치는 노드들 간에 전송되는 신호의 강도를 증가 또는 감소시킬 수 있다. 일부 실시예에서, 노드들은 신호가 전혀 전송되지 않는 임계 값을 가질 수 있다. 또한, 노드들은 레이어들로 결합될 수도 있다. 상이한 레이어들은 그들의 입력들에 대해 상이한 변환들을 수행할 수 있다. 첫번째 레이어는 입력 레이어라고 이해될 수 있고, 마지막 레이어는 출력 레이어라고 이해할 수 있다. 일부 실시예에서, 신호들은 특정 레이어들을 복수 회 통과할 수 있다.
프로그램 네트워크(700)는 임베딩 파라미터들의 세트에 기초하여, 정보 비트들의 세트를 하나 이상의 메모리 셀의 전압 레벨에 매핑할 수 있다. 프로그램 네트워크(700)는 매핑에 기초하여, 정보 비트들의 세트를 하나 이상의 메모리 셀로 프로그래밍 할 수 있다. 또한, 프로그램 네트워크(700)는 정보 비트들의 세트에 그레이 코드를 적용할 수 있으며, 여기서 매핑은 그레이 코드에 기초할 수 있다. 일부 실시예에서, 다수의 메모리 셀이 있을 수 있고, 임베딩 파라미터들의 세트는 다수의 메모리 셀의 개수와 동일한 개수의 차원을 갖는 어레이를 포함할 수 있다. 차원의 개수는 어레이 내 요소들의 개수와 상이할 수 있다. 예를 들어, 어레이 내 요소들의 개수는 가능한 레벨의 개수(즉, 2(N * K))와 같을 수 있으며, 어레이의 각 요소는 K차원의 벡터일 수 있다.
학습 이전에, 프로그램 네트워크(700) 및 독출 네트워크(710)는 임베딩 파라미터들의 세트 및 네트워크 파라미터들의 세트를 초기화할 수 있다. 프로그램 네트워크(700)는 임베딩 파라미터들의 세트에 기초한 임베딩 레이어를 포함하는 프로그래밍 구성 요소를 포함할 수 있다. 일부 실시예에서, 프로그래밍 구성 요소는 시그모이드(sigmoid) 레이어 및 스케일링 레이어를 더 포함할 수 있다. 프로그램 네트워크(700)는 도 8을 참조하여 설명되는 대응하는 요소 또는 요소들의 예이거나 그 양상들을 포함할 수 있다.
프로그램 네트워크(700)는 유한 이산 세트 K로부터 취해진 입력 심볼을 "in"으로 매핑한다. 예를 들어, 프로그램 네트워크(700)에 대한 입력은 세트 [0,??, 2(N*K)-1]에서 임의의 값을 취할 수 있는 단일 심볼일 수 있으며, 입력은 N*K 비트들이 포함될 수 있다.
추가적으로, 프로그램 네트워크(700)는 입력 심볼을 프로그램 전압 x1, .., xK로 변환할 수 있다. 채널은 y = x + n이되도록 미확인 잡음 n을 추가하고, 여기서, y는 메모리 장치(705)의 출력을 나타내고, x는 프로그램 전압 x1, .., xK를 나타낸다. 독출 네트워크(710)는 입력 심볼들 "in_predicted"을 독출할 수 있다. 독출 네트워크(710)의 출력에는 입력 심볼에 대한 예측 이상의 것이 포함될 수 있다. 예를 들어, 출력은 각각의 가능한 입력 심볼에 대한 점수(또는 확률)를 포함할 수 있다. 점수가 가장 높은 심볼(예를 들어, "predicted")를 예측으로 사용할 수 있지만, 손실 함수(예를 들어, 교차 엔트로피)를 계산할 때 모든 점수들을 사용할 수도 있다.
일부 실시예에서, 프로그램 네트워크(700) 및 독출 네트워크(710)는 함께 학습될 수 있다. 예를 들어, "in"과 "in_predicted" 사이의 교차 엔트로피를 최소화하거나, 다른 적절한 손실 함수를 사용하여 학습될 수 있다.
예시적인 프로그램 네트워크(700)는 임베딩 레이어를 포함할 수 있다. 입력은 2(N * K)개의 숫자들의 세트로부터의 단일 심볼일 수 있다. 즉, 입력은 N*K 비트일 수 있고, 출력은 K 전압들의 시퀀스일 수 있다.
추가적으로, 프로그램 네트워크(700)는 메모리 셀의 동적 범위로 스케일링하기 위한 시그모이드 레이어 및 스케일링 레이어를 포함할 수 있다. 따라서, 프로그램 네트워크(700)는 셀의 프로그램 전압을 찾을 수 있다.
메모리 장치(705)는 도 1 내지도 5를 참조하여 설명된 메모리 셀들의 세트를 포함할 수 있다. 일부 실시예에서, 메모리 셀들의 세트는 NAND 메모리 셀들을 포함할 수 있다. 메모리 셀은 동적 범위라 지칭되는 범위 내에서, 지정된 전압으로 설정될 수 있다. 기입 및 프로그래밍의 용어는 셀을 원하는 전압으로 설정하는 프로세스를 설명하는 데 사용될 수 있다.
NAND 장치에 정보를 저장하는 절차의 예는 다음과 같다. 비트 스트림 (b1, b2, b3, b4, b5, b6, b7, b8, b9, b10??)이 주어지면, 비트들은 N비트 크기의 그룹으로 그룹핑될 수 있다. 예를 들어, N=4인 경우(N은 셀 당 비트 수), 그룹들은 (b1, b2, b3, b4), (b5, b6, b7, b8), (b9, b10, b11, b12) 등으로 나타낼 수 있다. N비트의 각 그룹에 대해 2N개의 서로 다른 값들의 조합이 가능하다. 따라서 각 그룹에서, [0, (2N-1)] 범위에서의 정수 L로 매핑이 수행될 수 있다. 숫자 L은 레벨을 나타낸다. 단일 레벨이 각 메모리 셀에 기입될 수 있다. 각 레벨은 고정되고 미리 결정된 매핑에 의해 고유한 전압 V(L)과 연관될 수 있다. 이와 같은 유형의 매핑을 성상도(constellation)라고 하며, 성상도는 레벨들에서 전압들로의 매핑을 나타낸다. 따라서, 레벨 L을 셀에 저장하기 위해서, 전압 V(L)이 해당 셀에 프로그래밍된다.
메모리 장치(705)로부터 정보를 독출하기 위해, 각 셀의 전압이 측정되고, 셀에 저장된 전압 레벨이 추론될 수 있다. 그 다음 비트들이 복구될 수 있다. 일부 실시예에서, N값과 메모리 신뢰성 사이에는 트레이드 오프가 존재할 수 있다. N값이 클수록, 각 셀에 더 많은 비트들이 존재하는 메모리 장치에 더 많은 정보가 저장될 수 있다. 또는, 동일한 동적 범위 내에서 더 많은 수의 구별 가능한 전압들이 이용될 수 있으므로, 서로 다른 레벨들을 나타내는 전압들이 더욱 촘촘하게 채워질 수 있다. 결과적으로, 셀 프로그래밍 또는 셀 독출의 노이즈는 특정 레벨의 전압을 다른 레벨을 나타내는 다른 전압으로 변경시킬 가능성이 더 크므로, 셀 독출 시에 오류를 발생시킬 수 있다.
메모리 장치(705)에는 기입 노이즈, 간섭 노이즈, 노화, 독출 동작과 같이 정보의 오독출을 유발할 수 있는 다양한 노이즈 발생원들이 존재할 수 있다. 기입 노이즈는 프로그래밍 절차로 인해 의도된 전압과 다른, 프로그래밍 직후의 셀 전압을 의미한다. 간섭 노이즈는 서로 다른 인접 셀의 프로그래밍의 결과로 인해 변화하는 셀의 전압의 함수를 의미한다. 셀들에 대한 프로그래밍은 다른 셀들에 영향을 미치는 교란을 유발시킬 수 있다. 노화는 메모리 장치(705)에 기입하고 독출하는 횟수가 많을수록 노이즈가 더욱 증가하는 것을 의미할 수 있다. 또한 셀의 프로그래밍 간의 시간이 길수록, 셀의 노이즈가 더 많이 생성될 수 있다. 또한 셀의 독출 동작은 노이즈 및 교란들을 유발할 수 있다.
메모리 장치(705)는 채널이라고 지칭될 수 있다. 채널이라는 용어는, 기입 및/또는 전송 동작이 채널로 이동하거나, 채널을 통해 이동할 수 있으므로 사용될 수 있다. 정보가 독출되면, 매체의 특성들에 따라 정보가 노이즈로 손상될 수 있다.
독출 네트워크(710)는 하나 이상의 검출된 전압 레벨을 생성하기 위해 하나 이상의 메모리 셀의 전압 레벨들을 검출한다. 독출 네트워크(710)는 네트워크 파라미터들의 세트를 포함하는 신경망을 사용하여 하나 이상의 검출된 전압 레벨에 기초하여 예측된 정보 비트들의 세트를 확인할 수 있다. 일부 실시예에서, 네트워크 파라미터들은 임베딩 파라미터들과 함께 학습될 수 있다.
일 실시예에 따르면, 독출 네트워크(710)는 신경망을 사용하여 검출된 전압 레벨에 기초하여 정보 비트 확률의 세트를 생성할 수 있다. 독출 네트워크(710)는 정보 비트 확률 세트로부터 가장 높은 정보 비트 확률을 선택할 수 있다. 일부 실시예에서, 예측된 정보 비트들의 세트는 가장 높은 정보 비트 확률에 기초하여 확인될 수 있다.
독출 네트워크(710)는 네트워크 파라미터에 기초하여 ANN을 사용하여 예측 된 정보 비트들의 세트를 식별할 수 있다. 독출 네트워크(710)는 네트워크 파라미터들의 세트에 기초한 신경망을 포함하는 독출 컴포넌트를 포함할 수 있다. 일부 실시예에서, 네트워크 파라미터는 임베딩 파라미터와 함께 학습될 수 있다. 일부 실시예에서, 신경망은 확률 기반 분류기를 포함할 수 있다. 독출 네트워크(710)는 도 9를 참조하여 설명된 대응하는 요소 또는 요소들의 예이거나 그 양상들을 포함할 수 있다.
도 8은 본 개시의 예시적 실시예에 따른 프로그램 네트워크(800)를 나타내는 도면이다. 프로그램 네트워크(800)는 도 7을 참조하여 설명된 대응하는 요소 또는 요소들의 예이거나 그 양상들을 포함할 수 있다. 프로그램 네트워크(800)는 임베딩 레이어(805), 시그모이드 레이어(810) 및 스케일링 레이어(815)를 포함할 수 있다.
임베딩 레이어(805)는 임베딩 파라미터에 기초하여 정보 비트들의 세트를 임베딩 공간에 임베딩하여 임베딩된 정보 심볼을 생성할 수 있다. 시그모이드 레이어(810)는 시그모이드 함수를 적용하여 임베디드 정보 심볼을 제한하여 제한된 심볼을 생성할 수 있다. 스케일링 레이어(815)는 유효한 동적 범위 내의 전압에 대응하는 스케일링된 심볼을 생성하기 위해 제한된 심볼을 스케일링할 수 있다. 예시적 실시예에서, 정보 비트들의 세트가 스케일링된 심볼을 기반으로 매핑될 수 있다.
도 9는 본 개시의 예시적 실시예에 따른 독출 네트워크(900)를 나타내는 도면이다. 독출 네트워크(900)는 도 7을 참조하여 설명된 대응하는 요소 또는 요소의 예이거나 그 양상을 포함할 수 있다. 도시된 바와 같이, 독출 네트워크(900)는 하나 이상의 풀리 커넥티드(fully-connected) 레이어들(예를 들어, 풀리 커넥티드 리니어 레이어들)(905) 및 하나 이상의 ReLU(rectified linear unit) 레이어들(910)을 포함하는 신경망일 수 있다. 일부 실시예에서, 풀리 커넥티드 레이어들(905) 및 ReLU 레이어들(910)은 도 9에 표시된 바와 같이 교대로 배치될 수 있다. 그러나, 이러한 배열은 일 예로서 사용되며, 정보 비트와 관련된 검출된 전압 레벨을 학습 할 수 있는 임의의 적절한 신경망이 사용될 수도 있다.
예시적 실시예에서, 신경망의 학습 중에 하나 이상의 배치(batch) 정규화가 사용될 수 있다. 예시적 실시예에서, 배치 정규화를 통합하는 네트워크는 기울기(gradient) 소실(vanishing) 또는 폭주(exploding) 없이 더 높은 학습률을 이용할 수 있다. 또한, 배치 정규화는 네트워크를 정규화하여 일반화하기 더 쉽다. 따라서, 예시적 실시예에서, 오버피팅(overfitting)을을 완화하기 위해 드롭아웃(dropout)을 사용할 필요가 없다. 또한, 네트워크는 다른 초기화 체계와 학습률에 대해 더욱 강건할 수 있다. 배치 정규화는 각 레이어의 입력들의 평균과 분산을 고정함으로써 달성될 수 있다. 예시적 실시예에서, 정규화는 전체 학습 세트에 대해 수행될 수 있다. 다른 실시예에서, 정규화는 학습 프로세스의 각 미니배치로 제한될 수 있다.
신경망에서, 활성화 함수는 한 노드의 합산 가중된 입력들을 해당 노드의 활성화 또는 출력으로 변환하는 데 사용될 수 있다. ReLU 레이어는 정류된 선형 활성화 함수를 구현할 수 있고, 이 함수는 양수이면 입력을 직접 출력하고, 그렇지 않으면 0을 출력하는 부분 선형 함수를 포함한다. 정류된 선형 활성화 함수는 많은 유형의 신경망에 대한 디폴트(default) 활성화 함수로 사용될 수 있다.
정류된 선형 활성화 함수를 사용하면, 오류 역전파(backpropagation)와 함께 확률적 기울기 하강법을 사용하여 심층 신경망을 학습할 수 있다. 정류된 선형 활성화 함수는 선형 함수와 유사하게 작동할 수 있으나, 데이터 내 복잡한 관계들이 학습되도록 할 수 있다. 정류된 선형 활성화 함수는 포화를 피하기 위해 활성화 합계 입력에 더 많은 민감도를 제공할 수도 있다. 정류된 선형 활성화 기능을 구현하는 노드 또는 단위는, 정류된 선형 활성화 단위 또는 줄여서 ReLU라고 할 수 있다. 히든(hidden) 레이어에 정류기 기능을 사용하는 네트워크를 정류 네트워크라고 할 수 있다.
동작
도 10은 본 개시의 예시적 실시예에 따른 메모리 장치의 동작을 위한 프로세스를 나타내는 도면이다. 다양한 실시예에 따라, 메모리 장치는 ANN을 포함할 수 있고, 메모리 장치의 동작은 메모리 장치로부터 독출된 전압 레벨들에 기초하여 ANN의 출력을 찾는 것을 포함할 수 있다.
예시적 실시예에서, 이러한 동작들은, 장치의 기능적 요소들을 제어하기 위해 코드들의 세트를 실행하는 프로세서를 포함하는 시스템에 의해 수행될 수 있다. 추가적으로 또는 대안으로, 프로세스는 특수 목적의 하드웨어를 사용하여 수행될 수 있다. 일반적으로, 이러한 동작은 본 개시의 양상에 따라 설명된 방법 및 프로세스에 따라 수행될 수 있다. 예를 들어, 동작들은 다양한 하위 단계들로 구성되거나 여기에 설명된 다른 동작들과 함께 수행될 수 있다.
동작 1000에서, 시스템은 임베딩 파라미터들의 세트를 기초로 정보 비트들의 세트를 하나 이상의 메모리 셀의 전압 레벨에 매핑한다. 예시적 실시예에서, 이 단계의 동작들은 도 7 및 도 8을 참조하여 설명된 프로그램 네트워크에 의해 수행될 수 있다. 예시적 실시예에서, 정보 비트는 도 6을 참조하여 설명된 전압 레벨 성상도를 이용하는 변조 방식에 기초하여 매핑될 수 있다. 예를 들어, 프로그램 네트워크 파라미터는 성상도의 각 심볼에 대응하는 복수의 셀 각각에 대한 전압 레벨을 포함할 수 있다. 성상도의 각 기호. 정보 비트를 매핑하는 과정에 대한 자세한 내용은 도 11을 참조하여 설명한다.
동작 1005에서, 시스템은 매핑을 기초로 하나 이상의 메모리 셀에 정보 비트들의 세트를 프로그램한다. 예시적 실시예에서, 이 단계의 동작은 도 7 및 도 8을 참조하여 설명된 바와 같이, 프로그램 네트워크를 참조하거나 그에 의해 수행될 수 있다.
특히, 프로그램 네트워크는 [0, (2N*K-1)] 범위의 정수를 길이 K의 실수들의 시퀀스로 매핑하는 테이블을 포함하는 임베딩 레이어 2N*K
Figure pat00002
K를 포함할 수 있다. 테이블의 모든 항목은 최적화될 수 있는 독립 변수로 처리된다.
임베딩 레이어의 출력은, 입력을 받아 [0,1] 범위의 숫자로 변환하는, 연속적인 미분 가능한 단조 함수인 시그모이드 함수를 통과할 수 있다. 길이 K의 시퀀스의 각 요소는 시그모이드 함수를 통해 전달될 수 있다. 이 함수의 결과는 [VMIN, VMAX] 범위로 재조정될 수 있다. 여기서, VMIN 및 VMAX는 최소 및 최대 허용 전압들(즉, 동적 범위)이다. 크기 조정은 x
Figure pat00003
x*(VMAX-VMIN)+VMIN 함수를 사용하여 수행될 수 있다. 시그모이드 함수 및 크기 조정은 프로그램 네트워크의 출력이 유효한 범위 내에 있음을 보장한다.
동작 1010에서, 시스템은 하나 이상의 검출된 전압 레벨들을 생성하기 위해 하나 이상의 메모리 셀의 전압 레벨들을 검출한다. 일부 실시예에서, 이 단계의 동작들은 도 7 및 도 9를 참조하여 설명된 독출 네트워크에 의해 수행될 수 있다.
동작 1015에서, 시스템은 네트워크 파라미터들의 세트를 포함하는 신경망을 이용하여 하나 이상의 검출된 전압 레벨을 기초로 예측된 정보 비트들의 세트를 확인하며, 여기서 네트워크 파라미터는 임베딩 파라미터와 함께 학습될 수 있다. 일부 실시예에서, 이 단계의 동작들은 도 7 및 9를 참조하여 설명된 독출 네트워크에 의해 수행될 수 있다. 예를 들어, 독출 네트워크는 예측된 성상도 심볼을 확인하고, 정보 비트들의 세트를 확인할 수 있다.
독출 네트워크는 메모리 장치로부터의 K 셀들로부터 독출된 K 전압들의 시퀀스를 입력으로 취하고, 이들 K 셀들에 기입된 레벨의 예측을 반환하는 신경망 분류기일 수 있다. 독출 네트워크는 모든 신경망 또는 차별화 가능한 모델이 될 수 있다. 독출 네트워크의 출력 개수는 2N*K이며, 여기서 각 2N*K 숫자는 독출 네트워크에 의해 제공되는 해당 레벨의 점수를 나타낸다. 예를 들어, 점수는 해당 레벨에 존재할 확률을 나타낼 수 있다. 채널은 실제 메모리 채널이거나 메모리 채널의 모델일 수 있다.
도 11은 본 개시의 예시적 실시예에 따른 메모리 장치에 대한 정보의 프로그램을 위한 프로세스를 나타내는 도면이다. 일부 실시예에서, 이러한 동작들은 장치의 기능적 요소를 제어하기 위해 코드 세트를 실행하는 프로세서를 포함하는 시스템에 의해 수행될 수 있다. 추가적으로 또는 대안으로, 프로세스는 특수 목적의 하드웨어를 사용하여 수행될 수 있다. 일반적으로, 이러한 동작은 본 개시의 양상에 따라 설명된 방법 및 프로세스에 따라 수행될 수 있다. 예를 들어, 동작들은 다양한 하위 단계들로 구성되거나 여기에 설명된 다른 동작들과 함께 수행될 수 있다.
단계 1100에서, 시스템은 임베딩된 정보 심볼을 생성하기 위해 임베딩 파라미터를 기초로 정보 비트들의 세트를 임베딩 공간에 임베딩한다. 일부 실시예에서, 이 단계의 동작은 도 8을 참조하여 설명된 임베딩 레이어를 참조하거나 이에 의해 수행될 수 있다.
동작 1105에서, 시스템은 제약된 심볼을 생성하기 위해 임베디드 정보 심볼을 제약하는 시그모이드 함수를 적용한다. 예시적 실시예에서, 이 단계의 동작은 도 8을 참조하여 설명된 시그모이드 레이어를 참조하거나 이에 의해 수행될 수 있다.
동작 1110에서, 시스템은 유효한 동적 범위 내의 전압에 대응하는 스케일링된 심볼을 생성하기 위해 제한된 심볼을 스케일링하며, 여기서 정보 비트들의 세트는 스케일링된 심볼에 기초하여 매핑된다. 예시적 실시예에서, 이 단계의 동작은 도 8을 참조하여 설명된 스케일링 레이어를 참조하거나 이에 의해 수행될 수 있다.
학습
도 12는 본 개시의 예시적 실시예에 따른 메모리 장치의 프로그램 전압들을 선택하는 인공 신경망의 학습을 위한 프로세스를 나타내는 도면이다. 예시적 실시예에서, 이러한 동작들은 장치의 기능적 요소를 제어하기 위해 코드 세트를 실행하는 프로세서를 포함하는 시스템에 의해 수행될 수 있다. 추가적으로 또는 대안으로, 프로세스는 특수 목적의 하드웨어를 사용하여 수행될 수 있다. 일반적으로, 이러한 동작들은 본 개시의 양상에 따라 설명된 방법 및 프로세스에 따라 수행될 수 있다. 예를 들어, 동작들은 다양한 하위 단계들로 구성되거나 여기에 설명된 다른 동작들과 함께 수행될 수 있다.
동작 1200에서, 시스템은 임베딩 파라미터들의 세트와 네트워크 파라미터들의 세트를 초기화한다. 일부 실시예에서, 이 단계의 동작은 도 7 및 도 8을 참조하여 설명된 프로그램 네트워크를 참조하거나 그에 의해 수행될 수 있다. 일부 실시예에서, 학습 프로세스는 프로그램 네트워크의 파라미터(즉, 임베딩 레이어의 값)를 무작위로 초기화한다. 그 후, 학습 프로세스는 독출 네트워크의 파라미터(가중치 및 바이어스(bias))를 무작위로 초기화할 수 있다.
동작 1205에서, 시스템은 임베딩 파라미터를 기초로 정보 비트들의 세트를 하나 이상의 메모리 셀의 전압 레벨에 매핑한다. 예를 들어, 매핑은 도 6을 참조하여 설명한 프로그래밍 성상도를 기반으로 수행될 수 있다. 일부 실시예에서, 이 단계의 동작들은 도 7 및 도 8을 참조하여 설명된 바와 같이 프로그램 네트워크를 참조하거나 이에 의해 수행될 수 있다.
동작 1210에서, 시스템은 네트워크 파라미터를 기초로 ANN을 이용하여 예측 정보 비트들의 세트를 확인한다. 일부 실시예에서, 이 단계의 동작들은 도 7 및 도 9를 참조하여 설명된 독출 네트워크를 참조하거나 이에 의해 수행될 수 있다.
동작 1215에서, 시스템은 예측된 정보 비트들의 세트의 적어도 일부를 기초로 임베딩 파라미터들 및 네트워크 파라미터들을 업데이트한다. 예를 들어, 파라미터들는 예측된 정보 외에 추가 정보를 포함할 수 있는 ANN의 출력을 기반으로 업데이트 될 수 있다. 구체적으로, ANN의 출력은 정보 비트의 다양한 조합에 대한 점수를 포함할 수 있다. 일부 실시예에서, 이 단계의 동작들은 학습 구성 요소를 참조하거나 이에 의해 수행될 수 있다.
ANN을 이용한 출력 생성 및 ANN의 파라미터들의 업데이트의 프로세스는 학습 프로세스가 완료되기 전에 다수 반복될 수 있다. 예를 들어, 학습 프로세스는 임계 정확도에 도달할 때까지, 미리 결정된 학습 반복 횟수가 수행될 때까지, 또는 네트워크 파라미터가 수렴될 때까지 계속될 수 있다. 일 실시예에서, 시스템은 업데이트된 네트워크 파라미터를 생성하기 위해 임베딩 파라미터에 기초하여 네트워크 파라미터를 업데이트하고, 업데이트된 임베딩 파라미터를 생성하기 위해 업데이트된 네트워크 파라미터에 기초하여 임베딩 파라미터를 업데이트 할 수 있다.
일 실시예에 따르면, 네트워크 파라미터의 업데이트는 다음 알고리즘에 따라 수행될 수 있다. 본 개시의 알고리즘의 각 반복에서, 프로그램 및 독출 네트워크는 최적화되고, 교차 엔트로피는 최소화될 수 있다. 즉, 시스템은 복수의 학습 반복들을 수행할 수 있고, 임베딩 파라미터 및 네트워크 파라미터는 복수의 학습 반복들 각각 동안 업데이트될 수 있다. 교차 엔트로피는 각 반복마다 2회 최적화될 수 있다. 이하에서,
Figure pat00004
는 프로그램 네트워크이고,
Figure pat00005
는 독출 네트워크이고, 'Info'는 각 네트워크 사용 당 정보 비트 미니배치를 나타내고, '
Figure pat00006
'는 독출 네트워크 출력에서 추정된 정보 비트 미니배치를 나타내고, 변수
Figure pat00007
,
Figure pat00008
는 학습률을 나타내고, CrossEntropy(info,
Figure pat00009
) 는 교차 엔트로피를 나타낸다.
Figure pat00010
학습 알고리즘 예시
따라서, 특정 실시예에 따르면, 예측된 점수들과 실제 전압 레벨들을 이용하여 손실 함수를 계산할 수 있다. 손실 함수에 대한 옵션은 교차 엔트로피이나, 다른 옵션도 존재한다. 손실의 기울기는 프로그램 네트워크와 독출 네트워크 모두에서 최적화 가능한 모든 파라미터와 관련하여 계산된다. 예를 들어, 정보 비트들의 세트 및 예측 정보 비트들의 세트의 분류 손실 함수의 기울기가 계산되고, 여기서 임베딩 파라미터들 또는 네트워크 파라미터들은 분류 손실 함수의 기울기에 기초하여 업데이트된다. 파라미터들은 손실을 최소화하기 위해 기울기를 사용하여 업데이트된다. 업데이트는 확률적 기울기 하강법, Adam 등과 같은 적절한 최적화 알고리즘을 사용하여 수행될 수 있다. 이러한 단계들은 수렴이 있을 때까지 반복될 수 있다. 학습의 추가 변형은, 프로그램 네트워크 업데이트와 독출 네트워크 업데이트 사이에서 각 단계를 전환하는 것이다.
학습에서는 기울기가 계산될 수 있다. 기울기는 미분할 수 있고 명시적인 수학적 형식을 가진 함수를 통해 계산할 수 있다. 프로그램 네트워크와 독출 네트워크는 이러한 기능이며 TensorFlow 및 PyTorch와 같은 표준 라이브러리를 사용하여 차별화될 수 있다. 학습 루프에서 실제 메모리 모델이 이용되는 경우, 본 개시는 수학적 표현의 부족으로 인해, 학습 루프를 통해 차별화할 수 없다. 따라서 REINFORCE 추정으로 알려진 추정이 이용될 수 있다. 예를 들어, 메모리 모델은 추가 메모리 셀들로부터의 데이터에 기초하여 업데이트 될 수 있다.
또는, 메모리 모델이 이용될 수 있다. 메모리 모델은 K 전압들을 입력으로 취하고 노이즈 손상 전압을 나타내는 K 전압들을 반환하는 생성 모델일 수 있다. 생성 모델은, 미분 가능하고 모수적(parametric) 가우시안 모델 또는 적대적 생성 네트워크와 같은 임의의 구성 요소를 포함하는 모든 수학적 표현이다. 메모리 모델은 메모리 모델이 실제 메모리 동작을 가능한 한 가깝게 모방하도록 물리적 메모리 장치에서 수집된 측정과 함께 사용될 수 있다. 생성 모델 피팅은 알려진 학습 프로세스이다. 즉, 메모리 모델은 실제 메모리 장치의 노이즈 분포를 시뮬레이션 할 수 있다. 일단 장착되면 위에서 설명한 학습 프로세스에서 메모리 모델을 사용할 수 있으며 메모리 모델을 차별화할 수 있다.
메모리 모델 옵션이 이용되는 경우, 최적화 과정에서 모델이 재구성될 수 있다. 재구성은 사용된 성상도에 따라 메모리 및 동작이 변경될 수 있기 때문이다. 따라서, 프로그램 네트워크를 업데이트하는 여러 단계들 후에, 현재의 성상도를 사용하여 실제 메모리 장치로부터 새로운 측정 값들이 수집될 수 있고, 이러한 측정 값들을 사용하여 메모리 모델이 재구성될 수 있으며, 학습은 계속될 수 있다.
따라서, 본 개시는 다음의 실시예들을 포함한다.
메모리 장치에 대한 프로그램 전압들을 선택하는 방법이 설명된다. 방법의 실시예들은 복수의 임베딩 파라미터에 기초하여 정보 비트들의 세트를 하나 이상의 메모리 셀의 전압 레벨에 매핑하고, 매핑에 기초하여 정보 비트들의 세트를 하나 이상의 메모리 셀들로 프로그래밍하고, 하나 이상의 검출된 전압 레벨을 생성하기 위해 하나 이상의 메모리 셀의 전압 레벨을 검출하고, 복수의 네트워크 파라미터를 포함하는 신경망을 이용하여 하나 이상의 검출된 전압 레벨들에 기초하여 예측된 정보 비트들의 세트를 식별하는 것을 포함할 수 있다. 여기서 네트워크 파라미터들은 임베팅 파라미터들과 함께 학습될 수 있다.
메모리 장치의 프로그램 전압들을 선택하는 장치가 설명된다. 장치는 프로세서, 프로세서와 전자 통신하는 메모리, 및 메모리에 저장된 명령어를 포함할 수 있다. 명령어는 프로세서가 복수의 임베딩 파라미터에 기초하여 정보 비트들의 세트를 하나 이상의 메모리 셀의 전압 레벨에 매핑하고, 매핑에 기초하여 정보 비트들의 세트를 하나 이상의 메모리 셀로 프로그램하고, 하나 이상의 메모리 셀의 전압 레벨을 검출하여 하나 이상의 검출된 전압 레벨을 생성하고, 복수의 네트워크 파라미터를 포함하는 신경망을 사용하여 하나 이상의 검출된 전압 레벨에 기초하여 예측된 정보 비트들의 세트를 확인하도록 동작할 수 있으며, 여기서 네트워크 파라미터들은 임베딩 파라미터들과 함께 학습될 수 있다.
메모리 장치의 프로그램 전압들을 선택하는 코드를 저장하는 비일시적 컴퓨터 판독 가능 매체가 설명된다. 일부 실시예들에서, 코드는 프로세서에 실행가능한 명령어를 포함한다. 명령어는 복수의 임베딩 파라미터에 기초하여 정보 비트들의 세트를 하나 이상의 메모리 셀의 전압 레벨들에 매핑하고, 매핑에 기초하여 정보 비트들의 세트를 하나 이상의 메모리 셀로 프로그램하고, 하나 이상의 메모리 셀의 전압 레벨을 검출하여 하나 이상의 검출된 전압 레벨을 생성하고, 복수의 네트워크 파라미터를 포함하는 신경망을 사용하여 하나 이상의 검출된 전압 레벨에 기초하여 예측된 정보 비트들의 세트를 확인하도록 동작할 수 있으며, 여기서 네트워크 파라미터들은 임베딩 파라미터들과 함께 학습될 수 있다.
전술한 방법, 장치, 비일시적 컴퓨터 판독 가능 매체 및 시스템의 일부 예는 정보 비트들의 세트에 그레이 코드를 적용하는 것을 더 포함할 수 있으며, 여기서 매핑은 그레이 코드에 기초한다. 일부 실시예에서, 하나 이상의 메모리 셀은 복수의 메모리 셀을 포함하고, 복수의 임베딩 파라미터는 메모리 셀의 수와 동일한 수의 차원을 갖는 어레이를 포함한다.
전술한 방법, 장치, 비일시적 컴퓨터 판독 가능 매체 및 시스템의 일부 예는 임베딩된 정보 심볼을 생성하기 위해 임베딩 파라미터에 기초하여 임베딩 공간에 정보 비트들의 세트를 임베딩하는 것을 더 포함할 수 있다. 일부 실시예는 제약된 심볼을 생성하기 위해 임베디드 정보 심볼을 제약하는 시그모이드 함수를 적용하는 것을 더 포함할 수 있다. 일부 실시예는 유효 동적 범위 내의 전압에 대응하는 스케일링 된 심볼을 생성하기 위해 제약된 심볼을 스케일링하는 것을 더 포함할 수 있으며, 여기서 정보 비트들의 세트는 스케일링된 심볼에 기초하여 매핑된다.
전술한 방법, 장치, 비일시적 컴퓨터 판독 가능 매체 및 시스템의 일부 예는 신경망을 사용하여 검출된 전압 레벨에 기초하여 정보 비트 확률 세트를 생성하는 것을 더 포함할 수 있다. 일부 실시예는 정보 비트 확률들의 세트로부터 가장 높은 정보 비트 확률을 선택하는 것을 더 포함할 수 있으며, 여기서 예측된 정보 비트들의 세트는 가장 높은 정보 비트 확률에 기초하여 확인된다.
메모리 장치의 프로그램 전압들을 선택하는 방법이 설명된다. 방법의 실시 예는 임베딩 파라미터들의 세트 및 네트워크 파라미터들의 세트를 초기화하고, 임베딩 파라미터들에 기초하여 정보 비트들의 세트를 하나 이상의 메모리 셀의 전압 레벨에 매핑하고, 네트워크 파라미터들에 기초하여 ANN을 사용하여 예측된 정보 비트들의 세트를 확인하고, 예측된 정보 비트들의 세트에 적어도 부분적으로 기초하여 임베딩 파라미터들 및 네트워크 파라미터들을 업데이트하는 단계를 포함한다.
메모리 장치의 프로그램 전압들을 선택하는 장치가 설명된다. 장치는 프로세서, 프로세서와 전자 통신하는 메모리, 및 메모리에 저장된 명령어를 포함한다. 명령어는 프로세서가 임베딩 파라미터들 및 네트워크 파라미터들을 초기화하고, 임베딩 파라미터들에 기초하여 정보 비트들의 세트를 하나 이상의 메모리 셀의 전압 레벨들에 매핑하고, 네트워크 파라미터에 기반한 ANN을 사용하여 예측된 정보들의 세트를 확인하고, 예측된 정보 비트들의 세트의 적어도 부분적으로 기초하여 임베딩 파라미터들 및 네트워크 파라미터들을 업데이트하도록 동작할 수 있다.
메모리 장치의 프로그램 전압들을 선택하는 코드를 저장하는 비일시적 컴퓨터 판독 가능 매체가 설명된다. 일부 실시예들에서, 코드는 프로세서가 실행가능한 명령어를 포함한다. 명령어는 복수의 임베딩 파라미터 및 네트워크 파라미터의 세트를 초기화하고, 임베딩 파라미터들에 기초하여 하나 이상의 메모리 셀의 전압 레벨들에 정보 비트들의 세트를 매핑하고, 네트워크 파라미터에 기초한 ANN을 사용하여 예측된 정보 비트들의 세트, 그리고 예측된 정보 비트들의 세트에 적어도 부분적으로 기초하여 임베딩 파라미터들 및 네트워크 파라미터들을 업데이트하도록 동작할 수 있다.
전술한 방법, 장치, 비일시적 컴퓨터 판독 가능 매체 및 시스템의 일부 예는 업데이트된 네트워크 파라미터들을 생성하기 위해 임베딩 파라미터들에 기초하여 네트워크 파라미터들을 업데이트하는 것을 더 포함할 수 있다. 일부 실시예는 업데이트된 임베딩 파라미터들을 생성하기 위해 업데이트된 네트워크 파라미터들에 기초하여 임베딩 파라미터들을 업데이트하는 것을 더 포함할 수 있다.
전술한 방법, 장치, 비일시적 컴퓨터 판독 가능 매체 및 시스템의 일부 예는 복수의 학습 반복을 수행하는 것을 더 포함할 수 있으며, 여기서 임베딩 파라미터 및 네트워크 파라미터는 각각의 학습 반복 동안 업데이트될 수 있다.
전술한 방법, 장치, 비일시적 컴퓨터 판독 가능 매체 및 시스템의 일부 예는 정보 비트들의 세트 및 예측 정보 비트들의 세트의 분류 손실 함수의 기울기를 계산하는 것을 더 포함할 수 있으며, 여기서 임베딩은 파라미터들 또는 네트워크 파라미터들은 분류 손실 함수의 기울기에 따라 업데이트될 수 있다.
일부 실시예들에서, 기울기는 물리적 NAND 채널의 근사치를 포함한다. 예를 들어, 기울기는 하나 이상의 물리적 NAND 채널로부터 얻은 측정에 기초한 수학적 표현을 포함할 수 있다. 전술한 방법, 장치, 비일시적 컴퓨터 판독 가능 매체 및 시스템의 일부 예는 하나 이상의 메모리 셀의 수학적 모델을 식별하는 것을 더 포함할 수 있으며, 분류 손실 함수의 기울기는 수학적 모델에 기초하여 계산된다. 전술한 방법, 장치, 비일시적 컴퓨터 판독 가능 매체 및 시스템의 일부 예는 추가 메모리 셀로부터의 데이터에 기초하여 수학적 모델을 업데이트하는 것을 더 포함할 수 있다.
전술한 방법, 장치, 비일시적 컴퓨터 판독 가능 매체 및 시스템의 일부 예는 매핑에 기초하여 정보 비트들의 세트를 하나 이상의 메모리 셀로 프로그래밍하는 것을 더 포함할 수 있다. 일부 실시예는 하나 이상의 검출된 전압 레벨을 생성하기 위해 하나 이상의 메모리 셀의 전압 레벨을 검출하는 것을 더 포함할 수 있으며, 여기서 예측된 정보 비트들의 세트는 하나 이상의 검출된 전압 레벨에 기초하여 확인된다.
전술한 방법, 장치, 비일시적 컴퓨터 판독 가능 매체 및 시스템의 일부 예는 신경망을 사용하여 검출된 전압 레벨에 기초하여 정보 비트 확률들의 세트를 생성하는 것을 더 포함할 수 있으며, 여기서 예측 정보 비트들의 세트는 가장 높은 정보 비트 확률을 기반으로 확인된다. 일부 실시예에서, 하나 이상의 메모리 셀은 복수의 메모리 셀을 포함하고, 복수의 임베딩 파라미터는 메모리 셀의 수와 동일한 수의 차원을 갖는 어레이를 포함한다.
전술한 방법, 장치, 비일시적 컴퓨터 판독 가능 매체 및 시스템의 일부 예는 임베디드 심볼을 생성하기 위해 임베딩 파라미터에 기초하여 정보 비트들의 세트를 임베딩 공간에 임베딩하는 것을 더 포함할 수 있다. 일부 실시예에서, 제약된 심볼을 생성하기 위해 임베디드 정보 심볼을 제약하는 시그모이드 함수를 적용하는 것을 더 포함할 수 있다. 일부 실시예서, 스케일링된 심볼을 생성하기 위해 제약된 심볼을 스케일링하는 것을 더 포함할 수 있으며, 여기서 정보 비트 세트는 스케일링된 심볼에 기초하여 매핑된다.
메모리 장치의 프로그램 전압들을 선택하는 장치가 설명된다. 장치의 실시 예는 복수의 메모리 셀, 복수의 임베딩 파라미터에 기초한 임베딩 레이어를 포함하는 프로그래밍 구성 요소, 및 복수의 네트워크 파라미터에 기초한 신경망을 포함하는 독출 구성 요소를 포함할 수 있으며, 여기서 네트워크 파라미터들은 임베딩 파라미터들과 함께 학습될 수 있다.
메모리 장치의 프로그램 전압들을 선택하는 장치를 제조하는 방법을 설명한다. 방법은 복수의 메모리 셀을 제공하고, 복수의 임베딩 파라미터에 기초한 임베딩 레이어를 포함하는 프로그래밍 구성 요소를 제공하고, 복수의 네트워크 파라미터에 기초한 신경망을 포함하는 독출 구성 요소를 제공하는 단계를 포함할 수 있으며, 여기서 네트워크 파라미터들은 임베딩 파라미터들과 함께 학습될 수 있다.
메모리 장치의 프로그램 전압들을 선택하는 장치를 사용하는 방법을 설명한다. 방법은 복수의 메모리 셀을 사용하고, 복수의 임베딩 파라미터에 기초한 임베딩 레이어를 포함하는 프로그래밍 구성 요소를 사용하고, 복수의 네트워크 파라미터에 기초한 신경망을 포함하는 독출 구성 요소를 사용하는 단계를 포함할 수 있으며, 여기서 네트워크 파라미터들은 임베딩 파라미터들과 함께 학습될 수 있다.
일부 실시예들에서, 프로그래밍 구성 요소는 시그모이드 레이어 및 스케일링 레이어를 더 포함한다. 일부 실시예에서, 신경망은 확률 기반 분류기를 포함한다. 일부 실시예에서, 복수의 메모리 셀은 NAND 메모리 셀을 포함한다.
따라서, 본 개시는 프로그램 전압들의 자동 선택을 제공할 수 있고, 각각의 새로운 메모리 장치 버전 또는 세대에 대해 반복적으로 호출될 수 있으며, (수동 작업에 비해) 성상도를 빠르게 생성할 수 있다. 본 개시의 실시예는 최적화 프로세스(학습 프로세스)를 기반으로 하며, 미리 만들어진 솔루션보다 더 빠르게, 그리고 수동 시행 착오 또는 휴리스틱보다 더 나은 성상도를 찾는 능력을 제공한다. 또한, 본 개시의 실시예들은 메모리 장치로부터 수집된 실제 데이터를 사용하며, 이는 종래의 프로그래밍 성상도와 비교할 때 특정 문제에 적합한 성상도를 제공한다.
본 개시의 설명 및 도면은 예시적인 구성을 나타내며 청구범위 내의 모든 구현을 나타내는 것은 아니다. 예를 들어, 동작들 및 단계들은 재배열, 결합 또는 수정될 수 있다. 또한, 구조와 장치는 구성 요소 간의 관계를 표현하고, 설명된 개념이 모호해지는 것을 방지하기 위해 블록 다이어그램의 형태로 표현될 수 있다. 유사한 구성 요소 또는 기능은 동일한 이름을 가질 수 있지만 다른 도면에 해당하는 다른 참조 번호를 가질 수 있다.
본 개시의 내용에 대한 일부 수정은 당업자에게 용이하게 명백할 수 있고, 본 개시에 정의된 원리는 본 개시의 내용의 범위를 벗어나지 않고, 다른 변형에 적용될 수 있다. 따라서, 본 개시는 본 명세서에 설명된 예 및 설계로 제한되지 않고 본 명세서에 개시된 원리 및 신규한 특징과 일치하는 가장 넓은 범위에 따라야 한다.
설명된 방법은 범용 프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적 회로 (ASIC), 필드 프로그래밍 가능 게이트 어레이(FPGA) 또는 기타 프로그래밍 가능 로직 장치, 개별 게이트 또는 트랜지스터 로직, 개별 하드웨어 구성 요소, 또는 이들의 조합을 포함하는 장치에 의해 구현되거나 수행될 수 있다. 범용 프로세서는 마이크로 프로세서, 기존 프로세서, 컨트롤러, 마이크로 컨트롤러 또는 상태 머신 일 수 있다. 또한, 프로세서는 컴퓨팅 장치의 조합(예를 들어, DSP와 마이크로 프로세서의 조합, 다중 마이크로 프로세서, DSP 코어와 관련된 하나 이상의 마이크로 프로세서, 또는 임의의 다른 그러한 구성)으로 구현될 수 있다. 따라서, 여기에 설명된 기능은 하드웨어 또는 소프트웨어로 구현 될 수 있으며, 프로세서, 펌웨어 또는 이들의 임의의 조합에 의해 실행될 수 있다. 프로세서에 의해 실행되는 소프트웨어로 구현되는 경우, 기능은 컴퓨터 판독 가능 매체에 명령어 또는 코드 형태로 저장될 수 있다.
컴퓨터 판독 가능 매체는 비일시적 컴퓨터 저장 매체 및 코드 또는 데이터의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체를 모두 포함한다. 비일시적 저장 매체는 컴퓨터가 액세스 할 수 있는 모든 사용 가능한 매체 일 수 있다. 예를 들어, 비일시적 컴퓨터 판독 가능 매체는 RAM(Random Access Memory), ROM(Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), CD(Compact Disk) 또는 기타 광학 디스크 스토리지, 자기 데이터 또는 코드를 전달하거나 저장하기 위한 디스크 스토리지 또는 기타 비 일시적 매체일 수 있다.
또한, 연결 구성 요소는 컴퓨터 판독 가능 매체로 적절하게 지칭될 수 있다. 예를 들어, 웹 사이트, 서버 또는 기타 원격 소스에서 동축 케이블, 광섬유 케이블, 트위스트 페어, DSL(디지털 가입자 회선) 또는 적외선, 라디오 또는 마이크로파 신호와 같은 무선 기술을 사용하여 코드나 데이터를 전송하는 경우, 동축 케이블, 광섬유 케이블, 연선, DSL 또는 무선 기술이 매체 정의에 포함된다. 매체의 조합은 또한 컴퓨터 판독 가능 매체의 범위 내에 포함된다.
본 명세서 및 청구범위에서 "또는"이라는 단어는, 예를 들어, X, Y 또는 Z의 목록이 X 또는 Y 또는 Z 또는 XY 또는 XZ 또는 YZ 또는 XYZ를 의미하는 포괄적 목록을 의미한다. 또한 "기반"이라는 구는 닫힌 조건 집합을 나타내는데 사용되지 않는다. 예를 들어, "조건 A 기반"으로 설명되는 단계는 조건 A 및 조건 B 모두에 기반할 수 있다. 즉, "기반"이라는 문구는 "적어도 부분적으로 기반"을 의미하는 것으로 해석되어야 한다. 또한 단수의 단어는 "적어도 하나"를 나타낸다.

Claims (20)

  1. 메모리 장치의 동작 방법에 있어서,
    제1 신경망을 이용하여 복수의 임베딩 파라미터를 기초로 정보 비트들의 세트를 하나 이상의 메모리 셀에 프로그래밍하는 단계;
    상기 복수의 임베딩 파라미터와 함께 학습되는 복수의 네트워크 파라미터를 포함하는 제2 신경망을 이용하여 상기 하나 이상의 메모리 셀의 전압 레벨을 기초로 예측된 정보 비트들의 세트를 결정하는 단계; 및
    상기 예측된 정보 비트들의 세트를 기초로 상기 메모리 장치로부터 상기 정보 비트들을 독출하는 단계;를 포함하는 동작 방법.
  2. 제1항에 있어서,
    상기 복수의 임베딩 파라미터를 기초로 상기 정보 비트들의 세트를 상기 하나 이상의 메모리 셀의 전압 레벨에 매핑하는 단계; 및
    상기 하나 이상의 메모리 셀의 전압 레벨을 검출하는 단계;를 더 포함하는 동작 방법.
  3. 제1항에 있어서,
    상기 하나 이상의 메모리 셀은, 복수의 메모리 셀들을 포함하고,
    상기 복수의 임베딩 파라미터는, 상기 복수의 메모리 셀들의 수와 동일한 수의 차원을 갖는 어레이를 포함하는 것을 특징으로 하는 동작 방법.
  4. 제1항에 있어서,
    임베딩된 정보 심볼을 생성하기 위해 상기 복수의 임베딩 파라미터를 기초로 상기 정보 비트들의 세트를 임베딩 공간에 임베딩하는 단계;
    제한된 심볼을 생성하기 위해 상기 임베딩된 정보 심볼에 시그모이드(sigmoid) 함수를 적용하는 단계; 및
    유효 동적 범위 내의 전압에 대응하는 스케일링된 심볼을 생성하기 위해 상기 제한된 심볼을 스케일링하는 단계;를 더 포함하고,
    상기 정보 비트들의 세트는,
    상기 스케일링된 심볼을 기초로 매핑되는 것을 특징으로 하는 동작 방법.
  5. 제1항에 있어서,
    상기 제2 신경망을 이용하여 상기 하나 이상의 메모리 셀의 전압 레벨에 기초하여 정보 비트 확률들의 세트를 생성하는 단계; 및
    상기 정보 비트 확률들의 세트로부터 가장 높은 정보 확률을 선택하는 단계;를 포함하고,
    상기 예측된 정보 비트들의 세트는, 상기 가장 높은 정보 확률을 기초로 확인되는 것을 특징으로 하는 동작 방법.
  6. 복수의 임베딩 파라미터 및 복수의 네트워크 파라미터를 초기화하는 단계;
    상기 복수의 임베딩 파라미터를 기초로 정보 비트들의 세트를 하나 이상의 메모리 셀의 전압 레벨에 매핑하는 단계;
    상기 복수의 네트워크 파라미터를 기초로 인공 신경망을 이용하여 예측된 정보 비트들의 세트를 확인하는 단계; 및
    상기 예측된 정보 비트들의 세트의 적어도 일부를 기초로 상기 복수의 임베딩 파라미터 및 상기 복수의 네트워크 파라미터를 업데이트하는 단계;를 포함하는 메모리 장치의 인공 신경망의 학습 방법.
  7. 제6항에 있어서,
    업데이트된 상기 복수의 네트워크 파라미터를 생성하기 위해 상기 복수의 임베딩 파라미터를 기초로 상기 복수의 네트워크 파라미터를 업데이트하는 단계; 및
    업데이트된 상기 복수의 임베딩 파라미터를 생성하기 위해 업데이트된 상기 복수의 네트워크 파라미터를 기초로 상기 복수의 임베딩 파라미터를 업데이트하는 단계;를 포함하는 메모리 장치의 인공 신경망의 학습 방법.
  8. 제6항에 있어서,
    복수의 학습 반복을 수행하는 단계;를 포함하고,
    상기 복수의 임베딩 파라미터 및 상기 복수의 네트워크 파라미터는 상기 복수의 학습 반복의 각각에서 업데이트되는 것을 특징으로 하는 메모리 장치의 인공 신경망의 학습 방법.
  9. 제6항에 있어서,
    상기 정보 비트들의 세트 및 상기 예측된 정보 비트들의 세트의 분류 손실 함수의 기울기를 계산하는 단계;를 포함하고,
    상기 복수의 임베딩 파라미터 또는 상기 복수의 네트워크 파라미터는 상기 분류 손실 함수의 기울기를 기초로 업데이트되는 것을 특징으로 하는 메모리 장치의 인공 신경망의 학습 방법.
  10. 제9항에 있어서,
    상기 기울기는, 물리적 NAND 채널의 근사값을 포함하는 것을 특징으로 하는 메모리 장치의 인공 신경망의 학습 방법.
  11. 제9항에 있어서,
    상기 하나 이상의 메모리 셀의 수학적 모델을 확인하는 단계;를 포함하고,
    상기 분류 손실 함수의 기울기는, 상기 수학적 모델을 기초로 계산되는 것을 특징으로 하는 메모리 장치의 인공 신경망의 학습 방법.
  12. 제11항에 있어서,
    추가적인 메모리 셀들로부터의 데이터를 기초로 상기 수학적 모델을 업데이트하는 단계;를 포함하는 메모리 장치의 인공 신경망의 학습 방법.
  13. 제6항에 있어서,
    상기 매핑을 기초로 상기 하나 이상의 메모리 셀에 상기 정보 비트들의 세트를 프로그램하는 단계; 및
    하나 이상의 검출된 전압 레벨들을 생성하기 위해 상기 하나 이상의 메모리 셀의 전압 레벨들을 검출하는 단계;를 포함하고,
    상기 예측된 정보 비트들의 세트는, 상기 하나 이상의 검출된 전압 레벨들을 기초로 확인되는 것을 특징으로 하는 메모리 장치의 인공 신경망의 학습 방법.
  14. 제12항에 있어서,
    상기 신경망을 이용하여 상기 하나 이상의 검출된 전압 레벨들을 기초로 정보 비트 확률들의 세트를 생성하는 단계;를 포함하고,
    상기 예측된 정보 비트들의 세트는, 상기 정보 비트 확률들의 세트 중 가장 높은 정보 비트 확률을 기초로 확인되는 것을 특징으로 하는 메모리 장치의 인공 신경망의 학습 방법.
  15. 제6항에 있어서,
    상기 하나 이상의 메모리 셀은, 복수의 메모리 셀들을 포함하고,
    상기 복수의 임베딩 파라미터는, 상기 복수의 메모리 셀들의 수와 동일한 수의 차원을 갖는 어레이를 포함하는 것을 특징으로 하는 메모리 장치의 인공 신경망의 학습 방법.
  16. 제6항에 있어서,
    임베딩된 정보 심볼을 생성하기 위해 상기 복수의 임베딩 파라미터를 기초로 상기 정보 비트들의 세트를 임베딩 공간에 임베딩하는 단계;
    제한된 심볼을 생성하기 위해 상기 임베딩된 정보 심볼에 시그모이드(sigmoid) 함수를 적용하는 단계; 및
    유효 동적 범위 내의 전압에 대응하는 스케일링된 심볼을 생성하기 위해 상기 제한된 심볼을 스케일링하는 단계;를 포함하고,
    상기 정보 비트들의 세트는,
    상기 스케일링된 심볼을 기초로 매핑되는 것을 특징으로 하는 메모리 장치의 인공 신경망의 학습 방법.
  17. 복수의 메모리 셀;
    복수의 임베딩 파라미터를 기초로 하는 임베딩 레이어를 포함하는 프로그래밍 구성 요소; 및
    복수의 네트워크 파라미터를 기초로 하는 신경망을 포함하는 독출 구성 요소;를 포함하고,
    상기 복수의 네트워크 파라미터는 상기 복수의 임베딩 파라미터와 함께 학습되는 것을 특징으로 하는 메모리 장치.
  18. 제17항에 있어서,
    상기 프로그래밍 구성 요소는, 시그모이드 레이어 및 스케일링 레이어를 포함하는 것을 특징으로 하는 메모리 장치.
  19. 제17항에 있어서,
    상기 신경망은, 확률 기반 분류기를 포함하고,
    상기 복수의 메모리 셀은, NAND 메모리 셀을 포함하는 것을 특징으로 하는 메모리 장치.
  20. 제1항 내지 제16항 중 어느 하나의 방법을 프로세서에서 실행시키기 위한 명령어들을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
KR1020210062163A 2020-06-05 2021-05-13 메모리 장치 및 이의 동작 방법 KR20210152385A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/893,866 US11587620B2 (en) 2020-06-05 2020-06-05 Automatic program voltage selection network
US16/893,866 2020-06-05

Publications (1)

Publication Number Publication Date
KR20210152385A true KR20210152385A (ko) 2021-12-15

Family

ID=78604912

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210062163A KR20210152385A (ko) 2020-06-05 2021-05-13 메모리 장치 및 이의 동작 방법

Country Status (4)

Country Link
US (2) US11587620B2 (ko)
KR (1) KR20210152385A (ko)
CN (1) CN113764019A (ko)
DE (1) DE102020120212A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11587620B2 (en) 2020-06-05 2023-02-21 Samsung Electronics Co., Ltd. Automatic program voltage selection network
US11615782B2 (en) * 2020-11-12 2023-03-28 Sony Interactive Entertainment Inc. Semi-sorted batching with variable length input for efficient training
US11861208B2 (en) * 2020-12-22 2024-01-02 Micron Technology, Inc. Performing data operations on grouped memory cells

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7355892B2 (en) * 2006-06-30 2008-04-08 Sandisk Corporation Partial page fail bit detection in flash memory devices
KR100891005B1 (ko) * 2007-06-28 2009-03-31 삼성전자주식회사 고온 스트레스로 인한 읽기 마진의 감소를 보상하기 위한플래시 메모리 장치 및 그것의 읽기 전압 조정 방법
KR101888074B1 (ko) * 2012-01-09 2018-08-13 삼성전자주식회사 저장 장치 및 불휘발성 메모리 장치, 그리고 그것의 동작 방법
US20170140273A1 (en) * 2015-11-18 2017-05-18 Video Inform Ltd System and method for automatic selection of deep learning architecture
EP3493120A1 (en) * 2017-12-01 2019-06-05 Koninklijke Philips N.V. Training a neural network model
US10861561B2 (en) * 2019-01-22 2020-12-08 Samsung Electronics Co., Ltd. Threshold estimation in NAND flash devices
US11587620B2 (en) 2020-06-05 2023-02-21 Samsung Electronics Co., Ltd. Automatic program voltage selection network
US12119070B2 (en) * 2021-05-06 2024-10-15 Micron Technology, Inc. Memory failure prediction

Also Published As

Publication number Publication date
US11915766B2 (en) 2024-02-27
US20230147137A1 (en) 2023-05-11
CN113764019A (zh) 2021-12-07
US11587620B2 (en) 2023-02-21
US20210383871A1 (en) 2021-12-09
DE102020120212A1 (de) 2021-12-09

Similar Documents

Publication Publication Date Title
KR20210152385A (ko) 메모리 장치 및 이의 동작 방법
KR20210038290A (ko) 신경망을 사용하여 메모리 장치 상에서 노이즈 제거를 수행하는 방법
KR20200057827A (ko) 인공 신경망 모델에 기초하여 읽기 레벨들을 추론하는 스토리지 장치 및 인공 신경망 모델의 학습 방법
CN112115078B (zh) 存储系统、存储控制器及半导体存储装置
EP3944152A2 (en) Mobile electronic device and methods for programming data to and reading data from a memory device
KR20210150966A (ko) 머신 러닝을 적용하여 에러 정정 코드를 디코딩하는 방법 및 이를 적용한 디코더
US20220365693A1 (en) Managing a mode to access a memory component or a logic component for machine learning computation in a memory sub-system
CN113705603A (zh) 不完整多视角数据的聚类方法、电子设备
CN115938445A (zh) 半导体存储器设备和操作该半导体存储器设备的方法
KR20230100620A (ko) 다단 연결 코드를 사용하는 계층적 오류 정정 코드 디코딩
US12046299B2 (en) De-noising using multiple threshold-expert machine learning models
CN111341370A (zh) 半导体存储器装置、控制器、存储装置及其操作方法
US11635916B2 (en) Workload-aware memory controller based on compact workload representation and method thereof
US20230057711A1 (en) System and method for dynamic inter-cell interference compensation in non-volatile memory storage devices
US11184029B1 (en) Low power ECC for eUFS
KR20230147525A (ko) 머신 러닝을 이용한 비휘발성 메모리의 경판정 디코딩

Legal Events

Date Code Title Description
A201 Request for examination