KR20130139848A - 백-엔드 메모리 시스템 인터페이스를 동적으로 최적화하는 방법 - Google Patents

백-엔드 메모리 시스템 인터페이스를 동적으로 최적화하는 방법 Download PDF

Info

Publication number
KR20130139848A
KR20130139848A KR1020137002913A KR20137002913A KR20130139848A KR 20130139848 A KR20130139848 A KR 20130139848A KR 1020137002913 A KR1020137002913 A KR 1020137002913A KR 20137002913 A KR20137002913 A KR 20137002913A KR 20130139848 A KR20130139848 A KR 20130139848A
Authority
KR
South Korea
Prior art keywords
circuit
memory
controller
data
error
Prior art date
Application number
KR1020137002913A
Other languages
English (en)
Other versions
KR101719395B1 (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
Priority claimed from US12/835,292 external-priority patent/US8464135B2/en
Priority claimed from US13/087,640 external-priority patent/US9069688B2/en
Application filed by 샌디스크 테크놀로지스, 인코포레이티드 filed Critical 샌디스크 테크놀로지스, 인코포레이티드
Publication of KR20130139848A publication Critical patent/KR20130139848A/ko
Application granted granted Critical
Publication of KR101719395B1 publication Critical patent/KR101719395B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/221Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test buses, lines or interfaces, e.g. stuck-at or open line faults
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; 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
    • 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
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/022Detection or location of defective auxiliary circuits, e.g. defective refresh counters in I/O circuitry
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Security & Cryptography (AREA)
  • Read Only Memory (AREA)

Abstract

플래시 메모리 카드 또는 기타 유사한 구조의 장치와 같은 메모리 시스템을 위한 메모리 회로 인터페이스에 대한 내부 제어기를 위한 구조와, 대응하는 작동 기술이 제시된다. 제어기 회로와 메모리 회로(또는 회로) 사이에서 인터페이스는 제어기-메모리 전송에 기인하여 일어나는 오류량이 모니터되고, 이에 따라 전송 특징(이를테면, 클럭 레이트, 구동 강도 등)이 수정될 수 있는 피드백 프로세스를 포함한다. 비휘발성 메모리 시스템의 제어기-메모리(또는 "백-엔드") 인터페이스의 성능을 동적으로 최적화하기 위한 기술이 또한 제시된다. 메모리 시스템은 일반적으로 ECC에 의해 정정될 수 있는 오류에 대한 임의의 양의 오류 공차를 갖도록 설계된다. 장치가 새것일 때와 같은 상황에서, 시스템의 ECC 능력은 데이터 저장 오류를 정정하기 위해 필요로 되는 것을 초과한다. 이러한 상황에서 메모리 시스템은 내부적으로 오류 정정 능력의 0이 아닌(non-zero) 부분을 백-엔드 인터페이스에 할당한다. 이것은 인터페이스가 송신 경로 오류를 초래하더라도, 예를 들어, 보다 고속이거나 보다 낮은 파워에서 작동할 수 있도록 한다. 또한, 시스템은 여러 작동 조건에 의한 오류량을 결정하기 위해 백-엔드 인터페이스를 교정할 수 있어서, 백-엔드 인터페이스의 작동 파라미터가 전송 프로세스에 할당된 오류량에 따라 설정될 수 있도록 한다.

Description

백-엔드 메모리 시스템 인터페이스를 동적으로 최적화하는 방법{DYNAMIC OPTIMIZATION OF BACK-END MEMORY SYSTEM INTERFACE}
이 출원은, 반도체 플래시 메모리와 같은 재프로그램 가능한 비휘발성 메모리 시스템의 작동에 관한 것이고, 보다 구체적으로는, 메모리 시스템의 제어기와 메모리 회로 사이의 내부 인터페이스에 관한 것이다.
전하를 비휘발성으로 저장할 수 있는, 특히 소형 폼 팩터 카드로서 패키지되는 EEPROM 및 플래시 EEPROM 형태의 고체 상태 메모리는 최근에 다양한 모바일 및 휴대 장치, 특히 정보 기기 및 소비자 전자 제품에서 선택되는 저장장치가 되었다. 고체 상태 메모리이기도 한 RAM(random access momory)과는 달리, 플래시 메모리는 비휘발성이고 전원이 꺼진 후에도 자신의 저장된 데이터를 보존한다. 또한, ROM(판독 전용 메모리)와는 달리, 플래시 메모리는 디스크 저장 장치와 유사하게 재기록될 수 있다. 높은 비용에도 불구하고 플래시 메모리는 점점 더 대량 저장 응용에서 사용되고 있다. 하드 드라이브 및 플로피 디스크와 같은 회전하는 자기 매체에 기초한 종래의 대량 저장장치는 모바일 및 휴대 환경엔 적합하지 않다. 이것은 디스크 드라이브가 부피가 커지기 쉽고, 기계적 고장이 나기 쉬우며 큰 레이턴시 및 큰 전력요건을 갖기 때문이다. 이들 바람직하지 못한 속성으로 인해서 디스크 기반의 저장장치는 대부분의 모바일 및 휴대 응용에서 실현되지 못한다. 반면, 내장형이면서도 착탈 가능한 카드 형태인 플래시 메모리는 이의 소형 크기, 저 전력 소비, 고속 및 고 신뢰도 특징으로 인해 모바일 및 휴대 환경에서 이상적으로 적합하다.
플래시 EEPROM은, 소거될 수 있고 새로운 데이터를 이들의 메모리 셀에 기록 또는 "프로그램"시킬 수 있는 비휘발성 메모리인 점에서 EEPROM(전기적으로 소거 가능하고 프로그램 가능한 판독 전용 메모리)와 유사하다. 이들 둘 모두는, 전계 효과 트랜지스터 구조에서, 소스영역과 드레인 영역 사이에 있는 반도체 기판 내 채널영역 위에 배치된 플로팅(연결되지 않은) 도전성 게이트를 이용한다. 이때 제어 게이트는 플로팅 게이트 위에 설치된다. 트랜지스터의 임계 전압 특징은 플로팅 게이트 상에 보존되는 전하량에 의해 제어된다. 즉, 플로팅 게이트 상에 소정 레벨의 전하에 대해서, 소스영역과 드레인 영역간에 도통이 되게 트랜지스터가 턴 "온" 되기 전에 제어 게이트에 인가되어야 하는 대응하는 전압(임계)이 있다. 특히, 플래시 EEPROM과 같은 플래시 메모리는 메모리 셀의 전체 블록이 동시에 소거될 수 있게 한다.
플로팅 게이트는 일 범위의 전하를 보존할 수 있고 따라서 임계 전압 윈도우 내의 임의의 임계 전압 레벨까지 프로그램될 수 있다. 임계 전압 윈도우의 크기는 장치의 최소 및 최대 임계 레벨에 의해 그 범위가 정해지고, 이는 플로팅 게이트에 프로그램될 수 있는 일 범위의 전하에 대응한다. 임계 윈도우는 일반적으로 메모리 장치의 특징, 작동 조건, 및 이력에 따른다. 윈도우 내의 각각의 서로 구별되고 결정이 가능한 임계 전압 레벨의 범위는 원리적으로는 셀의 명확한 메모리 상태를 지정하는데 사용될 수 있다.
메모리 셀로서 작용하는 트랜지스터는 전형적으로 두 가지 메커니즘 중 하나의 메커니즘에 의해 "프로그램된" 상태로 프로그램된다. "핫 전자 주입"에서, 드레인에 인가되는 하이(high) 전압은 기판 채널 영역을 지나는 전자를 가속시킨다. 이와 동시에, 제어 게이트에 인가되는 하이 전압은 핫 전자를 얇은 게이트 유전체를 거쳐 플로팅 게이트로 가게 한다. "터널링 주입"에서는 하이 전압이 기판에 관하여 제어 게이트에 인가된다. 이렇게 하여, 기판으로부터 전자가 개재된 플로팅 게이트로 가게 된다. "프로그램"이라는 용어는 통상적으로 메모리 상태를 변경하기 위해 메모리 셀의 초기에 소거된 전하 저장 유닛에 전자를 주입함으로써 메모리에 기록하는 것을 서술하기 위해 사용되었지만, 이제는 "기록" 또는 "기록"과 같은 보다 일반적인 용어와 상호교환적으로 사용되고 있다.
메모리 장치는 많은 메커니즘에 의해 소거될 수 있다. EEPROM에서, 메모리 셀은 플로팅 게이트 내 전자를 얇은 산화막을 통과하여 기판 채널 영역으로 터널링되게 하기 위해서(즉, 파울러-노다임 터널링) 제어 게이트에 관하여 기판에 하이 전압을 인가함으로써 전기적으로 소거될 수 있다. 통상적으로, EEPROM은 바이트씩 소거될 수 있다. 플래시 EEPROM에 있어서, 메모리는 한번에 전부 또는 한번에 하나 이상의 최소 소거 가능한 블록으로 전기적으로 소거될 수 있는데, 여기서 최소 소거 가능한 블록은 하나 이상의 섹터로 구성될 수 있고, 각 섹터는 512 또는 그 이상의 바이트의 데이터를 저장할 수 있다.
메모리 장치는 통상적으로, 카드 상에 실장될 수 있는 하나 또는 그 이상의 메모리 칩을 포함한다. 각 메모리 칩은 디코더 및 소거, 기록 판독 회로와 같은 주변 회로에 의해 지원되는 메모리 셀 어레이를 포함한다. 보다 정교한 메모리 장치는 지능형의 고 레벨의 메모리 작동, 및 인터페이싱을 수행하는 외부 메모리 제어기를 겸비하고 있다.
최근에 사용되는 많은 상업적으로 성공한 비휘발성 고체 상태 메모리 장치가 있다. 이들 메모리 장치는 플래시 EEPROM일 수도 있으며 또는 다른 유형의 비휘발성 메모리 셀을 채용할 수 있다. 플래시 메모리와 시스템 및 이들을 제조하는 방법의 예는 미국 특허 5,070,032, 5,095,344, 5,315,541, 5,343,063, 및 5,661,053, 5,313,421 및 6,222,762에 주어져 있다. 특히, NAND 스트링 구조를 갖는 플래시 메모리 장치는 미국 특허 5,570,315, 5,903,495, 6,046,935에 기술되어 있다. 또한, 비휘발성 메모리 장치는 전하를 저장하기 위한 유전층을 구비한 메모리 셀로부터도 제조된다. 앞서 기술된 도전성 플로팅 게이트 요소 대신에, 유전층이 사용된다. 유전성 저장 요소를 이용하는 이러한 메모리 장치는 Eitan 등의 "NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell" IEEE Electron Device Letters, vol. 21, no. 11, November 2000, pp. 543-545에 기재되어 있다. ONO 유전층은 소스 확산영역과 드레인 확산영역 사이의 채널을 가로질러 확장하여 있다. 한 데이터 비트용의 전하는 드레인에 인접한 유전층에 모이고 다른 데이터 비트용의 전하는 소스에 인접한 유전층에 모인다. 예를 들어, 미국 특허 5,768,192 및 6,011,725는 두 개의 이산화실리콘층 사이에 개재된 트랩 유전층을 구비한 비휘발성 메모리 셀을 개시하고 있다. 복수-상태 데이터 저장장치는 유전층 내 공간적으로 분리된 전하 저장 영역의 바이너리 상태를 개별적으로 판독함으로써 구현된다.
판독 및 프로그램 수행을 개선하기 위해서, 어레이 내 복수의 전하 저장소자 또는 메모리 트랜지스터는 병렬로 판독되거나 프로그램된다. 이에 따라, 한 "페이지"의 메모리 소자는 함께 판독 또는 프로그램된다. 기존의 메모리 아키텍처에서, 한 행은 전형적으로 몇 개의 인터리브된 페이지를 내포하거나 한 페이지를 구성할 수도 있다. 한 페이지의 모든 메모리 소자는 함께 판독 또는 프로그램될 것이다.
플래시 메모리 시스템에서, 소거 작동은 판독 및 프로그램 작동보다 한 자리수 크기만큼 더 길게 걸릴 수 있다. 따라서, 상당 크기의 소거 블록을 취하는 것이 바람직하다. 따라서, 소거 시간을 한 큰 집단의 메모리 셀이 부담한다.
플래시 메모리의 특성은 데이터가 소거된 메모리 위치에 기록되어야 한다고 단정한다. 호스트로부터 어떤 논리 어드레스의 데이터가 업데이트될 것이라면, 한 방법은 업데이트 데이터를 동일 물리 메모리 위치에 다시 기록하는 것이다. 즉, 논리 대 물리 어드레스 맵핑은 변경되지 않는다. 그러나, 이것은 이 물리 위치를 내포하는 전체 소거 블록이 먼저 소거되고 이어서 업데이트된 데이터로 재기록되어야 함을 의미할 것이다. 이 업데이트 방법은, 특히 업데이트될 데이터가 소거 블록의 작은 부분만을 점유할지라도, 전체 소거 블록이 소거되고 재기록될 것을 요구하기 때문에 비효율적이다. 또한, 이에 따라 메모리 블록의 소거 리사이클의 빈도를 높아지게 할 것이고, 이것은 이러한 유형의 메모리 장치의 제한된 내구성 면에서 바람직하지 못하다.
호스트 시스템, 메모리 시스템 및 그외 전자 시스템의 외부 인터페이스를 통해 통신되는 데이터는 어드레스되어 플래시 메모리 시스템의 물리 위치에 맵핑된다. 전형적으로, 시스템에 의해 생성하거나 수신된 데이터 파일의 어드레스는 데이터의 논리적 블록에 관련하여 시스템을 위해 설정된 서로 구별되는 다수 범위의 연속한 논리 어드레스 공간에 맵핑된다(이하, "LBA 인터페이스"). 어드레스 공간의 크기는 전형적으로 시스템이 취급할 수 있는 전체 범위의 어드레스를 다루기에 충분하다. 한 가지 예에서, 자기 디스크 저장 드라이브는 이러한 논리 어드레스 공간을 통해 컴퓨터 또는 그외 호스트 시스템과 통신한다. 이 어드레스 공간은 디스크 드라이브의 전체 데이터 저장용량을 어드레스하기에 충분한 크기를 갖는다.
증가하는 장치 속도뿐만 아니라, 전력 소모를 감소시켜, 메모리 장치의 성능을 개선하려는 노력이 진행되고 있다. 위에 언급된 바와 같이, 비휘발성 메모리 장치는 일반적으로 버스 구조를 통해 서로 사이에서 연결된 제어기 회로 및 하나 이상의 메모리 칩으로 형성된다. 사용되는 전압값 및 주파수와 같은, 제어기/메모리 장치 인터페이스의 설정은 전형적으로 장치 고장을 피하기 위해서 충분한 안전 마진을 갖도록 예상되는 최악의 경우의 시나리오에 따라 설정된다. 결국, 대부분의 환경에서 인터페이스는 최적의 조건 미만에서 작동되고 있다. 이 인터페이스는 장치 성능에서 제한적 요인이 될 수 있기 때문에, 이들은 결국 이 인터페이스의 설계에서 개선할 여지가 있다.
발명의 일반적인 양상에 따라, 비휘발성 메모리 시스템을 작동하는 방법이 제시된다. 비휘발성 메모리 시스템은 메모리 인터페이스를 갖는 제어기 회로, 비휘발성 메모리 셀 어레이와 제어기 인터페이스를 갖는 메모리 회로, 및 제어기 회로의 메모리 인터페이스와 메모리 회로의 제어기 인터페이스에 이들 사이에서 데이터의 전송 및 명령을 위해 연결된 버스 구조를 포함한다. 메모리 시스템은 데이터가 메모리 어레이에 기록되도록 제어기로부터 전송될 때부터 축적된 0이 아닌(non-zero) 제 1 오류량을, 데이터가 메모리 어레이로부터 후속하여 다시 판독된 후에 제어기에 수신될 때까지, 용인할 수 있다. 방법은 제 1 오류량의 0이 아닌 제 1 부분을 버스 구조를 통해 제어기 회로와 메모리 회로 사이에서 데이터의 전송에 할당하고, 제 1 오류량의 나머지가 메모리 회로 상의 데이터의 기록, 저장, 및 판독에 할당되는 단계를 포함한다. 오류의 제 1 부분까지 허용하게 작동하도록 제어기 회로와 메모리 회로 사이에서 전송 특징을 설정한다.
다른 양상에서, 메모리 회로 및 제어기 회로를 포함하는 비휘발성 메모리 시스템을 작동하는 방법이 제시된다. 제어기 회로는 제어기를 메모리 회로에 연결하는 버스 구조를 위한 하나 이상의 작동 파라미터 각각에 대한 복수의 값 각각에 대해서, 다음을 수행함으로써 송신 오류 교정을 수행한다. 이 프로세스는 알려진 데이터 패턴의 데이터 세트를 제어기로부터 제어기 상의 송신 회로를 통해 버스 구조에 전송하는 단계 및 데이터 세트를 버스 구조로부터 메모리 회로 상의 수신 회로를 통해 수신하는 단계를 포함한다. 수신된 데이터 세트는 메모리 회로 상의 버퍼 메모리에 저장되고 이어서 어레이에 기록되지 않고 메모리 회로 상의 버퍼 메모리에 저장된 데이터 세트는 메모리 회로 상의 송신 회로를 통해 버스 구조에 전송된다. 버스 구조로부터 데이터 세트가 상기 제어기 상에서 수신 회로를 통해 수신되고, 수신된 데이터를 알려진 패턴과 비교가 수행된다. 비교를 기초로, 사용된 하나 이상의 작동 파라미터에 대해 전송 프로세스에 연관 오류량이 결정된다. 이어서 제어기 회로와 메모리 회로 사이에서 데이터의 송신에서 0이 아닌 제 1 오류량을 허용하게 메모리 시스템이 작동되고, 제어기 회로는 결정된 연관 오류량에 기초하여 송신 오류 교정 프로세스에 따라 작동 파라미터의 값을 선택한다.
발명의 또 다른 일반적인 측면에 따라서, 비휘발성 메모리 시스템은 메모리 인터페이스 및 논리 회로를 포함하는 제어기 회로와, 비휘발성 메모리 셀 어레이, 제어기 인터페이스, 및 논리 회로를 포함하는 메모리 회로를 갖는다. 메모리 시스템은 제어기 회로의 메모리 인터페이스와 메모리 회로의 제어기 인터페이스에 이들 사이에서 데이터와 명령을 전송하기 위해 연결된 버스 구조를 또한 포함한다. 제어기 및 메모리 회로의 수신측의 논리 회로에 이들 사이에서 데이터의 전송 동안 전송의 결과로 일어나는 오류량에 관한 정보를 수신하기 위해 연결되고, 메모리 인터페이스와 제어기 인터페이스 중 하나 또는 모두에 이들 사이에서 전송의 특징을 오류량에 응하여 조절하기 위해 피드백 처리 회로가 연결된다.
다른 양상에서, 비휘발성 메모리 회로 및 제어기 회로를 포함하는 비휘발성 메모리 시스템을 작동하는 방법이 제시된다. 제어기 회로와 메모리 회로 중 첫 번째 것 상에서 논리 회로에서 데이터 세트로부터 제 1 해시 값이 생성된다. 데이터 세트 및 제 1 해시 값이 제어기 회로와 메모리 회로 중 첫 번째 것 상에서 인터페이스를 통해 버스 구조에 송신되고 제어기 회로와 메모리 회로 중 두 번째 것 상에서 인터페이스를 통해 버스 구조로부터 수신된다. 수신된 데이터 세트로부터 제 2 해시 값이 제어기 회로와 메모리 회로 중 두 번째 것 상에서 논리 회로에서 생성하고 수신된 제 1 해시 값과 제 2 해시 값이 제어기 회로와 메모리 회로 중 두 번째 것에서 비교된다. 제어기 회로와 메모리 회로 중 두 번째 것 상에서 논리 회로에 의해 수신된 제 1 해시 값과 제 2 해시 값의 비교를 기초로, 시스템은 제어기 회로와 메모리 회로 사이에서 데이터의 전송의 특징을 변경할지 결정한다.
본 발명의 다양한 면, 이점, 특징, 및 실시예는 이들의 예에 대한 다음 설명에 포함되며, 이 설명은 첨부된 도면에 관하여 취해질 것이다. 본 명세서에서 참조되는 모든 특허, 특허 출원서, 논문, 기타 공보, 문서, 및 자료는 모든 목적을 위해 이들 전부가 본 명세서에 참조로 포함된다. 포함된 공보, 문서 또는 자료 중 임의의 것과 본원 사이에 용어의 정의 또는 사용에 있어 어떤 모순 또는 상충되는 범위에 있어선 본원의 정의 또는 사용이 우선할 것이다.
본 발명은, 반도체 플래시 메모리와 같은 재프로그램 가능한 비휘발성 메모리 시스템의 작동과, 메모리 시스템의 제어기와 메모리 회로 사이의 내부 인터페이스를 제공하는 효과를 갖는다.
도 1은, 본 발명을 구현하는데 적합한 메모리 시스템의 주 하드웨어 성분을 개략적으로 도시한 도면.
도 2는, 비휘발성 메모리 셀을 개략적으로 도시한 도면.
도 3은, 플로팅 게이트가 언제든 선택적으로 저장하고 있을 수 있는 4개의 서로 다른 전하(Q1 ~ Q4)에 대한 소스-드레인 전류(ID)와 제어 게이트 전압(VCG) 사이의 관계를 도시한 도면.
도 4a는, NAND 스트링으로 구성된 메모리 셀 스트링을 개략적으로 도시한 도면.
도 4b는, 도 4a에 도시된 것과 같은 NAND 스트링(50)으로 구성된 NAND 어레이(210) 메모리 셀의 예를 도시한 도면.
도 5는, 예를 들어 NAND 구성으로 구성된, 병렬로 감지 또는 프로그램되는 한 페이지의 메모리 셀을 도시한 도면.
도 6(0) ~ 도 6(2)은, 모집단의 4-상태 메모리 셀을 프로그래밍하는 예를 도시한 도면.
도 7a ~ 도 7e는, 주어진 2-비트 코드로 엔코딩된 4-상태 메모리의 프로그래밍 및 판독을 도시한 도면.
도 8은, 제어기 내에 있는 소프트웨어 성분인 메모리 관리자에 의해 메모리가 관리되는 것을 도시한 도면.
도 9는, 백-엔드 시스템의 소프트웨어 모듈을 도시한 도면.
도 10a(i) ~ 도 10a(iii)는, 논리 그룹과 메타 블록 사이에서 맵핑을 개략적으로 도시한 도면.
도 10b는, 논리 그룹과 메타 블록 사이에서 맵핑을 개략적으로 도시한 도면.
도 11은, 기존의 기반구조에 기초하여 인터페이스 무결성을 결정하기 위한 피드백 메커니즘을 도시한 블록도.
도 12는, 피드백 메커니즘이 인터페이스 무결성을 결정하기 위해 해시 엔진을 사용하는 실시예를 도시한 블록도.
도 13은, 데이터 및 생성된 해시 값을 버스 인터페이스를 통해 송신하기 위한 예를 도시한 도면.
도 14는, 메모리 시스템에서 비트 오류에 대한 기여를 개략적으로 도시한 도면.
도 15는, 백-엔드 인터페이스에서 의사 루프-백 방법의 작동을 도시하기 위해 사용될 수 있는 도면.
도 16과 도 17은, 각각 도 15의 블록(705, 709)에 대응하는 도면.
도 18은, 데이터 버스 전압 및 데이터 전송 속도에 대한 송신 BER을 도시한 슈모(shmoo) 작도의 예를 나타낸 도면.
도 19는, 복수의 메모리 데이터 버스를 사용하는 버스 구조를 갖는 메모리 시스템에서 크로스토크를 도시하는 블록도.
메모리 시스템
도 1 내지 도 7은, 본 발명의 여러 특징이 구현 또는 예시될 수 있는 메모리 시스템의 예를 제공한다.
도 8 내지 도 10은, 본 발명의 여러 특징을 구현하기 위한 바람직한 메모리 및 블록 아키텍처를 도시한다.
도 11 ~ 도 13은, 제어기와 메모리 회로 또는 회로 사이에서 적응형 내부 인터페이스의 사용을 도시한다.
도 1은, 본 발명을 구현하는데 적합한 메모리 시스템의 주 하드웨어 성분을 개략적으로 도시한다. 메모리 시스템(90)은 전형적으로 호스트 인터페이스를 통해 호스트(80)와 작동한다. 메모리 시스템은 전형적으로 메모리 카드 또는 내장된 메모리 시스템 형태이다. 메모리 시스템(90)은 작동이 제어기(100)에 의해 제어되는 메모리(200)를 포함한다. 메모리(200)는 하나 이상의 집적 회로 칩 상에 분포된 비휘발성 메모리 셀의 하나 이상의 어레이로 구성된다. 제어기(100)는 인터페이스(110), 프로세서(120), 선택적 코프로세서(121), ROM(122)(판독 전용 메모리), RAM(130)(랜덤 액세스 메모리) 및 선택적 프로그램 가능 비휘발성 메모리(124)를 포함한다. 인터페이스(110)는 제어기를 호스트에 인터페이스시키는 한 성분과 메모리(200)에 인터페이스시키는 또 다른 성분을 구비한다. 비휘발성 ROM(122) 및/또는 선택적 비휘발성 메모리(124)에 저장된 펌웨어는 프로세서(120)가 제어기(100)의 기능을 구현하기 위한 코드를 제공한다. 오류 정정 코드는 프로세서(120) 또는 선택적 코프로세서(121)에 의해 처리될 수 있다. 대안적 실시예에서, 제어기(100)는 상태 머신(도시되지 않음)에 의해 구현된다. 또 다른 실시예에서, 제어기(100)는 호스트 내에 구현된다.
물리적 메모리 구조
도 2는 비휘발성 메모리 셀을 개략적으로 도시한 것이다. 메모리 셀(10)은 플로팅 게이트 또는 유전층과 같은 전하 저장유닛(20)을 갖는 전계 효과 트랜지스터에 의해 구현될 수 있다. 또한, 메모리 셀(10)은 소스(14), 드레인(16), 및 제어 게이트(30)를 포함한다.
최근에 사용되는 상업적으로 성공한 많은 비휘발성 고체 상태 메모리 장치가 있다. 이들 메모리 장치는 각 유형이 하나 이상의 전하저장 소자를 구비하는 것인 서로 다른 유형의 메모리 셀을 채용할 수 있다.
전형적인 비휘발성 메모리 셀은 EEPROM 및 플래시 EEPROM을 포함한다. EEPROM 셀 및 이들을 제조하는 방법의 예가 미국 특허 5,595,924에 주어져 있다. 플래시 EEPROM 셀, 메모리 시스템에서 이들의 사용 및 이들을 제조하는 방법의 예는 미국 특허 5,070,032, 5,095,344, 5,315,541, 5,343,063, 5,661,053, 5,313,421, 6,222,762에 주어져 있다. 특히, NAND 셀 구조를 갖는 메모리 장치의 예는 미국 특허 5,570,315, 5,903,495, 6,046,935에 기술되어 있다. 또한, 유전 저장소자를 이용하는 메모리 장치의 예가, Eitan et al, "NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell", IEEE Electron Device Letters, vol. 21, no. 11, November 2000, pp. 543-545, 및 미국 특허 5,768,192 및 6,011,725에 기술되어 있다.
실제로, 셀의 메모리 상태는 일반적으로 기준 전압이 제어 게이트에 인가될 때 셀의 소스 전극 및 드레인 전극을 지나는 도통 전류를 감지함으로써 판독된다. 이에 따라, 셀의 플로팅 게이트 상에 각각의 주어진 전하에 대해서, 고정된 기준 제어 게이트 전압에 관한 대응하는 도통 전류가 검출될 수 있다. 유사하게, 플로팅 게이트에 프로그램될 수 있는 전하의 범위는 대응하는 임계 전압 윈도우 또는 대응하는 도통 전류 윈도우를 정의한다.
대안적으로, 분할된 현 윈도우 중에서 도통 전류를 검출하는 대신에, 테스트되는 주어진 메모리 상태에 대한 임계 전압을 제어 게이트에 설정하고 도통 전류가 임계 전류보다 낮은지 아니면 높은지를 검출하는 것이 가능하다. 일 구현예에서 임계 전류에 대한 도통 전류의 검출은 도통 전류가 비트 라인의 커패시턴스를 통해 방전하는 방전률을 조사함으로써 달성된다.
도 3은 언제든 선택적으로 플로팅 게이트가 저장하고 있을 수 있는 4개의 서로 다른 전하(Q1 ~ Q4)에 대해 소스-드레인 전류(ID)와 제어 게이트 전압(VCG) 사이에서 관계를 도시한 것이다. VCG에 대한 ID의 4개의 실선 곡선은 4개의 가능한 메모리 상태에 대응하여 각각 메모리 셀의 플로팅 게이트 상에 프로그램될 수 있는 4개의 가능한 전하 레벨을 나타낸다. 예로서, 한 집단의 셀의 임계 전압 윈도우는 0.5V 내지 3.5V의 범위일 수 있다. 각각 하나는 소거된 상태이고 6개는 프로그램된 상태를 나타내는 7개의 가능한 메모리 상태 "0", "1", "2", "3", "4", "5", "6"은 임계 윈도우를 각각 0.5의 간격으로 5개의 영역으로 분할함으로써 구별될 수 있다. 예를 들어, 기준 전류로서 2 ㎂의 IREF가 도시된 바와 같이 사용된다면, Q1으로 프로그램된 셀은 VCG = 0.5V 및 1.0V에 의해 구별되는 임계 윈도우의 영역에서 곡선이 IREF와 교차하기 때문에 메모리 상태 "1"에 있는 것으로 간주될 수 있다. 유사하게, Q4는 메모리 상태 "5"에 있다.
전술한 바로부터 알 수 있듯이, 메모리 셀에 더 많은 상태가 저장되게 할수록, 임계 윈도우는 더욱 미세하게 분할된다. 예를 들어, 메모리 장치는 -1.5V 내지 5V 범위의 임계 전압을 갖는 메모리 셀을 가질 수 있다. 이것은 6.5V의 최대폭을 제공한다. 메모리 셀이 16개의 상태를 저장한다면, 각 상태는 임계 윈도우에서 20O mV 내지 30O mV를 점유할 수 있다. 이것은 요구되는 분해능을 달성할 수 있기 위해서 프로그래밍 및 판독 작동에서 더 높은 정밀도를 요구할 것이다.
도 4a는 NAND 스트링으로 구성된 일렬의 메모리 셀의 스트링을 개략적으로 도시한 것이다. NAND 스트링(50)은 소스 및 드레인이 데이지 체인으로 연결된 직렬의 메모리 트랜지스터(M1, M2,...Mn)(예를 들면, n= 4, 8, 16 또는 그 이상)로 구성된다. 한 쌍의 선택 트랜지스터(S1, S2)는 각각 NAND 스트링의 소스 단자(54) 및 드레인 단자(56)를 통해 메모리 트랜지스터의 체인이 외부에 연결되는 것을 제어한다. 메모리 어레이에서, 소스 선택 트랜지스터(S1)가 턴 온 되었을 때, 소스 단자는 소스 라인에 결합된다(도 4b 참조). 마찬가지로, 드레인 선택 트랜지스터(S2)가 턴 온 되었을 때, NAND 스트링의 드레인 단자는 메모리 어레이의 비트 라인에 결합된다. 체인 내 각 메모리 트랜지스터(10)는 메모리 셀로서 작용한다. 이것은 의도하는 메모리 상태를 나타내기 위해서 주어진 전하량을 저장하기 위해 전하 저장 요소(20)를 갖는다. 각각의 메모리 트랜지스터의 제어 게이트(30)는 판독 및 기록 작동에 대해 제어할 수 있게 한다. 도 4b에서 알게 되는 바와 같이, 한 행의 NAND 스트링의 대응하는 메모리 트랜지스터의 제어 게이트(30)는 모두가 동일 워드 라인에 연결된다. 마찬가지로, 선택 트랜지스터(S1, S2) 각각의 제어 게이트(32)는 각각 이의 소스 단자(54) 및 드레인 단자(56)를 통해 NAND 스트링에 대한 제어 액세스를 제공한다. 마찬가지로, 한 행의 NAND 스트링의 대응하는 선택 트랜지스터의 제어 게이트(32)는 모두가 동일 선택 라인에 연결된다.
NAND 스트링 내의 어드레스된 메모리 트랜지스터(10)가 프로그래밍 동안에 판독되거나 검증될 때, 이의 제어 게이트(30)엔 적합한 전압이 공급된다. 동시에, NAND 스트링(50) 내의 어드레스 지정이 안 된 나머지 메모리 트랜지스터는 이들의 제어 게이트에 충분한 전압을 인가함으로써 완전히 턴 온 된다. 이에 따라, 개개의 메모리 트랜지스터의 소스에서 NAND 스트링의 소스 단자(54)로 그리고 마찬가지로 개개의 메모리 트랜지스터의 드레인에 대해서는 셀의 드레인 단자(56)로의 도통 경로가 유효하게 만들어진다. 이러한 NAND 셀 구조를 갖는 메모리 장치는 미국 특허 5,570,315, 5,903,495 및 6,046,935에 기재되어 있다.
도 4b는 도 4a에 도시된 것과 같은 NAND 스트링(50)으로부터 구성되는, NAND 어레이(210)의 메모리 셀의 예를 도시한 것이다. NAND 스트링의 각 열을 따라, 비트 라인(36)과 같은 비트 라인이 각 NAND 스트링의 드레인 단자(56)에 결합된다. 각 한 뱅크의 NAND 스트링을 따라, 소스 라인(34)과 같은 소스 라인이 각 NAND 스트링의 소스 단자(54)에 결합된다. 한 뱅크의 NAND 스트링 내에 한 행의 메모리 셀을 따라 제어 게이트 또한, 워드 라인(42)과 같은 워드 라인에 연결된다. 한 뱅크의 NAND 스트링 내에 한 행의 선택 트랜지스터를 따라 제어 게이트는 선택 라인(44)과 같은 선택 라인에 연결된다. 한 뱅크의 NAND 스트링 내에 전체 한 행의 메모리 셀은 한 뱅크의 NAND 스트링의 워드 라인 및 선택 라인에 적합한 전압에 의해 어드레스될 수 있다. NAND 스트링 내에 한 메모리 트랜지스터가 판독되고 있을 때, 그 스트링 내에 나머지 메모리 트랜지스터는 이들의 연관된 워드 라인을 통해 확실히 거의 턴 온 되지 않으므로 스트링을 통하는 전류는 근본적으로 판독되는 셀 내 저장된 전하의 레벨에 의존한다.
도 5는 병렬로 감지 또는 프로그램되는, 예를 들어, NAND 구성으로 구성된 한 페이지의 메모리 셀을 도시한 것이다. 도 5는 근본적으로 도 4b의 메모리 어레이(210) 내 한 뱅크의 NAND 스트링(50)을 도시한 것으로, 각 NAND 스트링의 상세는 도 4a에서처럼 명료하게 도시되었다. 페이지(60)와 같은 "페이지"는 병렬로 감지 또는 프로그램될 수 있게 한 일 그룹의 메모리 셀이다. 이것은 대응하는 한 페이지의 감지 증폭기(212)에 의해 달성된다. 감지된 결과는 대응하는 한 세트의 래치(214)에 래치된다. 각각의 감지 증폭기는 비트 라인을 통해 NAND 스트링에 결합될 수 있다. 페이지는 워드 라인(42)에 공통으로 연결된 페이지의 셀의 제어 게이트에 의해 활성화되고 각각의 셀은 비트 라인(36)을 통해 액세스될 수 있는 감지 증폭기에 의해 액세스될 수 있다. 예로서, 각각 한 페이지의 셀(60)을 감지 또는 프로그래밍할 때, 감지 전압 또는 프로그래밍 전압은 각각 비트 라인 상에 적합한 전압과 함께 공통의 워드 라인(WL3)에 인가된다.
메모리의 물리적 구성
플래시 메모리와 전형적 메모리 사이에서 한 가지 중요한 차이는 셀이 소거된 상태로부터 프로그램되어야 한다는 것이다. 즉, 먼저 플로팅 게이트에 전하가 비어있어야 한다. 이어서 프로그래밍은 요구되는 양의 전하를 다시 플로팅 게이트에 더한다. 더 프로그램된 상태에서 덜 프로그램된 상태로 가기 위해 플로팅으로부터 전하의 일부를 제거하는 것은 지원하지 못한다. 이것은 업데이트 데이터가 현존한 데이터를 덮어쓸 수 없고 이전에 기록되지 않은 위치에 기록되어야 함을 의미한다.
또한 소거는 플로팅 게이트에서 모든 전하를 비우는 것이며 일반적으로 상당한 시간이 걸린다. 이러한 이유로, 이것은 성가실 것이며 셀별로 또는 심지어 페이지별로 소거하기는 매우 느릴 것이다. 실제로, 메모리 셀 어레이는 메모리 셀의 더 많은 수의 블록으로 분할된다. 플래시 EEPROM 시스템에 있어 일반적인 바와 같이, 블록은 소거 단위이다. 즉, 각각의 블록은 함께 소거되는 최소 수의 메모리 셀을 내포한다. 병렬로 소거될 블록 내 많은 수의 셀을 하나로 모으는 것이 소거 수행을 개선하겠지만, 큰 크기의 블록은 많은 수의 업데이트 및 폐용 데이터를 처리해야 하는 것을 수반한다. 블록이 소거되기 바로 전에, 블록 내 비-폐용 데이터를 구제하기 위해서 가비지 수거가 요구된다.
각각의 블록은 전형적으로 다수의 페이지로 분할된다. 페이지는 프로그래밍 또는 판독 단위이다. 일 실시예에서, 개개의 페이지는 세그먼트로 분할될 수 있고 세그먼트는 기본 프로그래밍 작동으로서 한번에 기록되는 최소 수의 셀을 내포할 수 있다. 하나 이상의 페이지의 데이터는 전형적으로 한 행의 메모리 셀에 저장된다. 페이지는 하나 이상의 섹터를 저장할 수 있다. 섹터는 사용자 데이터 및 오버헤드 데이터를 포함한다. 복수의 어레이에 걸쳐 분산되어 있는 복수의 블록 및 페이지는 메타 블록 및 메타페이지로 함께 작동될 수 있다. 이들이 복수의 칩에 걸쳐 분산되면, 이들은 메가블록 및 메가페이지로 함께 작동될 수 있다.
복수-레벨 셀(" MLC ") 메모리 분할의 예
메모리 셀 각각이 복수의 비트의 데이터를 저장하는 비휘발성 메모리가 도 3에 관련하여 이미 기술되었다. 한 특별한 예는 각각이 채널 영역과 제어 게이트 사이에 전하 저장층을 갖는 전계-효과 트랜지스터의 어레이로부터 형성된 메모리이다. 전하 저장층 또는 유닛은 한 범위의 전하를 저장할 수 있어, 각각의 전계-효과 트랜지스터에 대해 한 범위의 임계 전압을 생성한다. 가능한 임계 전압의 범위는 임계 윈도우에 걸쳐 있다. 임계 윈도우가 임계 전압의 다수의 부-범위 또는 구역으로 분할될 때, 각각의 결정 가능한 구역은 하나의 메모리 셀에 대해 서로 다른 메모리 상태를 나타내기 위해 사용된다. 다수의 메모리 상태는 하나 이상의 바이너리 비트에 의해 부호화될 수 있다. 예를 들어, 4개의 구역으로 분할된 메모리 셀은 2-비트 데이터로서 부호화될 수 있는 4 상태를 지원할 수 있다. 유사하게, 8개의 구역으로 분할된 메모리 셀은 3-비트 데이터로 부호화될 수 있는 8 메모리 상태를 지원할 수 있다.
전( All )-비트, 풀- 시퀀스 MLC 프로그래밍
도 6(0) ~ 도 6(2)는, 모집단의 4-상태 메모리 셀을 프로그래밍하는 예를 도시한다. 도 6(0)는 각각 메모리 상태 "0", "1", "2" 및 "3"을 나타내는 임계 전압의 4개의 서로 구별되는 분포로 프로그램될 수 있는 메모리 셀의 집단을 도시한 것이다. 도 6(1)는 소거된 메모리에 대해 "소거된" 임계 전압의 초기 분포를 도시한 것이다. 도 6(2)는 많은 메모리 셀이 프로그램된 후에 메모리의 예를 도시한 것이다. 근본적으로, 셀은 초기에는 "소거된" 임계 전압을 가지며 프로그래밍은 이를 검증 레벨 vV1, vV2 및 vV3으로 구분된 3개의 구역 중 하나로 더 높은 값으로 이동할 것이다. 이렇게 하여, 각 메모리 셀은 3개의 프로그램된 상태 "1", "2", 및 "3" 중 하나로 프로그램되거나 "소거된" 상태로 프로그램되지 않은 채로 있을 수 있다. 메모리가 더욱 프로그래밍 됨에 따라, 도 6(1)에 도시된 바와 같은 "소거된" 상태의 초기 분포는 더 좁아지게 될 것이며 소거된 상태는 "0" 상태로 나타난다.
하위 비트 및 상위 비트를 갖는 2-비트 코드는 4개의 메모리 상태 각각을 나타내기 위해 사용될 수 있다. 예를 들어, "0", "1", "2" 및 "3" 상태는 각각 "11", "01", "00" 및 "10"로 나타낸다. 2-비트 데이터는 각각 3번의 서브-패스(sub-pass)에서 판독 구분 임계값(rV1, rV2, rV3)에 관하여 감지함으로써 2 비트가 함께 감지되는 "풀-시퀀스" 모드에서 감지함으로써 메모리로부터 판독될 수 있다.
비트별 MLC 프로그래밍 및 판독
도 7a ~ 도 7e는 주어진 2-비트 코드로 엔코딩된 4-상태 메모리의 프로그래밍 및 판독을 도시한 것이다. 도 7a는 각각의 메모리 셀이 2-비트 코드를 사용하여 2 비트의 데이터를 저장할 때 4-상태 메모리 어레이의 임계 전압 분포를 도시한 것이다. 이러한 2-비트 코드는 미국 특허 7,057,939에 개시되어 있다.
도 7b는 2-비트 코드를 사용한 2-패스 프로그래밍 수법에서 하위 페이지 프로그래밍(하위 비트)를 도시한 것이다. 고장방지(fault-tolerant) LM 신(New) 코드는 근본적으로 임의의 상위 페이지 프로그래밍이 임의의 중간 상태를 거쳐 이동하는 것을 피하게 한다. 이에 따라, 제 1 패스 하위 페이지 프로그래밍은 "비프로그램된" 메모리 상태 "0"를 DA보다 크지만 DC 미만인 프로그램된 임계 전압을 갖는 (x, 0)로 나타낸 "중간" 상태로 프로그래밍함으로써 나타나는 어떤 중간 상태(x, 0)로 논리 상태(상위 비트, 하위 비트) = (1, 1)가 이동되게 한다.
도 7c는 2-비트 코드를 사용한 2-패스 프로그래밍 수법에서 상위 페이지 프로그래밍(상위 비트)을 도시한 것이다. 상위 페이지 비트를 "0"으로 프로그래밍하는 제 2 패스에서, 하위 페이지 비트가 "1"에 있다면, 논리 상태 (1, 1)은 "비프로그램된" 메모리 상태 "0"를 "1"로 프로그래밍함으로써 나타나는 (0, 1)로 이동한다. 하위 페이지 비트가 "0"에 있다면, 논리 상태 (0, 0)는 "중간" 상태에서 "3"으로 프로그래밍함으로써 얻어진다. 유사하게, 하위 페이지가 "0"으로 프로그램되는 동안에, 상위 페이지가 "1"에 남아 있다면, "중간" 상태에서 "중간" 상태를 "2"로 프로그래밍함으로써 나타나는 (1, 0)로의 이동을 필요로 할 것이다.
도 7d는 2-비트 코드로 엔코딩된 4-상태 메모리의 하위 비트를 식별하기 위해 요구되는 판독 작동을 도시한 것이다. LM 플래그가 판독될 수 있는지 결정하기 위해서 먼저 판독B 작동이 수행된다. 판독될 수 있다면, 상위 페이지는 프로그램되었으며 판독B 작동은 정확히 하위 페이지 데이터를 얻게 될 것이다. 반면, 상위 페이지가 아직 프로그램되지 않았다면 하위 페이지 데이터는 판독A 작동에 의해 판독될 것이다.
도 7e는 2-비트 코드로 엔코딩된 4-상태 메모리의 상위 비트를 판별하기 위해 요구되는 판독 작동을 도시한 것이다. 도면으로부터 명백한 바와 같이, 상위 페이지 판독은 각각 구분 임계 전압 DA, DB 및 DC에 대한 판독A, 판독B 및 판독C의 3-패스 판독을 요구할 것이다.
2-비트 메모리에 대한 비트별 수법에서, 메모리 셀의 물리 페이지는 2개의 논리 데이터 페이지로서 하위 비트에 대응하는 하위 데이터 페이지와 상위 비트에 대응하는 상위 데이터 페이지를 저장할 것이다.
바이너리 및 MLC 메모리 분할
도 6과 도 7은, 2-비트("D2"라고도 함) 메모리의 예를 도시한다. 알 수 있는 바와 같이, D2 메모리는 4개의 영역으로 분할되어 4 상태를 지정하는 임계 범위 또는 윈도우를 갖는다. 유사하게, D3에서, 각각의 셀은 3 비트(하위, 중위 및 상위 비트)를 저장하며 8개의 영역이 있다. D4에는 4 비트 및 16 영역 등이 있다. 메모리의 유한한 임계 윈도우가 더 많은 영역으로 분할됨에 따라, 프로그래밍 및 판독을 위한 분해능은 반드시 더 미세해질 것이다. 메모리 셀이 더 많은 비트를 저장하게 구성됨에 따라 2가지 문제가 발생한다.
첫 번째, 프로그래밍 또는 판독은 셀의 임계값이 더 정확하게 프로그램 또는 판독되어야 하기 때문에 더 느려지게 될 것이다. 사실 실제로 감지 시간(프로그래밍 및 판독에 필요한)은 분할 레벨의 수의 제곱에 따라 증가하는 경향이 있다.
두 번째, 플래시 메모리는 사용에 의해 노후됨에 따라 내구성 문제를 갖는다. 셀이 반복하여 프로그램되고 소거될 때, 전하는 유전체를 가로지른 터널링에 의해서 플로팅 게이트(20)(도 2 참조) 안팎으로 오고 가게 된다. 일부 전하가 유전체 내에 트랩될 때마다 셀의 임계값을 수정할 것이다. 사실 사용해 감에 따라 임계 윈도우는 점차적으로 협소해질 것이다. 이에 따라, MLC 메모리는 일반적으로 용량과 성능과 신뢰성 사이에서 절충하여 설계된다.
반대로, 바이너리 메모리에 있어서 메모리의 임계 윈도우는 단지 두개의 영역으로 분할됨을 알 것이다. 이것은 최대 마진의 오류를 허용할 것이다. 이에 따라, 저장 용량이 감소되는 반면 바이너리 분할은 최대 성능 및 신뢰성을 제공할 것이다.
도 7에 관련하여 기술된 복수-패스, 비트별 프로그래밍 및 판독 기술은 MLC와 바이너리 분할 사이에서 원만한 이행을 제공한다. 이 경우에, 메모리가 단지 하위비트만으로 프로그램된다면, 이것은 사실상 바이너리 분할 메모리이다. 이 방식이 단일-레벨 셀("SLC") 메모리의 경우와 같이 임계 윈도우의 범위를 최대로 최적화하지 않지만, MLC 메모리의 하위 비트의 작동에서와 동일한 구분 또는 감지 레벨을 사용하는 이점이 있다. 후술하는 바와 같이, 이 방식은 MLC 메모리를 바이너리 메모리로서 또는 바이너리 메모리를 MLC 메모리로 사용하는데 "전용"될 수 있도록 한다. MLC 메모리는 사용에 있어 더 엄격한 명세를 갖는 경향이 있음을 알아야 한다.
바이너리 메모리 및 부분 페이지 프로그래밍
한 메모리 셀의 전하 저장 소자에 프로그램되는 전하는 이웃 메모리 셀의 전계를 교란시키는 전계를 야기한다. 이것은 근본적으로 전하 저장 소자를 갖는 전계 효과 트랜지스터인 이웃 메모리 셀의 특징에 영향을 미칠 것이다. 특히, 감지될 때 메모리 셀은 덜 교란될 때보다 더 높은 임계 레벨(또는 더 프로그램된)을 갖는 것처럼 보이게 될 것이다.
일반적으로, 메모리 셀이 제 1 전계 환경 하에서 프로그램-검증되고 나중에 이웃 셀이 이어서 다른 전하로 프로그램됨에 기인하여 다른 전계 환경 하에서 다시 판독된다면, 판독 정확성은 "유핀 효과"라 하는 것에 의해 이웃 플로팅 게이트 사이의 결합에 기인하여 영향을 받을 수 있다. 반도체 메모리에서 집적도가 더 높아짐에 따라, 메모리 셀 사이에서 저장된 전하에 기인한 전계의 교란(유핀 효과)은 셀 사이의 간격이 줄어듦에 따라 현저히 증가하게 된다.
위에 도 7에 관련하여 기술된 비트별 MLC 프로그래밍 기술은 동일 워드 라인을 따라 셀로부터 프로그램 교란을 최소화하게 설계된다. 도 7b로부터 알 수 있는 바와 같이, 2개의 프로그래밍 패스 중 첫 번째 프로그래밍 패스에서, 셀의 임계값은 기껏해야 임계 윈도우 중간까지 이동된다. 제 1 패스의 효과는 마지막 패스에 의해 압도된다. 마지막 패스에서, 임계값은 거리의 1/4만 이동된다. 즉, D2에 있어서, 이웃 셀 사이의 전하 차이는 이의 최대의 1/4로 제한된다. D3에서, 3번의 패스를 갖고, 마지막 패스는 전하 차이를 최대의 1/8로 제한할 것이다.
그러나, 비트별 복수-패스 프로그래밍 기술은 부분-페이지 프로그래밍에 의해 약화될 것이다. 페이지는 단위로서 함께 프로그램되는, 전형적으로 행 또는 워드 라인을 따라 있는 일 그룹의 메모리 셀이다. 복수의 프로그래밍 패스에 걸쳐 개별적으로 페이지의 비중첩 부분을 프로그램하는 것이 가능하다. 그러나, 페이지의 모든 셀이 마지막 패스에서 함께 프로그램되지 않는 것에 기인하여, 페이지가 프로그램된 후에 셀 사이에서 프로그램된 전하에 큰 차이를 야기할 수도 있을 것이다. 이에 따라, 부분-페이지 프로그래밍은 더 프로그램 교란을 초래할 것이며 감지 정확성에 대한 더 큰 마진을 요구할 것이다.
메모리가 바이너리 메모리로서 구성된 경우, 작동의 마진은 MLC보다 넓다. 바람직한 실시예에서, 바이너리 메모리는 페이지의 비중첩 부분이 페이지에 대한 복수의 프로그래밍 패스 중 하나의 패스에서 개별적으로 프로그램될 수 있는 부분-페이지 프로그래밍을 지원하게 구성된다. 프로그래밍 및 판독 수행은 큰 크기의 페이지에 대해 작동함으로써 개선될 수 있다. 그러나, 페이지 크기가 호스트의 기록 단위(전형적으로 512-바이트 섹터)보다 훨씬 클 때, 이의 사용은 비효율적이 될 것이다. 페이지보다 더 미세한 입도로 작동하는 것은 이러한 페이지를 더욱 효율적으로 사용할 수 있게 한다.
주어진 예는 MLC에 대한 바이너리 사이에서 예였다. 일반적으로 제 1 레벨 수를 갖는 제 1 메모리와 상기 제 1 메모리보다 많은 제 2 레벨 수를 갖는 제 2 메모리 사이에서 같은 원리가 적용됨을 알 것이다.
논리 및 물리 블록 구조
도 8은 제어기 내에 있는 소프트웨어 성분인 메모리 관리자에 의해 메모리가 관리되는 것을 도시한 것이다. 메모리(200)는 다수 블록으로 구성되며, 셀의 각각의 블록은 최소 소거 단위이다. 구현에 따라, 메모리 시스템은 블록을 "메타 블록" 및 "메가블록"으로 집성함으로써 형성된 더 큰 소거 단위로 작동할 수 있다. 편리상 설명에서는 일부 시스템이 메타 블록을 집성함으로써 형성된 "메가블록"과 같은 훨씬 더 큰 소거 단위로 작동함이 이해될지라도 메타 블록으로서 소거 단위를 언급할 것이다.
호스트(80)는 파일 시스템 또는 운영 시스템 하에 애플리케이션이 실행될 때 메모리(200)에 액세스한다. 전형적으로, 호스트 시스템은, 예를 들어, 각각의 섹터가 512 바이트의 데이터를 내포할 수 있는 다수의 논리 섹터 단위로 데이터에 어드레스한다. 또한, 각각의 클러스터는 하나 이상의 논리 섹터로 구성된 것으로 다수의 논리 클러스터 단위로 호스트가 메모리 시스템에 기록 또는 판독하는 것이 일반적이다. 일부 호스트 시스템에서, 선택적 호스트-측 메모리 관리자는 호스트에서 저 레벨 메모리 관리를 수행하기 위해 존재할 수 있다. 판독 또는 기록 작동 동안 대부분의 경우에서 호스트(80)는 필수적으로 인접 어드레스를 갖는 하나의 스트링의 논리 섹터의 데이터를 내포하는 세그먼트를 판독 또는 기록하라는 명령을 메모리 시스템(90)에 발행한다.
메모리-측 메모리 관리자(300)는 플래시 메모리(200)의 메타 블록 중에 호스트 논리 섹터의 데이터의 저장 및 인출을 관리하기 위해 메모리 시스템(90)의 제어기(100) 내에 구현된다. 메모리 관리자는 프론트-엔드 시스템(310) 및 백-엔드 시스템(320)을 포함한다. 프론트-엔드 시스템(310)는 호스트 인터페이스(312)를 포함한다. 백-엔드 시스템(320)은 메타 블록의 소거 작동, 판독 작동 및 기록 작동을 관리하기 위한 다수의 소프트웨어 모듈을 포함한다. 또한, 메모리 관리자는 플래시 메모리(200)와 제어기 RAM(130) 중에 시스템 제어 데이터 및 이의 작동에 연관된 디렉토리 데이터를 유지한다.
도 9는 백-엔드 시스템의 소프트웨어 모듈을 도시한 것이다. 백-엔드 시스템은 주로 2개의 기능 모듈들로서 미디어 관리층(330)과, 데이터 흐름 및 시퀀싱 층(340)을 포함한다.
미디어 관리층(330)은 플래시 메모리 메타-블록 구조 내에 논리 데이터 저장의 구성을 수행한다. 더 상세한 것은 "미디어 관리층" 단락에서 나중에 제공될 것이다.
데이터 흐름 및 시퀀싱 층(340)은 데이터의 섹터를 순서화하고 프론트-엔드 시스템과 플래시 메모리 사이에서 전송한다. 이 층은 명령 시퀀서(342), 저-레벨 시퀀서(344) 및 플래시 제어층(346)을 포함한다. 더 상세한 것은 "저 레벨 시스템 명세" 단락에서 나중에 제공될 것이다.
메모리 관리자(300)는 바람직하게는 제어기(100) 내에 구현된다. 이것은 호스트로부터 수신된 논리 어드레스를 메모리 어레이 내에 데이터가 실제로 저장되는 물리 어드레스로 변환하며, 이들 어드레스 변환을 관리한다.
도 10a(i) ~ 도 10a(iii)는 논리 그룹과 메타 블록 사이에서 맵핑을 개략적으로 도시한 것이다. 물리 메모리의 메타 블록은 논리 그룹의 N 논리 섹터의 데이터를 저장하기 위한 N 물리 섹터를 갖는다. 도 10a(i)는 논리 그룹 LGi으로부터의 데이터를 도시한 것으로, 논리 섹터는 논리 순서 0, 1,..., N-1로 인접하여 있다. 도 10a(ii)는 같은 데이터가 같은 논리 순서로 메타 블록으로 저장된 것을 도시한 것이다. 이러한 식으로 저장될 때 메타 블록은 "순차적"이라고 한다. 일반적으로, 메타 블록은 다른 순서로 저장된 데이터를 가질 수 있는데, 이 경우 메타 블록은 "비순차적" 또는 "무질서"라고 한다.
논리 그룹의 최하위 어드레스와 이것에 맵핑된 메타 블록의 최하위 어드레스 사이에서 오프셋이 있을 수 있다. 이 경우, 논리 섹터 어드레스는 메타 블록 내에 논리 그룹의 맨 아래에서 다시 맨 위로의 루프로서 되돌아간다. 예를 들면, 도 10a(iii)에서, 메타 블록은 논리 섹터 k의 데이터부터 시작하여 자신의 첫 번째 위치에 저장한다. 마지막 논리 섹터 N-1에 도달되었을 때, 섹터 0으로 되돌아가고 마지막으로 논리 섹터 k-1에 연관된 데이터를 자신의 마지막 물리 섹터에 저장한다. 바람직한 실시예에서, 이를테면 메타 블록의 첫 번째 물리 섹터에 저장된 데이터의 시작 논리 섹터 어드레스를 확인하는 것과 같이, 임의의 오프셋을 확인하기 위해서 페이지 태그가 사용된다. 2개의 블록은 이들의 논리 섹터가 페이지 태그만큼만 다를 때 유사한 순서로 이들이 저장되게 할 것으로 여겨질 것이다.
도 10b는 논리 그룹과 메타 블록 사이에서 맵핑을 개략적으로 도시한 것이다. 각 논리 그룹(380)은 데이터가 현재 업데이트되고 있는 소수의 논리 그룹을 제외하고, 고유 메타 블록(370)에 맵핑된다. 논리 그룹이 업데이트된 후에, 이것은 다른 메타 블록에 맵핑될 수 있다. 맵핑 정보는 한 세트의 논리 대 물리 디렉토리에 유지되는데, 이것은 나중에 더 상세히 기술될 것이다.
적응형 제어기- 메모리 인터페이스
이 단락은 메모리 시스템의 내부 제어기-메모리 인터페이스의 전송 무결성을 모니터하고 이에 따라 인터페이스 설정을 조절할 수 있는 피드백 메커니즘 및 처리 유닛의 사용을 제시한다. 이것은 시스템이 인터페이스 성능을 최적화할 수 있게 한다. 예를 들면, 시스템의 파워는 감소될 수도 있고 또는 인터페이스를 위한 버스 클럭이 가속될 수도 있는데, 이것은 종종 내부 성능 병목이 될 수 있기 때문에, 메모리 시스템 밖에서(즉, 호스트로부터) 보았을 때 성능이 증가될 수 있게 한다. 송신 오류의 경우, 인터페이스 무결성 피드백 및, 실시예에 따라, 그외 다른 센서 또는 파라미터에 의해 도움을 받는 피드백 처리 유닛은 인터페이스 설정을 조절하고 송신 재시도를 수행할지 아니면 오류를 무시할지를 판단할 수 있다. 또한, 이하 논의는 도 4a, 도 4b 및 도 5에 도시된 바와 같은 메모리 어레이를 위한 NAND-형 아키텍처를 사용하는 메모리 카드 맥락에서 주어질 것이지만, 그외 다른 아키텍처, 다른 형태의 메모리, 및 비(non)-카드 사용, 이를테면 내장형 시스템, SSD 등을 위한 유사한 내부 인터페이스에 쉽게 확장한다.
다음 논의가 구체적인 예를 제공하기 위해 여러 예시적 실시예에 기초할 수 있을지라도, 본 명세서에서 기술 및 구조는 독립적으로 작동될 수 있는 제어기 및 복수의 뱅크를 갖는 메모리 시스템에 상당히 일반적으로 적용될 수 있으며, 뱅크는 제어기가 메모리 시스템을 관리하기 위해 사용할 수 있는 시스템 데이터를 저장하기 위해 사용될 수 있는, 플래시이든 아니면 그외 다른 종류이든, 약간의 비휘발성 메모리를 포함한다. 위에 인용된 다른 참조 문헌 외에, 이들은 다음 미국 특허, 특허 공개, 및 출원 번호에 제시된 다양한 메모리 시스템을 포함할 수 있다: 7,480.766; US-2005-0154819-A1; US-2007-0061581-A1; US-2007-0061597-A1; US-2007-0113030-A1; US-2008-0155178-A1; US-2008-0155228-A1; US-2008-0155176-A1; US-2008-0155177-A1; US-2008-0155227-A1; US-2008-0155175-A1; 12/348,819; 12/348,825; 12/348,891; 12/348,895; 12/348,899; 12/642,584; 12/642,611; US 12/642,649; 12/642,728; 12/642,740; 및 61/142,620.
예시적 실시예의 논의에 앞서, 이 단락은 다루어진 문제를 더욱 고찰함으로써 시작할 것이다. 제어기-메모리 장치 인터페이스는 제어기(100, 도 1)와 하나 이상의 NAND 장치(200, 도 1)(예시적 실시예에서) 사이에서 데이터를 전송하기 위해 사용된다. {이 논의는 제어기(100)와 플래시 메모리(200) 사이에서 메모리 시스템(90) 상의 내부 인터페이스에 관한 것이고, 인터페이스(110)는 제어기가 메모리 시스템 외부와 통신하기 위해 사용하는 호스트 인터페이스임에 유의한다}. 속도, 파워 소비, 등을 절충하여 인터페이스 성능을 증가시키기 위한 서로 다른 NAND 인터페이스 모드가 개발되었다. 이 인터페이스는 흔히 성능 병목이 되기 때문에, 이들 인터페이스는 시스템 성능을 최대화하기 위해 극단까지 내몰렸다. 데이터 오류를 피하기 위해서, 인터페이스 설정(이를테면, 전압, 주파수, 구동 강도 및 슬루 레이트 제어)은 최악의 경우의 시나리오(극단의 온도, 극단의 부하 커패시턴스, 극단의 전압 등)에 대해 설정되고 있다. 결국, 장치는 전형적으로 최악의 경우의 안전 마진을 갖게 설계되지만, 이것은 전형적인 조건에서 큰 마진으로 바뀐다. 이러한 전형적인 조건에서, 인터페이스 설정은 제품 신뢰도를 약화하지 않고 훨씬 더 높은 인터페이스 성능에 최적화될 수 있다. 다음에서 제시되는 바와 같은 메커니즘이 없으면, 메모리 장치는 최악의 경우의 성능 설정에서 계속하여 작동할 것이다.
예를 들면, 33MHz의 명목상 버스 주파수 내지는 가속된 40MHz, 극도로 가속된 50MHz 및 초 극도도 가속된 60MHz의 버스 주파수에서 16-비트 정규 모드에 있어서의 버스트 데이터 전송 시간 사이에 단순 비교는 각각 약 17%, 33% 및 45%의 현저한 레이턴시 감소를 가져온다. 이것이 표 1에 도시되었는데, 여기에서 열(column)은 주파수, 대응하는 사이클(tcyc), 2142 바이트 데이터의 시간 전송, 및 33MHz에서의 속도에 대한 속도 비이다.
주파수 teye 2142B xfr 시간
33MHz 30.3ns 32454.5ns 1.00
40MHz 25.3ns 26775.0ns 0.83
50MHz 20.3ns 21420.0ns 0.66
60MHz 16.7ns 17850.0ns 0.55
종래 기술에서, 플래시 인터페이스 성능은 전형적으로 주어진 제품에 대한 고정된 성능에 설정된다. 설계는 최악의 경우의 설계를 고려한다. 일부 제품에서, 플래시 인터페이스는 "최악의 경우에 근접한"을 위해 설계되어 얼마간 인터페이스 성능 최적화를 가능하게 하지만 장치 수율이 얼마간 낮아지거나 데이터 오류가 증가할 위험이 있다.
이 단락은 인터페이스 전송 무결성을 모니터하고 인터페이스 성능을 최적화하기 위해 그에 따라 인터페이스 설정을 조절하는 피드백 메커니즘 및 처리 유닛을 제시한다. 송신 오류의 경우, 피드백 처리 유닛(인터페이스 무결성 피드백 및 아마도 그외 다른 센서 또는 파라미터에 의해 도움을 받는)은 인터페이스 설정을 조절할지, 송신 재시도를 수행할지, 아니면 오류를 무시할지를 판단할 수 있다. 송신 오류가 없는 경우, 피드백 처리 유닛은 인터페이스 설정을 그대로 두거나 인터페이스 성능을 증가시키기 위해 인터페이스 설정을 수정하기로 결정할 수도 있다. 또한, 인터페이스 무결성 피드백 메커니즘은 피드백 처리 유닛이 2진 통과/실패 표시, 통과/실패 및 오류의 수, 또는 통과/실패 및 오류의 수와 오류 위치와 같은 서로 다른 정도의 정보를 얻을 수 있게 설계될 수 있다.
실시예에 따라, 피드백 메커니즘은 기존 장치 기반구조를 이용하거나 해시 엔진과 같은 전용 메커니즘에 의해 더욱 최적화될 수 있다. 이러한 전용의 메커니즘은 하드웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수 있다. 또한, 해시 엔진은 송신 오류를 정정할 수 있는 오류 정정 엔진에 의해 보완될 수 있다. 이러한 방법은 인터페이스가 여전히 최적의 성능에 도달하면서도 한 레벨의 비트 오류 레이트에 대처할 수 있게 할 것이다. NAND 비트 실패에 대한 종래 기술에서 ECC의 설계는 메모리 자신에 오류만을 고려하고 제어기와 메모리 장치 사이에서 데이터가 전송될 때 발생할 수 있는 인터페이스 오류를 고려하지 않기 때문에 송신 정정 가능성은 가치가 있다. 인터페이스 성능이 높아짐에 따라, 송신 오류의 가능성이 높아진다. 현존 ECC가 인터페이스 오류를 처리하게 하는 것은 복구될 수 없는 오류에 대해 성능 및 확률 면에서 현존 ECC 능력을 저하시킨다. 전용 인터페이스 오류 정정 엔진을 설계하는 것은 "분할 통치(divide and rule)"를 할 수 있게 하고, 현존 ECC를 NAND에서 생성된 오류에만 집중하게 한다. (ECC에 관한 추가의 배경 상세는 다음 미국 특허, 특허 공보, 및 특허 출원서에서 발견될 수 있다: 2009/0094482; 7,502,254; 2007/0268745; 2007/0283081; 7,310,347; 7,493,457; 7,426,623; 2007/0220197; 2007/0065119; 2007/0061502; 2007/0091677; 2007/0180346; 2008/0181000; 2007/0260808; 2005/0213393; 6,510,488; 7,058,818; 2008/0244338; 2008/0244367; 2008/0250300; 및 2008/0104312).
도 11은 이러한 피드백 메커니즘을 도시하지만 전형적인 종래 기술의 기존의 NAND/제어기 기반구조에 기초하는 블록도이다. 이것은 적응형 인터페이스의 대안적 실시예를 제공할 뿐만 아니라, 관련된 개념의 몇 가지를 더욱 예시하는데 도움을 줄 것이다. 도 11에서는 본 논의에 관계된 요소만이 명확히 도시되었고 다른 것은 본 논의를 간단하게 하기 위해 생략되었다. 제어기(100)에는 ASIC 코어(411), ECC 회로(413), 출력 버퍼(415), 입력 버퍼(425), 송신 회로(417), 및 수신 회로(427)가 있다. 여기에선 개별적인 것으로서 도시되었을지라도, 이것은 실제 구현에선 그렇게 되지 않을 수 있는데, 입력 및 출력 버퍼는 겹치거나 같을 수도 있고; 송신 및 수신은 요소를 공유하거나 심지어 동일할 수도 있고; ECC 회로는 ASIC 코어 내에 소프트웨어로서 구현될 수도 있다. 메모리측(200)에 도시된 요소는 판독 회로(431) 및 송신 회로(441)(다시 부분적으로 또는 완전히 중첩할 수 있다), 입력 데이터 버퍼(433) 및 출력 데이터 버퍼(443)(마찬가지로 단일 버퍼일 수도 있다) 및 NAND 코어(435)이다. 제어기(100) 및 메모리 회로는 버스 구조(401)에 의해 연결된다.
한 세트의 호스트 데이터가 일단 제어기(100)에 수신되면 이 데이터에 대한 전형적인 흐름은 ASIC 코어(411)로부터 출력 데이터 버퍼(415)로, 그리고 송신 회로(417)를 거쳐 버스 구조(401)로 흐른다. 메모리(200) 상에 데이터는 버스로부터 수신 회로(431)에 의해 입력 데이터 버퍼(433)에 전송되고 이어 NAND 코어(435)에 기록된다. 이어서, 호스트가 데이터에 액세스하기를 원할 때, NAND 코어(435)로부터 출력 데이터 버퍼(443)로 판독되고, 송신 회로(441)에 의해 버스 구조(401)에 전송되고, 이어 버스로부터 수신 회로(427)에 의해 제어기의 입력 데이터 버퍼(425) 내로 판독된다. 메모리 시스템은 전형적으로 데이터에 들어갈 수 있는 오류를 검출하여 정정하기 위해서 오류 정정 코드(ECC)를 사용하는데, 제어기는 데이터와 더불어 NAND 코어로 송신되어 기록되고 이어 데이터와 함께 다시 읽혀지는 대응하는 ECC를 발생한다. 그러면, ECC 엔진(413)는 데이터 및 이의 대응하는 ECC에 액세스할 수 있어, 데이터가 호스트에 전달되기 전에 필요시 검사되어 정정될 수 있게 된다.
ECC가 데이터 오류를 정정하기 위해 사용될 수 있을지라도, 이것은 한정된 양의 오류만을 정정할 수 있고, 이 양은 설계 선택이다. 이들 능력 내에서, ECC 엔진(413)은 NAND 코어(435) 자체에 연관 오류, 이를테면 기록 오류, 판단 오류 및 저장될 때 데이터의 교란(disturb) 및 그외 열화뿐만 아니라, 송신 오류를 포함하여, 왕복 동안 축적된 임의의 오류에 대해 정정할 수 있는데, 그러나 ECC의 선택은 일반적으로 NAND 코어(435)에 관계된 오류를 고려한 것에만 기초한다. ECC에 대해 위에서 인용된 참고문헌 중 일부에서 논의된 바와 같이 이를테면 "강(strong) ECC"을 갖는 일부 배열에서, 코드는 메모리의 특성 및 데이터 상태가 메모리에 어떻게 맵핑되었는지에 기초한다. 제어기와 메모리 사이에서 송신은 대체로 간과되고 오류가 추가되지 않는 것으로 취해진다. 따라서, 인터페이스는 이에 따라 설정될 필요가 있어 위에 기술된 바와 같이, 파라미터를 최악의 또는 거의 최악의 경우에 따라 설정되게 한다.
제 1 세트의 실시예는 인터페이스 특징을 최적화하기 위해 사용되는 피드백을 제공하는 도 11의 요소에 기초한다. 데이터(및 대응하는 ECC)가 메모리 코어에 실제로 기록되는 것을 제외하고 위에 기술된 표준 기록 및 이에 이은 판독에서와 같게, 대응하는 ECC와 더불어 한 세트의 데이터가 제어기에서 메모리로 그리고 다시 제어기로의 왕복에서 보내진다. 기록 전송이 제어기(100)에서 메모리 회로(200)로 발부된 후에, 제어기는 데이터를 다시 판독하기 위해 버퍼 래치(433, 443)를 사용할 수 있다. 이것은 입력 및 출력 버퍼가 같다면 실제 전송은 없을 것일지라도, 경로(437)로 나타내었다. 이 왕복이 어레이(435) 자신에 연관된 임의의 오류를 제거하기 때문에, 이것은 송신의 영향을 격리시키며 ECC 엔진(413)이 메모리 인터페이스의 무결성을 결정할 수 있게 한다. 이어, 인터페이스 파라미터는 수정될 수 있고 프로세스는 재발행될 수 있다. 이렇게 하여 기록 및 판독 인터페이스 파라미터 모두가 최적화될 수 있다.
도 12는 또 다른 한 세트의 실시예를 도시한 블록도이지만 여기에서 피드백 메커니즘은 인터페이스에 특정한 해시 엔진 및 선택적인 데이터 정정 엔진을 사용한다. 제어기 및 메모리 칩을 언급하기보다, 도 12는 이하 더 기술된 바와 같이 판독 프로세스인지 아니면 기록 프로세스인지에 따라 송신기 측(520) 및 수신기측(530) 중 어느 하나는 제어기일 수 있고 다른 하나는 메모리일 수 있고 이들 두 측은 대칭일 필요는 없기 때문에, 이들 상에 회로에 관하여 제공된다.
송신기측(520)은 다시 기록 데이터 버퍼(521) 및 송신 인터페이스 회로(529)를 포함할 것이다. 또한, 이것은 해시 값 생성기(525) 및 멀티플렉서(527)를 포함할 것이다. 전송 프로세스에서, 기록될 데이터(523)는 기록 버퍼(520)로부터 해시 값 생성기(525) 및 MUX(527) 모두에 전송된다. 대응하여 해시 값 생성기(525)는 데이터로부터 해시 값을 생성하는데, 이것은 이어 MUX(527)에도 전달된다. 이어서, 멀티플렉서는 데이터 및 이에 이어 이의 해시 값을 송신 인터페이스 회로(529)에 그리고 이어 버스 구조(550) 상에 공급한다.
수신기측은 다시 수신기 인터페이스 회로 및 판독 데이터 버퍼(535)와 이에 더하여 몇몇 추가의 요소를 포함한다. 판독 인터페이스 회로(532)가 버스(550)로부터 데이터 및 대응하는 해시 값을 취한 후에, 디멀티플렉싱 회로(533)는 해시 값을 데이터로부터 분리하고 판독 데이터가 버퍼(535)에 그리고 다시 데이터 세트로부터 해시 값을 생성하는 수신기측 해시 값 생성기(539)에도 보내진다. 이어서, 수신기측에서 생성된 해시 값은 비교 회로(541)에서 수신된 해시 값과 비교된다. 실시예에 따라, 비교의 결과는 단지 이들 값이 전송 프로세스에 기인한 오류의 양과 일치하는지 결정하거나 또는 이에 더하여 오류량을 결정할 수 있다. 또한, 데이터 정정 엔진(537)은 데이터 재송신을 성능할 필요없이 인터페이스 오류를 정정하기 위해 일부 실시예에서 포함될 수 있다. 예시적 실시예에서, 해시 생성기(및 수신기측 상에 선택적인 데이터 정정 엔진)는, 회로에서 얼마간 겹치는 것이 있을지라도, 사용되는 NAND 코어 오류를 위한 ECC로부터 분리하는데, 사실 둘 다는 제어기의 동일 논리 회로 상에, 그러나 상이한 펌웨어 코드에 의해 구현될 수 있다. (이 논의를 위해서 개별적인 것으로 고찰되더라도, 두 오류 검출/정정 부분은 이하 기술되는 바와 같이 더 일반적인 실시예에서 상호작용할 수 있다). 전형적으로, 해시 값은 보내지는 정보(사용자 데이터, 대응하는 ECC, 헤더 정보, 등)의 전체에 기초하여 발생될 것이지만, 그러나 대안적 실시예에서, 이것은 예를 들어, 여러 오버헤드로부터 벗겨냄에 의한 단지 한 부분으로부터, 그리고 해시 값을 생성하기 위해 사용자 데이터 자체만을 사용함으로써 발생될 수도 있을 것이다.
또한, 도 12는 해시 비교 회로(541)의 출력을 수신하기 위해 연결된 피드백 처리 유닛(560)을 포함한다. 이 피드백은 이어서 561에서 분석되는데, 이것은 실시예에 따라 온도, 공급 전압 레벨, 및 NAND 코어의 처리에 관계된 퀄리티 중 하나 이상을 고려할 수 있다. 이어서, 563에서, 이 피드백의 결과는 전송 프로세스를 조절하기 위해 사용될 수 있고, 대응하여 송신 인터페이스 회로(529) 및 판독 인터페이스 회로(531) 중 하나 또는 모두에 연결된다. 기록 작동(제어기가 송신기측인 경우)에 있어서, 기록 전송이 제어기로부터 메모리 장치에 발부된 후에, 피드백 처리 유닛은 생성된 해시 값의 비교를 단지 다시 판독하고 이에 의해 기록-방향 메모리 인터페이스 무결성을 결정할 수 있다. 이에 기초하여, 인터페이스 기록 파라미터는 수정될 수 있고 프로세스는 요구된다면 다시 발행될 수 있다. 대칭으로, 메모리가 송신기측인 경우 판독-방향으로 동일 작동이 채용될 수 있다.
도 13은 데이터 및 생성된 해시 값을 버스 인터페이스를 통해 송신하기 위한 예를 도시한 도면이다. 위 부분에 도시된 바와 같이, 대응하는 해시 값은 자동으로 데이터에 첨부되고, 따라서 이들은 장치가 이 모드에서 작동할 때 함께 송신될 것이다. 아래 부분에 도시된 제 2 선택에서, 데이터 페이로드가 송신되고, 수신측은 대응하는 해시 값을 요청하며, 이어서 이것은 생성하어 송신된다. 데이터 페이로드는 기정의된 길이 또는 랜덤한 길이일 수 있다. 데이터 페이로드 길이가 기정의된다면, 해시 값은 제 1 선택에서처럼 데이터에 첨부되될 수 있고, 또는 요청시 보내질 수 있다. 데이터 페이로드 길이가 랜덤하다면, 해시 값은 특정한 명령을 발행한 후에 보내질 수 있다.
도 12에 관하여 기술된 기술 및 대응하는 회로에 대해 다수의 변형이 가능하다. 해시 값 엔진 및 해시 값에 관하여, 해시 엔진은 패리티 코드(순환 중복 검사 또는 CRC), ECC 등일 수 있다. 예를 들면, 통과/실패로 회답할 "2진" 실시예가 사용될 수 있고, 이것은 오류 비트 카운트(CRC)에 기초하여 형성될 수 있고 적은 수의 게이트로 구현되는 잇점이 있다. 대안적으로, "소프트" 실시예는 오류 비트 카운트(EBC), 및 선택적으로 실패된 비트의 위치를 회답할 수 있고, BCH 또는 리드-솔로몬 코드와 같은 ECC 코드에 기초하여 형성될 수 있어, 더 많은 정보를 제공하여 정확한 판단을 갖게 시스템을 돕는다. 해시 엔진은 선택적으로 예를 들어, 도 12의 데이터 정정 엔진(537)에 의해 나타낸 바와 같이, 메모리 코어로부터 정정하는 반전된(flipped) 비트와 유사하게, 인터페이스 실패를 정정하는 보안 특징을 가질 수도 있다. 전송으로부터 피드백에 기초하여, 시스템은 전송을 반복할 수도 있다. 전송 재시도는 2진 전송 상황 또는 소프트 전송 상황에 기초하여 판단될 수 있다. 또한, 전송 재시도는 전송 상황 및 NAND 비트 반전(flip)의 수와의 조합에 기초하여 판단될 수도 있는데, 예를 들면, 인터페이스가 N 오류를 야기하였고 NAND가 M 오류를 야기하였으며 제어기 오류 정정 능력이 P이고, P > N+M이라면, 시스템은 재송신하지 않기로 판단할 수 있다.
또한, 시스템은 다양한 서로 다른 방법으로 구성될 수 있다. 구성은 대칭이거나(이 경우, 제어기측에 해시 엔진 및 메모리측에 해시 엔진은 동일함) 또는 비대칭일 수 있다. 비대칭 구성에서, 서로 다른 송신 방향을 위해 서로 다른 구성이 사용되는데, 예를 들면, 기록 송신을 위해서 보다 신뢰성있는 메커니즘이 설계되는 한편, 판독 송신을 위해 보다 고속의 메커니즘이 설계될 수 있다. 또한, 인터페이스가 대칭으로 구성될지라도, 설정은 초기 기록과 데이터의 후속되는 판독 사이의 간격 동안 변경될 수도 있기 때문에, 주어진 한 세트의 데이터에 관하여 비대층으로 기능할 수도 있다는 점에 유의한다.
피드백 처리 유닛(530)은 제어기(100) 상에, 또는 메모리(200) 상에, 또는 모두에 다양하게 위치되거나, 또는 둘 사이에서 분산될 수 있다. 이것은 별도의 회로 상에서 형성될 수도 있다. 많은 용도에서, 제어기 회로는 흔히 더 진보된 처리 능력을 포함하며 메모리 시스템은 빈번히 복수의 메모리 칩으로 형성되기 때문에, 제어기 상에서 피드백 처리 유닛을 구현하는 것이 가장 현실성 있지만 그러나 본 명세서에서 제시되는 기술은 이것으로 제한되지 않는다. 이들 변형 중 어느 것에서, 데이터 전송 상황 국면에 대한 검사는 피드백 처리 유닛의 책임이다.
피드백 처리 유닛이 제어기측 상에 위치되는 예를 더욱 고찰하면, 판독 방향에서 제어기가 데이터 및 해시 값을 판독한 후에, 이들은 피드백 메커니즘을 통과할 것이며, 제어기는 통과/실패 상황을 결정할 것이며 이에 따라 인터페이스 설정을 조정할 수 있다(또는 하지 않을 수 있다). 제어기는 이미 데이터 및 해시 값을 판독하였기 때문에, 상황을 결정하는 것이 제어기의 로직에서 행해질 수 있기 때문에 이를 위해 플래시측으로부터 더 이상 정보의 필요성이 없다. 기록 방향에서, 데이터 페이로드 및 대응하는 해시 값이 메모리측에 보내지고, 이어서 제어기는, 메모리측으로부터 통과/실패 상황을 판독; 해시 값을 다시 판독하여 통과/실패를 결정; 메모리로부터 오류 비트 카운트(EBC)를 다시 판독; NAND로부터 EBC 및 오류 위치를 다시 판독; 또는 통과/실패 상황 및 메모리측으로부터 정정된 비트의 수를 판독하는 것인, 몇 가지 서로 다른 방법으로 작동할 수 있다.
피드백 처리 유닛은 인터페이스 설정을 수정하기로 판단할 수도 있다. 예를 들면, 구동 강도; 버스 주파수 또는 그외 타이밍 파라미터들; 인터페이스 전압; 인터페이스 모드(예를 들어, 정규/통상적-모드에서 토글-모드로 전환); 등의 인터페이스 설정이 수정될 수 있다. 이들 인터페이스 설정은 적응형 피드백 방식으로 수정될 수 있다. 프로세스 변동, 공급 전압 레벨, 및 온도와 같은 요인은 인터페이스 오류의 가능성에 영향을 미치기 때문에, 이들 요인은 도 12에 피드백 분석(561)에의 입력으로 포함될 수도 있다.
버스 주파수 및 다른 파라미터 설정은 조기에 레미션(remissions)에 기초할 수 있고, 명목상의 파라미터 설정 또한 여러 가지 방법으로 설정 가능할 수 있다. 예를 들면, 서로 다른 버스 커패시턴스/NAND 구성에 대해 서로 다른 값을 갖는 룩업 테이블(LUT)이 사용될 수 있다. 이러한 룩업 테이블(LUT)은 서로 다른 작동 프로세스 파라미터, 전압 공급 레벨, 온도 등에 대해 서로 다른 값을 가질 수 있다. 프로세스 파라미터, 전압 공급 레벨, 및 온도는 LUT에 사전에 정의되는 대신에, 함수(공식)에서 변수일 수 있다.
인터페이스 설정의 최적화 작업은 백그라운드에서 작동될 수 있다. 또한, 전압 공급 또는 온도 변화와 같은 특별한 이벤트는 인터페이스 설정 훈련 작업을 시작하게 하기 위해 사용될 수 있다. 또한, 인터페이스 훈련 작업은 도 11 및 경로(437)에 관련하여 위에서 기술된 바와 같이, NAND 코어를 거쳐, 그러나 이에 기록되지는 않고 송신되는 알려진 패턴을 사용할 수 있다. 또한, 인터페이스 설정은 서로 다를 수 있고, 판독 방향 및 기록 방향에 기초하거나, 서로 다른 데이터 보유 요건에 기초할 수 있다.
앞에 논의는 주로 메모리 시스템을 제어기 및 단일 메모리 장치 회로를 갖는 것으로서 고찰하였다. 더 일반적으로, 시스템은 여러 가지 버스 토폴로지를 사용하여 제어기(및 별도의 회로라면 피드백 처리 유닛)에 연결될 수 있는 몇몇 메모리 칩을 포함할 수 있다. 예를 들면, 모든 메모리 칩은 단일 시스템 버스를 공유할 수 있고, 또는 각 메모리 회로는 그 자신의 제어기-메모리 버스를 가질 수 있고, 또는 다양한 혼성 배열이 사용될 수도 있을 것이다. 그러면, 서로 다른 인터페이스 설정이 이 복수의 NAND 장치에 적용될 수 있다(예를 들면, 몇몇 장치에 인터페이스한다면, 이것은 병렬로 행해질 수도 있을 것이다). 또한, 인터페이스 퀄리티가 특정 NAND 장치의 부하 및/또는 셀/블록 퀄리티의 함수일 수 있기 때문에, 서로 다른 인터페이스 설정은 액세스되는 특정 NAND 장치에 기초하여 사용될 수 있다. 또한, 주어진 메모리 장치 내에서, 인터페이스 퀄리티는 특정 블록의 퀄리티의 함수일 수 있기 때문에, 서로 다른 인터페이스 설정은 NAND 코어 내 블록에 적용될 수도 있다.
앞에 단락의 기술의 더 상세한 것은 2010년 7월 13일에 출원된 미국 특허출원 번호 12/835,292에서 발견될 수 있다.
백- 엔드 ( BACK - END ) 메모리 시스템 인터페이스의 동적 최적화
이 단락은 메모리 시스템의 제어기-메모리(또는 "백-엔드") 인터페이스를 더욱 고찰하고 복수의 메모리 데이터 버스를 갖는 것을 포함하여, 고속 메모리 시스템에 적합한 백-엔드 판독 및 기록 성능을 동적으로 최적화하기 위한 몇 가지 방법을 제시할 것이다. 위에 논의된 바와 같이, 메모리 시스템은 일반적으로 임의의 양의 오류 공차를 갖게 설계되고, 이 오류가 제어기-메모리 전송 프로세스에서 그리고 실제 메모리 상에 저장 프로세스에서 일어날 수 있을지라도, 통상적으로 이들 중 마지막 것만이 ECC 프로세스를 위해 고려되고 백-엔드 인터페이스는 전형적으로 송신 채널 오류를 가능한 한 제거하거나, 적어도 최소화하게 최적화된다. 그렇지만, 많은 경우에서, 저장 프로세스로부터 비롯되는 데이터 오류(판독 및 기록 오류를 포함한)는 시스템의 ECC 능력보다 훨씬 미만일 수 있다. 예를 들면, 아주 많이 사이클된 장치가 최대 가용 데이터 정정을 필요로 할 수 있을지라도, 새 장치는 비교적 적은 오류를 가질 수 있어, 과잉의 오류 정정 능력을 갖는 시스템이 되게 할 수 있다. 이 단락은 메모리 시스템이 이 오류 정정 능력의 비(non)-제로 부분을 송신 채널에 내부적으로 할당하게 하는 방법을 제시한다. 이것은 송신 경로 오류가 야기될 것이라 할지라도 인터페이스가 예를 들어, 고속으로 또는 낮은 파워에서 작동할 수 있게 한다. 메모리 부분이 더 많은 양의 오류 정정 요구시, 할당은 동적으로 조절될 수 있다. 보완적 측면에서, 시스템은 서로 다른 작동 파라미터에 대해 결과적인 송신 오류의 양을 결정하기 위해 송신 경로를 교정한 다음 얼마나 많이 허용될 것인지에 기초하여 파라미터를 선택할 수 있다.
제어기와 메모리부 사이에 백-엔드 인터페이스를 더욱 고찰하면, 전형적인 메모리 시스템은 메모리 제어기 및 NAND 플래시 메모리 모듈과 같은 메모리 장치로 구성된다. 백-엔드 인터페이스는 메모리와 이의 제어기 사이에서 데이터 버스이다. 인터페이스는 전형적으로 두 방법 중 하나로 형성된다. 제 1 방법에서, 제어기 및 메모리 장치가 별개의 성분이라면, 백-엔드 인터페이스는 이들 성분이 실장되는 인쇄 회로 기판(PCB) 상에 도통 트레이스에 의해 형성된다. 제 2 방법에서, 제어기 및 메모리는 패키지 내 시스템(SIP) 또는 복수-칩 패키지(MCP)와 같은 단일 패키지 내에 캡슐화될 수 있다. 이 제 2 방법의 경우에, 백-엔드 인터페이스는 패키지 기판에 의해 형성된다.
앞에 단락에서 논의된 바와 같이, 메모리 시스템에서 전체 비트 오류 레이트(BER)는 NAND 플래시 메모리와 같은 메모리 장치에서 데이터 보유의 신뢰도와, 송신 오류를 야기할 수 있는 백-엔드 인터페이스의 결함인, 두 주요 요인에 기인할 수 있다. 오류 정정 코딩(ECC)은 이 전체 BER을 해결하기 위해 메모리 시스템에 채용될 수 있다. 도 14는 메모리 시스템에서 비트 오류에 대한 기여를 개략적으로 도시한 것이다.
도 14에 도시된 바와 같이, 전체 비트 오류 레이트 BER(605)의 주요 원인 중 하나. 판독, 및 기록 프로세스에서 야기된 임의의 오류뿐만 아니라, 저장된 데이터(전하 누설, 교란 등으로부터)에 대한 데이터 열화에 기인한, 이 오류의 영향이 NAND 보유(601)로서 도시되었다. 통상적으로, 데이터 정정은 이 요인만을 감안하기 위해 사용되는데, 이것은 데이터가 판독될 때 목격된다. 채널 결함에 기인한 오류는 603에 도시되었고 데이터 판독 및 기록 모두에 영향을 미치지만 영향은 판독에서 다시 목격될 것이다. 채널 임팩션 오류의 원인은 기호간 간섭(ISI), 동일 데이터 버스(버스내) 크로스토크, 버스간 크로스토크(복수-데이터 버스 설계에서), 인쇄 회로 기판(PCB) 노이즈, 실리콘 다이 노이즈, 패키지 노이즈 등을 포함할 수 있다. 다른 측에서, ECC(607)는 어떤 레벨의 오류까지의 오류를 정정할 수 있다.
제어기와 메모리 사이에서 데이터 전송 속도가 증가함에 따라, 백-엔드 인터페이스는 동일 데이터 버스(메모리내 데이터 버스 크로스토크) 내에 신호 사이에서 크로스토크 및 기호간 간섭(ISI)과 같은, 603에 기여하는 신호 무결성에 관계된 문제를 더 받기 쉽게 된다. 또한, 제어기가 복수의 메모리 장치에 액세스할 수 있는 메모리 토폴로지의 도입에 따라 백-엔드 인터페이스는 데이터 버스(메모리간 데이터 버스 크로스토크) 사이에서 동시에 전환 노이즈 및 크로스토크를 동시에(복수-메모리 데이터 버스 설계) 받도록 한다. 버스 속도 외에도, 데이터 버스의 전압 진폭 및 온도(PCB 트레이스에서의 주변 온도 및 패키지 내 시스템(SIP) 또는 복수-칩 패키지(MCP)에 있어서의 접합 온도)와 같은 요인들도 백-엔드 인터페이스의 신호 무결성에 영향을 미칠 수 있다. 그러므로, 백-엔드 인터페이스의 내재적 결함은 고속 메모리 시스템을 위한 전체 시스템 성능을 결정함에 있어 병목이 된다. 메모리 장치의 핀 커패시턴스는 메모리 다이의 수에 따라 증가한다. 복수 메모리 다이로 구성된 고 용량 메모리 장치는 이들의 데이터 입력/출력(I/O) 상에 고 커패시턴스를 나타내는데, 이것은 데이터 버스 구조의 에지 레이트 및 신호 무결성을 더욱 저하시킨다.
신호 트레이스 상에 신호 무결성에 관계된 문제는 크로스토크를 최소화하기 위해 서로 사이에서 이격된 신호 트레이스 사이의 간격을 증가시킴으로써 최소화될 수 있는데, 그러나 이 방법은 PCB 또는 기판 상에 가용한 면적에 의해 제한된다. 또한, 낮은 유전상수 및 낮은 소실(dissipation) 요인(손실 탄젠트)을 갖는 PCB 물질을 선택함으로써 감소될 수도 있지만, 그러나 이들 PCB 물질은 전형적인 물질보다 비싸다. 따라서 이 오류를 버스 속도를 낮추거나 아니면 작동 버스 파라미터를 열화시키는 출력으로 감소시키는 방법이 있더라도, 이들 방법은 결점을 갖는다.
이 단락은 백-엔드 인터페이스에서 이들 신호 무결성 문제를 해결하고 또한 제어기와 메모리 장치 사이에서 프로세스 변동도 감안하는 동적 최적화 기술을 제시한다. 프로세스 변동 외에, 메모리 시스템이 작동하는 전압 설정 및 온도는 변할 수 있다. 정적 해결책은 프로세스, 전압, 및 온도에 변화를 감안하지 않으며 이에 따라 최적의 접근법이 아닐 수 있다.
이 단락은 복수 메모리 데이터 버스를 갖는 것을 포함해서, 메모리 시스템의 백-엔드 성능을 동적으로 최적화하기 위해 의사 루프-백(의사 루프-백) 방식을 사용한다. 이것은 앞에 단락에 기술된 것과 유사한 종류의 메커니즘을 사용하여 행해지거나 미리 결정된 데이터 패턴을 사용함으로써 행해질 수 있다. 예시적 실시예는 의사-랜덤 비트 패턴(PRBS)을 사용할 것이다. 데이터 버스 설정을 동적으로 최적화하는 것은 제어기와 메모리 장치 사이에서 데이터 송신의 신뢰성을 최대화하는데 도움을 줄 수 있다. 이것은 메모리 시스템이 메모리 장치 상에 야기된 오류로부터 송신 오류를 구별하는 것을 할 수 있게 한다. 이들 측면은 고속 백-엔드 메모리 인터페이스 및 복수 메모리 데이터 버스가 구비된 제품에 특히 이점이 있을 수 있다.
PCB 또는 패키지 기판 상에 도통 트레이스는 제한된 대역폭을 갖고, 이것은 기호간 간섭(ISI)을 야기한다. ISI의 영향은 에지 레이트(상승시간 및 하강시간), 데이터 레이트, 데이터 패턴에 따른다. 디지털 통신에서, 의사-랜덤 비트 패턴(PRBS) 패턴이 주파수 성분이 풍부하기 때문에 데이터 링크의 최악의 경우의 ISI 영향을 활용하기 위해 종종 이러한 패턴이 사용된다. PRBS 패턴은, 랜덤 시퀀스와 유사한 특성을 가지며 전기적 데이터 링크에서 송신되는 데이터의 지터 및 아이 마스크(eye mask)를 측정하기 위해 사용되는 반복되는 패턴이다. PRBS은 전형적으로 2X - 1 PRBS 또는 PRBS-X로 표기되는데, 멱(power)(X)은 반복 패턴을 생성하기 위해 사용되는 시프트 레지스터 길이를 나타낸다. 각 2X - 1 PRBS는 비트(1를 제외하고)의 X개의 모든 가능한 조합을 내포한다. 신호 링크에 가장 큰 스트레스를 행사하고 랜덤 데이터의 더 나은 표현을 제공하기 때문에 실용적인 가장 긴 PRBS 패턴을 사용하는 것이 바람직하다.
예시적 실시예가 의사-랜덤 비트 패턴을 사용할지라도, 사용되었던 데이터 세트의 패턴이 루프-백 프로세스의 끝에서 되돌아 오는 데이터와 비교될 수 있도록 시스템이 이 패턴을 아는 한, 그외 다른 패턴이 사용될 수 있다. 예시적 실시예는 PRBS 패턴의 랜덤-유사 특징이 신호 링크의 ISI 영향을 최대화할 수 있기 때문에 이 패턴을 사용한다. PRBS 패턴 외에도, 이 발명에서 다른 유형의 데이터 패턴이 이용될 수 있고, 각 개개의 패턴은 다른 결과를 발생할 수 있다.
PRBS 패턴은 병렬 백-엔드 인터페이스 내 신호 링크 각각에 적용될 수 있다. 이상적으로, 메모리 시스템에서 실제적으로는 실현 가능하지 않지만, 패턴이 무한히 반복하게 될지라도, 이것은 패턴이 짧은 패턴을 사용함으로써 충분한 회수로 반복될 수 있다면 주된 결점이 아닐 것이다. 예를 들면, NAND 플래시 메모리의 페이지 크기가 16kB이라면, 127b의 패턴 길이를 갖는 PRBS-7 패턴은 8-비트 데이터 버스의 각 신호 링크에서 완전히 129회 반복될 수 있다. 나머지 비트(16384b - 127b x 129 = 1b)은 PRBS-7의 불완전한 카피를 구성한다. 종국에, 이 불완전한 PRBS 패턴은 대부분의 송신 링크 영향이 129 사이클의 완전한 PRBS 패턴에 의해 보완되기 때문에 심각성을 야기하지 않을 것이다.
도 15는 백-엔드 인터페이스에서 의사 루프-백 방법의 작동을 예시하기 위해 사용될 수 있다. 도 15에서, 좌측은 흐름이며, 후측은 대응하는 제어기-메모리 상호작용을 개략적으로 도시한다. 701에서, 제어기는 이의 데이터 스크램블링 및 오류 정정 코딩(ECC) 능력을 턴 오프 하는데, 우측에서, 이것은 이들 요소를 X하여 표현되었다. 결국, 제어기로부터 그리고 이 내로 전송되는 모든 데이터는 이들이 어떠한 스크램블링 또는 정정도 없는 원래의 포맷으로 되어 있다. 703에서, 제어기는 수신될 데이터를 메모리 셀에 전송함이 없이 자신의 데이터 래치 레지스터에 저장하여 유지할 것을 알리는 명령을 메모리 장치에 보낸다. 즉, 메모리 셀에 이 데이터 세트를 프로그램하는 것은 없다. 705에서, 제어기는 데이터 버스 구조 내 신호 링크 각각에 알려진 데이터 패턴(여기에서는 독립적인 PRBS-7 패턴)을 메모리 장치에 보낸다. 메모리 장치는 데이터 래치 레지스터가 다 채워지게 될 때까지 이에 데이터를 유지한다.
707에서, 제어기는 제어기가 중지할 것을 명령할 때까지 계속하여 이의 데이터 래치 레지스터에 저장된 데이터를 돌려보낼 것을 알리는 명령을 메모리 장치에 보낸다. 즉, 데이터 래치 레지스터가 각 링크 상에 모든 16kb을 실은 후에, 같은 데이터를 다시 돌려보내는 것을 시작할 것이다. 이에 따라, PRBS-7 패턴은 데이터 버스의 각 신호 링크 상에서 반복한다. PRBS 패턴 전송의 연속된 작동을 사용하는 예시적 실시예에 있어서의 이유는 신호 링크에 의해 야기된 비트 오류가 확률적 이벤트이기 때문이다. 링크를 거쳐 전송되는 데이터량이 클수록, 내재적 링크 성능의 통계적 측정으로서 송신 비트 오류 레이트(BER)를 더 정확히 나타낸다. 709에서, 제어기는 반복하는 PRBS-7 패턴(또는 다른 사용된 데이터 패턴)을 데이터 버스의 각 신호 링크로 수신한다.
711에서, 제어기는 수신된 데이터를 보내진 데이터 패턴(여기에서는 표준 PRBS-7 패턴)와 비교하고 임의의 오류를 송신 BER로서 보고한다. 이어서, 제어기는 PRBS-7 패턴(713)을 보내는 것을 중지하고 의사 루프-백 모드(715)에서 나오라는 명령을 메모리 장치에 보낸다.
도 16은 제어기가 데이터 패턴을 메모리 장치에 보내는 도 15의 블록(705)에 대응하며, 도 17은 블록(709)에 대응한다. 이들 두 도면 상에 버스 구조(811)의 한 가지 특정한 예가 도시되었는데, 몇 개의 라인은 명령 및 제어 신호용으로 상부에 도시되고 다수의 데이터 라인은 아래 도시되었다. 여기에서, CLE = 명령 래치 활성화, ALE = 어드레스 래치 활성화, RE = 판독 활성화, WE = 기록 활성화, DQS = 데이터 스트로브이며, 8개의 입력/출력 라인(IO0 ~ IO7)이 있다. 이들 박스도는 이 논의의 목적을 위해 단순화되었고, 메모리 제어기(801) 상에는 ECC 블록(805) 및 PRBS 생성기(803)만이 도시되었고 메모리 장치(831) 상에는 데이터 레지스터 REG(833)만을 나타내었으며, 다른 요소(831) 상에 비휘발성 메모리 어레이를 포함한)은 분명하게 도시되지 않았다. 제어기(801)가 데이터 패턴을 도 16에서 메모리 장치(831)를 거쳐 보내고 있을 때, 기록 활성화 신호 및 데이터 스트로브가 발현될 것이며, 각 신호 라인은 데이터 패턴을 나를 것이다. 여기에서, 각 IO 라인은 독립된 패턴을 나른다. 여기에서, 이들은 모두 PRBS의 개별적 카피이지만, 도면에서 이들의 상대적 스큐에 의해 나타낸 바와 같이 상이한 타이밍을 가질 수 있다. 메모리(831) 상에서 데이터 패턴은 레지스터(833)에 수신되었을 때 저장된다. 도 17에서 데이터는 레지스터(833)로부터 버스 구조(811)를 거쳐 제어기(801)에 돌려보내지며, 따라서 판독 활성화 신호 및 데이터 스트로브가 이제 발현된다. 일단 데이터 패턴이 왕복(비휘발성 메모리에 기록되지 않고)을 완료하고 제어기(801)로 되돌아 오면, 이의 원래의 형태에 대해 검사되고 얼마나 많이 변질이 생성하였는지를 알 수 있다. 버스 구조(811)가 복수의 신호 라인을 갖는 병렬 버스 인터페이스일지라도, 이것은 단지 하나의 특별한 예이고, 직렬 데이터 배열과 같은 그외 다른 버스 구조가 송신 채널을 위해 사용될 수 있다.
메모리 시스템의 성능은 데이터 버스 전압에 직접 관계된 파워 소비에 관련하여 데이터 전송 속도(버스 작동 주파수)에 의해 특징이 지워진다. 데이터 버스의 전압 진폭(데이터 버스를 구동하는 장치의 I/O에 의해 결정되는) 및 데이터 전송 속도를 가변시킴으로써, 전송 속도가 x-축을 따라 작성되고, 데이터 버스 전압이 y-축을 따라 작성되고, 송신 BER이 z-축을 따라 작성되는, 슈모(shmoo) 작도로서 3-차원 표현이 생성될 수 있다. 여기에서, 데이터 전송 속도는 데이터가 제어기 회로에서 메모리 회로로 전송될 때 도 15의 705에서처럼 기록 작동 동안 인가되는 것을 지칭하거나, 데이터가 메모리에서 제어기로 전송될 땐 709에서처럼 판독 작동을 지칭할 수 있다. 이러한 슈모 작도로 표현된 데이터는 최악의 경우의, 전형적인, 그리고 최상의 경우의 시나리오를 포괄하기 위해 다양한 출력 구동 임피던스(구동 강도) 및 온도에서 측정될 수 있다. 결국, 주어진 양의 허용 가능한 송신 오류에 대해서, 작동의 최적점은 데이터 버스 전압, 출력 구동 임피던스, 슬루 레이트(slew rate), 라인 커패시턴스, 전송 속도, 온도, 및 파워 소비와 같은 파라미터의 주어진 조합에서 결정될 수 있다. 슈모 작도의 예가 도 18에 도시되었다.
도 18은 메모리 시스템의 특정 예에 있어서 고정된 출력 구동 임피던스, 슬루 레이트, 라인 커패시턴스, 및 온도에서 데이터 버스 전압 및 데이터 전송 속도에 대한 송신 BER을 나타낸 슈모 작도의 예이다. 데이터 버스 전압은 수직축 상에 VDD이며, 전송 속도는 수평이다. 송신 BER의 양은 도면의 우측에 키(key)와 더불어 그래프 상에 색으로 나타내었다. 이 흑색 및 백색 표현에서, 매우 낮은 그리고 매우 높은 오류량의 표현은 동일한 것으로 보이지만, 주 도면에서 낮은 오류 영역은 밝은 색의 분할 영역의 왼쪽에 있고 높은 오류 영역은 오른쪽에 있다. 이러한 종류의 데이터에 기초하여, 허용된 송신 데이터량에 대해서, 작동 파라미터의 조합이 선택될 수 있는데, 여느 때처럼, 이것은 흔히 절충을 수반할 것이다. 예를 들면, 허용 가능한 BER의 요구되는 양은 10-5이고, 최대 속도가 일차적으로 중요한 것이면, VDD는 약 3.1 ~ 3.2V이 취해질 것이며, 약 170 ~ 180 Mb/s의 전송 속도를 허용할 것이다. 파워 소비가 더 중요한 관심사라면, 낮은 VDD 값은, 예를 들어, 2.8V이 될 수도 있을 것이며 따라서 동일 송신 BER에 관하여 약 150 Mb/s의 전송 속도를 허용할 것이다. 송신 채널에 할당된 BER이 예를 들면, 메모리가 얼마나 많이 사이클되었는지에 기초하거나 BER에의 조합된 기여가 시스템의 최대 능력에 접근하고 있음을 나타내는 ECC에 기초하여 다른 값에 재할당된다면, 버스 시스템을 위한 작동 파라미터는 이 데이터에 기초하여 제어기에 의해 조절될 수 있다.
결국, 여러 출력 구동 임피던스, 슬루 레이트, 라인 커패시턴스, 온도, 등에서 슈모 작도에 나타낸 데이터를 캡처함으로써 시스템을 교정한 후에, 메모리 시스템은 여러 경우에 따라 작동할 수 있다. 예를 들면, 요구되는 송신 BER이 주어진다면, 메모리 시스템은 최적 데이터 버스 전압, 데이터 전송 속도, 출력 구동 임피던스, 및 슬루 레이트를 참조하여 선택한다. (교정 프로세스로부터 이 데이터는 비휘발성 메모리에 또는 제어기 회로 내 메모리 공간(RAM)에 유지될 수 있다). 예를 들면, 이것은 요구되는 송신 BER이 되게 하는 가장 낮은 데이터 버스 전압, 가장 큰 데이터 전송 속도, 및 가장 낮은 출력 구동 임피던스를 선택할 수 있다. 또 다른 예에서, 데이터 버스 전압, 데이터 전송 속도, 출력 구동 임피던스, 슬루 레이트, 라인 커패시턴스, 및 온도의 특별한 조합이 주어진다면, 메모리 시스템은 어떤 송신 BER을 예상할 수 있을지 안다. 대안적으로, 메모리 시스템은 모든 요인 - 데이터 버스 전압, 데이터 전송 속도, 출력 구동 강도, 및 송신 BER인 모든 요인이 균형을 이루는 작동 조건을 선택할 수도 있다.
제어기 및 메모리 장치 내 I/O 버퍼의 설계는 서로 다를 수 있기 때문에, 메모리 시스템의 최적 판독 및 기록 성능은 개별적으로 결정될 수 있다. 상이한 메모리 시스템 설계로부터 비롯되는 차이 외에도, 작동 조건에서 차이에 의한 것뿐만 아니라, 프로세스 변동에 기인하여, 동일 장치의 개별적 예에 대해 차이가 있을 것이다. 장치 노화, 작동 조건에 변화 등을 감안하기 위해, 교정 프로세스는 반복될 수도 있다. 예를 들면, 초기 교정은 장치가 테스트 시간에 출하되기 전에 성능될 수도 있을 것이며, 이어서 제어기는 주기적으로 또는 장치 사이클링, 오류 결과, 작동 조건에 현저한 변화 등과 같은 이벤트에 응하여 시스템을 재교정할 수도 있을 것이다. 이에 따라, 송신 채널에 할당된 총 오류의 부분을 변경하기 위해서, 주어진 할당에 대한 대응하는 작동 파라미터가 동적으로 변경될 수 있다.
위에 언급된 바와 같이, 성능은 판독 및 기록 프로세스 둘 모두의 동안에서 최적화될 수 있다. 도 15로 다시 가면, 메모리 판독 동안 성능 최적화를 위해서, 705에서 시스템은 데이터 패턴에 대한 전송의 무결성을 최대화하기 위해서 메모리 장치의 데이터 래치 레지스터에 기록되는 데이터 패턴의 전송 속도를 늦춘다. 예를 들면, 10MHz 전송 속도에서, 16kb 데이터 래치 레지스터를 다 채우는데 1.6ms이 걸릴 것이다. 709 및 711에서, 시스템은 메모리 장치의 I/O가 구동기이고 제어기가 수신기인 경우 판독 작동 동안 생성하는 송신 BER을 측정한다. 이어서, 슈모 작도 데이터는 메모리 장치의 I/O 전압와 판독 주파수 사이에서 관계를 보여준다.
메모리 기록 동안 성능 최적화를 위해서, 705에서, 시스템은 메모리 장치의 데이터 래치 레지스터에 기록되는 데이터 패턴의 전압 및 전송 속도를 가변시킨다. 709에서, 시스템은 신호 링크에 의해 추가의 비트 오류를 주입하는 것을 방지하기 위해 메모리 장치에서 제어기로 데이터의 전송 속도를 늦출 것이다. 측정되는 송신 BER은 705에서 기록 작동 동안 생성하는 송신 BER이이다. 슈모 작도 데이터는 결국 제어기의 I/O 전압과 기록 주파수 사이에서 관계를 나타낼 것이다.
지금까지, 본 명세서에 제시된 여러 가지 양상은 제어기 회로와 단일 메모리 회로 사이에서 단일 버스만이 있는 경우의 맥락에서 제시되었다. 그러나, 메모리 시스템은 다양한 버스 토폴로지를 갖는 복수의 장치를 포함할 수 있고, 복수의 버스가 있을 때, 이들 버스 사이에서 상호작용은 오류의 추가 원인이 되게 할 수 있다. 본 명세서에서 교시하는 것은, 백-엔드 인터페이스 내 데이터 버스 내에서 신호 링크 각각을 특정 분해능, 예를 들면, 100 ps에 스큐하는 능력을 제공할 수 있다. 이러한 스큐하는 능력은 구동기 또는 수신기 내 제어기 또는 메모리 장치에 의해 도입될 수 있다. 스큐를 데이터 버스에 도입하는 것은 시스템이 PCB 또는 패키지 기판에서 신호 트레이스의 길이 오정합을 보상할 수 있게 한다. 스큐를 도입하는 것은 백-엔드 인터페이스 내에서 근단(near-end) 및 원단(far-end) 크로스토크의 영향을 감소시켜, 결국 송신 BER을 낮출 수 있다. 메모리내 데이터 버스 크로스토크; 및 메모리간 데이터 버스 크로스토크인 두 유형의 크로스토크가 수반되는다. 이러한 크로스토크는 데이터 버스에서 지터를 야기한다. 전형적인 메모리 시스템은 동시에, 병렬 데이터 버스에서 각 개개의 신호를 샘플링하기 위해 구동기에 의해 보내진 클럭을 사용한다. 이에 따라, 데이터 버스 내 각 신호 상에 지터 증가는 송신 BER 증가를 야기할 것이다. 서로에 관해 정렬하지 않게 복수의 메모리 데이터 버스를 거쳐가는 데이터를 스큐함으로써 메모리간 데이터 버스 크로스토크가 감소될 수 있다.
도 19는 버스 구조가 복수의 메모리 데이터 버스를 사용하는 메모리 시스템에서 이 크로스토크를 도시한 블록도이다. 메모리 시스템은 제어기(901) 및 각각의 버스(911-1, 911-2, 911-3, 911-4)를 통해 제어기에 연결되는 복수의, 여기에서는 4개의 메모리 장치(931-1, 931-2, 932-3, 934-4)를 포함한다. 버스(911) 각각에 대해서, 이들은 IO1 내지 IOX로서 상세히 도시된 바와 같이 하나 이상의 IO 라인을 가질 것이다. 전처럼, 이들 개개의 버스는 병렬, 직렬, 또는 데이터의 전송을 위한 이들의 조합으로 작동되는 다양한 다수의 IO 라인을 가질 수 있다. 이러한 종류의 복수-버스 배열은 성능을 개선하기 위해 흔히 SSD 유형의 장치에서 구현되는데(예를 들어, 미국 특허 7,376,034, 미국 특허 7,765,339, 또는 논문 "A High Performance Controller for NAND Flash-based Solid State Disk (NSSD)" Park et al, Samsung, Non-volatile Semiconductor Workshop, 2006, IEEE, NVSMW 2006, 21st, vol. no., pp. 17-20, 12-16 Feb, 2006 참조), 그러나 일부 메모리 카드 및 그외 메모리 시스템의 설계에서도 발견된다. 주어진 버스의 IO 라인 사이에서 일종의 메모리내 데이터 버스 크로스토크 외에도, 이제 서로 다른 버스 상에 메모리 사이에 데이터 버스 크로스토크 신호가 있을 것이다. 위에 기술된 PRBS 패턴 및 의사 루프-백 모드의 사용과 조합되었을 때, 최소 크로스토크, 및 결국 가장 낮은 송신 BER을 생성하는 최적의 스큐는 데이터 버스 전압, 전송 속도, 온도, 출력 구동 임피던스, 슬루 레이트, 라인 커패시턴스, 및 파워 소비의 어떤 조합이 주어진다면 결정될 수 있다.
본 명세서에 제시된 여러 가지 측면은 다양한 신호 무결성 문제의 존재 하에 백-엔드 인터페이스 성능을 최적화하는 저렴한 해결책을 제공한다. "미사용된" ECC 능력을 전송 프로세스에 동적으로 할당함으로써, 성능은 기술된 바와 같이 개선될 수 있다. 위에 언급된 바와 같이, 일부 메모리 시스템은 복수-상태 메모리 장치의 특성을 활용하는 "강" ECC 유형을 사용하는데, 이 경우 송신 채널의 사용을 위해 전송되는 오류 정정 능력은 1 대 1 방식으로 전송하지 않을 수도 있다. 메모리 시스템이 데이터 오류를 보상하기 위해 ECC를 포함할지라도, 전형적으로 명령에 대한 동일한 제공이 있고 메모리 장치는 변질된 명령을 흔히 수락하지 않을 것이며 따라서 오류가 의도적으로 데이터의 송신에서 허용될 수 있을지라도 이것은 명령에 대한 경우가 아닐 것임에 유의한다. 결국, 더 높은 전송 속도가 이들 메커니즘에 의해 데이터에 대해 허용될 수 있지만, 전송 속도(또는 이외 다른 파라미터)를 위한 더 느리고, 더 안전한 설정은 제어 신호에 어떠한 오류도 일어나지 않도록 포함될 수 있다.
결론
발명의 전술한 상세한 설명은 예시 및 설명의 목적으로 제시되었다. 전부 다이거나 개시된 정밀한 형태로 발명을 한정하는 것이 아니다. 많은 수정예 및 변형이 위에 교시된 바에 비추어 가능하다. 기술된 실시예는 발명의 원리 및 이의 실제 용도를 최상으로 설명하기 위해 선택되었으며, 그럼으로써 당업자가 여러 실시예에서 그리고 고찰되는 특정한 사용에 적합한 다양한 수정예를 사용하여 발명을 최상으로 이용할 수 있게 한 것이다. 발명의 범위는 이에 첨부된 청구항에 의해 정의되게 한 것이다.

Claims (66)

  1. 비휘발성 메모리 시스템을 작동하는 방법으로서,
    상기 비휘발성 메모리 시스템은 메모리 인터페이스를 갖는 제어기 회로, 비휘발성 메모리 셀 어레이와 제어기 인터페이스를 갖는 메모리 회로, 및 상기 제어기 회로의 상기 메모리 인터페이스와 상기 메모리 회로의 상기 제어기 인터페이스에 이들 사이에서 데이터의 전송 및 명령을 위해 연결된 버스 구조를 포함하고, 상기 메모리 시스템은, 데이터가 상기 메모리 어레이에 기록되도록 상기 제어기로부터 전송될 때부터, 데이터가 상기 메모리 어레이로부터 계속해서 다시 판독된 후 상기 제어기에서 수신될 때까지, 축적된 오류(error)의 0이 아닌(non-zero) 제 1 오류량을 용인할 수 있는, 비휘발성 메모리 시스템을 작동하는 방법에 있어서,
    상기 제어기 회로에 의해 상기 제 1 오류량의 0이 아닌 제 1 부분을 상기 버스 구조를 통해 상기 제어기 회로와 상기 메모리 회로 사이에서 데이터 전송에 할당하고, 상기 제 1 오류량의 나머지는 상기 메모리 회로 상에서 상기 데이터의 기록, 저장, 및 판독에 할당되는, 상기 할당 단계와,
    상기 제어기 회로에 의해 오류의 상기 제 1 부분까지 허용하게 작동하도록 상기 제어기 회로와 상기 메모리 회로 사이에서 상기 전송 특징을 설정하는 단계를
    포함하는, 비휘발성 메모리 시스템 작동 방법.
  2. 제 1항에 있어서, 상기 전송 특징은 상기 버스 구조의 상기 전압 진폭을 포함하는, 비휘발성 메모리 시스템 작동 방법.
  3. 제 1항에 있어서, 상기 전송 특징은 상기 버스 구조 상에 상기 데이터 전송 속도를 포함하는, 비휘발성 메모리 시스템 작동 방법.
  4. 제 1항에 있어서, 상기 전송 특징은 신호 구동 강도를 포함하는, 비휘발성 메모리 시스템 작동 방법.
  5. 제 1항에 있어서, 상기 전송 특징은 신호 슬루 레이트(signal slew rate)를 포함하는, 비휘발성 메모리 시스템 작동 방법.
  6. 제 1항에 있어서, 상기 메모리 시스템은 오류 코드 및 정정(ECC) 회로를 포함하고, 상기 제 1 오류량은 상기 ECC 회로의 능력에 기초하는, 비휘발성 메모리 시스템 작동 방법.
  7. 제 6항에 있어서, 상기 ECC 회로는 상기 제어기 회로 상의 있는, 비휘발성 메모리 시스템 작동 방법.
  8. 제 6항에 있어서, 상기 방법은,
    상기 제어기 회로에서 호스트로부터의 상기 데이터를 수신하는 단계와,
    상기 데이터에 대해 대응하는 ECC 코드를 생성하는 단계와,
    상기 데이터 및 대응하는 ECC 코드를 상기 전송 특징에 따라 상기 버스 구조를 통해 상기 제어기 회로에서 메모리 회로에 전송하는 단계와,
    이어서 상기 메모리 회로에 수시된 상기 데이터 및 대응하는 ECC 코드를 메모리 셀의 상기 어레이에 기록하는 단계를
    더 포함하는, 비휘발성 메모리 시스템 작동 방법.
  9. 제 1항에 있어서,
    후속하여 상기 제어기 회로에 의해서 상기 제 1 오류량의 제 2 부분을 상기 버스 구조를 통해 상기 제어기 회로와 상기 메모리 회로 사이에서 데이터 전송에 재할당하는 단계와,
    상기 제어기 회로에 의해 오류의 상기 제 2 부분까지 허용하게 작동하기 위해 상기 제어기 회로와 상기 메모리 회로 사이에서 상기 전송 특징을 설정하는 단계를
    더 포함하는, 비휘발성 메모리 시스템 작동 방법.
  10. 제 9항에 있어서, 상기 제어기 회로는 상기 메모리 회로에 의해 경험된 프로그램-소거 사이클에 응하여 상기 제 1 양으로부터 오류의 상기 부분을 상기 제 2 양에 재할당하는, 비휘발성 메모리 시스템 작동 방법.
  11. 제 9항에 있어서, 상기 제어기 회로는 상기 메모리 어레이로부터 다시 판독된 데이터 내 검출된 상기 오류량에 응하여 상기 제 1 양으로부터 오류의 상기 부분을 상기 제 2 양에 재할당하는, 비휘발성 메모리 시스템 작동 방법.
  12. 제 1항에 있어서, 상기 메모리 시스템은 상기 버스 구조에 대한 하나 이상의 작동 파라미터의 값과 상기 버스 구조를 통해 상기 제어기 회로와 상기 메모리 회로 사이에서 데이터의 상기 전송에 대한 결과적인 오류의 상기 양 사이에서 대응을 유지하고,
    상기 전송 특징을 선택하는 단계는, 상기 대응에 기초하여 상기 제어기 회로에 의해 상기 하나 이상의 작동 파라미터에 대한 값을 선택하는 단계를 포함하는, 비휘발성 메모리 시스템 작동 방법.
  13. 제 12항에 있어서, 상기 대응은 복수의 작동 파라미터에 대한 것이며, 상기 복수의 작동 파라미터에 대한 값을 선택하는 단계는 하나 이상의 미리 결정된 성능 기준에 따라 오류의 상기 제 1 부분까지 허용하는 상기 복수의 파라미터의 복수의 조합 중에서 선택하는 단계를 포함하는, 비휘발성 메모리 시스템 작동 방법.
  14. 제 13항에 있어서, 상기 작동 파라미터는 상기 버스 구조의 상기 전압 진폭, 및 상기 버스 구조 상에 상기 데이터 전송 속도를 포함하는, 비휘발성 메모리 시스템 작동 방법.
  15. 제 13항에 있어서, 상기 작동 파라미터는 신호 구동 강도를 포함하는, 비휘발성 메모리 시스템 작동 방법.
  16. 제 13항에 있어서, 상기 작동 파라미터는 신호 슬루 레이트를 포함하는, 비휘발성 메모리 시스템 작동 방법.
  17. 제 12항에 있어서, 상기 하나 이상의 작동 파라미터에 대한 상기 값을 선택하기 전에, 상기 제어기 회로에 의해 상기 대응을 설정하는 단계를 더 포함하는, 비휘발성 메모리 시스템 작동 방법.
  18. 제 17항에 있어서, 상기 대응을 설정하는 단계는 상기 작동 파라미터의 상기 값 각각에 대해서, 알려진 패턴의 데이터를 상기 데이터를 비휘발성 메모리 셀의 상기 어레이에 기록함이 없이 상기 버스 구조를 통해 상기 제어기 회로에서 상기 메모리 회로에 그리고 다시 역으로 전송하고 상기 제어기 회로에 역으로 수신되었을 때 상기 데이터를 보내진 상기 데이터 패턴과 비교하는 단계를 포함하는, 비휘발성 메모리 시스템 작동 방법.
  19. 제 17항에 있어서, 상기 메모리 시스템은 다중 메모리 회로를 포함하고, 상기 버스 구조는 상기 메모리 회로 각각을 개별적으로 상기 제어기 회로에 연결되게 하는 대응하는 다수의 버스를 포함하고, 상기 제어기 회로에 의해서 상기 대응을 설정하는 단계는 버스간 크로스토크 오류를 결정하는 단계를 포함하는, 비휘발성 메모리 시스템 작동 방법.
  20. 제어기 회로 및 비휘발성 메모리 셀 어레이를 포함하는 메모리 회로를 갖는 비휘발성 메모리 시스템을 작동하는 방법에 있어서,
    상기 제어기 회로에 의해, 상기 제어기를 상기 메모리 회로와 연결하는 버스 구조에 대한 하나 이상의 작동 파라미터 각각에 대한 복수의 값 각각에 대해서,
    알려진 데이터 패턴의 데이터 세트를 상기 제어기로부터 상기 제어기 상의 송신 회로를 통해 상기 버스 구조에 전송하는 단계와,
    상기 데이터 세트를 상기 버스 구조로부터 상기 메모리 회로 상의 수신 회로를 통해 수신하는 단계와,
    수신된 상기 데이터 세트를 상기 메모리 회로 상의 버퍼 메모리에 저장하는 단계와,
    상기 어레이에 기록되지 않고 상기 메모리 회로 상의 버퍼 메모리에 저장된 상기 데이터 세트를 상기 메모리 회로 상의 송신 회로를 통해 상기 버스 구조에 전송하는 단계와,
    상기 버스 구조로부터 상기 데이터 세트를 상기 제어기 상에서 수신 회로를 통해 수신하는 단계와,
    수신된 상기 데이터를 상기 알려진 패턴과 비교를 수행하는 단계와,
    상기 비교를 기초로, 상기 사용된 하나 이상의 작동 파라미터에 대해 상기 전송 프로세스에 연관 오류량을 결정하는 단계를
    포함하는 프로세스를 실행하여 송신 오류 교정(transmission error calibration)을 실행하는 단계와,
    이후, 상기 제어기 회로와 상기 메모리 회로 사이에서 데이터의 송신에서 0이 아닌 제 1 오류량을 허용하도록 상기 메모리 시스템을 작동하는 단계로서, 상기 제어기 회로는 상기 결정된 연관 오류량에 기초한 상기 송신 오류 교정 프로세스에 따라 상기 작동 파라미터의 값을 선택하는, 상기 메모리 시스템 작동 단계를
    포함하는, 비휘발성 메모리 시스템 작동 방법.
  21. 제 20항에 있어서, 상기 작동 파라미터는 상기 버스 구조의 상기 전압 진폭(voltage amplitude)을 포함하는, 비휘발성 메모리 시스템 작동 방법.
  22. 제 20항에 있어서, 상기 작동 파라미터는 상기 버스 구조 상에 상기 데이터 전송 속도(data transfer rate)를 포함하는, 비휘발성 메모리 시스템 작동 방법.
  23. 제 20항에 있어서, 상기 작동 파라미터는 신호 구동 강도(signal drive strength)를 포함하는, 비휘발성 메모리 시스템 작동 방법.
  24. 제 20항에 있어서, 상기 작동 파라미터는 신호 슬루 레이트를 포함하는, 비휘발성 메모리 시스템 작동 방법.
  25. 제 20항에 있어서,
    이어서, 상기 제어기 회로와 상기 메모리 회로 사이에서 데이터의 송신에서 제 2 오류량을 허용하도록 상기 메모리 시스템의 상기 메모리를 작동하는 단계로서, 상기 제어기 회로는 상기 결정된 연관 오류량에 기초하여 상기 송신 오류 교정 프로세스에 따라 상기 작동 파라미터의 값을 선택하는, 상기 작동 단계를 더 포함하는, 비휘발성 메모리 시스템 작동 방법.
  26. 제 20항에 있어서,
    이어서, 상기 송신 오류 교정 프로세스를 재수행하는 단계를 더 포함하는, 비휘발성 메모리 시스템 작동 방법.
  27. 제 20항에 있어서, 상기 송신 오류 교정 프로세스를 수행하는 단계에 이어, 상기 메모리 시스템은 그 결과를 비휘발성 메모리에 저장하는, 비휘발성 메모리 시스템 작동 방법.
  28. 제 20항에 있어서, 상기 송신 오류 교정은 복수의 작동 파라미터에 대해 수행되고, 상기 제어기 회로는 하나 이상의 미리 결정된 성능 기준(performance criteria)에 따라 상기 제 1 오류량까지 허용하는 상기 복수의 작동 파라미터의 복수의 조합 중에서 선택하는, 비휘발성 메모리 시스템 작동 방법.
  29. 제 20항에 있어서, 상기 메모리 시스템은 다중 메모리 회로(multiple memory circuit)를 포함하고 상기 버스 구조는 대응하는 다수의 버스를 포함하여 각각의 메모리 회로는 상기 제어 회로에 개별적으로 연결되고, 알려진 데이터 패턴의 상기 데이터 세트를 전송하는 단계는 버스간 크로스토크 오류(inter-bus cross-talk error)를 결정하기 위한 데이터를 포함하는, 비휘발성 메모리 시스템 작동 방법.
  30. 비휘발성 메모리 시스템에 있어서,
    메모리 인터페이스와 논리 회로를 포함하는 제어기 회로와,
    비휘발성 메모리 셀 어레이, 제어기 인터페이스, 및 논리 회로를 포함하는, 메모리 회로와,
    상기 제어기 회로의 상기 메모리 인터페이스와 상기 메모리 회로의 상기 제어기 인터페이스에 이들 사이에서 데이터와 명령을 전송하기 위해 연결된 버스 구조와,
    상기 제어기와 상기 메모리 회로의 수신측의 논리 회로에 이들 사이에서 데이터의 전송 동안 상기 전송의 결과로 일어나는 오류량에 관한 정보를 수신하기 위해 연결되고, 상기 메모리 인터페이스와 상기 제어기 인터페이스 중 하나 또는 모두에 이들 사이에서 상기 전송의 특징을 상기 오류량에 응하여 조절하기 위해 연결된 피드백 처리 회로(feedback processing circuit)를
    포함하는, 비휘발성 메모리 시스템.
  31. 제 30항에 있어서, 상기 데이터 전송은 상기 제어기 회로에서 상기 메모리 회로로 되는, 비휘발성 메모리 시스템.
  32. 제 30항에 있어서, 상기 데이터 전송은 상기 메모리 회로에서 상기 제어기 회로로 되는, 비휘발성 메모리 시스템.
  33. 제 30항에 있어서,
    상기 제어기와 상기 메모리 회로 각각의 상기 논리 회로는 해시 값 생성기(hash value generator)를 포함하고,
    상기 메모리 회로와 상기 제어기 중 첫 번째 것으로부터 그 두 번째 것으로의 전송 프로세스에서, 상기 첫 번째 것은 첫 번째 것의 논리 회로에 의해 데이터 세트와 상기 데이터 세트로부터 생성된 제 1 해시 값을 상기 버스 구조 상에서 송신하고, 상기 두 번째 것은 상기 버스 구조로부터 상기 데이터 세트와 상기 제 1 해시 값을 수신하고 상기 수신된 데이터 세트로부터 두 번째 것의 논리 회로에 의해 상기 데이터 세트로부터 제 2 해시 값을 생성하며,
    상기 메모리 회로와 상기 제어기 중 두 번째 것의 논리 회로는 상기 제 1 해시 값과 상기 제 2 해시 값을 수신하여 수신된 상기 제 1 해시 값과 상기 제 2 해시 값의 비교를 수행하기 위해 연결된 비교 회로를 더 포함하고, 상기 오류량은 상기 비교의 결과를 기준으로 하는, 비휘발성 메모리 시스템.
  34. 제 33항에 있어서, 상기 메모리 회로와 상기 제어기 상에서 상기 각각의 해시 값을 생성하기 위해 사용된 상기 회로는 동등한, 비휘발성 메모리 시스템.
  35. 제 33항에 있어서, 상기 메모리 회로와 상기 제어기 상에서 상기 각각의 해시 값을 생성하기 위해 사용된 상기 회로는 동등하지 않은, 비휘발성 메모리 시스템.
  36. 제 30항에 있어서, 상기 비교는 상기 제 1 및 제 2 해시 값이 같은지 결정하고, 상기 제 1 값과 제 2 값이 서로 같지 않다고 결정하는 것에 응하여, 상기 메모리 회로와 상기 제어기 중 두 번째 것의 상기 논리 회로는 상기 오류량을 더욱 정량화하는, 비휘발성 메모리 시스템.
  37. 제 30항에 있어서, 상기 피드백 처리 회로는 상기 제어기와 동일한 집적 회로 상에서 형성되는, 비휘발성 메모리 시스템.
  38. 제 30항에 있어서, 상기 피드백 처리 회로는 상기 메모리 회로와 동일한 집적 회로 상에서 형성되는, 비휘발성 메모리 시스템.
  39. 제 30항에 있어서, 상기 피드백 처리 회로는 상기 제어기와 상기 메모리 회로 모두로부터 개별적인 집적 회로 상에서 형성되는, 비휘발성 메모리 시스템.
  40. 제 30항에 있어서, 상기 메모리 회로는 복수의 집적 회로로 형성되고, 각각은 비휘발성 메모리 셀 어레이, 제어기 인터페이스, 및 논리 회로를 포함하는, 비휘발성 메모리 시스템.
  41. 제 40항에 있어서, 상기 메모리 회로의 각 집적 회로는 별개의 버스에 의해 상기 제어기에 연결되는, 비휘발성 메모리 시스템.
  42. 제 40항에 있어서, 상기 메모리 회로의 하나 이상의 집적 회로는 공유 버스에 의해 상기 제어기에 연결되는, 비휘발성 메모리 시스템.
  43. 제 40항에 있어서, 상기 제어기와 상기 메모리 회로의 복수의 집적 회로 사이에서 전송의 특징은 독립적으로 조절될 수 있는, 비휘발성 메모리 시스템.
  44. 제어기 회로와 비휘발성 메모리 회로를 포함하는 비휘발성 메모리 시스템을 작동하는 방법에 있어서,
    상기 제어기 회로와 상기 메모리 회로 중 첫 번째 것 상에서 논리 회로에서 데이터 세트로부터 제 1 해시 값을 생성하는 단계와,
    상기 데이터 세트와 상기 제 1 해시 값을 상기 제어기 회로와 상기 메모리 회로 중 첫 번째 것 상에서 인터페이스를 통해 버스 구조에 송신하는 단계와,
    상기 데이터 세트와 상기 제 1 해시 값을 상기 제어기 회로와 상기 메모리 회로 중 두 번째 것 상에서 인터페이스를 통해 버스 구조로부터 수신하는 단계와,
    수신된 데이터 세트로부터 제 2 해시 값을 상기 제어기 회로와 상기 메모리 회로 중 두 번째 것 상에서 논리 회로에서 생성하는 단계와,
    수신된 상기 제 1 해시 값과 상기 제 2 해시 값을 상기 제어기 회로와 상기 메모리 회로 중 두 번째 것 상에서 비교하는 단계와,
    상기 제어기 회로와 상기 메모리 회로 중 두 번째 것 상에서 상기 논리 회로에 의해, 수신된 상기 제 1 해시 값과 상기 제 2 해시 값의 비교를 기초로, 상기 제어기 회로와 상기 메모리 회로 사이에서 데이터 전송의 특징을 변경할지를 결정하는 단계를
    포함하는, 비휘발성 메모리 시스템 작동 방법.
  45. 제 44항에 있어서, 상기 제어기 회로와 상기 메모리 회로 중 첫 번째 것은 상기 제어기 회로인, 비휘발성 메모리 시스템 작동 방법.
  46. 제 44항에 있어서, 상기 제어기 회로와 상기 메모리 회로 중 첫 번째 것은 상기 메모리 회로인, 비휘발성 메모리 시스템 작동 방법.
  47. 제 44항에 있어서, 상기 메모리 회로와 상기 제어기 상에서 각각의 해시 값을 생성하기 위해 사용된 상기 논리 회로는 동등한, 비휘발성 메모리 시스템 작동 방법.
  48. 제 44항에 있어서, 상기 메모리 회로와 상기 제어기 상에서 각각의 해시 값을 생성하기 위해 사용된 상기 논리 회로는 동등하지 않은, 비휘발성 메모리 시스템 작동 방법.
  49. 제 44항에 있어서, 상기 제어기 회로와 상기 메모리 회로 사이에서 데이터 전송의 특징은 데이터가 전송된 주파수를 포함하는, 비휘발성 메모리 시스템 작동 방법.
  50. 제 44항에 있어서, 상기 제어기 회로와 상기 메모리 회로 사이에서 데이터 전송의 특징은 상기 버스 구조를 위한 클럭 주파수를 포함하는, 비휘발성 메모리 시스템 작동 방법.
  51. 제 44항에 있어서, 상기 제어기 회로와 상기 메모리 회로 사이에서 데이터 전송의 특징은 상기 전송에서 사용된 슬루 레이트를 포함하는, 비휘발성 메모리 시스템 작동 방법.
  52. 제 44항에 있어서, 상기 제어기 회로와 상기 메모리 회로 사이에서 데이터 전송의 특징은 데이터가 전송된 인터페이스 전압(interface voltage)을 포함하는, 비휘발성 메모리 시스템 작동 방법.
  53. 제 44항에 있어서, 상기 제어기 회로와 상기 메모리 회로 사이에서 데이터 전송의 특징은 데이터가 전송된 구동 강도(drive strength)를 포함하는, 비휘발성 메모리 시스템 작동 방법.
  54. 제 44항에 있어서, 상기 해시 값은 순환 중복 검사(cyclic redundancy check)에 기초하여 형성되는, 비휘발성 메모리 시스템 작동 방법.
  55. 제 44항에 있어서, 상기 해시 값은 오류 정정 코드(error correction code)에 기초하여 형성되는, 비휘발성 메모리 시스템 작동 방법.
  56. 제 44항에 있어서, 상기 제어기 회로와 상기 메모리 회로 중 첫 번째 것 상에서 상기 인터페이스를 통해 상기 데이터 세트와 상기 제 1 해시 값을 송신하기 전에, 상기 데이터 전송의 특징은 상기 버스 구조 및 상기 메모리 시스템의 상기 메모리 회로의 특징에 기초하여 룩업 테이블(look up table)로부터 결정된 초기 세트의 값으로 설정되는, 비휘발성 메모리 시스템 작동 방법.
  57. 제 44항에 있어서, 상기 제어기 회로와 상기 메모리 회로 중 첫 번째 것 상에서 상기 인터페이스를 통해 상기 데이터 세트와 상기 제 1 해시 값을 송신하기 전에, 상기 데이터 전송의 특징은 상기 하나 이상의 파라미터를 기초로 룩업 테이블로부터 결정된 초기 세트의 값으로 설정되는, 비휘발성 메모리 시스템 작동 방법.
  58. 제 44항에 있어서, 상기 제어기 회로와 상기 메모리 회로 중 첫 번째 것 상에서 상기 인터페이스를 통해 상기 데이터 세트와 상기 제 1 해시 값을 송신하기 전에, 상기 데이터 전송의 특징은 상기 제어기 회로와 상기 메모리 회로 사이에서 이전 데이터 송신 품질로부터 결정된 초기 세트의 값으로 설정되는, 비휘발성 메모리 시스템 작동 방법.
  59. 제 58항에 있어서, 상기 하나 이상의 파라미터는 공급 전압 레벨(supply voltage level)을 포함하는, 비휘발성 메모리 시스템 작동 방법.
  60. 제 58항에 있어서, 상기 하나 이상의 파라미터는 온도를 포함하는, 비휘발성 메모리 시스템 작동 방법.
  61. 제 58항에 있어서, 상기 하나 이상의 파라미터는 상기 제어기 회로와 상기 메모리 회로 중 하나 또는 모두에 대한 처리 값(processing value)을 포함하는, 비휘발성 메모리 시스템 작동 방법.
  62. 제 44항에 있어서, 상기 제 1 해시 값을 생성 및 송신하는 단계는 상기 제어기 회로와 상기 메모리 회로 중 하나로부터의 요청에 응하는, 비휘발성 메모리 시스템 작동 방법.
  63. 제 44항에 있어서, 상기 결정에 응하여, 상기 제어기 회로와 상기 메모리 회로 사이에서 데이터 전송의 특징을 변경하는 단계를 더 포함하고, 상기 변경 단계는, 상기 제어기 회로에서 상기 메모리 회로로, 상기 메모리 회로에서 상기 제어기 회로로의 전송에 관하여 대칭으로 수행되는, 비휘발성 메모리 시스템 작동 방법.
  64. 제 44항에 있어서, 상기 결정에 응하여, 상기 제어기 회로와 상기 메모리 회로 사이에서 데이터 전송의 특징을 변경하는 단계를 더 포함하고, 상기 변경 단계는, 상기 제어기 회로에서 상기 메모리 회로로, 상기 메모리 회로에서 상기 제어기 회로로의 전송에 관하여 비대칭으로 수행되는, 비휘발성 메모리 시스템 작동 방법.
  65. 제어기 회로 및 비휘발성 메모리 셀 어레이를 포함하는 메모리 회로를 갖는 비휘발성 메모리 시스템을 작동하는 방법에 있어서,
    상기 제어기 상의 버퍼 메모리로부터 한 세트의 데이터를 상기 제어기 상의 송신 회로를 통하여, 상기 제어기를 상기 메모리 회로에 연결하는 버스 구조에 전송하는 단계와,
    상기 버스 구조로부터 상기 데이터 세트를 상기 메모리 회로 상의 수신 회로를 통해 수신하는 단계와,
    수신된 상기 데이터 세트를 상기 메모리 회로 상의 버퍼 메모리에 저장하는 단계와,
    상기 메모리 회로 상의 버퍼 메모리에 저장된 상기 데이터 세트를, 상기 어레이에 기록되지 않고, 상기 메모리 회로 상의 송신 회로를 통해 상기 버스 구조에 전송하는 단계와,
    상기 버스 구조로부터 상기 데이터 세트를 상기 제어기 상에서 수신 회로를 통해 수신하는 단계와,
    이어서, 수신된 상기 데이터 세트를 상기 제어기 상의 버퍼 메모리에 저장하는 단계와,
    이어서, 수신되어 상기 제어기 상의 상기 버퍼 메모리에 저장된 상기 데이터 세트의 오류량에 기초하여 상기 제어기 회로와 상기 메모리 회로 사이에서 데이터 전송의 특징을 조절하는 단계를
    포함하는, 비휘발성 메모리 시스템 작동 방법.
  66. 제 65항에 있어서, 상기 오류량은 상기 제어기 상의 ECC 회로에 의해 결정되는, 비휘발성 메모리 시스템 작동 방법.
KR1020137002913A 2010-07-13 2011-07-12 백-엔드 메모리 시스템 인터페이스를 동적으로 최적화하는 방법 KR101719395B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US12/835,292 2010-07-13
US12/835,292 US8464135B2 (en) 2010-07-13 2010-07-13 Adaptive flash interface
US13/087,640 US9069688B2 (en) 2011-04-15 2011-04-15 Dynamic optimization of back-end memory system interface
US13/087,640 2011-04-15
PCT/US2011/043648 WO2012009318A1 (en) 2010-07-13 2011-07-12 Dynamic optimization of back-end memory system interface

Publications (2)

Publication Number Publication Date
KR20130139848A true KR20130139848A (ko) 2013-12-23
KR101719395B1 KR101719395B1 (ko) 2017-03-23

Family

ID=45469774

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137002913A KR101719395B1 (ko) 2010-07-13 2011-07-12 백-엔드 메모리 시스템 인터페이스를 동적으로 최적화하는 방법

Country Status (4)

Country Link
KR (1) KR101719395B1 (ko)
CN (1) CN107093464A (ko)
TW (1) TWI482169B (ko)
WO (1) WO2012009318A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170012400A (ko) * 2014-06-02 2017-02-02 마이크론 테크놀로지, 인크. 확장 가능 메모리 시스템 프로토콜로 패킷들을 송신하기 위한 시스템들 및 방법들
KR20210125611A (ko) * 2019-03-11 2021-10-18 마이크론 테크놀로지, 인크 수신측 크로스토크 소거

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9343165B2 (en) * 2012-12-31 2016-05-17 Sandisk Technologies Inc. Dynamic drive strength optimization
US10014070B2 (en) 2013-01-14 2018-07-03 Micron Technology, Inc. Data path integrity verification in memory devices
TWI498893B (zh) * 2013-10-31 2015-09-01 Innostor Technology Corp MLC memory write method in multiple environments
TWI524179B (zh) 2014-04-22 2016-03-01 新唐科技股份有限公司 儲存單元控制器及其控制方法、以及儲存裝置
TWI727960B (zh) * 2015-07-21 2021-05-21 美商愛德斯托科技公司 具形成於位元線下共用導體之具可程式阻抗元件記憶體裝置
US10430085B2 (en) 2016-11-08 2019-10-01 Micron Technology, Inc. Memory operations on data
US10261876B2 (en) 2016-11-08 2019-04-16 Micron Technology, Inc. Memory management
CN117215824A (zh) * 2017-09-28 2023-12-12 北京忆芯科技有限公司 基于机器学习的读出数据错误处理
TWI737262B (zh) * 2020-04-16 2021-08-21 晶豪科技股份有限公司 用於非揮發性記憶體裝置的錯誤更正的控制驗證操作的方法及非揮發性記憶體裝置
US11217285B1 (en) 2020-08-05 2022-01-04 Apple Inc. Memory subsystem calibration using substitute results
KR20220019944A (ko) * 2020-08-11 2022-02-18 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
JP7383831B2 (ja) * 2020-09-23 2023-11-20 キオクシア株式会社 半導体記憶装置及びメモリシステム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7246274B2 (en) * 2004-09-10 2007-07-17 Rambus Inc. Method and apparatus for estimating random jitter (RJ) and deterministic jitter (DJ) from bit error rate (BER)
US20080112255A1 (en) * 2006-11-15 2008-05-15 Aaron John Nygren Training of signal transfer channels between memory controller and memory device
US20090271678A1 (en) * 2008-04-25 2009-10-29 Andreas Schneider Interface voltage adjustment based on error detection
US20100005219A1 (en) * 2008-07-01 2010-01-07 International Business Machines Corporation 276-pin buffered memory module with enhanced memory system interconnect and features

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5095344A (en) 1988-06-08 1992-03-10 Eliyahou Harari Highly compact eprom and flash eeprom devices
US5070032A (en) 1989-03-15 1991-12-03 Sundisk Corporation Method of making dense flash eeprom semiconductor memory structures
US5343063A (en) 1990-12-18 1994-08-30 Sundisk Corporation Dense vertical programmable read only memory cell structure and processes for making them
US6222762B1 (en) 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
US5313421A (en) 1992-01-14 1994-05-17 Sundisk Corporation EEPROM with split gate source side injection
US5315541A (en) 1992-07-24 1994-05-24 Sundisk Corporation Segmented column memory array
KR0169267B1 (ko) 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
US5661053A (en) 1994-05-25 1997-08-26 Sandisk Corporation Method of making dense flash EEPROM cell array and peripheral supporting circuits formed in deposited field oxide with the use of spacers
US5903495A (en) 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
US5768192A (en) 1996-07-23 1998-06-16 Saifun Semiconductors, Ltd. Non-volatile semiconductor memory cell utilizing asymmetrical charge trapping
US6768165B1 (en) 1997-08-01 2004-07-27 Saifun Semiconductors Ltd. Two bit non-volatile electrically erasable and programmable semiconductor memory cell utilizing asymmetrical charge trapping
US6510488B2 (en) 2001-02-05 2003-01-21 M-Systems Flash Disk Pioneers Ltd. Method for fast wake-up of a flash memory system
US7093172B2 (en) * 2002-08-07 2006-08-15 Broadcom Corporation System and method for determining on-chip bit error rate (BER) in a communication system
WO2004015740A2 (en) 2002-08-08 2004-02-19 M-Systems Flash Disk Pioneers Ltd. Integrated circuit for digital rights management
US8001325B2 (en) 2004-01-09 2011-08-16 Sandisk Corporation Memory card that supports file system interoperability
US7694202B2 (en) * 2004-01-28 2010-04-06 Micron Technology, Inc. Providing memory test patterns for DLL calibration
US20050213393A1 (en) 2004-03-14 2005-09-29 M-Systems Flash Disk Pioneers, Ltd. States encoding in multi-bit flash cells for optimizing error rate
US7310347B2 (en) 2004-03-14 2007-12-18 Sandisk, Il Ltd. States encoding in multi-bit flash cells
US7057939B2 (en) 2004-04-23 2006-06-06 Sandisk Corporation Non-volatile memory and control with improved partial page program capability
US7853837B2 (en) * 2004-09-10 2010-12-14 Rambus Inc. Memory controller and method for operating a memory controller having an integrated bit error rate circuit
US7493457B2 (en) 2004-11-08 2009-02-17 Sandisk Il. Ltd States encoding in multi-bit flash cells for optimizing error rate
US7426623B2 (en) 2005-01-14 2008-09-16 Sandisk Il Ltd System and method for configuring flash memory partitions as super-units
US8341371B2 (en) 2005-01-31 2012-12-25 Sandisk Il Ltd Method of managing copy operations in flash memories
US7480766B2 (en) 2005-08-03 2009-01-20 Sandisk Corporation Interfacing systems operating through a logical address space and on a direct data file basis
US7913004B2 (en) 2005-09-06 2011-03-22 Sandisk Il Ltd Portable selective memory data exchange device
US7752382B2 (en) 2005-09-09 2010-07-06 Sandisk Il Ltd Flash memory storage system and method
US20070061597A1 (en) 2005-09-14 2007-03-15 Micky Holtzman Secure yet flexible system architecture for secure devices with flash mass storage memory
US7644347B2 (en) * 2005-09-30 2010-01-05 Intel Corporation Silent data corruption mitigation using error correction code with embedded signaling fault detection
US20070086244A1 (en) 2005-10-17 2007-04-19 Msystems Ltd. Data restoration in case of page-programming failure
US7954037B2 (en) 2005-10-25 2011-05-31 Sandisk Il Ltd Method for recovering from errors in flash memory
US7624239B2 (en) 2005-11-14 2009-11-24 Sandisk Corporation Methods for the management of erase operations in non-volatile memories
US7376034B2 (en) 2005-12-15 2008-05-20 Stec, Inc. Parallel data storage system
US8020060B2 (en) 2006-01-18 2011-09-13 Sandisk Il Ltd Method of arranging data in a multi-level cell memory device
US7502254B2 (en) 2006-04-11 2009-03-10 Sandisk Il Ltd Method for generating soft bits in flash memories
US8330878B2 (en) 2006-05-08 2012-12-11 Sandisk Il Ltd. Remotely controllable media distribution device
US20070271495A1 (en) * 2006-05-18 2007-11-22 Ian Shaeffer System to detect and identify errors in control information, read data and/or write data
US7583545B2 (en) 2006-05-21 2009-09-01 Sandisk Il Ltd Method of storing data in a multi-bit-cell flash memory
US7711890B2 (en) 2006-06-06 2010-05-04 Sandisk Il Ltd Cache control in a non-volatile memory device
US7765339B2 (en) 2006-10-27 2010-07-27 Stec, Inc. Distributed addressing in solid-state storage
US8166267B2 (en) 2006-12-26 2012-04-24 Sandisk Technologies Inc. Managing a LBA interface in a direct data file memory system
US8046522B2 (en) 2006-12-26 2011-10-25 SanDisk Technologies, Inc. Use of a direct data file system with a continuous logical address space interface and control of file address storage in logical blocks
US20080155175A1 (en) 2006-12-26 2008-06-26 Sinclair Alan W Host System That Manages a LBA Interface With Flash Memory
US7917686B2 (en) 2006-12-26 2011-03-29 Sandisk Corporation Host system with direct data file interface configurability
US8209461B2 (en) 2006-12-26 2012-06-26 Sandisk Technologies Inc. Configuration of host LBA interface with flash memory
US7739444B2 (en) 2006-12-26 2010-06-15 Sandisk Corporation System using a direct data file system with a continuous logical address space interface
US7679965B2 (en) 2007-01-31 2010-03-16 Sandisk Il Ltd Flash memory with improved programming precision
US7904793B2 (en) 2007-03-29 2011-03-08 Sandisk Corporation Method for decoding data in non-volatile storage using reliability metrics based on multiple reads
US7975209B2 (en) 2007-03-31 2011-07-05 Sandisk Technologies Inc. Non-volatile memory with guided simulated annealing error correction control
US7966550B2 (en) 2007-03-31 2011-06-21 Sandisk Technologies Inc. Soft bit data transmission for error correction control in non-volatile memory
CN101162449B (zh) * 2007-10-08 2010-06-02 福州瑞芯微电子有限公司 Nand flash控制器及其与nand flash芯片的数据交互方法
US8201069B2 (en) * 2008-07-01 2012-06-12 International Business Machines Corporation Cyclical redundancy code for use in a high-speed serial link

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7246274B2 (en) * 2004-09-10 2007-07-17 Rambus Inc. Method and apparatus for estimating random jitter (RJ) and deterministic jitter (DJ) from bit error rate (BER)
US20080112255A1 (en) * 2006-11-15 2008-05-15 Aaron John Nygren Training of signal transfer channels between memory controller and memory device
US20090271678A1 (en) * 2008-04-25 2009-10-29 Andreas Schneider Interface voltage adjustment based on error detection
US20100005219A1 (en) * 2008-07-01 2010-01-07 International Business Machines Corporation 276-pin buffered memory module with enhanced memory system interconnect and features

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170012400A (ko) * 2014-06-02 2017-02-02 마이크론 테크놀로지, 인크. 확장 가능 메모리 시스템 프로토콜로 패킷들을 송신하기 위한 시스템들 및 방법들
KR20210125611A (ko) * 2019-03-11 2021-10-18 마이크론 테크놀로지, 인크 수신측 크로스토크 소거
US11762592B2 (en) 2019-03-11 2023-09-19 Micron Technology, Inc. Receive-side crosstalk cancelation

Also Published As

Publication number Publication date
CN107093464A (zh) 2017-08-25
KR101719395B1 (ko) 2017-03-23
TW201225100A (en) 2012-06-16
TWI482169B (zh) 2015-04-21
WO2012009318A1 (en) 2012-01-19
CN103098029A (zh) 2013-05-08

Similar Documents

Publication Publication Date Title
US9069688B2 (en) Dynamic optimization of back-end memory system interface
KR101719395B1 (ko) 백-엔드 메모리 시스템 인터페이스를 동적으로 최적화하는 방법
US9384128B2 (en) Multi-level redundancy code for non-volatile memory controller
US8464135B2 (en) Adaptive flash interface
US10896123B2 (en) Enhancing the effectiveness of read scan performance and reliability for non-volatile memory
US10102920B2 (en) Memory system with a weighted read retry table
US10090044B2 (en) System and method for burst programming directly to MLC memory
US9455048B2 (en) NAND flash word line management using multiple fragment pools
KR101312146B1 (ko) Nand 메모리들을 위한 관리 데이터의 프로그래밍
US7477547B2 (en) Flash memory refresh techniques triggered by controlled scrub data reads
KR101040961B1 (ko) 온-칩 비휘발성 메모리 기록 캐쉬를 사용하기 위한 시스템및 방법
US7573773B2 (en) Flash memory with data refresh triggered by controlled scrub data reads
US8593866B2 (en) Systems and methods for operating multi-bank nonvolatile memory
US20170287568A1 (en) System and Method for Erase Detection before Programming of a Storage Device
TWI470641B (zh) 用於快閃記憶體控制器及快閃記憶體陣列之間界面的方法及裝置
US10535411B2 (en) System and method for string-based erase verify to create partial good blocks
EP2135251B1 (en) Flash memory refresh techniques triggered by controlled scrub data reads
US10803954B2 (en) Memory system
US8732391B2 (en) Obsolete block management for data retention in nonvolatile memory
US9312013B1 (en) Configuration method of erase operation, memory controlling circuit unit and memory storage device
CN112562772B (zh) 自适应低密度奇偶校验硬解码器
US20230410856A1 (en) Memory chip, memory device and operation method thereof
CN103098029B (zh) 后台存储器系统接口的动态优化
CN115620785A (zh) 非易失性存储器件、用于控制其的控制器、具有其的存储设备及其操作方法
KR20200090031A (ko) 메모리 시스템 및 이의 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20200218

Year of fee payment: 4