KR20110056276A - 액세스 속도가 가속화된 휴대용 저장 디바이스 - Google Patents
액세스 속도가 가속화된 휴대용 저장 디바이스 Download PDFInfo
- Publication number
- KR20110056276A KR20110056276A KR1020117002195A KR20117002195A KR20110056276A KR 20110056276 A KR20110056276 A KR 20110056276A KR 1020117002195 A KR1020117002195 A KR 1020117002195A KR 20117002195 A KR20117002195 A KR 20117002195A KR 20110056276 A KR20110056276 A KR 20110056276A
- Authority
- KR
- South Korea
- Prior art keywords
- file system
- storage device
- controllers
- connector
- controller
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/387—Information transfer, e.g. on bus using universal interface adapter for adaptation of different data processing systems to different peripheral devices, e.g. protocol converters for incompatible systems, open system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
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)
Abstract
저장 디바이스가 제공되며, 이 저장 디바이스는 데이터 파일들을 전달하기 위한 두 개의 커넥터, 즉 제 1 커넥터와 제 2 커넥터를 가지며, 제 1 커넥터를 통해 데이터 파일들은 가속화된 속도에서 전달될 수 있고, 제 2 커넥터를 통해 데이터 파일들은 종래의 속도에서 전달될 수 있다. 본 개시 내용에 따르면, 사용자는, 저장 디바이스의 적절한 커넥터에 호스트를 연결시킴으로써, 호스트로부터 저장 디바이스로 혹은 그 반대로 데이터 파일을 전달하기 위해 자신이 원하는 속도(즉, "노멀 속도" 혹은 "가속화된 속도")를 선택할 수 있다. 제 1 커넥터는, 가속화된 속도에서의 데이터의 전달이 용이하도록 하는 복수의 제어기들에 내부적으로 연결되어 있고, 제 2 커넥터는 노멀 속도에서의 데이터의 전달이 용이하도록 하는 제어기에 내부적으로 연결되어 있다.
Description
본 발명은 일반적으로 판독 및 기입 처리량이 증가된 휴대용 저장 디바이스(Portable Storage Device)("PSD")에 관한 것으로, 특히 두 개의 이용가능한 동작 모드, 즉 "노멀(normal)" 모드 및 "래피드 액세스(rapid-access)" 모드 중 하나의 모드에서 선택적으로 동작할 수 있는 휴대용 저장 디바이스에 관한 것이다.
데이터를 임의의 위치에서 또 다른 위치로 전달하기 위해 비휘발성 기반의 휴대용 저장 디바이스들("PSD")들을 사용하는 것이 수년간 급속히 증가하고 있는데, 왜냐하면 이들은 휴대가 가능하고 그 물리적 크기가 작으며, 그리고 저장 용량이 크기 때문이다. 저장 디바이스들은 다양한 디자인들을 가지고 있다. 어떤 저장 디바이스들은 "매립형"으로서 고려되는데, 그 의미는 이들이 사용자에 의해 이들과 함께 동작되는 호스트 디바이스로부터 제거될 수 없는 즉 제거되도록 의도된 것이 아님을 의미한다. 다른 저장 디바이스들은 탈착가능한 데, 그 의미는 사용자가 이들을 임의의 호스트 디바이스로부터 또 다른 호스트 디바이스로 이동시킬 수 있거나, 또는 임의의 저장 디바이스를 또 다른 저장 디바이스로 대체할 수 있는 것을 의미한다.
일반적으로 "디스크온키(Disk-on-Key)" 디바이스들로 알려진 다른 저장 디바이스들에는, 예를 들어 컴퓨터 시스템과의 연결을 위해, 범용 직렬 버스(Universal Serial Bus)("USB") 인터페이스가 제공된다. USB 인터페이스가 제공되는 플래시 저장 디바이스는 또한 USB 플래시 드라이브(USB Flash Drive), 혹은 "UFD"로서 관련 기술분야에서 알려져 있다. 멀티미디어 카드(MultiMedia Card)("MMC"), 보안 디지털(Secure Digital)("SD"), 미니SD(miniSD), 및 마이크로SD(microSD)는, 멀티미디어 플레이어(예를 들어, MP3 및 MP4 플레이어), 디지털 카메라, 컴퓨터 랩탑, 위성 위치 확인 시스템(Global Positioning System)("GPS") 디바이스, 등과 같은 다양한 호스트 디바이스들과 함께 사용되는 예시적 플래시 저장 디바이스들이다.
PSD에 있어서 일 사용의 예는 홈 엔터테인먼트용으로 영화와 같은 대용량 파일을 전달하는 것을 포함한다. "대용량 파일"은 그 크기가 예를 들어, 4 기가바이트(gigabytes)("GB") 혹은 그 이상의 크기를 갖는 파일이다. 대용량 파일을 판독하거나 기입하는 속도가 충분치 못하고 만족을 주지 못할 수 있다. 예를 들어, PSD로부터 데이터를 판독하는 속도가 일반적으로 영화 관람용으로 만족스러울 수는 있지만, 이러한 영화를 PSD 드라이브에 기입하는 속도가 상대적은 낮기 때문에 4GB 영화를 (초당 18 메가바이트("MB/s")의 전형적인 기입 속도를 사용하여) PSD에 복사(copy)하는 데는 수분(예를 들어 3-4 분)을 기다려야 하고, 이는 많은 사용자들이 불만족스러워 하는 것이다. 데이터가 플래시 메모리에 기입되는 방식(즉, 데이터가 페이지 단위로 기입되고, 다시 말해, 한 페이지 기입되고 이후 또 다른 한 페이지가 기입되고, 데이터 기입과 관련된 전압이 소정의 임계치에 대비되어 반복적으로 재점검되는 것)때문에, 용량이 큰 파일을 저장 디바이스에 기입하는 데는 시간이 많이 소요된다.
도 1은 전형적인 휴대용 저장 디바이스("PSD")(100)를 나타낸다. 휴대용 저장 디바이스(100)는 USB 커넥터(110), 저장 제어기(120), 및 저장 영역(130)을 포함하고, 이 저장 영역(130)은 두 개의 별개의 플래시 메모리 유닛들(140 및 150)을 포함한다. 저장 제어기(120)는 플래시 메모리 유닛들(140 및 150)을 단일의 통합된 저장 영역(즉, 저장 영역(130))으로서 처리하면서 데이터의 저장 영역(130)으로(부터)의 전달을 관리하며, 여기서 플래시 메모리 유닛들(140 및 150)을 단일의 통합된 저장 영역으로서 처리하는 것의 의미는 저장 제어기(120)가 단일 파일 시스템을 사용하여 플래시 메모리 유닛들(140 및 150)을 어드레싱하는 것을 의미한다. 플래시 메모리 유닛들(140 및 150) 각각은 플래시 메모리 칩, 플래시 메모리 다이 혹은 플래시 메모리 패키지일 수 있다. USB 커넥터(110)는 도 2에 예시된 바와 같은 전형적인 전기적 핀 레이아웃을 갖는다.
도 2를 참조하면, 표준 USB 커넥터들에 의해 사용가능한 4-핀 레이아웃을 도식적으로 나타낸 것이다. 연결된 호스트(도 2에서는 미도시)로부터의 전기적 에너지가 1번 핀과 4번 핀을 통해 제공되어, PSD(100)에 에너지가 공급된다. 2번 핀과 3번 핀은 전달되는 데이터에 대응하는 전기적 신호들을 전달한다.
도 1의 종래의 저장 디바이스의 아키텍처는, 용량이 작은 데이터 파일이 (파일의 용량이 작아서 이러한 파일을 전달하는데 많은 시간이 소요되지 않기 때문에) 낮은 비트 레이트를 사용하여 저장 디바이스에 혹은 저장 디바이스로부터 전달될 수 있도록 설계되었다. 그러나, 도 1의 종래의 저장 디바이스의 아키텍처는 용량이 큰 데이터 파일에 대해서는 (즉, 데이터 전달 속도 측면에서) 효율적이지 못하다. 따라서, 데이터 전달 속도가 증가된 PSD에 대한 필요성이 존재한다. 특히, 데이터 기입 속도가 증가된 PSD에 대한 필요성이 존재한다.
따라서, 개인용 컴퓨터(Personal Computer)("PC")와 같은 호스트와 데이터를 교환할 수 있는 저장 디바이스에 있어서, 제 1 모드(이 모드에서는, 저장 디바이스와 호스트 간에 상대적으로 용량이 작은 데이터 파일들이 "노멀하게(normally)"(즉, 종래의 비트 레이트로 혹은 종래의 속도로) 전달될 수 있음) 또는 제 2 모드(이 모드에서는, 저장 디바이스와 호스트 간에 보다 큰 용량의 데이터 파일들이 제 1 모드에서보다 더 높은 비트 레이트로 전달될 수 있음)에서 호스트와 데이터를 교환할 수 있는 저장 디바이스를 갖는 것은 이로울 수 있다.
다양한 실시예들이 이러한 데이터 전달을 구현하도록 설계되어 있고, 이러한 데이터 전달의 예가 본 명세서에서 제공된다. 다음의 예시적 실시예들 및 그 실시형태가 시스템, 툴, 및 방법과 관련되어 설명되고 예시되며, 이러한 시스템, 툴, 및 방법은 예시적인 것으로 본 발명의 범위를 한정하는 의미를 가지고 있지 않다.
일 실시예에서, 저장 디바이스는 데이터 파일을 전달하기 위한 두 개의 커넥터, 즉 제 1 커넥터 및 제 2 커넥터를 가질 수 있는바, 제 1 커넥터를 통해 데이터 파일은 가속화된 속도에서 전달될 수 있고, 그리고 제 2 커넥터를 통해 데이터 파일은 종래 속도에서 전달될 수 있다. 본 개시내용에 따르면, 사용자는, 적절한 커넥터에 호스트를 연결시킴으로써, 호스트로부터 저장 디바이스로 혹은 그 반대로 데이터 파일을 전달하기 위해 자신이 원하는 속도(즉, "노멀 속도(normal speed)" 혹은 "가속화된 속도(accelerated speed)")를 선택할 수 있다. 제 1 커넥터는, 가속화된 속도에서의 데이터의 전달이 용이하도록 하는 복수의 제어기들에 내부적으로 연결되어 있고, 제 2 커넥터는 노멀 속도에서의 데이터의 전달이 용이하도록 하는 제어기에 내부적으로 연결되어 있다.
또 다른 실시예에서, 저장 디바이스에 기입하기 위한 호스트 콘텐츠(예를 들어, 멀티미디어 파일)와 같은 콘텐츠를 제작(prepare)하는 방법이 제공되고, 이 방법은, 제 1 파일 시스템(즉, 호스트의 파일 시스템)을 갖는 호스트에서 저장 디바이스용의 제 2 파일 시스템(이 제 2 파일 시스템은 본 명세서에서 이후 저장 디바이스의 파일 시스템으로 언급됨)을 생성하는 단계와, 여기서 저장 디바이스는 복수의 별개의 메모리 유닛들과 복수의 제 1 제어기들(용어 "제 1 제어기들" 및 "병렬 제어기들"은 본 명세서에서 상호교환가능하게 사용될 수 있음)을 포함하며; 제 1 파일 시스템으로부터 호스트 콘텐츠를 판독하여 이 판독된 호스트 콘텐츠를 제 2 파일 시스템에 기입함으로써 호스트 콘텐츠를 제 2 파일 시스템으로 복사하는 단계와; 그리고 제 2 파일 시스템을 복수의 세그먼트들로 세그먼트화시키는 단계를 포함할 수 있으며, 복수의 세그먼트들 각각은 복수의 제 1 제어기들로 인도되는바, 즉 세그먼트들 각각은 복수의 제 1 제어기들 중 특정된(혹은 지정된 혹은 특별한) 제어기를 유일(unique)한 타겟으로 하거나, 이 특정된 제어기와 유일하게 관련되거나, 또는 이 특정된 제어기로 유일하게 인도된다.
상기 제 2 파일 시스템을 생성하는 단계는 상기 제 1 파일 시스템 내의 파일(이것은 이후 본 명세서에서 "루프 파일(loop file)"로 언급됨)에 상기 제 2 파일 시스템을 저장하는 것을 포함할 수 있고, 그리고 상기 제 2 파일 시스템을 세그먼트화시키는 단계는 제 1 파일 시스템 내의 이 루프 파일을 제 1 제어기들의 개수와 동일한 개수의 세그먼트들로 세그먼트화시키는 것을 포함하고, 여기서 각각의 세그먼트는 호스트 콘텐츠의 일부를 포함하는 제 2 파일 시스템의 일부를 갖고 있거나 포함하고 있다.
이 방법은, 예를 들어, 복수의 메모리 유닛들 중 하나 이상의 메모리 유닛들과 관련된 제 1 제어기에 의해 복수의 세그먼트들 각각을 복수의 메모리 유닛들 중 하나 이상의 메모리 유닛들에 기입함으로써, 복수의 제 1 제어기들에 의해 복수의 세그먼트들을 복수의 메모리 유닛들에 각각 기입하는 단계를 더 포함할 수 있다.
이 방법은, 저장 디바이스의 제 2 제어기에 의해, 저장 디바이스의 제 2 커넥터를 통해, 임의의 어드레스, 예를 들어 복수의 메모리 유닛들 중 하나의 메모리 유닛 내의 메모리 섹터의 어드레스로부터의 데이터를 판독하려는 판독 요청을 수신하는 단계와, 그리고 제 2 제어기에 의해, 상기 어드레스 의해 참조되는 복수의 메모리 유닛들 중 하나의 메모리 유닛 내의 저장 영역으로부터 데이터를 판독하는 단계를 더 포함할 수 있다.
상기 어드레스에 의해 참조되는 상기 저장 영역으로부터 데이터를 판독하는 단계는, (i) 저장 영역과 관련된 논리적 페이지를 결정하는 것과, (ii) 이 결정된 논리적 페이지로부터 논리적 페이지가 속한 메모리 유닛을 결정하는 것과, 그리고 (iii) 이 결정된 플래시 메모리 유닛 내의 저장 영역의 물리적 위치를 결정하는 것을 포함할 수 있다. 결정된 플래시 메모리 유닛 내의 저장 영역의 물리적 위치가 결정되면, 이 위치로부터 데이터가 판독될 수 있다.
상기 호스트 콘텐츠를 제 2 파일 시스템으로 복사하는 단계는, 제 2 파일 시스템을 제 1 파일 시스템에 마운팅(mounting)시키는 선행 단계와, 그리고 호스트 콘텐츠가 제 2 파일 시스템으로 복사된 이후에, 제 2 파일 시스템을 제 1 파일 시스템으로부터 언마운팅(unmounting)시키는 후행 단계를 포함할 수 있다.
따라서, 저장 디바이스에 기입하기 위한 호스트 콘텐츠를 제작하는 방법이 다음과 같은 제공될 수 있는바, 즉, 제 1 파일 시스템을 갖는 호스트에 저장 디바이스용의 제 2 파일 시스템을 생성하는 단계와, 저장 디바이스는 복수의 별개의 메모리 유닛들과 복수의 제어기들을 포함하며; 제 1 파일 시스템에 제 2 파일 시스템을 마운팅하는 단계와; 제 1 파일 시스템으로부터의 호스트 콘텐츠를 판독하여 이 판독된 호스트 콘텐츠를 제 2 파일 시스템에 기입함으로써 호스트 콘텐츠를 제 2 파일 시스템으로 복사하는 단계와; 제 2 파일 시스템을 제 1 파일 시스템으로부터 언마운팅시키는 단계와; 그리고 이 언마운팅된 제 2 파일 시스템을 복수의 제어기들에 각각 대응하는 복수의 세그먼트들로 세그먼트화시키는 단계를 포함하는 방법이 제공될 수 있다.
또 다른 예시적 실시예에서, 저장 디바이스가 제공된다. 이 저장 디바이스는, 복수의 별개의 메모리 유닛들로서 구현되는 비휘발성 메모리와; 제 1 커넥터(이것은 또한 이후 본 명세서에서 "래피드-액세스 커넥터"로서 언급되기도 함)와; 복수의 제 1 제어기들과, 여기서 복수의 제 1 제어기들 각각은 제 1 커넥터와 복수의 메모리 유닛들 중 하나 이상의 메모리 유닛들 각각 사이에 동작가능하게 놓여지고; 제 2 커넥터와; 그리고 제 2 커넥터와 복수의 메모리 유닛들 간의 데이터 전달을 관리하는 제 2 제어기를 포함할 수 있다.
복수의 제 1 제어기들로 각각 인도되는 복수의 세그먼트들로 세그먼트화된 파일 시스템을 호스트로부터 수신함으로써, 그리고 복수의 제 1 제어기들에 의해 복수의 메모리 유닛들에 복수의 세그먼트들을 기입함으로써, 복수의 제 1 제어기들이 제 1 커넥터와 복수의 메모리 유닛들 간의 데이터 전달을 관리할 수 있고, 이에 따라, 제 1 제어기들 각각은 각각의 세그먼트를 해당 제어기와 관련된 복수의 메모리 유닛들 중 하나 이상 메모리 유닛들에 기입한다.
또 다른 예시적 실시예에서, 제 1 제어기들 중 하나는 또한 제 2 제어기로서의 기능을 하며, 여기서 제 2 제어기로서의 기능을 또한 하는 제 1 제어기는, 어떤 커넥터(즉, 제 1 커넥터 혹은 제 2 커넥터)가 사용되느냐에 따라(즉, 저장 디바이스와 함께 동작하는 호스트에 의해 어떤 커넥터가 사용되느냐에 따라), 제 1 커넥터와 복수의 메모리 유닛들 중 하나 이상의 메모리 유닛들 각각 간의 데이터 전달을 관리하거나, 또는 제 2 커넥터와 복수의 메모리 유닛들 간의 데이터 전달을 관리한다.
또 다른 실시예에서, 제 2 제어기는 복수의 메모리 유닛들에 데이터를 기입하도록 구성되고, 그리고 제 1 제어기들은 병렬로 복수의 메모리 유닛들로부터 데이터를 동시에 판독하도록 구성된다.
저장 디바이스의 제 1 커넥터는 래피드-액세스(rapid-access)("RAC") 커넥터일 수 있고, 그리고 제 2 커넥터는 USB 메일 A-타입 커넥터(USB male A-type connector)일 수 있다. RAC 커넥터는 복수의 콘택 그룹들을 포함할 수 있고, 여기서 각각의 콘택 그룹은 제 1 제어기들 중 특정된 하나와 관련된다. 저장 디바이스 내의 비휘발성 메모리 유닛들 중 적어도 하나는 NAND 플래시 메모리일 수 있거나 NAND 플래시 메모리를 포함할 수 있다.
앞서 설명된 예시적 실시형태 및 실시예에 추가하여, 다른 실시형태 및 실시예가 도면을 참조함으로써 그리고 다음의 상세한 설명을 연구함으로써 명백하게 될 것이다.
예시적 실시예들이 도면을 참조하여 설명된다. 본 명세서에서 개시되는 실시예들은 한정적 의미가 아닌 예시적 의미를 갖도록 의도되었다. 그러나 본 개시내용은 첨부되는 도면과 함께 정독되는 경우 다음의 상세한 설명을 참조하여 보다 잘 이해될 수 있다.
도 1은 관련 기술에 따른, 휴대용 저장 디바이스이다.
도 2는 관련 기술에 따른, USB 커넥터의 핀 레이아웃이다.
도 3은 예시적 실시예에 따른, 휴대용 저장 디바이스의 블럭도이다.
도 4는 예시적 실시예에 따른, 휴대용 저장 디바이스를 위한 멀티 USB 커넥터의 핀 레이아웃이다.
도 5는 예시적 실시예에 따른, 저장 디바이스용의 파일 시스템의 제작(preparation)을 나타낸 도면이다.
도 6은 예시적 실시예에 따른, 도 5의 파일 시스템의 세그먼트들의 기입을 나타낸다.
도 7은 예시적 실시예에 따른, 호스트 콘텐츠 기입-판독 싸이클을 나타낸다.
도 8은 예시적 실시예에 따른 저장 디바이스용의 새로운 세그먼트화된 파일 시스템을 제작하는 방법을 나타낸다.
도 9a, 9b, 및 9c는 집합적으로 저장 디바이스의 파일 시스템을 호스트의 파일 시스템에 마운팅하는 것을 예시적으로 보여준다.
도 10은 예시적 실시예에 따른, 저장 디바이스에 새로운 파일 시스템을 기입하는 방법을 나타낸다.
도 11은 예시적 실시예에 따른, 저장 디바이스로부터 호스트 콘텐츠를 판독하는 방법을 나타낸다.
도 12는 또 다른 예시적 실시예에 따른, 저장 디바이스로부터 호스트 콘텐츠를 판독하기 위한 호스트 디바이스 스택을 나타낸다.
도 13은 또 다른 예시적 실시예에 따른, 호스트 콘텐츠 기입-판독 싸이클을 나타낸다.
도 14는 예시적 실시예에 따른, 호스트에서의 세그먼트화된 파일 시스템을 (재)조립하는 방법을 나타낸다.
도 15는 또 다른 예시적 실시예에 따른, 휴대용 저장 디바이스의 블럭도이다.
도 2는 관련 기술에 따른, USB 커넥터의 핀 레이아웃이다.
도 3은 예시적 실시예에 따른, 휴대용 저장 디바이스의 블럭도이다.
도 4는 예시적 실시예에 따른, 휴대용 저장 디바이스를 위한 멀티 USB 커넥터의 핀 레이아웃이다.
도 5는 예시적 실시예에 따른, 저장 디바이스용의 파일 시스템의 제작(preparation)을 나타낸 도면이다.
도 6은 예시적 실시예에 따른, 도 5의 파일 시스템의 세그먼트들의 기입을 나타낸다.
도 7은 예시적 실시예에 따른, 호스트 콘텐츠 기입-판독 싸이클을 나타낸다.
도 8은 예시적 실시예에 따른 저장 디바이스용의 새로운 세그먼트화된 파일 시스템을 제작하는 방법을 나타낸다.
도 9a, 9b, 및 9c는 집합적으로 저장 디바이스의 파일 시스템을 호스트의 파일 시스템에 마운팅하는 것을 예시적으로 보여준다.
도 10은 예시적 실시예에 따른, 저장 디바이스에 새로운 파일 시스템을 기입하는 방법을 나타낸다.
도 11은 예시적 실시예에 따른, 저장 디바이스로부터 호스트 콘텐츠를 판독하는 방법을 나타낸다.
도 12는 또 다른 예시적 실시예에 따른, 저장 디바이스로부터 호스트 콘텐츠를 판독하기 위한 호스트 디바이스 스택을 나타낸다.
도 13은 또 다른 예시적 실시예에 따른, 호스트 콘텐츠 기입-판독 싸이클을 나타낸다.
도 14는 예시적 실시예에 따른, 호스트에서의 세그먼트화된 파일 시스템을 (재)조립하는 방법을 나타낸다.
도 15는 또 다른 예시적 실시예에 따른, 휴대용 저장 디바이스의 블럭도이다.
간략하고 명확한 설명을 위해 도면에서 예시되는 요소들이 반드시 일정한 비율로 도시되지는 않았음을 이해해야 한다. 또한, 적절한 것으로 고려되는 경우, 비슷한 혹은 대응하는 혹은 유사한 요소들을 나타내기 위해 도면에서 참조 번호들이 반복될 수 있다.
다음의 설명은 예시적 실시예들의 다양한 세부사항을 제공한다. 그러나, 이러한 설명이 본 발명의 특허청구범위를 한정하도록 의도되지 않았으며, 대신 본 발명의 다양한 원리 및 그 실시 방식을 설명하도록 의도되었다.
도 3은 예시적 실시예에 따른 PSD(300)의 블럭도이다. PSD(300)는 복수의 별개의 메모리 유닛들(330, 331, 332, 333, 334, 335, 336, 및 337)로서 구현되는 비휘발성 메모리(370)를 포함한다(메모리 유닛들 330 내지 337은 "메모리 유닛 0" 내지 "메모리 유닛 7"로서 각각 지정되어 있음). "별개의 메모리 유닛"이 의미하는 바는, 제어기에 의해 제어, 혹은 처리, 혹은 관리되는 임의의 메모리 다이, 메모리 칩, 및 메모리 패키지를 의미한다.
PSD(300)는 또한 제 1 커넥터(350)(이것은 또한 래피드-액세스("RAC") 커넥터로서 본 명세서에서 언급됨), 복수의 제 1 제어기들(이것은 또한 "병렬" 제어기들로서 본 명세서에서 언급됨)(341, 342, 343, 및 344)을 포함한다(제 1 제어기들 341 내지 344는 각각 "제어기 1" 내지 "제어기 4"로 지정되어 있음). RAC 커넥터(350)는 복수의 콘택 그룹들을 포함할 수 있고, 여기서 각각의 콘택 그룹은 제 1 제어기들(341 내지 344) 중 특정된 하나와 관련되어 있다.
이러한 예시적 실시예에 따르면, 8개의 메모리 유닛들(즉, 메모리 유닛들(330 내지 337)) 및 4개의 병렬 제어기들(즉, 제 1 제어기들(341 내지 344))이 존재하고, 4개의 병렬 제어기들(341 내지 344) 각각은 RAC 커넥터(350)와 복수의 메모리 유닛들(330 내지 337) 중 각각 2개의 메모리 유닛들 사이에 기능적으로 개입되어 있다. 예를 들어 제어기(341)가 RAC 커넥터(350)와 메모리 유닛들(330 및 331) 사이에 기능적으로 개입되어 있고, 제어기(342)가 RAC 커넥터(350)와 메모리 유닛들(332 및 333) 사이에 기능적으로 개입되어 있는 등등이다. 일반적으로, 병렬 제어기들 중 하나 이상의 제어기가 RAC 커넥터와 복수의 메모리 유닛들 중 각각 하나 이상의 메모리 유닛들 사이에 기능적으로 개입되어 있을 수 있다.
병렬 제어기들(341 내지 344)은 RAC 커넥터(350)와 복수의 메모리 유닛들(330 내지 337) 간의 데이터 전달을 관리하도록 동작가능한바, 이는 RAC 커넥터(350)에 연결된 호스트(도 3에서는 미도시)로부터 저장 디바이스(300)에 의해 파일 시스템(이 파일 시스템은 복수의 파일 시스템 세그먼트들로 세그먼트화되며, 이 파일 시스템 세그먼트들이 복수의 제어기들(341 내지 342)로 각각 인도됨)을 수신함으로써, 그리고 이 파일 시스템 세그먼트들을 복수의 메모리 유닛들 중 각각 둘 이상의 메모리 유닛들에 각각 기입함으로써 행해진다. "파일 시스템 세그먼트들이 복수의 제어기들로 각각 인도됨"이 의미하는 바는, 파일 시스템 세그먼트들의 개수와 복수의 병렬 제어기들의 개수가 동일하며(도 3에서는 그 개수가 4임), 그리고 이 파일 시스템 세그먼트들 각각이, 호스트(도 3에서는 미도시)에 의해, RAC 커넥터(350)를 통해서, 지정된 제어기(이 제어기에 의해 파일 시스템 세그먼트들이 유일하게 처리됨)로 전송되는 것을 의미한다. 네 개의 예시적 제어기들(341 내지 344)에 있어서, 저장 디바이스(300)에 대한 파일 시스템은 호스트에 의해 네 개의 파일 시스템 세그먼트들로 세그먼트화되고(즉, 호스트가 RAC 커넥터(350)에 연결되는 경우), 그리고 호스트가 파일 시스템의 제 1 세그먼트(즉, 제 1 파일 시스템 세그먼트)를 병렬 제어기(341)에, 파일 시스템의 제 2 세그먼트를 병렬 제어기(342)에, 파일 시스템의 제 3 세그먼트를 제어기(343)에, 그리고 파일 시스템의 제 4 세그먼트를 제어기(344)에 동시에 전송한다. 그 다음에 각각의 병렬 제어기는 호스트로부터 자신이 수신한 파일 시스템 세그먼트를 자신과 관련된 메모리 유닛들에 기입한다.
본 개시내용에 따르면, 병렬 제어기들의 개수는 네 개가 아닐 수 있으며(즉, 네 개보다 적거나 많은 병렬 제어기들이 있을 수 있음), 복수의 별개의 메모리 유닛들의 개수는 여덟 개가 아닐 수 있으며(즉, 여덟 개보다 적거나 많은 메모리 유닛들이 있을 수 있음), 복수의 병렬 제어기들 각각이 RAC 커넥터(350)와 두 개보다 많은 다수의 메모리 유닛들 사이에 기능적으로 개입될 수 있음에 유의해야 한다. 예를 들어, 16개의 병렬 제어기들이 있을 수 있고, 16개의 병렬 제어기들 각각이 "RAC"(350)와 4개의 메모리 유닛들 사이에 기능적으로 개입될 수 있다.
PSD(300)는 또한, (도 3에 도시된 바와 같이) 표준형의 USB 커넥터이거나 혹은 비USB 커넥터(non-USB connector)일 수 있는 제 2 커넥터(310)를 포함한다. PSD(300)는 또한, 제 2 커넥터(301)와 복수의 메모리 유닛들 간의 데이터 전송을 관리하도록 동작가능한 제 2 제어기(320)를 포함한다.
메모리 유닛들(330 내지 337)은 플래시 메모리 타입(예를 들어, 이것은 표준 NAND 플래시 메모리 칩들로서 구현될 수 있음) 혹은 비플래시 타입(non-flash type)일 수 있는 비휘발성 메모리 유닛들이다. 대안적으로, 메모리 유닛들(330 내지 337) 중 적어도 하나가 플래시 메모리 타입일 수 있고, 반면에 다른 메모리 유닛들은 비플래시 타입일 수 있다. 대안적으로, 메모리 유닛들(330 내지 337) 중 적어도 하나가 비플래시 메모리 타입일 수 있고, 반면에 다른 메모리 유닛들은 플래시 타입일 수 있다.
제 1 커넥터(350), 즉 래피드 액세스 커넥터는 하나 이상의 통신 링크를 제공한다. 예를 들어, 제 1 커넥터(350)는 네 개의 별개의 USB 링크들을 포함할 수 있거나, 또는 하나의 USB 링크 및 다른 하나 이상의 비USB 링크(non-USB link)들을 포함할 수 있다. 제 2 커넥터(310)는 예를 들어, 메일 A-타입 커넥터의 USB 커넥터일 수 있다. USB 커넥터(310)의 핀 레이아웃은 도 1의 USB 커넥터(110)의 핀 레이아웃과 동일할 수 있으며, RAC 커넥터(350)는 (아래에서 설명되는) 도 4에 도시된 바와 같은 핀 레이아웃을 가질 수 있는바, 이것은 예를 들어, 네 개의 별개의 USB 인터페이스들 Dl, D2, D3, 및 D4를 가지며, 여기서 "D1"은 콘택 쌍 "D1+/D1-"를 말하는 것, "D2"는 콘택 쌍 "D2+/D2-"를 말하는 것, 등등일 수 있다. 도 4를 참조하면, RAC 커넥터(350)는 네 개의 콘택 그룹들을 포함하고, 여기서 각각의 콘택 그룹은 제 1 제어기들(341 내지 344) 중 특정된 하나의 제어기와 관련된다. 예를 들어, 콘택 그룹 D1은 제 1 제어기(341)와 관련될 수 있으며, 콘택 그룹 D2는 제 1 제어기(342)와 관련될 수 있는 등등이다. RAC 커넥터(350)가 도 4에서 도시된 핀 레이아웃을 갖는다고 하면, 네 개의 별개의 USB 인터페이스들 D1 내지 D4 각각은, 대응하는 제어기(341, 342, 343, 344)(각각의 제어기는 두 개의 메모리 유닛들을 관리함)에 연결된다. 메모리 유닛들(330 내지 337)은 동일한 저장 용량 혹은 서로 다른 저장 용량을 가질 수 있다.
제어기(320)(이것은 어떤 표준 메모리 제어기일 수 있음)는 통신 버스(325)를 통해 메모리 유닛들(330 내지 337)을 어드레싱한다. 제어기(320)는 표준 USB 호스트들(도 3에서는 미도시)과, 예를 들어, USB 메일 "A" 타입 커넥터(310)(그 핀 레이아웃은 도 2에 제시된 바와 같음)를 통해, 인터페이스(326)할 수 있다.
제어기들(341 내지 344) 각각은, 휴대용 저장 디바이스의 기술분야에서 잘 알려진 종래의 USB 플래시 드라이브 제어기와 동일한 방식으로 저장 동작들(즉, "기입", "판독", 및 "소거" 동작들)을 처리하고, 따라서 종래의 USB 플래시 드라이브 제어기일 수 있다. 제어기들(341 내지 344)은 동일한 타입일 수 있고(즉, 이들 각각은 동일한 타입의 통신 인터페이스, 예를 들어 USB 통신 인터페이스를 포함할 수 있음), 이 경우 RAC 커넥터(350)는 도 4에 제시된 핀 레이아웃과 같은 그러한 핀 레이아웃(이 예시적 핀 레이아웃은 네 개의 별개의 독립적인 USB 통신 링크들을 제공함)을 가질 수 있다. 대안적으로, 제어기들(341 내지 344) 각각은 서로 다른 타입일 수 있고(즉, 각각의 제어기가 서로 다른 타입의 통신 인터페이스를 포함할 수 있음), 이 경우 RAC 커넥터(350)는 도 4에 제시된 핀 레이아웃과는 다른 핀 레이아웃(이 핀 레이아웃은 네 개의 별개의 독립적인 서로 다른 통신 링크들을 제공함)을 가질 수 있다. 제어기들(341 내지 344) 중 적어도 하나가 USB 통신 인터페이스를 포함할 수 있다.
만약 최종 사용자가 대용량 파일(예를 들어, 4 기가바이트 파일)을 호스트로에서 저장 디바이스(300)로 다운로드하고자 한다면, 최종 사용자는 저장 디바이스(300)를 RAC 커넥터(350)를 통해 호스트(도 3에서는 미도시)에 연결시킨다. RAC 커넥터(350)를 호스트에 연결할 때 혹은 그 연결 이후에, 호스트는 병렬 제어기들(341 내지 344) 각각과 핸드쉐이크(handshake)하고, 이들 각각을 마치 이들 각각이 별개의 저장 디바이스를 소유하고 있거나 대표하는 것처럼 처리한다. 대용량 파일이 비휘발성 메모리(370)에 빠르게 기입되도록 하기 위해, 호스트는 저장 디바이스(300)에 대한 새로운 파일 시스템을 생성하고, 이 대용량 파일을 새로운 파일 시스템에 복사하고, 그 다음에, (이 복사된 대용량 파일을 갖는) 새로운 파일 시스템을 저장 디바이스(300)의 병렬 제어기들의 개수에 대응하는 개수의 파일 시스템 세그먼트들로 분할한다(즉, 저장 디바이스용의 파일 시스템이 제어기 당 하나의 파일 시스템 세그먼트로 세그먼트화됨). 마지막으로, 호스트는 각각의 병렬 제어기와 통신하고 이 각각의 병렬 제어기에 파일 시스템 세그먼트를 전송한다(이 파일 시스템 세그먼트는 해당 병렬 제어기로 인도되거나 해당 병렬 제어기를 타겟으로 함). RAC 커넥터(350)를 통해 저장 디바이스(300)에 연결된 호스트는 병렬 제어기들(341 내지 344)로부터 비휘발성 메모리(370)의 전체 저장 레이아웃을 논리적으로 "인식"하고, 그리고 이러한 인식에 근거하여 병렬 제어기들(341 내지 344) 간에 (복사된 대용량 파일을 갖고 있는) 새로운 파일 시스템을 분배한다. 파일 시스템 세그먼트들의 분할 및 분배은, 예를 들어 아래에서 제시되는 도 5, 6, 8, 및 9에서 상세히 설명된다.
도 4를 참조하면, 도 4는 예시적인 래피디 액세스 커넥터("RAC")(400)를 설명한다. D+/D- 쌍 각각은 각각의 병렬 제어기로 배선되어 있거나 혹은 각각의 병렬 제어기에 연결되어 있다. 예를 들어, 2번 핀과 3번 핀(D1+/D1- 쌍)이 제어기(341)에 연결될 수 있고, 4번 핀과 5번 핀(D2+/D2- 쌍)이 제어기(342)에 연결될 수 있는 등이다. 1번 핀과 10번 핀은 각각 PSD(300)에 에너지를 공급하기 위해 필요한 전압 및 접지 전위가 호스트로부터 공급될 수 있게 한다.
커넥터(400)와 같은 10 핀 RAC를 통해 PSD(300)에 연결된 호스트는 PSD(300)를 네 개의 별개의 USB 대용량 저장 디바이스들로서 "고려"하고, 이에 따라, 이들을 개별적으로 처리하고, 반면에, 만약 호스트가 커넥터(310)를 통해 PSD(300)에 연결된다면 호스트는 PSD(300)를 단일의 대용량 저장 디바이스로서 고려하는데, 왜냐하면 호스트가 여덟 개의 메모리 유닛들(341 내지 344) 모두를 단일의 통합된 비휘발성 메모리로서 어드레싱할 수 있기 때문이다. 파일 시스템을 구성하는 섹터들은 메모리 유닛들(341 내지 344) 전체에 걸쳐 균등하게 분배된다.
저장
디바이스용의
파일 시스템의 제작
도 5는 예시적 실시예에 따른 저장 디바이스용의 파일 시스템(500)의 제작을 나타낸다. 도 5는 도 3과 관련되어 설명될 것이다. 최종 사용자가 호스트에서 PSD(300)로 콘텐츠(예를 들어, 비디오 파일)를 다운로드하고자할 때, 최종 사용자는 자신이 PSD(300)에 다운로드하고자 하는 콘텐츠를 호스트에 "표시"하고, 호스트는 이 표시된 콘텐츠를 PSD(300)로의 기입을 위해 제작한다. 호스트는 자기 자신의 파일 시스템(본 명세서에서 "제 1 파일 시스템"으로 언급됨)을 사용함으로써 PSD(300)로의 기입을 위한 콘텐츠를 다음과 같이 제작한다. 먼저, 호스트는 PSD(300)로 전송되어 사용될 제 2 파일 시스템을 생성한다. 그 다음에, 호스트는 표시된 (호스트) 콘텐츠를 제 2 파일 시스템에 복사하는바, 이는 제 1 파일 시스템(즉, 호스트의 파일 시스템)으로부터 이 표시된 콘텐츠를 판독하고 이 판독된 콘텐츠를 제 2 파일 시스템에 기입함으로써 행해진다. 그 다음에, 호스트는 제 2 파일 시스템을 복수의 파일 시스템 세그먼트들로 세그먼트화하고, 이 복수의 세그먼트들은 복수의 병렬 제어기들(341 내지 344)로 각각 인도된다.
도 5를 참조하면, 호스트는 먼저 새로운 파일(500)(이것은 본 명세서에서 "루프 파일(loop file)"로 언급됨) 내에 빈 파일 시스템(empty file system)(520)을 생성함으로써 제 2 파일 시스템을 제작하는바, 이 새로운 파일(500)은 호스트에 의해 호스트의 파일 시스템(즉, 제 1 파일 시스템) 상에 생성된다. 호스트가 이 빈 파일 시스템(520)을 생성한 이후, 호스트는 최종 사용자에 의해 요청된 콘텐츠(즉, 표시된 콘텐츠)를 빈 파일 시스템(520)에 복사한다. 따라서, 이것은 빈 파일 시스템(520)이 사용자 요청 호스트 콘텐츠로 업데이트된다고 말할 수 있다.
제 2 파일 시스템을 PSD(300)에 전달하기 위해 호스트에 의해 생성된 루프 파일(500)은 이 파일과 관련된 아울러 이 파일의 특성을 나타내는 다른 데이터 및 정보를 포함한다. 즉, 루프 파일(500)은, 제 2 파일 시스템(520)에 추가하여, 부트 부분(boot portion)(510), 루트 디렉토리(root directory)(530), 및 파일 데이터(540)를 포함한다. 부트 부분(510)은 저장 디바이스(300)를 초기화시키는데 사용될 수 있는 부팅 데이터(booting data)를 포함한다. FAT 섹션(520)은 사용되는 FAT 시스템에 관한 정보를 포함한다. 루프 디렉토리(530)는 저장 디바이스(300)에 의해 사용될 루프 디렉토리이다. 파일 데이터는 파일 시스템 내에 포함된 실제 파일 익스텐트(file extent)들을 포함한다.
예를 들어, 파일 시스템(500)은 32개의 데이터 페이지들(데이터 페이지 #0 내지 데이터 페이지 #31로 지정됨)로 분할된다. 대용량 파일이 타겟으로 하는 저장 디바이스가 네 개의 병렬 제어기들을 포함한다고 가정하면, 호스트는 550, 560, 570, 및 580으로 지정된 네 개의 파일 시스템 세그먼트들을 제작한다.
호스트가 제 2 파일 시스템을 최종 사용자에 의해 요청된 콘텐츠로 업데이트한 이후에, 호스트는 루프 파일(500)을 550, 560, 570, 및 580으로 지정된 네 개의 파일 세그먼트들로 분할하는데, 왜냐하면, 앞서 설명된 바와 같이, PSD(300)가 네개의 병렬 제어기들을 포함하고 각각의 병렬 제어기가 하나의 파일 세그먼트를 유일하게 수신하기 때문이다. "파일 세그먼트"(예를 들어, 파일 세그먼트(550))는 세그먼트에 관련된 정보 혹은 세그먼트에 대응하는 정보를 가지고 있는 파일이다. 전체적으로, 루프 파일(500)은 비휘발성 메모리(370)의 비트별 크기(bit-wise size)와 실질적으로 동일한 비트별 크기를 갖는다. 이러한 방식으로 루프 파일(500)을 생성하는 것은, 예를 들어 리눅스 커맨드 'mkfs'를 사용함으로써 행해질 수 있다.
비휘발성 메모리(370)가 플래시 메모리라면, 호스트는 비휘발성 메모리(370)의 페이지 크기에 근거하여 루프 파일(500)을 동일한 세그먼트들로 분할한다. 플래시 메모리 분야에서, "페이지"는 어떤 최소 개수의 섹터들을 포함하는 메모리 단위이며, 이것은 플래시 메모리의 타입에 따라 다르다(즉, 이것은 페이지의 기본 크기에 따라 다르다). 예를 들어, 현재, 섹터의 크기가 512 바이트라고 하면, 2K 크기의 페이지들을 갖는 플래시 메모리는 페이지당 네 개의 섹터들을 갖는다. 페이지의 섹터들은 집합적으로 기입 및 판독된다. 플래시 메모리 분야에서 데이터는 블럭 단위로 플래시 메모리로부터 소거되고, 여기서 블럭은 수 개의 페이지들을 포함한다.
도 5에 제시된 예에서, 파일(500)은 32개의 페이지들로 분할되고, 여기서 각각의 페이지는 본래 플래시 페이지와 동일한 비트 크기를 갖는다. 실제 페이지 수는 최종 사용자에 의해 요청된 호스트 콘텐츠의 크기에 따라 다르다. 즉, 요청된 콘텐츠가 크면 클수록, 페이지의 수도 더 커진다. 세그먼트화 프로세스는, 본 예에서, 결과적으로 네 개의 파일들(즉, 550, 560, 570, 580)을 생성하는바, 이 프로세스의 마지막에서, 파일(500)이 도 5에 도시된 바와 같이 세그먼트화되도록, 두 개의 페이지들이 각각의 파일에 번갈아 저장된다.
PSD(300)의 비휘발성 메모리(370)의 비트 크기가 32개의 페이지들이고, 네 개의 병렬 제어기들(341 내지 344) 각각이 두 개의 메모리 유닛들에 동작가능하게 연결된다고 또한 가정한다. 따라서, 파일(500)은 32개의 페이지들로 분할되고, 이 32개의 페이지들은 네 개의 그룹(즉, 파일 세그먼트)들(550, 560, 570, 및 580)에 다음과 같은 방식으로 분배되는바, 즉 첫 번째 두 개의 페이지들(즉, 페이지 0 및 페이지 1)이 파일 세그먼트(550)와 관련되고, 그 다음 두 개의 페이지들(즉, 페이지 2 및 페이지 3)이 파일 세그먼트(560)와 관련되고, 그 다음 두 개의 페이지들(즉, 페이지 4 및 페이지 5)이 파일 세그먼트(570)와 관련되고, 그 다음 두 개의 페이지들(즉, 페이지 6 및 페이지 7)이 파일 세그먼트(580)와 관련되고, 그 다음 두 개의 페이지들(즉, 페이지 8 및 페이지 9)이 파일 세그먼트(550)와 관련되는 등이다. 만약 각각의 병렬 제어기가 예를 들어 네 개의 메모리 유닛들에 동작가능하게 연결된다면, 첫 번째 네 개의 페이지들(즉, 페이지들 0, 1, 2, 3)이 파일 세그먼트(550)와 관련돼야하고, 그 다음 네 개의 페이지들(즉, 페이지들 5, 6, 7, 8)이 파일 세그먼트(560)와 관련돼야하는 등이다. 이러한 세그먼트화 프로세스가 끝나면, 파일 세그먼트(550)는 페이지 0, 1, 8, 9, 16, 17, 24, 및 25를 포함하고, 파일 세그먼트(560)는 페이지 2, 3, 10, 11, 18, 19, 26, 및 27을 포함하고, 파일 세그먼트(570)는 페이지 4, 5, 12, 13, 20, 21, 28, 및 29를 포함하고, 그리고 파일 세그먼트(580)는 페이지 6, 7, 14, 15, 22, 23, 30, 및 31을 포함한다.
도 6은 예시적 실시예에 따른 도 5의 세그먼트화된 파일의 세그먼트들의 기입을 나타낸 도면이다. 도 6은 도 3 및 도 5와 관련하여 설명될 것이다. 호스트가 네 개의 파일 세그먼트들(550, 560, 570, 및 580)의 제작을 완성한 이후, 래피드 기입 프로세스가 개시될 수 있는바, 이는 호스트가 제어기들(341 내지 344)과 동시에 핸드쉐이크하고 이후 각각의 제어기에 파일 세그먼트를 전송함으로써 행해진다(이 파일 세그먼트는 해당 제어기에 대해 의도된 것이거나, 혹은 해당 제어기를 타겟으로 하는 것이거나, 혹은 해당 제어기와 관련된 것임). 앞서 설명된 바와 같이, 호스트(도 6에서는 미도시)는 제어기들(341 내지 344)을, 마치 이들이 별개의 저장 디바이스들(610, 620, 630, 및 640)을 대표하는 것처럼 개별적으로 처리한다. 즉, 호스트는, 도 6에 예시된 바와 같이, 파일 세그먼트(550)를 제어기(341)에 전송하고, 파일 세그먼트(560)를 제어기(342)에 전송하고, 파일 세그먼트(570)를 제어기(343)에 전송하고, 그리고 파일 세그먼트(580)를 제어기(344)에 전송한다. 앞서 설명된 바와 같이, 병렬 제어기들(341 내지 344) 각각은 두 개의 메모리 유닛들에 동작가능하게 연결된다. 이에 따라, 각각의 제어기들은 파일 세그먼트 내에서의 페이지들 중 반을 메모리 유닛들 중 하나에 기입하고, 페이지들 중 나머지 반을 나머지 다른 메모리 유닛에 기입한다. 예를 들어, 제어기(341)는 페이지 0, 8, 16, 및 24를 메모리 유닛(330)에 기입하고, 페이지 1, 9, 17, 및 25를 메모리 유닛(331)에 기입한다.
도 7은 예시적 실시예에 따른 파일 기입 판독 싸이클을 나타낸다. 도 7은 도 3 및 도 5와 관련되어 설명될 것이다. 단계(710)에서, 루프 파일(500)이 호스트의 파일 시스템 상에 호스트에 의해 생성되고, 이후 호스트는 루프 파일(500) 상에 저장 디바이스(300)에 대한 제 2 파일 시스템(520)을 생성하고, 제 2 파일 시스템(520)을 저장 디바이스의 최종 사용자가 저장 디바이스(300)에 다운로드하기를 원하는 콘텐츠로 업데이트하고, 그리고 이 업데이트된 제 2 파일 시스템(520)을 갖는 루프 파일(500)을 병렬 제어기들(341 내지 344)의 개수인 네 개로 세그먼트화한다(즉, 네 개의 파일들(550 내지 580)로 세그먼트화함).
단계(720)에서, 호스트는 병렬 제어기들(341 내지 344)을 사용함으로써 파일 세그먼트들(550 내지 580)을 저장 디바이스(300)에 동시에 기입한다. 요구되거나 필요한 경우, 단계(730)에서, 호스트는, 병렬 제어기들(341 내지 344)을 사용함으로써(즉, RAC 커넥터(350)를 사용함으로써), 또는 제어기(320)를 사용함으로써(즉, USB 커넥터(310)를 사용함으로써), 저장 디바이스로부터 콘텐츠를 판독할 수 있다. 따라서, 단계(730)에서, 파일이 호스트에 의해 판독된다. 호스트가 병렬 제어기들을 사용하여 저장 디바이스(300)에 콘텐츠를 기입하기 때문에(이것이 의미하는 바는, 서로 다른 병렬 제어기들에 의해 관리 혹은 제어되는 수 개의 메모리 유닛들에 콘텐츠가 분배된다는 것을 의미함), 만약 호스트가 병렬 제어기들(341 내지 344)을 사용하여 저장 디바이스(300)로부터 콘텐츠를 판독한다면, 호스트는 분배된 콘텐츠를 대응하는 병렬 제어기들을 사용하여 다양한 메모리 유닛들로부터 모음으로써 판독을 행한다.
도 8은 예시적 실시예에 따른, 저장 디바이스용의 새로운 그리고 세그먼트화된 파일 시스템을 제작하는 방법을 나타낸다. 단계(810)에서, 호스트는 자기 자신의 파일 시스템을 사용하여, 저장 디바이스를 위한 빈 파일 시스템을 생성하는바, 이 저장 디바이스에는 이 저장 디바이스의 최종 사용자에 의해 호스트 콘텐츠(예를 들어, 멀티미디어 파일)가 다운로드된다. 즉, 호스트는 자기 자신의 파일 시스템 상에 빈 저장 디바이스의 파일 시스템을 생성하고, 마운팅-언마운팅 매커니즘(mounting-unmounting mechanism)을 사용하여 이 빈 저장 디바이스의 파일 시스템을 호스트 콘텐츠를 업데이트한다. 이 마운팅-언마운팅 매커니즘이 사용되는 이유는, 호스트가 호스트의 디렉토리 트리에 의해 참조되는(즉, 액세스될 수 있는) 파일들(파일 시스템들을 포함함)만을 관리(즉, 생성, 이동, 업데이트 등)할 수 있기때문이다. 이것이 의미하는 바는, 호스트는, 저장 디바이스의 파일 시스템이 호스트의 파일 시스템에 논리적으로 링크(즉, "마운팅")되거나 혹은 호스트의 파일 시스템의 일부가 된 이후에만, 저장 디바이스의 파일 시스템을 호스트 콘텐츠로 업데이트할 수 있다는 것을 의미한다.
루프 파일의
마운팅
및
언마운팅
"마운팅"은 추가적인 파일 시스템이 컴퓨터의 현재 액세스가능한 파일 시스템에 논리적으로 결합 또는 연결되는 프로세스이다. 파일 시스템은 컴퓨터 혹은 저장 매체들 상에 파일들을 조직화하는데 사용되는 디렉토리들의 계층 구조(이것은 또한 디렉토리 트리(directory tree)로도 언급됨)이다. 리눅스, 맥OS(MacOS), 또는 다른 유닉스형 운영 체계를 실행하는 컴퓨터들에 있어서, 디렉토리들은 루트 디렉토리에서 시작하고, 이 루트 디렉토리는 그 시스템 상의 다른 모든 디렉토리들 및 파일들을 포함하는 디렉토리이다. "현재" 액세스가능한 파일 시스템은 소정의 시간에 컴퓨터 상에서 액세스될 수 있는 파일 시스템이다.
"마운팅 포인트"는 추가적인 파일 시스템이 마운팅되는 현재 액세스가능한 파일 시스템에서의 디렉토리(일반적으로는 빈 디렉토리임)다. 마운팅 포인트는 부가되는 디렉토리 트리의 루트 디렉토리가 되고, 그리고 이 부가되는 디렉토리 트리는 그 마운팅된 디렉토리(즉, 자신의 마운팅 포인트)로부터 액세스가능하게 된다. 유닉스형 시스템에서, 마운팅 포인트는 마운팅된 파일 시스템이 나타나는 운영 체계의 디렉토리 구조에서의 위치이다. 마운팅된 디바이스와 파일 시스템의 나머지 간의 연결 혹은 링크를 제거하는 것이 "언마운팅(unmounting)"으로 언급된다.
루프 디바이스(
Loop
device
)
유닉스형 운영 체계에서, "루프 디바이스(loop device)"는, 의사 디바이스(pseudo-device)로서 액세스가능한 파일을 만드는 의사 디바이스이다. 루프 디바이스들은 정규 파일을 "디바이스"로서 볼 수 있게 하기 때문에, 이들은 전체 파일 시스템을 포함하는 이러한 정규 파일들을 마운팅할 수 있게 한다. 파일 시스템을 포함하는 파일을 이러한 루프 마운팅을 통해 마운팅하는 것은, 그 파일 시스템에서의 파일들을 마운팅 포인트 디렉토리에 위치한 정규 파일들로서 액세스가능하게 한다.
단계(820)에서, 저장 디바이스의 파일 시스템은 포맷되고, 그리고 단계(830)에서, 이 포맷된 저장 디바이스의 파일 시스템은 호스트의 파일 시스템에 마운팅되어 호스트가 이것을 호스트 콘텐츠로 업데이트할 수 있게 한다. 단계(830)가 필요한 이유는 앞서 설명된 바와 같이, 단지 저장 디바이스의 파일 시스템이 호스트의 파일 시스템에 논리적으로 링크(즉, 마운팅)된 이후에만, 호스트가 저장 디바이스의 파일 시스템을 콘텐츠로 업데이트할 수 있기 때문이다.
단계(840)에서, 호스트는 콘텐츠를 저장 디바이스의 파일 시스템에 복사하고, 그리고 이러한 호스트 콘텐츠를 저장 디바이스의 파일 시스템에 복사한 이후에, 단계(850)에서, 저장 디바이스의 파일 시스템은 호스트의 파일 시스템으로부터 언마운팅된다. 단계(860)에서, 언마운팅된 저장 디바이스의 파일 시스템은 앞서 설명된 바와 같이 필요에 따라 많은 세그먼트들로 분할된다.
도 9a, 9b, 및 9c는 호스트의 파일 시스템 상에 저장 디바이스의 파일 시스템을 마운팅하는 것을 보여준다. 도 9a는 저장 디바이스의 파일 시스템이 마운팅될 예시적인 호스트의 파일 시스템(900)을 보여준다. 예를 들어, 호스트의 파일 시스템(900)은 다섯 개의 데이터 파일들("Fl", "F2", "F3", "F4", 및 "F5"로 지정되어 있음)을 포함한다. 도 9b는 호스트가 저장 디바이스로 전송하려는 예시적인 저장 디바이스의 파일 시스템(910)을 나타낸다. 예를 들어, 저장 디바이스의 파일 시스템(910)은 하나의 데이터 파일("F11"로 지정되어 있음)을 포함한다.
선행 단계, 즉 저장 디바이스의 파일 시스템(910)이 호스트의 파일 시스템(900)에 마운팅되기 이전의 단계는, 루프 디바이스로서의 역할을 하는 루프 파일(920)에 저장 디바이스의 파일 시스템(910)을 저장하는 것이다. 도 9c는 도 9의 호스트의 파일 시스템(900)에 부가 혹은 "마운팅"된 루프 파일(920)을 보여준다. 루프 파일(920)을 루프 디바이스처럼 처리함으로써, 호스트는 저장 디바이스의 파일 시스템(910)을 콘텐츠(930)로 업데이트할 수 있는데, 이는 마치 루프 파일(920)이 물리적 디바이스인 것처럼, 루프 파일(920)에 콘텐츠(930)를 "전송"함으로써 행해진다.
도 10은 예시적 실시예에 따른 새로운 파일 시스템을 저장 디바이스에 기입하는 방법을 나타낸다. 도 10은 도 3 및 도 5과 관련되어 설명될 것이다. 루프 파일(500)의 세그먼트화 이후 래피드 기입 프로세스가 시작될 수 있다. 단계(1010)에서, 래피드-액세스 커넥터(530)가 호스트(도 3 및 도 5에서는 미도시)에 연결된다.
도 6과 함께 이전에 설명된 바와 같이, 저장 디바이스(300)는 호스트에 대해 네 개의 별개의 물리적 USB 대용량 저장 디바이스들(610, 620, 630, 및 640)로서 나타난다. 따라서, 단계(1020)에서 호스트는 저장 디바이스(300) 내에서 자신이 식별한 USB 저장 디바이스들을 나열(enumerate)한다. 저장 디바이스(300)가 적절하게 마운팅되었음(즉, 파일 세그먼트들의 수가 병렬 제어기들의 수와 동일함)을 확인하기 위해, 단계(1030)에서 호스트에 의해 USB 저장 디바이스들의 수가 예측된 수 n인지 여부가 점검된다(여기서 "n"은 병렬 제어기들의 개수로, 도 3 및 도 6에서 n = 4이다). 만약 USB 저장 디바이스들의 수가 예측된 수 n이라면(단계(1030)에서 "예"로 표기됨), 세그먼트들이 외관상 별개의 n개의 저장 디바이스들에 동시에 로데이터(raw data)로서 기입되는 바, 즉, 개개의 USB 저장 디바이스들에 대해 어떠한 파일 시스템도 제작되지 않는다. 즉, (n개의 세그먼트들 중) 세그먼트 1이 n개의 병렬 제어기들 중 제어기 1에 기입되고(1050으로 표시됨), 세그먼트 2가 제어기 2에 기입되고(1060으로 표시됨), ..., 그리고 세그먼트 n이 제어기 n에 기입된다(1070으로 표시됨).
도 11은 예시적 실시예에 따른 저장 디바이스로부터의 호스트 콘텐츠를 판독하는 방법을 나타낸다. 도 11이 도 3 및 도 6과 관련되어 설명될 것이다. 도 3의 커넥터(310) 및 제어기(320)가 비휘발성 메모리(370)로부터 데이터를 판독하기 위해 사용된다. 제어기(320)는, 도 5에 제시된 바와 동일한 논리적 페이지들의 레이아웃을 사용하여, 도 5에서 설명된 동일한 논리적 페이지 레이아웃에 따라 페이지들을 논리적으로 맵핑시킴으로써, 여덟 개의 메모리 유닛들(330 내지 337) 모두를 직접 판독할 수 있다. 비휘발성 메모리(370) 내에서의 특정 메모리 페이지 P 상의 섹터 S를 판독하려는 판독 커맨드를 저장 디바이스(300)가 호스트로부터 수신할 때, 제어기(320)는 아래 설명되는 바와 같이 그 관련 메모리의 물리적 어드레스를 계산한다.
단계(1110)에서, 제어기(320)는 아래의 공식 (1)을 사용하여 섹터 S가 있는 논리적 페이지 P를 계산한다.
여기서, S는 섹터 번호, Ps는 페이지 크기, 그리고 Ss는 섹터의 크기이다.
예를 들어, 페이지 크기(Ps)가 2048 바이트이고, 섹터 크기(Ss)가 512 바이트이며, S=14라고 하면, 공식 (1)을 사용하여, S=14와 관련된 논리적 페이지 P는 다음과 같다.
섹터 #0에서 시작하는 경우, "P=3.5"가 의미하는 것은, (잉여값 ".5"를 잘라내거나 버린 이후에) 요청된 섹터(즉, 섹터 #14)가, 섹터 #14를 판독하고자 하는 판독 요청을 수신한 제어기와 관련된 메모리 유닛 상에서 네 번째 논리적 페이지 상에 상주함을 의미한다.
단계(1120)에서, 제어기(320)는 아래의 공식 (2)를 사용함으로써 섹터가 상주하는 메모리 유닛(Memory Unit)(MU)을 계산한다.
여기서 P는 공식 (1)을 사용하여 획득된 논리적 페이지이고, Ut는 비휘발성 메모리(370)가 포함하는 메모리 유닛들의 총 개수이다. 앞서의 예에 계속되어, 만약 논리적 페이지 P가 3이라면, 즉 P=3이고, 전체 여덟(8) 개의 메모리 유닛들이 있다면, 공식 (2)를 사용하여 메모리 유닛(MU)은 다음과 같다.
MU #0에서 시작하는 경우, "MU=O"이 의미하는 것은 섹터 14가 메모리 유닛 0 상에 상주하는 것을 의미한다.
단계(1130)에서, 제어기(320)는 아래의 공식 (3)을 사용함으로써 메모리 유닛(MU) 내의 논리적 어드레스 Al를 계산한다.
앞서의 예에 계속하여(즉, P=3 및 Ut=8), 그리고 공식 (3)을 사용하여, S=14와 관련된 논리적 페이지는 다음과 같다.
그 다음에, 단계(1140)에서, 제어기는 플래시 메모리 유닛들의 본래 프로토콜을 사용함으로써, 대응하는(즉, 계산된) 플래시 메모리 유닛으로부터 물리적 페이지를 페치한다.
저장 관리의 기술분야에서 통상의 기술을 가진 자가 이해할 수 있는 것으로서, 페이지의 논리적 어드레스는, 예를 들어 특정 메모리 기술(예를 들어, 플래시 기술, 이를 테면 NAND 플래시 기술)에 대해 적합한, 논리적 어드레스 대 물리적 어드레스 변환 테이블 혹은 다른 메커니즘을 사용함으로써, 물리적 페이지 어드레스와 관련될 수 있다.
도 11이 도 3의 제어기(310)와 함께 설명되었다. 그러나, 만약 저장 디바이스가 RAC 커넥터(350)를 사용하여 호스트에 연결된다면(즉, 병렬 제어기들(341 내지 344)이 사용된다면), 호스트는 도 11에 제시된 방법과 유사한 방법을 사용하는데, 이는 도 12와 함께 아래에서 설명되는 바와 같다.
도 12는 또 다른 예시적 실시예에 따른 저장 디바이스로부터 호스트 콘텐츠를 판독하는 방법을 구현한 호스트 디바이스 스택(1205)이다. 저장 디바이스로부터 콘텐츠를 판독할 수 있는 임의의 호스트 애플리케이션일 수 있는 호스트 애플리케이션(1210)이 호스트의 파일 시스템 드라이버(1220)와 인터페이스를 행한다. 윈도우에서, 이것은 CreateFile()과 같은 콜(call)들을 사용함으로써, 혹은 윈도우 익스플로러를 통해 행해진다. 리눅스에서, 이것은 open() 혹은 creat()와 같은 표준 POSIX 파일 인터페이스 콜들을 사용함으로써 행해진다. 호스트 애플리케이션에 대해, 인터페이스(1215)는 운영 체계 환경의 표준 부분을 나타낸다.
파일 시스템 드라이버(1220)는 호스트(1205)의 물리적 인터페이스 드라이버들 위에 논리적으로 상주하고, 애플리케이션과 대응하는 하드웨어 컴포넌트(예를 들어, 커넥터, 플래시 메모리, 하드 드라이브 등) 간의 인터페이스를 행한다. 예를 들어, 만약 애플리케이션이 이를테면 하드 드라이브 상에 상주하는 파일을 판독할 필요가 있다면, 운영 체계는 드라이버들의 스택을 사용함으로써 대응하는 하드웨어 컴포넌트(예를 들어, 하드 드라이브)에 판독 요청을 중계한다. 파일 시스템 드라이버(122)는 저장 디바이스의 래피드 액세스 커넥터(RAC)를 통해 파일들을 투명하게 판독 및 기입한다. 도 12가 볼륨 드라이버(volume driver)(1230)를 사용하는 윈도우 드라이버 스택을 예시하고 있지만, 동일한 개념이 마찬가지로, 필요한 부분만 약간 수정하여 다른 운영 체계 환경에 응용될 수 있다.
볼륨 드라이버(1230)는 도 11에 예시된 알고리즘을 포함하고 사용한다. "볼륨(volume)"이 의미하는 바는 파일 시스템을 가질 수 있는 순차적 블럭들의 세트(예를 들어, 섹터들, 클러스터들 등의 세트)를 의미한다. 앞서 공식 (1)을 사용하여 계산된 바와 같은, 결과적인 페이지 번호 P는 저장 인터페이스들(1232, 1234, 1236, 및 1238)로부터 저장 인터페이스를 선택하는데 사용된다. 저장 인터페이스들(1232 내지 1238)은 USB 드라이버들(1242 내지 1248)과 동작가능하게 각각 관련된다. 따라서, (저장 인터페이스(1232)로 도시된) 저장 인터페이스들(P0 및 P1)은 (1242로 표시된) USB 드라이버-1에 대한 판독 요청들을 라우팅시키는바, 이것은 RAC(300) 상에서 1번, 2번, 3번 및 10번 핀으로 맵핑시킨다. (저장 인터페이스(1234)로 도시된) 저장 인터페이스들(P2 및 P3)은 (1244로 표시된) USB 드라이버-2에 대한 판독 요청들을 라우팅시키는바, 이것은 RAC 커넥터(100) 상에서 1번, 4번, 5번 및 10번 핀으로 맵핑시키는 등이다. 볼륨 드라이버(1230)는 섹터 판독 요청 및 기입 요청을 추출하여 파일 시스템 드라이버(1220)에 대해 단일의 대용량 저장 인터페이스로서 동작한다. 달리 말하면, 고레벨 애플리케이션들이 저장 디바이스의 RAC를 네 개의 별개의 인터페이스들이 아닌 단일의 인터페이스로서 처리할 수 있다. 이것이 행해질 수 있는 이유는 볼륨 드라이버(1230)가 호스트에 대해 단일 볼륨으로서 네 개의 USB 드라이버들(이들은 네 개의 USB 저장 디바이스들을 "위해서" 동작하거나 대표함)을 제공하기 때문이다.
도 13은 또 다른 예시적 실시예에 따른 호스트 콘텐츠 기입 판독 싸이클을 나타낸다. 도 13은 도3과 관련하여 설명될 것이다. 단계(1310)에서, 호스트는 저장 디바이스(300)에 대한 파일 시스템을 생성하고, 이 파일 시스템을 저장 디바이스의 최종 사용자가 저장 디바이스(300)에 다운로드하기를 원하는 호스트 콘텐츠로 업데이트한다. 단계(1320)에서, 호스트는 제어기(320)를 사용하여 저장 디바이스(300)에 파일 시스템을 기입한다. 제어기(320)는 파일 시스템을 병렬 메모리 유닛들의 개수와 동일한 개수의 세그먼트들로 세그먼트화시키고(도 3에서는 여덟 개의 세그먼트들로 세그먼트화됨), 그리고 각각의 세그먼트를 대응하는 메모리 유닛에 기입한다.
요구되거나 필요한 경우, 단계(1330)에서, 저장 디바이스(300)(혹은 또 다른 호스트)에 콘텐츠를 저장한 호스트가, 병렬 제어기들(341 내지 344)을 사용함으로써(즉, RAC 커넥터(350)를 사용함으로써), 혹은 제어기(320)를 사용함으로써(즉, USB 커넥터(310)를 사용함으로써), 저장 디바이스(300)로부터 콘텐츠를 판독할 수 있다. 저장 디바이스(300)에 기입된 호스트 콘텐츠가 수 개의 메모리 유닛들에 분배되어 있기 때문에, 호스트는 제어기들(341 내지 344)을 사용하여 저장 디바이스(300)로부터 호스트 콘텐츠를 판독하여, 다양한 파일 시스템 세그먼트들을 모음으로써 이 분배된 파일 시스템을 재조립할 수 있다.
도 14는 예시적 실시예에 따른, 세그먼트화된 파일 시스템을 호스트에서 조립하는 방법을 나타낸다. 단계(1410)에서, 새로운 루프 파일 시스템이 호스트 상에 할당되는 바, 그 크기는 저장 디바이스 상에서의 저장 공간의 크기와 동일하다. 단계(1420)에서, 세그먼트화된 파일 시스템의 세그먼트들은 루프 파일 시스템 내에서의 소정의 오프셋들까지 메모리 유닛들로부터 동시에 판독된다. 예를 들어, 만약 파일 시스템이 도 5에 예시된 바와 같이 분할된다면, 섹터 0 및 1이 첫 번째 제어기로부터 판독되어 루프 파일 시스템 내에서 오프셋 0 및 1에 배치되며, 그리고 섹터 2 및 3이 두 번째 제어기로부터 판독되고 루프 파일 시스템 내에서 오프셋 2 및 3에 배치되는 등이다(루프 파일 시스템은 이때 마운팅되지 않음). 단계(1430)에서, 루프 파일 시스템이 마운팅되고, 단계(1440)에서 데이터가 루프 파일 시스템으로부터 판독된다.
도 15는 또 다른 예시적 실시예에 따른 휴대용 저장 디바이스(1500)의 블럭도이다. 휴대용 저장 디바이스(1500)는 휴대용 저장 디바이스(300)와 다른데, 그 다른 점은 저장 디바이스(300)의 제 1 제어기들 중 하나의 제어기(예를 들어, 저장 디바이스(300)의 제어기(341))가 도 3의 제 2 제어기(320)의 기능을 또한 수행한다는 점이다. 제 2 제어기의 태스크들을 수행하는 제 1 제어기는 참조 번호 1520으로 참조된다.
제 1 제어기(1520)는 한 번은 제 1 제어기로서의 역할을 할 수 있고, 또 다른 한번은 제 2 제어기로서의 역할을 할 수 있는바, 이것은 제 1 제어기(혹은 제 2 제어기)(1520)가 연결 신호를 커넥터(1510)로부터 수신하는지 혹은 RAC 커넥터(1550)로부터 수신하는지에 따라 달라진다. 만약 저장 디바이스(1500)가 커넥터(1510)를 통해 호스트에 연결된다면, 커넥터(1510)는 대응하는 신호를 제어기(1520)에 전송하고, 이 신호에 응답하여 제어기(1520)는 제 2 제어기(320)로서의 기능을 수행한다. 만약 저장 디바이스(1500)가 커넥터(1550)를 통해 호스트에 연결된다면, 커넥터(1550)는 대응하는 신호를 제어기(1520)에 전송하고, 이 신호에 응답하여 제어기(1520)는 제 1 제어기(341)로서의 기능을 수행한다.
본 명세서에서 사용되는 단수적 표현 및 "임의의"라는 표현은 문맥에 따라 내용상 하나 혹은 이보다 많음(즉, 적어도 하나)을 말하는 것이다. 예를 들어, 문맥에 따라 "요소" 혹은 "임의의 요소"는 하나의 요소 혹은 하나보다 많은 요소를 의미할 수 있다. 본 명세서에서 사용되는 용어 "포함한다"는 어구 "포함하지만 이러한 것에만 한정되는 것은 아니다"라는 의미를 가지며, 서로 상호교환가능하게 사용된다. 본 명세서에서 사용되는 용어 "또는", "혹은", "그리고", "및"은, 문맥상 명확히 다르게 표시하지 않는다면, 용어 "그리고/또는", "및/또는"의 의미를 가지면, 서로 상호교환가능하게 사용된다. 본 명세서에서 사용되는 용어 "~와 같은"은 어구 "~와 같은 하지만 이러한 것에만 한정되지는 않는"의 의미를 가지면, 서로 상호교환가능하게 사용된다.
따라서, 본 발명의 예시적 실시예들을 설명함으로써, 본 발명의 기술분야에서 숙련된 기술을 갖는 자들에게는 명백해지는 것으로서, 이 개시되는 실시예들은 본 발명의 범위 내에서 수정될 수 있는 것이다. 따라서, 다른 실시예들은 더 많은 모듈, 더 적은 모듈, 그리고/또는 기능적으로 등가인 모듈을 포함할 수 있다. 본 개시내용은 다양한 타입의 대용량 저장 디바이스, 예들 들어, SD 구동 플래시 메모리 카드, 플래시 저장 디바이스, 비-플래시 저장 디바이스 등에 관한 것이며, 다양한 데이터 판독-기입 속도에 관한 것이다. 따라서, 다음과 같은 본 발명의 특허청구범위는 본 명세서에서 개시되는 것에 의해 한정되지 않는다.
Claims (16)
- 저장 디바이스로서,
(a) 복수의 별개(discrete)의 메모리 유닛들로서 구현되는 비휘발성 메모리와;
(b) 제 1 커넥터와;
(c) 복수의 제 1 제어기들과, 여기서 상기 복수의 제 1 제어기들 각각은 상기 제 1 커넥터와 상기 복수의 메모리 유닛들 중 각각 하나 이상의 메모리 유닛들 사이에 동작가능하게 개입되어 있고;
(d) 제 2 커넥터와; 그리고
(e) 상기 제 2 커넥터와 상기 복수의 메모리 유닛들 간의 데이터 전달을 관리하도록 동작가능한 제 2 제어기를 포함하여 구성되며,
여기서, (i) 복수의 세그먼트들로 세그먼트화된 파일 시스템을 상기 저장 다비이스에 의해 호스트로부터 수신함으로써, 그리고 (ii) 상기 복수의 제 1 제어기들에 의해 상기 복수의 메모리 유닛들에 상기 세그먼트들을 기입함으로써, 상기 복수의 제 1 제어기들은 상기 제 1 커넥터와 상기 복수의 메모리 유닛들 간의 데이터 전달을 관리하도록 동작가능하며, 상기 복수의 세그먼트들 각각은 상기 복수의 제 1 제어기들 중 특정된 하나의 제어기와 유일(unique)하게 관련되고, 상기 제 1 제어기들 각각은 상기 세그먼트들 각각을 해당 제어기와 관련된 상기 복수의 메모리 유닛들 중 상기 하나 이상 메모리 유닛들에 기입하는 것을 특징으로 하는 저장 디바이스. - 제1항에 있어서,
상기 제 2 제어기는, 상기 파일 시스템을 세그먼트화시켜 상기 세그먼트들을 상기 복수의 메모리 유닛들에 기입하도록 되어 있으며, 여기서, 상기 복수의 제 1 제어기들은 데이터 판독 요청을 수신하는 것에 응답하여 상기 세그먼트들을 재조립(reassemble)하도록 되어 있는 것을 특징으로 하는 저장 디바이스. - 제1항에 있어서,
상기 복수의 제 1 제어기들 중 하나의 제어기는 상기 제 2 제어기로서의 기능을 수행하도록 되어 있는 것을 특징으로 하는 저장 디바이스. - 제1항에 있어서,
상기 제 1 커넥터는 래피드 액세스 커넥터(rapid-access connector)이고, 상기 제 2 커넥터는 USB 메일 A 타입 커넥터(USB male A-type connector)인 것을 특징으로 하는 저장 디바이스. - 제1항에 있어서,
상기 비휘발성 메모리 유닛들 중 적어도 하나의 메모리 유닛은 NAND 플래시 메모리 디바이스이거나 NAND 플래시 메모리 디바이스를 포함하는 것을 특징으로 하는 저장 디바이스. - 저장 디바이스에 기입하기 위한 콘텐츠를 제작(prepare)하는 방법으로서,
(a) 제 1 파일 시스템을 갖는 호스트에서 저장 디바이스용의 제 2 파일 시스템을 생성하는 단계와, 상기 저장 디바이스는 복수의 메모리 유닛들과 복수의 제 1 제어기들을 포함하며;
(b) 상기 제 1 파일 시스템으로부터의 호스트 콘텐츠를 상기 제 2 파일 시스템으로 복사(copy)하는 단계와;
(c) 상기 제 2 파일 시스템을 복수의 세그먼트들로 세그먼트화시키는 단계를 포함하여 구성되며,
상기 복수의 세그먼트들 각각은 상기 복수의 제 1 제어기들 중 특정된 하나의 제어기와 유일하게 관련되는 것을 특징으로 하는 콘텐츠 제작 방법. - 제6항에 있어서,
상기 제 2 파일 시스템을 생성하는 단계는 상기 제 1 파일 시스템 내의 파일에 상기 제 2 파일 시스템을 저장하는 것을 포함하는 것을 특징으로 하는 콘텐츠 제작 방법. - 제7항에 있어서,
상기 제 2 파일 시스템을 세그먼트화시키는 단계는 상기 제 1 파일 시스템 내의 상기 파일을 상기 제 1 제어기들의 개수와 동일한 개수의 세그먼트들로 세그먼트화시키는 것을 포함하는 것을 특징으로 하는 콘텐츠 제작 방법. - 제6항에 있어서,
(d) 상기 복수의 제 1 제어기들에 의해 상기 복수의 세그먼트들을 상기 복수의 메모리 유닛들에 각각 기입하는 단계를 더 포함하는 것을 특징으로 하는 콘텐츠 제작 방법. - 제6항에 있어서,
상기 제 2 파일 시스템을 세그먼트화시키는 단계는 상기 저장 디바이스의 제 2 제어기에 의해 수행되며, 상기 제 2 제어기는 상기 복수의 메모리 유닛들 중 특정된 하나의 메모리 유닛에 각각의 세그먼트를 기입하는 것을 특징으로 하는 콘텐츠 제작 방법. - 제10항에 있어서,
상기 제 1 제어기들 중 하나의 제어기는 상기 제 2 제어기로서의 기능을 수행하도록 되어 있는 것을 특징으로 하는 콘텐츠 제작 방법. - 제6항에 있어서,
(d) 상기 저장 디바이스로부터의 데이터 판독 요청을 수신하는 것에 응답하여 상기 복수의 제 1 제어기들에 의해 상기 세그먼트들을 재조립하는 단계를 더 포함하는 것을 특징으로 하는 콘텐츠 제작 방법. - 제6항에 있어서,
(d) 상기 복수의 메모리 유닛들 중 하나 이상의 메모리 유닛에, 상기 복수의 메모리 유닛들 중 상기 하나 이상의 메모리 유닛과 관련된 제 1 제어기에 의해, 상기 복수의 세그먼트들 각각을 기입하는 단계를 더 포함하는 것을 특징으로 하는 콘텐츠 제작 방법. - 제13항에 있어서,
(e) 상기 저장 디바이스의 제 2 제어기에 의해, 상기 저장 디바이스의 제 2 커넥터를 통해, 임의의 어드레스로부터 데이터를 판독하려는 판독 요청을 수신하는 단계와; 그리고
(f) 상기 제 2 제어기에 의해, 상기 복수의 메모리 유닛들 중 하나의 메모리 유닛 내의 저장 영역으로부터 상기 데이터를 판독하는 단계를 더 포함하며,
상기 저장 영역은 상기 어드레스에 의해 참조되는 것을 특징으로 하는 콘텐츠 제작 방법. - 제14항에 있어서,
상기 어드레스에 의해 참조되는 상기 저장 영역으로부터 상기 데이터를 판독하는 단계는, (i) 상기 저장 영역과 관련된 논리적 페이지를 결정하는 것과, (ii) 상기 결정된 논리적 페이지로부터 상기 논리적 페이지가 속한 메모리 유닛을 결정하는 것과, 그리고 (iii) 상기 결정된 메모리 유닛 내의 상기 저장 영역의 위치를 결정하는 것을 포함하는 것을 특징으로 하는 콘텐츠 제작 방법. - 제6항에 있어서,
상기 호스트 콘텐츠를 상기 제 2 파일 시스템으로 복사하는 단계는, 상기 제 2 파일 시스템을 상기 제 1 파일 시스템에 마운팅(mounting)하는 선행 단계 및 상기 제 2 파일 시스템을 상기 제 1 파일 시스템으로부터 언마운팅(unmounting)하는 후행 단계를 포함하는 것을 특징으로 하는 콘텐츠 제작 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/199,023 US8281062B2 (en) | 2008-08-27 | 2008-08-27 | Portable storage device supporting file segmentation and multiple transfer rates |
US12/199,023 | 2008-08-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20110056276A true KR20110056276A (ko) | 2011-05-26 |
Family
ID=40983503
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020117002195A KR20110056276A (ko) | 2008-08-27 | 2009-07-16 | 액세스 속도가 가속화된 휴대용 저장 디바이스 |
Country Status (6)
Country | Link |
---|---|
US (2) | US8281062B2 (ko) |
EP (1) | EP2318912A1 (ko) |
KR (1) | KR20110056276A (ko) |
CN (1) | CN102105856B (ko) |
TW (1) | TW201013413A (ko) |
WO (1) | WO2010024978A1 (ko) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009118212A (ja) * | 2007-11-07 | 2009-05-28 | Seiko Epson Corp | 画像読取装置および画像読取方法 |
US8560524B2 (en) * | 2008-10-30 | 2013-10-15 | Hewlett-Packard Development Company, L.P. | Allocating priorities to prevent deadlocks in a storage system |
US8874627B2 (en) * | 2008-10-30 | 2014-10-28 | Hewlett-Packard Development Company, L.P. | Enumerating metadata in file system directories |
US9176963B2 (en) * | 2008-10-30 | 2015-11-03 | Hewlett-Packard Development Company, L.P. | Managing counters in a distributed file system |
US8244870B2 (en) * | 2008-11-18 | 2012-08-14 | Raytheon Company | Distributing traffic to multiple GNS devices |
WO2011026530A1 (en) * | 2009-09-07 | 2011-03-10 | Tomtom International B.V. | Navigation apparatus and method of supporting hands-free voice communication |
JP2011070365A (ja) * | 2009-09-25 | 2011-04-07 | Toshiba Corp | メモリシステム |
US10496608B2 (en) * | 2009-10-28 | 2019-12-03 | Sandisk Il Ltd. | Synchronizing changes in a file system which are initiated by a storage device and a host device |
US8443263B2 (en) | 2009-12-30 | 2013-05-14 | Sandisk Technologies Inc. | Method and controller for performing a copy-back operation |
US8595411B2 (en) | 2009-12-30 | 2013-11-26 | Sandisk Technologies Inc. | Method and controller for performing a sequence of commands |
US20120151126A1 (en) * | 2010-12-10 | 2012-06-14 | Texas Instruments Incorporated | Flash drive with multiple connectors |
CN102750159B (zh) * | 2011-04-21 | 2017-08-25 | 中国银联股份有限公司 | 一种用于文件装载的方法和装置 |
US20120303854A1 (en) * | 2011-05-24 | 2012-11-29 | Raidundant LLC | Modular interface-independent storage solution system |
KR101231599B1 (ko) * | 2012-08-20 | 2013-02-08 | 장애인표준사업장비클시스템 주식회사 | 충전포트를 구비한 차량용 데이터통신 모듈 |
US9959277B2 (en) * | 2012-12-27 | 2018-05-01 | Echostar Technologies Llc | Systems and methods for managing files in a computer system by segmenting files |
US9575974B2 (en) * | 2013-10-23 | 2017-02-21 | Netapp, Inc. | Distributed file system gateway |
US9507800B2 (en) | 2013-10-23 | 2016-11-29 | Netapp, Inc. | Data management in distributed file systems |
CN104952476B (zh) * | 2015-07-08 | 2017-07-25 | 中孚信息股份有限公司 | 一种可靠移动存储介质及实现方法 |
JP6594105B2 (ja) * | 2015-08-21 | 2019-10-23 | キヤノン株式会社 | 電子機器、アクセサリー機器、その制御方法、および制御プログラム |
US10114550B2 (en) | 2016-01-07 | 2018-10-30 | Samsung Electronics Co., Ltd. | Data storage device and data processing system including the data storage device |
JP2019215662A (ja) * | 2018-06-12 | 2019-12-19 | 株式会社日立製作所 | 不揮発性メモリデバイス、及びインターフェース設定方法 |
CN111277655A (zh) * | 2020-01-21 | 2020-06-12 | 山东公链信息科技有限公司 | 一种基于智能音箱的分布式存储系统 |
CN112612423A (zh) * | 2020-12-29 | 2021-04-06 | 芯启源电子科技有限公司 | 一种usb共享存储装置 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11259605A (ja) | 1998-01-08 | 1999-09-24 | Tdk Corp | Pcカード |
US8341332B2 (en) * | 2003-12-02 | 2012-12-25 | Super Talent Electronics, Inc. | Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices |
US20040199491A1 (en) * | 2003-04-04 | 2004-10-07 | Nikhil Bhatt | Domain specific search engine |
US7762470B2 (en) * | 2003-11-17 | 2010-07-27 | Dpd Patent Trust Ltd. | RFID token with multiple interface controller |
JP4264087B2 (ja) * | 2003-11-28 | 2009-05-13 | パナソニック株式会社 | 記録装置 |
US6890188B1 (en) * | 2004-02-27 | 2005-05-10 | Imation Corp. | Memory card compatible with device connector and host connector standards |
US20060112197A1 (en) * | 2004-11-24 | 2006-05-25 | Li-Ho Yao | Dual-interface-plug memory card |
US9104315B2 (en) * | 2005-02-04 | 2015-08-11 | Sandisk Technologies Inc. | Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage |
US7984084B2 (en) * | 2005-08-03 | 2011-07-19 | SanDisk Technologies, Inc. | Non-volatile memory with scheduled reclaim operations |
GB2430508A (en) * | 2005-09-21 | 2007-03-28 | Power Digital Card Co Ltd | Memory card with an integral dual interface |
US20070294468A1 (en) | 2006-06-15 | 2007-12-20 | Aaron Olbrich | Architecture for reading and writing to flash memory |
US20070294467A1 (en) | 2006-06-20 | 2007-12-20 | Kwok-Yan Leung | Multi-Channel Flash Memory Data Access Method |
CN100530070C (zh) * | 2006-11-24 | 2009-08-19 | 骆建军 | 基于flash的硬盘 |
US7660911B2 (en) * | 2006-12-20 | 2010-02-09 | Smart Modular Technologies, Inc. | Block-based data striping to flash memory |
TWI376603B (en) * | 2007-09-21 | 2012-11-11 | Phison Electronics Corp | Solid state disk storage system with a parallel accessing architecture and a solid state disk controller |
US7953930B2 (en) * | 2007-12-07 | 2011-05-31 | Sandisk Corporation | Device identifiers for nonvolatile memory modules |
US7921255B2 (en) * | 2007-12-21 | 2011-04-05 | Sandisk Corporation | Duplicate SD interface memory card controller |
US8732386B2 (en) * | 2008-03-20 | 2014-05-20 | Sandisk Enterprise IP LLC. | Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory |
-
2008
- 2008-08-27 US US12/199,023 patent/US8281062B2/en active Active
-
2009
- 2009-07-16 CN CN200980129345.4A patent/CN102105856B/zh active Active
- 2009-07-16 WO PCT/US2009/050894 patent/WO2010024978A1/en active Application Filing
- 2009-07-16 EP EP09790547A patent/EP2318912A1/en not_active Withdrawn
- 2009-07-16 KR KR1020117002195A patent/KR20110056276A/ko not_active Application Discontinuation
- 2009-07-27 TW TW098125249A patent/TW201013413A/zh unknown
-
2012
- 2012-09-05 US US13/603,765 patent/US8539174B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20120331252A1 (en) | 2012-12-27 |
US8281062B2 (en) | 2012-10-02 |
TW201013413A (en) | 2010-04-01 |
EP2318912A1 (en) | 2011-05-11 |
CN102105856B (zh) | 2015-09-09 |
CN102105856A (zh) | 2011-06-22 |
US8539174B2 (en) | 2013-09-17 |
WO2010024978A1 (en) | 2010-03-04 |
US20100057992A1 (en) | 2010-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20110056276A (ko) | 액세스 속도가 가속화된 휴대용 저장 디바이스 | |
US7480766B2 (en) | Interfacing systems operating through a logical address space and on a direct data file basis | |
US7669003B2 (en) | Reprogrammable non-volatile memory systems with indexing of directly stored data files | |
US8291151B2 (en) | Enhanced host interface | |
US7949845B2 (en) | Indexing of file data in reprogrammable non-volatile memories that directly store data files | |
US8626987B2 (en) | Flash memory system and defragmentation method | |
EP2319047B1 (en) | Multiple performance mode memory system | |
US8239639B2 (en) | Method and apparatus for providing data type and host file information to a mass storage system | |
US8880483B2 (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 | |
US20070086260A1 (en) | Method of storing transformed units of data in a memory system having fixed sized storage blocks | |
EP2156299A1 (en) | Method and system for storage address re-mapping for a memory device | |
WO2007019155A1 (en) | Reclaiming data storage capacity in flash memory systems | |
KR101055324B1 (ko) | 강화된 호스트 인터페이스 | |
EP1913463A2 (en) | Management of memory blocks which directly store data files | |
EP1917577A2 (en) | Indexing of file data in reprogrammable non-volatile memories that directly store data files | |
US8769217B2 (en) | Methods and apparatus for passing information to a host system to suggest logical locations to allocate to a file |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |