Removable media storage system with memory for storing operational data
Summary by NHIP
MRAM storage system
The system stores operational data on removable media using a non-volatile integrated circuit memory. This memory is a magnetoresistive random access memory with a programming voltage magnitude of no greater than 5.5 volts.
Claim Score by NHIP
Abstract
A removable media data storage system with a memory for storing operational data regarding a removable media. In some examples, the operational data stored includes utilization data and/or system data. In some embodiments, the operational data is stored in a non-volatile IC based memory such as e.g. MRAM. In some examples, the memory can store multiple sets of operational data with one set for each removable media that has been inserted into the data storage system. The data system may include a processor operably coupled to the memory, wherein the memory and processor are located on a circuit board in the data system housing.

Term
Term ended
Expired 19 April 2023, 3.4 years ago.
- Priority and filed
- Granted
- Expired
- Today
16 claims: 4 independent, 12 dependent
- 1A removable media storage system comprising:access circuitry for reading user data from a removable media when the removable media is coupled to the removable media storage system;a non-volatile integrated circuit-based memory, the non-volatile integrated circuit-based memory is configured to store operational data associated with the removable media that has been coupled to the removable media storage system;wherein the non-volatile integrated circuit-based memory is configured to store operational data associated with a plurality of removable media;wherein the operational data further comprises at least one of a master list, a list of defective sectors associated with the plurality of removable media and a list of unused storage sectors associated with the plurality of removable media;wherein the non-volatile integrated circuit-based memory includes a magnetoresistive random access memory (MRAM) having a programming voltage that has a magnitude of no greater than 5.5 volts.
- 8A removable media storage system comprising:access circuitry for reading user data from a removable media when the removable media is coupled to the removable media storage system;a non-volatile integrated circuit-based memory, the non-volatile integrated circuit-based memory is configured to store operational data associated with the removable media that has been coupled to the removable media storage system;wherein the operational data further includes utilization data;wherein the utilization data further includes information describing a number of times the removable media is accessed by the removable media storage system;wherein the non-volatile integrated circuit-based memory is configured to store operational data associated with a plurality of removable media;wherein the operational data further comprises at least one of a master list, a list of defective sectors associated with the plurality of removable media and a list of unused storage sectors associated with the plurality of removable media;wherein the non-volatile integrated circuit-based memory includes a magnetoresistive random access memory (MRAM) having a programming voltage that has a magnitude of no greater than 5.5 volts.
- 9Broadest claimClaim Score 50, average(NHIP)A method of storing information in a removable media storage system comprising:reading user data from a removable media where the removable media is coupled to the removable media storage system;storing operational data associated with the removable media in a non-volatile integrated circuit-based memory of to removable media storage system;coupling the removable media to the removable media storage system;prior to reading the user data from the removable media, determining whether a media identification number stored in the non-volatile integrated circuit-based memory matches an identifier associated with the removable media;and if there is no match, determining if there is available space to store operational data of the removable media in the non-volatile integrated circuit-based memory and writing the operational data in the available space, and if there is not sufficient space, using a predetermined method to select operational data of the non-volatile integrated circuit-based memory of a previously coupled removable media for overwriting with the operational data of the removable media.
- 16A removable media storage system comprising:removable media access circuitry, the removable media access circuitry configured to read user information from a removable media when the removable media is coupled to the removable media storage system for accessing user data on the removable media;a non-volatile integrated circuit-based memory, the non-volatile integrated circuit-based memory storing operational data associated with a removable media that has been coupled to the system;wherein the non-volatile integrated circuit-based memory is configured to store operational data associated with a plurality of removable media;wherein the operational data further comprises at least one of how many times each of the plurality of removable media has been accessed;wherein the non-volatile integrated circuit-based memory is a magnetoresistive random access memory (MRAM) that stores a media identification number for potential matching with an identifier associated with the removable media;wherein the magnetoresistive random access memory (MRAM) has a programming voltage that has a magnitude of no greater than 5.5 volts.
Independent claims4
115 paragraphs in 3 sections, as filed
BACKGROUND OF THE INVENTION
1. Field of the Invention
This invention relates in general to the storage of data and in particular to the storage of data in removable media data storage units.
2. Related Applications
This application is related to U.S. patent application Ser. No. 10/230,690 entitled “Hard Disk System With Non-Volatile IC Based Memory For Storing Data” having inventors Ronald W. Stance and John P. Hansen, having an assignee of Freescale Semiconductor Inc., and having a filing date of Aug. 29, 2002, which is hereby incorporated by reference in its entirety.
This application is related to U.S. patent application Ser. No. 10/230,788 entitled “Data Storage System Having A Non-Volatile IC Based Memory For Storing User Data” having inventors Ronald W. Stence, John P. Hansen, and David A. Hayner, having an assignee of Freescale Semiconductor Inc., and having a filing date of Aug. 29, 2002, which is hereby incorporated by reference in its entirety.
This application is related to U.S. Pat. No. 6,646,948 entitled “Data Storage System Utilizing A Non-Volatile IC Based Memory For Reduction Of Data Retrieval Time” having inventors Ronald W. Stance and John P. Hansen, having an assignee of Freescale Semiconductor Inc., and having a filing date of Aug. 29, 2002, which is hereby incorporated by reference in its entirety.
3. Description of the Related Art
Data storage media are used for the storage of data. Examples of data storage media include integrated circuit based storage media such a magno resistive random access memory (MRAM), dynamic random access memory (DRAM), static random access memory (SRAM), flash memory, electrically erasable programmable read only memory (EEPROM), erasable programmable read only memory (EPROM), read only memory (ROM), random access memory (RAM), and programmable read only memory (PROM). Examples of non integrated circuit based media include magnetic based storage media such as magnetic hard disks, tape, and floppy disks; optical based systems such as compact disk (CD) and digital video disk (DVD); and magneto-optic media. The non IC based memory types set forth above are mechanical in nature in that they require a mechanical operation (e.g. rotating a disk, moving a tape) to retrieve the data.
The data access time for IC based media is typically significantly faster than the access time for non IC based media. However, the cost per bit of data storage for non IC media is typically significantly less than that of IC based media. Accordingly, non IC based media are typically utilized for the “mass storage” of data.
The access time limitations utilizing non IC based media can reduce the operating efficiency of a system utilizing the media. What is needed is a system to improve the operating efficiency of non IC based media.
Furthermore with respect to removable media storage units, data that used for accessing data from a removable media is typically not non-volatilely stored in the removable media data storage system once the removable media is removed. Consequently, such information must be reaccessed when the removable media is reinserted.
BRIEF DESCRIPTION OF THE DRAWINGS
The present invention may be better understood, and its numerous objects, features, and advantages made apparent to those skilled in the art by referencing the accompanying drawings.
<figref idref="DRAWINGS">FIG. 1</figref> is a block diagram of an embodiment of a data storage system according to the present invention.
<figref idref="DRAWINGS">FIG. 2</figref> is a symbolic representation showing a prior art implementation of a master list.
<figref idref="DRAWINGS">FIG. 3</figref> is a flow diagram showing one embodiment of a data storage system performing a data access according to the present invention.
<figref idref="DRAWINGS">FIG. 4</figref> is a flow diagram of one embodiment of a data storage system implementing a cache for storing user data from an information device.
<figref idref="DRAWINGS">FIG. 5</figref> is a symbolic diagram showing one embodiment of a system for optimized sector retrieval from a media according to the present invention.
<figref idref="DRAWINGS">FIG. 6</figref> is a flow diagram of one embodiment of optimized sector retrieval from a media according to the present invention.
<figref idref="DRAWINGS">FIG. 7</figref> is a symbolic representation of one embodiment of a data storage system utilizing a non-volatile IC based media for storing user data according to the present invention.
<figref idref="DRAWINGS">FIG. 8</figref> is a symbolic representation of a data storage system implementing a non-volatile IC based media to store user data in conjunction with a redundant array of inexpensive disk (RAID) system according to the present invention.
<figref idref="DRAWINGS">FIG. 9</figref> is symbolic representation of a data storage system implementing a RAID.
<figref idref="DRAWINGS">FIG. 10</figref> is a top view of one embodiment of sector layout on a hard disk surface according to the present invention.
<figref idref="DRAWINGS">FIG. 11</figref> is diagram of one embodiment showing the storage of a part of a block of user data in a non-volatile IC based media of a data storage system according to the present invention.
<figref idref="DRAWINGS">FIG. 12</figref> is a flow diagram of one embodiment of a data write access according to the present invention.
<figref idref="DRAWINGS">FIG. 13</figref> is a flow diagram of another embodiment of a data write access according to the present invention
<figref idref="DRAWINGS">FIG. 14</figref> is a flow diagram of one embodiment of a data read access according to the present invention.
<figref idref="DRAWINGS">FIG. 15</figref> is a block diagram of an embodiment of a removable media data storage system according to the present invention.
<figref idref="DRAWINGS">FIG. 16</figref> is a flow diagram of an embodiment for utilizing operational data of a removable media by a data storage system according to the present invention.
The use of the same reference symbols in different drawings indicates identical items unless otherwise noted.
DETAILED DESCRIPTION
The following sets forth a detailed description of a mode for carrying out the invention. The description is intended to be illustrative of the invention and should not be taken to be limiting.
<figref idref="DRAWINGS">FIG. 1</figref> is a block diagram of a data storage system according to the present invention. In the embodiment shown, data storage system <b>110</b> includes a non IC based media <b>112</b> and circuitry for performing data accesses to media <b>112</b>. Data storage system <b>110</b> is operably coupled via an I/O bus <b>128</b> to receive from information device <b>141</b>, user data for storing on media <b>112</b> and to provide to information device <b>141</b>, user data retrieved from media <b>112</b>. User data is data used by information device <b>141</b>. Examples of user data may include executable program files, database files, multimedia data files such as music, video, and pictures, information files such as word processing documents or spreadsheets, and computer operator profiles for information device <b>141</b>. In one example, information device <b>141</b> is a personal computer system and data storage system <b>110</b> is a hard disk system (or sometimes referred to as a hard disk drive) mounted in a computer chassis (not shown) of the computer system. In such an example, bus <b>128</b> is a bus that conforms to a computer bus standard such as the IDE standard, Enhance IDE (EIDE) standard, or Small Computer System Interface (SCSI) standard. In other embodiments information device <b>141</b> may be e.g. a home media server, a personal video recorder, a cable or satellite set top boxes, a game console, an audio jukebox, a home security system, an automobile electronics, a personal digital assistant (PDA), a pager, a cell phone, an audio player, a central home communications hub, and a digital camera. In other embodiments, an information device can be a speaker, a display, headphones, microphones or other device that utilizes or provides user data stored in data storage system <b>110</b>.
In the embodiment shown, media <b>112</b> includes a hard disk for storing user data. In other embodiments, media <b>112</b> may include multiple hard disks, or other types of memory such e.g. an optical disk, tape, magneto-optic storage device, or any other media that is used to store data, or a combination of the types of media listed above.
Data storage system <b>110</b> includes a control system <b>111</b>. Control system <b>111</b> includes a processor <b>116</b> for controlling the operation of data storage system <b>110</b>. Processor <b>116</b> is operably coupled to bus <b>128</b> to provide and receive user data from information device <b>141</b>. Processor <b>116</b> provides via HEAD CONTROL signal line and amplifier <b>119</b>, a head control signal to head actuator <b>131</b> to move a read/write head <b>113</b> to the appropriate track of media <b>112</b> for a data access. Processor <b>116</b> also provides a motor control signal via MOTOR CONTROL line and amplifier <b>122</b> to spindle motor <b>114</b> for maintaining motor <b>114</b> at a constant speed. Processor <b>116</b> provides data via a WRITE signal line and amplifier <b>120</b> to the read/write head <b>113</b> for writing the data to a specified sector. Processor <b>116</b> receives data from the read/write head <b>113</b> via the READ line and amplifier <b>118</b>. Control system <b>111</b> includes a program memory <b>124</b> for storing program code that processor <b>116</b> executes to perform its operations. Those of skill in the art will appreciate that a data storage system may include other conventional circuitry and devices not shown in <figref idref="DRAWINGS">FIG. 1</figref>. Also, other types of data storage systems may be configured to implement the teachings herein.
Control system <b>111</b> includes a non-volatile memory <b>126</b> that is operably coupled to processor <b>116</b>. In one embodiment, memory <b>126</b> is implemented in an IC based memory such as MRAM. MRAM is a non-volatile memory that stores data magnetically. With MRAM memory, the data stored in the MRAM is alterable during operation. With some MRAM, data in the memory may be programmed by voltages no greater than 5.5 volts. Most MRAM is programmed by voltages of less than 2 volts. Accordingly, the voltages required for powering the electronic components of control system <b>111</b> can be used to program memory <b>126</b>. In one embodiment, memory <b>124</b> and <b>126</b> are implemented in the same integrated circuit. In other embodiments, memories <b>124</b> and <b>126</b> are implemented in the same memory array. In some embodiments, the portions of the array allocable to the program memory <b>124</b> and memory <b>126</b> may be variable during the operation of the storage system. In another embodiment, the master list may be stored at variable locations in memory <b>126</b>. In one embodiment, processor <b>116</b>, program memory <b>124</b>, and memory <b>126</b> are implemented on a circuitry board (not shown) along with other electronic devices (not shown) of control system <b>111</b>.
A master list <b>127</b> for hard disk <b>112</b> is “non-volatilely” stored in memory <b>126</b>. A master list typically includes an entry for each file stored in storage media <b>112</b>. Each entry includes the physical location on media <b>112</b> of the sector storing the first block of data for that file.
<figref idref="DRAWINGS">FIG. 2</figref> is a symbolic representation of a master list and the top surface of a hard disk surface illustrating an example of how data is conventionally stored on a hard disk. In the embodiment of <figref idref="DRAWINGS">FIG. 2</figref>, a file is stored on hard disk surface <b>212</b> in three blocks of user data labeled DATA A, DATA B, and DATA C, stored at sector <b>215</b>, sector <b>216</b>, and sector <b>217</b>, respectively of hard disk surface <b>212</b>. Sector block <b>206</b> shows the data stored at sector <b>215</b>, sector block <b>208</b> shows the data stored at sector <b>216</b>, and sector block <b>210</b> shows the data stored at sector <b>217</b>. Each sector block (<b>206</b>, <b>207</b>, and <b>208</b>) includes a header, a block of user data stored at that sector (e.g. sector block <b>206</b> includes block DATA A), and a tail portion that includes the physical location of the sector storing the next block of user data of the file. For example, the tail of sector block <b>206</b> includes the physical location of the sector <b>216</b> which stores block DATA B.
To retrieve a file stored on disk surface <b>212</b>, a data storage processor (e.g. <b>116</b>) first accesses master list <b>205</b> to get the physical location of the sector <b>215</b> storing the first block of user data (DATA A). The processor then accesses the data at sector <b>215</b> to obtain the user data at that location and the physical location of sector <b>216</b> (at which the next block of user data (DATA B) is stored). The physical location of sector <b>217</b> is located in the tail section of sector block <b>208</b>, which is stored at sector <b>216</b>. An end of file (EOF) marker is located in the tail section of sector block <b>210</b>, which is stored at sector <b>217</b>. The EOF marker indicates that sector block <b>210</b> includes the last portion of data of the file.
In conventional hard disk systems, the master list is stored in a sector (or more) of the hard disk. In order to access a file, the processor of a hard disk system accesses the master list on the hard disk to obtain the location of the first sector block of file data. When a new file is written to the hard disk, a new entry is created in the master list. The new entry includes the physical location of the sector storing the first block of data of the file.
Referring back to <figref idref="DRAWINGS">FIG. 1</figref>, because master list <b>127</b> of data storage system <b>110</b> is stored in an IC based non-volatile memory; the access time to the master list is significantly reduced in that hard disk <b>112</b> need not be accessed to access master list <b>127</b>. Accordingly, the access time for a file can be reduced due to at least one less access to hard disk <b>112</b>. Additionally. because master list <b>127</b> is non-volatilely stored in memory <b>126</b>, the master list is automatically current even in the event of an emergency power down. Furthermore, the time for writing a new file to a disk is reduced in that the master list does not have to be retrieved from hard disk <b>112</b> and then written back to hard disk <b>112</b> with the entry for a new file.
In addition, typically in hard disk systems, the master list is stored on a sector of the hard disk surface. If the sector of the hard disk becomes corrupted, then the entire data storage system becomes unusable. With some non IC based memories (e.g. hard disk systems or tape drive systems), the chances of data stored in non IC based memory becoming corrupted is greater than that for data stored in IC based memories such as e.g. an MRAM memory. Consequently, using these more reliable memories may make the data storage system more reliable. Additionally, in some embodiments, a back up of the master list may be stored on a hard disk as well. With some of these embodiments, the back up of the master list may be stored at any location on hard disk <b>112</b>. Also with these embodiments, processor <b>116</b> may compare the backup master list with the original list for errors.
<figref idref="DRAWINGS">FIG. 3</figref> is a flow diagram of one embodiment of a data access according to the present invention. The flow chart of <figref idref="DRAWINGS">FIG. 3</figref> is performed by processor <b>116</b> executing code stored in program memory <b>124</b>. In <b>302</b>, processor <b>116</b> receives an access request from information device <b>141</b>. In <b>304</b>, processor <b>116</b> determines whether the access is a read access or a write access. If the access is a read access, processor <b>116</b> in <b>307</b> accesses master list <b>127</b> in memory <b>126</b> to find the location of the first sector storing data of the requested filed. In <b>310</b>, processor <b>116</b> retrieves the file from the sectors of hard disk <b>112</b>. If the access is determined to be a write access in <b>304</b>, processor <b>116</b> performs the write access in <b>306</b> and updates master list <b>127</b> in <b>308</b>.
In the example of <figref idref="DRAWINGS">FIG. 2</figref>, each entry of master list <b>205</b> includes the physical location on hard disk surface <b>212</b> of the first sector of hard disk surface <b>212</b> storing a block of data of the file associated with that entry. However, in some embodiments of the present invention, the master list may include other data and/or additional data for each file entry. For example, referring to <figref idref="DRAWINGS">FIG. 5</figref>, the entry <b>520</b> for each file in the master list includes the location of each sector storing a block of data of that file. See the discussion of <figref idref="DRAWINGS">FIG. 5</figref> below.
In other embodiments, processor <b>116</b> may be configured to store other types of system data in memory <b>126</b>. For example, memory <b>126</b> may store lists identifying defective sectors of media <b>112</b>, lists of available sectors on media <b>112</b>, lists identifying defective sectors and substitute sectors for the defective sectors (defective sector substitute lists), and list of copy protected sectors and/or data on media <b>112</b>. Memory <b>126</b> may also be configured to store read/write channel parameters such as e.g. head gain and servo parameters such as e.g. torque constants. Memory <b>126</b> may store other types of system data depending upon the media type of media <b>112</b> and on how data is stored in media <b>112</b>. Storing system data in a non-volatile IC based memory enables a data storage system processor to more quickly access the system data, thereby reducing the overall access time of user data by the data storage system.
Non-volatile memory <b>126</b> may also be used to store user data received from information device <b>141</b>. Utilizing memory <b>126</b> to store user data may improve the performance, speed, and/or efficiency of the data storage system.
<figref idref="DRAWINGS">FIG. 4</figref> is a flow diagram of a method for handing data accesses where a portion of memory <b>126</b> is utilized to cache user data. In the embodiment of <figref idref="DRAWINGS">FIG. 4</figref>, a user data file received from information device <b>141</b> is stored in memory <b>126</b>. Thus, if there is a later request for the file, the file stored in memory <b>126</b> can be provided to information device <b>141</b> in less time than if media <b>112</b> was accessed to obtain the data.
Referring to <figref idref="DRAWINGS">FIG. 4</figref>, processor <b>116</b> receives an access request from information device <b>141</b>. If in <b>414</b>, the access request is determined to be a write access, processor <b>116</b> checks to see if memory <b>126</b> is full in <b>430</b>. If memory <b>126</b> is not full, then processor <b>116</b> writes in <b>434</b> the received data to memory <b>126</b>. If in <b>430</b> memory <b>126</b> is determined to be full, then in <b>432</b> processor <b>116</b> executes a cache clearing algorithm to write a file currently stored in memory <b>126</b> to media <b>112</b> in order to make room in memory <b>126</b> for the received data. In <b>434</b>, the data received from information device <b>141</b> is written to memory <b>126</b>. In one example, the cache clearing algorithm involves removing the earliest written data in memory <b>126</b> to the media <b>112</b>. In another embodiment, the cache clearing algorithm includes removing the data that was least recently used. Another cache clearing algorithm would be to remove a file or files of the same size as the data to be cached. Those of skill in the art will appreciate that, based upon the teachings herein, other cache clearing algorithms may be implemented.
If in <b>414</b>, the access is determined to be a read access, processor <b>116</b> checks in <b>416</b> to see if the requested data is cached in memory <b>126</b>. If the requested data is found in memory <b>126</b>, then the requested data is retrieved from memory <b>126</b> in <b>422</b> and provided to information device <b>141</b>. If the requested data is not found in memory <b>126</b> as determined in <b>416</b>, the processor retrieves the requested data from media <b>112</b>.
In another embodiment, processor <b>116</b> would determine that a file stored in media <b>112</b> has been frequently accessed within a predetermined time and would write that file to memory <b>126</b>. Thus, the time needed to provide that file to information device <b>141</b> would be greatly reduced.
By caching user data in an IC based memory of the data storage system, the access time to provide that data to an information device is greatly reduced. Furthermore, by utilizing a non-volatile memory for caching the data, the data stored in memory <b>126</b> will be saved even in the event of a power loss. Thus, if there is a copy of a file stored in media <b>112</b> and in memory <b>126</b>, the copy of the file in memory <b>126</b> would be the more recent copy, thereby eliminating the need to determine which of the copies is the more recent copy.
Furthermore, utilizing memory <b>126</b> as a cache for data writes enables data storage system <b>110</b> to execute a succeeding data access more quickly after a data write. With some conventional data storage systems, a data storage system can not process a data access after a data write, until the data of that data write is written to the non IC based media (e.g. hard disk). However, if a portion of memory <b>126</b> is utilized as a buffer for the data write, the data storage system <b>110</b> can execute a second data access immediately after the data write in that the data of the first data write is immediately written to the IC based memory <b>126</b>. Because memory <b>126</b> is a non-volatile memory, the user data would remain in memory <b>126</b> even if power is removed from data storage system <b>110</b>. Accordingly, in some embodiments, there is no urgency to write data stored in memory <b>126</b> to storage system <b>110</b>, and thus, the data can be written to media <b>112</b> during periods of non access by information device <b>141</b>.
In other embodiments, the data storage system would cache in memory <b>126</b> a number of data files received from information device <b>141</b>, wherein processor <b>116</b> would perform a write burst to write the files to hard disk <b>112</b> at one time. Accordingly, the power consumed by the hard disk system <b>110</b> may be reduced in that the power required for a burst write of multiple files may be less than the power required for multiple single writes for each of the files.
In one embodiment, to implement a write buffering system set forth above into the flow chart of <figref idref="DRAWINGS">FIG. 4</figref>, a cache clearing algorithm as used in <b>432</b> would be configured to ensure that there is always adequate buffer space available in memory <b>126</b> for a data write. Thus, if an access is determined to be a data write in <b>414</b>, processor <b>116</b> would immediately write the data to memory <b>126</b>.
If the method of <figref idref="DRAWINGS">FIG. 4</figref> is implemented in a data storage system that includes removable media (see e.g. <b>1512</b> of <figref idref="DRAWINGS">FIG. 15</figref>), the data stored in memory <b>1526</b> (see <figref idref="DRAWINGS">FIG. 15</figref>) would written to media <b>1512</b> in response to a request to remove the media.
Referring to <figref idref="DRAWINGS">FIGS. 5 and 6</figref>, data retrieved from media <b>112</b> in response to a read access request from information device <b>141</b> may also be buffered in memory <b>126</b> to decrease the time needed for the read access. Referring to <figref idref="DRAWINGS">FIG. 5</figref>, a file <b>519</b> of user data may be stored in a plurality of sectors (e.g. <b>531</b>) of a hard disk surface <b>501</b>. In the example of <figref idref="DRAWINGS">FIG. 5</figref>, file <b>519</b> includes <b>6</b> blocks of data (<b>521</b>, <b>522</b>, <b>523</b>, <b>524</b>, <b>525</b>,and <b>526</b>), with each block being stored in a different sector of disk surface <b>501</b>. For example, block <b>521</b> is stored in sector <b>531</b> of disk surface <b>501</b>.
With some data storage systems, the blocks of data may be stored in non consecutive sectors of a disk surface requiring a read/write head (e.g. <b>113</b>) of a data storage system to move back and forth between multiple tracks to retrieve the data. For example, sector <b>531</b> (which stores the first block of data <b>521</b> of file <b>519</b>) is located in track <b>552</b> of a disk surface <b>501</b>. Sector <b>532</b> (which stores the second block of data <b>522</b>) is located in track <b>551</b>. Sector <b>533</b> (which stores the third block of data <b>523</b>) is located in track <b>551</b>. Conventionally, to retrieve the data for this file, a read head (e.g. <b>113</b>) would be required to move to track <b>552</b> to retrieve the first block <b>521</b> stored in sector <b>531</b>, then move to track <b>551</b> to retrieve the second data block <b>522</b> stored in sector <b>532</b>, and then move back to track <b>552</b> to retrieve the third data block <b>523</b> stored in sector <b>533</b>. Consequently, the retrieval time under conventional methods may be lengthy due to the movement of a read head (e.g. <b>113</b>) between tracks during a read access.
Embodiments of the present invention implement out of order data reads to optimize data retrieval time. In these embodiments, data may be retrieved in a nonsequential order and buffered in memory <b>126</b> before being provided to information device <b>141</b>. Referring to <figref idref="DRAWINGS">FIG. 5</figref>, in these embodiments, each file entry (e.g. <b>520</b>) of master list <b>127</b> includes the location of each sector (e.g. <b>531</b>) of disk surface <b>501</b> that stores a block of data of the file associated with the file entry. For example, master list entry <b>520</b> includes the locations L<b>1</b>, L<b>2</b>, L<b>3</b>, L<b>4</b>, L<b>5</b>, and L<b>6</b> of sectors <b>531</b>, <b>532</b>, <b>533</b>, <b>534</b>, <b>535</b>, and <b>536</b>, respectively. Including locations for each sector storing data of a file in a file entry of a master list may advantageously allow a system retrieve data in a non sequential order. Thus, reducing the time needed to retrieve a data file.
<figref idref="DRAWINGS">FIG. 6</figref> is a flow diagram of one embodiment of a method for handling a data access by a data storage system that implements out of order data retrieval. In <b>603</b>, when processor <b>116</b> receives a data access request for a file from information device <b>141</b> and determines that the requested access is a read in <b>605</b>, processor <b>116</b> accesses the entry of master list <b>127</b> associated with the requested file to retrieve the locations of the sectors storing data for that file in <b>607</b>. In this embodiment, each entry in master list <b>127</b> is similar to entry <b>520</b> of <figref idref="DRAWINGS">FIG. 5</figref> in that it contains the location of every sector storing data of the file associated with the entry.
In <b>609</b>, processor <b>116</b> sorts the locations (e.g. L<b>1</b>, L<b>2</b>) of the sectors (e.g. <b>531</b>, <b>532</b>) to determine an optimal route for retrieving the data in those sectors. The rules for determining a optimal route are dependent upon the operation of a data storage system in retrieving data. For example, with some conventional hard disk systems, it takes more time to move from track to track than to move to different sectors in a track. Accordingly, one scheme would be to retrieve all blocks of a file stored in sectors of one track before proceeding to the next track. With other conventional hard disk systems, the time need to rotate between sectors of a track is greater than the time to travel to a require track from a previous track. An optimal route would be determined accordingly.
Another factor in determining an optimal route may include the position of the read/write head (e.g. <b>113</b>) on a hard disk when the read request is received. Another factor in determining an optimal route is the operation of a data storage system in transferring the requested data to an information device (e.g. <b>141</b>). In one embodiment, the objective of an optimization scheme is to minimize the total time in providing requested data to an information device from the time that the data was requested by the information device
In the embodiment of <figref idref="DRAWINGS">FIG. 5</figref>, if read/write head <b>113</b> is located on an outer track, the data storage system would first retrieve the data on track <b>551</b> (e.g. the data on sectors <b>532</b>, <b>534</b>, and <b>535</b>) and then retrieve the data on track <b>552</b> (the data on sectors <b>531</b>, <b>536</b>, and <b>533</b>). The particular order of data retrieved within a track would depend upon the location of the read/write head when entering the track. In one example, an optimal sector retrieval route would be an order of sectors <b>532</b>, <b>534</b>, <b>535</b>, <b>531</b>, <b>536</b>, and <b>533</b>.
Referring back to <figref idref="DRAWINGS">FIG. 6</figref>, after a determination of an optimal retrieval route in <b>609</b>, processor <b>116</b> in <b>611</b> retrieves the data in the first sector of the route and buffers the data in memory <b>126</b> in <b>615</b>. For the retrieval route set forth above, processor <b>116</b> first retrieves data block <b>522</b> in sector <b>532</b> and writes data block <b>522</b> into memory <b>126</b> (see <figref idref="DRAWINGS">FIG. 5</figref>). In <b>615</b>, processor <b>116</b> determines whether the data in memory <b>126</b> includes the data block that is next to be transferred to information device <b>141</b>. Because, at this time, memory <b>126</b> only includes the second data block <b>522</b> and because the first data block <b>521</b> has not been transferred to information device <b>141</b>, processor <b>116</b> goes back to <b>611</b> to retrieve the data (block <b>524</b>) from the next sector in the route (sector <b>534</b>) and then proceeds to <b>613</b> to write data block <b>524</b> into memory <b>126</b>. Because, the first data block <b>521</b> has not been retrieved, processor <b>116</b> returns to <b>611</b> until it retrieves block <b>521</b> from sector <b>531</b>. At this time, data blocks <b>521</b>, <b>522</b>, <b>524</b>, and <b>525</b> are stored in memory <b>126</b>. Accordingly, in <b>615</b>, processor <b>116</b> determines that the next data block (<b>521</b>) to be transferred to information device <b>141</b> is located in memory <b>126</b>. In <b>627</b>, data block <b>521</b> is transferred to information device <b>141</b>. Processor <b>116</b> then goes back to <b>615</b> where it determines that the next data block to be transferred (data block <b>522</b>) is buffered in memory <b>126</b> and accordingly, data block <b>522</b> is transferred in <b>627</b>. Because, at this time, the next data block to be transferred is not in memory <b>126</b>, processor <b>116</b> goes back to <b>611</b> to retrieve the next data block <b>526</b> from sector <b>536</b> and writes block <b>526</b> into memory <b>126</b> in <b>613</b>. Because in <b>615</b>, data block <b>523</b> (the next block to be transferred) is not in memory <b>126</b>, processor <b>116</b> then goes back to <b>611</b> to retrieve block <b>523</b> from sector <b>533</b>. Because block <b>523</b> is now in memory <b>126</b>, processor <b>116</b> then transfers block <b>523</b> to information device <b>141</b>. Because the remaining blocks <b>524</b>, <b>525</b>, and <b>526</b> are also in memory <b>126</b>, processor <b>116</b> continues to loop through <b>615</b> and <b>627</b> wherein the remaining blocks are transferred to information device <b>141</b> in successive order. At <b>615</b>, when no more data is left to be transferred, processor <b>116</b> goes to <b>619</b>, where, because all of the blocks for the file have been retrieved, the operation ends in <b>623</b>.
In other embodiments, a data storage system may utilize other types of out of order optimal retrieval methods. For example, processor <b>116</b> may be programmed to retrieve the first data block of a file e.g. <b>521</b> and then buffer all of the blocks located in sectors on the same track as the sector storing the first data block. The processor would then go to the track having the sector storing the next data block to be transferred (provided that that data block was not located in the track of the sector storing the first block) and retrieve and buffer all of the data blocks of that file that are stored in sectors of that track. Accordingly, under such a scheme, read/write head <b>113</b> would retrieve data from a track once per retrieval. Also in other embodiments, the data may be buffered in another types of memory such as e.g. DRAM or SRAM.
Providing a master list that includes the location of all sectors containing data of a file enables a data storage system in the embodiment of <figref idref="DRAWINGS">FIG. 6</figref> to implement an out of order retrieval. Because, the locations of all of the files are known to the processor, the processor does not have to retrieve the data in successive order. In other embodiments, the master list may store other information to indicate the location of a sector storing data for a file. For example, in some embodiments, each sector location field of a file entry of a master list may include a consecutive number field indicating the number of consecutive sectors in a track from the sector associated with the sector location entry that contain consecutive blocks of data of a file. Thus, a data storage system processor (e.g. <b>116</b>) could determine from the master list that a group of consecutive sectors includes blocks of data for a file. Accordingly, such a master list would contain only one sector location field per track for a group of consecutively ordered blocks located in consecutive sectors of the track.
In some embodiments, user data received from information device <b>141</b> can be non volatility stored in memory <b>126</b> in order to reduce the time of data retrievals and/or to “effectively” increase the capacity of the of the non IC based storage media.
<figref idref="DRAWINGS">FIG. 7</figref> shows a symbolic representation of an embodiment for utilizing memory <b>126</b> to non-volatilely store user data to in order to reduce the retrieval time of a file stored on hard disk surface <b>712</b>. In this embodiment, memory <b>126</b> is used to non-volatilely store user data of a file that, if the file was completely stored on hard disk surface <b>712</b>, would have a relatively long retrial time. For example, a file of user data initially consists of first data block DATA A stored in sector A of bard disk surface <b>712</b>, a second data block DATA B stored in sector B of disk surface <b>712</b>, and a third data block DATA C stored in sector C of disk surface <b>712</b>. The retrieval time for the file consisting of the three data blocks DATA A, DATA B, and DATA C is relatively short in that the data blocks are stored in three consecutively ordered sectors A, B, and C. Sector blocks <b>706</b>, <b>708</b>, and <b>710</b> represent the data stored at sectors A, B, and C, respectively.
After the file (consisting of DATA A, DATA B, and DATA C) is initially stored on disk surface <b>712</b>, information device <b>141</b> provides data storage system <b>110</b> with a revision to the file. The revision includes an additional data block DATA D (as shown in sector block <b>714</b>). Because there is no other available sectors located on the same tract of disk surface <b>712</b> as sectors A, B, and C, storing DATA D on disk surface <b>712</b> would greatly increase the time for retrieving the file in that the retrieval of the file would involve moving the read head between two different tracks at least twice. However, in the embodiment of <figref idref="DRAWINGS">FIG. 7</figref>, sector block <b>714</b> is stored in memory <b>126</b>, wherein the tail section of sector block <b>708</b> sets forth the location (LOC D) in memory <b>126</b> that data block DATA D is stored. The tail section of sector block <b>714</b> sets forth the location (LOC C) of sector C on disk surface <b>712</b> where data block DATA C is stored. Because DATA D is stored in the IC based memory <b>126</b>, the time needed to retrieve the revised filed (consisting of data blocks A, B, C, and D) is about the same as the time needed to retrieve the original file (consisting of data blocks A, B, and C).
Memory <b>126</b> may be utilized in other ways to non-volatilely store user data to increase the speed of data retrieval or to increase the effective capacity of media <b>112</b>. For example, if a file of user data is of a length where the last data block of a file is a few bytes, those few bytes may be stored in memory <b>126</b>, as opposed to occupying an entire sector of media <b>112</b>. In one embodiment, processor <b>116</b> would be programmed with a price per sector of media <b>112</b> and a price per byte of media <b>126</b>. If the number of bytes of the end block of the file is small enough such the cost of storing the data in memory <b>126</b> is less than the cost of utilizing an entire sector of media <b>112</b>, then processor <b>116</b> stores the last block in memory <b>126</b>. In another embodiment, if only a middle block of a file is revised such that it exceeds the size to be stored on a sector, the portion of the revised data block exceeding the size of the sector may he stored in memory <b>126</b>.
In other embodiments, memory <b>126</b> may be utilized to store data that otherwise is to be stored in a sector that has been determined to be defective. One such example is with a data storage system implementing a redundant array of inexpensive disk (RAID) system. <figref idref="DRAWINGS">FIG. 9</figref> is a representation of a portion of a hard disk system implementing a RAID system. Hard disk system <b>901</b> includes two hard disks <b>904</b> and <b>905</b> wherein information is stored on both sides of hard disks <b>904</b> and <b>905</b>. <figref idref="DRAWINGS">FIG. 8</figref> shows each side of hard disks <b>904</b> and <b>905</b> where hard disk surface <b>807</b> is located on the bottom side of hard disk <b>905</b>, hard disk surface <b>808</b> is located on the top side of disk <b>905</b>, hard disk surface <b>809</b> is located on the bottom surface of disk <b>904</b>, and hard disk surface <b>810</b> is located on the top surface of hard disk <b>904</b>.
Conventionally with a RAID system, user data is stored in blocks located on multiple hard disk surfaces. The drive circuitry of a storage system implementing the RAID system concurrently drives each of the surfaces together such that the read/write heads associated with each surface are positioned over the sector for each of the surfaces having the same sector location. The data blocks on each sector having the same sector location on each surface is read in parallel to obtain data of the file. This technique for storing data on multiple disk surfaces is sometimes referred to as data striping.
Referring to <figref idref="DRAWINGS">FIG. 8</figref> and <figref idref="DRAWINGS">FIG. 9</figref>, because disks <b>904</b> and <b>905</b> are moved simultaneously to the same sector on each disk surface (e.g. <b>807</b>), if one of the sectors is defective (e.g. sector <b>822</b> is defective as indicated by the “X” on surface <b>808</b>), then the sectors of that sector location (e.g. <b>821</b>, <b>822</b>, <b>823</b>, and <b>824</b>) for all of the disk surfaces are considered unusable. Consequently, a defect in one sector of a sector location is multiplied by the number of disk surfaces operating in parallel.
In one embodiment in a system implementing data striping on multiple hard disk surfaces (such as e.g. with a RAID system), if one sector of a disk surface is determined to be defective, the data block that is intended to be written to that defective sector is instead stored in memory <b>126</b>. The other data blocks are stored in the other sectors of the other disk surfaces having the same sector location as though there were no defective sectors at that sector location. For example, in <figref idref="DRAWINGS">FIG. 8</figref>, because sector <b>822</b> is defective, the data that is to be written to the sector is written instead to memory <b>126</b> wherein the other data blocks of the data stripe are written to sectors <b>821</b>, <b>823</b>, and <b>824</b> (the sectors of the hard disk surfaces <b>807</b>, <b>809</b>, and <b>810</b> that have the same sector location as sector <b>822</b>). By utilizing memory <b>126</b> to store data intended to be written to a defective sector, the defective sector does not render unusable the other sectors having that sector location on other disk surfaces.
In other embodiments, a non-volatile, IC based memory may be utilized in a data storage system to increase the amount of data stored in the non IC based media of a data storage system. Referring to <figref idref="DRAWINGS">FIG. 10</figref>, for conventional hard disk surfaces (e.g. <b>1010</b>), data is stored on sectors (e.g. <b>1029</b>) in a sector partition (e.g. sector partition <b>4</b>) located on tracks (e.g. track <b>18</b>) that encircle a hub <b>1020</b> of the hard disk. The sectors are typically located between sector lines (e.g. <b>1031</b> and <b>1032</b>), which define the sector partitions. In some embodiments, servo data may be stored on the sector lines (e.g. <b>1031</b> and <b>1032</b>). Examples of servo data include the track number, the sector number, and analog data used to position read/write head <b>113</b> within a track. Conventionally, each sector is sized to hold a standard size block of data (e.g. 512 bytes in one example). With some examples, multiple sectors may be located in a track of a sector partition.
Because the sectors of conventional hard disks are located in tracks with each having a different radius with respect to the hub (e.g. <b>1020</b>), portions of the tracks may be unusable in that disk surface space of a track in a sector partition is less than the required space needed to store a standard size block of data. For example, the amount of disk space in sector partition <b>4</b> (located between sector lines <b>1031</b> and <b>1032</b>) in tracks <b>23</b> and <b>22</b> is less than what is needed to store a standard size block of data (e.g. 512 bytes). Space <b>1012</b> on track <b>23</b> of sector partition <b>4</b> is short the amount of space <b>1016</b> shown by the dashed lines located in track <b>23</b> immediately to the right side of sector line <b>1032</b>, relative to the view shown in <figref idref="DRAWINGS">FIG. 10</figref>. The portions shown by the dashed lines immediately to the right side of sector line <b>1032</b> represent the amount of space that the disk surface space located immediately on the left side of sector line <b>1032</b> is deficient in storing a standard size block of data. For example, portion <b>1023</b> represents the amount of disk space that space <b>1024</b> of track <b>20</b> is deficient in storing a standard size block of data. Accordingly, with conventional systems, these spaces would not be utilized, resulting in wasted storage space on a disk surface.
<figref idref="DRAWINGS">FIG. 11</figref> is a representation of a portion of data stored in memory <b>126</b> according to some embodiments of the present invention. In some embodiments of the present invention, spaces of a hard disk surface that have less available storage space than what is needed to store a standard size block of data, can be used to store a portion of a standard size block of data, with the other portion of the standard size block of data being stored in memory <b>126</b>. For example, a portion of a standard size block of data is stored in space <b>1012</b> of track <b>23</b> (see <figref idref="DRAWINGS">FIG. 10</figref>). The remaining portion of the standard size block of data (whose size is that of space <b>1016</b> in <figref idref="DRAWINGS">FIG. 10</figref>) is stored in memory <b>126</b> at location <b>1116</b>. Memory <b>126</b> also stores the remaining portions of standard size blocks of data whose other portions are stored on hard disk surface <b>1010</b>. For example, memory location <b>1115</b> of memory <b>126</b> stores the remaining portion (whose size is indicated by portion <b>1015</b>) of a standard size block of data whose other portion is stored at location <b>1011</b> (see <figref idref="DRAWINGS">FIG. 10</figref>).
In some embodiments, the location in memory <b>126</b> associated with each deficient space on surface <b>1010</b> is reserved for that space. For example, block <b>1130</b> of memory <b>126</b> is reserved for storing the deficient portions for all disk spaces of all partition sectors of track <b>23</b>. With some embodiments, the first portion of a block of data would be stored in memory <b>126</b> and the remaining portion would be stored on disk surface <b>1010</b>. In one embodiment, a determination of whether to use memory <b>126</b> to store a portion of a standard size block of data would depend upon the cost of storing that portion in memory <b>126</b> versus the savings from the use of the space on the hard disk storing the other portion.
To retrieve a block of data in the embodiments of <figref idref="DRAWINGS">FIGS. 10 and 11</figref>, processor <b>116</b> would retrieve the portion of the data from the disk space (e.g. <b>1012</b>) and the portion of the data stored in memory <b>126</b> (e.g. location <b>1116</b>). See the discussion regarding <figref idref="DRAWINGS">FIG. 14</figref>. Processor <b>116</b> would combine the portions before providing them to information device <b>141</b>. Because the remaining portion of the data is stored in an IC based memory (e.g. <b>126</b>), the retrieval time for the block including the remaining portion is essentially the same as the retrieval time for a block that is entirely stored in a sector of a hard disk. Accordingly, storing portions of a standard-size block of data in an IC based, non-volatile memory may advantageously allow for better utilization of a hard disk surface.
Some conventional hard disk systems are configured such that a sector may be located on both sides of a sector line (e.g. <b>1031</b>). With these systems, the hard disk system includes program code for extracting the data from a sector that crosses a sector line (e.g. the system includes code for removing the servo data that is stored in the sector line from the user data of the sector). Utilizing memory <b>126</b> to store portions of user data (e.g. as shown in <figref idref="DRAWINGS">FIGS. 10 and 11</figref>) may allow a system to be configured where no sectors cross sector lines, in that the remaining portion of a sector block is stored in memory <b>126</b>. Accordingly, the program code described above would not be needed for such embodiments.
In some embodiments, in order to speed up the retrieval time of a file of user data stored in data storage system <b>110</b>, a portion of the file can be written to the IC based memory <b>126</b> for non-volatile storage with the rest of the data being stored in non IC based media <b>112</b>. With some of these embodiments, the decision as to which data is written to the IC based memory (e.g., <b>126</b>) and which data is written to the non IC based media (e.g., <b>112</b>) is dependent upon the retrieval times of the data stored in the non IC based media. With some of these embodiments, it is desired to reduce the overall retrieval time of a file as seen by the information device (e.g. <b>141</b>) in retrieving the file from the data storage system (e.g. <b>110</b>).
<figref idref="DRAWINGS">FIG. 12</figref> sets forth one embodiment of a write operation for implementing a system for non-volatilely storing portions of a file of user data in an IC based non-volatile memory so as to speed up the retrieval time of the file according to the present invention. In the embodiment of <figref idref="DRAWINGS">FIG. 12</figref>, a leading portion of the next data to be written to the non IC based media <b>112</b> is written to the IC based memory <b>126</b> so as to reduce the retrieval time of that data. The flow chart of <figref idref="DRAWINGS">FIG. 12</figref> is implemented by the processor <b>116</b> of the data storage system <b>110</b>.
In <b>1201</b>, processor <b>116</b> begins to execute the method set forth in <figref idref="DRAWINGS">FIG. 12</figref> in response to receiving a write access request from information device <b>141</b>. Data storage system <b>110</b> stores a file of user data in blocks with each block being stored, in one embodiment, in a sector located on a disk surface of media <b>112</b>. In one embodiment, the sectors used for storing a file are obtained from an unused sector list (not shown), stored in memory <b>126</b>. In other embodiments, if the file to be written is a revision, the first sector is the first sector storing data of the previous version, as indicated by master list <b>127</b>. In <b>1203</b>, the sector number (N) is set to 1 and in <b>1205</b>, the first block of data is written to Sector <b>1</b> on media <b>112</b> (the first sector obtained from the unused sector list).
In <b>1207</b>, processor <b>116</b> determines the seek time to the next sector (N+1) from the first sector (N). The next sector is the next sector obtained from the unused sector list (for a new file) or the next sector that stores the next block of data of a previous version. The seek time is the time needed for read/write head <b>113</b> to travel from the end of the first sector (N) to the next sector (N+1). In the case where the next sector is the next consecutive in the same track as the previous sector (See for example disk surface <b>712</b> of <figref idref="DRAWINGS">FIG. 7</figref> showing sectors A, B, and C in consecutive order on the same track), the seek time is relatively short. However, if the next sector (N+1) is located on a different track from the previous sector (N), then the seek time would be relatively long.
In <b>1210</b>, processor <b>116</b> determines the size of the data to be stored in memory <b>126</b>. The size the data to be stored in memory <b>126</b> is based on the seek time between the sector in which the data was previously written (N) and the next sector (N+1). If the next sector is the next consecutive sector in the track from the previous sector, processor <b>116</b> may determine in <b>1210</b> that no data needs to be stored in memory <b>126</b> due to the relatively short seek time. If however, the seek time is relatively longer, processor <b>116</b> would determine in <b>1210</b> the amount of data to be stored in memory <b>126</b>.
The data that is stored in memory <b>126</b> is the leading portion of the data that is be stored in the next sector. Such data would include the header of the sector block of the next sector as well as the leading portion of the user data for the next sector. In <b>1211</b>, the leading portion is written to memory <b>126</b>. In <b>1213</b>, processor <b>116</b> writes an indication to master list <b>127</b> (or other portion of memory <b>126</b>) that a leading portion of the next block of data is located in memory <b>126</b>.
In <b>1215</b>, data is written to the next sector (N+1). In one embodiment, only the remaining portion (the portion not written to memory <b>126</b>) of the next data block of user data (the data after the data block written to the previous sector (N)) is written to the next sector (N+1). Thus, for a system having a standard sector block size of 512 bytes, if the first 62 bytes were written to memory <b>126</b>, then the remaining 450 bytes of a 512 byte block would be written to the next sector (N+1). In other embodiments, the next standard sector block size of data of a file would be written to the next sector (N+1). For example,. if 62 bytes of a file were written to memory <b>126</b>, then the next 512 bytes of the file would be written to the next sector (N+1). In other embodiments, the entire next block size of data including the leading portion of data written to memory <b>126</b> is written to the next sector (N+1) (e.g. the next 512 bytes of data including the 62 bytes of data written to memory <b>126</b>). With this embodiment, an entire copy of the file is stored in media <b>112</b>. In some embodiments, the portion written memory <b>126</b> may be greater than the standard size block of data (e.g. 512 bytes). Still in other embodiments, if the seek time is greater than a predetermined threshold, then a standard size block of the next data (e.g. 50 bytes, 100 bytes, 512 bytes or 1024 bytes) is stored in memory <b>126</b>. In embodiments where the data stored in the next sector block (N+1) is also stored in memory <b>126</b>, processor <b>116</b> may skip a read of sector N+1 and go to sector N+2 during a read access.
In <b>1219</b>, a determination is made whether all of the data of a file is stored in data storage system <b>110</b>. If yes, then the process is ended. If no, N is incremented to N+1 in <b>1221</b> and processor <b>116</b> goes back to <b>1207</b> and repeats the method until all of the data of a file is stored. With the embodiments of <figref idref="DRAWINGS">FIG. 12</figref>, during a data access of the file, processor <b>116</b> can provide the leading portion data stored in memory <b>126</b> to information device <b>141</b> while the read/write head <b>113</b> is moving to the next sector.
<figref idref="DRAWINGS">FIG. 13</figref> sets forth another embodiment of a write operation for implementing a system for storing portions of a file of user data in an IC based non-volatile memory of a data storage system so as to speed up the retrieval time of the file according to the present invention. The embodiment of <figref idref="DRAWINGS">FIG. 13</figref> is similar to the embodiment of <figref idref="DRAWINGS">FIG. 12</figref> except that in the embodiment of <figref idref="DRAWINGS">FIG. 13</figref>, a trailing portion of the data written to a sector of the non IC based media <b>112</b> is written to the IC based memory <b>126</b>. In this method, when there is a long seek time between two sectors, the read/write head (e.g. <b>113</b>) can be moved from a first sector to the next sector prior to the completion of the reading of data stored in the first sector.
In <b>1301</b>, processor <b>116</b> begins to execute the method set forth in <figref idref="DRAWINGS">FIG. 13</figref> in response to receiving a write request from information device <b>141</b> to store a file of user data. In <b>1303</b>, the sector number (N) is set to 1, and in <b>1304</b>, the first block of data of the file is written to sector N (the first sector of media <b>112</b> designated for storing the file) on media <b>112</b>. If the end of the file (EOF) has not been reached as determined in <b>1305</b>, then in <b>1307</b>, processor <b>116</b> determines the location of the next sector (N+1) designated for storing a file on media <b>112</b>. In <b>1309</b>, processor <b>116</b> calculates the seek time from current sector (N) (sector <b>1</b> during this loop of the method) to the next sector (N+1).
In <b>1310</b>, processor <b>116</b> determines the size of the trailing portion (which is to be stored in memory <b>126</b>) of the data written to the current sector (N) in <b>1304</b>. The trailing portion is the last portion of the data that is to be written to a sector. In some embodiments, the trailing portion includes the location of the next sector. The size of the trailing portion to be stored in memory <b>126</b> is based on the seek time between the current sector (N) and the next sector (N+1). If the next sector (N+1) is the next consecutive sector in the track from the current sector (N), processor <b>116</b> may determine in <b>1310</b> that no data needs to be stored in memory <b>126</b> due to the relatively short seek time. If however, the seek time is relatively long, processor <b>116</b> would determine in <b>1310</b> the amount of data to be stored in memory <b>126</b>. In some embodiments, a standard size of a trailing portion is stored in memory <b>126</b> if the seek time meets particular threshold. In some embodiments, the entire block of data written to sector N would be written to memory <b>112</b> if the seek time to sector N+1 is long enough. In embodiments where the entire sector block is stored in memory <b>126</b>, processor <b>116</b> may control read/write head <b>113</b> to skip from sector N−1 to sector N+1.
In <b>1311</b>, the trailing portion having a size determined in <b>1310</b> is stored in memory <b>126</b>. In <b>1314</b>, an indication that a trailing portion for that sector is written to master list <b>127</b>. However, in some embodiments, the trailing portions of data are stored sequentially in memory <b>126</b> along with an indication of which sector block the particular trailing portion belongs. Thus, processor <b>116</b> can determine for which sector blocks a trailing portion in memory <b>126</b> is stored by reading the location in memory <b>126</b> that stores the trailing portions. In <b>1315</b>, N is incremented by one wherein processor <b>116</b> goes back to <b>1304</b> to repeat the process.
In the embodiment of <figref idref="DRAWINGS">FIG. 13</figref>, all of the data of a file is written to a sector of media <b>112</b>, including the data that is written to memory <b>126</b>. However, in other embodiments, only the data of a file not written to memory <b>126</b> is written media <b>112</b>.
To retrieve a file that is stored by the method of <figref idref="DRAWINGS">FIG. 13</figref>, if processor <b>116</b> determines that the trailing portion of a sector block is stored in memory <b>126</b>, processor <b>116</b> will move read/write head <b>113</b> during a read of the sector storing the sector block after all of the data of the sector block that is not stored in memory <b>126</b> is read. Processor <b>116</b> then combines the tail portion data in memory <b>126</b> with the data read from the sector of media <b>112</b> and provides the data to information device <b>141</b>. Because the tail portion of a sector block of data is stored in memory <b>126</b>, read/write head <b>113</b> can be moved prior to the completion of a data read of the sector storing the sector block, thereby reducing the time needed to retrieve a file in storage system <b>110</b>.
With other embodiments, the beginning part of a file may be stored in memory <b>126</b> and the remaining part of the file would be stored in media <b>112</b>. Accordingly, when a request for a file is made, processor <b>116</b> can provide the beginning part of the file to information device <b>141</b> while moving read/write head <b>113</b> to retrieve the remaining portion of the data. In one example, a predetermined size of the beginning portion of a file (e.g. 100 bytes, 1000 bytes, or 20 data blocks) would be stored in memory <b>126</b>. The size of the beginning portion would depend upon how long it takes a data storage system to retrieve data from media <b>112</b> in response to a read request.
<figref idref="DRAWINGS">FIG. 14</figref> shows an embodiment of a read access operation of data stored in data storage system <b>110</b>. The method set forth in <figref idref="DRAWINGS">FIG. 14</figref> can be used, with modifications, to retrieve user data stored in both media <b>112</b> and memory <b>126</b>, as for example, shown and described herein with regards to the embodiments of <figref idref="DRAWINGS">FIGS. 4</figref>, <b>7</b>, <b>8</b>, <b>9</b>, <b>10</b>, <b>11</b>, <b>12</b>, and <b>13</b> and described in the associated text to those Figures, as well as other embodiments not explicitly described herein.
In <b>1400</b>, processor <b>116</b> begins to execute the method set forth in <figref idref="DRAWINGS">FIG. 14</figref> in response to receiving a read request for a file from information device <b>141</b>. In <b>1403</b>, processor <b>116</b> determines whether any data of the file is stored memory <b>126</b>. In some embodiments, an indication whether data of a file is stored in memory <b>126</b> is found in an entry for the file in master list <b>127</b>. In other embodiments, memory <b>126</b> includes a cache list of files cached in memory <b>126</b> that would be accessed by processor <b>116</b> in response to a request for a file. If in <b>1403</b> no data is determined to be stored in <b>126</b>, then the file would be retrieved from media <b>112</b>. With some embodiments, no general indication that any data of a file is stored in memory <b>126</b>. With these embodiments, an indication of whether data of a file is stored in memory <b>126</b> would be determined on a sector by sector basis. See, for example the embodiment of <figref idref="DRAWINGS">FIG. 7</figref>.
If yes in <b>1403</b>, processor <b>116</b> determines whether all of the data of a file is stored in memory <b>126</b>. If an entire file is stored in memory <b>126</b>, then in <b>1406</b>, processor <b>116</b> retrieves the file from memory <b>126</b>. See, for example, the embodiment of <figref idref="DRAWINGS">FIG. 4</figref> where all of the data of a file may be cached in memory <b>126</b>. However, for those embodiments that would not store an entire file in memory <b>126</b>, blocks <b>1404</b> and <b>1406</b> may be omitted.
If no in <b>1404</b>, processor <b>116</b> determines in <b>1407</b> whether any of the first block of user data is stored in memory <b>126</b>. If yes, processor <b>116</b> retrieves that portion of the block of data from memory <b>126</b> in <b>1411</b> and then retrieves the other portion (if any) of the block of data from a sector of media <b>112</b> in <b>1412</b>. In <b>1413</b>, processor <b>116</b> combines the portion retrieved from memory <b>126</b> and the portion retrieved from media <b>112</b>. If the combined data block does not contain an end of file indication (EOF), then processor <b>116</b> goes back to <b>1407</b> until all of the data is obtained. If no in <b>1407</b>, processor <b>116</b> obtains the data from the sector in media <b>112</b>.
Those of skill in the art will appreciate, based upon the teachings herein, that the method of data retrieval set forth in <figref idref="DRAWINGS">FIG. 14</figref> may be modified based upon how user data is stored in both media <b>112</b> and memory <b>126</b>. For example, referring to the embodiment of <figref idref="DRAWINGS">FIG. 7</figref>, the decision of whether to access memory <b>126</b> or memory <b>112</b> for a block of data is made based upon the location information in the tail of a sector block (e.g. <b>706</b>). In the embodiment of <figref idref="DRAWINGS">FIGS. 10 and 11</figref> and also the embodiment of <figref idref="DRAWINGS">FIGS. 8 and 9</figref>, the decision of whether to access memory <b>126</b> is based upon the actual sector location on a disk surface in media <b>112</b>. With the embodiment of <figref idref="DRAWINGS">FIGS. 10 and 11</figref>, part of the program of retrieving a data block from media <b>112</b> would include comparing the sector location with a table of sector locations (not shown) that includes the sector locations (e.g. <b>1012</b>) with deficient spaces and the address in memory <b>126</b> (e.g. location <b>1116</b>) where the remaining portion of the data for those sector blocks is stored. With the embodiment of <figref idref="DRAWINGS">FIGS. 8 and 9</figref>, processor <b>116</b> would access a table of defective sectors that includes the address in memory <b>126</b> storing the data block for each defective sector. Such tables may be stored in memory <b>126</b>, program memory <b>124</b>, or other memory (not shown) accessible by processor <b>116</b>.
<figref idref="DRAWINGS">FIG. 15</figref> is a block diagram of an embodiment of a removable media data storage system according to the present invention. Removable media data storage system <b>1510</b> retrieves (and in some embodiments writes) user data from removable media <b>1512</b>, which is inserted into the data storage system, and provides the user data to information device <b>1541</b> (and in some embodiments receives user data from information device <b>1541</b> for storage). In one embodiment, data storage system <b>1510</b> is a compact disk (CD) drive, that can either be read only or read/write. In other embodiments, data storage system <b>1510</b> may be any one of e.g. a DVD player, a portable CD player, a CD ROM drive, a tape drive, a removable floppy disk drive, a system with removable hard disks, or any other storage system capable of receiving removable media. In general a removable media is any media that is designed to be removable from the removable media data storage system. In the embodiment shown, removable media is designed to be removed from data storage system <b>1510</b> including read/write head <b>1513</b> and spindle motor <b>1514</b>, wherein an other removable media may be inserted in its place. However, in some embodiments, the removable media may include (and be removable with) other circuitry shown in <figref idref="DRAWINGS">FIG. 15</figref> such as a read/write head or drive circuitry (e.g. spindle motor).
In the embodiment shown in <figref idref="DRAWINGS">FIG. 15</figref>, data storage system <b>1510</b> includes control circuitry <b>1511</b> for controlling the operation of storage system <b>1510</b>. Control circuitry <b>1511</b> includes a processor <b>1516</b> and a program memory <b>1524</b> for storing code that is executed by processor <b>1516</b>. Control circuitry <b>1511</b> also includes a non-volatile IC based memory <b>1526</b> for storing operational data regarding the removable media (e.g. <b>1512</b>). In some embodiments, memory <b>1526</b> is implemented with a MRAM memory. In one embodiment, control circuitry <b>1511</b> is implemented on a circuit board (not shown) located in the housing (not shown) of data storage system <b>1510</b>. In some embodiments, memory <b>1524</b> and memory <b>1526</b> are implemented in the same memory array.
In the embodiment of <figref idref="DRAWINGS">FIG. 15</figref>, memory <b>1526</b> includes a table <b>1527</b> that stores two types of operational data, system data (stored in system data fields <b>1532</b>) and utilization data (stored in utilization data fields <b>1533</b>), regarding each removable media. Examples of system data <b>1532</b> include master lists, defective sector lists, unused sector lists, defective sector substitute lists, copy protection features, or other similar types of system data that is specific for the type of removable media e.g. <b>1512</b>. In other embodiments, memory <b>1526</b> may be configured to store only one of system data or utilization data for a removable media.
Utilization data is information regarding the use of a media in the storage of data. Examples of utilization data include e.g.: the number of times a media has been accessed, the number of times each file stored on a media has been accessed, the times that particular files on a media have been accessed, the last location in the media that was accessed, the number of times that any media has been accessed by system <b>1510</b>, the user who requested the file, error checking and correction data regarding a file, and security data. For example, for a DVD player, a type of utilization data would be the last location of a disk that was being played before a user turned off the system.
In the embodiment of <figref idref="DRAWINGS">FIG. 15</figref>, table <b>1527</b> is configured to store system data (in fields <b>1532</b>) and utilization data (in fields <b>1533</b>) for a number of removable media that have previously been inserted into data storage system <b>15</b><b>10</b>. Consequently, if a particular removable media is reinserted into data storage system <b>1510</b>, processor <b>15</b><b>16</b> can access operational data regarding that media from table <b>1527</b>. For example, if data storage system <b>1510</b> is a DVD player, table <b>1527</b> could be used to store the last location played of the last <b>20</b> DVDs played by the player. With such a system, a user could stop the player at a particular point in a movie and remove the media. Days later, a user could reinsert the media, wherein processor <b>1516</b> could access the utilization data of field <b>1533</b> to determine that last location where the movie was stopped. With such a system, the DVD player could provide the user with the option of resuming play from the location last stopped.
Each entry (e.g. <b>1542</b>) of table <b>1527</b> includes an ID field <b>1531</b>, which stores an identification indication of the removable media associated with the data in the entry. Each entry also includes a system data field <b>1532</b> (e.g. represented by “A” for entry <b>1542</b>) in which system data associated with the removable media is stored and a utilization data field (e.g. represented by “M” for entry <b>1542</b>) in which utilization data associated with the removal media is stored. Processor <b>1516</b> utilizes the ID field <b>1531</b> to determine if a media has been previously inserted into system <b>1510</b>. If the media as been inserted, processor <b>1516</b> retrieves its operational data for that removable media from the entry associated with its ID.
Data storage system <b>1510</b> includes access circuitry for data accesses to removable media <b>1512</b>. In the embodiment of <figref idref="DRAWINGS">FIG. 15</figref>, the access circuitry includes a read/write head <b>1513</b> for reading data from removable media <b>1512</b> and for writing (for system that can write to the removable media) data to removable media <b>1512</b>. Read/write head <b>1513</b> is operably coupled to provide retrieved data from media <b>1512</b> to processor <b>1516</b> via a READ signal line and amplifier <b>1518</b> and to received data to be written to media <b>1512</b> via the WRITE signal line and amplifier <b>1520</b>. Processor <b>1516</b> controls the movement of read/write head <b>1513</b> via a HEAD CONTROL signal line to actuator <b>1530</b>. Processor <b>1516</b> also controls the rotation of the spindle motor <b>1514</b> with a signal sent via the MOTOR CONTROL line and amplifier <b>1522</b>.
<figref idref="DRAWINGS">FIG. 16</figref> is a flow chart of one embodiment of a method for utilizing a removable media by data storage system <b>1510</b>. In response to an indication that a removable media (e.g. <b>1512</b>) has been inserted in <b>1603</b>, processor <b>1516</b> in <b>1605</b> retrieves an identification indication (ID) from the removable media. In one embodiment, the ID is globally unique to the particular removable media. For example, if system <b>1510</b> were a hard disk drive, each removable hard disk would include a unique serial number or a number that is unique to the group of media such as e.g. a lot number. In other embodiments, the identification information would be unique as to the user data stored on the disk. For example, in one embodiment, the ID may be a movie title or music CD title or a UPC number for a music CD. In other embodiments, the ID may be a number added by a user.
In <b>1607</b>, processor <b>1516</b> compares the ID from the inserted removable media with the IDs stored in field <b>1531</b> to determine if table <b>1527</b> includes operational data associated with the inserted removable media. If the ID of the inserted removable media is found in table <b>1527</b>, processor <b>1516</b> retrieves the operational data stored in that entry in <b>1609</b>. If the ID is not found in table <b>1527</b>, then processor <b>1516</b> retrieves any operational data from the inserted removable media in <b>1512</b>, such as e.g. master lists, defective sectors, and unused files. In one embodiment, such information may be found on a boot sector of a removable media.
In <b>1612</b>, processor <b>1516</b> accesses table <b>1527</b> to determine whether there is enough room in table <b>1527</b> to store the operational data of the inserted removable media. In one embodiment, table <b>1527</b> is sized to hold the operational data of a predetermined number of removable media (e.g. <b>100</b>) that have been inserted into data storage system <b>1510</b>. If the operational data of a predetermined number of removable media is already stored in table <b>1527</b> of memory <b>1526</b>, then in <b>1613</b> processor <b>1516</b> selects a table entry in table <b>1527</b> for overwriting with the ID and operational data of the inserted removable media. In one embodiment, processor <b>1516</b> selects the table entry for a removable media that has been used the least. In another embodiment, processor <b>1516</b> overwrites the table entry for the removable media that has been the least recently used. Still in other embodiments, the table entry designated for overwriting would be chosen based on various criteria including both frequency of insertion and order of insertion of removable media. After <b>1613</b> or if yes in <b>1612</b>, processor <b>1516</b> in <b>1614</b> stores the ID and operational data for the inserted media in table <b>1527</b> of memory <b>1526</b>.
In <b>1615</b>, data storage system <b>1510</b> operates using the operational data that was stored in table <b>1527</b>. In one embodiment, the operational data includes a master list which processor <b>1516</b> accesses for data accesses of files stored in the inserted removable media. See the previous discussions in this application regarding master lists for the embodiments of data storage system <b>110</b> of <figref idref="DRAWINGS">FIG. 1</figref>. Also, as with the discussions regarding data storage system <b>110</b>, system data may include defective sector lists, unused sectors lists, defective sector substitute lists, copy protection features, or any other data that is used by the processor <b>1516</b> to access user data on the inserted removable media. Those of skill in the art will recognize, based on the teachings herein, that the type of system data that is stored in table <b>1527</b> may depend upon how user data is stored in the removable media. For example, for a CD storing songs, the master list may include on which tracks certain songs are stored.
An advantage of storing system data in a non-volatile IC based memory of a removable media data storage system is that it may allow the data storage system to more quickly retrieve data from the removable media. Furthermore, because the memory is non-volatile, operational data for multiple removable media may be stored in table <b>1527</b> and be available after a power down operation. Consequently, one advantage that may occur with such a system is that the time needed to access the data may be reduced in that once processor <b>1516</b> recognizes the ID of the removable media, processor <b>1516</b> may begin the access of user data from the removable media without having to load system data for the removable media.
Another advantage that may occur from including a master list in memory <b>1526</b> is that it may reduce the number of accesses to the removable media for data writes. Typically, with some removable media that are writeable, every write access to the removable media requires that the master list on the removable media be updated. However with some embodiments of data storage system <b>1510</b>, because the master list may be stored in memory <b>1526</b>, the master list stored on media <b>1512</b> would not necessarily have to be updated for every write. In one embodiment, the master list on removable media <b>1512</b> would be updated only when removable media <b>1512</b> is to be removed from system <b>1510</b>.
In <b>1616</b>, processor <b>1516</b> generates operational data during the operation of data storage system <b>1510</b> and stores that data in table <b>1527</b> of memory <b>1526</b>. For example, processor <b>1516</b> may store in the utilization field <b>1533</b> of the table entry (e.g. <b>1542</b>) for the removable media, the number of times a file (e.g. a song, movie, executable file) stored on media <b>1512</b> is accessed. In one embodiment, this information may be provided upon request to information device <b>1541</b>. In another embodiment, the operational data may be used to cache into memory <b>1526</b>, the most accessed file from media <b>1512</b> to reduce the access time in providing that file to information device <b>1541</b>. Other types of utilization data generated in <b>1616</b> includes the number of times the file has been utilized.
When media <b>1512</b> is determined to be removed from data storage system <b>1510</b> in <b>1617</b>, processor <b>1516</b> stores operational data regarding the end of use of removable media <b>1512</b> in table <b>1527</b>. In one embodiment, data storage system <b>1510</b> includes a sensor (not shown) for sensing when an inserted removable media (e.g. <b>1512</b>) is removed from data storage system <b>1510</b>. Examples of such end of use operational data include the last file accessed, the last time accessed, the fact that the file was accessed, and the fact that the removable media was inserted, the time of use of the system, a user who accessed the data.
Those of skill in the art will appreciate that, based upon the teachings herein, memory <b>1526</b> may be utilized in ways similar to those describe herein with respect to memory <b>126</b>. For example, referring to <figref idref="DRAWINGS">FIG. 4</figref>, memory <b>1526</b> may be utilized to cache the most recently accessed or most often accessed file stored in removable media <b>1512</b>. Thus, the access time for that file may be greatly reduced in that media <b>1512</b> does not have to be accessed to retrieve a well-used file. In addition, if media <b>1512</b> is written to, then the writes to media <b>1512</b> may be cached in memory <b>1526</b>, thereby allowing an immediately subsequent data access. In such embodiments, if there is a request to remove the media, then all data in memory <b>1526</b> that is not already in media <b>1512</b> could be written to media <b>1512</b> before removal.
Furthermore, features described with respect to the embodiments of removable data storage system <b>1510</b> may also be implemented by embodiments of data storage system <b>110</b>. For example, data storage system <b>110</b> may be configured to store utilization data in memory <b>126</b>. For example, data storage system <b>110</b> may be configured to store the number of times a file stored in media <b>112</b> is accessed and/or revised.
While particular embodiments of the present invention have been shown and described, it will be recognized to those skilled in the art that, based upon the teachings herein, further changes and modifications may be made without departing from this invention and its broader aspects, and thus, the appended claims are to encompass within their scope all such changes and modifications as are within the true spirit and scope of this invention.
Contents3
13 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13
Every citation, both waysCites: the store holds 48 of 49
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US8239914B2 | Cited by | United States of America | Applicant |
| US8934503B2 | Cited by | United States of America | Applicant |
| US2009307563A1 | Cited by | United States of America | Pre-grant |
| CN105278870A | Cited by | China | Search report |
| US2016011983A1 | Cited by | United States of America | Pre-grant |
| US2007022241A1 | Cited by | United States of America | Pre-grant |
| US2010211852A1 | Cited by | United States of America | Pre-grant |
| US2007294738A1 | Cited by | United States of America | Pre-grant |
| US7715437B2 | Cited by | United States of America | Applicant |
| US8578434B2 | Cited by | United States of America | Applicant |
| US9560420B2 | Cited by | United States of America | Applicant |
| US2006026661A1 | Cited by | United States of America | Pre-grant |
| US2009064210A1 | Cited by | United States of America | Pre-grant |
| US8122322B2 | Cited by | United States of America | Applicant |
| US7302534B2 | Cited by | United States of America | Search report |
| US2008046952A1 | Cited by | United States of America | Pre-grant |
| US7835398B2 | Cited by | United States of America | Applicant |
| US10248362B2 | Cited by | United States of America | Applicant |
| US8494002B2 | Cited by | United States of America | Applicant |
| US2003061623A1 | Cited by | United States of America | Pre-grant |
| US7991010B2 | Cited by | United States of America | Applicant |
| US8321765B2 | Cited by | United States of America | Search report |
| US8212829B2 | Cited by | United States of America | Applicant |
| US9606932B2 | Cited by | United States of America | Search report |
| US2007067561A1 | Cited by | United States of America | Pre-grant |
| US8732788B2 | Cited by | United States of America | Applicant |
| US7881821B2 | Cited by | United States of America | Applicant |
| US2004230997A1 | Cited by | United States of America | Pre-grant |
| EP1037211A2 | Cites | European Patent Office (EPO) | Applicant |
| US5197026A | Cites | United States of America | Applicant |
| US5269019A | Cites | United States of America | Applicant |
| US5376965A | Cites | United States of America | Search report |
| US5396617A | Cites | United States of America | Applicant |
| US5448429A | Cites | United States of America | Search report |
| US5587951A | Cites | United States of America | Applicant |
| US5654566A | Cites | United States of America | Applicant |
| US5675778A | Cites | United States of America | Applicant |
| US5701450A | Cites | United States of America | Applicant |
| US5825708A | Cites | United States of America | Applicant |
| US5883749A | Cites | United States of America | Applicant |
| US5898165A | Cites | United States of America | Applicant |
| US5907717A | Cites | United States of America | Applicant |
| US5951691A | Cites | United States of America | Applicant |
| US5978257A | Cites | United States of America | Applicant |
| US6016530A | Cites | United States of America | Search report |
| US6025971A | Cites | United States of America | Applicant |
| US6054825A | Cites | United States of America | Applicant |
| US6085299A | Cites | United States of America | Search report |
| US6225933B1 | Cites | United States of America | Applicant |
| US6233171B1 | Cites | United States of America | Applicant |
| US6252471B1 | Cites | United States of America | Applicant |
| US6252795B1 | Cites | United States of America | Applicant |
| US6272040B1 | Cites | United States of America | Applicant |
| US6298016B1 | Cites | United States of America | Applicant |
| US6314020B1 | Cites | United States of America | Applicant |
| US6330626B1 | Cites | United States of America | Applicant |
| US6330648B1 | Cites | United States of America | Search report |
| US6381171B1 | Cites | United States of America | Applicant |
| US6424486B1 | Cites | United States of America | Applicant |
| US6430660B1 | Cites | United States of America | Applicant |
| US6462992B1 | Cites | United States of America | Applicant |
| US6496406B1 | Cites | United States of America | Applicant |
| US6502174B1 | Cites | United States of America | Applicant |
| US6515908B1 | Cites | United States of America | Applicant |
| US6597049B1 | Cites | United States of America | Applicant |
| US6621731B1 | Cites | United States of America | Applicant |
| US6646948B1 | Cites | United States of America | Applicant |
| US6681287B1 | Cites | United States of America | Applicant |
| US6707628B1 | Cites | United States of America | Applicant |
| US6743641B1 | Cites | United States of America | Applicant |
| US6748524B1 | Cites | United States of America | Search report |
| US6751073B1 | Cites | United States of America | Applicant |
| US6757694B1 | Cites | United States of America | Search report |
| US6771446B1 | Cites | United States of America | Search report |
| US6779168B1 | Cites | United States of America | Search report |
| US6782458B1 | Cites | United States of America | Search report |
| Fahey, Jonathan; <i>Total Recall</i>; Forbes.Com—Magazine Article; Apr. 30, 2001; 2 pages; http://www.forbes.com/global/2001/0430/054. print.html; Printed Aug. 20, 2002. | Non-patent | – | Third party observation |
| Lammers, David; <i>The Promise of MRAM</i>; EE Times; Jul. 8, 2002; 2 pages; http://www.eetimes.com/story/OEG20020708S0017; Printed Jul. 18, 2002. | Non-patent | – | Third party observation |
| Johnson, R. Collin; <i>Nanoscale Metal Deposition Eyed For MRAMs</i>; EE Times, Aug. 19, 2002; 2 pages; http://www.eetimes.com/story/OEG20020819S0046; Printed Aug. 23, 2002. | Non-patent | – | Third party observation |
| Wong, May; <i>Unheralded Hard Drives A Catalyst For Better Gadgets</i>; Austin American-Statesman; Monday, Jul. 29, 2002; Business Section; p. E5. | Non-patent | – | Third party observation |
| PCT Search Report PCT/US03/024184 mailed Dec. 11, 2003. | Non-patent | – | Third party observation |
| Fahey, Jonathan; Total Recall; Forbes.Com-Magazine Article; Apr. 30, 2001; 2 pages; http://www.forbes.com/global/2001/0430/054. print.html; Printed Aug. 20, 2002. | Non-patent | – | Applicant |
| Lammers, David; The Promise of MRAM; EE Times; Jul. 8, 2002; 2 pages; http://www.eetimes.com/story/OEG20020708S0017; Printed Jul. 18, 2002. | Non-patent | – | Applicant |
| Johnson, R. Collin; Nanoscale Metal Deposition Eyed For MRAMs; EE Times, Aug. 19, 2002; 2 pages; http://www.eetimes.com/story/OEG20020819S0046; Printed Aug. 23, 2002. | Non-patent | – | Applicant |
| Wong, May; Unheralded Hard Drives A Catalyst For Better Gadgets; Austin American-Statesman; Monday, Jul. 29, 2002; Business Section; p. E5. | Non-patent | – | Applicant |
| PCT Search Report PCT/US03/024184 mailed Dec. 11, 2003. | Non-patent | – | Applicant |
14 members in 8 offices
Priority claims2
| Document | Office | Kind | Date |
|---|---|---|---|
| 23186802 | United States of America | A | |
| US20020231868 | – | – | – |
Members14
| Document | Office | Kind | |
|---|---|---|---|
| US6646948B1 | United States of America | B1 | |
| US2004042111A1 | United States of America | A1 | |
| US2004042112A1 | United States of America | A1 | |
| US2004044849A1 | United States of America | A1 | |
| WO2004021350A1 | World Intellectual Property Organization (WIPO) | A1 | |
| AU2003257128A1 | Australia | A1 | |
| TW200413907A | Taiwan Province of China | A | |
| KR20050057006A | Republic of Korea | A | |
| EP1550131A1 | European Patent Office (EPO) | A1 | |
| CN1679107A | China | A | |
| JP2005537609A | Japan | A | |
| US7006318B2This record | United States of America | B2 | |
| US7096378B2 | United States of America | B2 | |
| US7170706B2 | United States of America | B2 |
46 transactions on the USPTO file
Allowed after 1 non-final rejection and 1 final rejection.
- Non-final rejections
- 1
- Final rejections
- 1
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Supplemental ResponseSA.. | SA.. | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Final ActionA.NE | A.NE | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Final ActionA.NE | A.NE | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Mail Advisory Action (PTOL - 303)MCTAV | MCTAV | |
| Advisory Action (PTOL-303)CTAV | CTAV | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Final ActionA.NE | A.NE | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) Filed | – | |
| Information Disclosure Statement (IDS) Filed | – | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| IFW TSS Processing by Tech Center CompleteTSSCOMP | TSSCOMP | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Information Disclosure Statement (IDS) Filed | – | |
| Information Disclosure Statement (IDS) Filed | – | |
| Reference capture on IDSRCAP | RCAP | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Information Disclosure Statement (IDS) Filed | – | |
| Information Disclosure Statement (IDS) Filed | – | |
| Information Disclosure Statement (IDS) Filed | – | |
| Information Disclosure Statement (IDS) Filed | – | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Information Disclosure Statement (IDS) Filed | – | |
| Information Disclosure Statement (IDS) Filed | – | |
| Transfer Inquiry to GAUTI1050 | TI1050 | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Application Is Now CompleteCOMP | COMP | |
| IFW Scan & PACR Auto Security Review | – | |
| Initial Exam Team nnIEXX | IEXX |
36 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| Fee paymentFPAY | FPAY | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| Fee paymentFPAY | FPAY | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| Fee paymentFPAY | FPAY | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS |
Numbers
- Publication
- 07006318
- Publication, DOCDB
- 7006318
- Publication, EPODOC
- US7006318
- Application
- 10231868
- Application, DOCDB
- 23186802
- Application, EPODOC
- US20020231868
Titles
- English
- Removable media storage system with memory for storing operational data
Patent term adjustment
- A delay
- +314 daysthe office missed an examination deadline
- Applicant delay
- −81 days
- Net adjustment
- 233 days
Classification
- CPC, 19
- G06F3/0611
- G11B27/28
- G06F1/30
- G06F3/0656
- G06F3/0676
- G11B5/012
- G11B19/02
- G11B20/10
- G11B27/034
- G11B27/11
- G11B27/329
- G11B2220/213
- G11B2220/2545
- G11B2220/2562
- G11B2220/65
- H04N5/781
- H04N5/85
- H04N5/907
- G11B27/32
- IPC, 15
- G11B15 18
- G11B20 12
- G06F1 30
- G06F3 06
- G11B5 012
- G11B19 02
- G11B20 10
- G11B27 00
- G11B27 034
- G11B27 11
- G11B27 28
- G11B27 32
- H04N5 781
- H04N5 85
- H04N5 907
- USPC, 8
- 360069000
- 386E05042
- G9B019001
- G9B020009
- G9B027012
- G9B027021
- G9B027029
- G9B027050