Pipelined flushing of a high level cache and invalidation of lower level caches
First Claim
1. A data processing system including a high-level cache containing a pipelined flushing apparatus for efficiently flushing the high-level cache and back invalidating a low-level cache, comprising:
- a processor connected to the high-level cache and the low-level cache;
an address calculation stage for calculating an address of a directory entry in an array of directory entries;
a directory entry lookup stage connected to the address calculation stage for receiving an address from the address calculation stage and retrieving the directory entry from the array of directory entries;
a castout stage connected to the directory entry lookup stage for receiving the directory entry from the directory entry lookup stage and for sending a flush signal to the processor, the flush signal directing the processor to invalidate a line in the low-level cache which corresponds to the directory entry and wherein the processor returns to the high-level cache the line from the low-level cache if the line is marked as modified;
a directory entry modification stage connected to the directory entry lookup stage for receiving the directory entry, the directory entry modification stage being operable in a first mode of operation, wherein,if the directory entry is not marked as invalid,the directory entry modification stage invalidates the directory entry to create an invalid directory entry, andthe directory entry modification stage stores the invalid directory entry in the array of directory entries,wherein the address calculation stage, the directory entry lookup stage, and the directory entry modification stage can each perform a new operation every clock cycle.
1 Assignment
0 Petitions
Accused Products
Abstract
A L2 (high-level) cache according to the present invention implements an efficient pipelined algorithm for flushing the high-level cache and back-invalidating a L1 (low-level) cache. Initially, an address calculation stage calculates the address of a directory entry contained in an array of directory entries every clock cycle. Connected to this address calculation stage is a directory entry lookup stage. The directory entry lookup stage receives an address from the address calculation stage and retrieves the directory entry to be modified from the array of directory entries. Finally, a directory entry modification stage, connected to the directory entry lookup stage, receives the directory entry from the directory entry lookup stage. The directory entry modification stage first looks to see if the directory entry is not marked as invalid. If the directory entry is already marked as invalid, no further processing need be performed on the directory entry. If the directory entry modification stage determines the directory entry to not be invalid, the directory entry modification stage invalidates the directory entry to create a invalid directory entry. Next, the directory entry modification stage stores the invalid directory entry in the array of directory entries. The address calculation stage, the directory entry lookup stage, and the directory entry modification stage within the high-level cache can each perform a new operation every clock cycle. Also connected to the directory entry lookup stage is a castout stage. The castout stage receives a directory entry from the directory entry lookup stage and sends a flush signal to the processor. The flush signal directs the processor to invalidate a line in the low-level cache which corresponds to the directory entry. Also, the castout stage writes the modified contents of the high-level cache to memory.
23 Citations
10 Claims
-
1. A data processing system including a high-level cache containing a pipelined flushing apparatus for efficiently flushing the high-level cache and back invalidating a low-level cache, comprising:
-
a processor connected to the high-level cache and the low-level cache; an address calculation stage for calculating an address of a directory entry in an array of directory entries; a directory entry lookup stage connected to the address calculation stage for receiving an address from the address calculation stage and retrieving the directory entry from the array of directory entries; a castout stage connected to the directory entry lookup stage for receiving the directory entry from the directory entry lookup stage and for sending a flush signal to the processor, the flush signal directing the processor to invalidate a line in the low-level cache which corresponds to the directory entry and wherein the processor returns to the high-level cache the line from the low-level cache if the line is marked as modified; a directory entry modification stage connected to the directory entry lookup stage for receiving the directory entry, the directory entry modification stage being operable in a first mode of operation, wherein, if the directory entry is not marked as invalid, the directory entry modification stage invalidates the directory entry to create an invalid directory entry, and the directory entry modification stage stores the invalid directory entry in the array of directory entries, wherein the address calculation stage, the directory entry lookup stage, and the directory entry modification stage can each perform a new operation every clock cycle. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method in a data processing system which includes a high-level cache containing a pipelined flushing apparatus for efficiently flushing the high-level cache and back invalidating a low-level cache, comprising:
-
providing a processor connected to the high-level cache and the low-level cache; providing an address calculation stage for calculating an address of a directory entry in an array of directory entries; providing a directory entry lookup stage connected to the address calculation stage for receiving the address from the address calculation stage and retrieving the directory entry from the array of directory entries; providing a castout stage connected to the directory entry lookup stage; receiving the directory entry from the directory entry lookup stage; sending a flush signal to the processor, the flush signal directing the processor to invalidate a line in the low-level cache which corresponds to the directory entry; returning the line from the low-level cache to the high-level cache if the line is marked as being modified; providing a directory entry modification stage connected to the directory entry lookup stage for receiving the directory entry; if the directory entry is not marked as invalid, invalidating the directory entry to create an invalid directory entry, and storing the invalid directory entry in the array of directory entries, wherein the address calculation stage, the directory entry lookup stage, and the directory entry modification stage can each perform a new operation every clock cycle. - View Dependent Claims (7, 8, 9, 10)
-
Specification