# US 5,710,907 A · Hybrid NUMA COMA caching system and methods for selecting between the caching modes

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 5,710,907 A
- Document ID: US5710907A
- Status: Granted
- Kind: A
- Application number: 08/577,283
- Filed: 1995-12-22
- Granted: 1998-01-20
- Earliest claimed: 1995-12-22
- Assignees: Sun Microsystems, Inc.
- Inventors: Erik Hagersten; Robert C. Zak, Jr.
- Web page: https://patentgrep.com/patent/US5710907A

## CPC

- G06F 12/0813: with a network or matrix configuration
- G06F 12/0811: with multilevel cache hierarchies
- G06F 12/0817: using directory methods
- G06F 2212/2542: Non-uniform memory access [NUMA] architecture
- G06F 2212/272: Cache only memory architecture [COMA]
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

The present invention provides a hybrid Non-Uniform Memory Architecture (NUMA) and Cache-Only Memory Architecture (COMA) caching architecture together with a cache-coherent protocol for a computer system having a plurality of sub-systems coupled to each other via a system interconnect. In one implementation, each sub-system includes at least one processor, a page-oriented COMA cache and a line-oriented hybrid NUMA/COMA cache. Such a hybrid system provides flexibility and efficiency in caching both large and small, and/or sparse and packed data structures. Each sub-system is able to independently store data in COMA mode or in NUMA mode. When caching in COMA mode, a sub-system allocates a page of memory space and then stores the data within the allocated page in its COMA cache. Depending on the implementation, while caching in COMA mode, the sub-system may also store the same data in its hybrid cache for faster access. Conversely, when caching in NUMA mode, the sub-system stores the data, typically a line of data, in its hybrid cache.

## Claims

### Claim 1

A hybrid non-uniform-memory-architecture/cache-only-memory-architecture (NUMA/COMA) caching system useful in association with a computer system having a plurality of sub-systems coupled to each other by a system interconnect, and wherein data is stored in said hybrid NUMA/COMA caching system as a plurality of pages, each said page including a plurality of data lines, said hybrid NUMA/COMA caching system comprising:
a plurality of hybrid NUMA/COMA caches configured to store at least one of said plurality of data lines; and
a plurality of COMA caches configured to store at least one of said plurality of pages.

### Claim 2 (depends on 1)

The hybrid NUMA/COMA caching system of claim 1 wherein one said COMA cache is associated with one said sub-system, and wherein data stored in said one COMA cache is accessed by said one sub-system using a local physical address (LPA).

### Claim 3 (depends on 1)

The hybrid NUMA/COMA caching system of claim 1 wherein one said hybrid cache is associated with one said sub-system, and wherein data stored in said one hybrid cache is accessed by said one sub-system using a global address (GA).

### Claim 4 (depends on 2)

The hybrid NUMA/COMA caching system of claim 2 wherein said one sub-system further comprising an address translator for translating said LPA into a global address (GA).

### Claim 5

A method of storing data in a computer system having a plurality of sub-systems coupled to each other by a system interconnect, each said sub-system including a processor, a hybrid non-uniform-memory-architecture/cache-only-memory-architecture (NUMA/COMA) cache, a COMA cache and a directory, said method including the steps of:
determining whether data should be stored in a hybrid NUMA/COMA cache of one said sub-system; and
determining whether the data should also be stored in a COMA cache of said one sub-system.

### Claim 6

A method of storing data in a computer system having a plurality of sub-systems coupled to each other by a system interconnect, each said sub-system including a processor, a hybrid non-uniform-memory-architecture/cache-only-memory-architecture (NUMA/COMA) cache, a COMA cache and a directory, said method including the steps of:
storing data associated with a data line in a hybrid NUMA/COMA cache of one said sub-system; and
if the computer system determines that said data should be stored in a COMA mode, then storing said data in a COMA cache of said one sub-system.

### Claim 7 (depends on 6)

The method of claim 6 wherein the step of storing said data in said COMA cache of said one sub-system includes the steps of:
allocating a page of memory space in said COMA cache of said one sub-system; and
storing said data within said allocated page of said COMA cache of said one sub-system.

### Claim 8 (depends on 5)

The method of claim 5 further comprising the step of determining whether the data should remain stored in said COMA cache of said one-sub-system.

### Claim 9 (depends on 8)

The method of claim 8 wherein said determining step includes the steps of:
incrementing a COMA.sub.-- hit counter each time data from a page cannot be found in a hybrid cache of a requesting sub-system of said sub-systems but is found in a COMA cache of the requesting sub-system;
incrementing a COMA.sub.-- miss counter each time data from the said page cannot be found in either the hybrid cache or the COMA cache of the requesting sub-system; and
comparing the content of the COMA.sub.-- hit counter against the content of the COMA.sub.-- miss counter to determine if the ratio of the COMA.sub.-- hit counter exceeds the COMA.sub.-- miss counter by a threshold.

### Claim 10

A method of accessing data in a computer system having a plurality of sub-systems coupled to each other by a system interconnect, each said sub-system including a processor, a hybrid non-uniform-memory-architecture/cache-only-memory-architecture (NUMA/COMA) cache, a COMA cache and a directory, said method including the steps of:
determining whether data is stored in a hybrid NUMA/COMA cache of a requesting sub-system of said sub-systems; and
if said data is stored in said NUMA/COMA hybrid cache of said requesting sub-system, then:
retrieving said data from said hybrid NUMA/COMA cache; else:
determining if said data has been stored in a COMA mode in a COMA cache of said requesting sub-system.

### Claim 11 (depends on 10)

The method of claim 10 wherein if it is determined that said data is not stored in either the hybrid NUMA/COMA cache or the COMA cache of said requesting sub-system, then a read request is sent to a home sub-system of said sub-systems.

### Claim 12 (depends on 11)

The method of claim 11 wherein if it is determined that said data is stored in said home sub-system, then the method further includes the step of retrieving said data from said home sub-system.

### Claim 13 (depends on 12)

The method of claim 12 wherein if it is determined that said data was not stored in said home sub-system, then the method further comprises the steps of retrieving said data from a owner sub-system of said sub-systems.

### Claim 14

A method of accessing data in a computer system having a plurality of sub-systems coupled to each other by a system interconnect, each sub-system including a processor, a hybrid non-uniform-memory-architecture/cache-only-memory-architecture (NUMA/COMA) cache, a COMA cache and a directory, said method including the step of:
determining if data has been stored in either a COMA mode or a NUMA mode by a requesting sub-system of said sub-systems.

### Claim 15 (depends on 14)

The method of claim 14 wherein said COMA/NUMA mode determining step includes the step of comparing an address of said data with a COMA range of memory addresses and a NUMA range of memory addresses.

### Claim 16 (depends on 15)

The method of claim 15 wherein said COMA range is a local physical address (LPA) range associated with said requesting sub-system and said NUMA range is a global address (GA) range.

### Claim 17 (depends on 16)

The method of claim 16 wherein if said determining step determines that the address of the data is a LPA associated with said requesting sub-system, then the method further includes the step of determining if the data is stored in either the hybrid NUMA/COMA cache or the COMA cache of the requesting sub-system.

### Claim 18 (depends on 17)

The method of claim 17 wherein if said data cannot be found in either the hybrid NUMA/COMA cache or the COMA cache of said requesting sub-system, then the method further includes the steps of:
translating the LPA of said data associated with said requesting sub-system into a GA;
forwarding a read request with the GA to a home sub-system of said sub-systems;
translating the GA into an LPA of said home sub-system;
determining whether data was stored in either a hybrid NUMA/COMA cache or a COMA cache of said home sub-system; and
if said data was stored in said home sub-system, retrieving said data from said home sub-system.

### Claim 19 (depends on 18)

The method of claim 18 wherein if said home sub-system determines that said data is not stored in said home system, then the method further comprises the steps of:
forwarding the read request with the GA to an owner sub-system of said sub-systems;
translating the GA into an LPA of said owner sub-system;
determining whether data was stored in either a hybrid NUMA/COMA cache or a COMA cache of said owner sub-system; and
if said data was stored in said owner sub-system, retrieving said data from said owner sub-system.

### Claim 20

A computer program product including a computer-usable medium having computer-readable code embodied therein configured to cause a computer system to select between a non-uniform-memory-architecture (NUMA) mode and a cache-only-memory-architecture (COMA) mode, the computer system having a plurality of sub-systems coupled to each other by a system interconnect, each said sub-system including a processor, a hybrid NUMA/COMA cache, a COMA cache and a directory, the computer-readable code comprising:
code instructions configured to cause one said sub-system to determine whether data should be stored in a hybrid NUMA/COMA cache of said one sub-system; and
code instructions configured to cause said one sub-system to determine whether the data should also be stored in a COMA cache of said one sub-system.

### Claim 21

A computer program product including a computer-usable medium having computer-readable code embodied therein configured to cause a computer system to select between a non-uniform-memory-architecture (NUMA) mode and a cache-only-memory-architecture (COMA) mode, the computer system having a plurality of sub-systems coupled to each other by a system interconnect, each said sub-system including a processor, a hybrid NUMA/COMA cache, a COMA cache and a directory, the computer-readable code comprising:
code instructions configured to cause a requesting sub-system of said sub-systems to determine whether data is stored in a hybrid NUMA/COMA cache of said requesting sub-system;
code instructions configured to cause said requesting sub-system to retrieve said data from said hybrid NUMA/COMA cache; and
code instructions configured to cause said requesting sub-system to determine if said data has been stored in a COMA mode in a COMA cache of said requesting sub-system.
