Claims
- 1-30. (Cancelled)
- 31. A method of storing data in a cache memory of a storage device, comprising:
apportioning the cache memory into slots, each having a particular slot number; providing a first segment of the cache memory having mapped thereto each of a first plurality of external host systems coupled to the storage device, said first segment including all of said slots having a first set of slot numbers; providing a second segment of the cache memory having mapped thereto each of a second plurality of external host systems coupled to the storage device, said second segment including all of said slots having a second set of slot numbers different from said first set of slot numbers, said second plurality of external host systems being different from said first plurality, wherein at least a portion of the second segment of the cache memory is not part of the first segment of the cache memory; removing a block of cache memory from one of said first and said second segments; and returning the block to an assigned segment wherein said assigned segment is one of: the other of said first and said second segments, a same segment from which said block was removed, and a randomly assigned segment.
- 32. The method of claim 31, wherein no portion of the second segment of the cache memory is part of the first segment.
- 33. The method of claim 31, further comprising:
providing a first data structure in the first segment of the cache memory; and providing a second data structure in the second segment of the cache memory, wherein accessing the first segment includes accessing the first data structure and accessing the second segment includes accessing the second data structure.
- 34. The method of claim 33, wherein the data structures include blocks of data and each block of data corresponds to a track on a disk drive.
- 35. The method of claim 31, wherein the external host systems are mapped to particular ones of the segments using a table.
- 36. The method of claim 35, wherein the table includes group identifiers and corresponding masks.
- 37. The method of claim 35, wherein the masks are binary values that have a “one” bit in an Nth bit position to indicate that a group is assigned to an Nth segment.
- 38. The method of claim 31, further comprising:
in response to a request for a block of cache memory, determining availability of a block of cache memory for a plurality of external host systems mapped to the cache memory.
- 39. The method of claim 38, further comprising:
in response to no blocks of cache memory for the plurality of external host systems being available, providing a block of cache memory corresponding to another plurality of external host systems.
- 40. The method of claim 39, wherein the block of cache memory that is provided is at least one of: a next available block, a block corresponding to a plurality of external host systems having a greatest number of blocks assigned thereto, a block corresponding to a plurality of external host systems having a greatest number of available blocks, and a block corresponding to a plurality of external host systems having a greatest percentage of available blocks.
- 41. A cache memory of a storage device, comprising:
a plurality of cache memory slots, each having a particular slot number; a first segment of the cache memory having mapped thereto each of a first plurality of external host systems coupled to the storage device, said first segment including all of said slots having a first set of slot numbers; and a second segment of the cache memory having mapped thereto each of a second plurality of external host systems coupled to the storage device, said second segment including all of said slots having a second set of slot numbers different from said first set of slot numbers, said second plurality of external host systems being different from said first plurality, wherein at least a portion of the second segment of the cache memory is not part of the first segment of the cache memory, wherein a host is included in one of said first plurality and said second plurality in accordance with criteria including at least one of: access to a predetermined amount of said cache, a priority level, and a level of service.
- 42. The cache memory of claim 41, wherein no portion of the second segment of the cache memory is part of the first segment.
- 43. The cache memory of claim 41, further comprising:
a first data structure in the first segment of the cache memory; and a second data structure in the second segment of the cache memory, wherein accessing the first segment includes accessing the first data structure and accessing the second segment includes accessing the second data structure.
- 44. The cache memory of claim 43, wherein the data structures include blocks of data and each block of data corresponds to a track on a disk drive.
- 45. The cache memory of claim 41, wherein the first and second plurality of external host systems is mapped to particular ones of the segments using a table.
- 46. The cache memory of claim 45, wherein the table includes identifiers and corresponding masks.
- 47. The cache memory of claim 46, wherein the masks are binary values that have a “one” bit in an Nth bit position to indicate that a group is assigned to an Nth segment.
- 48. A storage device, comprising:
a plurality of disk drives; a plurality of disk interface units, each being coupled to one of said disk drives; a bus that interconnects said disk interface units; and a cache memory, coupled to said bus, said cache memory having a first segment made up of a plurality of cache slots having a first set of cache slot numbers assigned thereto and having mapped thereto each of a first plurality of external host systems coupled to the storage device and a second segment made up of a plurality of cache slots having a second set of cache slot numbers assigned thereto different from said first set of cache slot numbers and having mapped thereto each of a second plurality of external host systems coupled to the storage device, said second plurality being different from said first plurality, wherein at least a portion of the second segment of the cache memory is not part of the first segment of the cache memory, each of said first and said second segments being accessible simultaneously by different processors.
- 49. The storage device of claim 48, wherein said storage device includes code for accessing one of said two segments that:
obtains a hardware lock associated with said cache memory; and obtains a software lock associated with said one segment.
- 50. The storage device of claim 49, wherein said storage device includes code that:
releases said hardware lock after obtaining said software lock.
- 51. The storage device of claim 50, wherein obtaining access to said hardware lock by a first processor prevents access to said software lock by another processor.
- 52. A method of storing data in a cache memory of a storage device, comprising:
apportioning the cache memory into slots, each having a particular slot number; providing a first segment of the cache memory having mapped thereto each of a first plurality of external host systems coupled to the storage device, said first segment including all of said slots having a first set of slot numbers; providing a second segment of the cache memory having mapped thereto each of a second plurality of external host systems coupled to the storage device, said second segment including all of said slots having a second set of slot numbers different from said first set of slot numbers, said second plurality being different from said first plurality, wherein at least a portion of the second segment of the cache memory is not part of the first segment of the cache memory; in response to a request for a block of cache memory by an external host system of the first plurality, determining availability of a block of cache memory in the first segment of the cache memory; and in response to no blocks of cache memory in the first segment being available, providing a block of cache memory from the second segment for use by the external host system of the first plurality of external host systems, wherein the block of cache memory that is provided is at least one of: a next available block, a block corresponding to a plurality of external host systems having a greatest number of blocks assigned thereto, a block corresponding to a plurality of external host systems having a greatest number of available blocks, and a block corresponding to a plurality of external host systems having a greatest percentage of available blocks.
- 53. The method of claim 52, further comprising:
providing a first data structure in the first segment of the cache memory; and providing a second data structure in the second segment of the cache memory, wherein accessing the first segment includes accessing the first data structure and accessing the second segment includes accessing the second data structure.
- 54. The method of claim 53, wherein the data structures include blocks of data and each block of data corresponds to a track on a disk drive.
- 55. A method of storing data in a cache memory of a storage device, comprising:
apportioning the cache memory into slots, each having a particular slot number; providing a first segment of the cache memory having mapped thereto each of a first plurality of external host systems coupled to the storage device, said first segment including all of said slots having a first set of slot numbers; and providing a second segment of the cache memory having mapped thereto each of a second plurality of external host systems coupled to the storage device, said second segment including all of said slots having a second set of slot numbers different from said first set of slot numbers, said second plurality of external host systems being different from said first plurality, wherein at least a portion of the second segment of the cache memory is not part of the first segment of the cache memory, wherein said segments of cache memory each include a data structure of blocks of data forming a ring.
- 56. A method of storing data in a cache memory of a storage device comprising:
apportioning the cache memory into slots, each having a particular slot number; providing a first segment of the cache memory having mapped thereto each of a first plurality of external host systems coupled to the storage device, said first segment including all of said slots having a first set of slot numbers; and providing a second segment of the cache memory having mapped thereto each of a second plurality of external host systems coupled to the storage device, said second segment including all of said slots having a second set of slot numbers different from said first set of slot numbers, said second plurality of external host systems being different from said first plurality, wherein at least a portion of the second segment of the cache memory is not part of the first segment of the cache memory, wherein said slots are identified as included in one of said first and said second segments using a table mapping a slot number associated with each of said slots to a segment number associated with one of said segments, a number of slots being included in each segment in accordance with particular criteria associated with each segment.
- 57. The method of claim 56, wherein said criteria includes at least one of: a cache access level, a priority level, and a service level.
- 58. A method of storing data in a cache memory of a storage device comprising:
apportioning the cache memory into slots, each having a particular slot number; providing a plurality of segments each having mapped thereto one or more host systems, wherein at least a portion of a first of said plurality of segments is not part of a second of said plurality of segments; and wherein a first of said slots is identified as being included in at least one of said segments for a particular host using a formula mapping a slot number associated with each of said slots to a segment number associated with at least one of said segments.
- 59. The method of claim 58, wherein each segment includes approximately a same number of slots and a host is associated with a predetermined number of said segments in accordance with predetermined criteria.
- 60. The method of claim 59, wherein said criteria includes at least one of: a cache access level, a priority level, and a service level.
- 61. The method of claim 59, wherein a slot is identified as belonging to a segment if a slot number associated with the slot (modulo) N, wherein N is an integer quantity representing a number of segments.
- 62. The method of claim 61, wherein at least one slot belongs to a plurality of segments.
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation-in-part of U.S. patent application Ser. No. 09/434,611 filed on Nov. 5, 1999 (pending).
Continuations (1)
|
Number |
Date |
Country |
Parent |
09535134 |
Mar 2000 |
US |
Child |
10791216 |
Mar 2004 |
US |
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
09434611 |
Nov 1999 |
US |
Child |
09535134 |
Mar 2000 |
US |