KR100939145B1 - 메모리 디바이스 - Google Patents

메모리 디바이스 Download PDF

Info

Publication number
KR100939145B1
KR100939145B1 KR1020070131105A KR20070131105A KR100939145B1 KR 100939145 B1 KR100939145 B1 KR 100939145B1 KR 1020070131105 A KR1020070131105 A KR 1020070131105A KR 20070131105 A KR20070131105 A KR 20070131105A KR 100939145 B1 KR100939145 B1 KR 100939145B1
Authority
KR
South Korea
Prior art keywords
data
block
write
controller
memory
Prior art date
Application number
KR1020070131105A
Other languages
English (en)
Other versions
KR20080055734A (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 KR20080055734A publication Critical patent/KR20080055734A/ko
Application granted granted Critical
Publication of KR100939145B1 publication Critical patent/KR100939145B1/ko

Links

Images

Classifications

    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B7/00Recording or reproducing by optical means, e.g. recording using a thermal beam of optical radiation by modifying optical properties or the physical structure, reproducing using an optical beam at lower power by sensing optical properties; Record carriers therefor
    • G11B7/004Recording, reproducing or erasing methods; Read, write or erase circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B7/00Recording or reproducing by optical means, e.g. recording using a thermal beam of optical radiation by modifying optical properties or the physical structure, reproducing using an optical beam at lower power by sensing optical properties; Record carriers therefor
    • G11B7/004Recording, reproducing or erasing methods; Read, write or erase circuits therefor
    • G11B7/005Reproducing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B7/00Recording or reproducing by optical means, e.g. recording using a thermal beam of optical radiation by modifying optical properties or the physical structure, reproducing using an optical beam at lower power by sensing optical properties; Record carriers therefor
    • G11B7/08Disposition or mounting of heads or light sources relatively to record carriers
    • G11B7/085Disposition or mounting of heads or light sources relatively to record carriers with provision for moving the light beam into, or out of, its operative position or across tracks, otherwise than during the transducing operation, e.g. for adjustment or preliminary positioning or track change or selection
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Landscapes

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

Abstract

메모리 디바이스는 불휘발성 메모리 및 컨트롤러를 포함한다. 불휘발성 메모리는 각각 복수의 불휘발성 메모리 셀을 구비하는 스토리지 영역과, 복수의 불휘발성 메모리 셀을 포함하고 데이터를 일시적으로 저장하도록 구성된 버퍼를 포함하고, 각 블록에 대해 데이터가 소거된다. 1회 기입 커맨드와 관련된 기입 데이터의 크기가 선정된 크기보다 크지 않으면, 컨트롤러는 기입 데이터를 버퍼에 기입한다.
메모리 디바이스, 불휘발성 메모리, 컨트롤러, 스토리지, 버퍼

Description

메모리 디바이스{MEMORY DEVICE}
관련 출원에 대한 상호참조
본 출원은 2006년 12월 15일자로 제출된 일본 특허 출원 제2006-338718호의 우선권에 기초한 것으로, 그 전체 내용은 참조로서 결합된다.
본 발명은 호스트 장치를 통해 데이터 전송을 수행하는 메모리 디바이스에 관한 것으로, 특히 불휘발성 반도체 메모리를 포함하는 메모리 디바이스에 관한 것이다.
현재, 불휘발성 반도체 메모리를 포함하는 메모리 카드들은 음악 데이터, 화상 데이터 등을 기입하기 위한 메모리 디바이스로서 사용된다. 불휘발성 반도체 메모리에서는, 전원이 턴오프될 때조차도 데이터가 사라지지 않으며, 또한 재기입(갱신)될 수 있다. NAND 플래쉬 메모리 등은 불휘발성 반도체 메모리로서 사용된다.
NAND 플래쉬 메모리에서, 데이터는 각 페이지(예를 들면, 2, 4, 또는 8 Kbytes) 단위로 기입되고 복수의 페이지들로 이루어진 각 블록(예를 들면, 512 Kbytes 또는 1 Mbytes) 단위로 소거된다. 또한, NAND 플래쉬 메모리로의 데이터 기입은 다음과 같은 제약을 갖는다.
(1) 데이터는 사전에 각 블록 단위로 소거되어야만 한다.
(2) 동일 블록 내에 데이터를 기입하려는 경우, 선행 데이터에 다음으로 기입될 데이터는 선행 데이터의 어드레스보다 더 큰 어드레스에 기입되어야만 한다.
예를 들면, 데이터가 이미 기입되어 있는 블록내에 새로운 데이터를 기입하려는 경우, 소거된 블록이 별도로 준비되고, 새로운 데이터가 이 소거된 블록에 기입된다. 또한, 오리지널 블록으로부터 새로운 데이터가 기입되는 부분을 제외한 부분에 데이터가 카피된다. 즉, 이와 같은 데이터 기입은 일명 "이동(moving)" 처리에 의해 수행된다. 특히, 호스트 장치로부터 랜덤 논리 어드레스에 데이터 기입이 발생하는 경우, 이 이동 처리가 빈번히 발생하여 기입 성능을 저하시킨다.
최근 NAND 플래쉬 메모리에서, 블록 크기는 용량이 증가함에 따라 증가되고 있는 중이다. 블록 크기가 증가함에 따라, 블록간 데이터 카피 시간은 연장되고, 이동 시간의 최대값도 증가한다. 이는 랜덤 논리 어드레스에서 데이터 기입에 관련해서 메모리 카드에의 기입 시간(또한 비지 시간(busy time)이라고도 명명됨)을 연장시킨다.
한편, 비지 시간을 줄이기 위해 랜덤 논리 어드레스에서 짧아진 데이터 기입 시간에 특정화된 데이터 기입 처리가 사용되는 경우, 순차적인 논리 어드레스에서의 데이터 기입 속도가 감소한다.
이러한 종류의 관련 기술로서, 메모리 디바이스의 성능을 추정하는 기술이 개시되어 있다(일본 특허 출원 공개공보 제2006-178923호).
본 발명의 제1 양상에 따르면,
복수의 불휘발성 메모리 셀을 각기 포함하는 복수의 메모리 블록을 갖는 스토리지 영역과, 복수의 불휘발성 메모리 셀을 포함하며 일시적으로 데이터를 저장하도록 구성된 버퍼를 포함하며, 데이터가 각 블록 단위로 소거되는 불휘발성 메모리; 및
1회의 기입 커맨드에 관련된 기입 데이터의 크기가 선정된 크기 이하인 경우에는 버퍼에 기입 데이터를 기입하는 컨트롤러를 포함하는 메모리 디바이스가 제공된다.
본 발명의 제2 양상에 따르면,
복수의 불휘발성 메모리 셀을 각기 구비하는 복수의 메모리 블록을 포함하며, 데이터가 각 블록 단위로 소거되는 불휘발성 메모리; 및
메모리 블록을 2개의 블록 부분으로 나누어 각 메모리 블록을 관리하며, 제1 메모리 블록에서 임의 어드레스에 대한 기입 요구를 수신한 경우, 어드레스에 무관하게, 데이터가 소거되어 있는 제2 메모리 블록내의 어드레스에 대응하는 블록 부분의 시작 위치에 기입 요구에 관련된 기입 데이터를 기입하는 컨트롤러를 포함하는 메모리 디바이스가 제공된다.
단일-블록 기입과 멀티-블록 기입 모두에 대한 메모리 카드 표준의 타임아웃 사양 및 스피드 클래스 사양을 충족시킬 수 있다.
또한, 단일 블록 기입 시에 DS 커플링 프로세스가 필요한 경우에는, 데이터 블록이 스토리지 영역(31)에 기입되는 것이 아니라 랜덤 기입 버퍼에(32)에 기입된다. 이와 같이 함으로써 데이터 제거 프로세스를 줄이는 것이 가능하게 된다. 부가하여, 무효 데이터를 랜덤 기입 버퍼(32)에 순차적으로 재배치함으로써, 랜덤 기입 버퍼(32)의 용량이 감소될 수 있다.
멀티블록 기입 시에, 비지 기간 동안 DS 커플링 프로세스가 분할하여 수행된다. 따라서, 각각의 데이터 블록을 수신하는 프로세스가 수행될 수 있는 한편, 타임아웃 사양은 만족된다. 또한, 듀얼 페이지 시프트 방법을 사용함으로써, 데이터 제거량을 줄일 수 있다. 결과적으로, 데이터 제거에 필요한 시간이 감소될 수 있다.
본 발명의 실시예는 첨부된 도면을 참조하여 이하에 설명될 것이다. 다음 설명에서, 동일 참조 부호들은 동일 기능 및 배열을 갖는 엘리먼트들을 지칭하며, 필요할 경우에만 반복하여 설명될 것이라는 것에 유의하자.
[1] 메모리 디바이스와 호스트 장치의 배열
본 실시예에서, 메모리 디바이스로는 일례로서 메모리 카드를 가지고 설명될 것이다. 메모리 카드는 호스트 장치로부터 탈착 가능한 것으로 설계된다. 그러나, 메모리 디바이스와 호스트 장치는 하나의 LSI(Large-Scale Integrated Circuit)로서 구성될 수도 있다. 즉, 메모리 디바이스를 형성하는 불휘발성 반도체 메모리와 컨트롤러는 또한 호스트 장치가 장착되는 인쇄 회로 기판상에 장착될 수도 있다.
도 1은 본 발명의 일 실시예에 따른 호스트 장치(10)와 메모리 카드(20)의 배열을 나타낸 블록도이다. 메모리 카드(20)는 호스트 장치(10)로부터 탈착 가능하도록 설계된다. 메모리 카드(20)는 호스트 장치(10)에 일반적으로 장착되며 일종의 호스트 장치(10)의 외부 저장 매체로서 사용된다.
메모리 카드(20)는 불휘발성 반도체 메모리(22)를 포함한다. 본 실시예에서, 불휘발성 반도체 메모리(22)로는 일례로서, NAND 플래쉬 메모리(22)를 데이터를 전기적으로 기입하고 소거하는 일종의 EEPROM(Electrically Erasable Programmable Read Only Memory)을 가지고 설명될 것이다. 도 1에 나타난 배열은 하나의 NAND 플래쉬 메모리(22)를 포함하고 있지만, 2개 이상의 NAND 플래쉬 메모리(22)가 사용될 수도 있다는 것에 유의하자.
NAND 플래쉬 메모리(22)를 형성하는 플래시 메모리 셀들(메모리 셀 트랜지스터들)은 반도체 기판상의 터널 절연막상에 전하를 저장하기 위한 플로팅 게이트 전극, 게이트간 절연막, 및 컨트롤 게이트 전극을 적층함으로써 형성된 적층 게이트 구조를 각기 구비한다. 복수의 메모리 셀 트랜지스터들은 컬럼 방향에 직렬로 접속되되, 인접한 트랜지스터들이 확산 영역(소스/드레인 영역)을 공유하고, 선택 게이트 트랜지스터들이 이 직렬 회로의 2개의 양단에 배열됨으로써, NAND 셀 유닛을 형성한다.
로우 방향(워드 라인 WL이 뻗어가는 방향)에 복수의 유닛들을 배열함으로써 블록이 형성된다. 이 블록은 데이터 소거 유닛이다. 하나의 메모리 블록내의 동일 워드 라인 WL에 접속된 복수의 메모리 셀들은 하나의 페이지로서 처리되며, 데이터 기입 및 판독은 각 페이지 단위로 수행된다.
NAND 플래쉬 메모리(22)는 복수의 블록들을 포함하고, 각 블록은 복수의 페이지들을 포함한다. NAND 플래쉬 메모리(22)는 또한 스토리지 영역(31)과 랜덤 기입 버퍼(32)를 포함한다. 스토리지 영역(31)은 논리 어드레스에 기초하여 호스트 장치(10)로부터 전송된 기입 데이터를 저장한다. 스토리지 영역(31)은 또한 메모리 카드(20)를 이용하는 유저가 빈롭게 액세스할 수 있는 유저 데이터 영역이다. 유저 데이터 영역은 유저 데이터 등을 저장한다.
랜덤 기입 버퍼(32)는 호스트 장치(10)로부터 전송되는 기입 데이터 중 선정된 기입 데이터(후술함)를 일시적으로 저장한다. 스토리지 영역(31)과 유사하게, 랜덤 기입 버퍼(32)는 NAND 플래시 메모리이고, 복수의 블록을 포함한다. 랜덤 기입 버퍼(32)의 각 블록은 데이터 기입 단위인 복수의 페이지로 구성한다.
메모리 카드(20)는, 호스트 장치(10)와 NAND 플래시 메모리(22) 사이에 형성하고, 호스트 장치(10)로부터의 커맨드에 기초하여 NAND 플래시 메모리(22)를 제어하는 컨트롤러(21)를 구비한다. 컨트롤러(21)는 호스트 인터페이스 회로(23), MPU(Micro Processing Unit)(24), ROM(Read Only Memory)(25), RAM(Random Access Memory)(26), 메모리 인터페이스 회로(27), 버스(28) 및 RAM 버퍼(29)를 포함한다.
호스트 인터페이스 회로(23)는 커넥터(도시하지 않음)를 통해 호스트 장 치(10)에 연결한다. 호스트 인터페이스 회로(23)는 커맨드, 다양한 데이터 등을 MPU(24)의 제어하에 선정된 프로토콜에 따라 호스트 장치(10)와 교환하는 기능 블록이다.
MPU(24)는 버스(28)를 통해 메모리 카드(20)의 전반적인 동작을 종합적으로 제어한다. 예를 들어 전원이 메모리 카드(20)에 공급되는 경우, MPU(24)는 ROM(25) 등에 저장한 펌웨어에 기초하여 메모리 카드(20)의 기본적인 제어를 실행한다. 또한, MPU(24)는 호스트 장치(10)로부터 기입 커맨드, 판독 커맨드, 소거 커맨드 등을 수신하고, NAND 플래시 메모리(22)에 데이터를 전송한다.
메모리 인터페이스 회로(27)는 버스를 통해 NAND 플래시 메모리(22)에 연결하고, NAND 플래시 메모리(22)를 액세스하는 데 필요한 일련의 메모리 액세스 제어 동작을 실행한다. 구체적으로, 메모리 인터페이스 회로(27)는 MPU(24)의 제어하에 NAND 플래시 메모리(22)에 대하여 기입 동작, 판독 동작, 소거 동작 등을 실행한다.
ROM(25)은 펌웨어, 제어 프로그램 등을 저장한다. 펌웨어는 메모리 카드(20)의 기본적인 제어를 수행하기 위한 프로그램이다. 제어 프로그램은 컨트롤러(21)가 호스트 장치(10)와 데이터 전송을 수행할 때 MPU(24)가 이용하는 프로그램을 포함한다. 또한, 제어 프로그램은 컨트롤러(21)가 NAND 플래시 메모리(22)와 데이터 전송을 수행할 때 MPU(24)가 이용하는 프로그램을 포함한다. RAM(26)은 MPU(24)의 작업 영역으로서 사용하고, 다양한 테이블을 저장한다.
RAM 버퍼(29)는 호스트 장치(10)로부터 전송되는 데이터 및 NAND 플래시 메 모리(22)로부터 판독되는 데이터를 일시적으로 저장한다. 즉, NAND 플래시 메모리(22)로부터 판독된 데이터는 호스트 장치(10)가 그 데이터를 수신할 준비가 될 때까지 RAM 버퍼(29)에 일시적으로 저장한다. 또한, 호스트 장치(10)로부터 전송된 데이터는 NAND 플래시 메모리(22)가 그 데이터를 기입할 준비가 될 때까지 RAM 버퍼(29)에 일시적으로 저장한다.
호스트 장치(10)는 호스트 장치(10)에 부착하는 메모리 카드(20)를 액세스하기 위한 하드웨어 및 소프트웨어(시스템)를 포함한다. 호스트 장치(10)의 예로는 영상 데이터, 음악 데이터 및 ID 데이터와 같은 다양한 데이터를 처리하는 퍼스널 컴퓨터, 디지털 카메라 및 셀 폰 단말기와 같은 정보 처리 장치가 있다.
[2] 메모리 카드(20)에 적용하는 표준
본 실시예의 메모리 카드(20)는 타임아웃에 관한 표준 및 스피드 클래스에 관한 표준을 만족시키기 위하여 데이터 전송 동작을 실행한다. 타임아웃에 관한 표준 및 스피드 클래스에 관한 표준은 후술한다. 이 실시예에서 이러한 표준은 SDTM 메모리 카드를 예로 사용함으로써 설명한다는 점을 알아야 한다.
[2-1] 타임아웃에 관한 표준
SDTM 메모리 카드 표준은 512 바이트(B)마다 데이터 블록 전송을 수행한다. 메모리 카드(20)는 선정된 시간(타임아웃 주기) 내에 데이터 블록을 기입해야 한다. 구체적으로, SDTM 메모리 카드 표준은 각 512-B 데이터 블록 전송 시간마다 비지 시간을 정의한다. 호스트 장치(10)로부터 메모리 카드(20)로 데이터 블록을 전 송하는 경우, 메모리 카드(20)는 데이터 블록을 수신하는 비지 시간이 필요하다.
또한, 최대 비지 시간은 250㎳로 정의한다. 그러므로 어떤 환경하에서 메모리 카드(20)는 호스트 장치(10)로부터 전송된 512-B 데이터 블록을 수신하는 프로세스를 최대 비지 시간 내에 완료해야 한다.
다음의 설명에서 "데이터 블록"은 전송하는 데이터량을 의미하고, "블록"은 NAND 플래시 메모리의 소거 단위인 메모리 블록을 의미한다는 점을 알아야 한다.
[2-2] 스피드 클래스에 관한 표준
SDTM 메모리 카드 표준은 메모리 카드의 성능을 나타내는 스피드 클래스를 정의한다. 이 스피드 클래스는 선정된 논리 어드레스 범위(예컨대, 각 4-MB 어드레스 경계에 대하여) 내에 선정된 속도로 데이터를 기입할 수 있다는 점을 보장한다. 이 선정된 논리 어드레스 범위는 SDTM 메모리 카드 표준에서 AU(Allocation Unit)로 불린다. 또한, 스피드 클래스는 16KB마다 멀티 블록 기입으로 데이터를 기입할 때의 성능으로서 정의한다.
예를 들어 AU는 1GB 이상의 용량을 갖는 메모리 카드에 대해서는 4MB(최대값)인 것으로 결정한다. 기입 스피드(최소 보장 스피드)는 클래스 6에 대해서는 6MB/s 이상, 클래스 4에 대해서는 4MB/s 이상 그리고 클래스 2에 대해서는 2MB/s 이상임을 보장할 필요가 있다.
[3] 데이터 기입 동작
다음으로, 호스트 장치(10)로부터 메모리 카드(20)에 데이터를 기입하는 동 작을 설명한다. 이 데이터 기입 동작은 단일 블록 기입 및 멀티 블록 기입으로 분류한다. 또한, 데이터 기입은 선정된 크기(예컨대 512B)를 갖는 데이터량인 각 데이터 블록에 대하여 수행한다. 단일 블록 기입은 호스트 장치(10)로부터의 1회의 기입 커맨드에 따라 하나의 데이터 블록만을 전송 및 기입하는 방법이다. 멀티 블록 기입은 호스트 장치(10)로부터의 1회의 기입 커맨드에 따라 복수의 연속적인 데이터 블록을 전송 및 기입하는 방법이다.
호스트 장치(10)는 각 512B 데이터 블록에 대하여 랜덤 기입을 수행한다. 이 랜덤 기입에서 데이터를 블록의 일부분에만 재기입하는 "갱신" 프로세스(겹쳐쓰기 프로세스)는 흔히 발생한다. NAND 플래시 메모리(22)에서 데이터는 각 블록에 대해서만 소거할 수 있다.
그러므로 블록의 일부분만을 재기입하는 경우, 소거된 블록을 준비하고, 이 소거된 블록에 재기입용의 새로운 데이터를 기입하고, 새로운 데이터로 재기입될 예전 데이터를 포함하는 예전 블록으로부터 소거 블록에 재기입되지 않을 나머지 데이터를 카피할 필요가 있다. 따라서, 블록의 일부분만을 재기입하는 프로세스는 재기입되지 않을 데이터를 이동하는 프로세스를 포함한다. 그러므로 블록의 일부분만을 재기입하는 프로세스가 자주 발생하는 경우에는 오버헤드가 매우 증가한다.
이 실시예는 데이터 이동 프로세스를 줄임으로써 데이터 재기입에 필요한 시간을 줄인다. 즉, 데이터 재기입이 발생하는 경우, 기입될 새로운 데이터는 논리 어드레스에 상관없이 소거된 물리 블록에 기입한다. 또한, 기입될 이 새로운 데이터는 소거된 물리 블록의 제1 페이지부터 순서대로 기입된다(이하에서는 페이지 시 프트 방법으로서 간주함).
도 2는 페이지 시프트 방법의 데이터 재기입 동작을 나타내는 개략도이다. 간단하게, 도 2는 하나의 블록은 10 페이지로 구성한다는 예를 도시한다. 임의의 데이터가 논리 블록 A의 페이지 1 내지 10에 미리 기입되어 있다. 예를 들어 논리 블록 A와 동일한 데이터가 물리 블록 A의 페이지 1 내지 10에 기입되어 있다. 물리 블록 B는 소거된 블록이다.
호스트 장치(10)는 메모리 카드(20)의 논리 블록 A의 페이지 3 내지 5에 새로운 데이터를 겹쳐쓰기하기 위한 기입 커맨드를 발행한다. 컨트롤러(21)는 이 새로운 데이터를 새로 소거되는 물리 블록 B의 논리 어드레스에 대응하는 페이지에 기입하는 것이 아니라, 그 새로운 데이터를 물리 블록 B의 제1 페이지(페이지 1)부터 순서대로 기입한다. 동시에, 컨트롤러(21)는 기입 요청의 대상인 페이지의 어드레스(물리 블록 A의 페이지 3 내지 5)를 새로운 데이터를 기입하는 페이지의 여분 영역에 기입한다. 이 상태에서 새로운 데이터 겹쳐쓰기 프로세스가 완료된다.
상술한 프로세싱은 논리 블록 A에 데이터를 겹쳐쓰기할 때의 데이터 이동 프로세스를 방지한다. 이는 논리 블록 A에 대한 재기입 동작을 고속으로 수행하는 것을 가능하게 한다. 데이터를 판독할 때, 컨트롤러(21)는 페이지의 여분 영역에 저장한 어드레스를 참조함으로써 판독할 데이터가 저장되어 있는 위치(물리 페이지)를 얻을 수 있다.
상술한 바와 같은 재기입 동작 시, 논리 블록 A의 페이지 1 내지 10에 저장한 복수의 데이터는 물리 블록 A 및 B에 별도로 저장한다. 이 조건이 변하지 않는 경우, 데이터 판독 동작의 속도 또는 NAND 플래시 메모리(22)의 이용은 감소한다.
따라서, 이 실시예는 2개 영역, 즉 물리 블록 A 및 B에 별도로 저장한 데이터를 결합하는 프로세스(이하에서는 DS(Dual Sector) 커플링 프로세스로서 간주함)를 데이터 블록 기입 프로세스와 병행하여 수행한다.
도 3은 2개 영역, 즉 물리 블록 A 및 B에 별도로 저장한 데이터를 결합하는 프로세스를 나타내는 개략도이다. 컨트롤러(21)는 페이지(페이지 6 내지 10)에 저장한 데이터를 물리 블록 A 내 새로운 데이터에 대응하는 페이지 아래로 이동하는 프로세스를 실행한다. 즉, 컨트롤러(21)는 물리 블록 A의 페이지 6 내지 10의 데이터를 물리 블록 B의 페이지 4 내지 8에 각각 기입한다.
후속하여, 컨트롤러(21)는 페이지(페이지 1 및 2)에 저장된 데이터를 물리 블록 A의 새로운 데이터에 대응하는 페이지 상으로 이동시키는 프로세스를 실행한다. 즉, 컨트롤러(21)는 물리 블록 A의 페이지 1 및 2의 데이터를 물리 블록 B의 페이지 9 및 10에 각각 기입한다.
상기한 바와 같이 DS 커플링 프로세스가 수행되면, 물리 블록 A 및 B에 각각 저장된 데이터는 물리 블록 B에 함께 저장될 수 있다. 이는 물리 블록 A에 저장된 모든 데이터를 무효로 하기 때문에, 물리 블록 A의 데이터를 소거함으로써 새로운 데이터가 기입될 수 있다. 결과적으로, NAND 플래시 메모리(22)의 사용이 증가한다.
컨트롤러(21)는 데이터 기입 동작과 동시에 이 DS 커플링 프로세스를 수행한다. 그러나, DS 커플링 프로세스는 최대로 약 1 블록의 데이터 카피 프로세스와 동일하다. 이 데이터 카피 프로세스에 요구되는 시간은 블록 크기에 따라 변한다. 1 블록의 데이터 카피 프로세스에 긴 시간이 걸리면, 이에 따라, 최대 비지 타임이 초과되어 타임아웃 규정이 더 이상 충족될 수 없다.
타임아웃 규정을 충족하는 기입 동작은 단일 블록 기입 및 멀티 블록 기입 각각에 대해 이하에서 설명될 것이다.
[3-1] 단일 블록 기입의 제어
단일 블록 기입에서, 호스트 장치(10)는 각각의 512-B 데이터 블록에 대해 랜덤 기입을 수행한다. 이 랜덤 기입에서, 블록의 일 부분만의 데이터의 재기입(겹쳐쓰기) 프로세스가 자주 발생한다. 이 경우에, 기입 데이터가 소거된 물리 블록에 기입되면, DS 커플링 프로세스가 필요하게 된다.
이 실시예에서, DS 커플링 프로세스가 요구될 때, 컨트롤러(21)는 호스트 장치(10)로부터 전송된 데이터 블록을 NAND 플래시 메모리(22)의 스토리지 영역(31)에 직접 기입하지는 않지만, 랜덤 기입 버퍼(32)에 데이터 블록을 일시적으로 부가한다. 이는, DS 커플링 프로세스가 요구될 때마다 발생하는 카피 프로세스(이동 프로세스)의 수를 감소시킨다. 랜덤 기입 버퍼(32)는, 컨트롤러(21)가 통상적인 데이터 저장에 사용되는 메모리 블록으로부터 개별적으로 NAND 플래시 메모리(22)내의 소정 수의 메모리 블록을 보호하는 버퍼이다.
도 4는 단일 블록 기입 동작을 도시하는 타이밍 차트이다. 도 4는 호스트 장치(10)와 컨트롤러(21)를 연결하는 버스상의 데이터를 도시한다는 것을 주지해야 한다.
우선, 컨트롤러(21)는 호스트 장치(10)로부터 발행된 단일 블록 기입 커맨드(SW-CMD)를 수신하고, 그 커맨드를 해석한다. 후속하여, 호스트 장치(10)는 512-B 데이터 블록(기입 데이터)을 컨트롤러(21)에 전송한다.
컨트롤러(21)는 비지 신호를 호스트 장치(10)에 전송한다. 그 다음, 컨트롤러(21)는, 최대 비지 타임의 범위내에서, 호스트 장치(10)로부터 전송된 데이터 블록을 수신하는 프로세스(보다 구체적으로, RAM 버퍼(29)에 데이터 블록을 일시적으로 기입하는 프로세스)를 실행한다. 이 수신 프로세스가 완료되면, 컨트롤러(21)는 비지 상태를 취소한다. 그 후에, 컨트롤러(21)는 이 데이터 블록을 랜덤 기입 버퍼(32)에 부가한다.
유사하게, 컨트롤러(21)는 다음 SW-CMD에 대한 데이터 블록 수신 프로세스를 실행하고, 이 데이터 블록을 랜덤 기입 버퍼(32)에 부가한다. 이 프로세싱은 일 데이터 블록을 재기입하기 위해 발생하는 데이터 이동 프로세스를 감소시킬 수 있다.
랜덤 기입 버퍼(32)의 크기는 유한하지만, NAND 플래시 메모리(22)의 용량을 효과적으로 사용하기 위해서 랜덤 기입 버퍼(32)의 크기를 최소화할 필요가 있다. 따라서, 랜덤 기입 버퍼(32)에 기입된 데이터는 적절한 방법으로 스토리지 영역(31)내의 물리 블록에 다시 기입되어야만 한다. 이 프로세스는 본 실시예에서 "재배치(rearrangement)"로 지칭될 것이다. 이 재배치는, 스토리지 영역(31)의 임의의 물리 블록의 데이터와, 그 물리 블록에 대응하는 랜덤 기입 버퍼(32)내의 데이터를 연결시키고, 그 연결된 데이터를 유효 데이터를 포함하지 않는 다른 물리 블록에 카피하는 프로세스이다.
랜덤 기입 버퍼(32)내의 빈 엔트리(free entry)의 수가 예를 들어, 2 이상이거나, 또는 랜덤 기입 버퍼(32)내의 블록마다의 데이터의 최대 수가 소정 수(1 이상) 이상이라면, 컨트롤러(21)는, 랜덤 기입 버퍼(32)내에 저장된 최대 양의 기입 데이터를 포함하는 블록을 우선적으로 재배치하고, 랜덤 기입 버퍼(32)내의 그 기입 데이터를 스토리지 영역(31)에 카피한다.
최대 양의 기입 데이터는, 최대 양의 기입 데이터가 랜덤 기입 버퍼(32)에 저장된 후에 블록이 재배치되면 즉시 프로세싱될 수 있다. 이는, 랜덤 기입 버퍼(32)내의 빈 영역을 효과적으로 증가시키고, 랜덤 기입 버퍼(32)의 크기를 감소킬 수 있게 한다. 이 재배치 동안, 일 블록 이동의 프로세스(데이터 카피 프로세스)는 개별적으로 수행될 수 있고, 예를 들어, 2개의 단일 블록 기입 동작의 비지 기간에 블록의 2개의 절반들에 대해 수행될 수 있고, 이에 따라 일 블록의 데이터 카피 시간이 길어지더라도 타임아웃을 방지할 수 있다.
도 5는 단일 블록 기입 동작을 도시하는 개략도이다. 스토리지 영역(31)은 도시의 명료성을 위해서 블록 A 내지 D로 구성되는 것으로 가정한다. 단일 블록 기입 동작에서, 512-B 기입 데이터는, DS 커플링 프로세스가 요구될 때마다, 랜덤 기입 버퍼(32)에 순차적으로 부가된다.
도 5에 도시된 바와 같이, 7개의 기입 데이터(A1 내지 A3, B1, B2, C1, 및 D1)는 랜덤 기입 버퍼(32)에 저장된다. 기입 데이터 A1 내지 A3는 블록 A의 논리적 어드레스에 대응하는 기입 데이터(블록 A에 기입될 데이터)이다. 유사하게, 기 입 데이터 B1 및 B2는 블록 B의 논리적 어드레스에 대응하는 기입 데이터이고, 기입 데이터 C1은 블록 C의 논리적 어드레스에 대응하는 기입 데이터이고, 기입 데이터 D1은 블록 D의 논리적 어드레스에 대응하는 기입 데이터이다.
랜덤 기입 버퍼(32)내의 빈 엔트리의 수가 예를 들어, 2 이하라면, 블록당 랜덤 기입 버퍼(32)내의 데이터의 수가 가장 큰 블록 A는 재배치의 대상인 것으로 가정한다. 따라서, 기입 데이터 A1 내지 A3는 블록 A로 카피되고, 블록 A의 이동 프로세스(재기입 되지 않을 데이터의 이동 프로세스)가 수행된다.
또한, 블록 A 이동 프로세스는 2개의 데이터 블록 수신 프로세스의 비지 기간 동안 수행된다. 즉, 블록 A 이동 프로세스의 절반은 도 4에 도시된 제1 비지 기간에 수행되고, 블록 A 이동 프로세스의 나머지는 도 4에 도시된 제2 비지 기간에 수행된다.
단일 블록 기입의 겹쳐쓰기 동작에서 상술한 바와 같이 프로세싱을 수행함으로써, 일 기입 프로세스를 수반하는 이동 프로세스가 감소될 수 있다. 이는, 단일 블록 기입 동작을 고속으로 수행할 수 있게 한다. 또한, 이는, 2개의 데이터 블록 기입 프로세스에서 이동 프로세스를 개별적으로 수행함으로써 블록 이동 프로세스에 의해 야기되는 타임아웃을 방지할 수 있다.
단일 블록 기입의 상기 설명에 있어서, DS 커플링 프로세스가 요구될 때, 데이터가 랜덤 기입 버퍼(32)에 기입된다는 것을 주지해야 한다. 그러나, 데이터는 또한, 데이터 재기입이 요구되지 않을 때, 또는 데이터 재기입이 데이터 카피에 의해 수반되지 않을 때에도 랜덤 기입 버퍼(32)에 기입될 수 있다.
[3-1-1] 랜덤 기입 버퍼(32)에 필요한 엔트리의 수
랜덤 기입 버퍼(32)의 크기가 이제 설명될 것이다. 랜덤 기입 버퍼(32)의 엔트리의 수는, 데이터 기입이 단일 블록 기입시에 발생하는 논리적 어드레스에 관계없이 데이터가 랜덤 기입 버퍼(32)로부터 오버플로우(overflow)되지 않도록 설정된다. 엔트리의 수는 랜덤 기입 버퍼(32)에 버퍼링될 수 있는 유효 데이터 블록의 수라는 것을 주지해야 한다. 또한, 엔트리의 수는, 랜덤 기입 버퍼(32)가 NAND 플래시 메모리이기 때문에, 랜덤 기입 버퍼(32)의 페이지의 수에 대응한다는 것을 주지해야 한다.
이 실시예는 2개의 데이터 기입 프로세스에서 (랜덤 기입 버퍼(32)의 재배치를 포함하여) 이동 프로세스를 개별적으로 수행한다. 이들 2개의 데이터 기입 프로세스는 2개의 기입 데이터를 랜덤 기입 버퍼(32)에 부가한다. 따라서, 랜덤 기입 버퍼(32)내의 2개의 버퍼링 데이터가, 이동 프로세스 동안 2개의 데이터 기입 프로세스에서 재배치된다면(즉, 스토리지 영역(31)의 블록으로 카피된다면), 랜덤 기입 버퍼(32)로부터 오버플로우하는 기입 데이터가 없게 된다.
N을 스토리지 영역(31)의 블록의 수로 하고, M을 랜덤 기입 버퍼(32)에 버퍼링될 수 있는 유효 데이터의 수로 한다. N 및 M은 각각 하나 이상의 정수이다.
"M=N+4"이고, 랜덤 기입 버퍼(32)가 (N+2)개의 블록으로 채워질 때, 동일한 블록에 관련된 2개 이상의 버퍼링 데이터를 포함하는 적어도 하나의 블록이 항상 존재하는 것으로 가정한다. 따라서, 이 블록을 이동될 대상으로서 설정함으로써, 일 블록은, 새로운 기입 데이터가 랜덤 기입 버퍼(32)에 버퍼링되는 동안 재배치될 수 있다. 이 경우에, 이 블록과 관련된 2개 이상의 버퍼링 데이터가 랜덤 기입 버퍼(32)로부터 재배치된다.
따라서, 상기 조건을 만족하는 적어도 M개의 엔트리가 랜덤 기입 버퍼(32)에 준비될 때, 랜덤 기입 버퍼(32)의 빈 공간이 감소하지 않고, 랜덤 기입 버퍼(32)로부터의 기입 데이터 오버플로우가 없다.
랜덤 기입 버퍼(32)에 버퍼링될 수 있는 유효 데이터의 수는 실제 데이터 기입 동작에 따라서 아래에서 설명될 것이다. 도 6은 랜덤 기입 버퍼(32)에 기입된 데이터와 랜덤 기입 버퍼(32)에 버퍼링될 수 있는 유효 데이터의 수 간의 관계를 나타내는 도면이다. 메모리 카드(20)는 8개의 논리 블록 A 내지 H를 갖는다는 것을 주지해야 한다. 또한, 랜덤 기입 버퍼(32)에 기입된 데이터와 논리 블록 간의 관계를 나타내기 위해서, 도 6은 논리 블록 A 내지 H의 각각에 대한 기입 데이터를 보여준다는 것을 주지해야 한다.
단계 (1)에서, 호스트 장치(10)는 논리 블록 A에 데이터 "1"을 기입한다. 이 기입 동작에 응답해서, 컨트롤러(21)는 데이터 "1"을 랜덤 기입 버퍼(32)에 기입한다. 이 상태에서, 랜덤 기입 버퍼(32)의 유효 데이터의 수는 "1"이다. 다음으로, 단계 (2)에서, 호스트 장치(10)는 데이터 "2"를 논리 블록 B에 기입한다. 이 기입 동작에 응답해서, 컨트롤러(21)는 데이터 "2"를 랜덤 기입 버퍼(32)에 기입한다. 이 상태에서, 랜덤 기입 버퍼(32)의 유효 데이터의 수는 "2"이다.
유사하게, 단계 (3) 내지 (11)에서, 호스트 장치(10)는 데이터 "3" 내지 "11"을 도 6에 도시된 논리 블록에 순차적으로 기입한다. 이러한 기입 동작에 응 답해서, 컨트롤러(21)는 데이터 "3" 내지 "11"을 랜덤 기입 버퍼(32)에 순차적으로 기입한다. 단계 (11)에서, 랜덤 기입 버퍼(32)의 유효 데이터의 수는 "11"이다.
후속하여, 단계 12에서, 호스트 장치(10)는 데이터 "12"를 논리 블록 D에 기입한다. 이러한 기입 동작에 응답하여, 컨트롤러(21)는 블록 A의 반을 이동시키는 프로세스를 수행한다. 컨트롤러(21)는 데이터 "12"를 랜덤 기입 버퍼(32)에도 기입한다. 이러한 상태에서, 랜덤 기입 버퍼(32) 내의 유효 데이터의 수는 "12"이다.
단계 13에서, 호스트 장치(10)는 데이터 "13"을 논리 블록 E에 기입한다. 이러한 기입 동작에 응답하여, 컨트롤러(21)는 블록 A의 잔여 반을 이동시키는 프로세스를 수행한다. 결과적으로, 논리 블록 A와 관련된 데이터 "1" 및 "9"는 스토리지 영역(31)에 카피되어, 랜덤 기입 버퍼(32) 내의 데이터 "1" 및 "9"는 무효 데이터이다. 도 6을 참조하면, "-" 부호가 무효 데이터에 붙여진다. 또한, 컨트롤러(21)는 데이터 "13"을 랜덤 기입 버퍼(32)에 기입한다. 이러한 상태에서, 랜덤 기입 버퍼(32) 내의 유효 데이터의 수는 "11"이다.
유사하게, 단계 14 내지 19에서, 데이터 "14" 내지 "19"가 랜덤 기입 버퍼(32)에 순차적으로 기입된다. 단계 14 및 15에서, 컨트롤러(21)는 블록 B를 이동시키는 프로세스를 수행한다. 단계 16 및 17에서, 컨트롤러(21)는 블록 C를 이동시키는 프로세스를 수행한다. 단계 18 및 19에서, 컨트롤러(21)는 블록 G를 이동시키는 프로세스를 수행한다.
이들 프로세스에서, 도 6에 도시된 바와 같이, 랜덤 기입 버퍼(32) 내의 유 효 데이터의 수의 상한은 "12"이어서, 랜덤 기입 버퍼(32)에 필요한 엔트리의 수는 "12"이다. 즉, 스토리지 영역(31) 내의 블록의 수 N과 랜덤 기입 버퍼(32) 내에 버퍼링될 수 있는 유효 데이터의 수 M 사이의 전술한 관계가 충족되는 때에는 어떠한 기입 데이터도 랜덤 기입 버퍼(32)로부터 오버플로우(overflow)하지 않는다.
[3-1-2] 랜덤 기입 버퍼(32)의 불용 정보 수집(garbage collection)
랜덤 기입 버퍼(32)는 NAND 플래시 메모리이기 때문에, 어떠한 데이터도 랜덤 기입 버퍼(32)의 어떤 임의의 물리적 어드레스에 기입될 수 없다. 즉, 데이터는 버퍼 내에 추가적으로 기입된다. 반면에, 재배치에 의해서 랜덤 기입 버퍼(32)로부터 제거될 유효 데이터의 위치가 랜덤 기입 버퍼(32) 내의 여기저기의 어드레스에 흩어지기 때문에, 어떠한 새로운 데이터도 소정의 무효 데이터의 위치에 직접 기입될 수 없다. 따라서, 불용 정보 수집은 소정의 타이밍에서 수행되어야 한다. 불용 정보 수집은 불필요한 무효 데이터를 릴리즈(release)하여 데이터 영역을 다시 이용가능하게 하는(즉, 추가적인 기입에 의해서 데이터 영역이 그 안에 데이터를 기입할 수 있도록 하는) 프로세스임에 주의하여야 한다.
본 실시예에서, 불용 정보 수집은, 예컨대 아래의 조건 (1) 내지 (4)를 충족하도록 수행된다.
(1) 데이터가 랜덤 기입 버퍼(32)에 기입될 때마다 네 페이지의 불용 정보 수집이 수행된다. 이것은 단일블록 기입 동작의 비지 기간 동안 수행되는 불용 정보 수집의 프로세스 시간을 단축하는 것을 가능하게 하기 때문에, 타임아웃이 방지될 수 있다.
(2) 랜덤 기입 버퍼(32)에의 데이터 기입은 가장 작은 빈 공간(free space)을 가지는 블록으로부터 우선적으로 수행된다.
(3) 불용 정보 수집의 대상은 무효 데이터의 수(불용 정보의 수)가 1 블록의 1/4 이상이며, 불용 정보의 양이 가장 큰 블록이다.
(4) L을 랜덤 기입 버퍼(32)에 필요한 엔트리의 수로부터 계산되는 최소 필요 블록의 수라고 한다면, 랜덤 기입 버퍼(32) 내의 블록의 수는 "(4/3)L+1"로 설정된다.
랜덤 기입 버퍼(32) 내의 블록의 수는 이들 조건을 충족하도록 설정된다. 결과적으로, 랜덤 기입 버퍼가 (4/3)L 블록으로 채워지는 경우에, 불용 정보의 양이 1/4 이상인 적어도 하나의 블록이 항상 존재한다. 이러한 블록에서 불용 정보 수집을 수행하기 위하여 1/4 블록의 새로운 데이터의 기입이 필요하다. 그 결과, 1/4 블록의 빈 공간이 형성된다. 따라서, 랜덤 기입 버퍼(32)로부터 어떠한 불용 정보도 오버플로우하지 않는다.
도 7은 랜덤 기입 버퍼(32)의 불용 정보 수집 동작을 도시하는 개략도이다. 랜덤 기입 버퍼(32)에 필요한 엔트리의 수로부터 계산되는 최소 필요 블록의 수를 3으로 가정하면, 전술한 조건 (4)를 충족시키는 랜덤 기입 버퍼(32) 내의 블록의 수는 5이다. 도 7은 이것이 일어나는 방식을 도시한다. 즉, 랜덤 기입 버퍼(32)는 5개의 블록 a 내지 e로 구성된다. 이들 다섯 블록 중 블록 e는 작업 영역으로 이용된다. 따라서, 블록 e는 데이터가 소거되는 빈 공간이다.
유효 데이터 및 무효 데이터(불용 정보)는 각각의 블록 a 내지 d에 저장된 다. 도 7은 각 블록 내의 데이터량을 도시하는 도면이어서, 각 블록 내의 데이터의 순서는 실제 순서와는 상이함에 주의하여야 한다.
도 7에 도시된 바와 같이, 블록 a 내지 d가 데이터로 채워지는 때에, 불용 정보가 1/4 블록 이상인 적어도 하나의 블록이 존재한다. 이러한 블록이 불용 정보 수집의 대상이다. 블록 a가 불용 정보 수집의 대상으로 간주되는 경우에, 예컨대, 블록 a 내의 유효 데이터는 작업 영역으로서의 블록 e로 이동된다.
또한, 이러한 불용 정보 수집은 전술한 바와 같이 매 4페이지마다 수행되며, 불용 정보 수집 동안에 랜덤 기입 버퍼(32) 내에 새로이 기입되는 추가적인 데이터 또한 작업 영역으로서의 블록 e에 기입된다. 랜덤 기입 버퍼(32) 내의 무효 데이터는 이처럼 불용 정보 수집 동작을 수행함으로써 재배치될 수 있다.
실제적인 불용 정보 수집 동작이 아래에 설명될 것이다. 스토리지 영역(31) 내의 논리 블록의 수가 20이라고 가정하자. 또한, 랜덤 기입 버퍼(32) 내의 각 블록이 8 페이지(8 엔트리)를 가지는 것으로 가정하자. 따라서, 랜덤 기입 버퍼(32) 내의 최소 필요 블록의 수는 (20+4)/8=3이다. 또한, 랜덤 기입 버퍼(32) 내의 블록의 수는 (4/3)·3+1=5이다. 이들 다섯 블록은 블록 a 내지 e로 가정한다.
도 8은 실제적인 불용 정보 수집 동작을 도시하는 개략도이다. 도 9는 랜덤 기입 버퍼(32) 내에 포함된 블록의 빈 엔트리의 수를 도시하는 도면이다.
블록 a 내지 d가 데이터로 채워지는 때에, 랜덤 기입 버퍼(32)는 32개의 데이터 엔트리를 가진다. 랜덤 기입 버퍼(32) 내의 유효 데이터의 수는 24 이하이기 때문에, 8개 이상의 데이터가 무효 데이터이다. 따라서, 적어도 2개의 무효 데이 터를 포함하는 블록이 존재한다. 이러한 블록 중 하나가 불용 정보 수집의 대상이다. 블록 a가 불용 정보 수집의 대상이며, 블록 e로 재배치되는 것으로 가정하자.
도 8을 참조하면, 데이터 1, 2, 5, 8, 11, 12, 14 및 18은 블록 a에 기입되며, 데이터 2 및 11은 무효 데이터이다. 제1 단일블록 기입 동작(데이터 33의 기입)에서, 4개의 페이지의 데이터 1, 5, 8 및 12는 블록 e로 이동되며, 새로운 기입 데이터 33이 블록 e에 기입된다.
이어서, 제2 단일블록 기입 동작(데이터 34의 기입)에서, 잔여 페이지의 데이터 14 및 18이 블록 e로 이동되며, 새로운 기입 데이터 34가 블록 e에 기입된다. 이러한 방식으로, 블록 a의 불용 정보 수집은 두 개의 기입 동작에 의해서 수행될 수 있다. 그 후에, 블록 a 내의 데이터는 소거되어 이것이 다음 작업 블록으로서 이용가능하게 된다.
도 9에 도시된 바와 같이, 블록 a에서 불용 정보 수집이 수행되는 경우에, 블록 a 내의 빈 엔트리의 수는 8이다. 마찬가지로, 블록 b 내지 e의 유효 데이터의 최대수는 24이어서, 적어도 8 개의 데이터는 무효 데이터이다. 따라서, 2개 이상의 무효 데이터를 포함하는 적어도 하나의 블록이 존재한다. 이러한 블록이 블록 b인 경우에, 블록 b는 블록 a로 재배치된다.
또한, 블록 a, c, d 및 e 내의 유효 데이터의 최대수는 24이어서, 적어도 8개의 데이터가 무효 데이터이다. 따라서, 2개 이상의 무효 데이터를 포함하는 적어도 하나의 블록이 존재한다. 이러한 블록이 블록 c인 경우에, 블록 c는 블록 b 로 재배치된다. 전술한 바와 같이 블록이 순차적으로 재배치되는 경우에, 랜덤 기입 버퍼(32)로부터의 불용 정보 오버플로우는 발생하지 않는다.
[3-2] 멀티블록 기입의 제어
다음으로, 멀티블록 기입 동작이 설명될 것이다. 본 실시예의 메모리 카드(20)는 호스트 장치(10)로부터의 멀티블록 기입 커맨드에 따라 전송된 복수의 연속적인 데이터 블록 또한 기입한다. 멀티블록 기입은 이들 데이터 블록이 연속적인 논리 어드레스인 경우의 데이터 기입이다.
도 10은 멀티블록 기입 동작을 도시하는 타이밍도이다. 도 10은 호스트 장치(10)와 컨트롤러(21)를 접속하는 버스 상의 데이터를 도시함에 주의하여야 한다.
먼저, 컨트롤러(21)는 호스트 장치(10)로부터 발행된 멀티블록 기입 커맨드(MW-CMD)를 수신하고, 그 커맨드를 해석한다. 이어서, 호스트 장치(10)는 512-B 데이터 블록(기입 데이터)을 컨트롤러(21)에 전송한다.
컨트롤러(21)는 호스트 장치(10)에 비지 신호를 전송한다. 그 후에, 컨트롤러(21)는 최대 비지 시간의 범위 내에서 호스트 장치(10)로부터 전송된 데이터 블록을 수신하는 프로세스(보다 구체적으로, 데이터 블록을 RAM 버퍼(29) 내에 일시적으로 기입하는 프로세스)를 실행한다. 이러한 수신 프로세서가 완료되는 때에 컨트롤러(21)는 비지 상태를 취소한다. 그 후에, 컨트롤러(21)는 이러한 데이터 블록을 NAND 플래시 메모리(22)의 스토리지 영역(31)에 기입한다. DS 커플링 프로세스가 필요한 경우에, 컨트롤러(21)는, 데이터 블록 수신 프로세스와는 병렬적으로, 이러한 데이터 블록에 대응하는 비지 기간 동안에 DS 커플링 프로세스의 반을 수행한다.
이어서, 호스트 장치(10)는 다음의 데이터 블록을 컨트롤러(21)로 전송한다. 컨트롤러(21)는 비지 신호를 호스트 장치(10)로 전송한다. 그 후, 컨트롤러(21)는 최대 비지 시간의 범위 내에서 호스트 장치(10)로부터 전송되는 데이터 블록을 수신하는 프로세스를 실행한다. 이 수신 프로세스가 완료될 때, 컨트롤러(21)는 비지 상태를 취소한다. 그 후, 컨트롤러(21)는 NAND 플래시 메모리(22)의 스토리지 영역(31)에 이 데이터 블록을 기입한다. 또한, 컨트롤러(21)는 데이터 블록 수신 프로세스와 병행하여 이 데이터 블록에 대응하는 비지 기간 동안 DS 커플링 프로세스의 나머지 절반을 수행한다.
이와 유사하게, 컨트롤러(21)는 호스트 장치(10)로부터 전송되는 복수의 데이터 블록을 수신하고, 이러한 데이터 블록 각각에 대응하는 비지 기간 동안 DS 커플링 프로세스의 절반을 수행한다.
데이터 블록의 전송이 완료될 때, 호스트 장치(10)는 중지 커맨드(ST-CMD)을 내린다. 컨트롤러(21)는 중지 커맨드(ST-CMD)을 수신하고, 이 커맨드를 해석한다. 이에 따라, 컨트롤러(21)는 멀티-블록 기입 커맨드(MW-CMD)에 대응하는 데이터 전송이 완료되었다는 것을 검출한다.
때로는, 멀티-블록 기입 커맨드(MW-CMD)에 후속하여 하나의 데이터 블록만이 전송된다는 점에 유의하기 바란다. 도 11은 멀티-블록 기입 동작의 다른 예를 나타내는 타이밍 차트이다.
컨트롤러(21)는 호스트 장치(10)가 내린 멀티-블록 기입 커맨드(MW-CMD)을 수신하고, 이 커맨드를 해석한다. 이어서, 호스트 장치(10)는 데이터 블록을 컨트롤러(21)로 전송한다. 컨트롤러(21)는 최대 비지 시간의 범위 내에서 호스트 장치(10)로부터 전송되는 데이터 블록을 수신하는 프로세스를 실행한다. DS 커플링 프로세스가 필요하다면, 컨트롤러(21)는 데이터 블록 수신 프로세스와 병행하여 이 데이터 블록에 대응하는 비지 기간 동안 DS 커플링 프로세스의 절반을 수행한다.
중지 커맨드(ST-CMD)이 데이터 블록에 뒤이어 호스트 장치(10)로부터 전송되면, 컨트롤러(21)는 단일-블록 기입의 프로세싱과 동일한 프로세싱을 실행한다. 즉, 컨트롤러(21)는 데이터 블록을 랜덤 기입 버퍼(32)에 추가한다. 이 프로세싱은 멀티-블록 기입 커맨드에 후속하여 하나의 데이터 블록만이 전송되는 경우에도 데이터 이동 프로세스를 줄일 수 있다.
이 실시예는 멀티-블록 기입 동작이 동일한 블록에 대해 2번 수행될 때 데이터 카피량을 최대 1/2 블록까지 줄인다. 즉, 하나의 블록이 2개의 영역으로 분할되는 식으로 관리된다. 이러한 2개의 영역에서 데이터 재기입이 발생하면, 기입될 새로운 데이터는 논리 어드레스에 상관없이 소거된 물리적 블록에서 대응 영역의 제1 페이지로부터 순차 기입된다(이하에서는 듀얼-페이지 시프트 방법으로 지칭된다).
도 12 및 도 13은 이러한 듀얼-페이지 시프트 방법에서의 데이터 재기입 동작을 개략적으로 나타내고 있다. 간결함을 위해, 도 12 및 도 13은 하나의 블록이 10 페이지로 구성되는 예를 보여주고 있다. 각각의 물리적 블록은 페이지 1 내지 5를 포함하는 영역 1과, 페이지 6 내지 10을 포함하는 영역 2로 분할되는 식으로 관리된다. 임의 데이터는 논리 블록 A의 페이지 1 내지 10에 사전 기입된다. 논리 블록 A 등의 데이터와 동일한 데이터가 물리적 블록 A의 페이지 1 내지 10에 기입된다. 또한, 물리적 블록 B는 소거된 물리적 블록이다.
도 12에 도시된 바와 같이, 호스트 장치(10)는 메모리 카드(20)의 논리 블록 A에서 영역 1의 페이지 2 및 3에 데이터 블록 1(데이터 1)과 데이터 블록 2(데이터 2)를 연속 기입한다. 컨트롤러(21)는 소거된 물리적 블록 B에서 논리 어드레스에 대응하는 페이지에 데이터 1 및 2를 기입하지 않지만, 영역 1의 제1 페이지(페이지 1)로부터 데이터 1 및 2를 물리적 블록 B에 순차 기입한다(단계 S101). 동시에, 컨트롤러(21)는 새로운 데이터가 기입되는 페이지의 여분의 영역에서의 기입 요청의 오브젝트로서 페이지(물리적 블록 A의 페이지 2 및 3)의 어드레스를 기입한다.
이어서, 도 13에 도시된 바와 같이, 호스트 장치(10)는 메모리 카드(20)의 논리 블록 A에서 영역 2의 페이지 8 및 9에 데이터 블록 3(데이터 3) 및 데이터 블록 4(데이터 4)를 연속 기입한다. 컨트롤러(21)는 물리적 블록 A의 영역 1에 기입된 데이터를 이동시키는 프로세스를 실행한다. 즉, 컨트롤러(21)는 물리적 블록 B의 페이지 3 및 4 각각에 물리적 블록 A의 페이지 4 및 5의 데이터를 기입한다(단계 S102). 그 후, 컨트롤러(21)는 물리적 블록 B의 페이지 5에 물리적 블록 A의 페이지 1의 데이터를 기입한다(단계 S103).
컨트롤러(21)는 물리적 블록 B에서 논리 어드레스에 대응하는 페이지에 데이터 3 및 4를 기입하지 않지만, 영역 2의 제1 페이지(페이지 6)로부터 데이터 3 및 4를 물리적 블록 B에 순차 기입한다(단계 S104). 동시에, 컨트롤러(21)는 새로운 데이터가 기입되는 페이지의 여분의 영역에서의 기입 요청의 오브젝트로서 페이지(물리적 블록 A의 페이지 8 및 9)의 어드레스를 기입한다.
전술한 바와 같은 프로세싱은 논리 블록 A의 영역 1에 데이터를 중복 기입하는 경우에 데이터 이동 프로세스를 제거한다. 이는 영역 1에의 재기입 동작을 고속으로 수행할 수 있게 한다. 또한, 최대 데이터 카피량은 논리 블록 A의 영역 2에 데이터를 중복 기입할 때 1/2 블록까지 줄어들 수 있다. 이는 이동 프로세스에 필요한 시간을 줄일 수 있게 한다. 이에 따라, 타임아웃이 방지될 수 있다.
[4]일련의 데이터 기입 동작
이제, 기입 커맨드(단일-블록 기입 커맨드 또는 멀티-블록 기입 커맨드)의 수신 동작으로부터 이 기입 커맨드에 수반되는 일련의 기입 프로세스의 마지막 동작까지에 대해 설명한다.
도 14 및 도 15는 기입 커맨드에 수반되는 일련의 동작들을 나타내는 플로우차트이다. 호스트 장치(10)로부터 기입 커맨드를 수신(단계 S201)할 때, 컨트롤러(21)는 DS 커플링 프로세스가 필요한지 여부를 체크한다(단계 S202). 어떠한 DS 커플링 프로세스도 필요하지 않다면, 컨트롤러(21)는 듀얼-페이지 시프트 방법을 이용해 이동 프로세스를 실행하고, 그 후 (데이터 수신 프로세스를 포함하는) 데이터 기입 프로세스를 실행한다(단계 S203).
단계 S202에서 DS 커플링 프로세스가 필요하다면, 컨트롤러(21)는 호스트 장치(10)로부터 수신된 기입 커맨드를 해석한다(단계 S204). 이 기입 커맨드가 단일-블록 기입 커맨드가면, 컨트롤러(21)는 이 후 단일-블록 기입 동작을 실행한다.
즉, 호스트 장치(10)로부터 데이터 블록을 수신(단계 S205)할 때, 컨트롤러(21)는 이 데이터 블록을 랜덤 기입 버퍼(32)에 추가한다(단계 S206). 이어서, 컨트롤러(21)는 이 블록이 단일-블록 기입 동작에 의해 현재 이동중인지 여부(즉, 이 블록 절반의 이동 프로세스가 완료되었는지 여부)를 체크한다(단계 S207).
어떠한 이동 프로세스도 현재 수행되고 있지 않다면, 컨트롤러(21)는 랜덤 기입 버퍼(32)에서의 빈 엔트리 수가 2 이하인지 여부를 체크한다(단계 S208). 빈 엔트리 수가 2 이하이면, 컨트롤러(21)는 랜덤 기입 버퍼(32)에 저장되는 최대 데이터량을 갖는 블록의 이동 프로세스의 절반을 실행한다(단계 S209).
그 후, 컨트롤러(21)는 랜덤 기입 버퍼(32)의 불필요한 정보 정리 프로세스를 실행한다(단계 S210). 그리고 나서, 컨트롤러(21)는 비지 상태를 취소한다(단계 S211).
단계 S207에서 이동 프로세스가 현재 수행되고 있다면, 컨트롤러(21)는 이동 프로세스의 나머지를 실행한다(단계 S212). 그 후, 컨트롤러(21)는 단계 S210으로 진행하여 랜덤 기입 버퍼(32)의 불필요한 정보 정리 프로세스를 실행한다.
단계 S208에서 빈 엔트리 수가 2를 초과하면, 컨트롤러(21)는 단계 S210으로 진행하여 랜덤 기입 버퍼(32)의 불필요한 정보 정리 프로세스를 실행한다.
한편, 단계 S204에서의 기입 커맨드가 단일-블록 기입 커맨드가 아니라면, 컨트롤러(21)는 멀티-블록 기입 동작을 실행한다. 즉, 호스트 장치(10)로부터 데이터 블록을 수신(단계 S310)할 때, 컨트롤러(21)는 DS 커플링 프로세스가 필요한지 여부를 체크한다(단계 S302). 어떠한 DS 커플링 프로세스도 필요하지 않다면, 컨트롤러(21)는 단계 S317로 진행하여 후속 데이터 블록을 수신한다. 그 후, 컨트롤러(21)는 스토리지 영역(31)에 데이터를 기입하는 프로세스를 실행한다.
단계 S302에서 DS 커플링 프로세스가 필요하다면, 컨트롤러(21)는 DS 커플링 프로세스의 절반을 실행한다(단계 S303). 이어서, 컨트롤러(21)는 중지 커맨드(ST-CMD)이 수신되는지 여부를 모니터링한다(단계 S304). 중지 커맨드(ST-CMD)이 수신된다면, 컨트롤러(21)는 DS 커플링 프로세스를 중단시킨다(단계 S305). 그 후, 컨트롤러(21)는 단계 S206으로 진행하여 단일-블록 기입의 프로세싱과 동일한 프로세싱을 실행한다.
단계 S304에서 어떠한 중지 커맨드(ST-CMD)도 수신되지 않는다면, 컨트롤러(21)는 DS 커플링 프로세스의 절반을 지속한다. 이 DS 커플링 프로세스가 완료(단계 S306)되면, 컨트롤러(21)는 비지 상태를 취소한다(단계 S307).
이어서, 컨트롤러(21)는 중지 커맨드(ST-CMD)이 수신되는지 여부를 모니터링한다(단계 S308). 중지 커맨드(ST-CMD)이 수신되면, 컨트롤러(21)는 DS 커플링 프로세스를 중단(단계 S305)시킨 후, 단일-블록 기입의 프로세싱과 동일한 프로세싱을 실행한다.
단계 S308에서 어떠한 중지 커맨드(ST-CMD)도 수신되지 않고, 데이터 블록이 수신(단계 S309)되면, 컨트롤러(21)는 DS 커플링 프로세스의 나머지를 실행한다(단계 S310). 이어서, 컨트롤러(21)는 중지 커맨드(ST-CMD)이 수신되는지 여부를 모니터링한다(단계 S311). 중지 커맨드(ST-CMD)이 수신되면, 컨트롤러(21)는 DS 커플링 프로세스의 나머지를 지속한다(단계 S312). DS 커플링 프로세스의 나머지가 완료(단계 S313)되면, 컨트롤러(21)는 비지 상태를 취소한다(단계 S314).
단계 S311에서 어떠한 중지 커맨드(ST-CMD)도 수신되지 않는다면, 컨트롤러(21)는 DS 커플링 프로세스의 나머지를 지속한다. 이 DS 커플링 프로세스가 완료(단계 S315)되면, 컨트롤러(21)는 비지 상태를 취소한다(단계 S316). 그 후, 컨트롤러(21)는 후속 데이터 블록을 수신하고, 스토리지 영역(31)에 데이터를 기입하는 프로세싱을 실행한다(단계 S317). 이런 식으로, 컨트롤러(21)는 기입 커맨드를 수신한 후의 일련의 프로세스를 수행한다.
전술한 바와 같이, 이 실시예는 단일-블록 기입과 멀티-블록 기입 모두에 대한 메모리 카드 표준의 타임아웃 사양 및 스피드 클래스 사양을 충족시킬 수 있다.
또한, 단일 블록 기입 시에 DS 커플링 프로세스가 필요한 경우에는, 데이터 블록이 스토리지 영역(31)에 기입되는 것이 아니라 랜덤 기입 버퍼에(32)에 기입된다. 이와 같이 함으로써 데이터 제거 프로세스를 줄이는 것이 가능하게 된다. 부가하여, 무효 데이터를 랜덤 기입 버퍼(32)에 순차적으로 재배치함으로써, 랜덤 기입 버퍼(32)의 용량이 감소될 수 있다.
멀티블록 기입 시에, 비지 기간 동안 DS 커플링 프로세스가 분할하여 수행된다. 따라서, 각각의 데이터 블록을 수신하는 프로세스가 수행될 수 있는 한편, 타임아웃 사양은 만족된다. 또한, 듀얼 페이지 시프트 방법을 사용함으로써, 데이터 제거량을 줄일 수 있다. 결과적으로, 데이터 제거에 필요한 시간이 감소될 수 있다.
전술한 실시예에서, 간소화를 위해, 메모리 블록들 간의 데이터 카피가 분할 하여 두 번 수행된다. 말할 필요도 없이, 데이터 카피 동작은 세번 이상의 프로세스로 실행될 수 있다. 이 경우에, "데이터 카피" 및 "페이지 시프트"용으로 사용되는 메모리 블록 분할 수는 세 개 이상이 되도록 결정된다. 이 덕분에, 실시예는 몇개의 타임아웃 조건을 필요로 하는 플래시 메모리에도 적용가능하다.
부가의 이점 및 수정은 당해 분야에 능숙한 자에게는 용이하게 일어날 것이다. 따라서, 광의에 있어서의 본 발명은 본 명세서에 도시되고 설명된 특정 상세 및 대표 실시예에 한정되는 것이 아니다. 따라서, 첨부된 청구 범위 및 그 등가물에 의해 정의되는 바와 같이 일반적인 진보적 개념의 사상 및 범위를 벗어나지 않고 다양한 수정이 가해질 수 있다.
도 1은 본 발명의 일 실시예에 따른 호스트 장치(10)와 메모리 카드(20)의 배열을 도시한 블록도.
도 2는 페이지 시프트 방법의 데이터 재기입 동작을 도시한 개략도.
도 3은 2개의 영역, 즉 물리적 블록 A 및 B에 분리되어 저장된 데이터의 커플링 처리를 도시한 개략도.
도 4는 단일 블록 기입 동작을 도시한 타이밍도.
도 5는 단일 블록 기입 동작을 도시한 개략도.
도 6은 랜덤 기입 버퍼(32)에 기입된 데이터와 랜덤 기입 버퍼(32)에 버퍼링될 수 있는 유효 데이터의 개수간의 관계를 도시한 도면.
도 7은 랜덤 기입 버퍼(32)의 불용 정보 컬렉션 동작을 도시한 개략도.
도 8은 실제적인 불용 정보 컬렉션 동작을 도시한 개략도.
도 9는 랜덤 기입 버퍼에 포함된 블록들의 빈 엔트리의 개수를 도시한 도면.
도 10은 멀티-블록 기입 동작을 도시한 타이밍도.
도 11은 멀티-블록 기입 동작의 다른 예를 도시한 타이밍도.
도 12는 듀얼-페이지 시프트 방법의 데이터 재기입 동작을 도시한 개략도.
도 13은 도 12에 따른 것이며 듀얼-페이지 시프트 방법의 데이터 재기입 동작을 설명하는 개략도.
도 14는 기입 커맨드에 관련된 일련의 동작들을 도시한 플로우챠트.
도 15는 도 14에 따른 것이며 기입 커맨드에 관련된 일련의 동작들을 나타낸 플로우챠트.
<도면의 주요 부분에 대한 부호의 설명>
10: 호스트 장치
20: 메모리 카드
21: 컨트롤러
22: NAND 플래시 메모리
23: 호스트 인터페이스 회로
24: MPU
25: ROM
26: RAM
27: 메모리 인터페이스 회로
22: NAND 플래시 메모리
31: 스토리지 영역
32: 랜덤 기입 버퍼

Claims (20)

  1. 메모리 디바이스로서,
    각각 복수의 불휘발성 메모리 셀을 포함하는 복수의 메모리 블록을 구비한 스토리지 영역과, 복수의 불휘발성 메모리 셀을 포함하고 데이터를 일시적으로 저장하도록 구성된 버퍼를 포함하고, 각 블록 단위로 데이터가 소거되는 불휘발성 메모리, 및
    1회 기입 커맨드와 관련된 기입 데이터의 크기가 선정된 크기보다 크지 않으면 상기 기입 데이터를 상기 버퍼에 기입하고, 1회 기입 커맨드와 관련된 기입 데이터의 크기가 상기 선정된 크기보다 크면 상기 기입 데이터를 처리하여 상기 복수의 메모리 블록에 기입하는 컨트롤러
    를 포함하는 메모리 디바이스.
  2. 제1항에 있어서,
    상기 스토리지 영역에 있는 데이터가 상기 기입 데이터에 의해 재기입되어야 하는 경우, 상기 컨트롤러는 상기 기입 데이터를 상기 버퍼에 기입하는 메모리 디바이스.
  3. 제1항에 있어서,
    상기 컨트롤러는 상기 버퍼에 저장된 복수의 기입 데이터 중 제1 메모리 블록에 기입될 복수의 기입 데이터를, 데이터가 소거된 제2 메모리 블록에 기입하는 메모리 디바이스.
  4. 제3항에 있어서,
    상기 컨트롤러는 상기 버퍼로부터 메모리 블록에 기입될 데이터를 선택하여, 상기 버퍼의 용량이 항상 비어있도록 하는 메모리 디바이스.
  5. 제3항에 있어서,
    상기 제1 메모리 블록에 기입될 상기 복수의 기입 데이터의 수가 선정된 수보다 작지 않으면, 상기 컨트롤러는 상기 기입 데이터를 상기 제2 메모리 블록에 기입하는 메모리 디바이스.
  6. 제3항에 있어서,
    상기 컨트롤러는 상기 버퍼의 빈 용량이 선정된 값보다 크지 않으면 상기 기입 데이터를 상기 제2 메모리 블록에 기입하고,
    상기 제1 메모리 블록은 메모리 블록당 기입 데이터의 수에 기초하여 선택되는 메모리 디바이스.
  7. 제3항에 있어서,
    상기 기입 데이터를 처리하는 동안, 상기 컨트롤러는 상기 제1 메모리 블록에 미리 저장된 데이터 중 재기입될 데이터를 제외한 데이터를 상기 제2 메모리 블록에 카피하는 메모리 디바이스.
  8. 제7항에 있어서,
    상기 컨트롤러는 선정된 시간 내에 상기 기입 데이터의 프로세스를 수행하고, 상기 선정된 시간을 초과하지 않도록 상기 데이터 카피 프로세스를 분할하여 수행하는 메모리 디바이스.
  9. 제8항에 있어서,
    상기 선정된 시간은 상기 기입 데이터의 프로세스를 위해 정의된 최대 비지 시간인 메모리 디바이스.
  10. 제8항에 있어서,
    상기 컨트롤러는 데이터를 하나의 메모리 블록에 두 번 이상 분할하여 카피하는 메모리 디바이스.
  11. 제3항에 있어서,
    상기 버퍼는 각각 복수의 불휘발성 메모리 셀을 포함하는 복수의 버퍼 블록을 포함하고,
    상기 기입 데이터를 처리하는 동안, 상기 컨트롤러는 제1 버퍼 블록에 저장된 복수의 기입 데이터 중 상기 제2 메모리 블록에 이미 기입된 데이터를 제외한 데이터를, 데이터가 소거된 제2 버퍼 블록에 카피함으로써 상기 버퍼에 데이터를 재배치하는 메모리 디바이스.
  12. 제11항에 있어서,
    상기 컨트롤러는 재배치될 메모리 블록 및 버퍼 블록을 선택하여, 상기 버퍼의 용량이 항상 비어 있도록 하는 메모리 디바이스.
  13. 제1항에 있어서,
    상기 복수의 메모리 블록 중 하나에 상기 기입 데이터를 기입하는 처리는 상기 기입 데이터를 각각 상기 선정된 크기를 갖는 복수의 데이터 부분으로 분할함으로써 수행되고, 각각의 데이터 부분 처리 동안 메모리 블록들 간에 일부의 데이터의 카피를 수행하는 메모리 디바이스.
  14. 제13항에 있어서,
    상기 컨트롤러는 선정된 시간 내에 각각의 데이터 부분의 프로세스를 수행하고, 상기 선정된 시간을 초과하지 않도록 상기 데이터의 카피 프로세스를 분할하여 수행하는 메모리 디바이스.
  15. 제14항에 있어서,
    상기 선정된 시간은 상기 데이터 부분의 프로세스를 위해 정의된 최대 비지 시간인 메모리 디바이스.
  16. 제14항에 있어서,
    상기 컨트롤러는 데이터를 하나의 메모리 블록에 두 번 이상 분할하여 카피하는 메모리 디바이스.
  17. 메모리 디바이스로서,
    각각 복수의 불휘발성 메모리 셀을 구비하는 복수의 메모리 블록을 포함하고, 각 블록에 대하여 데이터가 소거되는 불휘발성 메모리, 및
    상기 메모리 블록을 두 개 이상의 블록 부분으로 분할하여 각 메모리 블록을 관리하고, 제1 메모리 블록에서 임의의 어드레스에 대한 기입 요청을 수신할 때, 상기 기입 요청에 관련된 기입 데이터를, 데이터가 소거된 제2 메모리 블록의 어드레스에 대응하는 블록 부분의 시작 위치에 기입하는 컨트롤러
    를 포함하는 메모리 디바이스.
  18. 제17항에 있어서,
    상기 컨트롤러는 상기 제1 메모리 블록에 사전 저장된 데이터 중 재기입될 데이터를 제외한 데이터를 상기 제2 메모리 블록에 분할하여 카피하는 메모리 디바이스.
  19. 제18항에 있어서,
    상기 컨트롤러는 각 블록 부분에 대한 상기 데이터를 카피하는 프로세스를 수행하는 메모리 디바이스.
  20. 제17항에 있어서,
    상기 메모리 블록은 복수의 페이지를 포함하고, 각각의 페이지는 데이터 기입 유닛인 메모리 디바이스.
KR1020070131105A 2006-12-15 2007-12-14 메모리 디바이스 KR100939145B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2006338718A JP2008152464A (ja) 2006-12-15 2006-12-15 記憶装置
JPJP-P-2006-00338718 2006-12-15

Publications (2)

Publication Number Publication Date
KR20080055734A KR20080055734A (ko) 2008-06-19
KR100939145B1 true KR100939145B1 (ko) 2010-01-28

Family

ID=39654584

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070131105A KR100939145B1 (ko) 2006-12-15 2007-12-14 메모리 디바이스

Country Status (3)

Country Link
US (2) US8356134B2 (ko)
JP (1) JP2008152464A (ko)
KR (1) KR100939145B1 (ko)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4762261B2 (ja) 2008-03-12 2011-08-31 株式会社東芝 メモリシステム
TWI398770B (zh) * 2008-07-08 2013-06-11 Phison Electronics Corp 用於快閃記憶體的資料存取方法、儲存系統與控制器
US8442059B1 (en) 2008-09-30 2013-05-14 Gridiron Systems, Inc. Storage proxy with virtual ports configuration
US8838850B2 (en) * 2008-11-17 2014-09-16 Violin Memory, Inc. Cluster control protocol
US8417895B1 (en) 2008-09-30 2013-04-09 Violin Memory Inc. System for maintaining coherency during offline changes to storage media
US8788758B1 (en) 2008-11-04 2014-07-22 Violin Memory Inc Least profitability used caching scheme
US8775741B1 (en) 2009-01-13 2014-07-08 Violin Memory Inc. Using temporal access patterns for determining prefetch suitability
US8443150B1 (en) 2008-11-04 2013-05-14 Violin Memory Inc. Efficient reloading of data into cache resource
US8285961B2 (en) * 2008-11-13 2012-10-09 Grid Iron Systems, Inc. Dynamic performance virtualization for disk access
JP5221332B2 (ja) * 2008-12-27 2013-06-26 株式会社東芝 メモリシステム
US8099543B2 (en) 2009-02-03 2012-01-17 Micron Technology, Inc. Methods of operarting memory devices within a communication protocol standard timeout requirement
JP2010211618A (ja) * 2009-03-11 2010-09-24 Toshiba Corp 半導体記憶装置
US8977805B2 (en) 2009-03-25 2015-03-10 Apple Inc. Host-assisted compaction of memory blocks
US8667366B1 (en) 2009-04-17 2014-03-04 Violin Memory, Inc. Efficient use of physical address space for data overflow and validation
US8650362B2 (en) * 2009-04-17 2014-02-11 Violin Memory Inc. System for increasing utilization of storage media
US8713252B1 (en) 2009-05-06 2014-04-29 Violin Memory, Inc. Transactional consistency scheme
US8688896B2 (en) 2009-05-21 2014-04-01 Panasonic Corporation High speed writing mode in memory controller, nonvolatile storage device, accessing device, nonvolatile storage system, and method and program for writing data
US8402198B1 (en) 2009-06-03 2013-03-19 Violin Memory, Inc. Mapping engine for a storage device
US9069676B2 (en) 2009-06-03 2015-06-30 Violin Memory, Inc. Mapping engine for a storage device
TWI410795B (zh) * 2009-06-23 2013-10-01 Phison Electronics Corp 用於快閃記憶體的資料寫入方法及其控制電路與儲存系統
WO2011013350A1 (ja) * 2009-07-29 2011-02-03 パナソニック株式会社 メモリ装置、ホスト装置およびメモリシステム
US8402246B1 (en) 2009-08-28 2013-03-19 Violin Memory, Inc. Alignment adjustment in a tiered storage system
JP4956593B2 (ja) * 2009-09-08 2012-06-20 株式会社東芝 メモリシステム
US8838878B2 (en) * 2010-06-01 2014-09-16 Greenliant Llc Method of writing to a NAND memory block based file system with log based buffering
US8832384B1 (en) 2010-07-29 2014-09-09 Violin Memory, Inc. Reassembling abstracted memory accesses for prefetching
US8959288B1 (en) 2010-07-29 2015-02-17 Violin Memory, Inc. Identifying invalid cache data
JP5640572B2 (ja) * 2010-09-01 2014-12-17 富士通株式会社 情報処理装置、情報処理プログラムおよびコピー処理方法
JP5917163B2 (ja) * 2011-01-27 2016-05-11 キヤノン株式会社 情報処理装置、その制御方法及びプログラム並びに記憶媒体
US8972689B1 (en) 2011-02-02 2015-03-03 Violin Memory, Inc. Apparatus, method and system for using real-time performance feedback for modeling and improving access to solid state media
US8635416B1 (en) 2011-03-02 2014-01-21 Violin Memory Inc. Apparatus, method and system for using shadow drives for alternative drive commands
US8954668B2 (en) 2011-05-23 2015-02-10 International Business Machines Corporation Writing of data of a first block size in a raid array that stores and mirrors data in a second block size
US9043543B2 (en) 2011-05-23 2015-05-26 International Business Machines Corporation Writing of new data of a first block size in a raid array that stores both parity and data in a second block size
US9575886B2 (en) * 2013-01-29 2017-02-21 Marvell World Trade Ltd. Methods and apparatus for storing data to a solid state storage device based on data classification
KR102025240B1 (ko) * 2013-04-01 2019-11-04 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
EP2981965A4 (en) * 2013-04-02 2017-03-01 Violin Memory Inc. System for increasing storage media performance
CN104423888B (zh) * 2013-08-23 2017-10-03 群联电子股份有限公司 数据写入方法、存储器控制电路单元与存储器存储装置
TWI498899B (zh) * 2013-08-23 2015-09-01 Phison Electronics Corp 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
CN104423892A (zh) * 2013-08-29 2015-03-18 宏碁股份有限公司 数据写入方法、磁盘模块以及数据写入系统
US9218282B2 (en) * 2013-10-31 2015-12-22 Micron Technology, Inc. Memory system data management
JP6276208B2 (ja) * 2014-10-30 2018-02-07 東芝メモリ株式会社 メモリシステム及びプログラム
US11347637B2 (en) 2014-10-30 2022-05-31 Kioxia Corporation Memory system and non-transitory computer readable recording medium
US10102118B2 (en) * 2014-10-30 2018-10-16 Toshiba Memory Corporation Memory system and non-transitory computer readable recording medium
KR20170059658A (ko) 2015-11-23 2017-05-31 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
TWI615711B (zh) * 2017-03-28 2018-02-21 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
JP6968016B2 (ja) * 2018-03-22 2021-11-17 キオクシア株式会社 ストレージデバイスおよびコンピュータシステム
KR20200110547A (ko) * 2019-03-14 2020-09-24 삼성전자주식회사 스토리지 장치 및 스토리지 장치를 포함하는 컴퓨팅 장치
TWI725416B (zh) * 2019-04-23 2021-04-21 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置
CN111858389B (zh) * 2019-04-30 2023-07-04 群联电子股份有限公司 数据写入方法、存储器控制电路单元以及存储器存储装置
CN111966285B (zh) * 2020-07-20 2022-09-06 四川虹美智能科技有限公司 向eeprom存储数据的方法、主控芯片和系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990029196A (ko) * 1997-09-09 1999-04-26 다니구찌 이찌로오, 기타오카 다카시 반도체 기억 장치 및 그 데이터 관리 방법
KR20060067611A (ko) * 2004-12-15 2006-06-20 삼성전자주식회사 비휘발성 저장장치에 멀티미디어 데이터를 블록 단위로저장하는 방법 및 장치
KR20070008403A (ko) * 2005-07-13 2007-01-17 삼성전자주식회사 복합 메모리를 구비하는 데이터 저장 시스템 및 그 동작방법

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5652723A (en) * 1991-04-18 1997-07-29 Mitsubishi Denki Kabushiki Kaisha Semiconductor memory device
US8171203B2 (en) * 1995-07-31 2012-05-01 Micron Technology, Inc. Faster write operations to nonvolatile memory using FSInfo sector manipulation
JP4086345B2 (ja) * 1997-09-09 2008-05-14 キヤノン株式会社 通信制御方法及び装置及び通信システム
US6028807A (en) * 1998-07-07 2000-02-22 Intel Corporation Memory architecture
US20050204187A1 (en) * 2004-03-11 2005-09-15 Lee Charles C. System and method for managing blocks in flash memory
US7120761B2 (en) * 2000-12-20 2006-10-10 Fujitsu Limited Multi-port memory based on DRAM core
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
JP3621051B2 (ja) * 2001-04-26 2005-02-16 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
KR100389867B1 (ko) * 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
JP3967121B2 (ja) * 2001-12-11 2007-08-29 株式会社ルネサステクノロジ ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム
JP4326294B2 (ja) * 2003-09-16 2009-09-02 株式会社ルネサステクノロジ 半導体記憶装置
JP2005092659A (ja) * 2003-09-19 2005-04-07 Nec Electronics Corp データ書込・読出制御装置、及びデータ書込・読出制御方法
JP4722704B2 (ja) * 2003-10-31 2011-07-13 パナソニック株式会社 情報記録媒体、情報記録媒体に対するアクセス装置及びアクセス方法
US7159068B2 (en) * 2003-12-22 2007-01-02 Phison Electronics Corp. Method of optimizing performance of a flash memory
US8504798B2 (en) * 2003-12-30 2013-08-06 Sandisk Technologies Inc. Management of non-volatile memory systems having large erase blocks
JP4000124B2 (ja) * 2004-03-26 2007-10-31 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4253272B2 (ja) * 2004-05-27 2009-04-08 株式会社東芝 メモリカード、半導体装置、及び半導体メモリの制御方法
KR100568115B1 (ko) * 2004-06-30 2006-04-05 삼성전자주식회사 점진적 머지 방법 및 그것을 이용한 메모리 시스템
JP4874588B2 (ja) 2004-07-12 2012-02-15 株式会社東芝 記憶デバイスおよびホスト機器
JP4713867B2 (ja) * 2004-09-22 2011-06-29 株式会社東芝 メモリコントローラ,メモリ装置及びメモリコントローラの制御方法
US7315916B2 (en) * 2004-12-16 2008-01-01 Sandisk Corporation Scratch pad block
US7386655B2 (en) 2004-12-16 2008-06-10 Sandisk Corporation Non-volatile memory and method with improved indexing for scratch pad and update blocks
US7412560B2 (en) * 2004-12-16 2008-08-12 Sandisk Corporation Non-volatile memory and method with multi-stream updating
US7366826B2 (en) 2004-12-16 2008-04-29 Sandisk Corporation Non-volatile memory and method with multi-stream update tracking
KR100684887B1 (ko) * 2005-02-04 2007-02-20 삼성전자주식회사 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법
JP4423295B2 (ja) * 2005-06-24 2010-03-03 ソフトバンクモバイル株式会社 データ通信方法及び移動通信端末装置
KR100729358B1 (ko) * 2005-08-29 2007-06-15 삼성전자주식회사 멀티 버퍼 프로그램 스킴을 갖는 플래시 메모리 장치
KR100736928B1 (ko) * 2005-12-05 2007-07-10 삼성전자주식회사 호스트 디바이스 간의 데이터 통신이 가능한 복합기기 및호스트 디바이스 간의 데이터 통신방법
US7444463B2 (en) * 2006-09-29 2008-10-28 Sandisk Corporation System for phased garbage collection with state indicators
US20080091901A1 (en) * 2006-10-12 2008-04-17 Alan David Bennett Method for non-volatile memory with worst-case control data management
JP2010211618A (ja) 2009-03-11 2010-09-24 Toshiba Corp 半導体記憶装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990029196A (ko) * 1997-09-09 1999-04-26 다니구찌 이찌로오, 기타오카 다카시 반도체 기억 장치 및 그 데이터 관리 방법
KR20060067611A (ko) * 2004-12-15 2006-06-20 삼성전자주식회사 비휘발성 저장장치에 멀티미디어 데이터를 블록 단위로저장하는 방법 및 장치
KR20070008403A (ko) * 2005-07-13 2007-01-17 삼성전자주식회사 복합 메모리를 구비하는 데이터 저장 시스템 및 그 동작방법

Also Published As

Publication number Publication date
US20090006725A1 (en) 2009-01-01
US8356134B2 (en) 2013-01-15
US9058254B2 (en) 2015-06-16
JP2008152464A (ja) 2008-07-03
US20120137057A1 (en) 2012-05-31
KR20080055734A (ko) 2008-06-19

Similar Documents

Publication Publication Date Title
KR100939145B1 (ko) 메모리 디바이스
CN108572933B (zh) 用于直接存储器存取的数据缓冲器指针找取
US7937523B2 (en) Memory system with nonvolatile semiconductor memory
CN108572796B (zh) 具有异构nvm类型的ssd
US8144515B2 (en) Interleaved flash storage system and method
US5953737A (en) Method and apparatus for performing erase operations transparent to a solid state storage system
JP3898305B2 (ja) 半導体記憶装置、半導体記憶装置の制御装置及び制御方法
KR101861170B1 (ko) 마이그레이션 관리자를 포함하는 메모리 시스템
EP2529308B1 (en) A system and method for read-while-write with nand memory device
US8171239B2 (en) Storage management method and system using the same
US20180173420A1 (en) Apparatus, system and method for increasing the capacity of a storage device available to store user data
CN111459844B (zh) 数据储存装置及用于存取逻辑至物理地址映射表的方法
US9122586B2 (en) Physical-to-logical address map to speed up a recycle operation in a solid state drive
JP2009099149A (ja) 適応ハイブリッド密度メモリ記憶装置の制御方法、及び適応ハイブリッド密度メモリ記憶装置
CN111722792B (zh) 存储器系统
TWI626540B (zh) 一般及垃圾回收的資料存取方法以及使用該方法的裝置
US7969781B2 (en) Method of controlling memory system
CN113407111B (zh) 闪存控制器、闪存控制器的方法及记忆装置
US8180951B2 (en) Memory system and method of controlling the memory system
CN111045961B (zh) 数据处理方法及使用所述方法的存储控制器
KR20090046568A (ko) 플래시 메모리 시스템 및 그것의 쓰기 방법
JP4273106B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4985108B2 (ja) データ記憶装置およびその制御方法

Legal Events

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

Payment date: 20130107

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20131219

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20141230

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20151217

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20161220

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20171219

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20181226

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20200107

Year of fee payment: 11