United States Patent m
US005761729A [ii] Patent Number:  Date of Patent:
 VALIDATION CHECKING OF SHARED MEMORY ACCESSES
 Inventor: Daniel J. Scales. Palo Alto. Calif.
 Assignee: Digital Equipment Corporation,
 Appl. No.: 672,221
 Filed: Jul. 17, 1«96
 Int CI.6 G06F 12/00; G06F 15/167
 U.S. CI 711/148; 395/200.44; 711/156
 Field of Search 395/474,475.
395/200.03, 200.08. 472, 200.31. 200.32. 200.33, 200.43. 200.44. 200.45, 200.46;
711/145, 147, 148, 156
 References Cited
U.S. PATENT DOCUMENTS
5,117,350 5/1992 Parrish et al 395/401
5,193,180 3/1993 Hastings 395/710
5,335,344 8/1994 Hastings 395/183.11
5,528,761 6/1996 Oobaetal 395/200
5,566,321 10/1996 Paseetal 395/480
5,590,329 12/1996 Goodnow, H et al 395/708
5,613,063 3/1997 Eustace etal 395/183.14
"Fine-grain Access Control for Distributed Shared Memory," Schoinas et al.. Computer Sciences Dept.. University of Wisconsin-Madison, ACM ASPLOS VL Oct. 1994.
Primary Examiner—-Tod R. Swann
Assistant Examiner—Conley B. King. Jr.
Attorney, Agent, or Firm—Dirk Brinkman; Alfred A.
In a computer system a plurality of workstations are connected to each other by a network. Each workstation including a processor, a memory having addresses, and an input/ output interface connected to each other by a bus. The input/output interfaces connect the workstations to each other via the network. Valid data accesses are checked by a software implemented method. A set of the addresses of the memories are designated as virtual shared addresses to store shared data. A particular one of the programs allocates a portion of the virtual shared addresses to store a shared data structure as one or more blocks accessible by the programs executing in any of the processors. The size of a particular block depends on the size of the shared data structure. Each block including an integer number of lines, each line including a predetermined number of bytes. The program is instrumented to initialize the bytes allocated for the shared data structure to a predetermined flag value. The flag value indicates that the data are in an invalid state. Load instructions of the programs are instrumented to check if data loaded from the shared data structure are different than the predetermined flag value. The load instructions are executed if the data are different than the predetermined flag value. Otherwise, miss handling code is executed before the load instructions are executed.
12 Claims, 14 Drawing Sheets