US8281062B2 - Portable storage device supporting file segmentation and multiple transfer rates - Google Patents
Portable storage device supporting file segmentation and multiple transfer rates Download PDFInfo
- Publication number
- US8281062B2 US8281062B2 US12/199,023 US19902308A US8281062B2 US 8281062 B2 US8281062 B2 US 8281062B2 US 19902308 A US19902308 A US 19902308A US 8281062 B2 US8281062 B2 US 8281062B2
- Authority
- US
- United States
- Prior art keywords
- connector
- storage device
- host
- file system
- controllers
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active, expires
Links
- 238000012546 transfer Methods 0.000 title claims abstract description 36
- 230000011218 segmentation Effects 0.000 title description 4
- 238000000034 method Methods 0.000 claims description 24
- 238000013500 data storage Methods 0.000 claims 2
- 238000004891 communication Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000004931 aggregating effect Effects 0.000 description 2
- 244000118350 Andrographis paniculata Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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
Definitions
- the present invention generally relates to a portable storage device (“PSD”) with increased read and write throughput and more specifically to a portable storage device that can selectively operate in one of two available modes of operations: “normal” mode and “rapid-access” mode.
- PSD portable storage device
- Non-volatile based portable storage devices PSDs
- PSDs portable storage devices
- Storage devices come in a variety of designs. Some storage devices are regarded as “embedded”, meaning that they cannot, and are not intended to, be removed by a user from a host device with which they operate. Other storage devices are removable, which means that the user can move them from one host device to another, or replace a storage device with another.
- USB Universal Serial Bus
- MMC MultiMedia Card
- SD Secure Digital
- miniSD miniSD
- microSD microSD
- PSDs One use case for PSDs involves the transfer of very large files, such as movies, for home entertainment consumption.
- Very large files are files whose size is, for example, 4 gigabytes (“GB”) or greater.
- the speed of reading or writing very large files may be insufficient or annoying.
- the relatively slow speed of writing such movies onto a PSD drive implies waiting several minutes (e.g. 3-4 minutes) for copying a 4 GB movie onto the PSD (using a typical write speed of 18 megabytes per second (“MB/s”)), which is unsatisfactory for many users.
- FIG. 1 shows a typical portable storage device (“PSD”) 100 .
- Portable storage device 100 includes a USB connector 110 , a storage controller 120 , and a storage area 130 that includes two separate flash memory units 140 and 150 .
- Storage controller 120 manages transfer of data to/from storage area 130 while handling flash memory units 140 and 150 as a single, unified, storage area (i.e., storage area 130 ), where handling flash memory units 140 and 150 as a single, unified, storage area means that storage controller 120 addresses flash memory units 140 and 150 using a single file system.
- Each of flash memory units 140 and 150 can be a flash memory chip, a flash memory die, or a flash memory package.
- USB connector 110 has a typical electrical pin layout as illustrated in FIG. 2 .
- FIG. 2 it schematically illustrates a 4-pin layout usable by standard USB connectors.
- Pins 1 and 4 provide electrical energy from a connected host (not shown in FIG. 2 ) for energizing PSD 100 .
- Pins 2 and 3 transfer electrical signals that correspond to transferred data.
- the conventional storage device's architecture of FIG. 1 has been designed with the notion that small data files can be transferred to, or from, a storage device using low bit rates because transferring such files would not take much time because of the files being small.
- the conventional storage device's architecture of FIG. 1 is inefficient (i.e., in terms of data transfer speed) when it comes to large data files. There is thus a need for a PSD with increased data transfer speed. In particular, there is a need for a PSD with increased data writing speed.
- a storage device that can exchange data with a host, such as a personal computer (“PC”), in a first mode in which relatively small data files can be transferred between the storage device and the host “normally” (i.e., in a conventional bit rate, or in a conventional speed), or in a second mode in which larger data files can be transferred between the storage device and the host at a bit rate that is higher than in the first mode.
- a host such as a personal computer (“PC”)
- a storage device may have two connectors for transferring data files: a first connector through which data files can be transferred at an accelerated speed, and a second connector through which data files can be transferred at a conventional speed.
- a user can select the speed (i.e., “normal speed” or “accelerated speed”) at which s/he wants to transfer a data file from a host to the storage device, and vice versa, by connecting the host to the proper connector.
- the first connector is internally connected to a plurality of controllers that facilitate data transfers at the accelerated speed
- the second connector is internally connected to a controller that facilitates data transfers at the normal speed.
- a method for preparing content such as host content (e.g., multimedia file) for writing into a storage device may include creating, in a host having a first (i.e., host's) file system, a second file system for a storage device (the second file system being referred to hereinafter as the storage device's file system) that includes a plurality of discrete memory units and a plurality of first controllers (the terms “first controllers” and “parallel controllers” are interchangeably used herein); copying host content to the second file system by reading the host content from the first file system and writing the read host content to the second file system; and segmenting the second file system to a plurality of segments that are respectively directed to the plurality of first controllers; that is, each segment is uniquely targeted, associated with or directed to, a specific, designated, or particular controller of the plurality of first controllers.
- Creating the second file system may include storing the second file system in a file (which is referred to hereinafter as the “loop file”) within the first file system, and segmenting the second file system includes segmenting the loop file within the first file system to a number of segments that equals the number of first controllers, where each segment bears, or contains, a portion of the second file system that contains a portion of the host content.
- a file which is referred to hereinafter as the “loop file”
- segmenting the second file system includes segmenting the loop file within the first file system to a number of segments that equals the number of first controllers, where each segment bears, or contains, a portion of the second file system that contains a portion of the host content.
- the method may further include respectively writing the plurality of segments into the plurality of memory units by the plurality of first controllers, for example by writing each of the plurality of segments into one or more of the plurality of memory units by a first controller associated with the one or more of the plurality of memory units.
- the method may further include receiving by a second controller of the storage device, via a second connector of the storage device, a read request to read data from an address, for example, of a memory sector in one of the plurality memory units, and reading, by the second controller, the data from a storage area in one of the plurality of memory units that is referenced by the address.
- Reading the data from the storage area referenced by the address may include (i) determining a logical page that is associated with the storage area, (ii) determining, from the determined logical page, the memory unit the logical page belongs to, and (iii) determining the physical location of the storage area within the determined flash memory unit. Once the physical location of the storage area within the determined flash memory unit is determined, data can be read from that location.
- Copying the host content to the second file system may include a preceding step of mounting the second file system in the first file system, and, after the host content is copied to the second file system, a succeeding step of unmounting the second file system from the first file system.
- a method for preparing host content for writing into a storage device may therefore include creating, in a host having a first file system, a second file system for a storage device that includes a plurality of discrete memory units and a plurality of controllers; mounting the second file system in the first file system; copying host content to the second file system by reading the host content from the first file system and writing the read host content into the second file system; unmounting the second file system from the first file system; and segmenting the unmounted second file system to a plurality of segments respectively corresponding to the plurality of controllers.
- a storage device may include a non-volatile memory that is implemented as a plurality of discrete memory units; a first connector that is also referred to hereinafter as a “rapid-access connector”; a plurality of first controllers, wherein each of the plurality of first controllers is functionally interposed between the first connector and a respective one or more of the plurality of memory units; a second connector; and a second controller that manages data transfers between the second connector and the plurality of memory units.
- the plurality of first controllers may manage data transfers between the first connector and the plurality of memory units by receiving, from a host, a file system which is segmented to a plurality of segments that are respectively directed to the plurality of first controllers, and by writing the plurality of segments into the plurality of memory units by the plurality of first controllers, so that each of the first controllers writes the respective segment to the one or more of the plurality of memory units associated with that controller.
- one of the first controllers also functions as the second controller, where the first controller functioning also as the second controller manages data transfers between the first connector and a respective one or more of the plurality of memory units, or between the second connector and the plurality of memory units, depending on which connector (i.e., the first connector or the second connector) is used (i.e., by a host with which the storage device operates).
- the second controller is adapted to write data into the plurality of memory units and the first controllers are adapted to concurrently read the data from the plurality of memory units in parallel.
- the first connector of the storage device may be a rapid-access (“RAC”) connector and the second connector may be a USB male A-type connector.
- the RAC connector may include a plurality of contacts groups, where each contacts group is associated with a particular one of the first controllers.
- At least one of the non-volatile memory units in the storage device may be, or include, a NAND flash memory.
- FIG. 1 is a portable storage device according to related art
- FIG. 2 is a pin layout of a USB connector according to related art
- FIG. 3 is a block diagram of a portable storage device according to an example embodiment
- FIG. 4 is a pin layout of a multi USB connector for a portable storage device according to an example embodiment
- FIG. 5 shows preparation of a file system for a storage device according to an example embodiment
- FIG. 6 shows writing segments of the file system of FIG. 5 according to an example embodiment
- FIG. 7 shows a host content write-read cycle according to an example embodiment
- FIG. 8 illustrates a method for preparing a new, segmented, file system for a storage device according to an example embodiment
- FIGS. 9A , 9 B, and 9 C collectively demonstrate mounting of a storage device's file system on a host's file system
- FIG. 10 illustrates a method for writing a new file system into a storage device according to an example embodiment
- FIG. 11 illustrates a method for reading host content from a storage device according to an example embodiment
- FIG. 12 shows a host device stack for reading host content from a storage device according to another example embodiment
- FIG. 13 shows a host content write-read cycle according to another example embodiment
- FIG. 14 illustrates a method for (re)assembling a segmented file system in a host according to an example embodiment
- FIG. 15 is a block diagram of a portable storage device according to another example embodiment.
- FIG. 3 is a block diagram of a PSD 300 according to an example embodiment.
- PSD 300 includes a non-volatile memory 370 that is implemented as a plurality of discrete memory units 330 , 331 , 332 , 333 , 334 , 335 , 336 , and 337 (the memory units 330 through 337 being respectively designated as “memory unit 0” through “memory unit 7”).
- discrete memory unit is meant any memory die, memory chip, and memory package that is controlled, handled, or managed by a controller.
- PSD 300 also includes a first connector 350 (which is referred to herein as a rapid-access (“RAC”) connector), a plurality of first (also referred to herein as “parallel”) controllers 341 , 342 , 343 , and 344 (the second controllers 341 through 344 being respectively designated as “controller 1” through “controller 4”).
- RAC connector 350 may include a plurality of contacts groups, where each contacts group is associated with a particular one of the first controllers 341 through 344 .
- each of the four parallel controllers 341 through 344 is functionally interposed between RAC connector 350 and a respective two of the plurality of memory units 330 through 337 .
- controller 341 is functionally interposed between RAC connector 350 and memory units 330 and 331 ;
- controller 342 is functionally interposed between RAC connector 350 and memory units 332 and 333 , and so on.
- one or more of the parallel controllers may be functionally interposed between the RAC connector and a respective one or more of the plurality of memory units.
- Parallel controllers 341 to 344 are operative to manage data transfers between RAC connector 350 and the plurality of memory units 330 through 337 by receiving, from a host (not shown in FIG. 3 ) connected to RAC connector 350 , by storage device 300 a file system which is segmented to a plurality of file system segments that are respectively directed to the plurality of controllers 341 through 342 , and by respectively writing the file system segments into the respective two or more of the plurality of memory units.
- file system segments that are respectively directed to the plurality of controllers is meant that the number of file system segments equals the number of the plurality of parallel controllers, which is four in FIG. 3 , and each of the file system segments is forwarded by the host (not shown in FIG.
- a file system for storage device 300 will be segmented by a host (i.e., when it is connected to RAC connector 350 ) to four file system segments, and the host will concurrently send a first segment of the file system (i.e., a first file system segment) to parallel controller 341 , a second segment of the file system to parallel controller 342 , a third segment of the file system to controller 343 , and a fourth segment of the file system to controller 344 .
- Each parallel controller will, then, write the file system segment it receives from the host in the memory units associated with that controller.
- the number of parallel controllers may be other than four (i.e., there may be less or more than four parallel controllers), the number of plurality of discrete memory units may be other than eight (i.e., there may be less or more than eight memory units), and each of the plurality of parallel controllers may functionally be interposed between RAC connector 350 and a number of memory units that is larger than two.
- PSD 300 also includes a second connector 310 that may be a USB connector (as shown in FIG. 3 ) of a standard type, or a non-USB connector. PSD 300 also includes a second controller 320 that is operative to manage data transfers between second connector 310 and the plurality of memory units.
- a second connector 310 may be a USB connector (as shown in FIG. 3 ) of a standard type, or a non-USB connector.
- PSD 300 also includes a second controller 320 that is operative to manage data transfers between second connector 310 and the plurality of memory units.
- Memory units 330 through 337 are non-volatile memory units that may be of the flash memory type (for example they may be implemented as standard NAND flash memory chips), or of the non-flash type. Alternatively, at least one of memory units 330 through 337 may be of the flash memory type while other memory units are of the non-flash type. Alternatively, at least one of memory units 330 through 337 may be of the non-flash memory type while other memory units are of the flash type.
- First connector 350 a rapid-access connector, provides more than one communication link.
- first connector 350 may include four separate USB links, or one USB link and other one or more non-USB links.
- Second connector 310 may be a USB connector, for example of the male A-type connector.
- the pin layout of USB connector 310 may be identical to the pin layout of USB connector 110 of FIG. 1
- RAC connector 350 may have a pin layout as shown in FIG. 4 (described below) which, by way of example, has four separate USB interfaces D 1 , D 2 , D 3 , and D 4 , where “D 1 ” refers to the contacts pair “D 1 +/D 1 ⁇ ”, “D 2 ” refers to the contacts pair “D 2 +/D 2 ⁇ ”, and so on.
- RAC connector 350 includes four contacts groups, where each contacts group is associated with a particular one of the first controllers 341 through 344 .
- contacts group D 1 may be associated with first controller 341
- contacts group D 2 may be associated with first controller 342 , etc.
- each of the four separate USB interfaces D 1 through D 4 is connected to a corresponding controller 341 , 342 , 343 , 344 that manages two memory units.
- Memory units 330 through 337 may have the same storage capacity, or different storage capacities.
- Controller 320 which may be some standard memory controller, addresses memory units 330 through 337 via a communication bus 325 . Controller 320 may interface 326 with standard USB hosts (not shown in FIG. 3 ), for example, via a USB male “A”-type connector 310 whose pin layout is as shown in FIG. 2 .
- controllers 341 through 344 handles storage operations (i.e., “write”, “read”, and “erase” operations) in the same way as, and therefore it can be, a conventional USB flash drive controller which is well-known in the art of portable storage devices.
- Controllers 341 through 344 may be of the same type (i.e., each of them may include the same type of communication interface, for example, a USB communication interface), in which case RAC connector 350 may have a pin layout such as the pin layout shown in FIG. 4 , which exemplary pin layout provides four separate and independent USB communication links.
- each of controllers 341 through 344 may be of a different type (i.e., each controller may include a different type of communication interface), in which case RAC connector 350 may have a different pin layout than the pin layout shown in FIG. 4 , which provides four separate, independent and different communication links. At least one of controllers 341 through 344 may include a USB communication interface.
- an end-user wants to download a massive file (e.g., a 4-gigabyte file) from a host to storage device 300
- the end-user connects storage device 300 to the host (not shown in FIG. 3 ) via RAC connector 350 .
- RAC connector 350 Upon, or subsequent to, connecting RAC connector 350 to the host the host handshakes with each of parallel controllers 341 through 344 and handles it as if it belongs, or represents, a separate storage device.
- the host creates a new file system for storage device 300 , copies the massive file to the new file system, and then divides the new file system (with the massive file copied thereto) to a number of file system segments that corresponds to the number of the parallel controllers of storage device 300 (i.e., the file system for the storage device is segmented to one file system segment per controller). Finally, the host communicates with, and forwards to, each parallel controller a file system segment that is directed, or targeted, to that parallel controller.
- a host connected to storage device 300 via RAC connector 350 logically “knows” the entire storage layout of non-volatile memory 370 from the parallel controllers 341 through 344 and the distributes the new file system (with the copied massive file) between the parallel controllers 341 through 344 based on that knowledge.
- the division and distribution of the file system segments is elaborated, for example, in FIGS. 5 , 6 , 8 , and 9 , which are described below.
- Each D+/D ⁇ pair is wired, or otherwise connected, to a respective parallel controller.
- pins 2 and 3 may be connected to controller 341
- pins 4 and 5 may be connected to controller 342
- pins 1 and 10 respectively enable supplying from the host the voltage and ground potential required to energize PSD 300 .
- a host connected to PSD 300 via 10-pin RAC such as connector 400 “sees” PSD 300 as four discrete USB mass storage devices, and, therefore, handles them individually, whereas if the host is connected to PSD 300 via connector 310 the host sees PSD 300 as a single mass storage device, as the host can address all eight memory units 341 through 344 as a single, unified, non-volatile memory. Sectors comprising the file system are distributed evenly throughout the memory units 341 through 344 .
- FIG. 5 shows preparation of a file system 500 for a storage device according to an example embodiment.
- FIG. 5 will be described in association with FIG. 3 .
- content e.g., a video file
- the end-user “marks” to the host the content s/he wants downloaded to PSD 300 and the host prepares the marked content for writing into PSD 300 .
- the host prepares the content for writing into PSD 300 by using its own file system (referred to herein as the “first file system”), as follows. First, the host creates a second file system that will be sent to, and used by, PSD 300 .
- the host copies the marked (host) content to the second file system by reading the marked content from the first (i.e., from the host's) file system and writing the read content to the second file system. Then, the host segments the second file system to a plurality of file system segments, the plurality of segments being respectively directed to the plurality of parallel controllers 341 through 344 .
- the host prepares the second file system by first creating an empty file system 520 within a new file 500 (which is referred to herein as the “loop file”) is created by the host on the host's file system (i.e., on the first file system). After the host creates the empty file system 520 the host copies the content requested by the end-user (i.e., the marked content) to empty file system 520 . It may be said, therefore, that empty file system 520 is updated with the user-requested host content.
- the end-user i.e., the marked content
- Loop file 500 that is created by the host to transfer the second file system to PSD 300 includes other data and information that are pertinent to, and characterize, that file. That is, loop file 500 includes, in addition to second file system 520 , a boot portion 510 , a root directory 530 and file data 540 .
- Boot portion 510 contains booting data that will be used to initialize storage device 300 .
- FAT section 520 contains information relating to the used FAT system.
- Root directory 530 is the root directory that will be used by storage device 300 .
- File data 540 contains the actual file extents contained within the file system.
- file system 500 is divided to 32 data pages (designated as data page # 0 through data page # 31 ). Assuming the storage device to which the massive file is targeted includes four parallel controllers, the host prepares four file system segments, designated as 550 , 560 , 570 , and 580 .
- loop file 500 After the host updates the second file system with the content requested by the end-user the host divides loop file 500 to four file segments, designated as 550 , 560 , 570 , and 580 because, as stated above, PSD 300 includes four parallel controllers and each parallel controller uniquely receives one file segment.
- a “file segment” e.g., file segment 550
- Loop file 500 has a bit-wise size that substantially equals the bit-wise size of non-volatile memory 370 as a whole. Creating loop file 500 in that manner can be done, for example, by using the Linux command ‘mkfs’.
- non-volatile 370 is a flash memory
- the host divides loop file 500 into equal segments based on the page size of non-volatile 370 .
- a “page” is a memory unit that includes some minimal number of sectors, that depends on the type of the flash memory (i.e., it depends on the basic size of a page). For example, given the fact that, currently, the size of a sector is 512 bytes, a flash memory having 2K-sized pages has four sectors per page. Page's sectors are written to and read from collectively. In the flash memory field data is erased from the flash memory in blocks, where a block includes several pages.
- file 500 is divided into 32 pages, where each page has the same bit size as the native flash page.
- the actual number of pages depends on the size of the host content requested by the end-user. That is, the larger the requested content the larger the number of the pages.
- the segmentation process results, in this example, in creating four files (i.e., 550 , 560 , 570 , 580 ), where two pages are alternately stored in each file such that at the end of the process file 500 is segmented as depicted in FIG. 5 .
- file 500 is divided to 32 pages, and the 32 pages are distributed to four groups (i.e., file segments) 550 , 560 , 570 , and 580 in the following way: the first two pages (i.e., pages 0 and 1 ) are associated with file segment 550 , the next two pages (i.e., pages 2 and 3 ) are associated with file segment 560 , the next two pages (i.e., pages 4 and 5) are associated with file segment 570 , the next two pages (i.e., pages 6 and 7 ) are associated with file segment 580 , the next two pages (i.e., pages 8 and 9 ) are associated with file segment 550 , and so on.
- each parallel controller is functionally connected, for example, to four memory units, then the first four pages (i.e., pages 0 , 1 , 2 , 3 ) were to be associated with file segment 550 , the next four pages (i.e., pages 5 , 6 , 7 , 8 ) were to be associated with file segment 560 , and so on.
- file segment 550 includes pages 0 , 1 , 8 , 9 , 16 , 17 , 24 , and 25
- file segment 560 includes pages 2 , 3 , 10 , 11 , 18 , 19 , 26 , and 27
- file segment 570 includes pages 4 , 5 , 12 , 13 , 20 , 21 , 28 , and 29
- file segment 580 includes pages 6 , 7 , 14 , 15 , 22 , 23 , 30 , and 31 .
- FIG. 6 shows writing segments of the segmented file of FIG. 5 according to an example embodiment.
- FIG. 6 will be described in association with FIGS. 3 and 5 .
- a rapid write process can commence by the host concurrently handshaking with controllers 341 through 344 and, thereafter, forwarding to each controller a file segment that is intended for, or is directed to, or is associated with, that controller.
- the host (not shown in FIG. 6 ) handles controllers 341 through 344 individually, as if they represent four distinct storage devices 610 , 620 , 630 , and 640 .
- each of parallel controllers 341 through 344 is functionally connected to two memory units. Accordingly, each controller writes half of the pages within its file segment in one of the memory units, and the other half of the pages in the other memory unit. For example, controller 341 writes pages 0 , 8 , 16 , and 24 into memory unit 330 , and pages 1 , 9 , 17 , and 25 into memory unit 331 .
- FIG. 7 shows a file write-read cycle according to an example embodiment.
- FIG. 7 will be described in association with FIGS. 3 and 5 .
- loop file 500 is created by a host on the host's file system, after which the host creates second file system 520 on loop file 500 for storage device 300 , updates second file system 520 with a content an end-user of the storage device wants to be downloaded to storage device 300 , and segments loop file 500 , with the updated second file system 520 on it, to four (i.e., to files 550 through 580 ), which is the number of parallel controllers 341 through 344 .
- the host concurrently writes file segments 550 through 580 into storage device 300 by using parallel controllers 341 through 344 .
- the host may read the content from the storage device either by using parallel controllers 341 through 344 (i.e., by using RAC connector 350 ), or by using controller 320 (i.e., by using USB connector 310 ).
- the file is read by the host.
- the host writes content into storage device 300 using parallel controllers (which means that the content is distributed among several memory units that are managed or controlled by different parallel controllers, then if the host reads the content from storage device 300 by using parallel controllers 341 through 344 , it does so by aggregating the distributed content from the various memory units by using the corresponding parallel controllers.
- FIG. 8 illustrates a method for preparing a new, segmented, file system for a storage device according to an example embodiment.
- a host uses its own file system to create an empty file system for a storage device to which host content (e.g., multimedia file) is to be downloaded by an end-user of the storage device. That is, the host creates an empty storage device's file system on its own file system and uses a mounting-unmounting mechanism to update the empty storage device's file system with the host content.
- the mounting-unmounting mechanism is used because the host can manage (i.e., create, move, update, etc.) only files (including file systems) that are referenced (i.e., can be accessed) by the host's directory tree. This means that the host can update the storage device's file system with host content only after the storage device's file system is logically linked (i.e., “mounted”) to, or becomes part of, the host's file system.
- “Mounting” is a process in which an additional file system is logically attached, or connected, to a currently accessible file system of a computer.
- a file system is a hierarchy of directories (also referred to as a directory tree) that is used to organize files on a computer or storage media.
- directories On computers running Linux, MacOS, or other Unix-like operating systems, the directories start with the root directory, which is the directory that contains all other directories and files on the system.
- the “currently” accessible file system is the file system that can be accessed on a computer at a given time.
- a “mount point” is the directory (usually an empty one) in the currently accessible file system to which the additional file system is mounted.
- the mount point becomes the root directory of the added directory tree, and the added directory tree becomes accessible from the directory to which it is mounted (i.e., its mount point).
- the mount point is the location in the operating system's directory structure where a mounted file system appears. Removing the connection or link between a mounted device and the rest of the file system is referred to as “unmounting”.
- loop device In Unix-like operating systems a “loop device” is a pseudo-device that makes a file accessible as a pseudo-device. Because loop devices allow seeing a regular file as a “device”, they allow for mounting those regular files that contain an entire file system. Mounting a file that contains a file system via such a loop mount makes the files within that file system accessible as regular files that are located on the mount point directory.
- the storage device's file system is formatted and at step 830 the formatted storage device's file system is mounted into the host's file system to enable the host to update it with the host content.
- Step 830 is required because, as explained above, the host can update the storage device's file system with the content only after the storage device's file system is logically linked (i.e., mounted) to the host's file system.
- the host copies the content to the storage device's file system, and, subsequent to copying the host content to the storage device's file system, at step 850 the storage device's file system is unmounted from the host's file system.
- the unmounted storage device's file system is divided to as many segments as required, as described above.
- FIGS. 9A , 9 B, and 9 C demonstrate mounting a storage device's file system on a host's file system.
- FIG. 9A shows an exemplary host's file system 900 to which a storage device's file system is to be mounted.
- host's file system 900 includes five data files (designated as “F 1 ”, “F 2 ”, “F 3 ”, “F 4 ”, and “F 5 ”).
- FIG. 9B shows an exemplary storage device's file system 910 that the host is yet to send to a storage device.
- storage device's file system 910 includes one data file (designated as “F 11 ”).
- FIG. 9C shows loop file 920 added, or “mounted”, to host's file system 900 of FIG. 9 .
- the host can update storage device's file system 910 with content 930 by “sending” content 930 to loop file 920 as if loop file 920 were a physical device.
- FIG. 10 shows a method for writing a new file system into a storage device according to an example embodiment.
- FIG. 10 will be described in association with FIGS. 3 and 5 .
- a rapid write process can commence.
- the rapid-access connector 350 is connected to the host (not shown in FIGS. 3 and 5 ).
- the segments are written into the apparently separate n USB storage devices concurrently as raw data; that is, no file system is prepared on the individual USB storage devices. That is, segment 1 (of n segments) is written into controller 1 of n parallel controllers (shown at 1050 ), segment 2 is written into controller 2 (shown at 1060 ), . . . , and segment n is written into controller n (shown at 1070 ).
- FIG. 11 illustrates a method for reading host content from a storage device according to an example embodiment.
- FIG. 11 will be described in association with FIGS. 3 and 6 .
- Connector 310 and controller 320 of FIG. 3 are used to read data from non-volatile memory 370 .
- Controller 320 can read all eight memory units 330 through 337 directly, using the same logical pages' layout as shown in FIG. 5 , by logically mapping pages according to the same logical pages layout described in FIG. 5 .
- controller 320 calculates the associated memory physical address as described below.
- controller 320 calculates the logical page P that the sector S is on by using formula (1):
- S is the sector number
- Ps is the page size
- Ss is the size of a sector.
- controller 320 calculates the logical address Al within the memory unit MU by using formula (3):
- the controller fetches the physical page from the corresponding (i.e., calculated) flash memory unit by using the native protocol of the flash memory units.
- a logical address of a page may be related to a physical page address by using, for example, a logical address-to-physical address translation table, or another mechanism, as appropriate to the specific memory technology (e.g., flash technology, for example NAND flash technology).
- specific memory technology e.g., flash technology, for example NAND flash technology.
- FIG. 11 has been described in connection with controller 310 of FIG. 3 .
- the host uses a method similar to the method shown in FIG. 11 , as described below in connection with FIG. 12 .
- FIG. 12 is a host device stack 1205 that implements a method for reading host content from a storage device according to another example embodiment.
- Host application 1210 which can be any host application that can read content from the storage device, interfaces with the host's file system driver 1220 . In Windows this is done by using calls such as CreateFile( ), or via the Windows Explorer. In Linux this is done by using standard POSIX file interface calls such as open( ) or creat( ).
- interface 1215 represents a standard portion of the operating system environment.
- File system driver 1220 logically resides above the physical interface drivers of the host 1205 and it interfaces between an application and a corresponding hardware component (e.g., a connector, a flash memory, a hard drive, etc.). For example if an application needs to read a file residing, for example, on a hard drive, the operating system translates the read request to the corresponding hardware component (e.g., to the hard drive) by using a stack of drivers. File system driver 1220 transparently reads and writes files through the rapid-access connector (RAC) of the storage device. While FIG. 12 illustrates a Windows driver stack that uses a volume driver 1230 , the same concept is likewise applicable, mutatis mutandis, to other operating system environments.
- RAC rapid-access connector
- Volume driver 1230 incorporates and employs the algorithm illustrated in FIG. 11 .
- volume is meant a set of sequential blocks (e.g., a set of sectors, clusters, etc.) that can hold a file system.
- the resulting page number P is used to select a storage interface from storage interface 1232 , 1234 , 1236 , and 1238 .
- Storage interfaces 1232 through 1238 are respectively operatively associated with USB drivers 1242 through 1248 .
- USB driver- 1 shown at 1242 , which maps to pins 1 , 2 , 3 , and 10 on RAC 300 .
- Storage interfaces P 2 and P 3 route read requests to USB driver- 2 (shown at 1244 ), which maps to pins 1 , 4 , 5 , and 10 on RAC connector 100 , and so on.
- Volume driver 1230 abstracts sector read requests and write requests and poses to file system driver 1220 as a single mass storage interface. In other words, high-level applications can handle the RAC of the storage device as a single interface rather than four separate interfaces. This can be done because volume driver 1230 presents the four USB drivers (that operate “on behalf of”, or represent, four USB storage devices) to the host as a single volume.
- FIG. 13 shows a host content write-read cycle according to another example embodiment.
- FIG. 13 will be described in association with FIG. 3 .
- a host creates a file system for storage device 300 and updates the file system with a host content that an end-user of the storage device wants to be downloaded to storage device 300 .
- the host writes the file system into storage device 300 by using controller 320 .
- Controller 320 segments the file system to a number of segments that is equal to the number of parallel memory units (in FIG. 3 to eight segments) and writes each segment into a corresponding memory unit.
- the host storing the content in storage device 300 may read the content from storage device 300 either by using parallel controllers 341 through 344 (i.e., by using RAC CONNECTOR 350 ) or by using controller 320 (i.e., by using USB connector 3 10 ). Because the host content written into storage device 300 is distributed among several memory units, the host can read the host content from storage device 300 by using controllers 341 through 344 to reassemble the distributed file system by aggregating the various file system segments.
- FIG. 14 illustrates a method for assembling a segmented file system in a host according to an example embodiment.
- a new loop file system is allocated on the host, equal to the size of the storage space on the storage device.
- the segments of the segmented file system are read simultaneously from the memory units to predefined offsets within the loop file system. For example, if the file system was divided as illustrated in FIG. 5 , sectors 0 and 1 as read from the first controller and placed at offset 0 and 1 within the loop file system, and sectors 0 and 1 as read from the second controller are placed at offsets 2 and 3 within the loop file system, and so on (the loop file system is not mounted at this point).
- the loop file system is mounted and at step 1440 data is read from the loop file system.
- FIG. 15 is a block diagram of a portable storage device 1500 according to another example embodiment.
- Portable storage device 1500 differs from portable storage device 300 in that one of the first controllers of storage device 300 (e.g., controller 341 of storage device 300 ) takes on also the functionality of second controller 320 of FIG. 3 .
- the first controller taking on the tasks of the second controller is referenced by reference numeral 1520 .
- First controller 1520 can serve as a first controller at one time and as a second controller at another time, depending on a connection signal that first (or second) controller 1520 receives from connector 1510 or from RAC connector 1550 . If storage device 1500 is connected to a host via connector 1510 , connector 1510 sends a corresponding signal to controller 1520 , responsive to which signal controller 1520 functions as second controller 320 . If storage device 1500 is connected to a host via connector 1550 , connector 1510 sends a corresponding signal to controller 1520 , responsive to which signal controller 1520 functions as first controller 341 .
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)
Priority Applications (7)
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 |
PCT/US2009/050894 WO2010024978A1 (fr) | 2008-08-27 | 2009-07-16 | Dispositif de stockage portable avec une vitesse d'accès accélérée |
KR1020117002195A KR20110056276A (ko) | 2008-08-27 | 2009-07-16 | 액세스 속도가 가속화된 휴대용 저장 디바이스 |
CN200980129345.4A CN102105856B (zh) | 2008-08-27 | 2009-07-16 | 具有加快的访问速度的便携式存储设备 |
EP09790547A EP2318912A1 (fr) | 2008-08-27 | 2009-07-16 | Dispositif de stockage portable avec une vitesse d'accès accélérée |
TW098125249A TW201013413A (en) | 2008-08-27 | 2009-07-27 | A portable storage device with an accelerated access speed |
US13/603,765 US8539174B2 (en) | 2008-08-27 | 2012-09-05 | Use by a host device having a first file system of a portable storage device having a second file system and supporting file segmentation |
Applications Claiming Priority (1)
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 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/603,765 Division US8539174B2 (en) | 2008-08-27 | 2012-09-05 | Use by a host device having a first file system of a portable storage device having a second file system and supporting file segmentation |
Publications (2)
Publication Number | Publication Date |
---|---|
US20100057992A1 US20100057992A1 (en) | 2010-03-04 |
US8281062B2 true US8281062B2 (en) | 2012-10-02 |
Family
ID=40983503
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/199,023 Active 2031-07-01 US8281062B2 (en) | 2008-08-27 | 2008-08-27 | Portable storage device supporting file segmentation and multiple transfer rates |
US13/603,765 Active US8539174B2 (en) | 2008-08-27 | 2012-09-05 | Use by a host device having a first file system of a portable storage device having a second file system and supporting file segmentation |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/603,765 Active US8539174B2 (en) | 2008-08-27 | 2012-09-05 | Use by a host device having a first file system of a portable storage device having a second file system and supporting file segmentation |
Country Status (6)
Country | Link |
---|---|
US (2) | US8281062B2 (fr) |
EP (1) | EP2318912A1 (fr) |
KR (1) | KR20110056276A (fr) |
CN (1) | CN102105856B (fr) |
TW (1) | TW201013413A (fr) |
WO (1) | WO2010024978A1 (fr) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120151126A1 (en) * | 2010-12-10 | 2012-06-14 | Texas Instruments Incorporated | Flash drive with multiple connectors |
US20120303854A1 (en) * | 2011-05-24 | 2012-11-29 | Raidundant LLC | Modular interface-independent storage solution system |
USRE46013E1 (en) | 2009-12-30 | 2016-05-24 | Sandisk Technologies Inc. | Method and controller for performing a copy-back operation |
USRE46201E1 (en) | 2009-12-30 | 2016-11-08 | Sandisk Technologies Llc | Method and controller for performing a sequence of commands |
US10114550B2 (en) | 2016-01-07 | 2018-10-30 | Samsung Electronics Co., Ltd. | Data storage device and data processing system including the data storage device |
US10248436B2 (en) * | 2015-08-21 | 2019-04-02 | Canon Kabushiki Kaisha | Electronic apparatus controlling connection with accessory device, accessory device, control methods therefor, and storage mediums storing control programs therefor |
US10614896B2 (en) * | 2018-06-12 | 2020-04-07 | Hitachi, Ltd. | Non-volatile memory device and interface configuration method |
Families Citing this family (16)
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 (fr) * | 2009-09-07 | 2011-03-10 | Tomtom International B.V. | Appareil de navigation et procédé de support d'une communication vocale main libre |
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 |
CN102750159B (zh) * | 2011-04-21 | 2017-08-25 | 中国银联股份有限公司 | 一种用于文件装载的方法和装置 |
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 | 中孚信息股份有限公司 | 一种可靠移动存储介质及实现方法 |
CN111277655A (zh) * | 2020-01-21 | 2020-06-12 | 山东公链信息科技有限公司 | 一种基于智能音箱的分布式存储系统 |
CN112612423A (zh) * | 2020-12-29 | 2021-04-06 | 芯启源电子科技有限公司 | 一种usb共享存储装置 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6292863B1 (en) | 1998-01-08 | 2001-09-18 | Tdk Corporation | PC card |
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 |
US20070055821A1 (en) * | 2003-11-28 | 2007-03-08 | Takeshi Ootsuka | Recording apparatus |
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 |
US20080126682A1 (en) * | 2006-11-24 | 2008-05-29 | Gang Zhao | Solid State Hard Disk |
US20080155160A1 (en) * | 2006-12-20 | 2008-06-26 | Mcdaniel Ryan Cartland | Block-based data striping to flash memory |
US20080320214A1 (en) * | 2003-12-02 | 2008-12-25 | Super Talent Electronics Inc. | Multi-Level Controller with Smart Storage Transfer Manager for Interleaving Multiple Single-Chip Flash Memory Devices |
US20090083476A1 (en) * | 2007-09-21 | 2009-03-26 | Phison Electronics Corp. | Solid state disk storage system with parallel accesssing architecture and solid state disck controller |
US20090164686A1 (en) * | 2007-12-21 | 2009-06-25 | Steven Theodore Sprouse | Duplicate sd interface memory card controller |
US7762470B2 (en) * | 2003-11-17 | 2010-07-27 | Dpd Patent Trust Ltd. | RFID token with multiple interface controller |
US7953930B2 (en) * | 2007-12-07 | 2011-05-31 | Sandisk Corporation | Device identifiers for nonvolatile memory modules |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040199491A1 (en) * | 2003-04-04 | 2004-10-07 | Nikhil Bhatt | Domain specific search engine |
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 |
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/fr active Application Filing
- 2009-07-16 EP EP09790547A patent/EP2318912A1/fr 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
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6292863B1 (en) | 1998-01-08 | 2001-09-18 | Tdk Corporation | PC card |
US7762470B2 (en) * | 2003-11-17 | 2010-07-27 | Dpd Patent Trust Ltd. | RFID token with multiple interface controller |
US20070055821A1 (en) * | 2003-11-28 | 2007-03-08 | Takeshi Ootsuka | Recording apparatus |
US20080320214A1 (en) * | 2003-12-02 | 2008-12-25 | Super Talent Electronics Inc. | Multi-Level Controller with Smart Storage Transfer Manager for Interleaving Multiple Single-Chip Flash Memory Devices |
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 |
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 |
US20080126682A1 (en) * | 2006-11-24 | 2008-05-29 | Gang Zhao | Solid State Hard Disk |
US20080155160A1 (en) * | 2006-12-20 | 2008-06-26 | Mcdaniel Ryan Cartland | Block-based data striping to flash memory |
US20090083476A1 (en) * | 2007-09-21 | 2009-03-26 | Phison Electronics Corp. | Solid state disk storage system with parallel accesssing architecture and solid state disck controller |
US7953930B2 (en) * | 2007-12-07 | 2011-05-31 | Sandisk Corporation | Device identifiers for nonvolatile memory modules |
US20090164686A1 (en) * | 2007-12-21 | 2009-06-25 | Steven Theodore Sprouse | Duplicate sd interface memory card controller |
Non-Patent Citations (1)
Title |
---|
International Search Report and Written Opinion for International Application No. PCT/US2009/050894, dated Sep. 4, 2009, 12 pages. |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
USRE46013E1 (en) | 2009-12-30 | 2016-05-24 | Sandisk Technologies Inc. | Method and controller for performing a copy-back operation |
USRE46201E1 (en) | 2009-12-30 | 2016-11-08 | Sandisk Technologies Llc | 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 |
US20120303854A1 (en) * | 2011-05-24 | 2012-11-29 | Raidundant LLC | Modular interface-independent storage solution system |
US10248436B2 (en) * | 2015-08-21 | 2019-04-02 | Canon Kabushiki Kaisha | Electronic apparatus controlling connection with accessory device, accessory device, control methods therefor, and storage mediums storing control programs therefor |
US10114550B2 (en) | 2016-01-07 | 2018-10-30 | Samsung Electronics Co., Ltd. | Data storage device and data processing system including the data storage device |
US10614896B2 (en) * | 2018-06-12 | 2020-04-07 | Hitachi, Ltd. | Non-volatile memory device and interface configuration method |
Also Published As
Publication number | Publication date |
---|---|
US20120331252A1 (en) | 2012-12-27 |
KR20110056276A (ko) | 2011-05-26 |
TW201013413A (en) | 2010-04-01 |
EP2318912A1 (fr) | 2011-05-11 |
CN102105856B (zh) | 2015-09-09 |
CN102105856A (zh) | 2011-06-22 |
US8539174B2 (en) | 2013-09-17 |
WO2010024978A1 (fr) | 2010-03-04 |
US20100057992A1 (en) | 2010-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8281062B2 (en) | Portable storage device supporting file segmentation and multiple transfer rates | |
US11640353B2 (en) | Memory system, data storage device, user device and data management method thereof | |
US8166258B2 (en) | Skip operations for solid state disks | |
US10126959B2 (en) | 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 | |
US7472251B2 (en) | Data storage apparatus detachably mounted to a host apparatus | |
US8166233B2 (en) | Garbage collection for solid state disks | |
US8291151B2 (en) | Enhanced host interface | |
US8489803B2 (en) | Efficient use of flash memory in flash drives | |
EP1496437A1 (fr) | Appareil de stockage de donnees | |
US20070033323A1 (en) | Interfacing systems operating through a logical address space and on a direct data file basis | |
KR102020466B1 (ko) | 버퍼 메모리 장치를 포함하는 데이터 저장 장치 | |
KR101055324B1 (ko) | 강화된 호스트 인터페이스 | |
US20060064568A1 (en) | Integrated circuit capable of mapping logical block address data across multiple domains | |
US20130173855A1 (en) | Method of operating storage device including volatile memory and nonvolatile memory | |
JP2009503740A (ja) | データファイルを直接記憶する再プログラム可能な不揮発性メモリ内のファイルデータの索引付け | |
KR20190091035A (ko) | 메모리 시스템 및 그것의 동작 방법 | |
US20100042798A1 (en) | Methods and Apparatus for Passing Information to a Host System to Suggest Logical Locations to Allocate to a File | |
WO2017176387A1 (fr) | Dispositif de stockage de données ayant des capacités d'étiquetage interne |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: SANDISK IL LTD.,ISRAEL Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:HAHN, JUDAH GAMLIEL;BRYANT-RICH, DONALD RAY;REEL/FRAME:021447/0708 Effective date: 20080818 Owner name: SANDISK IL LTD., ISRAEL Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:HAHN, JUDAH GAMLIEL;BRYANT-RICH, DONALD RAY;REEL/FRAME:021447/0708 Effective date: 20080818 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |
|
AS | Assignment |
Owner name: WESTERN DIGITAL ISRAEL LTD, ISRAEL Free format text: CHANGE OF NAME;ASSIGNOR:SANDISK IL LTD;REEL/FRAME:053574/0513 Effective date: 20191112 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
FEPP | Fee payment procedure |
Free format text: 11.5 YR SURCHARGE- LATE PMT W/IN 6 MO, LARGE ENTITY (ORIGINAL EVENT CODE: M1556); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 12 |