|Publication number||US7181641 B2|
|Application number||US 10/671,032|
|Publication date||Feb 20, 2007|
|Filing date||Sep 24, 2003|
|Priority date||Sep 24, 2003|
|Also published as||US20050066237|
|Publication number||10671032, 671032, US 7181641 B2, US 7181641B2, US-B2-7181641, US7181641 B2, US7181641B2|
|Inventors||Robert Greenwald, William Stubkjaer|
|Original Assignee||Hitachi Global Storage Technologies Netherlands, B.V.|
|Export Citation||BiBTeX, EndNote, RefMan|
|Patent Citations (3), Non-Patent Citations (5), Referenced by (6), Classifications (7), Legal Events (4)|
|External Links: USPTO, USPTO Assignment, Espacenet|
The present invention relates to techniques for verifying data stored on data storage media, and more particularly, to techniques for verifying that a data storage system correctly writes data onto a memory device.
A disk drive writes data onto a data storage disk such as a magnetic hard disk. A disk drive typically uses a head to read and write data from/onto the disk. Many types of defects can be introduced into a disk drive system during the design and manufacturing process. Some of these defects can cause the disk drive to write erroneous data or no data at all onto a magnetic disk.
For example, often the firmware that controls the functionality of the disk drive contains bugs. Some types of bugs can cause a disk drive to write erroneous data onto a magnetic disk. As another example, the disk drive hardware can contain hardware defects. Some types of hardware defects can also cause the disk drive to write erroneous data onto a magnetic disk.
Therefore, it would be desirable to provide techniques for testing a data storage system to determine whether it correctly writes data onto a memory device before the data storage system is released to production.
The present invention provides techniques for verifying the integrity of data written onto a memory device. Systems and methods of the present invention can test a data storage system prior to production to determine whether the data storage system correctly writes data onto the memory device.
A pseudo random number generator generates a data pattern that is based on a known ‘seed’ value. The seed value includes the current date and time. The data storage system then writes the data pattern onto the memory device under test. If the write process is successful, the writes the data pattern onto the memory device under test. If the write process is successful, the data pattern is stored on a second memory device at a location that corresponds to the logical block address (LBA) of the sector that the data pattern was stored in the memory device under test. Alternatively, the seed value is stored in the second memory device at the correspond LBA instead of the data pattern.
Subsequently, the data storage system retrieves the data pattern from the second memory device. Alternatively, the data storage system reads the seed value from the second memory device and regenerates the data pattern. This data pattern is the data that the data storage system expects to read from the memory device under test at the corresponding LBA.
The data storage system reads the data pattern from the memory device under test at the corresponding LBA. The expected data pattern is compared to the data that was read from the memory device under test. From this comparison, the present invention can verify whether the data storage system correctly writes data onto the memory device under test.
Other objects, features, and advantages of the present invention will become apparent upon consideration of the following detailed description and the accompanying drawings, in which like reference designations represent like features throughout the figures.
Computer system 200 includes a host bus adaptor 202 and an executable program 201. Executable program 201 performs many of the functions discussed below with respect to
The DUT 204 is a memory device such as a magnetic hard disk or an optical disk. Reference drive 203 is a secondary memory device that is discussed in further detail below. System 200 can write data to and read data from DUT 204 and reference drive 203.
Adaptor 202 communicates with reference drive 203 and memory device under test (DUT) 204 as shown in
The controller in HBA 202 is hardware that acts to make reference drive 203 become a “mirror” of DUT 204. HBA 202 always writes data requested to be written to DUT 204 at a particular LBA, to a corresponding LBA on reference drive 203 also. Also, whenever reading data from DUT 204, a corresponding read is initiated on reference drive 203, so that the data read from DUT 204 can be compared to the data read from drive 203.
Referring again to
A pseudo random number generator is a type of algorithm that generates a sequence of random numbers based on a seed value. The algorithm can regenerate the exact same sequence of numbers multiple times by using the same seed value that was used to generate the first random number sequence. Because the exact same sequence of numbers can be generated multiple times based on the same seed value, the random number generator is classified as a pseudo random number generator.
Pseudo random number generators include several different types of algorithms that are well known to those of skill in the art. An example of a pseudo random number generator is pseudo random number=(multiplier×seed)+adder.
According to the present invention, the pseudo random number generator uses a seed value that is based in part on the current date and time. Thus, each time the pseudo random number generates a different random number sequence, because the seed values are based on a different date or time. This feature of the present invention allows the pseudo random number generator to generate a unique number sequence each time the algorithm is run. The seed value can also be a specific pattern or code that is based on a logical block address where the test data pattern is to be stored on DUT 204.
According to another embodiment, the seed value used by the pseudo random number generator includes a code that is stored in a database. The code is linked to the date and the time that the number sequence is generated.
At step 152, system 200 writes data patterns generated by the pseudo random number generator onto DUT 204 (e.g., a magnetic or optical disk). Each data pattern that is written onto DUT 204 is unique, because the seed used to generate each data pattern is unique. As stated above, each seed is unique, because each seed is based on a current date and time, which are constantly changing.
The data patterns are written onto DUT 204 in a sector that corresponds to a particular logical block address (LBA). Each sector on a magnetic disk has a unique LBA.
If the data storage system successfully writes the data patterns onto DUT 204, system 200 stores the identical data patterns to a second memory device (i.e., reference drive 203) at step 153. Each data pattern is stored in reference drive 203 at a location corresponding to the same logical block addresses (LBAs) where the data pattern was stored on DUT 204.
The reference drive 203 can be any type of memory device or memory circuit. For example, reference drive 203 can be EEPROM, SRAM, an optical disk, magnetic tape, a magnetic disk, etc.
System 200 automatically writes the data pattern to the corresponding LBA on reference drive 203. The reference drive 203 should contain as much memory space as DUT 204. Reference drive 203 can have less memory space than DUT 204, for testing less than the total size of DUT 204.
After system 200 performs steps 151–153 as discussed above, steps 161–163 are performed to verify that the data storage system under test wrote the correct data patterns onto DUT 204.
At step 161, system 200 reads the test data from DUT 204 that was stored at step 152. System 200 reads the test data at the LBAs for each sector to be tested. At step 162, system 200 reads the data patterns stored on reference drive 203 at the corresponding logical block addresses read from DUT 204. The data patterns read from reference drive 203 are the expected values.
At step 163, system 200 compares the expected values to the data patterns read from DUT 204 for each corresponding LBA. If the data patterns read from DUT 204 match the expected data, system 200 determines that the data storage system is correctly writing data onto DUT 204. However, if some of the data patterns read from DUT 204 do not match the expected data, system 200 determines that the data storage system is not correctly writing data onto DUT 204.
When reading data from DUT 204, HBA 202 automatically reads (built into the ASIC hardware) the corresponding LBAs on reference drive 203 and compares the data received from both drives. The date/time stamp is generated by hardware in HBA 202, which is pre-pended to every sector's data, as discussed above.
According to the present invention, each test data pattern is unique, because a pseudo random number generator generates each test data pattern based on the current date and time. The current date and time change each time the pseudo random number generator generates a new test data pattern.
As test data patterns are written onto DUT 204 during step 152, the same LBA block on DUT 204 can be written and re-written several times during the test process. By writing a unique test data pattern on each sector of DUT 204, the present invention can distinguish between each writing event. It is necessary to distinguish between each writing event to verify that the data storage system has written the correct data pattern onto to DUT 204.
This feature of the present invention increases the accuracy of the testing process. In the present invention, if the expected data does not match the test data patterns read from DUT 204, there is high probability that the data storage system wrote the wrong data patterns onto DUT 204, or the write command that was requested never occurred and what is left is data from some previous write.
A system of the present invention can overlook a certain number of write errors. The present invention can have a built-in error rate threshold level. If the error rate of the data storage system is less than the threshold level, the present invention determines that the data storage system is writing data onto DUT 204 correctly. If the error rate of the data storage system exceeds the threshold level, the present invention determines that the data storage system is non-functional.
If the data storage system is not functional, the data storage system can be debugged before it is mass produced. Therefore, the present invention is highly useful for screening data storage systems that contain defects before they are released to production. The present invention reduces the costs associated with producing and operating data storage systems that have a high error rate.
According to another embodiment of the present invention, the data patterns generated by the pseudo random number generator are not stored in reference drive 203. Instead, the seed values are stored in reference drive 203 at corresponding LBAs. Subsequently, the data storage system reads the seed values from reference drive 203, and the pseudo random number generator regenerates the data patterns based on the seed values read from drive 203. The regenerated data patterns are then compared to the data patterns read from DUT 204 to evaluate the integrity of the data written onto DUT 204.
While the present invention has been described herein with reference to particular embodiments thereof, a latitude of modification, various changes, and substitutions are intended in the present invention. In some instances, features of the invention can be employed without a corresponding use of other features, without departing from the scope of the invention as set forth. Therefore, many modifications may be made to adapt a particular configuration or method disclosed, without departing from the essential scope and spirit of the present invention. It is intended that the invention not be limited to the particular embodiments disclosed, but that the invention will include all embodiments and equivalents falling within the scope of the claims.
|Cited Patent||Filing date||Publication date||Applicant||Title|
|US5889937||Jun 26, 1997||Mar 30, 1999||Nec Corporation||Hard disk apparatus capable of transforming logical addresses of apparatus diagnosis cylinders to HDD-by-HDD physical addresses|
|US6061822 *||Jun 23, 1997||May 9, 2000||Micron Electronics, Inc.||System and method for providing a fast and efficient comparison of cyclic redundancy check (CRC/checks sum) values of two mirrored disks|
|US20020095623 *||Nov 30, 2000||Jul 18, 2002||Bruce Ross H.||Method and apparatus for testing a storage device|
|1||EPOS Ltd., "EPOS Tester HDD-Device for HDD maintenance", Mar. 15, 2002, 4 pages.|
|2||KC Abshere, Joel Camp, Chris Karr, "Applications of the Rules of Life in Real World Scenarios", New Mexico High School Supercomputing Challenge, Apr. 9, 1997, 11 pages.|
|3||*||Null, Linda: "Computer Organization and Architecture." Copyright 2003. Jones and Barlett Publishers. pp. 293-294.|
|4||The GNU C Library, "Pseudo-Random Numbers", Jul. 6, 2001, 2 pages.|
|5||Tom Dickens, "Random Number Generation for Microcontrollers", Robothon 2003, 3 pages.|
|Citing Patent||Filing date||Publication date||Applicant||Title|
|US8019935||Dec 23, 2007||Sep 13, 2011||Hitachi Global Storage Technologies Netherlands, B.V.||Random number generation for a host system using a hard disk drive|
|US8131920||Dec 6, 2007||Mar 6, 2012||Hitachi Global Storage Technologies, Netherlands B.V.||Method and system for dynamically allocating read and write sequence randomizer|
|US20090150637 *||Dec 6, 2007||Jun 11, 2009||Ryoheita Hattori||Method and system for dynamically allocating read and write sequence randomizer|
|US20090161246 *||Dec 23, 2007||Jun 25, 2009||Hitachi Global Storage Technologies Netherlands, B.V.||Random Number Generation Using Hard Disk Drive Information|
|US20100030958 *||Dec 23, 2007||Feb 4, 2010||Hitachi Global Storage Technologies Netherlands, B.V.||Random Number Generation For a Host System Using a Hard Disk Drive|
|US20130151896 *||Jun 13, 2013||Fujitsu Limited||Information processing apparatus and test method|
|U.S. Classification||714/5.1, G9B/20.051, 714/42|
|International Classification||G06F11/00, G11B20/18|
|Sep 24, 2003||AS||Assignment|
Owner name: HITACHI GLOBAL STORAGE TECHOLOGIES NETHERLANDS, BV
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:GREENWALD, ROBERT;STUBKJAER, WILLIAM;REEL/FRAME:014553/0969
Effective date: 20030919
|Sep 27, 2010||REMI||Maintenance fee reminder mailed|
|Feb 20, 2011||LAPS||Lapse for failure to pay maintenance fees|
|Apr 12, 2011||FP||Expired due to failure to pay maintenance fee|
Effective date: 20110220