WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Disk controller with volatile and non-volatile cache memories    
United States Patent5586291   
Link to this pagehttp://www.wikipatents.com/5586291.html
Inventor(s)Lasker; Jeffrey M. (Marlboro, MA); McGillis; James M. (Franklin, MA)
AbstractA disk storage subsystem includes both volatile and non-volatile portions of memory. In response to a write command from a host computer, the controller allocates a predetermined number of memory blocks in the non-volatile cache memory and allocates a corresponding number of blocks in the volatile memory. Host supplied write data is then stored in the allocated non-volatile memory blocks. The data may also be mirrored in additional non-volatile memory. Immediately thereafter the subsystem sends an acknowledge signal to the host. The subsystem then performs a DMA operation to copy the write-data from the non-volatile memory blocks to the volatile memory blocks. The write-data is then stored on a disk drive at which point the non-volatile memory may be de-allocated. Subsequent reads of the given data may be read from the volatile memory, reducing disk access time. In the event of a power failure, data stored in the non-volatile memory but not yet written to disk is preserved. In the event of a disk controller failure, the non-volatile memory modules may be transferred to a functioning disk controller for recovery.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 5586291
Disk controller with volatile and non-volatile cache memories - US Patent 5586291 Drawing
Disk controller with volatile and non-volatile cache memories
Inventor     Lasker; Jeffrey M. (Marlboro, MA); McGillis; James M. (Franklin, MA)
Owner/Assignee     EMC Corporation (Hopkinton, MA)
Patent assignment
All assignments
Publication Date     December 17, 1996
Application Number     08/363,298
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     December 23, 1994
US Classification     711/113 711/165
Int'l Classification     G06F 013/00
Examiner     Robertson; David L.
Assistant Examiner    
Attorney/Law Firm     Weingarten, Schurgin, Gagnebin & Hayes LLP
Address
Parent Case    
Priority Data    
USPTO Field of Search     395/440 395/492 395/842 395/873 395/876
Patent Tags     disk controller volatile non-volatile cache memories
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5349651
Hetherington
711/207
Sep,1994

[0 after 0 votes]
5347642
Barratt
711/113
Sep,1994

[0 after 0 votes]
5303362
Butts, Jr.
711/121
Apr,1994

[0 after 0 votes]
5287473
Mohan
711/133
Feb,1994

[0 after 0 votes]
5276833
Auvinen
711/105
Jan,1994

[0 after 0 votes]
5274787
Hirano
711/143
Dec,1993

[0 after 0 votes]
5257352
Yamamoto
711/136
Oct,1993

[0 after 0 votes]
5193166
Menasce

Mar,1993

[0 after 0 votes]
5170476
Laakso
711/140
Dec,1992

[0 after 0 votes]
5163142
Mageau
711/142
Nov,1992

[0 after 0 votes]
5151989
Johnson
707/10
Sep,1992

[0 after 0 votes]
5150472
Blank
711/137
Sep,1992

[0 after 0 votes]
5146571
Logan
714/8
Sep,1992

[0 after 0 votes]
5107457
Hayes

Apr,1992

[0 after 0 votes]
5091846
Sachs
711/130
Feb,1992

[0 after 0 votes]
5073851
Masterson

Dec,1991

[0 after 0 votes]
5067078
Talgam

Nov,1991

[0 after 0 votes]
4985829
Thatte
711/207
Jan,1991

[0 after 0 votes]
4972338
Crawford
711/206
Nov,1990

[0 after 0 votes]
4899275
Sachs
711/3
Feb,1990

[0 after 0 votes]
4888689
Taylor
711/140
Dec,1989

[0 after 0 votes]
4885680
Anthony
711/144
Dec,1989

[0 after 0 votes]
4831581
Rubinfeld
711/126
May,1989

[0 after 0 votes]
4794524
Carberry
712/32
Dec,1988

[0 after 0 votes]
4755930
Wilson, Jr.
711/122
Jul,1988

[0 after 0 votes]
4439829
Tsiang
711/118
Mar,1984

[0 after 0 votes]
4392200
Arulpragasam
711/140
Jul,1983

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


What is claimed is:

1. A disk controller coupled between a host computer and a disk drive, the disk controller comprising:

a controller microprocessor;

a cache memory including:

at least one volatile memory module; and

at least one non-volatile memory module;

a cache memory control circuit coupled to said at least one non-volatile memory module and said at least one volatile memory module wherein in response to a write command received from the host computer, said controller microprocessor allocates a predetermined number of memory blocks in each of said at least one volatile and said at least one non-volatile memory modules for storage of write-data and upon completion of a write operation to said at least one non-volatile memory modules, said cache memory control circuit transfers the write-data from said at least one non-volatile memory module to said at least one volatile memory module.

2. The disk controller of claim 1 wherein:

said controller microprocessor includes a memory having stored therein a list of memory blocks available for use in said at least one non-volatile memory module and wherein said controller microprocessor is adapted to allocate from the list a predetermined number of memory blocks of said at least one non-volatile memory module for storage of the host write-data thereby removing the predetermined number of memory blocks of said at least one non-volatile memory module from the list of memory blocks available for use; and

said controller is adapted to allocate a corresponding number of memory blocks of said at least one volatile memory module such that said cache memory control circuit can transfer the write-data from the predetermined memory blocks of said at least one non-volatile memory module to the corresponding memory blocks of said at least one volatile memory module.

3. The disk controller of claim 2 wherein said cache memory control circuit transfers the write data from said at least one non-volatile memory module to said at least one volatile memory module with a DMA transfer.

4. The disk controller of claim 3 wherein the list of available memory blocks is provided from a plurality of linked domains wherein each of said plurality of linked domains represents a predetermined number of memory blocks and wherein each of said plurality of domains has associated therewith a valid field and an in-operation field which indicate the status of each memory block in said domain.

5. The disk controller of claim 3 wherein in response to write-data being stored on the disk drive, the allocated memory blocks of said at least one non-volatile memory module are de-allocated and added to the list of memory blocks available for use.

6. The disk controller of claim 5 further comprising a sequence counter for tracking the number or write operations in particular one of said plurality of domains.

7. The disk controller of claim 3 wherein said cache memory control circuit is provided as an application specific integrated circuit.

8. The disk controller of claim 7 wherein:

said controller microprocessor includes a memory having stored therein a list of memory blocks available for use in said at least one non-volatile memory module wherein the list of available memory blocks is provided from a plurality of linked domains wherein each of said plurality of linked domains represents a predetermined number of memory blocks and wherein each of said plurality of domains has associated therewith a valid field and an in-operation field which indicate the status of each memory block in said domain;

said at least one volatile memory module is provided as a single in-line memory module; and

said at least one non-volatile memory module is provided as a single in-line memory module.

9. A disk storage subsystem comprising:

at least one disk drive; and

a disk controller coupled to said disk drive and adapted to couple to a host computer, said disk controller comprising:

a controller microprocessor;

a cache memory including:

a plurality of volatile memory modules which form a read-cache;

a plurality of non-volatile memory modules which form a write-cache; and

a cache memory control circuit coupled to said non-volatile memory module and said volatile memory module wherein in response a write command received from the host computer, said controller microprocessor allocates a predetermined number of memory blocks in each of said volatile and said non-volatile memory modules for storage of write data and upon completion of a write operation to said non-volatile memory modules, said cache memory control circuit transfers the write data from said non-volatile memory module to said volatile memory module.

10. The disk storage subsystem of claim 9 wherein:

said plurality of volatile memory modules which form said read-cache are provided from a plurality of physically separate memory modules; and

said plurality of non-volatile memory modules which form said write-cache are provided from a plurality of physically separate memory modules.

11. The disk storage subsystem of claim 10 wherein at least one of said plurality of non-volatile memory modules is provided as a single in-line memory module.

12. The disk storage subsystem of claim 11 wherein said controller microprocessor includes a memory having stored therein a list of memory blocks available for use in said non-volatile memory module wherein the list of available memory blocks is provided from a plurality of linked domains wherein each of said plurality of linked domains represents a predetermined number of memory blocks and wherein each of said plurality of domains has associated therewith a valid field and an in-operation field which indicate the status of each memory block in said domain.

13. The disk storage subsystem of claim 11 wherein:

said controller microprocessor includes a memory having stored therein a list of memory blocks available for use in said non-volatile memory module and wherein said controller microprocessor is adapted to allocate from the list a predetermined number of memory blocks of said non-volatile memory module for storage of the host write-data thereby removing the predetermined number of memory blocks of said non-volatile memory module from the list of memory blocks available for use; and

said controller is adapted to allocate a corresponding number of memory blocks of said volatile memory module such that said cache memory control circuit can transfer the write-data from the predetermined memory blocks of said non-volatile memory module to the corresponding memory blocks of the volatile memory module.

14. The disk storage subsystem of claim 12 wherein in response to write-data being stored on the disk drive, the allocated memory blocks of said non-volatile memory module are de-allocated and added to the list of memory blocks available for use.

15. The disk storage subsystem of claim 14 wherein said at least one disk drive is a first one of a plurality of disk drives each of said plurality of disk drives coupled to provide a redundant array of inexpensive disks.

16. A method of transferring data to be written from a host computer to at least one disk drive within a disk storage subsystem including a host interface circuit, a disk interface circuit, a controller microprocessor, a cache memory, a cache memory management circuit and the at least one disk drive, the method comprising the steps of:

receiving in the disk storage subsystem a host write-to-disk command;

allocating a predetermined number of memory blocks in a non-volatile memory module of the cache memory;

allocating a predetermined number of memory blocks in a volatile memory module of the cache memory;

storing the data to be written to the at least one disk drive in the allocated memory blocks of the non-volatile memory module of the cache memory; and

initiating a DMA transfer by the cache memory management circuit, to copy the data to be written to the at least one disk drive from the allocated memory blocks of the non-volatile memory module to the allocated memory blocks of the volatile memory module of the cache memory.

17. The method of claim 16 further comprising the step of transferring the data to be written from the allocated memory blocks of the volatile memory module of the cache memory to the at least one disk drive.

18. The method of claim 16 wherein the step of transferring the data to be written from the allocated memory blocks of the volatile memory module to the at least one disk drive includes the step of writing data across each of a plurality of disk drives coupled to provide a redundant array of inexpensive disks.

19. The method of claim 18 further comprising the step of writing parity information across each of the plurality of disk drives.

20. The method of claim 17 wherein after the step of transferring the data to be written from the allocated memory blocks of the volatile memory module to the at least one disk drive performing the step of de-allocating the predetermined number of memory blocks in the non-volatile memory module of the cache memory.

21. A method of controlling a cache memory of a disk storage subsystem coupled to a host computer, the method comprising the steps of:

establishing a list of available memory blocks in a write-cache;

in response to a write operation initiated by a host computer, allocating from the list of available memory blocks a predetermined number of memory blocks of the write-cache;

allocating a like predetermined number of blocks in a read-cache;

receiving write-data from the host computer;

storing the write-data in the allocated memory blocks of the write-cache;

indicating to the host computer that the write-data stored in the read-cache is valid and available for use; and transferring the write-data from the allocated memory blocks of the write-cache to the allocated memory blocks of the read-cache.

22. The method of claim 21 further comprising the step of storing the write-data on a disk drive of the disk storage subsystem.

23. The method of claim 22 further comprising the step of de-allocating the allocated memory blocks of the write-cache.
 Description Submit all comments and votes
 


FIELD OF THE INVENTION

This invention relates to disk storage subsystems and more particularly to cache memory management in disk storage subsystems.

BACKGROUND OF THE INVENTION

Due to the large amount of information processed by present day computer systems, there is a trend to couple a disk storage subsystem to a host computer to thus increase the data storage capability and efficiency of the host computer.

Disk storage subsystems typically include a disk controller and one or more disk drives. The disk controller includes a controller microprocessor coupled to a host interface circuit and a disk interface circuit. The controller microprocessor generally coordinates and controls the transfer of data from the host computer to the disk storage subsystem and vice-versa.

As is known, the increasing performance characteristics of central processor units (CPUs) and memories in host computers has not generally been matched by similar performance increases in disk storage subsystems. In particular, mechanical latency i.e. the time required to access data or instructions stored in the disk storage subsystem of a computer, has increasingly become the factor which prevents the full realization of the speed of contemporary computer systems. This result is occurring because the speed of CPUs has outstripped the speed with which disk storage subsystems can provide data to a host.

The longer it takes to obtain data from the disk storage subsystem, the slower a host CPU runs because CPUs usually remain idle while waiting for data. Thus, one negative effect of disk latency is its effect on CPU speed.

This negative effect has increased as CPU speed has outstripped disk subsystem speed. Thus, despite the advances made in high density, high speed disk storage subsystems, disk storage subsystems typically remain the speed limiting link in a computer system. One way to reduce average latency in a disk storage subsystem is to add a cache memory to the disk storage subsystem.

A cache memory generally includes a relatively small memory device physically situated proximate the disk controller of the disk storage subsystem. The caching method is software controlled. Due to the physical proximity of the cache memory to the disk controller and the nature of the cache memory control, latency of the cache memory is several times less than the latency of the disk drives. Since cache memory latency is much less than disk drive latency, overall system speed is improved in disk storage subsystems that include a cache memory.

Cache memories capitalize on the characteristic that once a host computer reads data from or writes data to the disk drives, it is very likely that this data will be reused by the host computer in the near future. For simplicity of description, data, instructions and any other forms of information commonly stored in computer memories are collectively hereinafter referred to as data. Thus, frequently used data or instructions are replicated in cache memories.

When the host computer initiates a data write operation for example, the data is first stored in the cache memory and then subsequently stored on the disk drives. If the host computer later requests the same data, the data may thus be retrieved from the cache memory rather than from a disk drive.

Retrieving data from the cache memory avoids the necessity of accessing one or more disk drives of the disk storage subsystem which are relatively slow compared to the cache memory. Therefore data retrieval is accomplished more rapidly which in turn leads to an overall increase in system performance.

While disk storage subsystems that include a cache memory have a number of advantages, one disadvantage is the expense of cache memories. This disadvantage is amplified because a cache memory does not add memory capacity to disk storage subsystem. Rather, cache memories are add-ons to disk memory, because, as noted above cache memories replicate data stored in the disk drives of the disk storage subsystem.

Another problem which arises with cache memories is the need to maintain coherency between data stored in the cache memory and data stored on the disk drives of the disk storage subsystem. More specifically, since data stored at either location can be updated, a disk storage subsystem that includes a cache memory must also include a technique for maintaining coherency between the same data stored in the cache memory and the disk drives. If coherency is not maintained, data at one memory location may become stale and the same data at another memory location may be updated. The subsequent use of stale or corrupt data in the computer system can lead to errors.

Several different types of cache management techniques have been developed to control the process which occurs when data stored in a cache memory are updated. Generally, in response to a host processor initiated write operation, the write-data is written to the cache memory and then propagated directly to the disk drives. Cache memories throughout the disk storage subsystem are searched and any copies of written data are either invalidated or updated.

Another problem with cache memories is the volatile nature of the cache memories. That is, data stored in volatile cache memories is lost in the event of a power or device failure in the disk controller.

One solution to this problem is to provide the entire cache memory as a non-volatile cache memory. For example, the cache memory may include a battery back-up circuit which provides power to the cache memory in the event of a power failure. One problem with this approach, however, is the large expense involved in providing a cache memory having a battery circuit and a power sense circuit to detect when a power failure is occurring and that batteries should be engaged for back up operation. Moreover, such battery and power sense circuits lead to a relatively complex cache memory circuit design. Also the additional circuitry may reduce the reliability of the cache memory.

Furthermore, if the entire cache is provided as a non-volatile cache it is relatively difficult and expensive to duplicate the contents of the cache memory since it would be necessary to provide a second non-volatile cache memory having a memory size equal to or greater than first non-volatile cache memory so that the contents of the first non-volatile cache memory could be duplicated and stored to protect the contents before transfer to a drive disk.

It would be desirable, therefore, to provide a disk storage subsystem which includes a cache memory system which is relatively inexpensive, which minimizes the chance of corrupting data and which maintains the data integrity of the disk storage subsystem.

SUMMARY OF THE INVENTION

To increase the data integrity of disk storage subsystems, a cache memory can include both a volatile memory portion and a non-volatile memory portion. The volatile memory portion of the cache memory may be provided from volatile memory modules while the non-volatile memory portion may be provided from non-volatile memory modules.

Data transferred between the host computer and one or more disk drives of the disk storage subsystem is written to and read from the volatile cache memory modules. The non-volatile memory modules duplicate or mirror data stored in the volatile memory modules. Each non-volatile memory module can include a battery back-up power source which powers the non-volatile memory modules in the event of system power failure.

With this approach, the cost of the cache memory is minimized because rather than providing the entire cache memory as a non-volatile cache memory, the cache memory can include several non-volatile memory modules and a greater number of volatile memory modules. Moreover, the data integrity of the system is increased since in the event of a system power failure, for example, data stored in the non-volatile memory is preserved until the system power is restored. Upon power restoration the data may be retrieved from the non-volatile memory modules. Alternatively, if power cannot be restored, the non-volatile memory modules may be transferred to a different disk controller which has not lost power. This likewise increases the data integrity of the system since a user can restore the data preserved on the non-volatile memory module with relatively little difficulty.

The volatile cache memory is generally accessed by the disk subsystem controller microprocessor as a physically and logically contiguous memory. This is generally true even where the volatile cache memory may be provided from one or more physically separate volatile memory modules.

Each non-volatile memory module, on the other hand, is generally accessed as a physically and logically separate memory. This gives rise to certain problems in cache memory management of the volatile and non-volatile cache memory modules. Since the volatile and non-volatile memory modules are physically and logically separate, a technique is required to either update or invalidate data which is stored in both the volatile and non-volatile cache memory modules and thus prevent the corruption of data in the disk storage subsystem.

One approach to solving this problem is to provide separate cache memory management circuits for each of the logically and physically separate non-volatile memory modules. This approach, however, leads to a relatively expensive and complicated cache system since each of the separate cache memory management circuits must be coupled together and there activities must be coordinated to prevent data corruption.

It would thus be desirable to provide a relatively simple, low cost cache memory which includes a non-volatile memory module and a volatile memory module and which protects against data corruption in the cache memory.

It would also be desirable to provide a technique for managing a cache memory which includes at least one volatile memory module and a plurality of physically and logically separate non-volatile memory modules.

A disk controller is presently disclosed which includes a controller microprocessor coupled to a cache memory. The cache memory includes one or more volatile cache memory modules and one or more non-volatile cache memory modules which are physically and logically separate or disjoint from each other and from the volatile cache memory modules. A cache memory control circuit is coupled to each of the volatile and non-volatile cache memory modules. In response to a write command received from a host computer, the controller microprocessor allocates a predetermined number of memory blocks in the non-volatile cache memory modules. After allocating the memory blocks of the non-volatile cache memory, the disk controller selects and allocates a corresponding plurality of memory blocks in the volatile memory modules. Host supplied write-data is then stored in the allocated memory blocks of the non-volatile memory module. Immediately thereafter the subsystem sends an acknowledgment signal to the host that the write operation is complete. The cache memory control circuit then performs a direct memory access (DMA) operation to copy the write-data from the allocated memory blocks of the non-volatile memory module to the corresponding allocated memory blocks of the volatile memory module. The write-data is then stored on a disk drive at which point the allocated memory blocks of the non-volatile memory are de-allocated and thus made available for further use. Thus, by allocating memory blocks of the non-volatile memory only on an as-needed basis, the physically and logically disjoint volatile and non-volatile memories can be managed as if they were a single cache memory. Also by de-allocating the memory blocks of non-volatile memory module immediately after the data is written to disk, the data integrity of the disk controller can be improved with only a limited number of non-volatile memory modules rather than providing the entire cache as a non-volatile cache memory.

The memory