KR101194965B1 - 플래시 메모리 시스템 제어 방식 - Google Patents
플래시 메모리 시스템 제어 방식 Download PDFInfo
- Publication number
- KR101194965B1 KR101194965B1 KR1020087026519A KR20087026519A KR101194965B1 KR 101194965 B1 KR101194965 B1 KR 101194965B1 KR 1020087026519 A KR1020087026519 A KR 1020087026519A KR 20087026519 A KR20087026519 A KR 20087026519A KR 101194965 B1 KR101194965 B1 KR 101194965B1
- Authority
- KR
- South Korea
- Prior art keywords
- flash memory
- programming
- memory device
- pages
- data
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1015—Read-write modes for single port memories, i.e. having either a random port or a serial port
- G11C7/1042—Read-write modes for single port memories, i.e. having either a random port or a serial port using interleaving techniques, i.e. read-write of one part of the memory while preparing another part
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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
- 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/32—Timing circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1015—Read-write modes for single port memories, i.e. having either a random port or a serial port
- G11C7/1018—Serial bit line access mode, e.g. using bit line address shift registers, bit line address counters, bit line burst counters
- G11C7/1021—Page serial bit line access mode, i.e. using an enabled row address stroke pulse with its associated word line address and a sequence of enabled column address stroke pulses each with its associated bit line address
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2216/00—Indexing scheme relating to G11C16/00 and subgroups, for features not directly covered by these groups
- G11C2216/12—Reading and writing aspects of erasable programmable read-only memories
- G11C2216/22—Nonvolatile memory in which reading can be carried out from one memory bank or array whilst a word or sector in another bank or array is being erased or programmed simultaneously
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2216/00—Indexing scheme relating to G11C16/00 and subgroups, for features not directly covered by these groups
- G11C2216/12—Reading and writing aspects of erasable programmable read-only memories
- G11C2216/24—Nonvolatile memory in which programming can be carried out in one memory bank or array whilst a word or sector in another bank or array is being erased simultaneously
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
데이터의 고속 프로그래밍을 얻기 위해 직렬로 접속된 플래시 메모리 장치를 갖는 플래시 메모리 시스템 구조가 개시된다. 데이터의 고속 프로그래밍은 시스템의 메모리 장치들 중에서 프로그래밍되는 데이터의 페이지를 인터리브함으로써 달성되므로, 다른 페이지의 데이터가 다른 메모리 장치에 저장된다. 메모리 컨트롤러는 각 메모리 장치에 대해 프로그램 커맨드를 발행한다. 각 메모리 장치가 프로그램 커맨드를 수신하면서, 프로그래밍 동작을 시작하거나 커맨드를 다음의 메모리 장치에 전달한다. 그러므로, 플래시 시스템의 메모리 장치들은 데이터의 페이지들을 교대로 프로그래밍함으로서, 플래시 메모리 시스템으로 데이터의 각 페이지를 프로그래밍하는데 있어서 지연을 최소화한다. 메모리 컨트롤러는 각 메모리 장치의 내성을 최대화하거나 임의의 크기의 데이터에 대해 프로그래밍 성능 및 내성을 최적화하기 위해 웨어 레벨링 알고리즘을 실행할 수 있다.
Description
본 출원은, 전체가 여기에 참고로 통합되어 있는, 2006년 3월 31일에 출원된 미국 특허 가출원 번호 60/788,083의 우선권의 이익을 청구한다.
본 발명은 일반적으로 플래시 메모리에 관한 것이다. 더 구체적으로는, 대용량 저장용 멀티 디바이스 플래시 메모리 시스템에 관한 것이다.
플래시 메모리는 예를 들면 디지털 카메라 및 휴대용 디지털 음악 재생기 등의 사용자 전자기기에 대용량 저장매체로서 폭넓게 사용되고 있는 비휘발성 메모리의 일반적으로 사용되는 유형이다. 현재 이용가능한 플래시 메모리 칩의 밀도는 32Gbits(4GB)까지 될 수 있어서, 하나의 플래시 칩의 크기가 작기때문에 범용의 USB 플래시 장치에서 사용하기에 적합하다.
8메가 픽셀 디지털 카메라와, 음악 및 비디오 성능을 갖는 휴대용 디지털 환경 장치는 다량의 데이터를 저장하기 위해 초고 용량을 더욱 요구하고 있으나, 단일 플래시 메모리 장치로는 충족될 수 없었다. 그러므로, 이용가능한 저장 용량을 효과적으로 증가시키기 위해 다중 플래시 메모리 장치가 메모리 시스템에 함께 결합된다. 예를 들면, 20GB의 플래시 저장장치 밀도가 이러한 애플리케이션을 위해 요구될 수 있다.
도 1은 호스트 시스템(12)과 통합된 종래 기술의 플래시 메모리 시스템(10)의 블록도이다. 플래시 메모리 시스템(10)은 호스트 시스템(12)과 통신하는 플래시 메모리 컨트롤러(14) 및 다중 비휘발성 메모리 장치(16)를 포함한다. 호스트 시스템은 마이크로컨트롤러, 마이크로프로세서 또는 컴퓨터 시스템 등의 처리 장치를 포함한다. 도 1의 플래시 메모리 시스템(10)은 단일 채널(20)을 포함하도록 구성되고, 메모리 장치(16)는 채널(20)에 병렬로 접속된다. 본 기술에서 숙련된 자는 메모리 시스템(10)이 거기에 접속된 임의의 수의 메모리 장치를 갖는 것으로 이해한다.
채널(20)은 공통 버스의 세트를 포함하고, 이것은 대응하는 모든 메모리 장치에 접속되는 데이터 및 제어 라인을 포함한다. 도시하지는 않았지만, 각 메모리 장치는 플래시 메모리 컨트롤러(14)에 의해 공급되는 각각의 칩 선택 신호로 인에이블/디스에이블된다. 플래시 컨트롤러(14)는 호스트 시스템(12)의 동작에 기초하여, 선택된 메모리 장치에 채널을 통해 커맨드 및 데이터를 발행하는 의무가 있다. 메모리 장치로부터 판독된 데이터는 채널을 통해 플래시 메모리 컨트롤러(14) 및 호스트 시스템(12)에 되돌려진다. 플래시 메모리 시스템(10)은 일반적으로 멀티드롭 구성이라고 부르며, 메모리 장치(16)는 채널(20)에 대해 병렬로 접속된다.
플래시 메모리 시스템(10)에서, 비휘발성 메모리 장치(16)는 서로 동일하며, NAND 플래시 메모리 장치로서 일반적으로 실행된다. 본 기술에서 숙련된 자는 플래시 메모리가 뱅크로 조직화되고, 각 뱅크는 블록으로 조직화되어 블록 소거를 촉진하는 것으로 이해한다. 가장 상업적으로 유용한 NAND 플래시 메모리 장치는 2개의 뱅크의 메모리를 가지도록 구성된다. 플래시 메모리 시스템(10)의 동작을 설명하기에 앞서, 단일 NAND 플래시 메모리 장치 핵심의 간단한 개요를 기술한다.
도 2는 주지의 NAND 플래시 메모리의 하나의 뱅크의 일반적인 블록도이다. 뱅크(30)는 k+1블록으로 조직화된다. 각 블록은 NAND 메모리 셀 스트링으로 구성되고, 서로 직렬로 접속된 i+1 개까지의 플래시 메모리 셀을 갖는다. 따라서, 워드 라인 WL0 ~ WLi는 메모리 셀 스트링의 각 플래시 메모리 셀의 게이트에 접속된다. 신호 SSL(string select line)에 접속된 스트링 선택 장치는 메모리 셀 스트링을 비트라인에 선택적으로 접속하고, 신호 GSL(ground select line)에 접속된 접지 선택 장치는 메모리 셀 스트링을 VSS 등의 소스 라인에 선택적으로 접속한다. 스트링 선택 장치와 접지 선택 장치는 n채널 트랜지스터이다. 뱅크(30)의 모든 블록에 공통인 j+1의 비트라인이 있고, 각각의 비트라인은 각각의 block [0] ~ [k]에서 하나의 NAND 메모리 셀 스트링에 접속되어 있다. 각각의 워드 라인(WL0 ~ WLi), SSL 및 GSL 신호는 블록의 각각의 NAND 메모리 셀 스트링에서 동일한 대응하는 트랜지스터 장치에 접속된다. 본 기술에서 숙련된 자가 알고 있는 것같이, 하나의 워드라인을 따라서 플래시 메모리 셀에 저장된 데이터를 데이터의 페이지로 칭한다.
플래시 메모리 셀의 하나의 페이지로 프로그래밍되는 기입 데이터의 하나의 페이지를 저장하기 위한 데이터 레지스터(32)가 뱅크(30) 외부의 각각의 비트라인에 접속되어 있다. 데이터 레지스터(32)는 플래시 메모리 셀의 하나의 페이지로부터 판독된 데이터를 감지하는 감지 회로를 또한 포함한다. 프로그래밍 동작 동안, 데이터 레지스터는 선택된 워드 라인에 접속되는 플래시 메모리 셀로 데이터가 적 절히 프로그래밍되었는지를 확인하기 위한 프로그래밍 검증 동작을 행한다. 블록 내의 프로그래밍은 WL0에 대응하는 페이지에서 일반적으로 시작하여, 순차적으로 WLi까지 진행하여 현재 블록을 채운다. 그 후, 프로그래밍은 새로운 블록의 WL0로 계속된다. 장치 내에서 블록은 순차적으로 프로그래밍된다.
도 1의 플래시 메모리 시스템(10)으로 되돌아가면, 시스템의 성능에 악영향을 주는 특정 문제 들이 있다. 몇몇은 물리적인 것인 반면, 다른 것은 구조적인 것이다.
플래시 메모리 시스템(10)의 구성은 물리적인 성능 제한에 영향을 준다. 시스템에 걸쳐 주행하는 다수의 병렬 신호에서, 그들이 보유하고 있는 신호들의 신호 통합은 크로스톡, 신호 스큐 및 SSN(simultaneous switching noise)에 의해 열화된다. 플래시 컨트롤러와 플래시 메모리 장치 사이의 각 신호 트랙이 시그널링을 위해 빈번하게 충전 및 방전되기 때문에, 이러한 구성에서는 전력 소비가 문제가 된다. 시스템 클락 주파수가 증가하면서, 전력 소비 또한 증가된다.
구조적인 관점에서, 프로그래밍 동작은 너무 많은 시간이 걸린다. 플래시 컨트롤러(14)의 일차 기능은 시스템의 메모리 장치에 데이터를 기입하는 것을 관리하는 것이다. 플래시 메모리 환경에서, 데이터의 기입은 데이터 프로그래밍으로 보다 일반적으로 칭해진다. 플래시 프로그래밍에 관한 2개의 현저한 문제가 있다. 첫째, 플래시 프로그래밍은 DRAM, SRAM 등의 휘발성 메모리, 및 하드 디스크 드라이브 등의 다른 비휘발성 메모리에 비해 느리다. 플래시 메모리 셀로의 데이터 프로그래밍은 타이트 프로그래밍된 스레시홀드 전압 분포를 얻기 위해 고전압 및 스텝의 프로 그램 시퀀스를 필요로 한다. 메모리의 2개의 뱅크를 갖는 NAND 플래시 메모리 장치에서, 2페이지의 데이터가 각 뱅크에 대해 하나씩 동시에 프로그래밍된다. 뱅크당 하나의 데이터 레지스터만이 있기 때문에, 현재의 페이지가 성공적으로 프로그래밍될 때까지 더 많은 프로그래밍 동작이 대기되어야 한다. 그러므로, 플래시 장치(16)에 다량의 데이터를 프로그래밍하는 것은 많은 시간을 필요로 할 수 있다.
종래의 플래시 메모리 시스템(10)에서 2번째 문제는 프로그래밍 데이터의 선형 파일 구조이다. 도 3은 4개의 메모리 장치를 갖는 플래시 메모리 시스템(50)에 대한 종래의 파일 구조를 나타낸다. 도 3에서, 각 메모리 장치(52, 54, 56, 58)은 총 n 물리적 페이지의 저장 공간을 갖고, 이것은 임의의 수의 블록 사이에서 분할된다. 현재 도시된 예에서, n 페이지가 2개의 뱅크 사이에서 동일하게 분할된다고 가정한다. 대부분의 플래시 메모리 시스템은 하나의 메모리 장치내에서 선형적으로, 많은 데이터 페이지로 구성된 데이터 파일을 저장한다. 예를 들면, 제1 페이지의 데이터 파일은 장치(52)의 페이지 0에 저장되고, 연속적인 데이터 페이지가 뒤의 페이지로 진행하며 저장된다. 장치(52)가 채워지면, 시스템(50)에 저장되는 더 많은 데이터 파일이 장치(54) 등에서 페이지 0에서 시작한다. 화살표 60은 플래시 메모리 시스템(50)에 기입되고 있는 데이터의 저장 패턴을 나타낸다.
메모리 장치마다 데이터 파일의 페이지당 비교적 긴 프로그래밍 시간과 결합된 이 선형 파일 구조는, 플래시 메모리 시스템이 데이터를 저장하기 위해 많은 시간을 필요로 하게 하는 결과를 가져 온다. 선형 파일 구조에 관련된 다른 문제는 장치 신뢰성, 더 상세하게는, 시스템에서 다른 메모리 장치에 비해 하나의 메모리 장치의 프로그램/소거 웨어링이다. 프로그램/소거 웨어링은 누적 프로그래밍 및 소거 동작으로 인한 플래시 메모리 셀의 점진적인 열화를 의미한다. 이러한 누적 프로그래밍 및 소거 동작은 최적의 파라미터 이외에 메모리 셀의 프로그래밍 및 소거 특성의 교체를 가져온다. 메모리 셀이 열화될 때, 원하는 스레시홀드 전압까지 메모리 셀을 프로그래밍하거나 소거하기 위해 더 높은 프로그래밍 및 소거 전압이 필요하다. 결국, 메모리 셀은 적절히 기능하는데 실패한다. 이것은 10,000과 100,000 주기의 사이에 있는 제한된 수의 소거-프로그래밍 주기에 대해 플래시 메모리가 레이트되기 때문이다.
예를 들면, 도 3의 제1 메모리 장치(52)가 임의의 다른 메모리 장치보다 더 많은 프로그래밍 및 소거 주기를 견디면, 메모리 장치(52)는 다른 것 앞에서 실패하기 쉽다. 메모리 장치가 서로 패키징되고, 단일 메모리 장치의 교체가 실제적이 아니기 때문에, 메모리 장치(52)가 실패하면, 전체 시스템(50)은 더 이상 사용가능하지 않다. 시스템에서 나머지 장치가 여전히 유용하고 현저한 수명이 남겨져 있을 수 있으므로, 이것은 메모리 장치의 적절하기 않은 낭비이다.
대부분의 플래시 메모리의 고유의 기술적인 구조는, 소거가능한 메모리의 가장 작은 단위의 메모리가 메모리의 블록이라는 것이다. 이것은 블록내에서 하나의 페이지가 변경되어도, 새로운 페이지에 따라 전체 블록이 재프로그래밍되어야 한다는 것이다. 이것은 블록 리프로그래밍이라고 부르며, 현저한 프로그래밍 시간을 필요로 하므로 시스템의 성능에 부정적인 영향을 준다.
그러므로, 주지의 플래시 메모리 시스템은 데이터를 프로그래밍하는데 있어 서 느린 쓰루풋을 가지고, 장치에 걸친 동일하지 않은 프로그래밍 및 소거 웨어링으로 인해, 전체 시스템은 실패한 제1 메모리 장치에 제한된 수명을 가진다.
그러므로, 시스템의 수명을 최대화하는 방식을 갖는 고속 플래시 메모리 시스템 구조를 제공하는 것이 바람직하다.
본 발명의 목적은 플래시 메모리 시스템용 이전 제어 방식의 적어도 하나의 단점을 제거하거나 완화시키는 것이다. 특히, 본 발명의 목적은, 시스템의 각각의 플래시 메모리 장치에서 프로그래밍 동작을 인터리브함으로써 플래시 메모리 시스템 프로그래밍 쓰루풋을 개선하는 것이시다.
제1 관점에서, 본 발명은 채널에 접속된 제1 및 제2 플래시 메모리 장치를 제어하는 방법을 제공한다. 이 방법은 제1 커맨드에 따라서 제1 플래시 메모리 장치에서 제1 동작을 실행하는 단계와, 상기 제1 플래시 메모리 장치가 제1 동작을 실행하는 동안, 제2 커맨드에 따라서 제2 플래시 메모리 장치에서 제2 동작을 시작하는 단계를 포함한다.
본 구성의 실시예에서, 제1 플래시 메모리 장치와 제2 플래시 메모리 장치는 서로 직렬로 접속되어 있고, 상기 제2 커맨드는 시작 단계 전에 상기 제1 플래시 메모리 장치를 통해 상기 제2 플래시 메모리 장치에 전달된다. 다른 실시예에서, 상기 제1 동작을 실행하는 단계는 상기 제1 메모리 장치에서 데이터 파일의 적어도 하나의 페이지를 프로그래밍하는 것을 포함한다. 상기 제2 동작은 상기 제2 메모리 장치에서 데이터 파일의 적어도 하나의 다른 페이지의 프로그래밍을 시작하는 단계를 포함하고, 이 방법은 제3 커맨드에 따라서 상기 제1 플래시 메모리 장치에서 제3 동작을 시작하는 단계를 더 포함한다. 상기 제2 동작은 상기 제2 메모리 장치에서 데이터의 판독 동작을 시작하거나 상기 제2 메모리 장치에서 소거 동작을 시작하는 것을 포함한다. 또 다른 실시예에서, 상기 제1 동작을 실행하는 단계는 상기 제1 메모리 장치에서 판독 동작 및 소거 동작중 하나를 포함한다.
제2 구성에서, 본 발명은 복수의 플래시 메모리 장치를 갖는 플래시 메모리 시스템에서 고속 웨어 레벨링 프로그래밍 방법을 제공한다. 이 방법은 0보다 큰 정수인 k의 페이지를 갖는 데이터 파일을 수신하는 단계; k의 크기에 대응하는 프로그래밍 프로파일과 플래시 메모리 시스템의 설정 파라미터를 선택하는 단계; 및 선택된 프로그래밍 프로파일에 따라서 복수의 플래시 메모리 장치중 적어도 2개의 각각의 데이터 파일의 k페이지중 적어도 하나를 프로그래밍하는 단계를 포함한다.
본 구성의 실시예에 따르면, 상기 설정 파라미터는 j 플래시 메모리 장치를 포함하고, 각각의 j 플래시 메모리 장치는 블록당 i 페이지를 갖고, 여기서 j와 i는 0보다 큰 정수이다. 상기 선택 단계는 z의 실링 함수를 계산하는 단계를 포함하며, 여기서 z=k/i이고, 프로그래밍 프로파일은 z가 j이하일 때 j의 플래시 메모리 장치중 z에서 데이터 파일의 k페이지를 저장하는 단일 파일 구조를 포함한다. 상기 프로그래밍 단계는 k 페이지를 프로그래밍하기 위해 z의 플래시 메모리 장치의 각각에 프로그램 커맨드를 순차적으로 제공하는 단계를 포함하며, 여기서 각 프로그램 커맨드는 k 페이지중 적어도 하나를 프로그래밍한다.
본 구성의 다른 실시예에서, 프로그래밍 프로파일은 z가 j를 초과할 때 다중 파일 구조를 포함한다. 다중 파일 구조는 j 플래시 메모리 장치에서 데이터 파일의 j*i 페이지의 m 단위를 저장하는 단계와, z가 j이하일 때 j의 플래시 메모리 장치중 z에서 데이터 파일의 페이지 k-(m*(j*i))를 저장하는 단계를 포함하며, 여기서 m은 0보다 큰 정수값이다. 상기 프로그래밍 단계는 데이터 파일의 j*i 페이지를 프로그래밍하기 위해 j의 플래시 메모리 장치의 각각에 프로그램 커맨드를 순차적으로 제공하는 단계를 포함하며, 여기서, 각각의 프로그램 커맨드는 k페이지중 적어도 하나를 프로그래밍한다. 상기 프로그래밍 단계는 k-(m*(j*i)) 페이지를 프로그래밍하기 위해 z의 플래시 메모리 장치의 각각에 프로그램 커맨드를 순차적으로 제공하는 단계를 더 포함하며, 여기서, 각각의 프로그램 커맨드는 k페이지중 적어도 하나를 프로그래밍한다.
제3 구성에서, 본 발명은 동일한 채널에 접속된 적어도 2개의 메모리 장치를 갖는 메모리 시스템용 데이터 파일 저장 구조를 제공한다. 데이터 파일 저장 구조는 적어도 2개의 메모리 장치중 2개에 저장된 데이터 파일의 일부를 포함한다. 본 구성의 실시예에 따르면, 일부는 실질적으로 서로 같은 크기이고, 일부는 메모리 시스템의 적어도 2개의 메모리 장치의 각각에 저장된다.
제4 구성에서, 본 발명은 j 플래시 메모리 장치를 갖는 플래시 메모리 시스템에서 고속 웨어 레벨링 프로그래밍용 방법을 제공하며, 각각의 j 플래시 메모리 장치는 블록당 i 페이지를 가지며, j와 i는 0보다 큰 정수이다. 본 방법은 0보다 큰 정수인 k의 페이지를 갖는 데이터 파일을 수신하는 단계; z=k/i의 실링 함수가 j 이하이면 j의 메모리 장치의 z내의 k페이지를 프로그래밍하는 커맨드를 제공하는 단계; z=k/i의 실링 함수가 j보다 크면 j 메모리 장치내의 j*i 페이지를 프로그래밍하는 커맨드를 제공하는 단계; k=k-(j*i)를 설정함으로써 k를 업데이트하는 단계; 및 상기 업데이트된 k페이지를 프로그래밍하는 단계를 반복하는 단계를 포함한다.
제5 구성에서, 본 발명은 플래시 메모리 시스템을 제공한다. 플래시 메모리 시스템은 컨트롤러, 제1 플래시 메모리 장치, 및 제2 플래시 메모리 장치를 포함한다. 컨트롤러는 제1 커맨드 및 제2 커맨드를 제공하는 채널을 갖는다. 제1 플래시 메모리 장치는 제1 커맨드에 따라서 제1 동작을 행하는 채널에 접속되어 있다. 제2 플래시 메모리 장치는 상기 제1 플래시 메모리 장치가 제1 동작을 행하고 있는 동안 제2 커맨드에 따라서 제2 동작을 시작하기 위해 채널에 접속되어 있다.
본 구성의 실시예에 따르면, 제1 플래시 메모리 장치와 제2 플래시 메모리 장치는 서로 직렬로 접속되고, 제2 커맨드는 제1 플래시 메모리 장치를 통해 제2 플래시 메모리 장치에 전달된다. 제1 동작은 프로그래밍 동작을 포함하고, 제1 플래시 메모리 장치는 데이터 파일의 적어도 하나의 페이지를 프로그래밍한다. 제2 동작은 다른 프로그래밍 동작을 포함하고, 제2 플래시 메모리 장치는 데이터 파일의 적어도 하나의 다른 페이지를 프로그래밍한다.
본 발명의 다른 구성 및 특징은 첨부 도면과 함께 다음의 본 발명의 특정 실시예의 다음의 설명을 검토할 때 본 기술에서 통상적으로 숙련된 자에게 분명해진다.
본 발명의 실시예들을, 첨부된 도면을 참조하여, 예를 통해 서술된다.
도 1은 종래 기술의 플래시 메모리 시스템의 블록도이다.
도 2는 종래 기술의 NAND 플래시 메모리 코어의 개략도이다.
도 3은 플래시 메모리 시스템의 종래의 파일 구조를 도시한다.
도 4는 본 발명의 실시예에 따르는 플래시 메모리 시스템의 블록도이다.
도 5는 본 발명의 실시예에 따르는, 도 4의 플래시 컨트롤러에 의해 발행된 프로그램 커맨드의 타이밍도이다.
도 6은 도 4의 플래시 메모리 시스템의 각각의 메모리 장치에 의해 수신된 프로그램 커맨드를 나타내는 타이밍도이다.
도 7은 본 발명의 실시예에 따르는, 고속 인터리브된 프로그래밍 방법을 도시하는 플로우도이다.
도 8은 도 7의 고속 인터리브된 프로그래밍 방법의 결과인 도 4의 플래시 메모리 시스템의 파일 구조의 그래픽 도시이다.
도 9는 본 발명의 실시예에 따르는, 고속 웨어 레벨링 프로그래밍 방법을 도시하는 플로우도이다.
도 10은 인터리브된 프로그래밍 및 판독 동작을 나타내는 타이밍도이다.
데이터의 고속 프로그래밍을 얻기 위해 직렬로 접속된 플래시 메모리 장치를 갖는 플래시 메모리 시스템이다. 데이터의 고속 프로그래밍은 시스템에서 메모리 장치들 중에서 데이터의 페이지들을 인터리브함으로써 얻어지므로, 다른 페이지의 데이터가 다른 메모리 장치에 저장된다. 메모리 컨트롤러는 하나 이상의 신호 라인을 갖는 비트스트림에서 각각의 메모리 장치에 대해 프로그램 커맨드를 발행한다. 각각의 메모리 장치는 프로그램 커맨드를 수신하기 때문에, 프로그래밍 동작을 시작하거나 다음의 메모리 장치에 커맨드를 전달한다. 그러므로, 플래시 시스템의 메모리 장치는 교대로 데이터의 페이지를 순차적으로 프로그래밍함으로써, 플래시 메모리 시스템으로 데이터의 각 페이지를 프로그래밍하는데 있어서 지연을 최소화한다. 메모리 컨트롤러는 임의의 크기의 데이터에 대해 프로그래밍 성능 및 내구성을 최적화하기 위해 웨어 레벨 제어 알고리즘을 실행한다.
도 4는 본 발명의 실시예에 따라서, 웨어 레벨 제어로 고속 데이터 프로그래밍 동작을 행하는 직렬 접속된 메모리 장치를 갖는 플래시 메모리 시스템의 블록도이다. 플래시 메모리 시스템(100)은 호스트 시스템(104)과 통신하는 플래시 메모리 컨트롤러(102), 4개의 직렬 접속된 플래시 메모리 장치(106, 108, 110 및 112)를 포함한다. 4개의 메모리 장치가 본 실시예에 도시되어 있는 반면, 본 발명의 실시예들은 적어도 2개의 메모리 장치를 갖는 메모리 시스템에 대해 효과적이다. 4개의 메모리 플래시 메모리 장치의 각각은 메모리 장치들 사이에서 직렬 동작을 용이하게 하는 직렬 입/출력 인터페이스 회로를 갖는다. 이러한 플래시 메모리 장치의 예가 2005년 12월 30일에 출원되고, 공통으로 소유된 미국 특허 출원 번호 11/324,023, 및 2006년 7월 31일에 출원되고, 공통으로 소유된 미국 특허 출원 번호 11/496,278에 기재되어 있고, 그 컨텐츠는 참고로 여기에 통합되어 있다. 미국 특허 출원 11/324,023의 플래시 메모리 장치를 MISL(muliple independent serial link device)로 칭한다. 도 1에 도시된 시스템에서와 같이, 호스트 시스템은 마이크로컨트롤러, 마이크로프로세서 또는 컴퓨터 시스템 등의 처리 장치를 포함한다.
플래시 메모리 장치(106)는 체인에서 제1 장치이고, 플래시 메모리 컨트롤러(102)로부터 판독, 프로그래밍 소거 커맨드 등의 커맨드를 수신한다. 미국 특허 출원 번호 11/324,023의 MISL 플래시 장치에서, 모든 커맨드, 데이터 및 어드레스 정보가 직렬 비트스트림으로 수신된다. 커맨드는 데이터 정보, 어드레스 정보, 및 특정 동작을 실행하기 위해 메모리 장치에 의해 요구되는 임의의 다른 정보를 포함한다. 각 플래시 메모리 장치가 플로우-쓰루(flow-through) 논리 회로를 포함해야 하므로, 특정 장치에 대해 의도된 것이 아닌 임의의 수신된 커맨드는 의도된 플래시 메모리 장치에 의해 동작될 때까지 다음의 메모리 장치 등으로 전달된다. 판독 커맨드에 따라서 판독 데이터를 제공하기 위해, 체인에서 최종 플래시 메모리 장치(112)는 플래시 메모리 컨트롤러(102)에 접속된 출력을 갖는다. 도 4의 현재 도시된 실시예는 플래시 메모리 장치의 체인으로부터 데이터를 송수신하기 위한 하나의 채널을 갖는다. 본 발명에서 숙련된 자는 플래시 메모리 컨트롤러(102)는 대응하는 수의 플래시 메모리 장치 체인을 수용하기 위해 다중 채널을 선택적으로 가지는 것으로 이해한다. 각각의 플래시 메모리 장치는 서로 근접하게 위치되기 때문에, 플래시 메모리 장치를 서로 상호 접속하는 도전 와이어가 최소화된다. 그러므로, 도 1의 플래시 메모리 시스템(10)에서와 같이, 버스 라인 길이에 관련된 물리적인 성능 제한이 없다.
미리 논의된 것같이, 플래시 메모리 컨트롤러(102)는 각 플래시 메모리 장치 에 대해 프로그램 커맨드를 발행하는 의무가 있다. 본 발명의 실시예에 따르는 데이터의 고속 프로그래밍을 위해, 데이터 파일의 페이지가 다른 메모리 장치로 프로그래밍된다. 이것은 각각의 플래시 메모리 장치에서 프로그래밍 동작을 연이어서 시작하기 위해, 프로그램 커맨드를 교대로 직렬로 발행함으로써 행해진다. 도 5 및 6은 이러한 고속 프로그래밍이 어떻게 달성되는지를 도시하는 것을 도와준다.
도 5는 본 발명의 실시예에 따라서, 플래시 메모리 시스템(100)용 전체 프로그래밍 속도를 최대화하기 위해 플래시 메모리 컨트롤러(102)에 의한 프로그램 커맨드의 발행을 도시하는 타이밍도이다. 현재 도시된 예에서, 하나의 데이터 파일을 프로그래밍하기 위해 플래시 메모리 컨트롤러(102)에 의해 각각의 기간(t1 ~ t4)에서 4개의 프로그램 커맨드 Data[0], Data[1], Data[2], Data[3]이 직렬로 발행된다. 각 프로그램 커맨드에 대해 사각 괄호내의 식별 번호는 프로그램 커맨드가 플래시 메모리 컨트롤러(102)로부터 발행된 순차적인 순서를 나타낸다. 각각의 프로그램 커맨드는 커맨드(200)와 특정 메모리 장치용 데이터(202)의 적어도 하나의 페이지를 포함하지만, 여기에 한정되지 않는다. 커맨드(200)는 데이터의 페이지가 프로그래밍되는 어드레스, 프로그램 커맨드와 특정 메모리 장치를 정합시키는 장치 식별자를 포함한다. 플래시 메모리 장치(106,108, 110, 112)는 프로그램 커맨드 Data[0], Data[1], Data[2], Data[3]에 각각 대응한다. 플래시 메모리 장치는 직렬로 접속되어 있고, 프로그램 커맨드가 직렬로 발행되기 때문에, 각 플래시 메모리 장치의 코어 프로그래밍 동작은, 프로그램 커맨드를 수신하는 최종 프래시 메모리 장치를 제외하고, 뒤이은 플래시 메모리 장치의 동작을 중첩시킨다.
각 프로그램 커맨드는 메모리 장치에 전송하기 위해 약 85 마이크로 세컨드를 필요로 한다고 가정하면(시간 t1), 4개의 프로그램 커맨드를 전송하기 위해 총 시퀀스는 4 x 85 마이크로 세컨드 = 340 마이크로 세컨드를 필요로 한다. 메모리 장치당 데이터의 적어도 하나의 페이지를 프로그래밍하기 위해 필요한 시간이 고정되고, 약 200 마이크로 세컨드라고 가정한다. 그러므로, 플래시 메모리 시스템(100)에 모든 데이터를 프로그래밍하기 위해 총 경과된 시간은 약 340 마이크로 세컨드 + 200 마이크로 세컨드 = 540 마이크로 세컨드이다. 200 마이크로 세컨드 프로그래밍 시간은 프로그램 커맨드를 수신하기 위해 최종 메모리 장치에 의해 사용된다. 대조적으로 동일한 메모리 장치에 4 페이지를 프로그래밍하는 것은 1140 마이크로 세컨드가 걸린다. 플래시 메모리 장치의 중첩 프로그래밍 동작은 도 6의 확대된 타이밍도에 보다 분명하게 도시된다.
각각의 프로그램 커맨드 Data[0], Data[1], Data[2], Data[3]에 따라서 플래시 메모리(106, 108, 110, 112)의 동작을 도시하는 확대된 타이밍도이다. 기간(t1 ~ t4)은 도 5에 도시된 동일한 기간에 대응한다. 도 6의 프로그램 시퀀스를 도 7의 플로우도를 참조하여 기재한다. 도 7에 서술된 플래시 시스템 프로그래밍 제어의 예는 고속 인터리브된 프로그래밍 방법으로 칭해짐으로써 프로그래밍 동작은 다른 메모리 장치 사이에서 인터리브된다. 방법은 적어도 2개의 프로그램 커맨드가 시스템에서 제1 메모리 장치(106)에 직렬로 제공되는 단계(300)에서 시작한다. 제1 프로그램 커맨드는 프로그램 커맨드 Data[0]에 대응하고, 제2 프로그램 커맨드는 프로그램 커맨드 Data[1]에 대응한다. 단게 302에서, 메모리 장치(106)는 제1 기 간(t1) 동안 프로그램 커맨드 Data[0]를 수신하고, 이어서 단계 304에서 프로그래밍 동작이 행해진다. 기간(t1) 동안, 프로그램 커맨드 Data[0]는 메모리 장치(106)에 전송되고, 메모리 장치(108, 110, 112)는 비동작(NOP; no operation) 상태에 남아 있다.
프로그램 커맨드 Data[0]가 메모리 장치(106)에 전송되자 마자, 단계 306에서 제2 기간(t2) 동안, 제2 프로그램 커맨드 Data[1]가 메모리 장치(108)에 의해 수신된다. 프로그래밍 동작은 단게 308에서 진행하고, 메모리 장치(106)에 대한 프로그래밍 동작이 기간(t1)의 끝에서 이미 행해졌기 때문에, 동일한 시간에 메모리 장치(106, 108)가 모두 프로그래밍 동작을 행하고 있는 기간이 있다. 프로세스는 다음의 프로그램 커맨드 및 메모리 장치에 대해 동일한 방식으로 반복된다. 본 실시예에서, 메모리 장치(106, 108)의 프로그래밍 동작이 기간(t4)의 끝에서 완료된다. 메모리 장치(112)의 프로그래밍 동작이 계속되면서 메모리 장치(110)의 프로그래밍 동작이 종료한다.
상기 예는 커맨드를 수신하기 위한 제1 메모리 장치가 106이라고 가정한 것을 나타낸다. 또는, 시스템에서 임의의 하나의 메모리 장치가 제1 프로그램 커맨드를 수신하기 위한 제1 메모리 장치일 수 있다. 기간(t4) 후에, 제5 프로그램 커맨드가 메모리 장치(106)에 발행되고, 장치(106)는 프로그래밍 동작을 종료한다. 본 기술에서 숙련된 자는 다른 플래시 메모리 장치가 변경된 프로그래밍 시간을 가지는 것으로 이해한다. 도 6의 도시된 예에서, 메모리 장치(106)는 기간(t4)의 초기에 그 데이터의 프로그래밍을 종료하므로, 메모리 장치(112)가 프로그램 커맨드 Data[3]를 수신하는 것을 완료하자 마자 다음의 프로그램 커맨드 Data[4]를 수신하는 것이 준비된다. 플래시 메모리 장치가 매우 긴 코어 프로그래밍 시간을 가지면, 프로그램 커맨드 Data[4]를 발행하기 전에 메모리 장치(106)가 프로그래밍 동작을 완료할 때까지 플래시 메모리 컨트롤러는 기다리는 것이 필요하다. 플래시 메모리 장치는 프로그래밍 동작이 완료된 때를 나타내기 위해 일반적으로 준비 상태 신호를 플래시 메모리 컨트롤러에 공급한다.
도 8은 도 6 및 도 7에 기재된 고속 프로그램 시퀀스가 프로그램 커맨드 Data[0], Data[1], Data[2], Data[3]를 실행한 후, 플래시 메모리 장치(106, 108, 110, 112)의 그래픽 파일 구조의 도시이다. 도 8에 나타낸 파일 구조는 장치(106, 108, 110)의 메모리 블록이 프로그래밍전에 비어있다고 가정한다. 이것은 페이지들이 이들 장치의 물리적 페이지 0로 프로그래밍되기 때문이다. 한편, 메모리 장치(110)에서, 메모리 블록은 물리적 페이지 0 및 1에서 다른 데이터를 가질 수 있다. 그러므로, Data[2]는 블록에서 다음의 이용가능한 페이지로 프로그래밍되고, 이것은 물리적 페이지 2이다. 도 8에 도시된 것같이, 메모리 장치(106)의 물리적 페이지 1은 현재 도시된 고속 프로그램 시퀀스에서 프로그래밍되는 최종 페이지이다. 다음의 프로그램 시퀀스는 메모리 장치(108)의 물리적 페이지 1에서 프로그래밍 데이터를 시작하고, 도 6에 도시된 프로그램 시퀀스에 대해 미리 서술된 것과 동일한 방식으로 진행한다. 그러므로, 프로그램 커맨드가 연속적으로 직렬로 접속된 메모리 장치에 직렬로 발행될 때, 플래시 메모리 시스템(100)의 최대 프로그래밍 속도가 구해진다. 즉, 직렬로 상호접속된 플래시 메모리 시스템에서 최대 수의 메모리 장치에 걸쳐서 데이터가 분포되어 있는 파일 구조는 데이터 파일의 최고속 프로그래밍을 가져 온다. 모든 메모리 장치에 걸쳐서 동일한 물리적 페이지수에서 프로그래밍되는 것이 반드시 필요한 것은 아닌 것에 주의한다.
고속 프로그래밍은 플래시 메모리 시스템(100)을 사용하는 시스템에 유용하며, 몇몇 시스템은 플래시 메모리 시스템(100)의 최대 내구력을 필요로 할 수 있다. 도 8에 도시된 파일 구조는 주로 플래시 메모리 장치의 블록 소거 구조로 인해, 모든 메모리 장치에 걸친 프로그램/소거 웨어를 최대화하지 않는다. 예를 들면, 20 페이지 데이터 파일이 각 메모리 장치에서 하나의 블록에 걸쳐서 인터리브되어 프로그래밍되면, 모든 4개의 메모리 장치가 데이터 파일을 업데이트하기 전에 블록 소거를 행하는 것이 필요할 가능성이 있다. 모든 20페이지가 하나의 메모리 장치의 하나의 블록에 저장되면, 블록은 소거되는 것이 필요할 뿐이다.
그러므로, 본 발명의 다른 실시예에 따르면, 상기 서술된 고속 프로그래밍 제어 방법은 프로그램/소거 웨어를 최소화하거나, 또는 프로그래밍 성능 및 프로그램/소거 웨어를 최적화하기 위해 조정된다. 더 구체적으로, 도 4의 플래시 컨트롤러(102)는 소정의 기준에 기초하여 프로그래밍 성능 및 프로그램/소거 웨어를 최적화하기 위한 프로그래밍 제어 알고리즘을 실행한다. 이 소정의 기준은 프로그래밍되는 데이터의 특징과 플래시 메모리 시스템의 메모리 장치의 특징을 포함한다. 데이터 특징은 프로그래밍되는 데이터의 페이지수를 포함하고, 메모리 장치 특징은 블록당 페이지의 수를 포함한다.
도 9는 고속 및 웨어 레벨링 제어를 갖는 플래시 메모리 시스템에서 다수의 플래시 메모리 장치를 프로그래밍하는 실시예를 도시하는 플로우 챠트이다. 이 프로그래밍 제어 실시예는 고속 웨어 레벨링 프로그래밍 방법으로 칭해진다. 웨어 레벨링은 플래시 메모리 시스템의 수명을 연장하는 방식을 나타낸다. 현재 기재된 실시예는 프로그래밍되는 임의의 데이터 파일에 대한 웨어 레벨링 및 성능을 다양한 프로그래밍 프로파일을 사용하여 최적화한다. 프로그래밍 프로파일은 특정 파일 저장 구조를 갖는 데이터 파일의 페이지를 저장하는 프로그램 시퀀스에 일반적으로 대응한다. 결국, 프로그래밍 프로파일은 플래시 메모리 시스템의 메모리 장치에 걸쳐서 데이터 파일의 페이지를 배분한다. 현재 기재된 방법은 직렬로 접속된 메모리 장치의 시스템에서 도 4의 플래시 컨트롤러(102) 등의 메모리 컨트롤러에 의해 실행가능하다.
고속 웨어 레벨링 프로그래밍 방법은 단계 400에서 시작하고, 변수 i는 플래시 메모리 시스템의 각 메모리 장치에서 블록당 페이지의 수로 설정되고, 변수 j는 플래시 메모리 시스템의 각각의 메모리 장치의 수로 설정된다. 플래시 메모리 시스템에서 모든 메모리 장치는 서로 동일하고, 동이한 블록 크기를 갖는다고 가정한다. 이 정보는 메모리 컨트롤러에 프리프로그래밍된다. 단계 402에서, 다수의 페이지 k로 이루어지는 데이터 파일은 프로그래밍을 위해 메모리 컨트롤러에 의해 수신된다. 단계 404로 진행하여, k가 i이하인지를 결정하기 위한 계산이 행해진다. k가 i 이하이면, 데이터 파일이 메모리 장치에서 저장 공간의 하나의 블록 이하인 것을 의미하며, 데이터 파일의 모든 k 페이지는 단계 406에서 하나의 메모리 장치의 하나의 블록으로 프로그래밍된다. 이것은 단일 파일 구조를 갖는 프로그래밍 프로파 일의 예이다. 메모리 컨트롤러는 하나 이상의 선택 파라미터에 따라서 데이터 파일이 프로그래밍되는 특정 메모리 장치를 선택한다. 예를 들면, 하나의 선택 파라미터는 가장 높은 수의 잔여 프로그램/소거 주기를 갖는 메모리 장치이고, 다른 선택 파라미터는 프로그래밍되는 최종 메모리 장치를 포함한다.
한편, k가 i보다 크면, 이것은 데이터 파일이 메모리 장치에 저장 공간의 하나의 블록보다 많은 페이지를 포함하는 것을 의미하며, 방법은 단계 408로 진행한다. 단계 408에서, k/i가 j 이하인지를 결정하기 위한 계산이 행해진다. k/i는 정수만을 산출해야 하는 것에 주의한다. 본 방법은 k 데이터를 저장하는데 필요한 블록의 최대수를 결정하므로, 자연수와 소수 부분을 갖는 비정수 결과(즉, 실수)는 자연수보다 큰 하나의 블록이 요구되는 것을 나타낸다. 이것은 실링 함수(ceiling function) 등의 주지의 수학 함수를 통해 계산된다. 본 기술에서 숙련된 자는 실링 함수는 실수 이상의 최소 정소를 내는 것으로 이해한다. 한편, k/i로부터의 직접 정수 결과는 수학적 처리를 더 요구하지 않는다. 이 점으로부터, k/i 결과를 참조하여 실링 함수가 적용되는 것으로 가정한다.
k/i 정수값이 플래시 메모리 시스템에서 메모리 장치의 수인 j보다 작으면, 데이터 파일의 k 페이지는 단계 410에서 k/i 메모리 장치 사이에서 인터리브 프로그래밍된다. 이것은 단일 파일 구조를 갖는 프로그래밍 파일의 다른 예이다. 인터리브 프로그래밍은 도 7의 방법에서 이전에 기술된 것같이 진행된다. 실제 예에서, i=32, j=4, k=61이면, k/i=1.90이다. k/i는 실수 결과를 가져오기 때문에, 1.90에 적용된 실링 함수는 정수 2를 가져온다. 그래서, 단계 410에서, 모든 k=61 페이지 가 2 메모리 장치에 걸쳐서 인터리브 프로그래밍된다. 메모리 컨트롤러는 플래시 메모리 시스템에서 임의의 2 메모리 장치를 선택하고, 이 장치들은 서로 직접 접속되거나 간접 접속된다. 2개의 간접 접속된 메모리 장치는 이 장치들 사이에 접속된 적어도 하나의 중재 메모리 장치를 가질 수 있다. 데이터 파일은 2개의 메모리 장치내에서 프로그래밍되기 때문에, 약 절반의 페이지가 하나의 메모리 장치에서 프로그래밍되고, 나머지는 다른 메모리 장치에 저장된다.
k/i가 시스템에서 메모리 장치의 수인 적어도 j이면, 다른 최적화 프로그램 시퀀스가 다른 크기 군의 데이터 파일을 프로그래밍하기 위해 사용된다. 더 구체적으로, 매우 큰 데이터 파일이 더 작은 데이터 파일의 다중 단위로서 취급되고, 사전 설명된 프로그램 시퀀스중 어느 하나에 따라서 프로그래밍된다. 단계 412를 계속하여, 각각의 메모리 장치의 하나의 블록에서 모든 페이지 위치는 단계 410의 인터리브된 프로그램 시퀀스에 따라서 데이터 파일의 k 페이지의 j*i 페이지로 프로그래밍된다. 뒤이어 단계 414에서, 페이지 k의 수는 이것을 k-(j*i)로 설정함으로써 갱신된다. 그러므로, 프로그래밍되는 페이지의 잔여 수가 계산된다. 이 방법은 단계 404로 되돌아가서 k의 갱신된 값에 기초하여 결정 트리 처리와 프로그램 시퀀스를 반복한다. 요약하면, 본 방법은 j*i 페이지의 각 유닛에 대해 동일한 파일 구조를 사용하여 데이터 파일의 j*i 페이지의 다중 유닛을 반복하여 프로그래밍하고, 다른 파일 구조를 사용하여 잔여 k-(j*i) 페이지를 프로그래밍한다. 그러므로, 본 방법은 데이터 파일을 위한 다중 파일 구조로 이루어지는 프로그래밍 프로파일을 갖는다.
이 실시예를 도시하기 위해 실제 예가 사용된다. i=32, j=4, k=192이면, 처음 128 페이지가 단계 412에 기재되어 있는 것같이 모든 메모리 장치에 걸쳐서 프로그래밍된다. 단계 414에서, k는 192(-128)=64로 갱신된다. 그리고 나머지 64 페이지가 단계 410에 기재되어 있는 것같이 2개의 메모리 장치에 걸쳐서 프로그래밍된다. 미리 서술된 것같이, 임의의 2개의 메모리 장치는 나머지 64 페이지를 프로그래밍하기 위해 선택된다. 본 기술된 실시예는 프로그래밍 다음에 k의 재계산이 오는 방법을 도시하고, 상기 서술된 계산을 사용함으로써 어느 프로그래밍 동작이 시작되기 전후에 전체 시퀀스는 플래시 컨트롤러에 의해 결정될 수 있다. 프로그래밍되는 데이터 파일의 제1 페이지가 j*i 페이지라고 가정하면, 프로그래밍되는 제1 페이지는 k-(j*i) 페이지일 수 있고, 대신에 다중 유닛의 j*i 페이지가 뒤에 온다.
현재 서술된 고속 웨어 레벨링 프로그래밍 방법이 도 4에 도시된 실시예와 같이, 단일 채널을 갖는 플래시 메모리 시스템에 대해 서술된다. 본 발명의 사전 서술된 실시예들이 2개 이상의 채널을 갖는 플래시 메모리 시스템에서 실행된다. 이러한 다른 실시예에서, 적어도 2개의 데이터 파일이, 하나의 채널에서 제1 데이터 파일 및 다른 채널에서 제2 데이터 파일이 동시에 프로그래밍된다.
또한, 본 실시예에서 단일 메모리 뱅크를 갖는 메모리 장치의 동작을 서술한다. 당연히, 2개 이상의 메모리 뱅크를 갖는 메몰 장치가 사용될 수 있다. 2개의 메모리 뱅크에서, 2 페이지의 데이터까지 저장하기 위해 2개의 이용가능한 페이지 버퍼가 있다. 다중뱅크 장치 구성에서, 몇몇 프로그래밍 선택이 이용가능하다. 제1 선택에서, 하나의 메모리 장치에 프로그래밍되는 모든 페이지의 데이터가 메모리 장치의 하나의 뱅크 내의 하나의 블록에 프로그래밍된다. 이 동작은 하나의 메모리 뱅크만을 갖는 메모리 장치와 유사하다. 제2 선택에서, 2페이지의 데이터 파일이 하나의 메모리 장치 또는 단일 프로그램 커맨드에 동시에 로드된다. 각 메모리 장치가 2개의 페이지를 동시에 프로그래밍하기 때문에 프로그래밍 효율을 효과적으로 증가시킨다. 제3 선택에서, 프로그래밍 선택은 메모리 장치의 뱅크 사이에서 인터리브된다. 예를 들면, 2개의 메모리 장치에 페이지를 프로그래밍하는 것은 다음의 순서로 진행한다: 장치 1[뱅크 1], 장치 2[뱅크 1], 장치 1[뱅크 2], 장치 2[뱅크 2]. 프로그램 시퀀스는 2개 이상의 뱅크를 갖는 메모리 장치에 대해 분명해야 한다.
또한, 사전 서술된 고속 웨어 레벨링 프로그래밍 방법은, 직렬로 접속되거나 데이지 체인의 메모리 장치를 갖는 플래시 메모리 시스템에 대해 서술하며, 도 1에 도시된 것과 같이 멀티드롭 구성된 플래시 시스템에 적용가능하다. 이것은 적절한 메모리 장치를 인에이블링하고, 대응하는 커맨드 데이터를 다른 시간에 공통 버스에 제공하여 행해진다.
본 발명의 사전 서술된 실시예들은 도 4의 플래시 메모리 시스템에서 프로그래밍이 인터리브되는 예를 도시한다. 본 발명의 다른 실시예에 따르면, 인터리브된 프로그래밍 및 판독 동작이 도 4의 플래시 메모리 시스템에 의해 실행된다.
도 10은 도 4의 플래시 메모리 시스템에 대해 고속 인터리브된 판독 및 프로그래밍 동작을 도시하는 타이밍도이다. 이 예에서, 메모리 장치(106, 112)는 데이터로 프로그래밍되고, 메모리 장치(108, 110)는 판독 데이터를 제공하는 것이다. 기간(t1) 동안, 메모리 장치(106)는 프로그램 커맨드 Data[0]을 받고, 데이터를 프로그래밍하기 위해 코어 내부 시퀀스를 즉시 행한다. 기간(t2)의 초기에, 판독 커낸드는 메모리 장치(108)에 의해 수신되고, 내부 데이터 전송 동작(xfer)이 진행한다. 내부 데이터 전송 동작(xfer)이 진행한다. 내부 데이터 전송 동작은 예를 들면 20 마이크로 세컨드 걸리고, 데이터의 판독 및 데이터 레지스터를 로드하기 위해, 그 기간 후, 기간(t3)의 초기에 플래시 컨트롤러가 메모리 장치(110)에 대해 판독 커맨드를 발행한다. 데이터 레지스터로부터 데이터를 출력하기 전에 다운스트림 메모리 장치에 커맨드의 플로우 쓰루를 허용하기 위해 내부 NOP 기간(500)이 메모리 장치(108)에 의해 들어간다.
메모리 장치(110)는 각각의 판독 커맨드를 수신한 후, 그 내부 데이터 전송 동작을 행한다. 그러나, 메모리 장치(108, 110) 사이의 신호 라인이 사용되지 않으므로, 업스트림 메모리 장치(108)가 그 데이터 레지스터의 데이터를 메모리 장치(110)에 출력하는 것을 시작하고, 그 데이터를 메모리 장치(112)에 보낸다. 이것은 예를 들면 순차적인 방식으로 행해진다. 기간(t3)의 끝에서, 메모리 장치(108)는 그 모든 판독 데이터의 출력을 종료함으로써, 기간(t4)의 초기에 메모리 장치(110)가 그 판독 데이터의 출력을 시작하는 것을 허용한다. 메모리 장치(108)가 그 데이터의 출력을 종료할 때까지 메모리 장치(110)가 그 데이터를 출력할 수 없으므로, 내부 NOP 기간(502)에 들어간다. 메모리 장치(110)로부터 모든 데이터가 메모리 장치(112)를 통해 출력되므로, 기간(t4)의 끝에서, 메모리 장치(110, 112) 사이의 신호 라인이 사용되지 않는다. 그러므로, 기간(t5)의 초기에, 메모리 장 치(112)는 프로그램 커맨드 Data[1]를 받는다.
인터리브된 판독 및 프로그래밍 동작이 도시되었지만, 인터리브된 판독, 프로그래밍 및 소거 동작이 어느 조합으로도 실행가능하다.
사전 서술된 고속 인터리브된 프로그래밍 방법은 직결로 접속된 메모리 장치를 갖는 플래시 메모리 시스템에서 프로그래밍 성능을 최대화하기 위해 사용된다. 고속 인터리브된 프로그래밍이 어느 크기의 데이터 파일에 인가된다. 그러나, 모든 메모리 장치의 내구성을 개선하기 위해, 고속 웨어 레벨링 프로그래밍 방법이 사용되어, 데이터 파일의 크기에 기초한 파일 구조로 데이터 파일의 페이지를 분배한다. 본 실시예는 플래시 메모리 장치에 관한 것이나, 본 실시예는 데이터 파일의 페이지가 적어도 2개의 메모리 장치에 프로그래밍되거나 기입되는 다른 메모리 장치에 적용가능하다.
본 설명에서, 설명의 목적으로, 본 발명의 실시예의 완전한 이해를 제공하도록 많은 상세 사항이 서술되었다. 그러나, 본 발명을 구현하기 위해 이들 특정 상세 사항이 요구되는 것은 아닌 것이 본 기술에서 숙련된 자에게는 자명하다. 다른 예에서, 본 발명을 애매하게 하지 않도록 주지의 전기 구조 및 회로가 블록도의 형태로 도시된다. 에를 들면, 여기에 서술된 본 발명의 실시예들이 소프트웨어 루틴, 하드웨어 회로, 펌웨어 또는 그 조합중 어느 것으로 실행되고 있는지에 관해 상세한 설명이 제공되지는 않는다.
본 발명의 실시예들은 머신 판독가능 매체(또한 컴퓨터 판독가능 매체, 프로세서 판독가능 매체 또는 내장된 컴퓨터 판독가능 프로그래밍 코드를 갖는 컴퓨터 사용가능 매체로 칭해진다)에 저장된 소프트웨어 제품으로서 구현될 수 있다. 머신 판독가능 매체는 자기, 광 또는, 디스켓, CD-ROM(compact disk read only memory), 메모리 장치(휘발성 또는 비휘발성) 또는 유사한 저장 메카니즘을 포함하는 전기 저장 매체를 포함하는 임의의 적합한 유형 매체일 수 있다. 기계 판독가능 매체는 다양한 세트의 지시, 코드 시퀀스, 구성 정보 또는 다른 데이터를 포함할 수 있고, 실행되면, 프로세서로 하여금 본 발명의 실시예에 따르는 방법의 단계들을 행하게 한다. 본 기술에서 숙련된 자는, 서술된 발명을 실행하는데 필요한 다른 지시 및 동작들이 머신 판독가능 매체에 저장가능한 것으로 이해한다. 머신 판독가능 매체로부터 구동되는 소프트웨어는 서술된 업무를 행하는 회로와 인터페이스할 수 있다.
본 발명의 상기 서술된 실시예들은 단지 예시를 위한 것이다. 첨부된 청구 범위에 의해서만 한정되는 본 발명의 범위로부터 벗어나지 않으면 본 기술에서 숙련된 자에 의해 특정 실시예에 대해 교체, 변경 및 수정이 행해질 수 있다.
Claims (25)
- 복수의 플래시 메모리 장치를 갖는 플래시 메모리 시스템에서의 고속 웨어 레벨링 프로그래밍 방법으로서,ⅰ) k 페이지(k는 0보다 큰 정수)를 갖는 데이터 파일을 수신하는 단계;ⅱ) z=k/i의 실링(ceiling) 함수를 계산함으로써, k의 크기에 대응하는 프로그래밍 프로파일과 상기 플래시 메모리 시스템의 설정 파라미터를 선택하는 단계로서, 상기 설정 파라미터는 j의 플래시 메모리 장치를 포함하고, 상기 j의 플래시 메모리 장치의 각각은 블록당 i 페이지를 갖고, 여기서 j와 i는 0보다 큰 정수 값인, 단계; 및ⅲ) z가 j보다 클 때 다중 파일 구조를 포함하는 프로그래밍 프로파일에 따라서 복수의 플래시 메모리 장치중 적어도 2개의 각각의 데이터 파일의 k 페이지 중 적어도 하나를 프로그래밍하는 단계로서, 상기 다중 파일 구조는 j의 플래시 메모리 장치에 데이터 파일의 j*i 페이지의 m 유닛을 저장하는 단계와, z가 j이하일 때 j의 플래시 메모리 장치중 z에서 데이터 파일의 k-(m*(j*i)) 페이지를 저장하는 단계를 포함하며, 여기서 m은 0보다 큰 정수값인, 단계를 포함하는, 플래시 메모리 시스템에서의 고속 웨어 레벨링 프로그래밍 방법.
- 청구항 1에 있어서,상기 프로그래밍 단계는, 데이터 파일의 j*i 페이지를 프로그래밍하기 위해 j의 플래시 메모리 장치의 각각에 프로그램 커맨드들을 순차적으로 제공하는 단계로서, 각 프로그램 커맨드는 k페이지 중 적어도 하나를 프로그래밍하기 위한 것인, 단계를 포함하는, 플래시 메모리 시스템에서의 고속 웨어 레벨링 프로그래밍 방법.
- 청구항 2에 있어서,상기 프로그래밍 단계는 k-(m*(j*i)) 페이지를 프로그래밍하기 위해 z의 플래시 메모리 장치의 각각에 프로그램 커맨드들을 순차적으로 제공하는 단계로서, 각 프로그램 커맨드는 k페이지 중 적어도 하나를 프로그래밍하기 위한 것인, 단계를 포함하는, 플래시 메모리 시스템에서의 고속 웨어 레벨링 프로그래밍 방법.
- 청구항 1에 있어서,상기 복수의 플래시 메모리 장치 중 적어도 2개는 서로 직렬로 접속되는, 플래시 메모리 시스템에서의 고속 웨어 레벨링 프로그래밍 방법.
- 청구항 4에 있어서,상기 적어도 2개의 복수의 플래시 메모리 장치 중 제1 플래시 메모리 장치가 제1 커맨드에 응답하여 제1 프로그래밍 동작을 행하고, 상기 제1 플래시 메모리 장치가 상기 제1 동작을 행하고 있는 동안, 상기 적어도 2개의 복수의 플래시 메모리 장치 중 제2 플래시 메모리 장치는 제2 커맨드에 응답하여 제2 프로그래밍 동작을 시작하는, 플래시 메모리 시스템에서의 고속 웨어 레벨링 프로그래밍 방법.
- 청구항 5에 있어서,상기 제2 플래시 메모리 장치가 상기 제2 프로그래밍 동작을 시작하기 전에, 상기 제2 커맨드가 상기 제1 플래시 메모리 장치를 통해서 상기 제2 플래시 메모리 장치로 전달되는, 플래시 메모리 시스템에서의 고속 웨어 레벨링 프로그래밍 방법.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US78808306P | 2006-03-31 | 2006-03-31 | |
US60/788,083 | 2006-03-31 | ||
PCT/CA2007/000501 WO2007112555A1 (en) | 2006-03-31 | 2007-03-29 | Flash memory system control scheme |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20090017494A KR20090017494A (ko) | 2009-02-18 |
KR101194965B1 true KR101194965B1 (ko) | 2012-10-25 |
Family
ID=38563033
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020087026519A KR101194965B1 (ko) | 2006-03-31 | 2007-03-29 | 플래시 메모리 시스템 제어 방식 |
Country Status (10)
Country | Link |
---|---|
US (2) | US7802064B2 (ko) |
EP (2) | EP2002442B1 (ko) |
JP (1) | JP5214587B2 (ko) |
KR (1) | KR101194965B1 (ko) |
CN (2) | CN101410906B (ko) |
AT (1) | ATE488009T1 (ko) |
DE (1) | DE602007010439D1 (ko) |
ES (1) | ES2498096T3 (ko) |
TW (2) | TW201445576A (ko) |
WO (1) | WO2007112555A1 (ko) |
Families Citing this family (73)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7644239B2 (en) | 2004-05-03 | 2010-01-05 | Microsoft Corporation | Non-volatile memory cache performance improvement |
US7490197B2 (en) | 2004-10-21 | 2009-02-10 | Microsoft Corporation | Using external memory devices to improve system performance |
US8914557B2 (en) | 2005-12-16 | 2014-12-16 | Microsoft Corporation | Optimizing write and wear performance for a memory |
US9003354B2 (en) * | 2006-07-20 | 2015-04-07 | Texas Instruments Incorporated | Optimizing memory usage and system performance in a file system requiring entire blocks to be erased for rewriting data |
TW200828320A (en) * | 2006-12-28 | 2008-07-01 | Genesys Logic Inc | Method for performing static wear leveling on flash memory |
US8631203B2 (en) | 2007-12-10 | 2014-01-14 | Microsoft Corporation | Management of external memory functioning as virtual cache |
WO2009094298A1 (en) * | 2008-01-25 | 2009-07-30 | Rambus Inc. | Multi-page parallel program flash memory |
KR20100114540A (ko) * | 2008-02-10 | 2010-10-25 | 램버스 인코포레이티드 | 부분적인 휘발성 저장부에 대한 플래시 메모리의 세그먼트화 |
JP2009266349A (ja) * | 2008-04-28 | 2009-11-12 | Toshiba Corp | 不揮発性半導体記憶装置 |
US8275970B2 (en) * | 2008-05-15 | 2012-09-25 | Microsoft Corp. | Optimizing write traffic to a disk |
US8032707B2 (en) | 2008-09-15 | 2011-10-04 | Microsoft Corporation | Managing cache data and metadata |
US9032151B2 (en) | 2008-09-15 | 2015-05-12 | Microsoft Technology Licensing, Llc | Method and system for ensuring reliability of cache data and metadata subsequent to a reboot |
US7953774B2 (en) | 2008-09-19 | 2011-05-31 | Microsoft Corporation | Aggregation of write traffic to a data store |
US8825940B1 (en) | 2008-12-02 | 2014-09-02 | Siliconsystems, Inc. | Architecture for optimizing execution of storage access commands |
US8880970B2 (en) * | 2008-12-23 | 2014-11-04 | Conversant Intellectual Property Management Inc. | Error detection method and a system including one or more memory devices |
US9176859B2 (en) * | 2009-01-07 | 2015-11-03 | Siliconsystems, Inc. | Systems and methods for improving the performance of non-volatile memory operations |
US8412880B2 (en) * | 2009-01-08 | 2013-04-02 | Micron Technology, Inc. | Memory system controller to manage wear leveling across a plurality of storage nodes |
US8924661B1 (en) * | 2009-01-18 | 2014-12-30 | Apple Inc. | Memory system including a controller and processors associated with memory devices |
US8508998B2 (en) | 2009-02-09 | 2013-08-13 | Rambus Inc. | Multiple plane, non-volatile memory with synchronized control |
TWI396090B (zh) * | 2009-02-18 | 2013-05-11 | Silicon Motion Inc | 快閃記憶裝置、資料儲存系統、以及傳送特殊命令至快閃記憶裝置之方法 |
US10079048B2 (en) * | 2009-03-24 | 2018-09-18 | Western Digital Technologies, Inc. | Adjusting access of non-volatile semiconductor memory based on access time |
US8832354B2 (en) | 2009-03-25 | 2014-09-09 | Apple Inc. | Use of host system resources by memory controller |
US8341501B2 (en) | 2009-04-30 | 2012-12-25 | International Business Machines Corporation | Adaptive endurance coding of non-volatile memories |
US8639877B2 (en) | 2009-06-30 | 2014-01-28 | International Business Machines Corporation | Wear leveling of solid state disks distributed in a plurality of redundant array of independent disk ranks |
US8234520B2 (en) | 2009-09-16 | 2012-07-31 | International Business Machines Corporation | Wear leveling of solid state disks based on usage information of data and parity received from a raid controller |
US8327092B2 (en) * | 2009-09-21 | 2012-12-04 | Freescale Semiconductor, Inc. | Memory device configurable as interleaved or non-interleaved memory |
US9244836B2 (en) * | 2009-11-23 | 2016-01-26 | Agiga Tech Inc. | Flash memory organization for reduced failure rate |
TWI486769B (zh) * | 2010-05-26 | 2015-06-01 | Netac Technology Co Ltd | 存儲設備及其輪詢方法 |
CN101923570B (zh) * | 2010-07-21 | 2012-07-04 | 中国电子科技集团公司第三十八研究所 | 一种在Windows CE环境下建立大页面Nand Flash存储***的方法 |
EP2418584A1 (en) | 2010-08-13 | 2012-02-15 | Thomson Licensing | Method and apparatus for storing at least two data streams into an array of memories, or for reading at least two data streams from an array of memories |
US8769374B2 (en) | 2010-10-13 | 2014-07-01 | International Business Machines Corporation | Multi-write endurance and error control coding of non-volatile memories |
WO2012048444A1 (en) | 2010-10-14 | 2012-04-19 | Freescale Semiconductor, Inc. Are | Memory controller and method for accessing a plurality of non-volatile memory arrays |
US8539139B1 (en) | 2010-12-17 | 2013-09-17 | Teradota Us, Inc. | Managing device wearout using I/O metering |
US8797799B2 (en) * | 2012-01-05 | 2014-08-05 | Conversant Intellectual Property Management Inc. | Device selection schemes in multi chip package NAND flash memory system |
WO2014077823A2 (en) | 2012-11-15 | 2014-05-22 | Empire Technology Development Llc | A scalable storage system having multiple storage channels |
US10445229B1 (en) | 2013-01-28 | 2019-10-15 | Radian Memory Systems, Inc. | Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies |
US9229854B1 (en) | 2013-01-28 | 2016-01-05 | Radian Memory Systems, LLC | Multi-array operation support and related devices, systems and software |
US11249652B1 (en) | 2013-01-28 | 2022-02-15 | Radian Memory Systems, Inc. | Maintenance of nonvolatile memory on host selected namespaces by a common memory controller |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US10642505B1 (en) | 2013-01-28 | 2020-05-05 | Radian Memory Systems, Inc. | Techniques for data migration based on per-data metrics and memory degradation |
US9092353B1 (en) | 2013-01-29 | 2015-07-28 | Pmc-Sierra Us, Inc. | Apparatus and method based on LDPC codes for adjusting a correctable raw bit error rate limit in a memory system |
US10230396B1 (en) | 2013-03-05 | 2019-03-12 | Microsemi Solutions (Us), Inc. | Method and apparatus for layer-specific LDPC decoding |
US9813080B1 (en) | 2013-03-05 | 2017-11-07 | Microsemi Solutions (U.S.), Inc. | Layer specific LDPC decoder |
US9397701B1 (en) | 2013-03-11 | 2016-07-19 | Microsemi Storage Solutions (Us), Inc. | System and method for lifetime specific LDPC decoding |
US9590656B2 (en) | 2013-03-15 | 2017-03-07 | Microsemi Storage Solutions (Us), Inc. | System and method for higher quality log likelihood ratios in LDPC decoding |
US9450610B1 (en) | 2013-03-15 | 2016-09-20 | Microsemi Storage Solutions (Us), Inc. | High quality log likelihood ratios determined using two-index look-up table |
US9454414B2 (en) | 2013-03-15 | 2016-09-27 | Microsemi Storage Solutions (Us), Inc. | System and method for accumulating soft information in LDPC decoding |
US9324389B2 (en) * | 2013-05-29 | 2016-04-26 | Sandisk Technologies Inc. | High performance system topology for NAND memory systems |
US9728526B2 (en) | 2013-05-29 | 2017-08-08 | Sandisk Technologies Llc | Packaging of high performance system topology for NAND memory systems |
KR102254099B1 (ko) | 2014-05-19 | 2021-05-20 | 삼성전자주식회사 | 메모리 스와핑 처리 방법과 이를 적용하는 호스트 장치, 스토리지 장치 및 데이터 처리 시스템 |
US9417804B2 (en) * | 2014-07-07 | 2016-08-16 | Microsemi Storage Solutions (Us), Inc. | System and method for memory block pool wear leveling |
US9292210B1 (en) | 2014-08-29 | 2016-03-22 | International Business Machines Corporation | Thermally sensitive wear leveling for a flash memory device that includes a plurality of flash memory modules |
US9542118B1 (en) | 2014-09-09 | 2017-01-10 | Radian Memory Systems, Inc. | Expositive flash memory control |
US10552085B1 (en) | 2014-09-09 | 2020-02-04 | Radian Memory Systems, Inc. | Techniques for directed data migration |
US10332613B1 (en) | 2015-05-18 | 2019-06-25 | Microsemi Solutions (Us), Inc. | Nonvolatile memory system with retention monitor |
US10552058B1 (en) | 2015-07-17 | 2020-02-04 | Radian Memory Systems, Inc. | Techniques for delegating data processing to a cooperative memory controller |
US9799405B1 (en) | 2015-07-29 | 2017-10-24 | Ip Gem Group, Llc | Nonvolatile memory system with read circuit for performing reads using threshold voltage shift read instruction |
KR102296740B1 (ko) * | 2015-09-16 | 2021-09-01 | 삼성전자 주식회사 | 메모리 장치 및 그것을 포함하는 메모리 시스템 |
US9886214B2 (en) | 2015-12-11 | 2018-02-06 | Ip Gem Group, Llc | Nonvolatile memory system with erase suspend circuit and method for erase suspend management |
US9892794B2 (en) | 2016-01-04 | 2018-02-13 | Ip Gem Group, Llc | Method and apparatus with program suspend using test mode |
US9899092B2 (en) | 2016-01-27 | 2018-02-20 | Ip Gem Group, Llc | Nonvolatile memory system with program step manager and method for program step management |
US10291263B2 (en) | 2016-07-28 | 2019-05-14 | Ip Gem Group, Llc | Auto-learning log likelihood ratio |
US10283215B2 (en) | 2016-07-28 | 2019-05-07 | Ip Gem Group, Llc | Nonvolatile memory system with background reference positioning and local reference positioning |
US10236915B2 (en) | 2016-07-29 | 2019-03-19 | Microsemi Solutions (U.S.), Inc. | Variable T BCH encoding |
US9928907B1 (en) * | 2017-01-27 | 2018-03-27 | Western Digital Technologies, Inc. | Block erase schemes for cross-point non-volatile memory devices |
US10600484B2 (en) | 2017-12-20 | 2020-03-24 | Silicon Storage Technology, Inc. | System and method for minimizing floating gate to floating gate coupling effects during programming in flash memory |
US10552319B2 (en) * | 2018-06-01 | 2020-02-04 | Intel Corporation | Interleave set aware object allocation |
US11315649B2 (en) | 2019-04-16 | 2022-04-26 | Samsung Electronics Co., Ltd. | Memory controller, memory device and memory system having improved threshold voltage distribution characteristics and related operating methods |
KR102671402B1 (ko) | 2019-04-16 | 2024-05-31 | 삼성전자주식회사 | 문턱전압 산포 특성을 향상한 메모리 컨트롤러, 메모리 시스템 및 그 동작방법 |
US11049570B2 (en) | 2019-06-26 | 2021-06-29 | International Business Machines Corporation | Dynamic writes-per-day adjustment for storage drives |
US11163482B2 (en) | 2019-06-26 | 2021-11-02 | International Business Machines Corporation | Dynamic performance-class adjustment for storage drives |
US11137915B2 (en) | 2019-06-27 | 2021-10-05 | International Business Machines Corporation | Dynamic logical storage capacity adjustment for storage drives |
US11175984B1 (en) | 2019-12-09 | 2021-11-16 | Radian Memory Systems, Inc. | Erasure coding techniques for flash memory |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050160218A1 (en) | 2004-01-20 | 2005-07-21 | Sun-Teck See | Highly integrated mass storage device with an intelligent flash controller |
Family Cites Families (87)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4174536A (en) * | 1977-01-21 | 1979-11-13 | Massachusetts Institute Of Technology | Digital communications controller with firmware control |
DE3586523T2 (de) * | 1984-10-17 | 1993-01-07 | Fujitsu Ltd | Halbleiterspeicheranordnung mit einer seriellen dateneingangs- und ausgangsschaltung. |
US4683555A (en) * | 1985-01-22 | 1987-07-28 | Texas Instruments Incorporated | Serial accessed semiconductor memory with reconfigureable shift registers |
WO1990010903A1 (en) * | 1989-03-15 | 1990-09-20 | Oki Electric Industry Co., Ltd. | Serial data receiving circuit |
US5126808A (en) * | 1989-10-23 | 1992-06-30 | Advanced Micro Devices, Inc. | Flash EEPROM array with paged erase architecture |
US5175819A (en) * | 1990-03-28 | 1992-12-29 | Integrated Device Technology, Inc. | Cascadable parallel to serial converter using tap shift registers and data shift registers while receiving input data from FIFO buffer |
US5243703A (en) * | 1990-04-18 | 1993-09-07 | Rambus, Inc. | Apparatus for synchronously generating clock signals in a data processing system |
US5430859A (en) * | 1991-07-26 | 1995-07-04 | Sundisk Corporation | Solid state memory system including plural memory chips and a serialized bus |
US6230233B1 (en) * | 1991-09-13 | 2001-05-08 | Sandisk Corporation | Wear leveling techniques for flash EEPROM systems |
JP3178909B2 (ja) * | 1992-01-10 | 2001-06-25 | 株式会社東芝 | 半導体メモリ装置 |
KR950000761B1 (ko) * | 1992-01-15 | 1995-01-28 | 삼성전자 주식회사 | 직렬 입력신호의 동기회로 |
JP3088180B2 (ja) * | 1992-03-26 | 2000-09-18 | 日本電気アイシーマイコンシステム株式会社 | シリアル入力インタフェース回路 |
JP3328321B2 (ja) * | 1992-06-22 | 2002-09-24 | 株式会社日立製作所 | 半導体記憶装置 |
KR960000616B1 (ko) * | 1993-01-13 | 1996-01-10 | 삼성전자주식회사 | 불휘발성 반도체 메모리 장치 |
JPH06266596A (ja) * | 1993-03-11 | 1994-09-22 | Hitachi Ltd | フラッシュメモリファイル記憶装置および情報処理装置 |
JPH06275069A (ja) * | 1993-03-20 | 1994-09-30 | Hitachi Ltd | シリアルメモリ |
US5365484A (en) * | 1993-08-23 | 1994-11-15 | Advanced Micro Devices, Inc. | Independent array grounds for flash EEPROM array with paged erase architechture |
JPH0793219A (ja) * | 1993-09-20 | 1995-04-07 | Olympus Optical Co Ltd | 情報処理装置 |
US5602780A (en) * | 1993-10-20 | 1997-02-11 | Texas Instruments Incorporated | Serial to parallel and parallel to serial architecture for a RAM based FIFO memory |
US5452259A (en) * | 1993-11-15 | 1995-09-19 | Micron Technology Inc. | Multiport memory with pipelined serial input |
US5404460A (en) * | 1994-01-28 | 1995-04-04 | Vlsi Technology, Inc. | Method for configuring multiple identical serial I/O devices to unique addresses through a serial bus |
US5596724A (en) * | 1994-02-04 | 1997-01-21 | Advanced Micro Devices | Input/output data port with a parallel and serial interface |
DE4429433C1 (de) * | 1994-08-19 | 1995-10-26 | Siemens Ag | Adreßzuordnungsverfahren |
US5473566A (en) * | 1994-09-12 | 1995-12-05 | Cirrus Logic, Inc. | Memory architecture and devices, systems and methods utilizing the same |
KR0142367B1 (ko) * | 1995-02-04 | 1998-07-15 | 김광호 | 열 리던던씨를 가지는 불휘발성 반도체 메모리의 소거 검증회로 |
US5636342A (en) * | 1995-02-17 | 1997-06-03 | Dell Usa, L.P. | Systems and method for assigning unique addresses to agents on a system management bus |
US5568423A (en) * | 1995-04-14 | 1996-10-22 | Unisys Corporation | Flash memory wear leveling system providing immediate direct access to microprocessor |
US5835935A (en) * | 1995-09-13 | 1998-11-10 | Lexar Media, Inc. | Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory |
JP3693721B2 (ja) * | 1995-11-10 | 2005-09-07 | Necエレクトロニクス株式会社 | フラッシュメモリ内蔵マイクロコンピュータ及びそのテスト方法 |
TW307869B (en) * | 1995-12-20 | 1997-06-11 | Toshiba Co Ltd | Semiconductor memory |
KR100211760B1 (ko) * | 1995-12-28 | 1999-08-02 | 윤종용 | 멀티뱅크 구조를 갖는 반도체 메모리 장치의 데이타 입출력 경로 제어회로 |
KR0170723B1 (ko) * | 1995-12-29 | 1999-03-30 | 김광호 | 단일 ras 신호에 의해 동시 동작이 가능한 이중 뱅크를 갖는 반도체 메모리 장치 |
US5828899A (en) * | 1996-01-04 | 1998-10-27 | Compaq Computer Corporation | System for peripheral devices recursively generating unique addresses based on the number of devices connected dependent upon the relative position to the port |
JPH09231740A (ja) * | 1996-02-21 | 1997-09-05 | Nec Corp | 半導体記憶装置 |
US5941974A (en) * | 1996-11-29 | 1999-08-24 | Motorola, Inc. | Serial interface with register selection which uses clock counting, chip select pulsing, and no address bits |
KR100243335B1 (ko) * | 1996-12-31 | 2000-02-01 | 김영환 | 독립적인 리프레쉬 수단을 가지는 데이지 체인 구조의 반도체 장치 |
KR100272037B1 (ko) * | 1997-02-27 | 2000-12-01 | 니시무로 타이죠 | 불휘발성 반도체 기억 장치 |
GB2329792A (en) * | 1997-08-20 | 1999-03-31 | Nokia Telecommunications Oy | Identification signals enable a transceiver module to correctly configure itself to an attached functional module |
JPH1166841A (ja) * | 1997-08-22 | 1999-03-09 | Mitsubishi Electric Corp | 半導体記憶装置 |
US6000006A (en) * | 1997-08-25 | 1999-12-07 | Bit Microsystems, Inc. | Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage |
KR100240873B1 (ko) * | 1997-08-26 | 2000-01-15 | 윤종용 | 송수신 겸용의 레지스터를 갖는 직렬인터페이스장치 |
JP4039532B2 (ja) * | 1997-10-02 | 2008-01-30 | 株式会社ルネサステクノロジ | 半導体集積回路装置 |
US5937425A (en) * | 1997-10-16 | 1999-08-10 | M-Systems Flash Disk Pioneers Ltd. | Flash file system optimized for page-mode flash technologies |
US6148364A (en) * | 1997-12-30 | 2000-11-14 | Netlogic Microsystems, Inc. | Method and apparatus for cascading content addressable memory devices |
US6002638A (en) * | 1998-01-20 | 1999-12-14 | Microchip Technology Incorporated | Memory device having a switchable clock output and method therefor |
WO1999045460A2 (en) | 1998-03-02 | 1999-09-10 | Lexar Media, Inc. | Flash memory card with enhanced operating mode detection and user-friendly interfacing system |
US6085290A (en) * | 1998-03-10 | 2000-07-04 | Nexabit Networks, Llc | Method of and apparatus for validating data read out of a multi port internally cached dynamic random access memory (AMPIC DRAM) |
US6144576A (en) * | 1998-08-19 | 2000-11-07 | Intel Corporation | Method and apparatus for implementing a serial memory architecture |
US5995417A (en) * | 1998-10-20 | 1999-11-30 | Advanced Micro Devices, Inc. | Scheme for page erase and erase verify in a non-volatile memory array |
JP4601737B2 (ja) * | 1998-10-28 | 2010-12-22 | 株式会社東芝 | メモリ混載ロジックlsi |
JP2000149564A (ja) * | 1998-10-30 | 2000-05-30 | Mitsubishi Electric Corp | 半導体記憶装置 |
US6304921B1 (en) * | 1998-12-07 | 2001-10-16 | Motorola Inc. | System for serial peripheral interface with embedded addressing circuit for providing portion of an address for peripheral devices |
KR100284742B1 (ko) * | 1998-12-28 | 2001-04-02 | 윤종용 | 입출력 센스앰프의 개수가 최소화된 메모리장치 |
US7130958B2 (en) * | 2003-12-02 | 2006-10-31 | Super Talent Electronics, Inc. | Serial interface to flash-memory chip using PCI-express-like packets and packed data for partial-page writes |
US6680904B1 (en) * | 1999-12-27 | 2004-01-20 | Orckit Communications Ltd. | Bi-directional chaining of network access ports |
US6442098B1 (en) * | 2000-02-08 | 2002-08-27 | Alliance Semiconductor | High performance multi-bank compact synchronous DRAM architecture |
US6988154B2 (en) | 2000-03-10 | 2006-01-17 | Arc International | Memory interface and method of interfacing between functional entities |
US6816933B1 (en) | 2000-05-17 | 2004-11-09 | Silicon Laboratories, Inc. | Serial device daisy chaining method and apparatus |
US6535948B1 (en) * | 2000-05-31 | 2003-03-18 | Agere Systems Inc. | Serial interface unit |
US6317350B1 (en) * | 2000-06-16 | 2001-11-13 | Netlogic Microsystems, Inc. | Hierarchical depth cascading of content addressable memory devices |
US6754807B1 (en) | 2000-08-31 | 2004-06-22 | Stmicroelectronics, Inc. | System and method for managing vertical dependencies in a digital signal processor |
US6317352B1 (en) * | 2000-09-18 | 2001-11-13 | Intel Corporation | Apparatus for implementing a buffered daisy chain connection between a memory controller and memory modules |
US6853557B1 (en) * | 2000-09-20 | 2005-02-08 | Rambus, Inc. | Multi-channel memory architecture |
JP3992960B2 (ja) * | 2000-10-26 | 2007-10-17 | 松下電器産業株式会社 | 記録装置及びプログラム |
FR2816751A1 (fr) | 2000-11-15 | 2002-05-17 | St Microelectronics Sa | Memoire flash effacable par page |
US6732221B2 (en) * | 2001-06-01 | 2004-05-04 | M-Systems Flash Disk Pioneers Ltd | Wear leveling of static areas in flash memory |
US6996644B2 (en) | 2001-06-06 | 2006-02-07 | Conexant Systems, Inc. | Apparatus and methods for initializing integrated circuit addresses |
KR100413762B1 (ko) * | 2001-07-02 | 2003-12-31 | 삼성전자주식회사 | 뱅크 수를 가변할 수 있는 반도체 장치 및 그 방법 |
US6928501B2 (en) | 2001-10-15 | 2005-08-09 | Silicon Laboratories, Inc. | Serial device daisy chaining method and apparatus |
US6763426B1 (en) | 2001-12-27 | 2004-07-13 | Cypress Semiconductor Corporation | Cascadable content addressable memory (CAM) device and architecture |
US7062601B2 (en) | 2002-06-28 | 2006-06-13 | Mosaid Technologies Incorporated | Method and apparatus for interconnecting content addressable memory devices |
KR100499686B1 (ko) | 2002-07-23 | 2005-07-07 | 주식회사 디지털웨이 | 메모리 확장 가능한 휴대용 플래쉬 메모리 장치 |
CA2396632A1 (en) | 2002-07-31 | 2004-01-31 | Mosaid Technologies Incorporated | Cam diamond cascade architecture |
KR100487539B1 (ko) | 2002-09-02 | 2005-05-03 | 삼성전자주식회사 | 직렬 에이티에이 케이블과 연결되는 불휘발성 반도체메모리 장치 |
EP1424635B1 (en) | 2002-11-28 | 2008-10-29 | STMicroelectronics S.r.l. | Non volatile memory device architecture, for instance a flash kind, having a serial communication interface |
US7296112B1 (en) * | 2002-12-10 | 2007-11-13 | Greenfield Networks, Inc. | High bandwidth memory management using multi-bank DRAM devices |
KR100493884B1 (ko) | 2003-01-09 | 2005-06-10 | 삼성전자주식회사 | 시리얼 플래시 메모리에서의 현지 실행을 위한 제어 장치및 그 방법, 이를 이용한 플래시 메모리 칩 |
US20040199721A1 (en) | 2003-03-12 | 2004-10-07 | Power Data Communication Co., Ltd. | Multi-transmission interface memory card |
JP4836794B2 (ja) * | 2003-05-13 | 2011-12-14 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | シリアルメモリインターコネクトを介して複数のメモリモジュールに接続されたホストを含むシステム |
JP4156986B2 (ja) | 2003-06-30 | 2008-09-24 | 株式会社東芝 | 不揮発性半導体記憶装置 |
US7779212B2 (en) * | 2003-10-17 | 2010-08-17 | Micron Technology, Inc. | Method and apparatus for sending data from multiple sources over a communications bus |
US7631138B2 (en) * | 2003-12-30 | 2009-12-08 | Sandisk Corporation | Adaptive mode switching of flash memory address mapping based on host usage characteristics |
CN100495369C (zh) * | 2004-01-20 | 2009-06-03 | 特科2000国际有限公司 | 使用多个存储器设备的便携数据存储设备 |
CN1655277A (zh) * | 2004-02-09 | 2005-08-17 | 联想(北京)有限公司 | 多功能数据存储装置及方法 |
US8375146B2 (en) * | 2004-08-09 | 2013-02-12 | SanDisk Technologies, Inc. | Ring bus structure and its use in flash memory systems |
KR100705221B1 (ko) | 2004-09-03 | 2007-04-06 | 에스티마이크로일렉트로닉스 엔.브이. | 플래쉬 메모리 소자 및 이를 이용한 플래쉬 메모리 셀의소거 방법 |
US6950325B1 (en) | 2004-10-07 | 2005-09-27 | Winbond Electronics Corporation | Cascade-connected ROM |
-
2007
- 2007-03-29 DE DE602007010439T patent/DE602007010439D1/de active Active
- 2007-03-29 EP EP07719433A patent/EP2002442B1/en active Active
- 2007-03-29 EP EP10171414.5A patent/EP2242058B1/en not_active Not-in-force
- 2007-03-29 CN CN200780011511.1A patent/CN101410906B/zh not_active Expired - Fee Related
- 2007-03-29 CN CN201010566734.8A patent/CN102063931B/zh not_active Expired - Fee Related
- 2007-03-29 KR KR1020087026519A patent/KR101194965B1/ko not_active IP Right Cessation
- 2007-03-29 WO PCT/CA2007/000501 patent/WO2007112555A1/en active Application Filing
- 2007-03-29 JP JP2009501801A patent/JP5214587B2/ja not_active Expired - Fee Related
- 2007-03-29 AT AT07719433T patent/ATE488009T1/de not_active IP Right Cessation
- 2007-03-29 ES ES10171414.5T patent/ES2498096T3/es active Active
- 2007-03-29 US US11/693,027 patent/US7802064B2/en active Active
- 2007-03-30 TW TW103126004A patent/TW201445576A/zh unknown
- 2007-03-30 TW TW096111391A patent/TWI456582B/zh not_active IP Right Cessation
-
2010
- 2010-08-12 US US12/855,171 patent/US20100325353A1/en not_active Abandoned
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050160218A1 (en) | 2004-01-20 | 2005-07-21 | Sun-Teck See | Highly integrated mass storage device with an intelligent flash controller |
Also Published As
Publication number | Publication date |
---|---|
CN101410906A (zh) | 2009-04-15 |
ATE488009T1 (de) | 2010-11-15 |
DE602007010439D1 (de) | 2010-12-23 |
TWI456582B (zh) | 2014-10-11 |
EP2242058A2 (en) | 2010-10-20 |
CN101410906B (zh) | 2015-04-29 |
WO2007112555A1 (en) | 2007-10-11 |
US20070233939A1 (en) | 2007-10-04 |
JP2009531747A (ja) | 2009-09-03 |
KR20090017494A (ko) | 2009-02-18 |
ES2498096T3 (es) | 2014-09-24 |
EP2002442B1 (en) | 2010-11-10 |
EP2002442A1 (en) | 2008-12-17 |
TW200805396A (en) | 2008-01-16 |
EP2242058B1 (en) | 2014-07-16 |
CN102063931B (zh) | 2014-07-30 |
US20100325353A1 (en) | 2010-12-23 |
EP2002442A4 (en) | 2009-05-06 |
EP2242058A3 (en) | 2011-05-25 |
CN102063931A (zh) | 2011-05-18 |
US7802064B2 (en) | 2010-09-21 |
JP5214587B2 (ja) | 2013-06-19 |
TW201445576A (zh) | 2014-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101194965B1 (ko) | 플래시 메모리 시스템 제어 방식 | |
US11150808B2 (en) | Flash memory system | |
US9330765B2 (en) | Non-volatile memory device having configurable page size | |
US8619493B2 (en) | Flexible memory operations in NAND flash devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20150918 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |