US8281062B2 - Portable storage device supporting file segmentation and multiple transfer rates - Google Patents

Portable storage device supporting file segmentation and multiple transfer rates Download PDF

Info

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
Application number
US12/199,023
Other languages
English (en)
Other versions
US20100057992A1 (en
Inventor
Judah Gamliel Hahn
Donald Ray Bryant-Rich
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Israel Ltd
Original Assignee
SanDisk IL Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SanDisk IL Ltd filed Critical SanDisk IL Ltd
Assigned to SANDISK IL LTD. reassignment SANDISK IL LTD. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BRYANT-RICH, DONALD RAY, HAHN, JUDAH GAMLIEL
Priority to US12/199,023 priority Critical patent/US8281062B2/en
Priority to EP09790547A priority patent/EP2318912A1/fr
Priority to KR1020117002195A priority patent/KR20110056276A/ko
Priority to CN200980129345.4A priority patent/CN102105856B/zh
Priority to PCT/US2009/050894 priority patent/WO2010024978A1/fr
Priority to TW098125249A priority patent/TW201013413A/zh
Publication of US20100057992A1 publication Critical patent/US20100057992A1/en
Priority to US13/603,765 priority patent/US8539174B2/en
Publication of US8281062B2 publication Critical patent/US8281062B2/en
Application granted granted Critical
Assigned to WESTERN DIGITAL ISRAEL LTD reassignment WESTERN DIGITAL ISRAEL LTD CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: SANDISK IL LTD
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/387Information 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-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)
US12/199,023 2008-08-27 2008-08-27 Portable storage device supporting file segmentation and multiple transfer rates Active 2031-07-01 US8281062B2 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (14)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
International Search Report and Written Opinion for International Application No. PCT/US2009/050894, dated Sep. 4, 2009, 12 pages.

Cited By (7)

* Cited by examiner, † Cited by third party
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