KR20110010770A - 메모리 디바이스를 위한 단편화 프로그램 명령 - Google Patents

메모리 디바이스를 위한 단편화 프로그램 명령 Download PDF

Info

Publication number
KR20110010770A
KR20110010770A KR1020107027763A KR20107027763A KR20110010770A KR 20110010770 A KR20110010770 A KR 20110010770A KR 1020107027763 A KR1020107027763 A KR 1020107027763A KR 20107027763 A KR20107027763 A KR 20107027763A KR 20110010770 A KR20110010770 A KR 20110010770A
Authority
KR
South Korea
Prior art keywords
program
command
memory cells
fractional
memory
Prior art date
Application number
KR1020107027763A
Other languages
English (en)
Inventor
브렌트 에스. 하와크니스
이안 세이퍼
게리 비. 브로너
Original Assignee
램버스 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 램버스 인코포레이티드 filed Critical 램버스 인코포레이티드
Publication of KR20110010770A publication Critical patent/KR20110010770A/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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/7204Capacity control, e.g. partitioning, end-of-life degradation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)

Abstract

메모리 시스템(100B)은 비-휘발성 메모리 셀들의 어레이(140)와, 프로그램 동작을 위해 복수의 메모리 셀을 어드레스하는 프로그램 명령을 수신하는 제 1 포트(라인(101)에 접속된 포트)를 구비하고, 명령 파이프라인을 통해 상기 메모리 어레이에 연결된 제 2 포트(라인(102, 103)에 접속된 포트)를 구비하고, 및 상기 프로그램 명령에 응답하여 복수의 단편화 프로그램 명령들을 생성하도록 구성되는 메모리 제어부(110)를 포함한다. 각 단편화 프로그램 명령의 실행은 단일 프로그램 펄스를 상기 어드레스된 메모리 셀들에게 인가하여 프로그램 데이터로 상기 어드레스된 메모리 셀들을 증분적으로 프로그램하고, 여기서 각 단편화 프로그램 명령에 연관된 상기 프로그램 펄스의 지속 기간은 상기 메모리 셀들을 프로그램하기 위해 일반적으로 요구되는 총 프로그램 시간 중 선택된 일부이다.

Description

메모리 디바이스를 위한 단편화 프로그램 명령{FRACTIONAL PROGRAM COMMANDS FOR MEMORY DEVICES}
본 발명은 전체적으로 메모리 디바이스에 관한 것이고, 특히 증분 프로그래밍(incremental programming) 기술을 이용하는, 메모리 디바이스를 위한 프로그램 동작들에 관한 것이다.
프로그래밍 정확도를 향상시키고, 과-프로그래밍을 회피하기 위해서, 특정 유형의 비-휘발성 메모리는 대개 프로그램 펄스와 검증(PV; Program pulse and Verify) 사이클의 시퀀스를 사용하여 프로그램된다. 플래시 메모리와 ReRAM(Resistive Random Access Memory)는 프로그래밍을 위해 다수의 연속된 PV 사이클의 사용을 빈번하게 요구하는 메모리의 2 가지 유형이다. 일반적으로 각 PV 사이클은, 메모리 셀이 적절하게 프로그램되었는지를 판단하는 검증 동작뿐만 아니라, 소정 지속 기간(duration) 동안 프로그램 전압을 메모리 셀들에 인가함으로써 메모리 셀들의 플로팅 게이트들 상에 저장되는 전하를 증분적으로 증가시키는 프로그램 펄스를 포함한다. 특히, 플래시 메모리 어레이 내에서 프로그램 명령의 실행 동안, 어드레스된 플로팅 게이트 메모리 내에 데이터를 증분적으로 프로그램하기 위하여 제 1 프로그램 펄스가 그 어드레스된 메모리의 컨트롤 게이트들에 인가되고, 이어서 어드레스된 메모리 셀들이 적절하게 프로그램되었는지를 검증하기 위해 그 어드레스된 메모리 셀들의 콘텐츠(contents)가 검사되는 제 1 PV 사이클이 개시된다. 제 1 PV 사이클 동안 적절하게(즉, 완전하게) 프로그램되지 않은 모든 메모리 셀들이 식별되고, 이어서 제 2 PV 사이클이 그 식별된 메모리 셀들에 대하여 개시된다. 이 프로세스는 상기 프로그램 명령어에 의해 어드레스된 모든 메모리 셀들이 프로그램 데이터로 완전하게 프로그램될 때까지 반복된다.
프로그램 명령어와 연관된 PV 사이클의 시퀀스가 시작되면, 메모리 어레이내의 모든 메모리 셀은 일반적으로 프로그램 명령의 실행이 완료될 때까지 다른 동작(예를 들어, 판독 동작들)에 사용될 수 없다.
따라서, 프로그램 동작 동안 더욱 빠르고 능률적인 방식으로 액세스될 수 있는 비-휘발성 메모리가 요구된다.
프로그램 동작 동안 메모리 셀들의 어레이가 액세스되거나 이용되도록 하는 메모리 시스템이 개시된다. 일부 실시형태에 따르면, 프로그램 동작은 명령 파이프라인(command pipeline)을 통해 파이프라인 방식으로 메모리 셀들의 어레이에 선택적으로 제공될 수 있는 복수의 개별적이고 독립적으로 실행가능한 단편화 프로그램 명령을 사용하여 수행된다. 다른 비-프로그램 명령들(예를 들어, 판독 명령, 삭제 명령 등)은, 프로그램 동작이 진행중인 동안에 어떤 단편화 프로그램 명령들의 실행도 방해하지 않고 비-프로그램 명령들이 메모리 어레이 내에서 실행될 수 있도록, 단편화 프로그램 명령들 사이의 명령 파이프라인 안에 선택적으로 삽입될 수 있다.
본 명세서에서 사용된 것처럼, "비-휘발성" 이라는 용어는 전력 손실 후에 상당한 시간 동안 데이터를 보존함으로써, 호스트 시스템이 전력 오프(전원이 완전하게 방전됨)된 다음 복원(파워 사이클)되어도 완전한 데이터 보존이 기대되는 메모리를 가리킨다. 비-휘발성 반도체 메모리 기술의 실시예들은 플래시 메모리, 상 변화 메모리(phase change memory), 저항 변화 메모리(resistance change memory), FRAM (ferroelectric RAM), MRAM (magnetic RAM), 및 다른 유사한 솔루션을 포함할 수 있다. "플래시" 메모리는 플로팅 게이트(floating gate)와 전하 트래핑(charge-trapping) 기술(예를 들어, 실리콘-산화물-질화물-산화물-실리콘(Silicon-Oxide-Nitride-Oxide-Silicon) 즉 "SONOS" 기술) 뿐만 아니라, NAND 및 NOR 코어 셀 구조 모두를 포함할 수 있다. 경년변화(aging) 또는 마모(wear)로부터의 다양한 영향은 반도체 메모리 셀이 점차적으로 감소된 보존 간격(retention interval)을 갖게 하여, 특정 메모리는 결국 그 특성이 비-휘발성에서 휘발성으로 변할 수 있다.
플래시 메모리들과 관련하여 설명되었지만, 본 명세서에서 설명된 실시형태들은 반도체 메모리 셀을 증분적으로 프로그램하는 다중 단계들(예를 들어, 기록전 삭제, 다중 프로그램 단계들, PV 사이클들의 사용 등), 상당한 프로그램 시간, 또는 최소 유니트 크기로 프로그램하는 것을 필요로 하는 임의 기술들로 확대될 수 있다.
본 명세서에서 설명된 예시적 메모리 시스템들의 경우, 메모리 어레이와 연관된 제어 회로는, 어레이의 복수의 메모리 셀들에 데이터를 프로그램하는 프로그램 동작을 위하여 어레이의 복수의 메모리 셀들을 어드레스하는 프로그램 명령(예를 들어, 호스트 디바이스, 호스트 제어부, 마이크로프로세서, 제어 소프트웨어 등과 같은 외부 소스로부터 수신됨)에 응답하여 복수의 단편화 프로그램 명령(fractional program command)을 생성한다. 명령 큐(예를 들어, 제어 회로와 연관됨) 내에 저장될 수 있는 단편화 프로그램 명령들은, 명령 파이프라인을 통해 독립적으로 실행가능한 명령으로서 메모리 어레이에 선택적으로 제공된다. 단편화 프로그램 명령 각각에 응답하여, 프로그램 펄스는 프로그램 명령에 의해 어드레스된 메모리 셀들의 컨트롤 게이트에 인가되어 메모리 셀들의 내부에 데이터를 증분적으로 프로그램하고, 검증 동작이 실행되어 어드레스된 메모리 셀들이 적절하게 프로그램되었는지 검증된다. 검증 데이터는 검증 동작의 결과를 나타내기 위하여 생성될 수 있다. 만약, 검증 데이터가 추가 프로그램 펄스들이 필요하다는 것을 나타내면, 제어 회로는 다음의 단편화 프로그램 명령을 메모리 어레이에 인가할 수 있다. 반대로, 만약 검증 데이터가 어드레스된 모든 메모리 셀들이 적절하게 프로그램되었다는 것을 나타내면, 제어 회로는 프로그램 동작을 종료할 수 있다. 일부 실시형태의 경우, 제어 회로는 메모리 디바이스 내에 마련될 수 있다. 다른 실시형태의 경우, 제어 회로는 메모리 디바이스와 접속된 메모리 제어부 내에 마련될 수 있다.
각 단편화 프로그램 명령과 연관된 프로그램 펄스의 지속 기간은, 메모리 셀들을 프로그램하기 위해서 일반적으로 요구되는 총 프로그램 시간 중 선택된 일부이다. 따라서 본 실시형태들의 각 단편화 프로그램 명령을 실행하는 것은, 전체 프로그램 동작을 수행하기 위해 필요한 시간 중 일부만을 요구하고, 그 결과로 종래 프로그램 명령(예를 들어, PV 사이클의 연속적인 시퀀스를 메모리 어레이에 인가함)을 실행하기 위해 일반적으로 요구되었던 시간 중 일부만을 요구한다. 따라서 파이프라인 방식으로 메모리 어레이에 단편화 프로그램 명령들을 개별적이고 독립적으로 실행 가능한 명령으로서 선택적으로 제공함으로써, 제어 회로는, 프로그램 동작들 동안, 어드레스된 메모리 셀들에 대한 개별 프로그램 펄스의 인가를 제어하고 스케줄링할 수 있다. 그 결과, 제어 회로는 명령 파이프라인에서 하나 이상의 단편화 프로그램 명령들의 앞에 비-프로그램 명령을 삽입함으로써, 프로그램 동작이 진행중인 동안에 프로그램 명령에 의해 어드레스되지 않은 메모리 어레이의 다른 부분들(예를 들어, 다른 페이지들) 내에서 비-프로그램 명령의 실행을 스케줄링할 수 있다. 예를 들어, 플래시 메모리 어레이의 페이지를 어드레싱하는 프로그램 동작이 진행 중인 동안, 명령 파이프라인에서 아직 실행되지 않은 모든 단편화 프로그램 명령의 앞에 판독 명령을 삽입함으로써 메모리 어레이의 다른 페이지에 있는 메모리 셀들로부터 데이터가 빠르게 판독될 수 있다.
본 명세서에서 프로그램 동작들이 메모리의 하나 이상의 페이지를 어드레싱하는 것으로 설명되었지만, 메모리 어레이 내에 있는 메모리 셀들의 구조(organization)에 따라서, 메모리 어레이에서 다른 최소 유니트들의 저장 영역이 어드레스될 수 있다.
본 명세서에서 설명된 다양한 회로는 컴퓨터 이용 설계 툴(computer aided design tool)을 사용하여 설명될 수 있고, 이들의 행동, 레지스터 이동(transfer), 논리 요소, 트랜지스터, 레이아웃 배치, 및/또는 다른 특성의 관점에서, 다양한 컴퓨터-판독 가능 매체(computer-readable media)에 실현된 데이터 및/또는 명령어로서 표현(또는 표시)될 수 있다는 것을 주의한다. 이러한 회로 표현이 구현될 수 있는 파일의 포맷과 그 밖의 오브젝트(object)는, C, 베릴로그(Verilog) 및 VHDL와 같은 행동 언어(behavioral language)를 지원하는 포맷, RTL과 같은 레지스터 레벨 기술 언어(register level description language)를 지원하는 포맷, 및 GDSII, GDSIII, GDSIV, CIF, MEBES와 같은 기하 기술 언어(geometry description language)를 지원하는 포맷, 및 그 밖의 적절한 포맷이나 언어를 포함하나, 이에 한정되지는 않는다. 이러한 포맷된 데이터 및/또는 명령어가 실현될 수 있는 컴퓨터-판독 가능 매체는, 이러한 포맷된 데이터 및/또는 명령어를 무선, 광, 또는 유선 시그널링 매체 또는 이것들의 임의 조합을 통해 전송하기 위해 사용될 수 있는 다양한 형태의 비-휘발성 저장 매체(예를 들어, 광, 자기, 또는 반도체 저장 매체)를 포함하나, 이에 한정되지는 않는다. 이러한 포맷된 데이터 및/또는 명령어들을 전송하는 예는, 하나 이상의 데이터 전송 프로토콜(예를 들어, HTTP, FTP, SMTP 등)에 의해, 인터넷 및/또는 다른 컴퓨터 네트워크를 통하여 전송(업로드, 다운로드, 이메일 등)하는 것을 포함하나, 이에 한정되지 않는다.
컴퓨터 시스템 내의 프로세싱 엔티티(entity)(예를 들어, 하나 이상의 프로세서)는, 상술한 회로의 이러한 데이터 및/또는 명령어-기반 표현들이 하나 이상의 컴퓨터-판독 가능 매체를 통해 컴퓨터 시스템 내에 수신되면, 이들을 하나 이상의 다른 컴퓨터 프로그램들의 실행과 공동으로 처리한다. 이러한 컴퓨터 프로그램들은 이러한 회로의 물리적 명시에 대한 이미지 또는 표현을 생성하는, 넷-리스트(net-list) 생성 프로그램, 배치 및 라우트(place and route) 프로그램 등을 포함하지만 이에 제한되지 않는다. 그 후, 이러한 표현 또는 이미지는 예를 들어, 디바이스 제조 공정에서 다양한 회로 요소를 형성하기 위해 사용되는 하나 이상의 마스크가 생성될 수 있도록 함으로써, 디바이스 제조에 사용될 수 있다.
본 발명에 따른 증분 프로그래밍(incremental programming) 기술을 이용하는 메모리 디바이스에 의하면, 프로그램 동작 동안 더욱 빠르고 능률적인 방식으로 액세스될 수 있는 비-휘발성 메모리가 제공된다.
본 실시형태들은 실시예로서 도시되고, 첨부 도면의 도면들에 의해 제한되지 않는다.
도 1a는 메모리 제어부와 메모리 디바이스를 포함하는 메모리 시스템의 간략 블록 다이어그램을 나타낸다.
도 1b는 메모리 제어부와 메모리 디바이스를 포함하는 다른 메모리 시스템의 간략 블록 다이어그램을 나타낸다.
도 1c는 메모리 제어부와 메모리 디바이스를 포함하는 또 다른 메모리 시스템의 간략 블록 다이어그램을 나타낸다.
도 2a는 복수의 단편화 프로그램 명령을 생성하고, 명령 큐를 생성하는 예시적 방법을 나타내는 예시적 플로우차트이다.
도 2b는 도 1a의 메모리 디바이스의 예시적 동작 방법을 묘사하는 예시적 플로우차트이다.
도 3a는 도 1a의 명령 큐 내에 저장된 복수의 독립적으로 실행가능한 단편화 프로그램 명령(independently executable fractional program command)을 묘사한다.
도 3b는 도 1a의 명령 큐의 최상부에 삽입된 비-프로그램 명령(non-program command)을 묘사한다.
도 3c는 도 1a에 도시된 명령 큐 내에서, 제 1 단편화 프로그램 명령 이후에 삽입된 비-프로그램 명령을 묘사한다.
도 4a는 도 1a의 명령 큐에 저장된, 복수의 개별적이고 독립적으로 실행가능한 프로그램 펄스(separate and independently executable program pulse)와 검증 명령들을 묘사한다.
도 4b는 도 1a의 명령 큐 내에서 프로그램 펄스 및 상응하는 검증 명령의 사이에 삽입된 비-프로그램 명령을 묘사한다.
도 5는 도 1a에 도시된 메모리 디바이스의 한 실시형태의 기능적 블록 다이어그램을 나타낸다.
도 6은 본 실시형태들이 이용될 수 있는 컴퓨터 시스템의 블록 다이어그램을 나타낸다.
여러 도면에서 유사한 참조 번호들은 상응하는 부분들을 참조한다.
도 1a는 예시적 메모리 시스템(100A)의 간략 블록 다이어그램을 나타낸다. 메모리 시스템(100A)은 플래시 메모리 제어부(110)와 플래시 메모리 디바이스(120A)를 포함하고, 호스트 디바이스(150)에 접속된다. 도 1에 도시된 바와 같이, 플래시 메모리 제어부(110)과 플래시 메모리 디바이스(120A)는 동일한 집적 회로(IC) 칩 상에 형성된다. 그 밖의 실시형태의 경우에는, 플래시 메모리 제어부(110)와 플래시 메모리 디바이스(120A)는 개별적인 IC 칩 상에 형성될 수 있다.
호스트 디바이스(150)는 임의의 적절한 호스트 디바이스이거나, 또는 플래시 메모리 디바이스(120A) 내에서 실행을 위해 플래시 메모리 제어부(110)에 명령들을 제공하는 제어부일 수 있다. 예를 들어, 호스트 디바이스(150)는 중앙 프로세싱 유니트(CPU)와 플래시 메모리 시스템 간의 통신을 제어하는 컴퓨터 시스템 내에 있는 호스트 제어부일 수 있다. 아래에서 보다 자세하게 설명되는 것처럼, 호스트 디바이스(150)는 하나 이상의 본 실시형태를 구현하는 소프트웨어를 실행할 수 있다.
플래시 메모리 제어부(110)는 접속부(101)를 통해 호스트 디바이스(150)와 접속되는 제 1 포트, 입/출력(I/O) 버스(102)와 제어 버스(103)를 통해 플래시 메모리 디바이스(120A)에 접속되는 제 2 포트를 포함한다. I/O 버스(102)는 플래시 메모리 제어부(110)와 플래시 메모리 디바이스(120A) 간에 데이터(DATA)를 전송하는 데이터 버스, 플래시 메모리 디바이스(120A)에 어드레스 정보(ADDR)를 제공하는 어드레스 버스, 및 플래시 메모리 디바이스(120A)에 명령들(CMD)을 제공하는 명령 파이프라인을 포함한다. 제어 버스(103)는 플래시 메모리 제어부(110)와 플래시 메모리 디바이스(120A) 간에 제어 신호(CTRL)를 전송한다. 그 밖의 실시형태의 경우에는, I/O 버스(102)의 일부 및/또는 제어 버스(103)가 결합될 수 있다. 또한, 간략화를 위해 도시되지 않았지만, 클록과 다른 제어 신호들이 제어 버스(103)를 통해 플래시 메모리 제어부(110)에서 플래시 메모리 디바이스(120A)에 전송될 수 있다.
또한, 플래시 메모리 제어부(110)는 제어 회로(111), 명령 큐(112), 프로그램 어드레스 레지스터(113)를 포함한다. 제어 회로(111)는 호스트 디바이스(150)로부터 명령들을 수신하고, 그 명령들에 응답하여 명령들과 연관된 제어 신호들을 생성하고, 그 명령들과 제어 신호들을 플래시 메모리 디바이스(120A)에 전송한다. 일부 실시형태의 경우, 제어 회로(111)에 의해 생성된 명령들은 명령 큐(112) 내에서 소망되는 실행 순서로 큐(queue)될 수 있고, 그 후에 명령 파이프라인을 통해 파이프라인 방식으로 플래시 메모리 디바이스(120A)에 선택적으로 제공될 수 있다. 명령 큐(112)는 임의의 적절한 큐, 레지스터 파일, 또는 그 밖의 저장 요소일 수 있다. 제어 회로(111)에 연결되는 프로그램 어드레스 레지스터(113)는 플래시 메모리 디바이스(120A) 내에 있는 메모리 셀들의 어떤 페이지가 현재 프로그램되고 있는 지를 나타내는 어드레스 리스트를 유지 관리할 수 있다.
본 명세서에서 설명된 예시적 실시형태들의 경우, 도 1a에 도시된 바와 같이, 호스트 디바이스(150)와 플래시 메모리 제어부(110)는 분리된 디바이스이다. 그러나, 그 밖의 실시형태의 경우에는, 플래시 메모리 제어부(110)가 호스트 디바이스(150) 내에 포함될 수 있으며, 예를 들어, 명령 큐(112)와 프로그램 어드레스 레지스터(113)가 호스트 디바이스(150) 내에 포함되어 그 호스트 디바이스(150)에 의해 직접적으로 제어될 수 있다. 이러한 실시형태들의 경우, 호스트 디바이스(150)에 의해 실행되는 소프트웨어가 동작함으로써 단편화 프로그램 명령들의 생성을 제어할 수 있고, 그 단편화 프로그램 명령들을 플래시 메모리 디바이스(120A)에 내리도록 제어할 수 있다.
플래시 메모리 디바이스(120A)는 I/O 핀들(121), 제어 핀들(122), 제어 회로(130), 플래시 메모리 어레이(140)을 포함한다. I/0 핀들(121)은 I/O 버스들(102)을 통해 제어 회로(130)를 플래시 메모리 제어부(110)에 연결시키고, 제어 핀들(122)은 제어 버스(103)를 통해 제어 회로(130)를 플래시 메모리 제어부(110)에 연결시킨다. 메모리 어레이(140)는 복수의 메모리 셀과 연관된 제어 회로들(간략화를 위해 도 1a에 도시되지 않음)을 포함하는 임의의 공지된 메모리 어레이일 수 있다. 예를 들어, 메모리 어레이(140)는 NAND, NOR, 및 다른 적절한 배치로 배열된 플래시 메모리 셀들을 포함할 수 있다. 본 명세서에서 설명된 예시적 실시형태들의 경우, 메모리 어레이(140)의 메모리 셀들은, 복수의 프로그램 펄스를 플로팅 트랜지스터들의 컨트롤 게이트에 임가함으로써 프로그램될 수 있는 플로팅 게이트 트랜지스터들이며, 각 프로그램 펄스는 프로그래밍을 위해 선택된 메모리 셀들의 Vt를 증분적으로 증가시키는 적절한 하이 프로그램 전압(high program voltage)이다. 다른 실시형태들의 경우, 메모리 어레이(140)는 EPROM 셀들, EEPROM 셀들, 및/또는 전하 태핑 디바이스 메모리 셀들(예를 들어, SONOS 플래시 셀들)과 같은 다른 유형의 비-휘발성 메모리 셀들을 포함할 수 있다. 또한, 어레이(140)의 메모리 셀들은 임의 개수의 뱅크(bank), 블록, 세그먼트, 섹터, 또는 독립적으로 동작될 수 있는 페이지로 물리적 및/또는 논리적으로 나누어질 수 있다. 또한, 도 1에서 하나의 메모리 어레이(140)를 포함하는 것으로 도시되었지만, 메모리 디바이스(120A)는 복수의 메모리 어레이들(140)을 포함할 수 있다.
I/O 핀들(121), 제어 핀들(122), 및 메모리 어레이(140)에 접속되는 제어 회로(130)는, 플래시 메모리 제어부(110)로부터 수신된 명령들 및/또는 제어 신호들에 응답하여 메모리 어레이(140)에 대한 동작들(예를 들어, 프로그램 동작들, 판독 동작들, 및 삭제 동작들)을 제어하도록 구성된다. 또한, 제어 회로(130)는 메모리 어레이(104) 내에서 다양한 동작들의 진행을 나타내는 상태 데이터를 저장하는 상태 레지스터(131)를 포함한다. 또한 상태 레지스터(131)는 메모리 어레이(140) 내에서 프로그램 검증 동작들의 결과들을 나타내는 검증 데이터를 저장할 수 있다. 이 검증 데이터는 추가 프로그램 펄스의 인가가 프로그램 동작을 완료하기 위해서 필요한지를 나타낼 수 있고, 또한 예를 들어 어떤 메모리 셀이 적절하게 프로그램되었는지, 어떤 메모리 셀들이 추가 프로그래밍에 필요한지, 이미 인가된 프로그램 펄스의 개수 등과 같은 그 밖의 정보들을 포함할 수 있다.
이에 더하여, 일부 실시형태의 경우, 메모리 어레이(140) 내에서의 명령 실행 동안, 제어 회로(130)는 플래시 메모리 디바이스(120A)를 이용할 수 없음을 메모리 제어부(110)에 알리는 동작중 신호(busy signal)를 어썰트(assert)할 수 있고, 실행중이던 해당 명령이 완료되면, 제어 회로(130)는 플래시 메모리 디바이스(120A)가 다른 명령을 수용할 준비가 되었음을 메모리 제어부(110)에 알리는 대기 신호(ready signal)를 어썰트한다. 동작중 신호 또는 대기 신호는 제어 버스(103) 상에 개별적 신호 경로로 전송될 수 있다.
본 실시형태들에 따르면, 플래시 메모리 제어부(110)는 프로그램 동작에 의해 어드레스된 어레이(140)의 메모리 셀들에 대한 복수의 개별 프로그램 펄스 각각의 인가를 제어하고, 선택적으로 스케줄링하도록 구성된다. 메모리 어레이(140) 내에서 프로그램 동작을 시작하기 위해서, 호스트 디바이스(150)는 플래시 메모리 제어부(110)에 프로그램 명령을 내리고, (공통 또는 독립 동작을 통해) 메모리에 프로그램될 데이터를 로드한다. 프로그램 명령은 프로그래밍을 위해 선택된 메모리 셀들의 어드레스를 포함한다. 일반적으로, 프로그램 동작을 위한 선택될 수 있는 플래시 메모리 어레이(140) 내 저장 영역의 최소 유니트는 메모리 셀들의 페이지이다. 프로그램 명령에 응답하여, 플래시 메모리 제어부의 제어 회로(111)는 프로그램 동작을 집합적으로 구현하는 복수의 단편화 프로그램 명령을 생성한다. 단편화 프로그램 명령 각각은, 플래시 메모리 디바이스(120A)가 메모리 셀들을 완전하게 프로그램하기 위하여 일반적으로 요구되는 시간 중 선택된 일부인 지속 기간 동안 어드레스된 메모리 셀들에 프로그램 펄스를 인가하도록 지시하는 독립 명령(independent command)이다. 단편화 프로그램 명령들은 명령 큐(112) 내 소망된 실행 순서로 큐된 후에, 명령 파이프라인을 통해 개별적으로 실행가능한 명령들(CMD)로서 플래시 메모리 디바이스(120A)에 전송될 수 있다. 일부 실시형태의 경우, 제어 회로(111)는 플래시 메모리 디바이스(120A)에 의해 생성된 검증 데이터에 응답하여 단편화 프로그램 명령들을 플래시 메모리 디바이스(120A)에 선택적으로 전송한다.
일부 실시형태의 경우, 프로그램 어드레스 레지스터(113)는 진행 중인 프로그램 동작과 연관되는 페이지 어드레스들을 저장할 수 있다. 이 방식에서, 제어 회로(111)는, 프로그램 어드레스 레지스터(113)에 저장된 프로그램 어드레스들을 액세스함으로써 메모리 셀들의 어떤 페이지들에 프로그램 동작이 수행되고 있는지를 신속하게 판단할 수 있다.
플래시 메모리 디바이스(120A)가 플래시 메모리 제어부(110)로부터 단편화 프로그램 명령을 수신하면, 플래시 메모리 디바이스의 제어 회로(130)는 미리 정해진 지속 기간의 프로그램 펄스를 메모리 어레이(140)의 어드레스된 메모리 셀들의 컨트롤 게이트에 인가하여, 메모리 셀들 내에 데이터를 증분적으로 프로그램한다. 앞에 언급한 것처럼, 프로그램 펄스는 메모리 셀들을 완전하게 프로그램하기 위해 일반적으로 요구되는 시간 중 일부인 지속 기간을 갖고, 그로 인해 각 단편화 프로그램 명령의 실행은 플래시 메모리 디바이스(120A)에 대해 전체 프로그램 동작을 수행하기 위해서 요구되는 시간 중 일부만을 요구한다. 어드레스된 메모리 셀들에 대한 프로그램 펄스의 인가 후에, 제어 회로(130)는 어드레스된 메모리 셀 중 어떤 메모리 셀이 추가 프로그램 셀들을 요구하는지를 판단하는 검증 동작을 수행한다.
일부 실시형태의 경우, 만약 검증 동작이 추가 프로그래밍을 요구하는 임의의 어드레스된 메모리 셀들을 식별하면, 제어 회로(130)는 검증 신호를 디-어썰트할 수 있고, 그에 응답하여 플래시 메모리 제어부(110)는 다음 단편화 프로그램 명령(예를 들어, 명령 큐(112)에 큐됨)을 플래시 메모리 디바이스(120A)에 전송할 수 있다. 다음 단편화 프로그램 명령은 제어 회로(130)로 하여금 다른 프로그램 펄스를 식별된 메모리 셀에 인가하도록 하여 그 식별된 메모리 셀 내에 데이터를 추가로 프로그램하고, 다른 검증 동작을 수행하도록 한다. 이 프로세스는 모든 어드레스된 메모리 셀들이 적절하게 프로그램될 때까지 반복된다. 검증 동작이 모든 어드레스된 메모리 셀들이 적절하게 프로그램되었음을 나타내면, 제어 회로(130)는 검증 신호를 어썰트할 수 있다. 그에 응답하여, 플래시 메모리 제어부(110)는 프로그램 동작과 연관된 추가 단편화 프로그램 명령을 플래시 메모리 디바이스에 전송하지 않고, 그 프로그램 동작을 종료한다. 또한, 프로그램 동작이 완료되면, 제어 회로(111)는 프로그램 어드레스 레지스터(113)에서 상응하는 프로그램 어드레스를 제거할 수 있다.
만약 프로그램 동작 동안 플래시 메모리 제어부(110)가 비-프로그램 명령(예를 들어, 판독 명령)를 수신하면, 플래시 메모리 제어부의 제어 회로(111)는 비-프로그램 명령을 명령 큐(112) 내의 임의 위치에 선택적으로 삽입할 수 있다. 일부 실시형태의 경우, 비-프로그램 명령을 수신하면, 제어 회로(111)는 프로그램 어드레스 레지스터(113)를 액세스하고, 프로그램 어드레스 레지스터 내에 저장된 프로그램 어드레스들과 비-프로그램 명령과 연관된 어드레스들를 비교하여, 비-프로그램 명령에 의해 어드레스된 메모리 페이지가 현재 데이터로 프로그램되고 있는지를 판단한다. 만약 매치되지 않으면, 즉 비-프로그램 명령에 의해 어드레스된 메모리 페이지가 현재 프로그램되고 있지 않는 것으로 나타나면, 제어 회로(111)는 비-프로그램 명령을 명령 큐(112)에 삽입할 수 있다.
호스트 디바이스(150)에 의해 제공된 비-프로그램 명령은 메모리 디바이스(120A)에서 수행되고 있는 임의의 프로그램 동작에 관련된 비-프로그램 명령의 우선순위를 나타내는 우선순위 정보(priority information)를 포함할 수 있다. 한 실시예의 경우, 만약 우선순위 정보가 최고 우선순위를 나타내면, 제어 회로(111)는 그 비-프로그램 명령을 명령 큐(112)의 최상단(예를 들어, 명령 큐에서 미리 큐된 임의의 잔여 단편화 프로그램 명령들의 앞)에 삽입할 수 있어, 현재 단편화 프로그램 명령에 대한 완료시, 그 비-프로그램 명령이 메모리 디바이스(120A)에 전송되어 메모리 디바이스(120A) 내에서 즉각적으로 실행된다. 다른 실시예의 경우, 만약 우선순위 정보가 가장 낮은 우선순위를 나타내면, 제어 회로(111)는 비-프로그램 명령을 명령 큐(112)의 최하단(예를 들어, 명령 큐에 미리 큐된 모든 잔여 단편화 프로그램 명령들의 뒤)에 삽입할 수 있어, 비-프로그램 명령이 메모리 디바이스(120A)에 전송되어 모든 프로그램 동작의 완료 후에 메모리 디바이스(120A)에 의해 실행된다. 대안적으로, 제어 회로(111)는 비-프로그램 명령을 명령 큐(112)의 최상단에 자동적으로 삽입하도록 구성될 수도 있다.
이와 반대로, 만약 프로그램 어드레스 레지스터(113) 내 저장된 프로그램 어드레스와의 매치가 존재하면, 즉 비-프로그램 명령에 의해 어드레스된 메모리 페이지가 현재 프로그램되고 있는 것을 나타내면, 제어 회로(111)는 어드레스된 메모리 페이지에 대한 프로그램 동작이 완료(예를 들어,프로그램 어드레스 레지스터(113)에서 상응하는 어드레스 등록에 대한 삭제로서 나타남)될 때까지 비-프로그램 명령을 "보류(hold)" 한 후, 그 비-프로그램 명령을 명령 큐(112)의 최상단에 삽입할 수 있다. 이 방식에서, 프로그램되고 있는 어레이(140)의 메모리 셀들은 프로그램 동작이 완료될 때까지, 데이터 검색을 위해 액세스되지 않음으로써, 메모리 어레이(140)에서 부분적으로 프로그램된(예를 들어, 그로 인해 정확하지 않을 수 있는) 데이터의 검색을 방지한다. 대안적으로, 메모리 셀들 내에 프로그램되고 있는 데이터의 복사본이, 프로그램 동작이 진행되는 동안 액세스를 위해 임시적으로 저장될 수도 있다.
호스트 디바이스(150)로부터 수신된 단일 프로그램 명령에 응답하여 복수의 개별 단편화 프로그램 명령을 생성함으로써, 프로그램 동작은 더욱 적은 개수로 나뉘고, 적은 개수의 독립적 실행가능 명령들은 원래의 프로그램 명령들이 메모리 디바이스를 점유하는 시간보다 적은 시간동안 메모리 디바이스(120A)를 각각 검유한다. 이 방식에서, 메모리 제어부(110)는 메모리 디바이스에 대한 프로그램 동작 동안 메모리 디바이스(120A) 내에서 비-프로그램 명령들의 실행을 선택적으로 스케줄링할 수 있고, 이는 메모리 제어부(110)가 메모리 디바이스(120A)의 다른 부분에 대한 프로그램 동작 동안 메모리 디바이스(120A)의 그 밖의 부분을 빠르게 액세스하는 것을 차례로 허용한다. 예를 들어, 명령 큐(112)에 미리 큐된 복수의 단편화 프로그램 명령의 앞에 판독 명령을 삽입함으로써, 그 판독 명령이 단편화 단편화 프로그램 명령들보다 먼저 플래시 메모리 디바이스(120A)에 전송되어, 플래시 메모리 디바이스 내에서 실행될 수 있다. 이 방식에서는, 메모리 어레이의 다른 페이지들에 대한 프로그램 동작이 진행중인 동안에 프로그램 동작과 연관된 임의의 단편화 프로그램 명령들의 실행을 방해하지 않고, 데이터가 메모리 어레이의 일부 페이지들로부터 판독될 수 있다.
이에 더하여, 프로그램 동작들 동안 플래시 메모리 내에서 비-프로그램 명령의 실행을 선택적으로 스케줄링하는 능력은 플래시 메모리 디바이스(120A)의 이용을 최대화할 수 있다. 예를 들어, 메모리 셀들의 선택된 페이지에 대한 프로그램 동작 동안, 만약 메모리 셀들의 다른 페이지들에 저장된 어드레스 데이터에 대한 일련의 판독 명령이 수신되면, 그 판독 명령들이 플래시 메모리 디바이스(120A)에 전송되어 현재 단편화 프로그램 명령의 완료시 즉각적으로 그 판독 명령들이 플래시 메모리 디바이스(120A) 내에서 실행될 수 있다. 그 후부터, 프로그램 동작과 연관된 임의 잔여 단편화 프로그램 명령들은, 검색된 데이터가 처리되는 동안에(예를 들어, 호스트 디바이스(150)에 의해) 플래시 메모리 디바이스 내에서 실행될 수 있다. 이 방식에서는, 프로그램 동작이, 호스트 디바이스(150)가 검색된 데이터를 처리하는 동안에 플래시 메모리 디바이스(120A) 내에서 완료될 수 있음으로써, 플래시 메모리 디바이스(120A)의 아이들 타임(idle time)을 최소화시킬 수 있다.
상술한 바와 같이, 프로그램 동작 동안, 플래시 메모리 디바이스(120A)는 메모리 셀들이 적절하게 프로그램되었는지를 나타내는 프로그램 결과 검증 데이터(program result verify data)를 생성한다. 일부 실시예의 경우, 플래시 메모리 제어부(110)는 프로그램 동작 동안(예를 들어, 프로그램 동작과 연관된 각 단편화 프로그램 명령의 검증 동작 이후에) 플래쉬 메모리 디바이스의 상태 레지스터(131)로부터 검증 데이터를 판독할 수 있다. 다른 실시형태의 경우에는, 플래시 메모리 디바이스(120A)는 각 단편화 프로그램 명령의 완료시 검증 신호를 플래시 메모리 제어부(110A)에 전송하도록 구성될 수도 있다. 예를 들어, 만약 검증 동작이 상응하는 프로그램 펄스의 인가 이후에 완전하게 프로그램되지 않은, 프로그램 명령에 의해 어드레스된 임의의 메모리 셀들을 식별하면, 플래시 메모리 디바이스(120A)는 검증 신호를 디-어썰트하여 플래스 메모리 제어부(110)가 다음 단편화 프로그램 명령을 플래시 메모리 디바이스(120A)에 전송하도록 지시한다. 반대로, 만약 검증 동작이 어레이(140) 내에서 프로그램되지 않은 메모리 셀들을 식별하지 않으면, 플래시 메모리 디바이스(120A)는 검증 신호를 어썰트하여, 플래시 메모리 제어부(110)에 프로그램 동작이 완료되고, 추가 단편화 프로그램 명령들이 필요로 되지 않고, 프로그램 동작에 상응하는 페이지 어드레스들이 프로그램 어드레스 메모리(113)로부터 제거될 수 있다는 것을 경보한다. 이 방식에서, 플래시 메모리 제어부(110)는 플래시 메모리 디바이스(120A) 내에서 각 프로그램 동작의 증분적 진행을 계속해서 경보할 수 있다. 이것은 모든 프로그램 동작이 완료될 때까지 전체 플래시 메모리 어레이가 일반적으로 이용 불가한 동안에, 플래시 메모리 제어부가 플래시 메모리 디바이스로 하여금 전체 프로그램 동작을 행하게 하는 종래 플래시 메모리 시스템과 대조적이다.
상술된 바와 같이, 각 단편화 프로그램 명령에 응답하여 어레이의 메모리 셀들에 인가된 프로그램 펄스의 지속 기간은 어레이(140)의 메모리 셀들을 완전하게 프로그램하기 위해 일반적으로 요구되는 총 프로그램 시간 중 일부이다. 각 프로그램 펄스의 지속 기간은 펄스 폭(PW; Pulse Width)에 의해 선택될 수 있다. PW 신호는 플래시 메모리 제어부(110)에 프로그램 명령으로 제공되거나, 대안적으로 다른 적합한 회로에 의해 플래시 메모리 제어부(110) 또는 플래시 메모리 디바이스(120A)에 제공될 수 있다. 한 실시예의 경우, PW 신호는 각 단편화 프로그램 명령에 응답하여 생성된 프로그램 펄스에 대해 미리 결정된 지속 기간을 지정할 수 있다. 다른 실시예의 경우, 플래시 메모리 제어부(1100 및/또는 플래시 메모리 디바이스(120A)는 단일 프로그램 동작과 연관된 순차적 단편화 프로그램 명령을 위한 프로그램 펄스 지속 기간이 증분적으로 증가하도록 구성될 수 있다.
또한, 일부 실시형태의 경우, 호스트 디바이스(150)에 의해 플래시 메모리 제어부(110)에 전송된 프로그램 명령은 몇 개의 단편화 프로그램 명령이 프로그램 명령에 응답하여 플래시 메모리 디바이스(120A) 내에서 실행될지를 지정할 수 있다. 한 실시형태의 경우, 메모리 제어부(110)는 단편화 프로그램 명령들의 수정된 개수를 플래시 메모리 디바이스(110A)에 전송할 수 있다. 다른 실시형태의 경우, 메모리 제어부(110)는 상기 검증 신호의 상태를 확인하기 전에 최소 개수의 단편화 프로그램 명령을 플래시 메모리 디바이스(120A)에 전송하도록 구성될 수 있다. 다른 실시형태의 경우, 호스트 디바이스(150)에 의해 플래시 메모리 제어부(110)에 전송된 프로그램 명령은 플래시 메모리 제어부(110)가 프로그램 명령에 응답하여 생성하는 단편화 프로그램 명령들의 최대 개수들을 나타내는 제한값(LIM; LIMit Value)을 포함할 수 있다. 다른 실시형태의 경우, 플래시 메모리 제어부(110)는 호스트 디바이스(150)로부터 수신된 프로그램 명령에 응답하여 단 하나의 단편화 프로그램 명령을 생성하고, 어레이의 메모리 셀들을 적절하게 프로그램하기 위해 필요한 경우(예를 들어, 검증 데이터에 응답하여) 추가 단편화 프로그램을 순차적으로 생성하도록 구성될 수 있다.
이에 더하여, 호스트 디바이스(150)에 의해 내려진 프로그램 명령은 플래시 메모리 제어부(110)로 하여금 플래시 메모리 디바이스(120A) 내에서 함께 동작하는 단편화 프로그램 명령들을 최소 개수로 그룹화시키도록 지시하는 그룹핑 명령을 포함하여, 예를 들어, 끼워지는 비-프로그램 명령이 명령 큐(112) 내 그룹화된 단편화 프로그램 명령들 사이에 삽입되는 것을 방지한다. 단편화 프로그램 명령들의 그룹핑은, 프로그래맹 동작이 진행중인 동안 어레이(140)의 다른 메모리 셀들에 대한 비-프로그램 명령의 실행 이전에, 프로그램 동작을 위한 어드레스된 메모리 셀들이 임의의 미리결정된 최소 크기로 프로그램된다는 보장할 수 있다.
플래시 메모리 디바이스(120A)의 예시적 동작은 도 2a-2b에 도시된 예시적 순서도에 관련되어 아래에서 설명된다. 먼저, 호스트 디바이스(150)는 프로그램 데이터와 어드레스 정보를 제공하는 프로그램 명령을 플래시 메모리 제어부(110)에 내린다(단계 201). 이 명령에 대한 응답으로, 플래시 메모리 제어부(110)는 복수의 단편화 프로그램 명령을 생성한다(단계 202). 상술된 바와 같이, 각 독립 단편화 프로그램 명령의 실행은 단일 프로그램 펄스를 메모리 어레이(140) 내에 있는 어드레스된 메모리 셀들에 인가하는데, 여기서 각 프로그램 펄스의 지속 기간은 어레이의 메모리 셀들을 프로그램하기 위해 일반적으로 요구되는 총 시간 중 일부를 나타낸다. 이어, 단편화 프로그램 명령들은 소망하는 실행 순서로 명령 큐(112) 내에 저장되고, 프로그램되어질 메모리 셀들의 어드레스들은 프로그램 어드레스 레지스터(113)에 저장된다(단계 203). 예를 들어, 도 3a는 명령 큐(112)의 상응하는 위치(112(1)-112(n))에 저장된 복수의 단편화 프로그램 명령(301(1)-301(n))을 묘사한다.
만약 플래시 메모리 제어부(110)가 다른 것, 즉 호스트 디바이스(150)로부터 끼어드는 비-프로그램 명령(예를 들어, 판독 명령 또는 삭제 명령)을 수신하면, 단계 204에서 테스트되는 것처럼, 플래시 메모리 제어부(110)의 제어 회로(111)가 프로그램 어드레스 레지스터(113)에 저장된 프로그램 어드레스들과 비-프로그램 명령과 연관된 어드레스를 비교한다(단계 205a). 만약 매치되는 것이 존재하지 않으면, 즉 비-프로그램 명령에 의해 어드레스된 메모리 페이지가 현재 프로그램되고 있지 않다는 것을 나타내면, 단계 205에서 테스트되는 것처럼, 제어 회로(111)는 그 다른 명령을 명령 큐(112)에 선택적으로 삽입한다(단계 205c).
한 실시예의 경우, 도 3b는 모든 단편화 프로그램 명령들(301(1)-301(n))보다 앞인 명령 큐(112)의 최상단에 삽입된 비-프로그램 명령(302)을 묘사한다. 또 다른 실시예의 경우, 도 3c는 명령 큐(112) 내에서 제 1 단편화 프로그램 명령(301(1))과 제 2 단편화 프로그램 명령(301(2))의 사이에 삽입된 비-프로그램 명령(302)을 묘사한다. 상술된 바와 같이, 일부 구현형태의 경우, 플래시 메모리 제어부(110)는 명령 큐(112) 내 임의 위치(예를 들어, 도 3c에 묘사된 것처럼)에 비-프로그램 명령을 선택적으로 삽입하도록 구성될 수 있고, 다른 구현형태의 경우, 플래시 메모리 제어부(110)는 비-프로그램 명령을 명령 큐(112)의 상단(예를 들어, 도 3b에 도시된 것처럼)에 삽입하도록 구성될 수도 있다.
이와 반대로, 만약 프로그램 어드레스 레지스터(113) 내에 저장된 프로그램 어드레스와의 매치가 존재하면, 즉 비-프로그램 명령에 의해 어드레스된 메모리 페이지가 현재 프로그램되고 있다는 것을 나타내면, 205b에서 테스트되는 것처럼, 제어 회로(111)는 어드레스된 메모리 페이지에 대한 프로그램 동작이 완료될 때까지 충돌하는 비-프로그램 명령을 "보류"한다(단계 205d). 일부 실시형태의 경우, 제어 회로(111)는 충돌하는 비-프로그램 명령들을 보류시키기 위한 버퍼(단순화를 위해 도시되지 않음)를 포함할 수 있다. 한 실시형태의 경우에는, 메모리 셀들 내에서 프로그램되고 있는 데이터의 사본이, 프로그램 동작이 진행되는 동안에 액세스를 위해 임시로 저장될 수도 있다.
그 후, 제어 회로(111)는 어드레스된 메모리 페이지에 대한 프로그램 동작이 완료되었는지를 판단하기 위하여 프로그램 어드레스 레지스터(113)를 주기적으로 폴(poll)할 수 있다(단계 205a). 만약 프로그램 동작이 완료되면, 제어 회로(111)는 비-프로그램 명령을 명령 큐(112) 내에 삽입할 수 있다(단계 205c). 만약 프로그램 동작이 완료되지 않으면, 제어 회로(111)는 충돌하는 비-프로그램 명령을 보류하는 것을 계속한다(단계 205d). 대안적으로, 프로그램 어드레스 레지스터(113)는 어드레스된 메모리 페이지에 대한 프로그램 동작이 완료될 때, 완료 플래그(completion flag)를 제어 회로(111)에 전송할 수 있다.
이어, 플래시 메모리 제어부(110)는 명령 큐(112)의 최상단에 저장된 명령을 플래시 메모리 디바이스(120A)에 전달한다(단계 206). 단계 207에서 테스트되는 것처럼, 만약 수신된 명령이 단편화 프로그램 명령이면, 메모리 디바이스의 제어 회로(130)가 어레이(140)의 어드레스된 메모리 셀들 내에 데이터를 증분적으로 프로그램하기 위해 단일 프로그램 펄스를 인가하는 단편화 프로그램 명령을 실행하고(단계 208), 이어서 그 프로그램 데이터를 검증한다(단계 209). 이어, 플래시 메모리 디바이스(120A)는 검증 동작의 결과들을 나타내는 검증 데이터를 생성한다(단계 210).
일부 실시형태의 경우, 플래시 메모리 디바이스(120A)는 프로그램 동작의 진행(예를 들어, 어떤 메모리 셀들이 완전하게 프로그램되고, 어떤 메모리 셀들이 완전하게 프로그램되지 않고, 몇 개의 프로그램 펄스가 메모리 셀들에 인가되었는지 등)을 나타내는 추가 상태 정보(additional status information)를 생성한다. 상술된 바와 같이, 검증 데이터 및/또는 상태 정보는 플래시 메모리 디바이스의 상태 레지스터(131)에 저장될 수 있다. 또한, 일부 실시형태의 경우, 검증 데이터는, 명령 큐(112)에서 상응하는 단편화 프로그램 명령을 제거하거나, 프로그램 어드레스 레지스터(113)에서 그 프로그램 어드레스를 제거하기 위해서 플래시 메모리 제어부(110)에 의해 사용될 수 있다.
또한, 일부 실시형태의 경우에는, 플래시 메모리 디바이스(120A)가 플래시 메모리 디바이스의 메모리 어레이(140) 내에서 각 명령의 실행 동안 동작중 시그널(busy signal)을 어썰트하고, 그 명령의 충돌이 발생하면 대기 신호(ready signal)을 어썰트하도록 구성될 수 있다. 이러한 실시형태의 경우, 어썰트된 동작중 신호는 플래시 메모리 제어부(110)가 추가 명령을 플래시 메모리 디바이스(120A)에 전송하지 않도록 지시할 수 있고, 어썰트된 대기 신호는 플래시 메모리 디바이스(120A)가 추가 명령들을 수용할 준비가 되었다는 것을 플래시 메모리 제어부(110)에 경보할 수 있다.
만약 검증 데이터가 하나 이상의 어드레스된 메모리 셀이 완전하게 프로그램되지 않았다는 것을 나타내면, 단계(211)에서 테스트되는 것처럼, 단계(204)에서의 처리를 계속한다. 일부 구현형태의 경우, 플래시 메모리 디바이스(120A)는 플래시 메모리 제어부(110)으로 하여금 다음 단편화 프로그램 명령을 플래시 메모리 디바이스(120A)에 전송하도록 하는 검증 신호를 디-어썰트할수 있다. 다른 실시형태의 경우, 플래시 메모리 제어부(110)는 플래시 메모리 디바이스(120A)로부터 검증 데이터를 판독할 수 있다. 이와 반대로, 만약 검증 데이터가 프로그램 명령에 의해 어드레스된 어레이(140) 내의 모든 셀들이 적절하게 프로그램되었다는 것을 나타내면, 프로그램 동작과 연관된 임의의 잔여 단편화 프로그램 명령들이 명령 큐(112)에서 제거되고, 명령 큐에서 제거된 단편화 프로그램 명령들에 상응하는 프로그램 어드레스가 프로그램 어드레스 레지스터(113)에서 삭제된다(단계 212).
만약 플래시 메모리 제어부(110)로부터 수신된 명령이 비-프로그램 명령이면, 단계 207에서 테스트되는 것처럼, 플래시 메모리 디바이스(120A)는 비-프로그램 명령을 실행하고(단계 213), 비-프로그램 명령은 명령 큐(112)에서 제거되고(단계 214), 단계 204에서의 처리를 계속한다. 예를 들어, 만약 비-프로그램 명령이 판독 명령이면, 플래시 메모리 디바이스(120A)는 판독 명령에 의해 어드레스된 어레이(140) 내의 셀들로부터 데이터를 판독하는 판독 명령을 실행하고, 그 판독 데이터를 플래시 메모리 제어부(110)에 제공한 후에, 명령 큐(112)에서 다음 명령을 수용하기 위해 대기한다.
다른 실시형태의 경우, 플래시 메모리 제어부(110)는 호스트 디바이스(150)로부터 수신된 프로그램 명령에 응답하여 오직 하나의 단편화 프로그램 명령을 생성하고, 플래시 메모리 제어부(110)는 만약 추가 프로그램 펄스들이 어드레스된 메모리 셀들을 적절하게 프로그램하기 위해 요구되면, 추가 단편화 프로그램 명령들을 선택적으로 생성하여 플래시 메모리 디바이스(120A)에 전송할 수 있으며, 이 경우 단계 212는 삭제될 수 있다.
상술된 예시적 실시형태의 경우, 각 단편화 프로그램 명령은 플래시 메모리 디바이스(120A)가 어레이(140) 내에 있는 프로그램 데이터로 어드레스된 메모리셀들을 증분적으로 프로그램하는 단일 프로그램 펄스를 인가하도록 지시하고, 또한 플래시 메모리 디바이스가 어드레스된 메모리 셀 중 임의의 메모리 셀이 추가 프로그램 펄스들을 요구하는지를 판단하기 위하여, 프로그래밍되고 있는 메모리 셀들 내에 저장된 데이터와 원래의 프로그램 데이터를 비교하는 검증 동작을 수행하도록 지시한다. 다른 실시형태의 경우, 호스트 디바이스(150)로부터 수신된 프로그램 명령에 응답하여 플래시 메모리 제어부(110)에 의해 생성된 각 단편화 프로그램 명령은 플래시 메모리 디바이스(120A)가 어드레스된 메모리 셀들에게만 프로그램 펄스를 인가하도록 지시할 수 있다. 그 밖의 실시형태의 경우, 플래시 메모리 제어부(110)는 각 단편화 프로그램 명령과 연관된 분할 검증 명령(separate verify command)을 생성하도록 구성될 수 있으며, 각 검증 명령은 플래시 메모리 디바이스(120A)가 상응하는 단편화 프로그램 명령에 의해 어드레스된 메모리 셀내에 프로그램된 데이터를 검증하도록 지시한다. 검증 명령들은 명령 큐(112) 내에 단편화 프로그램 명령들과 함께 저장될 수 있다.
예를 들어, 도 4a는 명령 큐(112)내에 복수의 단편화 프로그램 펄스 명령(401(1)-401(n))과 상응하는 복수의 분할 검증 명령(402(1)-402(n))을 저장하는 것을 묘사하며, 각 단편화 프로그램 펄스 명령(401)의 실행은 프로그램 펄스를 프로그램 동작을 위한 어드레스된 메모리 셀들에 인가하고, 각 검증 명령(402)의 실행은 상응하는 단편화 프로그램 펄스 명령(401)의 결과를 검증한다. 도 4b는 명령 큐(112) 내에서 단편화 프로그램 펄스(401(1))와 검증 명령(402(1))의 제 1 쌍과 단편화 프로그램 펄스(401(2))와 검증 명령(402(2))의 제 2 쌍의 사이에 비-프로그램 명령(302)의 삽입을 예시한다. 프로그램 펄스 명령(401)과 그것에 상응하는 검증 명령(402)의 사이에 비-프로그램 명령(302)을 삽입할 수도 있지만, 검증 명령의 수행 중 및 검증 명령 자체가 일반적으로 그다지 많은 시간을 소모하지 않기 때문에, 끼워진 명령을 허용하기 전에 신호 PV 사이클(검증을 포함함)을 완료하는 것이 구조적으로 선호될 수 있다.
다른 실시형태의 경우, 호스트 디바이스(150) 및/또는 호트스 디바이스(150)에 의해 실행되는 소프트웨어는, 프로그램 동작과 연관되는 단편화 프로그램 명령들을 생성하고, 명령 큐 내에 단편화 프로그램 명령들을 큐하고, 파이프라인 방식(예를 들어, 플래시 메모리 제어부(110)를 통해)으로 단편화 프로그램 명령들을 플래시 메모리 디바이스(120A)에 선택적으로 전송하도록 구성될 수 있다. 이러한 실시형태의 경우, 호스트 디바이스(150) 및/또는 호스트 디바이스(150)에 의해 실행되는 소프트웨어는 판독 명령들과 같은 비-프로그램 명령들을 명령 큐의 임의 위치에 선택적으로 삽입하도록 구성되어, 예를 들어, 비-프로그램 명령들이 프로그램 동작 동안 임의의 프로그램-관련 명령들의 실행을 방해하지 않으면서 플래시 메모리 디바이스(120A) 내에서 실행될 수 있다.
다른 실시형태의 경우, 플래시 메모리 디바이스(120A)는 호스트 디바이스(150)에 의해 내려진 프로그래밍 명령에 응답하여 단편화 프로그램 명령들을 생성하도록 구성될 수 있다. 예를 들어, 도 1b는 다른 실시형태에 따른 플래시 메모리 제어부(110)와 플래시 메모리 디바이스(120B)를 포함하는 메모리 시스템(100B)을 나타낸다. 플래시 메모리 디바이스(120B)는 플래시 메모리 디바이스(120B)의 제어 회로(130)가 명령 큐(132)와 프로그램 어드레스 레지스터(133)를 포함한다는 것을 제외하고는, 플래시 메모리 디바이스(120A)와 유사하다. 도 1b에 도시된 명령 큐(132)와 프로그램 어드레스 레지스터(133)는 각각 도 1a에 도시된 명령 큐(112)와 프로그램 어드레스 레지스터(113)와 유사하다. 도 1b에 도시된 실시형태의 경우, 메모리 디바이스의 제어 회로(130)는 호스트 디바이스(150)를 통해(예를 들어, 플래시 메모리 제어부(110)를 통해) 내려진 프로그램 명령을 수신하고, 그 프로그램 명령에 응답하여 단편화 프로그램 명령들을 생성한다. 플래시 메모리 제어부는 명령 큐(132) 내에 단편화 명령들을 큐할 수 있고, 필요에 따라, 도 1a와 관련하여 상술된 방식과 유사한 방식으로, 상응하는 프로그램 펄스들을 인가하기 위하여 큐된 명령들을 메모리 어레이(140)에 전달한다. 따라서, 도 1b에 도시된 실시형태의 경우, 플래시 메모리 디바이스의 제어 회로(130)는 메모리 어레이(140)를 위한 단편화 프로그램 명령들의 생성, 스케줄링, 및 실행을 제어한다.
도 1a-1b와 관련하여 상술된 플래시 메모리 디바이스들의 실시형태는, 어레이(140)의 메모리 셀들에 대한 프로그램 동작을 집합적으로 구현하는 복수의 독립 단편화 프로그램 명령을 실행하도록 구성될 수 있다. 다른 실시형태의 경우, 플래시 메모리 디바이스는 종래 방식(예를 들어, 연속 PV 사이클의 시퀀스를 프로그램 명령들에 의해 어드레스된 메모리 셀들에 인가함으로써)으로 호스트 디바이스(150)에 의해 내려진 프로그램 명령들을 실행할 수 있는 추가 회로를 포함할 수 있다. 예를 들어, 도 1c는 플래시 메모리 제어부(110)와 플래시 메모리 디바이스(120C)를 포함하는 메모리 시스템(100C)을 나타낸다. 플래시 메모리 디바이스(120C)는 제어 회로(160)와 모드 레지스터(170)를 포함한다. 임의의 적합한 저장 요소일 수 있는 모드 레지스터(170)는 제어 회로(160)에 접속되고, 프로그램 모드 데이터를 저장하도록 구성될 수 있다. 제어 회로(160)는 도 1b에 도시된 제어 회로(130)의 모든 구성요소를 포함하고, 플래시 메모리 디바이스(120C)가 종래 방식으로 프로그램 명령을 수신(예를 들어, 플래시 메모리 제어부(110)를 통해 호스트 디바이스(150)로부터 수신됨) 및 실행하는 것을 허용하는 공지된 시퀀스 로직(161)도 포함한다. 프로그램 모드 데이터는 호스트 디바이스(150), 플래시 메모리 제어부(110), 또는 임의의 다른 적절한 회로에 의해 생성될 수 있다. 모드 데이터는 플래시 메모리 디바이스(120C)가, 플래시 메모리 제어부(110)로부터 수신된 단편화 프로그램 명령들을 실행하거나, 플래시 메모리 제어부(110)로부터 수신된 프로그램 명령에 응답하여 단편화 프로그램 명령들을 생성 및 실행하거나, 또는 플래시 메모리 제어부(110)로부터 수신된 프로그램 명령에 응답하여 종래 프로그램 동작을 구현하도록 지시하는데 이용될 수 있다. 일부 실시형태의 경우, 모드 데이터는 제어 핀들(122)을 통해 플래시 메모리 디바이스(120c)에 제공되고, 모드 레지스터(170; 도 1c에 묘사된 바와 같이)에 저장된다. 다른 실시형태의 경우, 모드 데이터는 전용 핀들(단순화를 위해 도시되지 않음) 또는 다른 적합한 회로를 사용하여 모드 레지스터(170)에 제공되어 저장될 수 있다.
보다 구체적으로, 프로그램 모드 데이터가 제 1 단편화 프로그래밍 모드를 나타내는 제 1 상태로 설정되면, 제어 회로(160)는 플래시 메모리 제어부(110)로부터 단편화 프로그램 명령을 수신하도록 구성된다. 이 제어 회로는 단일 프로그램 펄스를 어레이(140)의 어드레스된 메모리 셀들에게 응답적으로 인가하고, 예를 들어, 도 1a와 관련하여 설명된 방식으로 상응하는 검증 동작을 수행한다. 단편화 프로그램 명령의 실행 이후에, 플래시 메모리 디바이스(102C)는 추가 단편화 프로그램 명령들이 필요한지를 나타내는 검증 신호를 플래시 메모리 제어부(110)로 제공한다. 또한, 프로그램 모드 데이터의 제 1 상태는 플래시 메모리 디바이스의 명령 큐(132), 프로그램 어드레스 레지스터(133), 및 시퀀스 로직(161)을 동작하지 못하도록 하는데 사용될 수 있다.
프로그램 모드 데이터가 제 2 단편화 프로그래밍 모드를 나타내는 제 2 상태로 설정되면, 제어 회로(16)는 플래시 메모리 제어부(110)로부터 종래 프로그램 명령을 수신하도록 구성된다. 이 프로그램 명령에 응답하여, 제어 회로(160)는, 메모리 디바이스의 명령 큐(132) 내에서 큐될 수 있고, 예를 들어, 도 1b와 관련되어 상술된 방식으로 메모리 어레이 내부에서의 실행을 위해 메모리 어레이(140)에 선택적으로 제공될 수 있는, 하나 이상의 독립적으로 실행가능한 단편화 프로그램 명령을 생성한다. 또한, 프로그램 모드 데이터의 제 2 상태는 메모리 디바이스의 명령 큐(132)와 프로그램 어드레스 레지스터(133)를 동작 가능하게 하고, 메모리 디바이스의 시퀀스 로직(161)을 동작하지 못하도록 하는데 사용될 수 있다.
프로그램 모드 데이터가 종래 프로그래밍 모드를 나타내는 제 3 상태로 설정되면, 제어 회로(160)는 플래시 메모리 제어부(110)로부터 종래 프로그램 명령을 수신하도록 구성될 수 있고, 그 프로그램 명령에 응답하여 시퀀스 로직(161)이, 전체 메모리 어레이(140)가 일반적으로 사용할 수 없는 동안, 공지된 기술에 따라 어레이(140)의 어드레스된 메모리 셀들을 프로그램하기 위한 PV 사이클들의 시퀀스를 시작하도록 지시한다. 또한, 프로그램 모드 데이터의 제 3 상태는 플래시 메모리 디바이스의 명령 큐(132)와 프로그램 어드레스 레지스터(133)를 동작하지 못하도록 하고, 메모리 디바이스의 시퀀스 로직(161)을 동작할 수 있게 하는데 사용될 수 있다.
이 방식에서, 도 1c에 도시된 플래스 메모리 디바이스(120C)는 본 실시형태를 따른 단편화 프로그램 명령들을 사용하거나 종래 프로그래밍 기술들을 사용하여 프로그램 동작들을 수행할 수 있고, 이로써 플래시 메모리 디바이스(120c)는 종래 메모리 시스템들 또는 본 실시형태들에 따라 구성된 메모리 시스템들 내에 이용될 수 있다.
또한, 다른 실시형태의 경우, 모드 레지스터(170)와 연관된 제어 회로가 도 1a에 도시된 플래시 메모리 디바이스(120A)에 부가될 수 있어, 플래시 메모리 디바이스(120A)가 플래시 메모리 제어부(110)로부터 수신된 단편화 프로그램 명령들을 실행하거나 플래시 메모리 제어부(110)로부터 수신된 종래 프로그램 명령에 응답하여 종래 프로그램 동작들을 수행할 수 있다(예를 들어, 프로그램 모드 데이터의 상태에 따라 달라짐)
도 5는 도 1a에 도시된 플래시 메모리 디바이스(120A)의 한 실시형태인 플래시 메모리 디바이스(500)의 기능적 블록 다이어그램을 나타낸다. 메모리 디바이스(500)는 I/O 제어 회로(510), 제어 레지스터 회로(520), 명령 인터페이스 로직(530), 프로그램 및 삭제 제어부(540), 어레이 제어 로직(550), 고압 회로(560), 데이터 버퍼들(570), 및 메모리 어레이(580)를 포함한다. I/O 제어 회로(510), 제어 레지스터 회로(520), 명령 인터페이스 로직(530), 프로그램 및 삭제 제어부(540), 어레이 제어 로직(550), 고압 회로(560), 및 데이터 버퍼들(570)은 함께 도 1a에 도시된 제어 회로(130)의 한 실시형태를 형성하고, 메모리 어레이(580)는 도 1a에 도시된 메모리 어레이(140)의 한 실시형태를 형성한다.
I/O 제어 회로(510)는 메모리 디바이스의 I/O 핀들에 접속되고, 제어 라인들(511-513)을 통해 제어 레지스터 회로(520)에 접속되고, 데이터 라인들(514)을 통해 데이터 버퍼들(570)에 접속된다. 공지된 I/O 제어 회로(510)는 I/O 핀들을 통해 메모리 어레이(580)에 프로그램될 데이터를 수신하고, 메모리 어레이(580)로부터 판독된 데이터를 I/O 핀들에 제공한다. 제어 레지스터 회로(520)는 어드레스 레지스터(521), 상태 레지스터(522), 및 명령 레지스터(523)를 포함한다. 어드레스 레지스터(521)는 메모리 어레이(580)에 접속되고, 상태 레지스터(522)는 명령 인터페이스 로직(530)에 접속되고, 명령 레지스터(523)는 명령 인터페이스 로직(530)에 접속된다.
메모리 어레이(580)는 비-휘발성 메모리 셀들(단순화를 위해 도시되지 않음)의 어레이(581), 행 디코더(582), 페이지 버퍼들(584)을 포함한다. 어레이(581) 내에 포함된 메모리 셀들은 예를 들어, 플로팅 게이트 트랜지스터에 의해 형성된 임의의 적절한 비-휘발성 메모리 셀들일 수 있다. 행 디코더(582)는 어드레스 레지스터(521)에 의해 제공되는 어드레스 정보에 응답하여 어레이 동작들(예를 들어, 프로그램 동작과 판독 동작)을 위한 메모리 셀들의 행을 선택한다. 페이지 버퍼들(584)은 프로그램 동작들 동안 메모리 어레이(581)에 프로그래밍될 데이터를 저장하고, 판독 동작들 동안 메모리 어레이(581)로부터 판독된 데이터를 저장한다.
명령 인터페이스 로직(530)은 디바이스 제어 핀들에 접속되고, 또한 상태 레지스터(522), 프로그램 및 삭제 제어부(540), 어레이 제어 로직(550), 데이터 버퍼들(570), 및 페이지 버퍼들(584)에 접속된다. 동작 중에, 명령 인터페이스 로직(530)은 플래시 메모리 제어부(110; 도 1a 참조)로부터의 단편화 프로그램 명령들을 수신하고, 그 명령에 응답하여 제어 신호들을 어레이 제어 로직(550), 프로그램 및 삭제 제어부(540)에 제공한다. 또한, 프로그램 펄스를 생성하여 메모리 셀 어레이(581)에 인가하는 명령 인터페이스 로직(530)은 데이터 버퍼들(570)에 대한 제어를 반응적으로 제공한다. 다른 구현형태의 경우, 명령 인터페이스 로직(530)은 명령 큐(132; 도 5에 도시되지 않음)를 포함하거나 그 명령 큐(132)에 연관되고, 플래시 메모리 제어부(110)로부터 수신된 프로그램 명령에 응답하여 복수의 단편화 프로그램 명령을 생성하도록 구성된다.
프로그램 및 삭제 제어부(540)는 명령 인터페이스 로직(530)으로부터 제어 신호들을 수신하는 입력을 포함하고, 제어 신호들을 어레이 제어 로직(550)에 제공하는 출력을 포함한다. 어레이 제어 로직(550)은 명령 인터페이스 로직(530)으로부터 명령들을 수신하고, 프로그램 및 삭제 제어부(540)로부터 제어 신호들을 수신하고, HV 회로(560), 행 디코더(582), 및 페이지 버퍼들(584)에 접속되는 출력들을 포함한다.
HV 회로(560)는 어레이 제어 로직(550)에 접속되는 입력들을 포함하고, 메모리 어레이 셀들(581)과 행 디코더(582)에 접속되는 출력들을 포함한다. HV 회로(560)는 어레이 제어 로직(550)에 의해 제공되는 제어 신호에 응답하여 프로그램 및 삭제 동작들 동안 고압 신호들을 메모리 어레이(580)에 제공한다.
데이터 버퍼들(570)은 명령 인터페이스 로직(530)에 접속되고, I/O 제어 회로(510)에 접속된다. 동작 중에, 데이터 버퍼들(570)은 명령 인터페이스 로직(530)으로부터 제어 신호들을 수신하고, 프로그램 동작들 동안 I/O 제어 회로(510)로부터 데이터를 수신하거나, 판독 동작들 동안 메모리 어레이(580)로부터 판독된 데이터를 I/O 제어 회로(510)에 제공한다. 예를 들어, 플래시 메모리 제어부(110)와 I/O 제어 회로(510) 사이에 연결되는 데이터 버스의 폭이 일반적으로 어레이(581) 내에 있는 메모리 페이지의 폭보다 적기 때문에, 데이터 버퍼들(570)은 프로그램 동작들과 판독 동작들 동안 데이터를 버퍼링하기 위해 이용된다. 예를 들어, 일부 구현형태의 경우, 메모리 디바이스(500)는 플래시 메모리 디바이스(500)로부터 한번에 한 바이트(예를 들어, 8개의 데이터 비트)만을 수신할 수 있고, 페이지 버퍼(584)가 메모리 어레이(581)에 대해 동시에 발생하는 페이지-사이즈의 프로그램 동작들 또는 판독 동작들을 위하여 데이터를 축적하는 캐시(cache)로서 이용될 수 잇다.
도 6은 본 구현형태가 이용될 수 있는 예시적 컴퓨터 시스템(600)을 나타낸다. 이 시스템(600)은 중앙 프로세싱 유니트(CPU; 611), 호스트 제어부(612), I/O 제어부(613), DRAM(620), I/O 디바이스들(630), 플래시 메모리 제어부(110), 및 플래시 메모리 디바이스(120)를 포함한다. CPU(611)는 공지된 버스들을 통해 호스트 제어부(612)와 I/O 제어부(613)에 접속된다. CPU(611), 호스트 제어부(612), 및 I/O 제어부(613)는 공지된 것이고, 함께 도 1a 내지 1c에 도시된 호스트 디바이스(150)의 한 실시형태인 호스트 디바이스(610)를 형성할 수 있다. 일부 구현형태의 경우, CPU(611)와 호스트 제어부(612)는 동일한 칩 상에 형성될 수 있다. 다른 구현형태의 경우, CPU(611), 호스트 제어부(612), 및 I/O 제어부(613)는 동일한 칩 상에 형성될 수 있다.
I/O 제어부(613)는 I/O 디바이스(630)에 접속되고, 이후에 예를 들어, 모니터, 키보드, 마우스, 및 다른 I/O 디바이스들 또는 회로들과 같은 공지된 구성요소들을 포함할 수 있다. 호스트 제어부(612)는 플래시 메모리 제어부(110)를 통해 플래시 메모리 디바이스(120)에 접속될 뿐 아니라, 컴퓨터 시스템(600)용 메인 메모리로 이용되는 DRAM 시스템(620)에 접속될 수 있다. 다른 구현형태의 경우, 플래시 메모리 제어부(110)는 호스트 제어부(612) 대신에 I/O 제어부(613)에 접속될 수도 있다. 또한, 플래시 메모리 디바이스(120)는 도 6에 도시된 예시적 컴퓨터 시스템용 메인 메모리로서 기능할 수 있다. 다른 구현형태의 경우, DRAM(620)이 제거될 수 있고, 플래시 메모리 디바이스(120)가 주요 메인 메모리 요소로 이용될 수 있다.
컴퓨터 시스템(600)에서 메인 메모리로서 플래시 메모리 제어부(110)와 플래시 메모리 디바이스(120)의 본 구현형태들을 이용함으로써, 종래 플래시 메모리 시스템들보다 우수한 몇 가지 강점들을 갖는다. 첫째로, 독립적으로 실행가능한 복수의 단편화 프로그램 명령들을 사용하여 메모리 디바이스(120)를 프로그래밍함으로써, 플래시 메모리 제어부(110)가 프로그램 동작동안 다른 동작들(예를 들어, 판독 동작들)을 위하여 플래시 메모리 디바이스(120)에 액세스할 수 있다. 보다 구체적으로, 각 단편화 프로그램 명령이 메모리 셀들을 완전하게 프로그램하기 위해 요구되는 프로그래밍 펄스의 총 지속 기간보다 상당히 짧은 지속 기간동안 어드레스된 메모리 셀들에 단일 프로그램 펄스를 인가하도록 구성될 수 있기 때문에, 단편화 프로그램 명령은 PV 사이클들의 시퀀스를 완료하는 것보다 상당히 적은 시간을 요구한다. 그 결과로서, 메모리 어레이의 어드레스된 부분들에 대한 프로그램 동작 동안, 플래시 메모리 제어부(110)가 프로그램 동작과 연관된 더욱 많은 단편화 프로그램 명령들을 내리기 전에 적합한 명령(예를 들어, 메모리 어레이의 다른 부분들을 액세스하는 명령)을 내림으로써 메모리 어레이의 다른 부분들에 빠르게 액세스할 수 있다. 둘째, 플래시 메모리 제어부(110)가 메모리 셀들에 대한 프로그램 펄스 각각의 인가를 스케줄하기 때문에, 플래시 메모리 제어부(110)는 프로그램 동작의 진행을 인지하고, 그 결과로서 효율적인 방식으로 메모리 디바이스(120) 내에 있는 다른 비-프로그램 명령들의 실행을 스케줄링할 수 있다. 이런 부분은 플래시 메모리 디바이스의 모든 메모리 셀들이 다른 동작을 위해 일반적으로 이용할 수 없는 시간 동안, 플래시 메모리 제어부가 플래시 메모리 디바이스에 대한 프로그램 동작들의 제어를 하지 않는 종래 플래시 메모리 시스템들과 대조적이다.
상술된 설명에서, 다양한 세부 사항들이 예컨대, 본 실시형태들의 이해를 통해 제공되는 사양, 구성요소들, 회로들, 및 프로세스를 설명한다. 그러나, 이러한 세부 사항들이 본 구현형태들을 실행하기 위해 이용될 필요가 없다는 것을 이 기술분야의 기술자들에게 명백할 것이다. 다른 경우에, 공지된 구성요소들 또는 방법들은 불필요하게 본 구현형태들을 불명료하게 하는 것을 회피하기 위하여, 자세하게 설명되지 않았다. 따라서, 플래시 메모리 디바이스들의 PV 사이클들을 갖는 끼어드는 비-프로그램 동작들의 문단에서 상술되긴 했지만, 본 실시형태들은 증분적으로 프로그래밍 기술들을 이용하는 임의 유형의 메모리 디바이스에 대해 동일하게 적용할 수 있다.
100A: 메모리 시스템 110: 메모리 제어부
111: 제어 회로 112: 명령 큐
113: 프로그램 어드레스 레지스터 120A: 메모리 디바이스
121: I/O 핀들 122: CTR 핀들
130: 제어 회로 131: 상태 레지스터
140: 메모리 어레이 150: 호스트 디바이스

Claims (67)

  1. 메모리 시스템으로서,
    비-휘발성 메모리 셀들의 어레이를 포함하는 메모리 디바이스;
    프로그램 동작을 위해 복수의 메모리 셀들을 어드레스하는 프로그램 명령을 수신하는 제 1 포트를 구비하고, 명령 파이프라인을 통해 상기 메모리 디바이스에 접속된 제 2 포트를 구비하고, 상기 프로그램 명령에 응답하여 복수의 독립 단편화 프로그램 명령(independent fractional program command)들을 생성하도록 구성되는 메모리 제어부를 포함하고,
    각 단편화 프로그램 명령의 실행은 프로그램 데이터로 상기 어드레스된 메모리 셀들을 증분적으로 프로그램하는 것을 특징으로 하는 메모리 시스템.
  2. 청구항 1에 있어서, 각 단편화 프로그램 명령은 단일 프로그램 펄스를 선택된 메모리 셀들에 인가하고, 각 프로그램 펄스의 지속 기간(duration)은 상기 프로그램 데이터로 상기 메모리 셀들을 프로그램하기 위해 요구되는 총 프로그램 시간 중 선택된 일부인 것을 특징으로 하는 메모리 시스템.
  3. 청구항 2에 있어서, 상기 프로그램 명령은 상기 단편화 프로그램 명령들 각각과 연관되는 상기 프로그램 펄스의 지속 기간을 결정하는 펄스 폭 값(pulse width value)을 포함하는 것을 특징으로 하는 메모리 시스템.
  4. 청구항 1에 있어서, 상기 프로그램 명령은 상기 메모리 제어부에 의해 생성되는 단편화 프로그램 명령들의 최대 개수를 지정하는 제한 값(limit value)을 포함하는 것을 특징으로 하는 메모리 시스템.
  5. 청구항 1에 있어서, 각 단편화 프로그램 명령의 실행은 상기 프로그램 데이터도 검증하는 것을 특징으로 하는 메모리 시스템.
  6. 청구항 1에 있어서, 상기 메모리 제어부는 선택된 개수의 상기 단편화 프로그램 명령들에 앞에 비-프로그램 명령을 상기 명령 파이프라인에 선택적으로 삽입하도록 더 구성되는 것을 특징으로 하는 메모리 시스템.
  7. 청구항 6에 있어서, 상기 비-프로그램 명령은 상기 프로그램 동작이 진행중인 동안 어떤 단편화 프로그램 명령들의 실행을 방해하지 않고, 상기 메모리 디바이스 내에서 실행되는 것을 특징으로 하는 메모리 시스템.
  8. 청구항 6에 있어서, 상기 비-프로그램 명령은 판독 명령을 포함하는 것을 특징으로 하는 메모리 시스템.
  9. 청구항 1에 있어서, 상기 메모리 제어부는 복수의 단편화 프로그램 명령들을 저장하는 명령 큐를 더 포함하는 것을 특징으로 하는 메모리 시스템.
  10. 청구항 9에 있어서, 상기 메모리 제어부는 상기 명령 큐에 미리 큐된(queued) 선택된 개수의 상기 단편화 프로그램 명령들 앞에 비-프로그램 명령을 선택적으로 삽입하도록 구성된 것을 특징으로 하는 메모리 시스템.
  11. 청구항 10에 있어서, 상기 메모리 제어부는
    상기 프로그램 동작 동안 프로그램되고 있는 메모리 셀들의 어드레스들을 저장하는 프로그램 어드레스 레지스터; 및
    상기 비-프로그램 명령와 연관된 어드레스와 상기 프로그램 어드레스 레지스터 내에 저장된 상기 프로그램 어드레스들을 비교하는 제어 회로를 더 포함하고,
    상기 제어 회로는 상기 비교에 응답하여 상기 비-프로그램 명령을 상기 명령 큐에 선택적으로 전달하는 것을 특징으로 하는 메모리 시스템.
  12. 청구항 11에 있어서, 상기 제어 회로는 비-프로그램 명령과 연관된 상기 어드레스가 상기 프로그램 어드레스 레지스터 내에 저장된 상기 프로그램 어드레스들 중 어느 것과도 매치하지 않으면, 상기 비-프로그램 명령을 상기 명령 큐에 전달하는 것을 특징으로 하는 메모리 시스템.
  13. 청구항 1에 있어서, 프로그래밍 모드를 나타내는 모드 데이터를 저장하는 모드 레지스터를 더 포함하는 것을 특징으로 하는 메모리 시스템.
  14. 청구항 13에 있어서, 상기 메모리 제어부는 상기 모드 데이터가 제 1 상태에 있으면 상기 프로그램 명령에 응답하여 상기 단편화 프로그램 명령들을 생성하고, 상기 모드 데이터가 제 2 상태에 있으면 상기 프로그램 명령에 응답하여 프로그램-검증 사이클들의 시퀀스를 시작하는 것을 특징으로 하는 메모리 시스템.
  15. 메모리 셀들의 어레이를 구비하는 메모리 디바이스에 데이터를 프로그래밍하는 방법으로서,
    메모리 셀들에 데이터를 프로그램하는 프로그램 동작을 위하여 복수의 상기 메모리 셀들을 어드레스하는 프로그램 명령을 수신하는 단계;
    상기 프로그램 명령에 응답하여 복수의 독립 단편화 프로그램 명령을 생성하는 단계;
    실행을 위하여 상기 단편화 프로그램 명령들을 상기 메모리 디바이스에 선택적으로 전달하는 단계를 포함하고,
    각 단편화 프로그램 명령의 실행은 상기 프로그램 데이터로 상기 어드레스된 메모리 셀들을 증분적으로 프로그램하는 것을 특징으로 하는 방법.
  16. 청구항 15에 있어서,
    명령 큐 내에 상기 단편화 프로그램 명령들을 큐잉(queuing)하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  17. 청구항 16에 있어서,
    비-프로그램 명령을 수신하는 단계;
    상기 명령 큐 내에, 선택된 개수의 상기 단편화 프로그램 명령들 앞에 상기 비-프로그램 명령을 선택적으로 삽입하는 단계; 및
    상기 선택된 개수의 단편화 프로그램 명령들을 실행하기 전에 상기 메모리 디바이스 내에서 상기 비-프로그램 명령을 실행하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  18. 청구항 17에 있어서, 상기 선택적으로 삽입하는 단계는
    상기 프로그램 명령에 의해 식별된 상기 프로그램 어드레스들을 프로그램 어드레스 레지스터에 저장하는 단계;
    상기 비-프로그램 명령과 연관된 어드레스와 상기 프로그램 어드레스 레지스터 내에 저장된 상기 프로그램 어드레스들을 비교하는 단계; 및
    상기 비-프로그램 명령과 연관된 상기 어드레스가 상기 프로그램 어드레스들 중 어느 것과도 매치하지 않으면, 상기 비-프로그램 명령을 상기 명령 큐 내에 큐잉하는 단계를 포함하는 것을 특징으로 하는 방법.
  19. 청구항 18에 있어서, 상응하는 단편화 프로그램 명령은 상기 어드레스된 메모리 셀들이 적절하게 프로그램되었는지를 나타내는 검증 데이터를 생성하기 위한 검증 동작도 수행하는 것을 특징으로 하는 방법.
  20. 청구항 19에 있어서,
    상기 검증 데이터가 모든 어드레스된 메모리 셀이 적절하게 프로그램되었음을 나타내면, 상기 프로그램 어드레스 레지스터에서 상응하는 프로그램 어드레스를 삭제하는 단계; 및
    상기 검증 데이터가 어드레스된 메모리 셀들 중 완전하게 프로그램되지 않은 일부 메모리 셀들을 식별하면, 그 식별된 메모리 셀들을 추가로 프로그램하기 위하여 다음 단편화 프로그램 명령을 상기 어레이에 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  21. 청구항 15에 있어서,
    비-프로그램 명령을 수신하는 단계; 및
    상기 프로그램 동작이 진행중인 동안 어떤 단편화 프로그램 명령들의 실행도 방해하지 않고 실행하기 위하여 상기 비-프로그램 명령을 상기 메모리 디바이스에 선택적으로 전달하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  22. 청구항 21에 있어서, 상기 선택적으로 전달하는 단계는
    상기 비-프로그램 명령과 연관된 어드레스를 상기 프로그램 명령에 의해 식별된 상기 프로그램 어드레스들과 비교하는 단계;
    상기 비-프로그램 명령과 연관된 상기 어드레스가 상기 프로그램 어드레스들과 매치하지 않으면, 상기 비-프로그램 명령을 상기 메모리 디바이스에 즉각적으로 전달하는 단계를 포함하는 것을 특징으로 하는 방법.
  23. 청구항 15에 있어서, 각 단편화 프로그램 명령은 단일 프로그램 펄스를 선택된 메모리 셀들에 인가하고, 각 프로그램 펄스의 지속 기간은 상기 프로그램 동작의 총 시간 중 선택된 일부인 것을 특징으로 하는 방법.
  24. 청구항 23에 있어서,
    상기 프로그램 명령과 함께 펄스 폭 값을 제공하는 단계; 및
    각 단편화 프로그램 명령과 연관되는 상기 프로그램 펄스의 지속 기간을 상기 펄스 폭 값에 응답하여 선택적으로 조정하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  25. 청구항 15에 있어서,
    상기 프로그램 명령과 함께 제한 값을 제공하는 단계; 및
    상기 메모리 디바이스 내에서 실행되는 단편화 프로그램 명령들의 개수를 상기 제한 값에 응답하여 제한하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  26. 청구항 15에 있어서, 각 단편화 프로그램 명령에 대해서
    상기 상응하는 단편화 프로그램 명령이 상기 프로그램 데이터를 상기 어드레스된 메모리 셀들 내에 완전하게 프로그램하였는지를 나타내는 검증 데이터를 생성하는 단계; 및
    상기 메모리 디바이스 내에서 다음 단편화 프로그램 명령을 상기 검증 데이터에 응답하여 선택적으로 실행하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  27. 플래시 메모리 디바이스로서,
    비-휘발성 메모리 셀들의 어레이; 및
    프로그램 동작을 위해 상기 복수의 메모리 셀을 어드레스하는 프로그램 명령을 수신하는 제 1 포트를 구비하고, 명령 파이프라인을 통해 상기 메모리 셀들의 어레이에 접속된 제 2 포트를 구비하고, 상기 프로그램 명령에 응답하여 복수의 독립 단편화 프로그램 명령을 생성하도록 구성되는 제어 회로를 포함하고,
    각 단편화 프로그램 명령의 실행은 상기 프로그램 데이터로 상기 어드레스된 메모리셀들을 증분적으로 프로그램하는 것을 특징으로 하는 플래시 메모리 디바이스.
  28. 청구항 27에 있어서, 각 단편화 프로그램 명령은 단일 프로그램 펄스를 선택된 메모리 셀들에 인가하고, 각 프로그램 펄스의 지속 기간은 상기 프로그램 데이터로 상기 메모리 셀들을 프로그램하기 위해 요구되는 총 프로그램 시간 중 선택된 일부인 것을 특징으로 하는 플래시 메모리 디바이스.
  29. 청구항 28에 있어서, 상기 프로그램 명령은 상기 단편화 프로그램 명령들 각각과 연관되는 상기 프로그램 펄스의 지속 기간을 결정하는 펄스 폭 값을 포함하는 것을 특징으로 하는 플래시 메모리 디바이스.
  30. 청구항 27에 있어서, 상기 프로그램 명령은 상기 단편화 프로그램 명령들의 최대 개수를 지정하는 제한 값을 포함하는 것을 특징으로 하는 플래시 메모리 디바이스.
  31. 청구항 27에 있어서, 각 단편화 프로그램 명령의 실행은 상기 프로그램 데이터도 검증하는 것을 특징으로 하는 플래시 메모리 디바이스.
  32. 청구항 27에 있어서, 상기 제어 회로는 선택된 개수의 상기 단편화 프로그램 명령들에 앞에 비-프로그램 명령을 상기 명령 파이프라인에 선택적으로 삽입하도록 더 구성되는 것을 특징으로 하는 플래시 메모리 디바이스.
  33. 청구항 32에 있어서, 상기 비-프로그램 명령은 상기 프로그램 동작이 진행중인 동안 어떤 단편화 프로그램 명령들의 실행도 방해하지 않고, 상기 어레이 내에서 실행되는 것을 특징으로 하는 플래시 메모리 디바이스.
  34. 청구항 27에 있어서, 상기 복수의 단편화 프로그램 명령들을 저장하는 명령 큐를 더 포함하는 것을 특징으로 하는 플래시 메모리 디바이스.
  35. 청구항 34에 있어서, 상기 제어 회로는 상기 명령 큐에 미리 큐된(queued) 선택된 개수의 상기 단편화 프로그램 명령들 앞에 비-프로그램 명령을 선택적으로 삽입하도록 구성된 것을 특징으로 하는 플래시 메모리 디바이스.
  36. 청구항 35에 있어서, 상기 제어 회로는 상기 프로그램 명령에 의해 어드레스된 상기 메모리 셀들의 어드레스들을 저장하는 프로그램 어드레스 레지스터를 더 포함하고,
    상기 제어 회로는 상기 비-프로그램 명령과 연관된 어드레스와 상기 프로그램 어드레스 레지스터에 저장된 프로그램 어드레스들 간의 비교에 응답하여 상기 비-프로그램 명령을 상기 명령 큐에 선택적으로 전달하는 것을 특징으로 하는 플래시 메모리 디바이스.
  37. 청구항 36에 있어서, 상기 제어 회로는 상기 비-프로그램 명령과 연관된 상기 어드레스가 상기 프로그램 어드레스 레지스터 내에 저장된 상기 프로그램 어드레스들 중 어느 것과도 매치하지 않으면, 상기 비-프로그램 명령을 상기 명령 큐 내에 큐하는 것을 특징으로 하는 플래시 메모리 디바이스.
  38. 청구항 27에 있어서, 프로그래밍 모드를 나타내는 모드 데이터를 저장하는 모드 레지스터를 더 포함하는 것을 특징으로 하는 플래시 메모리 디바이스.
  39. 청구항 38에 있어서, 상기 제어 회로는 상기 모드 데이터가 제 1 상태에 있으면 상기 프로그램 명령에 응답하여 상기 단편화 프로그램 명령들을 생성하고, 상기 모드 데이터가 제 2 상태에 있으면 외부 소스로부터 수신된 단편화 프로그램 명령들을 실행하는 것을 특징으로 하는 플래시 메모리 디바이스.
  40. 청구항 39에 있어서, 상기 제어 회로는 상기 모드 데이터가 제 3 상태에 있으면 상기 프로그램 명령에 응답하여 프로그램-검증 사이클들의 시퀀스를 시작하는 것을 특징으로 하는 플래시 메모리 디바이스.
  41. 메모리 셀들의 어레이를 구비하는 메모리 디바이스에 데이터를 프로그램하는 시스템으로서,
    메모리 셀들에 데이터를 프로그램하는 프로그램 동작을 위하여 복수의 상기 메모리 셀들을 어드레스하는 프로그램 명령을 수신하는 수단;
    상기 프로그램 명령에 응답하여 복수의 독립 단편화 프로그램 명령을 생성하는 수단; 및
    실행을 위하여 상기 단편화 프로그램 명령들을 상기 메모리 디바이스에 선택적으로 전달하는 수단을 포함하고,
    각 단편화 프로그램 명령의 실행은 상기 프로그램 데이터로 상기 어드레스된 메모리 셀들을 증분적으로 프로그램하는 것을 특징으로 하는 시스템.
  42. 청구항 41에 있어서, 각 단편화 프로그램 명령은 단일 프로그램 펄스를 선택된 메모리 셀들에 인가하고, 각 프로그램 펄스의 지속 기간은 상기 프로그램 데이터로 상기 메모리 셀들을 프로그램하기 위해 요구되는 총 프로그램 시간 중 선택된 일부인 것을 특징으로 하는 시스템.
  43. 청구항 41에 있어서,
    비-프로그램 명령을 수신하는 수단; 및
    상기 프로그램 동작이 진행중인 동안 어떤 단편화 프로그램 명령들의 실행도 방해하지 않고, 상기 메모리 디바이스 내에서 상기 비-프로그램 명령을 선택적으로 실행하는 수단을 더 포함하는 것을 특징으로 하는 시스템.
  44. 청구항 41에 있어서, 상기 선택적으로 실행하는 수단은
    상기 비-프로그램 명령과 연관된 어드레스와 상기 프로그램 명령에 의해 식별된 상기 프로그램 어드레스들을 비교하는 수단; 및
    상기 비-프로그램 명령과 연관된 어드레스가 상기 프로그램 어드레스들과 매치하지 않으면, 상기 메모리 디바이스에서 실행을 위해 상기 비-프로그램 명령을 상기 메모리 디바이스에 즉각적으로 전달하는 수단을 더 포함하는 것을 특징으로 하는 시스템.
  45. 메모리 디바이스로서,
    비-휘발성 메모리 셀들의 어레이; 및
    프로그램 동작을 위해 복수의 상기 메모리 셀들을 어드레스하는 프로그램 명령을 수신하는 제 1 포트를 구비하고, 명령 파이프라인을 통해 상기 어레이에 접속되는 제 2 포트를 구비하고, 상기 프로그램 명령에 응답하여 독립적으로 실행가능한 단편화 프로그램 명령을 상기 어레이에 발행(issue)하도록 구성되는 제어 회로를 포함하고,
    상기 단편화 프로그램 명령의 실행은 상기 프로그램 데이터로 상기 어드레스된 메모리 셀들을 증분적으로 프로그램하는 것을 특징으로 하는 메모리 디바이스.
  46. 청구항 45에 있어서, 각 단편화 프로그램 명령은 단일 프로그램 펄스를 선택된 메모리 셀들에 인가하고, 각 프로그램 펄스의 지속 기간은 상기 프로그램 데이터로 상기 메모리 셀들을 프로그램하기 위해 요구되는 총 프로그램 시간 중 선택된 일부인 것을 특징으로 하는 메모리 디바이스.
  47. 청구항 46에 있어서, 상기 프로그램 명령은 상기 단편화 프로그램 명령들 각각과 연관되는 상기 프로그램 펄스의 지속 기간을 결정하는 펄스 폭 값을 포함하는 것을 특징으로 하는 메모리 디바이스.
  48. 청구항 45에 있어서, 상기 단편화 프로그램 명령의 실행은 상기 단편화 프로그램 명령이 상기 어드레스된 메모리 셀들을 완전하게 프로그램하였는지를 나타내는 검증 데이터를 생성하는 검증 동작도 수행하는 것을 특징으로 하는 메모리 디바이스.
  49. 청구항 48에 있어서, 상기 제어 회로는, 상기 검증 데이터에 응답하여, 상기 프로그램 데이터로 상기 어드레스된 메모리 셀들을 추가로 증분적으로 프로그램하기 위하여 상기 어레이 내에서 다음 단편화 프로그램 명령을 선택적으로 실행하도록 더 구성되는 것을 특징으로 하는 메모리 디바이스.
  50. 장치에 대한 설명(description)을 포함하는 정보를 내부에 구비하는 컴퓨터 판독 가능 매체로서, 상기 정보는
    비-휘발성 메모리들의 어레이; 및
    프로그램 동작을 위해 복수의 메모리 셀들을 어드레스하는 프로그램 명령을 수신하는 제 1 포트를 구비하고, 명령 파이프라인을 통해 상기 메모리 셀의 어레이에 접속된 제 2 포트를 구비하고, 상기 프로그램 명령에 응답하여 복수의 독립 단편화 프로그램 명령들을 생성하도록 구성된 제어 회로에 대한 설명을 포함하고,
    각 단편화 프로그램 명령의 실행은 상기 프로그램 데이터로 상기 어드레스된 메모리 셀들을 증분적으로 프로그램하기 위하여 단일 프로그램 펄스를 상기 어드레스된 메모리 셀들에 인가하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  51. 청구항 50에 있어서, 각 프로그램 펄스의 지속 기간은 상기 프로그램 데이터로 상기 메모리 셀들을 프로그램하기 위해 요구되는 총 프로그램 시간 중 선택된 일부인 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  52. 청구항 51에 있어서, 상기 프로그램 명령은 상기 단편화 프로그램 명령들 각각과 연관되는 상기 프로그램 펄스의 상기 지속 기간을 결정하는 펄스 폭 값을 포함하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  53. 청구항 50에 있어서, 상기 프로그램 명령은 상기 제어 회로에 의해 생성된 단편화 프로그램 명령들의 최대 개수를 지정하는 제한 값을 포함하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  54. 청구항 50에 있어서, 각 단편화 프로그램 명령의 실행은 상기 프로그램 데이터도 검증하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  55. 청구항 50에 있어서, 상기 제어 회로는 상기 메모리 제어부는 선택된 개수의 상기 단편화 프로그램 명령들에 앞에 비-프로그램 명령을 상기 명령 파이프라인에서 선택적으로 삽입하도록 구성되는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  56. 청구항 55에 있어서, 상기 비-프로그램 명령은 상기 프로그램 동작이 진행중인 동안 어떤 단편화 프로그램 명령들의 실행을 방해하지 않고, 상기 어레이 내에서 실행되는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  57. 청구항 50에 있어서, 상기 제어 회로는 복수의 단편화 프로그램 명령을 저장하는 명령 큐를 더 포함하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  58. 청구항 57에 있어서, 상기 제어 회로는 상기 명령 큐에 미리 큐된(queued) 선택된 개수의 상기 단편화 프로그램 명령들 앞에 비-프로그램 명령을 선택적으로 삽입하도록 구성된 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  59. 청구항 58에 있어서, 상기 제어 회로는 상기 프로그램 명령에 의해 식별된 상기 프로그램 어드레스들을 저장하는 프로그램 어드레스 레지스터를 더 포함하고,
    상기 제어 회로는 상기 비-프로그램 명령과 연관된 어드레스와 상기 프로그램 어드레스 레지스터에 저장된 상기 프로그램 어드레스들 간의 비교에 응답하여 상기 비-프로그램 명령을 상기 명령 큐에 선택적으로 전달하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  60. 청구항 59에 있어서, 상기 제어 회로는 상기 비-프로그램 명령과 연관된 어드레스가 상기 프로그램 어드레스 레지스터 내에 저장된 상기 프로그램 어드레스들과 매치하지 않으면, 상기 비-프로그램 명령을 상기 명령 큐 내에 큐하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  61. 청구항 50에 있어서, 상기 프로그래밍 모드를 나타내는 모드 데이터를 저장하는 모드 레지스터를 더 포함하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  62. 청구항 61에 있어서, 상기 제어 회로는 상기 모드 데이터가 제 1 상태 에 있으면 상기 프로그램 명령에 응답하여 상기 단편화 프로그램 명령들을 생성하고, 상기 모드 데이터가 제 2 상태에 있으면 외부 소스로부터 수신된 단편화 프로그램 명령들을 실행하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  63. 청구항 62에 있어서, 상기 제어 회로는 상기 모드 데이터가 제 3 상태 에 있으면 상기 프로그램 명령에 응답하여 프로그램-검증 사이클들의 시퀀스를 시작하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  64. 장치로서,
    비-휘발성 메모리 셀들의 어레이;
    프로그램 동작을 위해 상기 메모리 어레이의 하나 이상의 페이지를 어드레스하는 복수의 독립 단편화 프로그램 명령을 수신하는 수단-여기서, 각 단편화 프로그램 명령의 실행은 상기 페이지에 데이터를 증분적으로 프로그램함-;
    상기 프로그램 동작과 연관된 상기 페이지 어드레스들을 저장하는 수단;
    상기 메모리 어레이의 하나 이상의 페이지를 어드레스하는 후순의 메모리 요청을 수신하는 수단;
    상기 프로그램 동작과 연관된 상기 페이지 어드레스들과 상기 메모리 요청과 연관된 상기 페이지 어드레스들을 비교하는 수단; 및
    상기 비교에 응답하여, 상기 프로그램 동작이 진행중인 동안 상기 단편화 프로그램 동작들의 실행을 방해하지 않고, 상기 메모리 요청을 선택적으로 실행하는 수단을 포함하는 것을 특징으로 하는 장치.
  65. 청구항 64에 있어서, 상기 메모리 요청은 상기 프로그램 동작과 연관된 페이지 어드레스들이 상기 메모리 요청과 연관된 상기 페이지 어드레스들과 매치하지 않으면, 상기 프로그램 동작이 진행중인 동안 실행되는 것을 특징으로 하는 장치.
  66. 청구항 64에 있어서, 상기 메모리 요청은 상기 프로그램 동작과 연관된 페이지 어드레스들이 상기 메모리 요청과 연관된 상기 페이지 어드레스들과 매치하면 홀드되는 것을 특징으로 하는 장치.
  67. 청구항 64에 있어서, 각 단편화 프로그램 명령은 단일 프로그램 펄스를 선택된 메모리 셀들에 인가하는 것을 특징으로 하는 장치.
KR1020107027763A 2008-05-13 2009-05-06 메모리 디바이스를 위한 단편화 프로그램 명령 KR20110010770A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US5271008P 2008-05-13 2008-05-13
US61/052,710 2008-05-13

Publications (1)

Publication Number Publication Date
KR20110010770A true KR20110010770A (ko) 2011-02-07

Family

ID=40951674

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107027763A KR20110010770A (ko) 2008-05-13 2009-05-06 메모리 디바이스를 위한 단편화 프로그램 명령

Country Status (6)

Country Link
US (3) US9966142B2 (ko)
JP (1) JP5345679B2 (ko)
KR (1) KR20110010770A (ko)
CN (1) CN102027455A (ko)
GB (1) GB2474592B (ko)
WO (1) WO2009140112A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020051531A1 (en) * 2018-09-06 2020-03-12 Micron Technology, Inc. A memory sub-system including an in package sequencer separate from a controller
WO2020051528A1 (en) * 2018-09-06 2020-03-12 Micron Technology, Inc. Memory sub-system including an in-package sequencer to perform error correction and memory testing operations
KR20200071602A (ko) * 2018-12-11 2020-06-19 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11061751B2 (en) 2018-09-06 2021-07-13 Micron Technology, Inc. Providing bandwidth expansion for a memory sub-system including a sequencer separate from a controller

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102246240A (zh) * 2008-12-09 2011-11-16 拉姆伯斯公司 用于并发和流水线存储器操作的非易失性存储器器件
US8996794B2 (en) 2009-12-11 2015-03-31 International Business Machines Corporation Flash memory controller
JP4966404B2 (ja) * 2010-10-21 2012-07-04 株式会社東芝 メモリ制御装置、記憶装置、及びメモリ制御方法
US8543758B2 (en) * 2011-05-31 2013-09-24 Micron Technology, Inc. Apparatus including memory channel control circuit and related methods for relaying commands to logical units
JP5899893B2 (ja) * 2011-12-19 2016-04-06 富士通株式会社 ストレージ装置、コマンド実行制御方法、およびプログラム
KR101919903B1 (ko) * 2012-09-14 2018-11-19 삼성전자 주식회사 임베디드 멀티미디어 카드, 이를 제어하는 호스트, 및 이들의 동작 방법
US8930866B2 (en) * 2013-03-11 2015-01-06 Taiwan Semiconductor Manufacturing Company, Ltd. Method of converting between non-volatile memory technologies and system for implementing the method
US9239788B2 (en) * 2013-10-24 2016-01-19 Qualcomm Incorporated Split write operation for resistive memory cache
CN104952475B (zh) * 2014-03-28 2017-11-03 华邦电子股份有限公司 快闪存储器及其编程方法
KR102401271B1 (ko) * 2015-09-08 2022-05-24 삼성전자주식회사 메모리 시스템 및 그 동작 방법
US10671291B2 (en) * 2015-11-17 2020-06-02 Hewlett Packard Enterprise Development Lp Iterative write sequence interrupt
US10467157B2 (en) 2015-12-16 2019-11-05 Rambus Inc. Deterministic operation of storage class memory
US10254967B2 (en) 2016-01-13 2019-04-09 Sandisk Technologies Llc Data path control for non-volatile memory
US10289596B2 (en) * 2016-06-07 2019-05-14 Macronix International Co., Ltd. Memory and method for operating a memory with interruptible command sequence
KR102641107B1 (ko) * 2016-07-29 2024-02-27 삼성전자주식회사 스토리지 장치, 이를 포함하는 시스템 및 그 동작 방법
DE102017105155B4 (de) 2016-11-11 2023-09-07 Sandisk Technologies Llc Schnittstelle für einen nichtflüchtigen speicher
US10528286B2 (en) * 2016-11-11 2020-01-07 Sandisk Technologies Llc Interface for non-volatile memory
US10528255B2 (en) * 2016-11-11 2020-01-07 Sandisk Technologies Llc Interface for non-volatile memory
US10528267B2 (en) 2016-11-11 2020-01-07 Sandisk Technologies Llc Command queue for storage operations
CN109508205B (zh) * 2017-09-15 2024-04-05 北京忆恒创源科技股份有限公司 支持原位操作的nvm芯片、其操作方法以及固态存储设备
US11301378B2 (en) 2017-10-12 2022-04-12 Rambus Inc. Nonvolatile physical memory with DRAM cache and mapping thereof
KR102516547B1 (ko) * 2018-03-08 2023-04-03 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
JP7249106B2 (ja) 2018-03-27 2023-03-30 黒崎播磨株式会社 内装体及びその製造方法
CN113168443A (zh) 2018-12-03 2021-07-23 惠普发展公司,有限责任合伙企业 逻辑电路系统
FR3104285B1 (fr) * 2019-12-05 2022-05-27 St Microelectronics Grenoble 2 Contrôle d’intégrité d’une mémoire

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6421786A (en) * 1987-07-15 1989-01-25 Nec Corp Semiconductor memory
US5519847A (en) * 1993-06-30 1996-05-21 Intel Corporation Method of pipelining sequential writes in a flash memory
JPH07160569A (ja) * 1993-12-09 1995-06-23 Matsushita Electric Ind Co Ltd メモリ制御装置
JP3440032B2 (ja) 1999-07-15 2003-08-25 パナソニック コミュニケーションズ株式会社 メモリ制御装置,ファクシミリ装置および画像形成装置
JP3621051B2 (ja) * 2001-04-26 2005-02-16 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
US7554842B2 (en) * 2001-09-17 2009-06-30 Sandisk Corporation Multi-purpose non-volatile memory card
US6751129B1 (en) * 2002-05-21 2004-06-15 Sandisk Corporation Efficient read, write methods for multi-state memory
JP2004240892A (ja) 2003-02-07 2004-08-26 Sony Corp コマンドデコード用論理回路およびプロセッサ、並びに情報処理装置
KR100632940B1 (ko) * 2004-05-06 2006-10-12 삼성전자주식회사 프로그램 사이클 시간을 가변시킬 수 있는 불 휘발성반도체 메모리 장치
US7490283B2 (en) * 2004-05-13 2009-02-10 Sandisk Corporation Pipelined data relocation and improved chip architectures
US7206230B2 (en) * 2005-04-01 2007-04-17 Sandisk Corporation Use of data latches in cache operations of non-volatile memories
US7656710B1 (en) * 2005-07-14 2010-02-02 Sau Ching Wong Adaptive operations for nonvolatile memories
US7305907B2 (en) * 2005-12-14 2007-12-11 Scott Burwell Skateboard tool
JP2007179669A (ja) 2005-12-28 2007-07-12 Toshiba Corp メモリシステム
JP4909670B2 (ja) * 2006-01-24 2012-04-04 株式会社東芝 不揮発性半導体記憶装置及びそれを用いた不揮発性メモリシステム
KR100706816B1 (ko) * 2006-03-10 2007-04-12 삼성전자주식회사 프로그램 속도를 향상시킬 수 있는 불휘발성 메모리 장치및 그것의 프로그램 방법
US7280398B1 (en) * 2006-08-31 2007-10-09 Micron Technology, Inc. System and memory for sequential multi-plane page memory operations
JP2010512584A (ja) * 2006-12-06 2010-04-22 フュージョン マルチシステムズ,インク.(ディービイエイ フュージョン−アイオー) 空データトークン指令を有する要求デバイスからのデータを管理する装置、システムおよび方法
KR100877104B1 (ko) * 2007-06-26 2009-01-07 주식회사 하이닉스반도체 멀티 레벨 셀 플래시 메모리소자의 프로그램 방법
US7978516B2 (en) * 2007-12-27 2011-07-12 Pliant Technology, Inc. Flash memory controller having reduced pinout
US8261158B2 (en) * 2009-03-13 2012-09-04 Fusion-Io, Inc. Apparatus, system, and method for using multi-level cell solid-state storage as single level cell solid-state storage

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020051531A1 (en) * 2018-09-06 2020-03-12 Micron Technology, Inc. A memory sub-system including an in package sequencer separate from a controller
WO2020051528A1 (en) * 2018-09-06 2020-03-12 Micron Technology, Inc. Memory sub-system including an in-package sequencer to perform error correction and memory testing operations
US10991445B2 (en) 2018-09-06 2021-04-27 Micron Technology, Inc. Memory sub-system including an in-package sequencer to perform error correction and memory testing operations
US11061751B2 (en) 2018-09-06 2021-07-13 Micron Technology, Inc. Providing bandwidth expansion for a memory sub-system including a sequencer separate from a controller
US11080210B2 (en) 2018-09-06 2021-08-03 Micron Technology, Inc. Memory sub-system including an in package sequencer separate from a controller
US11567817B2 (en) 2018-09-06 2023-01-31 Micron Technology, Inc. Providing bandwidth expansion for a memory sub-system including a sequencer separate from a controller
US11675714B2 (en) 2018-09-06 2023-06-13 Micron Technology, Inc. Memory sub-system including an in package sequencer separate from a controller
US11869618B2 (en) 2018-09-06 2024-01-09 Micron Technology, Inc. Memory sub-system including an in-package sequencer to perform error correction and memory testing operations
KR20200071602A (ko) * 2018-12-11 2020-06-19 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법

Also Published As

Publication number Publication date
US9966142B2 (en) 2018-05-08
JP5345679B2 (ja) 2013-11-20
JP2011523157A (ja) 2011-08-04
US11651823B2 (en) 2023-05-16
US20210174875A1 (en) 2021-06-10
GB201019496D0 (en) 2010-12-29
US10861554B2 (en) 2020-12-08
GB2474592A (en) 2011-04-20
CN102027455A (zh) 2011-04-20
US20110060875A1 (en) 2011-03-10
WO2009140112A1 (en) 2009-11-19
GB2474592B (en) 2013-01-23
US20180301194A1 (en) 2018-10-18

Similar Documents

Publication Publication Date Title
US11651823B2 (en) Fractional program commands for memory devices
US11068388B2 (en) Verify before program resume for memory devices
JP7320902B2 (ja) メモリの異なるメモリプレーンに同時にアクセスするための装置および方法
US10445228B2 (en) Methods and apparatuses for requesting ready status information from a memory
JP5115826B2 (ja) マルチnandフラッシュメモリーデバイスの共通動作中にピーク電力消費量を減少させるための装置および方法
US7821837B2 (en) Reprogrammable nonvolatile memory devices and methods
KR20180035173A (ko) 반도체 기억장치 및 이를 위한 연속 판독 방법
US9514834B2 (en) Retention logic for non-volatile memory
US10140062B1 (en) Automatic resumption of suspended write operation upon completion of higher priority write operation in a memory device
US10140024B2 (en) Data storage device and data reading method thereof
US11442664B2 (en) Memory system and method of operating the same
US9971546B2 (en) Methods for scheduling read and write commands and apparatuses using the same
JP2005182996A (ja) 同期式フラッシュメモリ装置及びその動作方法
KR100621637B1 (ko) 프로그램 시간을 단축시킬 수 있는 플래시 메모리 장치 및그것의 프로그램 방법

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid