Claims
- 1. A solid state disk drive for emulating the operation of a magnetic disk drive, comprising:
- (a) a disk controller for providing a magnetic disk interface to a host system;
- (b) a solid state disk drive emulator responsive to the disk controller for translating the magnetic disk commands into compatible solid state commands;
- (c) an array of solid state memory devices for storing non-volatile computer data in a manner to provide emulated sectors; and
- (d) an error correcting system, responsive to the array of solid state memory devices, capable of correcting up to two bit errors per emulated sector, the error correcting system employing a polynomial code generator to correct the up to two bit errors regardless of whether the up to two bit errors are caused by defective or discharged cells in the memory array.
- 2. A solid state disk drive for emulating the operation of a magnetic disk drive, comprising:
- (a) a disk controller for providing a magnetic disk interface to a host system;
- (b) a solid state disk drive emulator responsive to the disk controller for translating the magnetic disk commands into compatible solid state commands;
- (c) an array of solid state memory devices for storing non-volatile computer data, the solid state memory array being configured in rows and columns of memory cells, the rows representing tracks of a magnetic disk and the columns comprising sectors; and
- (d) an error correcting system, responsive to the array of solid state memory devices, capable of correcting up to two bit errors in a sector caused by defective or discharged cells in the memory array.
- 3. The solid state disk drive as recited in claim 2, wherein the solid state memory array comprises Flash EEprom memory.
- 4. The solid state disk drive as recited in claim 2, wherein the error correcting system employs a bit oriented code that processes a byte at a time.
- 5. The solid state disk drive as recited in claim 1, wherein the code generator polynomial is of length 32.
- 6. The solid state disk drive as recited in claim 1, wherein the code generator polynomial yields two syndromes.
- 7. The solid state disk drive as recited in claim 6, wherein the two syndromes are employed by the error correction system to determine either one or two error bit positions in the sector.
- 8. The solid state disk drive as recited in claim 7, wherein the code generator polynomial yields a check factor.
- 9. The solid state disk drive as recited in claim 8, wherein the check factor is used to confirm the either one or two error bit positions in the sector.
- 10. The solid state disk drive as recited in claim 9, wherein a first error bit position in the sector is .alpha..sup.L1, and wherein for a one error case the error correction system determines whether the check factor equals x.sup.L1mod4.
- 11. The solid state disk drive as recited in claim 9, wherein a first error bit position in the sector is OCL and a second error bit position in the sector is .alpha..sup.L2, and wherein for a two error case the error correction system determines whether the check factor equals x.sup.L1mod4 +x.sup.L2mod4 .
- 12. The solid state disk drive as recited in claim 1, wherein the code generator polynomial yields a check factor.
- 13. A method of emulating the operation of a magnetic disk drive, comprising:
- storing non-volatile computer data in an array of solid state memory devices in a manner to provide emulated sectors;
- reading an emulated sector of non-volatile computer data stored in an array of solid state memory devices;
- employing a polynomial code generator to correct the up to two bit errors regardless of whether the up to two bit errors are caused by defective or discharged cells in the memory array.
- 14. The method of claim 13, wherein the code generator polynomial is of length 32.
- 15. The method of claim 13, further comprising using the code generator polynomial to yield two syndromes.
- 16. The method of claim 15, further comprising employing the two syndromes to determine either one or two error bit positions in the sector.
- 17. The method of claim 16, further comprising using the code generator polynomial to yield a check factor.
- 18. The method of claim 17, further comprising using the check factor to confirm the either one or two error bit positions in the sector.
- 19. The method of claim 18, wherein a first error bit position in the sector is .alpha..sup.L1 and wherein for a one error case the method further comprises determining whether the check factor equals x.sup.L1mod4.
- 20. The method of claim 18, wherein a first error bit position in the sector is .alpha.L1 and a second error bit position in the sector is .alpha..sup.L2 and wherein for a two error case the method further comprises determining whether the check factor equals x.sup.L1mod4 +x.sup.L2mod4.
- 21. The method of claim 13, further comprising using the code generator polynomial to yield a check factor.
CROSS-REFERENCES TO RELATED APPLICATIONS
This is a divisional of application Ser. No. 08/327,681, filed Oct. 21, 1994, now U.S. Pat. No. 5,668,976, which is a continuation-in-part of application Ser. No. 08/306,918 filed Sep. 16, 1994, now U.S. Pat. No. 5,555,516, which in turn is a continuation-in-part of application Ser. No. 08/147,758 filed Nov. 4, 1993, (abandoned).
US Referenced Citations (22)
Foreign Referenced Citations (2)
Number |
Date |
Country |
0 107 038 A2 |
May 1984 |
EPX |
9419807 |
Sep 1994 |
WOX |
Non-Patent Literature Citations (1)
Entry |
"Byte-Wide ECC/CRC Code and Syndrome Calculator", IBM Technical Disclosure Bulletin, vol. 29, No. 5, Oct. 1986, pp. 2143-2145. |
Divisions (1)
|
Number |
Date |
Country |
Parent |
327681 |
Oct 1994 |
|
Continuation in Parts (2)
|
Number |
Date |
Country |
Parent |
306918 |
Sep 1994 |
|
Parent |
147758 |
Nov 1993 |
|