KR101194965B1 - 플래시 메모리 시스템 제어 방식 - Google Patents

플래시 메모리 시스템 제어 방식 Download PDF

Info

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
Application number
KR1020087026519A
Other languages
English (en)
Other versions
KR20090017494A (ko
Inventor
진기 김
Original Assignee
모사이드 테크놀로지스 인코퍼레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 모사이드 테크놀로지스 인코퍼레이티드 filed Critical 모사이드 테크놀로지스 인코퍼레이티드
Publication of KR20090017494A publication Critical patent/KR20090017494A/ko
Application granted granted Critical
Publication of KR101194965B1 publication Critical patent/KR101194965B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • G11C7/1042Read-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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/32Timing circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • G11C7/1018Serial bit line access mode, e.g. using bit line address shift registers, bit line address counters, bit line burst counters
    • G11C7/1021Page 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2216/00Indexing scheme relating to G11C16/00 and subgroups, for features not directly covered by these groups
    • G11C2216/12Reading and writing aspects of erasable programmable read-only memories
    • G11C2216/22Nonvolatile 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2216/00Indexing scheme relating to G11C16/00 and subgroups, for features not directly covered by these groups
    • G11C2216/12Reading and writing aspects of erasable programmable read-only memories
    • G11C2216/24Nonvolatile 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

Abstract

데이터의 고속 프로그래밍을 얻기 위해 직렬로 접속된 플래시 메모리 장치를 갖는 플래시 메모리 시스템 구조가 개시된다. 데이터의 고속 프로그래밍은 시스템의 메모리 장치들 중에서 프로그래밍되는 데이터의 페이지를 인터리브함으로써 달성되므로, 다른 페이지의 데이터가 다른 메모리 장치에 저장된다. 메모리 컨트롤러는 각 메모리 장치에 대해 프로그램 커맨드를 발행한다. 각 메모리 장치가 프로그램 커맨드를 수신하면서, 프로그래밍 동작을 시작하거나 커맨드를 다음의 메모리 장치에 전달한다. 그러므로, 플래시 시스템의 메모리 장치들은 데이터의 페이지들을 교대로 프로그래밍함으로서, 플래시 메모리 시스템으로 데이터의 각 페이지를 프로그래밍하는데 있어서 지연을 최소화한다. 메모리 컨트롤러는 각 메모리 장치의 내성을 최대화하거나 임의의 크기의 데이터에 대해 프로그래밍 성능 및 내성을 최적화하기 위해 웨어 레벨링 알고리즘을 실행할 수 있다.

Description

플래시 메모리 시스템 제어 방식{FLASH MEMORY SYSTEM CONTROL SCHEME}
본 출원은, 전체가 여기에 참고로 통합되어 있는, 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)

  1. 복수의 플래시 메모리 장치를 갖는 플래시 메모리 시스템에서의 고속 웨어 레벨링 프로그래밍 방법으로서,
    ⅰ) 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보다 큰 정수값인, 단계를 포함하는, 플래시 메모리 시스템에서의 고속 웨어 레벨링 프로그래밍 방법.
  2. 청구항 1에 있어서,
    상기 프로그래밍 단계는, 데이터 파일의 j*i 페이지를 프로그래밍하기 위해 j의 플래시 메모리 장치의 각각에 프로그램 커맨드들을 순차적으로 제공하는 단계로서, 각 프로그램 커맨드는 k페이지 중 적어도 하나를 프로그래밍하기 위한 것인, 단계를 포함하는, 플래시 메모리 시스템에서의 고속 웨어 레벨링 프로그래밍 방법.
  3. 청구항 2에 있어서,
    상기 프로그래밍 단계는 k-(m*(j*i)) 페이지를 프로그래밍하기 위해 z의 플래시 메모리 장치의 각각에 프로그램 커맨드들을 순차적으로 제공하는 단계로서, 각 프로그램 커맨드는 k페이지 중 적어도 하나를 프로그래밍하기 위한 것인, 단계를 포함하는, 플래시 메모리 시스템에서의 고속 웨어 레벨링 프로그래밍 방법.
  4. 청구항 1에 있어서,
    상기 복수의 플래시 메모리 장치 중 적어도 2개는 서로 직렬로 접속되는, 플래시 메모리 시스템에서의 고속 웨어 레벨링 프로그래밍 방법.
  5. 청구항 4에 있어서,
    상기 적어도 2개의 복수의 플래시 메모리 장치 중 제1 플래시 메모리 장치가 제1 커맨드에 응답하여 제1 프로그래밍 동작을 행하고, 상기 제1 플래시 메모리 장치가 상기 제1 동작을 행하고 있는 동안, 상기 적어도 2개의 복수의 플래시 메모리 장치 중 제2 플래시 메모리 장치는 제2 커맨드에 응답하여 제2 프로그래밍 동작을 시작하는, 플래시 메모리 시스템에서의 고속 웨어 레벨링 프로그래밍 방법.
  6. 청구항 5에 있어서,
    상기 제2 플래시 메모리 장치가 상기 제2 프로그래밍 동작을 시작하기 전에, 상기 제2 커맨드가 상기 제1 플래시 메모리 장치를 통해서 상기 제2 플래시 메모리 장치로 전달되는, 플래시 메모리 시스템에서의 고속 웨어 레벨링 프로그래밍 방법.
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
KR1020087026519A 2006-03-31 2007-03-29 플래시 메모리 시스템 제어 방식 KR101194965B1 (ko)

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) EP2242058B1 (ko)
JP (1) JP5214587B2 (ko)
KR (1) KR101194965B1 (ko)
CN (2) CN102063931B (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)

* Cited by examiner, † Cited by third party
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
US8310872B2 (en) * 2008-01-25 2012-11-13 Rambus Inc. Multi-page parallel program flash memory
WO2009100149A1 (en) * 2008-02-10 2009-08-13 Rambus, Inc. Segmentation of flash memory for partial volatile storage
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
EP2394221A4 (en) * 2009-02-09 2012-11-21 Rambus Inc NON-VOLATILE MEMORY WITH MULTIPLE LEVELS 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
US9501437B2 (en) 2012-11-15 2016-11-22 Empire Technology Development Llc Scalable storage system having multiple storage channels
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
US10642505B1 (en) 2013-01-28 2020-05-05 Radian Memory Systems, Inc. Techniques for data migration based on per-data metrics and memory degradation
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
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
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
US9813080B1 (en) 2013-03-05 2017-11-07 Microsemi Solutions (U.S.), Inc. Layer specific LDPC decoder
US10230396B1 (en) 2013-03-05 2019-03-12 Microsemi Solutions (Us), Inc. Method and apparatus for layer-specific LDPC decoding
US9397701B1 (en) 2013-03-11 2016-07-19 Microsemi Storage Solutions (Us), Inc. System and method for lifetime specific LDPC decoding
US9454414B2 (en) 2013-03-15 2016-09-27 Microsemi Storage Solutions (Us), Inc. System and method for accumulating soft information in 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
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
US10552085B1 (en) 2014-09-09 2020-02-04 Radian Memory Systems, Inc. Techniques for directed data migration
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
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
KR20200121654A (ko) 2019-04-16 2020-10-26 삼성전자주식회사 문턱전압 산포 특성을 향상한 메모리 컨트롤러, 메모리 시스템 및 그 동작방법
US11163482B2 (en) 2019-06-26 2021-11-02 International Business Machines Corporation Dynamic performance-class adjustment for storage drives
US11049570B2 (en) 2019-06-26 2021-06-29 International Business Machines Corporation Dynamic writes-per-day 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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
EP0179605B1 (en) 1984-10-17 1992-08-19 Fujitsu Limited Semiconductor memory device having a serial data input circuit and a serial data output circuit
US4683555A (en) 1985-01-22 1987-07-28 Texas Instruments Incorporated Serial accessed semiconductor memory with reconfigureable shift registers
EP0417314B1 (en) 1989-03-15 1997-06-04 Oki Electric Industry Company, Limited Serial in to parallel out converting 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
WO2001069411A2 (en) 2000-03-10 2001-09-20 Arc International Plc 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
DE112004000821B4 (de) * 2003-05-13 2016-12-01 Advanced Micro Devices, Inc. System mit einem Hauptrechner, der mit mehreren Speichermodulen über eine serielle Speicherverbindung verbunden ist
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
BRPI0418431A (pt) * 2004-01-20 2007-05-22 Trek 2000 Int Ltd dispositivo de armazenamento de dados portátil utilizando dispositivos de múltiplas memórias
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
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
EP2002442A4 (en) 2009-05-06
US7802064B2 (en) 2010-09-21
EP2242058B1 (en) 2014-07-16
EP2002442B1 (en) 2010-11-10
US20070233939A1 (en) 2007-10-04
JP5214587B2 (ja) 2013-06-19
TW201445576A (zh) 2014-12-01
EP2242058A2 (en) 2010-10-20
KR20090017494A (ko) 2009-02-18
DE602007010439D1 (de) 2010-12-23
EP2242058A3 (en) 2011-05-25
CN101410906B (zh) 2015-04-29
ATE488009T1 (de) 2010-11-15
ES2498096T3 (es) 2014-09-24
CN101410906A (zh) 2009-04-15
CN102063931A (zh) 2011-05-18
WO2007112555A1 (en) 2007-10-11
JP2009531747A (ja) 2009-09-03
CN102063931B (zh) 2014-07-30
TWI456582B (zh) 2014-10-11
TW200805396A (en) 2008-01-16
EP2002442A1 (en) 2008-12-17
US20100325353A1 (en) 2010-12-23

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