KR100921282B1 - 불휘발성 기억 장치, 그 제어 방법, 및 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체 - Google Patents

불휘발성 기억 장치, 그 제어 방법, 및 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체 Download PDF

Info

Publication number
KR100921282B1
KR100921282B1 KR1020037012161A KR20037012161A KR100921282B1 KR 100921282 B1 KR100921282 B1 KR 100921282B1 KR 1020037012161 A KR1020037012161 A KR 1020037012161A KR 20037012161 A KR20037012161 A KR 20037012161A KR 100921282 B1 KR100921282 B1 KR 100921282B1
Authority
KR
South Korea
Prior art keywords
data
address
block
physical
physical block
Prior art date
Application number
KR1020037012161A
Other languages
English (en)
Other versions
KR20040086500A (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 KR20040086500A publication Critical patent/KR20040086500A/ko
Application granted granted Critical
Publication of KR100921282B1 publication Critical patent/KR100921282B1/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
    • 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
    • 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
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • G11C16/105Circuits or methods for updating contents of nonvolatile memory, especially with 'security' features to ensure reliable replacement, i.e. preventing that old data is lost before new data is reliably written
    • 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
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2216/00Indexing scheme relating to G11C16/00 and subgroups, for features not directly covered by these groups
    • G11C2216/12Reading and writing aspects of erasable programmable read-only memories
    • G11C2216/14Circuits or methods to write a page or sector of information simultaneously into a nonvolatile memory, typically a complete row or word line in flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2216/00Indexing scheme relating to G11C16/00 and subgroups, for features not directly covered by these groups
    • G11C2216/12Reading and writing aspects of erasable programmable read-only memories
    • G11C2216/18Flash erasure of all the cells in an array, sector or block simultaneously

Abstract

메모리 카드(100)는, 데이터를 기억하는 다수의 페이지로 이루어지는 다수의 물리 블록(122)과, 페이지에 기입하는 데이터를 유지하는 페이지 레지스터(121)를 갖는 플래시 메모리(120), 및 데이터를 다시 쓸 때, 물리 블록(122)에 유효한 데이터가 기억되어 있는지 여부를 나타내는 유효 블록 테이블(114)을 참조하여, 무효인 물리 블록을 지정하여 소거를 실행하는 동시에, 소거 실행 중에 페이지 레지스터(121)에 기입하는 데이터를 전송하는 컨트롤러(110)를 구비한다.

Description

불휘발성 기억 장치, 그 제어 방법, 및 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체{NONVOLATILE MEMORY, CONTROLLING METHOD THEREFOR, AND COMPUTER READABLE RECORDING MEDIUM STORING PROGRAM}
본 발명은, 반도체 메모리를 사용한 불휘발성 기억 장치 및 그 제어 방법에 관한 것이다.
최근, 음악 데이터나 영상 데이터를 취급하는 휴대기기의 기억 장치로서, 데이터의 다시 쓰기가 가능하고, 휴대성이 높고, 전지 등에 의한 백업이 불필요한 플래시 메모리 등의 불휘발성 메모리를 구비한 기억 장치가 사용되고 있다.
도 1은 종래의 불휘발성 기억 장치인 메모리 카드의 구성을 도시한 블록도이다.
메모리 카드(300)는, 예를 들면 PC나 디지털 카메라 등의 호스트 기기(200)에 접속되어 데이터를 기억하는 장치이며, 컨트롤러(310), 및 플래시 메모리(320)를 구비하고 있다. 호스트 기기(200)는, 카드 제어 신호 및 카드 데이터 신호를 사용하여 메모리 카드(300)와의 데이터의 기입 및 독출을 행한다. 이 카드 제어 신호 및 카드 데이터 신호는, 호스트 기기(200)와 메모리 카드(300) 내부의 컨트롤러(310) 간에서 입출력된다.
한편, 컨트롤러(310)와 플래시 메모리(320) 간에는, 메모리 제어 신호 및 메 모리 데이터 신호에 의해, 컨트롤러(310)가 플래시 메모리(320)로의 데이터의 기입 및 독출을 행한다. 또한, 컨트롤러(310)에 접속되는 플래시 메모리(320)는, 1칩으로 한정되는 것이 아니라 다수 칩을 접속해도 상관없다.
도 2는 컨트롤러(310)의 구성을 도시한 블록도이다.
컨트롤러(310)는, MPU(311), 페이지 RAM(312), 어드레스 변환 테이블(313), 및 소거 블록 테이블(314)을 구비하고 있다.
MPU(311)는, 컨트롤러(310) 전체를 제어하는 동시에, 플래시 메모리(320)에 대한 데이터의 소거, 기입, 독출을 제어한다. 페이지 RAM(312)은, 호스트 기기(200)와 플래시 메모리(320) 간에서 데이터를 일시적으로 기억하기 위한 휘발성 메모리이다. 어드레스 변환 테이블(313)은, 플래시 메모리(320)에 기입된 데이터에 대해 호스트 기기(200)로부터 지정되는 어드레스와, 플래시 메모리(320)의 물리 어드레스를 변환하는 테이블이다. 소거 블록 테이블(314)은, 플래시 메모리(320)의 물리 블록이 소거가 끝났는지 기입이 끝났는지를 물리 어드레스 단위로 나타내는 테이블이다. 또, 어드레스 변환 테이블(313) 및 소거 블록 테이블(314)의 정보는, 전원 투입 직후에 플래시 메모리(320)의 전체 물리 블록의 데이터를 독출으로써 작성된다.
도 3은 플래시 메모리(320)의 구성을 도시한 블록도이다.
플래시 메모리(320)는, 페이지 레지스터(321), 메모리 셀 어레이(323), 로우 디코더(324), 및 커맨드 디코더(325)를 구비하고 있다.
메모리 셀 어레이(323)는, 플래시 메모리(320)의 1칩에 포함되는 모든 메모 리 셀로 구성되어 있다. 이 메모리 셀은, 동시에 독출 또는 기입을 행할 수 있는 단위로 페이지를 구성한다. 또, 다수의 페이지로 소거 단위인 물리 블록(322)을 구성한다. 페이지 레지스터(321)는, 메모리 셀의 페이지와 같은 용량이고, 컨트롤러(310)로부터 입력되는 기입 데이터나 메모리 셀로부터 읽어 내어지는 독출 데이터를 유지한다. 로우 디코더(324)는, 데이터의 독출 및 기입시에는 컨트롤러(310)에 의해 지정되는 페이지를 선택하고, 데이터의 소거시에는 컨트롤러(310)에 의해 지정되는 물리 블록(322)을 선택한다. 커맨드 디코더(325)는, 메모리 제어 신호에 의한 컨트롤러(310)로부터 명령(커맨드)을 실행한다.
도 4는 어드레스 변환 테이블(313), 소거 블록 테이블(314), 및 플래시 메모리(320) 내부의 데이터의 대응의 일례를 도시한 모식도이다.
어드레스 변환 테이블(313)의 어드레스 0의 데이터는, 논리 어드레스 0에 대응하는 물리 어드레스이고, 도 4(a)에 도시한 예에서는 데이터가 "0001"이기 때문에 논리 어드레스 0의 데이터가 플래시 메모리(320)의 물리 어드레스 1에 기입되어 있는 것을 나타낸다. 또, 논리 어드레스 1에 대응하는 물리 어드레스를 나타내는 "FFFF"는 무효값이고, 논리 어드레스 1의 데이터는 존재하지 않는 것을 나타낸다. 여기서, 무효값이란 무효를 의미하는 임의의 값이며, 예를 들면 고정값인 "0"이거나, 16비트 데이터이면 최대값인 "65535"이거나, 어드레스 변환의 룰로서 무효로 정해진 값을 말한다. 또, 어드레스 변환 테이블(313)의 어드레스 2의 데이터가 "0002"이기 때문에, 논리 어드레스 2의 데이터가 플래시 메모리(320)의 물리 어드레스 2에 기입되고 있는 것을 나타낸다.
한편, 소거 블록 테이블(314)은, 플래시 메모리(320)의 물리 블록의 상태를 나타내고 있다. 실제로는, 소거 블록 테이블(314)은, 플래시 메모리(320)의 물리 어드레스에 대응하는 값을 어드레스값으로 하고, 그 플래시 메모리(320)의 물리 블록이 소거가 끝났는지 기입이 끝났는지를 데이터값으로서 갖는다. 예를 들면, 물리 블록이 소거가 끝났을 때 값 1, 기입이 끝났을 때 값 0을 취한다. 즉, 소거 블록 테이블(314)의 어드레스 0의 데이터는 플래시 메모리(320)의 물리 어드레스 0의 물리 블록의 소거 완료/기입 완료를 나타내고 있고, 도 4(a)에 도시한 예에서는 데이터가 "1"이기 때문에 물리 어드레스 0의 물리 블록은 소거가 끝난 것을 나타내고 있다. 또, 마찬가지로 소거 블록 테이블(314)의 어드레스 1과 2의 데이터가 "0"이기 때문에, 플래시 메모리(320)의 물리 어드레스 1과 2의 물리 블록은 기입이 끝난 것을 나타내고 있다.
다음으로, 상기한 바와 같이 구성된 종래의 메모리 카드(300)의 데이터를 호스트 기기(200)로부터 다시 쓰는 경우의 동작에 관해서 설명한다. 도 5는 이 경우의 기입 동작을 나타내는 타이밍 차트이고, 도 6은 이 경우의 소거 동작을 나타내는 타이밍 차트이다. 도 5 및 도 6의 타이밍 차트에 있어서, 상단의 신호는 도 1에 나타낸 카드 제어 신호 및 카드 데이터 신호이며, 호스트 기기(200)로부터 메모리 카드(300)로의 입력을 나타낸다. 중단의 신호는 도 3에 나타낸 메모리 제어 신호 및 메모리 데이터 신호이며, 컨트롤러(310)로부터 플래시 메모리(320)로의 입력을 나타낸다. 하단의 신호는 메모리 제어 신호이며, 플래시 메모리(320)로부터 컨트롤러(310)로의 출력을 나타낸다. 여기서, 도 4(a)에 나타낸 상태에서, 메모리 카드(300)의 논리 어드레스 0의 데이터를 다시 쓰는 경우를 예로 하여 설명한다.
먼저, 호스트 기기(200)는, 시간(t421)에 카드 제어 신호로서 논리 어드레스 0에 대한 기입 커맨드(401)를 메모리 카드(300)로 보내고, 시간(t422)에 카드 데이터 신호로서 기입 데이터의 전송을 개시한다. 이 기입 데이터는, 메모리 카드(300)의 컨트롤러(310)의 페이지 RAM(312)에 격납된다.
컨트롤러(310)는, 호스트 기기(200)로부터 기입 커맨드(401)를 수취하면, 소거 블록 테이블(314)을 검색하여, 데이터의 기입을 행할 수 있는 소거가 끝난 물리 블록(322)을 찾는다. 컨트롤러(310)는, 소거 블록 테이블(314)로부터 물리 어드레스 0이 소거가 끝난 물리 블록(322)인 것을 검출한다.
컨트롤러(310)는, 호스트 기기(200)로부터의 데이터 전송이 종료하면, 시간(t423)에 이 데이터의 기입 어드레스 지정 커맨드(403)를 보내고, 이후 기입 어드레스가 입력되는 것을 플래시 메모리(320)에 지시한다. 커맨드 디코더(325)는, 기입 어드레스 지정 커맨드(309)를 디코드하여, 이후 입력되는 어드레스를 취득하도록 로우 디코더(324)를 제어한다.
컨트롤러(310)는, 시간(t424)에 플래시 메모리(320)로 기입 어드레스(404)를 보낸다. 로우 디코더(324)는, 입력된 기입 어드레스를 취득하여, 데이터의 기입을 행할 수 있도록 지정된 페이지를 선택한다. 이어서, 커맨드 디코더(325)는, 기입 어드레스를 취득한 것을 인식하여, 이후 입력되는 기입 데이터를 취득하도록 페이지 레지스터(321)를 제어한다.
다음으로 컨트롤러(310)는, 시간(t425)에 페이지 RAM(312)으로부터 플래시 메모리(320)로 기입 데이터(405)의 전송을 개시한다. 커맨드 디코더(325)는, 입력된 기입 데이터를 페이지 레지스터(321)에 격납한다.
이어서 컨트롤러(310)는, 시간(t427)에 기입 실행 커맨드(406)를 플래시 메모리(320)로 보낸다.
이것을 받아 커맨드 디코더(325)는, 시간(t427)에 로우 디코더(324)가 선택하고 있는 페이지의 메모리 셀에 대해, 페이지 레지스터(321)에 유지되어 있는 데이터의 기입을 개시한다. 동시에, 커맨드 디코더(325)는, 컨트롤러(310)에 대해 기입 중인 것을 나타내는 기입 비지(busy)(407)를 메모리 제어 신호로서 보낸다. 이 기입 비지(407)의 기간은, 새로운 데이터의 독출, 기입, 및 소거를 실행할 수 없는 것을 나타내고 있다. 이것은, 기입 중, 로우 디코더(324)가 기입을 행하는 페이지의 선택 상태를 유지해 둘 필요가 있으므로, 커맨드 디코더(325)는 컨트롤러(310)로부터의 커맨드 입력을 허가하지 않고 있기 때문이다.
일반적으로, 플래시 메모리(320)에 대한 "소거"나 "기입"의 동작은 개별적으로 완결되도록 처리되는 사양으로 되어 있으며, 기입이나 소거의 비지 중에는 커맨드가 기입되지 않는다(예를 들면, 주식회사 히타치 제작소의 NH29W12811T의 데이터 시트).
다음으로, 커맨드 디코더(325)는, 시간(t428)에 기입을 행하고 있었던 페이지의 기입 동작이 종료하면, 메모리 제어 신호의 기입 비지(407)를 해제한다. 이 이후는, 컨트롤러(310)로부터 커맨드 입력을 행하는 것이 가능해진다.
이 후, 컨트롤러(310)는, 호스트 기기(200)로부터 전송되는 데이터를, 이 기 입을 행한 물리 블록(322)의 나머지 페이지에 대해서도 상기와 동일하게 하여 기입을 행한다.
이상과 같이 데이터의 기입이 종료하면, 컨트롤러(310)는, 다시 쓰기 대상인 논리 어드레스 0의 데이터가 원래 기입되어 있었던 물리 블록을 어드레스 변환 테이블(313)로부터 취득한다. 도 4(a)에 나타낸 예에서는, 어드레스 변환 테이블(313)의 어드레스 0의 데이터가 "0001"이기 때문에 물리 어드레스 1의 물리 블록이 구 데이터가 기입되어 있었던 장소이다.
다음으로, 컨트롤러(310)는 금회의 기입에 의해 무효가 된 구 데이터를 소거하기 위해, 도 6에 도시한 바와 같이 시간(t431)에 물리 어드레스 1의 물리 블록(322)에 대한 소거 어드레스 지정 커맨드(411)를 보내고, 이후 소거 어드레스가 입력되는 것을 플래시 메모리(320)에 지시한다. 커맨드 디코더(325)는, 소거 어드레스 지정 커맨드(411)를 디코드하여, 이후 입력되는 어드레스를 취득하도록 로우 디코더(324)를 제어한다.
다음으로, 컨트롤러(310)는, 시간(t432)에 플래시 메모리(320)로 소거 어드레스 입력(412)을 보낸다. 로우 디코더(324)는, 입력된 소거 어드레스를 취득하여, 데이터의 소거를 행할 수 있도록 지정된 물리 블록(322)을 선택한다.
이어서, 컨트롤러(310)는, 시간(t433)에 플래시 메모리(320)로 소거 실행 커맨드(413)를 보낸다.
이것을 받아 커맨드 디코더(325)는, 시간(t434)에 로우 디코더(324)가 선택하고 있는 물리 블록(322)의 소거를 개시한다. 동시에, 커맨드 디코더(325)는, 컨 트롤러(310)에 대해 소거 중이라는 것을 나타내는 소거 비지(414)를 메모리 제어 신호로서 보낸다. 이 소거 비지(414)의 기간은, 기입의 경우와 마찬가지로 새로운 데이터의 독출, 기입, 및 소거를 실행할 수 없는 것을 나타내고 있다.
커맨드 디코더(325)는, 시간(t435)에 소거를 행하고 있었던 물리 블록(322)의 소거 동작이 종료하면 메모리 제어 신호의 소거 비지(414)를 해제한다.
다음으로, 컨트롤러(310)의 MPU(311)는, 어드레스 변환 테이블(313) 및 소거 블록 테이블(314)의 갱신을 행한다. 도 4(b)는, 도 4(a)에 도시한 상태로부터 논리 어드레스 0의 데이터가 다시 쓰여진 상태를 도시한 모식도이다.
즉, MPU(311)는, 금회 기입을 행한 물리 블록(322)은 어드레스 0이기 때문에, 소거 블록 테이블(314)의 어드레스 0의 데이터를, 기입이 끝난 것을 의미하는 "0"으로 다시 쓴다. 또, MPU(311)는, 어드레스 변환 테이블(313)의 어드레스 0의 값을, 도 4(b)에 도시한 바와 같이 금회 다시 쓰기를 행한 물리 블록(322)의 물리 어드레스를 나타내는 "0000"으로 다시 쓴다. 그리고, MPU(311)는, 금회 소거를 행한 물리 블록(322)은 어드레스 1이기 때문에, 소거 블록 테이블(314)의 어드레스 1의 데이터를, 도 4(b)에 도시한 바와 같이 소거가 끝난 것을 의미하는 "1"로 다시 쓴다.
이렇게 하여 메모리 카드(300)의 데이터를 호스트 기기(200)로부터 다시 쓰기를 행하고 있다.
또한, 도 5 및 도 6에서 간단히 하기 위해 실제의 시간과는 다른 시간 폭으로 표현하고 있으나, 실제의 소거 비지(414) 및 기입 비지(407)의 시간은 수 ms(예 를 들면, 주식회사 히타치 제작소의 NH29W12811T의 데이터 시트에 의하면, 소거 비지 시간은 1ms, 기입 비지 시간은 2.5ms) 걸린다. 또, 기입 데이터(405)의 입력은 수백 ㎲(예를 들면, 마찬가지로 NH29W12811T의 데이터 시트로부터 산출되는 값은, 사이클 타임 120ns×2112바이트=253.44㎲) 걸려, 그 밖의 1㎲도 걸리지 않는 커맨드 입력이나 어드레스 입력에 비해 대단히 길다.
즉, 소거 비지(414)와, 기입 데이터(405)의 입력과, 기입 비지(407)의 합계 시간이 거의 다시 쓰기 시간과 같아진다.
이상과 같이, 종래의 메모리 카드(300)로 데이터를 다시쓰는 경우, 먼저 소거가 끝난 물리 블록(322)에 신 데이터의 기입을 행한 후, 이 기입에 의해 구 데이터가 된 물리 블록(322)의 소거를 행하고 있다. 이것은, 원래의 데이터의 물리 블록(322)을 소거한 후, 이 물리 블록(322)에 신 데이터의 기입을 행하면, 처리 중에 어떠한 이상이 발생한 경우에, 예를 들면 원래의 데이터가 소거가 끝난 상태로 신 데이터가 미기입 상태가 되어, 호스트 기기로부터 본 경우에 데이터 파괴가 발생한 것으로 되기 때문이다.
그러나, 종래의 메모리 카드(300)로 데이터를 다시 쓰는 경우, 소거가 끝난 물리 블록(322)에 신 데이터의 기입을 행한 단계에서 어떠한 이상이 발생하면, 예를 들면 신 데이터는 기입이 끝난 상태로, 구 데이터가 된 물리 블록(322)이 미소거의 상태가 되어, 호스트 기기로부터 본 경우에 데이터가 2중으로 존재하게 되는 등의 문제가 있다.
또, 상기 종래의 메모리 카드(300)로 데이터를 다시 쓰는 경우, 그 소거 실 행 중에는 컨트롤러(310)로부터 플래시 메모리(320)로 다음 커맨드를 입력할 수 없는 시간이 존재하므로, 다시 쓰기 시간이 길어지는 요인이 되고 있다.
또한, 메모리 카드(300)의 대용량화에 따라 어드레스 변환 테이블(313) 및 소거 블록 테이블(314)의 용량도 증가하기 때문에, 이들 테이블이 작성되는 컨트롤러(310)의 RAM도 대용량화하게 되어 있다.
그래서, 본 발명은 상기의 사정을 감안하여 이루어진 것으로, 데이터의 다시 쓰기 동작 중에 어떠한 이상이 발생하더라도 데이터의 정합성을 취할 수 있고, 또한 데이터의 다시 쓰기 시간을 단축할 수 있는 불휘발성 기억 장치 및 그 제어 방법을 제공하는 것을 목적으로 한다.
상기 목적을 달성하기 위해, 본 발명에 따른 불휘발성 기억 장치는, 데이터를 기억하는 다수의 페이지로 이루어지는 다수의 물리 블록을 갖는 불휘발성의 기억 수단과, 상기 기억 수단에 기억되는 데이터를 다시 쓸 때, 기입하는 신 데이터를 구 데이터가 기억되어 있는 물리 블록과는 별도의 소거가 끝난 물리 블록에 기입하는 제어 수단을 구비하고, 상기 제어 수단은, 상기 데이터를 다시 쓸 때, 무효인 물리 블록에 기억되어 있는 데이터를 소거한 후, 해당 물리 블록의 페이지에 상기 신 데이터를 기입하는 것을 특징으로 한다.
이에 의해, 데이터의 다시 쓰기 동작 중에 어떠한 이상이 발생하더라도 데이터의 정합성을 취할 수 있다.
여기서, 상기 기억 수단은, 상기 페이지의 하나 또는 상기 물리 블록의 하나 를 선택하여 지정하는 지정부와, 상기 페이지에 기입하는 데이터를 미리 유지해 두는 페이지 유지부를 구비하고, 상기 제어 수단은, 상기 데이터를 다시 쓸 때, 상기 지정부에 의해 상기 무효인 물리 블록을 지정하여 소거를 실행하는 동시에, 상기 소거 실행 중에, 기입을 행하는 상기 신 데이터를 상기 페이지 유지부로 전송하고, 소거 종료 후에, 해당 물리 블록에 상기 신 데이터를 기입하는 것이 바람직하다.
이 경우, 물리 블록의 소거 실행 중에, 기입을 행하는 신 데이터를 페이지 유지부로 전송하는 것이 가능하기 때문에, 기입 데이터 전송에 필요한 시간을 단축하여 기억 수단으로의 다시 쓰기를 행할 수 있다.
또, 상기 기억 수단은, 관리 영역 및 데이터 영역을 각각 갖는 다수의 기억 영역을 구비하고, 상기 관리 영역은, 해당 관리 영역이 속하는 상기 기억 영역에 대응하는, 논리 어드레스와 물리 어드레스를 변환하기 위한 어드레스 변환 테이블, 및 상기 물리 블록에 유효한 데이터가 기억되어 있는지 여부를 나타내는 유효 블록 테이블을 구비하고, 상기 제어 수단은, 또한 상기 어드레스 변환 테이블 및 상기 유효 블록 테이블을 유지하는 테이블 유지부를 구비해도 된다.
이에 의해, 제어 수단이 구비하는 테이블 유지부는, 전체 기억 영역에 대응하는 어드레스 변환 테이블 및 유효 블록 테이블을 유지할 필요가 없어, 테이블 유지부를 소용량으로 할 수 있다.
또한 본 발명은, 이러한 불휘발성 기억 장치로서 실현할 수가 있을 뿐만 아니라, 불휘발성 메모리, 제어 장치로서 각각 실현하거나, 또 이러한 불휘발성 기억 장치가 구비하는 특징적인 수단을 단계로 하는 불휘발성 기억 장치의 제어 방법으 로서 실현하거나, 그들 단계를 컴퓨터 장치에 실행시키는 프로그램으로서 실현하거나 할 수도 있다.
도 1은 종래의 불휘발성 기억 장치인 메모리 카드의 구성을 도시한 블록도,
도 2는 종래의 메모리 카드의 컨트롤러의 구성을 도시한 블록도,
도 3은 종래의 메모리 카드의 플래시 메모리의 구성을 도시한 블록도,
도 4는 종래의 메모리 카드의 어드레스 변환 테이블, 소거 블록 테이블, 및 플래시 메모리 내부의 데이터의 대응의 일례를 도시한 모식도,
도 5는 종래의 메모리 카드의 데이터를 다시 쓰는 경우의 기입 동작을 나타낸 타이밍 차트,
도 6은 종래의 메모리 카드의 데이터를 다시 쓰는 경우의 소거 동작을 나타낸 타이밍 차트,
도 7은 본 발명에 따른 불휘발성 기억 장치의 일 실시형태인 메모리 카드의 구성을 도시한 블록도,
도 8은 실시형태의 컨트롤러의 구성을 도시한 블록도,
도 9는 실시형태의 플래시 메모리의 구성을 도시한 블록도,
도 10은 실시형태의 플래시 메모리의 메모리 셀 어레이의 내부의 논리적인 구성의 일례를 도시한 모식도,
도 11은 실시형태의 어드레스 변환 테이블, 유효 블록 테이블, 및 플래시 메모리 내부의 데이터의 대응의 일례를 도시한 모식도,
도 12는 실시형태의 메모리 카드의 데이터를 다시 쓰는 경우의 컨트롤러에서의 동작을 도시한 흐름도,
도 13은 실시형태의 메모리 카드의 데이터를 다시 쓰는 경우의 동작을 나타낸 타이밍 차트이다.
(발명을 실시하기 위한 최선의 형태)
이하, 본 발명의 실시형태에 관해, 도면을 사용하여 설명한다.
도 7은 본 발명에 따른 불휘발성 기억 장치의 일 실시형태인 메모리 카드의 구성을 도시한 블록도이다.
메모리 카드(100)는, 예를 들면 PC나 디지털 카메라 등의 호스트 기기(200)에 접속되어 데이터를 기억하는 장치이며, 컨트롤러(110), 및 플래시 메모리(120)를 구비하고 있다. 호스트 기기(200)는, 카드 제어 신호 및 카드 데이터 신호를 사용하여 메모리 카드(100) 와의 데이터의 기입 및 독출을 행한다. 이 카드 제어 신호 및 카드 데이터 신호는, 호스트 기기(200)와 메모리 카드(100) 내부의 컨트롤러(110) 간에서 입출력된다.
한편, 컨트롤러(110)와 플래시 메모리(120) 간은, 메모리 제어 신호 및 메모리 데이터 신호에 의해, 컨트롤러(110)가 플래시 메모리(120)로의 데이터의 기입 및 독출을 행한다. 또한, 컨트롤러(110)에 접속되는 플래시 메모리(120)는, 1칩으로 한정되는 것이 아니라 다수 칩을 접속해도 상관없다.
도 8은 컨트롤러(110)의 구성을 도시한 블록도이다.
컨트롤러(110)는, MPU(111), 페이지 RAM(112), 어드레스 변환 테이블(113), 및 유효 블록 테이블(114)을 구비하고 있다.
MPU(111)는, 컨트롤러(110) 전체를 제어하는 동시에, 플래시 메모리(120)에 대한 데이터의 소거, 기입, 독출을 제어한다. 페이지 RAM(112)은, 호스트 기기(200)와 플래시 메모리(120) 간에서 데이터를 일시적으로 기억하기 위한 휘발성 메모리이다. 어드레스 변환 테이블(113)은, 플래시 메모리(120)에 기입된 데이터에 대해 호스트 기기(200)로부터 지정되는 어드레스와, 플래시 메모리(120)의 물리 어드레스를 변환하는 테이블이다. 유효 블록 테이블(114)는, 플래시 메모리(120)에 기입되어 있는 데이터가 유효인지 무효인지를 물리 어드레스 단위로 나타낸 테이블이다.
여기서, 무효인 물리 블록이란, 유효한 데이터가 쓰여있지 않다는 것을 의미하며, 그 물리 블록이 기입이 끝난 상태나 소거가 끝난 상태, 어느 쪽이든 가능하다. 또, 어드레스 변환 테이블(113) 및 유효 블록 테이블(114)의 정보는, 플래시 메모리(120)의 관리 영역에 기입되어 있으며, 전원 투입 직후, 또는 상황에 따라 적절하게 MPU(111)에 의해 플래시 메모리(120)로부터 읽어 내어져 어드레스 변환 테이블(113) 및 유효 블록 테이블(114)에 격납된다. 또, MPU(111)는, 어드레스 변환 테이블(113) 및 유효 블록 테이블(114)에 갱신이 있으면, 그것에 따라 플래시 메모리(120)의 관리 영역에 갱신하여 기입한다.
도 9는 플래시 메모리(120)의 구성을 도시한 블록도이다.
플래시 메모리(120)는, 페이지 레지스터(121), 메모리 셀 어레이(123), 로우 디코더(124), 및 커맨드 디코더(125)를 구비하고 있다.
메모리 셀 어레이(123)는, 플래시 메모리(120)의 1칩에 포함되는 모든 메모리 셀로 구성되어 있다. 이 메모리 셀은, 동시에 독출 또는 기입을 행할 수 있는 단위로 페이지를 구성한다. 또, 다수의 페이지로 소거 단위인 물리 블록(122)을 구성한다. 페이지 레지스터(121)는, 메모리 셀의 페이지와 같은 용량이고, 컨트롤러(110)로부터 입력되는 기입 데이터나 메모리 셀로부터 읽어 내어지는 독출 데이터를 유지한다.
로우 디코더(124)는, 데이터의 독출 및 기입시에는 컨트롤러(110)에 의해 지정된 페이지를 선택하고, 데이터의 소거시에는 컨트롤러(110)에 의해 지정되는 물리 블록(122)을 선택한다. 커맨드 디코더(125)는, 메모리 제어 신호에 의한 컨트롤러(110)로부터의 명령(커맨드)을 실행한다. 또, 커맨드 디코더(125)는, 데이터의 소거 중이라 해도 컨트롤러(110)로부터 플래시 메모리(120)로의 커맨드 입력을 허가하고, 커맨드 입력이 "기입 데이터", "기입 어드레스"의 순이더라도 동작하도록 제어한다.
도 10은 플래시 메모리(120)의 메모리 셀 어레이(123)의 내부의 논리적인 구성의 일례를 도시한 도면이다.
메모리 셀은, 어드레스순으로 다수의 영역으로 분할되고, 도 10에 도시한 예에서는 4개의 영역으로 분할되어, 각각의 영역에서 관리 영역과 데이터 영역을 갖고 있다. 컨트롤러(110)의 어드레스 변환 테이블(113) 및 유효 블록 테이블(114)은, 이 1개의 영역의 정보를 나타낸 테이블이다. 즉, 관리 영역에는, 각각의 관 리 영역이 소속하는 영역에 대응하는 어드레스 변환 테이블(113) 및 유효 블록 테이블(114)이 기입되어 있다.
도 11은 어드레스 변환 테이블(113), 유효 블록 테이블(114) 및 플래시 메모리(120) 내부의 데이터의 대응의 일례를 도시한 모식도이다.
어드레스 변환 테이블(113)의 어드레스 0의 데이터는, 논리 어드레스 0에 대응하는 물리 어드레스이고, 도 11(a)에 도시한 예에서는 데이터가 "0001"이기 때문에 논리 어드레스 0의 데이터가 플래시 메모리(120)의 물리 어드레스 1에 기입되어 있는 것을 나타낸다. 또, 논리 어드레스 1에 대응하는 물리 어드레스를 나타내는 "FFFF"는 무효값이고, 논리 어드레스 1의 데이터는 존재하지 않는 것을 나타낸다. 여기서, 무효값이란 무효를 의미하는 임의의 값이고, 예를 들면 고정값인 "0"이거나, 16비트 데이터이면 최대값인 "65535"이거나, 어드레스 변환의 룰로서 무효로 정해진 값을 말하는 것이다. 또, 어드레스 변환 테이블(113)의 어드레스 2의 데이터가 "0002"이기 때문에, 논리 어드레스 2의 데이터가 플래시 메모리(120)의 물리 어드레스 2에 기입되어 있는 것을 나타낸다.
한편, 유효 블록 테이블(114)은, 플래시 메모리(120)에 기입된 데이터의 상태를 나타내고 있다. 실제로는, 유효 블록 테이블(114)은, 플래시 메모리(120)의 물리 어드레스에 대응하는 값을 어드레스값으로 하고, 그 플래시 메모리(120)의 물리 어드레스에 기입된 데이터가 유효한 데이터인지 무효의 데이터인지를 데이터값으로서 갖는다. 예를 들면, 데이터가 유효일 때 값 0, 무효일 때 값 1을 취한다. 즉, 유효 블록 테이블(114)의 어드레스 0의 데이터는 플래시 메모리(120)의 물리 어드레스 0의 데이터의 유효/무효를 나타내고 있고, 도 11(a)에 나타낸 예에서는 데이터가 "1"이기 때문에 물리 어드레스 0의 데이터는 무효인 것을 나타내고 있다. 또, 마찬가지로 유효 블록 테이블(114)의 어드레스 1과 2의 데이터가 "0"이기 때문에, 플래시 메모리(120)의 물리 어드레스 1과 2의 데이터는 유효하다는 것을 나타내고 있다.
다음으로, 상기와 같이 구성된 메모리 카드(100)의 데이터를 호스트 기기(200)로부터 다시 쓰는 경우의 동작에 관해서 설명한다. 도 12는 이 경우의 컨트롤러(110)에서의 동작을 도시한 흐름도이고, 도 13은 마찬가지로 이 경우의 동작을 나타낸 타이밍 차트이다. 도 13의 타이밍 차트에서, 상단의 신호는 도 7에 나타낸 카드 제어 신호 및 카드 데이터 신호이며, 호스트 기기(200)로부터 메모리 카드(100)로의 입력을 나타낸다. 중단의 신호는 도 3에 도시한 메모리 제어 신호 및 메모리 데이터 신호이며, 컨트롤러(110)로부터 플래시 메모리(120)로의 입력을 나타낸다. 하단의 신호는 메모리 제어 신호이며, 플래시 메모리(120)로부터 컨트롤러(110)로의 출력을 나타낸다. 여기서, 도 11(a)에 나타낸 상태에 있어서, 메모리 카드(100)의 논리 어드레스 0의 데이터를 다시 쓰는 경우를 예로 들어 설명한다.
먼저, 호스트 기기(200)는, 시간(t321)에 카드 제어 신호로서 논리 어드레스 0에 대한 기입 커맨드(301)를 메모리 카드(100)로 보내고, 시간(t322)에 카드 데이터 신호로서 기입 데이터의 전송을 개시한다. 이 기입 데이터는, 메모리 카드(100)의 컨트롤러(110)의 페이지 RAM(112)에 격납된다.
컨트롤러(110)는, 호스트 기기(200)로부터 기입 커맨드(301)를 수취하면, 유효 블록 테이블(114)을 검색하여, 데이터의 기입을 행할 수 있는 무효인 데이터를 기억하는 물리 블록을 찾는다(단계 S101). 컨트롤러(110)는, 유효 블록 테이블(114)로부터 물리 어드레스 0이 무효인 데이터의 물리 블록(122)인 것을 검출하면, 시간(t322)에 물리 어드레스 0의 물리 블록(122)에 대한 소거 어드레스 지정 커맨드(303)를 플래시 메모리(120)로 보낸다. 이 소거 어드레스 지정 커맨드(303)는, 이후 소거 어드레스가 입력되는 것을 나타내고 있다. 커맨드 디코더(125)는, 소거 어드레스 지정 커맨드(303)를 디코드하여, 이후 입력되는 어드레스를 취득하도록 로우 디코더(124)를 제어한다.
이어서, 컨트롤러(110)는, 시간(t323)에 플래시 메모리(120)로 소거 어드레스 입력(304)을 보낸다. 로우 디코더(124)는, 입력된 소거 어드레스를 취득하여, 데이터의 소거를 행할 수 있도록 지정된 물리 블록(122)을 선택한다.
다음으로, 컨트롤러(110)는, 시간(t324)에 플래시 메모리(120)에 소거 실행 커맨드(305)를 보낸다(단계 S102).
이것을 받아 커맨드 디코더(125)는, 시간(t325)에 로우 디코더(124)가 선택하고 있는 물리 블록(122)의 소거를 개시한다. 동시에, 커맨드 디코더(125)는, 컨트롤러(110)에 대해 소거 중이라는 것을 나타내는 소거 비지(306)를 메모리 제어 신호로서 보낸다. 이 소거 비지(306)의 기간은, 로우 디코더(124)는 소거되는 물리 블록(122)의 선택 상태를 유지해 둘 필요가 있으므로, 로우 디코더(124)에 의한 선택이 필요해지는 물리 블록(122)에 대한 새로운 데이터의 독출, 기입, 및 소거는 실행할 수 없다.
컨트롤러(110)는, 호스트 기기(200)로부터의 데이터 전송이 종료하면, 플래시 메모리로부터 메모리 제어 신호로서 소거 비지(306)가 출력되어 있는지 여부에 관계 없이, 시간(t326)에 플래시 메모리(120)로 기입 데이터 입력 커맨드(307)를 보내고, 이후 기입 데이터가 입력되는 것을 플래시 메모리(120)에 지시한다. 커맨드 디코더(125)는, 기입 데이터 입력 커맨드(307)를 디코드하여, 이후 입력되는 기입 데이터를 취득하도록 페이지 레지스터(121)를 제어한다.
다음으로, 컨트롤러(110)는, 시간(t327)에 페이지 RAM(112)으로부터 플래시 메모리(120)로 기입 데이터(308)의 전송을 개시한다(단계 S103). 커맨드 디코더(125)는, 입력된 기입 데이터를 페이지 레지스터(121)에 격납한다. 이 때 전송되는 데이터는, 현재 소거를 행하고 있는 물리 블록(122)에 포함되는 페이지에 대한 기입 데이터이다. 또한, 이 때 플래시 메모리(120)는 소거 동작 중이지만, 페이지 레지스터(121)는 사용되고 있지 않기 때문에, 기입 데이터를 격납할 수 있다.
커맨드 디코더(125)는, 시간(t328)에 소거를 행하고 있었던 물리 블록(122)의 소거 동작이 종료하면 메모리 제어 신호의 소거 비지(306)를 해제한다. 이 이후 로우 디코더(124)는, 선택하는 물리 블록(122) 또는 페이지를 변경하는 것이 가능해진다.
컨트롤러(110)는, 페이지 RAM(112)으로부터 플래시 메모리(120)로의 기입 데이터의 전송이 종료하고, 또한 플래시 메모리(120)로부터의 소거 비지(306)가 해제 되면(단계 S104, S105), 시간(t328)에 페이지 레지스터(121)로 전송한 데이터의 기입 어드레스 지정 커맨드(309)를 보내고, 이후 기입 어드레스가 입력되는 것을 플래시 메모리(120)에 지시한다. 커맨드 디코더(125)는, 기입 어드레스 지정 커맨드(309)를 디코드하여, 이후 입력되는 어드레스를 취득하도록 로우 디코더(124)를 제어한다.
컨트롤러(110)는, 시간(t329)에 플래시 메모리(120)로 기입 어드레스(310)를 보낸다. 로우 디코더(124)는, 입력된 기입 어드레스를 취득하여, 데이터의 기입을 행할 수 있도록 지정된 페이지를 선택한다. 여기서, 지정되는 페이지는, 방금 전 데이터의 소거가 종료한 물리 블록에 포함되는 페이지이다.
다음으로, 컨트롤러(110)는, 시간(t330)에 기입 실행 커맨드(311)를 플래시 메모리(120)로 보낸다(단계 S106).
이것을 받아 커맨드 디코더(125)는, 시간(t331)에 로우 디코더(124)가 선택하고 있는 페이지의 메모리 셀에 대해, 페이지 레지스터(121)에 유지되어 있는 데이터의 기입을 개시한다. 동시에, 커맨드 디코더(125)는, 컨트롤러(110)에 대해 기입 중이라는 것을 나타내는 기입 비지(312)를 메모리 제어 신호로서 보낸다. 이 기입 비지(312)의 기간은, 로우 디코더(124)가 기입을 행하는 페이지를 선택하고 있으며, 소거 비지(306)의 기간과 동일하게 로우 디코더(124)에 의한 선택이 필요해지는 물리 블록(122)에 대한 새로운 데이터의 독출, 기입, 및 소거를 실행할 수 없다.
커맨드 디코더(125)는, 시간(t332)에 기입을 행하고 있었던 페이지의 기입 동작이 종료하면, 메모리 제어 신호의 기입 비지(312)를 해제한다.
이 후, 컨트롤러(110)는, 호스트 기기(200)로부터 전송되는 데이터를, 소거를 행한 물리 블록(122)의 나머지 페이지에 대해서도 상기와 동일하게 하여 기입을 행한다.
다음으로, 컨트롤러(110)의 MPU(111)는, 어드레스 변환 테이블(113) 및 유효 블록 테이블(114)의 갱신을 행한다(단계 S107). 도 11(b)는, 도 11(a)에 나타낸 상태로부터 논리 어드레스 0의 데이터가 다시 쓰여진 상태를 도시한 모식도이다.
즉, MPU(111)는, 어드레스 변환 테이블(113)로부터, 금회 다시 쓰기를 행한 논리 어드레스 0에 대응하는 데이터가 도 11(a)에 도시하는 바와 같이 "0001"이기 때문에, 대응하는 유효 블록 테이블(114)의 어드레스 1의 데이터를, 도 11(b)에 도시한 바와 같이 무효의 데이터를 의미하는 "1"로 다시 쓴다. 또, MPU(111)는, 어드레스 변환 테이블(113)의 어드레스 0의 값을, 도 11(b)에 도시하는 바와 같이 금회 기입을 행한 물리 블록(122)의 물리 어드레스를 나타내는 "0000"으로 다시 쓴다. 그리고, MPU(111)는, 유효 블록 테이블(114)의 어드레스 0의 데이터를, 도 11(b)에 도시한 바와 같이 유효한 데이터를 의미하는 "0"으로 다시 쓴다.
마지막으로 MPU(111)는, 이렇게 갱신한 어드레스 변환 테이블(113) 및 유효 블록 테이블(114)을, 플래시 메모리(120)의 관리 영역으로 갱신하여 기입한다.
이렇게 하여 메모리 카드(100)의 데이터를 호스트 기기(200)로부터 다시 쓰기를 행한다. 또한, 이 다시 쓰기에서, 다시 쓰여진 논리 어드레스 0의 구 데이터는 무효인 데이터로서 플래시 메모리(120)에 존재하고, 다음에 별도의 데이터의 다 시 쓰기에 따라 이 구 데이터를 기억하는 물리 블록(122)으로의 기입이 발생할 때까지는 소거되지 않는다.
이상과 같이, 메모리 카드(100)로 데이터를 다시 쓰는 경우, 먼저 무효인 데이터를 기억하는 물리 블록(122)의 소거를 행한 후, 이 소거를 행한 물리 블록(122)에 신 데이터의 기입을 행하고 있다. 이에 의해, 소거 비지(306) 중에 페이지 RAM(112)으로부터 플래시 메모리(120)의 페이지 레지스터(121)로 기입 데이터(308)를 전송하는 것이 가능하다. 따라서, 기입 데이터 전송에 필요한 시간을 단축하여 플래시 메모리(120)로의 다시 쓰기를 행할 수 있다.
또, 데이터의 다시 쓰기 동작 중에 어떠한 이상이 발생하더라도, 데이터의 정합성을 취할 수 있다.
또한, 상기와 같이 메모리 셀 어레이(123)를 논리적으로 다수의 영역으로 분할하고, 그 영역에 대응하는 어드레스 변환 테이블(113) 및 유효 블록 테이블(114)을 각각의 영역의 관리 영역에 기입하고 있기 때문에, 이들 테이블을 읽어들이는 컨트롤러(110)의 RAM인 어드레스 변환 테이블(113) 및 유효 블록 테이블(114)을 소용량으로 할 수 있다.
또한, 본 실시형태에서는, 컨트롤러(110)는, 호스트 기기(200)로부터의 데이터전송이 종료한 후 플래시 메모리(120)로 기입 데이터 입력 커맨드(307)를 보내고 있으나, 이것에 한정되는 것은 아니다. 예를 들면, 컨트롤러(110)는, 소거 실행 커맨드(305)보다 뒤에 호스트 기기(200)로부터의 데이터 전송이 종료하기 전에, 기입 데이터 입력 커맨드(307)를 보내어도 상관없다. 이 경우, 컨트롤러(110)는, 호 스트 기기(200)로부터의 데이터 전송이 종료한 후 페이지 RAM(112)으로부터 플래시 메모리(120)로 기입 데이터(308)의 전송을 행한다.
또, 본 실시형태에서는, "기입 데이터", "기입 어드레스"의 순으로 입력해도 동작하도록 커맨드 디코더(125)로 제어하는 방법으로 설명하고 있으나, 이것에 한정되는 것은 아니다. 예를 들면, 플래시 메모리(120)에 신규로 어드레스 레지스터를 설치하고, 소거 비지(306) 중에 입력되는 기입 어드레스를 어드레스 레지스터에 유지해 두고, 기입 실행 전에 어드레스 레지스터로부터 로우 디코더(124)로 기입 어드레스를 옮김으로써, "기입 어드레스", "기입 데이터"의 순으로 입력하는 것도 가능하다.
이상의 설명으로부터 알 수 있듯이, 본 발명에 따른 불휘발성 기억 장치에 의하면, 기억 수단에 기억되는 데이터를 다시 쓸 때, 기입하는 신 데이터를, 구 데이터가 기억되어 있는 물리 블록과는 별도의 무효인 물리 블록에 기억되어 있는 데이터를 소거한 후, 소거한 물리 블록의 페이지에 신 데이터를 기입하고 있기 때문에, 데이터의 다시 쓰기 동작 중에 어떠한 이상이 발생하더라도, 데이터의 정합성을 취할 수 있다.
또, 물리 블록의 소거를 행하고 있는 시간에, 병행하여 다음에 실행하는 기입 데이터를 기억 수단으로 전송함으로써, 데이터의 다시 쓰기에 걸리는 시간을 단축할 수 있다. 이에 의해, 불휘발성 기록 장치의 편리성이 향상하여, 사용자의 편리성을보다 향상시킬 수 있다.
따라서, 본 발명에 의해, 불휘발성 기록 장치의 편리성이 향상하여, 불휘발 성 기억 장치를 사용하는 휴대기기가 보급되어 온 오늘날에서의 실용적 가치는 대단히 높다.
이상과 같이, 본 발명에 따른 불휘발성 기억 장치는, 음악 데이터나 영상 데이터를 취급하는, 예를 들면 디지털 카메라나 휴대전화 등의 휴대기기의 데이터를 기억하는 기억 장치로서 사용하기에 적합하다.

Claims (11)

  1. 데이터를 기억하는 다수의 페이지로 이루어지는 다수의 물리 블록을 갖는 불휘발성의 기억 수단; 및
    상기 기억 수단에 기억되는 데이터를 다시 쓸 때, 기입하는 신 데이터를 구 데이터가 기억되어 있는 물리 블록과는 별도의 소거가 끝난 물리 블록에 기입하는 제어 수단을 구비하고,
    상기 제어 수단은, 상기 데이터를 다시 쓸 때, 무효인 물리 블록에 기억되어 있는 데이터를 소거한 후, 상기 물리 블록의 페이지에 상기 신 데이터를 기입하는 것을 특징으로 하는 불휘발성 기억 장치.
  2. 제1항에 있어서, 상기 기억 수단은, 상기 페이지의 하나 또는 상기 물리 블록의 하나를 선택하여 지정하는 지정부; 및
    상기 페이지에 기입하는 데이터를 미리 유지해 두는 페이지 유지부를 구비하고,
    상기 제어 수단은, 상기 데이터를 다시 쓸 때, 상기 지정부에 의해 상기 무효인 물리 블록을 지정하여 소거를 실행하는 동시에, 상기 소거 실행 중에, 기입을 행하는 상기 신 데이터를 상기 페이지 유지부로 전송하고, 소거 종료 후에, 상기 물리 블록에 상기 신 데이터를 기입하는 것을 특징으로 하는 불휘발성 기억 장치.
  3. 제2항에 있어서, 상기 제어 수단은, 상기 데이터를 기입할 때, 기입을 행하는 상기 신 데이터를 상기 페이지 유지부로 전송한 후, 상기 신 데이터를 기입하는 페이지를 지정하기 위한 어드레스를 상기 지정부로 전송하고, 상기 지정부에 의해 선택된 상기 페이지에 상기 신 데이터를 기입하는 것을 특징으로 하는 불휘발성 기억 장치.
  4. 제1항에 있어서, 상기 기억 수단은, 관리 영역 및 데이터 영역을 각각 갖는 다수의 기억 영역을 구비하고,
    상기 관리 영역은, 상기 관리 영역이 속하는 상기 기억 영역에 대응하는, 논리 어드레스와 물리 어드레스를 변환하기 위한 어드레스 변환 테이블, 및 상기 물리 블록에 유효한 데이터가 기억되어 있는지 여부를 나타내는 유효 블록 테이블을 구비하고,
    상기 제어 수단은, 상기 어드레스 변환 테이블 및 상기 유효 블록 테이블을 유지하는 테이블 유지부를 더 구비하는 것을 특징으로 하는 불휘발성 기억 장치.
  5. 제4항에 있어서, 상기 제어 수단은, 각각의 상기 기억 영역에 대응하는 상기 어드레스 변환 테이블 및 상기 유효 블록 테이블을 상기 기억 수단으로부터 읽어 내어 상기 테이블 유지부에 유지하는 동시에,
    상기 데이터를 다시 쓸 때, 상기 유효 블록 테이블을 참조하여 무효인 물리 블록을 특정하고, 상기 데이터의 다시 쓰기가 종료하면, 상기 어드레스 변환 테이블 및 상기 유효 블록 테이블을, 상기 데이터의 다시 쓰기를 반영시켜 갱신하고,
    갱신한 상기 어드레스 변환 테이블 및 상기 유효 블록 테이블을 각각 대응하는 상기 관리 영역에 기입하는 것을 특징으로 하는 불휘발성 기억 장치.
  6. 데이터를 기억하는 불휘발성의 다수의 페이지로 이루어지는 다수의 물리 블록;
    상기 페이지의 하나 또는 상기 물리 블록의 하나를 선택하여 지정하는 지정 수단; 및
    상기 페이지에 기입하는 데이터를 미리 유지해 두는 페이지 유지 수단을 구비하고,
    상기 페이지 유지 수단은, 상기 지정 수단이 지정한 상기 물리 블록의 소거 실행 중에, 상기 페이지에 기입하는 데이터의 전송을 받는 것을 특징으로 하는 불휘발성 메모리.
  7. 데이터를 기억하는 불휘발성의 다수의 페이지로 이루어지는 다수의 물리 블록을 갖는 불휘발성 메모리의 제어를 행하는 제어 장치에 있어서,
    상기 기억 장치에 기억되는 데이터를 다시 쓸 때, 기입하는 신 데이터를 구 데이터가 기억되어 있는 물리 블록과는 별도의 소거가 끝난 물리 블록에 기입하는 제어 수단을 구비하고,
    상기 제어 수단은, 상기 데이터를 다시 쓸 때, 무효인 물리 블록에 기억되어 있는 데이터를 소거한 후, 상기 물리 블록의 페이지에 상기 신 데이터를 기입하는 것을 특징으로 하는 제어 장치.
  8. 제7항에 있어서, 상기 제어 장치는, 논리 어드레스와 물리 어드레스를 변환하기 위한 어드레스 변환 테이블, 및 상기 물리 블록에 유효한 데이터가 기억되어 있는지 여부를 나타내는 유효 블록 테이블을 유지하는 테이블 유지 수단을 더 구비하고,
    상기 제어 수단은, 상기 데이터를 다시 쓸 때, 상기 유효 블록 테이블을 참조하여 무효인 물리 블록을 특정하고, 상기 데이터의 다시 쓰기가 종료하면, 상기 어드레스 변환 테이블 및 상기 유효 블록 테이블을, 상기 데이터의 다시 쓰기를 반영시켜 갱신하는 것을 특징으로 하는 제어 장치.
  9. 데이터를 기억하는 다수의 페이지로 이루어지는 다수의 물리 블록을 갖는 불휘발성의 기억 수단에 기억되는 데이터를 다시 쓸 때, 기입하는 신 데이터를 구 데이터가 기억되어 있는 물리 블록과는 별도의 소거가 끝난 물리 블록에 기입하는 제어 단계를 포함하고,
    상기 제어 단계에서는, 상기 데이터를 다시 쓸 때, 무효인 물리 블록에 기억되어 있는 데이터를 소거한 후, 상기 물리 블록의 페이지에 상기 신 데이터를 기입하는 것을 특징으로 하는 불휘발성 기억 장치의 제어 방법.
  10. 제9항에 있어서, 상기 불휘발성 기억 장치의 제어방법은, 논리 어드레스와 물리 어드레스를 변환하기 위한 어드레스 변환 테이블, 및 상기 물리 블록에 유효한 데이터가 기억되어 있는지 여부를 나타내는 유효 블록 테이블을 유지하는 테이블 유지 단계를 더 포함하고,
    상기 제어 단계는,
    상기 데이터를 다시 쓸 때, 상기 유효 블록 테이블을 참조하여 무효인 물리 블록을 특정하는 특정 단계; 및
    상기 데이터의 다시 쓰기가 종료하면, 상기 어드레스 변환 테이블 및 상기 유효 블록 테이블을, 상기 데이터의 다시 쓰기를 반영시켜 갱신하는 갱신 단계를 포함하는 것을 특징으로 하는 불휘발성 기억 장치의 제어 방법.
  11. 데이터를 기억하는 불휘발성의 다수의 페이지로 이루어지는 다수의 물리 블록을 갖는 불휘발성 메모리에 기억되는 데이터를 다시 쓰기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체에 있어서, 상기 프로그램은,
    기입하는 신 데이터를 구 데이터가 기억되어 있는 물리 블록과는 별도의 소거가 끝난 물리 블록에 기입하는 제어 단계를 컴퓨터에 실행시키고,
    상기 제어 단계에서는, 상기 데이터를 다시 쓸 때, 무효인 물리 블록에 기억되어 있는 데이터를 소거한 후, 상기 물리 블록의 페이지에 상기 신 데이터를 기입하는 것을 특징으로 하는 컴퓨터로 판독 가능한 기록 매체.
KR1020037012161A 2002-02-08 2003-02-07 불휘발성 기억 장치, 그 제어 방법, 및 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체 KR100921282B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JPJP-P-2002-00032081 2002-02-08
JP2002032081A JP2003233993A (ja) 2002-02-08 2002-02-08 不揮発性記憶装置の書き換え方法
PCT/JP2003/001289 WO2003067605A1 (fr) 2002-02-08 2003-02-07 Dispositif a memoire non volatile et son procede de commande

Publications (2)

Publication Number Publication Date
KR20040086500A KR20040086500A (ko) 2004-10-11
KR100921282B1 true KR100921282B1 (ko) 2009-10-09

Family

ID=27677954

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037012161A KR100921282B1 (ko) 2002-02-08 2003-02-07 불휘발성 기억 장치, 그 제어 방법, 및 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체

Country Status (8)

Country Link
US (1) US6944060B2 (ko)
EP (1) EP1473737A4 (ko)
JP (1) JP2003233993A (ko)
KR (1) KR100921282B1 (ko)
CN (1) CN100428363C (ko)
CA (1) CA2474739A1 (ko)
TW (1) TWI271622B (ko)
WO (1) WO2003067605A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9529705B2 (en) 2014-05-12 2016-12-27 Samsung Electronics Co., Ltd. Nonvolatile memory system including nonvolatile memory device and memory controller that loads a mapping table on a sub-bitmap and method of operating the memory controller

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050204115A1 (en) * 2004-01-30 2005-09-15 Kiminori Matsuno Semiconductor memory device, memory controller and data recording method
JP4097649B2 (ja) * 2004-12-09 2008-06-11 ファナック株式会社 数値制御装置
KR100876084B1 (ko) 2007-02-13 2008-12-26 삼성전자주식회사 플래시 저장 장치로 삭제 정보를 전달할 수 있는 컴퓨팅시스템
US7206230B2 (en) 2005-04-01 2007-04-17 Sandisk Corporation Use of data latches in cache operations of non-volatile memories
KR100642892B1 (ko) 2005-07-19 2006-11-03 주식회사 하이닉스반도체 면적이 감소된 페이지 버퍼 회로와 그 독출 및 프로그램동작 방법
JP4751163B2 (ja) 2005-09-29 2011-08-17 株式会社東芝 メモリシステム
CN100407336C (zh) * 2005-11-22 2008-07-30 武汉国光通信有限公司 一种嵌入式系统中非易失性存储器的数据存取方法
WO2007072367A2 (en) * 2005-12-21 2007-06-28 Nxp B.V. Memory with block-erasable locations
TWI427637B (zh) * 2006-05-05 2014-02-21 Sandisk Technologies Inc 在程式執行期間具有背景資料鎖存快取的非揮發性記憶體及方法
WO2007131059A2 (en) * 2006-05-05 2007-11-15 Sandisk Corporation Non-volatile memory with background data latch caching during erase operations and methods therefor
WO2007130976A2 (en) * 2006-05-05 2007-11-15 Sandisk Corporation Non-volatile memory with background data latch caching during program operations and methods therefor
KR100754226B1 (ko) * 2006-08-22 2007-09-03 삼성전자주식회사 비휘발성 데이터 저장장치의 프로그래밍 방법 및 그 장치
US7814263B2 (en) * 2006-10-26 2010-10-12 Sandisk Il Ltd. Erase history-based flash writing method
CN101571832B (zh) * 2008-04-29 2013-07-17 群联电子股份有限公司 数据写入方法及使用该方法的快闪存储系统与其控制器
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
KR101466585B1 (ko) 2008-07-10 2014-11-28 삼성전자주식회사 메모리 장치 및 메모리 장치의 관리 방법
JP2010129106A (ja) * 2008-11-25 2010-06-10 Samsung Electronics Co Ltd 不揮発性半導体記憶装置
CN101446929A (zh) * 2008-12-01 2009-06-03 成都市华为赛门铁克科技有限公司 存储设备操作的方法、控制器及通信系统
JP4551958B2 (ja) * 2008-12-22 2010-09-29 株式会社東芝 半導体記憶装置および半導体記憶装置の制御方法
CN101782877B (zh) * 2009-01-16 2012-07-04 慧帝科技(深圳)有限公司 控制周边装置的控制装置、非挥发性储存元件及相关方法
KR20100115583A (ko) * 2009-04-20 2010-10-28 삼성전자주식회사 데이터 저장 시스템
EP2306416A1 (en) 2009-09-25 2011-04-06 Incard SA Improved method for pre-personalizing an IC Card
CN102541777B (zh) * 2010-12-13 2015-08-19 深圳市硅格半导体有限公司 基于DMA映射的Flash数据传输控制方法及装置
CN103680610A (zh) * 2012-09-03 2014-03-26 北京兆易创新科技股份有限公司 差分存储NAND Flash存储器写操作的方法及装置
KR101932920B1 (ko) 2012-09-14 2019-03-18 삼성전자 주식회사 비휘발성 메모리 카드를 제어하는 호스트, 이를 포함하는 시스템 및 이의 동작 방법
TWI539282B (zh) 2014-10-13 2016-06-21 慧榮科技股份有限公司 非揮發性儲存裝置與控制器
US10854299B2 (en) * 2018-05-31 2020-12-01 Micron Technology, Inc. Data erase operations for a memory system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH113287A (ja) * 1997-06-12 1999-01-06 Hitachi Ltd 記憶装置およびそれに用いられる記憶領域管理方法
JP2000020252A (ja) * 1998-06-29 2000-01-21 Hitachi Ltd 不揮発性半導体メモリを用いた記憶装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3105092B2 (ja) * 1992-10-06 2000-10-30 株式会社東芝 半導体メモリ装置
US6078520A (en) * 1993-04-08 2000-06-20 Hitachi, Ltd. Flash memory control method and information processing system therewith
JPH07219720A (ja) * 1993-10-01 1995-08-18 Hitachi Maxell Ltd 半導体メモリ装置ならびにその制御方法
JPH07153284A (ja) * 1993-11-29 1995-06-16 Nec Corp 不揮発性半導体記憶装置及びその制御方法
US5438549A (en) * 1994-02-28 1995-08-01 Intel Corporation Nonvolatile memory with volatile memory buffer and a backup power supply system
US6418506B1 (en) * 1996-12-31 2002-07-09 Intel Corporation Integrated circuit memory and method for transferring data using a volatile memory to buffer data for a nonvolatile memory array
JPH113270A (ja) * 1997-06-10 1999-01-06 Hitachi Ltd フラッシュメモリ装置およびフラッシュメモリへのデータ書き込み方法
JP3550293B2 (ja) 1997-12-26 2004-08-04 株式会社ルネサステクノロジ 不揮発性メモリを用いた高速書換可能な記憶装置および該記憶装置のデータ書換方法
MY122279A (en) * 1999-03-03 2006-04-29 Sony Corp Nonvolatile memory and nonvolatile memory reproducing apparatus
WO2001008015A1 (fr) * 1999-07-28 2001-02-01 Sony Corporation Systeme d'enregistrement, dispositif d'enregistrement de donnees, dispositif a memoire et procede d'enregistrement de donnees
US6678203B1 (en) * 1999-08-27 2004-01-13 Sony Corporation Editing apparatus, editing method, and non-volatile memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH113287A (ja) * 1997-06-12 1999-01-06 Hitachi Ltd 記憶装置およびそれに用いられる記憶領域管理方法
JP2000020252A (ja) * 1998-06-29 2000-01-21 Hitachi Ltd 不揮発性半導体メモリを用いた記憶装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9529705B2 (en) 2014-05-12 2016-12-27 Samsung Electronics Co., Ltd. Nonvolatile memory system including nonvolatile memory device and memory controller that loads a mapping table on a sub-bitmap and method of operating the memory controller

Also Published As

Publication number Publication date
EP1473737A1 (en) 2004-11-03
TW200303462A (en) 2003-09-01
JP2003233993A (ja) 2003-08-22
KR20040086500A (ko) 2004-10-11
WO2003067605A1 (fr) 2003-08-14
EP1473737A4 (en) 2006-07-19
CN100428363C (zh) 2008-10-22
TWI271622B (en) 2007-01-21
US20040246779A1 (en) 2004-12-09
US6944060B2 (en) 2005-09-13
CA2474739A1 (en) 2003-08-14
CN1498409A (zh) 2004-05-19

Similar Documents

Publication Publication Date Title
KR100921282B1 (ko) 불휘발성 기억 장치, 그 제어 방법, 및 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체
JP3229345B2 (ja) 不揮発性icメモリ
EP0712067B1 (en) Flash disk card
EP1729304B1 (en) Space management for managing high capacity nonvolatile memory
US6556504B2 (en) Nonvolatile semiconductor memory device and data input/output control method thereof
JP4132086B2 (ja) フラッシュメモリ内のブロックにおける移動セクタ
US6034897A (en) Space management for managing high capacity nonvolatile memory
US20020156988A1 (en) Memory device
JP4034971B2 (ja) メモリコントローラおよびメモリシステム装置
JP2004327021A (ja) パーシャルコピーバック動作モードを有するフラッシュメモリ装置
JPH10326493A (ja) 複合化フラッシュメモリ装置
US6906960B2 (en) Semiconductor memory device
JP4308780B2 (ja) 半導体メモリ装置、メモリコントローラ及びデータ記録方法
JP4289026B2 (ja) 半導体記憶装置
JPH07153284A (ja) 不揮発性半導体記憶装置及びその制御方法
JPS58208994A (ja) 不揮発性半導体記憶装置
JP2005135544A (ja) 半導体記録媒体及び半導体記録媒体のデータ消去方法
JPH08273390A (ja) フラッシュメモリの消去回数の管理方法
JP2011108161A (ja) 情報処理装置
KR100490603B1 (ko) 플래시 메모리 동작 제어 방법 및 장치
JP2008021335A (ja) 不揮発性記憶装置、不揮発性記憶装置の書込み方法およびコントローラ
JP2005266888A (ja) 不揮発性記憶装置の初期化方法
KR20000055939A (ko) 플래시 메모리의 라이트장치 및 방법
JPH1173784A (ja) 半導体記憶装置及び該装置のデータ読出し方法
JPH07334992A (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: 20120924

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130924

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140923

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150917

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160922

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180328

Year of fee payment: 14