← Back to Patent Explorer
US5715418A Expired / Lapsed US ⏱️ 0.0 years remaining

Autonomous high speed linear space address mode translation for use with a computer hard disc system

Assignee: Seagate Technology LLC
•
Filing: 1994-07-27
•
Granted: 1998-02-03
•
Expires: 2014-07-27
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract Translating between physical and logical (or virtual) address spaces occurs autonomously using information decoded by an address mode translator from command bits within a host CPU issued command. The translator communicates with a hard disc controller unit local microprocessor or microcontroller and controller unit task registers. A host CPU issued command interrupts the local microprocessor and activates the address mode translator by writing to an appropriate controller unit task register using indirect addressing. The address mode translator preferably provides four algorithms, with algorithm selection occurring autonomously according to the decoded command bits. The algorithms provide physical block address to physical CHS cylinder-head-sector conversion, logical CHS to logical block address conversion, and also provide divide and multiply functions, useful for disc caching. Upon completion of the conversion or other function procedure, the address translator signals that the processed result is ready for reading by the controller unit local microprocessor or microcontroller. The translator may be implemented as a microprogrammed sequencer with an instruction set tailored to perform linear address translations and stored in memory associated with the local microprocessor. Alternatively, the instruction set may be downloaded by the microprocessor from disc drive software. The address translator provides the microprocessor with a translated address in a usable form more rapidly than if the local microprocessor had made the translation.

Inventors

  • 👤 Sean R. Atsatt
  • 👤 John Chester Masiewicz
  • 👤 Pervez E. Virjee
  • 👤 Marvin Mang-Yin Lum

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-26 19:14
CPC Classifications
G; G06; G06F; G06F3/00; G06F3/06; G06F3/0601; G06F3/0602; G06F3/0604; G06F3/0607; G06F3/0628; G06F3/0655; G06F3/0661; G06F3/0668; G06F3/0671; G06F3/0673; G06F3/0674; G06F3/0676

Claims Analysis

Total Claims: 20
Claim 1
Independent Claim 240 words
A translator unit for autonomously translating between linear address spaces, wherein said address spaces are associated with a hard disc storage unit, addressable in terms of cylinder, head, and sector numbers, or a sequential logical block address is used to store data for use by a host central processor unit (CPU), comprising: a decoder for decoding bits present in commands issued by said host computer CPU, wherein different combinations of decoded said bits are associated with different modes of address translation; an algorithmic function generator for providing a set of real-time translation functions including at least (a) logical block address to logical cylinder-head-sector address mode conversion, and (b) physical cylinder-head-sector address to physical block address mode conversion; a mode selector, coupled to send algorithmic function generator, for selecting a chosen one from said set of translation functions in response to the decoded said bits; wherein said algorithmic function generator translates address space associated with said commands in response to the decoded said bits; said generator using an equation given by: X/Y=t0+r0 t0/Z=t1+r1 t1+W=r2 where X is said block address, Y is a physical sector and track number, t0 is an integer quotient resulting from dividing X/Y, r0 is a remainder resulting from dividing X/Y, Z is a head drive number, t1 is an integer quotient resulting from dividing t0/Z, r1 is a remainder resulting from dividing t0/Z, and W is a number denoting a starting cylinder for a logical zone.
Claim 2
Dependent Claim 240 words
A translator unit for autonomously translating between linear address spaces, wherein said address spaces are associated with a hard disc storage unit, addressable in terms of cylinder, head, and sector numbers, or a sequential logical block address is used to store data for use by a host central processor unit (CPU), comprising: a decoder for decoding bits present in commands issued by said host computer CPU, wherein different combinations of decoded said bits are associated with different modes of address translation; an algorithmic function generator for providing a set of real-time translation functions including at least (a) logical block address to logical cylinder-head-sector address mode conversion, and (b) physical cylinder-head-sector address to physical block address mode conversion; a mode selector, coupled to send algorithmic function generator, for selecting a chosen one from said set of translation functions in response to the decoded said bits; wherein said algorithmic function generator translates address space associated with said commands in response to the decoded said bits; said generator using an equation given by: X/Y=t0+r0 t0/Z=t1+r1 t1+W=r2 where X is said block address, Y is a physical sector and track number, t0 is an integer quotient resulting from dividing X/Y, r0 is a remainder resulting from dividing X/Y, Z is a head drive number, t1 is an integer quotient resulting from dividing t0/Z, r1 is a remainder resulting from dividing t0/Z, and W is a number denoting a starting cylinder for a logical zone.
Claim 3
Dependent Claim 19 words
The translator unit of claim 1, wherein said address spaces are associated with a hard disc controller unit buffer.
Claim 4
Dependent Claim 40 words
The translator unit of claim 1, wherein said algorithmic function means translates said address space using hardware selected from the group consisting of (a) a state machine, (b) a microcontroller, and (c) a local microprocessor associated with said translator unit.
Claim 5
Dependent Claim 29 words
The translator unit of claim 1, wherein said algorithmic function means further provides at least one additional function selected from the group consisting of (c) division, and (d) multiplication.
Claim 6
Dependent Claim 290 words
A translator unit for autonomously translating between linear address spaces, wherein said address spaces are associated with a hard disc storage unit, addressable in terms of cylinder, head and sector numbers, or a sequential logical block address used to store data for use by a host central processor unit (CPU), comprising: a decoder for decoding bits present in commands issued by said host computer CPU, wherein different combinations of decoded said bits are associated with different modes of address translation; an algorithmic function generator for providing a set of real-time translation functions including at least (a) logical block address to logical cylinder-head-sector address mode conversion, and (b) physical cylinder-head-sector address to physical block address mode conversion; a mode selector coupled to said algorithmic function generator, for selecting a chosen one from said set of translation functions in response to the decoded said bits; wherein said algorithmic function generator translates address space associated with said commands in response to the decoded said bits; said generator using an equation given by: X/Y=t0+r0 t0/Z=t1+r1 t1+W=r2 where X is said block address, Y is a physical sector and track number, t0 is an integer quotient resulting from dividing X/Y, r0 is a remainder resulting from dividing X/Y, Z is a head and drive number, t1 is an integer quotient resulting from dividing t0/Z, r1 is a remainder resulting from dividing t0/Z, and W is a number denoting a starting cylinder for a logical zone; said algorithmic function generator translating a cylinder-head-sector address to a block address using an equation given by: block address=((((C*Nh)+H)*Ns)+S-1) where C is a head number, Nh is a head and drive number, H is a head number, Ns is a sector and track number, and S is a sector number.
Claim 7
Dependent Claim 290 words
A translator unit for autonomously translating between linear address spaces, wherein said address spaces are associated with a hard disc storage unit, addressable in terms of cylinder, head and sector numbers, or a sequential logical block address used to store data for use by a host central processor unit (CPU), comprising: a decoder for decoding bits present in commands issued by said host computer CPU, wherein different combinations of decoded said bits are associated with different modes of address translation; an algorithmic function generator for providing a set of real-time translation functions including at least (a) logical block address to logical cylinder-head-sector address mode conversion, and (b) physical cylinder-head-sector address to physical block address mode conversion; a mode selector coupled to said algorithmic function generator, for selecting a chosen one from said set of translation functions in response to the decoded said bits; wherein said algorithmic function generator translates address space associated with said commands in response to the decoded said bits; said generator using an equation given by: X/Y=t0+r0 t0/Z=t1+r1 t1+W=r2 where X is said block address, Y is a physical sector and track number, t0 is an integer quotient resulting from dividing X/Y, r0 is a remainder resulting from dividing X/Y, Z is a head and drive number, t1 is an integer quotient resulting from dividing t0/Z, r1 is a remainder resulting from dividing t0/Z, and W is a number denoting a starting cylinder for a logical zone; said algorithmic function generator translating a cylinder-head-sector address to a block address using an equation given by: block address=((((C*Nh)+H)*Ns)+S-1) where C is a head number, Nh is a head and drive number, H is a head number, Ns is a sector and track number, and S is a sector number.
Claim 8
Dependent Claim 548 words
A translator unit for autonomously translating between linear address spaces wherein said address spaces are associated with a hard disc storage unit addressable in terms of cylinder, head, and sector numbers, or a sequential logical block address used to store data for use by a host central processor unit (CPU), comprising: a decoder for decoding bits present in commands issued by said host computer CPU, wherein different combinations of decoded said bits are associated with different modes of address translation; an algorithmic function generator for providing a set of real-time translation functions including at least (a) logical block address to logical cylinder-head-sector address mode conversion, and (b) physical cylinder-head-sector address to physical block address mode conversion; a mode selector, coupled to said algorithmic function generator for selecting a chosen one from said set of translation functions in response to the decoded said bits; wherein said algorithmic function generator translates address space associated with said commands in response to the decoded said bits; said generator using an equation given by: X/Y=t0+r0 t0/Z=t1+r1 t1+W=r2 where X is said block address, Y is a physical sector and track number, t0 is an integer quotient resulting from dividing X/Y, r0 is a remainder resulting from dividing X/Y, Z is a head and drive number, t1 is an integer quotient resulting from dividing t0/Z, r1 is a remainder resulting from dividing t0/Z, and W is a number denoting a starting cylinder for a logical zone; means for testing whether the host CPU has written a command; a DONE register for testing whether said translator unit is presently available for translation; means for branching, in response to an output from said means for decoding, to a portion of said algorithmic function generator providing a real-time translation function corresponding to an output of said decoder; means for confirming that a host CPU command has been received, and if affirmative, means for reading task registers associated with said host CPU; wherein if said decoder determines that a multiplication function is required, said algorithmic function generator provides a multiplication function; wherein if said decoder determines that a division function is required, said algorithmic function generator provides a division function; wherein if said decoder determines that a said block address is to be converted to a cylinder-head-sector address said algorithmic function generator uses an equation given by: X/Y=t0+r0 t0/Z=t1+r1 t1+W=r2 where X is said block address, Y is a sector and track number, t0 is an integer quotient resulting from dividing X/Y, r0 is a remainder resulting from dividing X/Y, Z is a head and drive number, t1 is an integer quotient resulting from dividing t0/Z, r1 is a remainder resulting from dividing t0/Z, and W is a number denoting a starting cylinder for a logical zone; wherein if said decoder determines that a said cylinder-head-sector address is to be converted to a block address, said translator unit confirms receipt of said host CPU command and reads said task registers associated with said host CPU, and converts said address using an equation given by: block address=((((C*Nh)+H)*Ns)+S-1) where C is a head number, Nh is a head and drive number, H is a head number, Ns is a sector and track number, and S is a sector number; and means for setting said DONE register means upon translation completion.
Claim 9
Dependent Claim 548 words
A translator unit for autonomously translating between linear address spaces wherein said address spaces are associated with a hard disc storage unit addressable in terms of cylinder, head, and sector numbers, or a sequential logical block address used to store data for use by a host central processor unit (CPU), comprising: a decoder for decoding bits present in commands issued by said host computer CPU, wherein different combinations of decoded said bits are associated with different modes of address translation; an algorithmic function generator for providing a set of real-time translation functions including at least (a) logical block address to logical cylinder-head-sector address mode conversion, and (b) physical cylinder-head-sector address to physical block address mode conversion; a mode selector, coupled to said algorithmic function generator for selecting a chosen one from said set of translation functions in response to the decoded said bits; wherein said algorithmic function generator translates address space associated with said commands in response to the decoded said bits; said generator using an equation given by: X/Y=t0+r0 t0/Z=t1+r1 t1+W=r2 where X is said block address, Y is a physical sector and track number, t0 is an integer quotient resulting from dividing X/Y, r0 is a remainder resulting from dividing X/Y, Z is a head and drive number, t1 is an integer quotient resulting from dividing t0/Z, r1 is a remainder resulting from dividing t0/Z, and W is a number denoting a starting cylinder for a logical zone; means for testing whether the host CPU has written a command; a DONE register for testing whether said translator unit is presently available for translation; means for branching, in response to an output from said means for decoding, to a portion of said algorithmic function generator providing a real-time translation function corresponding to an output of said decoder; means for confirming that a host CPU command has been received, and if affirmative, means for reading task registers associated with said host CPU; wherein if said decoder determines that a multiplication function is required, said algorithmic function generator provides a multiplication function; wherein if said decoder determines that a division function is required, said algorithmic function generator provides a division function; wherein if said decoder determines that a said block address is to be converted to a cylinder-head-sector address said algorithmic function generator uses an equation given by: X/Y=t0+r0 t0/Z=t1+r1 t1+W=r2 where X is said block address, Y is a sector and track number, t0 is an integer quotient resulting from dividing X/Y, r0 is a remainder resulting from dividing X/Y, Z is a head and drive number, t1 is an integer quotient resulting from dividing t0/Z, r1 is a remainder resulting from dividing t0/Z, and W is a number denoting a starting cylinder for a logical zone; wherein if said decoder determines that a said cylinder-head-sector address is to be converted to a block address, said translator unit confirms receipt of said host CPU command and reads said task registers associated with said host CPU, and converts said address using an equation given by: block address=((((C*Nh)+H)*Ns)+S-1) where C is a head number, Nh is a head and drive number, H is a head number, Ns is a sector and track number, and S is a sector number; and means for setting said DONE register means upon translation completion.
Claim 10
Independent Claim 229 words
A method for autonomously translating between linear address spaces wherein said address spaces are associated with a hard disc storage unit, addressable in terms of cylinder, head, and sector numbers, used to store data for use by a host central processor unit (CPU), the method comprising the following steps: decoding bits present in commands issued by said host computer CPU, wherein different combinations of decoded said bits are associated with different modes of address translation; providing a set of real-time translation functions including at least (a) logical block address to logical cylinder-head-sector address mode conversion, and (b) physical cylinder-head-sector address to physical block address mode conversion; selecting, in response to decoded said bits, a chosen one from said set of translation functions; wherein said algorithmic function means translates address space associated with said commands in response to the decoded said bits; wherein the step of providing translates a block address to a cylinder-head-sector address using an equation given by: X/Y=t0+r0 t0/Z=t1+r1 t1+W=r2 where X is said block address, Y is at sector and track number, t0 is an integer quotient resulting from dividing X/Y, r0 is a remainder resulting from dividing X/Y, Z is a head and drive number, t1 is an integer quotient resulting from dividing t0/Z, r1 is a remainder resulting from dividing t0/Z, and W is a number denoting a starting cylinder for a logical zone.
Claim 11
Independent Claim 229 words
A method for autonomously translating between linear address spaces wherein said address spaces are associated with a hard disc storage unit, addressable in terms of cylinder, head, and sector numbers, used to store data for use by a host central processor unit (CPU), the method comprising the following steps: decoding bits present in commands issued by said host computer CPU, wherein different combinations of decoded said bits are associated with different modes of address translation; providing a set of real-time translation functions including at least (a) logical block address to logical cylinder-head-sector address mode conversion, and (b) physical cylinder-head-sector address to physical block address mode conversion; selecting, in response to decoded said bits, a chosen one from said set of translation functions; wherein said algorithmic function means translates address space associated with said commands in response to the decoded said bits; wherein the step of providing translates a block address to a cylinder-head-sector address using an equation given by: X/Y=t0+r0 t0/Z=t1+r1 t1+W=r2 where X is said block address, Y is at sector and track number, t0 is an integer quotient resulting from dividing X/Y, r0 is a remainder resulting from dividing X/Y, Z is a head and drive number, t1 is an integer quotient resulting from dividing t0/Z, r1 is a remainder resulting from dividing t0/Z, and W is a number denoting a starting cylinder for a logical zone.
Claim 12
Dependent Claim 18 words
The method of claim 7 wherein said address spaces are associated with a hard disc controller unit buffer.
Claim 13
Dependent Claim 39 words
The method of claim 7, wherein the step of providing translates said address space using hardware selected from a group consisting of (a) a state machine, (b) a microcontroller, and (c) a local microprocessor associated with said translator unit.
Claim 14
Dependent Claim 28 words
The method of claim 7, wherein the step of providing further provides at least one additional function selected from a group consisting of (c) division, and (d) multiplication.
Claim 15
Independent Claim 280 words
A method for autonomously translating between linear address spaces wherein said address spaces are associated with a hard disc storage unit addressable in terms of cylinder, head, and sector numbers, used to store data for use by a host central processor unit (CPU) the method comprising the following steps: decoding bits present in commands issued by said host computer CPU wherein different combinations of decoded said bits are associated with different modes of address translation; providing a set of real-time translation functions including at least (a) logical block address to logical cylinder-heed-sector address mode conversion and (b) physical cylinder-head-sector address to physical block address mode conversion; selecting, in response to decoded said bits, a chosen one from said set of translation functions: wherein said algorithmic function means translates address space associated with said commands in response to the decoded said bits: wherein the step of providing translates a block address to a cylinder-head-sector address using an equation given by: X/Y=t0+r0 t0/Z=t1+r1 t1+W=r2 where X is said block address Y is a sector and track number, t0 is an integer quotient resulting from dividing X/Y, r0 is a remainder resulting from dividing X/Y, Z is a head and drive number, t1 is an integer quotient resulting from dividing t0/Z, r1 is a remainder resulting from dividing t0/Z, and W is a number denoting a starting cylinder for a logical zone; wherein the step of providing translates a cylinder-head-sector address to a block address using an equation given by: block address=((((C*Nh)+H)*Ns)+S-1) where C is a head number, Nh is a head and drive number, H is a head number, Ns is a sector and track number, and S is a sector number.
Claim 16
Independent Claim 280 words
A method for autonomously translating between linear address spaces wherein said address spaces are associated with a hard disc storage unit addressable in terms of cylinder, head, and sector numbers, used to store data for use by a host central processor unit (CPU) the method comprising the following steps: decoding bits present in commands issued by said host computer CPU wherein different combinations of decoded said bits are associated with different modes of address translation; providing a set of real-time translation functions including at least (a) logical block address to logical cylinder-heed-sector address mode conversion and (b) physical cylinder-head-sector address to physical block address mode conversion; selecting, in response to decoded said bits, a chosen one from said set of translation functions: wherein said algorithmic function means translates address space associated with said commands in response to the decoded said bits: wherein the step of providing translates a block address to a cylinder-head-sector address using an equation given by: X/Y=t0+r0 t0/Z=t1+r1 t1+W=r2 where X is said block address Y is a sector and track number, t0 is an integer quotient resulting from dividing X/Y, r0 is a remainder resulting from dividing X/Y, Z is a head and drive number, t1 is an integer quotient resulting from dividing t0/Z, r1 is a remainder resulting from dividing t0/Z, and W is a number denoting a starting cylinder for a logical zone; wherein the step of providing translates a cylinder-head-sector address to a block address using an equation given by: block address=((((C*Nh)+H)*Ns)+S-1) where C is a head number, Nh is a head and drive number, H is a head number, Ns is a sector and track number, and S is a sector number.
Claim 17
Independent Claim 416 words
A method for autonomously translating between linear address spaces wherein said address spaces are associated with a hard disc storage unit addressable in terms of cylinder, head, and sector numbers used to store data for use by a host central processor unit (CPU), the method comprising the following steps: decoding bits present in commends issued by said host computer CPU, wherein different combinations of decoded said bits are associated with different modes of address translation: providing a set of real-time translation fractions including at least (a) logical block address to logical cylinder-head-sector address mode conversion, and (b) physical cylinder-head-sector address to physical block address mode conversion; selecting in response to decoded said bits, a chosen one from said set of translation functions; wherein said algorithmic function means translates address space associated with said commands in response to the decoded said bits: wherein the step of providing translates a block address to a cylinder-head-sector address using an equation given by: X/Y=t0+r0 t0/Z=t1+r1 t1+W=r2 where X is said block address, Y is a sector and track number, t0 is an integer quotient resulting from dividing X/Y, r0 is a remainder resulting from dividing X/Y, Z is a head and drive number, t1 is an integer quotient resulting from dividing t0/Z, r1 is a remainder resulting from dividing t0/Z, and W is a number denoting a starting cylinder for a logical zone; including additional steps of: testing whether the host CPU has written a command; providing DONE register means for testing whether said translator unit is presently available for translation; branching, in response to an output determined by the step of decoding, a chosen one of said set of real-time translation functions; confirming that a host CPU command has been received, and if affirmative, reading task registers associated with said host CPU; wherein if the step of decoding determines that a multiplication function is required, branching to provide a said multiplication function; wherein if the step of decoding determines that a division function is required, branching to provide a said division function; wherein if the step of decoding determines that a block address is to be converted to a cylinder-head-sector address, branching to provide a block to address conversion; wherein if the decoding step determines that a cylinder-head-sector address is to be converted to a block address, confirming receipt of said host CPU command, reading said task registers associated with said host CPU, and branching to provide a block address conversion; and setting said DONE register upon translation completion.
Claim 18
Independent Claim 416 words
A method for autonomously translating between linear address spaces wherein said address spaces are associated with a hard disc storage unit addressable in terms of cylinder, head, and sector numbers used to store data for use by a host central processor unit (CPU), the method comprising the following steps: decoding bits present in commends issued by said host computer CPU, wherein different combinations of decoded said bits are associated with different modes of address translation: providing a set of real-time translation fractions including at least (a) logical block address to logical cylinder-head-sector address mode conversion, and (b) physical cylinder-head-sector address to physical block address mode conversion; selecting in response to decoded said bits, a chosen one from said set of translation functions; wherein said algorithmic function means translates address space associated with said commands in response to the decoded said bits: wherein the step of providing translates a block address to a cylinder-head-sector address using an equation given by: X/Y=t0+r0 t0/Z=t1+r1 t1+W=r2 where X is said block address, Y is a sector and track number, t0 is an integer quotient resulting from dividing X/Y, r0 is a remainder resulting from dividing X/Y, Z is a head and drive number, t1 is an integer quotient resulting from dividing t0/Z, r1 is a remainder resulting from dividing t0/Z, and W is a number denoting a starting cylinder for a logical zone; including additional steps of: testing whether the host CPU has written a command; providing DONE register means for testing whether said translator unit is presently available for translation; branching, in response to an output determined by the step of decoding, a chosen one of said set of real-time translation functions; confirming that a host CPU command has been received, and if affirmative, reading task registers associated with said host CPU; wherein if the step of decoding determines that a multiplication function is required, branching to provide a said multiplication function; wherein if the step of decoding determines that a division function is required, branching to provide a said division function; wherein if the step of decoding determines that a block address is to be converted to a cylinder-head-sector address, branching to provide a block to address conversion; wherein if the decoding step determines that a cylinder-head-sector address is to be converted to a block address, confirming receipt of said host CPU command, reading said task registers associated with said host CPU, and branching to provide a block address conversion; and setting said DONE register upon translation completion.
Claim 19
Dependent Claim 87 words
The method of claim 12, wherein a said address conversion is carried out using an equation given by: X/Y=t0+r0 t0/Z=t1+r1 t1+W=r2 where X is said block address, Y is a sector and track number, t0 is an integer quotient resulting from dividing X/Y, t0 is a remainder resulting from dividing X/Y, Z is a head and drive number, t1 is an integer quotient resulting from dividing t0/Z, r1 is a remainder resulting from dividing t0/Z, and W is a number denoting a starting cylinder for a zone.
Claim 20
Dependent Claim 52 words
The method of claim 12, wherein a said block address conversion is carried out using an equation given by; block address=((((C*Nh)+H)*Ns)+S-1) where C is a head number, Nh is a head and drive number, H is a head number, Ns is a sector and track number, and S is a sector number.

References Cited (Backward Citations)

US5420998A Cited
US5463765A Cited
US5367669A Cited
US5386402A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2001-02-02 2001-08-04 2002-02-03 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2005-02-02 2005-08-04 2006-02-03 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2009-02-02 2009-08-04 2010-02-03 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag