WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Multi-processor data processing system with multiple second level caches mapable to all of addressable memory    
United States Patent5875462   
Link to this pagehttp://www.wikipatents.com/5875462.html
Inventor(s)Bauman; Mitchell A. (Circle Pines, MN); Englin; Donald C. (Shoreview, MN); Balding; Mark L. (Cottage Grove, MN)
AbstractA cache architecture for a multiprocessor data processing system. The cache architecture includes multiple first-level caches, two second-level caches, and main storage that is addressable by each of the processors. Each first-level cache is dedicated to a respective one of the processors. Each of the second-level caches is coupled to the other second-level cache, coupled to the main storage, and coupled to predetermined ones of the first-level caches. The range of cacheable addresses for both of the second-level caches encompasses the entire address space of the main storage. Each of the second-level caches may be viewed as dedicated for write access to the set of processors associated with the predetermined set of first-level caches, and shared for read access to the other set of processors. The dedicated and shared nature enhances system efficiency. The cache architecture includes coherency control that filters invalidation traffic between the second-level caches. The filtering of invalidation traffic enhances system efficiency and is accomplished by tracking which second-level cache has the most recent version of the cached data.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Inventor     Bauman; Mitchell A. (Circle Pines, MN); Englin; Donald C. (Shoreview, MN); Balding; Mark L. (Cottage Grove, MN)
Owner/Assignee     Unisys Corporation (Blue Bell, PA)
Patent assignment
All assignments
Publication Date     February 23, 1999
Application Number     08/579,897
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     December 28, 1995
US Classification     711/119 711/117 711/118 711/120 711/121 711/122 711/137 711/141 711/143 711/144 711/145 711/146 711/154
Int'l Classification     G06F 013/00 G06F 012/08
Examiner     Swann; Tod R.
Assistant Examiner     Tran; Denise
Attorney/Law Firm     McMahon; Beth L. Johnson; Charles A. , Starr; Mark T. ,
Address
Parent Case    
Priority Data    
USPTO Field of Search     395/471 395/449 395/448 395/447 395/472 395/457 711/117 711/118 711/119 711/120 711/121 711/122 711/123 711/124 711/125 711/117 711/118 711/119 711/120 711/121 711/122 711/123 711/124 711/125 711/154 711/137
Patent Tags     multi-processor data processing multiple second level caches mapable all addressable memory
   
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
5684977
Van Loo
711/143
Nov,1997

[0 after 0 votes]
5671391
Knotts

Sep,1997

[0 after 0 votes]
5625892
Bauman
455/69
Apr,1997

[0 after 0 votes]
5603005
Bauman
711/124
Feb,1997

[0 after 0 votes]
5537640
Pawlowski
711/146
Jul,1996

[0 after 0 votes]
5530832
So
711/122
Jun,1996

[0 after 0 votes]
5426754
Grice
711/124
Jun,1995

[0 after 0 votes]
5423016
Tsuchiya
711/123
Jun,1995

[0 after 0 votes]
5392416
Doi

Feb,1995

[0 after 0 votes]
5386547
Jouppi
711/122
Jan,1995

[0 after 0 votes]
5359723
Mathews
711/122
Oct,1994

[0 after 0 votes]
5355467
MacWilliams
711/146
Oct,1994

[0 after 0 votes]
5325503
Stevens
711/146
Jun,1994

[0 after 0 votes]
5317716
Liu
711/144
May,1994

[0 after 0 votes]
5307477
Taylor
711/3
Apr,1994

[0 after 0 votes]
5276848
Gallagher
711/121
Jan,1994

[0 after 0 votes]
5265235
Sindhu
711/120
Nov,1993

[0 after 0 votes]
5265232
Gannon
711/124
Nov,1993

[0 after 0 votes]
5029070
McCarthy
711/143
Jul,1991

[0 after 0 votes]
5023776
Gregor
711/122
Jun,1991

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

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

[0 after 0 votes]
4586133
Steckler
711/138
Apr,1986

[0 after 0 votes]
4513367
Chan
711/145
Apr,1985

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

[0 after 0 votes]
4442487
Fletcher
711/122
Apr,1984

[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
 


We claim:

1. A method for maintaining cache coherency in a shared memory multiprocessor data processing system, wherein the system includes a first processor coupled to a first cache and a second processor coupled to a second cache, and the first processor issues a write function code to the first cache, the write function code specifying data and a memory address at which to store the data, the method comprising the steps of:

invalidating the memory address in the second cache if the memory address was not last modified at the first cache;

writing the data in the first cache;

designating the memory address in the first cache as last-modified in the first cache; and

inhibiting said invalidating the memory address in the second cache for subsequent write function codes issued by the first processor and referencing the memory address in the first cache while the memory address is designated as last-modified in the first cache.

2. A method for maintaining cache coherency in a shared memory multiprocessor data processing system, wherein the system includes a first processor coupled to a first first-level cache and a second processor coupled to a second first-level cache, the first first-level cache being coupled to a first second-level cache, the second first-level cache being coupled to a second second-level cache, the first second-level cache being coupled to the second second-level cache, and the first processor issues a write function code to the first first-level cache, the write function code specifying data and a memory address at which to store the data comprising the steps of:

invalidating the memory address in the second second-level cache if the memory address was not last modified in the first second-level cache;

writing the data in the first second-level cache,

designating the memory address as last modified in the first second-level cache; and

inhibiting invalidating the memory address in the second second-level cache for subsequent write function codes issued by the first processor and referencing the memory address in the first second-level cache while the memory address is designated as last-modified in the first second-level cache.

3. A cache architecture for a multiprocessor data processing system, wherein the system includes a plurality of instruction processors for executing instructions and for issuing read and write function codes and address codes for reading and writing data stored in a shared memory, the cache architecture comprising:

a plurality of first-level cache means, each mappable to all addresses of the shared memory and coupled to a different respective one of the instruction processors for receiving the address codes;

first second-level cache means mappable to all addresses of the shared memory, directly coupled to the shared memory and coupled to first predetermined ones of said plurality of first-level cache means for receiving the address codes from said first predetermined ones of said plurality of first-level cache means;

second second-level cache means mappable to all addresses of the shared memory, directly coupled to the shared memory, coupled to second predetermined ones of said plurality of first-level cache means for receiving the address codes from said second predetermined ones of said plurality of first-level cache means, and directly coupled to said first second-level cache means, said second second-level cache means for receiving the address codes from said first second-level cache means, and said first second-level cache means for receiving the address codes from said second second-level cache means;

first coherency logic means coupled to said first second-level cache means and coupled to said first predetermined ones of the plurality of first-level cache means for providing a first invalidation signal to said second second-level cache means when an address in said first second-level cache means is written;

second coherency logic means coupled to said second second-level cache means and coupled to said second predetermined ones of the plurality of first-level cache means for providing a second invalidation signal to said first second-level cache means when an address in said second second-level cache means is written;

first filter means coupled to said first coherency logic means for preventing said first coherency logic means from providing said first invalidation signal if an address in said first second-level cache means is written and said address was last-modified in said first second-level cache means; and

second filter means coupled to said second coherency logic means for preventing said second coherency logic means from providing said second invalidation signal if an address in said second second-level cache means is written and said address was last-modified in said second second-level cache means.

4. The cache architecture of claim 3, further comprising:

first second-level cache tag means coupled to said first second-level cache means having a first plurality of address entry means, each of said first plurality of address entry means for indicating a respective one or more addresses of the shared memory that are cached in said first second-level cache means;

a first plurality of last-modified indicator means, each associated with a different respective one of said first plurality of address entry means for indicating whether said respective one or more addresses of the shared memory that are cached in said first second-level cache means were last written in said first second-level cache means;

second second-level cache tag means coupled to said second second-level cache means having a second plurality of address entry means, each of said second plurality of address entry means for indicating one or more addresses of the shared memory that are cached in said second second-level cache means; and

a second plurality of last-modified indicator means, each associated with a different respective one of said second plurality of address entry means for indicating whether said respective one or more addresses of the shared memory that are cached in said second second-level cache means were last written in said second second-level cache means.

5. The cache architecture of claim 3, further comprising:

first first-level cache tag means associated with said first predetermined ones of the plurality of said first-level cache means;

second first-level cache tag means associated with said second predetermined ones of the plurality of said first-level cache means;

first duplicate tag means coupled to said first first-level cache tag means and coupled to said first coherency logic means; and

second duplicate tag means coupled to said second first-level cache tag means and coupled to said second coherency logic means.

6. A cache system for a multiprocessor data processing system, wherein the data processing system includes a plurality of instruction processors for providing address signals to a shared memory to thereby read data signals from, or write data signals to, selectable addresses within the shared memory, the cache system, comprising:

a plurality of first-level caches, each mappable to all of the addresses of the shared memory and coupled to a respective one of the instruction processors for receiving the address signals from said respective one of the instruction processors;

a first second-level cache mappable to all of the addresses of the shared memory, uniquely directly coupled to the shared memory and coupled to a first set of predetermined ones of said plurality of first-level caches for receiving the address signals from said first set of predetermined ones of said plurality of first-level caches;

a first coherency logic circuit coupled to said first second-level cache and coupled to said first set of predetermined ones of said plurality of first-level caches, capable of providing a first invalidation signal to said second second-level cache and to said second set of predetermined ones of said plurality of said first-level caches when an address in said first second-level cache is written;

a second second-level cache mappable to all of the addresses of the shared memory, uniquely directly coupled to the shared memory, coupled to a second set of predetermined ones of said plurality of first-level caches for receiving the address signals from said second set of predetermined ones of said plurality of first-level caches, and uniquely directly coupled to said first second-level cache, said second second-level cache being capable of receiving the address signals from said first second-level cache, and said first second-level cache being capable of receiving the address signals from said second second-level cache;

a second coherency logic circuit coupled to said first coherency logic circuit, coupled to said second second-level cache, and coupled to said second set of predetermined ones of said plurality of first-level caches capable of providing a second invalidation signal to said first second-level cache and to said first set of predetermined ones of said plurality of said first-level caches when an address in said second second-level cache is written;

a first filter circuit coupled to said first coherency logic circuit to prevent said first coherency logic circuit from providing said first invalidation signal if an address cached in said first second-level cache is written and said address was last-modified in said first second-level cache; and

a second filter circuit coupled to said second coherency logic circuit to prevent said second coherency logic circuit from providing said second invalidation signal if an address cached in said second second-level cache is written and said address was last-modified in said second second-level cache.

7. A cache architecture for a data processing system, wherein the system includes a plurality of units and a shared memory, the plurality of units for making requests for data stored in the shared memory, the cache architecture, comprising:

a first cache directly coupled to the shared memory and mappable to all addresses of the shared memory, said first cache coupled to first predetermined ones of the plurality of units to receive first requests to access selected ones of the shared memory addresses;

a second cache directly coupled to the shared memory and mappable to all addresses of the shared memory, said second cache coupled to second predetermined ones of the plurality of units to receive second requests to access selected ones of the shared memory addresses, said second cache coupled to said first cache to allow said second cache to provide predetermined ones of said second requests to said first cache, and to allow said first cache to provide predetermined ones of said first requests to said second cache; and

a first filter circuit coupled to said first cache to prevent any of said predetermined ones of said first requests which is a request to access a shared memory address for which the contents were last modified within said first cache from causing said first cache to provide an invalidation request to said second cache.

8. The cache architecture of claim 7, and further including a second filter circuit coupled to said second cache to prevent any of said predetermined ones of said second requests requesting access to a shared memory address for which the contents were last modified within said second cache from causing said second cache to provide an invalidation request to said first cache.

9. The cache architecture of claim 8, and further including a first coherency control circuit coupled to said first cache to store a first set of last-modified indicators, each of said first set of last-modified indicators associated with respective ones of the shared memory addresses to indicate whether the contents of said respective ones of the shared memory addresses were last-modified within said first cache.

10. The cache architecture of claim 9, wherein said first coherency control circuit includes a first control circuit to receive each of said predetermined ones of said second requests, and in response to said each of said predetermined ones of said second requests, to reset an associated one of said first set of last-modified indicators which is associated with the shared memory address for which access was requested.

11. The cache architecture of claim 10, and further including a second coherency control circuit coupled to said second cache to store a second set of last-modified indicators, each of said second set of last-modified indicators associated with respective ones of the shared memory addresses to indicate whether the contents of said respective ones of the shared memory addresses were last-modified within said second cache.

12. The cache architecture of claim 11, wherein said second coherency control circuit includes a second control circuit to receive each of said predetermined ones of said first requests, and in response to said each of said predetermined ones of said first requests, to reset an associated one of said second set of last-modified indicators which is associated with the shared memory address for which access was requested.

13. A cache architecture for use in a data processing system including a shared memory, and a plurality of instruction processors, the plurality of instruction processors for providing memory addresses to address the shared memory, the cache architecture, comprising:

a first cache memory coupled to the shared memory and being mappable to all memory addresses within the shared memory, said first cache memory to receive first ones of the memory addresses provided by first ones of the plurality of instruction processors, said first cache memory to store data signals associated with said first ones of the memory addresses;

a second cache memory coupled to the shared memory and being mappable to all memory addresses within the shared memory, said second cache memory to receive second ones of the memory addresses provided by second ones of the plurality of instruction processors, said second cache memory to store data signals associated with said second ones of the memory addresses, said second cache memory being coupled to said first cache memory, and whereby said first cache memory provides ones of said first memory addresses as first invalidation requests to said second cache memory, said first invalidation requests to invalidate ones of the data signals stored within said second cache memory when data signals associated with said ones of said first memory addresses are modified within said first cache memory; and

a first filter circuit coupled to said first cache memory to prevent any of said ones of said first memory addresses that are associated with data signals for which the most recently updated copy is stored in said first cache memory from being provided as first invalidation requests to said second cache memory.

14. The cache architecture of claim 13, wherein said second cache memory provides ones of said second memory addresses as second invalidation requests to said first cache memory, said second invalidation requests to invalidate ones of the data signals stored within said first cache memory when said data signals associated with said ones of said second memory addresses are modified within said second cache memory; and

a second filter circuit coupled to said second cache memory to prevent any of said ones of said second memory addresses that are associated with data signals for which the most recently updated copy is stored in said second cache memory from being provided as second invalidation requests to said first cache memory.

15. The cache architecture of claim 14, and further including a first storage device coupled to said first cache memory to store a first set of last-modified signals, each of said first set of last-modified signals associated with first respective ones of the memory addresses to indicate whether the contents of said first respective ones of the memory addresses were last-modified within said first cache memory.

16. The cache architecture of claim 15, and further including a second storage device coupled to said second cache memory to store a second set of last-modified signals, each of said second set of last-modified signals associated with second respective ones of the memory addresses to indicate whether the contents of said second respective ones of the memory addresses were last-modified within said second cache memory.

17. The cache architecture of claim 16, and further including:

a first tag storage device coupled to said first cache memory to store first invalidation indicators, each of said first invalidation indicators associated with respective ones of the memory addresses stored in said first cache memory to indicate whether said respective ones of the memory addresses stored in said first cache memory have been designated as invalidated in said first cache memory; and

a second tag storage device coupled to said second cache memory to store second invalidation indicators, each of said second invalidation indicators associated with respective ones of the memory addresses stored within said second cache memory to indicate whether said respective ones of the memory addresses stored within said second cache memory have been designated as invalidated in said second cache memory.

18. The cache architecture of claim 13, wherein said first cache memory and second cache memory are second-level cache memories, and further including:

a first first-level cache memory coupled to said first cache memory and coupled to said first ones of the plurality of instruction processors to receive said first ones of the memory addresses, said first first-level cache memory to provide said first ones of the memory addresses to said first cache memory if the contents of said first ones of the memory addresses are not stored in said first first-level cache memory; and

a second first-level cache memory coupled to said second cache memory and coupled to said second ones of the plurality of instruction processors to receive said second ones of the memory addresses, said second first-level cache memory to provide said second ones of the memory addresses to said second cache memory if the contents of said second ones of the memory addresses are not stored in said second first-level cache memory.

19. A cache architecture for a data processing system, wherein the system includes a memory and a plurality of units for making requests to read from, or write to, the memory, the cache architecture, comprising:

first cache means for storing first selected ones of the memory addresses, said first cache means for receiving first requests from first predetermined ones of the plurality of units to read from, or write to, said first selected ones of the memory addresses;

second cache means for storing second selected ones of the memory addresses, said second cache means for receiving second requests from second predetermined ones of the plurality of units to read from, or write to, said second selected ones of the memory addresses, said second cache means for generating a first invalidation request to send to said first cache means when the contents of any one of said second selected ones of the memory addresses are being modified in said second cache means; and

filter means for preventing said invalidation request from being sent to said first cache means if said second cache means is storing the latest copy of the contents of said any one of said second selected ones of the memory addresses which is being modified.

20. The cache architecture of claim 19, wherein said first cache means includes circuits for generating a second invalidation request to send to said second cache means when the contents of any one of said first selected ones of the memory addresses are being modified in said first cache means, and further comprising second filter means for preventing said second invalidation request from being sent to said second cache means if said first cache means is storing the latest copy of said any one of said first selected ones of the memory addresses which is being modified.

21. The cache architecture of claim 20, and further comprising

first storage means for storing a first set of last-modified indicators, each of said last-modified indicators in said first set for indicating whether the contents of respective ones of said first selected ones of the memory addresses are last modified in said first cache means; and

second storage means for storing a second set of last-modified indicators, each of said last-modified indicators in said second set for indicating whether the contents of respective ones of said second selected ones of the memory addresses are last modified in said second cache means.