KR101139224B1 - 소거/재기록 가능 메모리를 위해 고안된 호스트 장치에사용할 수 있는 한 번 또는 몇 번의 프로그램이 가능한메모리를 위한 방법 및 장치 - Google Patents

소거/재기록 가능 메모리를 위해 고안된 호스트 장치에사용할 수 있는 한 번 또는 몇 번의 프로그램이 가능한메모리를 위한 방법 및 장치 Download PDF

Info

Publication number
KR101139224B1
KR101139224B1 KR1020077002998A KR20077002998A KR101139224B1 KR 101139224 B1 KR101139224 B1 KR 101139224B1 KR 1020077002998 A KR1020077002998 A KR 1020077002998A KR 20077002998 A KR20077002998 A KR 20077002998A KR 101139224 B1 KR101139224 B1 KR 101139224B1
Authority
KR
South Korea
Prior art keywords
controller
data
memory array
address
write
Prior art date
Application number
KR1020077002998A
Other languages
English (en)
Other versions
KR20070046844A (ko
Inventor
크리스토퍼 에스 무어
아드리안 지데이
매트 프루인
치아 양
데릭 보쉬
Original Assignee
샌디스크 쓰리디 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 샌디스크 쓰리디 엘엘씨 filed Critical 샌디스크 쓰리디 엘엘씨
Publication of KR20070046844A publication Critical patent/KR20070046844A/ko
Application granted granted Critical
Publication of KR101139224B1 publication Critical patent/KR101139224B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/08Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers from or to individual record carriers, e.g. punched card, memory card, integrated circuit [IC] card or smart card
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1068Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • G06F2212/2142Solid state disk using write-once memory, e.g. OTPROM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data

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)
  • Quality & Reliability (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Communication Control (AREA)

Abstract

본 발명은 한 번 또는 몇 번 프로그램 가능한 메모리가 펌웨어 업그레이드 없이도 기존 소비자 전자 장치들 (예를 들면, 소거 가능, 비휘발성 메모리인 플래시를 사용하는 장치)과 동작될 수 있게 해주므로, 사용자의 불편을 최소화하는 동시에 후방 호환성을 제공한다. 즉, 본 발명은 한 번 또는 몇 번 프로그램이 가능한 메모리와, 플래시 카드 슬롯이 있는 소비자 전자 장치의 연결을 가능하게 해준다. 미래의 전자 장치 또한 이 펌웨어를 갱신하지 않고서도 한 번 또는 몇 번 프로그램 가능한 메모리에 맞는 파일 시스템을 구성할 수 있게 해 준다.
소거/재기록 가능 메모리, 메모리 어레이, 페이지 레지스터

Description

소거/재기록 가능 메모리를 위해 고안된 호스트 장치에 사용할 수 있는 한 번 또는 몇 번의 프로그램이 가능한 메모리를 위한 방법 및 장치{Method And Apparatus For Using A One-Time Or Few-Time Programmable Memory With A Host Device Designed For Erasable/Rewriteable Memory}
이 출원서는 2004년 8월 24일자로 출원된 미국 가출원 제60/604,353호에 기초한 우선권을 주장한다.
디지털 카메라, 디지털 오디오 리코더,퍼스널 컴퓨터 등과 같이, 호스트 장치에 손쉽게 탈부착이 가능한 모듈 방식의 휴대용 비휘발성 메모리 장치들이 있다. 이러한 장치에 사용되었던 플래시 카드와 같은 전통적인 메모리는 재기록가능하므로, 시스템이나 사용자의 필요에 따라 메모리 주소를 소거하고 다시 쓸 수 있도록 해준다. 한 번 프로그램이 가능하거나(OTP) 혹은 몇 번 프로그램이 가능한(FTP), 저렴한 가격의 메모리 기술 개발은 메모리로 하여금 호스트 장치와 어울려, 아날로그 카메라에 대한 필름과 같은 새로운 사용 모델을 제공한다. 사용자는 사진을 찍어 프린트하는 한편, 값싼 메모리를 "네가티브" 필름처럼 보관할 수 있게 된다. 이상적으로는 이와 같이 저렴한 카드를 보통의 플래시 카메라에 사용할 수 있어야 하지만, 테크놀로지들 간에 호환성이 반드시 존재하는 것은 아니므로, 휴대용 장치 들은 보통 시스템 구조가 소거가능할 것이 요구되는 DOS FAT12/16 파일 시스템을 사용하고 있다. OPT나 FTP 메모리 테크놀로지에 맞게 짜여진 파일 시스템이 있는 장치에 대해서는 그 펌웨어를 업그레이드하면 문제를 해결할 수 있지만, 이 방법에 따르면 소프트웨어가 업그레이드된 최신형 카메라만으로 시장이 제한되거나, 사용자가 기존에 사용하던 카메라를 적절한 소프트웨어로 직접 업그레이드해 주어야 하는 불편이 따른다. 따라서, 최종 사용자가 기존 카메라에 비교적 문제없이 OTP나 FTP 메모리 카드를 사용할 수 있게 해주는 하드웨어 제어기 솔루션-후방 호환성 제어기(BCC)-이 요구된다.
본 명세서에 후술됨.
본 발명에 따른 실시예들을 첨부된 도면을 참조하여 이하에서 상세히 설명한다.
도 1은 본 발명의 일 실시예에 따른 호스트 장치와 메모리 장치의 블록 다이어그램이다.
도 2는 본 발명의 일 실시예에 따른 제어기의 블록 다이어그램이다.
도 3은 본 발명의 일 실시예에 따른 메모리 맵이다.
도 4는 본 발명의 일 실시예에 따른 스마트 필터 로직의 동작을 설명한 순서도이다.
도 5는 본 발명의 일 실시예에 따른 32 바이트 파일 목록 구조를 도시한 것 이다.
도 6은 본 발명의 일 실시예에 따른 FAT 표를 나타낸다.
도 7은 도 6에 있는 FAT 표와 관련된 파일 리스트의 일 예이다.
도 8과 9는 본 발명의 일 실시예에 따른 스마트 필터의 동작을 도시한 것이다.
도 10은 본 발명의 일 실시예에 따른 사이드밴드 지역에 리맵(remap) 정보를 저장할 때 데이터를 읽기 위한 순서도이다.
도 11은 본 발명의 일 실시예에 따른 동적 리맵 할당 방법의 순서도이다.
도 12는 본 발명의 일 실시예에 따른 리맵의 예에 사용되는 메모리 맵을 도시한 것이다.
도 13은 본 발명의 일 실시예에 따른 패리티 비트의 배치를 도시한 것이다.
시스템 개요
본 실시예는 한 번 또는 몇 번 프로그램 가능한 메모리가 펌웨어 업그레이드 없이도 기존 소비자 전자 장치들 (예를 들어, 소거 가능, 비휘발성 메모리인 플래시를 사용하는 장치들)과 동작될 수 있게 해주므로, 사용자의 불편을 최소화하는 동시에 기존 장치와 호환성을 제공한다. 또한, 한 번 또는 몇 번 프로그램이 가능한 메모리와, 플래시 카드 슬롯이 있는 전자 장치의 연결을 가능하게 해준다. 나아가, 장래의 소비자 전자 장치들이 펌웨어를 갱신하지 않고서도 한 번 또는 몇 번 프로그램 가능한 메모리에 맞는 파일 시스템을 가질 수 있게 해준다.
본 발명에 따른 실시예들을 첨부된 도면을 참조하여 이하에서 상세히 설명한다.
도 1은 본 발명의 일 실시예에 따른 호스트 장치(5)와 메모리 장치(10)의 블록 다이어그램이다. 호스트 장치(5)와 메모리 장치(10)는 상호 전기적으로 연결하는 전기 커넥터를 각각 포함한다. 여기서, "연결(coupled with)"은 하나 또는 그 이상의 개재되는(intervening) 부품과 함께 직접 또는 간접적으로 연결되는 것을 의미한다. 호스트 장치(5)는 디지털 스틸 또는 동영상 카메라, 개인 휴대 정보 단말기, 핸드폰, 디지털 오디오 플레이어 또는 퍼스널 컴퓨터 (USB 리더/라이터 혹은 PCMCIA 카드 어댑터가 있는것, 등)와 같은 전자 장치로 구현될 수 있으나, 반드시 여기에 한정되지는 않는다. 본 실시예에서 호스트 장치(5)는 DOS-FAT 파일 시스템과 같은 여러번 쓰기 파일 시스템(7)을 포함한다.
메모리 장치(10)는 메모리 카드나 스틱과 같은 모듈 형식의 컴팩트한 휴대용 장치로 구현될수 있다. 메모리 장치(10)는 제어기(20)와 한 번 쓰기 메모리 어레이(30)를 포함한다. 도 2는 제어기(20)의 블록 다이어그램이다. 도 2에 나타난 바와 같이, 제어기(20)에서는 전방 버스(32)는 전방 버스 프로토콜 로직(36)과, 후방 버스(34)는 후방 버스 프로토콜 로직( 38)과 각각 연결되어 있다. 전방 버스 프로토콜 로직(36)은 멀티미디어, 보안 디지털, 메모리 스틱, 컴팩트 플래시, 스마트 미디어, xD, USB, HS-MMC 혹은 시중에 나와 있는 다수의 휴대용 스토리지에 사용될 수 있다. 후방 버스 프로토콜 로직(38)은 NAND 플래시, NOR 플래시, 혹은 사유 또는 공공 메모리 인터페이스 어디든지 설정될 수 있다. 제어기(20) 또한 두 페이지 레지스터 (페이지 레지스터 0 및 페이지 레지스터 1) (40, 42), 스마트 필터 로직(44), 리맵 로직(46) 그리고 스마트 ECC 로직(48)을 포함한다. 편의상, 도 2에 도시되지 않았지만, 메모리 장치(10) 또한 클로킹 네트워크와 그 이외의 "글루(glue)" 로직을 포함한다. 아래에 구체적으로 설명된 것과 같이, 제어기(20)는 여러번 쓰기 파일 시스템을 사용하여 메모리 장치(10)와 구형의 호스트 장치가 호환되게 해준다. 제어기(20)는 이 명세서에서 "후방 호환성 제어기" 혹은 "BCC"로 불리기도 한다.
제어기(20)는, 본 실시예에서, 표준 조합 논리와 결합된 유한 상태 기계 (Mealy 와/또는 Moore)를 사용하는 ASIC으로 구현된다. 제어기(20)는 마이크로콘트롤러 혹은 펌웨어가 구비된 마이크로프로세서로도 구현될 수 있으며, 기타 다양한 다른 방식으로도 구현될 수 있다. 추가로, 본 실시예에서 제어기(20)는 후방 버스(34)가 구비된 메모리 어레이(30)로부터 분리되어 있지만, 비용을 절약하기 위하여 하나의 다이에 통합되도록 디자인될 수 있다. 본 실시예에서, 제어기(20)의 디자인은 재기록형 메모리 테크놀로지에 사용되는 제어기와 매우 유사하다. 차이점 중 하나로, 본 실시예의 제어기(20)는 웨어 레벨링(wear leveling)이나 비활성 메모리 소거와 연관된 다른 로직을 그다지 필요로 하지 않는다. 여기에 제시된 디자인도 이런 추가 블록들과 기능이 포함되게 할 수 있지만, 비용 문제를 고려한다면 최상의 방법으로 보기 어렵다. 따라서, 이들은 필요에 따라 얼마든지 제외가능하다. 이와 마찬가지로, 호환성 문제를 피하기 위해, 새로운 소프트웨어 파일 시스템을 사용하는 OTP 혹은 FTP 메모리와 함께 동작하도록 디자인된 아주 저렴한 가격의 제어기는 한 페이지 레지스터, 리맵 로직 혹은 스마트 필터 로직 이상은 필요로 하지 않는다.
한 번 쓰기 메모리 어레이(30)는 복수의 필드-프로그래머블 한번 쓰기 메모리 셀을 포함한다. 필드-프로그래머블 한번 쓰기 메모리 셀은 프로그램되지 않은 초기 디지털 상태를 갖도록 제작되지만, 제작된 이후에는 프로그램된 디지털 상태로 전환될 수 있다. 예를 들어, 프로그램되지 않은 초기 상태를 논리 1(혹은 논리 0)로 정하고, 프로그램된 디지털 상태를 논리 0(혹은 논리 1)으로 정할 수 있다. 메모리 셀은 한번만 기록가능하므로, 스토리지 위치(예, 논리 1 상태)의 프로그램되지 않은 초기 디지털 상태는 일단 프로그램된 디지털 상태 (예, 논리 0 상태)로 전환되면, 복원될 수 없다. 한 번만 프로그램 가능한 (예,한 번 쓰기) 메모리 어레이 대신, 메모리 어레이(30)는 한 번 이상 쓰기는 가능하지만 여러 번 쓰기 메모리 어레이만큼 쓰기는 불가능한, 수 회 기록 프로그래머블(FTP) 메모리 어레이로 구현될 수 있다. 또한, 메모리 장치(10)는 추가 메모리 어레이(한 번 쓰기, 수 회 프로그램 가능, 또는 여러 번 쓰기)를 포함할 수 있다.
한 번 쓰기 메모리 어레이(30)는 고체 상태 메모리 장치(즉 전기적 읽기나 쓰기 신호에 반응할 수 있는 메모리 장치), 자기 스토리지 장치(하드 드라이브), 또는 광학 스토리지 장치(CD 또는 DVD) 등으로 구현될 수 있다. 메모리 어레이( 30)의 메모리 셀은, 고체 상태 메모리 단위로 구현될 때, 2 차원 또는 3 차원으로 구성될 수 있다. 일 실시예에서, 메모리 어레이(30)는 Johnson의 미국 특허 제 6,034,882호, Zhang의 미국 특허 제5,835,396호, 미국 출원 제09/560,626호에 개시된 것과 같은 3 차원 어레이이다. 이들 특허들은 모두 본 출원서에 참조되었다.
실시예들을 설명하기 위해, DOS FAT파일 시스템 (예를 들면, 윈도우 운영 체제)이 여러 번 쓰기 파일 시스템(7)의 예로 사용된다. 하지만, 실시예들은 다른 종류의 여러 번 쓰기 파일 시스템들과도 사용될 수도 있다. 도 3은 여러가지 파일 시스템 구조를 보여주는, 통상적인 FAT 12/16 기준 스토리지 카드의 메모리 맵(50)이다. 여기서, "파일 시스템 구조"는 메모리 파티션을 설명하는 모든 데이터, 파티션 내의 메모리 공간을 설명하는 모든 데이터 및/또는 파일 시스템이 그 파티션에 사용할 수 있거나 혹은 사용할 수 없는 명령어들의 종류를 설명하는 모든 데이터를 나타낸다. 파일 시스템 구조의 예로는 매스터 부트 레코드(master boot record), 파티션 부트 레코드(partition boot record), 파일 할당 도표 ("FAT" 혹은 "FAT 도표"), 루트 디렉터리 및 서브 디렉터리가 포함되나, 이들로 한정되는 것은 아니다. 매스터 부트 레코드(Master boot record, MBR)는 각 논리적 파티션의 시작 위치 뿐 아니라, 카드 (예, 메모리 장치(10))의 부트 정보를 저장하는데 사용된다. 대부분의 메모리 카드는, 본 실시예에서와 같이, 단 하나의 논리적 파티션만을 포함한다. 본 실시예에서, 클러스터 크기, 클러스터 번호, 파티션 종류, 파티션 이름 등이 포함된 파티션 부트 레코드(partition boot record, PBR)는 0x4000 주소에서 시작된다. FAT1은 각 파일, 디렉토리 및 카드(10)에 기록된 그 밖의 다른 정보의 클러스터 번호 목록이 포함된 FAT 표 1에 대응한다. FAT2는 FAT 표 2에 대응한다. 루트 디렉토리와 파일 데이터 영역은 물리적 주소 0xC200에서 시작한다. 이 영역들은 클러스터로 나뉘어져 각 FAT 표의 클러스터 번호에 대응된다. 본 실시예를 설명하기 위해서, 하나의 클러스터는 정확히 4 KB의 크기를 갖는다고 가정한다. 다만, 이는 FAT 파일 시스템의 일 예일 뿐이며, 이 발명을 한정하고자 함이 아니다. 각 구조의 다른 위치, 다른 클러스터 크기는 물론, 다른 파일 시스템도 앞으로 설명될 실시예들에서 사용될 수 있다. 시스템의 전반적인 구성 요소와 함께, 하드웨어 제어기(20)의 스마트 필터 로직(44), 리맵 로직(46), 및 스마트 ECC 로직(48)이 소거가능 플래시 메모리를 위해 디자인된 호스트 장치로 하여금 어떻게 OTP 메모리를 실질적으로 균등(seamless)하게 사용할 수 있게 해 주는지 설명하고자 한다. 이 로직 블록들은 다수의 기존 호스트 장치들이 소거 명령을 보내는 대신 소거 관리 (예, 웨어 레벨링과 가비지 수집) 를 위해 제어기(20)에 의존한다는 사실을 활용한다. 호스트 장치는 기존의 어떤 주소를 읽었을 때 그 곳에 가장 최근의 데이터가 존재하기를 기대한다. 위에서 설명한 것과 같이, 제어기는 이 로직 블록들 몇 개 또는 전부를 사용할 수 있으며, 특별히 기술되어 있지 않는 한, 청구범위에 있어서 세 개 블록 전부를 사용할 것이 요구되지는 않는다.
스마트 필터 로직(44)
스마트 필터 로직(44)은 제어기(20)로 하여금, 사용자 동작에 기초하여 호스트 동작을 변경할 수 있게 해준다. 스마트 필터 로직(44)의 일 형태는 쓰기전 읽기 동작을 실행하여 어떤 주소에 기록될 것이 지시된 데이터를 그 주소에 이미 기록되어 있는 데이터 (예, "새" 데이터와 "오래된" 데이터의 비교)와 비교하는 것이다. 가장 간단한 예로서, 스마트 필터 로직(44)은 사전에 기록된 데이터가 어떠한 형태로든 변경되었을 경우에 리맵 동작을 수행할 수 있으나, 이는 바람직하지 않은 사용자 모델을 야기할 수 있다. 복잡도를 높이고 데이터의 상이점을 지능적으로 조사함으로써, 제어기(20)는 호스트 장치(5)가 시도하려는 것을 추론할 수 있고, 따라서 다음 동작 중에서 하나를 선택해 실행한다. 즉, 주소에 새로운 데이터를 기입하거나, 데이터를 "가짜 쓰기(fake write)"(즉, 실제로는 아무것도 기록하지 않지만, 호스트 장치(5)에게 쓰기 동작이 성공적으로 실행되었다고 알림)하거나, 쓰기를 허락하지 않고 카드 에러를 발생시키거나 또는 리맵 동작 실행하는 것 중 하나를 선택할 수 있다. 도 4의 순서도는 이를 설명하고 있다. 후방 호환가능 제어기(20) (동작 60)는 쓰기 동작을 수신한다. 데이터가 빈 페이지에 씌여지거나 첨부(appended) (동작 65)되는 경우에 제어기(20)는 호스트 장치(5)가 요구하는 대로 데이터를 기록한다(동작 70). "마지막으로 액세스된” 필드가 업데이트되고 있거나 FAT 표를 "0"으로 만들려는 시도가 있는 경우, 제어기(20)는 "가짜 쓰기"(동작 80)를 수행한다. 기입되는 곳이 PBR이거나 또는 리맵 지역 충돌 (동작 85)이 일어났을 경우, 제어기(20)는 카드 에러를 발생시킨다(동작 90). 그 외의 쓰기 동작(동작 95)에 대해 제어기(20)는 리맵 동작을 수행한다. 이 분기들은 아래에서 더 상세히 설명될 것이다. 다만, 스마트 필터 로직(44)은 순서도에 나타난 네 가지 분기들 모두 혹은 네 가지 분기보다 적은 숫자 혹은 순서도에 나타나 있지 않은 추가 분기들을 실행할 수 있음은 물론이다. 도 4에 도시된 바와 같이, 스마트 필터 로직(44)은 데이터가 기록되는 장소에 따른 바람직한 별개의 작업을 실행한다. 그러므로, 스마트 필터 로직(44)은 새로운 데이터 뿐 아니라 호스트가 요청하는 주소도 모니터하는 것이 바람직하다. 예를 들어, FAT 표에 쓰기를 위해 배치된 필터는 사용자 데이터 영역에 쓰기를 위해 배치된 필터와 다를 수 있다. 따라서, 제어기(20)는 FAT 표의 주소와 카드(10)안의 다른 파일 시스템 구조에 대한 정보를 가지고 있는 것이 바람직하다. 이는 이 주소들을 고정시키고 로직 안에 고정 코드화되게 함으로써, 시동시 제어기(20)가 MBR과 PBR을 읽고 해석하게 함으로써, 혹은 시동할 때 다양한 구성 데이터를 제공하는 "매직 페이지(magic page)"에 주소들을 저장함으로 실행할 수 있다.
스마트 필터를 완전히 이해하기 위해서는, 먼저 사용자가 메모리 장치에 실행할 수 있는 작업과, 이들 작업이 어떻게 파일 시스템 구조와 데이터를 처리하는 명령으로 번역되는지를 이해할 것이 요구된다. 먼저, 사용자가 사진을 찍거나, 파일을 복사하거나, 새 파일을 저장하거나, 파일을 메모리 카드로 옮길 경우에, 일반적으로 일어나는 과정을 설명한다. 다만, 이 작업은 장치에 따라 다소 차이가 있을 수도 있다. 첫째, 호스트 장치는 FAT 표들 중 어느 하나 혹은 두 개 전부를 읽어, 카드 상의 사용할 수 있는 빈 공간을 파악한다. 이 빈 공간은 FAT 16 파일 클러스터에 0x0000으로 기술된다. 다음으로, 호스트는 새 32 바이트 파일 목록 중 처음 26 바이트를 적합한 디렉토리 클러스터에 기록한다. 이 32 바이트 구조의 메모리 맵은 도 5에 나타나 있다. 이어, 호스트는 링크된 클러스터의 목록을 기록함으로써, 파일에 사용될 메모리를 FAT 표에 할당한다. 메모리가 할당되면, 호스트는 파일 데이터를 적합한 클러스터에 기록한다. 이 할당과 기록은 어떤 순서로도 가능하며, 싱글 클러스터가 할당되고 데이터가 한 번에 기록되도록 두 과정이 분리될 수도 있다. 모든 데이터가 기록된 후 마지막 6 바이트는 파일 목록에 클러스터 시작 번호와 파일 크기를 기록하기 위해 사용된다.
이에 대한 일 예는 도 6과 7에 나타나 있다. 호스트가 메모리 안의 사용되지 않은 공간에 File2.jpg 를 기록한다면, 파일 이름과 속성에 관한 정보 등이 먼저 적합한 디렉토리에 기입된다. 그리고 나서, 기록된 파일을 위해 FAT 표가 갱신되어, 클러스터 0x09에 0x0A를 기입하는 것을 시작으로 다음 클러스터가 클러스터 A임을 알려준다. 링크된 목록은, 클러스터 0x11에 0xFF가 기록됨으로써 파일의 마지막을 알릴 때까지, 기입된다. 호스트는 카드로, 즉, 새로 할당된 클러스터로 파일 데이터를 기입한다(마찬가지로, 이 동작은 분리되어, 파일의 마지막에 이를 때까지, 한 번에 하나의 클러스터를 할당할 수 있다). 마지막으로, 마지막 6 바이트는 파일 목록에 기입되어, File2.jpg는 클러스터 0x09에서 시작하며 그 크기는 45 KB임을 보여준다.
새 디렉토리는 새 파일을 만드는 것과 아주 유사한 방법으로 생성된다. 실제로, 디렉토리와 파일은 FAT 파일 시스템 구현에 있어서 디렉토리 속성 비트를 제외하고 나머지는 동일하다. 그러므로, 호스트는 가장 먼저 디렉토리 이름과 속성 비트를 적합한 디렉토리(루트 디렉토리의 정의는 FAT2 다음에 사용자 데이터 영역의 맨 앞에 있다)에 기입함으로써 디렉토리를 생성한다. 다음으로, FAT 표에 0x FF를 기입함으로써, 새 디렉토리를 위한 클러스터가 할당된다. 새로 만들어진 디렉토리 안에는 새 디렉토리와 각자의 상위 디렉토리를 가리키는 파일들 "." 및 ".." 이 존재한다("." 파일 클러스터 번호는 디렉토리 클러스터와 같다). 이 두 파일이 기록된 후, 호스트는 마지막 6 바이트를 32 바이트 목록에 기입함으로 디렉토리 목록을 완성한다.
사용자 동작의 다른 예는 이전에 카드에 기입된 파일의 삭제하는 것이다. 통상적으로, FAT-베이스 운영 체제는 사용자가 삭제를 명령하더라도 카드로부터 파일 데이터나 파일 이름을 지우지 않는다. 대신, 캐릭터 0xE5가 파일 목록의 첫번째 바이트에 기입되며, 그 파일을 위한 클러스터는, FAT 표의 클러스터 위치에 0x00를 기입함으로써, 할당되지 않게 된다. 파일 목록의 맨 앞의 캐릭터가 E5로 기록되어 있으면, 호스트는 해당 파일이 삭제된 것으로 보고 건너 뛴다. 이와 같은 파일 삭제 방식은 적당한 캐릭터를 파일에 재기입하고, 원래의 클러스터를 재할당함으로써, 파일을 복원할 수 있게 해 준다.
메모리의 각 파일은 32 바이트 파일 엔트리를 포함한다. 32 바이트 파일 엔트리는 파일 이름; 읽기전용, 숨김, 디렉토리, 보존과 같은 파일 속성; 파일 생성 날짜; 파일에 마지막으로 액세스한 날짜; 파일 크기; 및 첫번째 클러스터 엔트리 등의 정보를 포함한다. 파일 이름을 변경하거나 파일 속성(예, 숨김, 보존, 읽기전용)을 바꾸려면, 호스트(5)는 파일 이름이나 속성 비트를 기록하기 위한 데이터와 함께 쓰기 명령을 원래의 목록으로 보낸다. 일반적으로, 제어기(20)는 호스트(5)가 리맵 동작을 실행함으로써 이들 매개 변수 중 어떤 것이라도 변경하도록 허락한다. 그러나, 제어기는 파일 목록 (도 5의 바이트 18-19) 내의 “마지막 접근 날짜 필드(Last Accessed Date Field)”가 갱신될 때 가짜 쓰기를 수행하여 메모리를 절약하는 방식을 선택할 수도 있다. 이와 같은 예외가 존재하는 이유는 마이크로소프트 윈도우와 같은 호스트는 파일이 읽혀질 때마다 새로운 날짜를 기록하기 때문에 리맵에 512 바이트의 메모리가 사용되는 결과를 가져오기 때문이다. 이는 시스템이 사용자 모르게 쓰기 동작을 수행하는 일 예이다. 이를 피하기 위해, 스마트 필터 로직(144)은 이와 같은 특정한 갱신을 수행하지 않을 것을 선택할 수도 있다. 이와 같이 숨겨진 동작들의 실행과 취급 방법은 이 명세서의 뒷부분에서 더 자세히 설명될 것이다.
사용자는 또한 메모리 카드를 포맷할 것을 선택할 수 있다. 이는 호스트 장치에 의해 다양한 방식으로 실행된다. 어떤 장치들은 FAT와 루트 디렉토리에 단순히 0’s 를 기입함으로써 메모리 공간이 전부 "비워지게(freeing)"된다. 다른 호스트들은 새 정보로 MBR 및/또는 PBR을 재기입하여 카드를 다시 포맷한 다음 호스트와 루트 디렉토리를 제로화하는 것을 시도한다. 또 다른 호스트들은 위에 기술된 방식 중 한 가지 혹은 전부를 수행하는 동시에 카드 전체에 0’s를 기록하여 메모리 공간 전체가 비워지도록 하기도 한다. 마지막으로, 어떤 호스트들은 앞서 기술된 방식 중 한 가지 혹은 그 이상의 방식을 수행하는 한편, 삭제 명령을 사용하여, 새로운 데이터가 기록될 수 있도록 모든 데이터가 완전히 삭제되도록 한다.
사용가 시도할 수 있는 마지막 동작-기존 데이터 변경-은 매우 광범위하다. 사용자는 카메라에 있는 사진을 회전시키거나, 툴을 사용해 사진의 색깔이나 다른 변수를 향상시킨 다음 카드에 다시 보관거나 또는 그 외 다수의 다른 동작을 실행할 수 있다. 호스트 장치는 이 동작 중 어느 하나를 실행하는데 있어, 새로운 파일을 기록하고 오래된 파일을 삭제하는 것에서부터 간단하게 오래된 파일의 클로스터 위에 새로운 데이터를 덮어쓰기까지 여러가지 다른 방법을 사용할 수 있다.
이제 호스트가 어떻게 갖가지의 사용자 동작을 수행하는지에 대해 기본적인 이해를 갖게 되었으므로, 다음으로는 스마트 필터와 그 작용에 대해 알아보기로 한다. BCC 제어기는 대부분의 쓰기 명령을 받으면, 쓰기전 읽기(RBW)를 실행한다. 즉, 메모리 장치는 호스트로부터 원하는 쓰기 주소를 받는 즉시 읽혀진다. 이는 성능 향상을 가져오는데, 페이지 레지스터 0(PR0)(44)으로 옮겨진 새로운 데이터를 호스트(10)가 보내오는 동안 제어기(20)가 원하는 데이터를 읽어서 페이지 레지스터1 (PRI)(42)로 삽입하기 때문이다. 이와 같은 쓰기전 읽기 동작에 관한 추가 설명은 본 명세서의 리맵 설명에서 다시 언급될 것이다. 스마트 필터 동작의 다양한 예들을 도 5의 FAT 표와 함께 설명하기로 한다.
새로운 파일이나 디렉토리를 만들기 위해, 호스트 장치(5)는 적절한 서브디렉토리에 새로운 32 바이트 파일 엔트리를 기록한 후, FAT 표를 갱신하여 메모리 공간을 제대로 할당한다. 만약, 호스트 장치(5)가 새로운 파일을 기록하고자 한다면, 각각 0x13와 0x14 값을 도 5의 2 개의 최종 클러스터에 할당할 것이다. 도 4의 순서도를 참조하면, 이는 "데이터 첨부(Appending Data)"에 해당되는데, 데이터 변경이 수행되지 않기 때문이다. 그러므로, 스마트 필터 로직(44)은 변경사항 없이 원래 주소에 데이터를 쓰기만 한다. 이와 같은 일반적인 경우, 제어기(20)는 호스트 장치(5)가 새로운 파일을 빈(free) 공간에 덮어쓰도록 허용한다. 일부의 경우, 사전 삭제로 인해, 호스트 장치(5)는 해당 공간이 비어있는 것으로 인식할 수도 있지만, 메모리가 실제로 지워지는 것은 아니다. 이 때, 스마트 필터 로직(44)은 아래에서 설명되는 것과 같이, 리맵 작업을 실행하여 새로운 데이터로 종전 데이터를 대체할 수 있다.
파일을 삭제하기 위해, 호스트 장치(5)는 2 개의 기능을 수행한다. 우선, FAT 표 내의 파일 클러스터 포인터들을 "00h"로 덮어쓰기하여, 호스트 장치(5)로 하여금 해당 데이터 영역이 현재 사용가능함을 알려 준다. OTP 또는 FTP 메모리의 경우, 메모리가 실제로 지워지지는 않으므로, 제어기(20)는 이와 같은 방식으로 메모리를 "비울 것"을 원하지 않는다. 다시 말해서, 제어기(20)는 호스트(5)가 데이터를 변경한 것으로 보이도록 하기 위해, 리맵 알고리듬을 선호한다. 그러나, 데이터를 실제로 지워서 빈 공간을 만드는 것은 불가능하다. 이러한 이유때문에, 스마트 필터 로직(44)은 호스트로 하여금 사전에 할당되었던 클러스터에 0x00를 기록하는 것을 허용하지 않는다. 이는 도 4의 "가짜 쓰기"로 해당한다. 구체적으로, 제어기(20)는 호스트 장치(5)에게 0 값이 메모리에 기록되었다고 알려만 줄 뿐, 실제로 기록하지는 않는다. 여기서, FAT 표에만 0을 기록하면 사용가능한 공간이 실제보다 더 많아 보인다는 것을 이해하는 것은 중요한다. 가령, 카드에 실제로 더 이상의 여유 공간이 없음에도 불구하고 있는 것처럼 보임으로써, 새로운 데이터를 기록하고자 하는 사용자에게 좋지 않은 사용 경험을 줄 수 있기 때문이다. 또한, 호스트 장치(5)는 32 바이트 파일 엔트리의 첫번째 캐릭터를 "E5h"로 덮어쓰기하여, FAT 파일 시스템으로 하여금 그 파일을 건너 뛸 것을 알린다. 호스트(5)가 제어기(20)에게 쓰기 명령을 내릴 때, 제어기(20)는 '쓰기전 읽기 작업'을 수행하여 이전 데이터와 새 데이터를 비교한다. 이 때, 스마트 필터 로직(44)은 리맵 동작을 통해 원래 파일의 첫 캐릭터를 다음에 설명하는 것과 같이, "E5h"로 덮어쓰기한다.
FAT 표에서의 스마트 필터링의 마지막 예는, 호스트(5)가, 이미 기록된 클러스터에 0x00이 아닌 다른 것을 기록함으로써, 데이터를 변경하려 하는 경우이다. 이는, 예를 들면, 파일이 변경되고 그 길이가 연장된 경우(예를 들어, thumbs.db 파일에 데이터를 추가하여 16KB에서 24KB로 키울 때)에 생긴다. 이 때, 파일 마커의 끝부분인 0xFF은 새로 추가된 데이터를 가리키는 클러스터 번호로 대체된다. 이 때, 리맵 작업이 일어남으로써, 호스트 (5)는 원하는 대로 데이터를 변경할 수 있게 된다.
가짜 쓰기 동작이 수행되면, 호스트가 인식하고 있는 것과 실제 메모리 사이에 불일치가 생긴다는 것은 유념해야 한다. 이는, 윈도즈와 같이, 휘발성 RAM 내의 FAT 표를 캐시하는 호스트 시스템에서, 하나 이상의 스마트 필터가 단일 동작에 사용될 수도 있다는 것을 의미한다. 예를 들어, 사용자가 1MB 파일을 단일 동작을 통해 삭제하고, BCC 20는 FAT 표의 1MG 상당의 클러스터를 가짜 0으로 만든 다음, 사용자가 메모리(30)에 500KB 파일을 쓰려고 한다고 하자. 이와 같은 경우, 호스트(5)는 데이터 삭제로 인해 비워진 클러스터에 새로운 파일을 담으려고 한다. 따라서, 호스트는 새롭게 할당된 클러스터에 기록하고 여분의 클러스터 0x00는 남겨둔다. 이로 인해, 스마트 필터는 새 파일 클러스터를 반드시 리맵하는 한편, 동시에 기존의 가짜 공간을 0으로 만들지는 않는다. 이같은 예는 도 8과 9에서 볼 수 있다. 타임 0일 때, 가짜 쓰기는 카드의 값을 11-FF로 유지하며, 타임 1일 때, 새로운 파일의 클러스터 11-FF는 리맵 작업을 통해 카드에 기록되지만, 그러나 14 - FF는 유지되어 비워진 공간이 없는 것처럼 보이게 된다.
본 실시예에서, 데이터 영역용 스마트 필터는 FAT 표의 스마트 필터와는 상이하다. 사용자 영역 내에 저장될 수 있는 데이터는 실제 파일 데이터의 32 바이트 파일/디렉토리 목록과 클러스터로 한정된다. 가장 단순한 경우, 스마트 필터는 일단 사용된 공간에 덮어쓰기되는 어떤 데이터라도 리맵할 수 있다. 그러나, 이는 또 다시 바람직하지 않은 사용 모델을 가져온다. 이미 언급된 것처럼, 숨겨진 시스템 동작이 사용자가 개의하지 않는 리맵을 위해 추가 메모리 공간을 사용하게 되기 때문이다. 필요없는 리맵 작업을 피하기 위해서, BCC 제어기(20)는 페이지 레지스터 0과 페이지 레지스터 1의 데이터를 비교하여, 도 7에서와 같이,데이터 변경이 단지 특정 필드와만 관련된 경우에는 가짜 쓰기를 수행한다. 예를 들어, 페이지 레지스터 0와 페이지 레지스터 1의 데이터가 오프셋 18의 2 바이트를 제외하고는 정확히 일치할 경우, 제어기(20)는 호스트(5)가 "최종으로 접근했던" 필드를 갱신을 시도하는 것으로 간주하고 가짜 쓰기 작업을 수행한다. 이에 따라, 호스트(5)는 필드가 갱신되었다고 인식하나, 실제로 쓰여진 것은 없다.
알려진 파일 시스템 구조 필드의 모든 델타(delta)나 델타의 조합은 스마트 필터에 적용될 수 있다. 예를 들어, 디자이너가 사용자가 OTP메모리를 변경할 수 없도록 했다면, 개명 작업이나 삭제 작업은 허용되지 않는다. 이와 같은 경우, 필터 작업은 0 내지 11 바이트의 변경을 감지하여 가짜 쓰기를 수행할 수 있다. 디자이너가 개명은 허용하였지만, 숨은 파일을 만드는 것은 허용하지 않았을 때, 사용자가 파일 개명을 시도하고 속성 비트를 변경하면, 스마트 필터 로직(44)은 이를 해당 필드에서 감지하여, 데이터를 새로운 이름으로 리맵할 수 있으나, 그 속성 비트를 변경하여 파일을 숨길 수는 없다.
스마트 필터 로직에 의해 호출될 수 있는 마지막 동작은 에러 신호를 보내는 것이다. 본 실시예에서는, 두 경우에만 일어날 수 있다. (1) 사용자가 카드(10)를 포맷하려고 하거나, (2) 카드(10)가 다 채워져서 더 이상 데이터 쓰기가 불가능한 경우가 그것이다. 카드(10)를 포맷하기 위해, 호스트(5)는 적어도 2 개의 동작을 수행해야 한다. 즉, FAT 표를 비우고, PBR을 원하는 포맷 정보로 갱신해야 한다. 이같은 경우, 제어기(20)는 FAT 표 (도 3의 주소 0x0000~0x4000) 위에서 쓰기 작업이 진행 중임을 감지하여, 호스트의 명령에 응답할 때 에러 비트를 설정한다. 이들은 CRC 에러, 쓰기 실패 에러, 또는 카드 형식 요인으로 인한 상태 에러 신호일 수 있다. 또한, 제어기(20)는 FAT 표를 0으로 만들기 위한 어떤 쓰기라도 "가장(fake)"할 수 있다. 카드(10)가 전부 채워져서 더 이상 데이터를 쓸 수 없게 되면, 제어기(20)는 FAT 표 또는 쓰기 주소를 통해 카드(10)가 다 찼음을 알아낼 수 있다. 이 때, 추가 데이터는 더 이상 기록될 수 없며 에러 신호만이 발생되게 된다. 또한, 모든 쓰기 보호 비트는 사용자에게 OTP 카드(10)가 이제 다 찼음을 신호하도록 설정될 수 있으며, ROM 카드에서는 반드시 그러하다. 제어기(20)는 FAT 표에서 감지, 리맵 어드레싱과 호스트 쓰기 어드레싱의 오버랩의 감지, 등 다양한 방법으로 카드(10)가 다 찼음을 알아낼 수 있다.
앞서 설명한 모든 실시예에서는, 호스트가 파일나 시스템 데이터 소거를 위해 실제 소거 명령을 보내지 않고, 대신 제어기가 필요한 동작을 수행하였다. 그러나, 실제로, 일부 호스트는 직접 소거 작업을 수행하거나 물리적 및 논리적 블록 을 무효화시키고 나중에 소거 작업을 수행하기 위한 추가 기능이 필요하게 된다. 이와 같은 시스템의 예로는 스마트 미디아 인터페이스를 들 수 있는데, 이의 시방서는 메모리의 사이드밴드 영역에 논리 블록을 만드는 방법, 무효 플래그 표시하는 방법, 또 기타 더 복잡한 작업 수행 방법을 보여준다. 스마트 필터 개념은 이와 같은 유형의 시스템에도 쉽게 적용될 수 있음은 주목할 만하다. 여기에서 제어기는 해당 동작이 쓰기, 소거 혹은 다른 명령인 것에 상관 없이, 이전 데이터와 새 데이터의 비교를 기초로 결정된 동작을 지능적으로 수행한다.
요약하면, 호스트가 수행할 수 있는 각 개별 동작을 일견하면, 스마트 필터 로직은 상대적으로 복잡해 보일 수 있다. 그러나, 더 상세히 살펴보면, 동작에 일정한 패턴이 존재함을 알 수 있다. 제어기(20)가 미리 포맷되어 판매될 경우, PBR 주소, FAT 표, 루트 디렉토리, 및 데이터 영역은 알려지게 된다. 호스트(5)가 PBR을 덮어쓰기하고자 할 경우, 제어기(20)는 가능한 카드 에러 발생을 강제하는데, 이는 카드(10)의 포맷이 변경될 우려가 있기 때문이다. 메모리 어레이(30)의 OTP/FTP 특성 상, 제어기(20)는 FAT 내에 이미 기록된 주소에 00h를 기입함으로써 카드(10) 내의 공간을 비우고자 하는 쓰기를 가장한다. 마찬가지로, 최종 접근된 필드와 같은 파일 엔트리에 대한 원하지 않는 갱신은 향상된 메모리 활용을 위해 가장될 수 있다. 호스트(5)가 처음 사용하는 메모리 공간을 기록할 경우, 스마트 필터 로직은 가능한 한 방해 없이 그 쓰기 동작이 계속되도록 한다. 만약을 위해, 호스트(5)가 스마트 필터 로직(44)이 이해할 수 없는 방식으로 이전 데이터를 덮어쓰기 할 경우, 그 쓰기는 가능한 한 리맵되어 호스트 동작이 성공적으로 계속되도록 한다. 마지막으로, 제어기(20)로 하여금 단일 쓰기 명령에 대해 복수 기능을 수행하게 하는 필터의 조합에 유의해야 한다. 예를 들어, 호스트(5)가 FAT 표를 캐시한 다음 하나의 큰 파일을 지우고 그 “비워진 공간”에 작은 파일을 복사하고자 할 경우, 제어기(20)는 FAT 표에 추가 공간을 비우지 않고서도 새로운 파일이 씌여질 수 있도록 한다 (캐시된 FAT 대비 필터된 실제 FAT 간의 불일치는 이와 같은 조합 상의 문제를 일으킨다.)
리맵 로직(46)
리맵 로직(46)은 호스트(5)로 하여금 특정 주소를 소거했다고 인식하도록 해주는 새로운 논리적 주소로 데이터를 이동시키는데 사용될 수 있다. 리맵이란 메모리 제어기(20)에 의해 데이터와 주소 간접 지정을 기술하는데 사용되는 용어이다. 이는 호스트(5)가 제공하는 논리적 주소와는 다른 물리적 장소에 데이터를 쓰는 개념을 가리킨다. 리맵은 플래쉬 메모리를 포함한 다양한 기술 분야에서 사용되는데, 그 이유로는 성능 향상에부터 웨어 레벨링 알고리즘을 통한 향상된 데이터 무결성 등, 다양하다. BCC와 함께 작동되는 OTP나 FTP 메모리의 경우, 리맵은 소거성(erasablity)을 흉내낸다는 점이 독특하다. 예를 들어, 호스트가 데이터 셋트 A가 주소 0에 씌여질 것를 요구하면, 제어기(20)는 그 데이터를 주소 0에 쓸 것을 선택할 수 있다. 나중에, 호스트(5)는, 상술한 것과 같이 소거 동작을 수행하기 위해 캐릭터 "E5"라고 쓸 때와 같이, 그 데이터를 A에서 B로 변경하기를 원할 수 있다. 이 때, 제어기(20)는 호스트(5)가 데이터 셋트 A를 적절히 변경하여 데이터 셋트 B를 주소 1과 같이 다른 물리적 장소에 쓰고 있는지를 알아보기 위해 스마트 필터를 사용한다. 이 때, 호스트(5)가 주소 0을 읽을 때에는 제어기(20)는 대신 주소 1에 있는 데이터를 반환해야 함을 알고 있어야 한다. 그렇게 함으로써, 메모리는 호스트(5) 및 사용자에게 마치 변경된 것처럼 보이게 된다.
호스트 장치로부터 받은 데이터를 리디렉팅하는 방법은 다양하다. 예로서, 본 발명의 양수인에게 양도되었고, 본 명세서에 참조 특허로 언급된 다음의 특허 문서들을 들 수 있다. 미국 특허 출원 제 09/877, 719호, 제09/878,138호, 제10/327, 680호, 제10/023, 468호가 그 것이다. 하나의 공통된 방법은 시동 시 읽혀지거나 계산되어 제어기(20)의 휘발성 메모리에 저장되는 물리- 논리 주소 표를 사용하는 것인데, 그 크기가 상당하므로 다이 크기와 제어기(20)의 원가를 증가시키게 된다. 본 실시예는 애플리케이션들의 요구 조건 이상의 성능에 대해 타협하지 않으면서도 비용은 최소화한다. 본 실시예에서는 2 가지 리맵 방법을 사용한다.
첫 번째는, 호스트에게는 보이지 않는, 메모리 페이지의“사이드밴드 영역”을 사용하는 가장 간단한 방법이다. 여기서, 메모리 어레이(30)는 528B 페이지들로 조직되어 있으나, FAT 파일 시스템은 512B 섹터를 사용한다. 이 여분의 16B를 사이드밴드라고 부르며, 제어기(20)가 기타 정보를 저장하는데 사용된다. 기타 정보로는 ECC 데이터, 데이터 및 주소 유효 플래그들과 리맵 포인터들이 포함되나 반드시 이에 한정되는 것은 아니다. 이 방식에서는, 페이지가 리맵되면, 제어기(20)는 사이드밴드의 일부를 사용하여 물리 주소를 저장한다. 그 페이지가 처음으로 기록되었을 경우에는, 물리 주소와 논리 주소가 동일하므로, 리맵 포인터는 필요하지 않게 된다. 호스트(5)가 데이터를 변경하고자 하는 경우, 제어기(20)는 새로운 데이터를 새로운 장소에 기록하고, 그 새로운 장소의 물리적 주소를 옛 장소의 사이드밴드에 저장한다.
도 10은 이와 같은 리맵 방식에서 데이터가 어떻게 읽혀지는 지 보여주는 순서도이다. 우선, 읽기 명령과 주소가 카드(10)로 보내진다(동작 110). 제어기(20)는 528B 페이지 전체를(또는 포인터를 포함하기 위해 필요한 만큼)을 읽어야 함을 인식하고(동작 120), 제어기(20)로 주소가 리맵 되었는지를 알려주는 FFh (동작 130)가 사이드밴드에 포함되어 있는지 여부를 판단한다. 포인터가 처음으로 사용되는 경우(즉, FFh를 포함), 제어기(20)는 512B 페이지를 호스트(5)로 반환한다. 사이드밴드가 주소를 포함하는 경우, 제어기(20)는 가장 최근에 씌여진 데이터를 찾기 위해 그 페이지 주소를 사이드밴드에 저장한다. 이 때, 주소는 사이드밴드에 직접 저장되거나, 주소의 오프셋이 저장 될 수 있다. 이와 같은 리맵 형식을 정적(static)이라고 하는데, 그 이유는 제어기(20)가 리맵을 위해 사용되는 추가 공간을 할당하기 위해 FAT 표를 변경하지 않기 때문이다. 본 실시예에서, 카드(10)는 특정 양의 FAT 표에 미리 할당된 리맵 데이터 만큼 사전포맷 되어 있다. 일단 이 만큼의 데이터가 사용되고 나면, 리맵은 더 이상 일어나지 않는다. FAT 표는 리맵 할당을 보여주어, 호스트 5가 이 공간을 자신의 용도로 (예를 들어, 그림 데이터 저장) 사용하지 못하게 한다.
이와 같은 첫번째 매핑 방법은 매우 효율적이어서, 실행을 위해 극히 적은 논리 오버헤드만을 필요로 한다. 다만, N 번 리맵 된 페이지가 현재의 데이터를 찾기 위해서는 N 번의 읽기를 수행해야 하므로 성능의 오버헤드는 상대적으로 높다. 이를 개선하기 위해서 다른 간단한 리맵 방법이 사용될 수 있다. 여기에서는, 리맵된 페이지에 포인터를 저장하는 대신, 리맵된 표에 대한 포인터가 활용될 수 있다. 이 표는 최신 페이지 데이터를 저장하기 위해 시간 대공간(temporal-to-spatial) 매핑 기술을 사용할 수 있다. 시간 대 공간 매핑은 본 발명의 양수인에게 양도된 미국 특허 제6,738,883호에 기술되어 있으며, 본 명세서에 참고로 통합 기술된다. 이에 따르면, N 번 리맵된 페이지는 최대 3 번만 읽힐 수 있는데, 극히 소량의 비용 및 복잡성을 추가하는 대신, 상품의 상당한 성능 향상을 가져온다.
제어기(20)가 하나의 주소가 접근될 때마다, 이와 같은 읽기 동작을 수행하여 가장 최신의 페이지를 찾아낸다는 것에 주목할 필요가 있다. 위에서 기술되었던 '쓰기 전 읽기'를 수행할 때의 스마트 필터 동작마다, 제어기(20)는 재매핑 체인을 따라가면서(walk) 가장 최근 페이지를 찾아낸다.
추가되는 복잡성은 이 알고리즘에 손쉽게 부가될 수 있다는 것 또한 중요하다. 예를 들어, 하나 또는 그 이상의 알고리즘이 그 복잡성을 최소화하는 동시에 성능을 향상시키기 위해 다른 알고리듬과 함께 사용될 수 있다. 복잡성의 다른 예로는, 캐시된 읽기 동작을 수행하기 위한, FAT 파일 시스템 내의 데이터의 강한 지역성 의존(locality dependence) 사용을 들 수 있다. 이 때, 제어기(20)는 호스트(5)나 제어기(20)에 의해 수행 중인 다른 동작과 병행되는 데이터를 찾기 위해 한 페이지와 그 인접 페이지들을 읽는다. 이는 제어기(20)에 약간의 비용을 추가시키지만, '쓰기전 읽기'와 '리맵 워킹' 오버헤드를 상당히 줄일 수 있다.
BBC 제어기(20)는 호스트(5)에 대한 플로우 컨트롤 문제점을 해결하는 데 쓰이는데, 이 것은 표준 리맵 알고리즘과 다른 큰 차이점이다. 즉, 제어기 (5)가 호스트가 알지 못하는 사이에 새로운 장소로 데이터를 이동시킬 때, 호스트(5)가 데이터는 실제로 소거된 후 다시 기록되고 있다고 인식한다면, 호스트(5)는 실제로 사용가능한 빈 공간이 얼마나 있는지 어떻게 알 수 있을까? 이 문제를 해결하기 위해, BCC(20)는 2 개의 개별 동작을 실행한다. 먼저, 앞서 기술되었던 것과 같이, 필터 로직(44)은 호스트(5)가 FAT 표 내의 공간을 비우기 위해 0을 기록하고자 하는 것을 금지한다. 이는 파일 삭제와 같은 사용자 제어 동작이 메모리를 소거하고 오픈하는 것처럼 보이는 것을 방지한다. 그러나, 리맵을 위해 제어기(20)가 소비되는 메모리 또한 고려되어야 한다.
이 문제를 해결하는 한 가지 단순한 방법은 메모리 장치(10)를 판매하기 전에 리맵용 메모리를 할당하는 것이다. 고정된 양의 리맵은 제어기(20)에 의해 더 이상 사전 할당할 공간이 남지 않을 때까지 사용될 수 있다. 이 때, 제어기(20)는 카드 오류를 알릴 수 있으며, 리맵이 아닌 쓰기 작업이나 기타 여러 작업을 허용할 수 있다. 정적 리맵 할당으로 불리우는 이 방법은 사용자가 실행할 수 있는 동작의 횟수와 크기를 제한하므로, 사용자 입장에서 바람직하지 않을 수도 있다.
동적 리맵 할당으로 불리우는, 조금 더 복잡한 리맵 방법은 이 문제를 해결해 준다. 이 방법에 대한 순서도는 도 11에 도시되어 있다. 먼저, 호스트(5)는 쓰기 명령을 보내며, 그 데이터는 페이지 레지스터 1에 저장된다 (동작 160). 다음으로, 제어기(20)는 '쓰기전 읽기(RBW)' 작업을 수행하고 데이터를 페이지 레지스터 2에 저장한다(동작 170). 페이지 레지스터 2가 비어 있을 경우(예를 들어, FFh가 있을 경우)(동작 180), 페이지 레지스터 1의 내용은 메모리 어레이에 기록된다 (동작 190). 페이지 레지스터 2가 비어 있지 않을 경우, 제어기(20)는 페이지 레지스터 1의 내용이 페이지 레지스터 2의 내용 및 첨부 데이터와 같은 지 여부를 판단한다(동작 200). 두 레지스터의 내용이 같다면, 페이지 레지스터 1의 내용은 메모리에 기록된다(동작 190). 두 레지스터의 내용이 다르다면, 스마트 필터링 로직이 인에이블링되었는지 판단한다(동작 210). 인에블링되었다면, 데이터는 필터링된다(동작 220). 그렇지 않다면, 리맵이 요구된다(동작 230). 리맵을 위해, 메모리 맨 위의 처음 3 페이지를 찾아(동작 240), 페이지 레지스터 1의 내용을 오류 없이 최대로 비어 있는 페이지에 기록한다(동작 250). 다음으로, FAT 표는 그 페이지의 클러스터를 사용된 것으로 표시하기 위해 갱신된다(동작 260). 마지막으로, 새 페이지 주소는 원래 페이지의 사이드밴드에 기록된다(동작 270). 성능 절약 (예컨대, 주소가 사용가능하고 호스트(5)로 부터 데이터가 입력되기 전에 수행되는 '쓰기전 읽기')을 위해, 본 실시예에서는 2 개의 페이지 레지스터가 제시되었지만, 단일 페이지 레지스터의 사용도 물론 가능하다.
순서도가 보여주 듯이, 제어기(20)는 FAT 표에 기록하는 방식으로 리맵을 위해 공간이 사용되어 왔음을 호스트(5)에 알려준다. 추가 메모리가 필요함에 따라 제어기(20)는 마치 호스트(5)가 파일 데이터를 위한 클러스터를 할당하는 것과 마찬가지로 자신의 용도를 위해 새 클러스터를 할당할 수 있다. 다시 말해, 이 방식은 앞서 설명한 것과 동일한 포인터 추적 알고리즘을 사용하지만, 리맵을 위한 추가 공간의 필요에 따라 FAT 표를 동적으로 갱신한다. 이의 혜택은 호스트(5)와 사용자가 수행할 수 있는 리맵/파일 변경의 횟수에 대해 제한을 받지 않는다는 것이다. 제어기(20)는 카드가 완전히 채워질 때까지 리맵을 허용한다. 대부분의 호스트들은 메모리 할당을 위에서 아래으로 수행하는 반면에, 도 12에 도시된 것과 같이, 본 실시예의 제어기(20)는 아래에서부터 메모리를 할당한다. 이 할당 방식은 제어기(20)와 호스트(5)로 하여금 독자적으로 메모리를 할당할 수 있게 하지만, 할당 충돌이 일어날 가능성은 현저히 낮추어 주며, 제어기(20)로 하여금 언제라도 2 개의 할당 지역이 충돌할 경우 카드(10)가 다 찼음을 인정하게 한다. 카드(10)가 다 채워지면, 제어기(20)는 영구 및 임시 쓰기 보호 레지스터를 설정하고, 카드(10)에 더 이상 쓰기 동작을 수행할 수 없다는 신호를 보낼 수 있다. 논-캐시드(non-cashed) 시스템은 메모리가 얼마나 남았는지를 알게 되는 한편, 캐시드(cashed) 시스템은 특정 세션을 시작하기 전에 리맵 공간이 얼마나 사용되었는지를 알기 위해 시동 시 FAT 표를 읽는다.
정적 리맵과 동적 리맵은 상호 배타적이지 않다는 점은 알아두어야 한다. 실제로는, 사용자 편의를 도모하기 위해서, 단일 제품 내에서 두 가지 매핑이 모두 구현될 수도 있다. 사용자는 카드가 다 찼더라도 파일을 삭제하거나 변경하기를 원할 수 있지만, 더 이상 파일은 추가될 수 없다. 하지만, 일정량의 메모리가 사전에 할당되었지만 정상 작업 시 사용되지 않았을 경우, 추가적인 데이터 변경이 허용될 수 있다. 예를 들어, 카드(10)은 호스트와 제어기의 할당 충돌로 인해 카드(10)이 다 채워진 것으로 보일 때까지 제어기(20)가 사용하지 않은 500 KB의 정적 리맵 공간을 남겨둘 수 있다. 이 때, 제어기(20)는 원하는 동작이 완료될 때까지 호스트의 추가 데이터가 그 정적 할당 지역에 기록되는 것을 허용할 수 있다. 카드(10)는 사실 상 다 채워져 있어, 다른 동작의 시도는 오류를 야기하지만, 스마트 필터를 사용하면 삭제 및 개명과 같은 일부 사용자 동작이 정적 영역에서 수행되는 것을 허용할 수 있게 된다.
다른 예에서, 정적 할당 영역은 BCC 기술을 위한 소프트웨어로 갱신되는 호스트에 의하여 접근될 수 있다. PC 또는 기타 전자 장치는 카드 메모리 전부에 접근하는 것을 허락할 수 있는 카드에 신호를 보내는 애플리케이션과 작동할 수 있다. 이는 본 발명의 양수인에게 양도된 미국 특허 제6,424,581호에 기술되어 있으며, 본 명세서에 참조를 위해 통합되어 있다. 이 때, 애플리케이션은 스마트 필터, 리맵, 등에 우선하여, 리맵 체인을 최적화하거나 논-인에이블(non-enable) 시스템이 할 수 없는 추가 동작이 정적 영역에 수행되도록 허락함으로써 성능을 향상시킬 수 있다. 따라서, 정적 및 동적 리맵 알고리즘을 결합하면 인에블(enabled) 시스템과 논-인에블(non-enable) 시스템 둘 다에 최적의 사용자 경험을 제공할 수 있게 된다.
위에서 설명한 포인터 추적 방식을 대신하는 다른 실행 방식도 가능하다. 몇 가지는 아래와 같다:
읽기3 명령: READ3으로 알려진, 보다 빠른 읽기 명령으로, 제어기(20)로 하여금 사이드밴드 데이터만을 읽도록 허락한다. 이는 가장 최근의 데이터를 찾기 전 에 여러 페이지를 읽는 오버해드를 감소시켜준다.
포인터 테이블: 가장 최근의 쓰기를 찾기 위하여 각 페이지를 읽는 실행을 감소시키기 위하여, 포인터 테이블은 각 페이지가 모든 리맵을 리스트한 테이블을 갖도록 사용될 수 있다. 호스트(5)는 그 테이블을 읽고 가장 최근의 갱신을 결정하기 위하여 최초의 엔트리 앞 마지막 포인터를 사용한다. 테이블의 주소는 페이지의 사이드밴드에 저장된다. 이것은 위에 참조한 특허 출원에서 설명한 하드웨어 리맵에서 사용된 테이블과 유사하다.
시스템 캐시: 제어기(20)는 리맵 테이블 또는 사이드밴드에 저장된 포인터로부터의 데이터를 저장하기 위하여 SRAM 또는 유사한 캐시를 사용할 수 있다. 추가 SRAM은 비용을 증가시켜 제어기(20)의 가격을 올리지만, 이 구조는 리맵이 아주 빠르게 수행되도록 하며 성능의 오버헤드는 최소화한다.
리맵 알고리즘 결합: 제어기(20)는 간단한 포인터 추적 또는 표 방식이 사용될 것인가를 알려주는 리맵 활용 플래그를 만들 수 있다. 그러므로, 제어기(20)는 페이지가 여러 번 리맵되었으면 미래의 리맵의 영향을 감소시키기 위하여 표를 만드는 것을 선택할 수 있다. 그러나, 페이지가 수 회만 리맵되는 간단한 경우에는 포인터 방식으로 충분하다. 제어기(20)는 플래그를 동적으로 설정할 수 있지만, 리맵 장소에 따라 정적으로 설정할 수도 있다. 예를 들면, FAT 표는 여러번 리맵될 것이고, 따라서, 표 또는 SRAM 방식을 항상 사용하는 것이 타당한 반면, 데이터는 자주 리맵되지 않기 때문에 포인터 추적 방식이 선호 될 수 있다. 이는 SRAM의 원가를 낮추면서 최적에 가까운 시스템 성능을 제공할 수 있다.
스마트 ECC 로직(48)
ECC는 현장에서 일어날 수 있는 신뢰도 오류로부터 보호에 아주 적합하다. 본 실시예에서, BCC(20)는 위에서 설명한 리맵 포인터 뿐 아니라 ECC 데이터를 저장하기 위하여 사이드밴드를 사용한다. ECC는 8 바이트, 16 바이트 또는 사이드밴드 가용성(availability)에 적합한 크기일 수 있다. 본 실시예에서, "스마트 큰 블록 ECC"로 불리는 128B ECC 알고리즘이 사용된다. 큰 블록 ECC ("LB ECC")는 ECC 단어 당 2 개의 닫기를 사용하는데, 부록 1에 설명된다. BCC(20)는 리맵과 ECC 정보를 위해 사이드밴드를 이용하므로, 사이드밴드는 보통의 큰 블록 ECC 방식에서 단어 당 2 개의 닫기를 저장하기에는 공간이 충분하지 않을 수 있다. 따라서, 큰 블록 ECC 방식은 마지막 2 바이트의 단어가 씌여졌을 때, 각 단어에 한 번씩만 닫기를 실행하는 방식으로 "스마트"하게 만들어진다. FAT 표의 각 엔트리는 2 바이트이므로 2 바이트 값이 선택된다(제어기(20)는 LB ECC과 함께 동적 리맵을 수행할 때, 사용 현장에서의 제품의 최대 신뢰성을 보장하기 위하여, ECC 닫기 동작을 선호한다. 다시 말해서, 할당은 FAT 표의 ECC 단어를 닫지 않고, 나중에 같은 단어를 갱신하기를 선호한다). 닫기 동작은 데이터 영역에 따라 수행될 수 있다. 예를 들면, FAT 표는 위에서 설명한 대로 2 바이트 세그먼트에 기초하여 갱신하는 것이 바람직하지만, 데이터 영역을 갱신할 때는 그렇지 않을 수도 있다. 데이터 영역을 갱신할 때, 대부분의 호스트가 모든 데이터 쓰기를 완료한 후 마지막 6 바이트의 파일 엔트리를 갱신하므로, 닫기 동작은 단어의 마지막 6 바이트에 기준하여 수행될 수 있다. 마지막으로, BCC(20)는 이전에 닫혀진 ECC 단어가 갱신되는 것을 감지하면 리맵 동작을 수행할 것을 선택할 수 있다. 리맵 동작은 사용 현장에서 최대한의 신뢰성을 보장하기 위하여, ECC와 결합될 수 있다.
본 발명의 양수인에게 양도되고, 본 명세서에 참고를 위해 통합되어 있는 미국 특허 제6,738,883호는 ECC를 OTP 또는 FTP 제품의 데이터 신뢰성을 향상시키는 방법으로 사용하는 것을 보여주고 있다. 이 특허에서 논의하였 듯이, ECC 단어는 오직 한 번만 쓸 수 있다. ECC 단어에 새로운 데이터를 덮어쓰는 것은 ECC 데이터 값이 틀려지도록 하여 제품에 요구되는 신뢰성을 무너뜨린다. OTP 또는 FTP 메모리와 같이 구동할 수 있는 시스템에서는 선(line) 개념 - 위에 참조한 ‘883 특허에서 논의된, 메모리에 대한 최소 쓰기 사이즈 - 를 도입하여, 이 문제를 쉽게 해결할 수 있다. 그러나, BCC 제품이 논-인에이블 시스템(즉, 옥트바이트 (octbyte) 정렬 개념으로 구동되지 않는 호스트)에 사용되는 경우에는 디자인이 다소 복잡해진다.
BCC 제어기(20)는 여러가지 방법으로 ECC 무결성(integrity)을 유지한다. 한 가지 간단한 방법은 ECC 단어가 무효화되었을 때 리맵 동작을 호출하는 것이다. 여기서, 제어기(2)는 ECC 단어가 스마트 필터나 다른 로직에 의해 덮어쓰기되고 있는지 감지한다. ECC 단어가 무효화되면, 리맵 동작은 새로운 데이터를 다시 써서, 제품의 신뢰성을 유지한다.
리맵은 메모리의 100% ECC 커버리지를 유지하도록 사용될 수 있지만, 이것은 많은 추가 리맵을 야기할 수 있고, 이에 따라 사용자의 작동 횟수를 제한하게 된다. 이같은 경우, 제어기(20)는 ECC 취급을 개선하도록 디자인될 수 있다. 실시예에서, 특정 부분의 데이터가 씌여질 때까지 ECC 데이터는 기록되지 않고, ECC 단어는 완성되지 않는다. 예를 들어, ECC 단어를 32 바이트로 가정하면, 위에서 설명한 것과 같이 파일을 쓰는 경우, 호스트(5)는 26 바이트의 파일 목록 데이터를 쓰고, 나중에 파일 데이터가 완료된 후 마지막 6 바이트를 쓴다. 이같은 경우, 제어기의 ECC 스마트 필터 로직(48)은 파일 목록은 기록되고 있다고 판단하고, 마지막 6 바이트가 씌여질 때까지 ECC 단어를 완성하지 않는다. 이에 의해 ECC의 무결성이 유지되고 리맵 오버해드를 최소화한다. 구체적인 방식은 ECC 단어 크기, 파일 시스템 구조 및 데이터 구조에 따라 변경될 수 있다.
요약하면, 스마트 ECC 로직(48)은 바람직한 실시예에서, 사이드밴드에 저장된 신드롬 (syndrome) 비트와 함께 128B ECC 단어를 사용하고, 마지막 2 바이트의 데이터 기록을 기준으로 단어를 닫으며(closing), 단어 당 하나의 닫기(close)만을 허락하고, FAT 표에 대한 데이터 영역에 따라 상이한 닫기 방식을 (2B 대 6B 닫기) 사용하며, ECC 단어가 무효화되거나 훼손되면 리맵할 수 있다. 스마트 ECC 로직(48)이 본 실시예에 사용되는 이유는 사이드밴드 공간이 복수의 ECC 닫기를 위해서는 충분하지 않기 때문이다.
결론
여러가지 대안들이 바람직한 실시예들과 함께 사용 될 수 있다. 예를 들면, 메모리 장치 안에 제어기에 구현하는 대신, 일부 또는 전부의 스마트 필터 로직, 리맵 로직 및 스마트 ECC 로직은 그 일부 또는 전부가 메모리 장치나 호스트 장치 안의 다른 제어기와 같은 다른 컴포넌트에 구현될 수 있다. 또한, "회로(circuitry)"는 묘사된 기능을 구현할 수 있는 모든 컴포넌트를 가리킨다. 회로의 예로는, 위에서 언급된 예들은 물론 컴퓨터의 실행 명령을 수행하는 프로세서, 애플리케이션용 집적회로, 필드 프로그래머블 게이트 어레이, 아날로그 회로, 현재 알려져 있거나 이후에 개발될 하드웨어 장치 (소프트웨어 운영하거나 또는 운영하지 않거나) 및 이들의 조합을 포함한다.
위의 상세한 설명은 발명의 정의가 아니라, 발명이 택할 수 있는 일 형태에 대한 설명으로 이해되어야 한다. 등가물을 포함한 청구범위만이 발명의 범위를 정의함을 밝힌다. 마지막으로, 여기에서 설명된 바람직한 실시예의 어떠한 일 면도 단독으로 혹은 다른 것들과 결합해서 사용될 수도 있음은 물론이다.
부록 I
큰 블록 EEC 구현
개요
큰 불록 EEC는 가급적 다음을 포함한다:
?128B의 EEC 단어 크기
?한 번 오류 정정, 그러나 두 번 오류 감지는 하지 않음
?최대 2 번의 EEC 패리티 갱신을 허락하는 스마트 EEC 갱신
SEC EEC 구현
EEC 구현은 EEC 패리티 비트가 바이트 당 계산되도록 하는 구현과 유사하다. 사이드밴드의 스토리지가 제한되어 있으므로 패리티 비트를 줄이기 위하여 DED만 없더라도 SED에 다음과 같은 변경이 이루어져야 한다. 도 13은 8 비트 데이터에 패리티 비트가 어떻게 작용하는지 보여준다:
P0은 D1, D3, D5, D7을 커버한다.
P1은 D2, D3, D6, D7을 커버한다.
P2는 D4, D5, D6, D7을 커버한다.
P3은 D0, D1, D2, D3을 커버한다.
P4는 모든 데이터 비트를 커버한다.
다음 표는 1 비트 오류로 야기되는 신드롬(syndrome)을 보여준다. 신드롬[4:0]는 예상된 실제의 패리티 비트 XOR 연산에 의해 생성된다. 이 알고리즘은 2N 비트를 커버하기 위해 바람직하게는 N+2의 패리티 비트를 요구한다. 128 바이트 (210 비트)의 ECC 단어에 대해서, 바람직하게는 12 패리티 비트가 요구된다.
오류 비트 신드롬[4:0]
D0 11000
D1 11001
D2 11010
D3 11011
D4 10100
D5 10101
D6 10110
D7 10111
P0 00001
P1 00010
P2 00100
P3 01000
P4 10000
12 비트 패리티 공식
다음은 1024 비트의 ECC 단어에 바람직하게 요구되는 12 패리티 공식이다 (ECC 단어의 모든 1은 패리티 비트의 모든 1 되어야 함):
?P0=!XOR(D1, D3, D5,...,D1023)
?P1=!XOR(D2-D3, D6-D7,...,D1022-D1023)
?P2=!XOR(D4-D7, D12-D15,...,D1020-D1023)
?P3=!XOR(D8-D15 ,D24-31,...,D1016-D1023)
?P4=!XOR(D16-D31, D48-D63,...,D1008-D1023)
?P5=!XOR(D32-D63 ,D96-127,...,D992-D1023)
?P6=!XOR(D64-D127, D192-D255,...,D960-D1023)
?P7=!XOR(D128-D255, D384-D511,...,D896-D1023)
?P8=!XOR(D256-D511, D768-D1023)
?P9=!XOR(D512-D1023)
?P10=!XOR(D0-D511)
?P11=!XOR(D0-D1023)
스마트 ECC 갱신
스마트 ECC 갱신은 EEC 단어 당 패리티 비트가 바람직하게는 두 번씩 기록되도록 한다. 이에 따르면, ECC에 의한, 부분적 페이지 쓰기가 가능하게 된다. 패리티 비트의 첫 번째 세트는 새로운 데이터가 ECC 단어에 처음 쓰여질 때 기입된다. 이후의 새로운 데이터 쓰기는 패리티 비트의 첫 번째 세트를 무효화 시킨다. 패리티 비트의 두 번째 세트는 페이지가 "닫힐(closed)때" 씌여진다. EEC 단어의 마지막 옥트바이트(octbyte)의 어떤 비트가 프로그램될 때 페이지는 "닫힌 것(closed)"으로 간주된다. 이 모델은 부분적 페이지 쓰기를 요구하는 FAT 구조에서 원활하게 작동된다.
스마트 ECC 플래그와 패리티 비트는 새로운 패리티 비트가 기존의 유효한 패리티 비트와 일치하지 않을 때에만 갱신되는 것이 바람직하다. 똑같은 데이터를 (패리티 비트와 일치하도록) 다시 쓰는 것은 스마트 ECC 플래그의 상태에 영향을 주지 않는다.
미기록 단어: ECC 읽기 가능
111111111111 11 11 111111111111 11 11
패리티 0[11:0] 미사용0[1:0] 유효0[1:0] 패리티1[11:0] 미사용1[1:0 유효1[1:0]
위의 표는 아직 프로그램되지 않은 단어 데이터를 위한 ECC 패리티 비트, 미사용 비트, 유효 비트를 보여준다. 유효한 비사용 비트는 반복을 위하여 두 번씩 복제된다. 이와 같은 상태에서, 패리티0은 유효하므로 ECC 읽기가 가능해진다. 유효0이 1이면 비사용0이 어떤 값을 갖더라도 무방함은 주목할 만한 점이다( 패리티1에 대해서는 그렇지 않다).
위에서, 패리티, 비사용, 유효 비트는 32비트 또는 4B이다. 페이지 당 4개의 128B ECC 단어와 함께, 16B의 ECC 패리티, 미사용, 유효 비트가 존재한다.
기록된 패리티0: ECC 읽기 가능
10010110110 00 11 111111111111 11 11
패리티0[11:0] 미사용0[1:0] 유효0[1:0] 패리티1[11:0] 미사용1[1:0 유효1[1:0]
위의 표는 한번 프로그램된 단어 데이터를 위한 ECC 패리티, 미사용, 유효 비트를 보여준다. 미사용0은 이전에 1이었기 때문에, 패리티0은 기록되고 있는 데이터를 반영하도록 프로그램될 수 있음을 알 수 있다. 미사용0도 패리티0이 기입되었다는 것을 표시하기 위하여 0로 프로그램된다. 이와 같은 상태에서, 패리티0은 여전 유효하므로, 읽는 동안 ECC는 인에블드된다.
무효화된 패리티0: ECC 읽기 불가능
100101101110 00 00 111111111111 11 11
패리티 0[11:0] 미사용0[1:0] 유효0[1:0] 패리티1[11:0] 미사용1[1:0 유효1[1:0]
위의 표는 유효0를 0으로 프로그램하여 무효화된 패리티0 비트를 갖는 단어 데이터를 위한 ECC 패리티, 미사용, 유효 비트를 보여준다. 단어 데이터에 첫 번째 쓰기 이후의 쓰기는, 사용0이 이미 0으로 프로그램되어 있다면, 패리티0 비트를 무효화시킨다. 이와 같은 상태에서는, 패리티0은무효화되었고 패리티1은 갱신되어야 하므로 ECC 읽기가 불가능해진다.
갱신된 패리티1: ECC 읽기 가능
100101101110 00 00 100101101110 00 11
패리티 0[11:0] 미사용0[1:0] 유효0[1:0] 패리티1[11:0] 미사용1[1:0 유효1[1:0]
위의 표는 패리티1 비트가 씌여진 단어 데이터를 위한 ECC 패리티, 미사용, 유효 비트를 보여준다. 이는 단어의 마지막 옥트바이트(octbyte) 중 어떤 비트가 프로그램되어 있고 미사용1이 이전에 1이었을 때 일어난다. 패리티1이 씌여졌다는 것을 표시하기 위하여 미사용1 또한 프로그램된다. 대부분의 경우, 마지막 옥트바이트가(octbyte) 프로그램되고 있을 때, 이것이 단어 데이터에 쓰는 마지막 부분 페이지가 된다. 이 상태에서, 패리티1은 유효하고 씌여졌으므로, ECC 읽기가 가능해진다. (패리티0과 다르게, 패리티가 유효하기 위해서는 미사용1 플래그가 0이어야 한다.)
무효된 패리티: ECC 읽기 불가능
100101101110 00 00 100101101110 00 00
패리티 0[11:0] 미사용0[1:0] 유효0[1:0] 패리티1[11:0] 미사용1[1:0 유효1[1:0]
위의 표는 패리티1 비트가 유효1을 0으로 프로그램함으로써 무효화된 단어 데이터를 위한 ECC 패리티, 미사용, 유효 비트를 보여준다. 패리티1이 씌여진 다음, 이 단어 데이터 이후에 데이터가 씌여지면, 패리티1은 무효화된다. 이 상태에서, 패리티0과 패리티1은 어느 것도 유효하지 않으므로, ECC 읽기가 불가능해진다.
중복된 미사용 및 유효한 플래그 디코딩
미사용[1:0] 및 유효[1:0] 플래그는 패리티 비트를 위하여 서로 다른 3 개의 상태를 인코딩하기 위하여 사용된다. 다음 표는 이들 상태의 목록이다.
{미사용[1:0],유효[1:0]} 패리티 상태(PARITY STATE)
1111 씌여지지 않은(UNWRITTEN)
0011 씌여지고 유효한(WRITTEN AND VALID)
0000 무효된(INVALIDATED)
하지만, 오직 플러그 당 2 개의 중복 비트만 존재하기 때문에, 중복 비트 중 어느 하나에 오류가 있으면, 어는 비트에 오류가 발생되었는지 결정하기 어렵다. 이러한 이유로, 패리티 상태를 결정하기 위해서는 미사용[1:0] 및 유효[1:0] 비트 둘 다 항상 사용된다. 다음 표는 그 비트들의 0의 전체 갯수를 계산하여 디코딩하는 것을 보여준다.
0의 갯수 패리티 상태 {미사용[1:0],유효[1:0]}
0 씌여지지 않은(UNWRITTEN) 1111 만
1 씌여지지 않은(UNWRITTEN) 0111, 1011,1101,1110
2 씌여지고 유효한 (WRITTEN AND VALID) 0011,0101,0110,1001,
1010,1100
3 무효된 (INVALIDATED) 1000,0100,0010,001
4 무효된 (INVALIDATED) 0000 만
플러그 당 4 개의 중복 비트 대신, 2 개를 사용하면 중복의 견고함은 감소되나 메모리의 사용 비트의 수를 줄일 수 있다.
특별 케이스-페이지 0
TF_SECC_PAGE0_TB = '1' 메모리의 페이지 0는 다르게 처리된다. 보통 패리티1 비트는 단어의 마지막 옥트바이트 중 어떤 비트가 프로그램되었을 때만 쓰기가 가능하다. 하지만, 여기서는 그와 같은 제한이 없어진다. 그러므로, 한번 패리티0이 사용되면 다음 쓰기에는 항상 패리티1 비트가 사용된다.
트림 퓨즈 비트(Trim Fuse Bits)
BCC 로직에 영향을 주는 3 개의 트림 퓨즈 비트가 있다:
(1) TF_ECC_DISBALE_TB
TF_ECC_DISBALE_TB = '1'이면, ECC 로직은 디스에이블되고 호스트는 각 페이지의 사이드밴드의 바이트 512-527에 완전한 읽기와 쓰기의 액세스를 할 수 있다.
TF_ECC_DISBALE_TB = '0'이면, ECC 로직은 인에블되고, 각 페이지의 사이드밴드의 바이트 512-527는 LBECC 및 스마트 ECC 갱신을 실행하기 위한 각종 ECC 비트를 저장하기 위해 사용된다. 사이드밴드 영역의 모든 호스트 쓰기들은 폐기된다. 사이드밴드 영역으로부터의 호스트 읽기는 정의되지 않은 데이터를 반환한다.
(2) TF_SMARTECC_DISABLE_TB
TF_SMARTECC_DISABLE_TB = '1', 스마트 ECC 갱신 로직은 디스에이블된다. TF_SMARTECC_DISABLE_TB = '0', 스마트 ECC 갱신 로직은 인에이블된다. (TF_ECC_DISABLE_TB는 세트되어야 함.)
(3) TF_SECC_PAGE0_TB
TF_SECC_PAGE0_TB = '0', 모든 페이지는 동일한 스마트 ECC 로직을 사용한다. TF_SECC_PAGE0_TB = '1'이면, 스마트 ECC 갱신 로직에 대해, 페이지 0는 다른 모든 페이지들과는 다르게 취급된다.
메모리 맵
모든 ECC 패리티, 미사용 및 유효 비트는 각 페이지의 사이드밴드의 바이트 512-527에 존재한다. 4 개의 모든 ECC 단어의 배열은 다음과 같다.
Figure 112007011494022-pct00001
다음은 ECC 단어의 비트가 어떻게 배열되어 있는지 보여준다(예는 단어 0).
Figure 112007011494022-pct00002
테스팅
ECC 로직의 테스트는 DAM 모드를 사용하여 수행할 수 있다. 읽기나 쓰기 처리를 위하여 DAM 모드가 인에이블되면 페이지 레지스터와 메모리 어레이 사이에는 어떤 데이터라도 이전될 수 없다. ECC 로직이 테스트되려면 TF_ECC_DISABEL_TB 비트는 인액티브 상태로 설정시켜 놓아야 한다. 테스트에 대한 상세한 설명은 다음과 같다.
ECC 정정
1. DAM 모드를 인에이블시킨다. ECC를 인에이블시킨다.
2. 512 바이트의 쓰기 데이터와 16 바이트의 ECC 데이터가 첨부된 DATAIN 명령을 내린다.
3. READ 명령을 내린다(데이터를 다시 읽기 전에 ECC 스크러빙(scrubbing)이 행해지므로 칩은 바빠진다).
4. 예상된 512 바이트의 데이터를 검증한다(1 비트 오류가 PR에 씌여졌다면, 오류가 정정되었는지 검증한다).
ECC 생성
1. DAM 모드를 인에이블한다. ECC를 인에이블한다.
2. 512 바이트의 쓰기 데이터가 첨부된 DATAIN 명령을 내린다.
3. PROG 명령을 내린다(이것은 생성된 16 바이트의 ECC가 PR에 씌여지게 한다).
4. READ 명령을 내린다(생성된 16 바이트의 ECC 데이터와 함께 이전 512 바이트의 쓰기 데이터가 다시 읽혀진다).
5. 16 ECC 바이트가 제대로 생성되었는지 검증한다.
위에서 설명한 것과 같이, ECC 사용 방법 중 하나는 ECC 1B 넓이의 신드롬(syndrome)을 갖는 8B (octbyte) ECC 단어를 이용하는 것이다. 이 방법을 구현하면 12.5% 오버헤드가 생성되고 전체 다이 크기를 9-10% 증가시킨다. 또한, 72 비트의 데이터를 병렬로 처리하는 싱글 비트 수정/더블 비트 검색(single bit-correct/double bit-detect) 알고리즘을 사용한다. 반대로, 큰 블록 ECC는 신드롬(syndrome) 스토리지의 오버헤드를 감소시킬 수 있는 정도의 크기를 가진 ECC 단어를 사용한다. 위에서 언급된 것과 같이, 오버헤드를 더욱 줄이기 위해서는 싱글 비트 검색(single-bit-detect-only) 알고리즘을 사용하는 것이 바람직하다. 이 알 고리즘은 데이터를 순차적으로 처리한다.
ECC 신드롬 스토리지를 위한 다수의 옵션이 있다. 그 중, 한 가지(옵션 1)에서는 ECC 신드롬 비트가 확장 페이지 영역에 저장된다. 바람직한 아키텍처는 18B (16B 데이터 및 2B ECC 신드롬 비트)를 확장 페이지에 할당한다. 이 옵션을 통해, 트림 퓨즈(trim fuse) 또는 핀을 이용해 (1) 확장 페이지 공간에 저장된 신드롬과 함께 내부 ECC 생성을 사용하고, 사용자는 확장 페이지 공간에 세스 할 수 없게 하거나, (2) 내부 ECC 생성을 바이패스하여 사용자의 확장 페이지 공간에 대한 액세스를 허락하고, 자체 ECC 알고리즘을 사용할 수 있도록 할 수 있다. 다른 한 옵션(옵션 2)에서는, ECC 신드롬 비트가 전용 공간에 저장된다. 이 방법은 블록의 크기에 따라 CR 공간의 일부를 사용하기도 한다.
부분적 페이지 쓰기가 수행되는 동안 씌여질 수 있는 최소 양은 ECC 단어부분적 페이지 쓰기로 설정되어 있다. 여기에는 몇 가지의 옵션들이 있다. 옵션 1에서는, 메모리 장치가 부분적 페이지 쓰기를 인식하고, 그 페이지를 위한 ECC 기능을 디스에이블한다. 이 옵션에는 후방 호환성 문제는 없으나, 부분적 쓰기 후에는 데이터 무결성이 훼손된다. 옵션 2는 옵션1에 N 번의 ECC 다시 쓰기 기능을 추가한 것과 같다. 메모리 장치는 부분적 쓰기를 식별하여 기존의 ECC 신드롬을 무효화하고, 새로운 장소에 새로운 신드롬을 기록한다. 128B의 큰 블록은 블록 당 2-3 번 다시 쓰기를 하기에 충분한 저장 용량을 제공한다. 이는 복잡성을 더하는 대신 이전의 솔루션에 비해 향상된 것이다. 옵션 3은 스마트 ECC 신드롬 갱신을 제공한다. ECC 단어로 처음 쓸 때 신드롬이 쓰여진다. ECC 단어로 두 번째 쓰기는 신드롬을 무효화하고, 데이터는 ECC 보호를 상실한다. 이 후 ECC 단어로 덧붙이기에 이어서, ECC 단어가 완전히 쓰여지면, 새로운 (최종의) 신드롬이 생성되고, 데이터는 영구히 보호된다. 이는 DPM 노출을 극적으로 감소시키는데, 이유는 ECC 단어가 다 채워지지 않은, 얼마 되지 않는 동적 영역만이 유일한 비보호 영역이기 때문이다. 옵션 4는 중복된 열(row) 교정 능력이 추가된 옵션 2 와 같다. 옵션 2에서 N 번의 다시 쓰기 후, N+1 번째의 다시 쓰기는 열의 교정을 시작하(row) 교정 능력이 추가된 옵션 2 와 같다.
다른 대안으로는, 읽기 후의 데이터 스크러빙(scrubbing)을 들 수 있다. 이에 따르면, 읽기 중 전방위 스트레스(forward stress)가 교란의 주된 원인이면, ECC 정정 로직의 상태를 점검하여 불량 비트가 생성되자마자 곧 바로 불량 비트를 검출할 수 있다. 검출된 불량 비트는, 기존 CR 방식을 사용하여 교정할 수 있다. 2 개의 비트가 동시에 불량 비트가 되지 않는 한, 이 방식은 읽기 교란을 해결하는데 아주 효과적이다.
본 명세서에 포함됨.

Claims (59)

  1. 메모리 어레이; 및
    상기 메모리 어레이와 통신하는 제어기를 구비하고,
    상기 제어기는,
    (a)상기 메모리 장치와 통신하는 호스트 장치로부터, 상기 메모리 어레이의 제 1 주소에 데이터를 기록하기 위한 요청을 수신하고;
    (b)상기 제 1 주소에 기록되도록 요청된 데이터를 상기 제 1 주소에 저장된 데이터와 비교하며;
    (c)상기 (b)의 비교에 기초하여,
    (c1)상기 기록되도록 요청된 데이터를 상기 제 1 주소에 기록하거나,
    (c2)상기 기록되도록 요청된 데이터를 상기 제 1 주소에 기록하지 않은 채, 상기 호스트 장치로 상기 기록되도록 요청된 데이터가 상기 제 1 주소에 기록되었다고 알리거나,
    (c3)상기 기록되도록 요청된 데이터를 상기 제 1 주소 대신에 제 2 주소에 기록하는 것 중 어느 한 가지를 수행하는 것을 특징으로 하는 메모리 장치.
  2. 제 1 항에 있어서,
    상기 제어기는 프로그램되지 않은 메모리 셀 세트가 포함된 상기 제 1 주소에 응답하여 상기 (c1)을 수행하는 것을 특징으로 하는 메모리 장치.
  3. 제 1 항에 있어서,
    상기 제어기는 상기 제 1 주소에 기록되도록 요청된 데이터가 상기 제 1 주소에 저장되어 있는 데이터에 첨부할 수 있는 데이터인 경우에는 상기 (c1)을 수행하는 것을 특징으로 하는 메모리 장치.
  4. 제 1 항에 있어서,
    상기 제 1 주소에 저장되어 있는 데이터는 파일 시스템 구조를 포함하는 것을 특징으로 하는 메모리 장치.
  5. 제 1 항에 있어서,
    상기 제어기는 이전에 할당된 주소가 비어 있음을 알려주는 데이터를 파일 할당 표에 기록하고자 하는 상기 호스트에 응답하여 상기 (c2)를 수행하는 것을 특징으로 하는 메모리 장치.
  6. 제 1 항에 있어서,
    상기 제어기는 파일 목록의 소정 필드에만 데이터를 기록하고자 하는 상기 호스트에 응답하여 상기 (c2)를 수행하는 것을 특징으로 하는 메모리 장치.
  7. 제 1 항에 있어서,
    상기 제어기는 마지막으로 액세스된 데이터 필드에만 데이터를 기록하고자 하는 상기 호스트에 응답하여 상기 (c2)를 수행하는 것을 특징으로 하는 메모리 장치.
  8. 제 1 항에 있어서,
    상기 제어기는 디렉토리 목록의 소정 필드에만 데이터를 기록하고자 하는 상기 호스트에 응답하여 상기 (c2)를 수행하는 것을 특징으로 하는 메모리 장치.
  9. 제 1 항에 있어서,
    상기 제어기는 상기 제 1 주소에 기록되도록 요청된 데이터가 상기 제 1 주소에 저장된 데이터와 다른 경우에 상기 (c3)을 수행하는 것을 특징으로 하는 메모리 장치.
  10. 제 1 항에 있어서,
    상기 제어기는 상기 제 1 주소에 기록되도록 요청된 데이터가 상기 제 1 주소에 저장된 데이터와 다르고, 그 차이가 파일 목록의 소정 필드에서만 발견되지 않는 경우 상기 (c3)를 수행하는 것을 특징으로 하는 메모리 장치.
  11. 제 1 항에 있어서,
    상기 제어기는 상기 제 1 주소에 기록되도록 요청된 데이터가 상기 제 1 주소에 저장된 데이터와 다르고, 그 차이가 디렉토리 목록의 소정 필드에서만 발견되지 않는 경우 상기 (c3)를 수행하는 것을 특징으로 하는 메모리 장치.
  12. 제 1 항에 있어서,
    상기 제어기는 상기 메모리 장치를 포맷하고자 하는 시도에 응답하여 오류를 발생시키는 것을 특징으로 하는 메모리 장치.
  13. 제 1 항에 있어서,
    상기 제어기는 파일 할당 표의 주소에 선행하는 주소에 데이터를 기록하고자 하는 시도에 응답하여 에러를 발생시키는 것을 특징으로 하는 메모리 장치.
  14. 제 1 항에 있어서,
    상기 제어기는 상기 메모리 어레이의 소정 주소에 데이터를 기록하고자 하는 시도에 응답하여 에러가 발생되도록 동작하는 것을 특징으로 하는 메모리 장치.
  15. 제 1 항에 있어서,
    상기 제어기는 상기 메모리 어레이가 전부 채워짐에 응답하여 에러가 발생되도록 동작하는 것을 특징으로 하는 메모리 장치.
  16. 제 1 항에 있어서,
    상기 제어기는 상기 (c3)를 수행할 때 상기 제 2 주소가 더 이상 비어있지 않음을 표시하기 위해 상기 메모리 어레이의 파일 할당 표를 업데이트하는 것을 특징으로 하는 메모리 장치.
  17. 제 1 항에 있어서,
    상기 메모리 어레이는 부분적으로 기록될 수 있는 논리적 단위들로 구성되어 있고, 이에 의해 다수의 기록 작업이, 해당 논리적 단위가 전부 채워지기 전에, 각 논리적 단위에 수행될 수 있으며,
    상기 제어기는 마지막 기록 작업이 논리적 단위에 수행되었을 때, 논리적 단위에 대한 ECC 데이터가 기록되도록 동작하는 것을 특징으로 하는 메모리 장치.
  18. 제 1 항에 있어서,
    상기 제어기는,
    제 1 페이지 레지스터; 및
    제 2 페이지 레지스터를 포함하고,
    상기 제 1 주소에 저장된 데이터는 상기 제 1 페이지 레지스터에 기록되는 한편, 상기 제 1 주소에 기록되도록 요청된 데이터는 상기 제 2 레지스터에 기록되는 것을 특징으로 하는 메모리 장치.
  19. 제 1 항에 있어서,
    상기 메모리 어레이는 한번 프로그램가능한 메모리 어레이를 포함하는 것을 특징으로 하는 메모리 장치.
  20. 제 1 항에 있어서,
    상기 메모리 어레이는 수 회 프로그램가능한 메모리 어레이를 포함하는 것을 특징으로 하는 메모리 장치.
  21. 제 1 항에 있어서,
    상기 메모리 어레이는 3 차원 메모리 어레이를 포함하는 것을 특징으로 하는 메모리 장치.
  22. 제 1 항에 있어서,
    상기 메모리 장치는 상기 호스트 장치의 대응하는 전기 커넥터와 접속하도록 구성된 전기 커넥터를 포함하고,
    상기 호스트 장치는 복수 회 쓰기 가능 파일 시스템을 포함하는 것을 특징으로 하는 메모리 장치.
  23. 파일 시스템 구조를 저장하는 메모리 어레이; 및
    상기 메모리 어레이와 통신하는 제어기를 포함하고,
    상기 제어기는,
    (a)상기 메모리 장치와 통신하는 호스트 장치로부터, 이전에 할당된 주소가 비어 있음을 알려주는 데이터를 상기 파일 시스템 구조에 기록하기 위한 요청을 수신하고;
    (b)상기 데이터를 상기 파일 시스템 구조에 기록하지 않은 채, 상기 호스트 장치로, 상기 데이터가 상기 파일 시스템 구조에 기록되었다고 알리는 것을 특징으로 하는 메모리 장치.
  24. 제 23 항에 있어서,
    상기 파일 시스템 구조는 파일 할당 표를 포함하는 것을 특징으로 하는 메모리 장치.
  25. 제 23 항에 있어서,
    상기 데이터는 0값들을 포함하는 것을 특징으로 하는 메모리 장치.
  26. 제 23 항에 있어서,
    상기 메모리 어레이는 한번 프로그램가능한 메모리 어레이를 포함하는 것을 특징으로 하는 메모리 장치.
  27. 제 23 항에 있어서,
    상기 메모리 어레이는 수 회 프로그램가능한 메모리 어레이를 포함하는 것을 특징으로 하는 메모리 장치.
  28. 제 23 항에 있어서,
    상기 메모리 어레이는 3 차원 메모리 어레이를 포함하는 것을 특징으로 하는 메모리 장치.
  29. 파일 시스템 구조를 저장하는 메모리 어레이; 및
    상기 메모리 어레이와 통신하고, 상기 파일 시스템 구조의 주소에 선행하는 주소에 데이터를 기록하고자 하는 시도에 응답하여 에러가 발생되도록 동작하는 제어기를 구비하는 것을 특징으로 하는 메모리 장치.
  30. 제 29 항에 있어서,
    상기 파일 시스템 구조는 파일 할당 표를 포함하는 것을 특징으로 하는 메모리 장치.
  31. 제 29 항에 있어서,
    상기 파일 시스템 구조의 주소에 선행하는 주소에 데이터를 기록하고자 하는 상기 시도는 상기 메모리 장치의 포맷 명령에 대한 응답임을 특징으로 하는 메모리 장치.
  32. 제 29 항에 있어서,
    상기 메모리 어레이는 한번 프로그램가능한 메모리 어레이를 포함하는 것을 특징으로 하는 메모리 장치.
  33. 제 29 항에 있어서,
    상기 메모리 어레이는 수 회 프로그램가능한 메모리 어레이를 포함하는 것을 특징으로 하는 메모리 장치.
  34. 제 29 항에 있어서,
    상기 메모리 어레이는 3 차원 메모리 어레이를 포함하는 것을 특징으로 하는 메모리 장치.
  35. 메모리 어레이; 및
    상기 메모리 어레이와 통신하는 제어기를 포함하고,
    상기 제어기는
    (a)상기 메모리 장치와 통신하는 호스트 장치로부터의, 상기 메모리 어레이의 제 1 주소에 데이터를 기록하기 위한 요청을 수신하고;
    (b)상기 제 1 주소 대신 제 2 주소에 상기 데이터를 기록하며;
    (c)상기 제 2 주소가 더 이상 비어 있지 않음을 표시하기 위해 상기 메모리 어레이의 파일 시스템 구조를 업데이트하는 것을 특징으로 하는 메모리 장치.
  36. 제 35 항에 있어서,
    상기 파일 시스템 구조는 파일 할당 표를 포함하는 것을 특징으로 하는 메모리 장치.
  37. 제 35 항에 있어서,
    상기 메모리 어레이는 제 1 크기를 갖는 영역들로 논리적으로 구성되어 있고,
    상기 데이터는 제 1 크기보다 작은 제 2 크기를 포함하며, 사이드 밴드 영역은 상기 제 1 크기와 상기 제 2 크기의 차이로 정의되어 있으며,
    상기 제어기는 상기 제 1 주소의 사이드 밴드 영역에 상기 제 2 주소가 기록되도록 동작하는 것을 특징으로 하는 메모리 장치.
  38. 제 37 항에 있어서,
    상기 제어기는 상기 사이드 밴드 영역만을 읽도록 동작하는 것을 특징으로 하는 메모리 장치.
  39. 제 37 항에 있어서,
    상기 제어기는 사이드 밴드로부터의 데이터를 저장하도록 동작하는 캐시를 포함하는 것을 특징으로 하는 메모리 장치.
  40. 제 35 항에 있어서,
    상기 메모리 어레이는 제 1 크기를 갖는 영역들로 논리적으로 구성되어 있고,
    상기 데이터는 상기 제 1 크기보다 작은 제 2 크기를 포함하며,
    사이드 밴드 영역이 상기 제 1 크기와 상기 제 2 크기의 차이로 정의되어 있고,
    상기 제어기는 상기 제 1 주소의 사이드 밴드 영역의 리맵 테이블에 주소가 기록되도록 동작하는 것을 특징으로 하는 메모리 장치.
  41. 제 40 항에 있어서,
    상기 제어기는 상기 리맵 테이블로부터의 데이터를 저장하도록 동작하는 캐시를 포함하는 것을 특징으로 하는 메모리 장치.
  42. 제 35 항에 있어서,
    상기 제어기는 물리-논리 주소 표에 상기 제 2 주소가 기록되도록 동작하는 것을 특징으로 하는 메모리 장치.
  43. 제 35 항에 있어서,
    상기 제어기는 포인터 테이블에 상기 제 2 주소가 기록되도록 동작하는 것을 특징으로 하는 메모리 장치.
  44. 제 35 항에 있어서,
    상기 메모리 어레이는 리맵 동작을 위해 사전에 할당된 영역을 포함하고,
    상기 제어기는, 상기 파일 시스템 구조가 상기 메모리 어레이에 더 이상 비어 있는 주소가 없다는 것을 표시할 때, 상기 사전에 할당된 영역에 기록되도록 동작하는 것을 특징으로 하는 메모리 장치.
  45. 제 44 항에 있어서,
    상기 사전에 할당된 영역은 상기 호스트 장치에 의해 액서스 가능한 것을 특징으로 하는 메모리 장치.
  46. 제 35 항에 있어서,
    상기 제어기는 두 가지 상태를 포함하는 플래그를 저장하도록 동작하며, 제 1 상태는 포인터 추적 방식이 사용되고 있음을 표시하고, 제 2 상태는 표 방식이 사용되고 있음을 표시하는 것을 특징으로 하는 메모리 장치.
  47. 제 35 항에 있어서,
    상기 메모리 어레이는 한번 프로그램가능한 메모리 어레이를 포함하는 것을 특징으로 하는 메모리 장치.
  48. 제 35 항에 있어서,
    상기 메모리 어레이는 수 회 프로그램가능한 메모리 어레이를 포함하는 것을 특징으로 하는 메모리 장치.
  49. 제 35 항에 있어서,
    상기 메모리 어레이는 3 차원 메모리 어레이를 포함하는 것을 특징으로 하는 메모리 장치.
  50. 제 35 항에 있어서,
    상기 메모리 장치는 상기 호스트 장치의 대응하는 전기 커넥터와 접속하도록 구성된 전기 커넥터를 포함하고,
    상기 호스트 장치는 여러번 쓰기 파일 시스템을 포함하는 것을 특징으로 하는 메모리 장치.
  51. 부분적으로 기록될 수 있는 논리적 단위로 구성되어 있고, 이에 의해, 다수의 기록 작업이, 해당 논리적 단위가 전부 채워지기 전에, 각 논리적 단위에 수행될 수 있는 메모리 어레이; 및
    상기 메모리 어레이와 통신하며, 마지막 기록 작업이 논리적 단위에 수행되었을 때, 논리적 단위에 대한 ECC 데이터가 기록되도록 동작하는 제어기를 구비하는 것을 특징으로 하는 메모리 장치.
  52. 제 51 항에 있어서,
    상기 제어기는 마지막 기록 작업이 상기 논리적 단위에 수행되었을 때에만 논리적 단위에 대한 ECC 데이터가 기록되도록 동작하는 것을 특징으로 하는 메모리 장치.
  53. 제 51 항에 있어서,
    상기 제어기는 제 1 기록이 논리적 단위에 수행되고, 마지막 기록이 그 논리적 단위에 수행되었을 때, 논리적 단위에 대한 ECC 데이터가 기록되도록 동작하는 것을 특징으로 하는 메모리 장치.
  54. 제 51 항에 있어서,
    상기 제어기는 마지막 2 바이트가 상기 논리적 단위에 기록되었을 때, 그 논리적 단위에 대한 ECC 데이터가 기록되도록 동작하는 것을 특징으로 하는 메모리 장치.
  55. 제 51 항에 있어서,
    상기 제어기는 마지막 6 바이트가 상기 논리적 단위에 기록되었을 때, 그 논리적 단위에 대한 ECC 데이터가 기록되도록 동작하는 것을 특징으로 하는 메모리 장치.
  56. 제 51 항에 있어서,
    상기 제어기는 ECC 워드가 무효화됨에 응답하여 리맵이 수행되도록 동작하는 것을 특징으로 하는 메모리 장치.
  57. 제 51 항에 있어서,
    상기 메모리 어레이는 한번 프로그램가능한 메모리 어레이를 포함하는 것을 특징으로 하는 메모리 장치.
  58. 제 51 항에 있어서,
    상기 메모리 어레이는 수 회 프로그램가능한 메모리 어레이를 포함하는 것을 특징으로 하는 메모리 장치.
  59. 제 51 항에 있어서,
    상기 메모리 어레이는 3 차원 메모리 어레이를 포함하는 것을 특징으로 하는 메모리 장치.
KR1020077002998A 2004-08-24 2005-07-22 소거/재기록 가능 메모리를 위해 고안된 호스트 장치에사용할 수 있는 한 번 또는 몇 번의 프로그램이 가능한메모리를 위한 방법 및 장치 KR101139224B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US60435304P 2004-08-24 2004-08-24
US60/604,353 2004-08-24
US10/956,463 US7398348B2 (en) 2004-08-24 2004-09-30 Method and apparatus for using a one-time or few-time programmable memory with a host device designed for erasable/rewritable memory
US10/956,463 2004-09-30
PCT/US2005/026054 WO2006023196A2 (en) 2004-08-24 2005-07-22 Method and apparatus for using a one-time or few-time programmable memory with a host device designed for erasable/rewriteable memory

Publications (2)

Publication Number Publication Date
KR20070046844A KR20070046844A (ko) 2007-05-03
KR101139224B1 true KR101139224B1 (ko) 2012-04-20

Family

ID=35944823

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077002998A KR101139224B1 (ko) 2004-08-24 2005-07-22 소거/재기록 가능 메모리를 위해 고안된 호스트 장치에사용할 수 있는 한 번 또는 몇 번의 프로그램이 가능한메모리를 위한 방법 및 장치

Country Status (10)

Country Link
US (4) US7398348B2 (ko)
EP (3) EP1782209B1 (ko)
JP (1) JP4852548B2 (ko)
KR (1) KR101139224B1 (ko)
CN (2) CN102163133B (ko)
AT (1) ATE505762T1 (ko)
AU (1) AU2005277792A1 (ko)
CA (1) CA2572788A1 (ko)
DE (1) DE602005027471D1 (ko)
WO (1) WO2006023196A2 (ko)

Families Citing this family (148)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7800932B2 (en) * 2005-09-28 2010-09-21 Sandisk 3D Llc Memory cell comprising switchable semiconductor memory element with trimmable resistance
WO2005089236A2 (en) 2004-03-13 2005-09-29 Cluster Resources, Inc. System and method for providing intelligent pre-staging of data in a compute environment
US8782654B2 (en) 2004-03-13 2014-07-15 Adaptive Computing Enterprises, Inc. Co-allocating a reservation spanning different compute resources types
US20070266388A1 (en) 2004-06-18 2007-11-15 Cluster Resources, Inc. System and method for providing advanced reservations in a compute environment
US8176490B1 (en) 2004-08-20 2012-05-08 Adaptive Computing Enterprises, Inc. System and method of interfacing a workload manager and scheduler with an identity manager
US8271980B2 (en) 2004-11-08 2012-09-18 Adaptive Computing Enterprises, Inc. System and method of providing system jobs within a compute environment
KR101404083B1 (ko) * 2007-11-06 2014-06-09 삼성전자주식회사 반도체 디스크 및 그것의 동작 방법
US20060139995A1 (en) * 2004-12-28 2006-06-29 Ali Keshavarzi One time programmable memory
US8452938B1 (en) 2004-12-30 2013-05-28 Azul Systems, Inc. Garbage collection with memory quick release
US7315917B2 (en) * 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
US7904518B2 (en) 2005-02-15 2011-03-08 Gytheion Networks Llc Apparatus and method for analyzing and filtering email and for providing web related services
US8402109B2 (en) 2005-02-15 2013-03-19 Gytheion Networks Llc Wireless router remote firmware upgrade
US8863143B2 (en) 2006-03-16 2014-10-14 Adaptive Computing Enterprises, Inc. System and method for managing a hybrid compute environment
WO2006107531A2 (en) 2005-03-16 2006-10-12 Cluster Resources, Inc. Simple integration of an on-demand compute environment
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
US9225663B2 (en) 2005-03-16 2015-12-29 Adaptive Computing Enterprises, Inc. System and method providing a virtual private cluster
ES2614751T3 (es) 2005-04-07 2017-06-01 Iii Holdings 12, Llc Acceso bajo demanda a recursos informáticos
KR20080025761A (ko) * 2005-07-29 2008-03-21 더 제너럴 하스피탈 코포레이션 피부 손상을 감소시키는 방법 및 조성물
US7689807B2 (en) * 2006-02-09 2010-03-30 Sigmatel, Inc. Mass storage device, mass storage controller and methods for use therewith
JP4911576B2 (ja) * 2006-03-24 2012-04-04 株式会社メガチップス 情報処理装置および追記型メモリ利用方法
US7851761B2 (en) * 2006-03-27 2010-12-14 Liviu Popa-Simil Multi-band terahertz receiver and imaging device
US8429375B1 (en) * 2006-06-16 2013-04-23 Synopsys, Inc. Memory management unit (MMU) to make only one time programmable (OTP) memory appear multiple times programmable (MTP)
US7783956B2 (en) * 2006-07-12 2010-08-24 Cronera Systems Incorporated Data recorder
US7450414B2 (en) * 2006-07-31 2008-11-11 Sandisk 3D Llc Method for using a mixed-use memory array
WO2008016419A2 (en) * 2006-07-31 2008-02-07 Sandisk 3D Llc Mixed-use memory array and method for use therewith
US7486537B2 (en) * 2006-07-31 2009-02-03 Sandisk 3D Llc Method for using a mixed-use memory array with different data states
US20080023790A1 (en) * 2006-07-31 2008-01-31 Scheuerlein Roy E Mixed-use memory array
JP5072292B2 (ja) * 2006-09-05 2012-11-14 キヤノン株式会社 撮像装置及びその制御方法
US7681008B2 (en) * 2006-09-29 2010-03-16 Sandisk Corporation Systems for managing file allocation table information
US7630225B2 (en) 2006-09-29 2009-12-08 Sandisk Corporation Apparatus combining once-writeable and rewriteable information storage to support data processing
US7730270B2 (en) 2006-09-29 2010-06-01 Sandisk Corporation Method combining once-writeable and rewriteable information storage to support data processing
US7752412B2 (en) * 2006-09-29 2010-07-06 Sandisk Corporation Methods of managing file allocation table information
WO2008042594A1 (en) * 2006-09-29 2008-04-10 Sandisk Corporation Managing file allocation table information
US20080091901A1 (en) * 2006-10-12 2008-04-17 Alan David Bennett Method for non-volatile memory with worst-case control data management
US20080091871A1 (en) * 2006-10-12 2008-04-17 Alan David Bennett Non-volatile memory with worst-case control data management
KR101490327B1 (ko) 2006-12-06 2015-02-05 퓨전-아이오, 인크. 뱅크 인터리브를 이용한 솔리드-스테이트 스토리지의 명령 관리 장치, 시스템 및 방법
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US8095723B2 (en) * 2007-02-16 2012-01-10 Electronics And Telecommunications Research Institute Log-based flash translation layer and operating method thereof
US7917479B2 (en) * 2007-03-20 2011-03-29 Micron Technology, Inc. Non-volatile memory devices, systems including same and associated methods
US7603499B2 (en) * 2007-03-30 2009-10-13 Sandisk Corporation Method for using a memory device with a built-in memory array and a connector for a removable memory device
US7633799B2 (en) * 2007-03-30 2009-12-15 Sandisk Corporation Method combining lower-endurance/performance and higher-endurance/performance information storage to support data processing
US7613857B2 (en) * 2007-03-30 2009-11-03 Sandisk Corporation Memory device with a built-in memory array and a connector for a removable memory device
US20080244203A1 (en) * 2007-03-30 2008-10-02 Gorobets Sergey A Apparatus combining lower-endurance/performance and higher-endurance/performance information storage to support data processing
US8010502B2 (en) * 2007-04-13 2011-08-30 Harris Corporation Methods and systems for data recovery
US7890711B2 (en) * 2007-04-18 2011-02-15 Oracle America, Inc. Methods, apparatus, and program products for improved finalization
US8533847B2 (en) * 2007-05-24 2013-09-10 Sandisk Il Ltd. Apparatus and method for screening new data without impacting download speed
US7970919B1 (en) * 2007-08-13 2011-06-28 Duran Paul A Apparatus and system for object-based storage solid-state drive and method for configuring same
US9824006B2 (en) * 2007-08-13 2017-11-21 Digital Kiva, Inc. Apparatus and system for object-based storage solid-state device
US11237956B2 (en) * 2007-08-13 2022-02-01 Digital Kiva, Inc. Apparatus and system for object-based storage solid-state device
US8041773B2 (en) 2007-09-24 2011-10-18 The Research Foundation Of State University Of New York Automatic clustering for self-organizing grids
US20090144513A1 (en) * 2007-12-03 2009-06-04 Pitney Bowes Inc. Database update method
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
JP4479806B2 (ja) * 2008-02-19 2010-06-09 ソニー株式会社 記録制御装置、記録システム、記録メディア制御方法及びプログラム
US20100017558A1 (en) 2008-04-11 2010-01-21 Richard Matthew Fruin Memory device operable in read-only and re-writable modes of operation
US8386664B2 (en) * 2008-05-22 2013-02-26 International Business Machines Corporation Reducing runtime coherency checking with global data flow analysis
US8281295B2 (en) * 2008-05-23 2012-10-02 International Business Machines Corporation Computer analysis and runtime coherency checking
US8285670B2 (en) 2008-07-22 2012-10-09 International Business Machines Corporation Dynamically maintaining coherency within live ranges of direct buffers
US8156404B1 (en) * 2008-08-29 2012-04-10 Nvidia Corporation L2 ECC implementation
US9020993B2 (en) 2008-12-16 2015-04-28 Sandisk Il Ltd. Download management of discardable files
US20100153474A1 (en) * 2008-12-16 2010-06-17 Sandisk Il Ltd. Discardable files
US9104686B2 (en) 2008-12-16 2015-08-11 Sandisk Technologies Inc. System and method for host management of discardable objects
US8849856B2 (en) * 2008-12-16 2014-09-30 Sandisk Il Ltd. Discardable files
US9015209B2 (en) * 2008-12-16 2015-04-21 Sandisk Il Ltd. Download management of discardable files
US8375192B2 (en) * 2008-12-16 2013-02-12 Sandisk Il Ltd. Discardable files
US8880776B2 (en) * 2008-12-16 2014-11-04 Sandisk Il Ltd. Data access at a storage device using cluster information
US8205060B2 (en) * 2008-12-16 2012-06-19 Sandisk Il Ltd. Discardable files
US20100235329A1 (en) * 2009-03-10 2010-09-16 Sandisk Il Ltd. System and method of embedding second content in first content
US8341501B2 (en) 2009-04-30 2012-12-25 International Business Machines Corporation Adaptive endurance coding of non-volatile memories
US20100333155A1 (en) * 2009-06-30 2010-12-30 Philip David Royall Selectively using local non-volatile storage in conjunction with transmission of content
CN101610477B (zh) * 2009-07-13 2012-09-05 中兴通讯股份有限公司 多媒体消息业务的处理系统和方法
JP5999645B2 (ja) * 2009-09-08 2016-10-05 ロンギチュード エンタープライズ フラッシュ エスエイアールエル ソリッドステート記憶デバイス上にデータをキャッシングするための装置、システム、および方法
EP2476039B1 (en) 2009-09-09 2016-10-26 SanDisk Technologies LLC Apparatus, system, and method for power reduction management in a storage device
US9223514B2 (en) 2009-09-09 2015-12-29 SanDisk Technologies, Inc. Erase suspend/resume for memory
US8601222B2 (en) 2010-05-13 2013-12-03 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
EP2476079A4 (en) 2009-09-09 2013-07-03 Fusion Io Inc APPARATUS, SYSTEM, AND METHOD FOR STORAGE ALLOCATION
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
US8255655B2 (en) 2009-10-02 2012-08-28 Sandisk Technologies Inc. Authentication and securing of write-once, read-many (WORM) memory devices
US11720290B2 (en) 2009-10-30 2023-08-08 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US10877695B2 (en) 2009-10-30 2020-12-29 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
TWI407327B (zh) * 2009-11-24 2013-09-01 Phison Electronics Corp 資料處理方法、系統及儲存裝置控制器
JP5798737B2 (ja) * 2009-12-28 2015-10-21 パナソニックIpマネジメント株式会社 半導体記録装置、半導体記録装置の制御方法及び半導体記録システム
JP2011141638A (ja) * 2010-01-06 2011-07-21 Sony Corp 情報処理装置および方法、並びにプログラム
EP2559036A1 (en) 2010-04-15 2013-02-20 Ramot at Tel-Aviv University Ltd. Multiple programming of flash memory without erase
US10013354B2 (en) 2010-07-28 2018-07-03 Sandisk Technologies Llc Apparatus, system, and method for atomic storage operations
US8725934B2 (en) 2011-12-22 2014-05-13 Fusion-Io, Inc. Methods and appratuses for atomic storage operations
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
TWI443666B (zh) * 2010-08-31 2014-07-01 Silicon Motion Inc 單次可編程記憶體之資料編程電路及方法
US8984216B2 (en) 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device
TWI447736B (zh) 2010-09-13 2014-08-01 Silicon Motion Inc 單次可編程記憶體之資料編程電路及方法
TWI420305B (zh) * 2010-10-08 2013-12-21 Phison Electronics Corp 記憶體儲存裝置、其記憶體控制器與自動產生填充檔案的方法
US8769374B2 (en) 2010-10-13 2014-07-01 International Business Machines Corporation Multi-write endurance and error control coding of non-volatile memories
US10817502B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent memory management
US9218278B2 (en) 2010-12-13 2015-12-22 SanDisk Technologies, Inc. Auto-commit memory
CN103262054B (zh) 2010-12-13 2015-11-25 桑迪士克科技股份有限公司 用于自动提交存储器的装置、系统和方法
US9208071B2 (en) 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
US10817421B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent data structures
US9047178B2 (en) 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
WO2012083308A2 (en) 2010-12-17 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US9213594B2 (en) 2011-01-19 2015-12-15 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for managing out-of-service conditions
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc 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
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for 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
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
WO2012129191A2 (en) 2011-03-18 2012-09-27 Fusion-Io, Inc. Logical interfaces for contextual storage
CN102902672B (zh) * 2011-07-25 2014-04-16 腾讯科技(深圳)有限公司 清理文件系统的方法和装置
WO2013030835A1 (en) 2011-08-29 2013-03-07 David Regev Dental implant system and methods for accessing intra cavity areas therethrough
US9292668B1 (en) * 2011-09-01 2016-03-22 Google Inc. Systems and methods for device authentication
US8984032B2 (en) 2011-12-15 2015-03-17 Sandisk Technologies Inc. Method and system for providing storage device file location information
US9152641B2 (en) 2011-12-15 2015-10-06 Sandisk Technologies Inc. Method and system for providing storage device file location information
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US9666241B2 (en) 2012-01-19 2017-05-30 Quixant Plc Firmware protection and validation
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US10359972B2 (en) 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US8914570B2 (en) 2012-05-04 2014-12-16 International Business Machines Corporation Selective write-once-memory encoding in a flash based disk cache memory
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
US10318495B2 (en) 2012-09-24 2019-06-11 Sandisk Technologies Llc Snapshots for a non-volatile device
US10509776B2 (en) 2012-09-24 2019-12-17 Sandisk Technologies Llc Time sequence data management
US9183082B2 (en) 2013-01-29 2015-11-10 Qualcomm Incorporated Error detection and correction of one-time programmable elements
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US10558561B2 (en) 2013-04-16 2020-02-11 Sandisk Technologies Llc Systems and methods for storage metadata management
US10102144B2 (en) 2013-04-16 2018-10-16 Sandisk Technologies Llc Systems, methods and interfaces for data virtualization
US9842128B2 (en) 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
US10019320B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for distributed atomic storage operations
TWI494944B (zh) * 2013-10-25 2015-08-01 Phison Electronics Corp 記憶體模組偵測方法、記憶體控制電路單元及儲存裝置
US10073630B2 (en) 2013-11-08 2018-09-11 Sandisk Technologies Llc Systems and methods for log coordination
US9858990B2 (en) 2014-12-18 2018-01-02 Apple Inc. Hardware-based performance equalization for storage devices
US9946607B2 (en) 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
US10657274B2 (en) * 2015-06-29 2020-05-19 Samsng Electronics Co., Ltd. Semiconductor device including memory protector
US9785354B2 (en) * 2015-06-29 2017-10-10 International Business Machines Corporation Selective write control
US20170038994A1 (en) * 2015-08-06 2017-02-09 Kabushiki Kaisha Toshiba Storage device and data reading method
US9760301B2 (en) * 2015-08-13 2017-09-12 Texas Instruments Incorporated WOM code emulation of EEPROM-type devices
WO2017058184A1 (en) * 2015-09-30 2017-04-06 Hewlett Packard Enterprise Development Lp Remapping operations
JP6426666B2 (ja) * 2016-07-27 2018-11-21 ファナック株式会社 プログラマブルコントローラ
US10838637B2 (en) 2018-02-08 2020-11-17 Micron Technology, Inc. Status management in storage backed memory package
TWI661302B (zh) * 2018-06-25 2019-06-01 慧榮科技股份有限公司 實體儲存對照表產生裝置及方法以及電腦程式產品
TWI705329B (zh) * 2018-06-25 2020-09-21 慧榮科技股份有限公司 實體儲存對照表產生裝置及方法以及電腦程式產品
US10963336B2 (en) * 2019-08-29 2021-03-30 Micron Technology, Inc. Semiconductor device with user defined operations and associated methods and systems
US11042436B2 (en) 2019-08-29 2021-06-22 Micron Technology, Inc. Semiconductor device with modified access and associated methods and systems
US11200118B2 (en) 2019-08-29 2021-12-14 Micron Technology, Inc. Semiconductor device with modified command and associated methods and systems
KR102493864B1 (ko) * 2021-11-16 2023-01-31 삼성전자주식회사 스토리지 장치의 동작 방법 및 호스트 및 스토리지 장치를 포함하는 스토리지 시스템의 동작 방법
US11960397B2 (en) * 2022-06-16 2024-04-16 Western Digital Technologies, Inc. Data mapping comparison for improved synchronization in data storage devices

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0133154A1 (de) * 1983-06-21 1985-02-13 Ciba-Geigy Ag Mit einer härtbaren Epoxidharzmatrix imprägnierte Faserverbundmaterialien
US20010011267A1 (en) * 1999-03-03 2001-08-02 Sony Corporation Nonvolatile memory and nonvolatile memory reproducing apparatus
WO2003071419A2 (en) * 2001-12-10 2003-08-28 Incipient, Inc. Fast path for performing data operations
US20040098428A1 (en) * 2001-11-13 2004-05-20 Schulze Paul E. Memory card having one-time programmable memory

Family Cites Families (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2346801A (en) 1942-06-11 1944-04-18 Blaw Knox Co Fluid dosing device
EP0108053A1 (en) 1982-04-30 1984-05-16 Massachusetts Institute Of Technology Method and apparatus for reusing non-erasable memory media
US4740890A (en) 1983-12-22 1988-04-26 Software Concepts, Inc. Software protection system with trial period usage code and unlimited use unlocking code both recorded on program storage media
US5247494A (en) 1984-06-08 1993-09-21 Matsushita Electric Industrial Co. Ltd. Method for recording and reproducing information on and from an optical disk having a read-only recorded zone and a writable and readable zone using a spot laser light
US4646266A (en) 1984-09-28 1987-02-24 Energy Conversion Devices, Inc. Programmable semiconductor structures and methods for using the same
US4682318A (en) 1985-10-16 1987-07-21 Sony Corporation Method and apparatus for updating optical memory disc
US4953122A (en) 1986-10-31 1990-08-28 Laserdrive Ltd. Pseudo-erasable and rewritable write-once optical disk memory system
US5218685A (en) 1987-01-02 1993-06-08 General Electric Company System for write once read many optical storage devices to appear rewritable
US5119291A (en) 1987-03-26 1992-06-02 International Business Machines Corporation Modular data storage directories for large-capacity data storage units wherein the index to the records in a sector is located in the next adjacent sector
US5040110A (en) 1987-10-30 1991-08-13 Matsushita Electric Industrial Co., Ltd. Write once read many optical disc storage system having directory for storing virtual address and corresponding up-to-date sector address
US5029125A (en) 1989-03-07 1991-07-02 Drexler Technology Corporation Method of reading and writing files on nonerasable storage media
EP0618535B1 (en) * 1989-04-13 1999-08-25 SanDisk Corporation EEPROM card with defective cell substitution and cache memory
US5266230A (en) * 1989-04-26 1993-11-30 Tonen Corporation Electroviscous fluid containing antioxidant and/or corrosion inhibitor
US5307497A (en) 1990-06-25 1994-04-26 International Business Machines Corp. Disk operating system loadable from read only memory using installable file system interface
CA2045799C (en) 1990-07-11 1999-03-23 Kenneth L. Thompson File system with read/write and read only storage
US5537652A (en) 1990-08-20 1996-07-16 International Business Machines Corporation Data file directory system and method for writing data file directory information
US5265230A (en) 1990-08-29 1993-11-23 Hewlett-Packard Company Method and apparatus for determining sector status in a data storage device by writing a status of read-only, writable, or obliterated in an error recovery area of each sector
JP3315711B2 (ja) 1990-09-17 2002-08-19 ヒューレット・パッカード・カンパニー 磁気光学ディスクデータ記憶装置の書き込み管理システム及び方法
GB2251323B (en) 1990-12-31 1994-10-12 Intel Corp Disk emulation for a non-volatile semiconductor memory
US5321824A (en) 1991-04-22 1994-06-14 International Business Machines Corporation Accessing last recorded data in a continuation chain
US5448728A (en) 1991-08-08 1995-09-05 Sharp Kabushiki Kaisha Storage medium control system for controlling a write-once read-many storage medium
US5261072A (en) 1991-10-31 1993-11-09 Tandy Corporation Compact disk data transfer system using cache memory
TW261687B (ko) 1991-11-26 1995-11-01 Hitachi Seisakusyo Kk
JP3445304B2 (ja) 1993-03-29 2003-09-08 株式会社東芝 ファイル管理装置
KR970008188B1 (ko) * 1993-04-08 1997-05-21 가부시끼가이샤 히다찌세이사꾸쇼 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치
US5437012A (en) 1993-04-19 1995-07-25 Canon Information Systems, Inc. System for updating directory information and data on write once media such as an optical memory card
US5463772A (en) 1993-04-23 1995-10-31 Hewlett-Packard Company Transparent peripheral file systems with on-board compression, decompression, and space management
JPH0745085A (ja) 1993-07-30 1995-02-14 Tec Corp データ書込装置及びデータ読取装置
US5559778A (en) 1993-12-28 1996-09-24 Sony Corporation Apparatus and method for completing an incomplete recording on an optical disc
CA2145379C (en) 1994-03-24 1999-06-08 William P. Robbins Method and apparatus for addressing memory
ATE347709T1 (de) * 1994-09-14 2006-12-15 Intel Corp Editiersystem mit vorabzwischenspeicherung welches abfolgelisten verwendet
US5590320A (en) 1994-09-14 1996-12-31 Smart Storage, Inc. Computer file directory system
US5761700A (en) 1994-12-27 1998-06-02 Motorola Inc. ROM mapping and inversion apparatus and method
US5838614A (en) * 1995-07-31 1998-11-17 Lexar Microsystems, Inc. Identification and verification of a sector within a block of mass storage flash memory
US6138203A (en) 1995-11-10 2000-10-24 Sony Corporation Information processing apparatus and method enabling a write-once recording medium to be utilized as a rewriteable recording medium
US5752005A (en) 1996-01-22 1998-05-12 Microtest, Inc. Foreign file system establishing method which uses a native file system virtual device driver
US5832263A (en) 1996-03-15 1998-11-03 Digidox, Inc. System and method for in-place modification of information recorded in read-only storage using modifiable non-volatile storage associated with an agent
JPH09330273A (ja) * 1996-06-10 1997-12-22 Mitsubishi Electric Corp メモリカードおよびメモリカードにおける誤り訂正方法
US5832525A (en) 1996-06-24 1998-11-03 Sun Microsystems, Inc. Disk fragmentation reduction using file allocation tables
KR100205539B1 (ko) 1996-07-19 1999-07-01 윤종용 하드디스크의 중첩 분할 방법
JP2001503167A (ja) 1996-08-14 2001-03-06 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 内部メモリユニットと関連のイネーブル信号を発生するための回路とを含むマイクロコントローラ
US5907855A (en) 1996-10-15 1999-05-25 Micron Technology, Inc. Apparatus and method for reducing programming cycles for multistate memory system
US5835396A (en) 1996-10-17 1998-11-10 Zhang; Guobiao Three-dimensional read-only memory
JP3220041B2 (ja) 1997-04-08 2001-10-22 北海道日本電気ソフトウェア株式会社 Cd−rom読み出しシステムおよびcd−rom読み出し方法
NO972803D0 (no) 1997-06-17 1997-06-17 Opticom As Elektrisk adresserbar logisk innretning, fremgangsmåte til elektrisk adressering av samme og anvendelse av innretning og fremgangsmåte
JP3175648B2 (ja) 1997-07-07 2001-06-11 ソニー株式会社 記憶装置及びデータの書込み方法
JPH1145085A (ja) 1997-07-24 1999-02-16 Takashi Kasamatsu ピアノ
NO973993L (no) 1997-09-01 1999-03-02 Opticom As Leseminne og leseminneinnretninger
JPH11203191A (ja) 1997-11-13 1999-07-30 Seiko Epson Corp 不揮発性記憶装置、不揮発性記憶装置の制御方法、および、不揮発性記憶装置を制御するプログラムを記録した情報記録媒体
JPH11149788A (ja) 1997-11-17 1999-06-02 Oki Electric Ind Co Ltd 半導体記憶装置及びその制御方法
US6073280A (en) * 1998-02-23 2000-06-13 Farnum; Randal J. Rescue and invalid support belt
US6108236A (en) * 1998-07-17 2000-08-22 Advanced Technology Materials, Inc. Smart card comprising integrated circuitry including EPROM and error check and correction system
US6034882A (en) 1998-11-16 2000-03-07 Matrix Semiconductor, Inc. Vertically stacked field programmable nonvolatile memory and method of fabrication
US6351838B1 (en) 1999-03-12 2002-02-26 Aurora Communications, Inc Multidimensional parity protection system
US6377526B1 (en) 1999-04-01 2002-04-23 Plasmon Ide, Inc. Erasable WORM optical disk and method of writing thereto multiple times
US6370642B1 (en) 1999-05-21 2002-04-09 Advanced Micro Devices, Inc. Programming the size of a broad-specific boot ROM
US6539396B1 (en) * 1999-08-31 2003-03-25 Accenture Llp Multi-object identifier system and method for information service pattern environment
US6615253B1 (en) 1999-08-31 2003-09-02 Accenture Llp Efficient server side data retrieval for execution of client side applications
US6490703B1 (en) 1999-09-30 2002-12-03 Intel Corporation Bus power savings using selective inversion in an ECC system
JP3249959B2 (ja) 1999-10-12 2002-01-28 株式会社ソニー・コンピュータエンタテインメント 可搬型記憶装置及びメモリカード
AU2001253034A1 (en) * 2000-03-29 2001-10-08 Vadium Technology, Inc. One-time-pad encryption with central key service and keyable characters
US6598135B1 (en) 2000-05-03 2003-07-22 Plasmon Ide System and method for defining rewriteable data storage media as write once data storage media
US6775423B2 (en) 2000-05-03 2004-08-10 Microsoft Corporation Systems and methods for incrementally updating an image in flash memory
JP2002050157A (ja) 2000-08-03 2002-02-15 Hitachi Ltd 情報記録媒体及び情報記録再生装置
US6545891B1 (en) 2000-08-14 2003-04-08 Matrix Semiconductor, Inc. Modular memory device
US6658438B1 (en) 2000-08-14 2003-12-02 Matrix Semiconductor, Inc. Method for deleting stored digital data from write-once memory device
US6424581B1 (en) * 2000-08-14 2002-07-23 Matrix Semiconductor, Inc. Write-once memory array controller, system, and method
US6515888B2 (en) 2000-08-14 2003-02-04 Matrix Semiconductor, Inc. Low cost three-dimensional memory array
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
US20030120858A1 (en) 2000-09-15 2003-06-26 Matrix Semiconductor, Inc. Memory devices and methods for use therewith
US6584541B2 (en) 2000-09-15 2003-06-24 Matrix Semiconductor, Inc. Method for storing digital information in write-once memory array
JP3898430B2 (ja) 2000-09-18 2007-03-28 株式会社日立製作所 光記録装置およびそれに用いる光ディスク
US20020108054A1 (en) 2001-02-02 2002-08-08 Moore Christopher S. Solid-state memory device storing program code and methods for use therewith
US6778974B2 (en) 2001-02-02 2004-08-17 Matrix Semiconductor, Inc. Memory device and method for reading data stored in a portion of a memory device unreadable by a file system of a host device
US6948026B2 (en) * 2001-08-24 2005-09-20 Micron Technology, Inc. Erase block management
US6563745B1 (en) 2001-12-14 2003-05-13 Matrix Semiconductor, Inc. Memory device and method for dynamic bit inversion
US6904492B2 (en) * 2001-12-19 2005-06-07 Hewlett-Packard Development Company, L.P. Write-once memory device including non-volatile memory for temporary storage
US6950918B1 (en) * 2002-01-18 2005-09-27 Lexar Media, Inc. File management of one-time-programmable nonvolatile memory devices
US6957295B1 (en) 2002-01-18 2005-10-18 Lexar Media, Inc. File management of one-time-programmable nonvolatile memory devices
US6888785B2 (en) 2002-01-25 2005-05-03 Sun Microsystems, Inc. Fault tolerance mechanism for a storage device that stores data in stacks within an integral storage medium
AU2003201837A1 (en) * 2002-04-01 2003-10-23 Sony Corporation Storage medium and storage medium recording method
ATE401599T1 (de) 2002-04-30 2008-08-15 Lexar Media Inc Dateienverwaltung für einmalig programmierbare nichtflüchtige speicheranordnungen
US20040088474A1 (en) * 2002-10-30 2004-05-06 Lin Jin Shin NAND type flash memory disk device and method for detecting the logical address
US7051251B2 (en) 2002-12-20 2006-05-23 Matrix Semiconductor, Inc. Method for storing data in a write-once memory array using a write-many file system
US20040153902A1 (en) * 2003-01-21 2004-08-05 Nexflash Technologies, Inc. Serial flash integrated circuit having error detection and correction
US7240277B2 (en) * 2003-09-26 2007-07-03 Texas Instruments Incorporated Memory error detection reporting
US7106636B2 (en) * 2004-06-22 2006-09-12 Intel Corporation Partitionable memory device, system, and method
US7451265B2 (en) * 2006-08-04 2008-11-11 Sandisk Corporation Non-volatile memory storage systems for phased garbage collection
US7752412B2 (en) * 2006-09-29 2010-07-06 Sandisk Corporation Methods of managing file allocation table information

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0133154A1 (de) * 1983-06-21 1985-02-13 Ciba-Geigy Ag Mit einer härtbaren Epoxidharzmatrix imprägnierte Faserverbundmaterialien
US20010011267A1 (en) * 1999-03-03 2001-08-02 Sony Corporation Nonvolatile memory and nonvolatile memory reproducing apparatus
US20040098428A1 (en) * 2001-11-13 2004-05-20 Schulze Paul E. Memory card having one-time programmable memory
WO2003071419A2 (en) * 2001-12-10 2003-08-28 Incipient, Inc. Fast path for performing data operations

Also Published As

Publication number Publication date
US20070208908A1 (en) 2007-09-06
EP2088509A3 (en) 2009-08-26
CN101401076B (zh) 2011-05-18
EP2088510A2 (en) 2009-08-12
US7689805B2 (en) 2010-03-30
DE602005027471D1 (de) 2011-05-26
EP2088510A3 (en) 2009-08-26
WO2006023196A3 (en) 2008-09-25
US20110047416A1 (en) 2011-02-24
WO2006023196A2 (en) 2006-03-02
US7398348B2 (en) 2008-07-08
CN101401076A (zh) 2009-04-01
US7861058B2 (en) 2010-12-28
CN102163133A (zh) 2011-08-24
CN102163133B (zh) 2013-07-10
EP2088509A2 (en) 2009-08-12
AU2005277792A1 (en) 2006-03-02
JP2008511072A (ja) 2008-04-10
US20060047920A1 (en) 2006-03-02
US8209476B2 (en) 2012-06-26
EP1782209A4 (en) 2009-04-22
KR20070046844A (ko) 2007-05-03
CA2572788A1 (en) 2006-03-02
EP1782209B1 (en) 2011-04-13
ATE505762T1 (de) 2011-04-15
US20070208907A1 (en) 2007-09-06
EP1782209A2 (en) 2007-05-09
JP4852548B2 (ja) 2012-01-11

Similar Documents

Publication Publication Date Title
KR101139224B1 (ko) 소거/재기록 가능 메모리를 위해 고안된 호스트 장치에사용할 수 있는 한 번 또는 몇 번의 프로그램이 가능한메모리를 위한 방법 및 장치
JP2008511072A5 (ko)
US7752412B2 (en) Methods of managing file allocation table information
US7681008B2 (en) Systems for managing file allocation table information
JP4238514B2 (ja) データ記憶装置
US8504763B2 (en) Method and memory device that powers-up in a read-only mode and is switchable to a read/write mode
US6625713B2 (en) Memory controller and method for managing a logical/physical address control table
US6820185B2 (en) Method for identifying memory cells storing replacement data on a memory device
JP4206688B2 (ja) データ処理装置及びデータ処理方法
USRE45222E1 (en) Method of writing of writing to a flash memory including data blocks and log blocks, using a logical address having a block address portion and page identifying portion, a block address table and a page table
JP4268396B2 (ja) 1回プログラム可能な不揮発性メモリデバイスのファイル管理
WO2003056433A1 (fr) Dispositif a memoire et appareil d'enregistrement/reproduction utilisant ledit dispositif
JPH10124384A (ja) 不揮発性半導体メモリの制御方法
US20040123064A1 (en) Method for storing data in a write-once memory array using a write-many file system
JP4242245B2 (ja) フラッシュrom制御装置
JP4130808B2 (ja) フォーマット方法
WO2008042594A1 (en) Managing file allocation table information

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: 20160318

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170317

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee