WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Multiple processor system having software for selecting shared cache entries of an associated castout class for transfer to a DASD with one I/O operation    
United States Patent5493668   
Link to this pagehttp://www.wikipatents.com/5493668.html
Inventor(s)Elko; David A. (Poughkeepsie, NY); Frey; Jeffrey A. (Fishkill, NY); Mohan; Chandrasekaran (San Jose, CA); Narang; Inderpal S. (Saratoga, CA); Nick; Jeffrey M. (Fishkill, NY); Strickland; Jimmy P. (Saratoga, CA); Swanson; Michael D. (Poughkeepsie, NY)
AbstractA high-speed cache is shared by a plurality of independently-operating data systems in a multi-system data sharing complex. Each data system has access both to the high-speed cache and the lower-speed, secondary storage for obtaining and storing data. Management logic and the high-speed cache assures that a block of data obtained form the cache for entry into the secondary storage will be consistent with the version of the block of data in the shared cache with non-blocking serialization allowing access to a changed version in the cache while castout is being performed. Castout classes are provided to facilitate efficient movement from the shared cache to DASD.
   














 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 5493668
Multiple processor system having software for selecting shared cache

     entries of an associated castout class for transfer to a DASD with one

     I/O operation - US Patent 5493668 Drawing
Multiple processor system having software for selecting shared cache entries of an associated castout class for transfer to a DASD with one I/O operation
Inventor     Elko; David A. (Poughkeepsie, NY); Frey; Jeffrey A. (Fishkill, NY); Mohan; Chandrasekaran (San Jose, CA); Narang; Inderpal S. (Saratoga, CA); Nick; Jeffrey M. (Fishkill, NY); Strickland; Jimmy P. (Saratoga, CA); Swanson; Michael D. (Poughkeepsie, NY)
Owner/Assignee     International Business Machines Corporation (Armonk, NY)
Patent assignment
All assignments
Publication Date     February 20, 1996
Application Number     07/860,806
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     March 30, 1992
US Classification     711/130 711/113
Int'l Classification     G06F 012/02 G06F 013/00
Examiner     Lee; Thomas C.
Assistant Examiner     Weinstein; Marc K.
Attorney/Law Firm     Goldman; Bernard M.
Address
Parent Case     This application claims the priority date of Dec. 14, 1990, for the matter disclosed in a prior U.S. application Ser. No. 07/629,315, filed Dec. 14, 1990, by C. Mohan et al and entitled "Non-blocking Serialization for Removing Data From A Cache" which is a pending unissued application at the time of filing of this application. The contents of prior application Ser. No. 07/629,315, abandoned, is carried into this application which is a continuation-in-part of prior application Ser. No. 07/629,315, abandoned; and both applications have at least one invention in common.
Priority Data    
USPTO Field of Search     395/425 395/275 395/250 395/200 364/200
Patent Tags     multiple processor software selecting shared cache entries associated castout class transfer dasd one i/o operation
   
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
5386546
Hamaguchi
711/133
Jan,1995

[0 after 0 votes]
5163148
Walls
707/204
Nov,1992

[0 after 0 votes]
5142627
Elliot
710/5
Aug,1992

[0 after 0 votes]
5113514
Albonesi
711/144
May,1992

[0 after 0 votes]
4636946
Hartung
711/136
Jan,1987

[0 after 0 votes]
4603382
Cole
710/56
Jul,1986

[0 after 0 votes]
4445174
Fletcher
711/121
Apr,1984

[0 after 0 votes]
4441155
Fletcher
711/3
Apr,1984

[0 after 0 votes]
4317168
Messina
711/143
Feb,1982

[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
 


Having thus described our invention, what we claim as new and desire to secure by Letters Patent is:

1. A method of controlling data transfer from shared storage to I/O devices in a computer complex, comprising the steps of:

structuring a sysplex to include a plurality of central processor complexes (CPCs), in which the CPCs use I/O control software for controlling sysplex direct access storage devices (sysplex DASDs) connected using first data paths to the CPCs for storing data items permanently in the sysplex, and a shared electronic storage (SES) connected using second data paths to the CPCs, wherein said first data paths are separate and distinct from said second data paths, in which the CPCs use SES control software for controlling SES over said second data path,

designating by said SES control software castout classes for SES cache directory entries to associate the castout classes with changed data items represented by the directory entries for enabling transfer to DASD in a single I/O operation of a plurality of data items selected from a castout class.

2. A method of controlling data transfer from shared storage to I/O devices in a computer complex as defined in claim 1, comprising the step of:

associating, using said I/O control software for controlling sysplex DASDs, castout classes designated for SES cache directory entries with identifications of sysplex DASD for locating a DASD for receiving a potential castout of data items associated with a respective castout class.

3. A method of controlling data transfer from shared storage to I/O devices in a computer complex as defined in claim 1, comprising the steps of:

associating a castout lock representation with each SES cache directory entry for a data item stored in a SES cache data area, and

setting the castout lock representation to a castout or non-castout state, in which the non-castout state has a predetermined value, and the castout state has a different value identifying a castout process used for transferring the associated data item to DASD.

4. A method of controlling data transfer from shared storage to I/O devices in a computer complex as defined in claim 3, the method further comprising the step of:

setting an indicating means for any valid SES cache directory entry to indicate a version of an associated data item stored in SES has been changed during a castout of the data item to DASD and the SES data item is not to be deleted from SES as long as the SES version is different from a version of the same data item stored in a sysplex DASD.

5. A method of controlling data transfer from shared storage to I/O devices in a computer complex as defined in claim 4, while the castout lock representation has the predetermined value indicating no castout state exists, the method further comprising the step of:

providing a change flag field in each directory entry in which the change flag field indicates whether or not an associated data item is stored in the SES cache with a version different from a version of the same data item stored in a sysplex DASD.

6. A method of controlling data transfer from shared storage to I/O devices in a computer complex as defined in claim 5, comprising the step of:

inhibiting reclaiming of a SES cache directory entry in a castout class when the change flag field indicates a different version is stored in the SES cache.

7. A method of controlling data transfer from shared storage to I/O devices in a computer complex as defined in claim 3, comprising the step of:

inhibiting reclaiming of a SES cache directory entry in a castout class when the castout lock representation indicates a castout state exists for the entry.

8. A method of controlling data transfer from shared storage to I/O devices in a computer complex as defined in claim 3, while the castout lock representation indicates a castout state exists and the change flag field indicates a changed state, the method further comprising the step of:

setting the change flag field to its non-changed state when the castout lock representation is set to provide a combinatorial indication (combining the indications for the change flag field and castout lock representation) indicating that a changed state exists for the version of the data item in the SES cache in relation to a DASD version of the same data item.

9. A method of controlling data transfer from shared storage to I/O devices in a computer complex as defined in claim 1, comprising the steps using said SES control software of:

counting entries in each castout class, and

initiating a castout process for a castout class when the number of SES cache directory entries counted for the castout class has reached a predetermined threshold number.

10. A method of controlling data transfer from shared storage to I/O devices in a computer complex as defined in claim 9, comprising the step of:

providing a counter means for each castout class which is incremented by each CPC write command specifying a castout class and writing a new data item in the castout class in SES, for which the counter means provides a measurement of the number of SES data items currently existing in each castout class.

11. A method of controlling data transfer from shared storage to I/O devices in a computer complex as defined in claim 10, comprising the steps of:

signalling by a timer program of the expiration of each time interval used for indicating the number of changed data items in each castout class currently measured by each castout-class counter means in a SES cache,

performing a measurement operation for measuring the number of changed data items currently existing in each castout class in a SES cache in response to a signal by the signalling step, and

initiating a castout process for any castout class which has the changed number of SES cache directory entries indicated by the measurement operation as equal to or exceeding a predetermined threshold number for the castout class.

12. A method of controlling data transfer from shared storage to I/O devices in a computer complex as defined in claim 10, comprising the steps of:

issuing of a write command by a CPC to a SES cache specifying a castout class for a data item, and

responding to the CPC command by SES sending a count of the number of data items stored in the specified castout class in the SES cache and the total number of data items in all castout classes in the SES cache.

13. A method of controlling data transfer from shared storage to I/O devices in a computer complex as defined in claim 1, comprising the steps of:

transmitting by a CPC to a SES cache of a command containing a name, a data item, a changed state indication, and a castout class for the data item,

accessing a directory entry in the SES cache having the name of the data item, and

setting in the directory entry a change flag field to the changed state indication for the data item, and setting a castout class field to the castout class for the data item being stored in SES regardless of whether a castout class was previously designated in the entry as changed or non-changed for the data item.

14. A method of controlling data transfer from shared storage to I/O devices in a computer complex as defined in claim 13, comprising the steps of:

transmitting a read-castout-class command from a CPC to a SES cache specifying a castout class,

accessing in SES of the queue for the castout class, and

finding a data item having a representation in the castout class.

15. A method of controlling data transfer from shared storage to I/O devices in a computer complex as defined in claim 14, comprising the steps of:

transmitting with the command of a name and a name mask to represent a set of related names potentially in the directory,

finding one or more names in a set defined by the mask applied to the name in a specified castout class, and

sending by SES to the CPC issuing the command of a list containing the set of names obtained by the finding step to inform the CPC of specific names in the castout class.

16. A method of controlling data transfer from shared storage to I/O devices in a computer complex as defined in claim 15, comprising the step of:

ordering the names found by the finding step in a recency of write-access sequence, and the sending step sending to the CPC the list of names in the recency of write-access sequence.

17. A method of controlling data transfer from shared storage to I/O devices in a computer complex as defined in claim 15, comprising the step of:

also sending by SES to the CPC of a count of the number of data items currently in the list being sent.

18. A method of controlling data transfer from shared storage to I/O devices in a computer complex as defined in claim 1, comprising the steps of:

transmitting a read-castout-class-information command from a CPC to a SES cache for requesting values in a set of counters accumulated in SES for respective predefined events occurring in relation to castout classes to enable the CPC to control a castout operation, and

responding by SES to the command by sending to the CPC of current values in the counters requested by the command.

19. A method of controlling data transfer from shared storage to I/O devices in a computer complex as defined in claim 1, comprising the steps of:

transmitting a read-directory command from a CPC to a SES cache for requesting information on one or more named data items,

scanning the entries in the SES cache directory for entries indicating a changed data item in SES (changed entries) for generating a name list or a list of directory-entry-information-blocks without being affected by changes to directory entries during the scanning step, and

responding to the command by SES sending to the CPC the name list or the list of directory-entry-information-blocks.

20. A method of controlling data transfer from shared storage to I/O devices in a computer complex as defined in claim 19, the responding step further comprising:

specifying a name and name mask in a read-directory command to define a set of related names for the scanning step to find entries in the directory for generating the name list or the list of directory-entry-information-blocks.

21. A method of controlling data transfer from shared storage to I/O devices in a computer complex as defined in claim 19, the responding step further comprising:

providing in each directory-entry-information-block for an associated data item of: the name, change state, castout class, and castout lock state found in the directory entry for the data item.

22. A method of controlling data transfer from shared storage to I/O devices in a computer complex as defined in claim 1, further comprising the steps of:

transmitting by a CPC to a SES cache of a read-for-castout command containing a name of a data item being requested for castout,

testing in a directory entry in the SES cache for the name in the command, for a non-locked state in a castout lock field, and for a changed state indication for an associated data item, and

setting in the directory entry (when the conditions stated for the testing step are found) of the castout lock field to identify a castout process, the change field to indicate a non-changed state for the data item, and transmitting the data item to the CPC for the LCB.

23. A method of controlling data transfer from shared storage to I/O devices in a computer complex as defined in claim 22, further comprising the step of:

responding with a copy of the castout lock field and without transmitting the associated data item to the CPC when the castout lock field indicates a locked state.

24. A method of controlling data transfer from shared storage to I/O devices in a computer complex as defined in claim 23, further comprising the steps of:

transmitting by a CPC to a SES cache of a unlock-castout-locks command containing a list of one or more names of data items being requested for unlocking,

comparing an identifier of the CPC sending the command with a CPC identifier in a castout lock field for each directory entry found for a name in the list, and

accepting the command by resetting the castout lock field to a predetermined value indicating an unlocked state if the comparing step finds equality, but rejecting the command without changing the castout lock field if the comparing step finds inequality.

25. A method of controlling data transfer from shared storage to I/O devices in a computer complex as defined in claim 24, further comprising the step of:

forcing a change field in a directory entry to indicate a changed state for an associated data item if a requested castout operation for the data item is unsuccessful.

26. A method of controlling data transfer to I/O in a computer complex as defined in claim 24, further comprising the step of:

responding with a list locator representation when a rejection of a command occurs for a name in the list to enable the CPC to recognize it need not castout the data item, or to later again request a castout of the data item.

27. A method of controlling data transfer from shared storage to I/O devices in a computer complex as defined in claim 22, further comprising the step of:

registering an LC identifier (when registration is selected by the program) to indicate the local cache buffer used to store the data while in transit to DASD, to affect a read and register operation to the local cache and a castout operation in a single data transfer from SES to the CPC.

28. A method of controlling data transfer from shared storage to I/O devices in a computer complex as defined in claim 22, further comprising the steps of:

suppressing registration of an LCB identifier (when suppression of registration is selected by the program) to allow the castout operations to bypass the local-cache buffers.

29. A method of controlling data transfer to I/O in a computer complex as defined in claim 1, further comprising the steps of:

transmitting by a CPC to a SES cache of a command containing a name for finding any SES directory entry having the same name associated with a data item stored in the SES cache, and

putting a representation of the directory entry at an end of a castout queue for the castout class designated for the associated data item, the representation being put at a most recently changed (MRC) end of the queue to have the queue order its representations in recency order of data items changed in the castout class, with the least recently changed (LRC) data item in the castout class being indicated at the opposite end of the queue.

30. A method of controlling data transfer to I/O in a computer complex as defined in claim 29, further comprising the step of:

providing a write command as the command referencing a directory entry having a representation in the castout class.

31. A method of controlling data transfer to I/O in a computer complex as defined in claim 30, further comprising the step of:

providing a write and register command or a write when registered command referencing a directory entry having a representation in the castout class.

32. A method of controlling data transfer to I/O in a computer complex as defined in claim 30, further comprising the steps of:

rejecting the write command if the command represents a no-change state for a transmitted data item and a directory entry is found for the name of the data item in the command which indicates a changed state, and

responding to the CPC issuing the command with a rejection signal indicating the command is incompatible with the change state in the directory entry.

33. A method of controlling data transfer from shared storage to I/O devices in a computer complex, comprising the steps of:

structuring a sysplex to include a plurality of central processor complexes (CPCs), in which the CPCs use I/O control software for controlling sysplex direct access devices (sysplex DASDs) connected to the CPCs for storing data items permanently in the sysplex, and a shared electronic storage (SES), in which the CPCs use SES control software for controlling the SES,

designating by said SES control software castout classes for SES cache directory entries to associate the castout classes with changed data items represented by the directory entries for enabling transfer to DASD in a single I/O operation of a plurality of data items selected from a castout class,

associating a user-data field with each SES cache directory entry in which to indicate the time of initially writing an associated data item in the SES cache, and

writing a time in the user-data field when a change flag field is set in the directory entry to indicate that the associated data item is different from a copy of the same data item in the sysplex DASD.

34. A method of controlling data transfer from shared storage to I/O devices in a computer complex as defined in claim 33, the writing step further comprising:

using the user-data field to control backup by indicating a time from which backup is needed in case of failure of the SES cache.

35. A method of controlling data transfer from shared storage to I/O devices in a computer complex as defined in claim 33, the detecting step further comprising:

retrieving by a CPC of the time of change of a data item in a user-data field of a SES directory entry to reduce recovery time for a SES cache after failure of the SES cache.
 Description Submit all comments and votes
 


CROSS REFERENCE TO RELATED APPLICATIONS

This application contains subject matter which is related to the subject matter of the following applications which are assigned to the same assignee as this application:

"Configurable, Recoverable Parallel Bus" by N. G. Bartow et al, Ser. No. 08/071,146, pending Filed: Feb. 20, 1992; "High Performance Channels For Data Processing Systems" by N. G. Bartow et al, Pat. No. 5,412,803; and "Frame-Group Transmission And Reception For Parallel/Serial Buses", by N. G. Bartow et al, Pat. No. 5,267,240.

Specifications Incorporated by Reference:

The entire specifications of the following listed applications are completely incorporated by reference as part of the subject application. Each of the following listed applications is owned by the same assignee as the subject application, is filed on the same day as the subject application, and has the same priority date as the subject application. They are:

"Communicating Messages Between Processors And A Coupling Facility" by D. A. Elko et al, Ser. No. 08/420,893, pending; "Sysplex Shared Data Coherency Method and Means" by D. A. Elko et al, Ser. No. 07/860,805, pending; "Method and Apparatus For Distributed Locking of Shared Data, Employing A Central Coupling Facility" by D. A. Elko et al, Pat. No. 5,339,427; "Command Quiesce Function" by D. A. Elko et al, Pat. No. 5,339,405; "Storage Element For A Shared Electronic Storage Cache" by D. A. Elko et al, Ser. No. 07/860,807, pending; "Command Retry System" by D. A. Elko et al, Pat. No. 5,392,397; "Integrity Of Data Shared Between Caches Over A Link" by D. A. Elko et al, Pat. No. 5,331,673; "Management Of Data Objects Used To Maintain State Information For Shared Data At A Local Complex" by J. A. Frey et al, Pat. No. 5,388,266; "Recovery Of Data Objects Used To Maintain State Information For Shared Data At A Local Complex" by J. A. Frey et al, Pat. No. 5,394,542; "Message Path Mechanism For Managing Connections Between Processors And A Coupling Facility" by D. A. Elko et al, Ser. No. 08/324,447, pending; "Method And Apparatus For Notification Of State Transitions For Shared Lists of Data Entries" by J. A. Frey et al, Pat. No. 5,390,328, "Method And Apparatus For Performing Conditional Operations on Externally Shared Data" by D. A. Elko et al, Ser. No. 08/383,532; pending "Apparatus And Method For List Management In A Coupled Data Processing System" by J. A. Frey et al, Pat. No. 5,410,695, "Interdicting I/O And Messaging Operations In A Multi-System Complex" by D. A. Elko et al, and "Method And Apparatus For Coupling Data Processing Systems" by D. A. Elko et al, Pat. No. 5,317,739.

Introduction

In a data processing system comprised of a plurality of operating systems supporting attachment to shared DASD and a shared electronic storage facility, data is to be shared and managed on disk, in a cache contained in the shared electronic storage facility, and in local processor storage. Managing the movement of data between DASD and the shared electronic storage must address the problems of: insuring continued access to the data while it is being moved between locations; optimizing use of the shared electronic storage such that data having the most frequent reference remains resident in the facility; providing means of moving modified data from the shared electronic storage facility to DASD efficiently so as to avoid congestion either at the facility or at the I/O subsystem including the DASD.

In particular, this invention relates to increasing system efficiency in reliably moving a cache version of a block of data to secondary storage after being updated in a multi-system, data sharing complex.

Background

Typically, prior hardware caches in a processor comprise a storage array having fixed-size data blocks. Such storage is viewed by the hardware as a linear array of blocks. The blocks of data in the cache are managed by a cache directory, which invalidates or casts data blocks in or out of such cache based on LRU (least recently used) storage references. Well-known types of hardware caches are used in a central processing units (CPUs), and in a DASD (direct access storage devices).

In a database system wherein a plurality of independently-operating computer systems share data, global locking is required to maintain coherency of data in the different systems. A. J. van de Goor, in COMPUTER ARCHITECTURE AND DESIGN, Addison Wesley, 1989, discusses the data coherency problem as one in which sharing data among a proliferation of processors raises the possibility that multiple, inconsistent copies of data may exist because of multiple paths to the data and because of opportunities to locally modify the data.

Solutions to the data coherency problem have been proposed. All are based essentially on the existence of a global lock on data retrieved from a central location. Assuming pagination of data, one computer system of a multi-computer system which shares data stored on a disk acquires a global lock on a page of data and obtains and updates the page. The lock signifies to the other computer systems that the page has been acquired for updating. Prior to releasing the lock on the page, the computer system holding the lock writes the page to the disk, after which it generates and sends a message to the other computer systems to invalidate any copies of the page which may be held in their local cache. The lock on the page is not released until acknowledgement is received from every other computer system having access to the page. A solution similar to this is described in detail in Pat. Nos. 4,399,504 and 4,965,719, which are assigned to the assignee of this patent application and are incorporated herein by reference. A commercial product available from the assignee of this application and which incorporates this solution is the IMS/VS system with the data sharing feature.

The prior art global locking system provides great advantage in maintaining data coherency. However, the overhead penalties inherent in it include the requirement for performing an I/O procedure when a page is updated and undertaking message exchange after the I/O procedure in order to :notify the other systems and release the lock.

When used in a non-data-shared single system case, the global-locking prior art incurs extra overhead in maintaining data coherency (consistency) between transactions by implementing a commit policy requiring each transaction which updates data to write the modified data, together with log records, to storage before the transaction is fully committed. This requires one I/O procedure per page for each modifying transaction, which increases overhead costs.

In contrast, the IBM DB2 in the single system non-data-sharing case follows a policy which does not require an I/O process to write an updated page back to storage in order to commit a transaction. If the protocol described above is used in a data-sharing situation where a plurality of computer systems access one or more data storage sites, the performance could degrade significantly because of the required write back to storage and message delay. In this regard, see C. J. Date's discussion of concurrency at pages 593-595 in Vol. I of AN INTRODUCTION TO DATABASE SYSTEMS, Addison-Wessley, 1986.

In a multi-computer, data-sharing system which includes multiple levels of storage, it is contemplated that a secondary level of storage would consist of one or more direct access storage devices (DASD's) which are shared by independently-operating computer systems. Typical nomenclature for hierarchally-arranged storage systems classify DASD and other such storage facilities as "secondary" storage. In this regard, secondary storage includes all facilities from which data must be moved to "primary" storage before it can be directly referenced by a CPU. See Detiel, OPERATING SYSTEMS, Second Edition, 1990, by Addison Wesley. It is further contemplated that caching techniques would be useful to provide a high-speed, frequently-accessed storage for shared data. For various reasons, data would be entered into a shared cache by the database systems after acquisition from DASD's. In this regard, a shared cache would be included in a primary level of storage for a multi-computer, data-sharing system.

In such a structure, a potential hazard would exist if one computer system obtained a block of data from the shared cache for the purpose of writing it to the DASD at the same time that the same block of data is obtained from the shared cache by another computer system, modified, and returned to the shared cache. In this situation, it is assumed that the retrieval of the modified block of data from the shared cache for storage in the DASD is referred to as "casting out" of the block. Castout requires that the page being cast out be read from the shared memory, written to DASD, and then marked as unchanged in the shared memory.

For efficient cache management of the shared cache, it is required that shared blocks of data be cast out periodically or based on thresholds of changed blocks in the cache. Once a block is cast out, it is marked as unchanged and becomes a candidate for deletion from the cache. A significant danger arises when the casting out is conducted by one computer system as some second computer system writes a new version of the page to the shared memory during the interval between the read and delete operations. The danger is that the delete will erase the new version of the block. Higher level locking or serialization and queuing in the shared cache are typically used to ensure that this does not happen. The problem with higher level locking is that it doubles the cost for removing the page from the cache because it requires two more multi-system interactions, that is lock and unlock. It will also delay the writing of the modified version by the second system which would produce undesirable performance consequences.

The term "class" has previously been used in record processing control, such as in the VM/370 spool file class for controlling printing, punching and networking operations. However, it has never been known to have been used in relation to any SES device to control castout processing under CPC control.

SUMMARY OF THE INVENTION

Sysplex Hardware Structure:

FIG. 1 shows a representation of a sysplex system. It contains a plurality of computer processing complexes (CPCs) from CPC-1 to CPC-M which represent any number of CPCs from one to a large number, all being connected to one or more SES (shared electronic storage) device (of which one SES device 101 is shown in FIG. 1).

Each CPC is of the type shown in FIG. 2, which may be a multiprocessor such as the presently commercial IBM ES/9000 model 900 which is designed according to the IBM ESA/390 architecture specified in the Enterprise Systems Architecture (ESA)/390) Principles of Operations (POP), which is orderable from IBM by form number SA22-7201-00, and is incorporated herein by reference in its entirety. Each CPC has one or more operating systems. If any CPC has more than one operating system, its resources must be logically partitioned among plural operating systems in using the IBM PR/SM feature. Inter-system channels (ISCs) are connected between SES (101) and CPCs 1 through M. An ISC connecting to a CPC communicates signals to/from microcode/hardware in the CPC.

Each CPC in the sysplex operates with a storage hierarchy, which for example may include a private high-speed hardware cache in each CPU of a CPC (201-1 and 201-N), a shared hardware cache accessible to all of the private processor caches (202), a main storage (MS) shared by all processors in the CPC (204),a hardware storage area (HSA) associated with MS but not having MS addressability (205). However, the DASD is grouped by DASD controls that allow any CPC in the sysplex to access any DASD in the group, which is referenced herein by the term "sysplex DASD" (207).

The CPC/SES physical connection (208) may be provided by a respective channel connected at one end to an MS controller in a respective CPC, and connected at its other end to a SES device. The respective channel bus may be made of a serial optical fibers. The bus may be a single fiber, but it may be made of a plurality of fibers operating in parallel by "striping" (interleaving) data among them.

In a hardware sense, a SES may be considered to be a large random access memory that may be used in common by all CPCs connected to the SES. The connected CPCs may use the SES to store shared data records and files on a temporary or semi- permanent basis. Hence, SES may be considered to be a component of the storage hierarchy in the system, having a hierarchy level common to all CPCs attached to the SES, and roughly corresponding to the Expanded Store (ES) level in the CPCs.

In a sysplex using this invention, one or more SES entities may be physically connected to the MS/ES in every CPC in the sysplex. It is not required that all CPCs in a sysplex be connected to a SES. For example, a SES may be attached only to a subset of CPCs operating the same programming subsystem. And different subsets of CPCs may be connected to different SESs in a sysplex for running different programming subsystems.

A fundamental feature in this invention is using SES as a high-speed cache for data normally stored in the sysplex common DASD, although the CPC/SES/DASD physical connections may not be in a direct hierarchical path. Any CPC in the sysplex can access a record much faster from SES than it can from the common DASD storage. That is, a data element or record can be quickly accessed in SES without the electro-mechanical delays found with DASD, such as waiting for head movement between tracks and waiting for track spin to reach a requested DASD record.

Special commands are provided to allocate the SES cache. Also, a plurality of caches may be allocated within the same SES, such as having a respective cache handle the data shared by attached subsets of CPCs using different programs.

Each SES cache includes a directory (102), data area (103), local cache register (104), and cache controls (105). If the data area part of the cache is not going to be used, it may be made zero in size. Each valid directory entry in a SES cache contains a name of a data element registered in SES by any of its attached CPCs. SES may or may not contain a copy of the data in the registered element. The SES registered name is also the name of one or more copies of the data element in one or more CPCs in the sysplex. Furthermore, this directory name also identifies a copy of the data element stored in (or about to be stored in) one of the DASDs 1-K in the bank of DASD connected to director 207.

A primary object of this invention is to provide a method and structure in a shared data, multi-computer system which guarantees that any page of data in a shared cache (aka SES) which is being cast out prior to deletion will not result in deletion of a later version of the page written to the shared memory (aka SES) while the castout operation is in progress.

A significant advantage of the invention is that it does not require higher level locking or serialization and queuing mechanisms in a shared memory to guarantee consistency between page versions when removing a page from the shared memory for entry into secondary storage (DASD).

An important object of this invention is to provide a method for operating a multi-system, data-sharing complex in which data is cached in a shared electronic memory (aka SES). In a multi-system, data-sharing complex, a database system executing on a first computer system could be reading a modified page in a shared cached as a first step to write the page to secondary storage while another database system could be trying to cache an even more recently updated version of the same page in the shared cache. The invention detects such a condition and, without a blocking mechanism such as locking, bars deletion of the updated copy of the page from the cache after the first computer system has stored the prior version in secondary storage.

This invention involves a sysplex using a plurality of operating systems (OSs). Any CPC in the sysplex may have its resources logically partitioned among a plurality of different OSs to provide a multiplicity of independent OSs within a single CPC, such as by the IBM processor resource/system management (PR/SM) system. Thus a sysplex may have any mix of OSs running on its different CPCs, some CPCs each having one OS, and other CPCs each having a plurality of OSs running independently of each other. One or more subsystems may be running under any OS in any CPC, including the IBM DB2, DFP, IMS, VSAM, etc. subsystems.

Different copies of the same data base subsystem program may be running simultaneously and independently in the different CPCs. With this invention, these different programs may be accessing the same or different data elements or records in the data base, which may simultaneously be in MS/ES local caches (LCs) of the different CPCs.

It is a primary object of this invention to provide for managing the movement of data between DASD and the shared electronic storage while addressing the problems of: insuring continued access to the data while it is being moved between locations; optimizing use of the shared electronic storage such that data having the most frequent reference remains resident in the facility; providing means of moving modified data from the shared electronic storage facility to DASD efficiently so as to avoid congestion either at the facility or at the I/O subsystem including the DASD.

A key innovation of this invention is a technique for operating a shared cache that does not require any additional serialization mechanisms such as highe