KR101055324B1 - Enhanced Host Interface - Google Patents

Enhanced Host Interface Download PDF

Info

Publication number
KR101055324B1
KR101055324B1 KR1020087005053A KR20087005053A KR101055324B1 KR 101055324 B1 KR101055324 B1 KR 101055324B1 KR 1020087005053 A KR1020087005053 A KR 1020087005053A KR 20087005053 A KR20087005053 A KR 20087005053A KR 101055324 B1 KR101055324 B1 KR 101055324B1
Authority
KR
South Korea
Prior art keywords
host
data
file
protocol
memory
Prior art date
Application number
KR1020087005053A
Other languages
Korean (ko)
Other versions
KR20080042850A (en
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
Priority claimed from US11/316,578 external-priority patent/US8291151B2/en
Application filed by 쌘디스크 코포레이션 filed Critical 쌘디스크 코포레이션
Publication of KR20080042850A publication Critical patent/KR20080042850A/en
Application granted granted Critical
Publication of KR101055324B1 publication Critical patent/KR101055324B1/en

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/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Communication Control (AREA)

Abstract

상이한 프로토콜들을 사용하는 호스트들과 호환 가능한 메모리 시스템은 상이한 프로토콜들에 대한 프로토콜 어댑터들을 포함한다. 프로토콜 어댑터들은 상이한 포맷들로 제공되는 데이터에 대해 공통 백엔드 시스템이 사용되도록 한다. 프로토콜 어댑터는 호스트에 응답을 발생시키고, 적절한 바와 같이 백엔드에 대한 명령들을 발생시킨다. Memory systems compatible with hosts using different protocols include protocol adapters for different protocols. Protocol adapters allow a common back end system to be used for data provided in different formats. The protocol adapter issues a response to the host and issues commands to the backend as appropriate.

프로토콜, 호스트, 메모리 시스템, 프로토콜 어댑터, 공통 백엔드 시스템. Protocol, host, memory system, protocol adapter, common backend system.

Description

강화된 호스트 인터페이스{ENHANCED HOST INTERFACE}Enhanced Host Interface {ENHANCED HOST INTERFACE}

본 출원은 반도체 플래시 메모리와 같은 재-프로그래밍 가능한 비휘발성 메모리 시스템들의 작동에 관한 것이며, 특히 호스트 장치 및 메모리 사이의 인터페이스의 관리에 관한 것이다. 모든 특허들, 특허 출원들, 논문들과 다른 공개들, 문서들 및 ("관련 출원들과의 상호-참조 하에서 위에 참조된 모든 출원들을 포함한) 본원에 참조된 것들은 모든 용도들에 대하여 전체적으로 본원에 참조되어 있다. The present application relates to the operation of reprogrammable non-volatile memory systems such as semiconductor flash memory, and more particularly to the management of an interface between a host device and a memory. All patents, patent applications, articles and other publications, documents, and references herein (including all applications referred to above under cross-reference with related applications) are hereby incorporated by reference in their entirety for all uses. Reference is made.

초기 세대의 상업적인 플래시 메모리 시스템에서, 메모리 셀들의 직사각형 어레이는 표준 디스크 드라이브 섹터의 데이터 량, 즉 512 바이트를 각각 저장하는 셀들의 다수의 그룹들로 분할되었다. 에러 수정 코드(ECC) 및 사용자 데이터 및/또는 이것이 저장되는 메모리 셀 그룹에 관한 아마도 다른 오버헤드 데이터를 저장하기 위하여 16 바이트와 같은 부가적인 데이터 량이 또한 통상적으로 각각의 그룹에 포함된다. 각각의 이와 같은 그룹 내의 메모리 셀들은 함께 소거 가능한 최소 수의 메모리 셀들이다. 즉, 소거 단위는 효율적으로 하나의 데이터 섹터 및 포함되는 임의의 오버헤드 데이터를 저장하는 메모리 셀들의 수이다. 이 유형의 메모리 시스템의 예들은 미국 특허 번호 5,602,987 및 6,426,893에 설명되어 있다. 플래시 메모리의 특성은 데이터로 메모리 셀들을 재-프로그래밍하기 전에 메모리 셀들이 소거 될 필요가 있다는 것이다. In earlier generations of commercial flash memory systems, a rectangular array of memory cells has been divided into a number of groups of cells each storing an amount of data in a standard disk drive sector, ie 512 bytes. An additional amount of data, such as 16 bytes, is also typically included in each group to store error correction code (ECC) and user data and / or possibly other overhead data relating to the memory cell group in which it is stored. The memory cells in each such group are the minimum number of memory cells that can be erased together. That is, the erase unit is the number of memory cells that efficiently store one data sector and any overhead data included. Examples of this type of memory system are described in US Pat. Nos. 5,602,987 and 6,426,893. A characteristic of flash memory is that memory cells need to be erased before re-programming the memory cells with data.

플래시 메모리 시스템들은 가장 통상적으로는, 개인용 컴퓨터, 카메라, 등과 같은 다수의 호스트들과 제거 가능하게 접속되지만, 이와 같은 호스트 시스템들 내에 또한 내장될 수 있는 메모리 카드 또는 플래시 드라이브의 형태로 제공된다. 메모리에 데이터를 기록할 때, 호스트는 전형적으로 메모리 시스템의 연속적인 가상 어드레스 공간 내의 섹터들, 클러스터들 또는 다른 데이터 단위들에 특정 논리적 어드레스들을 할당한다. 디스크 운영 시스템(DOS)과 같이, 호스트는 메모리 시스템의 논리적 어드레스 공간 내의 어드레스들에 데이터를 기록하고, 상기 어드레스들로부터 데이터를 판독한다. 메모리 시스템 내의 제어기는 호스트로부터 수신된 논리적 어드레스들을 데이터가 실제로 저장되는 메모리 어레이 내의 물리적 어드레스들로 번역하고 나서, 이러한 어드레스 번역들을 추적한다. 메모리 시스템의 데이터 저장 용량은 적어도 메모리 시스템에 대해 규정된 전체 논리적 어드레스 공간에 걸쳐 어드레싱 가능한 데이터 량만큼 크다. Flash memory systems are most commonly provided in the form of a memory card or flash drive that is removably connected to a number of hosts, such as a personal computer, a camera, and the like, but may also be embedded within such host systems. When writing data to memory, the host typically assigns specific logical addresses to sectors, clusters or other data units within the contiguous virtual address space of the memory system. Like a disk operating system (DOS), a host writes data to and reads data from addresses in the logical address space of the memory system. The controller in the memory system translates the logical addresses received from the host into physical addresses in the memory array where the data is actually stored and then tracks these address translations. The data storage capacity of the memory system is at least as large as the amount of addressable data over the entire logical address space defined for the memory system.

이후 세대들의 플래시 메모리 시스템들에서, 소거 단위의 크기는 데이터의 다수의 섹터들을 저장하는데 충분한 메모리 셀들의 블록으로 증가되었다. 메모리 시스템들이 접속되는 호스트 시스템들이 섹터들과 같은 작은 최소 단위들로 데이터를 프로그래밍 및 판독할 수 있을지라도, 플래시 메모리의 단일 소거 단위에 다수의 섹터들이 저장된다. 호스트가 데이터의 논리적 섹터들을 갱신하거나 교체할 때, 블록 내의 데이터의 일부 섹터들이 무용화되는(obsolete) 것이 통상적이다. 블록에 저장된 임의의 데이터가 겹쳐쓰기되기 전에 전체 블록이 소거되어야 하기 때문에, 새로운 또는 갱신된 데이터는 전형적으로 소거되어 상기 데이터를 위한 남아 있는 용량을 갖는 또 다른 블록에 저장된다. 이 프로세스는 원래 블록(original block)이 메모리 내의 유용한 공간을 차지하는 무용 데이터(obsolete data)를 갖도록 한다. 그러나, 그 블록은 자신 내에 임의의 유효 데이터가 남아 있는 경우에 소거될 수 없다. In later generations of flash memory systems, the size of the erase unit has been increased to a block of memory cells sufficient to store multiple sectors of data. Although the host systems to which memory systems are connected can program and read data in small minimum units such as sectors, multiple sectors are stored in a single erase unit of flash memory. When a host updates or replaces logical sectors of data, it is common for some sectors of data in the block to be obsolete. Since the entire block must be erased before any data stored in the block is overwritten, new or updated data is typically erased and stored in another block with the remaining capacity for that data. This process allows the original block to have obsolete data that takes up valuable space in memory. However, the block cannot be erased if any valid data remains in it.

따라서, 메모리의 저장 용량을 더 양호하게 이용하기 위하여, 데이터의 유효한 부분적인 블록 량들을 소거된 블록 내로 복제함으로써 데이터의 유효한 부분적인 블록 량들을 통합 또는 수집하여, 이러한 데이터가 복제되는 블록(들)이 그 후에 소거될 수 있고 이들의 전체 저장 용량이 재사용될 수 있도록 하는 것이 통상적이다. 블록 내의 데이터 섹터들을 이들의 논리적인 어드레스들의 순서로 그룹화하기 위하여 데이터를 복제하는 것이 또한 바람직한데, 그 이유는 이것이 데이터를 판독하고 판독 데이터를 호스트에 전달하는 속도를 증가시키기 때문이다. 이와 같은 데이터 복제가 너무 자주 발생하는 경우, 메모리 시스템의 작동 성능은 저하될 수 있다. 이것은 특히, 전형적인 경우인, 메모리의 저장 용량이 시스템의 논리적 어드레스 공간을 통해 호스트에 의하여 어드레싱될 수 있는 데이터 량보다 약간 더 많은 경우에, 메모리 시스템들의 작동에 영향을 준다. 이 경우에, 호스트 프로그래밍 명령이 실행되기 전에 데이터 통합 및 수집이 필요로 될 수 있다. 그 후, 프로그래밍 시간이 증가된다. Thus, in order to better utilize the storage capacity of the memory, the effective partial block amounts of data are consolidated or collected by copying the effective partial block amounts of data into the erased block, so that the block (s) to which such data is duplicated. It is then common to allow them to be erased afterwards and to allow their entire storage capacity to be reused. It is also desirable to duplicate the data in order to group the data sectors within the block in order of their logical addresses, because this increases the speed of reading data and delivering the read data to the host. If such data replication occurs too frequently, the operating performance of the memory system may be degraded. This affects the operation of memory systems, especially when the storage capacity of the memory, which is a typical case, is slightly more than the amount of data that can be addressed by the host through the logical address space of the system. In this case, data integration and collection may be required before the host programming instructions are executed. After that, the programming time is increased.

소정의 반도체 에어리어에 저장될 수 있는 데이터의 비트들의 수를 증가시키기 위하여 다음 세대들의 메모리 시스템들에서 블록들의 크기들이 증가하고 있다. 256 데이터 섹터들 및 그 이상을 저장하는 블록들이 통상적이 되고 있다. 부가적으로, 데이터 프로그래밍 및 판독 시에 병렬도(degree of parallelism)를 증가시키기 위하여 상이한 어레이들 및 서브-어레이들의 2개, 4개 또는 그 이상의 블록들이 종종 함께 메타블록들 내로 논리적으로 링크된다. 이와 같은 큰 용량과 함께, 작동 단위들은 이들을 효율적으로 작동시키는데 있어서 과제들이다. Block sizes are increasing in future generations of memory systems to increase the number of bits of data that can be stored in a given semiconductor area. Blocks storing 256 data sectors and more are becoming commonplace. In addition, two, four or more blocks of different arrays and sub-arrays are often logically linked together into metablocks to increase the degree of parallelism in data programming and reading. With such large capacities, operating units are challenges in operating them efficiently.

새로운 혁신들을 통해 메모리 용량이 더 커지고 속도가 더 빨라졌기 때문에, 일반적으로 이와 같은 혁신들을 사용하지만, 이와 같은 혁신들을 사용하지 않는 제품들과도 여전히 호환 가능한 제품들을 제공하는 것이 바람직하다. 이것은 새로운 제품들이 기술적인 혁신들을 이용하지만, 후방으로 호환 가능하여 상기 새로운 제품들이 더 오래된 기술들을 사용하는 제품들과 함께 사용될 수 있다는 것을 의미한다. 이와 같은 후방 호환성(backward compatibility)은 다수의 상이한 기술들과 함께 다수의 구성들에서 사용될 수 있는 휴대용 제품들에 특히 중요하다. 이와 같은 휴대용 제품의 일례는 제거 가능한 플래시 메모리 카드이다. Because of the newer innovations that result in greater memory capacity and faster speeds, it is desirable to provide products that generally use these innovations but are still compatible with products that do not use these innovations. This means that new products use technical innovations, but are backwards compatible so that the new products can be used with products that use older technologies. Such backward compatibility is particularly important for portable products that can be used in many configurations with many different technologies. One example of such a portable product is a removable flash memory card.

메모리 시스템은 호스트와 통신하는 인터페이스 층 및 메모리 어레이에 데이터를 저장하는 백엔드를 포함한다. 인터페이스 층 및 백엔드 사이에, 번역 층이 호스트들에 의해 사용된 상이한 프로토콜들에 따라 인터페이스 층에 의해 수신된 데이터 및 명령들을 백엔드에 이해 가능한 포맷으로 변환한다. 따라서, 번역 층은 공통 백엔드가 다수의 프로토콜들을 사용하는 다수의 호스트들과 함께 사용되도록 한다. 이것은 제거 가능한 메모리 카드들 내의 메모리 시스템들에 특히 유용하다. 번역 층은 하나 이상의 프로토콜 어댑터들을 포함한다. 프로토콜 어댑터는 호스트에 의해 사용된 프로토콜에 따라 호스트로부터 통신(명령들 및 데이터)을 수신하고, 이에 응답하여, 백엔드를 위해 상기 데이터 및 명령들을 변환한다. 프로토콜 어댑터는 또한 호스트에 신호들을 발생시킬 수 있는데, 여기서 이와 같은 신호들은 호스트 프로토콜의 부분이다. The memory system includes an interface layer in communication with a host and a back end for storing data in a memory array. Between the interface layer and the back end, the translation layer converts the data and instructions received by the interface layer into a format understandable to the back end according to the different protocols used by the hosts. Thus, the translation layer allows a common back end to be used with multiple hosts using multiple protocols. This is particularly useful for memory systems in removable memory cards. The translation layer includes one or more protocol adapters. The protocol adapter receives communications (commands and data) from the host according to the protocol used by the host and, in response, translates the data and commands for the backend. The protocol adapter may also generate signals to the host, where such signals are part of the host protocol.

메모리 시스템은 오브젝트 프로토콜에 따라 전송된 데이터 및 명령들을 비휘발성 메모리 내의 파일 기반으로 한 저장소와 호환 가능한 포맷으로 변환하는 오브젝트 프로토콜 어댑터를 포함한다. 특히, 오브젝트 프로토콜 어댑터는 오브젝트를 수신하기 전에 오브젝트에 관한 메타데이터를 수신한다. 오브젝트의 크기는 메타데이터에 포함된다. 오프젝트 프로토콜 어댑터는 수신된 데이터의 량을 메타데이터 정보에 의해 표시된 크기와 비교함으로써 언제 전체 오브젝트가 수신되었는지를 결정한다. 오브젝트 프로토콜 어댑터가 전체 오브젝트가 수신되었다라고 결정할 때, 상기 오브젝트 프로토콜 어댑터는 호스트에 응답을 발생시키고, 메모리 시스템의 백엔드에 파일 표시자의 종점을 발생시켜서, 파일이 백엔드에 의해 클로우즈(close)되도록 한다. 이것은 백엔드가 가비지 수집을 위해 파일을 스케줄링하도록 함으로써, 파일 데이터가 더 효율적으로 저장 및 관리되도록 한다. The memory system includes an object protocol adapter that converts data and instructions transmitted in accordance with the object protocol into a format compatible with file-based storage in nonvolatile memory. In particular, the object protocol adapter receives metadata about the object before receiving the object. The size of the object is included in the metadata. The object protocol adapter determines when the entire object has been received by comparing the amount of data received with the size indicated by the metadata information. When the object protocol adapter determines that the entire object has been received, the object protocol adapter generates a response to the host and generates an endpoint of the file indicator at the back end of the memory system, causing the file to be closed by the back end. This allows the backend to schedule the file for garbage collection, thereby allowing file data to be stored and managed more efficiently.

메모리 시스템은 LBA 프로토콜에 따른 데이터 및 명령들을 비휘발성 메모리 내의 파일 기반으로 한 저장소와 호환 가능한 데이터 및 명령들로 변환하는 LBA 프로토콜 어댑터를 포함한다. 일례에서, 메모리 시스템에 대해 규정된 논리적 어드레스 공간으로부터 호스트에 의해 할당된 논리적 어드레스들을 갖는 수신되는 데이터는 논리적 파일들로 맵핑된다. 그 후, 논리적 파일들은 다른 파일들과 동일한 방식으로 백엔드에 의해 처리된다. 논리적 파일들은 일반적으로 전체 메타블록을 차지하여, 상기 논리적 파일들은 다른 데이터와 메타블록을 공유하지 않는다. 그러나, 하나의 시간에서의 논리적 파일들 및 다른 시간들에서의 다른 파일들에 대하여 동일한 블록들이 사용될 수 있어서, 메모리 어레이는 상이한 유형들의 파일들 사이의 하드 파티션(hard partition)을 갖지 않는다. The memory system includes an LBA protocol adapter that converts data and instructions according to the LBA protocol into data and instructions compatible with file-based storage in nonvolatile memory. In one example, received data having logical addresses assigned by the host from a logical address space defined for the memory system is mapped to logical files. The logical files are then processed by the backend in the same way as other files. Logical files generally occupy entire metablocks, so the logical files do not share metablocks with other data. However, the same blocks can be used for logical files at one time and other files at different times, so that the memory array does not have a hard partition between different types of files.

메모리 시스템은 파일 프로토콜에 따른 데이터 및 명령들을 비휘발성 메모리 내의 파일 기반으로 한 저장소와 호환 가능한 데이터 및 명령들로 변환하는 파일 프로토콜 어댑터를 포함한다. 백엔드가 호스트와 동일한 프로토콜을 사용하는 경우(예를 들어, 둘 모두가 직접적인 데이터 파일 프로토콜을 사용하는 경우), 번역이 필요로 되지 않을 수 있다. 그러나, 호스트에 의해 상이한 파일 프로토콜이 사용되는 경우, 파일 프로토콜 어댑터가 적절한 번역을 행한다. The memory system includes a file protocol adapter that converts data and instructions according to the file protocol into data and instructions compatible with file-based storage in nonvolatile memory. If the backend uses the same protocol as the host (for example, both use a direct data file protocol), no translation may be required. However, when different file protocols are used by the host, the file protocol adapter makes the appropriate translations.

일부 경우들에서, 메모리 시스템은 하나 이상의 프로토콜 어댑터를 사용하여 하나 이상의 호스트와 통신할 수 있다. 이와 같은 경우들에서, 번역 층은 백엔드와 통신하기 위하여 한번에 하나의 프로토콜 어댑터를 선택할 수 있다. 일부 경우들에서, 번역 층은 백엔드에 인터리빙된 액세스를 제공하기 위하여 상이한 프로토콜 어댑터를 교호적으로 선택함으로써 상이한 호스트들 사이를 조정할 수 있다. In some cases, the memory system can communicate with one or more hosts using one or more protocol adapters. In such cases, the translation layer may select one protocol adapter at a time to communicate with the backend. In some cases, the translation layer may coordinate between different hosts by alternately selecting different protocol adapters to provide interleaved access to the backend.

인터페이스 층은 다수의 호스트들과 호환 가능한 논리적 인터페이스들을 포함한다. 일부 경우들에서, 호스트 장치들 상의 대응하는 인터페이스들과의 접속을 위한 별도의 물리적 인터페이스들이 또한 존재할 수 있다. 그러나, 이것은 필요로 되지는 않으며, 일부 경우들에서, USB 커넥터와 같은 단일 물리적 인터페이스가 제공되어 모든 논리적 인터페이스들에 의해 사용된다. 인터페이스 층 및 번역 층 기능들은 전용 회로에 의해 수행되거나, 제어기 상의 펌웨어에 의해 수행될 수 있다. 이것은 메모리 어레이를 관리하는 메모리 제어기일 수 있다. 메모리 어레이는 NAND 메모리 어레이일 수 있고, 하나 이상의 반도체 칩들 상에 형성될 수 있다. 메모리 시스템은 상이한 시간들에서 상이한 호스트들에 접속되는 제거 가능한 카드에 포함될 수 있다. The interface layer includes logical interfaces that are compatible with multiple hosts. In some cases, separate physical interfaces may also exist for connection with corresponding interfaces on host devices. However, this is not necessary and in some cases, a single physical interface, such as a USB connector, is provided and used by all logical interfaces. The interface layer and translation layer functions may be performed by dedicated circuitry or by firmware on the controller. This may be a memory controller managing the memory array. The memory array may be a NAND memory array and may be formed on one or more semiconductor chips. The memory system may be included in a removable card that is connected to different hosts at different times.

백엔드 시스템은 (일부 경우들에서, 호스트 파일과의 일-대-일 대응이 존재하지 않을지라도) 일부 경우들에서, 호스트 파일들에 대응하는 파일들로서 데이터를 관리할 수 있다. 파일 기반으로 한 백엔드 시스템의 일례는 미국 출원 번호 11/060,174, 11/060,248과 11/060,249 및 가특허 출원 번호 60/705,388에 설명된 직접적인 데이터 파일 백엔드이다. The backend system may in some cases manage data as files corresponding to host files (although in some cases, no one-to-one correspondence with the host file exists). Examples of file-based backend systems are the direct data file backends described in US Application Nos. 11 / 060,174, 11 / 060,248 and 11 / 060,249 and Provisional Patent Application No. 60 / 705,388.

도1은 현재 구현된 바와 같은 호스트 및 접속된 비휘발성 메모리 시스템을 개략적으로 도시한 도면. 1 schematically shows a host and connected non-volatile memory system as currently implemented.

도2는 도1의 비휘발성 메모리로서 사용하기 위한 예시적인 플래시 메모리 시스템의 블록도. 2 is a block diagram of an exemplary flash memory system for use as the nonvolatile memory of FIG.

도3은 도2의 시스템에서 사용될 수 있는 메모리 셀 어레이의 대표적인 회로도. 3 is an exemplary circuit diagram of a memory cell array that may be used in the system of FIG.

도4는 도2의 시스템의 예시적인 물리적 메모리 구성을 도시한 도면. 4 illustrates an exemplary physical memory configuration of the system of FIG.

도5는 도4의 물리적 메모리의 일부의 확대도. 5 is an enlarged view of a portion of the physical memory of FIG.

도6은 도4 및 5의 물리적 메모리의 일부의 부가적인 확대도. 6 is an additional enlarged view of a portion of the physical memory of FIGS. 4 and 5;

도7은 호스트 및 재-프로그래밍 가능한 메모리 시스템 사이의 공통의 종래 기술의 논리적 어드레스 인터페이스를 도시한 도면. FIG. 7 illustrates a common prior art logical address interface between a host and a reprogrammable memory system. FIG.

도8은 호스트 및 재-프로그래밍 가능한 메모리 시스템 사이의 공통의 종래 기술의 논리적 어드레스 인터페이스를 도7과 상이한 방식으로 도시한 도면. FIG. 8 illustrates a common prior art logical address interface between a host and a reprogrammable memory system in a different manner than FIG.

도9는 본 발명에 따른, 호스트 및 재-프로그래밍 가능한 메모리 시스템 사이의 직접적인 파일 저장 인터페이스를 도시한 도면. 9 illustrates a direct file storage interface between a host and a reprogrammable memory system in accordance with the present invention.

도10은 본 발명에 따른, 호스트 및 재-프로그래밍 가능한 메모리 시스템 사이의 직접적인 파일 저장 인터페이스를 도9와 상이한 방힉으로 도시한 도면. FIG. 10 illustrates a direct file storage interface between the host and the re-programmable memory system in a different manner from FIG. 9 in accordance with the present invention. FIG.

도11은 호스트로부터 수신되는 호스트 파일들을 메모리에 대해 규정된 공통의 논리적 어드레스 공간으로부터의 논리적 어드레스들을 갖는 섹터들로서 저장하는 방식을 도시한 도면으로서, 상기 섹터들이 논리적 파일들로 맵핑되고 나서, 논리적 파일들이 메타블록 당 하나의 논리적 파일로 메모리 어레이에 저장됨. FIG. 11 illustrates a manner of storing host files received from a host as sectors having logical addresses from a common logical address space defined for memory, wherein the sectors are mapped to logical files, and then a logical file Are stored in the memory array as one logical file per metablock.

도12는 논리적으로 어드레싱된 데이터를 논리적 파일들로 메모리 어레이에 저장하는 방식을 도11과 상이한 방식으로 도시한 도면. FIG. 12 illustrates the manner in which logically addressed data is stored in a memory array as logical files in a different manner from FIG.

도13은 파일 인터페이스 및 파일 기반으로 한 백엔드와 통신하는 LBA 인터페이스 둘 모두를 갖는 메모리 시스템을 도시한 도면으로서, LBA 프로토콜 어댑터가 LBA 인터페이스 및 파일 기반으로 한 백엔드 사이에 개재됨. Figure 13 illustrates a memory system having both a file interface and an LBA interface communicating with a file based back end, with an LBA protocol adapter interposed between the LBA interface and the file based back end.

도14A는 MTP "송신 오브젝트 정보" 트랜젝션을 도시한 도면. Fig. 14A illustrates an MTP "transmission object information" transaction.

도14B는 MTP "송신 오브젝트" 트랜젝션을 도시한 도면. Figure 14B illustrates an MTP "transmission object" transaction.

도15는 오브젝트 프로토콜 어댑터가 사이에 개재된 오브젝트 인터페이스 및 파일 기반으로 한 백엔드를 갖는 메모리 시스템을 도시한 도면. Figure 15 illustrates a memory system having an object interface and a file-based back end interposed therebetween.

도16은 인터페이스 및 파일 기반으로 한 백엔드 사이의 통신을 용이하게 하기 위하여 파일 프로토콜 어댑터, 오브젝트 프로토콜 어댑터 및 LBA 프로토콜 어댑터와 함께 파일 인터페이스, 오브젝트 인터페이스 및 LBA 인터페이스를 갖는 메모리 시스템을 도시한 도면. Figure 16 illustrates a memory system having a file interface, an object interface, and an LBA interface with a file protocol adapter, an object protocol adapter, and an LBA protocol adapter to facilitate communication between an interface and a file-based backend.

도17은 인터페이스 층의 부분으로서 간주되는 파일 인터페이스, 오브젝트 인터페이스와 LBA 인터페이스 및 번역 층의 부분으로서 간주되는 파일 프로토콜 어댑터, 오브젝트 프로토콜 어댑터와 LBA 프로토콜 어댑터를 갖는 도16의 메모리 시스템의 대안적인 도면. FIG. 17 is an alternative view of the memory system of FIG. 16 with a file interface considered as part of the interface layer, a file protocol adapter considered as part of an object interface and an LBA interface, and a translation layer, an object protocol adapter, and an LBA protocol adapter;

플래시 메모리 일반적 설명Flash memory general description

현재의 플래시 메모리 시스템 및 호스트 장치들에 의한 전형적인 작동이 도1-8을 참조하여 설명된다. 본 발명의 각종 양상들은 이와 같은 시스템에서 구현될 수 있다. 도1의 호스트 시스템(1)은 플래시 메모리(2) 내로 데이터를 저장하고 상기 플래시 메모리(2)로부터 데이터를 회수한다. 플래시 메모리가 호스트 내에 내장될 수 있을지라도, 상기 메모리(2)는 기계적 및 전기적 커넥터의 메이팅 부분(mating part)들(3 및 4)을 통해 호스트에 제거 가능하게 접속되는 더 대중적인 형태의 카드인 것으로 도시되어 있다. 현재 상업적으로 입수 가능한 많은 상이한 플래시 메모리 카드들이 존재하는데, 예들로는 콤팩트플래시(CF), 멀티미디어카드(MMC), 보안 디지털(SD), 미니SD, 메모리 스틱, 스마트미디어 및 트랜스플래시 카드들이 있다. 이러한 카드들 각각이 자신의 표준화된 사양에 따른 특정 기계적 및/또는 전기적 인터페이스를 가질지라도, 각각에 포함된 플래시 메모리는 매우 유사하다. 이러한 카드들은 모두 본 출원의 양수인인 SanDisk 사로부터 입수 가능하다. SanDisk는 또한 자신의 Cruzer 상표 하에서 플래시 드라이브들의 라인을 제공하는데, 이는 호스트의 USB 리셉터클 내로 플러깅(plugging)함으로써 호스트와 접속하기 위한 유니버셜 시리얼 버스(USB) 플러그를 갖는 작은 패키지들 내의 휴대용 메모리 시스템들이다. 이러한 메모리 카드들 및 플래시 드라이브들 각각은 호스트와 인터페이싱(interfacing)하고 이들 내에서 플래시 메모리의 작동을 제어하는 제어기들을 포함한다. Typical operation by current flash memory systems and host devices is described with reference to FIGS. 1-8. Various aspects of the invention may be implemented in such a system. The host system 1 of FIG. 1 stores data into and retrieves data from the flash memory 2. Although flash memory may be embedded within the host, the memory 2 is a more popular form of card that is removably connected to the host via mating parts 3 and 4 of the mechanical and electrical connector. It is shown. There are many different flash memory cards currently available commercially, examples being compact flash (CF), multimedia card (MMC), secure digital (SD), miniSD, memory stick, smart media and transflash card. Although each of these cards has a specific mechanical and / or electrical interface according to its standardized specifications, the flash memory contained in each is very similar. These cards are all available from SanDisk, the assignee of the present application. SanDisk also offers a line of flash drives under its Cruzer brand, which are portable memory systems in small packages with Universal Serial Bus (USB) plugs for connecting to the host by plugging into the host's USB receptacle. Each of these memory cards and flash drives includes controllers interfacing with the host and controlling the operation of flash memory within them.

이와 같은 메모리 카드들 및 플래시 드라이브들을 사용하는 호스트 시스템들은 많고 다양하다. 이 호스트 시스템들은 개인용 컴퓨터들(PC들), 랩톱 및 다른 휴대용 컴퓨터들, 셀룰러 전화들, 개인 디지털 어시스턴트들(PDA들), 디지털 정지 카메라들, 디지털 영화 카메라들 및 휴대용 오디오 플레이어들을 포함한다. 호스트는 전형적으로 하나 이상의 유형들의 메모리 카드들 또는 플래시 드라이브들을 위한 내장 리셉터클을 포함하지만, 일부는 메모리 카드가 플러깅되는 어댑터들을 필요로 한다. Host systems using such memory cards and flash drives are numerous and varied. These host systems include personal computers (PCs), laptops and other portable computers, cellular telephones, personal digital assistants (PDAs), digital still cameras, digital movie cameras and portable audio players. The host typically includes a built-in receptacle for one or more types of memory cards or flash drives, but some require adapters to which the memory card is plugged.

도1의 호스트 시스템(1)은 메모리(2)가 관련되는 한, 회로 및 소프트웨어의 조합으로 이루어지는 2개의 주요 부분들을 갖는 것으로 보여질 수 있다. 이들은 메 모리(2)와 인터페이싱하는 애플리케이션 부분(5) 및 드라이버 부분(6)이다. 예를 들어, 개인용 컴퓨터에서, 애플리케이션 부분(5)은 워드 프로세싱, 그래픽들, 제어 및 다른 대중적인 애플리케이션 소프트웨어를 실행시키는 프로세서를 포함할 수 있다. 카메라, 셀룰러 전화 또는 주로 단일 세트의 기능들을 수행하도록 전용되는 다른 호스트 시스템들에서, 애플리케이션 부분(5)은 카메라가 픽처(picture)들을 찍어서 저장하도록 작동하고, 셀룰러 전화가 호출들을 행하고 호출들을 수신하도록 하는, 등등의 작동을 하도록 하는 소프트웨어를 포함한다. The host system 1 of FIG. 1 can be seen as having two main parts consisting of a combination of circuit and software, as long as the memory 2 is related. These are the application part 5 and the driver part 6 which interface with the memory 2. For example, in a personal computer, application portion 5 may include a processor that executes word processing, graphics, controls, and other popular application software. In a camera, cellular telephone or other host systems that are primarily dedicated to performing a single set of functions, the application portion 5 operates to allow the camera to take pictures and store pictures, and to allow the cellular telephone to make calls and receive calls. Software that allows for the operation of such operations.

도1의 메모리 시스템(2)은 플래시 메모리(7), 및 데이터를 앞뒤로 통과시키기 위하여 카드가 접속되는 호스트와 인터페이싱하고 메모리(7)를 제어하는 회로(8)를 포함한다. 제어기(8)는 전형적으로 데이터 프로그래밍 및 판독 동안 호스트(1)에 의해 사용된 데이터의 논리적 어드레스 및 메모리(7)의 물리적 어드레스 사이를 변환한다. The memory system 2 of FIG. 1 comprises a flash memory 7 and a circuit 8 for interfacing with a host to which a card is connected and controlling the memory 7 for passing data back and forth. The controller 8 typically translates between the logical address of the data used by the host 1 and the physical address of the memory 7 during data programming and reading.

도2를 참조하면, 도1의 비휘발성 메모리(2)로서 사용될 수 있는 전형적인 플래시 메모리 시스템의 회로가 설명된다. 시스템 제어기는 통상적으로 시스템 버스(13)를 통하여 하나 이상의 집적 회로 메모리 칩들과 병렬로 접속되는 단일 집적 회로 칩(11) 상에 구현되며, 단일의 이와 같은 메모리 칩(15)이 도2에 도시되어 있다. 도시되어 있는 특정 버스(13)는 데이터를 전달하기 위한 컨덕터들(17)의 개별적인 세트, 메모리 어드레스들을 위한 세트(19) 및 제어 및 상태 신호들을 위한 세트(21)를 포함한다. 대안적으로, 단일 세트의 컨덕터들이 이러한 3개의 기능들 사이에서 시간 공유될 수 있다. 또한, 2004년 8월 9일자로 출원되고 명칭이 "Ring Bus Structure and It's Use in Flash Memory Systems"인 미국 특허 출원 번호 10/915,039에 설명되어 있는 링 버스와 같은, 시스템 버스들의 다른 구성들이 사용될 수 있다. Referring to FIG. 2, a circuit of a typical flash memory system that can be used as the nonvolatile memory 2 of FIG. 1 is described. The system controller is typically implemented on a single integrated circuit chip 11 that is connected in parallel with one or more integrated circuit memory chips via a system bus 13, a single such memory chip 15 being shown in FIG. 2. have. The particular bus 13 shown includes a separate set of conductors 17 for carrying data, a set 19 for memory addresses and a set 21 for control and status signals. Alternatively, a single set of conductors can be time shared between these three functions. In addition, other configurations of system buses, such as a ring bus, filed August 9, 2004 and described in US Patent Application No. 10 / 915,039, entitled "Ring Bus Structure and It's Use in Flash Memory Systems," may be used. have.

전형적인 제어기 칩(11)은 인터페이스 회로(25)를 통하여 시스템 버스(13)와 인터페이싱하는 자신의 내부 버스(23)를 갖는다. 통상적으로 버스에 접속된 주요 기능들은 (마이크로프로세서 또는 마이크로-제어기와 같은) 프로세서(27), 시스템을 초기화("부팅")하기 위한 코드를 포함한 판독 전용 메모리(ROM)(29), 메모리 및 호스트 사이에서 전달되는 데이터를 버퍼링하는데 주로 사용되는 랜덤 액세스 메모리(RAM)(31), 및 메모리 및 호스트 사이의 제어기를 통과하는 데이터에 대한 에러 수정 코드(ECC)를 계산하여 검사하는 회로(33)이다. 제어기 버스(23)는 회로들(35)을 통하여 호스트 시스템과 인터페이싱하는데, 이것은 도2의 시스템이 메모리 카드 내에 포함되는 경우에, 커넥터(4)의 부분인 카드의 외부 접촉부들(37)을 통하여 행해진다. 클록(39)이 제어기(11)의 다른 구성요소들 각각과 접속되어 상기 제어기(11)의 다른 구성요소들 각각에 의해 사용된다. A typical controller chip 11 has its own internal bus 23 that interfaces with the system bus 13 via the interface circuit 25. The main functions typically connected to the bus are the processor 27 (such as a microprocessor or micro-controller), a read only memory (ROM) 29 including code for initializing (“booting”) the system, memory and host. Random access memory (RAM) 31, which is mainly used for buffering data transferred between, and circuit 33 for calculating and checking an error correction code (ECC) for data passing through a controller between the memory and the host. . The controller bus 23 interfaces with the host system via circuits 35, which, via the external contacts 37 of the card, which is part of the connector 4, when the system of FIG. 2 is included in the memory card. Is done. The clock 39 is connected to each of the other components of the controller 11 and used by each of the other components of the controller 11.

메모리 칩(15) 뿐만 아니라, 시스템 버스(13)와 접속된 임의의 다른 것들은 전형적으로 다수의 서브-어레이들 또는 플레인들로 구성된 메모리 셀들의 어레이를 포함하며, 간소화를 위하여 2개의 이와 같은 플레인들(41 및 43)이 도시되어 있지만, 4개 또는 8개와 같이 더 많은 수의 이와 같은 플레인들이 대신 사용될 수 있다. 대안적으로, 칩(15)의 메모리 셀 어레이는 플레인들로 분할되지 않을 수 있다. 그러나, 그렇게 분할될 때, 각각의 플레인은 서로 독립적으로 작동 가능한 자신의 컬럼 제어 회로(column control circuit)들(45 및 47)을 갖는다. 상기 회로들(45 및 47)은 시스템 버스(13)의 어드레스 부분(19)으로부터 이들의 각각의 메모리 셀 어레이를 수신하고, 이들을 디코딩하여, 각각의 비트 라인들(49 및 51) 중 특정한 하나 이상에 어드레싱한다. 워드 라인들(53)은 어드레스 버스(19) 상에서 수신된 어드레스들에 응답하여 로우 제어 회로(row control circuit)들(55)을 통하여 어드레싱된다. 소스 전압 제어 회로들(57 및 59)은 또한 각각의 플레인들과 접속되며, p-웰 전압 제어 회로들(61 및 63)도 마찬가지이다. 메모리 칩(15)이 메모리 셀들의 단일 어레이를 갖는 경우, 및 시스템에서 2개 이상의 이와 같은 칩이 존재하는 경우, 각각의 칩의 어레이는 상술된 다중-플레인 칩 내의 플레인 또는 서브-어레이와 유사하게 작동될 수 있다. In addition to the memory chip 15, any other connected to the system bus 13 typically includes an array of memory cells consisting of a number of sub-arrays or planes, two such planes for simplicity. Although 41 and 43 are shown, a larger number of such planes, such as four or eight, may be used instead. Alternatively, the memory cell array of chip 15 may not be divided into planes. However, when so divided, each plane has its own column control circuits 45 and 47 that can operate independently of each other. The circuits 45 and 47 receive their respective memory cell arrays from the address portion 19 of the system bus 13 and decode them so that a particular one or more of the respective bit lines 49 and 51 are received. To. Word lines 53 are addressed through row control circuits 55 in response to addresses received on address bus 19. Source voltage control circuits 57 and 59 are also connected to the respective planes, as are p-well voltage control circuits 61 and 63. If the memory chip 15 has a single array of memory cells, and if there are two or more such chips in the system, each array of chips is similar to a plane or sub-array within the multi-plane chip described above. Can work.

데이터는 시스템 버스(13)의 데이터 부분(17)과 접속되는 각각의 데이터 입력/출력 회로들(65 및 67)을 통하여 플레인들(41 및 43) 내 및 외로 전달된다. 상기 회로들(65 및 67)은 각각의 컬럼 제어 회로들(45 및 47)을 통해 플레인들에 접속되는 라인들(69 및 71)을 통하여, 이들의 각각의 플레인들의 메모리 셀들 내로 데이터를 프로그래밍하고 이들의 각각의 플레인들의 메모리 셀들로부터 데이터를 판독하기 위하여 제공된다. Data is transferred into and out of planes 41 and 43 through respective data input / output circuits 65 and 67 that are connected to data portion 17 of system bus 13. The circuits 65 and 67 program data into memory cells of their respective planes through lines 69 and 71 that are connected to the planes via respective column control circuits 45 and 47. To read data from the memory cells of their respective planes.

제어기(11)가 데이터를 프로그래밍하고, 데이터를 판독하고 소거하며 각종 하우스키핑 문제들에 주의를 기울이도록 메모리 칩(15)의 작동을 제어할지라도, 각각의 메모리 칩은 또한 이와 같은 기능들을 수행하기 위하여 제어기(11)로부터의 명령들을 수행하는 어떤 제어 회로를 포함한다. 인터페이스 회로(73)가 시스템 버 스(13)의 제어 및 상태 부분(21)에 접속된다. 제어기로부터의 명령들은 상태 기계(75)에 제공되며, 상기 상태 기계는 이러한 명령들을 실행하기 위하여 나중에 다른 회로들의 특정한 제어를 제공한다. 제어 라인들(77-81)은 상태 기계(75)를 도2에 도시된 바와 같은 이러한 다른 회로들과 접속시킨다. 상태 기계(75)로부터의 상태 정보는 버스 부분(21)을 통한 제어기(11)로의 전송을 위하여 라인들(83)을 통하여 인터페이스(73)에 전달된다. Although the controller 11 controls the operation of the memory chip 15 to program the data, read and erase the data, and pay attention to various housekeeping problems, each memory chip also performs such functions. In order to carry out commands from the controller 11. The interface circuit 73 is connected to the control and status portion 21 of the system bus 13. Instructions from the controller are provided to the state machine 75, which later provides specific control of other circuits to execute these instructions. Control lines 77-81 connect state machine 75 with these other circuits as shown in FIG. Status information from the state machine 75 is communicated to the interface 73 via lines 83 for transmission to the controller 11 via the bus portion 21.

NOR와 같은 다른 구조들이 대신 사용될 수 있을지라도, 메모리 셀 어레이들(41 및 43)의 NAND 구조가 현재 바람직하다. NAND 플래시 메모리들의 예들 및 메모리 시스템의 부분으로서의 이들의 작동에 대해서는 미국 특허 번호 5,570,315, 5,774,397, 6,046,935, 6,373,746, 6,456,528, 6,522,580, 6,771,536과 6,781,877 및 미국 특허 출원 공개 번호 2003/0147278이 참조될 수 있다. Although other structures, such as NOR, may be used instead, the NAND structure of memory cell arrays 41 and 43 is presently preferred. For examples of NAND flash memories and their operation as part of a memory system, reference may be made to US Pat. Nos. 5,570,315, 5,774,397, 6,046,935, 6,373,746, 6,456,528, 6,522,580, 6,771,536 and 6,781,877 and US Patent Application Publication No. 2003/0147278.

예시적인 NAND 어레이는 도2의 메모리 시스템의 메모리 셀 어레이(41)의 일부인 도3의 회로도에 의해 도시되어 있다. 많은 수의 글로벌 비트 라인들이 제공되며, 설명의 간소화를 위하여 단지 4개의 이와 같은 라인들(91-94)만이 도2에 도시되어 있다. 다수의 직렬 접속된 메모리 셀 스트링들(97-104)은 이러한 비트 라인들 중 하나 및 기준 전위 사이에 접속된다. 대표로서 메모리 셀 스트링(99)을 사용하면, 다수의 전하 저장 메모리 셀들(107-110)은 스트링의 어느 한 단부에서 선택 트랜지스터들(111 및 112)과 직렬로 접속된다. 스트링의 선택 트랜지스터들이 도전적이 될 때, 스트링은 이의 비트 라인 및 기준 전위 사이에 접속된다. 그 후, 그 스트링 내의 하나의 메모리 셀이 한번에 프로그래밍되거나 판독된다. An exemplary NAND array is shown by the circuit diagram of FIG. 3, which is part of the memory cell array 41 of the memory system of FIG. A large number of global bit lines are provided, and only four such lines 91-94 are shown in FIG. 2 for simplicity of description. Multiple serially connected memory cell strings 97-104 are connected between one of these bit lines and the reference potential. Using memory cell string 99 as a representative, multiple charge storage memory cells 107-110 are connected in series with select transistors 111 and 112 at either end of the string. When the select transistors of a string become conductive, the string is connected between its bit line and the reference potential. Then, one memory cell in the string is programmed or read at one time.

도3의 워드 라인들(115-118)은 메모리 셀들의 다수의 스트링들 각각 내의 하나의 메모리 셀들의 전하 저장 요소에 걸쳐 개별적으로 확장되고, 게이트들(119 및 120)은 스트링들의 각 단부에서 선택 트랜지스터들의 상태들을 제어한다. 공통 워드 및 제어 게이트 라인들(115-120)을 공유하는 메모리 셀 스트링들은 함께 소거되는 메모리 셀들의 블록(123)을 형성하게 된다. 셀들의 이 블록은 동시에 물리적으로 소거 가능한 최소 수의 셀들을 포함한다. 워드 라인들(115-118) 중 하나를 따른 것들인 메모리 셀들 중 하나의 로우가 한번에 프로그래밍된다. 전형적으로, NAND 어레이의 로우들은 접지 또는 또 다른 공통 전위에 접속된 스트링들의 단부에 가장 가까운 워드 라인(118)을 따른 로우에서 시작하는 경우에, 규정된 순서로 프로그래밍된다. 워드 라인(117)을 따른 메모리 셀들의 로우가 다음에 프로그래밍되고, 블록(123)에 걸쳐서 이런 식으로 진행된다. 워드 라인(115)을 따른 로우가 마지막에 프로그래밍된다. The word lines 115-118 of Figure 3 extend individually across the charge storage element of one memory cell in each of the plurality of strings of memory cells, with gates 119 and 120 selected at each end of the strings. Control the states of the transistors. Memory cell strings sharing the common word and control gate lines 115-120 form a block 123 of memory cells that are erased together. This block of cells contains the minimum number of cells that are simultaneously physically erasable. A row of one of the memory cells that is along one of the word lines 115-118 is programmed at a time. Typically, the rows of a NAND array are programmed in a defined order when starting at a row along word line 118 closest to the end of strings connected to ground or another common potential. A row of memory cells along word line 117 is next programmed and proceeds in this manner across block 123. The row along word line 115 is programmed last.

제2 블록(125)은 유사하며, 상기 제2 블록의 메모리 셀들의 스트링들은 제1 블록(123) 내의 스트링들과 동일한 글로벌 비트 라인들에 접속되지만, 상이한 세트의 워드 및 제어 게이트 라인들을 갖는다. 워드 및 제어 게이트 라인들은 로우 제어 회로(55)에 의해 자신들의 적절한 작동 전압들로 구동된다. 도2의 플레인들 1 및 2와 같이, 시스템에서 하나 이상의 플레인 또는 서브-어레이가 존재하는 경우, 하나의 메모리 구조는 이들 사이에서 확장된 공통 워드 라인들을 사용한다. 대안적으로, 공통 워드 라인들을 공유하는 2개 이상의 플레인들 또는 서브-어레이들이 존재할 수 있다. 다른 메모리 구조들에서, 개별적인 플레인들 또는 서브-어레이들의 워드 라인들은 개별적으로 구동된다. The second block 125 is similar and the strings of memory cells of the second block are connected to the same global bit lines as the strings in the first block 123, but with different sets of word and control gate lines. The word and control gate lines are driven to their proper operating voltages by the row control circuit 55. As shown in planes 1 and 2 of FIG. 2, when there is more than one plane or sub-array in the system, one memory structure uses common word lines that extend between them. Alternatively, there may be two or more planes or sub-arrays sharing common word lines. In other memory structures, the word lines of individual planes or sub-arrays are driven individually.

상기 참조된 여러 NAND 특허들 및 공개된 출원들에서 설명된 바와 같이, 메모리 시스템은 각각의 전하 저장 요소 또는 영역에서 2개 이상의 검출 가능한 전하 레벨들을 저장함으로써, 각각에서 한 비트 이상의 데이터를 저장하도록 작동될 수 있다. 메모리 셀들의 전하 저장 요소들은 미국 특허 출원 번호 2003/0109093에 설명된 바와 같이, 가장 통상적인 도전성 플로팅 게이트들이지만, 대안적으로 비-도전성 유전체 전하 트랩핑 재료일 수 있다. As described in the various referenced NAND patents and published applications, the memory system operates to store more than one bit of data in each by storing two or more detectable charge levels in each charge storage element or region. Can be. The charge storage elements of the memory cells are the most common conductive floating gates, as described in US Patent Application No. 2003/0109093, but may alternatively be a non-conductive dielectric charge trapping material.

도4는 이하의 부가적인 설명들에서 예로서 사용되는 플래시 메모리 셀 어레이(7)(도1)의 구성을 도시한다. 메모리 셀들의 4개의 플레인들 또는 서브-어레이들(131-134)은 단일 집적 메모리 셀 칩 상에, 2개의 칩들(각각의 칩 상에 2개의 플레인들) 상에, 또는 4개의 개별적인 칩들 상에 존재할 수 있다. 특정 배열은 이하의 논의에 중요하지 않다. 물론, 1, 2, 8, 16 또는 그 이상의 다른 수들의 플레인들이 시스템에 존재할 수 있다. 플레인들은 각각의 플레인들(131-134)에 위치된, 블록들(137, 138, 139 및 140)와 같이, 직사각형들에 의해 도4에 도시된 메모리 셀들의 블록으로 개별적으로 분할된다. 각각의 플레인에 수십 개 또는 수백 개의 블록들이 존재할 수 있다. 상술된 바와 같이, 메모리 셀들의 블록은 물리적으로 함께 소거될 수 있는 메모리 셀들의 최소 수인 소거 단위이다. 그러나, 증가된 병렬성 때문에, 블록들은 보다 큰 메타블록 단위들로 작동된다. 각각의 플레인으로부터의 하나의 블록은 함께 논리적으로 링크되어 메타블록을 형성한다. 4개의 블록들(137-140)이 하나의 메타블록(141)을 형성하는 것으로 도시되어 있다. 메타블록 내의 모 든 셀들은 전형적으로 함께 소거된다. 메타블록을 형성하는데 사용되는 블록들은 블록들(145-148)로 이루어진 제2 메타블록(143)에서 나타낸 바와 같이, 자신들의 각각의 플레인들 내에서 동일한 상대적인 위치들로 제한될 필요가 없다. 높은 시스템 성능을 위하여, 메타블록들을 플레인들 모두에 걸쳐 확장시키는 것이 통상적으로 바람직할지라도, 메모리 시스템은 상이한 플레인들에서 하나, 2개 또는 3개의 블록들 중 임의의 또는 모두의 메타블록들을 동적으로 형성하는 능력을 갖도록 작동될 수 있다. 이것은 메타블록의 크기가 하나의 프로그래밍 작동에서 저장에 이용 가능한 데이터 량과 더 정확하게 부합하도록 한다. 4 shows the configuration of the flash memory cell array 7 (FIG. 1) used as an example in the following additional descriptions. Four planes or sub-arrays 131-134 of memory cells are placed on a single integrated memory cell chip, on two chips (two planes on each chip), or on four individual chips. May exist. The specific arrangement is not important to the discussion below. Of course, one, two, eight, sixteen or more other numbers of planes may exist in the system. The planes are separately divided into blocks of memory cells shown in FIG. 4 by rectangles, such as blocks 137, 138, 139 and 140, located in respective planes 131-134. There may be dozens or hundreds of blocks in each plane. As described above, a block of memory cells is an erase unit that is the minimum number of memory cells that can be physically erased together. However, because of the increased parallelism, blocks operate on larger metablock units. One block from each plane is logically linked together to form a metablock. Four blocks 137-140 are shown to form one metablock 141. All cells in the metablock are typically erased together. The blocks used to form the metablock need not be limited to the same relative positions within their respective planes, as shown in the second metablock 143 consisting of blocks 145-148. For high system performance, although it is usually desirable to extend metablocks across all planes, the memory system dynamically selects any or all of the metablocks in one, two or three blocks in different planes. It can be operated to have the ability to form. This allows the size of the metablock to more accurately match the amount of data available for storage in one programming operation.

개별적인 블록들은 이어서 도5에 도시된 바와 같이, 작동적인 용도들을 위하여 메모리 셀들의 페이지들로 분할된다. 블록들(131-134) 각각의 메모리 셀들은 예를 들어, 8개의 페이지들(P0-P7)로 각각 분할된다. 대안적으로, 각 블록 내에 메모리 셀들의 16개, 32개 또는 그 이상의 페이지들이 존재할 수 있다. 페이지는 동시에 프로그래밍되는 데이터의 최소 량을 포함한, 블록 내에서의 데이터 프로그래밍 및 판독의 단위이다. 도3의 NAND 구조에서, 페이지는 블록 내의 워드 라인을 따라 메모리 셀들로 형성된다. 그러나, 메모리 시스템 작동 병렬성을 증가시키기 위하여, 2개 이상의 블록들 내의 이와 같은 페이지들은 메타페이지들 내로 논리적으로 링크될 수 있다. 메타페이지(151)는 도5에 도시되어 있고, 4개의 블록들(131-134) 각각으로부터의 하나의 물리적 페이지로 형성된다. 메타페이지(151)는 예를 들어, 4개의 블록들 각각에서의 페이지(P2)를 포함하지만, 메타페이지의 페이지들이 반드시 블록들 각각 내에서 동일한 상대적인 위치를 가질 필요는 없다. 높은 시스템 성 능을 위하여, 모든 4개의 플레인들에 걸쳐 병렬로 최대 데이터 량을 프로그래밍하고 판독하는 것이 바람직할지라도, 메모리 시스템은 또한 상이한 플레인들 내의 개별적인 블록들에서 하나, 2개 또는 3개의 블록들 중 임의의 또는 모두의 메타블록들을 형성하도록 작동될 수 있다. 이것은 프로그래밍 및 판독 작동들이 병렬로 편리하게 핸들링될 수 있는 데이터 량에 적응형으로 부합하도록 하며, 메타페이지의 부분이 데이터로 프로그래밍되지 않은 채 유지되는 경우들을 감소시킨다. The individual blocks are then divided into pages of memory cells for operational purposes, as shown in FIG. The memory cells of each of the blocks 131-134 are divided into, for example, eight pages P0-P7. Alternatively, there may be 16, 32 or more pages of memory cells in each block. A page is a unit of data programming and reading within a block, including the minimum amount of data that is programmed at the same time. In the NAND structure of Fig. 3, a page is formed of memory cells along a word line in a block. However, to increase memory system operational parallelism, such pages in two or more blocks may be logically linked into metapages. The metapage 151 is shown in FIG. 5 and is formed of one physical page from each of the four blocks 131-134. The metapage 151, for example, includes a page P2 in each of the four blocks, but the pages of the metapage do not necessarily have the same relative position within each of the blocks. For high system performance, although it may be desirable to program and read the maximum amount of data in parallel across all four planes, the memory system may also have one, two or three blocks in separate blocks within different planes. May be operated to form any or all of the metablocks. This allows programming and read operations to adaptively match the amount of data that can be conveniently handled in parallel, reducing the cases where portions of the metapage remain unprogrammed with data.

한번에 단일 페이지들 및 단일 블록들을 사용하여 데이터를 관리하는데 사용되는 대부분의 메모리 관리 기술들이 또한 메타페이지들 및 메타블록들에 적용될 수 있다. 유사하게, 메타페이지들 및 메타블록들을 사용하는 기술들이 또한 단일 블록들 및 단일 페이지들에 적용될 수 있다. 일반적으로, 페이지들 및 블록들을 사용하는 소정 예들은 메타페이지들 및 메타블록들에 적용 가능한 것으로 이해될 것이다. 유사하게, 메타페이지들 및 메타블록들과 관련된 소정 예들은 페이지들 및 블록들에 일반적으로 적용 가능한 것으로 이해될 것이다. Most memory management techniques used to manage data using single pages and single blocks at a time can also be applied to metapages and metablocks. Similarly, techniques using metapages and metablocks may also be applied to single blocks and single pages. In general, it will be understood that certain examples of using pages and blocks are applicable to metapages and metablocks. Similarly, it will be understood that certain examples relating to metapages and metablocks are generally applicable to pages and blocks.

도5에 도시된 바와 같이, 다수의 플레인들의 물리적 페이지들로 형성된 메타페이지는 이러한 다수의 플레인들의 워드 라인 로우들을 따라 메모리 셀들을 포함한다. 하나의 워드 라인 로우 내의 셀들 모두를 동시에 프로그래밍하기보다는 오히려, 이들은 더 통상적으로 2개 이상의 인터리빙된 그룹들로 교호적으로 프로그래밍되며, 각각의 그룹은 (단일 블록에) 데이터의 페이지 또는 (다수의 블록들에 걸쳐) 데이터의 메타페이지를 저장한다. 동시에 교호적인 메모리 셀을 프로그래밍함으로써, 데이터 레지스터(data resister)들 및 감지 증폭기를 포함하는 주변 회로들의 유닛이 각각의 비트 라인에 제공될 필요가 없고, 오히려 인접한 비트 라인들 사이에서 시간-공유된다. 이것은 주변 회로들에 필요로 되는 기판 공간 량을 절약하고 메모리 셀들이 로우들을 따라서 증가된 밀도로 패킹되도록 한다. 그렇지 않으면, 소정의 메모리 시스템으로부터 이용 가능한 병렬성을 최대화하기 위하여 로우를 따라 모든 셀을 동시에 프로그래밍하는 것이 바람직하다. As shown in FIG. 5, a metapage formed of physical pages of multiple planes includes memory cells along the word line rows of such multiple planes. Rather than programming all of the cells in one word line row simultaneously, they are more typically programmed alternately into two or more interleaved groups, each group being a page of data (in a single block) or (multiple blocks). Store the metapage of the data). By programming alternating memory cells at the same time, a unit of peripheral circuits including data resisters and sense amplifiers need not be provided on each bit line, but rather is time-shared between adjacent bit lines. This saves the amount of substrate space needed for peripheral circuits and allows memory cells to be packed at increased density along the rows. Otherwise, it is desirable to program all cells simultaneously along a row to maximize the parallelism available from a given memory system.

도3을 참조하면, 로우를 따른 모든 다른 메모리 셀 내로의 데이터의 동시적인 프로그래밍은 도시되어 있는 단일 로우 대신에, NAND 스트링들의 적어도 하나의 단부를 따라 선택 트랜지스터들(도시되지 않음)의 2개의 로우들을 제공함으로써 가장 편리하게 성취된다. 그 후, 하나의 로우의 선택 트랜지스터들은 하나의 제어 신호에 응답하여 블록 내의 모든 다른 스트링을 자신들의 각각의 비트 라인들에 접속시키고, 다른 로우의 선택 트랜지스터들은 또 다른 제어 신호에 응답하여 개재된 모든 다른 스트링을 자신들의 각각의 비트 라인들에 접속시킨다. 따라서, 데이터의 2개의 페이지들이 메모리 셀들의 각각의 로우 내로 기록된다. Referring to Figure 3, simultaneous programming of data into all other memory cells along a row results in two rows of select transistors (not shown) along at least one end of the NAND strings, instead of the single row shown. Is most conveniently accomplished by providing them. The select transistors in one row then connect all other strings in the block to their respective bit lines in response to one control signal, and the select transistors in the other row all intervene in response to another control signal. Connect another string to their respective bit lines. Thus, two pages of data are written into each row of memory cells.

각각의 논리적 페이지에서의 데이터 량은 전형적으로 데이터의 하나 이상의 섹터들의 정수이며, 각각의 섹터는 관례상 512 바이트의 데이터를 포함한다. 도6은 페이지 또는 메타페이지의 데이터의 2개의 섹터들(153 및 155)의 논리적 데이터 페이지를 도시한다. 각각의 섹터는 통상적으로 저장되는 512 바이트의 사용자 또는 시스템 데이터의 부분(157) 및 상기 부분(157) 내의 데이터 또는 이것이 저장되는 물리적 페이지 또는 블록 중 하나와 관련된 오버헤드 데이터에 대한 다른 수의 바이트들(159)을 포함한다. 오버헤드 데이터의 바이트들의 수는 전형적으로 16 바이 트이고, 섹터들(153 및 155) 각각에 대해 총 528 바이트가 된다. 오버헤드 부분(159)은 프로그래밍 동안 데이터 부분(157)으로부터 계산된 ECC, 자신의 논리적 어드레스, 및 블록이 소거되고 재-프로그래밍되었던 횟수의 경험 카운트(experience count), 하나 이상의 제어 플래그, 작동 전압 레벨들, 및/또는 등, 플러스 이와 같은 오버헤드 데이터(159)로부터 계산된 ECC를 포함할 수 있다. 대안적으로, 오버헤드 데이터(159), 또는 이의 부분은 다른 블록들 내의 상이한 페이지들에 저장될 수 있다. The amount of data in each logical page is typically an integer of one or more sectors of data, with each sector conventionally containing 512 bytes of data. 6 shows a logical data page of two sectors 153 and 155 of data of a page or metapage. Each sector is typically a 512 byte portion of user or system data stored therein and another number of bytes for the data in the portion 157 or overhead data associated with one of the physical pages or blocks in which it is stored. 159. The number of bytes of overhead data is typically 16 bytes, totaling 528 bytes for each of sectors 153 and 155. The overhead portion 159 includes an ECC calculated from the data portion 157 during programming, its logical address, and an experience count of one time the block was erased and re-programmed, one or more control flags, an operating voltage level. , And / or the like, plus ECC calculated from such overhead data 159. Alternatively, overhead data 159, or portions thereof, may be stored in different pages within other blocks.

메모리들의 병렬성이 증가함에 따라, 메타블록의 데이터 저장 용량이 증가하고, 데이터 페이지 및 메타페이지의 크기가 또한 결과적으로 증가한다. 그 후, 데이터 페이지는 2개 이상의 데이터 섹터들을 포함할 수 있다. 데이터 페이지 내에 2개의 섹터들을 가지고, 메타페이지 당 2개의 페이지들을 갖는다면, 메타페이지에 4개의 섹터들이 존재한다. 따라서, 각각의 메타페이지는 2048 바이트의 데이터를 저장한다. 이것은 높은 병렬도이며, 로우들 내의 메모리 셀들의 수가 증가함에 따라 훨씬 더 증가될 수 있다. 이러한 이유 때문에, 플래시 메모리들의 폭은 페이지 및 메타페이지에서 데이터 량을 증가시키기 위하여 확장되고 있다. As the parallelism of memories increases, the data storage capacity of the metablock increases, and the size of data pages and metapages also increases as a result. The data page can then comprise two or more data sectors. If there are two sectors in the data page and two pages per metapage, then there are four sectors in the metapage. Thus, each metapage stores 2048 bytes of data. This is a high degree of parallelism and can be increased even more as the number of memory cells in the rows increases. For this reason, the width of flash memories is expanding to increase the amount of data in pages and metapages.

512 메가바이트(MB), 1 기가바이트(GB), 2 GB 및 4 GB의 데이터 저장 용량을 갖는 위에서 인식된 물리적으로 작은 재-프로그래밍 가능한 비휘발성 메모리 카드들 및 플래시 드라이브들이 상업적으로 입수 가능하고, 데이터 저장 용량은 더 높아질 수 있다. 도7은 호스트 및 이와 같은 대량 메모리 시스템 사이의 가장 공통의 인터페이스를 도시한다. 호스트는 상기 호스트에 의해 실행된 응용 소프트웨어 또 는 펌웨어 프로그램들에 의해 발생되거나 사용되는 데이터 파일들을 처리한다. 주로 일반적으로 PC들, 랩톱 컴퓨터들 등과 같은 컴퓨터 호스트들에서 발견되는, 워드 프로세싱 데이터 파일이 일례이며, 컴퓨터 보조 설계(CAD) 소프트웨어의 드로잉 파일이 또 다른 예이다. pdf 포맷의 문서가 또한 이와 같은 파일이다. 정지 디지털 비디오 카메라는 메모리 카드 상에 저장되는 각각의 픽처에 대한 데이터 파일을 발생시킨다. 셀룰러 전화는 전화 디렉토리와 같은 내부 메모리 카드 상의 파일들로부터 데이터를 사용한다. PDA는 어드레스 파일, 캘린더 파일, 등과 같은 여러 상이한 파일들을 저장 및 사용한다. 임의의 이와 같은 애플리케이션에서, 메모리 카드는 또한 호스트를 작동시키는 소프트웨어를 포함할 수 있다. Physically small, reprogrammable non-volatile memory cards and flash drives recognized above with data storage capacity of 512 megabytes (MB), 1 gigabyte (GB), 2 GB and 4 GB are commercially available, Data storage capacity can be higher. Figure 7 illustrates the most common interface between a host and such a mass memory system. The host processes data files generated or used by application software or firmware programs executed by the host. One example is a word processing data file, commonly found in computer hosts such as PCs, laptop computers, and the like, and another example is a drawing file of computer aided design (CAD) software. Documents in pdf format are also such files. Still digital video cameras generate a data file for each picture stored on the memory card. Cellular phones use data from files on an internal memory card, such as a phone directory. PDAs store and use various different files such as address files, calendar files, and the like. In any such application, the memory card may also include software to run the host.

메모리 시스템들, 특히 제거 가능한 카드들에 내장된 메모리 시스템들은 표준 인터페이스를 통하여 상이한 호스트들과 통신할 수 있다. 상이한 호스트들은 메모리 시스템들과의 통신을 위하여 상이한 인터페이스를 사용할 수 있다. 인터페이스들의 2개의 카테고리들은 공통의 논리적 어드레스 공간을 갖는 논리적 어드레싱 시스템을 사용하는 것 및 파일 기반으로 한 어드레싱 시스템을 사용하는 것이다. Memory systems, in particular memory systems embedded in removable cards, can communicate with different hosts through a standard interface. Different hosts may use different interfaces for communicating with memory systems. The two categories of interfaces are to use a logical addressing system with a common logical address space and to use a file based addressing system.

LBALBA 인터페이스 interface

호스트 및 메모리 시스템 사이의 공통의 논리적 인터페이스가 도7에 도시되어 있다. 연속적인 논리적 어드레스 공간(161)은 메모리 시스템에 저장될 수 있는 모든 데이터에 어드레스들을 제공할 만큼 충분히 크다. 호스트 어드레스 공간은 전형적으로 데이터의 클러스터들의 증분들로 분할된다. 각각의 클러스터는 데이터의 다수의 섹터들, 약 전형적인 4 및 64개 사이의 섹터들을 포함하도록 소정의 호스트 시스템에서 설계될 수 있다. 표준 섹터는 512 바이트의 데이터를 포함한다. A common logical interface between the host and the memory system is shown in FIG. The contiguous logical address space 161 is large enough to provide addresses for all data that can be stored in the memory system. The host address space is typically divided into increments of clusters of data. Each cluster may be designed in a given host system to include multiple sectors of data, between about typical 4 and 64 sectors. The standard sector contains 512 bytes of data.

3개의 파일들 1, 2 및 3이 생성되었다고 도7의 예에 도시되어 있다. 호스트 시스템 상에서 실행되는 애플리케이션 프로그램은 각각의 파일을 순서화된 데이터 세트로서 생성하고 이를 특정 이름 또는 다른 레퍼런스(reference)에 의해 식별한다. 다른 파일들에 이미 할당되지 않은 충분한 이용 가능한 논리적 어드레스 공간이 호스트에 의해 파일 1에 할당된다. 파일 1은 연속적인 범위의 이용 가능한 논리적 어드레스들을 할당받는 것으로 도시되어 있다. 어드레스들의 범위들은 또한 이러한 어드레스들이 호스트가 논리적 어드레스들을 데이터에 할당하고 있는 시간에 사용되지 않을지라도, 데이터를 저장하기 위하여 나중에 피해지는 호스트 작동 소프트웨어를 위한 특정 범위들과 같이, 특정 용도들을 위해 통상적으로 할당된다. Three files 1, 2 and 3 have been created in the example of FIG. An application program running on a host system creates each file as an ordered data set and identifies it by a specific name or other reference. Sufficient available logical address space that is not already allocated to other files is allocated to file 1 by the host. File 1 is shown being assigned a contiguous range of available logical addresses. Ranges of addresses are also typically used for specific uses, such as specific ranges for host operating software that are later avoided to store data, even if these addresses are not used at the time the host is assigning logical addresses to the data. Is assigned.

파일 2가 나중에 호스트에 의해 생성될 때, 도7에 도시된 바와 같이, 호스트는 유사하게 논리적 어드레스 공간(161) 내에서 2개의 상이한 범위들의 인접한 어드레스들을 할당한다. 파일은 인접한 논리적 어드레스들을 할당받을 필요가 없고, 오히려 다른 파일들에 이미 할당된 어드레스 범위들 사이에서의 어드레스들의 프래그먼트(fragment)들일 수 있다. 그 후, 이 예는 호스트에 의해 생성된 또 다른 파일 3이 파일들 1 및 2 및 다른 데이터에 이전에 할당되지 않은 호스트 어드레스 공간의 다른 부분들을 할당받는다는 것을 나타낸다. 파일 1, 파일 2 및 파일 3은 이 예에서 공통의 논리적 어드레스 공간(논리적 어드레스 공간(161))의 부분들에 모두 할당된다. When file 2 is later created by the host, as shown in FIG. 7, the host similarly allocates two different ranges of contiguous addresses within logical address space 161. The file does not need to be assigned contiguous logical addresses, but rather may be fragments of addresses between address ranges already assigned to other files. This example then indicates that another file 3 created by the host is allocated files 1 and 2 and other portions of the host address space that have not been previously assigned to other data. File 1, File 2, and File 3 are all allocated to the portions of the common logical address space (logical address space 161) in this example.

호스트는 상기 호스트가 다수의 호스트 파일들에 할당하는 논리적 어드레스 들이 유지되는 파일 할당 테이블(FAT)을 유지함으로써 메모리 논리적 어드레스 공간들을 추적한다. FAT 테이블은 전형적으로 비휘발성 메모리 뿐만 아니라, 호스트 메모리에 저장되고, 새로운 파일들이 저장되고, 다른 파일들이 삭제되고, 파일들이 변경될 때 호스트에 의해 자주 갱신된다. 예를 들어, 호스트 파일이 삭제될 때, 호스는 FAT 테이블을 갱신함으로써 삭제된 파일에 이전에 할당된 논리적 어드레스를 할당해제하여 상기 논리적 어드레스들이 지금 다른 데이터 파일들과 함께 사용하는데 이용 가능하다는 것을 나타내도록 한다. FAT에 사용된 논리적 어드레스는 논리적 블록 어드레스(LBA)라고 칭해질 수 있어서, 상이한 파일들로부터의 데이터에 공통인 논리적 어드레스 공간을 통한 이와 같은 논리적 어드레싱을 사용하는 인터페이스는 LBA 인터페이스라고 칭해질 수 있다. 유사하게, 전달되는 데이터에 대해 논리적 어드레스들을 사용하는 통신용 프로토콜은 LBA 프로토콜로 간주될 수 있다. The host tracks memory logical address spaces by maintaining a file allocation table (FAT) where the logical addresses that the host assigns to a number of host files are maintained. FAT tables are typically stored in host memory as well as non-volatile memory, and are updated frequently by the host when new files are stored, other files are deleted, and files are changed. For example, when a host file is deleted, the hose can deallocate a previously deleted logical address to the deleted file by updating the FAT table to indicate that the logical addresses are now available for use with other data files. To do that. The logical address used in the FAT may be referred to as a logical block address (LBA), so that an interface that uses such logical addressing through a logical address space common to data from different files may be referred to as an LBA interface. Similarly, a protocol for communication using logical addresses for data to be conveyed may be considered an LBA protocol.

호스트는 메모리 시스템 제어기가 파일들을 저장하기 위하여 선택하는 물리적 위치들과 관련되지 않는다. 전형적인 호스트는 단지 자신의 논리적 어드레스 공간 및 자신이 자신의 다양한 파일들에 할당하였던 논리적 어드레스들을 인지한다. 한편, 메모리 시스템은 전형적인 호스트/카드 인터페이스를 통하여, 단지 데이터가 기록되었던 논리적 어드레스 공간의 부분들을 인지하지만, 특정 호스트 파일들에 할당된 논리적 어드레스, 또는 심지어 호스트 파일들의 수를 인지하지 못한다. 메모리 시스템 제어기는 데이터의 저장 및 회수를 위해 호스트에 의해 제공된 논리적 어드레스들을 호스트 데이터가 저장되는 플래시 메모리 셀 어레이 내의 특정 물리적 어드레스들로 변환한다. 블록(163)은 메모리 시스템 제어기에 의해 유지되는 이 러한 논리적-대-물리적 변환의 작동 테이블을 나타낸다. The host is not associated with the physical locations that the memory system controller chooses to store the files. A typical host only knows its logical address space and the logical addresses it has assigned to its various files. On the other hand, the memory system, through a typical host / card interface, only knows the portions of the logical address space in which data has been written, but not the logical address assigned to particular host files, or even the number of host files. The memory system controller translates the logical addresses provided by the host for storage and retrieval of data to specific physical addresses in the flash memory cell array in which the host data is stored. Block 163 represents an operational table of these logical-to-physical transformations maintained by the memory system controller.

메모리 시스템 제어기는 시스템의 성능을 고 레벨로 유지하도록 하는 방식으로 메모리 어레이(165)의 블록들 및 메타블록들에 데이터 파일들을 저장하도록 프로그래밍된다. 이 설명에서 4개의 플레인들 또는 서브-어레이들이 사용된다. 데이터는 바람직하게는 플레인들 각각으로부터의 블록으로 형성된 전체 메타블록에 걸쳐, 시스템이 허용하는 최대 병렬도로 프로그래밍 및 판독된다. 적어도 하나의 메타블록(167)은 통상적으로 메모리 제어기에 의해 사용되는 운영 펌웨어 및 데이터를 저장하기 위해 예약 블록(reserved block)으로서 할당된다. 또 다른 메타블록(169), 또는 다수의 메타블록들은 호스트 운영 소프트웨어, 호스트 FAT 테이블 등의 저장을 위해 할당될 수 있다. 대부분의 물리적 저장 공간은 데이터 파일들의 저장을 위해 유지된다. 그러나, 메모리 제어기는 수신된 데이터가 호스트에 의해 이의 다양한 파일 오브젝트들 사이에서 할당되는 방법을 인지하지 못한다. 모든 메모리 제어기는 전형적으로 호스트에 의해 특정 논리적 어드레스들에 기록된 데이터가 제어기의 논리적-대-물리적 어드레스 테이블(163)에 의해 유지되는 바와 같이 대응하는 물리적 어드레스들에 저장된다는 것을 호스트와의 상호작용으로부터 인지한다. The memory system controller is programmed to store data files in blocks and metablocks of the memory array 165 in a manner that maintains a high level of system performance. Four planes or sub-arrays are used in this description. The data is preferably programmed and read in the maximum parallelism allowed by the system, over the entire metablock formed of blocks from each of the planes. At least one metablock 167 is typically allocated as a reserved block for storing operating firmware and data used by the memory controller. Another metablock 169, or multiple metablocks, may be allocated for storage of host operating software, host FAT tables, and the like. Most of the physical storage space is reserved for the storage of data files. However, the memory controller does not know how received data is allocated by the host among its various file objects. All memory controllers typically interact with the host that data written to specific logical addresses by the host is stored at corresponding physical addresses as maintained by the controller's logical-to-physical address table 163. Recognize from

전형적인 메모리 시스템에서, 어드레스 공간(161) 내에 데이터 량을 저장하는데 필요로 되는 것보다 더 많은 여러 블록들의 저장 용량이 제공된다. 이러한 여분의 블록들 중 하나 이상은 메모리의 수명 동안 결함이 있게 될 수 있는 다른 블록들에 대한 교체를 위한 리던던트 블록(redundant block)들로서 제공될 수 있다. 개별적인 메타블록들 내에 포함된 블록들의 논리적 그룹핑(logical grouping)은 통상적으로 메타블록에 원래 할당된 결함이 있는 블록에 대한 리던던시 블록의 교체를 포함한, 다양한 이유들 때문에 변화될 수 있다. 메타블록(171)과 같은 하나 이상의 부가적인 블록들은 전형적으로 소거된 블록 풀(erased block pool)에서 유지된다. 호스트가 메모리 시스템에 데이터를 기록할 때, 제어기는 호스트에 의해 할당된 논리적 어드레스들을 소거된 블록 풀 내의 메타블록에서의 물리적 어드레스들로 변환한다. 그 후, 논리적 어드레스 공간(161) 내에 데이터를 저장하는데 사용되지 않는 다른 메타블록들이 소거되고, 후속 데이터 기록 작동 동안 사용하기 위한 소거된 풀 블록들로서 지정된다. In a typical memory system, more storage capacity is provided for more blocks than are needed to store the amount of data in address space 161. One or more of these redundant blocks may be provided as redundant blocks for replacement for other blocks that may become defective during the life of the memory. The logical grouping of blocks contained within individual metablocks can vary for a variety of reasons, including replacement of the redundancy block, typically for the defective block originally assigned to the metablock. One or more additional blocks, such as metablock 171, are typically maintained in an erased block pool. When the host writes data to the memory system, the controller translates the logical addresses assigned by the host into physical addresses in the metablock in the erased block pool. Thereafter, other metablocks that are not used to store data in the logical address space 161 are erased and designated as erased full blocks for use during subsequent data write operations.

특정 호스트 논리적 어드레스들에 저장된 데이터는 원래 저장된 데이터가 무용화될 때, 새로운 데이터에 의해 자주 겹쳐쓰기된다. 이에 응답하여, 메모리 시스템 제어기는 새로운 데이터를 소거된 블록에 기록하고 나서, 이러한 논리적 어드레스들에 대한 논리적-대-물리적 어드레스 테이블을 변화시켜, 그러한 논리적 어드레스들에서의 데이터가 저장되는 새로운 물리적 블록을 식별한다. 그 후, 그러한 논리적 어드레스들에서의 원래 데이터를 포함하는 블록들은 소거되어 새로운 데이터의 저장에 이용 가능해진다. 기록의 시작에서 소거 블록 풀로부터의 사전-소거된 블록들 내에 충분한 저장 용량이 존재하지 않는다면, 이와 같은 소거는 종종 현재 데이터 기록 작동이 완료되기 전에 발생해야 한다. 이것은 시스템 데이터 프로그래밍 속도에 악영향을 준다. 메모리 제어기는 전형적으로 호스트가 새로운 데이터를 이들의 동일한 논리적 어드레스에 기록할 때에만 소정의 논리적 어드레스에서의 데 이터가 호스트에 의해 무용인(obsolete) 것을 알게 된다. 따라서, 메모리의 많은 블록들은 당분간 이와 같은 무효 데이터를 저장하고 있을 수 있다. Data stored at specific host logical addresses is often overwritten by new data when the original stored data becomes obsolete. In response, the memory system controller writes new data to the erased block and then changes the logical-to-physical address table for these logical addresses, thereby creating a new physical block in which data at those logical addresses is stored. To identify. Thereafter, the blocks containing the original data at those logical addresses are erased and made available for storage of new data. If there is not enough storage capacity in the pre-erased blocks from the erase block pool at the beginning of the write, such erase often must occur before the current data write operation is completed. This adversely affects the speed of system data programming. The memory controller typically knows that data at a given logical address is obsolete by the host only when the host writes new data to their same logical address. Thus, many blocks of memory may be storing such invalid data for the time being.

집적 회로 메모리 칩의 에어리어를 효율적으로 사용하기 위하여 블록들 및 메타블록들의 크기들이 증가하고 있다. 이로 인해, 대부분의 개별적인 데이터 기록들이 메타블록의 저장 용량보다 더 적은, 그리고 많은 경우들에서, 블록의 저장 용량보다 훨씬 더 적은 데이터 량을 저장한다. 메모리 시스템 제어기가 통상적으로 새로운 데이터를 소거된 풀 메타블록으로 지향시키기 때문에, 이것은 메타블록들의 부분들이 채워지지 않도록 할 수 있다. 새로운 데이터가 또 다른 메타블록에 저장된 일부 데이터의 갱신들인 경우, 새로운 데이터 메타페이지들의 논리적 어드레스들과 인접한 논리적 어드레스들을 갖는 다른 메타블록으로부터의 데이터의 나머지 유효 메타페이지들이 또한 바람직하게는 논리적 어드레스 순서로 새로운 메타블록 내로 복제된다. 오래된 메타블록은 다른 유효 데이터 메타페이지들을 유지할 수 있다. 이것은 시간이 지남에 따라, 개별적인 베타블록의 일부 메타페이지들의 데이터가 무용화되거나 무효해지도록 하며, 상이한 메타블록에 기록되는 동일한 논리적 어드레스를 갖는 새로운 데이터로 교체되도록 한다. In order to use the area of the integrated circuit memory chip efficiently, the sizes of blocks and metablocks are increasing. As a result, most individual data records store less data than the storage capacity of the metablock, and in many cases, much less data than the storage capacity of the block. Since the memory system controller typically directs new data to the erased full metablock, this may prevent portions of the metablocks from filling up. If the new data is updates of some data stored in another metablock, the remaining valid metapages of data from another metablock with logical addresses adjacent to the logical addresses of the new data metapages are also preferably in logical address order. Is copied into a new metablock. Older metablocks can hold other valid data metapages. This, over time, causes the data of some metapages in individual betablocks to become obsolete or invalidated and replaced with new data with the same logical address written to different metablocks.

전체 논리적 어드레스 공간(161)에 걸쳐 데이터를 저장하는데 충분한 물리적 메모리 공간을 유지하기 위하여, 이와 같은 데이터는 주기적으로 압축되거나 통합된다(가비지 수집). 메타블록들 내에서 데이터의 섹터들을 실제로 이들의 논리적 어드레스들과 동일한 순서로 유지하는 것이 또한 바람직한데, 그 이유는 이것이 인접한 논리적 어드레스들에서 데이터를 판독하는 것을 더 효율적이게 하기 때문이 다. 그래서, 데이터 압축 및 가비지 수집은 전형적으로 이 부가적인 목적으로 수행된다. 메타블록들의 사용 및 부분적인 블록 데이터 갱신들을 수신할 때의 메모리를 관리하는 일부 양상들은 미국 특허 번호 6,763,424에 설명되어 있다. Such data is periodically compressed or consolidated (garbage collection) to maintain sufficient physical memory space to store data over the entire logical address space 161. It is also desirable to keep sectors of data in the metablocks actually in the same order as their logical addresses, since this makes it more efficient to read the data at adjacent logical addresses. Thus, data compression and garbage collection are typically performed for this additional purpose. Some aspects of managing the use of metablocks and memory when receiving partial block data updates are described in US Pat. No. 6,763,424.

데이터 압축은 전형적으로 메타블록으로부터 모든 유효 데이터 메타페이지들을 판독하는 것, 이들을 새로운 블록으로 기록하는 것, 및 프로세스에서 무효 데이터를 갖는 메타페이지들을 무시하는 것을 포함한다. 유효 데이터를 갖는 메타페이지들은 또한 바람직하게는 자신들 내에 저장된 데이터의 논리적 어레스 순서에 부합하는 물리적 어드레스 순서로 정렬된다. 무효 데이터를 포함한 메타페이지들이 새로운 메타블록으로 복제되지 않기 때문에, 새로운 메타블록에서 차지된 메타페이지들의 수는 오래된 메타블록에서 차지된 메타페이지들의 수보다 더 적을 것이다. 그 후, 오래된 블록은 소거되어 새로운 데이터를 저장하는데 이용 가능해진다. 그 후, 통합에 의해 획득된 부가적인 메타페이지들의 용량은 다른 데이터를 저장하는데 사용될 수 있다. Data compression typically includes reading all valid data metapages from the metablock, writing them into a new block, and ignoring metapages with invalid data in the process. Metapages with valid data are also preferably arranged in physical address order that matches the logical address order of the data stored therein. Since metapages containing invalid data are not copied to the new metablock, the number of metapages occupied in the new metablock will be less than the number of metapages occupied in the old metablock. The old block is then erased and made available for storing new data. Then, the capacity of additional metapages obtained by consolidation can be used to store other data.

가비지 수집 동안, 인접하거나 가까이 인접한 논리적 어드레스들의 메타페이지들이 2개 이상의 메타블록들로부터 수집되고 또 다른 메타블록, 통상적으로 소거된 블록 풀 내의 메타블록으로 재-기록된다. 모든 유효 데이터 메타페이지들이 원래의 2개 이상의 메타블록들로부터 복제될 때, 상기 모든 유효 데이터 메타페이지들은 미래에 사용하기 위하여 소거될 수 있다. During garbage collection, metapages of adjacent or near adjacent logical addresses are collected from two or more metablocks and re-written into another metablock, typically a metablock in the erased block pool. When all valid data metapages are copied from the original two or more metablocks, all of the valid data metapages may be erased for future use.

데이터 통합 및 가비지 수집은 시간이 들며, 특히 데이터 통합 및 가비지 수집이 호스트로부터의 명령이 실행되기 전에 발생할 필요가 있는 경우에, 메모리 시 스템의 성능에 영향을 줄 수 있다. 이와 같은 작동들은 통상적으로 가능한 한 많이 백그라운드에서 발생하도록 메모리 시스템 제어기에 의해 스케줄링되지만, 이러한 작동들을 수행할 필요성은 제어기가 이와 같은 작동이 완료될 때까지 비지 상태 신호(busy status signal)를 호스트에 제공해야 하도록 할 수 있다. 호스트 명령의 실행이 지연될 수 있는 경우의 일례는 호스트가 메모리 내로 기록하고자 하는 모든 데이터를 저장하는데 충분하지 않은 사전-소거된 메타블록들이 소거된 블록 풀 내에 존재하고, 이후에 소거될 수 있는 유효 데이터의 하나 이상의 메타블록들을 제거하기 위하여 데이터 통합 또는 가비지 수집이 우선 필요로 되는 경우이다. 따라서, 이와 같은 혼란들을 최소화하기 위하여 메모리의 제어를 관리하는데 주의해야 한다. 많은 이와 같은 기술들은 2003년 12월 30일자로 출원되고 명칭이 "Management of Non-Volatile Memory Systems Having Large Erase Blocks"인 일련 번호 10/749,831; 2003년 12월 30일자로 출원되고 명칭이 "Non-Volatile Memory and Method with Block Management System"인 일련 번호 10/750,155; 2004년 8월 13일자로 출원되고 명칭이 "Non-Volatile Memory and Method with Memory Planes Alighment"인 일련 번호 10/917,888; 2004년 8월 13일자로 출원된 일련 번호 10/917,867; 2004년 8월 13일자로 출원되고 명칭이 "Non-Volatile Memory and Method with Phased Program Failure Handling"인 일련 번호 10/917,889; 및 2004년 8월 13일자로 출원되고 명칭이 "Non-Volatile Memory and Method with Control Data Management"인 일련 번호 10/917,725(이하에서 집합적으로 "LAB 특허 출원들"이라고 칭해짐)에 설명되어 있다. Data consolidation and garbage collection can be time-consuming and can affect the performance of a memory system, especially if data consolidation and garbage collection need to occur before a command from the host is executed. Such operations are typically scheduled by the memory system controller to occur in the background as much as possible, but the need to perform these operations provides the host with a busy status signal until such operation is complete. You can do it. An example of where a host command may be delayed is that there are not enough pre-erased metablocks in the erased block pool to store all the data that the host wishes to write into memory, and that can be erased later. This is the case where data aggregation or garbage collection is first needed to remove one or more metablocks of data. Therefore care must be taken to manage the control of the memory in order to minimize such confusion. Many such technologies are filed December 30, 2003 and are entitled Serial Number 10 / 749,831, entitled “Management of Non-Volatile Memory Systems Having Large Erase Blocks”; Serial number 10 / 750,155, filed December 30, 2003, entitled “Non-Volatile Memory and Method with Block Management System”; Serial No. 10 / 917,888, filed August 13, 2004, entitled "Non-Volatile Memory and Method with Memory Planes Alighment"; Serial number 10 / 917,867, filed August 13, 2004; Serial number 10 / 917,889, filed August 13, 2004, entitled "Non-Volatile Memory and Method with Phased Program Failure Handling"; And serial number 10 / 917,725, collectively referred to hereinafter as "LAB patent applications," filed August 13, 2004, entitled "Non-Volatile Memory and Method with Control Data Management". .

매우 큰 소거 블록들을 갖는 메모리 어레이들의 작동을 효율적으로 제어하는데 있어서의 하나의 과제는 소정의 기록 작동 동안 저장되는 데이터 섹터들의 수를 메모리의 블록들의 경계들 및 용량과 부합시키고 정렬시키는 것이다. 하나의 방법은 호스트로부터의 새로운 데이터를 저장하는데 사용되는 메타블록을 전체 메타블록을 채우는 양보다 더 적은 데이터 량을 저장하는데 필요로 되는 바와 같이, 최대 수의 블록들보다 더 적게 구성하는 것이다. 적응형 메타블록들의 사용은 2003년 12월 30일자로 출원되고 명칭이 "Adaptive Metablocks"인 미국 특허 출원 일련 번호 10/749,189에 설명되어 있다. 메타블록들 사이의 물리적인 경계들 및 데이터의 블록들 사이의 경계들의 조정은 2004년 5월 7일자로 출원된 특허 출원 일련 번호 10/841,118, 및 2004년 12월 16일자로 출원되고 명칭이 "Data Run Programming"인 일련 번호 11/016,271에 설명되어 있다. One task in efficiently controlling the operation of memory arrays having very large erase blocks is to match and align the number of data sectors stored during a given write operation with the boundaries and capacity of the blocks of memory. One way is to configure the metablock used to store new data from the host to be less than the maximum number of blocks, as needed to store a smaller amount of data than the amount that fills the entire metablock. The use of adaptive metablocks is described in US patent application Ser. No. 10 / 749,189, filed December 30, 2003 and entitled "Adaptive Metablocks". The adjustment of the physical boundaries between metablocks and the boundaries between blocks of data is described in patent application serial numbers 10 / 841,118, filed May 7, 2004, and filed December 16, 2004, and entitled " Data Run Programming ", serial number 11 / 016,271.

메모리 제어기는 또한 메모리 시스템을 더 효율적으로 작동하기 위하여, 호스트에 의해 비휘발성 메모리에 저장되는 FAT 테이블로부터의 데이터를 사용할 수 있다. 하나의 이와 같은 용도는 이들의 논리적 어드레스들을 할당해제함으로써 데이터가 무용화된다 라고 호스트에 의해 식별되는 때를 아는 것이다. 이것을 인식하면 메모리 제어기는 통상적으로 새로운 데이터를 그러한 논리적 어드레스들에 기록하는 것을 호스트에 의해 통상적으로 알기 전에 이와 같은 무효 데이터를 포함하는 블록들의 소거를 스케줄링하도록 할 수 있다. 이것은 2004년 7월 21일자로 출원되고 명칭이 "Method and Apparatus for Maintaining Data on Non-Volatile Memory Systems"인 미국 특허 출원 일련 번호 10/897,049에 설명되어 있다. 다른 기술들은 소정의 기록 작동인 단일 파일인지 또는 다수의 파일들인지, 파일들 사이의 경계들이 어디에 존재하는지를 추론하기 위하여 새로운 데이터를 메모리에 기록하는 호스트 패턴들을 모니터하는 것을 포함한다. 2004년 12월 23일자로 출원되고 명칭이 "FAT Analysis for Optimized Sequential Cluster Management"인 미국 특허 출원 일련 번호 11/022,369는 이 유형의 기술들의 사용을 설명한다. The memory controller may also use the data from the FAT table stored in the nonvolatile memory by the host to operate the memory system more efficiently. One such use is to know when it is identified by the host that data is invalidated by deallocating their logical addresses. Recognizing this, the memory controller can typically schedule the erasure of blocks containing such invalid data before the host typically knows to write new data to such logical addresses. This is described in US patent application Ser. No. 10 / 897,049, filed on July 21, 2004, entitled "Method and Apparatus for Maintaining Data on Non-Volatile Memory Systems." Other techniques include monitoring host patterns that write new data into memory to infer where certain write operations are single files or multiple files, and where boundaries between files exist. US patent application Ser. No. 11 / 022,369, filed December 23, 2004, entitled "FAT Analysis for Optimized Sequential Cluster Management," describes the use of this type of technology.

메모리 시스템을 효율적으로 운영하기 위하여, 제어기가 호스트에 의하여 이의 개별적인 파일들의 데이터에 할당된 논리적 어드레스들에 관하여 가능한 한 많이 인식하는 것이 바람직하다. 그 후, 데이터 파일들은 파일 경계가 인식되지 안을 때 더 큰 수의 메타블록들 사이에서 스캐터링되기 보다는 오히려, 제어기에 의해 단일 메타블록 또는 메타블록들의 그룹에 저장될 수 있다. 그 결과는 데이터 통합 및 가비지 수집 작동들의 수 및 복잡성이 감소된다는 것이다. 결과적으로 메모리 시스템의 성능이 개선된다. 그러나, 호스트/메모리 인터페이스가 상술된 바와 같이, 논리적 어드레스 공간(161)(도7)을 포함할 때, 메모리 제어기가 호스트 데이터 파일 구조에 관해 더 많이 인식하는 것은 어렵다. In order to operate the memory system efficiently, it is desirable for the controller to know as much as possible about the logical addresses assigned by the host to the data of its individual files. The data files can then be stored in a single metablock or group of metablocks by the controller, rather than being scattered between a larger number of metablocks when the file boundary is not recognized. The result is that the number and complexity of data integration and garbage collection operations is reduced. As a result, the performance of the memory system is improved. However, when the host / memory interface includes the logical address space 161 (FIG. 7) as described above, it is difficult for the memory controller to recognize more about the host data file structure.

도8을 참조하면, 도7에 이미 도시된 바와 같은 전형적인 논리적 어드레스 호스트/메모리 인터페이스가 상이하게 도시되어 있다. 호스트에 의해 발생된 데이터 파일들은 호스트에 의해 논리적 어드레스들을 할당받는다. 그 후, 메모리 시스템은 이러한 논리적 어드레스들을 보고 이들을 데이터가 실제로 저장되는 메모리 셀들의 블록들의 물리적 어드레스들 내로 맵핑한다. Referring to FIG. 8, a typical logical address host / memory interface as shown already in FIG. 7 is shown differently. Data files generated by the host are assigned logical addresses by the host. The memory system then looks at these logical addresses and maps them into the physical addresses of the blocks of memory cells where the data is actually stored.

파일 인터페이스File interface

대량의 데이터의 저장을 위한 메모리 시스템 및 호스트 사이의 파일-기반으로 한 인터페이스는 논리적 어드레스 공간을 사용하지 않도록 한다. 그 대신에, 호스트는 특정 파일ID(또는 다른 특정 레퍼런스) 및 파일 내의 (바이트들과 같은) 데이터 단위들의 오프셋 어드레스들에 의해 각각의 파일에 논리적으로 어드레싱한다. 이 파일 어드레스는 메모리 시스템 제어기에 직접 제공되며, 상기 제어기는 이후에 각각의 호스트 파일의 데이터가 물리적으로 저장되는 경우에 자신의 테이블을 유지한다. 이 새로운 인터페이스는 도2-6을 참조하여 상술된 바와 같은 동일한 메모리 시스템으로 구현될 수 있다. 도2-6에 설명된 것과의 주요 차이점은 메모리 시스템이 호스트 시스템과 통신하는 방식이다. The file-based interface between the memory system and the host for storing large amounts of data avoids using logical address space. Instead, the host logically addresses each file by a specific file ID (or other specific reference) and offset addresses of data units (such as bytes) within the file. This file address is provided directly to the memory system controller, which maintains its own table if the data in each host file is subsequently stored physically. This new interface can be implemented with the same memory system as described above with reference to Figures 2-6. The main difference from that described in Figures 2-6 is the way the memory system communicates with the host system.

파일 인터페이스가 도9에 도시되어 있는데, 이는 도7의 LBA 인터페이스와 비교되어야 한다. 도9의 파일들 내의 데이터의 오프셋들 및 파일들 1, 2 및 3 각각의 아이덴티피케이션(identification)은 메모리 제어기로 직접 통과된다. 그 후에, 이 논리적 어드레스 정보는 메모리 제어기 기능(173)에 의하여 메모리(165)의 메타블록들 및 메타페이지들의 물리적 어드레스들로 번역된다. The file interface is shown in FIG. 9, which should be compared with the LBA interface of FIG. The offsets of the data in the files of Figure 9 and the identification of files 1, 2 and 3 respectively are passed directly to the memory controller. This logical address information is then translated by the memory controller function 173 into the physical addresses of the metablocks and metapages of the memory 165.

파일 인터페이스는 또한 도10에 도시되어 있는데, 이는 도8의 논리적 어드레스 인터페이스와 비교되어야 한다. 도8의 논리적 어드레스 공간 및 호스트에 의해 유지되는 FAT 테이블은 도10에 존재하지 않는다. 오히려, 호스트에 의해 발생된 데이터 파일들은 파일 내의 데이터의 오프셋 및 파일 번호에 의해 메모리 시스템에 식별된다. 그 후, 메모리는 파일들을 메모리 셀 어레이의 물리적 블록들로 직접 맵핑한다. The file interface is also shown in FIG. 10, which should be compared with the logical address interface of FIG. The logical address space of FIG. 8 and the FAT table maintained by the host do not exist in FIG. Rather, data files generated by the host are identified to the memory system by the file number and the offset of the data in the file. The memory then maps the files directly to the physical blocks of the memory cell array.

메모리 시스템이 각각의 파일을 구성하는 데이터의 위치들을 인식하기 때문에, 이러한 데이터는 호스트가 파일을 삭제한 직후에 소거될 수 있다. 이것은 전형적인 논리적 어드레스 인터페이스에 의해서는 가능하지 않다. 또한, 논리적 어드레스들을 사용하는 대신에 파일들에 의해 호스트 데이터를 식별함으로써, 메모리 시스템 제어기는 빈번한 데이터 통합 및 가비지 수집에 대한 필요성을 감소시키는 방식으로 데이터를 저장할 수 있다. 따라서, 데이터 복제 작동들의 빈도 및 복제된 데이터의 량이 상당히 감소됨으로써, 메모리 시스템의 데이터 프로그래밍 및 판독 성능을 증가시킨다. Since the memory system knows the locations of the data that make up each file, this data can be erased immediately after the host deletes the file. This is not possible with a typical logical address interface. In addition, by identifying host data by files instead of using logical addresses, the memory system controller can store data in a manner that reduces the need for frequent data integration and garbage collection. Thus, the frequency of data replication operations and the amount of replicated data are significantly reduced, thereby increasing the data programming and reading performance of the memory system.

파일 기반으로 한 인터페이스들의 예들은 직접적인 데이터 파일 저장을 사용하는 것들을 포함한다. 직접적인 데이터 파일 저장 메모리 시스템들은 모두 Alan W. Sinclair 단독 또는 Peter J. Smith와 공동 명의의 2005년 2월 16일자로 출원된 계류중인 미국 특허 출원 일련 번호 11/060,174, 11/060,248과 11/060,249, 및 Alan W. Sinclair 및 Barry Wright에 의해 출원되고 명칭이 "Direct Data File Storage in Flash Memories"인 가출원 60/705,388(이하에서 집합적으로 "직접적인 데이터 파일 저장 출원들"로서 참조됨)에 설명되어 있다. Examples of file-based interfaces include those using direct data file storage. Direct data file storage memory systems are all pending US patent applications Ser. Nos. 11 / 060,174, 11 / 060,248 and 11 / 060,249, filed February 16, 2005, both Alan W. Sinclair or Peter J. Smith. And provisional application 60 / 705,388, filed by Alan W. Sinclair and Barry Wright and entitled "Direct Data File Storage in Flash Memories" (collectively referred to herein as "direct data file storage applications"). .

도9 및 10에 도시된 바와 같은 이러한 직접적인 데이터 파일 저장 출원들의 직접적인 데이터 파일 인터페이스가 도7 및 8에 도시된 바와 같은 상술된 논리적 어드레스 공간 인터페이스보다 더 간단하고, 메모리 시스템이 더 양호하게 수행되도록 하기 때문에, 직접적인 데이터 파일 저장이 많은 애플리케이션들에 바람직하다. 그러나, 호스트 시스템들은 요즘에 주로 LBA 인터페이스를 가지고 작동하도록 구성되어서, 직접적인 데이터 파일 인터페이스를 갖는 메모리 시스템은 대부분의 호스트와 호환 가능하지 않다. 따라서, 어느 하나의 인터페이스를 가지고 작동하는 능력을 메모리 시스템에 제공하는 것이 바람직하다. The direct data file interface of these direct data file storage applications as shown in Figures 9 and 10 is simpler than the logical address space interface described above as shown in Figures 7 and 8, and allows the memory system to perform better. Because of this, direct data file storage is desirable for many applications. However, host systems are nowadays primarily configured to work with LBA interfaces, so memory systems with direct data file interfaces are not compatible with most hosts. Thus, it would be desirable to provide the memory system with the ability to operate with either interface.

이중 인터페이스Dual interface

일부 메모리 시스템들, 특히 상이한 호스트들과 인터페이싱할 수 있는 제거 가능한 메모리 카드들에 포함되는 것들에 대하여, 후방 호환성이 중요한 관심사이다. 많은 호스트 시스템들은 도7 및 8에 도시된 것과 유사한 섹터-기반으로 한 저장소의 형태를 사용하지만, 도9 및 10에 도시된 것과 같은 파일-기반으로 한 저장소와 함께 작동하도록 용이하게 적응될 수 없다. 따라서, 논리적으로 어드레싱되는 인터페이스 또는 파일-기반으로 한 인터페이스 중 하나를 사용하여 호스트들과 인터페이싱할 수 있는 메모리 시스템을 갖는 것이 바람직하다. LBA 인터페이스 및 파일 기반으로 한 백엔드 사이에 개재된 LBA 프로토콜 어댑터는 논리적 어드레싱을 사용하는 호스트가 데이터를 파일들로서 관리하는 메모리 어레이에 데이터를 저장하도록 할 수 있다. For some memory systems, especially those included in removable memory cards that can interface with different hosts, backward compatibility is a major concern. Many host systems use a form of sector-based storage similar to those shown in FIGS. 7 and 8 but cannot be easily adapted to work with file-based storage such as those shown in FIGS. 9 and 10. . Thus, it is desirable to have a memory system capable of interfacing with hosts using either a logically addressed interface or a file-based interface. Interposed between the LBA interface and the file-based backend, the LBA protocol adapter can allow a host using logical addressing to store data in a memory array that manages the data as files.

2005년 8월 3일자로 출원되고, 명칭이 "Interfacing systems operating through a logical address space and on a direct data files basis"인 미국 특허 출원 번호 11/196,869는 메모리 시스템이 논리적으로 어드레싱되는 인터페이스 또는 파일-기반으로 한 인터페이스 중 하나를 사용하여 호스트들과 인터페이싱할 수 있도록 하는 시스템들을 설명한다. 도11은 이와 같은 시스템을 도시한다. 이 예는 도7의 호스트 작동을 도9의 파일 기반으로 한 메모리 작동, 플러스 메모리 시스템 내의 추가된 어드레스 변환(172)과 결합시킨다. 어드레스 변환(172)은 메모리 공간(161)에 걸친 논리적 어드레스들의 그룹들을 변경된 어드레스 공간(161')에 걸쳐 도시된 개별적인 논리적 파일들 a-j 내로 맵핑한다. 전체 논리적 어드레스 공간(161)은 바람직하게는 이러한 논리적 파일들로 분할되어서, 논리적 파일들의 수는 논리적 어드레스 공간 및 개별적인 논리적 파일들의 크기에 따른다. 논리적 파일들 각각은 공간(161)에 걸쳐 인접한 논리적 어드레스들의 그룹의 데이터를 포함한다. 논리적 파일들 각각 내의 데이터의 량은 바람직하게는 동일하게 이루어지지며, 그 량은 메모리(165) 내의 하나의 메타블록의 데이터 저장 용량과 동일하다. 논리적 파일들의 동일하지 않은 크기들 및/또는 메모리의 블록 또는 메타블록의 저장 용량과 상이한 크기들은 물론 가능하지만 바람직하지는 않다. US patent application Ser. No. 11 / 196,869, filed August 3, 2005, entitled “Interfacing systems operating through a logical address space and on a direct data files basis”, describes an interface or file-based logically addressed memory system. We describe systems that allow you to interface with hosts using one of the interfaces. 11 shows such a system. This example combines the host operation of Figure 7 with the file-based memory operation of Figure 9, plus address translation 172 in the plus memory system. Address translation 172 maps groups of logical addresses across memory space 161 into individual logical files a-j shown across the altered address space 161 '. The entire logical address space 161 is preferably divided into such logical files so that the number of logical files depends on the logical address space and the size of the individual logical files. Each of the logical files contains data of a group of contiguous logical addresses over space 161. The amount of data in each of the logical files is preferably made identical, and the amount is equal to the data storage capacity of one metablock in memory 165. Unequal sizes of logical files and / or sizes different from the storage capacity of a block or metablock of memory are of course possible but not preferred.

개별적인 파일들 a-j 각각 내의 데이터는 파일들 내의 논리적 오프셋 어드레스에 의해 표현된다. 논리적 파일들의 데이터 오프셋 및 파일 식별자는 173에서 메모리(165) 내의 물리적 어드레스로 변환된다. 논리적 파일들 a-j는 직접적인 데이터 파일 저장 출원들에서 설명된 동일한 프로세스들 및 프로토콜들에 의하여 메모리(165)에 직접 저장된다. 상기 프로세스는 특히 그 량이 메모리의 블록 또는 메타블록의 용량과 동일한 경우에, 각각의 논리적 파일 내의 데이터의 공지된 량이 이것을 더 용이하게 할 수 있다는 것을 제외하고는, 메모리(165)에 도9의 데이터 파일들 1-3을 저장하는데 사용된 것과 동일하다. 논리적 파일들 a-j이 메모리(165)의 메타블록들 중 상이한 메타블록에 맵핑된다는 것이 도11에 도시되어 있다. 호스트가 인터페이싱하도록 설계되었던 현재의 논리적 어드레스 메모리 시스템들과 동일 하거나 동등한 방식으로 파일 기반으로 한 데이터 저장소가 호스트와 상호작용하도록 하는 것이 바람직하다. 개별적인 논리적 파일들을 대응하는 개별적인 메모리 메타블록들 내로 맵핑함으로써, 논리적 어드레스 공간 인터페이스가 사용될 때와 본질적으로 동일한 성능 및 타이밍 특성들이 직접적인 데이터 파일 인터페이스 메모리 시스템에 의해 성취된다. The data in each of the individual files a-j is represented by a logical offset address in the files. The data offset and file identifier of the logical files are translated into physical addresses in memory 165 at 173. Logical files a-j are stored directly in memory 165 by the same processes and protocols described in direct data file storage applications. The process is similar to the data of FIG. 9 in memory 165, except that the known amount of data in each logical file may facilitate this, especially if the amount is equal to the capacity of a block or metablock of memory. Same as the one used to store files 1-3. It is shown in FIG. 11 that logical files a-j are mapped to different ones of the metablocks of memory 165. It is desirable to have a file-based data store interact with the host in the same or equivalent manner as current logical address memory systems that the host was designed to interface with. By mapping the individual logical files into corresponding individual memory metablocks, essentially the same performance and timing characteristics as when the logical address space interface is used are achieved by the direct data file interface memory system.

도12는 도11의 방법을 상이한 방식으로 도시한다. 도12는 도8의 논리적 어드레스 메모리 시스템 작동과 동일하지만, 논리적 어드레스 공간을 논리적 파일들로 분할하는 추가된 기능, 이제 막 설명된 도11의 단계(172)를 갖는다. 부가적으로, "도12의 "데이터 파일을 물리적 저장 블록들로 맵핑하기 위한 테이블"이 "도8의 논리적 어드레스들을 물리적 저장 블록들로 맵핑하기 위한 테이블"을 대신한다. 논리적 어드레스-대-논리적 파일 변환(172)은 파일 기반으로 하는 백엔드 및 LBA 시스템을 사용하는 인터페이스 사이에 존재하는 LBA 프로토콜 어댑터의 부분으로서 간주될 수 있다. 12 illustrates the method of FIG. 11 in a different manner. Figure 12 is the same as the logical address memory system operation of Figure 8, but with the added function of dividing the logical address space into logical files, step 172 of Figure 11 just described. Additionally, "Table for Mapping Data File to Physical Storage Blocks" in Figure 12 replaces "Table for Mapping Logical Addresses to Physical Storage Blocks in Figure 8." Logical Address-to-Logical File translation 172 may be considered part of an LBA protocol adapter that exists between a file-based backend and an interface using an LBA system.

호스트와의 종래의 논리적 어드레스 공간 인터페이스를 통하여 작동하도록 설계된 도11 및 12의 데이터 파일 기반으로 한 백엔드 저장 시스템은 또한 추가된 직접적인 데이터 파일 인터페이스를 가질 수 있다. 파일 인터페이스로부터의 호스트 데이터 파일들 및 논리적 인터페이스로부터의 논리적 파일들 둘 모두가 메모리 메타블록 어드레스들로 번역된다. 그 후, 데이터는 직접적인 데이터 파일 프로토콜을 실행함으로써 메모리의 그러한 어드레스들에 저장된다. 이 프로토콜은 이전에 목록화된 직접적인 데이터 파일 저장 출원들의 직접적인 데이터 파일 저장 기술들 을 포함한다. The data file based back end storage system of FIGS. 11 and 12 designed to operate through a conventional logical address space interface with a host may also have an added direct data file interface. Both host data files from the file interface and logical files from the logical interface are translated into memory metablock addresses. The data is then stored at those addresses in memory by executing a direct data file protocol. This protocol includes the direct data file storage techniques of the direct data file storage applications previously listed.

호스트 인터페이스의 유형들 둘 모두를 휴대용 메모리 카드 또는 플래시 드라이브, 또는 다른 형태의 제거 가능한 메모리 시스템에 제공함으로써, 메모리는 논리적 어드레스 공간 인터페이스를 가지고 작동하는 대부분의 현재 호스트들, 자신의 파일을 메모리에 직접 인터페이싱하는 호스트과 함께 작동되거나, 호스트들의 두 유형들 사이에서 교환될 수 있다. 이것은 더 새로운 파일 기반으로 한 인터페이스를 갖는 호스트의 사용자가 메모리를 가장 효율적으로, 그러나 동시에 종래의 논리적 어드레스 공간 인터페이스와의 후방 호환성을 갖는 방식으로 사용하도록 한다. 또한, 동일한 일-대-일 논리적 파일 대 메타블록 맵핑의 결과로서 본질적으로 동일한 성능 및 타이밍 특성들이 성취된다. 이중 호스트 인터페이스들을 갖는 메모리는 종래의 논리적 어드레스 공간 인터페이스를 갖는 호스트들의 광범위한 설치된 베이스(base)에 여전히 유용하면서, 이것이 더 새로운 직접적인 데이터 파일 인터페이스에 대하여 사용자에 의해 성취되도록 한다. 이것은 현재 인터페이스로부터 직접적인 데이터 파일 인터페이스로 이동하는 방식을 제공한다. By providing both types of host interface to a portable memory card or flash drive, or other form of removable memory system, the memory can be stored directly in memory, with most current hosts operating with a logical address space interface. It may work with the interfacing host or may be exchanged between two types of hosts. This allows users of hosts with newer file-based interfaces to use the memory most efficiently, but at the same time in a way that is backward compatible with conventional logical address space interfaces. In addition, essentially the same performance and timing characteristics are achieved as a result of the same one-to-one logical file to metablock mapping. Memory with dual host interfaces is still useful for a wide range of installed bases of hosts with conventional logical address space interfaces, allowing this to be accomplished by the user for newer direct data file interfaces. This provides a way to move directly from the current interface to the data file interface.

도13은 이중 호스트 인터페이스를 갖는 메모리 시스템(300)을 도시한다. 상기 메모리 시스템은 파일 인터페이스(307)를 통하여 호스트에 의해 직접 공급된 호스트 데이터 파일들(HF1, HF2...HFn) 및 LBA 인터페이스(305)로부터 LBA 프로토콜 어댑터(301)에 의해 변환된 논리적 파일들(LFa, LFb...LFm)을 저장한다. 파일 기반으로 한 백엔드(303)는 논리적 파일들을 호스트 파일들과 구분할 필요가 없고, 오히려 바람직하게는 둘 모두의 파일들을 핸들링하도록 최적화된다. 이와 같이, 논리 적 파일들은 LBA 특허 출원들에서 설명된 시스템들의 논리적 그룹들과 등가이므로, 호스트 시스템으로부터 보여지는 메모리 시스템(300)의 성능은 LBA 특허 출원들에서 설명된 바와 같은 논리적 어드레스 공간 인터페이스를 갖는 시스템의 성능과 부합한다. 13 shows a memory system 300 having a dual host interface. The memory system includes host data files HF1, HF2... HFn supplied directly by the host via file interface 307 and logical files converted by LBA protocol adapter 301 from LBA interface 305. Save (LFa, LFb ... LFm). File-based backend 303 need not distinguish logical files from host files, but rather is optimized to handle both files. As such, the logical files are equivalent to the logical groups of systems described in the LBA patent applications, so the performance of the memory system 300 seen from the host system is dependent on the logical address space interface as described in the LBA patent applications. Match the performance of the system.

호스트 데이터를 논리적으로 어드레싱되는 포맷으로부터 논리적 파일 포맷으로 변환하는 것 이외에, LBA 프로토콜 어댑터(301)는 호스트로부터 수신된 특정 조건들 또는 특정 LBA 명령들에 응답하여 파일 기반으로 한 백엔드(303)와 호환 가능한 명령들을 발생시킬 수 있다. 이와 같은 조건들에 응답하여 직접적인 데이터 파일 백엔드에 대한 명령들을 발생시키는 예들이 다음 테이블에 제시되어 있다. In addition to converting host data from a logically addressed format to a logical file format, the LBA protocol adapter 301 is compatible with the file-based backend 303 in response to certain conditions or specific LBA commands received from the host. Possible commands can be generated. Examples of generating commands for a direct data file back end in response to these conditions are shown in the following table.

조건Condition 발생된 직접적인 데이터 파일 명령들Direct data file commands issued LBA 명령의 시작Start of LBA Command 기록_포인터<파일ID> <오프셋>
이 명령은 다음 기록 명령이 작동할 오프셋 어드레스를 현재 파일 내에서 설정한다.
Record_pointer <fileID><offset>
This command sets the offset address in the current file at which the next write command will operate.
현재 파일이 오픈(open)되지 않고
오픈_파일들 = 최대
The current file is not open
Open_files = max
클로우즈<파일ID> + 유휴 + 중단<비지가 아닐 때까지>
이 그룹의 명령들은 최소의 최근에 액세스된 파일을 클로우즈(close)하고, 장치가 파일에 대한 모든 진행중인 가비지 수집 작동들을 수행하도록 한다.
Close <file ID> + idle + hang <until busy>
Instructions in this group close the least recently accessed file and allow the device to perform all ongoing garbage collection operations for the file.
현재 파일이 오픈되지 않음The file is not currently open 오픈<파일ID> + 기록_포인터<파일ID> <오프셋>
이 그룹의 명령들은 현재 파일을 오픈하고, 다음 기록 명령이 작동할 오프셋 어드레스를 설정한다.
Open <file ID> + record_pointer <file ID><offset>
The commands in this group open the current file and set the offset address at which the next write command will operate.
현재 파일이 변화되었다.The current file has changed. 기록<파일ID> + 스트림 + 기록_포인터<파일ID> <오프셋>
이 그룹의 명령들은 이전 파일에 대한 축적된 데이터를 기록하고, 다음 기록 명령이 작동할 오프셋 어드레스를 현재 파일 내에서 설정한다.
Record <fileID> + stream + record_pointer <fileID><offset>
The commands in this group record the accumulated data for the previous file and set the offset address in the current file at which the next write command will operate.
프로그램 블록이 가득 찬다. The program block is full. 기록<파일ID> + 스트림
이 그룹의 명령들은 현재 파일에 대한 축적된 데이터를 기록한다.
Record <fileid> + stream
The commands in this group record the accumulated data for the current file.
프로그램 블록이 가득 차고
유효_페이지들 > 최소
The program block is full
Valid_pages> min
클로우즈<파일ID> + 유휴 + 중단<비지가 아닐 때까지>
이 그룹의 명령들은 현재 파일을 클로우즈하고, 장치가 파일에 대한 모든 진행중인 가비지 수집 작동들을 수행하도록 한다.
Close <file ID> + idle + hang <until busy>
Instructions in this group close the current file and allow the device to perform all ongoing garbage collection operations for the file.
LBA 명령의 종료Termination of LBA Commands 기록<파일ID> + 스트림 + 저장_버퍼<파일ID>
이 그룹의 명령은 현재 파일에 대한 축적된 데이터를 기록하고, 버퍼에 남아있는 프로그래밍되지 않은 데이터가 플래시 내의 "스왑 블록"에 프로그래밍되도록 한다.
Record <file ID> + stream + save_buffer <file ID>
Instructions in this group write the accumulated data for the current file and allow the unprogrammed data remaining in the buffer to be programmed to a "swap block" in flash.

오브젝트Object 인터페이스 interface

다양한 파일 기반으로 한 인터페이스들이 전자 장치들 사이에 데이터를 전달하는데 사용될 수 있다. 일부 프로토콜들은 크기의 표시에 따라 소정의 크기를 갖는 파일을 제공한다. 파일의 크기는 일반적으로 이와 같은 시스템에서 변화되지 않은 채로 유지되어, 이와 같은 시스템은 파일의 편집이 필요로 되는 애플리케이션들에 적합하지 않을 수 있다. 그러나, 파일들을 하나의 장치로부터 또 다른 장치로 전달하는데 있어서, 이와 같은 프로토콜들은 유용할 수 있고, 고 레벨의 보안을 허용할 수 있다. 크기의 표시는 일반적으로 파일 데이터가 전송되기 전에 전송된다. 파일 크기의 표시자를 갖는 미리규정된 크기의 파일들을 전달하는 프로토콜은 오브젝트 프로토콜로 간주될 수 있다. 하나의 오브젝트 프로토콜은 마이크로소프트 사의 픽처 전달 프로토콜(PTP)이다. 또 다른 이와 같은 프로토콜은 또한 마이크로소프트 사에 의한 미디어 트랜스포트 프로토콜(MTP)로서 공지되어 있는 미디어 트랜스퍼 프로토콜이다. 오브젝트 프로토콜은 디지털 사진 또는 MP3 음악 파일과 같은 미리규정된 데이터 량을 포함하는 파일들을 전송하는데 특히 적합하다. 예를 들어, 이와 같은 프로토콜들은 디지털 카메라와 PC 사이에 디지털 사진들을 전달하거나 PC로부터 MP3 플레이어로 MP3 음악 파일들을 전달하는데 사용될 수 있다. Various file-based interfaces can be used to transfer data between electronic devices. Some protocols provide files with a predetermined size according to the indication of the size. The size of the file generally remains unchanged in such a system, such a system may not be suitable for applications that require editing of the file. However, in transferring files from one device to another, such protocols can be useful and allow a high level of security. The indication of size is usually sent before the file data is transferred. A protocol for delivering files of a predefined size with an indicator of file size may be considered an object protocol. One object protocol is Microsoft's Picture Transfer Protocol (PTP). Another such protocol is also the Media Transfer Protocol, known as Media Transport Protocol (MTP) by Microsoft Corporation. The object protocol is particularly suitable for transferring files containing a predetermined amount of data, such as digital photos or MP3 music files. For example, such protocols can be used to transfer digital photos between a digital camera and a PC or to transfer MP3 music files from a PC to an MP3 player.

미디어 트랜스퍼 프로토콜(MTP)은 미리규정된 크기의 파일 오브젝트들의 전달을 지원하는 오브젝트 인터페이스를 제공한다. 이것의 주요 목적은 장치들 각각이 상당한 저장 용량을 가지는 경우에, 일시적으로 서로 접속될 수 있는 장치들 사이의 통신을 허용하는 것이다. 상기 인터페이스는 장치들 사이의 이진 데이터 오브젝트들의 교환, 및 다른 장치에 의한 한 장치의 콘텐츠의 이뉴머레이션(enumeration)를 허용한다. MTP 인터페이스의 어떤 특성들이 아래에 목록화된다. 그러나, 다른 오브젝트 인터페이스들은 상이한 특성들을 가질 수 있다. MTP의 더 완전한 설명은 마이크로소프트사로부터의 명칭이 "Media Transfer Protocol Enhanced"인 문서에 제공되어 있다. Media Transfer Protocol (MTP) provides an object interface that supports delivery of file objects of predefined size. Its main purpose is to allow communication between devices that can be temporarily connected to each other if each of the devices has a significant storage capacity. The interface allows for the exchange of binary data objects between devices, and the enumeration of the content of one device by another device. Some characteristics of the MTP interface are listed below. However, other object interfaces may have different characteristics. A more complete description of the MTP is provided in a document entitled "Media Transfer Protocol Enhanced" from Microsoft.

1. 통신 프로토콜1. Communication Protocol

1.1 개시기 및 응답기: 교환들은 동시에 2개의 장치들 사이에서만 발생하며, 하나의 장치는 개시기로서 작동하고 다른 장치는 응답기로서 작동한다. 개시기는 작동들을 전송함으로써 응답기와의 작동들을 개시하는 장치이다. 응답기는 임의의 작동들을 개시하지 않고, 개시기에 의해 전송된 작동들에 대한 응답들을 전송한다. 개시기로서 작동하는 장치는 응답 장치의 콘텐츠를 이뉴머레이팅하고 이해하여, 프로토콜에서 작동들의 흐름을 제어할 수 있어야 한다. 개시기는 일반적으로 응답기보다 더 강력한 장치이다. 응답기들의 예들은 디지털 카메라들과 같은 단순한 콘텐트-재생 장치들, 및 휴대용 오디오 플레이어들과 같은 단순한 콘텐트-출력 장치들이다. 1.1 Initiator and Responder: Exchanges occur only between two devices at the same time, one device acting as the initiator and the other acting as the responder. An initiator is a device that initiates operations with a responder by sending operations. The responder does not initiate any operations but sends responses to the operations sent by the initiator. The device acting as the initiator must be able to enumerate and understand the content of the responding device to control the flow of operations in the protocol. Initiators are generally more powerful devices than responders. Examples of responders are simple content-playing devices such as digital cameras, and simple content-output devices such as portable audio players.

1.2 세션들: 세션은 개시기 및 응답기 사이에 접속이 유지되는 통신 상태이다. 세션은 레퍼런스 오브젝트들에 대한 콘텍스트(context)를 제공하고, 개시기가 경보를 발함이 없이는 응답기 장치 상태가 변화되지 않는다는 것을 보장한다. 세션은 개시기에 의해 오픈되고, 개시기 또는 응답기 중 하나에 의해 클로우즈된다. 장치는 다수의 오픈 세션들을 동시에 유지할 수 있다. 개시기는 세션이 처음 오픈될 때 세션에 특정 식별자를 할당하고, 이 식별자를 사용하여 작동들을 전송할 때 세션을 식별한다. 1.2 Sessions: A session is a communication state in which a connection is maintained between an initiator and a responder. The session provides a context for the reference objects and ensures that the responder device state does not change without the initiator alerting. The session is opened by the initiator and closed by either the initiator or the responder. The device can simultaneously maintain multiple open sessions. The initiator assigns a specific identifier to the session when the session is first opened and uses this identifier to identify the session when sending operations.

1.3 트랜잭션들: 개시기로부터 발생하는 임의의 작동은 트랜잭션, 즉 입력 파라미터들에 의한 작동 인보케이션(action invocation), 이진 데이터 교환, 및 파라미터들에 의한 응답을 위한 메커니즘을 제공하는 단계들의 표준 시퀀스로 수행된다. 각 단계 내에서의 데이터 흐름은 단방향성이다. 작동의 개시 동안, 데이터는 개시기로부터 응답기로만 흐른다. 요청된 작동에 대한 응답 동안, 데이터는 응답기로부터 개시기로만 흐른다. 이진 데이터-교환 단계 동안, 데이터는 어느 한 방향으로 흐를 수 있지만, 결코 양방향으로 흐르지는 못한다. 양방향성 이진 데이터 교환은 다수의 작동들에 의해 수행되어야 한다. 개시기는 각각의 트랜잭션에 식별자를 할당한다. 규정된 식별자가 세션에서 개시된 제1 작동에 할당되고, 상기 식별자는 각각의 다음 트랜잭션에 대해 1씩 증분된다. 1.3 Transactions: Any operation arising from the initiator is a standard sequence of steps that provides a mechanism for transactions, action invocation by input parameters, binary data exchange, and response by parameters. Is performed. The data flow within each step is unidirectional. During the start of operation, data flows only from the initiator to the responder. During the response to the requested operation, data flows only from the responder to the initiator. During the binary data-exchange phase, data can flow in either direction, but never in both directions. Bidirectional binary data exchange must be performed by a number of operations. The initiator assigns an identifier to each transaction. The specified identifier is assigned to the first operation initiated in the session, which is incremented by one for each subsequent transaction.

트랜잭션은 3개까지의 단계들: 작동 요청 단계, 데이터 단계, 및 응답 단계로 이루어진다. 작동 요청 단계 및 응답 단계는 동일한 식별자를 공유하고, 선택적인 데이터 단계는 필요로 될 때 2개의 다른 단계 사이에 존재한다. A transaction consists of up to three phases: an operation request phase, a data phase, and a response phase. The operation request step and the response step share the same identifier, and an optional data step exists between two different steps as needed.

작동 요청 단계는 개시기에 의해 인보킹되는 작동을 식별하는 작동 요청 데이터세트, 작동이 실행되어야 하는 콘텍스트(세션 및 트랜잭션), 및 제한된 세트의 파라미터들의 전송으로 이루어진다. The operation request phase consists of the transmission of an operation request dataset identifying the operation that is invoked by the initiator, the context (session and transaction) in which the operation should be executed, and a limited set of parameters.

선택적인 데이터 단계는 작동 요청 단계 다음에 온다. 이 단계의 존재는 작동 요청 단계에서 규정된 작동에 의해 결정된다. 데이터는 프로토콜 내에서 규정된 투명한 데이터세트이거나, 수신 장치 상의 저장을 위한 교환되는 이진 데이터일 수 있다. 데이터 단계에서의 데이터의 실제 전송은 사용중인 특정 트랜스포트(transport)에 필요로 될 수 있는 바와 같이, 데이터를 콘테이너 포맷으로 전송하고, 이를 패킷들로 나누는 것을 포함할 수 있다. An optional data phase follows the operation request phase. The presence of this step is determined by the operation specified in the operation request phase. The data may be a transparent dataset defined within the protocol, or exchanged binary data for storage on the receiving device. The actual transmission of data at the data level may include sending the data in a container format and breaking it into packets, as may be required for the particular transport in use.

응답 단계에서, 고정된 데이터세트가 응답기로부터 개시기로 전송되어, 성공/실패와 같은 진행중인 트랜잭션에 관한 정보를 보고한다. In the response phase, a fixed dataset is sent from the responder to the initiator, reporting information about ongoing transactions such as success / failure.

1.4 이벤트들: 이벤트들은 정보 또는 경보들을 미리 전송하는 방식으로서 응답기에 의해 주로 전송된다. 작동들과 달리, 이벤트들은 확인되거나 작동될 필요가 없다. 이벤트들은 데이터 전송 또는 작동 트랜잭션들과 비동기적으로 전달되는 것이 필요로 된다. 트랜스포트는 이벤트들이 트랜잭션 동안 데이터 스트림과 인터리빙될 수 있는 프로세스를 규정한다. 1.4 Events: Events are primarily transmitted by the responder as a way of transmitting information or alerts in advance. Unlike operations, events do not need to be acknowledged or triggered. Events need to be delivered asynchronously with data transfer or operational transactions. A transport defines a process by which events can be interleaved with a data stream during a transaction.

1.5 동기 및 비동기 트랜잭션들: 통신 프로토콜 내의 모든 트랜잭션들은 동기적인데, 즉 이전 작동이 완전히 완료될 때까지 새로운 작동이 개시될 수 없다. 비동기 작동들은 상기 작동을 시작하는 개시로 상기 작동을 분리함으로써 시뮬레이팅될 수 있고, 작동이 장치 상의 백그라운드에서 실행되고 있는 동안 응답기에 의해 전송된 이벤트들을 통하여 모니터링을 진행할 수 있다. 비동기 작동이 진행되고 있는 동안 새로운 작동이 시도되는 경우, 응답기는 비지 페일러 상태(busy failure state)로 응답하고 개시기는 이후에 다시 시도해야 한다. 1.5 Synchronous and Asynchronous Transactions: All transactions in the communication protocol are synchronous, i.e. no new operation can be initiated until the previous operation is completely completed. Asynchronous operations can be simulated by separating the operation into an initiation to start the operation, and proceed with monitoring via events sent by the responder while the operation is running in the background on the device. If a new operation is attempted while an asynchronous operation is in progress, the responder responds with a busy failure state and the initiator must try again later.

2. 정보 데이터세트들2. Information Datasets

데이터의 수집부들이 교환될 때, 이들은 데이터세트라 칭해지는 미리규정된 구조로 수집된다. 적절한 작동들을 사용하여 액세스될 수 있는 3개의 정보 데이터세트들이 존재한다. When the collections of data are exchanged, they are collected in a predefined structure called a dataset. There are three sets of information datasets that can be accessed using appropriate operations.

2.1 장치 정보 데이터세트: 장치 정보 데이터세트는 장치의 설명을 제공하고, 가장 정적이다. 2.1 Device Information Dataset: The Device Information Dataset provides a description of the device and is the most static.

2.2 오브젝트 정보 데이터세트: 오브젝트 정보 데이터세트는 오브젝트의 핵심 특성들의 개요를 제공한다. 이러한 핵심 특성들은 오브젝트의 데이터 구성요소 의 크기를 포함한다. 특성들은 또한 데이터 오브젝트들을 관련시키고 장치들 상에서의 계층적인 파일 시스템들을 설명하는데 사용될 수 있는 어소시에이션(association)들을 포함한다. 장치 상에서의 파일 계층은 특정 파일 시스템에 특정된 임의의 경로 또는 네이밍 컨벤션(naming convention)들에 의존함이 없이 표현될 수 있다. 오브젝트의 특성들은 또한 오브젝트 특성 데이터세트에서 검색 가능하다. 2.2 Object Information Dataset: The Object Information Dataset provides an overview of the key characteristics of an object. These key characteristics include the size of the data component of the object. The properties also include associations that can be used to associate data objects and describe hierarchical file systems on devices. The file hierarchy on the device can be represented without depending on any path or naming conventions specific to a particular file system. The properties of the object can also be retrieved from the object properties dataset.

2.3 저장소 정보 데이터세트: 저장소 정보 데이터세트는 장치에 포함된 저장소를 설명한다. 상기 설명은 최대 용량 및 기록될 남아 있는 자유 공간 둘 모두를 포함하며, 파일 네이밍 컨벤션들 또는 사용중인 디렉토리 구조 컨벤션들을 포함할 수 있다. 2.3 Repository Information Dataset: A repository information dataset describes a repository contained in a device. The above description includes both the maximum capacity and the remaining free space to be written, and may include file naming conventions or directory structure conventions in use.

3. 특성들3. Characteristics

3.1 장치 특성들: 장치 특성들은 장치의 설정들 및 상태 조건들을 식별하고, 장치 상의 임의의 데이터 오브젝트들과 링크되지 않는다. 장치 특성들은 판독 전용 또는 판독-기록일 수 있다. 특성들은 장치 특성 설명 데이터세트에 포함되며, 적절한 작동들을 사용하여 설정되거나 검색될 수 있다. 3.1 Device Characteristics: The device characteristics identify the settings and status conditions of the device and are not linked with any data objects on the device. Device characteristics may be read only or read-write. The characteristics are included in the device characteristic description dataset and can be set or retrieved using the appropriate operations.

3.2 오브젝트 특성들: 오브젝트 특성들은 오브젝트 자신들과 별도의 오브젝트-설명 메타데이터를 교환하는 메커니즘을 제공한다. 오브젝트 특성들의 주요 이점은 파일-시스템과 관계없이, 큰 저장소들의 고속 이뉴머레이션을 허용하는 것이다. 이 특성들은 장치 상의 오브젝트들에 관한 정보를 제공하며, 이들이 포함될 수 있는 값들을 규정한다. 특성들은 오브젝트 특성 데이터세트에 포함되며, 적절한 작 동들을 사용하여 설정되거나 검색될 수 있다. 3.2 Object properties: Object properties provide a mechanism for exchanging separate object-descriptive metadata with the objects themselves. The main advantage of object properties is to allow fast enumeration of large repositories, regardless of file-system. These properties provide information about the objects on the device and define the values they can contain. The properties are included in the object property dataset and can be set or retrieved using the appropriate actions.

4. 오브젝트 핸들들 4. Object Handles

오브젝트 핸들(object handle)들은 세션 내에서 특정되는, 장치 상의 논리적 오브젝트에 대한 일관된 레퍼런스를 제공하는 식별자들이다. 오브젝트 핸들들의 값에 특별한 의미가 존재하지 않는다. 응답기는 개시기로부터의 오픈 세션 작동에 응답하여, 장치 내에서 오브젝트들에 대한 오브젝트 핸들들의 어레이를 생성한다. 오브젝트 핸들들은 응답기가 오브젝트 핸들 어레이를 개시기에 전송하도록 하는 오브젝트 핸들 획득 작동(get object handles operation)에 의하여 개시기에 의해 포착된다. 개시기가 전송될 오브젝트를 규정하기 위하여 오브젝트 정보 전송 작동을 사용할 때, 응답기 장치는 오브젝트 핸들을 할당하고, 이를 작동의 응답 단계에서 개시기에 리턴시킨다. 세션이 클로우즈될 때, 모든 오브젝트 핸들들은 무효화되고, 개시기에 의해 재-포착되어야 한다. 장치는 다음 세션 동안 동일한 오브젝트 핸들들을 유지하거나 오브젝트 핸들 값들을 변화시킬 수 있다. Object handles are identifiers that provide a consistent reference to a logical object on the device, specified within the session. There is no special meaning for the value of object handles. The responder generates an array of object handles for the objects in the device in response to the open session operation from the initiator. Object handles are captured by the initiator by a get object handles operation that causes the responder to send an array of object handles to the initiator. When the initiator uses an object information transfer operation to define an object to be sent, the responder device allocates an object handle and returns it to the initiator in the response phase of the operation. When the session is closed, all object handles are invalidated and must be re-acquired by the initiator. The device may maintain the same object handles or change object handle values for the next session.

5. 5. 오브젝트Object 레퍼런스들References

오브젝트 인터페이스가 파일 시스템에 독립적인 프로토콜이기 때문에, 파일 이름들을 임베딩(embedding)함으로써 오브젝트들 사이에 복잡한 링키지(complex linkage)들이 형성될 수 없다. 임의의 오브젝트 레퍼런싱을 허용하기 위하여 개요 레퍼런싱 메커니즘이 규정되었다. 레퍼런스들은 단방향성이며, 장치 내의 모든 오브젝트들 상의 모든 레퍼런스들을 조사함이 없이 어느 오브젝트들이 소정 오브젝트를 레퍼런싱하는지가 결정될 수 없다. 레퍼런스들은 적절한 작동들을 사용함으로써 설정되거나 회수될 수 있다. 파일 핸들들에 의해 레퍼런싱된 오브젝트들은 세션들 사이에서 일관되어야 한다. 삭제된 오브젝트들에 대한 레퍼런스들은 또 다른 오브젝트를 부정확하게 레퍼런싱하지 않아야 한다. 어느 한 오브젝트 핸들러들은 결코 재사용되어서는 안되며, 또는 장치는 상기 오브젝트를 따른 오브젝트에 대한 모든 레퍼런스들을 삭제해야 한다. Because the object interface is a file system independent protocol, complex linkages cannot be formed between objects by embedding file names. An outline referencing mechanism has been defined to allow arbitrary object referencing. The references are unidirectional and it is not possible to determine which objects refer to a given object without examining all references on all objects in the device. References can be set or retrieved by using appropriate operations. Objects referenced by file handles must be consistent between sessions. References to deleted objects should not incorrectly refer to another object. Either object handlers should never be reused, or the device must delete all references to the object following the object.

6. 작동들 및 응답들6. Operations and Responses

작동은 트랜잭션 내에서 개시기 및 응답기 사이에서 발생하는 통신을 규정한다. 개시된 작동을 행하기 위하여 응답기에 의해 필요로 되는 정보는 작동 요청에 대한 파라미터들로서 통과될 수 있다. 5개의 파라미터들이 전송될 수 있다. 부가적인 정보가 또한 트랜잭션의 데이터 단계에서 미리규정된 데이터세트로 통과될 수 있다. 모든 작동 다음에, 응답기는 5개까지의 파라미터들을 갖는 응답 데이터세트 및 작동의 결과를 나타내는 응답 코드를 리턴시킨다. 많은 수의 작동들이 규정된다. 작동들의 시퀀스들의 예들은, "오브젝트 정보 전송" 작동에 이어 개시기가 응답기에 오브젝트를 전송하는 "오브젝트 전송" 작동과, "오브젝트 정보 획득" 작동에 이어 개시기가 응답기로부터 오브젝트를 수신하는 "오브젝트 획득" 작동이다. Operation defines the communication that occurs between the initiator and the responder within a transaction. Information needed by the responder to perform the disclosed operation can be passed as parameters to the operation request. Five parameters can be sent. Additional information may also be passed to a predefined dataset in the data phase of the transaction. After every operation, the responder returns a response dataset with up to five parameters and a response code indicating the result of the operation. A large number of operations are defined. Examples of sequences of operations include a "transmit object" operation in which the initiator sends an object to the responder following a "send object information" operation and a "obtain object" in which the initiator receives an object from the responder following the "obtain object information" operation. It works.

도14A는 개시기(410) 및 응답기(412) 사이의 트랜잭션의 예를 도시한다. 개시기(410)는 PC일 수 있고, 응답기(412)는 MP3 음악 플레이어 또는 디지털 카메라일 수 있다. 개시기(410) 및 응답기(412)는 예를 들어, USB 케이블에 의한 통신을 허용하도록 접속된다. 처음으로, 작동 요청 단계에서, 개시기(410)는 "오브젝트 정보 전송" 작동으로서 인보킹되는 작동을 식별한다. 둘째로, 데이터 단계에서, 개시 기(410)는 오브젝트 정보(414)를 응답기(412)에 전송한다. 오브젝트 정보(414)는 개시기(410)에 의해 응답기(412)로 막 전송되는 특정 오브젝트에 관한 정보이다. 오브젝트 정보(414)는 개시기가 참조하는 오브젝트가 전송되기 전에 개시기(410)에 의해 전송된다. 오브젝트 정보는 오브젝트의 크기를 포함한 오브젝트에 관한 다수의 정보를 포함할 수 있다. 전송될 오브젝트가 MP3 음악 파일인 경우에, MP3 음악 파일의 크기는 오브젝트 정보의 부분으로서 전송된다. 셋째로, 응답 단계에서(오브젝트 정보(414)가 응답기(412)에 의해 수신된 후), 응답기(412)는 오브젝트 정보(414)가 수신되었다는 것을 나타낸다. 트랜잭션은 이 지점에서 종료될 수 있다. 14A shows an example of a transaction between initiator 410 and responder 412. Initiator 410 may be a PC and responder 412 may be an MP3 music player or a digital camera. Initiator 410 and responder 412 are connected to allow communication by, for example, a USB cable. For the first time, in the operation request phase, the initiator 410 identifies the operation that is invoked as the "send object information" operation. Secondly, in the data phase, initiator 410 sends object information 414 to responder 412. The object information 414 is information about a particular object that has just been sent by the initiator 410 to the responder 412. The object information 414 is transmitted by the initiator 410 before the object referenced by the initiator is transmitted. The object information may include a number of information about the object, including the size of the object. When the object to be transmitted is an MP3 music file, the size of the MP3 music file is transmitted as part of the object information. Third, in the response phase (after the object information 414 has been received by the responder 412), the responder 412 indicates that the object information 414 has been received. The transaction can end at this point.

도14B는 도14A의 트랜잭션 다음에 오고 개시기(410) 및 응답기(412) 사이의 동일한 세션의 부분인 제2 트랜잭션을 도시한다. 제2 트랜잭션은 "오브젝트 전송" 트랜잭션이다. 처음으로, 작동 요청 단계에서, 개시기(410)는 "오브젝트 전송" 작동으로서 인보킹되는 작동을 식별한다. 둘째로, 데이터 단계에서, 개시기는 오브젝트(416)를 응답기(412)에 전송한다. 오브젝트(416)는 MP3 음악 파일이거나 JPEG, GIF 또는 비트맵과 같은 파일 포맷의 디지털 사진일 수 있다. 오브젝트(416)에 대한 (파일 크기를 포함한) 오브젝트 정보(414)는 도14A를 참조하여 설명된 바와 같이 이미 개시기(410)에 의해 응답기(412)에 전송되었다. 셋째로, 응답 단계에서(오브젝트(416)가 수신된 후), 응답기(412)는 오브젝트(416)가 수신되었다는 것을 개시기(410)에 나타낸다. 트랜잭션이 이 지점에서 종료될 수 있다. FIG. 14B shows a second transaction that follows the transaction of FIG. 14A and is part of the same session between initiator 410 and responder 412. The second transaction is an "object transfer" transaction. For the first time, in the operation request phase, the initiator 410 identifies the operation that is invoked as an "object send" operation. Second, in the data phase, the initiator sends an object 416 to the responder 412. The object 416 may be an MP3 music file or a digital photo in a file format such as JPEG, GIF or bitmap. Object information 414 (including file size) for object 416 has already been sent to responder 412 by initiator 410 as described with reference to FIG. 14A. Third, in the response phase (after the object 416 is received), the responder 412 indicates to the initiator 410 that the object 416 has been received. The transaction can end at this point.

오브젝트Object 프로토콜 어댑터 Protocol adapter

본 발명의 실시예에서, 오브젝트 프로토콜을 사용하는 호스트가 상술된 바와 같은 파일 기반으로 한 백엔드를 사용하는 메모리 시스템과 인터페이싱하도록 하는 오브젝트 프로토콜 어댑터가 메모리 시스템 내에 제공된다. 오브젝트 프로토콜 어댑터는 오브젝트 프로토콜에 따라 오브젝트 인터페이스를 통하여 데이터 및 명령들을 수신하고, 상기 데이터 및 명령들을 백엔드에 전송하기 전에 적절한 번역을 수행한다. 일례에서, 호스트는 메모리 시스템과 인터페이싱하기 위하여 MTP를 사용하며, 메모리 시스템은 데이터를 저장하기 위하여 직접적인 데이터 파일 백엔드를 사용한다. 오브젝트 프로토콜 어댑터는 호스트 인터페이스 및 백엔드 사이에서 명령들 및 데이터 둘 모두의 적절한 변환을 수행한다. In an embodiment of the invention, an object protocol adapter is provided in the memory system that allows a host using the object protocol to interface with a memory system using a file based backend as described above. The object protocol adapter receives data and commands via the object interface according to the object protocol and performs appropriate translations before sending the data and commands to the backend. In one example, the host uses MTP to interface with the memory system, and the memory system uses a direct data file backend to store data. The object protocol adapter performs the proper conversion of both commands and data between the host interface and the back end.

도15는 오브젝트 인터페이스(520) 및 파일 기반으로 한 백엔드(522) 사이에 개재된 오브젝트 프로토콜 어댑터의 예를 도시한다. 오브젝트 인터페이스(520)는 미리결정된 크기의 파일 오프젝트, 예를 들어, MTP 또는 PTP 오브젝트들에 대한 인터페이스이다. 오브젝트의 크기는 오브젝트가 호스트에 의해 전송되기 전에 전송된다. 오브젝트 프로토콜 어댑터(524)는 메모리 시스템(526)이 호스트와 통신하는 플토콜을 관리한다. 오브젝트 프로토콜 어댑터(524)는 또한 호스트와의 정보 교환을 위한 트랜잭션들을 관리하고, 번역들을 수행한다. 트랜잭션들은 파일 기반으로 한 프로토콜에 따른 파일 기반으로 한 백엔드 및 오브젝트 프로토콜 어댑터 사이에서 수행된다. FIG. 15 shows an example of an object protocol adapter interposed between object interface 520 and file-based backend 522. The object interface 520 is an interface to a file object of a predetermined size, eg, MTP or PTP objects. The size of the object is sent before the object is sent by the host. The object protocol adapter 524 manages the protocol by which the memory system 526 communicates with a host. The object protocol adapter 524 also manages transactions for information exchange with the host and performs translations. Transactions are performed between the file-based backend and the object protocol adapter according to the file-based protocol.

오브젝트 프로토콜 어댑터(524)는 새로운 파일 오브젝트가 (오브젝트 프로토콜에 따른) 호스트에 의해 전송될 때 적절한 명령들을 파일 기반으로 한 백엔드(522)에 전송함으로써 파일들을 오픈하고 클로우즈하는 것을 관리한다. 특히, 파 일이 오브젝트 프로토콜에서 미리결정된 크기를 가지기 때문에, 오프젝트 프로토콜 어댑터(524)는 미리결정된 량의 파일 데이터가 수신되었을 때, 파일을 클로우즈할 책임이 있다. 오브젝트 프로토콜을 사용하는 호스트는 일반적으로 별도의 파일 종점 표시자(end-of-file indicator)를 전송하지 않아서, 오브젝트 프로토콜 어댑터(524)가 파일 종점 표시자를 발생시키고 이를 전체 파일 오브젝트가 수신되었을 때 파일 기반으로 한 백엔드(522)에 전송한다. 이 방식으로, 메모리 시스템(526)이 오브젝트 프로토콜을 사용하는 호스트로부터 다수의 파일들을 수신할 때, 파일 기반으로 한 백엔드(522)는 (일반적으로 직접적인 데이터 파일 백엔드에서 발생하는 바와 같이) 이것이 어떤 최대 수의 오픈 파일들에 도달할 때까지 파일들을 오픈된 채로 유지하지 않는다. 대신에, 각각의 파일은 완전한 오브젝트로서 수신되며, 파일 기반으로 한 백엔드는 완전한 파일이 수신된 후에 오브젝트 프로토콜 어댑터(524)로부터 명령을 수신하여, 상기 파일 기반으로 한 백엔드가 파일을 클로우즈한다. 이로 인해, 많은 오픈 파일들을 유지하는 부담이 감소된다. 파일은 일단 클로우즈되면 가비지 수집을 위해 스케줄링될 수 있다. The object protocol adapter 524 manages opening and closing files by sending appropriate commands to the file-based backend 522 when a new file object is sent by the host (according to the object protocol). In particular, because the file has a predetermined size in the object protocol, the object protocol adapter 524 is responsible for closing the file when a predetermined amount of file data has been received. Hosts using the object protocol typically do not send a separate end-of-file indicator, which causes the object protocol adapter 524 to generate a file endpoint indicator, which is used when the entire file object is received. To the backend 522 that is based. In this way, when the memory system 526 receives a number of files from a host using the object protocol, the file-based back end 522 (as usually occurs in the direct data file back end) is the maximum that this is. Do not keep files open until a number of open files are reached. Instead, each file is received as a complete object, and the file-based backend receives instructions from the object protocol adapter 524 after the complete file has been received, so that the file-based backend closes the file. This reduces the burden of maintaining many open files. Once closed, the file can be scheduled for garbage collection.

오브젝트 프로토콜 어댑터는 메모리 시스템의 상태를 관리할 수 있다. 특히, 직접적인 데이터 파일 백엔드를 갖는 메모리 시스템들에 대하여, 메모리 시스템이 호스트 명령에 응답하여 자신의 작동을 변경하도록 하는 3개의 상태들이 규정된다. 이러한 3개의 상태들은 "유휴", "대기" 및 "셧다운"이다. 3개의 상태들은 호스트가 직접적인 데이터 파일 명령 세트 및 이의 등가물을 사용하는 경우에, 호스트로부터의 대응하는 상태 명령들에 응답하여 개시된다. 호스트가 오브젝트 프로토콜을 사 용하는 경우에, 오브젝트 프로토콜 어댑터는 상태 명령들을 발생시킬 수 있다. 오브젝트 프로토콜 어댑터는 호스트가 이와 같은 명령들을 포함하는 오브젝트 프로토콜을 사용하고 있는 경우에, 호스트로부터 수신된 등가 명령들에 응답하여 파일 기반으로 한 백엔드에 상태 명령들을 전송할 수 있다. 대안적으로, 오브젝트 프로토콜 어댑터는 다른 팩터들로부터 호스트의 상태를 추론하는 것에 기초하여 상태 명령들을 발생시킬 수 있다. 예를 들어, 호스트는 자신이 시간 기간 동안 전력을 제거하지 않을 것이라는 어떤 표시를 제공할 수 있고, 이에 응답하여 오브젝트 프로토콜 어댑터는 파일 기반으로 한 백엔드에 "유휴" 상태 명령을 전송할 수 있다. 유사하게, 호스트가 막 전력을 제거하려고 한다는 것을 나타내거나, 오브젝트 프로토콜 어댑터가 호스트의 작동에 기초하여 전력이 막 제거되려고 한다는 것을 추론할 수 있고, 이에 응답하여 오브젝트 프로토콜 어댑터는 파일 기반으로 한 백엔드에 "셧다운" 명령을 전송할 수 있다. The object protocol adapter can manage the state of the memory system. In particular, for memory systems having a direct data file back end, three states are defined that cause the memory system to change its behavior in response to a host command. These three states are "idle", "standby" and "shutdown". The three states are initiated in response to the corresponding state commands from the host, in case the host uses a direct data file instruction set and equivalents thereof. If the host uses an object protocol, the object protocol adapter may issue status commands. The object protocol adapter may send status commands to a file based backend in response to equivalent commands received from the host if the host is using an object protocol that includes such commands. Alternatively, the object protocol adapter may generate state commands based on inferring the state of the host from other factors. For example, the host may provide some indication that it will not remove power for a period of time, and in response, the Object Protocol adapter may send a "idle" status command to the file-based backend. Similarly, it may indicate that the host is about to remove the membrane power, or the Object Protocol adapter may infer that the power is about to be removed based on the host's operation, and in response, the Object Protocol adapter may attach to the file-based backend. You can send a "Shutdown" command.

오브젝트 프로토콜 어댑터의 주요 기능들 중 하나는 호스트 데이터를 (오브젝트 프로토콜에 따른) 호스트로부터 수신되는 미리 규정된 파일로부터 파일 기반으로 한 백엔드에 대한 스트리밍 데이터로 변환하는 것이다. (MTP에서 개시기로서 작동하는) 오브젝트 프로토콜을 사용하는 호스트가 미리 규정된 크기를 갖는 파일을 전송하고 응답기로부터의 응답을 필요로 하는 반면, 파일 기반으로 한 백엔드는 일반적으로 이와 같은 응답을 제공하도록 구성되지 않는다. 특히, 직접적인 데이터 파일 백엔드가 사용되는 경우에, 데이터는 일반적으로 스트리밍되고 MTP의 응답 단계의 등가물은 존재하지 않는다. 오브젝트 프로토콜 어댑터는 호스트로부터의 오브 젝트를 스트리밍 데이터로 변환하고, 상기 오브젝트의 모든 데이터가 수신될 때 호스트에 적절한 응답을 발생시킨다. One of the main functions of the Object Protocol Adapter is to convert host data from predefined files received from the host (according to the object protocol) to streaming data for the file-based backend. Whereas a host using an object protocol (which acts as an initiator in MTP) transfers a file with a predefined size and requires a response from the responder, the file-based backend typically provides such a response. It is not configured. In particular, where a direct data file backend is used, the data is generally streamed and there is no equivalent of the response phase of the MTP. The object protocol adapter converts the object from the host into streaming data and generates an appropriate response to the host when all the data of the object is received.

MTP와 같은 오브젝트 프로토콜에서, 오브젝트에 관한 정보의 전달을 위한 별도의 작동이 오브젝트를 판독 또는 기록하는 작동보다 선행한다. 이와 같은 정보 전달 작동은 오브젝트가 기록되는 경우에, 오브젝트 특성들(오브젝트 정보)에 대한 "설정" 작동이다. 이와 같은 정보 전달 작동은 오브젝트가 판독되는 경우에, 오브젝트 특성들에 대한 "획득" 작동이다. 오브젝트 특성들은 오브젝트의 길이를 포함하는 데이터세트의 형태이다. In object protocols such as MTP, a separate operation for the transfer of information about an object precedes the operation to read or write the object. This information transfer operation is a "setting" operation on object properties (object information) when an object is recorded. This information transfer operation is the "acquisition" operation on the object characteristics when the object is read. Object properties are in the form of a dataset that contains the length of the object.

오브젝트가 도15의 메모리 시스템(526)에 기록되고 있을 때, 오브젝트에 대한 데이터세트가 우선 오브젝트 프로토콜 어댑터(524)에 의하여 호스트로부터 수신된다. 호스트는 MTP 기간에서 개시기인 것으로 간주된다. 데이터세트 내의 정보는 기록 작동을 구현하는 후속 트랜잭션을 제어하는데 사용된다. 데이터세트는 또한 메타데이터로서 메모리 시스템(526)에 저장된다. 기록 작동 동안, 오프젝트 프로토콜 어댑터(524)는 기록 작동의 데이터 단계 동안 개시기로부터 전달되는 데이터의 량을 카운트한다. 오브젝트 프로토콜 어댑터(524)는 이 카운트로부터 오브젝트 데이터의 종점을 식별한다. 그 후, 오브젝트 프로토콜 어댑터는 호스트에 전송되는 응답을 발생시킨다. 오브젝트 프로토콜 어댑터(524)는 또한 파일을 클로우즈하도록 하는 명령을 파일 기반으로 한 백엔드(522)에 전송한다. When an object is being written to the memory system 526 of Figure 15, the dataset for the object is first received by the object protocol adapter 524 from the host. The host is considered to be an initiator in the MTP period. The information in the dataset is used to control subsequent transactions that implement the write operation. The dataset is also stored in the memory system 526 as metadata. During the write operation, the object protocol adapter 524 counts the amount of data delivered from the initiator during the data phase of the write operation. The object protocol adapter 524 identifies the endpoint of the object data from this count. The object protocol adapter then generates a response that is sent to the host. The object protocol adapter 524 also sends a command to the file-based backend 522 to close the file.

오브젝트가 도15의 메모리 시스템(526)으로부터 판독되고 있을 때, 오브젝트에 대한 메타데이터가 우선 오브젝트 프로토콜 어댑터(524)에 의하여 파일 기반으 로 백엔드(522)로부터 획득된다. 그 후, 오브젝트에 대한 메타데이터는 판독 작동을 구현하는 후속 트랜잭션을 제어하는데 사용된다. 오브젝트 프로토콜 어댑터(524)는 또한 메모리 시스템(526)에 저장된 메타데이터를 오브젝트에 대한 데이터세트로서 호스트에 전송한다. 오브젝트 프로토콜 어댑터(526)는 판독 작동의 데이터 단계 동안 파일 기반으로 한 백엔드(522)로부터 전달된 데이터의 량을 카운트한다. 오브젝트 프로토콜 어댑터(524)는 이 카운트로부터 데이터의 종점을 식별한다. 그 후, 오브젝트 프로토콜 어댑터(524)는 오브젝트가 전송된 후에 호스트에 전송되는 응답을 발생시킨다. When an object is being read from the memory system 526 of FIG. 15, metadata for the object is first obtained from the back end 522 on a file basis by the object protocol adapter 524. The metadata for the object is then used to control subsequent transactions that implement the read operation. The object protocol adapter 524 also sends metadata stored in the memory system 526 to the host as a dataset for the object. The object protocol adapter 526 counts the amount of data transferred from the file-based backend 522 during the data phase of the read operation. The object protocol adapter 524 identifies the endpoint of the data from this count. The object protocol adapter 524 then generates a response that is sent to the host after the object is sent.

오브젝트 프로토콜 어댑터는 MTP와 같은 오브젝트 프로토콜들에서 사용된 오브젝트 정보 데이터세트들 및 직접적인 데이터 파일 백엔드를 사용하는 것과 같은 파일 기반으로 한 메모리 시스템들에 저장된 메타데이터 사이를 번역한다. "메타데이터"는 오브젝트와 별도로 저장되고 별도로 관리되는 오브젝트에 관한 데이터를 나타내는데 사용되는 용어이다. 따라서, MTP 내의 오브젝트 정보 데이터세트는 메타데이터의 일례이다. 직접적인 데이터 파일 백엔드는 오브젝트 프로토콜에 의해 사용된 것과 동일한 포맷 또는 상이한 포맷으로 메타데이터를 저장할 수 있다. 용어 "파일_정보"가 또한 직접적인 데이터 파일 시스템들에서의 메타데이터에 대해 사용된다. 오브젝트 프로토콜 어댑터(524)가 호스트로부터 메타데이터 관련 명령을 수신할 때, 상기 오브젝트 프로토콜 어댑터(524)는 명령을 파일 기반으로 한 백엔드(522)와 호환 가능한 포맷으로 번역할 수 있다. 그러나, 일부 경우들에서, 오브젝트 프로토콜에서 메타데이터에 대해 사용된 명령들이 파일 기반으로 한 백엔 드(522)와 호환 가능하기 때문에, 번역이 필요로 되지 않는다. The object protocol adapter translates between object information datasets used in object protocols such as MTP and metadata stored in file based memory systems such as using a direct data file backend. "Metadata" is a term used to indicate data about an object stored separately from and managed separately from the object. Thus, the object information dataset in the MTP is an example of metadata. The direct data file backend may store the metadata in the same format or in a different format as used by the object protocol. The term "file_information" is also used for metadata in direct data file systems. When the object protocol adapter 524 receives a metadata related command from a host, the object protocol adapter 524 may translate the command into a format compatible with the file-based backend 522. In some cases, however, no translation is needed since the instructions used for metadata in the object protocol are compatible with file-based backend 522.

메타데이터는 파일과 관련되는 호스트에 의해 발생된 정보이다. 메타데이터의 특징 및 콘텐트는 호스트에 의해 결정되며, 일반적으로 파일 및 메타데이터를 저장하는 장치에 의해 해석되지 않는다. 메타데이터 명령들은 직접적인 데이터 파일 백엔드에 의해 저장되는 지정된 파일에 대한 메타데이터 입력 및 출력 작동들을 개시하고, 메타데이터 내의 오프셋 어드레스 값을 규정하는데 사용된다. 메타데이터 명령들은 MTP 데이터세트들에 관한 대응하는 명령들이 호스트로부터 수신될 때 오브젝트 프로토콜 어댑터에 의해 발생될 수 있다. 직접적인 데이터 파일 백엔드 시스템에 의해 사용되는 메타데이터 명령들의 예들이 다음 테이블에 제시되어 있다. Metadata is information generated by the host associated with a file. The characteristics and content of the metadata are determined by the host and are generally not interpreted by the device that stores the files and metadata. Metadata instructions are used to initiate metadata input and output operations for the specified file stored by the direct data file back end, and to specify an offset address value in the metadata. Metadata commands may be generated by the object protocol adapter when corresponding commands regarding MTP datasets are received from the host. Examples of metadata commands used by the direct data file backend system are shown in the following table.

명령Command 파라미터들Parameters 설명Explanation 메타데이터_기록Metadata_record <파일ID><File ID> 메타데이터_기록 포인터의 현재 값에 의해 규정된 오프셋 어드레스에서 지정된 파일에 대한 메타데이터를 기록한다Writes metadata for the file specified at the offset address specified by the current value of the metadata_record pointer. 메타데이터_판독Metadata_read <파일ID><File ID> 메타데이터_판독 포인터의 현재 값에 의해 규정된 오프셋 어드레스에서 지정된 파일에 대한 메타데이터를 판독한다Read the metadata for the file specified at the offset address specified by the current value of the metadata_read pointer. 메타데이터_기록_포인터Metadata_record_pointer <파일ID>
<오프셋>
<File ID>
<Offset>
지정된 파일에 대한 메타데이터_기록_포인터에 대한 새로운 현재 값을 규정한다. Defines a new current value for the metadata_record_pointer for the specified file.
메타데이터_판독_포인터Metadata_read_pointer <파일ID>
<오프셋>
<File ID>
<Offset>
지정된 파일에 대한 메타데이터_판록_포인터에 대한 새로운 현재 값을 규정한다. Defines a new current value for the metadata_block_pointer for the specified file.

메타데이터_기록: 메타데이터_기록 명령의 수신 이후에 장치에 스트리밍된 메타데이터는 메타데이터_기록_포인터의 현재 값에 의해 규정된 오프셋 어드레스에서 지정된 파일에 대한 메타데이터에 겹쳐쓰기된다. 지정된 파일에 대한 메타데이 터의 콘텐트 및 길이는 호스트에 의해 결정된다. 메타데이터_기록 명령은 임의의 다른 명령의 수신에 의해 종료된다. Metadata_Record: The metadata streamed to the device after receipt of the metadata_record command is overwritten with metadata for the file specified at the offset address defined by the current value of the metadata_record_pointer. The content and length of metadata for a specified file is determined by the host. The metadata_write command is terminated by the reception of any other command.

메타데이터_판독: 메타데이터_판독_포인터의 현재 값에 의해 규정된 오프셋 어드레스에서 지정된 파일에 대한 메타데이터는 메타데이터_판독 명령의 수신 이후에 장치로부터 스트리밍될 수 있다. 메타데이터 스트리밍은 메타데이터의 종점에 도달할 때 종료되며, 이 조건은 상태 명령에 의하여 호스트에 의해 식별될 수 있다. 메타데이터_판독 명령은 임의의 다른 명령의 수신에 의해 종료된다. Metadata_Read: The metadata for the file specified at the offset address defined by the current value of the metadata_read_pointer may be streamed from the device after receipt of the metadata_read command. Metadata streaming ends when the end point of the metadata is reached, and this condition can be identified by the host by status command. The metadata_read command is terminated by the receipt of any other command.

메타데이터_기록_포인터: 메타데이터_기록 포인터 명령은 지정된 오프셋 어드레스에 대해 지정된 파일에 대한 메타데이터_기록_포인터를 설정한다. 메타데이터_기록_포인터는 메타데이터가 메타데이터_기록 명령 이후에 장치로 스트리밍될 때 장치에 의해 증분된다. Metadata_record_pointer: The metadata_record pointer instruction sets a metadata_record_pointer for a specified file for a specified offset address. The metadata_record_pointer is incremented by the device when metadata is streamed to the device after the metadata_record command.

메타데이터_판독_포인터: 메타데이터_판독_포인터 명령은 지정된 오프셋 어드레스에 대해 지정된 파일에 대한 메타데이터_판독_포인터를 설정한다. 메타데이터_판독_포인터는 메타데이터가 메타데이터_판독_명령 이후에 장치로부터 스트리밍될 때 장치에 의해 증분된다. Metadata_read_pointer: The metadata_read_pointer command sets a metadata_read_pointer for a specified file for a specified offset address. The metadata_read_pointer is incremented by the device when metadata is streamed from the device after the metadata_read_command.

일부 경우들에서, 호스트는 오브젝트들의 계층적인 배열을 가질 수 있다. 예를 들어, 파일들은 디렉토리들 및 서브디렉토리들에 저장될 수 있다. 직접적인 데이터 파일 백엔드는 일반적으로 임의의 계층적인 구조없이(즉, 논리적으로 평탄한 배열로) 파일들을 저장한다. 2개의 시스템들을 융화시키기 위하여, 오브젝트 프로토콜 어댑터는 오브젝트들과 관련된 메타데이터를 사용함으로써 저장된 오브젝트들 의 계층적인 구조를 재생성할 수 있다. 호스트가 계층을 유지하는 경우에, 계층에서의 파일의 상태에 관한 정보는 파일이 저장될 때 메타데이터로서 저장된다. 메모리 시스템이 호스트에 의해 액세스될 때, 메타데이터가 먼저 판독되어, 오브젝트 프로토콜 어댑터는 계층적인 구조를 결정할 수 있고 이 정보를 호스트에 리턴시킬 수 있다. 이 방식으로, 오브젝트 프로토콜 어댑터는 파일들이 이 계층적인 정보에 관계없이 메모리 시스템에 저장될지라도, 계층적인 정보를 재생성할 수 있다. 예를 들어, 파일이 호스트의 계층에 위치되는 디렉토리 및 서브-디렉토리는 파일이 저장될 때 메타데이터로서 저장될 수 있다. 이후에, 호스트가 메모리 시스템의 콘텐츠에 액세스하고자 시도할 때, 디렉토리 및 서브디렉토리 정보가 호스트에 리턴된 정보에서 반영된다. In some cases, the host may have a hierarchical arrangement of objects. For example, files can be stored in directories and subdirectories. Direct data file backends generally store files without any hierarchical structure (ie, in a logically flat arrangement). To harmonize the two systems, the object protocol adapter can recreate the hierarchical structure of the stored objects by using metadata associated with the objects. In the case where the host maintains the hierarchy, information about the state of the file in the hierarchy is stored as metadata when the file is stored. When the memory system is accessed by the host, the metadata is read first so that the object protocol adapter can determine the hierarchical structure and return this information to the host. In this way, the object protocol adapter can regenerate hierarchical information even if the files are stored in the memory system regardless of this hierarchical information. For example, directories and sub-directories in which files are located in a hierarchy of hosts can be stored as metadata when the files are stored. Subsequently, when the host attempts to access the contents of the memory system, directory and subdirectory information is reflected in the information returned to the host.

멀티-프로토콜 인터페이스들Multi-Protocol Interfaces

본 발명의 실시예에서, (MTP 프로토콜에 따르는 것과 같은) 미리 결정된 크기를 갖는 오브젝트들, 미리결정된 크기 없이 스트리밍된 파일들로서 수신되는 파일들 및 메모리 시스템에 대해 규정된 논리적 어드레스 공간에 걸쳐 규정되는 논리적 어드레스들을 갖는 데이터의 섹터들 수신하여 저장할 수 있는 메모리 시스템이 제공된다. 프로토콜 어댑터들은 이러한 3개의 프로토콜들에 대응하도록 구성되며, 호스트에 의해 사용된 프로토콜에 따라 선택된다. In an embodiment of the present invention, a logical defined over a logical address space defined for objects with objects having a predetermined size (such as in accordance with the MTP protocol), files received as streamed files without a predetermined size, and defined for the memory system. A memory system is provided that can receive and store sectors of data having addresses. Protocol adapters are configured to correspond to these three protocols and are selected according to the protocol used by the host.

도16은 공통 직접적인 데이터 파일 인터페이스(636)에 접속된 3개의 프로토콜 어댑터들(630, 632, 634)를 갖는 메모리 시스템(629)을 도시한다. 직접적인 데이터 파일 인터페이스(636) 및 직접적인 데이터 파일 저장소(638)는 직접적인 데이 터 파일 백-엔드로서 간주될 수 있는 파일 기반으로 한 백엔드(640) 내에 있다. 따라서, 메모리 시스템(629)은 파일 인터페이스들 중 어느 하나로부터 수신된 데이터에 대해 공통 백엔드를 사용한다. 메모리의 파티셔닝(partitioning)은 이와 같은 시스템에서 필요로 되지 않을 수 있어서, 메모리 어레이에서의 이용 가능한 공간이 효율적으로 사용된다. 따라서, 어레이 내의 블록은 상이한 시간에 파일 인터페이스, 오브젝트 인터페이스 및 LBA 인터페이스로부터 수신되는 데이터의 저장을 위해 사용될 수 있다. 그러나, LBA 인터페이스로부터 수신된 데이터는 그 시간에 LBA 인터페이스로부터 수신된 데이터만을 저장하는 블록들에 저장될 수 있다. 파일 인터페이스 및 오브젝트 인터페이스로부터 수신된 데이터는 일반적으로 자신의 파일 구조를 반영하여 가비지 수집이 감소되는 방식으로 관리된다. 16 shows a memory system 629 having three protocol adapters 630, 632, 634 connected to a common direct data file interface 636. Direct data file interface 636 and direct data file store 638 are within a file based back end 640 that can be considered as a direct data file back end. Thus, memory system 629 uses a common back end for data received from either of the file interfaces. Partitioning of memory may not be required in such a system, so that the available space in the memory array is used efficiently. Thus, blocks in the array can be used for storage of data received from file interfaces, object interfaces, and LBA interfaces at different times. However, data received from the LBA interface may be stored in blocks that store only data received from the LBA interface at that time. Data received from the file interface and the object interface is generally managed in such a way that garbage collection is reduced to reflect its file structure.

도16은 LBA 프로토콜 어댑터(634)를 통하여 파일 기반으로 한 백엔드(640)에 접속되는 LBA 인터페이스(639)를 도시한다. LBA 프로토콜 어댑터(634)는 LBA 데이터를 논리적 파일들로 변환하거나, LBA 데이터를 파일 기반으로 한 백엔드에 의한 수신에 적합한 포맷으로 변환하는 어떤 다른 방식을 사용할 수 있다. FIG. 16 illustrates LBA interface 639 connected to file-based backend 640 via LBA protocol adapter 634. LBA protocol adapter 634 may use any other method of converting LBA data into logical files, or converting LBA data into a format suitable for reception by a file-based back end.

오브젝트 인터페이스(642)는 오브젝트 프로토콜 어댑터(632)를 통하여 파일 기반으로 한 백엔드(640)에 접속된다. 일반적으로, 오브젝트 프로토콜 어댑터(632)는 데이터 및 명령들을 하나의 프로토콜로부터 또 다른 프로토콜로 변환하여, 오브젝트 프로토콜을 사용하는 호스트가 파일 기반으로 한 백엔드에 액세스하도록 한다. 이것이 단순히 오브젝트 프로토콜 명령으로부터 파일 기반으로 한 명령으로의 일-대-일 번역을 포함할 수 있지만, 일부 경우들에서, 명령들은 다른 프로토콜에서 등가물을 갖지 않는다. 이와 같은 경우에, 오브젝트 프로토콜 어댑터는 단순한 것보다는 더 많은 번역을 행할 수 있다. 예를 들어, MTP 호스트가 오브젝트의 크기를 포함하는 메타데이터를 전송하고 나서, 오브젝트를 전송하는 경우, 오브젝트 프로토콜 어댑터는 오브젝트의 종점을 인지하고, MTP 호스트에 응답을 발생시킨다. 오브젝트 프로토콜 어댑터는 또한 이 지점에서 파일 기반으로 한 백엔드에 대해 클로우즈 파일 명령을 발생시킨다. Object interface 642 is connected to file-based backend 640 via object protocol adapter 632. In general, object protocol adapter 632 translates data and instructions from one protocol to another, allowing a host using the object protocol to access a file-based backend. While this may simply include a one-to-one translation from an object protocol command to a file based command, in some cases, the commands do not have equivalents in other protocols. In such cases, the object protocol adapter can make more translations than simple. For example, when an MTP host sends metadata that includes an object's size, then sends the object, the object protocol adapter recognizes the end point of the object and issues a response to the MTP host. The object protocol adapter also issues a close file command for the file-based backend at this point.

파일 인터페이스(644)는 파일 프로토콜 어댑터(630)를 통하여 파일 기반으로 한 백엔드(640)에 접속된다. 일부 경우들에서, 적절한 파일 기반으로 한 프로토콜을 사용하는 호스트는 임의의 번역들을 필요로 함이 없이 파일 기반으로 한 백엔드와 직접 통신할 수 있다. 그러나, 다른 경우들에서, 호스트는 파일 기반으로 하지만, 파일 기반으로 한 백엔드의 프로토콜과는 동일하지 않은 프로토콜을 사용하여 파일들을 전송할 수 있다. 이와 같은 경우들에서, 파일 프로토콜 어댑터(630)는 임의의 필요로 되는 번역을 수행할 수 있다. File interface 644 is connected to file-based backend 640 via file protocol adapter 630. In some cases, a host using an appropriate file-based protocol can communicate directly with the file-based backend without requiring any translations. However, in other cases, the host may transfer files using a protocol that is file-based but not the same as that of the file-based backend. In such cases, the file protocol adapter 630 may perform any necessary translation.

도16의 메모리 시스템은 적어도 3개의 상이한 프로토콜들을 사용하는 호스트들과 호환 가능하다. 메모리 시스템은 또한 부가적인 프로토콜 어댑터가 제공되는 경우에, 다른 호스트들과 호환 가능할 수 있다. The memory system of Figure 16 is compatible with hosts using at least three different protocols. The memory system may also be compatible with other hosts if additional protocol adapters are provided.

도17은 함께 번역 층(750)으로 간주되는 파일 프로토콜 어댑터(630), 오브젝프 프로토콜 어댑터(632) 및 LBA 프로토콜 어댑터(634)를 갖는 도16의 메모리 시스템(629)을 도시한다. 각각의 프로토콜 어댑터는 특정 호스트 프로토콜 및 파일 기반으로 한 백엔드(640) 사이에서 필요로 되는 바와 같은 번역을 제공한다. 일부 경 우들에서, 메모리 시스템(629)은 동시에 하나 이상의 호스트와 통신할 수 있다. 예를 들어, 메모리 시스템(629)은 다수의 호스트가 부착된 네트워크에 접속될 수 있다. 다른 예들에서, 단일 호스트는 마치 상이한 호스트들인 것처럼 작동하는 실행중인 상이한 애플리케이션들을 가질 수 있고, 상이한 프로토콜들을 사용하여 메모리 시스템과 통신할 수 있다. 이와 같은 경우들에서, 번역 층(750)은 상이한 호스트들 간의 임의의 상충을 해결해야 한다. 상이한 호스트들 사이의 조정을 제공하여, 파일 기반으로 한 백엔드(640)가 상충되는 명령들을 수신하지 않는다. 이것은 다른 호스트가 특정 태스크를 완료할 때까지, 하나의 호스트 액세스를 거절한다는 것을 의미할 수 있다. 예를 들어, 오브젝트 프로토콜 어댑터(632)가 오브젝트 또는 메타데이터를 전달하고 있는 경우에, 번역 층(750)은 작동이 완료될 때까지 LBA 프로토콜 어댑터(634) 및 파일 프로토콜 어댑터(630)가 파일 기반으로 한 백엔드(640)와 통신하지 않도록 할 수 있다. 이것은 LBA 인터페이스(639) 또는 파일 인터페이스(644)를 통하여 메모리 시스템에 액세스하도록 시도하는 호스트들에 비지 신호를 전송한다는 것을 의미할 수 있다. 일부 예들에서, 상이한 호스트들은 인터리빙된 트랜잭션들을 통해 파일 기반으로 한 백엔드(640)에 액세스하여, 동일한 시간 기간에 걸쳐 액세스할 수 있다. 이와 같은 경우들에서, 번역 층(750)은 호스트들 사이를 조정한다. FIG. 17 illustrates the memory system 629 of FIG. 16 with a file protocol adapter 630, an object protocol adapter 632, and an LBA protocol adapter 634 together considered a translation layer 750. Each protocol adapter provides translations as needed between the backend 640 based on a particular host protocol and file. In some cases, memory system 629 may communicate with one or more hosts at the same time. For example, memory system 629 may be connected to a network to which multiple hosts are attached. In other examples, a single host may have different applications running that act as if they are different hosts, and may communicate with the memory system using different protocols. In such cases, the translation layer 750 must resolve any conflict between different hosts. By providing coordination between different hosts, the file-based backend 640 does not receive conflicting commands. This may mean that one host is denied access until another host completes a particular task. For example, if the object protocol adapter 632 is delivering an object or metadata, the translation layer 750 may be file based on the LBA protocol adapter 634 and the file protocol adapter 630 until the operation is complete. It may be so as not to communicate with one backend 640. This may mean sending a busy signal to hosts attempting to access the memory system via LBA interface 639 or file interface 644. In some examples, different hosts may access the file-based backend 640 via interleaved transactions, over the same time period. In such cases, the translation layer 750 coordinates between hosts.

도17은 파일 인터페이스(644), 오브젝트 인터페이스(642) 및 LBA 인터페이스(639)를 포함하는 인터페이스 층(752)을 도시한다. 파일 인터페이스(644), 오브젝트 인터페이스(642) 및 LBA 인터페이스(639)는 다른 요소들로서 도시되어 있지 만, 이것은 메모리 시스템(629)의 논리적 인터페이스를 도시한 논리적 표현이며, 반드시 3개의 별도의 물리적 인터페이스들이 존재할 필요는 없다. 일부 예들에서, (USB 커넥터 또는 SD 커넥터와 같은) 단일 물리적 인터페이스는 사용된 임의의 다른 인터페이스들과 함께 파일 인터페이스(644), 오브젝트 인터페이스(642) 및 LBA 인터페이스(639)에 공통이다. 어느 인터페이스가 사용되는지, 및 이에 따라 어느 프로토콜 어댑터가 사용되는지는 호스트에 의해 사용되는 프로토콜에 따른다. 일부 경우들에서, 호스트 프로토콜은 메모리 시스템이 먼저 호스트에 접속될 때 핸드-쉐이킹 루틴(hand-shaking routine)의 부분으로서 호스트에 의해 표시될 수 있다. 다른 경우들에서, 호스트 프로토콜은 호스트에 의해 전송된 명령들로부터 메모리 시스템(629)에 의해 추론된다. 인터페이스 층(752)은 호스트에 의해 전송된 표시로부터 또는 어떤 다른 방식으로 사용된 호스트 프로토콜을 검출할 수 있고, 호스트 프로토콜에 따라 통신에 적합한 인터페이스를 선택한다. 따라서, 메모리 시스템이 호스트가 MTP 프로토콜을 사용하고 있다고 검출하는 경우, 오브젝트 인터페이스(642) 및 오브젝트 프로토콜 어댑터(632)가 선택된다. 일반적으로, 어떤 하나의 시간에 하나의 프로토콜 어댑터만이 선택된다. 그러나, 일부 경우들에서, 2개 이상의 호스트들에 의한 인터리빙된 액세스를 허용하기 위하여 프로토콜 어댑터들이 교호적으로 선택될 수 있다. 17 shows an interface layer 752 that includes a file interface 644, an object interface 642, and an LBA interface 639. File interface 644, object interface 642, and LBA interface 639 are shown as other elements, but this is a logical representation of the logical interface of memory system 629, and three separate physical interfaces It doesn't have to exist. In some examples, a single physical interface (such as a USB connector or SD connector) is common to file interface 644, object interface 642 and LBA interface 639 along with any other interfaces used. Which interface is used and hence which protocol adapter is used depends on the protocol used by the host. In some cases, the host protocol may be indicated by the host as part of a hand-shaking routine when the memory system is first connected to the host. In other cases, the host protocol is inferred by the memory system 629 from instructions sent by the host. The interface layer 752 can detect the host protocol used from the indication sent by the host or in some other manner, and select the appropriate interface for communication in accordance with the host protocol. Thus, when the memory system detects that the host is using the MTP protocol, the object interface 642 and the object protocol adapter 632 are selected. In general, only one protocol adapter is selected at any one time. In some cases, however, protocol adapters may be selected alternately to allow interleaved access by two or more hosts.

도17의 요소들이 메모리 시스템(629)의 논리적 구성요소들에 대응하며 반드시 개별적인 물리적 요소들에 대응하지는 않는다는 것이 이해될 것이다. 따라서, 인터페이스 층(752) 및 번역 층(750)의 기능들은 전용 회로에 의해 성취되거나, 제 어기 상에서 작동하는 적절한 펌웨어를 사용하여 성취될 수 있다. 일례에서, 데이터 및 명령들을 공통 백엔드와 호환 가능한 포맷으로 변환하기 위하여 단일 물리적 인터페이스가 메모리 제어기 상에서 작동하는 프로토콜 어댑터들을 선택하는 메모리 제어기에 의해 관리될 수 있다. 도17이 단지 3개의 프로토콜 어댑터들을 도시하지만, 실제 메모리 시스템들은 3개 이상 또는 이하의 프로토콜 어댑터들을 가질 수 있다. 일부 경우들에서, 하나 이상의 오브젝트 프로토콜 어댑터가 존재할 수 있다. 예를 들어, MTP에 대한 오브젝트 프로토콜 어댑터 및 또 다른 오브젝트 프로토콜(예를 들어, PTP)에 대한 별도의 오브젝트 프로토콜이 존재할 수 있다. 유사하게, 상이한 파일 프로토콜들에 대한 하나 이상의 파일 프로토콜 어댑터 및 상이한 LBA 프로토콜들에 대한 상이한 LBA 프로토콜 어댑터들이 존재할 수 있다. 예를 들어, Alan W. Sinclair에 의한 명칭이 "Logically-Addressed File Storage Methods"인 특허 출원 번호 11,302,764는 대안적인 LBA 프로토콜들의 예들을 제공한다. It will be appreciated that the elements of FIG. 17 correspond to logical components of the memory system 629 and do not necessarily correspond to individual physical elements. Thus, the functions of the interface layer 752 and the translation layer 750 may be accomplished by dedicated circuitry or using appropriate firmware operating on the controller. In one example, a single physical interface may be managed by a memory controller selecting protocol adapters operating on the memory controller to convert data and instructions into a format compatible with the common back end. Although FIG. 17 shows only three protocol adapters, real memory systems may have more than three or fewer protocol adapters. In some cases, there may be more than one object protocol adapter. For example, there may be an object protocol adapter for MTP and a separate object protocol for another object protocol (eg, PTP). Similarly, there may be one or more file protocol adapters for different file protocols and different LBA protocol adapters for different LBA protocols. For example, Patent Application No. 11,302,764 by Alan W. Sinclair, entitled “Logically-Addressed File Storage Methods” provides examples of alternative LBA protocols.

결론conclusion

본 발명의 각종 양상들이 본 발명의 예시적인 실시예와 관련하여 설명되었을지라도, 본 발명이 첨부된 청구항들의 전체 범위 내에서 보호를 받게 된다는 것이 이해될 것이다. Although various aspects of the invention have been described with reference to exemplary embodiments of the invention, it will be understood that the invention is protected within the scope of the appended claims.

Claims (37)

비휘발성 메모리 어레이에 데이터를 저장하기 위한 메모리 시스템으로서, 상기 메모리 시스템은 하나 이상의 애플리케이션으로부터 데이터를 상이한 논리적 포맷들로 수신하고, 상기 비휘발성 메모리 어레이에 데이터를 공통 논리적 포맷으로 저장하며, 상기 메모리 시스템은,A memory system for storing data in a nonvolatile memory array, the memory system receiving data from one or more applications in different logical formats, storing data in the nonvolatile memory array in a common logical format, and silver, 제1 애플리케이션으로부터 제1 데이터를, 제1 호스트 파일로서, 상기 제1 호스트 파일의 길이의 표시 뒤에 수신하고, 상기 제1 데이터를 상기 비휘발성 메모리 어레이에 전송하는 제1 프로토콜 어댑터로서, 상기 제1 데이터는 제1 파일 식별자를 사용하여 기록되는 위치에 저장되는, 제1프로토콜 어댑터;A first protocol adapter for receiving first data from a first application as a first host file after an indication of the length of the first host file and transferring the first data to the nonvolatile memory array, wherein the first protocol adapter. A first protocol adapter, wherein the data is stored at a location recorded using the first file identifier; 제2 애플리케이션으로부터 제2 데이터를, 제2 호스트 파일의 데이터로서 식별되는 데이터 스트림으로서, 상기 제2 호스트 파일의 길이의 표시 없이 수신하고, 상기 제2 데이터를 상기 비휘발성 메모리 어레이에 전송하는 제2 프로토콜 어댑터로서, 상기 제2 데이터는 제2 파일 식별자를 사용하여 기록되는 위치에 저장되는, 제2 프로토콜 어댑터; 및A second data stream from the second application, the second data being identified as data in a second host file, without receiving an indication of the length of the second host file, and transmitting the second data to the non-volatile memory array. A second protocol adapter, wherein the second data is stored at a location recorded using a second file identifier; And 제3 애플리케이션으로부터 제3 데이터를 상기 메모리 시스템에 대해 규정된 논리적 어드레스 범위로부터의 개별 논리적 어드레스들을 가진 복수의 섹터로서 수신하고, 상기 제3 데이터를 상기 비휘발성 메모리 어레이에 전송하는 제3 프로토콜 어댑터로서, 상기 제3 데이터는 제3 파일 식별자를 사용하여 기록되는 위치에 저장되는, 제3 프로토콜 어댑터;As a third protocol adapter for receiving third data from a third application as a plurality of sectors having individual logical addresses from a logical address range defined for the memory system and transmitting the third data to the non-volatile memory array A third protocol adapter, wherein the third data is stored at a location recorded using a third file identifier; 를 포함하는 메모리 시스템.Memory system comprising a. 제1항에 있어서, 상기 메모리 시스템은 표준화된 접속에 의해 제거가능하게 호스트 시스템들에 접속될 수 있는 메모리 카드에 포함되는 것을 특징으로 하는 메모리 시스템.2. The memory system of claim 1 wherein the memory system is included in a memory card that can be removably connected to host systems by a standardized connection. 제2항에 있어서, 상기 제1 애플리케이션은 제1 호스트 시스템에서 실행되고, 상기 메모리 카드는 제1 시간에 상기 제1 호스트 시스템에 접속되며,The method of claim 2, wherein the first application is executed in a first host system, and the memory card is connected to the first host system at a first time. 상기 제2 애플리케이션은 제2 호스트 시스템에서 실행되고, 상기 메모리 카드는 제2 시간에 상기 제2 호스트 시스템에 접속되며,The second application is executed on a second host system, the memory card is connected to the second host system at a second time, 상기 제3 애플리케이션은 제3 호스트 시스템에서 실행되고, 상기 메모리 카드는 제3 시간에 상기 제3 호스트 시스템에 접속되는 것을 특징으로 하는 메모리 시스템.The third application is executed on a third host system, and the memory card is connected to the third host system at a third time. 제1항에 있어서, 상기 제1, 제2 및 제3 데이터의 위치들은 상기 제1, 제2 및 제3 파일 식별자들 각각에 대응하는 상기 메모리 어레이 내의 하나 이상의 블록을 나타내는 엔트리들로 기록되는 것을 특징으로 하는 메모리 시스템.The method of claim 1, wherein locations of the first, second, and third data are written to entries representing one or more blocks in the memory array corresponding to each of the first, second, and third file identifiers. Characterized by a memory system. 제1항에 있어서, 상기 제1 프로토콜 어댑터는 상기 제1 호스트 파일이 수신되었다는 표시를 발생시켜 호스트에 제공하는 것을 특징으로 하는 메모리 시스템.2. The memory system of claim 1 wherein the first protocol adapter generates and provides an indication to the host that the first host file has been received. 제1항에 있어서, 상기 제1 프로토콜 어댑터는 상기 제1 데이터가 가비지 수집을 위해 스케줄링되도록 하는 상기 제1 호스트 파일의 종점의 표시자를 발생시키는 것을 특징으로 하는 메모리 시스템.2. The memory system of claim 1 wherein the first protocol adapter generates an indicator of an endpoint of the first host file that causes the first data to be scheduled for garbage collection. 호스트 인터페이스에 접속되고 상기 호스트 인터페이스를 통해 수신된 데이터를 저장하는 제거가능한 메모리 카드에 포함된 메모리 시스템에 있어서, 상기 메모리 시스템은,A memory system included in a removable memory card connected to a host interface and storing data received via the host interface, the memory system comprising: 비휘발성 메모리 어레이;Nonvolatile memory array; 상기 비휘발성 메모리 어레이 내의 데이터를 파일들로서 관리하는 백엔드 메모리 관리 시스템;A back end memory management system for managing data in the nonvolatile memory array as files; 호스트와 통신하는 인터페이스 층; 및An interface layer in communication with the host; And 상기 인터페이스 층과 상기 백엔드 메모리 관리 시스템 사이에 위치하는 번역 층;A translation layer located between the interface layer and the backend memory management system; 을 포함하고,Including, 상기 번역 층은 상기 인터페이스 층으로부터 호스트 명령들을 수신하고, 상기 호스트 명령들은 오브젝트 프로토콜에 따르며, 상기 번역 층은, 상기 호스트 명령들을 수신하는 것에 응하여, 상기 백엔드 메모리 관리 시스템을 향해 번역된 명령들을 발생시키고, 상기 번역된 명령들은 상기 오브젝트 프로토콜에 따르지 않는 것을 특징으로 하는 메모리 시스템.The translation layer receives host commands from the interface layer, the host commands comply with an object protocol, and the translation layer generates translated commands toward the backend memory management system in response to receiving the host commands. And the translated instructions do not conform to the object protocol. 제7항에 있어서, 상기 오브젝트 프로토콜은 미디어 트랜스포트 프로토콜(MTP)인 것을 특징으로 하는 메모리 시스템.8. The memory system of claim 7, wherein the object protocol is a media transport protocol (MTP). 제7항에 있어서, 호스트는 오브젝트의 크기의 표시를 포함하는 메타데이터를 상기 오브젝트를 전송하기 전에 전송하고, 상기 번역 층은 상기 오브젝트 전체가 상기 호스트로부터 언제 수신되었는지를 상기 표시로부터 결정하는 것을 특징으로 하는 메모리 시스템.8. The method of claim 7, wherein the host transmits metadata including an indication of the size of the object before transmitting the object, and wherein the translation layer determines from the indication when the entire object was received from the host. Memory system. 제9항에 있어서, 상기 번역 층은, 상기 오브젝트 전체가 수신되었음을 결정하는 것에 응하여, 상기 호스트에 전송되는 응답을 발생시키고 상기 백엔드 메모리 관리 시스템에 전송되는 파일 표시자의 종점을 발생시키는 것을 특징으로 하는 메모리 시스템.10. The system of claim 9, wherein the translation layer generates a response sent to the host and an endpoint of a file indicator sent to the backend memory management system in response to determining that the entire object has been received. Memory system. 제7항에 있어서, 상기 번역 층은,The method of claim 7, wherein the translation layer, 호스트 파일 프로토콜을 사용하는 제2 호스트로부터의 통신을 백엔드 파일 프로토콜로 번역하는 제1 프로토콜 어댑터; 및A first protocol adapter for translating communication from a second host using a host file protocol into a back end file protocol; And 논리적 어드레스 프로토콜을 사용하는 제3 호스트로부터의 통신을 백엔드 파일 프로토콜로 번역하는 LBA 프로토콜 어댑터;An LBA protocol adapter for translating communication from a third host using a logical address protocol into a backend file protocol; 를 더 포함하는 것을 특징으로 하는 메모리 시스템.The memory system further comprises. 제11항에 있어서, 상기 LBA 프로토콜 어댑터는 상기 메모리 시스템에 대해 규정된 논리적 어드레스 공간으로부터 상기 제3 호스트에 의해 할당된 논리적 어드레스들을 갖는 데이터의 섹터들을 수신하고, 상기 데이터 섹터들을 상기 메모리 어레이의 메타블록의 용량과 동일한 크기의 가상 파일들로 맵핑하는 것을 특징으로 하는 메모리 시스템.12. The system of claim 11, wherein the LBA protocol adapter receives sectors of data having logical addresses assigned by the third host from a logical address space defined for the memory system, and converts the data sectors into meta data of the memory array. A memory system for mapping to virtual files of the same size as the capacity of the block. 비휘발성 메모리 어레이에 데이터를 저장하기 위한 메모리 시스템으로서, 상기 메모리 시스템은 하나 이상의 애플리케이션으로부터 데이터를 상이한 논리적 포맷들로 수신하고, 상기 비휘발성 메모리 어레이에 데이터를 공통 논리적 포맷으로 저장하며, 상기 메모리 시스템은,A memory system for storing data in a nonvolatile memory array, the memory system receiving data from one or more applications in different logical formats, storing data in the nonvolatile memory array in a common logical format, and silver, 제1 애플리케이션으로부터 제1 데이터를, 제1 호스트 파일로서, 상기 제1 호스트 파일의 길이의 표시 뒤에 수신하고, 상기 제1 데이터를 상기 비휘발성 메모리 어레이에 전송하는 제1 프로토콜 어댑터로서, 상기 제1 데이터는 제1 파일 식별자를 사용하여 기록되는 위치에 저장되는, 제1 프로토콜 어댑터; 및A first protocol adapter for receiving first data from a first application as a first host file after an indication of the length of the first host file and transferring the first data to the nonvolatile memory array, wherein the first protocol adapter. A first protocol adapter, wherein the data is stored at a location recorded using the first file identifier; And 제2 애플리케이션으로부터 제2 데이터를, 제2 호스트 파일의 데이터로서 식별되는 데이터의 스트림으로서, 제2 호스트 파일의 길이의 선행 표시 없이 수신하고, 상기 제2 데이터를 상기 비휘발성 메모리 어레이에 전송하는 제2 프로토콜 어댑터로서, 상기 제2 데이터는 제2 파일 식별자를 사용하여 기록되는 위치에 저장되는, 제2 프로토콜 어댑터;Receiving second data from a second application as a stream of data identified as data of a second host file, without a preceding indication of the length of the second host file, and transmitting the second data to the non-volatile memory array. A second protocol adapter, wherein the second data is stored at a location recorded using a second file identifier; 를 포함하는 메모리 시스템.Memory system comprising a. 제13항에 있어서, 상기 메모리 시스템은 표준화된 접속에 의해 제거가능하게 호스트 시스템들에 접속될 수 있는 메모리 카드에 포함되는 것을 특징으로 하는 메모리 시스템.14. The memory system of claim 13 wherein the memory system is included in a memory card that can be removably connected to host systems by a standardized connection. 제14항에 있어서, 상기 제1 애플리케이션은 제1 호스트 시스템에서 실행되고, 상기 메모리 카드는 제1 시간에 제1 호스트 시스템에 접속되며,15. The system of claim 14, wherein the first application is run on a first host system, and the memory card is connected to the first host system at a first time; 상기 제2 애플리케이션은 제2 호스트 시스템에서 실행되고, 상기 메모리 카드는 제2 시간에 제2 호스트 시스템에 접속되는 것을 특징으로 하는 메모리 시스템.The second application is executed on a second host system, and the memory card is connected to the second host system at a second time. 제13항에 있어서, 상기 제1 및 제2 데이터의 위치들은 상기 제1 및 제2 파일 식별자들 각각에 대응하는 상기 메모리 어레이 내의 하나 이상의 블록을 나타내는 엔트리들로 기록되는 것을 특징으로 하는 메모리 시스템. 15. The memory system of claim 13 wherein the locations of the first and second data are written into entries representing one or more blocks in the memory array corresponding to each of the first and second file identifiers. 제13항에 있어서, 상기 제1 프로토콜 어댑터는 상기 제1 호스트 파일이 수신되었다는 표시를 발생시켜 호스트에 제공하는 것을 특징으로 하는 메모리 시스템.15. The memory system of claim 13 wherein the first protocol adapter generates and provides an indication to the host that the first host file has been received. 제13항에 있어서, 상기 제1 프로토콜 어댑터는 상기 제1 데이터가 가비지 수집을 위해 스케줄링되도록 하는 상기 제1 호스트 파일의 종점의 표시자를 발생시키는 것을 특징으로 하는 메모리 시스템.14. The memory system of claim 13 wherein the first protocol adapter generates an indicator of an endpoint of the first host file that causes the first data to be scheduled for garbage collection. 복수의 호스트 프로토콜과 호환되도록 메모리 시스템을 작동시키는 방법으로서, 상기 메모리 시스템은 블록 소거가능한 메모리 어레이 및 제어기를 포함하고, 상기 방법은,A method of operating a memory system to be compatible with a plurality of host protocols, the memory system comprising a block erasable memory array and a controller, the method comprising: 호스트에 접속될 때 호스트 프로토콜을 검출하고, 상기 검출되는 호스트 프로토콜에 응하여 복수의 프로토콜 어댑터로부터 하나의 프로토콜 어댑터를 선택하는 단계로서, 상기 복수의 프로토콜 어댑터는 적어도 제1, 제2 및 제3 프로토콜 어댑터를 포함하는, 검출 및 선택 단계;Detecting a host protocol when connected to a host, and selecting one protocol adapter from the plurality of protocol adapters in response to the detected host protocol, wherein the plurality of protocol adapters are at least first, second and third protocol adapters; Including, detecting and selecting; 미리 결정된 길이의 파일들을 파일 길이의 표시자들 뒤에 전송하는 제1 호스트 프로토콜의 검출에 응하여 제1 프로토콜 어댑터를 선택하는 단계로서, 개개의 파일은 고유 파일 식별자를 갖는, 제1 프로토콜 어댑터 선택 단계;Selecting a first protocol adapter in response to detection of a first host protocol that transfers files of a predetermined length behind indicators of the file length, wherein each file has a unique file identifier; 파일들을 파일 길이의 표시자들 없이 전송하는 제2 호스트 프로토콜의 검출에 응하여 제2 프로토콜 어댑터를 선택하는 단계로서, 개개의 파일은 고유 파일 식별자를 갖는, 제2 프로토콜 어댑터 선택 단계; 및Selecting a second protocol adapter in response to detection of a second host protocol that transmits files without indicators of file length, wherein each file has a unique file identifier; And 데이터의 섹터들을 전송하는 제3 호스트 프로토콜의 검출에 응하여 제3 프로토콜 어댑터를 선택하는 단계로서, 개개의 섹터는 상기 메모리 시스템에 대해 규정된 논리적 어드레스 범위로부터의 논리적 어드레스를 갖는, 제3 프로토콜 어댑터 선택 단계;Selecting a third protocol adapter in response to detection of a third host protocol transmitting sectors of data, wherein each sector has a logical address from a logical address range defined for the memory system; step; 를 포함하는 메모리 시스템 작동 방법.Memory system operation method comprising a. 제19항에 있어서, 상기 제1 프로토콜 어댑터를 통해 수신된 제1 파일을 메모 리 어레이의 제1의 다수의 블록들에 저장하고 제1 파일 식별자 및 제1의 다수의 블록들 사이의 제1 관계를 기록하는 단계; 20. The method of claim 19, wherein the first file received via the first protocol adapter is stored in a first plurality of blocks of a memory array and a first relationship between the first file identifier and the first plurality of blocks. Recording; 상기 제2 프로토콜 어댑터를 통해 수신된 제2 파일을 메모리 어레이의 제2의 다수의 블록들에 저장하고 제2 파일 식별자 및 제2의 다수의 블록들 사이의 제2 관계를 기록하는 단계; 및Storing a second file received via the second protocol adapter in a second plurality of blocks of a memory array and recording a second file identifier and a second relationship between the second plurality of blocks; And 상기 제3 프로토콜 어댑터를 통해 수신된 다수의 섹터들을 제3의 다수의 블록들에 저장하고 제3 파일 식별자 및 제3의 다수의 블록들 사이의 제3 관계를 기록하는 단계를 더 포함하는 메모리 시스템 작동 방법. Storing the plurality of sectors received via the third protocol adapter in a third plurality of blocks and recording a third file identifier and a third relationship between the third plurality of blocks. How it works. 제19항에 있어서, 상기 제1 프로토콜 어댑터는 데이터의 미리 결정된 길이가 수신된 이후에 제1 호스트에 응답을 발생시키는 메모리 시스템 작동 방법. 20. The method of claim 19, wherein the first protocol adapter generates a response to the first host after a predetermined length of data is received. 제19항에 있어서, 상기 제1 프로토콜 어댑터는 데이터의 미리 결정된 길이를 수신하는 것에 응답하여 파일 표시자의 종점을 발생시키며, 상기 표시자는 파일들이 가비지 수집을 위해 클로우즈되고 스케줄링되도록 하는 메모리 시스템 작동 방법. 20. The method of claim 19, wherein the first protocol adapter generates an endpoint of a file indicator in response to receiving a predetermined length of data, the indicator causing the files to be closed and scheduled for garbage collection. 제19항에 있어서, 어떤 하나의 시간에 제1, 제2 또는 제3 프로토콜 어댑터들 중 하나만을 선택하는 단계를 더 포함하는 메모리 시스템 작동 방법. 20. The method of claim 19, further comprising selecting only one of the first, second, or third protocol adapters at any one time. 제19항에 있어서, 하나 이상의 호스트 애플리케이션에 의한 인터리빙된 액세스를 허용하기 위하여 상이한 시간들에 제1, 제2 및 제3 프로토콜 어댑터들 중 상이한 어댑터들을 교호적으로 선택하는 단계를 더 포함하는 메모리 시스템 작동 방법. 20. The memory system of claim 19 further comprising alternately selecting different ones of the first, second, and third protocol adapters at different times to allow interleaved access by one or more host applications. How it works. 제19항에 있어서, 상기 메모리 시스템은 제거 가능한 메모리 카드에서 구현되는 메모리 시스템 작동 방법. 20. The method of claim 19, wherein the memory system is implemented in a removable memory card. 제25항에 있어서, 상기 메모리 카드는 콤팩트플래시, 멀티미디어카드, 보안디지털, 미니SD, 메모리 스틱, 스마트미디어 또는 트랜스플래시로부터 선택된 표준에 따르는 메모리 시스템 작동 방법. 27. The method of claim 25, wherein the memory card is in accordance with a standard selected from compact flash, multimedia card, secure digital, miniSD, memory stick, smart media or transflash. 제거가능한 메모리 카드에서 비휘발성 메모리 시스템을 작동시키는 방법에 있어서,A method of operating a nonvolatile memory system in a removable memory card, comprising: 호스트로부터 메타데이터를 수신하는 단계로서, 상기 메타데이터는 오브젝트 내의 데이터 양의 표시를 포함하는, 수신 단계;Receiving metadata from a host, the metadata comprising an indication of the amount of data in the object; 상기 호스트로부터 상기 오브젝트를 수신하고, 상기 호스트로부터 수신된 오브젝트 데이터 양을 상기 메타데이터에 의해 표시되는 데이터 양과 비교함으로써 상기 오브젝트 전체가 수신되었는지를 결정하는 단계; 및Receiving the object from the host and determining whether the entire object has been received by comparing the amount of object data received from the host with the amount of data represented by the metadata; And 상기 오브젝트 전체가 수신되었다는 결정에 응하여, 상기 호스트에 응답을 전송하고 상기 오브젝트에 대응하는 상기 메모리 시스템 내의 파일을 폐쇄하는 단계로서, 상기 파일은 폐쇄의 결과로서 가비지 수집을 위해 마킹되는, 전송 및 폐쇄 단계;In response to determining that the entire object has been received, sending a response to the host and closing a file in the memory system corresponding to the object, wherein the file is marked for garbage collection as a result of the closure. step; 를 포함하는 비휘발성 메모리 시스템 작동 방법.Non-volatile memory system operating method comprising a. 제27항에 있어서, 상기 메타데이터를 비휘발성 메모리 시스템에 저장하는 단계를 더 포함하는 비휘발성 메모리 시스템 작동 방법. 28. The method of claim 27, further comprising storing the metadata in a nonvolatile memory system. 제27항에 있어서, 상기 호스트는 오브젝트를 포함하는 계층을 유지하고, 상기 계층 내의 오브젝트의 위치는 메타데이터에 의해 제공되는 비휘발성 메모리 시스템 작동 방법. 28. The method of claim 27, wherein the host maintains a layer containing an object, and the location of the object within the layer is provided by metadata. 제29항에 있어서, 상기 파일은 계층 내에서의 자신의 위치에 관계없이 메모리 시스템에 저장되는 비휘발성 메모리 시스템 작동 방법. 30. The method of claim 29 wherein the file is stored in a memory system regardless of its location within the hierarchy. 제30항에 있어서, 나중에 파일이 호스트에 의해 요청될 때, 계층을 재생성하기 위하여 메타데이터가 사용되는 비휘발성 메모리 시스템 작동 방법. 31. The method of claim 30, wherein metadata is used to regenerate the layer later when a file is requested by the host. 복수의 호스트 프로토콜과 호환되도록 제거가능한 메모리 시스템을 작동시키는 방법으로서, 상기 메모리 시스템은 블록 소거가능한 메모리 어레이와 제어기를 포함하고, 상기 방법은,A method of operating a removable memory system compatible with a plurality of host protocols, the memory system comprising a block erasable memory array and a controller, the method comprising: 호스트에 접속될 때 호스트 프로토콜을 검출하고, 상기 검출되는 호스트 프로토콜에 응하여 복수의 프로토콜 어댑터로부터 하나의 프로토콜 어댑터를 선택하는 단계로서, 상기 복수의 프로토콜 어댑터는 적어도 제1 및 제2 프로토콜 어댑터를 포함하는, 검출 및 선택 단계;Detecting a host protocol when connected to a host, and selecting one protocol adapter from the plurality of protocol adapters in response to the detected host protocol, wherein the plurality of protocol adapters comprises at least first and second protocol adapters; , Detection and selection step; 미리 결정된 길이의 파일들을 파일 길이의 표시자들 뒤에 전송하는 제1 호스트 프로토콜의 검출에 응하여 제1 프로토콜 어댑터를 선택하는 단계로서, 개개의 파일은 고유 파일 식별자를 갖는, 제1 프로토콜 어댑터 선택 단계; 및Selecting a first protocol adapter in response to detection of a first host protocol that transfers files of a predetermined length behind indicators of the file length, wherein each file has a unique file identifier; And 파일들을 파일 길이의 표시자들 없이 전송하는 제2 호스트 프로토콜의 검출에 응하여 제2 프로토콜 어댑터를 선택하는 단계로서, 개개의 파일은 고유 파일 식별자를 갖는, 제2 프로토콜 어댑터 선택 단계;Selecting a second protocol adapter in response to detection of a second host protocol that transmits files without indicators of file length, wherein each file has a unique file identifier; 를 포함하는 제거가능한 메모리 시스템 작동 방법.A method of operating a removable memory system comprising a. 제32항에 있어서, 상기 제1 프로토콜 어댑터를 통해 수신된 제1 파일을 메모리 어레이의 제1의 다수의 블록들에 저장하고 제1 파일 식별자 및 제1의 다수의 블록들 사이의 제1 관계를 기록하는 단계; 및33. The method of claim 32, wherein the first file received via the first protocol adapter is stored in a first plurality of blocks of a memory array and the first relationship between the first file identifier and the first plurality of blocks is determined. Recording; And 상기 제2 프로토콜 어댑터를 통해 수신된 제2 파일을 메모리 어레이의 제2의 다수의 블록들에 저장하고 제2 파일 식별자 및 제2의 다수의 블록들 사이의 제2 관계를 기록하는 단계를 더 포함하는 제거 가능한 메모리 시스템 작동 방법. Storing a second file received via the second protocol adapter in a second plurality of blocks of a memory array and recording a second file identifier and a second relationship between the second plurality of blocks. How a removable memory system works. 제32항에 있어서, 상기 제1 프로토콜 어댑터는 데이터의 미리 결정된 길이가 수신된 이후에 제1 호스트에 응답을 발생시키는 제거 가능한 메모리 시스템 작동 방법. 33. The method of claim 32 wherein the first protocol adapter generates a response to the first host after a predetermined length of data is received. 제32항에 있어서, 상기 제1 프로토콜 어댑터는 데이터의 미리 결정된 길이를 수신하는 것에 응답하여 파일 표시자의 종점을 발생시키며, 상기 표시자는 파일들이 가비지 수집을 위해 클로우즈되고 스케줄링되도록 하는 제거 가능한 메모리 시스템 작동 방법. 33. The removable memory system of claim 32, wherein the first protocol adapter generates an endpoint of a file indicator in response to receiving a predetermined length of data, the indicator causing the files to be closed and scheduled for garbage collection. Way. 제32항에 있어서, 어떤 하나의 시간에 제1 또는 제2 프로토콜 어댑터들 중 하나만을 선택하는 단계를 더 포함하는 제거 가능한 메모리 시스템 작동 방법. 33. The method of claim 32, further comprising selecting only one of the first or second protocol adapters at any one time. 제32항에 있어서, 상기 제거 가능한 메모리 시스템이 하나 이상의 호스트와 통신하는 경우에, 제1 및 제2 프로토콜 어댑터 중 교호적인 어댑터들을 선택하는 단계를 더 포함하는 제거 가능한 메모리 시스템 작동 방법. 33. The method of claim 32, further comprising selecting alternating adapters of the first and second protocol adapters when the removable memory system is in communication with one or more hosts.
KR1020087005053A 2005-08-03 2006-08-01 Enhanced Host Interface KR101055324B1 (en)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US70538805P 2005-08-03 2005-08-03
US60/705,388 2005-08-03
US11/316,577 2005-12-21
US11/316,578 US8291151B2 (en) 2005-08-03 2005-12-21 Enhanced host interface
US11/316,577 US20070033326A1 (en) 2005-08-03 2005-12-21 Enhanced host interfacing methods
US11/316,578 2005-12-21
PCT/US2006/030342 WO2007019258A2 (en) 2005-08-03 2006-08-01 Enhanced host interface

Publications (2)

Publication Number Publication Date
KR20080042850A KR20080042850A (en) 2008-05-15
KR101055324B1 true KR101055324B1 (en) 2011-08-08

Family

ID=37453103

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087005053A KR101055324B1 (en) 2005-08-03 2006-08-01 Enhanced Host Interface

Country Status (4)

Country Link
EP (1) EP1920318A2 (en)
JP (1) JP5068754B2 (en)
KR (1) KR101055324B1 (en)
WO (1) WO2007019258A2 (en)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8452927B2 (en) 2008-01-02 2013-05-28 Sandisk Technologies Inc. Distributed storage service systems and architecture
US8370402B2 (en) 2008-01-02 2013-02-05 Sandisk Il Ltd Dual representation of stored digital content
US8583878B2 (en) 2008-01-02 2013-11-12 Sandisk Il Ltd. Storage device having direct user access
US9098506B2 (en) 2008-01-02 2015-08-04 Sandisk Il, Ltd. Data indexing by local storage device
US8683148B2 (en) * 2010-06-30 2014-03-25 Sandisk Il Ltd. Status indication when a maintenance operation is to be performed at a memory device
KR101278591B1 (en) * 2011-05-30 2013-06-25 성균관대학교산학협력단 System and operating method for flash memory
US9471484B2 (en) * 2012-09-19 2016-10-18 Novachips Canada Inc. Flash memory controller having dual mode pin-out
US8943110B2 (en) 2012-10-25 2015-01-27 Blackberry Limited Method and system for managing data storage and access on a client device
EP2725477B1 (en) * 2012-10-25 2015-06-24 BlackBerry Limited Method and system for managing data storage and access on a client device
US9165006B2 (en) 2012-10-25 2015-10-20 Blackberry Limited Method and system for managing data storage and access on a client device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020188592A1 (en) * 2001-06-11 2002-12-12 Storage Technology Corporation Outboard data storage management system and method
US20040073727A1 (en) * 2002-07-29 2004-04-15 M-Systems Flash Disk Pioneers, Ltd. Portable storage media as file servers

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7039727B2 (en) * 2000-10-17 2006-05-02 Microsoft Corporation System and method for controlling mass storage class digital imaging devices
WO2002084999A1 (en) * 2001-04-06 2002-10-24 Sony Corporation Digital camera and data transfer method
JP3622691B2 (en) * 2001-04-06 2005-02-23 ソニー株式会社 Digital camera and data transfer method
US20050286377A1 (en) * 2002-11-07 2005-12-29 Koninkleijke Philips Electronics, N.V. Record carrier having a main file system area and a virtual file system area
US20040164170A1 (en) * 2003-02-25 2004-08-26 Marcelo Krygier Multi-protocol memory card
JPWO2005001701A1 (en) * 2003-06-27 2006-08-10 松下電器産業株式会社 Slave device, communication setting method
JP4318075B2 (en) * 2003-08-29 2009-08-19 富士フイルム株式会社 USB function device
JP2005122439A (en) * 2003-10-16 2005-05-12 Sharp Corp Device equipment and format conversion method for recording device of device equipment

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020188592A1 (en) * 2001-06-11 2002-12-12 Storage Technology Corporation Outboard data storage management system and method
US20040073727A1 (en) * 2002-07-29 2004-04-15 M-Systems Flash Disk Pioneers, Ltd. Portable storage media as file servers

Also Published As

Publication number Publication date
KR20080042850A (en) 2008-05-15
JP5068754B2 (en) 2012-11-07
WO2007019258A2 (en) 2007-02-15
EP1920318A2 (en) 2008-05-14
WO2007019258A3 (en) 2007-07-19
JP2009518698A (en) 2009-05-07

Similar Documents

Publication Publication Date Title
US8291151B2 (en) Enhanced host interface
US7949845B2 (en) Indexing of file data in reprogrammable non-volatile memories that directly store data files
US7669003B2 (en) Reprogrammable non-volatile memory systems with indexing of directly stored data files
KR101055324B1 (en) Enhanced Host Interface
US8762627B2 (en) Memory logical defragmentation during garbage collection
US7480766B2 (en) Interfacing systems operating through a logical address space and on a direct data file basis
TWI464584B (en) System and method for implementing extensions to intelligently manage resources of a mass storage system
US7814262B2 (en) Memory system storing transformed units of data in fixed sized storage blocks
US7877540B2 (en) Logically-addressed file storage methods
US8713283B2 (en) Method of interfacing a host operating through a logical address space with a direct file storage medium
US20070143566A1 (en) Non-volatile memories with data alignment in a directly mapped file storage system
US20070136553A1 (en) Logically-addressed file storage systems
KR20080043806A (en) Method and system for dual mode access for storage devices
WO2007019155A1 (en) Reclaiming data storage capacity in flash memory systems
KR20080046648A (en) Mass data storage system
US20080307156A1 (en) System For Interfacing A Host Operating Through A Logical Address Space With A Direct File Storage Medium
WO2007081638A2 (en) Non-volatile memories and methods with adaptive file handling in a directly mapped file storage system
WO2007073538A2 (en) Non-volatile memories and methods with data alignment in a directly mapped file storage system
JP4441577B2 (en) Conversion data unit storage in memory system with fixed size storage block
WO2007019197A2 (en) Management of memory blocks that directly store data files
WO2007019175A2 (en) Indexing of file data in reprogrammable non-volatile memories that directly store data files
WO2007073536A2 (en) Non-volatile memories and methods with memory allocation for a directly mapped file storage system

Legal Events

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

Payment date: 20140721

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150626

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160630

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170704

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 8