KR101719395B1 - Dynamic optimization of back-end memory system interface - Google Patents
Dynamic optimization of back-end memory system interface Download PDFInfo
- Publication number
- KR101719395B1 KR101719395B1 KR1020137002913A KR20137002913A KR101719395B1 KR 101719395 B1 KR101719395 B1 KR 101719395B1 KR 1020137002913 A KR1020137002913 A KR 1020137002913A KR 20137002913 A KR20137002913 A KR 20137002913A KR 101719395 B1 KR101719395 B1 KR 101719395B1
- Authority
- KR
- South Korea
- Prior art keywords
- circuit
- memory
- controller
- data
- interface
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection 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/221—Detection 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital 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/5621—Digital 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/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
- G11C29/022—Detection or location of defective auxiliary circuits, e.g. defective refresh counters in I/O circuitry
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
- G11C29/028—Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Read Only Memory (AREA)
Abstract
플래시 메모리 카드 또는 기타 유사한 구조의 장치와 같은 메모리 시스템을 위한 메모리 회로 인터페이스에 대한 내부 제어기를 위한 구조와, 대응하는 작동 기술이 제시된다. 제어기 회로와 메모리 회로(또는 회로) 사이에서 인터페이스는 제어기-메모리 전송에 기인하여 일어나는 오류량이 모니터되고, 이에 따라 전송 특징(이를테면, 클럭 레이트, 구동 강도 등)이 수정될 수 있는 피드백 프로세스를 포함한다. 비휘발성 메모리 시스템의 제어기-메모리(또는 "백-엔드") 인터페이스의 성능을 동적으로 최적화하기 위한 기술이 또한 제시된다. 메모리 시스템은 일반적으로 ECC에 의해 정정될 수 있는 오류에 대한 임의의 양의 오류 공차를 갖도록 설계된다. 장치가 새것일 때와 같은 상황에서, 시스템의 ECC 능력은 데이터 저장 오류를 정정하기 위해 필요로 되는 것을 초과한다. 이러한 상황에서 메모리 시스템은 내부적으로 오류 정정 능력의 0이 아닌(non-zero) 부분을 백-엔드 인터페이스에 할당한다. 이것은 인터페이스가 송신 경로 오류를 초래하더라도, 예를 들어, 보다 고속이거나 보다 낮은 파워에서 작동할 수 있도록 한다. 또한, 시스템은 여러 작동 조건에 의한 오류량을 결정하기 위해 백-엔드 인터페이스를 교정할 수 있어서, 백-엔드 인터페이스의 작동 파라미터가 전송 프로세스에 할당된 오류량에 따라 설정될 수 있도록 한다.A structure for an internal controller for a memory circuit interface for a memory system such as a flash memory card or other similar structure device, and a corresponding operating technique are presented. The interface between the controller circuit and the memory circuit (or circuit) includes a feedback process in which the amount of error that occurs due to the controller-memory transmission is monitored, and thus the transmission characteristics (such as clock rate, drive strength, etc.) . Techniques for dynamically optimizing the performance of a controller-memory (or "back-end") interface of a non-volatile memory system are also presented. The memory system is generally designed to have any amount of error tolerance for errors that can be corrected by the ECC. In situations such as when the device is new, the ECC capability of the system exceeds that needed to correct data storage errors. In this situation, the memory system internally allocates a non-zero portion of the error correction capability to the back-end interface. This allows the interface to operate at higher speeds or lower power, for example, even if it causes transmission path errors. In addition, the system can calibrate the back-end interface to determine the amount of error due to various operating conditions so that the operating parameters of the back-end interface can be set according to the amount of error assigned to the transmission process.
Description
이 출원은, 반도체 플래시 메모리와 같은 재프로그램 가능한 비휘발성 메모리 시스템의 작동에 관한 것이고, 보다 구체적으로는, 메모리 시스템의 제어기와 메모리 회로 사이의 내부 인터페이스에 관한 것이다.This application relates to the operation of a reprogrammable non-volatile memory system such as a semiconductor flash memory, and more particularly to an internal interface between a controller of a memory system and a memory circuit.
전하를 비휘발성으로 저장할 수 있는, 특히 소형 폼 팩터 카드로서 패키지되는 EEPROM 및 플래시 EEPROM 형태의 고체 상태 메모리는 최근에 다양한 모바일 및 휴대 장치, 특히 정보 기기 및 소비자 전자 제품에서 선택되는 저장장치가 되었다. 고체 상태 메모리이기도 한 RAM(random access momory)과는 달리, 플래시 메모리는 비휘발성이고 전원이 꺼진 후에도 자신의 저장된 데이터를 보존한다. 또한, ROM(판독 전용 메모리)와는 달리, 플래시 메모리는 디스크 저장 장치와 유사하게 재기록될 수 있다. 높은 비용에도 불구하고 플래시 메모리는 점점 더 대량 저장 응용에서 사용되고 있다. 하드 드라이브 및 플로피 디스크와 같은 회전하는 자기 매체에 기초한 종래의 대량 저장장치는 모바일 및 휴대 환경엔 적합하지 않다. 이것은 디스크 드라이브가 부피가 커지기 쉽고, 기계적 고장이 나기 쉬우며 큰 레이턴시 및 큰 전력요건을 갖기 때문이다. 이들 바람직하지 못한 속성으로 인해서 디스크 기반의 저장장치는 대부분의 모바일 및 휴대 응용에서 실현되지 못한다. 반면, 내장형이면서도 착탈 가능한 카드 형태인 플래시 메모리는 이의 소형 크기, 저 전력 소비, 고속 및 고 신뢰도 특징으로 인해 모바일 및 휴대 환경에서 이상적으로 적합하다.Solid state memories, in the form of EEPROMs and flash EEPROMs, which are capable of storing charge in a nonvolatile manner, especially as small form factor cards, have recently become storage devices of choice in a variety of mobile and portable devices, particularly information devices and consumer electronics. Unlike random access momory (RAM), which is also a solid state memory, the flash memory is nonvolatile and preserves its stored data even after the power is turned off. Further, unlike ROM (read only memory), flash memory can be rewritten similarly to disk storage. Despite the high cost, flash memory is increasingly being used in mass storage applications. Conventional mass storage devices based on rotating magnetic media such as hard drives and floppy disks are not suitable for mobile and portable environments. This is because disk drives tend to be bulky, prone to mechanical failure, have large latencies and large power requirements. Due to these undesirable properties, disk-based storage devices are not realized in most mobile and portable applications. On the other hand, flash memory, a built-in, removable card type, is ideally suited for mobile and portable environments due to its compact size, low power consumption, high speed and high reliability features.
플래시 EEPROM은, 소거될 수 있고 새로운 데이터를 이들의 메모리 셀에 기록 또는 "프로그램"시킬 수 있는 비휘발성 메모리인 점에서 EEPROM(전기적으로 소거 가능하고 프로그램 가능한 판독 전용 메모리)와 유사하다. 이들 둘 모두는, 전계 효과 트랜지스터 구조에서, 소스영역과 드레인 영역 사이에 있는 반도체 기판 내 채널영역 위에 배치된 플로팅(연결되지 않은) 도전성 게이트를 이용한다. 이때 제어 게이트는 플로팅 게이트 위에 설치된다. 트랜지스터의 임계 전압 특징은 플로팅 게이트 상에 보존되는 전하량에 의해 제어된다. 즉, 플로팅 게이트 상에 소정 레벨의 전하에 대해서, 소스영역과 드레인 영역간에 도통이 되게 트랜지스터가 턴 "온" 되기 전에 제어 게이트에 인가되어야 하는 대응하는 전압(임계)이 있다. 특히, 플래시 EEPROM과 같은 플래시 메모리는 메모리 셀의 전체 블록이 동시에 소거될 수 있게 한다.Flash EEPROMs are similar to EEPROMs (electrically erasable programmable read-only memories) in that they are nonvolatile memories that can be erased and write or "program" new data to their memory cells. Both use a floating (unconnected) conductive gate disposed over the channel region in the semiconductor substrate between the source and drain regions in a field effect transistor structure. At this time, the control gate is mounted on the floating gate. The threshold voltage characteristic of the transistor is controlled by the amount of charge stored on the floating gate. That is, for a given level of charge on the floating gate, there is a corresponding voltage (threshold) that must be applied to the control gate before the transistor turns on to become conductive between the source and drain regions. In particular, a flash memory such as a flash EEPROM allows all blocks of a memory cell to be erased simultaneously.
플로팅 게이트는 일 범위의 전하를 보존할 수 있고 따라서 임계 전압 윈도우 내의 임의의 임계 전압 레벨까지 프로그램될 수 있다. 임계 전압 윈도우의 크기는 장치의 최소 및 최대 임계 레벨에 의해 그 범위가 정해지고, 이는 플로팅 게이트에 프로그램될 수 있는 일 범위의 전하에 대응한다. 임계 윈도우는 일반적으로 메모리 장치의 특징, 작동 조건, 및 이력에 따른다. 윈도우 내의 각각의 서로 구별되고 결정이 가능한 임계 전압 레벨의 범위는 원리적으로는 셀의 명확한 메모리 상태를 지정하는데 사용될 수 있다.The floating gate can preserve a range of charges and thus can be programmed to any threshold voltage level within the threshold voltage window. The size of the threshold voltage window is dictated by the minimum and maximum threshold levels of the device, which corresponds to a range of charges that can be programmed into the floating gate. The threshold window generally depends on the characteristics, operating conditions, and history of the memory device. The range of each distinct and determinable threshold voltage level within the window can in principle be used to specify a definite memory state of the cell.
메모리 셀로서 작용하는 트랜지스터는 전형적으로 두 가지 메커니즘 중 하나의 메커니즘에 의해 "프로그램된" 상태로 프로그램된다. "핫 전자 주입"에서, 드레인에 인가되는 하이(high) 전압은 기판 채널 영역을 지나는 전자를 가속시킨다. 이와 동시에, 제어 게이트에 인가되는 하이 전압은 핫 전자를 얇은 게이트 유전체를 거쳐 플로팅 게이트로 가게 한다. "터널링 주입"에서는 하이 전압이 기판에 관하여 제어 게이트에 인가된다. 이렇게 하여, 기판으로부터 전자가 개재된 플로팅 게이트로 가게 된다. "프로그램"이라는 용어는 통상적으로 메모리 상태를 변경하기 위해 메모리 셀의 초기에 소거된 전하 저장 유닛에 전자를 주입함으로써 메모리에 기록하는 것을 서술하기 위해 사용되었지만, 이제는 "기록" 또는 "기록"과 같은 보다 일반적인 용어와 상호교환적으로 사용되고 있다.The transistor acting as a memory cell is typically programmed in a "programmed" state by one of two mechanisms. In "hot electron injection ", a high voltage applied to the drain accelerates electrons across the substrate channel region. At the same time, the high voltage applied to the control gate causes the hot electrons to pass through the thin gate dielectric to the floating gate. In "tunneling implant ", a high voltage is applied to the control gate with respect to the substrate. In this way, the substrate is transferred from the substrate to the floating gate with electrons interposed therebetween. Although the term "program" has been used to describe writing to a memory by injecting electrons into an initially erased charge storage unit of a memory cell in order to change the memory state, it is now known as " It is used interchangeably with the more general term.
메모리 장치는 많은 메커니즘에 의해 소거될 수 있다. EEPROM에서, 메모리 셀은 플로팅 게이트 내 전자를 얇은 산화막을 통과하여 기판 채널 영역으로 터널링되게 하기 위해서(즉, 파울러-노다임 터널링) 제어 게이트에 관하여 기판에 하이 전압을 인가함으로써 전기적으로 소거될 수 있다. 통상적으로, EEPROM은 바이트씩 소거될 수 있다. 플래시 EEPROM에 있어서, 메모리는 한번에 전부 또는 한번에 하나 이상의 최소 소거 가능한 블록으로 전기적으로 소거될 수 있는데, 여기서 최소 소거 가능한 블록은 하나 이상의 섹터로 구성될 수 있고, 각 섹터는 512 또는 그 이상의 바이트의 데이터를 저장할 수 있다.The memory device can be erased by a number of mechanisms. In an EEPROM, a memory cell can be electrically erased by applying a high voltage to the substrate with respect to the control gate in order to tunnel electrons through the thin oxide film into the substrate channel region (i.e., Fowler-Nordheim tunneling) . Typically, the EEPROM can be erased byte by byte. In a flash EEPROM, the memory may be electrically erased at least once or at least one or more at least one erasable block, wherein the erasable block may consist of one or more sectors, each sector having 512 or more bytes of data Can be stored.
메모리 장치는 통상적으로, 카드 상에 실장될 수 있는 하나 또는 그 이상의 메모리 칩을 포함한다. 각 메모리 칩은 디코더 및 소거, 기록 판독 회로와 같은 주변 회로에 의해 지원되는 메모리 셀 어레이를 포함한다. 보다 정교한 메모리 장치는 지능형의 고 레벨의 메모리 작동, 및 인터페이싱을 수행하는 외부 메모리 제어기를 겸비하고 있다.Memory devices typically include one or more memory chips that can be mounted on a card. Each memory chip includes a memory cell array that is supported by peripheral circuits such as decoders and erasures, and read / write circuits. More sophisticated memory devices combine an intelligent high-level memory operation and an external memory controller to perform interfacing.
최근에 사용되는 많은 상업적으로 성공한 비휘발성 고체 상태 메모리 장치가 있다. 이들 메모리 장치는 플래시 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는 두 개의 이산화실리콘층 사이에 개재된 트랩 유전층을 구비한 비휘발성 메모리 셀을 개시하고 있다. 복수-상태 데이터 저장장치는 유전층 내 공간적으로 분리된 전하 저장 영역의 바이너리 상태를 개별적으로 판독함으로써 구현된다.There are many commercially successful nonvolatile solid state memory devices that have been used recently. These memory devices may be flash EEPROMs or may employ other types of nonvolatile memory cells. Examples of flash memory and systems and methods of fabricating them are given in United States Patent Nos. 5,070,032, 5,095,344, 5,315,541, 5,343,063, and 5,661,053, 5,313,421 and 6,222,762. In particular, flash memory devices having a NAND string structure are described in U.S. Patent Nos. 5,570,315, 5,903,495, 6,046,935. A non-volatile memory device is also fabricated from a memory cell having a dielectric layer for storing charge. Instead of the conductive floating gate element described above, a dielectric layer is used. Such a memory device using a dielectric storage element is described in Eitan, "NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell" IEEE Electron Device Letters, vol. 21, no. 11, November 2000, pp. 543-545. The ONO dielectric layer extends across the channel between the source diffusion region and the drain diffusion region. The charge for one data bit is collected in the dielectric layer adjacent to the drain and the charges for the other data bits are collected in the dielectric layer adjacent to the source. For example, U.S. Patent Nos. 5,768,192 and 6,011,725 disclose nonvolatile memory cells with a trap dielectric layer interposed between two silicon dioxide layers. The multi-state data storage is implemented by separately reading the binary states of the spatially separated charge storage areas in the dielectric layer.
판독 및 프로그램 수행을 개선하기 위해서, 어레이 내 복수의 전하 저장소자 또는 메모리 트랜지스터는 병렬로 판독되거나 프로그램된다. 이에 따라, 한 "페이지"의 메모리 소자는 함께 판독 또는 프로그램된다. 기존의 메모리 아키텍처에서, 한 행은 전형적으로 몇 개의 인터리브된 페이지를 내포하거나 한 페이지를 구성할 수도 있다. 한 페이지의 모든 메모리 소자는 함께 판독 또는 프로그램될 것이다.To improve read and program performance, a plurality of charge storage elements or memory transistors in an array are read or programmed in parallel. Accordingly, the memory elements of one "page " are read or programmed together. In conventional memory architectures, a row typically contains several interleaved pages or may constitute a page. All memory elements of a page will be read or programmed together.
플래시 메모리 시스템에서, 소거 작동은 판독 및 프로그램 작동보다 한 자리수 크기만큼 더 길게 걸릴 수 있다. 따라서, 상당 크기의 소거 블록을 취하는 것이 바람직하다. 따라서, 소거 시간을 한 큰 집단의 메모리 셀이 부담한다.In a flash memory system, the erase operation may take longer by one order of magnitude than read and program operation. Therefore, it is preferable to take an erase block of a comparatively large size. Thus, a large group of memory cells that take an erase time are burdened.
플래시 메모리의 특성은 데이터가 소거된 메모리 위치에 기록되어야 한다고 단정한다. 호스트로부터 어떤 논리 어드레스의 데이터가 업데이트될 것이라면, 한 방법은 업데이트 데이터를 동일 물리 메모리 위치에 다시 기록하는 것이다. 즉, 논리 대 물리 어드레스 맵핑은 변경되지 않는다. 그러나, 이것은 이 물리 위치를 내포하는 전체 소거 블록이 먼저 소거되고 이어서 업데이트된 데이터로 재기록되어야 함을 의미할 것이다. 이 업데이트 방법은, 특히 업데이트될 데이터가 소거 블록의 작은 부분만을 점유할지라도, 전체 소거 블록이 소거되고 재기록될 것을 요구하기 때문에 비효율적이다. 또한, 이에 따라 메모리 블록의 소거 리사이클의 빈도를 높아지게 할 것이고, 이것은 이러한 유형의 메모리 장치의 제한된 내구성 면에서 바람직하지 못하다.The nature of the flash memory assures that the data should be written to the erased memory location. If the data of a logical address from the host is to be updated, one way is to write the update data back to the same physical memory location. That is, the logical to physical address mapping is not changed. However, this would mean that the entire erase block containing this physical location must first be erased and then rewritten with updated data. This update method is inefficient because it requires that the entire erase block be erased and rewritten, especially if the data to be updated occupies only a small portion of the erase block. Also, this will increase the frequency of erasure recycling of the memory block, which is undesirable in view of the limited durability of this type of memory device.
호스트 시스템, 메모리 시스템 및 그외 전자 시스템의 외부 인터페이스를 통해 통신되는 데이터는 어드레스되어 플래시 메모리 시스템의 물리 위치에 맵핑된다. 전형적으로, 시스템에 의해 생성하거나 수신된 데이터 파일의 어드레스는 데이터의 논리적 블록에 관련하여 시스템을 위해 설정된 서로 구별되는 다수 범위의 연속한 논리 어드레스 공간에 맵핑된다(이하, "LBA 인터페이스"). 어드레스 공간의 크기는 전형적으로 시스템이 취급할 수 있는 전체 범위의 어드레스를 다루기에 충분하다. 한 가지 예에서, 자기 디스크 저장 드라이브는 이러한 논리 어드레스 공간을 통해 컴퓨터 또는 그외 호스트 시스템과 통신한다. 이 어드레스 공간은 디스크 드라이브의 전체 데이터 저장용량을 어드레스하기에 충분한 크기를 갖는다.Data communicated via the host system, the memory system, and the external interface of the other electronic system is addressed and mapped to the physical location of the flash memory system. Typically, the address of a data file created or received by the system is mapped to a plurality of distinct, contiguous logical address spaces set for the system in relation to the logical block of data (hereinafter, "LBA interface"). The size of the address space is typically sufficient to handle the full range of addresses that the system can handle. In one example, a magnetic disk storage drive communicates with a computer or other host system via this logical address space. This address space is of sufficient size to address the entire data storage capacity of the disk drive.
증가하는 장치 속도뿐만 아니라, 전력 소모를 감소시켜, 메모리 장치의 성능을 개선하려는 노력이 진행되고 있다. 위에 언급된 바와 같이, 비휘발성 메모리 장치는 일반적으로 버스 구조를 통해 서로 사이에서 연결된 제어기 회로 및 하나 이상의 메모리 칩으로 형성된다. 사용되는 전압값 및 주파수와 같은, 제어기/메모리 장치 인터페이스의 설정은 전형적으로 장치 고장을 피하기 위해서 충분한 안전 마진을 갖도록 예상되는 최악의 경우의 시나리오에 따라 설정된다. 결국, 대부분의 환경에서 인터페이스는 최적의 조건 미만에서 작동되고 있다. 이 인터페이스는 장치 성능에서 제한적 요인이 될 수 있기 때문에, 이들은 결국 이 인터페이스의 설계에서 개선할 여지가 있다.Efforts are being made to improve the performance of memory devices by reducing power consumption as well as increasing device speed. As noted above, non-volatile memory devices are generally formed from one or more memory chips and controller circuitry coupled between each other via a bus structure. The setting of the controller / memory device interface, such as the voltage value and frequency used, is typically set according to the worst case scenario that is expected to have sufficient safety margin to avoid device failure. After all, in most environments the interface is operating at less than optimal conditions. Since this interface can be a limiting factor in device performance, they can eventually be improved in the design of this interface.
발명의 일반적인 양상에 따라, 비휘발성 메모리 시스템을 작동하는 방법이 제시된다. 비휘발성 메모리 시스템은 메모리 인터페이스를 갖는 제어기 회로, 비휘발성 메모리 셀 어레이와 제어기 인터페이스를 갖는 메모리 회로, 및 제어기 회로의 메모리 인터페이스와 메모리 회로의 제어기 인터페이스에 이들 사이에서 데이터의 전송 및 명령을 위해 연결된 버스 구조를 포함한다. 메모리 시스템은 데이터가 메모리 어레이에 기록되도록 제어기로부터 전송될 때부터 축적된 0이 아닌(non-zero) 제 1 오류량을, 데이터가 메모리 어레이로부터 후속하여 다시 판독된 후에 제어기에 수신될 때까지, 용인할 수 있다. 방법은 제 1 오류량의 0이 아닌 제 1 부분을 버스 구조를 통해 제어기 회로와 메모리 회로 사이에서 데이터의 전송에 할당하고, 제 1 오류량의 나머지가 메모리 회로 상의 데이터의 기록, 저장, 및 판독에 할당되는 단계를 포함한다. 오류의 제 1 부분까지 허용하게 작동하도록 제어기 회로와 메모리 회로 사이에서 전송 특징을 설정한다.According to a general aspect of the invention, a method of operating a non-volatile memory system is presented. A non-volatile memory system includes a controller circuit having a memory interface, a memory circuit having a non-volatile memory cell array and a controller interface, and a controller interface of the memory circuit of the controller circuit and a controller interface of the memory circuit, Structure. The memory system stores a first non-zero error amount accumulated since the data was transferred from the controller to be written to the memory array until the data is received by the controller after being read back subsequently from the memory array, I can tolerate it. The method allocates a first non-zero portion of the first amount of error to the transfer of data between the controller circuit and the memory circuit via the bus structure and the remainder of the first error amount is recorded, As shown in FIG. And sets the transfer characteristic between the controller circuit and the memory circuit to operate to allow up to the first part of the error.
다른 양상에서, 메모리 회로 및 제어기 회로를 포함하는 비휘발성 메모리 시스템을 작동하는 방법이 제시된다. 제어기 회로는 제어기를 메모리 회로에 연결하는 버스 구조를 위한 하나 이상의 작동 파라미터 각각에 대한 복수의 값 각각에 대해서, 다음을 수행함으로써 송신 오류 교정을 수행한다. 이 프로세스는 알려진 데이터 패턴의 데이터 세트를 제어기로부터 제어기 상의 송신 회로를 통해 버스 구조에 전송하는 단계 및 데이터 세트를 버스 구조로부터 메모리 회로 상의 수신 회로를 통해 수신하는 단계를 포함한다. 수신된 데이터 세트는 메모리 회로 상의 버퍼 메모리에 저장되고 이어서 어레이에 기록되지 않고 메모리 회로 상의 버퍼 메모리에 저장된 데이터 세트는 메모리 회로 상의 송신 회로를 통해 버스 구조에 전송된다. 버스 구조로부터 데이터 세트가 상기 제어기 상에서 수신 회로를 통해 수신되고, 수신된 데이터를 알려진 패턴과 비교가 수행된다. 비교를 기초로, 사용된 하나 이상의 작동 파라미터에 대해 전송 프로세스에 연관 오류량이 결정된다. 이어서 제어기 회로와 메모리 회로 사이에서 데이터의 송신에서 0이 아닌 제 1 오류량을 허용하게 메모리 시스템이 작동되고, 제어기 회로는 결정된 연관 오류량에 기초하여 송신 오류 교정 프로세스에 따라 작동 파라미터의 값을 선택한다.In another aspect, a method of operating a non-volatile memory system including a memory circuit and a controller circuit is presented. The controller circuit performs transmit error correction by performing, for each of the plurality of values for each of the one or more operating parameters for the bus structure connecting the controller to the memory circuit, The process includes transferring a set of data of a known data pattern from the controller to the bus structure via the transmit circuitry on the controller and receiving the data set from the bus structure via the receive circuitry on the memory circuit. The received data set is stored in the buffer memory on the memory circuit and then the data set stored in the buffer memory on the memory circuit is not written to the array and is transferred to the bus structure via the transmitting circuit on the memory circuit. A data set from the bus structure is received on the controller via the receive circuit and a comparison of the received data with a known pattern is performed. Based on the comparison, the associated error amount is determined for the transmission process for the one or more operational parameters used. The memory system is then operated to allow a non-zero first error amount in the transmission of data between the controller circuit and the memory circuit, and the controller circuit selects the value of the operating parameter according to the transmission error correction process based on the determined associated error amount do.
발명의 또 다른 일반적인 측면에 따라서, 비휘발성 메모리 시스템은 메모리 인터페이스 및 논리 회로를 포함하는 제어기 회로와, 비휘발성 메모리 셀 어레이, 제어기 인터페이스, 및 논리 회로를 포함하는 메모리 회로를 갖는다. 메모리 시스템은 제어기 회로의 메모리 인터페이스와 메모리 회로의 제어기 인터페이스에 이들 사이에서 데이터와 명령을 전송하기 위해 연결된 버스 구조를 또한 포함한다. 제어기 및 메모리 회로의 수신측의 논리 회로에 이들 사이에서 데이터의 전송 동안 전송의 결과로 일어나는 오류량에 관한 정보를 수신하기 위해 연결되고, 메모리 인터페이스와 제어기 인터페이스 중 하나 또는 모두에 이들 사이에서 전송의 특징을 오류량에 응하여 조절하기 위해 피드백 처리 회로가 연결된다.According to yet another general aspect of the invention, a non-volatile memory system has a memory circuit comprising a controller circuit comprising a memory interface and a logic circuit, and a non-volatile memory cell array, a controller interface, and a logic circuit. The memory system also includes a bus structure coupled to transfer data and instructions therebetween to the memory interface of the controller circuit and the controller interface of the memory circuit. The controller and the logic circuit of the receiving side of the memory circuit are connected to receive information about the amount of error that occurs as a result of the transmission during the transfer of data between them, A feedback processing circuit is connected to adjust the characteristics in response to the error amount.
다른 양상에서, 비휘발성 메모리 회로 및 제어기 회로를 포함하는 비휘발성 메모리 시스템을 작동하는 방법이 제시된다. 제어기 회로와 메모리 회로 중 첫 번째 것 상에서 논리 회로에서 데이터 세트로부터 제 1 해시 값이 생성된다. 데이터 세트 및 제 1 해시 값이 제어기 회로와 메모리 회로 중 첫 번째 것 상에서 인터페이스를 통해 버스 구조에 송신되고 제어기 회로와 메모리 회로 중 두 번째 것 상에서 인터페이스를 통해 버스 구조로부터 수신된다. 수신된 데이터 세트로부터 제 2 해시 값이 제어기 회로와 메모리 회로 중 두 번째 것 상에서 논리 회로에서 생성하고 수신된 제 1 해시 값과 제 2 해시 값이 제어기 회로와 메모리 회로 중 두 번째 것에서 비교된다. 제어기 회로와 메모리 회로 중 두 번째 것 상에서 논리 회로에 의해 수신된 제 1 해시 값과 제 2 해시 값의 비교를 기초로, 시스템은 제어기 회로와 메모리 회로 사이에서 데이터의 전송의 특징을 변경할지 결정한다.In another aspect, a method of operating a non-volatile memory system including a non-volatile memory circuit and a controller circuit is presented. A first hash value is generated from the data set in the logic circuit on the first of the controller circuit and the memory circuit. The data set and the first hash value are transmitted to the bus structure via the interface on the first of the controller circuit and the memory circuit and are received from the bus structure via the interface on the second of the controller circuit and the memory circuit. A second hash value from the received data set is generated in a logic circuit on a second one of the controller circuit and the memory circuit, and the first hash value and the second hash value received are compared in a second one of the controller circuit and the memory circuit. Based on a comparison of the first hash value and the second hash value received by the logic circuit on the second of the controller circuit and the memory circuit, the system determines whether to change the characteristics of the transfer of data between the controller circuit and the memory circuit .
본 발명의 다양한 면, 이점, 특징, 및 실시예는 이들의 예에 대한 다음 설명에 포함되며, 이 설명은 첨부된 도면에 관하여 취해질 것이다. 본 명세서에서 참조되는 모든 특허, 특허 출원서, 논문, 기타 공보, 문서, 및 자료는 모든 목적을 위해 이들 전부가 본 명세서에 참조로 포함된다. 포함된 공보, 문서 또는 자료 중 임의의 것과 본원 사이에 용어의 정의 또는 사용에 있어 어떤 모순 또는 상충되는 범위에 있어선 본원의 정의 또는 사용이 우선할 것이다.Various aspects, advantages, features, and embodiments of the present invention are included in the following description of examples thereof, which will be taken in conjunction with the accompanying drawings. All patents, patent applications, papers, other publications, documents, and data referenced herein are hereby incorporated by reference in their entirety for all purposes. The definition or use of this specification shall take precedence over any conflicts or contradictions in the definition or use of the term between any of the included publications, documents or data.
본 발명은, 반도체 플래시 메모리와 같은 재프로그램 가능한 비휘발성 메모리 시스템의 작동과, 메모리 시스템의 제어기와 메모리 회로 사이의 내부 인터페이스를 제공하는 효과를 갖는다.The present invention has the effect of providing an internal interface between the operation of a reprogrammable non-volatile memory system, such as a semiconductor flash memory, and the controller and memory circuitry of the memory system.
도 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 schematically depicts a main hardware component of a memory system suitable for implementing the invention;
2 schematically illustrates a non-volatile memory cell;
3 shows the relationship between the source-drain current I D and the control gate voltage V CG for four different charges Q1 through Q4 that the floating gate may optionally store at any time. .
Figure 4A schematically shows a memory cell string composed of NAND strings;
FIG. 4B illustrates an example of a
Figure 5 shows a memory cell of a page that is sensed or programmed in parallel, for example, in a NAND configuration.
6 (0) to 6 (2) are diagrams showing examples of programming 4-state memory cells of a population.
Figures 7A-7E illustrate programming and reading of a 4-state memory encoded with a given 2-bit code.
Figure 8 illustrates memory management by a memory manager, a software component in the controller.
Figure 9 shows a software module of a back-end system;
10A (i) to 10A (iii) schematically illustrate a mapping between a logical group and a metablock;
Figure 10B schematically illustrates the mapping between a logical group and a metablock;
11 is a block diagram illustrating a feedback mechanism for determining interface integrity based on an existing infrastructure;
Figure 12 is a block diagram illustrating an embodiment in which the feedback mechanism uses a hash engine to determine interface integrity.
13 is a diagram showing an example for transmitting data and a generated hash value through a bus interface;
Figure 14 schematically illustrates the contribution to bit errors in a memory system;
15 is a diagram that may be used to illustrate the operation of a pseudo loop-back method in a back-end interface;
Figs. 16 and 17 correspond to
18 illustrates an example of a shmoo operation illustrating a transmit BER for a data bus voltage and a data transfer rate;
19 is a block diagram showing crosstalk in a memory system having a bus structure using a plurality of memory data buses;
메모리 시스템Memory system
도 1 내지 도 7은, 본 발명의 여러 특징이 구현 또는 예시될 수 있는 메모리 시스템의 예를 제공한다.Figures 1 to 7 provide examples of memory systems in which various aspects of the invention may be implemented or illustrated.
도 8 내지 도 10은, 본 발명의 여러 특징을 구현하기 위한 바람직한 메모리 및 블록 아키텍처를 도시한다.Figures 8-10 illustrate preferred memory and block architectures for implementing various aspects of the present invention.
도 11 ~ 도 13은, 제어기와 메모리 회로 또는 회로 사이에서 적응형 내부 인터페이스의 사용을 도시한다.11-13 illustrate the use of an adaptive internal interface between a controller and a memory circuit or circuit.
도 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)는 호스트 내에 구현된다.Figure 1 schematically illustrates the main hardware components of a memory system suitable for implementing the present invention. The memory system 90 typically operates with the
물리적 메모리 구조Physical memory structure
도 2는 비휘발성 메모리 셀을 개략적으로 도시한 것이다. 메모리 셀(10)은 플로팅 게이트 또는 유전층과 같은 전하 저장유닛(20)을 갖는 전계 효과 트랜지스터에 의해 구현될 수 있다. 또한, 메모리 셀(10)은 소스(14), 드레인(16), 및 제어 게이트(30)를 포함한다.Figure 2 schematically shows a non-volatile memory cell. The
최근에 사용되는 상업적으로 성공한 많은 비휘발성 고체 상태 메모리 장치가 있다. 이들 메모리 장치는 각 유형이 하나 이상의 전하저장 소자를 구비하는 것인 서로 다른 유형의 메모리 셀을 채용할 수 있다.There are many commercially successful nonvolatile solid state memory devices that have recently been used. These memory devices may employ different types of memory cells, each type having one or more charge storage elements.
전형적인 비휘발성 메모리 셀은 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에 기술되어 있다.Typical nonvolatile memory cells include EEPROM and flash EEPROM. Examples of EEPROM cells and methods of making them are given in U.S. Patent No. 5,595,924. Examples of the use of these in flash EEPROM cells, memory systems, and methods of making them are given in U. S. Patent Nos. 5,070,032, 5,095,344, 5,315,541, 5,343,063, 5,661,053, 5,313,421, 6,222,762. In particular, examples of memory devices having a NAND cell structure are described in U.S. Patent Nos. 5,570,315, 5,903,495, 6,046,935. An example of a memory device using a dielectric reservoir is described in 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, and U.S. Patent Nos. 5,768,192 and 6,011,725.
실제로, 셀의 메모리 상태는 일반적으로 기준 전압이 제어 게이트에 인가될 때 셀의 소스 전극 및 드레인 전극을 지나는 도통 전류를 감지함으로써 판독된다. 이에 따라, 셀의 플로팅 게이트 상에 각각의 주어진 전하에 대해서, 고정된 기준 제어 게이트 전압에 관한 대응하는 도통 전류가 검출될 수 있다. 유사하게, 플로팅 게이트에 프로그램될 수 있는 전하의 범위는 대응하는 임계 전압 윈도우 또는 대응하는 도통 전류 윈도우를 정의한다.In practice, the memory state of the cell is generally read by sensing the conduction current through the source and drain electrodes of the cell when a reference voltage is applied to the control gate. Thus, for each given charge on the cell's floating gate, the corresponding conduction current with respect to the fixed reference control gate voltage can be detected. Similarly, the range of charge that can be programmed into the floating gate defines a corresponding threshold voltage window or corresponding conduction current window.
대안적으로, 분할된 현 윈도우 중에서 도통 전류를 검출하는 대신에, 테스트되는 주어진 메모리 상태에 대한 임계 전압을 제어 게이트에 설정하고 도통 전류가 임계 전류보다 낮은지 아니면 높은지를 검출하는 것이 가능하다. 일 구현예에서 임계 전류에 대한 도통 전류의 검출은 도통 전류가 비트 라인의 커패시턴스를 통해 방전하는 방전률을 조사함으로써 달성된다.Alternatively, instead of detecting the conduction current among the divided current windows, it is possible to set a threshold voltage for a given memory state to be tested at the control gate and to detect whether the conduction current is lower or higher than the threshold current. In one embodiment, detection of the conduction current with respect to the threshold current is achieved by examining the discharge rate at which the conduction current is discharged through the capacitance of the bit line.
도 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"에 있다.FIG. 3 illustrates the relationship between the source-drain current I D and the control gate voltage V CG for four different charges Q1 through Q4 that may optionally be stored by the floating gate at any time. The four solid curve lines of I D for V CG represent four possible charge levels that can be programmed on the floating gate of each memory cell, corresponding to four possible memory states. By way of example, the threshold voltage window of a group of cells may range from 0.5V to 3.5V. 7 "," 2 "," 3 ","4"," Can be distinguished by dividing them into five regions at intervals of 0.5 each. For example, if used as a reference current IREF of 2 ㎂ shown, because of the program cells in Q1 is a curve in the region of the threshold window that is distinguished by VCG = 0.5V and 1.0V to intersect the I REF memory Can be considered to be in state "1 ". Similarly, Q4 is in memory state "5 ".
전술한 바로부터 알 수 있듯이, 메모리 셀에 더 많은 상태가 저장되게 할수록, 임계 윈도우는 더욱 미세하게 분할된다. 예를 들어, 메모리 장치는 -1.5V 내지 5V 범위의 임계 전압을 갖는 메모리 셀을 가질 수 있다. 이것은 6.5V의 최대폭을 제공한다. 메모리 셀이 16개의 상태를 저장한다면, 각 상태는 임계 윈도우에서 20O mV 내지 30O mV를 점유할 수 있다. 이것은 요구되는 분해능을 달성할 수 있기 위해서 프로그래밍 및 판독 작동에서 더 높은 정밀도를 요구할 것이다.As can be seen from the foregoing, the more states are stored in the memory cell, the finer the window is divided. For example, the memory device may have a memory cell having a threshold voltage in the range of -1.5V to 5V. This provides a maximum width of 6.5V. If the
도 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)는 모두가 동일 선택 라인에 연결된다.4A schematically shows a string of memory cells in a row consisting of a NAND string. The
NAND 스트링 내의 어드레스된 메모리 트랜지스터(10)가 프로그래밍 동안에 판독되거나 검증될 때, 이의 제어 게이트(30)엔 적합한 전압이 공급된다. 동시에, NAND 스트링(50) 내의 어드레스 지정이 안 된 나머지 메모리 트랜지스터는 이들의 제어 게이트에 충분한 전압을 인가함으로써 완전히 턴 온 된다. 이에 따라, 개개의 메모리 트랜지스터의 소스에서 NAND 스트링의 소스 단자(54)로 그리고 마찬가지로 개개의 메모리 트랜지스터의 드레인에 대해서는 셀의 드레인 단자(56)로의 도통 경로가 유효하게 만들어진다. 이러한 NAND 셀 구조를 갖는 메모리 장치는 미국 특허 5,570,315, 5,903,495 및 6,046,935에 기재되어 있다.When the addressed
도 4b는 도 4a에 도시된 것과 같은 NAND 스트링(50)으로부터 구성되는, NAND 어레이(210)의 메모리 셀의 예를 도시한 것이다. NAND 스트링의 각 열을 따라, 비트 라인(36)과 같은 비트 라인이 각 NAND 스트링의 드레인 단자(56)에 결합된다. 각 한 뱅크의 NAND 스트링을 따라, 소스 라인(34)과 같은 소스 라인이 각 NAND 스트링의 소스 단자(54)에 결합된다. 한 뱅크의 NAND 스트링 내에 한 행의 메모리 셀을 따라 제어 게이트 또한, 워드 라인(42)과 같은 워드 라인에 연결된다. 한 뱅크의 NAND 스트링 내에 한 행의 선택 트랜지스터를 따라 제어 게이트는 선택 라인(44)과 같은 선택 라인에 연결된다. 한 뱅크의 NAND 스트링 내에 전체 한 행의 메모리 셀은 한 뱅크의 NAND 스트링의 워드 라인 및 선택 라인에 적합한 전압에 의해 어드레스될 수 있다. NAND 스트링 내에 한 메모리 트랜지스터가 판독되고 있을 때, 그 스트링 내에 나머지 메모리 트랜지스터는 이들의 연관된 워드 라인을 통해 확실히 거의 턴 온 되지 않으므로 스트링을 통하는 전류는 근본적으로 판독되는 셀 내 저장된 전하의 레벨에 의존한다.FIG. 4B shows an example of a memory cell of the
도 5는 병렬로 감지 또는 프로그램되는, 예를 들어, NAND 구성으로 구성된 한 페이지의 메모리 셀을 도시한 것이다. 도 5는 근본적으로 도 4b의 메모리 어레이(210) 내 한 뱅크의 NAND 스트링(50)을 도시한 것으로, 각 NAND 스트링의 상세는 도 4a에서처럼 명료하게 도시되었다. 페이지(60)와 같은 "페이지"는 병렬로 감지 또는 프로그램될 수 있게 한 일 그룹의 메모리 셀이다. 이것은 대응하는 한 페이지의 감지 증폭기(212)에 의해 달성된다. 감지된 결과는 대응하는 한 세트의 래치(214)에 래치된다. 각각의 감지 증폭기는 비트 라인을 통해 NAND 스트링에 결합될 수 있다. 페이지는 워드 라인(42)에 공통으로 연결된 페이지의 셀의 제어 게이트에 의해 활성화되고 각각의 셀은 비트 라인(36)을 통해 액세스될 수 있는 감지 증폭기에 의해 액세스될 수 있다. 예로서, 각각 한 페이지의 셀(60)을 감지 또는 프로그래밍할 때, 감지 전압 또는 프로그래밍 전압은 각각 비트 라인 상에 적합한 전압과 함께 공통의 워드 라인(WL3)에 인가된다.FIG. 5 illustrates a memory cell of a page configured in a NAND configuration, for example, sensed or programmed in parallel. FIG. 5 illustrates a
메모리의 물리적 구성Physical configuration of memory
플래시 메모리와 전형적 메모리 사이에서 한 가지 중요한 차이는 셀이 소거된 상태로부터 프로그램되어야 한다는 것이다. 즉, 먼저 플로팅 게이트에 전하가 비어있어야 한다. 이어서 프로그래밍은 요구되는 양의 전하를 다시 플로팅 게이트에 더한다. 더 프로그램된 상태에서 덜 프로그램된 상태로 가기 위해 플로팅으로부터 전하의 일부를 제거하는 것은 지원하지 못한다. 이것은 업데이트 데이터가 현존한 데이터를 덮어쓸 수 없고 이전에 기록되지 않은 위치에 기록되어야 함을 의미한다.One important difference between flash memory and typical memory is that the cell must be programmed from the erased state. That is, the charge must first be empty in the floating gate. Programming then adds the required amount of charge back to the floating gate. Removing some of the charge from the plotting to go from a more programmed state to a less programmed state is not supported. This means that the update data can not overwrite existing data and should be written to a location that was not previously recorded.
또한 소거는 플로팅 게이트에서 모든 전하를 비우는 것이며 일반적으로 상당한 시간이 걸린다. 이러한 이유로, 이것은 성가실 것이며 셀별로 또는 심지어 페이지별로 소거하기는 매우 느릴 것이다. 실제로, 메모리 셀 어레이는 메모리 셀의 더 많은 수의 블록으로 분할된다. 플래시 EEPROM 시스템에 있어 일반적인 바와 같이, 블록은 소거 단위이다. 즉, 각각의 블록은 함께 소거되는 최소 수의 메모리 셀을 내포한다. 병렬로 소거될 블록 내 많은 수의 셀을 하나로 모으는 것이 소거 수행을 개선하겠지만, 큰 크기의 블록은 많은 수의 업데이트 및 폐용 데이터를 처리해야 하는 것을 수반한다. 블록이 소거되기 바로 전에, 블록 내 비-폐용 데이터를 구제하기 위해서 가비지 수거가 요구된다.In addition, the erase is to free all the charge from the floating gate and generally takes considerable time. For this reason, this would be cumbersome and it would be very slow to erase cell-by-cell or even page-by-cell. In practice, the memory cell array is divided into a larger number of blocks of memory cells. As is common in flash EEPROM systems, blocks are erase units. That is, each block contains a minimum number of memory cells that are erased together. Collecting a large number of cells in a block to be erased in parallel will improve erase performance, but large size blocks involve processing a large number of updates and wasted data. Just before the block is erased, garbage collection is required to recover the non-aborted data in the block.
각각의 블록은 전형적으로 다수의 페이지로 분할된다. 페이지는 프로그래밍 또는 판독 단위이다. 일 실시예에서, 개개의 페이지는 세그먼트로 분할될 수 있고 세그먼트는 기본 프로그래밍 작동으로서 한번에 기록되는 최소 수의 셀을 내포할 수 있다. 하나 이상의 페이지의 데이터는 전형적으로 한 행의 메모리 셀에 저장된다. 페이지는 하나 이상의 섹터를 저장할 수 있다. 섹터는 사용자 데이터 및 오버헤드 데이터를 포함한다. 복수의 어레이에 걸쳐 분산되어 있는 복수의 블록 및 페이지는 메타 블록 및 메타페이지로 함께 작동될 수 있다. 이들이 복수의 칩에 걸쳐 분산되면, 이들은 메가블록 및 메가페이지로 함께 작동될 수 있다.Each block is typically divided into a number of pages. A page is a programming or reading unit. In one embodiment, individual pages may be segmented and the segment may contain a minimum number of cells that are written at one time as the default programming operation. The data of one or more pages is typically stored in a row of memory cells. A page can store one or more sectors. The sector includes user data and overhead data. A plurality of blocks and pages scattered across a plurality of arrays may be operated together as metablock and metapage. If they are distributed across a plurality of chips, they can be operated together into mega blocks and mega pages.
복수-레벨 셀("A multi-level cell (" MLCMLC ") 메모리 분할의 예") Example of memory partition
메모리 셀 각각이 복수의 비트의 데이터를 저장하는 비휘발성 메모리가 도 3에 관련하여 이미 기술되었다. 한 특별한 예는 각각이 채널 영역과 제어 게이트 사이에 전하 저장층을 갖는 전계-효과 트랜지스터의 어레이로부터 형성된 메모리이다. 전하 저장층 또는 유닛은 한 범위의 전하를 저장할 수 있어, 각각의 전계-효과 트랜지스터에 대해 한 범위의 임계 전압을 생성한다. 가능한 임계 전압의 범위는 임계 윈도우에 걸쳐 있다. 임계 윈도우가 임계 전압의 다수의 부-범위 또는 구역으로 분할될 때, 각각의 결정 가능한 구역은 하나의 메모리 셀에 대해 서로 다른 메모리 상태를 나타내기 위해 사용된다. 다수의 메모리 상태는 하나 이상의 바이너리 비트에 의해 부호화될 수 있다. 예를 들어, 4개의 구역으로 분할된 메모리 셀은 2-비트 데이터로서 부호화될 수 있는 4 상태를 지원할 수 있다. 유사하게, 8개의 구역으로 분할된 메모리 셀은 3-비트 데이터로 부호화될 수 있는 8 메모리 상태를 지원할 수 있다.A non-volatile memory in which each of the memory cells stores a plurality of bits of data has already been described with reference to Fig. One particular example is a memory formed from an array of field effect transistors each having a charge storage layer between the channel region and the control gate. The charge storage layer or unit can store a range of charges, producing a range of threshold voltages for each field-effect transistor. The range of possible threshold voltages is across the threshold window. When the threshold window is divided into a plurality of sub-ranges or zones of threshold voltage, each determinable region is used to indicate a different memory state for one memory cell. A plurality of memory states may be encoded by one or more binary bits. For example, a memory cell divided into four zones may support four states that can be encoded as two-bit data. Similarly, a memory cell divided into eight zones can support eight memory states that can be encoded into three-bit data.
전(I'm( AllAll )-비트, 풀-) - bit, full- 시퀀스sequence MLCMLC 프로그래밍 programming
도 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" 상태로 나타난다.6 (0) to 6 (2) show an example of programming a four-state memory cell of a population. Figure 6 (0) shows a group of memory cells that can be programmed with four distinct distributions of threshold voltage, representing memory states "0 "," 1 "," 2 ", and "3 ", respectively. Figure 6 (1) shows the initial distribution of the "erased" threshold voltage for the erased memory. Figure 6 (2) shows an example of memory after many memory cells have been programmed. Essentially, the cell initially has a threshold voltage "erased" programming will move to a higher value in one of three zones separated by this verify level vV 1, vV vV 2 and 3. In this way, each memory cell may be programmed to one of three programmed states "1 "," 2 ", and "3 " As the memory is further programmed, the initial distribution of the "erased" state as shown in Figure 6 (1) will become narrower and the erased state will appear as a "0" state.
하위 비트 및 상위 비트를 갖는 2-비트 코드는 4개의 메모리 상태 각각을 나타내기 위해 사용될 수 있다. 예를 들어, "0", "1", "2" 및 "3" 상태는 각각 "11", "01", "00" 및 "10"로 나타낸다. 2-비트 데이터는 각각 3번의 서브-패스(sub-pass)에서 판독 구분 임계값(rV1, rV2, rV3)에 관하여 감지함으로써 2 비트가 함께 감지되는 "풀-시퀀스" 모드에서 감지함으로써 메모리로부터 판독될 수 있다.A two-bit code with lower and upper bits can be used to represent each of the four memory states. For example, states "0", "1", "2" and "3" are represented by "11", "01", "00", and "10", respectively. By sensing in "full sequence" mode - a two-bit data are respectively three sub-passes (sub-pass) separated from the read threshold value (rV 1, rV 2, rV 3) is detected by a 2-bit is detected, with respect to Can be read from the memory.
비트별 Bit star MLCMLC 프로그래밍 및 판독 Programming and Reading
도 7a ~ 도 7e는 주어진 2-비트 코드로 엔코딩된 4-상태 메모리의 프로그래밍 및 판독을 도시한 것이다. 도 7a는 각각의 메모리 셀이 2-비트 코드를 사용하여 2 비트의 데이터를 저장할 때 4-상태 메모리 어레이의 임계 전압 분포를 도시한 것이다. 이러한 2-비트 코드는 미국 특허 7,057,939에 개시되어 있다.Figures 7A-7E illustrate programming and reading of a 4-state memory encoded with a given 2-bit code. Figure 7a illustrates the threshold voltage distribution of a four-state memory array as each memory cell stores two bits of data using a two-bit code. Such 2-bit codes are disclosed in U.S. Patent No. 7,057,939.
도 7b는 2-비트 코드를 사용한 2-패스 프로그래밍 수법에서 하위 페이지 프로그래밍(하위 비트)를 도시한 것이다. 고장방지(fault-tolerant) LM 신(New) 코드는 근본적으로 임의의 상위 페이지 프로그래밍이 임의의 중간 상태를 거쳐 이동하는 것을 피하게 한다. 이에 따라, 제 1 패스 하위 페이지 프로그래밍은 "비프로그램된" 메모리 상태 "0"를 DA보다 크지만 DC 미만인 프로그램된 임계 전압을 갖는 (x, 0)로 나타낸 "중간" 상태로 프로그래밍함으로써 나타나는 어떤 중간 상태(x, 0)로 논리 상태(상위 비트, 하위 비트) = (1, 1)가 이동되게 한다.FIG. 7B shows lower page programming (lower bits) in a two-pass programming technique using a 2-bit code. A fault-tolerant LM New code basically avoids any arbitrary upper page programming from moving through any intermediate state. Thus, the first pass lower page programming is achieved by programming the " unprogrammed "memory state" 0 "to an" intermediate "state represented by (x, 0) with a programmed threshold voltage greater than D A but less than D C (Upper bit, lower bit) = (1, 1) to some intermediate state (x, 0).
도 7c는 2-비트 코드를 사용한 2-패스 프로그래밍 수법에서 상위 페이지 프로그래밍(상위 비트)을 도시한 것이다. 상위 페이지 비트를 "0"으로 프로그래밍하는 제 2 패스에서, 하위 페이지 비트가 "1"에 있다면, 논리 상태 (1, 1)은 "비프로그램된" 메모리 상태 "0"를 "1"로 프로그래밍함으로써 나타나는 (0, 1)로 이동한다. 하위 페이지 비트가 "0"에 있다면, 논리 상태 (0, 0)는 "중간" 상태에서 "3"으로 프로그래밍함으로써 얻어진다. 유사하게, 하위 페이지가 "0"으로 프로그램되는 동안에, 상위 페이지가 "1"에 남아 있다면, "중간" 상태에서 "중간" 상태를 "2"로 프로그래밍함으로써 나타나는 (1, 0)로의 이동을 필요로 할 것이다.7C shows an upper page programming (upper bit) in a two-pass programming technique using a 2-bit code. In the second pass, in which the upper page bit is programmed to "0 ", if the lower page bit is at" 1 ",
도 7d는 2-비트 코드로 엔코딩된 4-상태 메모리의 하위 비트를 식별하기 위해 요구되는 판독 작동을 도시한 것이다. LM 플래그가 판독될 수 있는지 결정하기 위해서 먼저 판독B 작동이 수행된다. 판독될 수 있다면, 상위 페이지는 프로그램되었으며 판독B 작동은 정확히 하위 페이지 데이터를 얻게 될 것이다. 반면, 상위 페이지가 아직 프로그램되지 않았다면 하위 페이지 데이터는 판독A 작동에 의해 판독될 것이다.Figure 7d illustrates the read operation required to identify the lower bits of a 4-state memory encoded with a 2-bit code. A read B operation is first performed to determine if the LM flag can be read. If it can be read, the upper page is programmed and the read B operation will get exactly lower page data. On the other hand, if the upper page has not yet been programmed, the lower page data will be read by the read A operation.
도 7e는 2-비트 코드로 엔코딩된 4-상태 메모리의 상위 비트를 판별하기 위해 요구되는 판독 작동을 도시한 것이다. 도면으로부터 명백한 바와 같이, 상위 페이지 판독은 각각 구분 임계 전압 DA, DB 및 DC에 대한 판독A, 판독B 및 판독C의 3-패스 판독을 요구할 것이다.Figure 7E illustrates the read operation required to determine the upper bits of a 4-state memory encoded with a 2-bit code. As is apparent from the figure, the upper page reading will require a read A, a read B and a read C three-pass readout for the separation threshold voltages D A , D B and D C , respectively.
2-비트 메모리에 대한 비트별 수법에서, 메모리 셀의 물리 페이지는 2개의 논리 데이터 페이지로서 하위 비트에 대응하는 하위 데이터 페이지와 상위 비트에 대응하는 상위 데이터 페이지를 저장할 것이다.In the bitwise method for two-bit memory, the physical page of the memory cell will store the lower data page corresponding to the lower bit and the upper data page corresponding to the upper bit as two logical data pages.
바이너리 및 Binary and MLCMLC 메모리 분할 Memory partitioning
도 6과 도 7은, 2-비트("D2"라고도 함) 메모리의 예를 도시한다. 알 수 있는 바와 같이, D2 메모리는 4개의 영역으로 분할되어 4 상태를 지정하는 임계 범위 또는 윈도우를 갖는다. 유사하게, D3에서, 각각의 셀은 3 비트(하위, 중위 및 상위 비트)를 저장하며 8개의 영역이 있다. D4에는 4 비트 및 16 영역 등이 있다. 메모리의 유한한 임계 윈도우가 더 많은 영역으로 분할됨에 따라, 프로그래밍 및 판독을 위한 분해능은 반드시 더 미세해질 것이다. 메모리 셀이 더 많은 비트를 저장하게 구성됨에 따라 2가지 문제가 발생한다.Figures 6 and 7 illustrate examples of 2-bit (also known as "D2") memory. As can be seen, the D2 memory has a threshold range or window that is divided into four regions to specify four states. Similarly, in D3, each cell stores 3 bits (lower, middle, and upper bits) and has 8 regions. D4 has 4 bits and 16 areas. As the finite threshold window of memory is divided into more areas, the resolution for programming and reading will necessarily become finer. As the memory cell is configured to store more bits, two problems arise.
첫 번째, 프로그래밍 또는 판독은 셀의 임계값이 더 정확하게 프로그램 또는 판독되어야 하기 때문에 더 느려지게 될 것이다. 사실 실제로 감지 시간(프로그래밍 및 판독에 필요한)은 분할 레벨의 수의 제곱에 따라 증가하는 경향이 있다.First, programming or reading will become slower because the cell's threshold must be programmed or read more accurately. In fact, the sensing time (required for programming and reading) actually tends to increase with the square of the number of division levels.
두 번째, 플래시 메모리는 사용에 의해 노후됨에 따라 내구성 문제를 갖는다. 셀이 반복하여 프로그램되고 소거될 때, 전하는 유전체를 가로지른 터널링에 의해서 플로팅 게이트(20)(도 2 참조) 안팎으로 오고 가게 된다. 일부 전하가 유전체 내에 트랩될 때마다 셀의 임계값을 수정할 것이다. 사실 사용해 감에 따라 임계 윈도우는 점차적으로 협소해질 것이다. 이에 따라, MLC 메모리는 일반적으로 용량과 성능과 신뢰성 사이에서 절충하여 설계된다.Second, flash memory has durability problems as it ages by use. When the cell is repeatedly programmed and erased, the charge travels into and out of the floating gate 20 (see FIG. 2) by tunneling across the dielectric. It will modify the threshold of the cell whenever some charge is trapped in the dielectric. As you actually use it, the threshold window will gradually become narrower. Accordingly, MLC memories are generally designed in a trade-off between capacity, performance and reliability.
반대로, 바이너리 메모리에 있어서 메모리의 임계 윈도우는 단지 두개의 영역으로 분할됨을 알 것이다. 이것은 최대 마진의 오류를 허용할 것이다. 이에 따라, 저장 용량이 감소되는 반면 바이너리 분할은 최대 성능 및 신뢰성을 제공할 것이다.Conversely, in binary memory, you will see that the critical window of memory is divided into only two regions. This will allow maximum margin error. Thus, storage capacity will be reduced while binary partitioning will provide maximum performance and reliability.
도 7에 관련하여 기술된 복수-패스, 비트별 프로그래밍 및 판독 기술은 MLC와 바이너리 분할 사이에서 원만한 이행을 제공한다. 이 경우에, 메모리가 단지 하위비트만으로 프로그램된다면, 이것은 사실상 바이너리 분할 메모리이다. 이 방식이 단일-레벨 셀("SLC") 메모리의 경우와 같이 임계 윈도우의 범위를 최대로 최적화하지 않지만, MLC 메모리의 하위 비트의 작동에서와 동일한 구분 또는 감지 레벨을 사용하는 이점이 있다. 후술하는 바와 같이, 이 방식은 MLC 메모리를 바이너리 메모리로서 또는 바이너리 메모리를 MLC 메모리로 사용하는데 "전용"될 수 있도록 한다. MLC 메모리는 사용에 있어 더 엄격한 명세를 갖는 경향이 있음을 알아야 한다.The multi-pass, bit-by-bit programming and reading techniques described in connection with FIG. 7 provide a smooth transition between MLC and binary partitioning. In this case, if the memory is programmed with only low order bits, then this is in fact a binary split memory. While this approach does not optimally maximize the range of threshold windows as in single-level cell ("SLC ") memory, it has the advantage of using the same distinction or sense level as in the operation of the lower bits of the MLC memory. As will be described later, this scheme allows the MLC memory to be "dedicated" as a binary memory or a binary memory as an MLC memory. It should be noted that the MLC memory tends to have more stringent specifications in use.
바이너리 메모리 및 부분 페이지 프로그래밍Binary memory and partial page programming
한 메모리 셀의 전하 저장 소자에 프로그램되는 전하는 이웃 메모리 셀의 전계를 교란시키는 전계를 야기한다. 이것은 근본적으로 전하 저장 소자를 갖는 전계 효과 트랜지스터인 이웃 메모리 셀의 특징에 영향을 미칠 것이다. 특히, 감지될 때 메모리 셀은 덜 교란될 때보다 더 높은 임계 레벨(또는 더 프로그램된)을 갖는 것처럼 보이게 될 것이다.The charge that is programmed into the charge storage element of one memory cell causes an electric field that disturbs the electric field of the neighboring memory cell. This will affect the characteristics of a neighboring memory cell, which is essentially a field effect transistor with a charge storage element. In particular, when sensed, the memory cell will appear to have a higher threshold level (or more programmed) than when less disturbed.
일반적으로, 메모리 셀이 제 1 전계 환경 하에서 프로그램-검증되고 나중에 이웃 셀이 이어서 다른 전하로 프로그램됨에 기인하여 다른 전계 환경 하에서 다시 판독된다면, 판독 정확성은 "유핀 효과"라 하는 것에 의해 이웃 플로팅 게이트 사이의 결합에 기인하여 영향을 받을 수 있다. 반도체 메모리에서 집적도가 더 높아짐에 따라, 메모리 셀 사이에서 저장된 전하에 기인한 전계의 교란(유핀 효과)은 셀 사이의 간격이 줄어듦에 따라 현저히 증가하게 된다.Generally, if the memory cell is program-verified under a first electric field environment and later read again under a different electric field environment due to the neighboring cell being subsequently programmed with different charge, then the read accuracy can be reduced to a value between neighboring floating gates Lt; / RTI > As the degree of integration in the semiconductor memory becomes higher, the disturbance (Yupin effect) of the electric field due to the stored charge between the memory cells increases significantly as the distance between the cells decreases.
위에 도 7에 관련하여 기술된 비트별 MLC 프로그래밍 기술은 동일 워드 라인을 따라 셀로부터 프로그램 교란을 최소화하게 설계된다. 도 7b로부터 알 수 있는 바와 같이, 2개의 프로그래밍 패스 중 첫 번째 프로그래밍 패스에서, 셀의 임계값은 기껏해야 임계 윈도우 중간까지 이동된다. 제 1 패스의 효과는 마지막 패스에 의해 압도된다. 마지막 패스에서, 임계값은 거리의 1/4만 이동된다. 즉, D2에 있어서, 이웃 셀 사이의 전하 차이는 이의 최대의 1/4로 제한된다. D3에서, 3번의 패스를 갖고, 마지막 패스는 전하 차이를 최대의 1/8로 제한할 것이다.The bit-wise MLC programming techniques described above in connection with Fig. 7 are designed to minimize program disturbances from cells along the same word line. As can be seen from Figure 7b, in the first of the two programming passes, the threshold of the cell is shifted to the middle of the critical window at most. The effect of the first pass is overwhelmed by the last pass. In the last pass, the threshold is shifted by a quarter of the distance. That is, in D2, the difference in charge between neighboring cells is limited to a maximum of 1/4 thereof. In D3, with 3 passes, the last pass will limit the charge difference to 1/8 of the maximum.
그러나, 비트별 복수-패스 프로그래밍 기술은 부분-페이지 프로그래밍에 의해 약화될 것이다. 페이지는 단위로서 함께 프로그램되는, 전형적으로 행 또는 워드 라인을 따라 있는 일 그룹의 메모리 셀이다. 복수의 프로그래밍 패스에 걸쳐 개별적으로 페이지의 비중첩 부분을 프로그램하는 것이 가능하다. 그러나, 페이지의 모든 셀이 마지막 패스에서 함께 프로그램되지 않는 것에 기인하여, 페이지가 프로그램된 후에 셀 사이에서 프로그램된 전하에 큰 차이를 야기할 수도 있을 것이다. 이에 따라, 부분-페이지 프로그래밍은 더 프로그램 교란을 초래할 것이며 감지 정확성에 대한 더 큰 마진을 요구할 것이다.However, bit-by-bit multi-pass programming techniques will be weakened by partial-page programming. A page is a group of memory cells that are typically programmed together as a unit, typically along a row or word line. It is possible to program the non-overlapping portions of the pages individually across a plurality of programming passes. However, due to the fact that not all the cells of the page are programmed together in the last pass, it may cause a large difference in the charge programmed between cells after the page is programmed. Accordingly, the partial-page programming will result in further program disturbances and will require a greater margin for detection accuracy.
메모리가 바이너리 메모리로서 구성된 경우, 작동의 마진은 MLC보다 넓다. 바람직한 실시예에서, 바이너리 메모리는 페이지의 비중첩 부분이 페이지에 대한 복수의 프로그래밍 패스 중 하나의 패스에서 개별적으로 프로그램될 수 있는 부분-페이지 프로그래밍을 지원하게 구성된다. 프로그래밍 및 판독 수행은 큰 크기의 페이지에 대해 작동함으로써 개선될 수 있다. 그러나, 페이지 크기가 호스트의 기록 단위(전형적으로 512-바이트 섹터)보다 훨씬 클 때, 이의 사용은 비효율적이 될 것이다. 페이지보다 더 미세한 입도로 작동하는 것은 이러한 페이지를 더욱 효율적으로 사용할 수 있게 한다.When the memory is configured as binary memory, the margin of operation is wider than that of MLC. In a preferred embodiment, the binary memory is configured to support partial-page programming in which the non-overlapping portions of the page can be individually programmed in one of a plurality of programming passes to the page. Programming and reading performance can be improved by operating on large size pages. However, when the page size is much larger than the host's write unit (typically 512-byte sectors), its use would be inefficient. Operating at finer granularity than the page makes these pages more efficient.
주어진 예는 MLC에 대한 바이너리 사이에서 예였다. 일반적으로 제 1 레벨 수를 갖는 제 1 메모리와 상기 제 1 메모리보다 많은 제 2 레벨 수를 갖는 제 2 메모리 사이에서 같은 원리가 적용됨을 알 것이다.The example given is an example between binaries for MLC. It will be appreciated that the same principles generally apply between a first memory having a first number of levels and a second memory having a second number of levels greater than the first memory.
논리 및 물리 블록 구조Logical and physical block structure
도 8은 제어기 내에 있는 소프트웨어 성분인 메모리 관리자에 의해 메모리가 관리되는 것을 도시한 것이다. 메모리(200)는 다수 블록으로 구성되며, 셀의 각각의 블록은 최소 소거 단위이다. 구현에 따라, 메모리 시스템은 블록을 "메타 블록" 및 "메가블록"으로 집성함으로써 형성된 더 큰 소거 단위로 작동할 수 있다. 편리상 설명에서는 일부 시스템이 메타 블록을 집성함으로써 형성된 "메가블록"과 같은 훨씬 더 큰 소거 단위로 작동함이 이해될지라도 메타 블록으로서 소거 단위를 언급할 것이다.Figure 8 shows that the memory is managed by the memory manager, which is a software component in the controller. The
호스트(80)는 파일 시스템 또는 운영 시스템 하에 애플리케이션이 실행될 때 메모리(200)에 액세스한다. 전형적으로, 호스트 시스템은, 예를 들어, 각각의 섹터가 512 바이트의 데이터를 내포할 수 있는 다수의 논리 섹터 단위로 데이터에 어드레스한다. 또한, 각각의 클러스터는 하나 이상의 논리 섹터로 구성된 것으로 다수의 논리 클러스터 단위로 호스트가 메모리 시스템에 기록 또는 판독하는 것이 일반적이다. 일부 호스트 시스템에서, 선택적 호스트-측 메모리 관리자는 호스트에서 저 레벨 메모리 관리를 수행하기 위해 존재할 수 있다. 판독 또는 기록 작동 동안 대부분의 경우에서 호스트(80)는 필수적으로 인접 어드레스를 갖는 하나의 스트링의 논리 섹터의 데이터를 내포하는 세그먼트를 판독 또는 기록하라는 명령을 메모리 시스템(90)에 발행한다.The
메모리-측 메모리 관리자(300)는 플래시 메모리(200)의 메타 블록 중에 호스트 논리 섹터의 데이터의 저장 및 인출을 관리하기 위해 메모리 시스템(90)의 제어기(100) 내에 구현된다. 메모리 관리자는 프론트-엔드 시스템(310) 및 백-엔드 시스템(320)을 포함한다. 프론트-엔드 시스템(310)는 호스트 인터페이스(312)를 포함한다. 백-엔드 시스템(320)은 메타 블록의 소거 작동, 판독 작동 및 기록 작동을 관리하기 위한 다수의 소프트웨어 모듈을 포함한다. 또한, 메모리 관리자는 플래시 메모리(200)와 제어기 RAM(130) 중에 시스템 제어 데이터 및 이의 작동에 연관된 디렉토리 데이터를 유지한다.The memory-side memory manager 300 is implemented in the
도 9는 백-엔드 시스템의 소프트웨어 모듈을 도시한 것이다. 백-엔드 시스템은 주로 2개의 기능 모듈들로서 미디어 관리층(330)과, 데이터 흐름 및 시퀀싱 층(340)을 포함한다.Figure 9 shows a software module of a back-end system. The back-end system mainly includes a
미디어 관리층(330)은 플래시 메모리 메타-블록 구조 내에 논리 데이터 저장의 구성을 수행한다. 더 상세한 것은 "미디어 관리층" 단락에서 나중에 제공될 것이다.The
데이터 흐름 및 시퀀싱 층(340)은 데이터의 섹터를 순서화하고 프론트-엔드 시스템과 플래시 메모리 사이에서 전송한다. 이 층은 명령 시퀀서(342), 저-레벨 시퀀서(344) 및 플래시 제어층(346)을 포함한다. 더 상세한 것은 "저 레벨 시스템 명세" 단락에서 나중에 제공될 것이다.The data flow and
메모리 관리자(300)는 바람직하게는 제어기(100) 내에 구현된다. 이것은 호스트로부터 수신된 논리 어드레스를 메모리 어레이 내에 데이터가 실제로 저장되는 물리 어드레스로 변환하며, 이들 어드레스 변환을 관리한다.The memory manager 300 is preferably implemented in the
도 10a(i) ~ 도 10a(iii)는 논리 그룹과 메타 블록 사이에서 맵핑을 개략적으로 도시한 것이다. 물리 메모리의 메타 블록은 논리 그룹의 N 논리 섹터의 데이터를 저장하기 위한 N 물리 섹터를 갖는다. 도 10a(i)는 논리 그룹 LGi으로부터의 데이터를 도시한 것으로, 논리 섹터는 논리 순서 0, 1,..., N-1로 인접하여 있다. 도 10a(ii)는 같은 데이터가 같은 논리 순서로 메타 블록으로 저장된 것을 도시한 것이다. 이러한 식으로 저장될 때 메타 블록은 "순차적"이라고 한다. 일반적으로, 메타 블록은 다른 순서로 저장된 데이터를 가질 수 있는데, 이 경우 메타 블록은 "비순차적" 또는 "무질서"라고 한다. Figures 10A-10A (iii) schematically illustrate the mapping between logical groups and metablocks. The metablock of the physical memory has N physical sectors for storing data of N logical sectors of the logical group. 10A (i) shows data from a logical group LG i , with the logical sectors being contiguous in
논리 그룹의 최하위 어드레스와 이것에 맵핑된 메타 블록의 최하위 어드레스 사이에서 오프셋이 있을 수 있다. 이 경우, 논리 섹터 어드레스는 메타 블록 내에 논리 그룹의 맨 아래에서 다시 맨 위로의 루프로서 되돌아간다. 예를 들면, 도 10a(iii)에서, 메타 블록은 논리 섹터 k의 데이터부터 시작하여 자신의 첫 번째 위치에 저장한다. 마지막 논리 섹터 N-1에 도달되었을 때, 섹터 0으로 되돌아가고 마지막으로 논리 섹터 k-1에 연관된 데이터를 자신의 마지막 물리 섹터에 저장한다. 바람직한 실시예에서, 이를테면 메타 블록의 첫 번째 물리 섹터에 저장된 데이터의 시작 논리 섹터 어드레스를 확인하는 것과 같이, 임의의 오프셋을 확인하기 위해서 페이지 태그가 사용된다. 2개의 블록은 이들의 논리 섹터가 페이지 태그만큼만 다를 때 유사한 순서로 이들이 저장되게 할 것으로 여겨질 것이다.There may be an offset between the lowest address of the logical group and the lowest address of the metablock mapped to it. In this case, the logical sector address is returned to the top of the logic group in the metablock again as a loop back to the top. For example, in Fig. 10A (iii), the metablock is stored in its first position starting from the data of logical sector k. When the last logical sector N-1 is reached, it returns to
도 10b는 논리 그룹과 메타 블록 사이에서 맵핑을 개략적으로 도시한 것이다. 각 논리 그룹(380)은 데이터가 현재 업데이트되고 있는 소수의 논리 그룹을 제외하고, 고유 메타 블록(370)에 맵핑된다. 논리 그룹이 업데이트된 후에, 이것은 다른 메타 블록에 맵핑될 수 있다. 맵핑 정보는 한 세트의 논리 대 물리 디렉토리에 유지되는데, 이것은 나중에 더 상세히 기술될 것이다.Figure 10b schematically shows the mapping between logical groups and metablocks. Each
적응형 제어기-Adaptive controller - 메모리Memory 인터페이스 interface
이 단락은 메모리 시스템의 내부 제어기-메모리 인터페이스의 전송 무결성을 모니터하고 이에 따라 인터페이스 설정을 조절할 수 있는 피드백 메커니즘 및 처리 유닛의 사용을 제시한다. 이것은 시스템이 인터페이스 성능을 최적화할 수 있게 한다. 예를 들면, 시스템의 파워는 감소될 수도 있고 또는 인터페이스를 위한 버스 클럭이 가속될 수도 있는데, 이것은 종종 내부 성능 병목이 될 수 있기 때문에, 메모리 시스템 밖에서(즉, 호스트로부터) 보았을 때 성능이 증가될 수 있게 한다. 송신 오류의 경우, 인터페이스 무결성 피드백 및, 실시예에 따라, 그외 다른 센서 또는 파라미터에 의해 도움을 받는 피드백 처리 유닛은 인터페이스 설정을 조절하고 송신 재시도를 수행할지 아니면 오류를 무시할지를 판단할 수 있다. 또한, 이하 논의는 도 4a, 도 4b 및 도 5에 도시된 바와 같은 메모리 어레이를 위한 NAND-형 아키텍처를 사용하는 메모리 카드 맥락에서 주어질 것이지만, 그외 다른 아키텍처, 다른 형태의 메모리, 및 비(non)-카드 사용, 이를테면 내장형 시스템, SSD 등을 위한 유사한 내부 인터페이스에 쉽게 확장한다.This paragraph presents the use of a feedback mechanism and processing unit capable of monitoring the transmission integrity of the internal controller-memory interface of the memory system and thus adjusting the interface settings. This allows the system to optimize interface performance. For example, the power of the system may be reduced, or the bus clock for the interface may be accelerated, which can often be an internal performance bottleneck, so performance will increase when viewed outside the memory system (i.e., from the host) I will. In the case of a transmission error, the interface integrity feedback and, depending on the embodiment, the feedback processing unit, which is assisted by other sensors or parameters, may adjust the interface settings and determine whether to retry the transmission or ignore the error. In addition, the following discussion will be given in the context of a memory card using a NAND-type architecture for a memory array as shown in Figures 4A, 4B and 5, but other architectures, other types of memory, and non- - Easily extend to similar internal interfaces for card use, such as embedded systems, SSDs, and more.
다음 논의가 구체적인 예를 제공하기 위해 여러 예시적 실시예에 기초할 수 있을지라도, 본 명세서에서 기술 및 구조는 독립적으로 작동될 수 있는 제어기 및 복수의 뱅크를 갖는 메모리 시스템에 상당히 일반적으로 적용될 수 있으며, 뱅크는 제어기가 메모리 시스템을 관리하기 위해 사용할 수 있는 시스템 데이터를 저장하기 위해 사용될 수 있는, 플래시이든 아니면 그외 다른 종류이든, 약간의 비휘발성 메모리를 포함한다. 위에 인용된 다른 참조 문헌 외에, 이들은 다음 미국 특허, 특허 공개, 및 출원 번호에 제시된 다양한 메모리 시스템을 포함할 수 있다: 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.Although the following discussion may be based on several exemplary embodiments in order to provide specific examples, the techniques and structures herein are fairly generally applicable to memory systems having a plurality of banks and a controller that can be operated independently , The bank includes some non-volatile memory, whether flash or otherwise, which can be used to store system data that the controller can use to manage the memory system. In addition to the other references cited above, they may include various memory systems as shown in the following US patents, patent publications, and application numbers: 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; And 61 / 142,620.
예시적 실시예의 논의에 앞서, 이 단락은 다루어진 문제를 더욱 고찰함으로써 시작할 것이다. 제어기-메모리 장치 인터페이스는 제어기(100, 도 1)와 하나 이상의 NAND 장치(200, 도 1)(예시적 실시예에서) 사이에서 데이터를 전송하기 위해 사용된다. {이 논의는 제어기(100)와 플래시 메모리(200) 사이에서 메모리 시스템(90) 상의 내부 인터페이스에 관한 것이고, 인터페이스(110)는 제어기가 메모리 시스템 외부와 통신하기 위해 사용하는 호스트 인터페이스임에 유의한다}. 속도, 파워 소비, 등을 절충하여 인터페이스 성능을 증가시키기 위한 서로 다른 NAND 인터페이스 모드가 개발되었다. 이 인터페이스는 흔히 성능 병목이 되기 때문에, 이들 인터페이스는 시스템 성능을 최대화하기 위해 극단까지 내몰렸다. 데이터 오류를 피하기 위해서, 인터페이스 설정(이를테면, 전압, 주파수, 구동 강도 및 슬루 레이트 제어)은 최악의 경우의 시나리오(극단의 온도, 극단의 부하 커패시턴스, 극단의 전압 등)에 대해 설정되고 있다. 결국, 장치는 전형적으로 최악의 경우의 안전 마진을 갖게 설계되지만, 이것은 전형적인 조건에서 큰 마진으로 바뀐다. 이러한 전형적인 조건에서, 인터페이스 설정은 제품 신뢰도를 약화하지 않고 훨씬 더 높은 인터페이스 성능에 최적화될 수 있다. 다음에서 제시되는 바와 같은 메커니즘이 없으면, 메모리 장치는 최악의 경우의 성능 설정에서 계속하여 작동할 것이다.Prior to discussion of the illustrative embodiment, this paragraph will begin by further consideration of the problems addressed. A controller-memory device interface is used to transfer data between the controller 100 (FIG. 1) and one or more NAND devices 200 (FIG. 1) (in the exemplary embodiment). Note that this discussion relates to the internal interface on the memory system 90 between the
예를 들면, 33MHz의 명목상 버스 주파수 내지는 가속된 40MHz, 극도로 가속된 50MHz 및 초 극도도 가속된 60MHz의 버스 주파수에서 16-비트 정규 모드에 있어서의 버스트 데이터 전송 시간 사이에 단순 비교는 각각 약 17%, 33% 및 45%의 현저한 레이턴시 감소를 가져온다. 이것이 표 1에 도시되었는데, 여기에서 열(column)은 주파수, 대응하는 사이클(tcyc), 2142 바이트 데이터의 시간 전송, 및 33MHz에서의 속도에 대한 속도 비이다.For example, a simple comparison between burst data transmission times in a 16-bit normal mode at a nominal bus frequency of 33 MHz or an accelerated 40 MHz, an extremely accelerated 50 MHz and an ultra-accelerated 60 MHz bus frequency is about 17 %, 33% and 45%, respectively. This is shown in Table 1, where column is the frequency, the corresponding cycle (t cyc ), the time transmission of 2142 bytes of data, and the speed ratio to the speed at 33 MHz.
종래 기술에서, 플래시 인터페이스 성능은 전형적으로 주어진 제품에 대한 고정된 성능에 설정된다. 설계는 최악의 경우의 설계를 고려한다. 일부 제품에서, 플래시 인터페이스는 "최악의 경우에 근접한"을 위해 설계되어 얼마간 인터페이스 성능 최적화를 가능하게 하지만 장치 수율이 얼마간 낮아지거나 데이터 오류가 증가할 위험이 있다.In the prior art, flash interface performance is typically set to a fixed performance for a given product. The design considers the worst case design. In some products, the flash interface is designed for "near-worst-case" and allows for some time to optimize interface performance, but there is a risk that the device yield will be somewhat lower or data errors will increase.
이 단락은 인터페이스 전송 무결성을 모니터하고 인터페이스 성능을 최적화하기 위해 그에 따라 인터페이스 설정을 조절하는 피드백 메커니즘 및 처리 유닛을 제시한다. 송신 오류의 경우, 피드백 처리 유닛(인터페이스 무결성 피드백 및 아마도 그외 다른 센서 또는 파라미터에 의해 도움을 받는)은 인터페이스 설정을 조절할지, 송신 재시도를 수행할지, 아니면 오류를 무시할지를 판단할 수 있다. 송신 오류가 없는 경우, 피드백 처리 유닛은 인터페이스 설정을 그대로 두거나 인터페이스 성능을 증가시키기 위해 인터페이스 설정을 수정하기로 결정할 수도 있다. 또한, 인터페이스 무결성 피드백 메커니즘은 피드백 처리 유닛이 2진 통과/실패 표시, 통과/실패 및 오류의 수, 또는 통과/실패 및 오류의 수와 오류 위치와 같은 서로 다른 정도의 정보를 얻을 수 있게 설계될 수 있다.This section presents a feedback mechanism and processing unit that monitors interface transmission integrity and adjusts interface settings accordingly to optimize interface performance. In the case of a transmission error, the feedback processing unit (which is assisted by interface integrity feedback and possibly other sensors or parameters) may determine whether to adjust the interface settings, perform transmission retries, or ignore errors. In the absence of transmission errors, the feedback processing unit may decide to leave the interface settings or modify the interface settings to increase the interface performance. The interface integrity feedback mechanism may also be designed such that the feedback processing unit can obtain different degrees of information such as binary pass / fail indication, pass / fail and number of errors, or pass / fail and number of errors and error location .
실시예에 따라, 피드백 메커니즘은 기존 장치 기반구조를 이용하거나 해시 엔진과 같은 전용 메커니즘에 의해 더욱 최적화될 수 있다. 이러한 전용의 메커니즘은 하드웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수 있다. 또한, 해시 엔진은 송신 오류를 정정할 수 있는 오류 정정 엔진에 의해 보완될 수 있다. 이러한 방법은 인터페이스가 여전히 최적의 성능에 도달하면서도 한 레벨의 비트 오류 레이트에 대처할 수 있게 할 것이다. 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).Depending on the embodiment, the feedback mechanism may be further optimized by using an existing device infrastructure or by a dedicated mechanism such as a hash engine. This dedicated mechanism may be implemented in hardware, software, or a combination thereof. In addition, the hash engine can be supplemented by an error correction engine that can correct transmission errors. This approach will allow the interface to cope with one level of bit error rate while still achieving optimal performance. In the prior art for NAND bit failures, the ECC design is worthy of the transmission correction capability because it considers errors only in the memory itself and does not take into account interface errors that may occur when data is transferred between the controller and the memory device. As the interface performance increases, the likelihood of transmission errors increases. Having existing ECCs handle interface errors degrades existing ECC capabilities in terms of performance and probability for errors that can not be recovered. Designing a dedicated interface error correction engine allows for "divide and rule" and allows existing ECCs to focus on errors generated by NAND. (Further background details regarding ECC can be found in the following US patents, patent publications, and patent applications: 2009/0094482; 7,502,254; 2007/0268745; 2007/0283081; 7,310,347; 7,493,457; 7,426,623; 2007/0220197; 2007 2007/00061502, 2007/0091677, 2007/0180346, 2008/0181000, 2007/0260808, 2005/0213393, 6,510,488, 7,058,818, 2008/0244338, 2008/0244367, 2008/0250300, and 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)에 의해 연결된다.Figure 11 shows this feedback mechanism but is a block diagram based on a typical prior art conventional NAND / controller infrastructure. This will not only provide an alternative embodiment of the adaptive interface, but will also help illustrate some of the related concepts. In Fig. 11 only the elements related to this discussion are clearly shown and others have been omitted for the sake of simplicity. The
한 세트의 호스트 데이터가 일단 제어기(100)에 수신되면 이 데이터에 대한 전형적인 흐름은 ASIC 코어(411)로부터 출력 데이터 버퍼(415)로, 그리고 송신 회로(417)를 거쳐 버스 구조(401)로 흐른다. 메모리(200) 상에 데이터는 버스로부터 수신 회로(431)에 의해 입력 데이터 버퍼(433)에 전송되고 이어 NAND 코어(435)에 기록된다. 이어서, 호스트가 데이터에 액세스하기를 원할 때, NAND 코어(435)로부터 출력 데이터 버퍼(443)로 판독되고, 송신 회로(441)에 의해 버스 구조(401)에 전송되고, 이어 버스로부터 수신 회로(427)에 의해 제어기의 입력 데이터 버퍼(425) 내로 판독된다. 메모리 시스템은 전형적으로 데이터에 들어갈 수 있는 오류를 검출하여 정정하기 위해서 오류 정정 코드(ECC)를 사용하는데, 제어기는 데이터와 더불어 NAND 코어로 송신되어 기록되고 이어 데이터와 함께 다시 읽혀지는 대응하는 ECC를 발생한다. 그러면, ECC 엔진(413)는 데이터 및 이의 대응하는 ECC에 액세스할 수 있어, 데이터가 호스트에 전달되기 전에 필요시 검사되어 정정될 수 있게 된다.Once a set of host data is received at the
ECC가 데이터 오류를 정정하기 위해 사용될 수 있을지라도, 이것은 한정된 양의 오류만을 정정할 수 있고, 이 양은 설계 선택이다. 이들 능력 내에서, ECC 엔진(413)은 NAND 코어(435) 자체에 연관 오류, 이를테면 기록 오류, 판단 오류 및 저장될 때 데이터의 교란(disturb) 및 그외 열화뿐만 아니라, 송신 오류를 포함하여, 왕복 동안 축적된 임의의 오류에 대해 정정할 수 있는데, 그러나 ECC의 선택은 일반적으로 NAND 코어(435)에 관계된 오류를 고려한 것에만 기초한다. ECC에 대해 위에서 인용된 참고문헌 중 일부에서 논의된 바와 같이 이를테면 "강(strong) ECC"을 갖는 일부 배열에서, 코드는 메모리의 특성 및 데이터 상태가 메모리에 어떻게 맵핑되었는지에 기초한다. 제어기와 메모리 사이에서 송신은 대체로 간과되고 오류가 추가되지 않는 것으로 취해진다. 따라서, 인터페이스는 이에 따라 설정될 필요가 있어 위에 기술된 바와 같이, 파라미터를 최악의 또는 거의 최악의 경우에 따라 설정되게 한다.Although the ECC can be used to correct data errors, it can only correct a limited amount of errors, which is a design choice. Within these capabilities, the
제 1 세트의 실시예는 인터페이스 특징을 최적화하기 위해 사용되는 피드백을 제공하는 도 11의 요소에 기초한다. 데이터(및 대응하는 ECC)가 메모리 코어에 실제로 기록되는 것을 제외하고 위에 기술된 표준 기록 및 이에 이은 판독에서와 같게, 대응하는 ECC와 더불어 한 세트의 데이터가 제어기에서 메모리로 그리고 다시 제어기로의 왕복에서 보내진다. 기록 전송이 제어기(100)에서 메모리 회로(200)로 발부된 후에, 제어기는 데이터를 다시 판독하기 위해 버퍼 래치(433, 443)를 사용할 수 있다. 이것은 입력 및 출력 버퍼가 같다면 실제 전송은 없을 것일지라도, 경로(437)로 나타내었다. 이 왕복이 어레이(435) 자신에 연관된 임의의 오류를 제거하기 때문에, 이것은 송신의 영향을 격리시키며 ECC 엔진(413)이 메모리 인터페이스의 무결성을 결정할 수 있게 한다. 이어, 인터페이스 파라미터는 수정될 수 있고 프로세스는 재발행될 수 있다. 이렇게 하여 기록 및 판독 인터페이스 파라미터 모두가 최적화될 수 있다.The first set of embodiments is based on the elements of FIG. 11 that provide feedback that is used to optimize interface features. As with the standard recording described above and subsequent readings, except that the data (and the corresponding ECC) are actually recorded in the memory core, a set of data, together with the corresponding ECC, is sent from the controller to the memory and back to the controller Lt; / RTI > After the write transfer is issued from the
도 12는 또 다른 한 세트의 실시예를 도시한 블록도이지만 여기에서 피드백 메커니즘은 인터페이스에 특정한 해시 엔진 및 선택적인 데이터 정정 엔진을 사용한다. 제어기 및 메모리 칩을 언급하기보다, 도 12는 이하 더 기술된 바와 같이 판독 프로세스인지 아니면 기록 프로세스인지에 따라 송신기 측(520) 및 수신기측(530) 중 어느 하나는 제어기일 수 있고 다른 하나는 메모리일 수 있고 이들 두 측은 대칭일 필요는 없기 때문에, 이들 상에 회로에 관하여 제공된다.Figure 12 is a block diagram illustrating yet another set of embodiments wherein the feedback mechanism uses an interface specific hash engine and an optional data correction engine. Rather than referring to a controller and a memory chip, Figure 12 can be either a controller side or a
송신기측(520)은 다시 기록 데이터 버퍼(521) 및 송신 인터페이스 회로(529)를 포함할 것이다. 또한, 이것은 해시 값 생성기(525) 및 멀티플렉서(527)를 포함할 것이다. 전송 프로세스에서, 기록될 데이터(523)는 기록 버퍼(520)로부터 해시 값 생성기(525) 및 MUX(527) 모두에 전송된다. 대응하여 해시 값 생성기(525)는 데이터로부터 해시 값을 생성하는데, 이것은 이어 MUX(527)에도 전달된다. 이어서, 멀티플렉서는 데이터 및 이에 이어 이의 해시 값을 송신 인터페이스 회로(529)에 그리고 이어 버스 구조(550) 상에 공급한다.The
수신기측은 다시 수신기 인터페이스 회로 및 판독 데이터 버퍼(535)와 이에 더하여 몇몇 추가의 요소를 포함한다. 판독 인터페이스 회로(532)가 버스(550)로부터 데이터 및 대응하는 해시 값을 취한 후에, 디멀티플렉싱 회로(533)는 해시 값을 데이터로부터 분리하고 판독 데이터가 버퍼(535)에 그리고 다시 데이터 세트로부터 해시 값을 생성하는 수신기측 해시 값 생성기(539)에도 보내진다. 이어서, 수신기측에서 생성된 해시 값은 비교 회로(541)에서 수신된 해시 값과 비교된다. 실시예에 따라, 비교의 결과는 단지 이들 값이 전송 프로세스에 기인한 오류의 양과 일치하는지 결정하거나 또는 이에 더하여 오류량을 결정할 수 있다. 또한, 데이터 정정 엔진(537)은 데이터 재송신을 성능할 필요없이 인터페이스 오류를 정정하기 위해 일부 실시예에서 포함될 수 있다. 예시적 실시예에서, 해시 생성기(및 수신기측 상에 선택적인 데이터 정정 엔진)는, 회로에서 얼마간 겹치는 것이 있을지라도, 사용되는 NAND 코어 오류를 위한 ECC로부터 분리하는데, 사실 둘 다는 제어기의 동일 논리 회로 상에, 그러나 상이한 펌웨어 코드에 의해 구현될 수 있다. (이 논의를 위해서 개별적인 것으로 고찰되더라도, 두 오류 검출/정정 부분은 이하 기술되는 바와 같이 더 일반적인 실시예에서 상호작용할 수 있다). 전형적으로, 해시 값은 보내지는 정보(사용자 데이터, 대응하는 ECC, 헤더 정보, 등)의 전체에 기초하여 발생될 것이지만, 그러나 대안적 실시예에서, 이것은 예를 들어, 여러 오버헤드로부터 벗겨냄에 의한 단지 한 부분으로부터, 그리고 해시 값을 생성하기 위해 사용자 데이터 자체만을 사용함으로써 발생될 수도 있을 것이다.The receiver side again includes a receiver interface circuit and a read data buffer 535 and in addition some additional elements. After the read interface circuit 532 takes the data and the corresponding hash value from the
또한, 도 12는 해시 비교 회로(541)의 출력을 수신하기 위해 연결된 피드백 처리 유닛(560)을 포함한다. 이 피드백은 이어서 561에서 분석되는데, 이것은 실시예에 따라 온도, 공급 전압 레벨, 및 NAND 코어의 처리에 관계된 퀄리티 중 하나 이상을 고려할 수 있다. 이어서, 563에서, 이 피드백의 결과는 전송 프로세스를 조절하기 위해 사용될 수 있고, 대응하여 송신 인터페이스 회로(529) 및 판독 인터페이스 회로(531) 중 하나 또는 모두에 연결된다. 기록 작동(제어기가 송신기측인 경우)에 있어서, 기록 전송이 제어기로부터 메모리 장치에 발부된 후에, 피드백 처리 유닛은 생성된 해시 값의 비교를 단지 다시 판독하고 이에 의해 기록-방향 메모리 인터페이스 무결성을 결정할 수 있다. 이에 기초하여, 인터페이스 기록 파라미터는 수정될 수 있고 프로세스는 요구된다면 다시 발행될 수 있다. 대칭으로, 메모리가 송신기측인 경우 판독-방향으로 동일 작동이 채용될 수 있다.12 also includes a
도 13은 데이터 및 생성된 해시 값을 버스 인터페이스를 통해 송신하기 위한 예를 도시한 도면이다. 위 부분에 도시된 바와 같이, 대응하는 해시 값은 자동으로 데이터에 첨부되고, 따라서 이들은 장치가 이 모드에서 작동할 때 함께 송신될 것이다. 아래 부분에 도시된 제 2 선택에서, 데이터 페이로드가 송신되고, 수신측은 대응하는 해시 값을 요청하며, 이어서 이것은 생성하어 송신된다. 데이터 페이로드는 기정의된 길이 또는 랜덤한 길이일 수 있다. 데이터 페이로드 길이가 기정의된다면, 해시 값은 제 1 선택에서처럼 데이터에 첨부되될 수 있고, 또는 요청시 보내질 수 있다. 데이터 페이로드 길이가 랜덤하다면, 해시 값은 특정한 명령을 발행한 후에 보내질 수 있다.13 is a diagram showing an example for transmitting data and generated hash values through a bus interface. As shown above, the corresponding hash values are automatically attached to the data, and thus they will be sent together when the device is operating in this mode. In the second selection shown below, the data payload is transmitted and the receiver requests the corresponding hash value, which is then generated and transmitted. The data payload may be a predetermined length or a random length. If the data payload length is predetermined, the hash value may be appended to the data as in the first selection, or may be sent on request. If the data payload length is random, the hash value can be sent after issuing a specific command.
도 12에 관하여 기술된 기술 및 대응하는 회로에 대해 다수의 변형이 가능하다. 해시 값 엔진 및 해시 값에 관하여, 해시 엔진은 패리티 코드(순환 중복 검사 또는 CRC), ECC 등일 수 있다. 예를 들면, 통과/실패로 회답할 "2진" 실시예가 사용될 수 있고, 이것은 오류 비트 카운트(CRC)에 기초하여 형성될 수 있고 적은 수의 게이트로 구현되는 잇점이 있다. 대안적으로, "소프트" 실시예는 오류 비트 카운트(EBC), 및 선택적으로 실패된 비트의 위치를 회답할 수 있고, BCH 또는 리드-솔로몬 코드와 같은 ECC 코드에 기초하여 형성될 수 있어, 더 많은 정보를 제공하여 정확한 판단을 갖게 시스템을 돕는다. 해시 엔진은 선택적으로 예를 들어, 도 12의 데이터 정정 엔진(537)에 의해 나타낸 바와 같이, 메모리 코어로부터 정정하는 반전된(flipped) 비트와 유사하게, 인터페이스 실패를 정정하는 보안 특징을 가질 수도 있다. 전송으로부터 피드백에 기초하여, 시스템은 전송을 반복할 수도 있다. 전송 재시도는 2진 전송 상황 또는 소프트 전송 상황에 기초하여 판단될 수 있다. 또한, 전송 재시도는 전송 상황 및 NAND 비트 반전(flip)의 수와의 조합에 기초하여 판단될 수도 있는데, 예를 들면, 인터페이스가 N 오류를 야기하였고 NAND가 M 오류를 야기하였으며 제어기 오류 정정 능력이 P이고, P > N+M이라면, 시스템은 재송신하지 않기로 판단할 수 있다.Many variations are possible with respect to the techniques described with respect to FIG. 12 and corresponding circuitry. With respect to the hash value engine and the hash value, the hash engine may be a parity code (cyclic redundancy check or CRC), ECC, and the like. For example, a "binary" embodiment may be used to reply with a pass / fail, which can be formed based on an error bit count (CRC) and has the advantage of being implemented with fewer gates. Alternatively, the "soft" embodiment may answer the location of the error bit count (EBC), and optionally the failed bit, and may be formed based on ECC codes such as BCH or Reed-Solomon codes, Provide a lot of information to help the system to make accurate judgments. The hash engine may optionally have a security feature that corrects the interface failure, similar to the flipped bit that is corrected from the memory core, as indicated by, for example, the data correction engine 537 of FIG. 12 . Based on the feedback from the transmission, the system may repeat the transmission. The transmission retry can be judged based on a binary transmission situation or a soft transmission situation. Also, the transmission retries may be determined based on a combination of the transmission conditions and the number of NAND bit flips, for example, if the interface caused an N error and NAND caused an M error and the controller error correction capability Is P, and P > N + M, the system can determine not to retransmit.
또한, 시스템은 다양한 서로 다른 방법으로 구성될 수 있다. 구성은 대칭이거나(이 경우, 제어기측에 해시 엔진 및 메모리측에 해시 엔진은 동일함) 또는 비대칭일 수 있다. 비대칭 구성에서, 서로 다른 송신 방향을 위해 서로 다른 구성이 사용되는데, 예를 들면, 기록 송신을 위해서 보다 신뢰성있는 메커니즘이 설계되는 한편, 판독 송신을 위해 보다 고속의 메커니즘이 설계될 수 있다. 또한, 인터페이스가 대칭으로 구성될지라도, 설정은 초기 기록과 데이터의 후속되는 판독 사이의 간격 동안 변경될 수도 있기 때문에, 주어진 한 세트의 데이터에 관하여 비대층으로 기능할 수도 있다는 점에 유의한다.In addition, the system can be configured in a variety of different ways. The configuration may be symmetric (in this case, the hash engine on the controller side and the hash engine on the memory side are the same) or asymmetric. In an asymmetric configuration, different configurations are used for different transmission directions, for example, a more reliable mechanism for write transmission may be designed, while a higher speed mechanism for read transmission may be designed. It should also be noted that although the interface is configured symmetrically, the setting may also function as a non-hierarchical layer with respect to a given set of data, as the settings may change during the interval between initial recording and subsequent reading of the data.
피드백 처리 유닛(530)은 제어기(100) 상에, 또는 메모리(200) 상에, 또는 모두에 다양하게 위치되거나, 또는 둘 사이에서 분산될 수 있다. 이것은 별도의 회로 상에서 형성될 수도 있다. 많은 용도에서, 제어기 회로는 흔히 더 진보된 처리 능력을 포함하며 메모리 시스템은 빈번히 복수의 메모리 칩으로 형성되기 때문에, 제어기 상에서 피드백 처리 유닛을 구현하는 것이 가장 현실성 있지만 그러나 본 명세서에서 제시되는 기술은 이것으로 제한되지 않는다. 이들 변형 중 어느 것에서, 데이터 전송 상황 국면에 대한 검사는 피드백 처리 유닛의 책임이다.The feedback processing unit 530 may be variously located on the
피드백 처리 유닛이 제어기측 상에 위치되는 예를 더욱 고찰하면, 판독 방향에서 제어기가 데이터 및 해시 값을 판독한 후에, 이들은 피드백 메커니즘을 통과할 것이며, 제어기는 통과/실패 상황을 결정할 것이며 이에 따라 인터페이스 설정을 조정할 수 있다(또는 하지 않을 수 있다). 제어기는 이미 데이터 및 해시 값을 판독하였기 때문에, 상황을 결정하는 것이 제어기의 로직에서 행해질 수 있기 때문에 이를 위해 플래시측으로부터 더 이상 정보의 필요성이 없다. 기록 방향에서, 데이터 페이로드 및 대응하는 해시 값이 메모리측에 보내지고, 이어서 제어기는, 메모리측으로부터 통과/실패 상황을 판독; 해시 값을 다시 판독하여 통과/실패를 결정; 메모리로부터 오류 비트 카운트(EBC)를 다시 판독; NAND로부터 EBC 및 오류 위치를 다시 판독; 또는 통과/실패 상황 및 메모리측으로부터 정정된 비트의 수를 판독하는 것인, 몇 가지 서로 다른 방법으로 작동할 수 있다.In further consideration of the example in which the feedback processing unit is located on the controller side, after the controller reads the data and hash values in the read direction, they will pass through the feedback mechanism and the controller will determine the pass / fail situation, You can (or may not) adjust the settings. Since the controller has already read the data and the hash value, there is no need for further information from the flash side for this to be done in the logic of the controller to determine the situation. In the write direction, the data payload and the corresponding hash value are sent to the memory side, and then the controller reads the pass / fail status from the memory side; Read the hash value again to determine pass / fail; Re-reading the error bit count (EBC) from the memory; Re-reading the EBC and error location from the NAND; Or pass / fail status and the number of corrected bits from the memory side.
피드백 처리 유닛은 인터페이스 설정을 수정하기로 판단할 수도 있다. 예를 들면, 구동 강도; 버스 주파수 또는 그외 타이밍 파라미터들; 인터페이스 전압; 인터페이스 모드(예를 들어, 정규/통상적-모드에서 토글-모드로 전환); 등의 인터페이스 설정이 수정될 수 있다. 이들 인터페이스 설정은 적응형 피드백 방식으로 수정될 수 있다. 프로세스 변동, 공급 전압 레벨, 및 온도와 같은 요인은 인터페이스 오류의 가능성에 영향을 미치기 때문에, 이들 요인은 도 12에 피드백 분석(561)에의 입력으로 포함될 수도 있다.The feedback processing unit may decide to modify the interface setting. For example, the driving strength; Bus frequency or other timing parameters; Interface voltage; Interface mode (e.g., switching from normal / normal-mode to toggle-mode); Etc. may be modified. These interface settings can be modified by an adaptive feedback scheme. These factors may be included as an input to the
버스 주파수 및 다른 파라미터 설정은 조기에 레미션(remissions)에 기초할 수 있고, 명목상의 파라미터 설정 또한 여러 가지 방법으로 설정 가능할 수 있다. 예를 들면, 서로 다른 버스 커패시턴스/NAND 구성에 대해 서로 다른 값을 갖는 룩업 테이블(LUT)이 사용될 수 있다. 이러한 룩업 테이블(LUT)은 서로 다른 작동 프로세스 파라미터, 전압 공급 레벨, 온도 등에 대해 서로 다른 값을 가질 수 있다. 프로세스 파라미터, 전압 공급 레벨, 및 온도는 LUT에 사전에 정의되는 대신에, 함수(공식)에서 변수일 수 있다.The bus frequency and other parameter settings can be based on early remissions, and nominal parameter settings can also be set in a number of ways. For example, look-up tables (LUTs) having different values for different bus capacitance / NAND configurations may be used. This lookup table (LUT) may have different values for different operating process parameters, voltage supply levels, temperatures, and the like. The process parameters, voltage supply levels, and temperature may be variables in a function (formula) instead of being predefined in the LUT.
인터페이스 설정의 최적화 작업은 백그라운드에서 작동될 수 있다. 또한, 전압 공급 또는 온도 변화와 같은 특별한 이벤트는 인터페이스 설정 훈련 작업을 시작하게 하기 위해 사용될 수 있다. 또한, 인터페이스 훈련 작업은 도 11 및 경로(437)에 관련하여 위에서 기술된 바와 같이, NAND 코어를 거쳐, 그러나 이에 기록되지는 않고 송신되는 알려진 패턴을 사용할 수 있다. 또한, 인터페이스 설정은 서로 다를 수 있고, 판독 방향 및 기록 방향에 기초하거나, 서로 다른 데이터 보유 요건에 기초할 수 있다.Optimization of interface settings can be done in the background. In addition, special events such as voltage supply or temperature changes can be used to initiate interface setup training work. In addition, the interface training task may use a known pattern that is transmitted via the NAND core, but not written to it, as described above with respect to FIG. 11 and path 437. In addition, the interface settings may be different, and may be based on read direction and recording direction, or on different data retention requirements.
앞에 논의는 주로 메모리 시스템을 제어기 및 단일 메모리 장치 회로를 갖는 것으로서 고찰하였다. 더 일반적으로, 시스템은 여러 가지 버스 토폴로지를 사용하여 제어기(및 별도의 회로라면 피드백 처리 유닛)에 연결될 수 있는 몇몇 메모리 칩을 포함할 수 있다. 예를 들면, 모든 메모리 칩은 단일 시스템 버스를 공유할 수 있고, 또는 각 메모리 회로는 그 자신의 제어기-메모리 버스를 가질 수 있고, 또는 다양한 혼성 배열이 사용될 수도 있을 것이다. 그러면, 서로 다른 인터페이스 설정이 이 복수의 NAND 장치에 적용될 수 있다(예를 들면, 몇몇 장치에 인터페이스한다면, 이것은 병렬로 행해질 수도 있을 것이다). 또한, 인터페이스 퀄리티가 특정 NAND 장치의 부하 및/또는 셀/블록 퀄리티의 함수일 수 있기 때문에, 서로 다른 인터페이스 설정은 액세스되는 특정 NAND 장치에 기초하여 사용될 수 있다. 또한, 주어진 메모리 장치 내에서, 인터페이스 퀄리티는 특정 블록의 퀄리티의 함수일 수 있기 때문에, 서로 다른 인터페이스 설정은 NAND 코어 내 블록에 적용될 수도 있다.The discussion discussed above primarily focused on the memory system as having a controller and a single memory device circuit. More generally, the system may include several memory chips that can be coupled to the controller (and, if separate circuits, a feedback processing unit), using various bus topologies. For example, all memory chips may share a single system bus, or each memory circuit may have its own controller-memory bus, or various hybrid arrangements may be used. Different interface settings may then be applied to the plurality of NAND devices (for example, if interfacing to several devices, this may be done in parallel). Also, since the interface quality may be a function of load and / or cell / block quality of a particular NAND device, different interface settings may be used based on the particular NAND device being accessed. Also, within a given memory device, different interface settings may be applied to the blocks in the NAND core, since the interface quality may be a function of the quality of the particular block.
앞에 단락의 기술의 더 상세한 것은 2010년 7월 13일에 출원된 미국 특허출원 번호 12/835,292에서 발견될 수 있다.Further details of the techniques of the preceding paragraph can be found in U.S. Patent Application No. 12 / 835,292 filed on July 13,
백-back- 엔드End (( BACKBACK -- ENDEND ) ) 메모리Memory 시스템system 인터페이스의 동적 최적화 Dynamic optimization of interfaces
이 단락은 메모리 시스템의 제어기-메모리(또는 "백-엔드") 인터페이스를 더욱 고찰하고 복수의 메모리 데이터 버스를 갖는 것을 포함하여, 고속 메모리 시스템에 적합한 백-엔드 판독 및 기록 성능을 동적으로 최적화하기 위한 몇 가지 방법을 제시할 것이다. 위에 논의된 바와 같이, 메모리 시스템은 일반적으로 임의의 양의 오류 공차를 갖게 설계되고, 이 오류가 제어기-메모리 전송 프로세스에서 그리고 실제 메모리 상에 저장 프로세스에서 일어날 수 있을지라도, 통상적으로 이들 중 마지막 것만이 ECC 프로세스를 위해 고려되고 백-엔드 인터페이스는 전형적으로 송신 채널 오류를 가능한 한 제거하거나, 적어도 최소화하게 최적화된다. 그렇지만, 많은 경우에서, 저장 프로세스로부터 비롯되는 데이터 오류(판독 및 기록 오류를 포함한)는 시스템의 ECC 능력보다 훨씬 미만일 수 있다. 예를 들면, 아주 많이 사이클된 장치가 최대 가용 데이터 정정을 필요로 할 수 있을지라도, 새 장치는 비교적 적은 오류를 가질 수 있어, 과잉의 오류 정정 능력을 갖는 시스템이 되게 할 수 있다. 이 단락은 메모리 시스템이 이 오류 정정 능력의 비(non)-제로 부분을 송신 채널에 내부적으로 할당하게 하는 방법을 제시한다. 이것은 송신 경로 오류가 야기될 것이라 할지라도 인터페이스가 예를 들어, 고속으로 또는 낮은 파워에서 작동할 수 있게 한다. 메모리 부분이 더 많은 양의 오류 정정 요구시, 할당은 동적으로 조절될 수 있다. 보완적 측면에서, 시스템은 서로 다른 작동 파라미터에 대해 결과적인 송신 오류의 양을 결정하기 위해 송신 경로를 교정한 다음 얼마나 많이 허용될 것인지에 기초하여 파라미터를 선택할 수 있다.This section further discusses the controller-memory (or "back-end") interface of the memory system, and includes dynamically optimizing back-end read and write performance suitable for high speed memory systems, including having multiple memory data buses I will suggest some ways to do this. As discussed above, a memory system is generally designed to have any amount of error tolerance, and although this error can occur in the controller-memory transfer process and in the storage process on physical memory, typically only the last of these Is considered for this ECC process and the back-end interface is typically optimized to eliminate, or at least minimize, transmission channel errors as much as possible. However, in many cases, data errors (including read and write errors) resulting from the storage process may be well below the ECC capabilities of the system. For example, although a highly cycled device may require the maximum available data correction, the new device may have relatively few errors, making it a system with excessive error correction capability. This section presents a way for the memory system to internally assign a non-zero portion of this error correction capability to the transmit channel. This allows the interface to operate, for example, at high speed or at low power, even though transmission path errors will result. When the memory portion requires a larger amount of error correction, the allocation can be dynamically adjusted. In a complementary aspect, the system can calibrate the transmit path to determine the amount of the resulting transmission error for different operating parameters, and then select the parameters based on how much will be allowed.
제어기와 메모리부 사이에 백-엔드 인터페이스를 더욱 고찰하면, 전형적인 메모리 시스템은 메모리 제어기 및 NAND 플래시 메모리 모듈과 같은 메모리 장치로 구성된다. 백-엔드 인터페이스는 메모리와 이의 제어기 사이에서 데이터 버스이다. 인터페이스는 전형적으로 두 방법 중 하나로 형성된다. 제 1 방법에서, 제어기 및 메모리 장치가 별개의 성분이라면, 백-엔드 인터페이스는 이들 성분이 실장되는 인쇄 회로 기판(PCB) 상에 도통 트레이스에 의해 형성된다. 제 2 방법에서, 제어기 및 메모리는 패키지 내 시스템(SIP) 또는 복수-칩 패키지(MCP)와 같은 단일 패키지 내에 캡슐화될 수 있다. 이 제 2 방법의 경우에, 백-엔드 인터페이스는 패키지 기판에 의해 형성된다.Considering the back-end interface between the controller and the memory unit, a typical memory system consists of a memory device, such as a memory controller and a NAND flash memory module. The back-end interface is a data bus between the memory and its controller. The interface is typically formed in one of two ways. In the first method, if the controller and the memory device are separate components, the back-end interface is formed by a conductive trace on a printed circuit board (PCB) on which these components are mounted. In a second method, the controller and the memory may be encapsulated in a single package, such as an in-package system (SIP) or a multi-chip package (MCP). In the case of this second method, the back-end interface is formed by a package substrate.
앞에 단락에서 논의된 바와 같이, 메모리 시스템에서 전체 비트 오류 레이트(BER)는 NAND 플래시 메모리와 같은 메모리 장치에서 데이터 보유의 신뢰도와, 송신 오류를 야기할 수 있는 백-엔드 인터페이스의 결함인, 두 주요 요인에 기인할 수 있다. 오류 정정 코딩(ECC)은 이 전체 BER을 해결하기 위해 메모리 시스템에 채용될 수 있다. 도 14는 메모리 시스템에서 비트 오류에 대한 기여를 개략적으로 도시한 것이다.As discussed in the preceding paragraph, the total bit error rate (BER) in a memory system is a function of the reliability of data retention in memory devices, such as NAND flash memory, and the failure of the back-end interface, Can be attributed to factors. Error correction coding (ECC) can be employed in the memory system to address this overall BER. Figure 14 schematically illustrates the contribution to bit errors in a memory system.
도 14에 도시된 바와 같이, 전체 비트 오류 레이트 BER(605)의 주요 원인 중 하나. 판독, 및 기록 프로세스에서 야기된 임의의 오류뿐만 아니라, 저장된 데이터(전하 누설, 교란 등으로부터)에 대한 데이터 열화에 기인한, 이 오류의 영향이 NAND 보유(601)로서 도시되었다. 통상적으로, 데이터 정정은 이 요인만을 감안하기 위해 사용되는데, 이것은 데이터가 판독될 때 목격된다. 채널 결함에 기인한 오류는 603에 도시되었고 데이터 판독 및 기록 모두에 영향을 미치지만 영향은 판독에서 다시 목격될 것이다. 채널 임팩션 오류의 원인은 기호간 간섭(ISI), 동일 데이터 버스(버스내) 크로스토크, 버스간 크로스토크(복수-데이터 버스 설계에서), 인쇄 회로 기판(PCB) 노이즈, 실리콘 다이 노이즈, 패키지 노이즈 등을 포함할 수 있다. 다른 측에서, ECC(607)는 어떤 레벨의 오류까지의 오류를 정정할 수 있다.As shown in FIG. 14, one of the main causes of the entire bit
제어기와 메모리 사이에서 데이터 전송 속도가 증가함에 따라, 백-엔드 인터페이스는 동일 데이터 버스(메모리내 데이터 버스 크로스토크) 내에 신호 사이에서 크로스토크 및 기호간 간섭(ISI)과 같은, 603에 기여하는 신호 무결성에 관계된 문제를 더 받기 쉽게 된다. 또한, 제어기가 복수의 메모리 장치에 액세스할 수 있는 메모리 토폴로지의 도입에 따라 백-엔드 인터페이스는 데이터 버스(메모리간 데이터 버스 크로스토크) 사이에서 동시에 전환 노이즈 및 크로스토크를 동시에(복수-메모리 데이터 버스 설계) 받도록 한다. 버스 속도 외에도, 데이터 버스의 전압 진폭 및 온도(PCB 트레이스에서의 주변 온도 및 패키지 내 시스템(SIP) 또는 복수-칩 패키지(MCP)에 있어서의 접합 온도)와 같은 요인들도 백-엔드 인터페이스의 신호 무결성에 영향을 미칠 수 있다. 그러므로, 백-엔드 인터페이스의 내재적 결함은 고속 메모리 시스템을 위한 전체 시스템 성능을 결정함에 있어 병목이 된다. 메모리 장치의 핀 커패시턴스는 메모리 다이의 수에 따라 증가한다. 복수 메모리 다이로 구성된 고 용량 메모리 장치는 이들의 데이터 입력/출력(I/O) 상에 고 커패시턴스를 나타내는데, 이것은 데이터 버스 구조의 에지 레이트 및 신호 무결성을 더욱 저하시킨다.As the data transfer rate between the controller and the memory increases, the back-end interface is able to provide
신호 트레이스 상에 신호 무결성에 관계된 문제는 크로스토크를 최소화하기 위해 서로 사이에서 이격된 신호 트레이스 사이의 간격을 증가시킴으로써 최소화될 수 있는데, 그러나 이 방법은 PCB 또는 기판 상에 가용한 면적에 의해 제한된다. 또한, 낮은 유전상수 및 낮은 소실(dissipation) 요인(손실 탄젠트)을 갖는 PCB 물질을 선택함으로써 감소될 수도 있지만, 그러나 이들 PCB 물질은 전형적인 물질보다 비싸다. 따라서 이 오류를 버스 속도를 낮추거나 아니면 작동 버스 파라미터를 열화시키는 출력으로 감소시키는 방법이 있더라도, 이들 방법은 결점을 갖는다.Problems related to signal integrity on signal traces can be minimized by increasing the spacing between signal traces spaced between each other to minimize crosstalk, but this method is limited by the area available on the PCB or substrate . It may also be reduced by selecting PCB materials with low dielectric constants and low dissipation factors (loss tangent), but these PCB materials are more expensive than typical materials. Thus, even if there is a way to reduce this error to an output that lowers the bus speed or otherwise degrades the operating bus parameters, these methods have drawbacks.
이 단락은 백-엔드 인터페이스에서 이들 신호 무결성 문제를 해결하고 또한 제어기와 메모리 장치 사이에서 프로세스 변동도 감안하는 동적 최적화 기술을 제시한다. 프로세스 변동 외에, 메모리 시스템이 작동하는 전압 설정 및 온도는 변할 수 있다. 정적 해결책은 프로세스, 전압, 및 온도에 변화를 감안하지 않으며 이에 따라 최적의 접근법이 아닐 수 있다.This section presents a dynamic optimization technique that solves these signal integrity problems in the back-end interface and also takes into account process variations between the controller and memory devices. Besides process variation, the voltage setting and temperature at which the memory system operates may vary. Static solutions do not take into account changes in process, voltage, and temperature, and therefore may not be the optimal approach.
이 단락은 복수 메모리 데이터 버스를 갖는 것을 포함해서, 메모리 시스템의 백-엔드 성능을 동적으로 최적화하기 위해 의사 루프-백(의사 루프-백) 방식을 사용한다. 이것은 앞에 단락에 기술된 것과 유사한 종류의 메커니즘을 사용하여 행해지거나 미리 결정된 데이터 패턴을 사용함으로써 행해질 수 있다. 예시적 실시예는 의사-랜덤 비트 패턴(PRBS)을 사용할 것이다. 데이터 버스 설정을 동적으로 최적화하는 것은 제어기와 메모리 장치 사이에서 데이터 송신의 신뢰성을 최대화하는데 도움을 줄 수 있다. 이것은 메모리 시스템이 메모리 장치 상에 야기된 오류로부터 송신 오류를 구별하는 것을 할 수 있게 한다. 이들 측면은 고속 백-엔드 메모리 인터페이스 및 복수 메모리 데이터 버스가 구비된 제품에 특히 이점이 있을 수 있다.This paragraph uses a pseudo loop-back (pseudo loop-back) scheme to dynamically optimize the back-end performance of a memory system, including having multiple memory data buses. This can be done by using a mechanism of a kind similar to that described in the preceding paragraph or by using a predetermined data pattern. The illustrative embodiment will use a pseudo-random bit pattern (PRBS). Dynamically optimizing the data bus settings can help maximize the reliability of data transmission between the controller and the memory device. This allows the memory system to distinguish transmission errors from errors caused on memory devices. These aspects may be particularly advantageous for products equipped with high-speed back-end memory interfaces and multiple memory data buses.
PCB 또는 패키지 기판 상에 도통 트레이스는 제한된 대역폭을 갖고, 이것은 기호간 간섭(ISI)을 야기한다. ISI의 영향은 에지 레이트(상승시간 및 하강시간), 데이터 레이트, 데이터 패턴에 따른다. 디지털 통신에서, 의사-랜덤 비트 패턴(PRBS) 패턴이 주파수 성분이 풍부하기 때문에 데이터 링크의 최악의 경우의 ISI 영향을 활용하기 위해 종종 이러한 패턴이 사용된다. PRBS 패턴은, 랜덤 시퀀스와 유사한 특성을 가지며 전기적 데이터 링크에서 송신되는 데이터의 지터 및 아이 마스크(eye mask)를 측정하기 위해 사용되는 반복되는 패턴이다. PRBS은 전형적으로 2X - 1 PRBS 또는 PRBS-X로 표기되는데, 멱(power)(X)은 반복 패턴을 생성하기 위해 사용되는 시프트 레지스터 길이를 나타낸다. 각 2X - 1 PRBS는 비트(1를 제외하고)의 X개의 모든 가능한 조합을 내포한다. 신호 링크에 가장 큰 스트레스를 행사하고 랜덤 데이터의 더 나은 표현을 제공하기 때문에 실용적인 가장 긴 PRBS 패턴을 사용하는 것이 바람직하다.The conduction trace on the PCB or package substrate has a limited bandwidth, which causes intersymbol interference (ISI). The influence of ISI depends on the edge rate (rise time and fall time), data rate, and data pattern. In digital communications, this pattern is often used to exploit the worst-case ISI effects of a data link since the pseudo-random bit pattern (PRBS) pattern is rich in frequency components. The PRBS pattern is similar to a random sequence and is a repetitive pattern used to measure the jitter and eye mask of data transmitted on an electrical data link. PRBS is typically denoted by 2 X - 1 PRBS or PRBS - X, where power (X) represents the length of the shift register used to generate the repeating pattern. Each 2 X - 1 PRBS contains all possible X combinations of bits (except 1). It is desirable to use the longest practical PRBS pattern because it places the greatest stress on the signal link and provides a better representation of the random data.
예시적 실시예가 의사-랜덤 비트 패턴을 사용할지라도, 사용되었던 데이터 세트의 패턴이 루프-백 프로세스의 끝에서 되돌아 오는 데이터와 비교될 수 있도록 시스템이 이 패턴을 아는 한, 그외 다른 패턴이 사용될 수 있다. 예시적 실시예는 PRBS 패턴의 랜덤-유사 특징이 신호 링크의 ISI 영향을 최대화할 수 있기 때문에 이 패턴을 사용한다. PRBS 패턴 외에도, 이 발명에서 다른 유형의 데이터 패턴이 이용될 수 있고, 각 개개의 패턴은 다른 결과를 발생할 수 있다.Although the exemplary embodiment uses a pseudo-random bit pattern, other patterns may be used as long as the system knows this pattern so that the pattern of the data set that was used can be compared to the data coming back at the end of the loop-back process . The exemplary embodiment uses this pattern because the random-like feature of the PRBS pattern can maximize the ISI impact of the signal link. In addition to the PRBS pattern, other types of data patterns may be used in the present invention, and each individual pattern may produce a different result.
PRBS 패턴은 병렬 백-엔드 인터페이스 내 신호 링크 각각에 적용될 수 있다. 이상적으로, 메모리 시스템에서 실제적으로는 실현 가능하지 않지만, 패턴이 무한히 반복하게 될지라도, 이것은 패턴이 짧은 패턴을 사용함으로써 충분한 회수로 반복될 수 있다면 주된 결점이 아닐 것이다. 예를 들면, NAND 플래시 메모리의 페이지 크기가 16kB이라면, 127b의 패턴 길이를 갖는 PRBS-7 패턴은 8-비트 데이터 버스의 각 신호 링크에서 완전히 129회 반복될 수 있다. 나머지 비트(16384b - 127b x 129 = 1b)은 PRBS-7의 불완전한 카피를 구성한다. 종국에, 이 불완전한 PRBS 패턴은 대부분의 송신 링크 영향이 129 사이클의 완전한 PRBS 패턴에 의해 보완되기 때문에 심각성을 야기하지 않을 것이다.The PRBS pattern may be applied to each of the signal links in the parallel back-end interface. Ideally, although this is not practically feasible in a memory system, even if the pattern is infinitely repeated, it will not be a major drawback if the pattern can be repeated in sufficient number of times by using short patterns. For example, if the page size of the NAND flash memory is 16 kB, the PRBS-7 pattern with a pattern length of 127b may be repeated 129 times completely on each signal link of the 8-bit data bus. The remaining bits (16384b - 127b x 129 = 1b) constitute an incomplete copy of PRBS-7. Eventually, this incomplete PRBS pattern will not cause seriousness, since most transmit link effects are compensated by a complete PRBS pattern of 129 cycles.
도 15는 백-엔드 인터페이스에서 의사 루프-백 방법의 작동을 예시하기 위해 사용될 수 있다. 도 15에서, 좌측은 흐름이며, 후측은 대응하는 제어기-메모리 상호작용을 개략적으로 도시한다. 701에서, 제어기는 이의 데이터 스크램블링 및 오류 정정 코딩(ECC) 능력을 턴 오프 하는데, 우측에서, 이것은 이들 요소를 X하여 표현되었다. 결국, 제어기로부터 그리고 이 내로 전송되는 모든 데이터는 이들이 어떠한 스크램블링 또는 정정도 없는 원래의 포맷으로 되어 있다. 703에서, 제어기는 수신될 데이터를 메모리 셀에 전송함이 없이 자신의 데이터 래치 레지스터에 저장하여 유지할 것을 알리는 명령을 메모리 장치에 보낸다. 즉, 메모리 셀에 이 데이터 세트를 프로그램하는 것은 없다. 705에서, 제어기는 데이터 버스 구조 내 신호 링크 각각에 알려진 데이터 패턴(여기에서는 독립적인 PRBS-7 패턴)을 메모리 장치에 보낸다. 메모리 장치는 데이터 래치 레지스터가 다 채워지게 될 때까지 이에 데이터를 유지한다.15 may be used to illustrate the operation of the pseudo loop-back method in the back-end interface. In Fig. 15, the left side is the flow, and the rear side schematically shows the corresponding controller-memory interaction. At 701, the controller turns off its data scrambling and error correction coding (ECC) capabilities, to the right, this is represented by X of these elements. As a result, all data transmitted from and to the controller are in their original format, with no scrambling or correction. At 703, the controller sends a command to the memory device informing it to store and retain the data to be received in its data latch register without sending it to the memory cell. That is, this data set is not programmed in the memory cell. At 705, the controller sends a known data pattern (here an independent PRBS-7 pattern) to each of the signal links in the data bus structure to the memory device. The memory device retains the data until the data latch register is full.
707에서, 제어기는 제어기가 중지할 것을 명령할 때까지 계속하여 이의 데이터 래치 레지스터에 저장된 데이터를 돌려보낼 것을 알리는 명령을 메모리 장치에 보낸다. 즉, 데이터 래치 레지스터가 각 링크 상에 모든 16kb을 실은 후에, 같은 데이터를 다시 돌려보내는 것을 시작할 것이다. 이에 따라, PRBS-7 패턴은 데이터 버스의 각 신호 링크 상에서 반복한다. PRBS 패턴 전송의 연속된 작동을 사용하는 예시적 실시예에 있어서의 이유는 신호 링크에 의해 야기된 비트 오류가 확률적 이벤트이기 때문이다. 링크를 거쳐 전송되는 데이터량이 클수록, 내재적 링크 성능의 통계적 측정으로서 송신 비트 오류 레이트(BER)를 더 정확히 나타낸다. 709에서, 제어기는 반복하는 PRBS-7 패턴(또는 다른 사용된 데이터 패턴)을 데이터 버스의 각 신호 링크로 수신한다.At 707, the controller sends a command to the memory device informing it to continue to return the data stored in its data latch register until the controller commands to stop. That is, after the data latch register loads all 16kb on each link, it will start to send back the same data again. Thus, the PRBS-7 pattern repeats on each signal link of the data bus. The reason for the exemplary embodiment using continuous operation of the PRBS pattern transmission is that the bit error caused by the signal link is a probabilistic event. The greater the amount of data transmitted over the link, the more accurately the transmitted bit error rate (BER) as a statistical measure of the implicit link performance. At 709, the controller receives a repeating PRBS-7 pattern (or other used data pattern) on each signal link of the data bus.
711에서, 제어기는 수신된 데이터를 보내진 데이터 패턴(여기에서는 표준 PRBS-7 패턴)와 비교하고 임의의 오류를 송신 BER로서 보고한다. 이어서, 제어기는 PRBS-7 패턴(713)을 보내는 것을 중지하고 의사 루프-백 모드(715)에서 나오라는 명령을 메모리 장치에 보낸다.At 711, the controller compares the received data with the transmitted data pattern (here a standard PRBS-7 pattern) and reports any errors as a transmitted BER. The controller then stops sending the PRBS-7 pattern 713 and sends an instruction to the memory device to exit the pseudo loop-back mode 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)가 복수의 신호 라인을 갖는 병렬 버스 인터페이스일지라도, 이것은 단지 하나의 특별한 예이고, 직렬 데이터 배열과 같은 그외 다른 버스 구조가 송신 채널을 위해 사용될 수 있다.Figure 16 corresponds to block 705 of Figure 15 where the controller sends the data pattern to the memory device, and Figure 17 corresponds to block 709. [ One particular example of the
메모리 시스템의 성능은 데이터 버스 전압에 직접 관계된 파워 소비에 관련하여 데이터 전송 속도(버스 작동 주파수)에 의해 특징이 지워진다. 데이터 버스의 전압 진폭(데이터 버스를 구동하는 장치의 I/O에 의해 결정되는) 및 데이터 전송 속도를 가변시킴으로써, 전송 속도가 x-축을 따라 작성되고, 데이터 버스 전압이 y-축을 따라 작성되고, 송신 BER이 z-축을 따라 작성되는, 슈모(shmoo) 작도로서 3-차원 표현이 생성될 수 있다. 여기에서, 데이터 전송 속도는 데이터가 제어기 회로에서 메모리 회로로 전송될 때 도 15의 705에서처럼 기록 작동 동안 인가되는 것을 지칭하거나, 데이터가 메모리에서 제어기로 전송될 땐 709에서처럼 판독 작동을 지칭할 수 있다. 이러한 슈모 작도로 표현된 데이터는 최악의 경우의, 전형적인, 그리고 최상의 경우의 시나리오를 포괄하기 위해 다양한 출력 구동 임피던스(구동 강도) 및 온도에서 측정될 수 있다. 결국, 주어진 양의 허용 가능한 송신 오류에 대해서, 작동의 최적점은 데이터 버스 전압, 출력 구동 임피던스, 슬루 레이트(slew rate), 라인 커패시턴스, 전송 속도, 온도, 및 파워 소비와 같은 파라미터의 주어진 조합에서 결정될 수 있다. 슈모 작도의 예가 도 18에 도시되었다.The performance of the memory system is characterized by the data transfer rate (bus operating frequency) in relation to the power consumption directly related to the data bus voltage. By varying the voltage amplitude of the data bus (as determined by the I / O of the device driving the data bus) and the data transfer rate, a transfer rate is created along the x-axis, a data bus voltage is created along the y- A three-dimensional representation can be generated as a shmoo construction in which the transmitted BER is created along the z-axis. Here, the data transfer rate refers to being applied during the write operation as in 705 of FIG. 15 when data is transferred from the controller circuit to the memory circuit, or it may refer to the read operation as in 709 when the data is transferred from the memory to the controller . The data represented by these Schamo schemes can be measured at various output drive impedances (drive strength) and temperatures to encompass worst-case, typical, and best-case scenarios. As a result, for a given amount of allowable transmission errors, the optimum point of operation may be a given combination of parameters such as data bus voltage, output drive impedance, slew rate, line capacitance, transmission rate, temperature, Can be determined. An example of the Schmo plot is shown in FIG.
도 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에 기초하여 다른 값에 재할당된다면, 버스 시스템을 위한 작동 파라미터는 이 데이터에 기초하여 제어기에 의해 조절될 수 있다.Figure 18 is an example of a Schmo drawing illustrating the transmit BER versus data bus voltage and data transfer rate at fixed output drive impedance, slew rate, line capacitance, and temperature for a particular example of a memory system. The data bus voltage is V DD on the vertical axis and the transfer rate is horizontal. The amount of transmitted BER is indicated by a color in the graph along with the key on the right side of the drawing. In this black and white representation, the expression of very low and very high error amounts appears to be the same, but in the main drawing the low error region is to the left of the bright color segment and the high error region to the right. Based on this kind of data, for a given amount of transmitted data, a combination of operating parameters may be selected, as will usually be the case, as is usual. For example, if the required amount of allowable BER is 10 < -5 >, and if the maximum rate is primarily important, V DD will be taken to be about 3.1 to 3.2 V and will allow a transmission rate of about 170 to 180 Mb / s . If power consumption is a more important concern, a lower V DD value may be, for example, 2.8 V, thus allowing a transmission rate of about 150 Mb / s for the same transmit BER. If the BER assigned to the transmission channel is reassigned to another value based on, for example, how many cycles the memory has been cycled or based on the ECC indicating that the combined contribution to the BER is approaching the maximum capacity of the system, Can be adjusted by the controller based on this data.
결국, 여러 출력 구동 임피던스, 슬루 레이트, 라인 커패시턴스, 온도, 등에서 슈모 작도에 나타낸 데이터를 캡처함으로써 시스템을 교정한 후에, 메모리 시스템은 여러 경우에 따라 작동할 수 있다. 예를 들면, 요구되는 송신 BER이 주어진다면, 메모리 시스템은 최적 데이터 버스 전압, 데이터 전송 속도, 출력 구동 임피던스, 및 슬루 레이트를 참조하여 선택한다. (교정 프로세스로부터 이 데이터는 비휘발성 메모리에 또는 제어기 회로 내 메모리 공간(RAM)에 유지될 수 있다). 예를 들면, 이것은 요구되는 송신 BER이 되게 하는 가장 낮은 데이터 버스 전압, 가장 큰 데이터 전송 속도, 및 가장 낮은 출력 구동 임피던스를 선택할 수 있다. 또 다른 예에서, 데이터 버스 전압, 데이터 전송 속도, 출력 구동 임피던스, 슬루 레이트, 라인 커패시턴스, 및 온도의 특별한 조합이 주어진다면, 메모리 시스템은 어떤 송신 BER을 예상할 수 있을지 안다. 대안적으로, 메모리 시스템은 모든 요인 - 데이터 버스 전압, 데이터 전송 속도, 출력 구동 강도, 및 송신 BER인 모든 요인이 균형을 이루는 작동 조건을 선택할 수도 있다.Eventually, after calibrating the system by capturing the data represented by the Schmo plot at various output drive impedances, slew rate, line capacitance, temperature, etc., the memory system may operate in several instances. For example, given the required transmit BER, the memory system selects with reference to the optimum data bus voltage, data transfer rate, output drive impedance, and slew rate. (This data from the calibration process can be held in nonvolatile memory or in memory space (RAM) in the controller circuitry). For example, it may select the lowest data bus voltage, the highest data transfer rate, and the lowest output drive impedance to be the desired transmit BER. In another example, if a particular combination of data bus voltage, data transfer rate, output drive impedance, slew rate, line capacitance, and temperature is given, the memory system knows what transmission BER can be expected. Alternatively, the memory system may select operating conditions that balance all factors-data bus voltage, data transfer rate, output drive strength, and transmit BER.
제어기 및 메모리 장치 내 I/O 버퍼의 설계는 서로 다를 수 있기 때문에, 메모리 시스템의 최적 판독 및 기록 성능은 개별적으로 결정될 수 있다. 상이한 메모리 시스템 설계로부터 비롯되는 차이 외에도, 작동 조건에서 차이에 의한 것뿐만 아니라, 프로세스 변동에 기인하여, 동일 장치의 개별적 예에 대해 차이가 있을 것이다. 장치 노화, 작동 조건에 변화 등을 감안하기 위해, 교정 프로세스는 반복될 수도 있다. 예를 들면, 초기 교정은 장치가 테스트 시간에 출하되기 전에 성능될 수도 있을 것이며, 이어서 제어기는 주기적으로 또는 장치 사이클링, 오류 결과, 작동 조건에 현저한 변화 등과 같은 이벤트에 응하여 시스템을 재교정할 수도 있을 것이다. 이에 따라, 송신 채널에 할당된 총 오류의 부분을 변경하기 위해서, 주어진 할당에 대한 대응하는 작동 파라미터가 동적으로 변경될 수 있다.Since the design of the I / O buffers in the controller and the memory device may be different, the optimum reading and writing performance of the memory system may be determined individually. In addition to the differences resulting from different memory system designs, there will be differences for individual examples of the same device due to process variations as well as due to differences in operating conditions. In order to account for device aging, changes in operating conditions, etc., the calibration process may be repeated. For example, an initial calibration may be performed before the device is shipped at test time, and then the controller may periodically or recalibrate the system in response to events such as device cycling, error results, significant changes in operating conditions, will be. Thus, in order to change the fraction of total errors assigned to the transmission channel, the corresponding operating parameters for a given assignment can be changed dynamically.
위에 언급된 바와 같이, 성능은 판독 및 기록 프로세스 둘 모두의 동안에서 최적화될 수 있다. 도 15로 다시 가면, 메모리 판독 동안 성능 최적화를 위해서, 705에서 시스템은 데이터 패턴에 대한 전송의 무결성을 최대화하기 위해서 메모리 장치의 데이터 래치 레지스터에 기록되는 데이터 패턴의 전송 속도를 늦춘다. 예를 들면, 10MHz 전송 속도에서, 16kb 데이터 래치 레지스터를 다 채우는데 1.6ms이 걸릴 것이다. 709 및 711에서, 시스템은 메모리 장치의 I/O가 구동기이고 제어기가 수신기인 경우 판독 작동 동안 생성하는 송신 BER을 측정한다. 이어서, 슈모 작도 데이터는 메모리 장치의 I/O 전압와 판독 주파수 사이에서 관계를 보여준다.As mentioned above, performance can be optimized during both the read and write processes. Returning to FIG. 15, for performance optimization during memory reads, at 705, the system slows down the transmission rate of the data pattern written to the data latch register of the memory device to maximize the integrity of the transmission to the data pattern. For example, at 10MHz transfer rate, it would take 1.6ms to fill the 16kb data latch register. At 709 and 711, the system measures the transmit BER that is generated during the read operation when the I / O of the memory device is the driver and the controller is the receiver. The Schmo plot data then shows the relationship between the I / O voltage and the read frequency of the memory device.
메모리 기록 동안 성능 최적화를 위해서, 705에서, 시스템은 메모리 장치의 데이터 래치 레지스터에 기록되는 데이터 패턴의 전압 및 전송 속도를 가변시킨다. 709에서, 시스템은 신호 링크에 의해 추가의 비트 오류를 주입하는 것을 방지하기 위해 메모리 장치에서 제어기로 데이터의 전송 속도를 늦출 것이다. 측정되는 송신 BER은 705에서 기록 작동 동안 생성하는 송신 BER이이다. 슈모 작도 데이터는 결국 제어기의 I/O 전압과 기록 주파수 사이에서 관계를 나타낼 것이다.For performance optimization during memory write, at 705, the system varies the voltage and the transfer rate of the data pattern written to the data latch register of the memory device. At 709, the system will slow down the transmission of data from the memory device to the controller to prevent injecting additional bit errors by the signaling link. The measured transmit BER is the transmit BER that is generated during the write operation at 705. The Schmo plot data will eventually represent a relationship between the I / O voltage of the controller and the write frequency.
지금까지, 본 명세서에 제시된 여러 가지 양상은 제어기 회로와 단일 메모리 회로 사이에서 단일 버스만이 있는 경우의 맥락에서 제시되었다. 그러나, 메모리 시스템은 다양한 버스 토폴로지를 갖는 복수의 장치를 포함할 수 있고, 복수의 버스가 있을 때, 이들 버스 사이에서 상호작용은 오류의 추가 원인이 되게 할 수 있다. 본 명세서에서 교시하는 것은, 백-엔드 인터페이스 내 데이터 버스 내에서 신호 링크 각각을 특정 분해능, 예를 들면, 100 ps에 스큐하는 능력을 제공할 수 있다. 이러한 스큐하는 능력은 구동기 또는 수신기 내 제어기 또는 메모리 장치에 의해 도입될 수 있다. 스큐를 데이터 버스에 도입하는 것은 시스템이 PCB 또는 패키지 기판에서 신호 트레이스의 길이 오정합을 보상할 수 있게 한다. 스큐를 도입하는 것은 백-엔드 인터페이스 내에서 근단(near-end) 및 원단(far-end) 크로스토크의 영향을 감소시켜, 결국 송신 BER을 낮출 수 있다. 메모리내 데이터 버스 크로스토크; 및 메모리간 데이터 버스 크로스토크인 두 유형의 크로스토크가 수반되는다. 이러한 크로스토크는 데이터 버스에서 지터를 야기한다. 전형적인 메모리 시스템은 동시에, 병렬 데이터 버스에서 각 개개의 신호를 샘플링하기 위해 구동기에 의해 보내진 클럭을 사용한다. 이에 따라, 데이터 버스 내 각 신호 상에 지터 증가는 송신 BER 증가를 야기할 것이다. 서로에 관해 정렬하지 않게 복수의 메모리 데이터 버스를 거쳐가는 데이터를 스큐함으로써 메모리간 데이터 버스 크로스토크가 감소될 수 있다.To date, various aspects presented herein have been presented in the context of the case where there is only a single bus between the controller circuit and a single memory circuit. However, the memory system can include multiple devices with various bus topologies, and when there are multiple buses, the interaction between these buses can cause additional errors. What is taught herein can provide the ability to skew each of the signal links within a data bus in the back-end interface to a specific resolution, e.g., 100 ps. This ability to skew may be introduced by a controller or memory device in a driver or receiver. Introducing skew to the data bus allows the system to compensate for length errors in signal traces on the PCB or package substrate. Introducing skew may reduce the effects of near-end and far-end crosstalk within the back-end interface, and ultimately lower the transmit BER. In-memory data bus crosstalk; And crosstalk between two types of data bus crosstalk. This crosstalk causes jitter in the data bus. A typical memory system simultaneously uses the clock sent by the driver to sample each individual signal on the parallel data bus. Thus, increasing jitter on each signal in the data bus will result in increased transmit BER. By skewing data going through a plurality of memory data buses without being aligned with respect to each other, cross-memory data bus crosstalk can be reduced.
도 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을 생성하는 최적의 스큐는 데이터 버스 전압, 전송 속도, 온도, 출력 구동 임피던스, 슬루 레이트, 라인 커패시턴스, 및 파워 소비의 어떤 조합이 주어진다면 결정될 수 있다.19 is a block diagram showing this crosstalk in a memory system in which the bus structure uses a plurality of memory data buses. The memory system includes a plurality of, here four, memory devices 931-1, 931-3, 931-3, 931-3, 931-3, 931-3, 931-3, 931-3, 2, 932-3, and 934-4. For each of the buses 911, they will have one or more IO lines as shown in detail as IO1 to IOX. As before, these individual buses may have a plurality of IO lines running in parallel, serial, or a combination thereof for the transmission of data. This type of multi-bus arrangement is often implemented in SSD type devices to improve performance (see, for example, U.S. Patent No. 7,376,034, U.S. Patent No. 7,765,339, or the article "A High Performance Controller for NAND Flash- NSSD) "Park et al, Samsung, Non-volatile Semiconductor Workshop, 2006, IEEE, NVSMW 2006, 21 st , vol. It is also found in the design of other memory systems. In addition to a sort of in-memory data bus crosstalk between the IO lines of a given bus, there will now be a data bus crosstalk signal between the memories on different buses. When combined with the use of the PRBS pattern and pseudo loop-back mode described above, the optimal skew that produces the minimum crosstalk, and ultimately the lowest transmit BER, is the data bus voltage, transmission rate, temperature, output drive impedance, slew rate , Line capacitance, and power consumption can be determined.
본 명세서에 제시된 여러 가지 측면은 다양한 신호 무결성 문제의 존재 하에 백-엔드 인터페이스 성능을 최적화하는 저렴한 해결책을 제공한다. "미사용된" ECC 능력을 전송 프로세스에 동적으로 할당함으로써, 성능은 기술된 바와 같이 개선될 수 있다. 위에 언급된 바와 같이, 일부 메모리 시스템은 복수-상태 메모리 장치의 특성을 활용하는 "강" ECC 유형을 사용하는데, 이 경우 송신 채널의 사용을 위해 전송되는 오류 정정 능력은 1 대 1 방식으로 전송하지 않을 수도 있다. 메모리 시스템이 데이터 오류를 보상하기 위해 ECC를 포함할지라도, 전형적으로 명령에 대한 동일한 제공이 있고 메모리 장치는 변질된 명령을 흔히 수락하지 않을 것이며 따라서 오류가 의도적으로 데이터의 송신에서 허용될 수 있을지라도 이것은 명령에 대한 경우가 아닐 것임에 유의한다. 결국, 더 높은 전송 속도가 이들 메커니즘에 의해 데이터에 대해 허용될 수 있지만, 전송 속도(또는 이외 다른 파라미터)를 위한 더 느리고, 더 안전한 설정은 제어 신호에 어떠한 오류도 일어나지 않도록 포함될 수 있다.Various aspects presented herein provide an inexpensive solution to optimize back-end interface performance in the presence of various signal integrity problems. By dynamically allocating "unused" ECC capabilities to the transfer process, performance can be improved as described. As noted above, some memory systems use a "strong" ECC type that exploits the characteristics of a multi-state memory device, in which case the error correction capability transmitted for use of the transmission channel is not transmitted in a one- . Although the memory system includes an ECC to compensate for data errors, there is typically the same provision for the instruction and the memory device will often not accept corrupted instructions so that even if the error is intentionally allowed in the transmission of data Note that this is not the case for commands. As a result, a slower, more secure setting for the transmission rate (or other parameters) may be included so that no error occurs in the control signal, although a higher transmission rate may be tolerated for the data by these mechanisms.
결론conclusion
발명의 전술한 상세한 설명은 예시 및 설명의 목적으로 제시되었다. 전부 다이거나 개시된 정밀한 형태로 발명을 한정하는 것이 아니다. 많은 수정예 및 변형이 위에 교시된 바에 비추어 가능하다. 기술된 실시예는 발명의 원리 및 이의 실제 용도를 최상으로 설명하기 위해 선택되었으며, 그럼으로써 당업자가 여러 실시예에서 그리고 고찰되는 특정한 사용에 적합한 다양한 수정예를 사용하여 발명을 최상으로 이용할 수 있게 한 것이다. 발명의 범위는 이에 첨부된 청구항에 의해 정의되게 한 것이다.The foregoing detailed description of the invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise forms disclosed. Many modifications and variations are possible in light of the above teachings. The described embodiments have been chosen to best explain the principles of the invention and its practical application so that those skilled in the art will be able to make the best use of the invention using various modifications as are suited to the particular use contemplated in the various embodiments will be. The scope of the invention is defined by the appended claims.
Claims (66)
상기 제어기 회로에 의해 상기 제 1 축적된 데이터 오류량의 0이 아닌 제 1 부분을 상기 버스 구조를 통해 상기 제어기 회로와 상기 메모리 회로 사이에서의 데이터 전송에 할당하는 단계 - 상기 제 1 축적된 데이터 오류량의 나머지는 상기 메모리 회로 상에서 데이터의 기록, 저장, 및 판독에 할당됨 - , 및
상기 제어기 회로에 의해 상기 제 1 축적된 데이터 오류량의 제 1 부분까지 허용하게 작동하도록 상기 제어기 회로와 상기 메모리 회로 사이에서 전송 특징을 설정하는 단계
를 포함하는, 비휘발성 메모리 시스템 작동 방법.CLAIMS 1. A method of operating a non-volatile memory system, the non-volatile memory system comprising: a controller circuit having a memory interface; a memory circuit having an array of non-volatile memory cells and a controller interface; And a bus structure coupled to the controller interface for transferring and commanding data therebetween, wherein the memory system is configured such that when a unit of data is transferred from the controller to be written to the memory array, Zero tolerance for a first non-zero accumulated data error amount until it is continuously read back from the memory array and received at the controller,
Assigning by the controller circuit a non-zero first portion of the first accumulated data error amount to data transmission between the controller circuit and the memory circuit via the bus structure, the first accumulated data error The remainder of the amount being allocated to the writing, storing and reading of data on the memory circuit, and
Establishing a transfer feature between the controller circuit and the memory circuit to operate to allow up to a first portion of the first accumulated data error amount by the controller circuit
≪ / RTI >
상기 제어기 회로에서 호스트로부터 데이터를 수신하는 단계와,
상기 수신된 데이터에 대해 대응하는 ECC 코드를 생성하는 단계와,
상기 수신된 데이터 및 대응하는 ECC 코드를 상기 전송 특징에 따라 상기 버스 구조 상에서 상기 제어기 회로로부터 메모리 회로에 전송하는 단계와,
이어서 상기 메모리 회로에 수신된 상기 수신된 데이터 및 대응하는 ECC 코드를 메모리 셀의 상기 어레이에 기록하는 단계를
더 포함하는, 비휘발성 메모리 시스템 작동 방법.7. The method of claim 6,
Receiving data from a host in the controller circuit;
Generating a corresponding ECC code for the received data;
Transferring the received data and a corresponding ECC code from the controller circuit to the memory circuit on the bus structure according to the transfer characteristic;
And subsequently writing the received data and the corresponding ECC code received in the memory circuit to the array of memory cells
≪ / RTI >
후속하여 상기 제어기 회로에 의해 상기 제 1 축적된 데이터 오류량의 제 2 부분을 상기 버스 구조를 통해 상기 제어기 회로와 상기 메모리 회로 사이에서의 데이터 전송에 재할당하는 단계와,
상기 제어기 회로에 의해 상기 제 1 축적된 데이터 오류량의 상기 제 2 부분까지 허용하게 작동하기 위해 상기 제어기 회로와 상기 메모리 회로 사이에서의 상기 전송 특징을 설정하는 단계
를 더 포함하는, 비휘발성 메모리 시스템 작동 방법.The method according to claim 1,
Subsequently reassigning the second portion of the first accumulated data error amount by the controller circuit to the data transmission between the controller circuit and the memory circuit via the bus structure,
Setting the transfer characteristic between the controller circuit and the memory circuit to operate to permit up to the second portion of the first accumulated data error amount by the controller circuit
≪ / RTI >
상기 전송 특징을 선택하는 단계는, 상기 대응에 기초하여 상기 제어기 회로에 의해 상기 하나 이상의 작동 파라미터에 대한 값들을 선택하는 단계를 포함하는, 비휘발성 메모리 시스템 작동 방법.The memory system of claim 1, wherein the memory system is further configured to compare the value of one or more operating parameters for the bus structure and the amount of resulting data error for transmission of data between the controller circuit and the memory circuit via the bus structure Maintain correspondence,
Wherein selecting the transfer feature comprises selecting values for the one or more operational parameters by the controller circuit based on the correspondence.
데이터의 유닛이 상기 메모리 어레이에 기록되도록 상기 제어기로부터 전송될 때부터, 상기 데이터의 유닛이 상기 메모리 어레이로부터 계속해서 다시 판독된 후 상기 제어기에서 수신될 때까지, 0이 아닌(non-zero) 총 축적된 데이터 오류량을 용인할 수 있도록 상기 비휘발성 메모리 시스템을 작동하는 단계와,
상기 제어기 회로에 의해, 상기 제어기를 상기 메모리 회로와 연결하는 버스 구조에 대한 하나 이상의 작동 파라미터들 각각에 대한 복수의 값들 각각에 대해서프로세스를 수행함으로써 송신 오류 교정(transmission error calibration)을 실행하는 단계 - 상기 프로세스는,
알려진 데이터 패턴의 데이터 세트를 상기 제어기로부터 상기 제어기 상의 송신 회로를 통해 상기 버스 구조에 전송하는 단계와,
상기 데이터 세트를 상기 버스 구조로부터 상기 메모리 회로 상의 수신 회로를 통해 수신하는 단계와,
수신된 상기 데이터 세트를 상기 메모리 회로 상의 버퍼 메모리에 저장하는 단계와,
상기 어레이에 기록되지 않고 상기 메모리 회로 상의 버퍼 메모리에 저장된 상기 데이터 세트를 상기 메모리 회로 상의 송신 회로를 통해 상기 버스 구조에 전송하는 단계와,
상기 버스 구조로부터 상기 데이터 세트를 상기 제어기 상의 수신 회로를 통해 수신하는 단계와,
수신된 상기 데이터 세트와 상기 알려진 데이터 패턴과의 비교를 수행하는 단계와,
상기 비교를 기초로 하여, 사용된 하나 이상의 작동 파라미터에 대해, 상기 버스 구조를 통하는, 상기 제어기와 상기 메모리 회로 사이의 상기 데이터 세트의 전송 프로세스에 연관된 오류량을 결정하는 단계를 포함함 - , 및
이후, 상기 제어기 회로와 상기 메모리 회로 사이에서의 데이터의 송신에서 축적된 데이터 오류의 총량의 0이 아닌 제 1 부분을 허용하도록 상기 메모리 시스템을 작동하는 단계 - 상기 제어기 회로는 상기 전송 프로세스에 연관된 상기 결정된 오류량에 기초한 상기 송신 오류 교정 프로세스에 따라 상기 작동 파라미터들의 값들을 선택함 -
를 포함하는, 비휘발성 메모리 시스템 작동 방법.A method of operating a non-volatile memory system having a memory circuit comprising an array of controller circuits and non-volatile memory cells,
Zero from the time the unit of data is transferred from the controller to be written to the memory array until the unit of data is continuously read from the memory array and then received at the controller. Operating the non-volatile memory system such that the accumulated data error amount can be tolerated;
Executing, by the controller circuit, a transmission error calibration by performing a process on each of a plurality of values for each of the one or more operating parameters for a bus structure connecting the controller with the memory circuit, The process comprises:
Transmitting a data set of known data patterns from the controller to the bus structure via a transmit circuit on the controller;
Receiving the data set from the bus structure via a receive circuit on the memory circuit;
Storing the received data set in a buffer memory on the memory circuit;
Transferring the data set stored in the buffer memory on the memory circuit to the bus structure via a transmission circuit on the memory circuit without being written to the array;
Receiving the data set from the bus structure through a receiving circuit on the controller;
Performing a comparison of the received data set and the known data pattern,
Determining an amount of error associated with the transfer process of the data set between the controller and the memory circuit over the bus structure, for at least one operating parameter used, based on the comparison; and
Thereafter, operating the memory system to allow a non-zero first portion of the total amount of accumulated data error in the transmission of data between the controller circuit and the memory circuit, Selecting values of the operating parameters in accordance with the transmission error correction process based on the determined error amount;
≪ / RTI >
이어서, 상기 제어기 회로와 상기 메모리 회로 사이에서의 데이터의 송신에서 축적된 데이터 오류의 총량의 제 2 부분을 허용하도록 상기 메모리 시스템의 메모리를 작동하는 단계를 더 포함하고,
상기 제어기 회로는 상기 전송 프로세스에 연관된 결정된 오류량에 기초하여 상기 송신 오류 교정 프로세스에 따라 상기 작동 파라미터들의 값들을 선택하고, 상기 축적된 데이터 오류의 총량의 제 2 부분은 상기 축적된 데이터 오류의 총량의 제 1 부분과는 상이한, 비휘발성 메모리 시스템 작동 방법.21. The method of claim 20,
And then operating the memory of the memory system to allow a second portion of the total amount of accumulated data errors in transmission of data between the controller circuit and the memory circuit,
Wherein the controller circuit selects values of the operating parameters in accordance with the transmission error correction process based on a determined error amount associated with the transmission process and wherein a second portion of the accumulated amount of data error is a total amount of the accumulated data error Wherein the first portion of the non-volatile memory system is different from the first portion of the non-volatile memory system.
이어서, 상기 송신 오류 교정 프로세스를 재수행하는 단계를 더 포함하는, 비휘발성 메모리 시스템 작동 방법.21. The method of claim 20,
The method of claim 1, further comprising the step of re-executing the transmission error correction process.
메모리 인터페이스와 논리 회로를 포함하는 제어기 회로와,
비휘발성 메모리 셀들의 어레이, 제어기 인터페이스, 및 논리 회로를 포함하는, 메모리 회로와,
상기 제어기 회로의 상기 메모리 인터페이스와 상기 메모리 회로의 상기 제어기 인터페이스에 연결되어 이들 사이에서 데이터와 명령을 전송하는 버스 구조와,
상기 제어기와 상기 메모리 회로의 수신측의 논리 회로에 연결되어 이들 사이에서의 데이터의 전송 동안 상기 전송의 결과로 일어나는 오류량에 관한 정보를 수신하고, 상기 메모리 인터페이스와 상기 제어기 인터페이스 중 하나 또는 모두에 연결되어 이들 사이에서의 전송의 특징을 상기 오류량에 응하여 조절하는 피드백 처리 회로(feedback processing circuit)
를 포함하고,
상기 제어기와 상기 메모리 회로 각각의 논리 회로는 해시 값 생성기(hash value generator)를 포함하고,
상기 메모리 회로와 상기 제어기 중 첫 번째 것으로부터 두 번째 것으로의 전송 프로세스에서, 상기 첫 번째 것은 첫 번째 것의 논리 회로에 의해 데이터 세트와 상기 데이터 세트로부터 생성된 제 1 해시 값을 상기 버스 구조 상에서 송신하고, 상기 두 번째 것은 상기 버스 구조로부터 상기 데이터 세트와 상기 제 1 해시 값을 수신하고 상기 수신된 데이터 세트로부터 두 번째 것의 논리 회로에 의해 상기 데이터 세트로부터 제 2 해시 값을 생성하며,
상기 메모리 회로와 상기 제어기 중 두 번째 것의 논리 회로는 상기 제 1 해시 값과 상기 제 2 해시 값을 수신하여 수신된 상기 제 1 해시 값과 상기 제 2 해시 값의 비교를 수행하기 위해 연결된 비교 회로를 더 포함하고, 상기 오류량은 상기 비교의 결과를 기초로 하는, 비휘발성 메모리 시스템.In a non-volatile memory system,
A controller circuit including a memory interface and a logic circuit,
A memory circuit comprising an array of non-volatile memory cells, a controller interface, and a logic circuit,
A bus structure coupled to the memory interface of the controller circuit and the controller interface of the memory circuit to transfer data and instructions therebetween,
A controller coupled to the logic circuit on the receiving side of the controller and the memory circuit to receive information on the amount of error that occurs as a result of the transmission during transmission of data therebetween, A feedback processing circuit connected to adjust the characteristics of the transmission therebetween in response to the error amount,
Lt; / RTI >
Wherein the logic of each of the controller and the memory circuit comprises a hash value generator,
In the transfer process from the first to the second of the memory circuit and the controller, the first one transmits on the bus structure a first hash value generated from the data set and the data set by the logic circuit of the first one The second receiving the data set and the first hash value from the bus structure and generating a second hash value from the data set by a second logic circuit from the received data set,
Wherein the logic circuit of the memory circuit and the second one of the controllers receives the first hash value and the second hash value and outputs a comparison circuit coupled to perform a comparison of the received first hash value with the second hash value Wherein the error amount is based on a result of the comparison.
상기 제어기 회로와 상기 메모리 회로 중 첫 번째 것 상의 논리 회로에서 데이터 세트로부터 제 1 해시 값을 생성하는 단계와,
상기 데이터 세트와 상기 제 1 해시 값을 상기 제어기 회로와 상기 메모리 회로 중 첫 번째 것 상의 인터페이스를 통해 버스 구조에 송신하는 단계와,
상기 데이터 세트와 상기 제 1 해시 값을 상기 제어기 회로와 상기 메모리 회로 중 두 번째 것 상의 인터페이스를 통해 버스 구조로부터 수신하는 단계와,
수신된 데이터 세트로부터 제 2 해시 값을 상기 제어기 회로와 상기 메모리 회로 중 두 번째 것 상의 논리 회로에서 생성하는 단계와,
수신된 상기 제 1 해시 값과 상기 제 2 해시 값을 상기 제어기 회로와 상기 메모리 회로 중 두 번째 것 상에서 비교하는 단계와,
상기 제어기 회로와 상기 메모리 회로 중 두 번째 것 상의 논리 회로에 의해, 수신된 상기 제 1 해시 값과 상기 제 2 해시 값의 비교를 기초로 하여, 상기 비휘발성 메모리 시스템 상의 피드백 처리 회로에 의해, 상기 제어기 회로와 상기 메모리 회로 사이에서의 데이터 전송의 특징을 변경할지를 결정하는 단계
를 포함하는, 비휘발성 메모리 시스템 작동 방법.A method of operating a non-volatile memory system comprising a controller circuit and a non-volatile memory circuit,
Generating a first hash value from the data set in the logic circuitry on the first of the controller circuitry and the memory circuitry,
Transmitting the data set and the first hash value to a bus structure via an interface on the controller circuit and on a first one of the memory circuits;
Receiving the data set and the first hash value from a bus structure through an interface on the second one of the controller circuit and the memory circuit;
Generating a second hash value from the received data set in the logic circuit on the second one of the controller circuit and the memory circuit;
Comparing the received first hash value and the second hash value on a second one of the controller circuit and the memory circuit;
By a feedback circuit on the non-volatile memory system, based on a comparison of the first hash value and the second hash value received by the logic circuit on the second one of the controller circuit and the memory circuit, Determining whether to change characteristics of data transmission between the controller circuit and the memory circuit
≪ / RTI >
상기 변경하는 단계는, 상기 제어기 회로로부터 상기 메모리 회로로의 전송들 및 상기 메모리 회로로부터 상기 제어기 회로로의 전송들에 관하여 대칭으로 수행되는, 비휘발성 메모리 시스템 작동 방법.45. The method of claim 44, further comprising: in response to the determination, altering characteristics of data transmission between the controller circuit and the memory circuit,
Wherein the modifying is performed symmetrically with respect to transmissions from the controller circuit to the memory circuit and transmissions from the memory circuit to the controller circuit.
상기 변경하는 단계는, 상기 제어기 회로로부터 상기 메모리 회로로의 전송들 및 상기 메모리 회로로부터 상기 제어기 회로로의 전송들에 관하여 비대칭으로 수행되는, 비휘발성 메모리 시스템 작동 방법.45. The method of claim 44, further comprising: in response to the determination, altering characteristics of data transmission between the controller circuit and the memory circuit,
Wherein the modifying is performed asymmetrically with respect to transmissions from the controller circuit to the memory circuit and transmissions from the memory circuit to the controller circuit.
상기 제어기 상의 버퍼 메모리로부터 한 세트의 데이터를 상기 제어기 상의 송신 회로를 통하여, 상기 제어기를 상기 메모리 회로에 연결하는 버스 구조에 전송하는 단계와,
상기 버스 구조로부터 상기 데이터 세트를 상기 메모리 회로 상의 수신 회로를 통해 수신하는 단계와,
수신된 상기 데이터 세트를 상기 메모리 회로 상의 버퍼 메모리에 저장하는 단계와,
상기 메모리 회로 상의 버퍼 메모리에 저장된 상기 데이터 세트를, 상기 어레이에 기록하지 않고, 상기 메모리 회로 상의 송신 회로를 통해 상기 버스 구조에 전송하는 단계와,
상기 버스 구조로부터 상기 데이터 세트를 상기 제어기 상의 수신 회로를 통해 수신하는 단계와,
이어서, 수신된 상기 데이터 세트를 상기 제어기 상의 버퍼 메모리에 저장하는 단계와,
이어서, 상기 메모리 시스템에 의해, 수신되어 상기 제어기 상의 상기 버퍼 메모리에 저장된 상기 데이터 세트의 오류량에 기초하여 상기 제어기 회로와 상기 메모리 회로 사이에서의 데이터 전송의 특징을 조절하는 단계
를 포함하는, 비휘발성 메모리 시스템 작동 방법.A method of operating a non-volatile memory system having a memory circuit comprising an array of controller circuits and non-volatile memory cells,
Sending a set of data from a buffer memory on the controller to a bus structure connecting the controller to the memory circuit via a transmission circuit on the controller,
Receiving the data set from the bus structure through a receive circuit on the memory circuit;
Storing the received data set in a buffer memory on the memory circuit;
Transmitting the data set stored in a buffer memory on the memory circuit to the bus structure via a transmission circuit on the memory circuit without writing the data set into the array;
Receiving the data set from the bus structure through a receiving circuit on the controller;
Storing the received data set in a buffer memory on the controller,
Adjusting the characteristics of the data transmission between the controller circuit and the memory circuit based on an error amount of the data set received and stored in the buffer memory on the controller by the memory system
≪ / RTI >
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/835,292 US8464135B2 (en) | 2010-07-13 | 2010-07-13 | Adaptive flash interface |
US12/835,292 | 2010-07-13 | ||
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 KR20130139848A (en) | 2013-12-23 |
KR101719395B1 true KR101719395B1 (en) | 2017-03-23 |
Family
ID=45469774
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137002913A KR101719395B1 (en) | 2010-07-13 | 2011-07-12 | Dynamic optimization of back-end memory system interface |
Country Status (4)
Country | Link |
---|---|
KR (1) | KR101719395B1 (en) |
CN (1) | CN107093464A (en) |
TW (1) | TWI482169B (en) |
WO (1) | WO2012009318A1 (en) |
Families Citing this family (14)
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 (en) * | 2013-10-31 | 2015-09-01 | Innostor Technology Corp | MLC memory write method in multiple environments |
TWI524179B (en) | 2014-04-22 | 2016-03-01 | 新唐科技股份有限公司 | Storage unit controller and control method thereof, and storage device |
US9696920B2 (en) * | 2014-06-02 | 2017-07-04 | Micron Technology, Inc. | Systems and methods for improving efficiencies of a memory system |
TWI727960B (en) * | 2015-07-21 | 2021-05-21 | 美商愛德斯托科技公司 | Memory device having programmable impedance elements with a common conductor formed below bit lines |
US10261876B2 (en) | 2016-11-08 | 2019-04-16 | Micron Technology, Inc. | Memory management |
US10430085B2 (en) | 2016-11-08 | 2019-10-01 | Micron Technology, Inc. | Memory operations on data |
CN117215824A (en) * | 2017-09-28 | 2023-12-12 | 北京忆芯科技有限公司 | Read data error handling based on machine learning |
US11119700B2 (en) | 2019-03-11 | 2021-09-14 | Micron Technology, Inc. | Receive-side crosstalk cancelation |
TWI737262B (en) * | 2020-04-16 | 2021-08-21 | 晶豪科技股份有限公司 | Method of controlling verification operations for error correction of non-volatile memory device, and non-volatile memory device |
US11217285B1 (en) | 2020-08-05 | 2022-01-04 | Apple Inc. | Memory subsystem calibration using substitute results |
KR20220019944A (en) | 2020-08-11 | 2022-02-18 | 삼성전자주식회사 | Storage devices and methods of operating storage devices |
JP7383831B2 (en) * | 2020-09-23 | 2023-11-20 | キオクシア株式会社 | Semiconductor storage devices and memory systems |
Citations (4)
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)
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 |
US5313421A (en) | 1992-01-14 | 1994-05-17 | Sundisk Corporation | EEPROM with split gate source side injection |
US6222762B1 (en) | 1992-01-14 | 2001-04-24 | Sandisk Corporation | Multi-state memory |
US5315541A (en) | 1992-07-24 | 1994-05-24 | Sundisk Corporation | Segmented column memory array |
KR0169267B1 (en) | 1993-09-21 | 1999-02-01 | 사토 후미오 | Nonvolatile semiconductor memory device |
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 |
US7310347B2 (en) | 2004-03-14 | 2007-12-18 | Sandisk, Il Ltd. | States encoding in multi-bit flash cells |
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 |
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 |
US7934049B2 (en) | 2005-09-14 | 2011-04-26 | Sandisk Corporation | Methods used in a 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 |
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 |
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 |
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 (en) * | 2007-10-08 | 2010-06-02 | 福州瑞芯微电子有限公司 | NAND FLASH controller and data interactive method with NAND FLASH chip |
US8201069B2 (en) * | 2008-07-01 | 2012-06-12 | International Business Machines Corporation | Cyclical redundancy code for use in a high-speed serial link |
-
2011
- 2011-07-12 KR KR1020137002913A patent/KR101719395B1/en active IP Right Grant
- 2011-07-12 WO PCT/US2011/043648 patent/WO2012009318A1/en active Application Filing
- 2011-07-12 CN CN201610951896.0A patent/CN107093464A/en active Pending
- 2011-07-13 TW TW100124825A patent/TWI482169B/en not_active IP Right Cessation
Patent Citations (4)
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 |
Also Published As
Publication number | Publication date |
---|---|
CN103098029A (en) | 2013-05-08 |
TW201225100A (en) | 2012-06-16 |
WO2012009318A1 (en) | 2012-01-19 |
TWI482169B (en) | 2015-04-21 |
CN107093464A (en) | 2017-08-25 |
KR20130139848A (en) | 2013-12-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101719395B1 (en) | Dynamic optimization of back-end memory system interface | |
US9069688B2 (en) | Dynamic optimization of back-end memory system interface | |
US9384128B2 (en) | Multi-level redundancy code for non-volatile memory controller | |
US8464135B2 (en) | Adaptive flash interface | |
US10090044B2 (en) | System and method for burst programming directly to MLC memory | |
US10102920B2 (en) | Memory system with a weighted read retry table | |
US9792998B1 (en) | System and method for erase detection before programming of a storage device | |
KR101312146B1 (en) | Programming management data for nand memories | |
US7477547B2 (en) | Flash memory refresh techniques triggered by controlled scrub data reads | |
US7573773B2 (en) | Flash memory with data refresh triggered by controlled scrub data reads | |
US20190043578A1 (en) | Impedance tuning between packaging and dies | |
CN103827971A (en) | Non-volatile memory and method with accelerated post-write read using combined verification of multiple pages | |
EP2135251B1 (en) | Flash memory refresh techniques triggered by controlled scrub data reads | |
US10803954B2 (en) | Memory system | |
US11715516B2 (en) | Nonvolatile memory device including a fast read page and a storage device including the same | |
CN112542201B (en) | Memory device and method of operating the same | |
US9312013B1 (en) | Configuration method of erase operation, memory controlling circuit unit and memory storage device | |
US10956064B2 (en) | Adjusting code rates to mitigate cross-temperature effects in a non-volatile memory (NVM) | |
CN112562772B (en) | Adaptive low density parity check hard decoder | |
US20210240358A1 (en) | Storage System and Method for Boundary Wordline Data Retention Handling | |
US11263102B2 (en) | Memory system and operating method thereof | |
CN103098029B (en) | The dynamic optimization of background memory system interface | |
CN118613872A (en) | Read offset compensation in read operations of memory devices |
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 |