Electrical computers and digital processing systems: memory – Addressing combined with specific memory configuration or... – Addressing cache memories
Reexamination Certificate
1997-11-17
2001-05-29
Follansbee, John A. (Department: 2154)
Electrical computers and digital processing systems: memory
Addressing combined with specific memory configuration or...
Addressing cache memories
C711S207000
Reexamination Certificate
active
06240484
ABSTRACT:
BACKGROUND OF THE INVENTION
The present invention relates to microprocessors, and, more particularly, to providing microprocessors with high performance caches.
Microprocessors have attained wide-spread use throughout many industries. A goal of any microprocessor is to process information quickly. One technique which is used to increase the speed with which the microprocessor processes information is to provide the microprocessor with an architecture which includes a fast local memory called a cache.
A cache is used by the microprocessor to temporarily store instructions and data. A cache which stores both instructions and data is referred to as a unified cache; a cache which stores only instructions is an instruction cache and a cache which stores only data is a data cache. Providing a microprocessor architecture with either a unified cache or an instruction cache and a data cache is a matter of design choice.
One microprocessor architecture that has gained wide-spread acceptance is the X86 architecture. This architecture, first introduced in the i386™ microprocessor, is also the basic architecture of both the i486™ microprocessor and the Pentium™ microprocessor, all available from the Intel corporation of Santa Clara, Calif. The X86 architecture provides for three distinct types of addresses, a logical (i.e., virtual) address, a linear address and a physical address.
The logical address represents an offset from a segment base address. The segment base address is accessed via a selector. More specifically, the selector, which is stored in a segment register, is an index which points to a location in a global descriptor table (GDT). The GDT location stores the linear address corresponding to the segment base address.
The translation between logical and linear addresses depends on whether the microprocessor is in Real Mode or Protected Mode. When the microprocessor is in Real Mode, then a segmentation unit shifts the selector left four bits and adds the result to the offset to form the linear address. When the microprocessor is in Protected Mode, then the segmentation unit adds the linear base address pointed to by the selector to the offset to provide the linear address.
The physical address is the address which appears on the address pins of the microprocessor and is used to physically address external memory. The physical address does not necessarily correspond to the linear translated into the physical address. A paging unit, which is usually included as part of the microprocessor's memory management unit, performs this translation.
The paging unit uses two levels of tables to translate the linear address into a physical address. The first level table is a Page Directory and the second level table is a Page Table. The Page Directory includes a plurality of page directory entries; each entry includes the address of a Page Table and information about the Page Table. The upper 10 bits of the linear address (A
22
-A
31
) are used as an index to select a Page Directory Entry. The Page Table includes a plurality of Page Table entries; each Page Table entry includes a starting address of a page frame and statistical information about the page. Address bits A
12
-A
21
of the linear address are used as an index to select one of the Page Table entries. The starting address of the page frame is concatenated with the lower 12 bits of the linear address to form the physical address.
Because accessing two levels of table for every memory operation substantially affects performance of the microprocessor, the memory management unit generally also includes a cache of the most recently accessed page table entries, this cache is called a translation lookaside buffer (TLB). The microprocessor only uses the paging unit when an entry is not in the TLB.
The first processor conforming to the X86 architecture which included a cache was the 486 processor, which included an 8 Kbyte unified cache. The Pentium™ processor includes separate 8 Kbyte instruction and data caches. The 486 processor cache and the Pentium™ processor caches are accessed via physical addresses; however, the functional units of these processors operate with logical addresses. Accordingly, when the functional units require access to these caches, the logical address must be converted to a linear address and then to a physical address.
In microprocessor architectures other than the X86 architecture, it is known to use virtually addressed caches to eliminate the address translation time from a cache hit. However, because input output devices (I/O) use physical addresses, mapping is required for the I/O to interact with the cache. In these systems, there are generally only two levels of addressing, virtual and physical, and thus only a single translation is required for the physically addressed I/O devices to interact with the virtually addressed cache. Additionally, with a virtually addressed cache, every time a process is switched, the virtual addresses refer to different physical addresses, and thus, the cache must be flushed as the virtually addressed cache entries are potentially invalid. Additionally, with a virtually addressed cache, it is possible for two different virtual addresses to correspond to the same physical address. These duplicate addresses are called aliases and could result in two locations in a virtual cache having information from the same physical address, the information in only one of the locations being modified.
SUMMARY OF THE INVENTION
It has been discovered that by providing a microprocessor conforming to X86 architecture with a linearly addressable cache, the cache may be quickly accessed by an external bus while allowing fast translation to a logical address for operation with the functional units of microprocessor. Additionally, it has been discovered that by providing a linear tag array and a physical tag array corresponding to the linear tag array, the contents of a microprocessor cache may be advantageously monitored from an external bus without slowing the main instruction and data access processing paths.
In one embodiment, the present invention relates to a processor for processing information, the processor interacting with a device external to the processor using physical addresses. The processor includes a plurality of functional units, a cache for temporarily storing information for use by the plurality of functional units, a first translation circuit for translating between physical addresses and linear addresses to allow the device external to the processor to communicate with the cache and a second translation circuit for translating between linear addresses and logical addresses to allow the functional units to communicate with the cache. The functional units are addressed using logical addresses and the cache is addressed using linear addresses.
The present invention advantageously provides a cached system in which there is no delay in translating to an external physical address from the cache's linear address, there is no delay in translating from the cache's linear address to the instruction pointer's logical address, stalling is not required for external bus watching because only physical tags are checked, invalidation is not required on segment update, the linear tags need not be invalidated upon update of the TLB, and the system uses a single unified TLB.
REFERENCES:
patent: 3781808 (1973-12-01), Ahearn et al.
patent: 4044338 (1977-08-01), Wolf
patent: 4155119 (1979-05-01), DeWard et al.
patent: 4161784 (1979-07-01), Cushing et al.
patent: 4179737 (1979-12-01), Kim
patent: 4384343 (1983-05-01), Morganti et al.
patent: 4453212 (1984-06-01), Gaither et al.
patent: 4736288 (1988-04-01), Shintani et al.
patent: 4807115 (1989-02-01), Torng
patent: 4926322 (1990-05-01), Stimac et al.
patent: 4928223 (1990-05-01), Dao et al.
patent: 4992934 (1991-02-01), Portanova et al.
patent: 5056006 (1991-10-01), Acharya et al.
patent: 5133062 (1992-07-01), Joshi et al.
patent: 5136697 (1992-08-01), Johnson
patent: 5155816 (1992-10-01), Kohn
patent: 5155820 (1992-10-01), Gibso
Advanced Micro Devices , Inc.
Follansbee John A.
Skjerven Morrill & MacPherson LLP
LandOfFree
Linearly addressable microprocessor cache does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with Linearly addressable microprocessor cache, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Linearly addressable microprocessor cache will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-2547486