KR20100113083A - 셀당 단일 비트 nand 플래시 메모리를 에뮬레이팅하기 위한 셀당 다수 비트 nand 플래시 메모리에 대한 제어기 - Google Patents

셀당 단일 비트 nand 플래시 메모리를 에뮬레이팅하기 위한 셀당 다수 비트 nand 플래시 메모리에 대한 제어기 Download PDF

Info

Publication number
KR20100113083A
KR20100113083A KR1020107015590A KR20107015590A KR20100113083A KR 20100113083 A KR20100113083 A KR 20100113083A KR 1020107015590 A KR1020107015590 A KR 1020107015590A KR 20107015590 A KR20107015590 A KR 20107015590A KR 20100113083 A KR20100113083 A KR 20100113083A
Authority
KR
South Korea
Prior art keywords
data
host
flash memory
controller
page
Prior art date
Application number
KR1020107015590A
Other languages
English (en)
Other versions
KR101517416B1 (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 KR20100113083A publication Critical patent/KR20100113083A/ko
Application granted granted Critical
Publication of KR101517416B1 publication Critical patent/KR101517416B1/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
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control 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/26Sensing or reading circuits; Data output circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Abstract

셀당 단일 비트 NAND 플래시 메모리 디바이스를 에뮬레이팅하는 셀당 다수 비트 NAND 플래시 메모리 디바이스에 대한 제어기가 제공된다. 상기 제어기는 NAND 호스트 디바이스로부터 호스트 데이터를 수신하기 위한 호스트 NAND 인터페이스, 및 호스트 데이터를 상보 데이터와 총합하기 위한 데이터 애그리게이터를 포함함으로써, NAND 플래시 메모리 디바이스의 NAND 플래시 메모리 셀의 어레이의 디바이스 페이지에 저장 가능한 디바이스 데이터를 생성한다. 디바이스 데이터를 생성한 후에, 상기 제어기는 NAND 플래시 메모리 셀의 디바이스 페이지에 디바이스 데이터를 기록한다. 상기 제어기는 또한, 데이터 기록 동작이 제어기에 의해 수행될 때 디바이스 데이터로부터 상보 데이터를 파싱하는 데이터 파서를 포함한다. 필요한 경우, 제어기는 데이터 파서를 사용하여 디바이스 데이터로부터 상보 데이터를 파싱해서 데이터 기록 동작이 제어기에 의해 수행될 때 디바이스 데이터를 생성한다.

Description

셀당 단일 비트 NAND 플래시 메모리를 에뮬레이팅하기 위한 셀당 다수 비트 NAND 플래시 메모리에 대한 제어기{A CONTROLLER FOR A MULTIPLE BIT PER CELL NAND FLASH MEMORY FOR EMULATING A SINGLE BIT PER CELL NAND FLASH MEMORY}
본 발명은, 일반적으로 플래시 메모리 디바이스(flash memory device)에 관한 것이고, 보다 구체적으로는 하나의 유형의 NAND 플래시 메모리 디바이스(예를 들어, 셀당 단일 비트(Single Bit per Cell: "SBC") 플래시 메모리 디바이스)를 다른 유형의 NAND 플래시 메모리 디바이스(예를 들어, 셀당 다수 비트(Multiple Bit per Cell: "MBC") 플래시 메모리 디바이스)에 의해 에뮬레이팅(emulating)하는 것에 관한 것이다.
일종의 비휘발성 메모리 디바이스인 플래시 메모리 디바이스는 수년간 공지되어 왔다. 플래시 메모리 디바이스는 메모리 셀(cell)의 어레이(array)를 포함하고, 여기서 각각의 메모리 셀은 통상적으로 부유 게이트(gate) 영역, 드레인(drain) 영역, 및 소스(source) 영역을 갖는 반도체 트랜지스터에 의해서 구현된다. 메모리 셀은 부유 게이트 내에 저장되는 전하의 양을 제어함으로써 구현되는 둘 이상의 개별 상태를 가질 수 있다. 즉, 각각의 상태는 부유 게이트 내에 저장되는 상이한 전하의 양과 관련된다. 실제로 메모리 셀을 사용하기 위해, 메모리 셀의 각 상태는 이진값(binary value)과 관련된다.
하나의 유형의 플래시 메모리 디바이스는 일반적으로 "셀당 단일 비트"(SBC)로 공지되어 있는 기술에 기반하는데, 셀당 단일 비트는 SBC 메모리 디바이스 내의 각각의 메모리 셀이 하나의 비트를 저장함을 의미한다. 셀당 하나의 비트를 저장하는 것은 셀이 두 가능한 상태 중 하나의 상태에 있도록(또는 하나의 상태를 저장하도록) 구성됨을 의미한다. 통상적으로, 셀의 하나의 상태는 셀의 부유 게이트 내에 저장되는 영(0)의 전하와 관련된다. 이 상태는 셀의 "비기록(unwritten)" 상태이고, 일반적으로, 이는 이진 디지트 "1"을 나타낸다. 셀의 다른 상태는 부유 게이트에서의 어느 정도의 음의 전하와 관련된다. 이 상태는 셀의 "기록(written)" 상태이고, 일반적으로, 이진 디지트 "0"을 나타낸다. 부유 게이트에 음의 전하가 존재함으로써 셀의 트랜지스터의 임계 전압이 증가하게 되고, 이 결과, 트랜지스터가 전도되도록 하기 위해서 트랜지스터의 제어 게이트에 인가되어야 하는 전압을 발생시킨다.
플래시 메모리 디바이스는 세 동작을 수행할 수 있다: 데이터를 메모리 셀로의 기록(흔히 이력 이유를 위한 "프로그래밍"이라 칭해지는), 메모리 셀로부터 데이터를 판독, 및 메모리 셀로부터 데이터를 소거. 이 동작은 외부 호스트 디바이스(host device)로부터 개시되지만 제어기에 의해 국지적으로 처리된다. 이진 디지트(즉, "0", 또는 "1")를 메모리 셀로 기록하는 것은 트랜지스터의 부유 게이트에서의 전하를 변화시켜서 이로 인해 셀의 임계 전압을 변경시키는 것을 포함한다. 메모리 셀에 저장된 이진 디지트를 판독하는 것은 셀의 임계 전압의 레벨을 검사하는 것을 포함한다- 임계 전압이 높은 상태에 있다면, 비트 값은 논리 값" 0"으로 해석되지만, 임계 전압이 낮은 상태에 있다면, 비트 값은 논리 값 "1"로 해석된다. 실제로, 셀의 임계 전압을 정확하게 판독할 필요는 없다. 대신에, 두 상태 중 어느 것이 현재 상태인지를 정확하게 식별하는 것이 적당하다. 이를 성취하기 위해, 셀의 임계 전압은 값이 두 상태에 있는 기준 전압과 비교되어, 셀의 임계 전압이 기준 전압 아래 또는 위에 있는지를 결정해야만 한다.
많은 유형의 플래시 메모리, 예를 들어, NAND 메모리의 경우, 기록 및 소거 동작은 개별 메모리 셀에서 행해질 수 없고, 오히려 상기 동작은 메모리 셀의 그룹에서 행해진다. 기록 동작은 상대적으로 작은 "페이지(page)"(전형적으로 NAND 플래시 메모리 디바이스에 대하여 512바이트, 2K바이트, 또는 4K바이트)에서 동작되는 반면에, 소거 동작은 페이지보다 큰 "블록(block)"(전형적으로 NAND 플래시 메모리 디바이스에 대하여 32K바이트 또는 128K바이트) 상에서 행해진다.
다른 유형의 플래시 메모리 디바이스는 보편적으로 "셀당 다수 비트셀(Multi Bit Cell)"(MBC)로서 공지되어 있는 기술에 기반한다. MBC 메모리 디바이스에서 각각의 메모리 셀은 N 비트(N≥2)를 저장하는데, 이는 MBC 메모리 셀이 2N 상태를 저장하도록 구성됨을 의미한다. 예를 들어, 2비트가 네 가지 상태를 저장하는 메모리 셀의 각각은 네 값 "00", "01", "10", 및 "11" 중 하나와 관련된다.
셀의 상태가 셀의 임계 전압에 의해 표현되므로, 2 비트를 저장하는 MBC 셀은 셀의 임계 전압의 4의 개별적인 범위를 지원한다. SBC 셀에 관해서, MBC 셀의 각각의 상태는 실제로 전압 범위이지 단일 전압은 아니다. 셀의 내용(즉, 저장된 이진 값)을 판독할 때, 셀의 임계 전압은 정확한 전압 범위와 관련되어야만 한다. MBC 플래시 디바이스는, 예를 들어, Harari의 미국 특허 제 5,434,825에 논의된다.
플래시 메모리 기술의 개념이 우선 생각되었을 때, MBC NAND 플래시 디바이스가 상대적으로 드물어서 SBC 디바이스가 기준이 되었다. 그러므로, 플래시 메모리 기술을 사용하는 호스트의 전형적인 설계는 SBC 지향이고, 이는 SBC 디바이스가 MBC 디바이스와 호환되지 않도록 한다. 그러므로, MBC NAND 기술이 발전을 해왔고, SBC 디바이스보다 더욱 비용 효율적(적어도 달러(dollar) 당 메가바이트의 측면에서)이고 이미 시장에서 구입 가능할지라도, MBC 기반 NAND 디바이스는 SBC 적용 호스트 디바이스에 의해서 사용될 수 없으므로, 이는 심지어 MBC 디바이스가 SBC 디바이스보다 동일한 물리적인 에어리어(area) 당 더 많은 저장 용량을 제공할지라도 MBC 기술의 추가 확장을 방해한다. 심지어, 동일한 수의 셀당 비트를 사용하여 데이터를 저장하는 메모리 셀이 포함될지라도, 저장 디바이스가 상이한 저장장치 판매자에 의해 공급되면 NAND 인터페이스에 대한 표준이 존재하지 않고 상이한 판매자들은 상이한 종류의 NAND 인터페이스를 사용하고 사용할 것이므로 다른 기술적인 부정합이 존재할 것이다.
이 호환성 문제를 극복하는 것(즉, MBC 플래시 디바이스 및 SBC 적용 호스트가 서로 상호 동작하도록 하는)은 SBC 디바이스 및 MBC 디바이스가 내재적으로 여러 기술 양상에서 차이가 나므로 사소한 것이 아니다. 예를 들어, SBC 디바이스 및 MBC 디바이스는 상이한 크기의 데이터 페이지 및 데이터 블록을 사용한다. 게다가, SBC 셀의 두 상태 사이의 전압 간격("에러 마진(error margin")이 MBC의 각각 인접한 상태 사이에 존재하는 에러 마진보다 더 크기 때문에, SBC 셀은 더 높은 수준의 신뢰성을 제공하고, 이 이유로 SBC 셀은 흔히 컴퓨터 시스템을 부팅(booting)하기 위해서 사용된다. 자체의 상대적으로 낮은 신뢰성을 보상하기 위해서, MBC 디바이스는 보다 강한 에러 정정 스킴, 예를 들어, 더욱 강한 에러 정정 코드(error correction code: ECC)를 사용한다.
SBC 플래시 메모리 디바이스가 보다 높은 신뢰성 및 더욱 빠른 응답성을 제공하므로, SBC 케이퍼빌리티(capability)를 MBC의 케이퍼빌리티와 결합하기 위한 노력이 행해져 왔다. 그러나, 상기 노력은 단지 MBC 플래시 메모리 디바이스의 특정 기술적 양상만을 개선하는데만 지향된다. 일부 종래 기술은 부팅 양상을 처리, 즉, 이는 "진정한" SBC 기술에 의해 제공되는 신뢰성과 유사한 부팅 신뢰성을 획득하기 위해 MBC 플래시 메모리 디바이스에서 특정한 에어리어 내에 초기화(즉, 부팅) 프로그램을 저장하는 것을 제공한다. 다른 종래 기술은 신뢰성 양상을 처리하여 더욱 강한 에러 정정 메커니즘을 제공한다. 다른 종래 기술은 응답 속도 양상을 처리하여 MBC 디바이스 내에서 SLC 캐싱(caching)을 전용하고 사용하는 것 등을 가능하게 한다. 그러나, 종래 기술은 SBC 데이터를 정규 MBC 데이터로 MBC 플래시 메모리 디바이스에 기록하거나 SBC 데이터를 MBC 데이터 내부로부터 판독하도록 할 수 없다.
다음의 예시적인 실시예 및 이의 양상은 시스템, 도구, 및 방법과 함께 기술되고 설명되지만, 이는 예시적이고 설명적으로, 범위를 제한하지 않는 것으로 의도된다.
본 명세서의 일부로서 플래시 메모리 디바이스에 호스트 데이터를 기록하기 위한 방법이 제공되고, 상기 방법은, 상기 플래시 메모리 디바이스의 제어기에 의해, 호스트 디바이스로부터, 개별 기록 가능 디바이스 페이지로 그룹화된 NAND 플래시 메모리 셀의 어레이에 호스트 데이터를 기록하라는 기록 명령을 수신하는 단계를 포함한다. 상기 제어기는 상기 호스트 데이터를 상보 데이터(complementary data)와 함께 총합함(aggregate)으로써 상기 디바이스 페이지의 하나 이상에 저장 가능한 디바이스 데이터를 생성한 후에 상기 디바이스 데이터를 상기 디바이스 페이지 중 하나 이상에 기록할 수 있다.
본 명세서의 일부로서 플래시 메모리 디바이스로부터 호스트 데이터를 판독하기 위한 방법이 제공되고, 상기 방법은, 상기 호스트 디바이스로부터 개별 판독 가능 디바이스 페이지로 그룹화된 NAND 플래시 메모리 셀의 어레이로부터 호스트 데이터를 판독하라는 판독 명령을 수신하는 단계로서, 상기 호스트 데이터는 디바이스 페이지에 저장되는 디바이스 데이터의 일부인, 판독 명령을 수신하는 단계; 상기 디바이스 데이터로부터 상기 호스트 데이터를 파싱(parsing)하는 단계, 및 상기 파싱된 호스트 데이터를 호스트 디바이스로 송신하는 단계를 포함한다.
본 명세서의 일부로서 플래시 메모리 디바이스로부터 호스트 데이터를 소거하라는 소거 명령을 수행하기 위한 방법이 제공되고, 상기 방법은 호스트 디바이스로부터 개별 소거 가능 디바이스 블록으로 그룹화되는 NAND 플래시 메모리 셀의 어레이로부터 호스트 데이터를 소거하라는 소거 명령을 수신하는 단계로서, 상기 호스트 데이터는 디바이스 블록에 저장되는 디바이스 데이터의 일부인, 소거 명령을 수신하는 단계; 상기 호스트 데이터를 소거된 것으로 표시하는 단계, 및 호스트 데이터가 소거되었다는 메시지를 상기 호스트 디바이스에 송신하는 단계를 포함한다. 상기 방법은 상기 호스트 데이터를 포함하는 상기 디바이스 블록을 실제로 소거하는 단계를 더 포함한다.
본 명세서의 일부로서 플래시 메모리 디바이스에 대한 제어기가 제공되고, 이는 상기 기록, 판독 및 소거 방법을 구현한다. 상기 제어기는 NAND 호스트 디바이스로부터 호스트 데이터를 수신하기 위한 호스트 NAND 인터페이스, 및 상기 호스트 데이터를 상보 데이터와 총합하기 위한 데이터 애그리게이터(aggregator)를 포함함으로써, 디바이스 데이터를 생성할 수 있다. 상기 제어기는 상기 플래시 메모리 디바이스와 관련된 NAND 플래시 메모리 셀의 어레이의 디바이스 페이지에 상기 디바이스 데이터를 기록할 수 있다. 상기 제어기는 또한, 데이터 기록 동작이 상기 제어기에 의해 수행될 때 상기 상보 데이터를 파싱하고, 데이터 판독 동작이 상기 제어기에 의해 수행될 때 디바이스 데이터로부터 호스트 데이터를 파싱하는 데이터 파서(data parser)를 포함한다.
상기 호스트 데이터는 셀당 M 비트로 데이터를 저장하는 메모리 셀의 NAND 어레이에 대해서 포맷될 수 있고, 상기 NAND 플래시 메모리 셀은 셀당 N 비트로 데이터를 저장하도록 설계되며, 여기서 N 및 M은 정수이고, N이 M보다 더 크다. 하나의 예시적인 실시예에서, N은 2이고 M은 1이다. 다른 예시적인 실시예에서 N은 4이고 M은 1이다. 또 다른 예시적인 실시예에서 N은 4이고 M은 2이다.
상술한 예시적인 양상 및 실시예 외에, 부가적인 양상과 실시예는 도면을 참조하고 다음의 상세한 설명의 연구에 의해 명확해질 것이다.
상술한 바와 같이, 본 발명으로 인해 SBC 케이퍼빌리티와 MBC의 케이퍼빌리티가 더욱 효율적으로 결합될 수 있다.
예시적인 실시예는 참조된 도면으로 도시된다. 본원에 개시된 예시적인 실시예는 제한적이기보다는 설명적으로 의도된다. 그러나, 명세서는 다음의 상세한 설명을 참조하여 첨부 도면과 함께 판독될 때, 더욱 양호하게 이해될 수 있다.
도 1은, 본 발명의 예시적인 실시예에 따른 플래시 메모리 디바이스를 개략적으로 도시하는 도면.
도 2는, 본 발명의 예시적인 실시예에 따른 플래시 메모리 디바이스에 의해 호스트 명령 시퀀스를 처리하기 위한 예시적인 방법을 도시하는 도면.
도 3은, 본 발명의 예시적인 실시예에 따라 의사(pseudo) PPP의 사용법을 도시하는 도면.
설명의 간소화를 위해, 도면으로 도시된 요소는 반드시 축적대로 도시되지 않음이 이해될 것이다. 더욱이, 적절하게 고려될 때, 참조 번호는 동일한, 서로 대응하거나 유사한 요소 사이에서 반복될 수 있다.
아래 청구항은 본 발명의 예시적인 실시예의 본 상세한 설명을 참조함으로써 더욱 양호하게 이해될 것이다. 이 설명은 청구항의 범위를 제한하고자 하는 것은 아니고 대신에 예를 제공하고자 하는 것이다.
앞에서 논의된 바와 같이, NAND 플래시 메모리 디바이스는 개별적으로 처리되는 페이지 내에 데이터를 저장하도록 설계된다. 호스트 디바이스에 의해 개시된 동작의 유형에 따라(즉, 호스트 데이터를 플래시 메모리 디바이스에 기록하거나, 플래시 메모리 디바이스로부터 호스트 데이터를 판독하거나, 또는 플래시 메모리 디바이스로부터 호스트 데이터를 소거하는), "개별적으로 처리되는 페이지"는 "개별적으로 기록 가능한", 또는 "개별적으로 판독 가능한" 페이지로 칭해질 수 있다. "소거"동작이 포함될 때, 각각이 여러 페이지로 구성되는 블록에서 데이터가 소거된다. "페이지"의 크기 및 블록의 크기는 NAND 플래시 메모리의 유형에 좌우되고, 상술한 바와 같이, 동일한 플래시 메모리 디바이스에 의한 다양한 크기의 데이터 페이지를 처리하는 것은 사소하지 않은데, 왜냐하면, 전형적으로, NAND 플래시 메모리 디바이스는 특정한 페이지 및 블록 크기로 설계되거나 적어도 최적화되기 때문이다. 이 결과로, 특정한 페이지 크기로 설계되는 호스트 디바이스는, 일반적으로, 조금이라도 효율적이지 않게도, 상이한 페이지 크기로 설계되는 플래시 메모리 디바이스와 상호 동작할 수 없다.
일반적으로, 호스트 디바이스로부터 기원하는 "명령 시퀀스"는 데이터(이후에 "호스트 데이터"로 칭해진다), 플래시 메모리 디바이스 내의 물리적 페이지와 관련되는 논리 페이지 어드레스, 및 플래시 메모리 디바이스가 논리 어드레스를 사용하여 호스트 데이터를 물리적 페이지로 기록하라는 기록 명령을 포함할 수 있다. 호스트 논리 어드레스로부터 디바이스 페이지의 논리 어드레스로의 매핑(mapping)은 호스트 논리 어드레스를 대응하는 디바이스 페이지의 논리 어드레스로 매핑한 후에, 디바이스 페이지의 논리 어드레스를 디바이스 페이지의 물리적 어드레스로 매핑함으로써 수행된다. "명령 시퀀스"는 대안으로, 논리 어드레스, 및 플래시 메모리 디바이스가 논리 어드레스 또는 논리 어드레스 및 소거 명령을 사용하여 플래시 메모리 디바이스의 물리적 페이지로부터 호스트 데이터를 판독하라는 판독 명령, 및 논리 어드레스를 사용하여 플래시 메모리 디바이스로부터 호스트 데이터를 삭제하라는 삭제 명령을 포함할 수 있다. "명령 시퀀스"는 또한 관리 데이터 및 다른 유형의 데이터 또는 정보를 포함할 수 있고, 이는 플래시 메모리 디바이스에 의해 사용될 수 있다. 호스트 디바이스로부터 플래시 메모리 디바이스로 전송되는 명령 시퀀스는 이후에 "호스트 명령 시퀀스"로서 칭해진다. NAND 플래시 디바이스에서 데이터가 페이지로 그룹화되기 때문에, "호스트 데이터"는 "호스트 데이터"로 그룹화된다고 할 수 있다.
도 1은 본 발명의 하나의 예시적인 실시예에 따른 플래시 메모리 디바이스(102로 도시됨)를 도시한다. NAND 플래시 메모리 시스템(100)은 NAND 호스트 디바이스(101) 및 호스트 디바이스(101)와 인터페이싱하는 NAND 플래시 메모리 디바이스(102)를 포함한다. 플래시 메모리 디바이스(102)는 호스트 인터페이스(I/F)(105), 제어기(103), 및 셀당 N 비트로 데이터를 저장하기 위한 NAND 메모리 셀의 어레이를 포함하고, 여기서, N은 2이거나 2보다 크다.
호스트 디바이스(101)는 호스트 I/F(105)를 통해 플래시 메모리 디바이스(102)로 호스트 명령 시퀀스를 전송한다. 호스트 명령 시퀀스는, 플래시 메모리 디바이스(102)에 저장되기 위해, 디바이스 페이지의 크기보다 더 작은 호스트 크기의 페이지로 그룹화되는 호스트 데이터를 포함한다. 예를 들어, 호스트 디바이스(101)가 SBC 플래시 메모리 디바이스와 상호 동작하도록 설계된 SBC 디바이스인 경우, 호스트 데이터는 SBC 데이터의 크기 및 다른 특성을 가지며, 마찬가지로, 호스트 명령 시퀀스는 SBC 명령 시퀀스이거나 SBC 명령 시퀀스와 유사하다. SBC 페이지의 크기는 전형적으로 4K바이트보다 작다(예를 들어, 2K바이트).
메모리 셀 어레이(130)에 저장 가능한 데이터는 이후에 "디바이스 데이터"로 칭해지고, 반면에 메모리 셀 어레이(130) 내에서 디바이스 데이터를 저장하는데 사용되는 메모리 셀의 그룹은 본원에서 "디바이스 페이지"로서 칭해진다. 디바이스 페이지는 메모리 셀 어레이(130) 내의 페이지의 상대적인 위치를 표시하는 물리적 어드레스, 및 호스트 디바이스(101)에 의해 감지되는 페이지의 상대적인 위치를 표시하는 논리 어드레스 이 둘 모두와 관련된다. 전형적으로, 하나의 유형의 어드레스를 다른 유형의 어드레스로 변환하기 위해 변환표가 사용된다.
예를 들어, 플래시 메모리 디바이스가 MBC 디바이스라면, 디바이스 페이지는 MBC 페이지의 크기 및 다른 특성을 가지며, 마찬가지로, 제어기(103)에 의해 내부에서 사용가능한 명령 시퀀스인 디바이스 명령 시퀀스는 MBC 기술에 따라 구성 되거나 포맷된다. MBC 페이지의 크기는 전형적으로 적어도 4K바이트이다. 본 발명의 맥락에서, 호스트 데이터는 수반되는 기술(예를 들어, SBC, MBC 등)과 상관없이 디바이스 데이터보다 작다.
플래시 메모리 디바이스는 전형적으로 메모리 디바이스 및 자체의 호스트 디바이스 사이의 데이터 교환 및 다양한 프로세스(예를 들어, 웨어 레벨링(wear leveling)를 관리하기 위해서 적분 플래시 제어기(도 1로 도시되지 않음)를 포함한다. 플래시 메모리 디바이스 및 자체의 호스트 디바이스는 동일한 페이지 크기 및 동일한 블록 크기를 사용하여 동작하고, 플래시 메모리 디바이스는 도 1의 제어기(103)와 같은 제어기를 사용하지 않고 자체의 호스트 디바이스와 상호 동작할 수 있다. 그러나, 본 발명은 상이한 기술(예를 들어, SBC 대 MBC)을 따르는 호스트 디바이스(101) 및 플래시 메모리 디바이스(102)에 적용되고, 또한 동일한 기술(예를 들어, MBC)에 기반하지만 호환 가능하지 않은 NAND 인터페이스를 사용하는 호스트 디바이스 및 플래시 메모리 디바이스에 적용된다. 상술한 바와 같이, 호스트 디바이스(101)는 SBC 기술에 따를 수 있고 플래시 메모리 디바이스(102)는 MBC 기술에 따를 수 있다. 제어기(103)는 후술하는 방식으로 호스트(101) 및 플래시 메모리 디바이스(102) 사이의 기술 불일치를 해결한다.
제어기(103)는 호스트 명령 파서("HCO")(110), 제어 회로소자(150), 데이터 애그리게이터(120), 및 데이터 파서(140)를 포함한다. HCP(110)는 호스트 I/F(105)(106으로 도시됨), 데이터 애그리게이터(120(121로 도시됨) 및 제어 회로소자(151로 도시됨)와 접속된다. 데이터 애그리게이터(120)는 호스트 데이터, 그리고 가능하면 다른 데이터(예를 들어, 더미 데이터(dummy data))를 임시로 저장하기 위해 RAM(160)과 같은 임의 액세스 메모리(Random access memory: RAM)에 접속된다. 데이터 애그리게이터(120) 및 데이터 파서(140)는 NAND 메모리 셀 어레이(130)에 접속된다(각각 131 및 141로 도시된다). "더미 데이터"는 디바이스 페이지 내에 비어 있는 공간을 나타내는 것 이외에 다른 의미를 가지지 않는 데이터로서 제어기(103)에 의해서 식별 가능한 특수 데이터로 칭해지고, 호스트 디바이스(101)와 같은 외부 디바이스에 액세스 불가능하다.
제어기(103)는 호스트 디바이스(101)로부터 호스트 I/P(105)를 통해 호스트 명령 시퀀스(예를 들어, SBC 명령 시퀀스)를 수신하여 SBC 데이터일 수 있는 호스트 데이터를 처리하도록 조절 또는 구성된다. 호스트 명령 파서(HCP)(110)는 호스트 명령 시퀀스로부터 디바이스 명령 시퀀스를 생성하도록 조절 또는 구성되어 메모리 셀 어레이(130)에 적용 가능한 디바이스 페이지 동작(예를 들어, MBC 동작)에 따라 호스트 데이터를 처리한다. "호스트 데이터를 처리한다."라는 것은, 본원에서 호스트 명령 시퀀스가 플래시 메모리 디바이스 내에 저장하기 위한(내부로 기록하거나 프로그래밍하기 위한) 호스트 데이터를 실제로 포함할 수 있거나, 플래시 메모리 디바이스 내에 이미 호스트 데이터가 저장되어 메모리 셀 어레이(130)로부터 판독 또는 소거될 필요가 없는 상태를 언급한다.
호스트 명령 파서(HCP)(110)는 호스트 조작 코드(opcode)("HOC")(111), 호스트 논리 어드레스("HLA")(112) 및 호스트 데이터(113)를 파싱함으로서 호스트 명령 시퀀스를 생성하여, 플래시 메모리 디바이스(102)에 의해 사용가능한 조작 코드를 변환한다(필요한 경우). 호스트 명령 시퀀스로부터 파싱된 데이터(즉, 호스트 데이터)는 후술하는 바와 같이 프로세싱된다. "호스트 데이터"는 처리될(기록, 판독 또는 소거) 데이터와 관련되는 데이터, 메타데이터 및 관리 데이터를 칭할 수 있다.
대안의 실시예는 많거나, 적거나, 다르거나, 또는 기능적으로 등가인 모듈, 컴포넌트 또는 요소를 포함할 수 있다. 예를 들어, 종래의 플래시 메모리 디바이스는 플래시 관리자, 즉, 입구 및 출구 데이터 및 웨어 레벨링, 논리 어드레스의 물리적 어드레스로의 변환 및 이의 역과 같은 다른 내부 프로세스를 관리하는 유형의 제어기를 포함한다. 그러므로, 도 1의 제어기(103)는, 플래시 관리자와 상호 동작하는 개별 디바이스일 수 있거나, 또는 플래시 관리자의 기능이 제어기(103)로 통합되고, 내장되고, 병합될 수 있거나 한다. 도 1에서 개별 컴포넌트로 도시될지라도, 호스트 인터페이스(105)는 제어기(103)의 통합부일 수 있다. 도 1에서 제어기(103)의 통합부로서 도시될지라도, RAM(160) 또는 변환표, 또는 이 둘 모두는 제어기(103)의 외부에 상주할 수 있다.
"기록 동작"
호스트 조작 코드(111)를 검사한 이후에, HCP(110)는 호스트 명령 시퀀스가 메모리 셀 어레이(130) 내에 호스트 데이터를 기록하라는 기록 명령을 포함하는 것으로 결정하는 경우, 이후, 기록 명령이 메모리 디바이스 호환되지 않은 경우, HCP(110)는 호스트의 기록 명령을 플래시 메모리 디바이스(102)에 의해서 사용 가능한 기록 명령으로 변환한다. 그렇지 않으면(즉, 명령 변환이 필요하지 않으면) 제어 회로소자(150)는 호스트 기록 명령을 현재대로 이용할 수 있다. 따라서, HCP(110)는 원 기록 명령, 또는(즉, 이것이 플래시 메모리 디바이스(102)에 의해 사용 가능하지 않은 경우) 이의 변환을 제어 회로소자(150)로 전송한다(151로 도시됨). 이후, 제어 회로소자(150)는 호스트 디바이스에 의해 발생되는 기록 명령에 따르기 위해, 데이터 애그리게이터(120)의 동작을 제어하고, 필요한 경우 데이터 파서(140)의 동작을 제어(152로 도시됨)할 수 있다.
참조 번호(170)는 수신된 호스트 명령 시퀀스 내의 호스트 디바이스(101)로부터 수신되는 예시적인 호스트 데이터를 지정한다. 조작 코드(111)가 기록 명령이라면, 이는 제어기가 메모리 셀 어레이(130) 내에 호스트 데이터(170)를 기록해야만 함을 의미한다. 이와 같은 경우에, HCP(110)는 프로세싱을 위해 예시적인 호스트 데이터(113)인 호스트 데이터(170)를 데이터 애그리게이터(120)로 전송(121로 도시됨)한다.
참조 번호(173, 174, 및 175)는 디바이스 페이지와 동일한 크기(예를 들어, 4KB)를 갖는 디바이스 데이터만이 기록될 수 있거나, 또는 디바이스 페이지와 동일한 크기를 갖는 데이터가 판독될 수 있는 예시적인 디바이스 페이지를 지정한다. 간소화를 위해, 도 1은 단 세 개의 예시적인 디바이스 페이지(즉, 디바이스 페이지(173, 174, 및 175)만 도시하지만, 메모리 셀 어레이(130)는 실제로 많은 수의 디바이스 페이지를 가질 것이다. 호스트 데이터(170)가 디바이스 페이지(예를 들어, 디바이스 페이지(175))보다 더 작기 때문에, 그리고 각각의 페이지 크기와 관련된 다양한 기술 복잡성으로 인해, 호스트 데이터(170)는 메모리 셀 어레이(130)에 있는 그대로 기록될 수 없고, 오히려 이것은 제어기(103)가 이를 메모리 셀 어레이(130)에 기록하기 전에 제어기(103)에 의해 프로세싱되어야만 한다.
호스트 데이터(170)(또는 이 문제에 대한 임의의 다른 호스트 데이터)를 메모리 셀 어레이(130)로 기록하기 위해서, 제어기(103)는 예를 들어, 디바이스 페이지(175)에서, 메모리 셀 어레이(130) 내의 하나 이상의 디바이스 페이지에 저장 가능한 디바이스 데이터를 생성하도록 조절 또는 구성되는 데이터 애그리게이터(120)를 포함한다. 데이터 애그리게이터(120)는 호스트 데이터(170)를 상보 데이터와 함께 총합함으로써 디바이스 데이터를 생성한다. 데이터 총합 프로세스를 완료한 후에, 데이터 애그리게이터(120)는 예를 들어, 하나 이상의 디바이스 페이지(173, 174, 및 175)에 새로 생성된 디바이스 데이터를 기록(131로 도시됨)한다.
데이터 애그리게이터(120)는 다양한 선택사항을 사용하여 호스트 데이터를 상보 데이터와 함께 총합할 수 있다. 제 1 선택사항에 따르면, 상보 데이터는 호스트 디바이스(101)로부터 수신되고 플래시 메모리 디바이스(102)에 큐잉(queueing)되는 다른 호스트 데이터이다. 이 선택사항은 충분한 수의 새로운 호스트 데이터가 호스트 디바이스(101)로부터 수신되고 예를 들어, 임의 액세스 메모리(RAM)(160)에서 큐잉될 때까지 대기하는 것을 포함한다.
불충분한 수의 호스트 데이터가 플래시 메모리 디바이스(102) 내에서 큐잉되는 경우, 제 2 선택사항이 사용되고, 이는 메모리 셀 어레이(130)로부터 남아있는 상보 데이터를 판독하는 것을 포함한다. 제 2 선택사항을 용이하게 하기 위해서, 제어 회로소자(150)는 필요한 만큼 많은 디바이스 페이지(173, 174 및 175)의 물리적 어드레스를 데이터 파서(140)로 송신하고(152로 도시됨), 이로부터 데이터 파서(140)는 남아있는 상보 데이터를 판독할 수 있다(불충분한 수의 호스트 데이터가 플래시 메모리 디바이스(102)에서 큐잉되는 상황이 심지어 존재하지 않을지라도 이 제 2 선택사항을 사용하는 것이 가능하다). 데이터 파서(140)는 어드레스된 디바이스 페이지로부터 대응하는 디바이스 데이터를 검색하기 위해 물리적 어드레스를 사용함으로써 메모리 셀 어레이(130)로부터 데이터를 판독한다.
제 3 선택사항은 특정한 시간 주기 동안 새로운 호스트 데이터가 도착하지 않은 경우에만 메모리 셀 어레이(130)로부터 상보 데이터를 검색하는 것을 포함한다. 제 4 선택 사항은 메모리 셀 어레이(130) 내의 일부 디바이스 페이지 내에서(즉, 디바이스 페이지(173, 174, 175) 내에 또는 임의의 다른 디바이스 페이지 내에서) 현재 수신된 호스트 데이터를 임시로 저장하고, 추가 호스트 데이터를 수신한 이후에, 이를 나중에 상보 데이터와 함께 총합하는 것을 포함한다.
디바이스 페이지의 물리적 어드레스에 관하여, 제어 회로소자(150)가 예를 들어, 변환표(154)를 사용하여 잠재적인 상보 데이터가 하나의 특정한 디바이스 페이지 내에 저장되어 있음을 발견하는 경우, 제어 회로소자(150)는 데이터 파서(140)에 상기 특정한 디바이스 페이지(예를 들어, 디바이스 페이지(175)의 물리적 어드레스만을 송신(152로 도시됨)할 것이다. 그러나, 잠재적인 상보 데이터가 메모리 셀 어레이(130) 내의 여러 디바이스 페이지 중에 분배되어 있음을 제어 회로소자(150)가 발견하면, 제어 회로소자(150)는 데이터 파서(140)에 여러 디바이스 페이지에 각각 대응하는 여러 물리적 어드레스를 송신(152로 도시됨)한다.
이후, 데이터 파서(140)는 제어 회로소자(150)로부터 송신된 물리적 어드레스를 이용하여 메모리 셀 어레이(130)로부터 디바이스 데이터를 검색하고(141로 도시됨), 이로부터 데이터 파서(140)는 요구되는 상보 데이터를 파싱할 수 있다. 이후, 데이터 파서(140)는 상보 데이터를 데이터 애그리게이터(120)로 전송(142로 도시됨)할 수 있고, 상기 애그리게이터는 상보 데이터를 호스트 데이터와 함께 총합함으로써 새로운 디바이스 데이터를 생성한다. 이후, 데이터 애그리게이터(120)는 제어 회로소자(150)로부터 물리적 어드레스가 송신되었던(153으로 도시됨) 타깃(target) 디바이스 페이지(예를 들어, 디바이스 페이지(175))로 디바이스 데이터를 기록(131로 도시됨)함으로써, "기록" 명령(111)을 완료한다. 상보 데이터는 도 3과 관련하여 후술하는 바와 같이, 더미 데이터일 수 있음이 주목된다. 즉, 디바이스 페이지에 저장되어야 하는 호스트 데이터는 더미 데이터와 함께 총합될 수 있고 디바이스 페이지는 제어기(103)에 의해 호스트 데이터만을 포함하는 것으로 간주될 것이다. 예를 통하여 호스트 데이터(176), 호스트 데이터(177), 및 더미 데이터(178)를 포함하는 디바이스 페이지(175)가 도시된다. 이 예에서 데이터 애그리게이터(120)는 호스트 데이터(176)를 수신하였고 호스트 데이터(176) 및 호스트 데이터(177)를 플래시 메모리 셀 어레이(130)로 기록하기 전에 추가 호스트 데이터(177)를 대기할 것을 결정하였다. 추가 호스트 데이터(즉, 호스트 데이터(177))를 대기하는 동안, 데이터 애그리게이터(120)는 RAM(160)에 임시로 유지되었다. 이후, 데이터 애그리게이터(120)는 호스트 데이터(177)를 수신하였고, 호스트 데이터(176)를 호스트 데이터(177)와 함께, 그리고 더미 데이터(178)와 함께 총합하였다. 최종적으로, 데이터 애그리게이터(120)는 결과적인 총합된 데이터를 도 1에 도시된 바와 같이, 디바이스 페이지(175)로 기록하였다.
디바이스 페이지의 물리적 어드레스를 데이터 파서(140)로 송신하고(152로 도시됨) 데이터 애그리게이터(120)로 송신하는(153으로 도시됨) 대신, 제어 회로소자(150)는 디바이스 페이지의 물리적 어드레스를 사용하여 메모리 셀 어레이(130)로부터 관심 디바이스 데이터를 판독하고, 이를 경우에 따라 데이터 파서(140)로 또는 데이터 애그리게이터(120)로 송신할 수 있음이 주목된다.
"판독" 동작
수신된 동작 코드(111)가 제어 회로소자(150)에 의해 "판독" 명령으로 해석되는 경우, 제어 소자(150)는 호스트 논리 어드레스(112)를 메모리 셀 어레이(130) 내의 디바이스 페이지(이후에 "요청된 디바이스 페이지"로서 칭해진다)의 물리적 어드레스로 변환하는 "판독" 명령을 수행하고, 이로부터 호스트 데이터(이후에 "요청된 호스트 데이터"로 칭해진다)가 판독되어야 한다. 호스트 데이터가 디바이스 페이지에 디바이스 데이터의 일부로 저장되기 때문에, 요청된 호스트 데이터(즉, 판독될 호스트 데이터)는 수반된 디바이스 페이지 내에 저장되는 디바이스 데이터로부터 파싱되어야만 한다. 그러므로, 제어 회로소자(150)는 요청된 데이터 페이지의 물리적 어드레스를 데이터 파서(140)로 전송(152로 도시됨)한다. 이후, 데이터 파서(140)는 요청된 디바이스 페이지의 물리적 어드레스를 이용하여 요청된 디바이스 데이터를 판독(141로 도시됨)한다. 이후, 데이터 파서(140)는 검색된 디바이스 데이터로부터 요청된 호스트 데이터를 파싱하고, 요청된 호스트 데이터를, 호스트 I/F(105)를 통해 호스트 디바이스(101)로 송신함으로써 "판독" 명령(111)을 완료한다.
요청된 디바이스 페이지의 물리적 어드레스를 데이터 파서(140)로 송신(152로 도시됨)하는 대신에, 제어 회로소자(150)는 요청된 디바이스 페이지의 물리적 어드레스를 사용하여 페치(fetch)하고 요청된 디바이스 데이터를 데이터 파서(140)로 송신할 수 있다.
"소거" 동작
수신된 동작 코드(111)가 제어 회로소자(150)에 의해 "소거" 명령으로 해석되는 경우, 제어 회로소자(150)는 "소거" 명령을 수행한다. "페이지" 상에서 수행되는 "기록" 및 "판독" 동작과 달리, 데이터는 "블록" 내의 NAND 플래시 디바이스에서 소거된다. "호스트 블록"은 다수의 호스트 페이지로 구성되고, "디바이스 블록"은 다수의 디바이스 페이지로 구성된다. 그러므로, 제어 회로소자(150)가 호스트 데이터를 소거하라는 소거 명령을 식별하는 경우, 제어 회로소자(150)는 소거되어야 하는 호스트 데이터를 포함하는 디바이스 데이터를 저장하는 메모리 셀 어레이(130)에서 디바이스 블록의 어드레스에 대한 변환표(154)를 참조한다. 이후, 제어 회로소자(150)는 변환표(154)에서 호스트 데이터를 소거된 것으로 표시하고, 호스트 데이터가 소거되었다는 메시지를 호스트 디바이스(101)로 송신한다. 제어 회로소자(150)는 이후에 적절한 시간 또는 편리할 때, 메모리 셀 어레이(130)로부터 호스트 데이터를 실제로 소거할 수 있다. 호스트 데이터를 실제로 소거하기 위해서, 제어 회로소자(150)는 호스트 데이터와 관련된 호스트 논리 어드레스(112)를 호스트 데이터를 포함하는 디바이스 블록의 대응하는 물리적 어드레스로 변환하고나서, 제어 회로소자(154)는 상기 디바이스 블록을 소거한다.
도 2는 본 발명에 따른 플래시 메모리 디바이스에 의해 호스트 명령 시퀀스를 처리하기 위한 예시적인 방법을 도시한다. 도 2는 도 1과 관련하여 기술될 것이고, 호스트 디바이스(101)는 SBC 기술에 따르고 플래시 메모리 디바이스(102)는 MBC 기술에 따른다고 가정한다. 앞에 설명한 바와 같이, SBC 호스트 디바이스 및 MBC 플래시 메모리 디바이스는 하나의 디바이스를 다른 디바이스와 구별하는 다양한 기술 양상에 참여하지 않고 상호 동작할 수 없다. 페이지 크기 및 블록 크기를 구별하는 것 외에도, 새 데이터가 상기 페이지에 기록되기 전에 전체 페이지는 SBC 플래시 메모리 디바이스에서 소거된다. 그러나, "소거" 단계는 새로운 데이터가 상기 페이지 내의 충분히 큰 자유 공간으로 기록되는 경우 확산되고, 이 특징은 흔히 당업계에서 부분 페이지 프로그래밍(Partial Page Programming: "PPP")로서 칭해진다. SBC 플래시 메모리 디바이스와는 대조적으로, MBC 플래시 메모리 디바이스는 항상 새로운 데이터가 상기 페이지에 기록될 수 있기 전에 소거된다. 게다가, SBC 플래시 메모리 디바이스는 데이터를 페이지에 무작위로 기록하는데 반해, MBC 플래시 메모리 디바이스는 데이터를 페이지에 순차적으로 기록, 즉, 데이터는 페이지 0으로, 그리고 페이지 1, 페이지 2로 기록된다. 도 1과 관련하여 앞에 설명한 바와 같이, 제어기(103)는 호스트 명령 파서(110), 데이터 애그리게이터(120) 및 데이터 파서(140)를 사용하여 이 기술적 차이를 해결한다.
단계(201)에서 NAND 플래시 메모리 디바이스(102)의 제어기(103)는 호스트 디바이스(101)로부터 이 예에서는 SBC 명령 시퀀스인 호스트 명령 시퀀스를 수신(도 1에서 104로 도시됨)한다. 단계(202)에서 호스트 명령 파서(HCP)(110)는 SBC 명령 시퀀스를 SBC 동작 코드(111), SBC 논리 어드레스(112), 및 이 예에서는 SBC 데이터인 호스트 데이터(113)로 파싱한다. 단계(203)에서 동작 코드가 "기록" 명령인지가 검사된다. SBC 동작 코드가 "기록" 명령이라면(203에서 "YES"로 도시됨), 단계(204)에서 제어 회로소자(150)는 데이터 애그리게이터(120)에게 BC 데이터(113)를 다른 SBC 데이터일 수 있는 상보 데이터와 함께 총합하거나 병합하라고 명령함으로써(153으로 도시됨), MBC 셀 어레이(130)의 하나 이상의 디바이스 페이지에 저장 가능한 디바이스 데이터(이 예에서는 MBC 데이터인)를 생성한다. 단계(205)에서, SBC 데이터를 포함하는 생성된 디바이스 데이터(즉, MBC 데이터)를 MBC 셀 어레이(130)의 디바이스 페이지(들)로 기록하라고 데이터 애그리게이터(120)에 명령하는(153으로 도시됨) 제어 회로소자(150)의 결과로서 SBC 데이터는 대응하는 MBC 페이지(들)에 기록된다.
상보 데이터는 호스트 디바이스(101)로부터 수신되고 플래시 메모리 디바이스(102)에서 큐잉되었던 다른 호스트 데이터일 수 있다. 상보 데이터는 다른 디바이스 데이터의 일부로서 NAND 플래시 메모리 셀 어레이(130)에 이미 저장되어 있고 이로부터 파싱되는 호스트 데이터일 수 있다. 상보 데이터는 더미 데이터일 수 있다. 기록 동작에 관해서, 메모리 셀 어레이(130)의 디바이스 페이지는 블록으로 그룹화되고 각각의 블록 내에 연속해서 논리의 방식(logically-wise)으로 기록되어서 이 디바이스 페이지의 물리적 어드레스는 반드시 순차적이지는 않다. 즉, 데이터는 비연속, 간헐적, 또는 불규칙하게 배치되는 디바이스 페이지에 기록될 수 있고, 비연속, 간헐적, 또는 불규칙하게 배치되는 디바이스 페이지는 자신들이 연속적인 디바이스 페이지에 저장된 것처럼 호스트 디바이스에 논리적으로 도입될 것이다.
호스트 데이터는 제어기에 의해, PPP 스킴을 사용하여 호스트 데이터를 기록하거나 기록하고자 시도하는 호스트 디바이스(101)에 응답하는 의사 부분적 페이지 프로그래밍("PPP") 스킴을 사용하여 플래시 메모리 셀 어레이(130)에 기록될 수 있다. 의사 PPP 스킴을 사용하는 것을 더미 데이터를 상보 데이터로서 포함할 수 있다. 예를 들어, 정전(power failure) 보호를 개선하기 위해, 호스트 데이터는 제어기(103)에 의해 이미 기록된 디바이스 페이지에 인접하지 않은 디바이스 페이지에 기록될 수 있다.
그러나, SBC 동작 코드(111)가 "기록" 명령이 아닌 경우(단계(203)에서 "NO"로 도시됨), 단계(204)에서 동작 코드가 "판독" 명령인지가 검사된다. SBC 동작 코드가 메모리 셀 어레이(130)로부터 디바이스 페이지에 저장된 MBC 데이터의 일부인 SBC 데이터를 판독하라는 "판독" 명령인 경우(단계(206)에서 "YES"로 도시됨), 단계(207)에서 제어 회로소자(150)는 데이터 파서(140)에 메모리 셀 어레이(130)로부터 MBC 데이터를 판독하고(141로 도시됨) MBC 데이터로부터 SBC 데이터를 파싱하라고 명령(152로 도시됨)한다. 단계(208)에서 제어 회로소자(150)는 데이터 파서(140)에 파싱된 SBC 데이터를 호스트 디바이스(101)로 송신하라고 명령(152에 도시됨)함으로써 판독 동작이 완료된다.
그러나, SBC 동작 코드(111)가 "판독" 명령이 아니라면(206에서 "NO"라고 도시됨), 동작코드(111)는 디바이스 블록에 저장된 MBC 데이터의 일부인 SBC 데이터를 메모리 셀 어레이(130)로부터 제거하라는 "제거" 명령이다. 단계(209)에서, 제어기(103)는 내부에서(예를 들어, 변환표(154) 내에서) SBC 데이터를 소거된 것으로 표시하고, SBC 데이터가 소거되었다는 메시지를 호스트 디바이스(101)에 송신한다. 선택 단계(210)에서 제어기는, 자신이 MBC 블록의 대응하는 물리적 어드레스를 식별하기 위해서 논리 어드레스(112)를 사용하기 전에, SBC 데이터를 포함하는 MBC 블록으로부터 실제로 SBC 데이터를 소거한다.
MBC 플래시 메모리 디바이스가 SBC 플래시 메모리 디바이스일지라도, 도 1의 제어기와 같은 제어기를 사용함으로써 SBC 호스트 디바이스는 MBC 플래시 메모리 디바이스와 함께 동작(즉, "기록", "판독", 및 "소거" 명령을 발행하는)할 수 있음이 주목된다. 또한 본 명세서는 NAND MBC 플래시 메모리 디바이스와 동작하는 NAND SBC 호스트 디바이스로 제한되지 않음이 또한 주목된다. 호스트 데이터가 디바이스 페이지보다 더 작은 호스트 페이지로 그룹화되면, 본 명세서는 또한 임의의 NAND 호스트 디바이스 및 NAND 플래시 메모리 디바이스에 적용 가능하다. 예를 들어, MBC 호스트 디바이스와 관련되는 데이터 페이지가 MBC 플래시 메모리 디바이스와 관련되는 데이터 페이지보다 더 작은 경우 본 명세서는 MBC 플래시 메모리 디바이스와 동작하는 MBC 호스트 디바이스에 적용 가능하다.
SBC 부분 페이지 프로그래밍(" PPP ")을 에뮬에이팅
도 3은 부분 페이지 프로그래밍("PPP")의 예시적인 에뮬레이션(emulation)이 도시되고, 특성은 본 명세서에 따라, SBC 플래시 메모리 디바이스에 의해 사용된다. 호스트 디바이스(101)(하나의 실시예에 따르면, SBC 디바이스인)가 PPP를 사용하고자 하면, 이는 그것을 정상적으로 사용하고, 플래시 메모리 디바이스(102)는 후술하는 바와 같이, 의사 PPP 스킴을 사용함으로써, 호스트 디바이스에 의해 발행된 결과적인 "기록" 명령에 응답할 것이다. 일반적으로, 호스트 디바이스가 하나의 논리 SBC 페이지에 데이터 요소를 기록하고자 하면, 의사 PPP 스킴은 MCB 플래시 메모리 디바이스 내의 단일 물리적 MCB 페이지에 다양한 데이터 요소를 기록하는 것을 포함한다.
도 3은 도 1과 관련하여 기술될 것이다. 간소화를 위해 호스트 디바이스(101)는 SBC 디바이스이고(즉, 이것은 SBC 페이지로 그룹화된 데이터를 처리한다) 플래시 메모리 디바이스(102)는 MBC 디바이스라고 가정될 것이다. 호스트 디바이스(101)는 SBC 데이터(310, 311 및 312로 지정되는)를 한번에 하나의 데이터 요소씩 플래시 메모리 디바이스(102)로 송신된다. SBC 호스트 디바이스가 부분 페이지 프로그래밍(PPP)를 사용할 수 있으므로, MBC 플래시 메모리 디바이스가 이와 같은 동작을 처리하도록 설계되지 않을지라도, 도 3은 MBC 플래시 메모리 디바이스(102)가 PPP를 처리할 수 있는 방법을 도시한다.
호스트 디바이스(101)가 SBC 데이터(310)를 MBC 플래시 메모리 디바이스(102)로 송신하기 위해서, 호스트 디바이스(101)는 예시적인 SBC 데이터(310)를 논리 어드레스가 301인 SBC 페이지에 기록하고, 시각(t1)에서, SBC 페이지(301)를 대응하는 "기록" 명령 시퀀스에 내장된 플래시 메모리 디바이스(102)로 송신한다. 데이터 페이지(301)의 저장 공간(320)은 데이터에 자유롭거나 비어 있고, SBC 저장 디바이스에서 추가 데이터는 소거 데이터(310) 없이 개별적으로 페이지(301)에 기록될 수 있고, 이 이유로, 본원에 기술된 방식으로 데이터를 페이지(301)에 기록하는 것은 "부분 페이지 프로그래밍"으로 칭해진다. MBC 플래시 메모리 디바이스(102)는 호스트 인터페이스(105)를 통해, 데이터(310)를 수신하고, 데이터(310)를 MBC 셀 어레이(130)로 기록할 여러 선택사항을 가지고 호스트 디바이스(101)에 의해 발생되는 기록 명령을 완수한다. 하나의 선택사항은 데이터(310)를 상보 데이터와 총합하기 위한 총합 데이터(120)를 사용함으로써 메모리 셀 어레이(130)의 MBC 페이지로 기록될 수 있는 데이터 구조(즉, 디바이스 데이터)를 생성하는 것을 포함한다. 이 선택사항에 따르면, 그리고 이미 상술한 바와 같이, 상보 데이터는 플래시 메모리 디바이스(102)에 아직 수신되지 않은 다른 호스트 데이터이거나, 또는 플래시 메모리 디바이스(102)에 큐잉된 호스트 데이터, 또는 메모리 셀 어레이(130)에 이미 저장되어 있는 데이터일 수 있다. 제 2 선택사항은, 후술하겠지만, PPP를 모방하는 방식(상기 유사한 PPP 동작은 본원에서 "의사 PPP"로 칭해질 수 있다)으로 플래시 메모리 디바이스(102)에 의해 데이터(310)를 처리하는 것이다. 의사 PPP 선택사항을 구현하기 위해, 데이터(310)는 저장 공간(331)을 비워진 채로 남겨둔 동안 MBC 페이지(330)에 저장될 수 있거나, 데이터 애그리게이터(120)는 데이터(310)를 더미 데이터와 총합하여 MBC 데이터를 생성할 수 있고 생성된 MBC 데이터를 메모리 셀 어레이(130)에 기록할 수 있다.
시각(t2)에서, SBC 호스트 디바이스(101)는 데이터를 논리 페이지(301)의 자유 공간(320)으로 기록하고 저장을 위해 페이지(301)를 플래시 메모리 디바이스(102)로 송신한다. 데이터(311)를 페이지(301)로 기록함으로써 페이지(301) 내의 작은 자유 공간(321로 도시됨)이 발생된다. 일부 MBC 플래시 메모리 디바이스에서, 물리적 페이지는 우선 자신들을 소거하지 않고 단지 한번에 기록될 수 있으므로, 물리적 페이지(330)가 여전히 자유 공간(즉, 공간(331))을 가지고 있을지라도, 데이터(311)는 메모리 셀 어레이(130) 내의 물리적 페이지(330)에 기록될 수 없다. 즉, 도 3에 도시된 예에 따르면, 플래시 메모리 디바이스는 현재 수신된 데이터를 메모리 셀 어레이(130) 내의 새로운 자유로운 MBC 물리적 페이지에 기록하게 된다. 그러나, PPP 동작을 모방하는 방식으로 동작하기 위해, 데이터 파서(140)는 물리적 페이지(330)로부터 데이터(310)를 추출하고 데이터 애그리게이터(120)는 그것을 현재 수신된 데이터(311)와 함께(즉, 그것을 수신된 데이터(311)에 추가한다) 총합한다. 이후, 데이터 애그리게이터(120)는 데이터(310) 및 추가된 데이터(311)를 메모리 셀 어레이(130) 내의 새로운 자유로운 물리적 페이지(340)에 기록한다. 마찬가지로, 호스트 디바이스(101)가 시각(t3)에서 데이터(312)를 플래시 메모리 디바이스(102)로 송신할 때, 물리적 페이지(340)가 여전히 적절한 자유 공간(즉, 공간(341))을 가질지라도, 데이터(312)는 물리적 페이지(340)로 기록될 수 없다. 대신에, 데이터 파서(140)가 데이터(310) 및 데이터(311)를 물리적 페이지(340)로부터 추출하고, 데이터 애그리게이터(120)가 데이터(310) 및 데이터(311)를 수신된 데이터(312)와 함께(데이터를 수신된 데이터(312)에 추가한다) 총합한다. 이후, 데이터 애그리게이터(120)는 데이터(310), 데이터(311), 및 새로 추가된 데이터(312)를 메모리 셀 어레이(130) 내의 새로운 자유로운 물리적 페이지(350)에 기록한다. 대안의 동작 모드로서, 데이터(310, 311, 및 312)는 물리적 페이지(330, 340, 및 350)로 각각 기록될 수 있고, 이후, 데이터 애그리게이터(120)는 그 모두를 총합하고 메모리 셀 어레이(130) 내의 새로운 자유로운 물리적 페이지에 기록할 수 있다. 도 3의 예에 따라, MCB 페이지가 연속적으로 기록되기 때문에, 물리적 MCB 페이지(330, 340, 및 350)는 서로 물리적으로 인접한다.
호스트 디바이스(101)와 같은 호스트 디바이스가 데이터(310, 311, 및 312)와 유사한 개별 데이터 요소를 논리 페이지(301)와 유사한 논리 페이지로 기록하기 위해 부분 프로그래밍(즉 PPP)를 사용하는 경우, 이는 수반된 플래시 메모리 디바이스(예를 들어, 플래시 메모리 디바이스(102))가 SBC 플래시 메모리 디바이스인 것처럼 그렇게 행할 수 있다. 이후, 수반된 플래시 메모리 디바이스는 개별 호스트 디바이스 데이터 요소를 동일한 물리적 MBC 페이지에(이 예에서 MBC 페이지(350)에) 기록하기 위해 상술한 의사 PPP 스킴을 사용함으로써 호스트가 발행한 기록 명령에 응답할 것이다. 호스트 디바이스(101)는 의사 PPP 스킴을 인지하지 못하고, 호스트 디바이스(101)가 관한 한, 플래시 메모리 디바이스(102)는 하나의 물리적 SBC 페이지에 데이터 요소(310, 311 및 312)를 기록하였다.
제어기(103)는 호스트 디바이스(101)로부터 도달한 SBC 페이지의 논리 어드레스를 메모리 셀 어레이(130) 내의 MBC 페이지(즉, 디바이스 페이지)의 어드레스로 변환하기 위하여 변환표(154)를 유지한다. 변환표(154)를 사용함으로써, 제어기(103)는, 데이터를 저장하는데 사용되는 메모리 셀 어레이(130) 내의 디바이스 페이지의 물리적 어드레스를 계속 추적해서 데이터 파서(140)가 메모리 셀 어레이(130)로부터 데이터를 추출하고 데이터 애그리게이터(120)가 데이터를 메모리 셀 어레이(130)로 기록할 때마다 변환표(154)를 갱신한다. 게다가, 제어기(103)는 경우에 따라 메모리 셀 어레이(130) 내의 디바이스 데이터를 호스트 디바이스로부터 메모리 명령을 수신하자마자, 또는 이와 같은 명령에 응답하여, 전체적으로 또는 부분적으로, 임시로 또는 영구적으로 재배열 또는 재배치시키는 것이 필요할 수 있다. 그렇게 함으로써, 제어기(103)는 변환표(154)를 데이터의 재배열 및 재배치하여 포함된 임시 및 최종 논리 및 물리적 어드레스 또는 그 일부를 갖도록 갱신된다. 플래시 메모리 관리의 맥락으로 변환표를 그 자체로 처리하는 것은 종래 기술에 공지되어 있어서 본원에서는 설명되지 않는다.
페이지 상호 의존성, P/E 주기 및 신뢰성
플래시 메모리에서, 각각의 플래시 셀이 더욱 많은 비트를 저장할 수 있을수록, 더욱 많은 동작 문제가 존재하므로, 플래시 셀을 더욱 유용하게 하기 위해 이것이 해결되어야 할 필요가 있다. 아래에서 MBC 플래시 메모리 및 SBC 플래시 메모리가 참조되더라도, 셀당 2 비트를 저장하는 MBC 디바이스에, 그리고 셀당 2 이상의 비트를 저장하는 MBC 디바이스에 동일한 원리가 적용된다.
페이지 상호 의존성에 관해서, MBC 플래시 메모리는 정전 중에 치명적인 데이터 기록/판독 에러가 발생하는 경향이 있다. 부분적으로, 이는 두 페이지 사이의 물리적인 근접성에 기인한다. 한편, SBC 플래시 메모리는 이와 같은 에러가 발생하는 경향이 더 적다. 그러므로, SBC 호스트 디바이스와는 달리, MBC 호스트 디바이스는 정전을 처리하기 위해 특정한 대비책을 취할 필요가 있다. 그러므로, SBC 호스트 디바이스가 호스트 데이터를 연속적인 호스트 페이지의 형태로 송신하는 경우, 데이터 애그리게이터는 호스트 페이지를 물리적 디바이스 페이지(일반적으로 인접하지 않은)의 특수한 시퀀스에 기록함으로써 정전의 효과를 최소화할 것이다. 즉, 연속적으로 수신되는 호스트 페이지는 반드시 연속적인 디바이스 페이지 순서로 디바이스 페이지에 저장되지 않는다. 때때로(즉, 호스트 디바이스에 의해 송신되는 데이터의 유형에 따라) 정전을 처리하는 추가 조치로서 적어도 데이터의 일부를 내부적으로 백업(backup)하는 것이 필요할 것이다.
프로그래밍/소거(Programming/Erasing: P/E) 주기 및 신뢰에 관하여, MBC 플래시 메모리에서의 성공적인 P/E 주기의 최대 수는 SBC 플래시 메모리보다 훨씬 더 낮고, 그 신뢰성은 낮은 수의 P/E 주기에 의해 해로운 영향을 받는다. 일부 SBC 호스트 디바이스는 적당하거나 덜 엄밀한 플래시 관리 알고리즘을 사용하는데, 왜냐하면 SBC 디바이스가 보다 높은 P/E 제한 및 보다 양호한 신뢰성을 제공한다고 가정되기 때문인데, 이는 SBC 플래시 메모리의 많은 경우에 대해서도 마찬가지이다. 그러므로, 제어 회로소자(130)는 호스트 데이터가 메모리 셀 어레이(130) 내의 디바이스 페이지로 전송되도록 하며, 이와 같은 방식에서는 그 결과가 SBC 호스트 디바이스로 익스포트(export)되는 것에 따라 P/E 주기의 수가 증가하는 방식일 것이다. 즉, 변환표(154)에 유지되는 정보를 사용함으로써, 제어 회로소자(150)는 각각의 디바이스 페이지가 얼마나 많은 P/E 주기를 경험했는지를 식별하고나서, 제어 회로소자(150)는 데이터 애그리게이터(120)가 호스트 데이터를 보다 적게 소모된 디바이스 페이지에 기록하게 한다.
그렇지 않으면(상술한 대비 단계가 제어기(103)에 의해 수행되지 않은 경우), SBC 호스트 디바이스가 이후에 판독하기를 윈하는 데이터는 소위 "표준" SLC 플래시 메모리에서 예상된 것보다 훨씬 더 빠르게 손상될 것이다.
플래시 메모리 디바이스의 신뢰성은 P/E 주기 외의 다른 요인에 좌우된다. 예를 들어, 그것은 에러의 수와 데이터를 보유하는 플래시 셀의 능력에 좌우된다. 호스트 디바이스에 의해 예상되는 신뢰성을 만족시키기 위해, 제어 회로소자(150)는 하나 이상의 내부 파라미터(즉, 디바이스 페이지의 기능과 관련된 파라미터)를 사용하여 메모리 셀 어레이(130) 내의 디바이스 데이터를 재배치해야만 할 것이다.
상술한 대비 조치를 용이하게 하기 위해(즉, 개별 호스트 데이터를 물리적 디바이스 페이지의 특정한 시퀀스로의 기록, 호스트 데이터의 디바이스 페이지로의 전송, 디바이스 페이지 내의 디바이스 데이터의 재배치), 데이터 애그리게이터는 대응하는 매핑 알고리즘을 사용하여, 포함된 논리 및 물리적 어드레스뿐만 아니라, 데이터 위치와 관련되고 상술한 다양한 성능 양상과 관련된 정보를 구비하도록 변환표(154)를 갱신한다.
본 발명의 설명과 청구항에서, "이루어진", "포함하는", "갖는"이라는 동사와 그 각각의 활용형은 반드시 동사의 대상 또는 대상이 동사의 주어 또는 주어의 일원, 컴포넌트, 요소 또는 부분의 완성된 목록은 아니다.
단수형은 본원에서 문맥에 따라, 관사의 문법적인 목적어 중 하나 또는 하나 이상(즉, 적어도 하나)을 언급하는데 사용된다. 예를 들면, 문맥에 따라, "요소"는 하나의 요소 또는 하나 이상의 요소를 의미할 수 있다.
"포함하는"이라는 용어는 본원에서 "포함하지만 이에 제한되지 않는"이라는 어구를 의미하는데 사용되고, 이와 상호 교환 가능하게 사용된다.
"또는"과 "및"이라는 용어는 문맥에서 달리 명확하게 지정하지 않으면, 본원에서 "및/또는"이라는 용어를 의미하는데 사용되고, 이와 상호 교환 가능하게 사용된다.
"~와 같은"이라는 용어는 본원에서 "~와 같지만, 이에 제한되지 않는"이라는 어구를 의미하는데 사용되고, 이와 상호 교환 가능하게 사용된다.
그러므로, 본 발명의 예시적인 실시예가 기술되었을지라도, 개시된 예시적인 실시예의 수정이 본 발명의 범위 내에 있을 것임은 당업자에게 명백할 것이다. 예를 들어, 본 발명 역시 필요한 변형을 가하여, 다른 유형의 호스트 디바이스 및 다른 유형의 NAND 플래시 디바이스에 적용 가능하므로 호스트 디바이스는 반드시 SBC 호스트 디바이스여야만 할 필요가 없다. 따라서, 개시된 발명의 추가 변형, 수정, 및 개선은 상기에 명백하게 도시되지 않을지라도, 본 발명의 사상과 범위 내에 있도록 의도되고 내포된다.

Claims (24)

  1. 플래시 메모리 디바이스에 호스트 데이터를 기록하기 위한 방법에 있어서,
    a) 상기 플래시 메모리 디바이스의 제어기에 의해, 호스트 디바이스로부터, 개별 기록 가능 디바이스 페이지로 그룹화된 NAND 플래시 메모리 셀의 어레이에 호스트 데이터를 기록하라는 기록 명령을 수신하는 단계와,
    b) 상기 제어기에 의해, 상기 호스트 데이터를 상보 데이터와 함께 총합함으로써 상기 디바이스 페이지의 하나 이상에 저장 가능한 디바이스 데이터를 생성하는 단계와,
    c) 상기 제어기에 의해, 상기 디바이스 데이터를 상기 디바이스 페이지 중 하나 이상에 기록하는 단계를
    포함하는, 호스트 데이터 기록 방법.
  2. 제 1항에 있어서, 상기 상보 데이터는 상기 호스트 디바이스로부터 수신되고 상기 플래시 메모리 디바이스에서 큐잉되는 다른 호스트 데이터인, 호스트 데이터 기록 방법.
  3. 제 1항에 있어서, 상기 상보 데이터는 상기 NAND 플래시 메모리 셀의 어레이에 다른 디바이스 데이터로서 이미 저장되고 이로부터 파싱된 호스트 데이터인, 호스트 데이터 기록 방법.
  4. 제 1항에 있어서, 상기 디바이스 페이지는 블록으로 그룹화되고 각각의 블록 내에 연속적으로 논리의 방식으로 기록되어 상기 디바이스 페이지의 물리적 어드레스가 반드시 순차적일 필요가 없도록 하는, 호스트 데이터 기록 방법.
  5. 제 1항에 있어서, 상기 호스트 데이터는 상기 제어기에 의해, 부분 페이지 프로그래밍 스킴을 사용하여 호스트 데이터를 기록하는 상기 호스트 디바이스에 응답하는 의사 부분 페이지 프로그래밍 스킴을 사용하여, 상기 플래시 메모리 셀 어레이에 기록되는, 호스트 데이터 기록 방법.
  6. 제 5항에 있어서, 상기 의사 부분 페이징 프로그래밍 스킴을 사용하는 것은 더미 데이터를 상기 상보 데이터로서 사용하는 것을 포함하는, 호스트 데이터 기록 방법.
  7. 제 1항에 있어서, 상기 호스트 데이터는 상기 제어기에 의해, 이미 기록된 디바이스 페이지에 인접하지 않은 디바이스 페이지에 기록되는, 호스트 데이터 기록 방법.
  8. 플래시 메모리 디바이스로부터 호스트 데이터를 판독하기 위한 방법에 있어서,
    a) 상기 호스트 디바이스로부터 개별 판독 가능 디바이스 페이지로 그룹화된 NAND 플래시 메모리 셀의 어레이로부터 호스트 데이터를 판독하라는 판독 명령을 수신하는 단계로서, 상기 호스트 데이터는 디바이스 페이지에 저장되는 디바이스 데이터의 일부인, 판독 명령을 수신하는 단계와,
    b) 상기 디바이스 데이터로부터 상기 호스트 데이터를 파싱하는 단계와,
    c) 상기 파싱된 호스트 데이터를 호스트 디바이스로 송신하는 단계를
    포함하는, 호스트 데이터 판독 방법.
  9. 플래시 메모리 디바이스로부터 호스트 데이터를 소거하라는 소거 명령을 수행하기 위한 방법에 있어서,
    a) 호스트 디바이스로부터 개별 소거 가능 디바이스 블록으로 그룹화되는 NAND 플래시 메모리 셀의 어레이로부터 호스트 데이터를 소거하라는 소거 명령을 수신하는 단계로서, 상기 호스트 데이터는 디바이스 블록에 저장되는 디바이스 데이터의 일부인, 소거 명령을 수신하는 단계와,
    b) 상기 호스트 데이터를 소거된 것으로 표시하는 단계와,
    c) 상기 호스트 데이터가 소거되었다는 메시지를 상기 호스트 디바이스에 송신하는 단계를
    포함하는, 소거 명령 수행 방법.
  10. 제 9항에 있어서, c) 상기 호스트 데이터를 포함하는 상기 디바이스 블록을 소거하는 단계를 더 포함하는, 소거 명령 수행 방법.
  11. 플래시 메모리 디바이스에 대한 제어기에 있어서,
    a) 호스트 디바이스로부터 호스트 데이터를 수신하도록 조절된 호스트 NAND 인터페이스와,
    b) 상기 호스트 데이터를 상보 데이터와 총합하도록 조절된 데이터 애그리게이터로서, 그로 인해 디바이스 데이터를 생성하고, 상기 플래시 메모리 디바이스와 관련된 NAND 플래시 메모리 셀의 어레이의 디바이스 페이지에 상기 디바이스 데이터를 기록하는, 상기 데이터 애그리게이터를
    포함하는, 플래시 메모리 디바이스에 대한 제어기.
  12. 제 11항에 있어서, 상기 상보 데이터는 상기 호스트 디바이스로부터 수신되고 상기 NAND 플래시 메모리 셀의 어레이에 저장하기 위한 상기 플래시 메모리 디바이스에 큐잉되는 다른 호스트 데이터인, 플래시 메모리 디바이스에 대한 제어기.
  13. 제 11항에 있어서, c) 디바이스 데이터로부터 상보 데이터를 파싱하도록 조절된 데이터 파서를 더 포함하는, 플래시 메모리 디바이스에 대한 제어기.
  14. 제 13항에 있어서, 상기 상보 데이터는 디바이스 데이터로부터 파싱된 다른 호스트 데이터인, 플래시 메모리 디바이스에 대한 제어기.
  15. 제 12항에 있어서, 상기 데이터 파서는, 상기 호스트 디바이스로부터 제공된 호스트 데이터를 판독하라는 명령을 수신할 때 디바이스 데이터로부터 상기 제공된 호스트 데이터를 파싱하도록 추가 조절되는, 플래시 메모리 디바이스에 대한 제어기.
  16. 제 11항에 있어서, 디바이스 페이지는 블록으로 그룹화되고, 각각의 블록 내에 데이터를 연속적으로 논리의 방식으로 기록하도록 추가 조절되어 상기 디바이스 페이지의 물리적 어드레스가 반드시 순차적일 필요가 없도록 하는, 플래시 메모리 디바이스에 대한 제어기.
  17. 제 11항에 있어서, 상기 호스트 디바이스로부터 제공된 호스트 데이터를 소거하라는 명령을 수신할 때, 상기 제공된 호스트 데이터는 상기 제어기에 의해 "소거된 것"으로 표시되고, 상기 제공된 호스트 데이터가 소거되었다는 메시지가 상기 호스트 디바이스로 송신되는, 플래시 메모리 디바이스에 대한 제어기.
  18. 제 11항에 있어서, c) 부분 페이지 프로그래밍 스킴을 사용하여 호스트 데이터를 기록하는 상기 호스트 디바이스에 응답하는 의사 부분 페이지 프로그래밍 스킴을 사용하여, 상기 플래시 메모리 셀 어레이에 상기 호스트 데이터를 기록하도록 조절된 제어 회로소자를 더 포함하는, 플래시 메모리 디바이스에 대한 제어기.
  19. 제 18항에 있어서, 상기 의사 부분 페이지 프로그래밍 스킴을 사용할 때, 상기 제어 회로소자는 더미 데이터를 상기 상보 데이터로 사용하는, 플래시 메모리 디바이스에 대한 제어기.
  20. 제 18항에 있어서, 상기 제어 회로소자는, 상기 호스트 디바이스로부터, 제공된 호스트 데이터를 소거하라는 명령을 수신할 때, 상기 제공된 호스트 데이터를 소거된 것으로 표시하고 상기 제공된 호스트 데이터가 소거되었다는 메시지를 상기 호스트 디바이스에 송신하도록 조절되는, 플래시 메모리 디바이스에 대한 제어기.
  21. 제 11항에 있어서, 상기 호스트 데이터는 셀당 M 비트로 데이터를 저장하는 메모리 셀의 NAND 어레이에 대해서 포맷되고, 상기 플래시 메모리 셀의 메모리 셀 어레이는 셀당 N 비트로 데이터를 저장하고, N 및 M은 정수이고, N이 M보다 더 큰, 플래시 메모리 디바이스에 대한 제어기.
  22. 제 21항에 있어서, N은 2이고 N은 1인, 플래시 메모리 디바이스에 대한 제어기.
  23. 제 21항에 있어서, N은 4이고 M은 1인, 플래시 메모리 디바이스에 대한 제어기.
  24. 제 21항에 있어서, N은 4이고 M은 2인, 플래시 메모리 디바이스에 대한 제어기.
KR1020107015590A 2007-12-27 2008-01-08 셀당 단일 비트 nand 플래시 메모리를 에뮬레이팅하기 위한 셀당 다수 비트 nand 플래시 메모리에 대한 제어기 KR101517416B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/964,741 2007-12-27
US11/964,741 US8001316B2 (en) 2007-12-27 2007-12-27 Controller for one type of NAND flash memory for emulating another type of NAND flash memory
PCT/IL2008/000040 WO2009083945A1 (en) 2007-12-27 2008-01-08 A controller for a multiple bit per cell nand flash memory for emulating a single bit per cell nand flash memory

Publications (2)

Publication Number Publication Date
KR20100113083A true KR20100113083A (ko) 2010-10-20
KR101517416B1 KR101517416B1 (ko) 2015-05-04

Family

ID=39708308

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107015590A KR101517416B1 (ko) 2007-12-27 2008-01-08 셀당 단일 비트 nand 플래시 메모리를 에뮬레이팅하기 위한 셀당 다수 비트 nand 플래시 메모리에 대한 제어기

Country Status (7)

Country Link
US (3) US8001316B2 (ko)
EP (1) EP2225759B1 (ko)
JP (1) JP5213965B2 (ko)
KR (1) KR101517416B1 (ko)
CN (1) CN101946286B (ko)
TW (1) TWI375151B (ko)
WO (1) WO2009083945A1 (ko)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110002169A1 (en) 2009-07-06 2011-01-06 Yan Li Bad Column Management with Bit Information in Non-Volatile Memory Systems
TWI494756B (zh) * 2009-08-26 2015-08-01 Phison Electronics Corp 下達讀取指令的方法、快閃記憶體控制器與快閃記憶體儲存系統
EP2317442A1 (en) * 2009-10-29 2011-05-04 Thomson Licensing Solid state memory with reduced number of partially filled pages
US8468294B2 (en) * 2009-12-18 2013-06-18 Sandisk Technologies Inc. Non-volatile memory with multi-gear control using on-chip folding of data
US8725935B2 (en) 2009-12-18 2014-05-13 Sandisk Technologies Inc. Balanced performance for on-chip folding of non-volatile memories
US20110153912A1 (en) * 2009-12-18 2011-06-23 Sergey Anatolievich Gorobets Maintaining Updates of Multi-Level Non-Volatile Memory in Binary Non-Volatile Memory
US9342446B2 (en) 2011-03-29 2016-05-17 SanDisk Technologies, Inc. Non-volatile memory system allowing reverse eviction of data updates to non-volatile binary cache
US8924629B1 (en) * 2011-06-07 2014-12-30 Western Digital Technologies, Inc. Mapping table for improving write operation efficiency
EP2745203B1 (en) 2011-08-19 2016-09-21 Kabushiki Kaisha Toshiba Information processing apparatus
US9588883B2 (en) 2011-09-23 2017-03-07 Conversant Intellectual Property Management Inc. Flash memory system
US9588762B2 (en) * 2012-03-15 2017-03-07 International Business Machines Corporation Vector find element not equal instruction
US8681548B2 (en) 2012-05-03 2014-03-25 Sandisk Technologies Inc. Column redundancy circuitry for non-volatile memory
TWI584128B (zh) * 2012-11-09 2017-05-21 諾瓦晶片加拿大公司 菊鏈式記憶體系統中用於鎖相迴路(pll)鎖定控制之方法及裝置
KR102272228B1 (ko) * 2014-05-13 2021-07-06 삼성전자주식회사 불휘발성 메모리 장치, 그것을 포함하는 저장 장치 및 그것의 동작 방법
US9423961B2 (en) 2014-09-08 2016-08-23 Apple Inc. Method to enhance programming performance in multilevel NVM devices
US9588701B2 (en) * 2014-09-09 2017-03-07 Sandisk Technologies Llc Multi-stage programming at a storage device using multiple instructions from a host
US9934872B2 (en) 2014-10-30 2018-04-03 Sandisk Technologies Llc Erase stress and delta erase loop count methods for various fail modes in non-volatile memory
US9224502B1 (en) 2015-01-14 2015-12-29 Sandisk Technologies Inc. Techniques for detection and treating memory hole to local interconnect marginality defects
US10032524B2 (en) 2015-02-09 2018-07-24 Sandisk Technologies Llc Techniques for determining local interconnect defects
US10063569B2 (en) 2015-03-24 2018-08-28 Intel Corporation Custom protection against side channel attacks
US9269446B1 (en) 2015-04-08 2016-02-23 Sandisk Technologies Inc. Methods to improve programming of slow cells
US9564219B2 (en) 2015-04-08 2017-02-07 Sandisk Technologies Llc Current based detection and recording of memory hole-interconnect spacing defects
JP6453729B2 (ja) 2015-08-17 2019-01-16 東芝メモリ株式会社 半導体記憶装置及びメモリシステム
KR102480016B1 (ko) 2015-08-18 2022-12-21 삼성전자 주식회사 다수의 맵핑 단위를 이용하는 불휘발성 메모리 시스템 및 그 동작방법
US9904543B2 (en) 2015-10-26 2018-02-27 Hewlett-Packard Development Company, L.P. Setting a build indicator to enable or disable a feature
US10521118B2 (en) * 2016-07-13 2019-12-31 Sandisk Technologies Llc Methods, systems, and computer readable media for write classification and aggregation using host memory buffer (HMB)
US10049764B2 (en) 2016-12-13 2018-08-14 Macronix International Co., Ltd. Control method for memory device and memory controller
US9823961B1 (en) * 2016-12-13 2017-11-21 Macronix International Co., Ltd. Memory controller and operating method thereof
JP6403130B2 (ja) * 2017-08-03 2018-10-10 東芝メモリ株式会社 情報記録システム
US11037627B2 (en) * 2017-11-29 2021-06-15 Western Digital Technologies, Inc. Cell block allocation for hybrid dual write
US10831507B2 (en) 2018-11-21 2020-11-10 SambaNova Systems, Inc. Configuration load of a reconfigurable data processor
US11188497B2 (en) 2018-11-21 2021-11-30 SambaNova Systems, Inc. Configuration unload of a reconfigurable data processor
US10698853B1 (en) * 2019-01-03 2020-06-30 SambaNova Systems, Inc. Virtualization of a reconfigurable data processor
US11386038B2 (en) 2019-05-09 2022-07-12 SambaNova Systems, Inc. Control flow barrier and reconfigurable data processor
US11055141B2 (en) 2019-07-08 2021-07-06 SambaNova Systems, Inc. Quiesce reconfigurable data processor
US11874768B1 (en) * 2019-11-14 2024-01-16 Xilinx, Inc. Flash memory emulation
US11809908B2 (en) 2020-07-07 2023-11-07 SambaNova Systems, Inc. Runtime virtualization of reconfigurable data flow resources
US11782729B2 (en) 2020-08-18 2023-10-10 SambaNova Systems, Inc. Runtime patching of configuration files
US11409540B1 (en) 2021-07-16 2022-08-09 SambaNova Systems, Inc. Routing circuits for defect repair for a reconfigurable data processor
US11327771B1 (en) 2021-07-16 2022-05-10 SambaNova Systems, Inc. Defect repair circuits for a reconfigurable data processor
US11556494B1 (en) 2021-07-16 2023-01-17 SambaNova Systems, Inc. Defect repair for a reconfigurable data processor for homogeneous subarrays
US11487694B1 (en) 2021-12-17 2022-11-01 SambaNova Systems, Inc. Hot-plug events in a pool of reconfigurable data flow resources

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5268870A (en) * 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
EP0935255A2 (en) * 1989-04-13 1999-08-11 SanDisk Corporation Flash EEPROM system
US5541886A (en) * 1994-12-27 1996-07-30 Intel Corporation Method and apparatus for storing control information in multi-bit non-volatile memory arrays
US5930167A (en) * 1997-07-30 1999-07-27 Sandisk Corporation Multi-state non-volatile flash memory capable of being its own two state write cache
US8108590B2 (en) * 2000-01-06 2012-01-31 Super Talent Electronics, Inc. Multi-operation write aggregator using a page buffer and a scratch flash block in each of multiple channels of a large array of flash memory to reduce block wear
US6426893B1 (en) * 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
JP2005092923A (ja) * 2003-09-12 2005-04-07 Renesas Technology Corp 半導体記憶装置
ITMI20032134A1 (it) * 2003-11-06 2005-05-07 St Microelectronics Srl Dispositivo integrato di memoria con comando di cancellazione multisettore
KR100719380B1 (ko) * 2006-03-31 2007-05-18 삼성전자주식회사 향상된 신뢰성 특성을 갖는 다치 플래시 메모리 장치 및그것을 포함한 메모리 시스템
US8180931B2 (en) * 2004-01-20 2012-05-15 Super Talent Electronics, Inc. USB-attached-SCSI flash-memory system with additional command, status, and control pipes to a smart-storage switch
US7336531B2 (en) * 2004-06-25 2008-02-26 Micron Technology, Inc. Multiple level cell memory device with single bit per cell, re-mappable memory block
US20060143368A1 (en) * 2004-12-23 2006-06-29 M-Systems Flash Disk Pioneers Ltd. Method for using a multi-bit cell flash device in a system not designed for the device
US20060184719A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US7752382B2 (en) * 2005-09-09 2010-07-06 Sandisk Il Ltd Flash memory storage system and method
SG130988A1 (en) * 2005-09-29 2007-04-26 Trek 2000 Int Ltd Portable data storage device incorporating multiple flash memory units
JP5073667B2 (ja) * 2005-09-29 2012-11-14 トレック・2000・インターナショナル・リミテッド Slc及びmlcフラッシュメモリを使用するポータブルデータ記憶装置
JP2007141376A (ja) * 2005-11-18 2007-06-07 Matsushita Electric Ind Co Ltd 半導体記憶装置及びその制御方法
US7366013B2 (en) * 2005-12-09 2008-04-29 Micron Technology, Inc. Single level cell programming in a multiple level cell non-volatile memory device
US8055979B2 (en) * 2006-01-20 2011-11-08 Marvell World Trade Ltd. Flash memory with coding and signal processing
US7646636B2 (en) * 2007-02-16 2010-01-12 Mosaid Technologies Incorporated Non-volatile memory with dynamic multi-mode operation

Also Published As

Publication number Publication date
US20130024611A1 (en) 2013-01-24
EP2225759A1 (en) 2010-09-08
TW200928736A (en) 2009-07-01
JP2011508357A (ja) 2011-03-10
US8296509B2 (en) 2012-10-23
US20090172247A1 (en) 2009-07-02
CN101946286A (zh) 2011-01-12
TWI375151B (en) 2012-10-21
US20110271045A1 (en) 2011-11-03
WO2009083945A1 (en) 2009-07-09
EP2225759B1 (en) 2014-03-05
JP5213965B2 (ja) 2013-06-19
US8683116B2 (en) 2014-03-25
US8001316B2 (en) 2011-08-16
KR101517416B1 (ko) 2015-05-04
CN101946286B (zh) 2014-06-18

Similar Documents

Publication Publication Date Title
KR101517416B1 (ko) 셀당 단일 비트 nand 플래시 메모리를 에뮬레이팅하기 위한 셀당 다수 비트 nand 플래시 메모리에 대한 제어기
US9645895B2 (en) Data storage device and flash memory control method
TWI476780B (zh) 具有揮發性及非揮發性記憶體之混合固態記憶體系統
US8041884B2 (en) Controller for non-volatile memories and methods of operating the memory controller
CN105900069B (zh) 对被存储在闪存存储器中的数据的推测性预取
CN103106149B (zh) 半导体器件
US10877900B1 (en) Enabling faster and regulated device initialization times
CN106598479A (zh) 闪速存储器的故障安全擦除的方法和装置
JP2009099149A (ja) 適応ハイブリッド密度メモリ記憶装置の制御方法、及び適応ハイブリッド密度メモリ記憶装置
KR20210070379A (ko) 메모리 서브-시스템의 요구 시 리프레시 동작을 수행하는 방법
CN103635969A (zh) 包含存储器系统控制器的设备和相关方法
KR20130032157A (ko) 데이터 저장 장치 및 그것의 데이터 쓰기 방법
US10254979B1 (en) Relocating or aborting a block of data by a host, based on media policies managed by a storage device
US20120278535A1 (en) Data writing method, memory controller, and memory storage apparatus
KR102663304B1 (ko) 구역 네임스페이스 디바이스들에서의 판독 처리
US9507710B2 (en) Command execution using existing address information
US9501397B2 (en) Data writing method, memory controller, and memory storage apparatus
US10599562B2 (en) Nonvolatile memory device configured to be accessed without block address and method of operating the same
KR20200121068A (ko) 데이터 저장 장치 및 이의 동작 방법, 이를 위한 컨트롤러
US10474582B2 (en) NAND flash storage device and methods using non-NAND storage cache
KR20210028335A (ko) 메모리 시스템, 메모리 컨트롤러 및 동작 방법
US10957398B2 (en) Electronic device with memory erased by page
KR20230115195A (ko) 액티브 존 리프레시를 수행하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법
US20120198126A1 (en) Methods and systems for performing selective block switching to perform read operations in a non-volatile memory

Legal Events

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

Payment date: 20180328

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190328

Year of fee payment: 5