KR100595909B1 - 저장장치 및 플래시 메모리 장치내 정보 액세스 방법 및 정보 저장 관리 방법 - Google Patents
저장장치 및 플래시 메모리 장치내 정보 액세스 방법 및 정보 저장 관리 방법 Download PDFInfo
- Publication number
- KR100595909B1 KR100595909B1 KR1019997008898A KR19997008898A KR100595909B1 KR 100595909 B1 KR100595909 B1 KR 100595909B1 KR 1019997008898 A KR1019997008898 A KR 1019997008898A KR 19997008898 A KR19997008898 A KR 19997008898A KR 100595909 B1 KR100595909 B1 KR 100595909B1
- Authority
- KR
- South Korea
- Prior art keywords
- block
- lba
- pba
- location
- stored
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/76—Masking faults in memories by using spares or by reconfiguring using address translation or modifications
- G11C29/765—Masking faults in memories by using spares or by reconfiguring using address translation or modifications in solid state disks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/102—External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/78—Masking faults in memories by using spares or by reconfiguring using programmable devices
- G11C29/80—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
- G11C29/816—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout
- G11C29/82—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout for EEPROMs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7209—Validity control, e.g. using flags, time stamps or sequence numbers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Memory System (AREA)
Abstract
호스트에 의해 액세스되는 블록을 식별하는 논리 블록 어드레스를, 비휘발성 메모리의 비어있는 영역을 식별하는 물리 블록 어드레스에 맵핑하는 맵핑정보를 저장하는 장치(700)가 개시되며, 상기 블록은 선택적으로 소거될 수 있으며 개별적으로 이동될 수 있는 하나 이상의 섹터를 갖는다. 맵핑정보는 블록이 저장되는 비휘발성 메모리 내에서 "원(original)" 위치를 식별하는 가상 물리 블록 어드레스(702)와, 저장된 블럭의 하나 이상의 섹터가 이동되는 비휘발성 메모리 내에 "이동된" 위치를 식별하는 이동된 가상 물리 블록 어드레스(704)를 포함한다. 맵핑정보는 "원" 물리 블록 어드레스와 "이동된" 물리 블록 어드레스를 사용하고, 액세스되는 블록 내의 "이동된" 섹터에 관한 정보(714)를 제공하는 상태정보(706, 712)를 더 포함한다.
호스트, 논리 블록 어드레스, 물리 블록 어드레스, 가상 PBA, 이동 가상 PBA, 플래그 수단, 섹터 이동 상태 필드, 섹터 이동 상태 위치
Description
관련 출원의 상호 참조
본 출원은 발명의 명칭이 "직접 논리 블록 어드레싱 플래시 메모리 대용량 저장 구조(Direct Logical Block Addressing Flash Memory Mass Storage Architecture)"인 1995년 7월 31일 출원된 동일 출원인의 선출원, 미국 특허출원 제 08/509, 706 호의 부분적인 연속 출원(continuation-in-part)이다.
본 발명의 분야
본 발명은 컴퓨터용 대량 저장 분야에 관한 것이다. 특히, 이 발명은 하드 디스크를 반도체 비휘발성 메모리, 특히 플래시 메모리로 대치하는 구조에 관한 것이다.
본 출원은 발명의 명칭이 "직접 논리 블록 어드레싱 플래시 메모리 대용량 저장 구조(Direct Logical Block Addressing Flash Memory Mass Storage Architecture)"인 1995년 7월 31일 출원된 동일 출원인의 선출원, 미국 특허출원 제 08/509, 706 호의 부분적인 연속 출원(continuation-in-part)이다.
본 발명의 분야
본 발명은 컴퓨터용 대량 저장 분야에 관한 것이다. 특히, 이 발명은 하드 디스크를 반도체 비휘발성 메모리, 특히 플래시 메모리로 대치하는 구조에 관한 것이다.
종래의 컴퓨터는 문서, 데이터, 프로그램 및 정보의 대량 저장을 위해 회전하는 자기 매체를 사용한다. 광범위하게 사용되고 일반적으로 받아들여지고 있지만, 이러한 하드 디스크 드라이브는 다양한 결함을 겪고 있다. 디스크의 회전 때문에, 하드 디스크 드라이브로부터 정보를 추출할 때 본질적인 대기시간(latency)이 있다.
다른 문제들은 특히 휴대용 컴퓨터에서 극적이다. 특히, 하드 디스크는 휴대용 컴퓨터가 받을 수 있을 많은 유형의 물리적인 충격에 견딜 수 없다. 더욱이, 디스크를 회전시키는 모터는 휴대용 컴퓨터의 전지 수명을 감소시키는 현저한 양의 전력을 소비한다.
고체상태 메모리는 앞에 언급한 문제를 해결할 수 있기 때문에 대량 저장용으로 하드 디스크 드라이브를 대치하는 이상적인 선택이 된다. 하드 디스크 드라이브를 반도체 메모리로 대치하는 가능성 있는 해결책이 제안되었다. 이러한 시스템이 유용하려면 메모리는 비휘발성이어야 하며 변경할 수 있어야 한다. 발명자는 플래시(FLASH) 메모리가 이러한 대치에 바람직한 것으로 결정하였다.
플래시 메모리는 핫 전자(hot electron), 소스주입(source injection), 혹은 터널링(tunneling)을 통해 프로그램할 수 있고, 파울러-노드하임 터널링을 통해 소거할 수 있는 트랜지스터 메모리 셀이다. 이러한 셀의 프로그래밍 및 소거에 있어서는 플로팅 게이트 전극을 둘러싸고 있는 유전체를 전류가 통과할 필요가 있다. 이 때문에, 이러한 유형의 메모리는 소거-기록 사이클 횟수가 유한하다. 결국에는, 유전체가 나빠진다. 플래시 셀 소자 제조업자는 소거-기록 사이클 회수에 대한 한계를 100,000 내지 1,000,000로 명시하고 있다.
반도체 대량 저장장치가 성공적으로 될 한가지 요건은 회전 자기 하드 디스크 대량 저장장치를 대신한 반도체 대량 저장장치 사용이 설계자 및 이러한 장치를 사용하는 시스템의 사용자에게 손쉬워야 한다는 것이다. 즉, 설계자 혹은 이러한 반도체 대량 저장장치를 탑재한 컴퓨터 사용자는 하드 디스크를 제거하고 이를 반도체 대량 저장장치로 간단하게 대치할 수 있어야 한다. 모든 현재 이용가능한 상용 소프트웨어는 어떠한 수정도 할 필요없이 이러한 반도체 대량 저장장치를 채용한 시스템 상에서 동작할 수 있어야 한다.
산디스크(SanDisk)는 1991년 7월 9일, 실리콘 밸리 PC 설계 회의에서 플래시 메모리를 사용한 반도체 대량 저장용 구조를 제안하였다. 이 대량 저장 시스템은 상용 하드 디스크 섹터 크기에 부합되게 하기 위해서 512바이트의 판독-기록 블록크기를 포함하였다.
초기 설계는 기록전 소거 구조(erase-before-write architecture)를 사용하였다. 이 과정에서, 매체 상의 파일을 갱신하기 위해서, 매체 상의 물리적인 위치가 사전에 프로그램되어 있다면, 새로운 데이터가 재프로그램될 수 있기 전에 이를 소거해야 한다.
이 과정이 전체 시스템 스루풋을 주로 악화시킨다. 호스트가 저장 매체에 새로운 데이터 파일을 기록할 때, 호스트는 이 데이터 파일에 관련된 주변 저장장치에 논리 블록 어드레스를 제공한다. 이어서 저장장치는 이 주어진 논리 블록 어드레스를 매체 상의 실제 물리 블록 어드레스로 변환하고 기록 동작을 수행한다. 자기 하드 디스크 드라이브에서, 새로운 데이터는 매체에 어떠한 수정도 없이 이전 데이터 위에 기록될 수 있다. 그러므로, 제어기에 의해 일단 물리 블록 어드레스가 주어진 논리 블록 어드레스로부터 계산되면, 간단히 데이터 파일을 그 위치에 기록할 것이다. 고체상태 저장장치에서, 계산된 물리 블록 어드레스에 관련된 위치가 사전에 프로그램되었다면, 이 블록이 새로운 데이터로 재프로그램될 수 있기 전에, 그 블록은 소거되어야 한다. 한 종래의 기술에서, 기록전 소거 구조에서 호스트에 의해 주어진 논리 블록 어드레스간 상호관계는 매체 상의 물리 블록 어드레스와의 일 대 일 맵핑이다. 이 방법은 많은 결함을 갖고 있다. 먼저, 변경된 정보를 재프로그램하기 전에 소거 동작에 기인하여 수행에 지연이 유발된다. 고체상태 플래시에서 소거는 매우 느린 과정이다.
두 번째로, 하드 디스크 사용자는 통상 2가지 유형의 정보로서, 하나는 드물게 수정되는 정보와 또 다른 하나는 빈번하게 변경되는 정보를 저장한다. 예를 들면, 사용자의 시스템 상에 저장된 상용 스프레드 시트나 워드 프로세싱 소프트웨어 프로그램은, 있다고 해도, 드물게 변경된다. 따라서, 통상 하드 디스크의 서로 다른 섹터들은 이에 저장된 정보가 변경되는 횟수 면에서 볼 때 극적으로 서로 다른 사용량을 갖는다. 이러한 불균형은 데이터 변경에 민감하지 않아 하드 디스크에는 영향을 미치지 않으나, 플래시 메모리 장치에서, 이러한 불일치(variance)로 대량 저장장치의 일부가 마멸될 수 있고 대량 저장장치의 다른 부분보다 현저하게 곧 사용할 수 없게 될 수 있다.
또 다른 구조에서, 본 발명자는 논리 블록 어드레스를 물리 블록 어드레스에 상관시키는 테이블을 저장하는 해결책을 제안한 바 있다. 이러한 해결책에 관련된 발명은 1993년 3월 26일 출원된 미국특허 출원번호 08/038,668, 현재는 미국 특허 제 5,288,083호와 1993년 3월 26일에 출원된 미국특허 출원번호 08/037,893호, 현재는 미국 특허 제 5,479,638호에 개시되어 있고 이를 참조로 여기 포함시킨다.
본 발명자의 이전의 해결책은 반도체 대량 저장장치용의 2개의 주요 알고리즘 및 관련 하드웨어 구조를 개시하였다. 이 특허문헌에서 "데이터 파일"은 상용 소프트웨어, 사용자 프로그램, 워드 프로세싱 소프트웨어 문서, 스프레드 시트 파일 등을 포함하는 임의의 컴퓨터 파일을 말함을 알 것이다. 이전의 해결책에서 제1 알고리즘은 수정된 데이터 파일을 대량 저장장치에 기록할 때 소거 동작을 회피하는 수단을 제공한다. 대신에, 어떠한 소거도 수행되지 않으며 수정된 데이터 파일은 대량 저장장치의 빈 부분에 기록된다.
반도체 대량 저장장치 구조는 상용 하드 디스크 크기에 따른 크기의 블록을 갖는다. 블록은 개별적으로 소거될 수 있다. 일 실시예에서, 반도체 대량 저장장치는 사용자에 영향을 주지 않고 회전 하드 디스크를 대신할 수 있으므로, 이러한 대치는 손쉬울 것이다. 대량 저장장치 내에 저장된 정보가 변경될 때마다 기록전 소거 사이클을 회피하기 위한 수단이 제공된다.
제1 알고리즘에 따라, 소거 사이클은 변경된 데이터 파일을 비어 있는 블록에 프로그래밍함으로써 회피된다. 이것은 통상은 종래의 대량 저장장치를 사용할 때는 가능하지 않을 것이며, 그 이유는 종래의 컴퓨터 시스템에서 사용할 수 있는 중앙 프로세서 및 상용 소프트웨어는 데이터 파일의 연속하여 변경되는 물리위치를 추적하도록 구성되어 있지 않기 때문이다. 이전의 해결책은 갱신된 정보 파일의 논리 어드레스와 물리 어드레스간 상호관계를 유지하기 위해 프로그램가능한 맵을 포함한다.
모든 플래그들과, 논리 블록 어드레스를 물리 블록 어드레스에 관계시키는 테이블은 CAM 셀 어레이 내에 유지된다. CAM 셀을 사용함으로써, 일반적으로 하나 또는 2개의 클럭 사이클 내에, 대량 저장장치 내에 원하는 물리 어드레스를 매우 빠르게 결정할 수 있다. 불행하게도, 잘 알려진 바와 같이, CAM 셀은 복수의 트랜지스터, 통상 6개를 필요로 한다. 따라서, 테이블 및 플래그용으로 CAM 저장장치를 사용하는 특정한 크기의 메모리를 위해 만들어진 집적회로는 저장하기만 하는 다른 수단을 사용하는 회로보다 현저하게 클 필요가 있을 것이다.
본 발명자는 이 문제에 대한 또 다른 해결책을 제안하였으며 이는 1993년 10월 4일에 출원된 미국특허 출원번호 08/131,495, 현재는 미국 특허 제 5,485,595호에 개시되어 있다. 이 출원을 참고로 여기 포함시킨다.
동일 발명자에 의해 발명된 이 부가적인 이전의 해결책은 비휘발성 메모리 저장장치에 대한 것이다. 이 장치 역시 데이터 파일이 변경될 때마다 기록전 소거를 수행해야 하는 것을, 휘발성 공간 관리 RAM의 논리 블록 어드레스와 물리 블록 어드레스간 상호관계를 유지함으로써 회피하도록 구성된 것이다. 더욱이, 이 발명은 부가적인 회로를 필요로 하는 CAM 셀 방식에 관련된 부담을 회피한다.
동일 발명자에 의한 상기 개시된 해결책과 같이, 장치는 2개의 주 알고리즘을 수행하는 회로 및 반도체 대량 저장장치용의 관련된 하드웨어 구조를 포함한다. 더욱이, CAM 셀은 이 이전의 해결책에서 RAM 셀을 사용함으로써 사용되지 않는다.
이 이전의 해결책에서 판독(reading)은 논리 블록 어드레스를 메모리 저장장치에 제공함으로써 수행된다. 시스템은 연속적으로 일치된 것이 발견될 때까지 저장된 논리 블록 어드레스를 비교한다. 이어서 그 데이터 파일은 디지털 시스템에 결합된다. 따라서, 원하는 정보의 물리 위치가 결정될 수 있기 전에 어쩌면 모든 메모리 위치를 탐색하여 원하는 논리 블록 어드레스와 비교되어야 하기 때문에 이 해결책에 의해 제공된 성능이 나빠진다.
요구되는 것은 CAM 셀 저장장치의 과도한 부담없이 저장된 데이터에 빠른 액세스를 제공하는 반도체 하드 디스크 구조이다.
본 발명은 비휘발성 메모리 저장장치에 대한 것이다. 본 장치는 데이터 파일이 변경될 때마다 기록전 소거를 수행해야 하는 것을 회피하도록 구성된다. 더욱이, CAM 셀에 관련된 부담을 회피하기 위해서, 이 방법은 RAM 어레이를 이용한다. 호스트 시스템은 논리 블록 어드레스를 사용함으로써 대량 저장장치 데이터의 조직을 유지한다. RAM 어레이는 호스트의 논리 블록 어드레스(LBA)와 동일한 어드레스에 의해 어드레스 가능하도록 배열된다. RAM의 각각의 이러한 어드레스 가능한 위치는 호스트에 의해 예상된 비휘발성 대량 저장장치 내에 데이터의 물리 어드레스를 보유하는 필드를 포함한다. 이 물리 블록 어드레스(PBA) 정보는 RAM이 휘발성 메모리 장치이기 때문에 파워가 다운된 후에 동작을 재개한 후에도 장치가 기능할 것임을 보증하도록 비휘발성 메모리 내에서 새도우되어야 한다. 더욱이, 상태 플래그는 각각의 물리 위치에 대해 저장된다. 상태 플래그는 비휘발성 매체나 RAM 및 비휘발성 매체 모두에 저장될 수 있다.
장치는 2개의 주 알고리즘을 수행하는 회로와 반도체 대량 저장장치용 관련 하드웨어 구조를 포함한다. 제1 알고리즘은 훨씬 개선된 성능과 최소한의 하드웨어 도움으로 호스트 논리 블록 어드레스를 물리 블록 어드레스에 맵핑하는 수단을 제공한다. 더욱이, 제2 알고리즘은 수정된 데이터 파일을 다시 대량 저장장치에 기록할 때 기록전 소거 사이클을 회피하는 수단을 제공한다. 대신에, 어떠한 소거도 수행되지 않으며 수정된 데이터 파일은 대량 저장장치의 비어 있는 부분에 기록된다.
판독은 논리 블록 어드레스를 메모리 저장장치에 제공함으로써 본 발명에서 수행된다. RAM 어레이는 논리 블록 어드레스가 하나의 RAM 위치를 선택하도록 배열된다. 이 위치는 호스트 또는 다른 외부 시스템에 의해 요청된 데이터의 물리 블록 어드레스를 포함한다. 그 데이터 파일은 호스트로 읽어내어진다. 제2 알고리즘에 따라, 소거 사이클은 종래의 기술에서 행해지는 바와 같이 블록의 소거 사이클 후에 자신보다는, 변경된 데이터 파일을 변경된 데이터 대량 저장장치 블록에 프로그램함으로써 회피된다.
본 발명의 대안 실시예에서, 비휘발성 메모리 내에 제1 영역으로부터 블록 내에 섹터를 비휘발성 메모리 내의 사용되지 않은 영역으로 유용하게 이동시키고 제1 영역을 "사용된 것"으로서 표시하는 방법 및 장치가 제공된다.
요약하여, 본 발명의 바람직한 실시예는 선택적으로 소거될 수 있으며 개별적으로 이동될 수 있는 하나 이상의 섹터를 갖는, 호스트에 의해 액세스된 블록을 식별하는 논리 블록 어드레스를 물리 블록 어드레스에 맵핑하는 맵핑정보를 저장하고, 비휘발성 메모리의 비어있는 영역을 식별하는 방법 및 장치를 포함하며, 상기 맵핑정보는 블록이 저장되는 비휘발성 메모리 내에서 "원(original)" 위치를 식별하는 가상 물리 블록 어드레스와, 저장된 섹터의 하나 이상의 섹터가 이동되는, 비휘발성 메모리 내에, "이동된" 위치를 식별하는 이동된 가상 물리 블록 어드레스를 포함한다. 맵핑정보는 "원" 물리 블록 어드레스와 "이동된" 물리 블록 어드레스를 사용하며, 액세스되는 블록 내에 "이동된" 섹터에 관한 정보를 제공하는 상태정보를 더 포함한다.
도 1은 본 발명에 따른 반도체 대량 저장장치의 구조의 개략적인 블록도.
도 2는 도 1의 RAM 저장장치의 물리 블록 어드레스에 대한 대안 실시예를 도시하는 도면.
도 3은 본 발명의 대량 저장장치를 탑재한 시스템의 블록도.
도 4 내지 도 8은 본 발명의 이점을 달성하는 몇몇의 플래그와 정보의 상태를 도시하는 도면.
도 9는 본 발명에 따른 제1 알고리즘의 플로우 차트 블록도.
도 10은 본 발명의 바람직한 실시예를 포함하는, 디지털 카메라와 같은, 디지털 시스템의 하이 레벨 블록도.
도 11 내지 도 21은 LBA-PBA 맵핑정보를 포함하는 도 10의 디지털 시스템에 저장될 수 있는 맵핑 테이블의 상태의 몇몇 예를 예시한 도면.
도 22는 도 10의 바람직한 실시예에서 채용된 일반적인 단계의 하이 레벨 흐름도.
도 23은 도 10의 비휘발성 장치에 한 블록의 정보를 기록할 때 사용되는 일반적인 단계의 하이 레벨 흐름도.
도 24는 신규 결함 플래그 및 LBA 어드레스 수단을 사용하는 본 발명의 대안 실시예에서 플래시 메모리 장치의 내용의 예를 도시한 도면.
도 25는 본 발명의 또 다른 대안 실시예가 블록 내에 2개의 상이한 섹터 위치에서 각 블록에 대한 LBA 어드레스를 저장하는 플래시 메모리 장치의 내용의 예를 도시하는 도면.
도 26a 및 도 26b는 본 발명의 또 다른 대안 실시예를 도시한 것으로 도 10의 시스템에 의해 채용된 LBA와 PBA 어드레스간 상호관계를 예시하기 위해 플래시 메모리 장치 및 SPM RAM 블록의 내용을 도시한 도면.
도 1은 본 발명에 따른 고체상태 저장장치 매체의 구현을 위한 구조를 도시한 것이다. 저장장치 매체는 호스트 혹은 다른 외부 디지털 시스템에 사용하기 위한 것이다. 대량 저장장치는 휘발성 RAM 어레이(100)와 비휘발성 어레이(104)인 2부분으로 분할된다. 바람직한 실시예에 따라, 모든 비휘발성 메모리 저장장치는 플래시이다. 플래시는 EEPROM으로 대치될 수도 있다. RAM은 어떤 편리한 유형의 것일 수 있다.
메모리 저장장치(104)는 제로 내지 N-1의 N개의 데이터 블록으로 배열된다. 각각의 데이터 블록은 M바이트이다. 바람직한 실시예에서, 각각의 데이터 블록은 구입할 수 있는 하드 디스크 드라이브의 섹터 길이에, 플래그 및 논리 블록 어드레스(LBA) 정보 및 관련된 ECC를 저장하기 위한 별도의 바이트 수를 합한 것에 대응하여 512바이트이다. 메모리(104)는 사용자가 원하는 만큼 메모리 저장장치를 포함할 수 있다. 대량 저장장치의 예는 100M바이트의 어드레스 가능한 저장장치를 포함할 수도 있을 것이다.
복수의 RAM 위치가 있다. 각각의 RAM 위치(102)는 호스트 시스템에 의해 제공된 논리 어드레스나 비휘발성 매체의 실제 물리 어드레스 중 적합한 것을 사용하여 제어기에 의해 고유하게 어드레스 가능하다. RAM 위치(102)는 논리 블록 어드레스에 관련된 데이터의 물리 블록 어드레스 및 비휘발성 매체 상의 물리 블록 어드레스에 관련된 플래그를 포함한다.
물리 블록 어드레스(PBA)는 도 2에 도시한 바와 같이 2개의 필드로 분할될 수 있는 것이 가능하다. 이들 필드는 일군의 데이터 블록의 클러스터 어드레스용으로 사용될 수 있다. 제1 필드(290)는 클러스터 어드레스를 선택하는데 사용되며 제2 필드(292)는 이 클러스터에 관련된 논리 블록 어드레스의 시작 어드레스를 선택하는데 사용될 수 있다.
수집된 정보 플래그는 각각의 비휘발성 메모리 위치(106)마다 저장된다. 이들 플래그는 구/신(old/new) 플래그(110), 사용된/사용가(used/free) 플래그(112), 결함 플래그(114), 및 단일/섹터 플래그(116)를 포함한다. 부가적으로, 데이터 저장기(122)도 있다.
본 발명의 대량 저장장치에 데이터를 기록할 때, 제어기는 데이터를 저장하기 위한 제1 가용 물리 블록을 결정한다. 호스트에 의해 선택된 논리 블록 어드레스에 대응하는 RAM 위치(102)는 104(도 1)의 비휘발성 메모리 어레이 내에 실제로 데이터가 저장된 물리 블록 어드레스와 함께 기록된다.
예를 들어 사용자는 워드 프로세싱 문서를 준비하고 있고 컴퓨터에 문서를 저장할 것을 명령하였다고 가정한다. 문서는 대량 저장장치 시스템에 저장될 것이다. 호스트 시스템은 이에 논리 블록 어드레스를 할당할 것이다. 본 발명의 대량 저장장치 시스템은 문서를 저장하기 위해서 대량 저장장치 내에 사용되지 않은 블록 혹은 블록들의 물리 어드레스를 선택할 것이다. 물리 블록 어드레스의 어드레스는 논리 블록 어드레스에 대응하는 RAM 위치(102)에 저장될 것이다. 데이터가 프로그램될 때, 본 발명의 시스템은 104 및 293에서 사용된/사용가 플래그(112)를 세팅하여, 이 블록의 위치가 사용된 것임을 나타낸다. 하나의 사용된/사용가 플래그(112)는 비휘발성 어레이(104)의 각각의 엔트리마다 제공된다.
나중에, 사용자가 문서를 불러들여, 변경하고 다시 문서를 저장할 것을 컴퓨터에 명령하였다고 가정한다. 기록전 소거 사이클을 회피하기 위해서, 본 발명의 시스템은 관련된 블록이 소거된 것을 나타내는 것으로 100에서 사용된/사용가 플래그(112)가 세팅되어 있지 않은(프로그램되지 않은) 블록을 찾는 수단을 제공한다. 이어서 시스템은 100의 106 및 293의 새로운 블록에 대한 사용된/사용가 플래그(112)를 세팅하고, 수정된 문서를 비휘발성 어레이(104) 내의 새로운 물리 블록 위치(106)에 저장한다. 새로운 물리 블록 위치의 어드레스는 논리 블록 어드레스에 대응하는 RAM 위치(102)에 또한 저장됨으로써, 102에 이전의 물리 블록 위치를 개서한다. 다음에, 시스템은 109의 104 및 293의 110에서 문서는 필요없는 구판임을 나타내는 문서의 이전 판의 구/신 플래그(110)를 세팅한다. 이러한 식으로, 본 발명의 시스템은 이전 문서의 수정판을 저장하기 위해서 종래의 시스템의 기록전 소거에서 필요로 하는 소거 사이클의 부담을 회피한다.
RAM 어레이(100)는 전원차단 상태에서 메모리를 잃어버릴 것이기 때문에, 매체 내의 활성 물리 블록 어드레스와 함께 논리 블록 어드레스가 비휘발성 어레이(104) 내에 새도우 메모리(108)로서 또한 저장된다. 제어기에 의해 적합한 RAM 위치(102)에 새도우 정보가 저장될 것임을 알 것이다. 전원인가 시퀀스 동안, 100의 RAM 위치는 104의 정보(106)를 읽음으로써, 104에 모든 물리 위치로부터 적합하게 갱신된다. 106의 논리 어드레스(108)는 주어진 논리 블록 어드레스에 관련된 실제 물리 블록 어드레스를 갱신하기 위해서 100의 RAM 위치의 어드레스를 지정하는데 사용된다. 106은 신규 데이터(122)에 관련된 실제 물리 블록 어드레스이기 때문에, 플래그(110, 112, 114, 116)은 100에서 106의 물리 블록 어드레스로 102의 293에서 갱신된다. 플래그를 적합한 비휘발성 메모리 위치(106)에 아니면 비휘발성 메모리 위치와 물리 블록 어드레스에 관련된 RAM 위치(102) 양측에 저장할 수 있다는 것은 이 분야에 통상의 지식을 가진자에게 명백할 것이다.
전원인가(power up) 동안, 휘발성 메모리(100) 내에 논리 블록 어드레스에 할당된 가장 최근의 물리 블록 어드레스를 할당하기 위해서, 제어기는 비휘발성 메모리(104)의 플래그(110, 112, 116) 부분을 먼저 판독할 것이며 비휘발성 메모리(100) 내에 플래그들의 부분(293)을 갱신한다. 이어서 비휘발성 매체(104)의 모든 물리 블록 어드레스의 논리 블록 어드레스(108)를 읽고, 휘발성 메모리(100) 내의 주어진 물리 블록 어드레스의 플래그들을 추적하고, 비휘발성 메모리(104) 내의 물리 블록 어드레스의 판독된 논리 블록 어드레스에 의해서, 비휘발성 메모리(100) 내의 판독된 논리 블록 어드레스에 할당된 가장 최근의 물리 블록 어드레스를 갱신할 수 있다.
도 3은 본 발명의 대량 저장장치를 탑재한 시스템의 블록도를 도시한 것이다. 호스트 컴퓨터, 개인용 컴퓨터 등과 같은 외부 디지털 시스템(300)은 본 발명의 대량 저장장치(302)에 결합된다. 논리 블록 어드레스는 어드레스 버스(306)를 통해 휘발성 RAM 어레이(100)와 제어기 회로(304)에 결합된다. 제어신호는 또한 제어버스(308)를 통해 제어기(304)에 결합된다. 휘발성 RAM 어레이(100)는 물리 블록 어드레스를 비휘발성 RAM 어레이(400)에 제공하기 위해 결합된다. 제어기(304)는 휘발성 RAM(100), 비휘발성 어레이(104) 양자를 제어하고 모든 플래그의 생성을 위해서 결합된다.
본 발명에 따른 기록 동작을 보이는, 단순화한 예를 도 4 내지 도 8에 도시하였다. 본 발명의 이들 특징을 모호하게 하는 것을 피하기 위해서 정보 플래그 모두를 과도하게 상세하게 도시하지는 않았다. 또한 본 발명의 이해를 단순화하기 위해서 데이터 엔트리를 십진수를 사용하여 도시하였다. 바람직한 실시예에서는 2진 카운팅을 사용할 것임을 이 분야에 통상의 지식을 가진 자에게 명백할 것이다.
도 4는 본 발명에 따른 11 엔트리 대량 저장장치를 도시한 것이다. 도 4의 대량 저장장치에는 유효하거나 사용할 수 있는 데이터 어느 것도 저장되어 있지 않다. 따라서, 모든 물리 블록 어드레스는 비어있다. 비휘발성 대량 저장장치 위치 '6'에 저장된 데이터가 채워져 있으며 이전의 것이다. 부가적으로, 위치 '9'는 결함이 있는 것이며 사용될 수 없다.
호스트는 논리 블록 어드레스 '3' 및 이어서 '4'에 따라 데이터를 기록하도록 본 예의 대량 저장장치에 명령한다. 대량 저장장치는 먼저 논리 블록 어드레스 '3'에 관련된 데이터를 기록할 것이다. 장치는 비휘발성 메모리 내에서 어느 것이 제1 비사용 위치인지를 결정한다. 이 예에서, 제1 빈 위치는 위치 '0'이다.
따라서, 도 5는 논리 블록 어드레스 '3'에 대해서, 대응하는 물리 블록 어드레스 '0'이 저장되어 있고 사용된 플래그는 물리 블록 어드레스 '0'에 세팅되어 있음을 보인 것이다. 다음 빈 위치는 위치 '1'이다. 도 6은 논리 블록 어드레스 '4'에 대해서, 대응하는 물리 블록 어드레스 '1'이 저장되어 있고 사용된 플래그는 물리 블록 어드레스 '1'에 세팅되어 있음을 보인 것이다.
호스트는 다시 논리 블록 어드레스 '3'에 어떤 것이 기록될 것임을 명령한다. 다음 빈 위치는 위치 '2'인 것으로 결정된다. 도 7은 위치 '0' 내의 이전의 플래그는 이 데이터를 더 이상을 사용할 수 없다는 것을 나타내도록 세팅되어 있고, 사용된 플래그는 위치 '2'에 세팅되어 있고, 위치 '3' 내의 물리 블록 어드레스는 '2'로 변경되어 있음을 보인 것이다.
다음에, 호스트는 다시 논리 블록 어드레스 '4'에 어떤 것이 기록될 것임을 명령한다. 다음 빈 위치는 위치 '3'인 것으로 결정된다. 도 8은 위치 '1'에서 구플래그가 이 데이터는 더 이상 사용할 수 없음을 나타내도록 세팅되어 있고 사용된 플래그는 위치 '3'에 세팅되어 있으며, 위치 '4'에서 물리 블록 어드레스는 '3'으로 변경되어 있음을 도시한 것이다. (일반적으로 물리 블록 어드레스와 동일 위치에서 저장된 데이터간엔 어떠한 관계도 없음을 상기한다.)
도 9는 본 발명에 따른 알고리즘 1을 도시한 것이다. 본 발명의 시스템이 데이터를 대량 저장장치에 프로그램하라는 명령을 수신할 때(단계 200), 시스템은 비어있는 블록, 즉 세팅되어 있지 않은(프로그램되어 있지 않은) 사용된/사용가 플래그를 갖는 블록을 찾으려고 시도한다(단계 202). 성공한다면, 시스템은 그 블록에 대한 사용된/사용가 플래그를 세팅하고 데이터를 그 블록에 프로그램한다(단계 206).
한편, 시스템이 세팅되어 있지 않은 사용된/사용가 플래그를 갖는 블록을 찾을 수 없다면, 시스템은 플래그들(사용된/사용가 및 구/신)과, 세팅되어 있지 않은 사용된/사용가 플래그 및 세팅되어 있지 않은 결함 플래그를 갖는 모든 블록에 대한 데이터를 소거하고(단계 204) 세팅되어 있지 않은 사용된/사용가 플래그를 갖는 블록을 탐색한다(단계202). 이러한 블록이 단계 204에 의해서 지금 형성되었다. 이어서 시스템은 그 블록에 대한 사용된/플래그를 세팅하고 데이터 파일을 그 블록에 프로그램한다(단계 206).
데이터가 이전에 현존하는 파일에 대한 수정판이면, 시스템은 교체된 판이 액세스되지 못하게 해야 한다. 시스템은 데이터 파일이 이전의 파일을 교체할 것인지 여부를 결정한다(단계 208). 교체한다면, 시스템은 교체된 블록에 관련된 구/신 플래그를 세팅한다(단계 210). 한편, 저장될 데이터 파일이 새로이 생성된 데이터 파일이면, 교체될 블록이 없기 때문에, 구/신 플래그를 세팅하는 단계를 건너뛴다(단계 210). 마지막으로, 논리 어드레스(308)를 물리 어드레스에 상관시키는 맵이 갱신된다(단계 212).
위에 개괄한 과정에 따름으로써, 소거 사이클에 관련된 부담은 주기적인 것을 제외하곤 메모리(104)에 기록할 때마다 회피된다. 이것은 본 발명의 구조를 채용하는 전체 컴퓨터 시스템의 성능을 크게 개선한다.
본 발명의 바람직한 실시예에서, 플래시 메모리의 프로그래밍은 이 분야에 통상의 지식을 가진자들에 의해 일반적으로 이해되는 과정에 따른다. 즉, 프로그램 임펄스(impulse)는 프로그램될 비트에 적합하게 적용되고 적합한 프로그래밍이 일어났음을 확실하게 하기 위해서 프로그램되는 데이터에 비교된다. 비트가 적합하게 소거되거나 프로그램될 수 없는 경우에, 그 블록이 다시 사용되는 것을 방지하는 결함 플래그(148)가 세팅된다.
도 10은 본 발명의 대안 실시예를 채용한 디지털 카메라와 같은 디지털 시스템(500)을 도시한 것이다. 디지털 시스템(500)은 호스트(502)를 포함하는 것으로 도시되었는데, 이 호스트는 비휘발성부(508)에 정보를 저장하거나 이로부터 불러들이기 위한 제어기 회로(506)에 결합된, 개인용 컴퓨터(PC)이거나, 단순히 디지털 시스템 내에 일반적으로 사용되는 임의의 일반적인 유형의 프로세서일 수 있다. 제어기 회로(506)는 반도체(아니면 "집적회로" 혹은 "칩"이라 칭함)일 수 있으며 혹은 선택적으로 여러 가지 전자 성분의 조합일 수 있다. 바람직한 실시예에서, 제어기 회로는 단일의 칩 장치로서 도시되었다. 비휘발성 메모리부(508)는 하나 이상의 메모리 장치로 구성되는데, 이 메모리 장치는 각각 플래시 혹은 EEPROM 형태의 메모리일 수 있다. 도 10의 바람직한 실시예에서, 메모리부(508)는 복수의 플래시 메모리 장치(510-512)를 포함하며, 각각의 플래시 메모리 장치는 정보를 저장하기 위한, 어드레스 가능한 위치를 개별적으로 포함한다. 도 10의 실시예의 바람직한 응용에서, 이러한 정보는 하나 이상의 데이터 섹터를 갖는 각각의 블록들로 조직된다. 데이터에 더하여, 저장되는 정보는 플래그 필드, 어드레스 정보 등과 같은 데이터 블록에 관한 상태 정보를 더 포함할 수 있다.
호스트(502)는 호스트 정보 신호(504)를 통해 제어기 회로(506)에 결합된다. 호스트 정보 신호는 어드레스 및 데이터 버스와, 명령, 데이터 및 다른 유형의 정보를 제어기 회로(506)에 전달하는 제어신호로 구성되며, 이어서 제어기 회로는 이러한 정보를 플래시 어드레스 버스(512), 플래시 데이터 버스(514), 플래시 신호(516) 및 플래시 상태 신호(518)(508 및 513 내지 516, 이들 모두를 신호(538)이라 함)를 통해 메모리부(508)에 저장한다. 신호(538)는 제어기(506)와 메모리부(508)간에 명령, 데이터 및 상태 정보를 제공할 수 있다.
제어기(506)는 호스트 인터페이스 블록(520), 버퍼 RAM 블록(522), 플래시 제어기 블록(532), 마이크로프로세서 블록(524), 마이크로프로세서 제어기 블록(528), 마이크로프로세서 저장장치 블록(530), 마이크로프로세서 ROM 블록(534), ECC 논리 블록(540) 및 공간 관리기 블록(544)과 같은 하이레벨 기능 블록을 포함한 것으로 도시되었다. 호스트 인터페이스 블록(520)은 호스트 정보 신호(504)를 통해 버퍼 RAM 블록(522) 및 마이크로프로세서 블록(524)으로부터 호스트(502)로 데이터 및 상태정보를 제공하는 호스트 정보 신호(504)를 수신한다. 호스트 인터페이스 블록(520)은 어드레스 버스, 데이터 버스 및 제어신호로 구성된 마이크로프로세서 정보신호(526)를 통해 마이크로프로세서 블록(524)에 결합된다.
마이크로프로세서 블록(524)은 마이크로프로세서 제어기 블록(528), 마이크로프로세서 저장장치 블록(530) 및 마이크로프로세서 ROM 블록(534)에 결합된 것으로 도시되었으며, 마이크로프로세서 저장장치 블록(530) 및 마이크로프로세서 ROM 블록(534)에 저장된 프로그램 명령을 실행함으로써 제어기(506) 내에 도 10에 도시한 여러 가지 기능 블록의 동작을 지휘하도록 작용한다. 마이크로프로세서(524)는 비휘발성 저장장치 영역인 마이크로프로세서 ROM 블록(534)으로부터 프로그램 명령(혹은 코드)을 수시로 실행할 수 있다. 한편, 마이크로프로세서 저장장치 블록(530)은 휘발성, 즉 판독 및 기록 메모리(RAM)이거나 혹은 비휘발성, 즉 EEPROM 형태의 메모리 저장장치일 수 있다. 마이크로프로세서 블록(524)에 의해 실행되는 명령은 일괄하여 프로그램 코드라고 하는 것으로서, 본 발명의 시스템의 동작의 시작에 앞서 이전의 저장장치 블록(530) 내에 저장되어 있다. 초기에, 그리고 마이크로프로세서 저장장치 위치(530)로부터 프로그램 코드의 실행에 앞서, 프로그램 코드는 메모리부(508)에 저장될 수 있으며 나중에 신호(538)를 통해 저장장치 블록(530)에 다운로드될 수 있다. 이 초기화 동안, 마이크로프로세서 블록(524)은 ROM 블록(534)으로부터 명령을 실행할 수 있다.
제어기(506)는 마이크로프로세서의 제어하에 메모리부와 정보를 주고받기 위한 마이크로프로세서 정보 신호(526)를 통해 마이크로프로세서에 결합된 플래시 제어기 블록(532)을 더 포함한다. 데이터와 같은 정보는 플래시 제어기 블록(532)에서 마이크로프로세서 신호(526)를 통해 저장하기 위한 버퍼 RAM 블록(522)(단지 임시 저장장치일 수도 있음)에 제공될 수 있다. 마찬가지로, 마이크로프로세서 신호(526)를 통해 데이터는 플래시 제어기 블록(532)에 의해 버퍼 RAM 블록(522)으로부터 불러들일 수 있다.
ECC 논리 블록(540)은 신호(542)를 통해 버퍼 RAM 블록(522)에 결합되며 또한 마이크로프로세서 신호(526)를 통해 마이크로프로세서 블록(524)에 결합된다. ECC 논리 블록(540)은 일반적으로 에러 부호화 및 정정 기능을 수행하는 회로를 포함한다. 여러 가지 ECC 장치 및 알고리즘은 구입가능한 것이며 ECC 논리 블록(540)에서 필요로 하는 기능을 수행하도록 채용될 수 있음을 이 분야에 숙련된 자들은 알 것이다. 간단히 하여, 이들 기능은 사실상 전송되는 데이터에 대한 다항식으로부터 고유하게 발생되고 데이터가 수신될 때, 동일 다항식을 사용하여 수신된 데이터로부터 또 다른 부호를 발생하여 데이터에 에러가 발생할 수도 있을 소정 수의 에러를 검출하여 가능성 있게 정정하는 추가된 부호를 포함한다. ECC 논리 블록(540)은 메모리부(508)에 저장된 데이터 혹은 호스트(502)로부터 수신된 데이터에 대해 에러 검출 및/또는 정정 동작을 수행한다.
공간 관리기 블록(544)은 다른 도면을 참조하여 설명되는 바와 같이, 한 블록의 정보를 저장하는 플래시 메모리 장치 중 한 장치 내에서 다음 세팅되지 않은(혹은 비어있는) 저장장치 블록을 찾기 위한 바람직한 장치 및 알고리즘을 채용한다. 전술한 바와 같이, 플래시 메모리 장치 중 한 장치 내에 블록의 어드레스를 PBA라 칭하며, 이것은 호스트로부터 수신된 LBA에 대해 변환을 수행함으로써 공간 관리기에 의해 결정된다. 이러한 변환을 달성하기 위해 여러 가지 장치 및 방법이 사용될 수 있다. 이러한 방식의 예는 "Flash Memory Mass Storage Architecture Incorporating Wear Leveling Technique Without Using CAM Cells" 명칭의 미국 특허 제5,485,595호에 개시되어 있고, 이 명세서를 참고로 여기 포함시킨다. 다른 LBA를 PBA로의 변환 방법 및 장치를, 본 발명의 범위 및 정신으로부터 벗어남이 없이 마찬가지로 채용될 수도 있다.
공간 관리기 블록(544)은 SPM RAM 블록(548) 및 SPM 제어블록(546)을 포함하 며, 후자의 2개의 블록은 서로 결합되어 있다. SPM RAM 블록(548)은 SPM 제어블록(546)의 제어하에 LBA-PBA 맵핑 정보(아니면 여기서 변환 테이블, 맵핑 테이블, 맵핑 정보, 혹은 테이블이라 칭함)를 저장한다. 대안으로, SPM RAM 블록(548)은 RAM 어레이(100)에 관하여 도 3에 도시한 바와 같은, 제어기의 밖에 배치될 수도 있다.
동작에서, 호스트(502)는 예를 들면, 제어기(506)를 통해 판독 혹은 기록 동작의 수행동안 메모리부(508)로부터 및 이에 정보를 기록 및 판독한다. 그와 같이 할 때, 호스트(502)는 LBA를 호스트 신호(504)를 통해서 제어기(506)에 제공한다. LBA는 호스트 인터페이스 블록(520)에 의해 수신된다. 마이크로프로세서 블록(524)의 지휘하에, LBA는 더욱 상세히 후술되는 바와 같이, 결국에는 PBA로의 변환 및 이의 저장을 위해서 공간 관리기 블록(544)에 제공된다.
마이크로프로세서 블록(524)의 지휘하에, 데이터 및 다른 정보는 플래시 제어기 블록(532)을 통해 플래시 메모리 장치(510-512) 중 한 장치 내에, PBA에 의해 식별된 저장영역에 기록되거나 이로부터 판독된다. 플래시 메모리 장치 내에 저장된 정보는 전술한 바와 같이, 먼저 소거됨이 없이, 새로운 정보로 덮어쓰여지지 않는다. 한편, 한 블록의 정보의 소거(기록에 앞서 매번)는 대단히 시간과 전력을 소비하는 조치이다. 이것을 종종 기록전 소거 동작이라고 한다. 바람직한 실시예는 연속적으로, 그러면서 효율적으로, 블록 내에 한 섹터(혹은 복수 섹터)의 정보를 이동시킴으로써, 즉 메모리부(508) 내에서 플래시 메모리 내에 PBA 위치에서 사용되지 않은 PBA 위치로 재기록됨으로서 빈번한 소거동작을 회피하여 이러한 기록전 소거동작을 회피한다. 한 블록의 정보는 16 또는 32개의 섹터와 같은 한 섹터 이상으로 구성될 수 있다. 한 블록의 정보는 개별적으로 소거가능한 정보단위인 것으로 또한 정의된다. 종래의 시스템은 이전에 기록되어 있었던 플래시 메모리 장치 내에 저장된 블록을 플래시 메모리 장치 내의 비어있는(혹은 비사용된) 위치로 이동시켰다. 그러나, 이러한 시스템은 그 블록 내에 단지 하나의 섹터의 정보일 때라도 전체 블록이 재기록되고 있었다. 즉, 플래시 메모리 내에 저장용량의 낭비 및 블록 내에 섹터의 전체 수 미만이 재기록되고 있을 때 전체 블록의 내용을 이동시킴에 있어 시간의 낭비가 있다. 여기 다룬바와 같이 본 발명의 바람직한 실시예는 한 블록의 정보 미만의 "이동"을 가능하게 함으로써 이전에 기록된 섹터의 이동동작 횟수를 감소시키게 되고, 결국 소거동작 수를 감소시킨다.
도 10에서, 유의할 중요한 것은 SPM RAM 블록(548)은 기록동작이 일어날 때마다 수정될 수 있는 테이블을 유지함으로써 메모리부(508)에 저장되는 각각의 블록에 관한 LBA-PBA 맵핑 정보 및 다른 정보를 유지한다는 것이다. 부가적으로, 이 맵핑 정보는 플래시 메모리 장치 내에 한 섹터의 정보(블록 내의)의 실제 위치를 제공한다. 명백하게 되는 바와 같이, SPM RAM 블록(548)에 저장된 맵핑 테이블 내의 정보의 적어도 한 부분은 시스템의 파워가 중단되거나 차단되었을 때 맵핑정보의 상실을 회피하기 위해서 메모리부(508)로 "새도우"(혹은 복사)된다. 즉, 이것은 대부분 맵핑정보를 유지하기 위한 휘발성 메모리의 사용에 기인한다. 이 점에 대해서, 시스템에의 파워가 복구되었을 때, 메모리부(508)에 저장된 맵핑정보의 부분은 SPM RAM 블록(548)으로 옮겨진다.
SPM RAM 블록(548)은 대안으로 플래시 혹은 EEPROM 메모리 구조의 형태와 같은 비휘발성 메모리일 수도 있음에 유의해야 한다. 이 경우, 맵핑 테이블은 비휘발성 메모리 내에 저장됨으로서 파워 중단 동안에 비휘발성 메모리에 저장된 맵핑 정보가 명백하게 유지될 것이기 때문에, "새도잉" 필요성을 회피한다.
하나 이상의 섹터가 플래시 메모리의 한 영역에서 다른 영역으로 이동되고 있을 때, 본 발명의 바람직한 실시예는 먼저 플래시 메모리 장치, 즉 510-512에 저장된 위치로부터 섹터(들)를, 일시적으로 저장하기 위한 버퍼 RAM 블록(522)으로 이동시킨다. 이어서 이동된 섹터는 버퍼 RAM 블록(522)으로부터 플래시 메모리 장치 중 하나 내의 비어있는 영역으로 이동된다. 전술한 바와 같이, ECC 논리 블록(540)에 의해 발생된 ECC 부호도 데이터 및 플래그 필드에 대응하는 LBA와 같은 다른 정보인 데이터와 함께 플래시 메모리 장치(510-512) 내에 저장됨에 유념하는 것이 유용한다.
도 11내지 도 21은 메모리부(508) 내에 블록의 식별 및 위치용 LBA-PBA 맵핑정보를 저장하도록 구성된 SPM RAM 블록(548) 내의 테이블(700)의 상태의 예를 도시한 것이다. 이들 모든 도면에서 테이블(700)은 한 어레이의 컬럼 및 로우를 포함하는 것으로 도시되었으며, 컬럼은 가상 물리 블록 어드레스 위치 혹은 VPBA 블록 어드레스 위치(702), 이동 가상 물리 어드레스 위치 혹은 MVPBA 블록 어드레스 위치(704), 이동 플래그 위치(706), 사용된/사용가 플래그 위치(708), 구/신 위치(710), 결함 플래그 위치(712) 및 섹터 이동 상태 위치(714)를 포함한다.
테이블의 로우들은 PBA/LBA 로우(716, 718 내지 728)를 포함하며 각각의 로우는 테이블(800) 내에 어드레스되고 있는 정보에 따라 LBA 혹은 PBA일 수 있는 로우 번호를 갖는다. 예를 들면 로우 716은 할당된 로우 번호 '00'인 것으로 도시되었고 LBA '00'에 관련한 PBA 정보가 테이블(700)로부터 불러들여지고 있다면, LBA '00'은 730에 위치한 관련된 PBA를 얻기 위해서 로우 716에 SPA RAM 블록(548)에 어드레스될 수 있다. 한편, 블록에 관한 플래그 필드(706-712)와 같은 상태정보가 액세스되고 있다면, '00', '10', '20', '30', '40', '50', 'N-1'와 같은 로우 716-728의 로우 번호는 LBA와는 반대로 PBA 값을 나타낸다. 더구나, 테이블(700)의 각각의 로우는 블록 엔트리로서 간주될 수 있고 각각의 엔트리 정보는 블록에 관한 정보를 포함한다. 더욱이, 테이블(700)의 각각의 로우는 LBA에 의해 어드레스될 수 있다.
바람직한 실시예에서, 각각의 블록은 16개의 섹터를 포함하는 것으로 도시되었다. 이것은 16섹터의 전체 블록을 선택적으로 소거하는 능력에 기인한다(블록 크기를 종종 "소거 블록크기"라고도 하는 이유가 된다). 도 11 내지 도 21에 도시한 바와 같이, 소거 블록크기가 16섹터이면, 각각의 블록 엔트리(혹은 로우)는 16 섹터에 관한 정보를 포함한다. 그러므로 로우 716은 LBA '00' 내지 LBA '15'(혹은 16진수 표기로 LBA '00' 내지 LBA 'OF')에 의해 어드레스되는 블록에 관한 정보를 포함한다. 다음 로우인 로우 718은 LBA '16'(혹은 16진수로 '10') 내지 LBA '31'(혹은 16진수로 'IF')에 의해 어드레스되는 블록들에 관한 정보를 포함한다. 각각의 블록의 PBA에 대해서도 마찬가지이다.
그러나, 다른 블록 크기도 사용될 수 있음에 유념해야 한다. 예를 들면, 블록은 32 섹터들을 포함할 수 있고, 그러므로 32 섹터들의 소거 블록 크기를 갖는다. 후자의 상황에서, 각각의 블록 엔트리 혹은 716, 718, 720,...과 같은 로우는 32 섹터에 관한 정보를 포함할 것이다.
테이블(700)의 VPBA 블록 어드레스 위치(702)는 일반적으로 특정 LBA 값에 대응하는 PBA 값을 나타내는 정보를 저장한다. MVPBA 블록 어드레스 위치(704)는 블록이 이동될 수 있을 위치를 메모리부(508) 내에서 식별하는 PBA값을 나타내는 정보를 저장한다. 이동 플래그 위치(706)는 MVPBA 블록 어드레스 위치(704) 내의 값으로 PBA(704 내의 PBA 값은 나머지 블록 어드레스 정보가 있을 수 있는 VPBA 블록 어드레스(702)에 나타내어진 값 이외의 값이다)를 표시한 위치로 이동될 수도 있을 어떠한 섹터라도, 액세스되는 블록이 갖는지 여부를 나타내는 값들을 저장한다. 사용된/신 플래그 위치(708)는 액세스되는 블록이 비어있는한 블록, 즉 블록이 최근에 소거되었기 때문에 어떠한 데이터도 저장되어 있지 않은지 여부를 나타내는 정보를 저장한다. 구/신 플래그 위치(710)는 블록이 사용되고 재사용되고 따라서 이전 것인지 여부에 관하여 액세스되는 블록의 상태를 나타내는 정보를 저장한다. 결함 플래그 위치(712)는 블록이 결함이 있는지 여부에 관한 정보를 저장한다. 결함 플래그 위치(712)의 값이 세팅됨으로써 표시된 바와 같이, 블록이 결함이 있는 것으로 선고되면, 결함 블록은 더 이상 사용될 수 없다. 플래그(708-712)는 도 1에 관하여 도시하여 기술된 플래그(110-114)와 유사하다.
섹터 이동 상태 위치(714)는 16비트(위치(714)는 한 블록 내의 각각의 섹터에 대해 한 비트를 포함하고 따라서 크기가 다른 블록에 대해서, 위치(714) 내에 다른 개수의 비트가 필요하다)로 구성되고, 각각의 비트는 섹터가 메모리부(508) 내의 다른 블록으로 이동되었는지 여부에 관해 블록 내에 한 섹터의 상태를 나타낸다. 메모리부(508) 내의 이동된 블록 위치는 VPBA 블록 어드레스 위치(702)의 PBA 값이 아닌 PBA로 식별될 것이다. 달리 말하여, 714 내의 각각의 비트로 나타낸 바와 같이, 블록 내의 섹터가 이동되었는지 여부의 상태는 VPBA 블록 어드레스 위치(702)나 MBPBA 블록 어드레스 위치(704) 중 어느 것이 그 섹터에 대한 가장 최근의 PBA 위치를 유지하는지를 암시한다.
도 11에서, 예로서, LBA '0'이 기록되고 있을 때 SPM RAM 블록(548)(도 10에서)에 저장된 테이블(700)의 상태의 예를 보였다. 전술한 바와 같이, 여기 나타낸 도면에서, 16 섹터의 블록크기(십진수 표기로 수 0-15 혹은 16진수 표기로 0-10)는 단지 예를 예시하기 위해 사용된다. 마찬가지로, N 블록(그러므로 N LBA)이 사용되고 0 내지 N-1의 번호가 매겨졌다. 블록크기 및 블록수는 다른 응용마다 달라 질 수 있으며 채용된 각 개별 플래시 메모리 장치(예를 들면 510-512)의 메모리 용량에 의존할 수 있는 설계 선택이다. 더구나, 바람직한 512 바이트의 섹터 크기는 이들 예에서 사용되며 다른 섹터 크기를 본 발명의 정신 및 범위에서 벗어나지 않고 사용할 수도 있다.
플래시 메모리 장치(510-512)(도 10에서) 내에 모든 블록이 소거되어 이에 따라 비어있게 되었을 때 초기화 또는 시스템 전원인가 후에 LBA '0'에 기록하는 동작이 일어나고 있다고 가정한다. 공간 관리기 블록(548)은 다음 비어있는 PBA 위치가 '00'인 것으로 결정할 것이다. 그러므로, LBA 로우 번호 '00'에 의해 테이블(700)에 나타낸 바와 같이, '00'은 LBA '0'에 관한 정보가 유지된 로우(716)의 VPBA 블록 어드레스(702)에서 730에 기록된다. LBA 0 블록 내에 어느 섹터도 이동시킬 필요가 없기 때문에, 위치(732)에 도시된 로우(716)에 대한 MVPBA 블록 어드레스(704)는 초기화값과 같은 어떤 값을 포함할 수도 있다(도 11에서, 'XX'는 "돈 캐어" 상태를 나타낸다).
734의 값은 LBA '0' 블록이 어떠한 이동된 섹터도 포함하지 않는다는 것을 보이도록 논리 상태 '0'에 있다. 로우(716)의 사용된 플래그(708) 내의 위치(736)는 PBA '0' 블록이 사용중에 있다는 것을 나타내는 논리 상태 '1'로 세팅될 것이다. 로우(716)에 대한 구플래그(710)를 나타내는 위치(738)의 상태는 PBA '0' 블록이 아직 '구'가 아님을 나타내도록 '0'으로 세팅된다. 위치(740)는 PBA '0' 블록이 결함이 있는 것이 아님을 나타내는 논리 상태 '0'을 유지하며, 이동 상태 위치(714) 내의 모든 비트는 LBA '0' 내지 LBA '15' 내의 어느 섹터도 이동되지 않았음을 나타내는 논리 상태 '0'에 있다.
도 11에서, 이동 플래그 위치(706)에서 사용된 플래그 위치(708), 구플래그 위치(710), 결함 플래그 위치(712) 및 테이블(700)의 모든 나머지 로우(716-728)에 대한 이동 상태 위치(714)와 같이, LBA '0'에 대한 상태 정보는 논리 상태 '0'에 있다. 시스템에 전원인가할 때 그리고/혹은 어떤 블록의 소거 후에, 테이블(700)에서 전원인가시 모든 블록이 되는, 소거된 블록에 대한 엔트리들은 논리 상태 '0'으로 세팅된다는 것을 알 것이다.
이 때, LBA '0' 블록이 위치될 수 있는, 메모리부(508) 내의 플래시 메모리 장치 중 한 장치의 내용을, 도 11의 테이블(700)에 나타낸 맵핑 정보를 이해할 목적으로 논하였다.
이제 도 22를 참조하면, 테이블(700)의 상태에 따라(도 11에 도시한 바와 같이) 플래시 메모리 장치(510)의 내용의 예를 예시하였다. 메모리부(508) 내에서 제어기(506)(도 10의)에 의해 PBA '0'에 식별된 LBA '0'은 호스트가 식별한 블록이 기록되는 위치이다. 도 22는 섹터 데이터 위치(752) 내의 데이터를 포함하는 PBA0 로우(750)를 도시하고 있다. ECC 부호는 또한 PBA0 로우(750)의 ECC 위치(754)에 저장된다. 이 ECC 부호는 전술한 바와 같이, 기록되는 데이터에 관련하여 ECC 논리 블록(540)에 의해 발생된다. PBA0 로우(750) 내의 플래그 필드(756)는 기록되는 블록의 섹터 데이터에 대응하는 이동, 사용된, 구(old) 및 결함 플래그 정보를 포함한다. 이 예에서, 플래그 필드(756)에서 "사용된" 플래그 및 어떤 다른 플래그도 세팅되지 않으며, 따라서, 플래그 필드(756)는 PBA '0'은 '사용된 것'이지만, "이동된 것"이거나", "구"이거나 "결함이 있는 것"이 아님을 나타내는 논리 상태 '0100'을 유지한다.
PBA0 로우(750)는 부가적으로 이 예에선 '0'인 PBA '0'에 대응하는 LBA 번호를 LBA 어드레스 위치(758)에 유지하는 저장위치를 포함한다. 본 예에서 앞으로는 관계되지 않으나, LBA '0'의 나머지 PBA 위치는 플래시 메모리 장치(510) 내에 로우(750)에 이은 다음 15개의 로우에 저장된다.
여기 제공된 예에 대해 논한 바로부터, 플래시 메모리 장치(510)의 PBA 로우 내의 정보는 이에 관계된 데이터 및 상태 정보를, 특히 플래시 메모리의 각각의 PBA 로우(750, 762, 764,...) 내의 "이동" 플래그가 있음으로 해서, LBA '0'에 관련된 임의의 이동을 포함하는 이 LBA '0' 내에서 식별할 만큼 충분함을 알 것이다. 그럼에도 불구하고, 대안으로, 테이블(700) 내의 대응하는 로우의 이동 상태 위치(714) 내의 비트들의 상태를 복제한 또 다른 필드를 플래시 내에 각각의 LBA 위치의 제1 PBA 로우에 부가할 수도 있다. 이 필드는 로우(750, 780) 등과 같이 각각의 LBA 블록의 제1 PBA 로우 내에 포함되도록 도 22에 도시한 섹터 상태 위치(760)에 선택적으로 저장된다. 위치(760)에 유지된 정보를 각각의 PBA 로우의 플래그 필드(756) 내의 "이동" 플래그의 상태를 체크함으로써 발견될 수 있을지라도, 위치(760)을 사용하는 명백한 이점은 시스템의 기동(혹은 전원인가)시, SPM RAM 블록(548) 내의 테이블(700)의 내용을 몇번의 판독동작에 기인하여 신속하게 갱신할 수 있다는 것이다(시스템에 전원이 차단되었을 때 내용물을 잃어버리는 휘발성 메모리인 SPM RAM(548) 내에 유지되어 있어 전원인가될 때 비휘발성 메모리, 즉 메모리부(508)로부터 갱신될 필요가 있다는 것을 상기한다).
즉, 전원인가시 테이블(700)의 각각의 LBA 엔트리를 갱신하기 위해서 모든 PBA 로우(바람직한 예에서 모두 16개의 로우)를 판독하기 보다는 단지 각각의 LBA의 제1 PBA 로우만을 플래시 메모로부터 판독하여 SPM RAM(548)에 저장되어야 하며, 그럼으로써 불필요한 판독동작을 회피함으로써 시간을 절약한다. 한편, LBA당 16비트의 섹터 상태 정보를 유지하기 위해서 명백하게 더 많은 메모리 용량이 이용된다.
위치(760)가 사용되는 상기 예에서, 섹터 상태 위치(760)의 값은 모두 '0'이 될 것이다(혹은 16진수 표기로 '0000').
플래시 메모리 장치(510)에서, 각각의 로우(750, 762, 764, 768,..)는 각각의 로우가 PBA 로우 번호를 갖고 있고 특정 LBA에 의해 어드레스가 지정된 블록 내의 한 섹터에 대한 데이터 및 다른 정보(데이터 및 다른 정보는 로우(750)에 관하여 상술된 바와 같다)를 저장하는 PBA 위치이다. 더구나, 모든 16개의 연속한 PBA 로우는 한 블록의 정보를 나타낸다. 즉, 16개의 PBA 로우를 나타내도록 한, PBA 로우(750, 762, 764 내지 768)는 LBA 0(도 11의 테이블(700)에서 로우(716)로서 도시된)에 대응하며, PBA 로우 각각은 그 블록 내의 섹터에 관한 정보를 유지한다. 정보의 다음 블록은 맵핑 정보가 테이블(700)의 로우(718)에 포함되어 있고, 플래시 메모리 장치(510) 등에서 '10'(16진수 표기, 혹은 십진수 표기로 '16')부터 시작하여 '1F'(16진수 표기, 혹은 '31')로 끝나는 위치에 저장된 LBA '10'(16진수)으로 어드레스가 지정된 블록이다.
상기 예로 계속하여, 도 12는 호스트에 의해 LBA 0가 다시 기록되고 있을 때 테이블(700)의 상태의 예를 도시한 것이다. LBA 0은 이미 기록되어 있고 먼저 소거됨이 없이 다시 기록되고 있기 때문에, 메모리부(508) 내의 또 다른 비어있는 위치(예를 들면 플래시 메모리 장치(510)가 그만 둔 PBA로 어드레스된 블록들을 메모리 장치(510)에 이어 다음 플래시 메모리 장치가 픽업하도록, 블록의 섹터를 포함하여 블록은 메모리부(508)의 플래시 메모리 장치의 PBA에 따라 이들 플래시 메모리 장치 각각을 통해 순서대로 그리고 연속하게 조직되어 있고, 이것의 예는 플래시 메모리 장치(510)가 0-FF(16진수)의 PBA를 포함하며, 512일 수 있는 다음 플래시 메모리 장치가 100-1FF(16진수)를 포함하는 경우임을 알려두는 것이 도움이 될 수 있다)는 새로운 정보를 저장하기 위한 공간 관리기(544)에 의해 찾게 된다. 이 비어있는 위치는 PBA '10'(16진수 표기, 혹은 십진수 표기로는 16)인 것으로 보여졌다. 로우(718)에서, 위치(742)의 사용된 플래그는 PBA '10'이 현재 '사용중"임을 나타내도록 세팅될 것이라는 것을 제외하고(바람직한 실시예에서, 플래그는 본 발명에서 벗어남이 없이 반대되는 극성이 사용될 수 있을지라도 논리 상태 '1'에 있을 때 세팅된다), LBA '10'에 대한 엔트리는 도 11에 도시한 것과 동일한 상태로 있을 것이다.
로우(716)에서 엔트리들은 LBA '00' 블록에 대한 이동된 부분의 PBA 어드레스를 제공하는 MVPBA 블록 어드레스 위치(732)에 '10'을 나타내도록 수정된다. 위치(734)의 이동 플래그는 LBA '00'의 적어도 일부(하나 이상의 섹터)가 테이블(700)의 위치(730)에 표시된 PBA 위치가 아닌 PBA 위치로 이동되었음을 나타내도록 논리 상태 '1'로 세팅된다. 마지막으로, 로우(716)에서 이동 상태 위치(714)의 비트는 '1000000000000000'으로 세팅되며(2진 표기, 혹은 16진수 표기로는 '8000'), 이것은 블록 LBA '00' 내에 이동된 섹터의 상태를 반영한다. 즉, 이 예에서, '8000'은 LBA '00' 블록 내의 제1 섹터, 혹은 섹터 '0'는 다른 PBA 위치로 이동되었음을 나타낸다.
도 22에서, 도 12의 테이블(700)의 상태는 LBA '0' 블록의 이동된 섹터가 로우(780)의 PBA '10'에 이제 기록될 것이라는 점에서 플래시 메모리 장치(510)의 내용에 영향을 미칠 것이다. 로우(780)는 이때 이동된 섹터에 대한 데이터를 포함할 것이며, 이것의 크기는 512바이트이다. 이동된 섹터 정보에 관하여, 로우(780)는 ECC 부호, 테이블(700)(도 12에서) 플래그 위치(734-740)의 값의 복제, 및 로우(780)의 데이터가 LBA '00'에 속함을 나타내기 위한 LBA '00'을 더 포함하며 LBA '0' 블록 내에 개개의 섹터 각각에 대한 이동 상태를 더 포함할 수도 있다.
도면에서 구체적으로 도시하지 않았으나, PBA 로우(750)의 위치(756) 내의 이동 플래그는 대응하는 블록의 적어도 일부분이 이동되었음을 나타내도록 세팅된다. 16진수로 '8000'인, 로우(716)(도 12에서)의 이동 상태 위치(714)에 저장된 값은 로우(750)의 위치(760) 내에 또한 저장된다. 전술한 바와 같이, 이것은 PBA '0'의 섹터 '0'만이 '이동된 것'으로 표시되었으며 새로운 블록 LBA '0'은 플래시 메모리 내에 PBA '10'에 기록되었음을 나타낸다. 도 22에 대해 더 상세히 논함이 없이, 다음의 예들도 마찬가지로 플래시 메모리 장치(510)의 내용에 영향을 미친다는 것을 알 것이다.
도 13은 LBA '00'에 또 다른 기록 동작이 수행될 때 테이블(700)의 상태를 도시한 것이다. 로우(716)의 값(혹은 엔트리)은 블록 LBA '00'의 이동된 부분이 PBA 위치 '20'(도 12에서 '10'이 아닌)에 현재 위치하여 있다는 것을 나타내도록 위치(732)의 값이 '20'(16진수 표기)로 변경된 것을 제외하곤 도 12와 동일한 상태에 있다. 도 12와 같이, 이동 상태 위치(714)의 값, '8000'은 제1 섹터(PBA '00'인)가, 이동된 블록의 일부임을 나타낸다.
로우(718)은 LBA '10' 블록이 이제는 구이며 소거되기 전에는 더 이상 사용될 수 없음을 나타내도록 수정된다. 이것은 논리 상태 '1'로 세팅되는 위치(744)의 값에 의해 나타내어진다. LBA '20'에 대한 엔트리, 즉 로우(720)은 사용 중에 있는 PBA '20'의 상태를 반영하는 논리 상태 '1'로 위치(746)가 세팅되도록 수정된 것을 제외하곤 변경되지 않은 상태에 있다. 도 11 및 도 12와 같이, 앞에서 다루지 않았고 도 13에서 특정 논리 상태를 갖는 것으로 나타내지 않은 도 13의 테이블(700)의 모든 나머지 값들은 모드 변경되지 않았음을 알 것이다(플래그는 모두 논리 상태 '0'으로 세팅되어 있다).
상기 예로 계속하여, 도 14는 LBA '0'에 또 다른 기록이 발생할 때 테이블(700)의 상태를 도시한 것이다. 비교를 쉽게 하기 위해서, 도 14에 도시한 값 주위에 원이 그려져 있는데, 이들 값은 도 13에 도시한 상태에 관하여 다른 논리 상태에 있다. 로우(716)에서, PBA '30'으로서 표시되었으며 위치(732)에 나타낸 새롭게 이동된 위치를 제외하곤 모든 것이 동일한 채로 있다. PBA '30'은 공간 관리기(544)에 의해 발견된 다음 비어있는 위치이었다. 전술한 바와 같이, 이 값은 LBA '0'의 일부분이 이제는 PBA '30'에 있다는 것을 나타낸다. 즉, 그 블록 내의 제1 섹터(로우(716) 내의 값 '8000'에 의해 나타내어진)는 플래시 메모리 장치(510)에 PBA '30'으로 이동되었다.
로우(718)는 소거될 때까지 동일한 상태로 있다. 위치(742, 744)의 플래그는 논리 상태 '0'으로 세팅된다. 로우(720)는 PBA '20'의 블록이 또한 구이며 먼저 소거되기 전에는 사용될 수 없다는 것을 나타내기 위해서 구플래그(710) 컬럼의 값이 '1'로 수정된 것을 제외하곤 그대로 있다. 로우(722)는 LBA '30'의 블록이 현재 사용중에 있음을 나타내기 위해서 사용된 플래그(708)논리 상태 '1'로 사용된 플래그(708) 컬럼의 값이 변경된 것을 제외하곤 동일한 상태에 있다.
도 15는 테이블(700)의 상태의 또 다른 예이며, 테이블이 도 13에 도시한 상태에 있었으며 이어서 호스트가 LBA '5'에 기록한다고 가정하여 테이블(700)의 상태를 도시한 것이다. 다시, 도 13 내지 도 15에서 테이블(700)의 값의 변경에 대해서 단지 한 변경인 변경한 값 주위에 그려진 원으로 나타내었다.
LBA '5'에 기록할 때, 로우(716, 718, 720 등)의 LBA 엔트리는 단지 LBA '00', LBA '10', LBA '20', 등등에 대한 것이며 그러므로 LBA '5' 엔트리를 반영하지 않음을 알아야 한다. LBA 로우 엔트리 각각은 바람직한 실시예에서 각 블록이 16 섹터인 한 블록의 정보에 대한 것임을 상기하도록 한다. 이러한 이유로, LBA '5'는 실제로 로우(716)에서 제5 섹터의 어드레스를 지정한다. PBA '20'은 LBA '0'을 저장하는데 사용되었기 때문에, LBA '5'에 대응하는 PBA '20' 내의 섹터만이 아직 기록되어 있지 않아 '비어'있다. 그러므로, LBA '5'에 대한 데이터는 섹터 '5'에 PBA '20'에 저장된다. 로우(716)의 이동 상태 위치(714)는 논리 상태 '8400'(16진수 표기)으로 수정될 것이다. 이것은 LBA '0' 내의 제1 및 제5 섹터의 위치 모두 플래시 메모리 장치(510)에서 PBA '20'으로 식별됨을 반영한다. 도 15의 테이블(700)에서 나머지 값은 도 13에 도시한 것들과 동일한 상태에 있다.
도 16 내지 도 18은 메모리부(508)에 대해서 전원인가후 혹은 블록소거후에 테이블(700)의 상태에 대한 또 다른 예를 도시한 것이다. 도 16 및 도 17에서, 도 11 및 도 12를 참조하여 논한 것들과 동일한 기록 동작이 수행된다. 도 16 및 도 17에서 테이블(700)의 상태는 도 11 및 도 12와 각각 같다(후자의 2개의 도면을 독자의 편의를 위해서 도 16 및 도 17에 다시 그렸다). 요약하여, 도 16은 LBA '0'에 기록 후 테이블(700)의 상태를 도시한 것이며 도 17은 LBA '0'에 또 다른 기록 후 테이블(700)의 상태를 도시한 것이다.
도 18은 도 17 다음에 취해지고 호스트가 LBA '5'에 기록한 후에 테이블(700)의 상태를 도시한 것이다. 도 18에 나타낸 바와 같이, LBA '5'는 LBA '0'이 위치하여 있는 PBA '10'으로 이동되었다. 이 때문에, MBPBA 블록 어드레스 위치(732)는 로우(716)에서 '10'으로 세팅되고 이동 플래그는 동일 로우에서 위치(734)에 세팅된다. 더욱이, 로우(716)에서 이동 상태 위치(714)의 상태는 LBA '0'이 이동되었다는 것, 혹은 LBA '00' 내의 제1 및 제5 섹터가 이동된 것을 나타내는 '8400'(16진수)으로 세팅된다. 이들 2개의 섹터는 플래시 메모리 장치(510)의 현재 PBA 위치 '10'에 위치하여 있기 때문에, 이들 섹터 각각에 대한 이동 플래그도 플래시 메모리 장치(510)에 세팅된다. LBA '5'는 남아있는 비어있는 섹터를 그 블록 내에서 얻을 수 있기 때문에 PBA '10'으로 이동되었음을 알 것이다. 즉, 그 블록의 LBA '0'이 사용된 상태에서도, 동일 블록의 15개의 다른 섹터를 사용할 수 있고, 이로부터 제5 섹터는 LBA '5'에 기록한 후에 이제는 사용중에 있다.
도 19의 예로 계속하여, 호스트가 LBA '0에 다른 때에 기록한 후에 테이블(700)의 상태가 나타나 있다. 테이블에 따라, LBA '5' 및 LBA '0'이 이동된 경우 아직 또 다른 비어있는 PBA 위치, '20'이 발견된다. 먼저, LBA '5'는 위치 PBA '10' 내지 PBA '20'으로 이동되며 이어서 위치 LBA '0'의 새로운 블록이 PBA '20'에 기록된다. 전술한 바와 같이, 블록의 이동(예를 들면, 여기선 LBA '5'의 블록이 이동됨)이 있을 때는 언제든, 제어기(506) 내의 임시 위치, 즉 버퍼 RAM 블록(522)에 현재 있는 플래시 메모리 내의 위치로부터 먼저 이동된 후에 이곳으로부터 플래시 메모리 장치 내의 새로운 위치로 옮겨진다.
로우(720)의 위치(746) 내의 사용된 플래그는 플래시 메모리 내의 PBA '20' 위치의 사용을 반영하도록 세팅되며 위치(744)의 구플래그는 소거될 때까지 PBA '10' 위치의 사용을 파기하도록 세팅된다. 다시, 플래시 메모리에서, 이들 플래그의 상태 및 LBA '0' 및 LBA '5' 양자에 대한 이동 플래그의 상태가 복제된다.
도 20은 도 18에 도시한 테이블(700)의 상태로부터 취해진 것으로 호스트가 LBA '5'에 기록한 후에 테이블(700)의 또 다른 상태를 도시한 것이다. 이 경우, LBA '0'의 블록은 플래시 메모리의 위치 PBA '20'에 현재 저장된 플래시 메모리 장치(510) 내에 위치 PBA '10'로부터 먼저 이동된다. 그후, 호스트에 의해 LBA '5'에 기록되는 새로운 블록은 플래시 메모리의 위치 PBA '20'에 기록된다. 테이블(700) 및 플래시 메모리 장치(510)의 대응하는 위치 양자의 플래그들은 따라서 이들 갱신된 위치를 반영하도록 세팅된다.
도 21은 도 18에 도시한 테이블(700)의 상태로부터 취해진 것으로 호스트가 LBA '7'에 기록한 후에 테이블(700)의 상태를 도시한 것이다. 이 경우, 새로운 블록은 플래시 메모리의 위치 PBA '10'이 아직 사용되지 않았기 때문에 그 위치에 단순히 기록된다. 부가적으로, 로우(716)에서 이동 상태 위치(714)의 3개의 비트는 LBA '0', LBA '5', 및 LBA '7'이 플래시 메모리 내의 또 다른 PBA 위치에 이동되었음을 나타내도록 세팅된다. 위치(732)는 이들 3개의 블록이 저장된 위치가 PBA '10'임을 나타낸다.
지금까지 나타낸 논의로부터 알 수 있듯이, 어떤 시점에서, 블록 내에 이동되는 섹터의 수는 비효율적인 동작에 기여한다. 따라서, 소거될 때까지, 블록이 '구'로 선고되어(구플래그가 세팅되는) 그 블록이 더 이상 사용되지 않게 되기 전에 이동될 수 있는 블록 내의 섹터수에 대한 임계치를 사용자가 설정할 필요성이 발생한다. 이 임계치는 예를 들면 한 블록 내의 섹터 수의 반으로 설정될 수도 있다. 이것은 다음과 같이 설명된다. 16 섹터를 갖는 블록에 대해서, 섹터 중 8개가 또 다른 블록으로 이동될 때, "원(original)" 블록 및 "이동된" 블록(이동된 섹터가 있는 블록)은 동일한 PBA 블록에 결합된다. 결합된 PBA 블록은 새로운 블록과 함께 저장될 수 있거나, 아니면, 대안으로 "원" 블록은 "이동된" 블록과 결합되어 그 블록으로 이동될 수도 있다. 후자의 경우, "원" 블록은 이때 이의 소거를 위해 "구"로 표시된다. 결합된 PBA 블록이 새로운 블록에 저장된다면, "원" 블록 및 "이동된 "블록 양자는 "구"로 표시된다.
도 23은 기록동작 동안 수생되는 단계의 일부를 개괄한 일반적인 흐름도를 도시한 것이다. 이것은 이러한 동작 동안 발생하는 이벤트 일부의 순서를 보이도록 된 것으로, 본 발명의 바람직한 실시예에서 사용되는 방법이나 장치의 모든 것을 포함하는 것은 아니다.
도 23에 개괄한 단계는 시스템의 동작동안 프로그램 코드(혹은 펌웨어)를 실행하는 마이크로프로세서 블록(524)의 지휘하에 수행된다. 호스트가 단계 800에서 LBA M의 블록에 기록할 때, 단계 802에서 공간 관리기 블록(544)은 SPM RAM 블록(548)의 테이블(700)에서 대응하는 사용된 플래그의 상태를 체크하여 LBA M이 사용중에 있는지 여부에 대해 체크한다. 사용중이 아니면, 단계 804에서, 메모리부(508) 내의 다음 비어있는 PBA 블록에 대해 탐색이 수행된다. 어떠한 비어있는 블록도 찾지 못하면, "에러" 상태가 808에서 검출된다. 그러나, 비어있는 PBA를 찾은 경우, 이의 사용된 플래그가 테이블(700) 및 플래시 메모리에서 표시된다(혹은 세팅됨). 단계 810에서, 비어있는 블록의 PBA는 테이블(700)에서 대응하는 LBA 로우의 VPBA 블록 어드레스(702) 위치에 기록된다.
단계 802로 가서, LBA M 블록이 사용중에 있다면, 다음 비어있는 PBA 블록에 대한 탐색이 단계 812에서 여전히 수행되고 이러한 비어있는 블록을 발견못할 시에는 814에서, "에러"상태가 선언된다. 반면, 비어있는 PBA 위치가 발견되면, 단계 818에서 그 PBA는 테이블(700) 및 플래시 메모리에서 사용된 것으로서 표시된다. 다음에, 단계 818에서, 블록의 상태는 이동 플래그를 세팅할뿐만 아니라 테이블(700)의 이동 상태 위치(714)의 적합한 비트를 세팅함으로써 이동된 것으로서 표시된다. 블록이 이동되는 새로운 위치는 상술한 바에 따라 테이블(700)에 표시된다.
마지막으로, 단계 818 및 810 후에, 데이터 및 모든 대응하는 상태 정보, ECC 부호 및 LBA는 플래시 메모리 내의 PBA 위치에 기록된다.
전술한 바와 같이, 블록의 실제 부분이 이동된 섹터(바람직한 실시예에서, 이것은 16 섹터 중 8)를 가질 때, 블록은 이의 대응하는 "구" 플래그를 세팅함으로써 "구"로 선언된다. 주기적으로, 블록의 "구" 플래그가 세팅된 블록은 소거되고 그러면 재사용될 수 있다(혹은 재프로그램되거나, 재기록될 수 있다).
알 수 있는 바와 같이, 도 10-23의 실시예의 이점은 예를 들면, 플래시 메모리 장치 내의 블록을 소거하거나 전체 블록을 플래시 내의 자유영역으로 이동하기 보다는 블록의 임의의 부분(혹은 섹터)이 재기록되고 있다면, 재기록되는 부분만이 플래시 내의 다른 어떤 곳, 즉 MVPA 블록 어드레스로 식별된 자유위치로 옮길 필요가 있기 때문에 호스트에 의해 액세스된 후 매번 소거될 필요가 없다는 것이다. 이에 관련하여, 시간을 소비하는 소거 사이클은 나중까지 회피되고 전체 블록을 읽고 이를 옮길 때 시간이 낭비되지 않는다.
대안 실시예에서, 플래시 메모리에 저장되는 각각의 섹터에 관계된 보다 적은 정보가 있을 수 있다. 마찬가지로, SPM RAM 블록(548)(도 10에서) 내의 테이블(700)은 이하 설명되는 바와 같이 보다 적은 정보를 유지한다.
도 24는 플래시 메모리 칩(이를테면 플래시 메모리 장치(510))이 저장할 수 있는 정보의 예를 도시한 것이다. 도 24는 N개의 블록, 블록(1000, 1002,...,1004)를 도시한 것으로, 각각의 블록은 예로서 m 섹터 사용블록(1000)까지 가지며, 블록(1000) 내의 섹터(1006, 1008,...,1010) 각각은 데이터 필드(1052) 및 ECC 필드(1014)를 포함한다. 바람직한 실시예에서, 데이터 필드(1052)는 512 바이트를 포함하며 ECC 필드(1014)는 다른 크기의 데이터 ECC를 본 발명의 정신에서 벗어남이 없이 사용될 수 있어도 4바이트의 정보를 포함한다.
예를 들면 블록(1000)의 섹터(1006)인 각 블록의 제1 섹터는 부가적으로 블 록이 결함이 있는지 여부를 나타내는 결함 플래그(1016)를 포함한다. 바람직한 실시예에서, 블록 내의 어느 섹터라도 결함이 있다면, 전체 블록은 이하 설명되는 바와 같이 결함이 있는 것으로 표시된다.
블록 내의 각각의 섹터는 여분의 영역(1018)을 더 포함할 수 있다. 각각의 블록엔, 이하 상세히 간략하게 설명되는 바와 같이, 플래시 메모리부 내에 블록을 식별하는 LBA(1020)이 포함되어 있다. 그러나, 도 24엔 블록(1000)의 마지막 섹터(1010) 내에 위치한 것으로 도시되었으나 LBA(1020)은 대안으로 블록(1000)의 임의의 다른 섹터 내에 그리고 위치한 섹터 내의 임의의 영역내에도 위치할 수도 있다. 예를 들면, 섹터(1008)의 여분의 영역(1022) 내에 위치할 수도 있고 아니면 1024에 위치할 수도 있는데, 이것은 블록(1000)의 섹터(1008)에 대해 데이터가 저장되는 위치 바로 앞이다. 블록(1000)에 대해 사용되는 동일한 섹터 조직은 또한 플래시 메모리 장치 내의 블록(1002, 1004)과 같은 남아있는 블록용으로 사용된다.
마찬가지로, 결함 플래그(1012)의 위치는 블록 내의 어떤 곳이 될 수 있다. 예를 들면, 결함 플래그(1012)는 대안으로 1024나 1022에 저장될 수도 있다. 그러나, 블록당 저장되는 단지 하나의 결함 플래그가 있다. 본 발명의 한 면은 결함 플래그가 사용되는 방법에 관계된 것이다.
플래시 메모리 칩을 제조할 동안, 메모리 내의 결함은 칩 제조업자에 의해 일반적으로 식별되어 표시된다. 이것은 통상 결함있는 블록 내에 소정의 위치에 선정된 패턴(바이트 폭)을 기록함으로써 행해진다. 즉, 제조업자는 플래시 칩을 소거할 것이며, 이어서 이를테면 모두 '1'이 성공적으로 소거된 플래시 칩 내의 각각의 메모리 셀에 옮겨질 것이다. 블록 내의 섹터 혹은 셀이 결함이 있다면, 제조업자는 결함있는 블록(도 24에 도시없음) 내의 어떤 곳에 위치한 제조 결함 플래그를 소정의 값으로 세팅할 것이다. 이 제조 결함 플래그는 결함 플래그(1012)와는 동일하지 않으며 이의 위치는 제조업자에 의해 결정되며 설계선택에 의해 결정되지 않는다. 이들 제조업자가 식별한 결함 블록은 시스템 동작 중에 무시된다(혹은 사용되지 않는다). 즉, 공간 관리기 블록(544)(도 10에서)는 이들 결함 블록을 계속 추적하며 플래시 메모리 장치 내의 비어있는 블록을 탐색할 때 이들을 사용하지 않음을 안다.
플래시 칩을 제조하는 중에 검출된 결함 이외에, 전술한 바와 같은 마멸에 기인하여 칩의 동작 중에 나타낸 부가적인 결함이 있을 수 있다. 이들 결함을 종종 업계 전체에 의해 "성장된(grown) 결함"이라고 하며 플래시 메모리 장치를 사용하는 것이 채용된 시스템이 처리해야 한다.
"성장된 결함"의 경우를 시스템 동작 맥락에서 설명할 것이다. 본 발명의 바람직한 실시예에서, 블록(1000)의 소거 후에, 결함 플래그(1012)(도 24에서)는 소거된 블록이 결함이 있는지 여부를 나타내도록 프로그램된다. 즉, 소거된 블록(1000) 내의 셀이 성공적으로 소거되었다면, 결함 플래그(1012)는 블록이 결함이 없다는 것을 나타내는 '55'(16진수)의 바이트 폭의 값과 같은 선정된 값으로 세팅된다. 한편, 블록이 성공적으로 소거되지 않았다면, '55' 이외의 값, 이를테면 '00'이 결함 플래그(1012)에 기록되며, 아니면 대안으로 어떠한 값도 기록되지 않으며 소거 후 결함 플래그의 상태가 무엇이었든(일반적으로, 소거된 상태는 모드 '1'이다(혹은 16진수로 'FF')) 유지될 것이다. 그러나, 후자의 경우, 결함 플래그의 소거된 상태는 성공적인 소거와 구별하도록 '55' 이외의 값이어야 한다.
특히 시스템의 전원인가 후에 결함 플래그(1012)의 사용에 유념한다. 공간 관리기 블록(544)은 각 블록의 결함 플래그를 신속하게 조사하고 각 블록의 결함 플래그(1012)에 값 '55'를 탐색함으로써 나중에 결함이 없는 블록들을 식별함으로써 어느 블록이 결함이 있는지 알아 둔다. 전원인가후 블록이 결함이 없고 나중에 결함이 있게 되면, 이의 결함 플래그는 그러함을 나타내도록 수정되고 다음에 시스에 전원이 인가될 때, 결함있는 블록은 공간 관리기에 의해 주목되어 블록의 어떠한 사용도 회피된다.
기록 동작 동안, 블록의 한 셀 이상의 이상이 발생하면, 블록이 먼저 소거되고 이어서 '55' 이외의 값(예를 들면 '00')을 결함이 있는 블록의 결함 플래그(1012)에 기록함으로써 표시된다. 대안으로, 결함있는 블록의 결함 플래그(10120)에 기록되는 값은 없다.
지금까지 기술된 바와 같은 결함 플래그의 이점 중 하나는 시스템에 전원인가시, 공간 관리기 블록(544)(도 10에서)는 결함이 없는 블록을 신속하게 발견할 수 있다는 것이다.
대안 실시예에서, 도 25에 도시한 바와 같이, 플래시 메모리 장치 내의 각각의 블록에 대한 LBA는 동일 블록의 2개의 상이한 섹터 내에 저장된다. 예를 들면, 블록(1000)이 소거된 후 이 소거에 이어 블록(1000)의 첫 번째 기록 동작 중에, 공간 관리기 블록(544)은 블록(1000) 혹은 이의 일부분이 이에 기록되기에 비어있는하는 것으로 결정한다. 블록(1000)에 관련된 LBA는 이어서 블록(1000)의 2개의 위치(1030, 1020)(각각 섹터 1006 및 1010 내의)에 프로그램된다.
그후, 시스템에 전원이 일시적으로 중단될 때마다, 혹은 전원인가시, 위치(1030, 1020) 내의 2개의 LBA는 서로 비교되고, 이들이 일치하고 결함 플래그(1020)가 그 블록은 결함이 없는 것임을 나타낸다면, 블록은 공간 관리기 블록(544)의 지휘하에 정보저장에 계속 사용된다. 그러나, 결함 플래그(1012)가 블록에 결함은 없음을 나타내고 있으나 2개의 LBA가 일치하지 않는다면, 블록(1000)은 여전히 계속 사용될 것이나 다음 재사용에 앞서 먼저 소거될 것이다. 후자의 경우는 예를 들면, 시스템이 블록(100)에 기록하고 있을 때 그리고 섹터 0부터 시작하는 첫번째 몇몇의 섹터가 블록(1000)의 나머지 섹터에 기록되지 않을 때 일어날 수 있다. 이 경우, 위치(1030, 1020) 내의 LBA 값은 블록(1000)의 섹터 m-1, 혹은 섹터(1010)가 전원중단에 앞서 그에 기록되지 않았기 때문에 일치하지 않을 것이다. 전원복구시, 완전히 기록되지 않기 때문에, 블록(1000)은 전원중단에 앞서 이전 그대로 그의 상태에서 사용되지 말아야 한다. 따라서, 위치(1030, 1020)의 두 개의 LBA 값간 오일치를 검출하였을 때, 제어기(506)(도 10에서)는 이의 재사용에 앞서 블록(1000)을 소거할 것이다.
단지 하나의 LBA만이 블록당 사용되는 경우, 도 24에 도시한 바와 같이, 자명하게, 각 블록 내의 2개의 LBA의 비교는 수행되지 않으나 결함이 있는 블록의 검출은 상술한 바와 같이 결함 플래그의 사용을 통해 유지된다. 부가적으로, LBA는 마지막으로, 즉 블록의 모든 섹터가 기록된 후에 기록될 수 있다. LBA를 마지막으로 기록하는 것은 블록에 성공적으로 기록해야 하는 부가된 조치이다.
본 발명의 또 다른 면을 예시하기 위해서, 도 26은 좌측에, 플래시 메모리 장치의 몇몇 블록의 내용(이것은 도 24에 예시된 동일 정보임)의 예를 도시하고, 우측에 도면의 좌측에 있는 블록정보에 대응하는, 테이블(700)의 내용의 예를 도시한 것이다. 블록 내용을 보이는 목적은 단지 테이블(700)에 관하여 블록의 LBA-PBA 어드레스간 상호관계를 이해함에 있어 독자에게 편의를 주기 위한 것이다. 도 26에 도시한 예는 플래시 메모리에 저장된 블록의 어드레스와 정보가 SPM RAM 블록(548)에 저장된 것과 동일한 블록의 어드레스간에, 이 대안 실시예의 맵핑을 예시하는 것이다. 테이블(700)에서, 컬럼에, 가상 PBA 필드(1036) 및 각 로우에 대한 결함 플래그(1012)를 포함하는 플래그 필드(1038)가 저장된 것으로 나타나 있다. 로우(1040, 1042, 1044,..., 1050) 각각은 LBA에 대응하며 각각 '0', '1', '2',...'Z'에 의해 어드레스가 지정된다. 각각의 로우에 대한 가상 PBA 필드(1036)은 섹터가 저장된 플래시 메모리 내의 블록을 가리키는 LBA 어드레스 포인터를 실제로 포함한다. 이러한 면에서, 가상 PBA는 16 섹터에 대한 PBA로서 작용한다(섹터수는 대안 실시예에서 16개 이외가 될 수도 있다).
호스트가 예를 들면 LBA 05를 판독하도록 명령을 보낸다면, 도 10에서 제어기(506)는 먼저 값 '00'을 얻기 위해서 값 '05'의 4개의 최하위비트(LSB)를 마스크한다. 이어서 테이블(700)에 대한 로우 어드레스로서 '00'을 사용하여, 도 26에 로우(1040)가 어드레스된다. 호스트에 의해 보내진 LBA의 4개의 LSB가 마스크되는 이유는 테이블(700)의 각각의 로우로 나타낸 16개의 섹터가 있기 때문이다. 16 섹터는 4비트로 변환되는 2진 항으로 2의 4의 멱이다. 예를 들면 각각의 로우가 32 섹터를 나타낸다면, 호스트에 의해 보내진 LBA의 5개의 LSB가 마스크될 것이다.
일단 SPM RAM 블록(548) 내의 로우(1040)이 어드레스되었으면, 로우(1040)에 대한 가상 PBA 필드(1036)의 값이 불러들여지는데, 이 경우엔 '00'이다. '00'은 이어서 플래시 메모리 장치 내에 저장된 블록에 대한 포인터로서 사용된다. 즉, 이 예에서, 블록(0), 혹은 블록(1000)(도 26의 좌측에)이 어드레스된다. 그러나 판독되도록 의도되었던 섹터를 얻기 위해서, 호스트에 의해 보내진 LBA 값으로서 초기에 마스크되었던 4비트는 특정하게, 블록(1040) 내에서 제6 섹터인 섹터 '5'(도시없음)를 어드레스하는데 사용된다. 이어서 섹터 5(도시없음)의 데이터 필드(1052)에 저장된 데이터가 불러들여지거나 판독된다. 다음에, 그 동일 섹터의 ECC 필드(1014)가 읽혀진다.
LBA 위치(1020)는 값 '00'을 가질 것이고, 이것은 테이블(700)의 로우(1040)의 가상 PBA 필드(1036)에 저장된 것과 동일한 어드레스값이다. 이것은 전원인가 과정동안 플래시 메모리 장치내의 블록(1000)을 블록 '00'으로서 식별하여 공간 관리기를 갱신하도록 의도된 것이다. 그러나 LBA 위치(1020)는 전술된 호스트에 의해 보내진 LBA값을 나타내지 않는다. 이러한 혼란을 피하기 위해서, 위치(1020)의 값을 LBA 어드레스라기보다는 '클러스터' 어드레스라 칭할 수 있다.
기록동작의 맥락에서 또 다른 예를 예시하기 위해서, 호스트가 LBA '17'(10진수 표기)에 기록할 것을 제어기(506)에 명령한다면, 제어기는 16진수 표기 '17'('11'임)의 LSB를 마스크한다. '17'이 마스크된 것은 16진수 표기로 '1'이 된다. 따라서, 로우(1042)는 테이블(700)에서 어드레스되고 공간 관리기 블록(544)에 의해 발견된 비어있는 블록의 어드레스는 로우(1042)의 가상 PBA 필드(1036)에 두어진다. 이 경우에, 블록(2)은 다음 비어있는 블록으로서 발견된다. 플래시 메모리 장치 내에, 블록(1002)인 블록 2가 어드레스된다. 정보가 실제로 기록된 섹터는 LBA 값 '11'의 4 LSB가 호스트에 의해 보내졌기 때문에 블록(1002)의 섹터 1(그 블록에서 제2 섹터)이다. 이어서 데이터 및 ECC가 블록(1002)의 섹터 1에 기록된다.
도 26의 바람직한 실시예를 도 25를 참조하여 설명된 실시예와 함께 사용한다면, LBA(혹은 클러스터) 어드레스는 각각의 블록 내의 2개의 장소에 기록된다.
삭제
Claims (26)
- 비휘발성 메모리를 가지며, 호스트에 결합되어 상기 비휘발성 메모리에 블록들로 구성된 정보를 저장하기 위한 저장 장치로서, 블록 각각은 그와 연관된 논리 블록 어드레스(LBA) 및 물리 블록 어드레스(PBA)를 가지며, 상기 LBA는 액세스되는 블록을 식별하기 위해 상기 호스트에 의해 상기 저장 장치에 제공되고, 상기 PBA는 상기 액세스된 블록이 저장될 상기 비휘발성 메모리 내의 빈 위치(free location)를 식별하기 위해 상기 저장 장치에 의해 발현되며, 상기 비휘발성 메모리 내에 저장된 블록 각각은 선택적으로 소거 가능하고 하나 이상의 섹터들을 더 갖는, 상기 저장 장치에 있어서,(a) LBA 로우들 각각이 LBA에 의해 고유하게 어드레스가능한, n개의 LBA 로우들에 의해 규정된 테이블을 저장하고, 상기 저장된 블록의 상기 위치를 식별하기 위해 가상 PBA를 저장하고, 상기 저장된 블록의 일부의 위치를 식별하기 위해 이동 가상 PBA를 저장하고, 상기 저장된 블록의 임의의 섹터들이 상기 비휘발성 메모리 내의 상기 이동 가상 PBA 위치들로 이동되었는지 여부를 나타내기 위한 플래그 수단을 포함한 상태 정보를 저장하는 메모리 장치와;(b) 상기 비휘발성 메모리에 저장되는 특정 LBA에 의해 식별되는 정보의 블록을 상기 호스트로부터 수신하고, 상기 특정 LBA가 "사용되지 않은 것"이면 상기 가상 PBA를 발현하며, 상기 특정 LBA가 "사용된 것"이면 상기 이동 가상 PBA를 발현하는 수단을 포함하며,상기 호스트가 상기 저장 장치에 기록할 때마다 소거 동작을 회피하고, 상기 블록의 일부가 재기록될 때마다 상기 비휘발성 메모리 내의 빈 위치에 상기 블록 전체를 이동시키는 것을 회피하기 위해, 상기 블록의 일부들은 상기 비휘발성 메모리 내의 하나보다 많은 식별된 PBA 위치에 저장될 수 있는, 저장 장치.
- 제 1 항에 있어서,상기 LBA 로우들 각각의 상기 상태 정보는 상기 가상 PBA에 의해 식별되는 상기 비휘발성 메모리의 상기 위치에 저장되지 않은 상기 저장된 블록의 하나 이상의 섹터들을 식별하기 위한 섹터 이동 상태 필드를 더 포함하는, 저장 장치.
- 제 1 항에 있어서,상기 LBA 로우들 각각의 상기 상태 정보는 상기 저장된 블록의 어느 섹터들이 상기 가상 PBA에 의해 식별되는 위치에 없는지를 식별하기 위한 섹터 이동 상태 필드를 더 포함하는, 저장 장치.
- 제 1 항에 있어서,하나 이상의 비휘발성 메모리 장치들을 더 포함하며, 상기 장치 각각은, 위치 각각이 블록의 섹터를 저장하기 위해 PBA에 의해 고유하게 어드레스 가능한, 복수의 저장 위치들을 갖는, 저장 장치.
- 제 4 항에 있어서,상기 비휘발성 메모리 장치의 상기 저장 위치들 각각은 상기 플래그 수단의 카피(copy)를 저장하는, 저장 장치.
- 제 4 항에 있어서,상기 비휘발성 메모리 장치의 상기 저장 위치들 각각은, 상기 저장된 블록의 어느 섹터들이 이동되는지를 식별하기 위해 섹터 이동 정보를 저장하기 위한 섹터 이동 상태 위치를 포함하는, 저장 장치.
- 제 3 항 또는 제 6 항에 있어서,파워-업(power-up) 시, 각 PBA의 상기 섹터 이동 정보는 상기 비휘발성 메모리 장치들로부터 판독되고, 상기 테이블의 각각 대응하는 LBA 로우의 상기 섹터 이동 상태 필드에 저장되는, 저장 장치.
- 제 4 항에 있어서,상기 특정 블록은 상기 가상 PBA에 의해 어드레스된 상기 비휘발성 장치들 중 하나의 상기 저장 위치에 저장되는, 저장 장치.
- 제 4 항에 있어서,상기 특정 블록은 상기 이동 가상 PBA에 의해 어드레스된 상기 비휘발성 장치들 중 하나의 상기 저장 위치에 저장되는, 저장 장치.
- 제 1 항에 있어서,상기 플래그 수단은 세팅될 때 대응하는 블록을 "구(old)"로서 식별하는 "구" 플래그 수단과, 세팅될 때 대응하는 블록을 "사용중"으로서 식별하는 "사용된" 플래그 수단을 더 포함하는, 저장 장치.
- 제 3 항 또는 제 10 항에 있어서,상기 섹터 이동 상태 필드가 상기 저장된 블록의 섹터들의 반이 상기 가상 PBA 위치에 없는 것을 나타내는 경우, 상기 저장된 블록의 상기 대응하는 "구" 플래그 수단이 세팅되는, 저장 장치.
- 제 1 항에 있어서,상기 메모리 장치는 휘발성 메모리로 구성되는, 저장 장치.
- 제 12 항에 있어서,상기 휘발성 메모리는 RAM인, 저장 장치.
- 제어기 및 하나 이상의 플래시 메모리 장치들을 갖는, 호스트와 함께 사용하기 위한 저장 장치에서, 상기 제어기의 지시 하에서 상기 플래시 메모리 장치들 내의 정보에 액세스하기 위한 방법으로서, 상기 정보는, 하나 이상의 섹터들이 블록을 규정하는, 섹터들로 구성되며, 각 블록은 선택적으로 소거 가능하며, 그와 연관된, 상기 호스트에 의해 제공되는 LBA와, 섹터가 저장될 수 있는 상기 플래시 메모리 장치들 내의 미사용 위치를 식별하기 위해 상기 제어기에 의해 발현되는 PBA를 가지는, 상기 액세스 방법에 있어서,(a) 상기 제어기 내에서, 로우 각각이 LBA에 의해 개별적으로 어드레스 가능한, 로우들에 의해 규정된 테이블을 할당하는 단계로서, 가상 PBA, 이동 가상 PBA, 및 상기 플래시 메모리 장치들 내에서 상기 가상 PBA로부터 상기 이동 가상 PBA로 이동된 섹터의 위치를 결정하는데 사용하기 위한 상태 정보를 저장하도록 하는, 상기 할당 단계;(b) 상기 호스트에 의해 액세스되는 블록을 식별하는 특정 LBA를 상기 제어기에 제공하는 단계;(c) 상기 특정 LBA와 관련하여 PBA를 발현하는 단계;(d) LBA 로우를 어드레싱하기 위해 상기 특정 LBA를 사용하는 단계;(e) 상기 특정 LBA와 연관된 상기 PBA를 상기 어드레싱된 LBA 로우에 저장하는 단계;(f) 상기 특정 LBA에 의해 식별된 상기 블록의 부가적인 액세스 시, 이동 가상 PBA를 발현하는 단계;(g) 상기 이동 가상 PBA를 상기 어드레싱된 LBA 로우에 저장하는 단계와;(h) 상기 어드레싱된 LBA 로우 내의 어떠한 섹터가 이동되었는지 여부를 나타내기 위해 상기 어드레싱된 LBA 로우의 상기 상태 정보를 변경하는 단계를 포함하며,상기 블록이 액세스될 때마다 기록전 소거 동작들을 회피하기 위해 상기 블록의 섹터들은 상기 플래시 메모리 장치들 내의 미사용 위치들로 이동되는, 액세스 방법.
- 제 14 항에 있어서,상기 특정 블록의 어떤 부분이 상기 이동 가상 PBA에 의해 식별되는 상기 플래시 메모리 장치들 내의 위치에 저장되는지 여부를 나타내는 단계를 더 포함하는, 액세스 방법.
- 제 14 항에 있어서,상기 테이블을 휘발성 메모리에 저장하는 단계를 더 포함하는, 액세스 방법.
- 비휘발성 메모리를 가지며, 호스트에 결합되어 상기 비휘발성 메모리에 블록들로 구성된 정보를 저장하기 위한 저장 장치로서, 블록 각각은 그와 연관된 논리 블록 어드레스(LBA) 및 물리 블록 어드레스(PBA)를 가지며, 상기 LBA는 액세스되는 블록을 식별하기 위해 상기 호스트에 의해 상기 저장 장치에 제공되고, 상기 PBA는 상기 액세스된 블록이 저장될 상기 비휘발성 메모리 내의 빈 위치(free location)를 식별하기 위해 상기 저장 장치에 의해 발현되며, 상기 비휘발성 메모리 내에 저장된 블록 각각은 선택적으로 소거 가능하고 하나 이상의 섹터들을 더 갖는, 상기 저장 장치에 있어서,LBA 로우들 각각이 LBA에 의해 고유하게 어드레스가능한, LBA 로우들에 의해 규정된 테이블을 저장하고, 상기 저장된 블록의 상기 위치를 식별하기 위해 가상 PBA를 저장하고, 상기 저장된 블록의 일부의 위치를 식별하기 위해 이동 가상 PBA를 저장하고, 상기 저장된 블록의 임의의 섹터들이 상기 비휘발성 메모리 내의 상기 이동 가상 PBA 위치들로 이동되었는지 여부를 나타내기 위한 플래그 수단을 포함한 상태 정보를 저장하는 메모리 장치와;상기 비휘발성 메모리에 저장되는 특정 LBA에 의해 식별되는 정보의 블록을 상기 호스트로부터 수신하고, 상기 특정 LBA가 "사용되지 않은 것"이면 상기 가상 PBA를 발현하며, 상기 특정 LBA가 "사용된 것"이면 상기 이동 가상 PBA를 발현하는 수단과;블록들 각각내에 저장되며 성공적으로 소거된 블록들을 식별하기 위해 미리 결정된 값으로 설정되는 결함 플래그를 포함하며,상기 호스트가 상기 저장 장치에 기록할 때마다 소거 동작을 회피하고, 상기 블록의 일부가 재기록될 때마다 상기 비휘발성 메모리 내의 빈 위치에 상기 블록 전체를 이동시키는 것을 회피하기 위해, 상기 블록의 일부들은 상기 비휘발성 메모리 내의 하나보다 많은 식별된 PBA 위치에 저장될 수 있는, 저장 장치.
- 정보를 비휘발성 메모리에 저장하기 위한, 호스트에 결합된, 제어기 장치로서, 상기 정보는, 각 블록이 그와 연관된, 논리 블록 어드레스(LBA)와 물리 블록 어드레스(PBA)를 갖는, 블록들로 구성되고, 상기 LBA는 액세스되는 블록을 식별하기 위해 상기 호스트에 의해 상기 제어기 장치에 제공되고, 상기 PBA는 상기 액세스된 블록이 저장될 상기 비휘발성 메모리 내의 위치를 식별하기 위해 상기 제어기 장치에 의해 발현되며, 상기 비휘발성 메모리 내에 저장된 블록 각각은 선택적으로 소거 가능하고 하나 이상의 섹터들을 더 갖는, 상기 제어기 장치에 있어서,(a) LBA 로우들 각각이 LBA에 의해 고유하게 어드레스가능한, n개의 LBA 로우들에 의해 규정된 테이블을 저장하고, 상기 비휘발성 메모리 내에 블록을 저장하기 위한 제 1 위치를 식별하기 위해 가상 PBA를 저장하고, 상기 비휘발성 메모리 내에 상기 저장된 블록의 하나 이상의 섹터들을 저장하기 위한 제 2 위치를 식별하기 위해 이동 가상 PBA를 저장하고, 상기 저장된 블록의 임의의 섹터들이 상기 비휘발성 메모리 내의 상기 이동 가상 PBA 위치들로 이동되었는지 여부를 나타내기 위한 플래그를 포함한 상태 정보를 저장하는 메모리 장치와;(b) 상기 호스트로부터의 명령에 응답하여, 정보의 블록을 상기 비휘발성 메모리에 저장하도록 동작하는 제어기 수단으로서, 상기 블록은 특정 LBA에 의해 식별되고, 상기 제어기는 상기 특정 LBA가 "사용되지 않은 것"이면 가상 PBA를 발현하고, 상기 특정 LBA가 "사용된 것"이면 이동 가상 PBA를 발현하도록 동작하는, 상기 제어기 수단을 포함하고,상기 제어기는 소거 전에 상기 호스트에 의해 1회보다 많이 액세스될 수 있는 식별된 LBA 블록을 상기 비휘발성 메모리 내의 하나보다 많은 식별된 PBA 위치에 저장하며, 이에 의해, 상기 호스트가 상기 제어기 장치에 기록할 때마다 소거 동작이 회피되며, 상기 블록의 일부가 재기록될 때마다 상기 비휘발성 메모리 내의 다른 위치에 블록 전체를 이동시키는 것이 회피되는, 제어기 장치.
- 제 18 항에 있어서,상기 LBA 로우들 각각의 상기 상태 정보는 상기 이동 가상 PBA 위치에 저장된 블록의 하나 이상의 상기 섹터들을 식별하기 위한 섹터 이동 상태 필드를 더 포함하는, 제어기 장치.
- 제 18 항에 있어서,상기 LBA 로우들 각각의 상기 상태 정보는 상기 저장된 블록의 어떤 섹터들이 상기 이동 가상 PBA 위치에 있는지를 식별하기 위한 섹터 이동 상태 필드를 더 포함하는, 제어기 장치.
- 제 18 항에 있어서,상기 플래그들은 저장된 블록이 "구"인지 여부를 나타내기 위한 "구" 플래그와 상기 저장된 블록이 "사용중"인지 여부를 나타내기 위한 "사용된" 플래그 모두를 더 포함하는, 제어기 장치.
- 저장 장치에 있어서,호스트 프로세서에 결합되어 상기 호스트 프로세서에 의해 할당된 논리 블록 어드레스(LBA)에 의해 식별된 정보를 저장하기 위한 비휘발성 메모리로서, 상기 비휘발성 메모리는 정보 저장 사이트들의 넘버링된 로우들의 블록들로 구성되고, 상기 블록 각각은 물리 블록 어드레스(PBA)에 의해 식별되는, 상기 비휘발성 메모리;저장 사이트들 각각이 특정 LBA에 의해 어드레스 가능한, 복수의 저장 사이트들을 포함하는 테이블을 저장하도록 동작하는 메모리 장치로서, 저장 사이트들 각각은, 특정 LBA에 대응하는 정보가 하나 이상의 로우들에 저장되거나 저장될 상기 비휘발성 메모리 내의 특정 블록을 식별하는 특정 PBA와 연관되는, 상기 메모리 장치;상기 메모리 장치와 결합되며 대응하는 LBA의 호스트로부터의 수신에 응답하여 특정 PBA에 의해 식별된 상기 비휘발성 메모리내의 블록을 액세스하기 위한 제어기로서, 상기 제어기는 데이터를 판독하기 위해 특정 PBA의 적어도 일부에 액세스하거나 상기 액세스된 블록에 데이터를 기록하고, 상기 제어기는 식별하는 LBA를 상기 액세스된 블록 내의 2개의 상이한 위치들에 기록하도록 프로그래밍되고, 거기에 저장된 데이터를 갖는 어떤 블록의 액세스 시, 상기 제어기는 상기 블록 내의 상기 2개의 상이한 위치들에 기록된 상기 LBA들을 비교하고, 상기 LBA들이 매칭하면, 정보 저장을 위해 상기 블록을 이용하지만, 상기 LBA들이 매칭하지 않으면, 재사용 전에 상기 블록을 소거하도록 동작하는, 상기 제어기를 포함하는, 저장 장치.
- 제 22 항에 있어서,블록 각각은 결함 플래그를 포함하지만, 세팅되는 경우, 상기 LBA들이 매칭한다 하더라도 상기 블록이 재사용되는 것을 방지하는, 저장 장치.
- 제어기, 호스트 프로세서에 의해 할당된 논리 블록 어드레스(LBA)에 의해 식별된 정보를 저장하기 위한 비휘발성 메모리, 데이터, 플래그들의 세트를 포함하는 저장 장치로서, 상기 비휘발성 메모리는 정보 저장 사이트들의 넘버링된 로우들의 블록들로 구성되고, 각각의 상기 블록의 적어도 일부는 물리 블록 어드레스(PBA)에 의해 식별되고, 메모리 장치는 제어기에 의해 어드레싱 가능하며 상기 비휘발성 메모리 내의 특정 블록들을 식별하는 대응하는 PBA들로 LBA들을 변환하기 위한 테이블을 저장하고, 특정 LBA에 대응하는 정보는 하나 이상의 로우들에 저장되거나 저장될, 상기 저장 장치에서, 상기 비휘발성 메모리로의 정보의 저장을 관리하는 방법에 있어서,저장될 정보를 수신하는 단계로서, 상기 정보는 상기 호스트 프로세서에 의해 할당된 LBA에 의해 식별되는, 상기 수신 단계;특정 PBA에 의해 식별되고, 상기 정보를 저장하기 위해 이용 가능한 상기 비휘발성 메모리에서의 이용 가능한 블록을 결정하는 단계;상기 이용 가능한 블록의 PBA를 특정 LBA에 의해 어드레스 가능한 상기 메모리 장치내의 위치에 저장하는 단계;상기 정보를 상기 PBA에 의해 식별된 상기 비휘발성 메모리의 상기 블록에 저장하는 단계;상기 블록에서 "사용된" 플래그를 세팅하는 단계;상기 LBA를 상기 정보에 따른 상기 블록의 제 1 위치에 저장하는 단계;상기 LBA를 상기 블록의 제 2 위치에 저장하는 단계와;상기 저장 장치의 각각의 파워-업 시, 상기 블록의 상기 제 1 위치에 저장된 상기 LBA를 상기 블록의 상기 제 2 위치에 저장된 상기 LBA와 비교하고,매칭이 발견되고, 대응하는 "결함" 플래그가 세팅되지 않으면, 상기 데이터는 결함이 없다고 판정하고, 정보 저장을 위해 상기 블록을 계속 사용하며,그러나, 상기 블록의 상기 제 1 위치에 저장된 상기 LBA가 상기 블록의 상기 제 2 위치에 저장된 LBA와 매칭하지 않고, "결함" 플래그도 세팅되지 않으면, 상기 블록은 결함이 없다고 판정하고, 상기 부분이 재사용되기 전에 상기 블록을 소거하는 단계를 포함하는, 정보 저장 관리 방법.
- 각각의 파워-업 시, 결함있는 데이터를 빨리 찾을 수 있도록 비휘발성 메모리를 포함하는 저장 장치로의 정보의 저장을 관리하는 방법에 있어서,논리 블록 어드레스(LBA)에 의해 식별된 정보를 수신하는 단계;상기 정보를 저장하기 위해 상기 비휘발성 메모리내의 이용 가능한 블록 또는 블록의 일부를 결정하는 단계로서, 상기 이용 가능한 블록 또는 그 일부는 물리 블록 어드레스(PBA)에 의해 식별되는, 상기 결정 단계;상기 PBA를 상기 LBA에 의해 어드레스 가능한 휘발성 장치의 위치에 저장하는 단계;상기 정보를 상기 PBA에 의해 식별된 상기 비휘발성 메모리의 상기 블록 또는 상기 블록의 일부에 저장하는 단계;"사용된" 플래그를 세팅하는 단계;상기 LBA를 상기 블록의 제 1 위치에 저장하는 단계;상기 LBA를 상기 블록의 제 2 위치에 저장하는 단계와;상기 저장 장치의 각각의 파워-업 시;상기 제 1 위치에 저장된 상기 LBA를 각각의 제 2 위치에 저장된 상기 LBA와 비교하고, 매칭이 발견되고 "결함" 플래그도 세팅되지 않으면, 상기 데이터는 결함이 없다고 판정하고, 정보 저장을 위해 상기 블록을 계속 사용하고,상기 제 1 위치에 저장된 상기 LBA가 상기 제 2 위치에 저장된 상기 LBA와 매칭하지 않고, 결함 플래그도 세팅되지 않으면, 상기 블록은 결함이 없다고 판정하고, 재사용 전에 상기 블록을 소거하는 단계를 포함하는, 정보 저장 관리 방법.
- 제 25 항에 있어서,상기 저장 장치의 각각의 파워-업 시, 상기 비휘발성 메모리 내의 상기 각각의 PBA가 스캐닝되고, 상기 휘발성 메모리내의 특정 LBA에 대응하는 위치에 저장되는, 정보 저장 관리 방법.
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/831,266 | 1997-03-31 | ||
US08/831,266 US5907856A (en) | 1995-07-31 | 1997-03-31 | Moving sectors within a block of information in a flash memory mass storage architecture |
US8/831,266 | 1997-03-31 | ||
US08/858,847 US5838614A (en) | 1995-07-31 | 1997-05-19 | Identification and verification of a sector within a block of mass storage flash memory |
US8/858,847 | 1997-05-19 | ||
US08/858,847 | 1997-05-19 | ||
PCT/US1998/006335 WO1998044420A1 (en) | 1997-03-31 | 1998-03-31 | Moving sectors within a block in a flash memory |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20010005824A KR20010005824A (ko) | 2001-01-15 |
KR100595909B1 true KR100595909B1 (ko) | 2006-07-06 |
Family
ID=27125428
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019997008898A KR100595909B1 (ko) | 1997-03-31 | 1998-03-31 | 저장장치 및 플래시 메모리 장치내 정보 액세스 방법 및 정보 저장 관리 방법 |
Country Status (6)
Country | Link |
---|---|
US (4) | US5838614A (ko) |
EP (3) | EP0980551B1 (ko) |
JP (4) | JP4132086B2 (ko) |
KR (1) | KR100595909B1 (ko) |
AU (1) | AU6873898A (ko) |
WO (1) | WO1998044420A1 (ko) |
Families Citing this family (275)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5907856A (en) * | 1995-07-31 | 1999-05-25 | Lexar Media, Inc. | Moving sectors within a block of information in a flash memory mass storage architecture |
US5845313A (en) | 1995-07-31 | 1998-12-01 | Lexar | Direct logical block addressing flash memory mass storage architecture |
US6978342B1 (en) * | 1995-07-31 | 2005-12-20 | Lexar Media, Inc. | Moving sectors within a block of information in a flash memory mass storage architecture |
US8171203B2 (en) | 1995-07-31 | 2012-05-01 | Micron Technology, Inc. | Faster write operations to nonvolatile memory using FSInfo sector manipulation |
US6728851B1 (en) * | 1995-07-31 | 2004-04-27 | Lexar Media, Inc. | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices |
US6125435A (en) * | 1995-09-13 | 2000-09-26 | Lexar Media, Inc. | Alignment of cluster address to block addresses within a semiconductor non-volatile mass storage memory |
US6122195A (en) * | 1997-03-31 | 2000-09-19 | Lexar Media, Inc. | Method and apparatus for decreasing block write operation times performed on nonvolatile memory |
JPH10301721A (ja) * | 1997-04-28 | 1998-11-13 | Internatl Business Mach Corp <Ibm> | 情報記憶媒体の欠陥セクタ処理方法及び情報記憶再生装置 |
JP3766188B2 (ja) * | 1997-08-22 | 2006-04-12 | 沖電気工業株式会社 | 論理フォーマット変換方法およびデータ保存媒体 |
JP3233079B2 (ja) | 1997-09-30 | 2001-11-26 | ソニー株式会社 | データ処理システム及びデータ処理方法 |
TW333648B (en) * | 1997-10-30 | 1998-06-11 | Key Technology Corp | The connection structure and algorithm for flash memory |
CN1249585C (zh) * | 1997-12-16 | 2006-04-05 | Tdk株式会社 | 闪速存储器*** |
US6163480A (en) * | 1997-12-29 | 2000-12-19 | Honeywell International Inc. | Memory with high integrity memory cells |
JPH11203266A (ja) * | 1998-01-07 | 1999-07-30 | Mitsubishi Electric Corp | マイクロコンピュータ |
WO1999045460A2 (en) * | 1998-03-02 | 1999-09-10 | Lexar Media, Inc. | Flash memory card with enhanced operating mode detection and user-friendly interfacing system |
JP3937598B2 (ja) * | 1998-07-14 | 2007-06-27 | 株式会社デンソー | 電子制御装置 |
KR100342977B1 (ko) * | 1998-09-28 | 2002-09-18 | 주식회사 하이닉스반도체 | 반도체메모리장치용어드레스콘트롤회로 |
US6901457B1 (en) | 1998-11-04 | 2005-05-31 | Sandisk Corporation | Multiple mode communications system |
US7095843B1 (en) * | 1999-02-09 | 2006-08-22 | Rockwell Electronic Commerce Technologies, Llc | Selective messaging in a multiple messaging link environment |
GB9903490D0 (en) * | 1999-02-17 | 1999-04-07 | Memory Corp Plc | Memory system |
GB2349242A (en) * | 1999-04-20 | 2000-10-25 | Inventec Corp | Flash memory architecture and rewrite method |
US6622199B1 (en) * | 1999-07-02 | 2003-09-16 | Qualcomm Incorporated | Method for minimizing data relocation overhead in flash based file systems |
US6564307B1 (en) * | 1999-08-18 | 2003-05-13 | International Business Machines Corporation | Method, system, and program for logically erasing data |
US6606628B1 (en) * | 2000-02-14 | 2003-08-12 | Cisco Technology, Inc. | File system for nonvolatile memory |
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 |
EP1130516A1 (en) * | 2000-03-01 | 2001-09-05 | Hewlett-Packard Company, A Delaware Corporation | Address mapping in solid state storage device |
US6463516B1 (en) * | 2000-04-25 | 2002-10-08 | Advanced Micro Devices, Inc. | Variable sector size for a high density flash memory device |
US6442067B1 (en) * | 2000-05-23 | 2002-08-27 | Compaq Information Technologies Group, L.P. | Recovery ROM for array controllers |
DE10030990B4 (de) * | 2000-06-30 | 2010-11-25 | Robert Bosch Gmbh | Verfahren zum Beschreiben und Löschen eines nichtflüchtigen Speicherbereichs |
US6721843B1 (en) | 2000-07-07 | 2004-04-13 | Lexar Media, Inc. | Flash memory architecture implementing simultaneously programmable multiple flash memory banks that are host compatible |
US7167944B1 (en) | 2000-07-21 | 2007-01-23 | Lexar Media, Inc. | Block management for mass storage |
US7155559B1 (en) * | 2000-08-25 | 2006-12-26 | Lexar Media, Inc. | Flash memory architecture with separate storage of overhead and user data |
US6772274B1 (en) * | 2000-09-13 | 2004-08-03 | Lexar Media, Inc. | Flash memory system and method implementing LBA to PBA correlation within flash memory array |
JP4534336B2 (ja) | 2000-10-13 | 2010-09-01 | ソニー株式会社 | メモリ装置におけるデータ管理方法 |
US8875116B2 (en) * | 2000-11-17 | 2014-10-28 | Hewlett-Packard Development Company, L.P. | Network for updating firmware and / or software in wireless communication devices |
US7082549B2 (en) * | 2000-11-17 | 2006-07-25 | Bitfone Corporation | Method for fault tolerant updating of an electronic device |
US8479189B2 (en) | 2000-11-17 | 2013-07-02 | Hewlett-Packard Development Company, L.P. | Pattern detection preprocessor in an electronic device update generation system |
US20040068721A1 (en) * | 2000-11-17 | 2004-04-08 | O'neill Patrick | Network for updating firmware and / or software in wireless communication devices |
US20030182414A1 (en) * | 2003-05-13 | 2003-09-25 | O'neill Patrick J. | System and method for updating and distributing information |
US7409685B2 (en) | 2002-04-12 | 2008-08-05 | Hewlett-Packard Development Company, L.P. | Initialization and update of software and/or firmware in electronic devices |
US6832373B2 (en) * | 2000-11-17 | 2004-12-14 | Bitfone Corporation | System and method for updating and distributing information |
US7401320B2 (en) * | 2000-11-17 | 2008-07-15 | Hewlett-Packard Development Company, L.P. | Operator network that routes customer care calls based on subscriber/device profile and CSR skill set |
DE10064649A1 (de) * | 2000-12-22 | 2002-07-04 | Bosch Gmbh Robert | Schnittstelle für einen Speicher und Verfahren zum variablen Konfigurieren einer Speichervorrichtung |
US6763424B2 (en) * | 2001-01-19 | 2004-07-13 | Sandisk Corporation | Partial block data programming and reading operations in a non-volatile memory |
EP1402372B1 (en) * | 2001-07-05 | 2017-09-20 | Panasonic Intellectual Property Management Co., Ltd. | Recording apparatus, medium, method, and related computer program |
US7161899B2 (en) * | 2001-07-20 | 2007-01-09 | Bay Microsystems, Inc. | Interlocking SONET/SDH network architecture |
JP2003058417A (ja) * | 2001-08-21 | 2003-02-28 | Matsushita Electric Ind Co Ltd | 記憶装置 |
JP2003067244A (ja) * | 2001-08-24 | 2003-03-07 | Matsushita Electric Ind Co Ltd | 不揮発性記憶装置及びその制御方法 |
US6614695B2 (en) * | 2001-08-24 | 2003-09-02 | Micron Technology, Inc. | Non-volatile memory with block erase |
GB0123421D0 (en) | 2001-09-28 | 2001-11-21 | Memquest Ltd | Power management system |
GB0123416D0 (en) | 2001-09-28 | 2001-11-21 | Memquest Ltd | Non-volatile memory control |
GB0123410D0 (en) | 2001-09-28 | 2001-11-21 | Memquest Ltd | Memory system for data storage and retrieval |
GB0123417D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Improved data processing |
GB0123415D0 (en) | 2001-09-28 | 2001-11-21 | Memquest Ltd | Method of writing data to non-volatile memory |
KR100449708B1 (ko) * | 2001-11-16 | 2004-09-22 | 삼성전자주식회사 | 플래시 메모리 관리방법 |
WO2003065210A1 (fr) | 2002-01-31 | 2003-08-07 | Matsushita Electric Industrial Co., Ltd. | Appareil de traitement d'informations, appareil de gestion de memoire, procede de gestion de memoire et procede de traitement d'informations |
US6732222B1 (en) * | 2002-02-01 | 2004-05-04 | Silicon Motion, Inc. | Method for performing flash memory file management |
US6839826B2 (en) | 2002-02-06 | 2005-01-04 | Sandisk Corporation | Memory device with pointer structure to map logical to physical addresses |
US7231643B1 (en) | 2002-02-22 | 2007-06-12 | Lexar Media, Inc. | Image rescue system including direct communication between an application program and a device driver |
EP1476873A4 (en) * | 2002-02-22 | 2006-07-05 | Lexar Media Inc | MEMORY HOLDER WITH INTEGRATED LAMP LAMP |
NO20021247D0 (no) * | 2002-03-13 | 2002-03-13 | Ericsson Telefon Ab L M | Fremgangsmåte og system for oppgradering av programvare |
JP2003280979A (ja) * | 2002-03-20 | 2003-10-03 | Toshiba Corp | 情報記憶装置 |
US20040194081A1 (en) * | 2002-03-23 | 2004-09-30 | Iyad Qumei | Update system for facilitating firmware/software update in a mobile handset |
US7369851B2 (en) * | 2002-04-19 | 2008-05-06 | Hewlett-Packard Development Company, L.P. | Communications network capable of determining SIM card changes in electronic devices |
JP2004030849A (ja) * | 2002-06-28 | 2004-01-29 | Fujitsu Ltd | データの一部書き換え機能を有する半導体不揮発性メモリ |
US8233893B2 (en) * | 2002-08-22 | 2012-07-31 | Hewlett-Packard Development Company, L.P. | Mobile handset update package generator that employs nodes technique |
US7340736B2 (en) * | 2002-08-22 | 2008-03-04 | Hewlett-Packard Development Company, L.P. | Electronic device with an update agent that employs preprocessing techniques for update |
US7669197B1 (en) | 2002-09-12 | 2010-02-23 | Hewlett-Packard Development Company, L.P. | Embedded system employing component architecture platform |
US7472380B1 (en) | 2002-09-23 | 2008-12-30 | Hewlett-Packard Development Company, L.P. | Processing system with component architecture platform support |
KR20040028469A (ko) * | 2002-09-30 | 2004-04-03 | 엘지전자 주식회사 | 1 회 기록 가능한 광디스크의 디펙트 영역 관리방법 |
US7233550B2 (en) * | 2002-09-30 | 2007-06-19 | Lg Electronics Inc. | Write-once optical disc, and method and apparatus for recording management information on write-once optical disc |
US7461372B2 (en) * | 2002-10-11 | 2008-12-02 | Hewlett-Packard Development Company, L.P. | System for optimizing distribution of information employing a universal dictionary |
AU2003284292A1 (en) * | 2002-10-21 | 2004-05-13 | Bitfone Corporation | System with required enhancements to syncml dm environment to support firmware updates |
US8412879B2 (en) * | 2002-10-28 | 2013-04-02 | Sandisk Technologies Inc. | Hybrid implementation for error correction codes within a non-volatile memory system |
US7171536B2 (en) * | 2002-10-28 | 2007-01-30 | Sandisk Corporation | Unusable block management within a non-volatile memory system |
US20040093592A1 (en) | 2002-11-13 | 2004-05-13 | Rao Bindu Rama | Firmware update in electronic devices employing SIM card for saving metadata information |
US7984435B2 (en) * | 2002-11-13 | 2011-07-19 | Hewlett-Packard Development Company, L.P. | Update system employing reference software to reduce number of update packages |
US7047448B2 (en) * | 2002-11-21 | 2006-05-16 | Bitfone Corporation | Software self-repair toolkit for electronic devices |
US6996818B2 (en) * | 2002-11-22 | 2006-02-07 | Bitfone Corporation | Update system for facilitating software update and data conversion in an electronic device |
US7434216B1 (en) | 2002-11-25 | 2008-10-07 | Hewlett-Packard Development Company, L.P. | Update package generator that employs genetic evolution to determine bank order |
ATE462184T1 (de) * | 2002-12-11 | 2010-04-15 | Lg Electronics Inc | Überschreibverfahren und informationsaufzeichnungsverfahren für eine einmalig beschreibbare optische diskette |
AU2003300431A1 (en) * | 2002-12-31 | 2004-07-29 | Bitfone Corporation | Management of service components installed in an electronic device in a mobile services network |
EP1435576B1 (en) * | 2003-01-03 | 2013-03-20 | Austria Card Plastikkarten und Ausweissysteme GmbH | Method and apparatus for block-oriented memory management provided in smart card controllers |
US7890427B1 (en) | 2003-01-09 | 2011-02-15 | Hewlett-Packard Development Company, L.P. | Authentication of notifications received in an electronic device in a mobile services network |
US7480907B1 (en) | 2003-01-09 | 2009-01-20 | Hewlett-Packard Development Company, L.P. | Mobile services network for update of firmware/software in mobile handsets |
EP1584016A4 (en) | 2003-01-13 | 2009-03-11 | Hewlett Packard Development Co | MOBILE COMBINER HAVING THE CAPACITY TO UPDATE ITS UPDATE AGENT |
WO2004066091A2 (en) * | 2003-01-21 | 2004-08-05 | Bitfone Corporation | Update system capable of updating software across multiple flash chips |
TWI314315B (en) | 2003-01-27 | 2009-09-01 | Lg Electronics Inc | Optical disc of write once type, method, and apparatus for managing defect information on the optical disc |
US6944063B2 (en) * | 2003-01-28 | 2005-09-13 | Sandisk Corporation | Non-volatile semiconductor memory with large erase blocks storing cycle counts |
EP1597668A4 (en) * | 2003-02-11 | 2009-12-23 | Hewlett Packard Development Co | ELECTRONIC DEVICE FOR SUPPORTING MULTIPLE UPDATING AGENTS |
US20040230965A1 (en) * | 2003-02-28 | 2004-11-18 | Harri Okkonen | Mobile handset network that facilitates interaction between a generic intelligent responsive agent and a service broker server |
US7689981B1 (en) | 2003-02-28 | 2010-03-30 | Hewlett-Packard Development Company, L.P. | Mobile handset with efficient interruption point detection during a multiple-pass update process |
US8082339B2 (en) | 2003-02-28 | 2011-12-20 | Hewlett-Packard Development Company, L.P. | Electronic device network having graceful denial of service |
US7356727B1 (en) | 2003-03-10 | 2008-04-08 | Hewlett-Packard Development Company, L.P. | Electronic device employing efficient fault tolerance |
US7881745B1 (en) | 2003-03-10 | 2011-02-01 | Hewlett-Packard Development Company, L.P. | Electronic device network employing provisioning techniques to update firmware and/or software in electronic devices |
US7548986B1 (en) | 2003-03-17 | 2009-06-16 | Hewlett-Packard Development Company, L.P. | Electronic device network providing streaming updates |
WO2004086196A2 (en) * | 2003-03-24 | 2004-10-07 | Bitfone Corporation | Electronic device supporting multiple update agents |
US7975147B1 (en) | 2003-03-31 | 2011-07-05 | Hewlett-Packard Development Company, L.P. | Electronic device network supporting enciphering and deciphering and update generation in electronic devices |
KR100543447B1 (ko) * | 2003-04-03 | 2006-01-23 | 삼성전자주식회사 | 에러정정기능을 가진 플래쉬메모리장치 |
US7032090B2 (en) * | 2003-04-08 | 2006-04-18 | International Business Machines Corporation | Method, system, and apparatus for releasing storage in a fast replication environment |
GB2400927A (en) * | 2003-04-22 | 2004-10-27 | Hewlett Packard Development Co | Method of managing memory by checking that none of the sectors in a block is needed before erasing the block. |
MXPA05012044A (es) * | 2003-05-09 | 2006-02-03 | Lg Electronics Inc | Disco optico de una sola escritura, metodo y aparato par recuperacion de informacion de administracion de disco del disco optico de una sola escritura. |
RU2385509C2 (ru) * | 2003-05-09 | 2010-03-27 | Эл Джи Электроникс Инк. | Неперезаписываемый оптический диск и способ и устройство для восстановления управляющей информации диска с неперезаписываемого оптического диска |
US7987449B1 (en) | 2003-05-22 | 2011-07-26 | Hewlett-Packard Development Company, L.P. | Network for lifecycle management of firmware and software in electronic devices |
US7069402B2 (en) * | 2003-06-02 | 2006-06-27 | International Business Machines Corporation | Host-independent incremental backup method, apparatus, and system |
US7747994B1 (en) | 2003-06-04 | 2010-06-29 | Hewlett-Packard Development Company, L.P. | Generator based on multiple instruction streams and minimum size instruction set for generating updates to mobile handset |
EP1654640B1 (en) | 2003-06-04 | 2018-08-01 | Qualcomm Incorporated | Network having customizable generators of sofware updates and mobile electronic devices having customizable updating software |
US7584466B1 (en) | 2003-06-16 | 2009-09-01 | Hewlett-Packard Development Company, L.P. | Management tree management in a mobile handset |
US8046753B1 (en) | 2003-06-18 | 2011-10-25 | Hewlett-Packard Development Company, L.P. | Mobile handset with symbian OS and update agent |
EP1639435A4 (en) * | 2003-06-27 | 2009-12-30 | Hewlett Packard Development Co | SYSTEM AND METHOD FOR DOWNLOADING UPDATE PACKAGES INTO A MOBILE HAND APPARATUS IN A CARRIER NETWORK |
US7343443B1 (en) * | 2003-07-08 | 2008-03-11 | Hewlett-Packard Development Company, L.P. | Updated package generation based on analysis of bank dependency |
EP1652100A4 (en) * | 2003-07-09 | 2009-12-16 | Hewlett Packard Development Co | TELECOMMUNICATIONS COMPANY NETWORK FOR PROVIDING REMOTE DIAGNOSIS OF MOBILE COMBINATION |
US7366125B1 (en) | 2003-07-24 | 2008-04-29 | Bbn Technologies Corp. | Extensible satellite communication system |
WO2005013123A1 (en) * | 2003-07-29 | 2005-02-10 | Bitfone Corporation | Mobile handset with update agent implemented in hardware |
US7886093B1 (en) | 2003-07-31 | 2011-02-08 | Hewlett-Packard Development Company, L.P. | Electronic device network supporting compression and decompression in electronic devices |
US7313065B2 (en) | 2003-08-05 | 2007-12-25 | Lg Electronics Inc. | Write-once optical disc, and method and apparatus for recording/reproducing management information on/from optical disc |
CN100511181C (zh) | 2003-08-29 | 2009-07-08 | 松下电器产业株式会社 | 非易失性存储装置及其写入方法 |
KR100880783B1 (ko) * | 2003-09-03 | 2009-02-02 | 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘 피 | 전자 장치에서의 3-단계 부팅 프로세스 |
DE10341618A1 (de) * | 2003-09-10 | 2005-05-04 | Hyperstone Ag | Verwaltung gelöschter Blöcke in Flash-Speichern |
US8555273B1 (en) | 2003-09-17 | 2013-10-08 | Palm. Inc. | Network for updating electronic devices |
US7668612B1 (en) | 2003-09-18 | 2010-02-23 | Hewlett-Packard Development Company, L.P. | System and method for efficient manufacture and update of electronic devices |
EP1665041A1 (en) * | 2003-09-26 | 2006-06-07 | Bitfone Corporation | Update package catalog for update package transfer between generator and content server in a network |
US7559004B1 (en) | 2003-10-01 | 2009-07-07 | Sandisk Corporation | Dynamic redundant area configuration in a non-volatile memory system |
WO2005036916A1 (en) * | 2003-10-03 | 2005-04-21 | Bitfone Corporation | Network and method for registration of mobile devices and management of the mobile devices |
US7716276B1 (en) | 2003-11-17 | 2010-05-11 | Hewlett-Packard Development Company, L.P. | Network that supports user-initiated device management |
US20050125412A1 (en) * | 2003-12-09 | 2005-06-09 | Nec Laboratories America, Inc. | Web crawling |
KR100608602B1 (ko) * | 2003-12-10 | 2006-08-03 | 삼성전자주식회사 | 플래시 메모리, 이를 위한 사상 제어 장치 및 방법 |
US20050132351A1 (en) * | 2003-12-12 | 2005-06-16 | Randall Roderick K. | Updating electronic device software employing rollback |
US7797693B1 (en) | 2003-12-12 | 2010-09-14 | Hewlett-Packard Development Company, L.P. | NAND mobile devices capable of updating firmware or software in a manner analogous to NOR mobile devices |
US8504798B2 (en) | 2003-12-30 | 2013-08-06 | Sandisk Technologies Inc. | Management of non-volatile memory systems having large erase blocks |
US7631138B2 (en) * | 2003-12-30 | 2009-12-08 | Sandisk Corporation | Adaptive mode switching of flash memory address mapping based on host usage characteristics |
US7299314B2 (en) * | 2003-12-31 | 2007-11-20 | Sandisk Corporation | Flash storage system with write/erase abort detection mechanism |
US9323515B1 (en) | 2004-01-16 | 2016-04-26 | Qualcomm Incorporated | Network with broker for device management |
US8838754B1 (en) | 2004-01-26 | 2014-09-16 | Qualcomm Incorporated | Mobile device with a management forest in a device management network |
US7984485B1 (en) | 2004-01-29 | 2011-07-19 | Hewlett-Packard Development Company, L.P. | Ingestion interface for transferring update package containers into a distribution network |
US7551912B2 (en) * | 2004-02-12 | 2009-06-23 | Hewlett-Packard Development Company, L.P. | Device management network that facilitates selective billing |
EP1733555A4 (en) * | 2004-02-23 | 2009-09-30 | Lexar Media Inc | SAFE COMPACT FLASH |
KR101113866B1 (ko) * | 2004-03-19 | 2012-03-02 | 엘지전자 주식회사 | 기록매체내에 기록되는 데이터 구조 및 데이터 기록방법과기록장치 |
US7739679B2 (en) * | 2004-04-06 | 2010-06-15 | Hewlett-Packard Development Company, L.P. | Object ordering tool for facilitating generation of firmware update friendly binary image |
US7725628B1 (en) | 2004-04-20 | 2010-05-25 | Lexar Media, Inc. | Direct secondary device interface by a host |
US7904895B1 (en) | 2004-04-21 | 2011-03-08 | Hewlett-Packard Develpment Company, L.P. | Firmware update in electronic devices employing update agent in a flash memory card |
US7370166B1 (en) | 2004-04-30 | 2008-05-06 | Lexar Media, Inc. | Secure portable storage device |
US7971199B1 (en) | 2004-05-03 | 2011-06-28 | Hewlett-Packard Development Company, L.P. | Mobile device with a self-updating update agent in a wireless network |
US7543118B1 (en) | 2004-05-07 | 2009-06-02 | Hewlett-Packard Development Company, L.P. | Multiple variance platform for the management of mobile devices |
US7689982B1 (en) | 2004-05-07 | 2010-03-30 | Hewlett-Packard Development Company, L.P. | Transparent linker profiler tool with profile database |
US7490283B2 (en) | 2004-05-13 | 2009-02-10 | Sandisk Corporation | Pipelined data relocation and improved chip architectures |
US7657886B1 (en) | 2004-06-03 | 2010-02-02 | Hewlett-Packard Development Company, L.P. | Mobile device with a MMU for faster firmware updates in a wireless network |
WO2005124530A2 (en) | 2004-06-21 | 2005-12-29 | Kabushiki Kaisha Toshiba | Method for controlling memory card and method for controlling nonvolatile semiconductor memory |
KR100622349B1 (ko) * | 2004-08-04 | 2006-09-14 | 삼성전자주식회사 | 불량 블록 관리 기능을 가지는 플레시 메모리 장치 및플레시 메모리 장치의 불량 블록 관리 방법. |
US8526940B1 (en) | 2004-08-17 | 2013-09-03 | Palm, Inc. | Centralized rules repository for smart phone customer care |
US7398348B2 (en) | 2004-08-24 | 2008-07-08 | Sandisk 3D Llc | Method and apparatus for using a one-time or few-time programmable memory with a host device designed for erasable/rewritable memory |
US7594063B1 (en) | 2004-08-27 | 2009-09-22 | Lexar Media, Inc. | Storage capacity status |
US7464306B1 (en) | 2004-08-27 | 2008-12-09 | Lexar Media, Inc. | Status of overall health of nonvolatile memory |
WO2006031052A2 (en) * | 2004-09-14 | 2006-03-23 | Lg Electronics Inc. | Recording medium, and method and apparatus of recording and reproducing data on the same |
US7120051B2 (en) | 2004-12-14 | 2006-10-10 | Sandisk Corporation | Pipelined programming of non-volatile memories using early data |
US7409473B2 (en) | 2004-12-21 | 2008-08-05 | Sandisk Corporation | Off-chip data relocation |
US7849381B2 (en) * | 2004-12-21 | 2010-12-07 | Sandisk Corporation | Method for copying data in reprogrammable non-volatile memory |
US7187583B2 (en) * | 2005-01-25 | 2007-03-06 | Phison Electronics Corp. | Method for reducing data error when flash memory storage device using copy back command |
US20060175271A1 (en) * | 2005-01-31 | 2006-08-10 | Emrey David A | Apparatus and method of holding a golf score card and writing instrument, and golf bag and system incorporating the same |
US8015568B2 (en) * | 2005-02-28 | 2011-09-06 | Hitachi Global Storage Technologies Netherlands B.V. | Disk drive/CPU architecture for distributed computing |
US7206230B2 (en) | 2005-04-01 | 2007-04-17 | Sandisk Corporation | Use of data latches in cache operations of non-volatile memories |
US20070022172A1 (en) * | 2005-07-19 | 2007-01-25 | Anglin Howard N | Controlling presentation of instant messages to a recipient |
US7624239B2 (en) * | 2005-11-14 | 2009-11-24 | Sandisk Corporation | Methods for the management of erase operations in non-volatile memories |
US7783845B2 (en) * | 2005-11-14 | 2010-08-24 | Sandisk Corporation | Structures for the management of erase operations in non-volatile memories |
US7644251B2 (en) * | 2005-12-19 | 2010-01-05 | Sigmatel, Inc. | Non-volatile solid-state memory controller |
EP1966701A2 (en) * | 2005-12-21 | 2008-09-10 | Nxp B.V. | Memory with block-erasable locations |
KR100781520B1 (ko) * | 2006-02-24 | 2007-12-03 | 삼성전자주식회사 | 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 이를위한 맵핑 정보 복구 방법 |
FR2901035B1 (fr) * | 2006-05-11 | 2008-07-11 | St Microelectronics Sa | Procede et dispositif de gestion d'une table de correspondance d'acces a une memoire |
EP2025095A2 (en) | 2006-06-08 | 2009-02-18 | Hewlett-Packard Development Company, L.P. | Device management in a network |
FI120220B (fi) * | 2006-06-08 | 2009-07-31 | Tellabs Oy | Menetelmä ja järjestely transaktioiden käsittelemiseksi flash-tyyppisessä muistivälineessä |
EP2047420A4 (en) | 2006-07-27 | 2009-11-18 | Hewlett Packard Development Co | USER EXPERIENCE AND DEPENDENCE MANAGEMENT IN A MOBILE DEVICE |
US20080079539A1 (en) * | 2006-08-15 | 2008-04-03 | Daley Robert C | Friends Finder Service for a Mobile Device in a Network |
KR100843133B1 (ko) * | 2006-09-20 | 2008-07-02 | 삼성전자주식회사 | 플래시 메모리에서 매핑 정보 재구성을 위한 장치 및 방법 |
CN101162608B (zh) * | 2006-10-10 | 2010-12-01 | 北京华旗资讯数码科技有限公司 | 闪存的存储块的标识方法 |
KR101342074B1 (ko) * | 2006-10-25 | 2013-12-18 | 삼성전자 주식회사 | 컴퓨터시스템 및 그 제어방법 |
KR20080044505A (ko) * | 2006-11-16 | 2008-05-21 | 삼성전자주식회사 | 데이터를 관리하는 장치 및 방법 |
US9104599B2 (en) | 2007-12-06 | 2015-08-11 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for destaging cached data |
US8443134B2 (en) * | 2006-12-06 | 2013-05-14 | Fusion-Io, Inc. | Apparatus, system, and method for graceful cache device degradation |
WO2008070813A2 (en) | 2006-12-06 | 2008-06-12 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for a front-end, distributed raid |
US8489817B2 (en) | 2007-12-06 | 2013-07-16 | Fusion-Io, Inc. | Apparatus, system, and method for caching data |
US9495241B2 (en) | 2006-12-06 | 2016-11-15 | Longitude Enterprise Flash S.A.R.L. | Systems and methods for adaptive data storage |
US8706968B2 (en) * | 2007-12-06 | 2014-04-22 | Fusion-Io, Inc. | Apparatus, system, and method for redundant write caching |
US9116823B2 (en) | 2006-12-06 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for adaptive error-correction coding |
WO2008084531A1 (ja) * | 2007-01-10 | 2008-07-17 | Netcleus Systems Corporation | メモリ管理装置 |
KR100877609B1 (ko) * | 2007-01-29 | 2009-01-09 | 삼성전자주식회사 | 버퍼 메모리의 플래그 셀 어레이를 이용하여 데이터 오류 정정을 수행하는 반도체 메모리 시스템 및 그 구동 방법 |
JP4640366B2 (ja) * | 2007-03-23 | 2011-03-02 | Tdk株式会社 | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
US8239639B2 (en) * | 2007-06-08 | 2012-08-07 | Sandisk Technologies Inc. | Method and apparatus for providing data type and host file information to a mass storage system |
US8713283B2 (en) * | 2007-06-08 | 2014-04-29 | Sandisk Technologies Inc. | Method of interfacing a host operating through a logical address space with a direct file storage medium |
US20080307156A1 (en) * | 2007-06-08 | 2008-12-11 | Sinclair Alan W | System For Interfacing A Host Operating Through A Logical Address Space With A Direct File Storage Medium |
US20080320253A1 (en) * | 2007-06-19 | 2008-12-25 | Andrew Tomlin | Memory device with circuitry for writing data of an atomic transaction |
US8266391B2 (en) * | 2007-06-19 | 2012-09-11 | SanDisk Technologies, Inc. | Method for writing data of an atomic transaction to a memory device |
US8122322B2 (en) | 2007-07-31 | 2012-02-21 | Seagate Technology Llc | System and method of storing reliability data |
TW200919448A (en) | 2007-10-17 | 2009-05-01 | Silicon Motion Inc | Storage device and method of accessing a status thereof |
US9519540B2 (en) | 2007-12-06 | 2016-12-13 | Sandisk Technologies Llc | Apparatus, system, and method for destaging cached data |
US7836226B2 (en) | 2007-12-06 | 2010-11-16 | Fusion-Io, Inc. | Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment |
US8316277B2 (en) * | 2007-12-06 | 2012-11-20 | Fusion-Io, Inc. | Apparatus, system, and method for ensuring data validity in a data storage process |
US7675776B2 (en) * | 2007-12-21 | 2010-03-09 | Spansion, Llc | Bit map control of erase block defect list in a memory |
US8239611B2 (en) | 2007-12-28 | 2012-08-07 | Spansion Llc | Relocating data in a memory device |
US8775758B2 (en) * | 2007-12-28 | 2014-07-08 | Sandisk Technologies Inc. | Memory device and method for performing a write-abort-safe firmware update |
US8219595B2 (en) | 2008-02-14 | 2012-07-10 | Hewlett-Packard Development Company, L.P. | System and method for efficient remote data access for server management |
US9015209B2 (en) | 2008-12-16 | 2015-04-21 | Sandisk Il Ltd. | Download management of discardable files |
US9104686B2 (en) | 2008-12-16 | 2015-08-11 | Sandisk Technologies Inc. | System and method for host management of discardable objects |
US8375192B2 (en) | 2008-12-16 | 2013-02-12 | Sandisk Il Ltd. | Discardable files |
US8849856B2 (en) * | 2008-12-16 | 2014-09-30 | Sandisk Il Ltd. | Discardable files |
US9020993B2 (en) | 2008-12-16 | 2015-04-28 | Sandisk Il Ltd. | Download management of discardable files |
US8205060B2 (en) | 2008-12-16 | 2012-06-19 | Sandisk Il Ltd. | Discardable files |
US7925925B2 (en) * | 2008-12-30 | 2011-04-12 | Intel Corporation | Delta checkpoints for a non-volatile memory indirection table |
US8040744B2 (en) | 2009-01-05 | 2011-10-18 | Sandisk Technologies Inc. | Spare block management of non-volatile memories |
US8094500B2 (en) | 2009-01-05 | 2012-01-10 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partitioning |
US8700840B2 (en) | 2009-01-05 | 2014-04-15 | SanDisk Technologies, Inc. | Nonvolatile memory with write cache having flush/eviction methods |
US8244960B2 (en) * | 2009-01-05 | 2012-08-14 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partition management methods |
US20100235473A1 (en) * | 2009-03-10 | 2010-09-16 | Sandisk Il Ltd. | System and method of embedding second content in first content |
TWI457940B (zh) * | 2009-05-15 | 2014-10-21 | Macronix Int Co Ltd | 區塊為基礎快閃記憶體之位元組存取 |
US8495467B1 (en) | 2009-06-30 | 2013-07-23 | Micron Technology, Inc. | Switchable on-die memory error correcting engine |
US8412985B1 (en) | 2009-06-30 | 2013-04-02 | Micron Technology, Inc. | Hardwired remapped memory |
US8412987B2 (en) * | 2009-06-30 | 2013-04-02 | Micron Technology, Inc. | Non-volatile memory to store memory remap information |
US20110002169A1 (en) | 2009-07-06 | 2011-01-06 | Yan Li | Bad Column Management with Bit Information in Non-Volatile Memory Systems |
KR101594029B1 (ko) | 2009-07-06 | 2016-02-16 | 삼성전자주식회사 | 데이터 조작 방법 및 그 방법을 이용하는 시스템 장치 |
WO2011031796A2 (en) | 2009-09-08 | 2011-03-17 | Fusion-Io, Inc. | Apparatus, system, and method for caching data on a solid-state storage device |
KR101638061B1 (ko) | 2009-10-27 | 2016-07-08 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그것의 플래시 조각 모음 방법 |
US8621169B2 (en) * | 2009-12-10 | 2013-12-31 | Blackberry Limited | Method for address space layout randomization in execute-in-place code |
JP2011129192A (ja) * | 2009-12-16 | 2011-06-30 | Samsung Electronics Co Ltd | 半導体記憶装置 |
US8468294B2 (en) | 2009-12-18 | 2013-06-18 | Sandisk Technologies Inc. | Non-volatile memory with multi-gear control using on-chip folding of data |
US20110302224A1 (en) * | 2010-06-08 | 2011-12-08 | Rahav Yairi | Data storage device with preloaded content |
US8549229B2 (en) | 2010-08-19 | 2013-10-01 | Sandisk Il Ltd. | Systems and methods for managing an upload of files in a shared cache storage system |
US8463802B2 (en) | 2010-08-19 | 2013-06-11 | Sandisk Il Ltd. | Card-based management of discardable files |
US8966184B2 (en) | 2011-01-31 | 2015-02-24 | Intelligent Intellectual Property Holdings 2, LLC. | Apparatus, system, and method for managing eviction of data |
US8874823B2 (en) | 2011-02-15 | 2014-10-28 | Intellectual Property Holdings 2 Llc | Systems and methods for managing data input/output operations |
US9003104B2 (en) | 2011-02-15 | 2015-04-07 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a file-level cache |
US9201677B2 (en) | 2011-05-23 | 2015-12-01 | Intelligent Intellectual Property Holdings 2 Llc | Managing data input/output operations |
WO2012116369A2 (en) | 2011-02-25 | 2012-08-30 | Fusion-Io, Inc. | Apparatus, system, and method for managing contents of a cache |
US8788849B2 (en) | 2011-02-28 | 2014-07-22 | Sandisk Technologies Inc. | Method and apparatus for protecting cached streams |
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 |
CN103164345B (zh) * | 2011-12-08 | 2016-04-27 | 光宝科技股份有限公司 | 固态存储装置遭遇断电后的数据存储方法 |
US9767032B2 (en) | 2012-01-12 | 2017-09-19 | Sandisk Technologies Llc | Systems and methods for cache endurance |
US9251052B2 (en) | 2012-01-12 | 2016-02-02 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer |
US10102117B2 (en) | 2012-01-12 | 2018-10-16 | Sandisk Technologies Llc | Systems and methods for cache and storage device coordination |
US9251086B2 (en) | 2012-01-24 | 2016-02-02 | SanDisk Technologies, Inc. | Apparatus, system, and method for managing a cache |
US10359972B2 (en) | 2012-08-31 | 2019-07-23 | Sandisk Technologies Llc | Systems, methods, and interfaces for adaptive persistence |
US9116812B2 (en) | 2012-01-27 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a de-duplication cache |
US8924636B2 (en) * | 2012-02-23 | 2014-12-30 | Kabushiki Kaisha Toshiba | Management information generating method, logical block constructing method, and semiconductor memory device |
US10019353B2 (en) | 2012-03-02 | 2018-07-10 | Longitude Enterprise Flash S.A.R.L. | Systems and methods for referencing data on a storage medium |
US8842473B2 (en) | 2012-03-15 | 2014-09-23 | Sandisk Technologies Inc. | Techniques for accessing column selecting shift register with skipped entries in non-volatile memories |
US8910017B2 (en) | 2012-07-02 | 2014-12-09 | Sandisk Technologies Inc. | Flash memory with random partition |
US9612966B2 (en) | 2012-07-03 | 2017-04-04 | Sandisk Technologies Llc | Systems, methods and apparatus for a virtual machine cache |
US10339056B2 (en) | 2012-07-03 | 2019-07-02 | Sandisk Technologies Llc | Systems, methods and apparatus for cache transfers |
US8750043B2 (en) * | 2012-08-16 | 2014-06-10 | Winbond Electronics Corp. | Data storage device and control method for non-volatile memory |
US9490035B2 (en) | 2012-09-28 | 2016-11-08 | SanDisk Technologies, Inc. | Centralized variable rate serializer and deserializer for bad column management |
US9076506B2 (en) | 2012-09-28 | 2015-07-07 | Sandisk Technologies Inc. | Variable rate parallel to serial shift register |
US8897080B2 (en) | 2012-09-28 | 2014-11-25 | Sandisk Technologies Inc. | Variable rate serial to parallel shift register |
US9842053B2 (en) | 2013-03-15 | 2017-12-12 | Sandisk Technologies Llc | Systems and methods for persistent cache logging |
JP6179355B2 (ja) * | 2013-10-31 | 2017-08-16 | 富士通株式会社 | 情報処理装置、データ転送制御方法及びデータ転送制御プログラム |
CN104657678B (zh) * | 2013-11-19 | 2018-01-09 | 北京兆易创新科技股份有限公司 | 应答保护单调计数器、读取方法及计数方法 |
JP6123766B2 (ja) * | 2014-09-18 | 2017-05-10 | カシオ計算機株式会社 | データ読み出し装置、プログラムおよびデータ読み出し方法 |
US9959059B2 (en) * | 2014-10-20 | 2018-05-01 | Sandisk Technologies Llc | Storage error management |
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 |
US9564219B2 (en) | 2015-04-08 | 2017-02-07 | Sandisk Technologies Llc | Current based detection and recording of memory hole-interconnect spacing defects |
US9269446B1 (en) | 2015-04-08 | 2016-02-23 | Sandisk Technologies Inc. | Methods to improve programming of slow cells |
US10248418B2 (en) * | 2015-06-30 | 2019-04-02 | International Business Machines Corporation | Cleared memory indicator |
US10635307B2 (en) * | 2015-06-30 | 2020-04-28 | International Business Machines Corporation | Memory state indicator |
US10884945B2 (en) * | 2015-06-30 | 2021-01-05 | International Business Machines Corporation | Memory state indicator check operations |
US10002042B2 (en) * | 2015-10-22 | 2018-06-19 | Sandisk Technologies Llc | Systems and methods of detecting errors during read operations and skipping word line portions |
US9996268B2 (en) | 2015-12-18 | 2018-06-12 | Toshiba Memory Corporation | Memory system and control method of the same |
US10037164B1 (en) | 2016-06-29 | 2018-07-31 | EMC IP Holding Company LLC | Flash interface for processing datasets |
US10089025B1 (en) | 2016-06-29 | 2018-10-02 | EMC IP Holding Company LLC | Bloom filters in a flash memory |
US10146438B1 (en) | 2016-06-29 | 2018-12-04 | EMC IP Holding Company LLC | Additive library for data structures in a flash memory |
US10331561B1 (en) | 2016-06-29 | 2019-06-25 | Emc Corporation | Systems and methods for rebuilding a cache index |
US10261704B1 (en) | 2016-06-29 | 2019-04-16 | EMC IP Holding Company LLC | Linked lists in flash memory |
US10055351B1 (en) | 2016-06-29 | 2018-08-21 | EMC IP Holding Company LLC | Low-overhead index for a flash cache |
JP6982468B2 (ja) * | 2017-10-27 | 2021-12-17 | キオクシア株式会社 | メモリシステムおよび制御方法 |
CN112530494B (zh) * | 2019-09-17 | 2024-06-25 | 硅存储技术股份有限公司 | 具有存储的索引信息的非易失性存储器设备 |
CN112582009B (zh) * | 2020-12-11 | 2022-06-21 | 武汉新芯集成电路制造有限公司 | 单调计数器及其计数方法 |
US11922011B2 (en) * | 2021-09-01 | 2024-03-05 | Micron Technology, Inc. | Virtual management unit scheme for two-pass programming in a memory sub-system |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR940022572A (ko) * | 1993-03-11 | 1994-10-21 | 윌리암 티.엘리스 | 일괄소거형 비휘발성 메모리 |
KR960032163A (ko) * | 1995-02-16 | 1996-09-17 | 기다오까 다까시 | 반도체 디스크 장치 |
Family Cites Families (85)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3789393A (en) | 1972-10-26 | 1974-01-29 | Inductosyn Corp | Digital/analog converter with amplitude and pulse-width modulation |
US3866893A (en) | 1974-02-05 | 1975-02-18 | Richard Hoberman | Apparatus for desoldering scrap radiator cores and recovering separated metals |
US4210959A (en) * | 1978-05-10 | 1980-07-01 | Apple Computer, Inc. | Controller for magnetic disc, recorder, or the like |
FR2426938A1 (fr) * | 1978-05-26 | 1979-12-21 | Cii Honeywell Bull | Dispositif de detection de secteurs defectueux et d'allocation de secteurs de remplacement dans une memoire a disques |
US4355376A (en) * | 1980-09-30 | 1982-10-19 | Burroughs Corporation | Apparatus and method for utilizing partially defective memory devices |
JPS5764383A (en) * | 1980-10-03 | 1982-04-19 | Toshiba Corp | Address converting method and its device |
JPS57132256A (en) * | 1981-02-09 | 1982-08-16 | Sony Corp | Memory device |
JPS5877034A (ja) * | 1981-10-30 | 1983-05-10 | Hitachi Ltd | 記録方法 |
US4450559A (en) * | 1981-12-24 | 1984-05-22 | International Business Machines Corporation | Memory system with selective assignment of spare locations |
JPS58215795A (ja) * | 1982-06-08 | 1983-12-15 | Toshiba Corp | 不揮発性メモリ装置 |
JPS58215794A (ja) * | 1982-06-08 | 1983-12-15 | Toshiba Corp | 不揮発性メモリ装置 |
US4498146A (en) * | 1982-07-30 | 1985-02-05 | At&T Bell Laboratories | Management of defects in storage media |
JPS5945695A (ja) * | 1982-09-07 | 1984-03-14 | Fujitsu Ltd | Icメモリ |
US4710871A (en) * | 1982-11-01 | 1987-12-01 | Ncr Corporation | Data transmitting and receiving apparatus |
AU557723B2 (en) * | 1982-12-17 | 1987-01-08 | Blue Circle Southern Cement Ltd. | Electronic memory system |
JPS59162695A (ja) * | 1983-03-07 | 1984-09-13 | Nec Corp | 記憶装置 |
US4896262A (en) * | 1984-02-24 | 1990-01-23 | Kabushiki Kaisha Meidensha | Emulation device for converting magnetic disc memory mode signal from computer into semiconductor memory access mode signal for semiconductor memory |
JPS60212900A (ja) * | 1984-04-09 | 1985-10-25 | Nec Corp | 半導体固定記憶装置 |
JPS6196598A (ja) * | 1984-10-17 | 1986-05-15 | Fuji Electric Co Ltd | 電気的消去可能なp−romのカウントデ−タ記憶方法 |
US4654847A (en) * | 1984-12-28 | 1987-03-31 | International Business Machines | Apparatus for automatically correcting erroneous data and for storing the corrected data in a common pool alternate memory array |
JPS61208673A (ja) * | 1985-03-12 | 1986-09-17 | Matsushita Electric Ind Co Ltd | 情報記録再生装置 |
US4744062A (en) * | 1985-04-23 | 1988-05-10 | Hitachi, Ltd. | Semiconductor integrated circuit with nonvolatile memory |
JPS62102482A (ja) * | 1985-10-28 | 1987-05-12 | Matsushita Electric Ind Co Ltd | 情報記録再生装置 |
JP2664137B2 (ja) * | 1985-10-29 | 1997-10-15 | 凸版印刷株式会社 | Icカード |
US4800520A (en) * | 1985-10-29 | 1989-01-24 | Kabushiki Kaisha Toshiba | Portable electronic device with garbage collection function |
US4924331A (en) * | 1985-11-20 | 1990-05-08 | Seagate Technology, Inc. | Method for mapping around defective sectors in a disc drive |
US4746998A (en) * | 1985-11-20 | 1988-05-24 | Seagate Technology, Inc. | Method for mapping around defective sectors in a disc drive |
US4757474A (en) * | 1986-01-28 | 1988-07-12 | Fujitsu Limited | Semiconductor memory device having redundancy circuit portion |
JPH07109717B2 (ja) * | 1986-05-31 | 1995-11-22 | キヤノン株式会社 | メモリ書き込み制御方法 |
JP2685173B2 (ja) * | 1986-05-31 | 1997-12-03 | キヤノン株式会社 | メモリ書き込み制御方法 |
US4953122A (en) * | 1986-10-31 | 1990-08-28 | Laserdrive Ltd. | Pseudo-erasable and rewritable write-once optical disk memory system |
JPS63183700A (ja) * | 1987-01-26 | 1988-07-29 | Mitsubishi Electric Corp | Eepromアクセス方法 |
US5268319A (en) * | 1988-06-08 | 1993-12-07 | Eliyahou Harari | Highly compact EPROM and flash EEPROM devices |
US5268318A (en) * | 1988-06-08 | 1993-12-07 | Eliyahou Harari | Highly compact EPROM and flash EEPROM devices |
US5198380A (en) * | 1988-06-08 | 1993-03-30 | Sundisk Corporation | Method of highly compact EPROM and flash EEPROM devices |
US5268870A (en) * | 1988-06-08 | 1993-12-07 | Eliyahou Harari | Flash EEPROM system and intelligent programming and erasing methods therefor |
US5168465A (en) * | 1988-06-08 | 1992-12-01 | Eliyahou Harari | Highly compact EPROM and flash EEPROM devices |
US5293560A (en) * | 1988-06-08 | 1994-03-08 | Eliyahou Harari | Multi-state flash EEPROM system using incremental programing and erasing methods |
US4914529A (en) * | 1988-07-18 | 1990-04-03 | Western Digital Corp. | Data disk defect handling using relocation ID fields |
US5070474A (en) * | 1988-07-26 | 1991-12-03 | Disk Emulation Systems, Inc. | Disk emulation system |
US5535328A (en) * | 1989-04-13 | 1996-07-09 | Sandisk Corporation | Non-volatile memory system card with flash erasable sectors of EEprom cells including a mechanism for substituting defective cells |
DE69024086T2 (de) * | 1989-04-13 | 1996-06-20 | Sundisk Corp | EEprom-System mit Blocklöschung |
US5226168A (en) * | 1989-04-25 | 1993-07-06 | Seiko Epson Corporation | Semiconductor memory configured to emulate floppy and hard disk magnetic storage based upon a determined storage capacity of the semiconductor memory |
US5200959A (en) * | 1989-10-17 | 1993-04-06 | Sundisk Corporation | Device and method for defect handling in semi-conductor memory |
US5303198A (en) * | 1990-09-28 | 1994-04-12 | Fuji Photo Film Co., Ltd. | Method of recording data in memory card having EEPROM and memory card system using the same |
DE69021732T2 (de) * | 1990-12-04 | 1996-01-18 | Hewlett Packard Ltd | Wiederprogrammierbare Datenspeicherungsanlage. |
GB2251324B (en) * | 1990-12-31 | 1995-05-10 | Intel Corp | File structure for a non-volatile semiconductor memory |
US5270979A (en) * | 1991-03-15 | 1993-12-14 | Sundisk Corporation | Method for optimum erasing of EEPROM |
US5504760A (en) * | 1991-03-15 | 1996-04-02 | Sandisk Corporation | Mixed data encoding EEPROM system |
US5396468A (en) * | 1991-03-15 | 1995-03-07 | Sundisk Corporation | Streamlined write operation for EEPROM system |
US5663901A (en) * | 1991-04-11 | 1997-09-02 | Sandisk Corporation | Computer memory cards using flash EEPROM integrated circuit chips and memory-controller systems |
JPH04332999A (ja) * | 1991-05-07 | 1992-11-19 | Hitachi Koki Co Ltd | メモリの使用方法 |
JP2582487B2 (ja) * | 1991-07-12 | 1997-02-19 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 半導体メモリを用いた外部記憶システム及びその制御方法 |
US5430859A (en) * | 1991-07-26 | 1995-07-04 | Sundisk Corporation | Solid state memory system including plural memory chips and a serialized bus |
US5438573A (en) * | 1991-09-13 | 1995-08-01 | Sundisk Corporation | Flash EEPROM array data and header file structure |
US5778418A (en) * | 1991-09-27 | 1998-07-07 | Sandisk Corporation | Mass computer storage system having both solid state and rotating disk types of memory |
JPH05151097A (ja) * | 1991-11-28 | 1993-06-18 | Fujitsu Ltd | 書換回数制限型メモリのデータ管理方式 |
JPH05233426A (ja) * | 1992-02-20 | 1993-09-10 | Fujitsu Ltd | フラッシュ・メモリ使用方法 |
FR2689253B1 (fr) | 1992-03-24 | 1997-01-24 | Souriau & Cie | Dispositif de moulage comportant une contre-piece de guidage de broches pour le moulage de viroles de connecteurs de fibres optiques, et virole moulee au moyen d'un tel dispositif. |
JPH05282886A (ja) * | 1992-03-31 | 1993-10-29 | Toshiba Corp | 不揮発性半導体メモリ装置 |
US5532962A (en) * | 1992-05-20 | 1996-07-02 | Sandisk Corporation | Soft errors handling in EEPROM devices |
US5315541A (en) * | 1992-07-24 | 1994-05-24 | Sundisk Corporation | Segmented column memory array |
US5428621A (en) * | 1992-09-21 | 1995-06-27 | Sundisk Corporation | Latent defect handling in EEPROM devices |
US5341330A (en) * | 1992-10-30 | 1994-08-23 | Intel Corporation | Method for writing to a flash memory array during erase suspend intervals |
US5337275A (en) * | 1992-10-30 | 1994-08-09 | Intel Corporation | Method for releasing space in flash EEPROM memory array to allow the storage of compressed data |
US5357475A (en) * | 1992-10-30 | 1994-10-18 | Intel Corporation | Method for detaching sectors in a flash EEPROM memory array |
JP3641280B2 (ja) * | 1992-10-30 | 2005-04-20 | インテル・コーポレーション | フラッシュeepromアレイのクリーン・アップすべきブロックを決定する方法 |
US5586285A (en) * | 1993-02-19 | 1996-12-17 | Intel Corporation | Method and circuitry for increasing reserve memory in a solid state memory disk |
US5388083A (en) * | 1993-03-26 | 1995-02-07 | Cirrus Logic, Inc. | Flash memory mass storage architecture |
US5485595A (en) * | 1993-03-26 | 1996-01-16 | Cirrus Logic, Inc. | Flash memory mass storage architecture incorporating wear leveling technique without using cam cells |
US5479638A (en) * | 1993-03-26 | 1995-12-26 | Cirrus Logic, Inc. | Flash memory mass storage architecture incorporation wear leveling technique |
US5353256A (en) * | 1993-06-30 | 1994-10-04 | Intel Corporation | Block specific status information in a memory device |
US5422842A (en) * | 1993-07-08 | 1995-06-06 | Sundisk Corporation | Method and circuit for simultaneously programming and verifying the programming of selected EEPROM cells |
US5566314A (en) * | 1993-08-30 | 1996-10-15 | Lucent Technologies Inc. | Flash memory device employing unused cell arrays to update files |
JP3215237B2 (ja) * | 1993-10-01 | 2001-10-02 | 富士通株式会社 | 記憶装置および記憶装置の書き込み/消去方法 |
JPH07111092A (ja) * | 1993-10-12 | 1995-04-25 | Nec Corp | 不揮発性半導体記憶装置の制御方法 |
US5661053A (en) * | 1994-05-25 | 1997-08-26 | Sandisk Corporation | Method of making dense flash EEPROM cell array and peripheral supporting circuits formed in deposited field oxide with the use of spacers |
US5546558A (en) * | 1994-06-07 | 1996-08-13 | Hewlett-Packard Company | Memory system with hierarchic disk array and memory map store for persistent storage of virtual mapping information |
US5508971A (en) * | 1994-10-17 | 1996-04-16 | Sandisk Corporation | Programmable power generation circuit for flash EEPROM memory systems |
JPH08137634A (ja) * | 1994-11-09 | 1996-05-31 | Mitsubishi Electric Corp | フラッシュディスクカード |
JPH08212019A (ja) * | 1995-01-31 | 1996-08-20 | Mitsubishi Electric Corp | 半導体ディスク装置 |
GB2291991A (en) * | 1995-09-27 | 1996-02-07 | Memory Corp Plc | Disk drive emulation with a block-erasable memory |
US5933847A (en) * | 1995-09-28 | 1999-08-03 | Canon Kabushiki Kaisha | Selecting erase method based on type of power supply for flash EEPROM |
US5953737A (en) * | 1997-03-31 | 1999-09-14 | Lexar Media, Inc. | Method and apparatus for performing erase operations transparent to a solid state storage system |
WO2008103771A1 (en) | 2007-02-20 | 2008-08-28 | Haiyun Tang | Adaptive transmission power control for cognitive radio |
-
1997
- 1997-05-19 US US08/858,847 patent/US5838614A/en not_active Expired - Lifetime
-
1998
- 1998-03-31 EP EP98914371.4A patent/EP0980551B1/en not_active Expired - Lifetime
- 1998-03-31 EP EP06076505.4A patent/EP1717707B1/en not_active Expired - Lifetime
- 1998-03-31 KR KR1019997008898A patent/KR100595909B1/ko not_active IP Right Cessation
- 1998-03-31 EP EP10011451A patent/EP2278471A1/en not_active Withdrawn
- 1998-03-31 AU AU68738/98A patent/AU6873898A/en not_active Abandoned
- 1998-03-31 JP JP54192898A patent/JP4132086B2/ja not_active Expired - Lifetime
- 1998-03-31 WO PCT/US1998/006335 patent/WO1998044420A1/en active IP Right Grant
- 1998-09-18 US US09/156,951 patent/US6128695A/en not_active Expired - Lifetime
-
2000
- 2000-03-07 US US09/520,903 patent/US6223308B1/en not_active Expired - Lifetime
-
2001
- 2001-04-23 US US09/841,522 patent/US6393513B2/en not_active Expired - Lifetime
-
2005
- 2005-03-30 JP JP2005100228A patent/JP2005251219A/ja not_active Withdrawn
-
2008
- 2008-12-08 JP JP2008312772A patent/JP5035636B2/ja not_active Expired - Lifetime
-
2011
- 2011-07-14 JP JP2011156137A patent/JP5440883B2/ja not_active Expired - Lifetime
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR940022572A (ko) * | 1993-03-11 | 1994-10-21 | 윌리암 티.엘리스 | 일괄소거형 비휘발성 메모리 |
KR960032163A (ko) * | 1995-02-16 | 1996-09-17 | 기다오까 다까시 | 반도체 디스크 장치 |
Also Published As
Publication number | Publication date |
---|---|
JP5440883B2 (ja) | 2014-03-12 |
US20010029564A1 (en) | 2001-10-11 |
EP1717707A1 (en) | 2006-11-02 |
EP0980551A1 (en) | 2000-02-23 |
JP2012009034A (ja) | 2012-01-12 |
EP0980551A4 (en) | 2005-11-30 |
JP2009110538A (ja) | 2009-05-21 |
JP4132086B2 (ja) | 2008-08-13 |
JP2005251219A (ja) | 2005-09-15 |
US6223308B1 (en) | 2001-04-24 |
EP1717707B1 (en) | 2014-11-05 |
AU6873898A (en) | 1998-10-22 |
KR20010005824A (ko) | 2001-01-15 |
EP0980551B1 (en) | 2014-11-19 |
US6393513B2 (en) | 2002-05-21 |
JP2002508862A (ja) | 2002-03-19 |
US5838614A (en) | 1998-11-17 |
WO1998044420A1 (en) | 1998-10-08 |
JP5035636B2 (ja) | 2012-09-26 |
EP2278471A1 (en) | 2011-01-26 |
US6128695A (en) | 2000-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100595909B1 (ko) | 저장장치 및 플래시 메모리 장치내 정보 액세스 방법 및 정보 저장 관리 방법 | |
US8554985B2 (en) | Memory block identified by group of logical block addresses, storage device with movable sectors, and methods | |
US6145051A (en) | Moving sectors within a block of information in a flash memory mass storage architecture | |
EP1029278B1 (en) | Moving sequential sectors within a block of information in a flash memory mass storage architecture | |
US5924113A (en) | Direct logical block addressing flash memory mass storage architecture | |
JP2005516264A (ja) | 不揮発性メモリ上で実行されるブロック書き込み動作時間を低減させる方法および装置 | |
JP2004326523A (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: 20130531 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20140603 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20150601 Year of fee payment: 10 |
|
FPAY | Annual fee payment |
Payment date: 20160527 Year of fee payment: 11 |
|
FPAY | Annual fee payment |
Payment date: 20170530 Year of fee payment: 12 |
|
EXPY | Expiration of term |