US5465337A - Method and apparatus for a memory management unit supporting multiple page sizes - Google Patents

Method and apparatus for a memory management unit supporting multiple page sizes Download PDF

Info

Publication number
US5465337A
US5465337A US08/318,539 US31853994A US5465337A US 5465337 A US5465337 A US 5465337A US 31853994 A US31853994 A US 31853994A US 5465337 A US5465337 A US 5465337A
Authority
US
United States
Prior art keywords
page
virtual
bits
address
physical
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
US08/318,539
Inventor
Shing I. Kong
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Priority to US08/318,539 priority Critical patent/US5465337A/en
Application granted granted Critical
Publication of US5465337A publication Critical patent/US5465337A/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control

Definitions

  • This invention relates to virtual memory systems and, more particularly, to memory management units for controlling the translation of addresses between virtual and physical memory.
  • the first is that the addressable memory available to a computer has grown larger so that the computer may handle more information and larger, more sophisticated programs.
  • the second is that the speed of operation of a computer has increased so that larger programs may be run in a reasonable time.
  • a virtual memory system allows addressing of very large amounts of memory as though all of that memory were a part of the main memory of the computer system.
  • a virtual memory system allows this even though actual main memory may consist of some substantially lesser amount of storage space than is addressable. For example, main memory may consist of one megabyte of random access memory while sixty-four megabytes of memory are addressable using the virtual memory addressing system.
  • Virtual memory systems accomplish this feat by providing memory management units which translate virtual memory addresses into the physical memory addresses at which the information actually resides.
  • a particular physical address holding the information may be in main memory or in long term storage such as a hard disk. If the physical address of information sought is in main memory, the information is accessed and utilized by the computer. If the physical address is in long term storage, the information is transferred (usually in a block referred to as a page) to main memory where it may be used. This transfer may necessitate that other information be swapped out of main memory to long term memory in order to make room for the new information. If so, this is accomplished under control of the memory management unit.
  • the pages referred above are, if fact, the usual means for addressing information. Pages are numbered, and both physical and virtual addresses typically includes a page number and an offset into the page. Moreover, the physical offset and the virtual offset are typically the same.
  • a basic virtual memory system creates lookup tables which are stored in main memory. These lookup tables store the virtual address page numbers used by the computer. Stored with each virtual address page number is the physical address page number which must be accessed to derive the information. The page number of any virtual address presented to the memory management unit is compared to the values stored in these tables in order to find a matching virtual address page number and retrieve the physical address page number.
  • the typical memory management unit first looks to a register for the address of a base table which stores pointers to other levels of tables. The memory management unit retrieves this pointer from the base table and places it in another register. The memory management unit uses this pointer to go to the next level of table. This process continues until the physical page address of the information sought is recovered. When the physical address is recovered, it is combined with the offset furnished as a part of the virtual address; and the result is used by the processor to access the particular information desired.
  • a typical lookup in the page tables may take from ten to fifteen clock cycles at each level of the search.
  • a translation lookaside buffer is essentially a buffer for caching virtual page addresses which have been recently used along with their related physical page addresses. Such an address cache works on the same principle as do caches holding data and instructions, the most recently used addresses are more likely to be used than are other addresses.
  • the translation lookaside buffer furnishes a physical page address for the information without the necessity of consulting the page lookup tables. It is only when the processor sends a virtual page address to the translation lookaside buffer which address is not stored in the translation lookaside buffer that the memory management unit must consult the page lookup tables.
  • the physical page address recovered is stored along with the virtual page address in the translation lookaside buffer so that the next time it is needed it is immediately available. This saves a great deal of time on the next use of the information. For example, accessing the information using a translation lookaside buffer may require only one or two clock cycles compared to hundreds of clock cycles required for a page table lookup.
  • computers are designed to use only a single page size; and a designer must choose that size based on certain assumptions about the use of the computer. For example, the storage of a single frame of twenty-four bit color information for the output display requires megabytes of memory space. However, the typical page size utilized in a virtual memory system is four kilobytes. Since each page requires at least one page table translation, the access of a display frame of data requires at least one thousand individual references to the memory management unit to accomplish the translation of the addresses necessary to access the frame buffer in memory.
  • an object of the present invention to provide a memory management unit capable of handling virtual address translations for multiple page sizes.
  • a memory management unit for a computer using a virtual address system comprising a translation lookaside buffer, and means for comparing a page number of a virtual address for information with a virtual page number stored in the translation lookaside buffer;
  • the translation lookaside buffer including a plurality of positions for storing entries, each of the entries including a first number of bit positions to store a first virtual page number, a second number of bit positions to store an offset into a page, a third number of bit positions to store additional bits which may be part of a page number or part of an offset in a page, a fourth number of bit positions to indicate a size, and a fifth number of bit positions for storing a physical page number; means responsive to a value stored in the fourth number of bit positions for fixing a length of virtual page numbers to be compared by the means for comparing; and means for concatenating the bits of the fifth number of bits, the bits of the third number of bits which are not compared by the means for comparing, and the bits
  • FIG. 1 is a block diagram illustrating the operation of a conventional memory management unit.
  • FIG. 2 is a diagram illustrating an addressing format in accordance with the present invention.
  • FIG. 3 is a block diagram illustrating the features of an memory management unit designed in accordance with the present invention.
  • FIG. 4 is a diagram illustrating various bit formats used in implementing the memory management unit of FIG. 3 and provides a flow chart of the operation of the method of the invention.
  • FIG. 5 is a flow chart illustrating the steps of a process in accordance with the present invention.
  • the present invention relates to a method and apparatus for operating a computer in processing electrical or other (e.g. mechanical, chemical) physical signals to generate other desired physical signals.
  • a virtual address typically includes a number of high order bits which form a virtual page number and a number of low order bits which constitute an offset value for indexing into the page of memory designated by the page number.
  • a thirty-two bit virtual address and a four kilobyte page are assumed so that twelve bits are required for the offset value.
  • the memory management unit 10 includes a translation lookaside buffer 12 which is adapted to store virtual page numbers and associated physical page numbers. Since a page of virtual memory and a page of physical memory are typically the same size, the offset value is the same for each. Consequently, the low order offset value need not be included in the comparison or stored in the translation lookaside buffer 12 since the value of the actual offset may be determined from the virtual address being looked up.
  • a comparator 14 receives virtual address page numbers from external circuitry (such as a central processing unit not shown in the figure) and compares those virtual address page numbers to the virtual page numbers stored in the translation lookaside buffer 12.
  • the associated physical page number is furnished so that the processor may access that physical page number for the information which is sought.
  • the bits of the physical page number stored in the translation lookaside buffer are combined with the lower order offset bits of the virtual address which is sought to obtain the complete physical address.
  • the memory management unit 10 refers to a series of lookup tables which are typically stored in main memory.
  • the reference to the lookup tables begins by taking a value stored in a root table register 15. This value is typically placed in that root table register 15 by the CPU for all addresses associated with a particular process with which the virtual address is associated. This address points to the base of a root table 16 in memory. Some portion of the virtual address such as the high order eight bits are then used to index into that table 16 to access an entry. Typically the data found at that entry position in the root table 16 is another pointer to the base address of another table 17 in memory. A second portion of the virtual address such as the next highest order six bits is used to index into the second table 17 to provide another entry.
  • This entry may again be a pointer to another table 18 stored in memory although in some systems this entry may also contain the physical address of the information sought. Presuming that this is another pointer to a table 18, another six bits of the virtual address may provide an offset into this table 18. At this point in a particular system, the data stored in the entry are the twenty high order bits of the physical address sought.
  • the bits of the physical page number are combined with the twelve lowest order offset bits of the virtual address to obtain the complete physical address.
  • the virtual page number and the associated physical page number which has been derived are then stored as an entry in the translation lookaside buffer 12 so that the information may be accessed at this physical page.
  • the virtual page address and the physical page address stored in the translation lookaside buffer 12 are now available so that the next time that the translation lookaside buffer 12 is searched for that virtual page address, the physical page address is available without going through the stages of the lookup tables.
  • the numbers of bits in the virtual and the physical addresses and the lengths of the virtual and physical page numbers and offsets are fixed and important to the manner in which the memory management unit accomplishes its operations.
  • the number of bits necessary to address a page will vary with the size of the page used in the particular system. For example, if a physical page were to include four kilobytes of memory in a total addressable space of sixty-four megabytes of memory, then there would be many more possible page numbers than if a page were to include a megabyte of memory for the same system. Thus, there must be more bits to designate each of the available pages if a page is four kilobytes than if a page is one megabyte.
  • the offset necessary for addressing a particular address within a larger page is larger than is the offset necessary to address a particular address within a smaller page.
  • the number of bits necessary for offset values will vary with different page sizes.
  • FIG. 2 illustrates the composition of a virtual address used in a memory management unit in accordance with the present invention.
  • a virtual address is adapted to support multiple page sizes. Although the total size of the virtual address remains constant, the sizes of the individual fields of the address vary with the sizes of the individual pages involved.
  • the fields included in the virtual address are a big page field, a variable page field, and a small offset field.
  • the big page field and some portion of the variable page field from zero bits up to the total available in the variable page field are used to define the current virtual page address; and the remainder of the variable page field and the small offset field are used to define the current offset value.
  • the total address space remains the same whatever the size of the pages may be.
  • a larger page requires less bits to address the page while the offset within that page requires a larger number of bits.
  • a smaller page requires more bits to address than a large page since so many more page addresses may exist in a given system while the offset within such a smaller page is smaller and requires fewer bits.
  • the big page size field is just large enough to include the number of bits necessary to address the largest page desired, and the small offset field is just large enough to include the number of bits necessary to provide the offset value for the smallest page desired.
  • the address length is sixty-four bits, and the page sizes vary between four kilobytes and four gigabytes.
  • FIG. 3 illustrates the general form of a memory management system constructed in accordance with the present invention to provide memory management in a system utilizing multiple page sizes.
  • the memory management system includes a hardware memory management unit 30 having a translation lookaside buffer 31, a base address register 34, a comparator 35, circuitry 36 for concatenating the physical page number with the offset, and circuitry for joining these individual components together.
  • a hardware memory management unit 30 having a translation lookaside buffer 31, a base address register 34, a comparator 35, circuitry 36 for concatenating the physical page number with the offset, and circuitry for joining these individual components together.
  • Associated with the memory management unit 30 but stored in main memory in the preferred embodiment of the invention are a translation storage buffer 32 and a set of translation tables 33.
  • the memory management unit 30 is presented the virtual address sought and compares the upper bits of that address with the upper bits of virtual addresses which are stored in the translation lookaside buffer 31. If the virtual page address is found in the translation lookaside buffer 31, the memory management unit 30 generates a physical address for the information by concatenating the physical page address and the offset for the virtual address. If the virtual page address is not found in the translation lookaside buffer 31, software compares the virtual page address sought with the virtual page address stored in the translation storage buffer 32 using the base address stored in the register 34 to determine whether the virtual address resides therein. If the virtual address is found in the translation storage buffer 32, a physical address is generated in a manner to be explained. If the address is not found, the search for that address is conducted using typical lookup tables. In the preferred embodiment of the invention, this main memory lookup operation is accomplished by system software which is not a part of the present invention and is, consequently, not discussed further.
  • FIG. 4 illustrates, inter alia, the format of the information stored in the translation lookaside buffer 31 in the preferred embodiment of the invention, a memory management unit for operating with a sixty-four bit address. Also illustrated is the information presented in a virtual address which is to be translated to a physical address.
  • the two pieces of virtual address information illustrated in FIG. 4 are compared in the comparator 35 of the memory management unit 30 in the manner herein discussed.
  • the first line illustrated in FIG. 4 is the virtual address which is being sought; this address is presented to the memory management unit 30 by a central processing unit or other device.
  • the virtual address includes the three fields discussed above: the big page field, the variable page field, and the small offset field.
  • the virtual address may also include a context field which indicates the particular process with which the address is associated and typically provides access to a pointer indicating the address of a base lookup table for the addresses of that process. Such an address is placed in the base register 34 of the memory management unit 30 of FIG. 3.
  • the next line of FIG. 4 illustrates the variable page field. As may be seen, this field is divided into two portions. The portion to the right is masked so that these bits are not considered by the comparator in an attempted match. The bits of the masked portion of the variable page field are utilized in the particular address as the upper bits of the offset into the page. The unmasked portion of the variable page field to the left provides the lower order bits of the virtual page number.
  • This second line of FIG. 4 is included to illustrate the manner in which the variable page field of the particular virtual address is allocated between the page and offset portions of the address.
  • Line three of FIG. 4 shows the number of bits which are compared for a particular virtual page address in the comparator 35 of the memory management unit 30.
  • the comparator 35 is large enough so that all of the bits of the big page field and the total variable page field may be compared, if necessary.
  • the actual number of bits compared includes the big page field and the portion of the variable page field necessary to make up the entire virtual page number (i.e., the unmasked portion of the variable page field to the left of the mask in the second line). It will be understood that it is necessary for the memory management unit 30 to know the size of the page of the virtual address to generate a mask to accomplish the comparison, and this information is stored as a part of the entry as will be explained below.
  • Lines four and five of FIG. 4 illustrate the entire entry for the presently preferred embodiment of an address which is stored in the translation lookaside buffer 31. As may be seen, this entry is 128 bits long. Of this, the most significant bit position stores an indication that the entry is valid. To the right of the valid bit is a field large enough to store the page number for the smallest page usable with the memory management unit 30. Since the smallest page requires the longest page number, this field must include enough bits to store both the entire big page field of the virtual address and the entire variable page field.
  • this illustration uses a virtual page number which is somewhere between the shortest page number (only the big page field) and the longest page number (the big page field and the entire variable page field), some bits available to store the page number are left unused and are so marked in the figure. To the right of these empty bits of the virtual page number field are five bits which indicate the size of the mask for the variable page field. As may be seen, the five bits of the size field allow up to thirty-two bits to be masked, more than enough for the twenty bits used for the variable page field.
  • the number stored in the size field causes a mask generator circuit 37 to generate a mask for the comparator so that the variable page field is correctly chosen for the address which is stored in the line of the translation lookaside buffer 31 and is being compared. That the size of the mask is controlled by the size value stored in the size field shown in line four of FIG. 4 is indicated by the dotted line running from the size field in line four to the mask shown in line two.
  • the portion of the memory management system discussed to this point utilizing the translation lookaside buffer 31 may be utilized as a basic memory management unit when combined with the previously discussed software lookup tables of the prior art.
  • the root table pointer provided by the context value referred to above and selected bits of the virtual address as offsets into the software tables, an effective system is provided for dealing with the translation of virtual addresses to physical addresses.
  • all of the individual elements other than those specifically described may be constructed in a manner well known to the prior art.
  • the present invention may also be enhanced in order to provide more rapid translation by utilizing the software translation storage buffer 32.
  • the software translation storage buffer 32 provides additional storage to assist the translation lookaside buffer 31 while allowing the buffer 31 to maintain a minimum size.
  • the translation storage buffer 32 stores the same data in its entries as does the translation lookaside buffer 31. When a miss occurs in the translation lookaside buffer 31, the system functions in a manner unlike any other memory management system.
  • the actual size of the page of the virtual address and of the offset are both determined by the value stored in the size field of the translation lookaside buffer 31. Consequently, if a miss occurs in the translation lookaside buffer 31, the page size for which a search is being conducted is unknown. Thus, the portion of the virtual page address to be utilized for comparison with the virtual page values stored in the translation storage buffer 32 is unknown.
  • the present invention uses an assumed value of virtual page size (referred to as assumed page size) to conduct the comparison. This assumed value is a function of the particular system but, in general, is between the minimum and the maximum page sizes available.
  • the virtual page numbers stored by the translation storage buffer 32 reflect pages which are of this assumed page size.
  • the current page size of any virtual address which is sought can be smaller than, equal to, or larger than the assumed page size. Consequently, the current page number can be longer than, equal to, or shorter than the assumed page size. This is illustrated on the seventh line in FIG. 4.
  • the virtual page numbers stored in the translation storage buffer 32 held in memory are of the same assumed page size. Consequently, the actual current page size (line seven of FIG. 4) can only be the same as the assumed page size, larger than the assumed size, or smaller than the assumed size.
  • the current page size is unknown when a translation lookaside buffer miss occurs because the size information is stored in the translation lookaside buffer 31. Consequently, the assumed page number (rather than the current page number) portion of the virtual address is compared against the assumed page numbers stored in the entries in the translation storage buffer (line 8 of FIG. 4). If the assumed page number of the current address matches an assumed page number stored in the translation storage buffer, there is a hit; and the current page size may be determined from the size field of the entry in the translation storage buffer 32.
  • the current page number will be longer than the assumed page number stored in the translation storage buffer 32 by P bits (see line seven of FIG. 4), where P is the difference between the length of the current page number and the length of the assumed page number. Consequently, a number of possible entries may match the assumed virtual number. In fact, there will be two to the power P consecutive pages with the same size as the current page which is smaller than the assumed page size. These pages will all share one entry in the translation storage buffer 32.
  • the matching entry with the assumed page number in the translation storage buffer stores a pointer (line nine of FIG. 4) to another table 33 called a translation table.
  • the entry in the translation storage buffer 32 contains the size of the actual address and a pointer to the translation table entry which includes the remainder of each of the possible virtual page numbers.
  • two to the power P entries are stored, one for each page that uses the particular translation storage buffer entry (as is shown in line ten of FIG. 4).
  • the P least significant bits of the current page number (where P is the amount by which the assumed page number is less than the current page number--see line seven of FIG. 4) are then used to select one entry out of the 2 P entries. For example, if the P least significant bits of the current page number equal 0, entry 0 is selected. If the P least significant bits of the current page number equal 1, entry 1 is selected and so on. The selected entry then provides the physical page number which is sought.
  • the actual physical address is generated by the concatenation of parts referred to above in the discussion of the translation lookaside buffer 31.
  • the virtual and physical page numbers are then stored in the translation lookaside buffer 31 for future address translations.
  • the current page size is larger or equal to the assumed page size, then the current page number will be shorter than or equal to the assumed page number stored in the translation storage buffer entry. Consequently, the translation storage buffer entry that matches the assumed page number of the current address can only be used by this page whose size is bigger than or equal to the assumed page size. Therefore, there is no need to store a pointer in the translation storage buffer 32 as was done in the previous case of a longer current page number. Instead, the physical page number and other related information can be stored directly in the translation storage buffer entry. This is illustrated in lines eleven and twelve of FIG. 4.
  • the final physical address is compiled by concatenating the physical page number stored in the translation storage buffer entry, the lower order bits of the variable page field which are included in the offset, and the value in the small offset field of the virtual address being sought. Finally, the virtual and physical addresses are stored in the translation lookaside buffer for future address translation.

Abstract

A memory management unit for translating a virtual address into a corresponding physical address including a translation lookaside buffer and a comparator. The translation lookaside buffer includes a plurality of entries, each of the entries having a first number of bits to indicate a virtual page number, a second number of bits to indicate an offset into the page, a third number of bits to indicate either a portion of a page number or a portion of an offset value, a fourth number of bits to indicate a page size, and a fifth number of bits for storing a physical address of a page of memory. The comparator compares a number of bits equal to the virtual page size of a virtual address presented to the translation lookaside buffer with the virtual addresses stored in entries of the translation lookaside buffer. If the result of the comparison produces a match/hit, the physical address is concatenated with the bits of the second and third number of bits using the stored page size to provide a physical address. When the comparison produces a miss, an assumed page size is used to access a table in memory from which the physical addresses may be derived.

Description

This is a continuation of application Ser. No. 07/929,792 filed Aug. 13, 1992, now abandoned.
BACKGROUND OF THE INVENTION
1. Field of the Invention
This invention relates to virtual memory systems and, more particularly, to memory management units for controlling the translation of addresses between virtual and physical memory.
2. History of the Prior Art
Two general trends have coincided in the development of computer systems. The first is that the addressable memory available to a computer has grown larger so that the computer may handle more information and larger, more sophisticated programs. The second is that the speed of operation of a computer has increased so that larger programs may be run in a reasonable time.
One of the ways in which the addressable memory of a computer has been increased is through the use of virtual memory systems. A virtual memory system allows addressing of very large amounts of memory as though all of that memory were a part of the main memory of the computer system. A virtual memory system allows this even though actual main memory may consist of some substantially lesser amount of storage space than is addressable. For example, main memory may consist of one megabyte of random access memory while sixty-four megabytes of memory are addressable using the virtual memory addressing system.
Virtual memory systems accomplish this feat by providing memory management units which translate virtual memory addresses into the physical memory addresses at which the information actually resides. A particular physical address holding the information may be in main memory or in long term storage such as a hard disk. If the physical address of information sought is in main memory, the information is accessed and utilized by the computer. If the physical address is in long term storage, the information is transferred (usually in a block referred to as a page) to main memory where it may be used. This transfer may necessitate that other information be swapped out of main memory to long term memory in order to make room for the new information. If so, this is accomplished under control of the memory management unit.
The pages referred above are, if fact, the usual means for addressing information. Pages are numbered, and both physical and virtual addresses typically includes a page number and an offset into the page. Moreover, the physical offset and the virtual offset are typically the same. In order to translate between virtual and physical addresses, a basic virtual memory system creates lookup tables which are stored in main memory. These lookup tables store the virtual address page numbers used by the computer. Stored with each virtual address page number is the physical address page number which must be accessed to derive the information. The page number of any virtual address presented to the memory management unit is compared to the values stored in these tables in order to find a matching virtual address page number and retrieve the physical address page number.
There are often several levels of tables, and the comparison takes a great deal of system clock time. For example, to retrieve a physical page address using the lookup tables stored in main memory, the typical memory management unit first looks to a register for the address of a base table which stores pointers to other levels of tables. The memory management unit retrieves this pointer from the base table and places it in another register. The memory management unit uses this pointer to go to the next level of table. This process continues until the physical page address of the information sought is recovered. When the physical address is recovered, it is combined with the offset furnished as a part of the virtual address; and the result is used by the processor to access the particular information desired. A typical lookup in the page tables may take from ten to fifteen clock cycles at each level of the search.
To overcome this delay, virtual memory management systems often include cache memories called translation lookaside buffers (TLBs). A translation lookaside buffer is essentially a buffer for caching virtual page addresses which have been recently used along with their related physical page addresses. Such an address cache works on the same principle as do caches holding data and instructions, the most recently used addresses are more likely to be used than are other addresses. When provided a virtual page address which is stored in the translation lookaside buffer, the translation lookaside buffer furnishes a physical page address for the information without the necessity of consulting the page lookup tables. It is only when the processor sends a virtual page address to the translation lookaside buffer which address is not stored in the translation lookaside buffer that the memory management unit must consult the page lookup tables. When this occurs, the physical page address recovered is stored along with the virtual page address in the translation lookaside buffer so that the next time it is needed it is immediately available. This saves a great deal of time on the next use of the information. For example, accessing the information using a translation lookaside buffer may require only one or two clock cycles compared to hundreds of clock cycles required for a page table lookup.
Presently, computers are designed to use only a single page size; and a designer must choose that size based on certain assumptions about the use of the computer. For example, the storage of a single frame of twenty-four bit color information for the output display requires megabytes of memory space. However, the typical page size utilized in a virtual memory system is four kilobytes. Since each page requires at least one page table translation, the access of a display frame of data requires at least one thousand individual references to the memory management unit to accomplish the translation of the addresses necessary to access the frame buffer in memory. Thus, it would be much more convenient and faster for a computer possessor in dealing with display memory if the data were all to be included in a single page of memory so that the page address translation necessary to display a single frame on the output display could be accomplished for a single page rather than one thousand different pages. On the other hand, if only such large page sizes were to be available, then a very large number of addresses would be wasted since most processes require less than the typical four kilobyte byte page size now utilized.
One way in which the speed of operation of a computer which uses a virtual memory system might be increased would be to allow the virtual memory to utilize many different sizes of pages.
Although it would be desirable to provide multiple page sizes for virtual memory, in order to do so, a system would need to find ways to store different page sizes together in a translation lookaside buffer, to test different page sizes for a hit in the translation lookaside buffer, and to use different size pages to look up addresses. All of these and more are very difficult problems that had not been resolved prior to the present invention.
SUMMARY OF THE INVENTION
It is, therefore, an object of the present invention to provide a memory management unit capable of handling virtual address translations for multiple page sizes.
It is another more specific object of the present invention to provide a memory management unit capable of translating addresses for a virtual memory system which utilizes a very large number of memory page sizes.
These and other objects of the present invention are realized in a memory management unit for a computer using a virtual address system comprising a translation lookaside buffer, and means for comparing a page number of a virtual address for information with a virtual page number stored in the translation lookaside buffer; the translation lookaside buffer including a plurality of positions for storing entries, each of the entries including a first number of bit positions to store a first virtual page number, a second number of bit positions to store an offset into a page, a third number of bit positions to store additional bits which may be part of a page number or part of an offset in a page, a fourth number of bit positions to indicate a size, and a fifth number of bit positions for storing a physical page number; means responsive to a value stored in the fourth number of bit positions for fixing a length of virtual page numbers to be compared by the means for comparing; and means for concatenating the bits of the fifth number of bits, the bits of the third number of bits which are not compared by the means for comparing, and the bits of the second number of bits in order to provide a physical address when a virtual address to be translated matches a virtual address stored in a line of the translation lookaside buffer.
These and other objects and features of the invention will be better understood by reference to the detailed description which follows taken together with the drawings in which like elements are referred to by like designations throughout the several views.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram illustrating the operation of a conventional memory management unit.
FIG. 2 is a diagram illustrating an addressing format in accordance with the present invention.
FIG. 3 is a block diagram illustrating the features of an memory management unit designed in accordance with the present invention.
FIG. 4 is a diagram illustrating various bit formats used in implementing the memory management unit of FIG. 3 and provides a flow chart of the operation of the method of the invention.
FIG. 5 is a flow chart illustrating the steps of a process in accordance with the present invention.
NOTATION AND NOMENCLATURE
Some portions of the detailed descriptions which follow are presented in terms of symbolic representations of operations on data bits within a computer memory. These descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. The operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Further, the manipulations performed are often referred to in terms, such as adding or comparing, which are commonly associated with mental operations performed by a human operator. No such capability of a human operator is necessary or desirable in most cases in any of the operations described herein which form part of the present invention; the operations are machine operations. In all cases the distinction between the method operations in operating a computer and the method of computation itself should be borne in mind. The present invention relates to a method and apparatus for operating a computer in processing electrical or other (e.g. mechanical, chemical) physical signals to generate other desired physical signals.
DETAILED DESCRIPTION OF THE INVENTION
Referring now to FIG. 1, there is illustrated a block diagram of a portion of a memory management unit 10 for a virtual memory system designed in accordance with the prior art. In this virtual memory system, a virtual address typically includes a number of high order bits which form a virtual page number and a number of low order bits which constitute an offset value for indexing into the page of memory designated by the page number. For the purpose of this prior art description, a thirty-two bit virtual address and a four kilobyte page are assumed so that twelve bits are required for the offset value.
The memory management unit 10 includes a translation lookaside buffer 12 which is adapted to store virtual page numbers and associated physical page numbers. Since a page of virtual memory and a page of physical memory are typically the same size, the offset value is the same for each. Consequently, the low order offset value need not be included in the comparison or stored in the translation lookaside buffer 12 since the value of the actual offset may be determined from the virtual address being looked up. A comparator 14 receives virtual address page numbers from external circuitry (such as a central processing unit not shown in the figure) and compares those virtual address page numbers to the virtual page numbers stored in the translation lookaside buffer 12.
If the virtual page number bits of a virtual address sought compare to the bits of a valid virtual page number stored in the translation lookaside buffer 12, then the associated physical page number is furnished so that the processor may access that physical page number for the information which is sought. The bits of the physical page number stored in the translation lookaside buffer are combined with the lower order offset bits of the virtual address which is sought to obtain the complete physical address.
If no virtual page number match is found in the translation lookaside buffer 12, then the memory management unit 10 refers to a series of lookup tables which are typically stored in main memory. The reference to the lookup tables begins by taking a value stored in a root table register 15. This value is typically placed in that root table register 15 by the CPU for all addresses associated with a particular process with which the virtual address is associated. This address points to the base of a root table 16 in memory. Some portion of the virtual address such as the high order eight bits are then used to index into that table 16 to access an entry. Typically the data found at that entry position in the root table 16 is another pointer to the base address of another table 17 in memory. A second portion of the virtual address such as the next highest order six bits is used to index into the second table 17 to provide another entry. This entry may again be a pointer to another table 18 stored in memory although in some systems this entry may also contain the physical address of the information sought. Presuming that this is another pointer to a table 18, another six bits of the virtual address may provide an offset into this table 18. At this point in a particular system, the data stored in the entry are the twenty high order bits of the physical address sought.
The bits of the physical page number are combined with the twelve lowest order offset bits of the virtual address to obtain the complete physical address. The virtual page number and the associated physical page number which has been derived are then stored as an entry in the translation lookaside buffer 12 so that the information may be accessed at this physical page. The virtual page address and the physical page address stored in the translation lookaside buffer 12 are now available so that the next time that the translation lookaside buffer 12 is searched for that virtual page address, the physical page address is available without going through the stages of the lookup tables.
As may be seen from the above description, the numbers of bits in the virtual and the physical addresses and the lengths of the virtual and physical page numbers and offsets are fixed and important to the manner in which the memory management unit accomplishes its operations. The number of bits necessary to address a page will vary with the size of the page used in the particular system. For example, if a physical page were to include four kilobytes of memory in a total addressable space of sixty-four megabytes of memory, then there would be many more possible page numbers than if a page were to include a megabyte of memory for the same system. Thus, there must be more bits to designate each of the available pages if a page is four kilobytes than if a page is one megabyte. Moreover, the offset necessary for addressing a particular address within a larger page is larger than is the offset necessary to address a particular address within a smaller page. Thus, the number of bits necessary for offset values will vary with different page sizes.
As pointed out above, it is desirable to be able to address multiple page sizes in the same system. However, multiple page sizes are only useful if pages of different sizes can be utilized on command for the different functions of the computer system. Thus, a large page might be used for storing data to be displayed and a small page used for storing a particular message. If different size pages may be selected for these different uses, then page numbers of different lengths will be stored together in the same translation lookaside buffer of a computer system. If different page sizes are stored at any time in the same translation lookaside buffer, then there must be some way of distinguishing the sizes of those pages so that the correct numbers of bits may be utilized by the memory management unit to accomplish each address translation or lookup. The prior art has not provided any arrangement or method of accomplishing these important functions.
FIG. 2 illustrates the composition of a virtual address used in a memory management unit in accordance with the present invention. Such a virtual address is adapted to support multiple page sizes. Although the total size of the virtual address remains constant, the sizes of the individual fields of the address vary with the sizes of the individual pages involved.
The fields included in the virtual address are a big page field, a variable page field, and a small offset field. For any size page, the big page field and some portion of the variable page field from zero bits up to the total available in the variable page field are used to define the current virtual page address; and the remainder of the variable page field and the small offset field are used to define the current offset value. The total address space remains the same whatever the size of the pages may be. A larger page requires less bits to address the page while the offset within that page requires a larger number of bits. On the other hand, a smaller page requires more bits to address than a large page since so many more page addresses may exist in a given system while the offset within such a smaller page is smaller and requires fewer bits. The big page size field is just large enough to include the number of bits necessary to address the largest page desired, and the small offset field is just large enough to include the number of bits necessary to provide the offset value for the smallest page desired. In the preferred embodiment of the invention, the address length is sixty-four bits, and the page sizes vary between four kilobytes and four gigabytes.
FIG. 3 illustrates the general form of a memory management system constructed in accordance with the present invention to provide memory management in a system utilizing multiple page sizes. The memory management system includes a hardware memory management unit 30 having a translation lookaside buffer 31, a base address register 34, a comparator 35, circuitry 36 for concatenating the physical page number with the offset, and circuitry for joining these individual components together. Associated with the memory management unit 30 but stored in main memory in the preferred embodiment of the invention are a translation storage buffer 32 and a set of translation tables 33.
As with a typical memory management unit, the memory management unit 30 is presented the virtual address sought and compares the upper bits of that address with the upper bits of virtual addresses which are stored in the translation lookaside buffer 31. If the virtual page address is found in the translation lookaside buffer 31, the memory management unit 30 generates a physical address for the information by concatenating the physical page address and the offset for the virtual address. If the virtual page address is not found in the translation lookaside buffer 31, software compares the virtual page address sought with the virtual page address stored in the translation storage buffer 32 using the base address stored in the register 34 to determine whether the virtual address resides therein. If the virtual address is found in the translation storage buffer 32, a physical address is generated in a manner to be explained. If the address is not found, the search for that address is conducted using typical lookup tables. In the preferred embodiment of the invention, this main memory lookup operation is accomplished by system software which is not a part of the present invention and is, consequently, not discussed further.
FIG. 4 illustrates, inter alia, the format of the information stored in the translation lookaside buffer 31 in the preferred embodiment of the invention, a memory management unit for operating with a sixty-four bit address. Also illustrated is the information presented in a virtual address which is to be translated to a physical address. FIG. 5, which is a flow chart illustrating the steps of a process in accordance with the present invention, should be considered in association with FIG. 4 to understand the invention.
The two pieces of virtual address information illustrated in FIG. 4 are compared in the comparator 35 of the memory management unit 30 in the manner herein discussed. The first line illustrated in FIG. 4 is the virtual address which is being sought; this address is presented to the memory management unit 30 by a central processing unit or other device. The virtual address includes the three fields discussed above: the big page field, the variable page field, and the small offset field. Although not shown, the virtual address may also include a context field which indicates the particular process with which the address is associated and typically provides access to a pointer indicating the address of a base lookup table for the addresses of that process. Such an address is placed in the base register 34 of the memory management unit 30 of FIG. 3.
The next line of FIG. 4 illustrates the variable page field. As may be seen, this field is divided into two portions. The portion to the right is masked so that these bits are not considered by the comparator in an attempted match. The bits of the masked portion of the variable page field are utilized in the particular address as the upper bits of the offset into the page. The unmasked portion of the variable page field to the left provides the lower order bits of the virtual page number. This second line of FIG. 4 is included to illustrate the manner in which the variable page field of the particular virtual address is allocated between the page and offset portions of the address.
Line three of FIG. 4 shows the number of bits which are compared for a particular virtual page address in the comparator 35 of the memory management unit 30. As may be seen, the comparator 35 is large enough so that all of the bits of the big page field and the total variable page field may be compared, if necessary. In any comparison, the actual number of bits compared includes the big page field and the portion of the variable page field necessary to make up the entire virtual page number (i.e., the unmasked portion of the variable page field to the left of the mask in the second line). It will be understood that it is necessary for the memory management unit 30 to know the size of the page of the virtual address to generate a mask to accomplish the comparison, and this information is stored as a part of the entry as will be explained below.
Lines four and five of FIG. 4 illustrate the entire entry for the presently preferred embodiment of an address which is stored in the translation lookaside buffer 31. As may be seen, this entry is 128 bits long. Of this, the most significant bit position stores an indication that the entry is valid. To the right of the valid bit is a field large enough to store the page number for the smallest page usable with the memory management unit 30. Since the smallest page requires the longest page number, this field must include enough bits to store both the entire big page field of the virtual address and the entire variable page field. Because this illustration uses a virtual page number which is somewhere between the shortest page number (only the big page field) and the longest page number (the big page field and the entire variable page field), some bits available to store the page number are left unused and are so marked in the figure. To the right of these empty bits of the virtual page number field are five bits which indicate the size of the mask for the variable page field. As may be seen, the five bits of the size field allow up to thirty-two bits to be masked, more than enough for the twenty bits used for the variable page field. In a comparison by the comparator 35 of the memory management unit 30, the number stored in the size field causes a mask generator circuit 37 to generate a mask for the comparator so that the variable page field is correctly chosen for the address which is stored in the line of the translation lookaside buffer 31 and is being compared. That the size of the mask is controlled by the size value stored in the size field shown in line four of FIG. 4 is indicated by the dotted line running from the size field in line four to the mask shown in line two.
To the right of the size field of line four and at the beginning of line five of FIG. 4 are a number of unrelated bits. These unrelated bits are reserved for future extensions which are not related to the present invention and are therefore not discussed here. To the right of the unrelated bits in line five are a number of bits (forty in the preferred embodiment of the invention) which store the physical page number. To the right of the physical page number field are a number of bits labelled soft and allocated to the software programmer. Finally, to the right of the soft field is a field including a number of bits which are used to store protection information.
When the virtual page number indicated by the big page field and the unmasked portion of the variable page field match the same bits of a virtual page number stored in the translation lookaside buffer 31, there is a hit in the translation lookaside buffer 31. This causes the memory management unit 30 to use the circuitry 36 to generate a physical address which is the concatenation of the physical page number, the previously masked least significant portion of the variable page field, and the bits of the small offset field. The physical page frame number points to the physical page at which the desired information is stored, and the lower order (previously masked) bits of the variable page field concatenated at the high end to the small offset field provide the actual page offset. This value is illustrated in the sixth line of FIG. 4.
The portion of the memory management system discussed to this point utilizing the translation lookaside buffer 31 may be utilized as a basic memory management unit when combined with the previously discussed software lookup tables of the prior art. By utilizing the root table pointer provided by the context value referred to above and selected bits of the virtual address as offsets into the software tables, an effective system is provided for dealing with the translation of virtual addresses to physical addresses. To this point in the explanation all of the individual elements other than those specifically described may be constructed in a manner well known to the prior art.
However, the present invention may also be enhanced in order to provide more rapid translation by utilizing the software translation storage buffer 32. The software translation storage buffer 32 provides additional storage to assist the translation lookaside buffer 31 while allowing the buffer 31 to maintain a minimum size. In general, except as otherwise mentioned, the translation storage buffer 32 stores the same data in its entries as does the translation lookaside buffer 31. When a miss occurs in the translation lookaside buffer 31, the system functions in a manner unlike any other memory management system.
It will have been noted by those skilled in the art that the actual size of the page of the virtual address and of the offset are both determined by the value stored in the size field of the translation lookaside buffer 31. Consequently, if a miss occurs in the translation lookaside buffer 31, the page size for which a search is being conducted is unknown. Thus, the portion of the virtual page address to be utilized for comparison with the virtual page values stored in the translation storage buffer 32 is unknown. In order to undertake a comparison of the current virtual address which is being sought with virtual page values stored in the translation storage buffer 32, the present invention uses an assumed value of virtual page size (referred to as assumed page size) to conduct the comparison. This assumed value is a function of the particular system but, in general, is between the minimum and the maximum page sizes available. The virtual page numbers stored by the translation storage buffer 32 reflect pages which are of this assumed page size.
The current page size of any virtual address which is sought can be smaller than, equal to, or larger than the assumed page size. Consequently, the current page number can be longer than, equal to, or shorter than the assumed page size. This is illustrated on the seventh line in FIG. 4. The virtual page numbers stored in the translation storage buffer 32 held in memory are of the same assumed page size. Consequently, the actual current page size (line seven of FIG. 4) can only be the same as the assumed page size, larger than the assumed size, or smaller than the assumed size.
As discussed in the previous paragraph, the current page size is unknown when a translation lookaside buffer miss occurs because the size information is stored in the translation lookaside buffer 31. Consequently, the assumed page number (rather than the current page number) portion of the virtual address is compared against the assumed page numbers stored in the entries in the translation storage buffer (line 8 of FIG. 4). If the assumed page number of the current address matches an assumed page number stored in the translation storage buffer, there is a hit; and the current page size may be determined from the size field of the entry in the translation storage buffer 32.
If the current page size is smaller than the assumed page size, then the current page number will be longer than the assumed page number stored in the translation storage buffer 32 by P bits (see line seven of FIG. 4), where P is the difference between the length of the current page number and the length of the assumed page number. Consequently, a number of possible entries may match the assumed virtual number. In fact, there will be two to the power P consecutive pages with the same size as the current page which is smaller than the assumed page size. These pages will all share one entry in the translation storage buffer 32.
In order to differentiate between these pages and select the proper page, the matching entry with the assumed page number in the translation storage buffer stores a pointer (line nine of FIG. 4) to another table 33 called a translation table. Thus, the entry in the translation storage buffer 32 ( lines 8 and 9 of FIG. 4) contains the size of the actual address and a pointer to the translation table entry which includes the remainder of each of the possible virtual page numbers. At the translation table address pointed to, two to the power P entries are stored, one for each page that uses the particular translation storage buffer entry (as is shown in line ten of FIG. 4).
The P least significant bits of the current page number (where P is the amount by which the assumed page number is less than the current page number--see line seven of FIG. 4) are then used to select one entry out of the 2P entries. For example, if the P least significant bits of the current page number equal 0, entry 0 is selected. If the P least significant bits of the current page number equal 1, entry 1 is selected and so on. The selected entry then provides the physical page number which is sought. The actual physical address is generated by the concatenation of parts referred to above in the discussion of the translation lookaside buffer 31. The virtual and physical page numbers are then stored in the translation lookaside buffer 31 for future address translations.
If the current page size is larger or equal to the assumed page size, then the current page number will be shorter than or equal to the assumed page number stored in the translation storage buffer entry. Consequently, the translation storage buffer entry that matches the assumed page number of the current address can only be used by this page whose size is bigger than or equal to the assumed page size. Therefore, there is no need to store a pointer in the translation storage buffer 32 as was done in the previous case of a longer current page number. Instead, the physical page number and other related information can be stored directly in the translation storage buffer entry. This is illustrated in lines eleven and twelve of FIG. 4. Again, the final physical address is compiled by concatenating the physical page number stored in the translation storage buffer entry, the lower order bits of the variable page field which are included in the offset, and the value in the small offset field of the virtual address being sought. Finally, the virtual and physical addresses are stored in the translation lookaside buffer for future address translation.
Although the present invention has been described in terms of a preferred embodiment, it will be appreciated that various modifications and alterations might be made by those skilled in the art without departing from the spirit and scope of the invention. The invention should therefore be measured in terms of the claims which follow.

Claims (12)

What is claimed is:
1. A memory management unit for a virtual address system comprising:
a translation lookaside buffer including a plurality of positions for storing translation entries,
each of the translation entries including
a first number of bit positions to store a first virtual page number,
a second number of bit positions to store an offset into a page,
a third number of bit positions to store additional bits each of which additional bits may be either a part of a virtual page number or part of an offset into a page,
a fourth number of bit positions to indicate a size, and
a fifth number of bit positions for storing a physical page number;
means for comparing a virtual page number of a virtual address for information with a virtual page number stored in the translation lookaside buffer;
means responsive to a value stored in the fourth number of bit positions for fixing a length of virtual page numbers to be compared by the means for comparing;
means for concatenating the bits of the fifth number of bits, the bits of the third number of bits which are not compared in the comparator, and the bits of the second number of bits to provide a physical address when a virtual address to be translated matches a virtual address stored in an entry of the translation lookaside buffer; and
a second translation lookaside buffer in memory for providing additional translation entries when a virtual address to be translated does not match a virtual address stored in the translation buffer,
the second translation lookaside buffer being capable of storing together entries of different sizes,
the entries of different sizes in which a virtual page number is not greater than an assumed length including a virtual page number, a virtual page number length, and a physical page number, and
the entries of different sizes in which a virtual page number is greater than an assumed length including an assumed virtual page number, a virtual page number length, and a pointer to a number of entries having the same assumed virtual page number.
2. A memory management unit of a virtual address system as claimed in claim 1 in which the pointer to a number of entries having the same assumed virtual page number for entries in which the virtual page number is greater than an assumed length points to an entry in a table in memory.
3. A memory management unit of a virtual address system as claimed in claim 1 in which the means responsive to a value stored in the fourth number of bit positions for fixing a length of virtual page numbers to be compared by the means for comparing comprises means for masking the number of bit positions compared by the means for comparing.
4. A method for translating virtual addresses having variable virtual page sizes and variable offset sizes stored together to physical addresses in a memory management unit for a virtual address system comprising the steps of:
(a) comparing a number of bits of a virtual address to be translated with entries stored in a first translation lookaside buffer, the number of bits of the virtual address and each entry being compared being controlled by a value stored in each of the entries;
(b) providing a physical page number when the compared bits of a virtual address and an entry are the same; and
(c) obtaining a physical page number from a second translation lookaside buffer in memory when the compared bits of a virtual address and an entry are not the same;
wherein step (c) includes the steps of
comparing entries in the second translation lookaside buffer with a virtual page address,
wherein a portion of a virtual address having an assumed length is compared with a portion of an entry in the second translation lookaside buffer of the same length,
deriving a length value when a comparison occurs,
generating a physical address if the length value is not greater than the assumed length, and
generating a pointer to one of a series of physical addresses if the length value is greater than the assumed length.
5. A method for translating virtual addresses having variable page and offset sizes stored together to physical addresses in a memory management unit for a virtual address system as claimed in claim 4 further comprising the step of placing a virtual page address and a physical page address obtained from a second translation lookaside buffer in memory in an entry in the first translation lookaside buffer.
6. A method for translating virtual addresses having variable page and offset sizes stored together to physical addresses in a memory management unit for a virtual address system as claimed in claim 4 wherein in step (a) the number of bits of the virtual address compared varies from a minimum number designating a largest possible page size to a maximum number designating a minimum possible page size.
7. A method of translating virtual addresses having variable page and offset sizes stored together to physical addresses in a memory management unit for a virtual address system as claimed in claim 4 in which the step of obtaining a physical page number from a second translation lookaside buffer in memory when the compared bits of a virtual address and an entry are not the same comprises the further steps of obtaining a physical page number from lookup tables stored in memory.
8. A method for translating virtual addresses having variable page and offset sizes stored together to physical addresses in a memory management unit for a virtual address system as claimed in claim 4 in which the step of comparing a number of bits of a virtual address to be translated with entries stored in a first translation lookaside buffer comprises comparing a number of bit positions equal to a first number of bit positions sufficient to indicate a first maximum page size and a second number of bit positions sufficient when combined with the first number to provide the complete virtual page for a page size of the virtual page address sought.
9. A method for translating virtual addresses having variable page and offset sizes stored together to physical addresses in a memory management unit for a virtual address system as claimed in claim 4 in which the step of comparing a number of bits of a virtual address to be translated with entries stored in a first translation lookaside buffer comprises comparing a number of bit positions equal to a first number of bit positions of a number large enough to indicate a first maximum page size, and some portion of a second number of bit positions, which second number of bit positions are large enough when added to the first number to provide a second minimum page size for a complete virtual page address.
10. A method for translating virtual addresses having variable page and offset sizes stored together to physical addresses in a memory management unit for a virtual address system as claimed in claim 9 in which the value stored in each of the entries controls a number of bit positions of the second number of bit positions which are compared.
11. A method for translating virtual addresses having variable page and offset sizes stored together to physical addresses in a memory management unit for a virtual address system as claimed in claim 10 in which the step of comparing a number of bit positions comprises using the value stored in each of the entries to mask bits stored in the second number of bit positions.
12. A method for translating virtual addresses having variable page and offset sizes stored together to physical addresses in a memory management unit for a virtual address system as claimed in claim 10 in which the step of obtaining a physical page number from a second translation lookaside buffer comprises concatenating a physical page address derived with a portion of the second number of bits of the entry not used in the comparison and with bits from the virtual address indicating an offset into a minimum sized page.
US08/318,539 1992-08-13 1994-10-05 Method and apparatus for a memory management unit supporting multiple page sizes Expired - Lifetime US5465337A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US08/318,539 US5465337A (en) 1992-08-13 1994-10-05 Method and apparatus for a memory management unit supporting multiple page sizes

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US92979292A 1992-08-13 1992-08-13
US08/318,539 US5465337A (en) 1992-08-13 1994-10-05 Method and apparatus for a memory management unit supporting multiple page sizes

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US92979292A Continuation 1992-08-13 1992-08-13

Publications (1)

Publication Number Publication Date
US5465337A true US5465337A (en) 1995-11-07

Family

ID=25458463

Family Applications (1)

Application Number Title Priority Date Filing Date
US08/318,539 Expired - Lifetime US5465337A (en) 1992-08-13 1994-10-05 Method and apparatus for a memory management unit supporting multiple page sizes

Country Status (1)

Country Link
US (1) US5465337A (en)

Cited By (85)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997039407A1 (en) * 1996-04-16 1997-10-23 Bull Hn Information Systems Inc. Mechanism for managing allocation of virtual memory buffers to virtual processes on a least recently used basis
EP0810527A1 (en) * 1996-05-30 1997-12-03 Hewlett-Packard Company A sectored virtual memory management system and translation look-aside buffer (TLB) for the same
US5712998A (en) * 1993-07-13 1998-01-27 Intel Corporation Fast fully associative translation lookaside buffer with the ability to store and manage information pertaining to at least two different page sizes
US5717885A (en) * 1994-09-27 1998-02-10 Hewlett-Packard Company TLB organization with variable page size mapping and victim-caching
US5752275A (en) * 1995-03-31 1998-05-12 Intel Corporation Translation look-aside buffer including a single page size translation unit
US5765220A (en) * 1996-06-18 1998-06-09 Hewlett-Packard Company Apparatus and method to reduce instruction address storage in a super-scaler processor
US5781922A (en) * 1996-11-19 1998-07-14 International Business Machines Corporation Page boundary caches
US5796978A (en) * 1994-09-09 1998-08-18 Hitachi, Ltd. Data processor having an address translation buffer operable with variable page sizes
US5832205A (en) * 1996-08-20 1998-11-03 Transmeta Corporation Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed
US5845331A (en) * 1994-09-28 1998-12-01 Massachusetts Institute Of Technology Memory system including guarded pointers
US5852607A (en) * 1997-02-26 1998-12-22 Cisco Technology, Inc. Addressing mechanism for multiple look-up tables
US5907867A (en) * 1994-09-09 1999-05-25 Hitachi, Ltd. Translation lookaside buffer supporting multiple page sizes
US5918250A (en) * 1995-05-05 1999-06-29 Intel Corporation Method and apparatus for preloading default address translation attributes
US5918251A (en) * 1996-12-23 1999-06-29 Intel Corporation Method and apparatus for preloading different default address translation attributes
US5956756A (en) * 1993-09-08 1999-09-21 Sun Microsystems, Inc. Virtual address to physical address translation of pages with unknown and variable sizes
US5991862A (en) * 1996-12-30 1999-11-23 Sun Microsystems, Inc. Modified indirect addressing for file system
US6006314A (en) * 1995-01-18 1999-12-21 Nec Corporation Image processing system, storage device therefor and accessing method thereof
US6026476A (en) * 1996-03-19 2000-02-15 Intel Corporation Fast fully associative translation lookaside buffer
US6069638A (en) * 1997-06-25 2000-05-30 Micron Electronics, Inc. System for accelerated graphics port address remapping interface to main memory
US6092172A (en) * 1996-10-16 2000-07-18 Hitachi, Ltd. Data processor and data processing system having two translation lookaside buffers
US6108733A (en) * 1998-01-20 2000-08-22 Micron Technology, Inc. Method for extending the available number of configuration registers
US6112285A (en) * 1997-09-23 2000-08-29 Silicon Graphics, Inc. Method, system and computer program product for virtual memory support for managing translation look aside buffers with multiple page size support
US6119213A (en) * 1995-06-07 2000-09-12 Discovision Associates Method for addressing data having variable data width using a fixed number of bits for address and width defining fields
US6157398A (en) * 1997-12-30 2000-12-05 Micron Technology, Inc. Method of implementing an accelerated graphics port for a multiple memory controller computer system
US6182089B1 (en) 1997-09-23 2001-01-30 Silicon Graphics, Inc. Method, system and computer program product for dynamically allocating large memory pages of different sizes
US6226730B1 (en) * 1998-06-05 2001-05-01 Intel Corporation Achieving page hit memory cycles on a virtual address reference
US6243775B1 (en) 1998-01-20 2001-06-05 Micron Technology, Inc. System for extending the available number of configuration registers
US6249853B1 (en) 1997-06-25 2001-06-19 Micron Electronics, Inc. GART and PTES defined by configuration registers
US6252612B1 (en) 1997-12-30 2001-06-26 Micron Electronics, Inc. Accelerated graphics port for multiple memory controller computer system
US6272576B1 (en) 1998-01-20 2001-08-07 Micron Technology, Inc. Method for extending the available number of configuration registers
US6282602B1 (en) 1998-06-30 2001-08-28 Emc Corporation Method and apparatus for manipulating logical objects in a data storage system
US6282625B1 (en) 1997-06-25 2001-08-28 Micron Electronics, Inc. GART and PTES defined by configuration registers
US6329985B1 (en) * 1998-06-30 2001-12-11 Emc Corporation Method and apparatus for graphically displaying mapping of a logical object
US6366996B1 (en) 2000-01-24 2002-04-02 Pmc-Sierra, Inc. Page memory management in non time critical data buffering applications
US6393540B1 (en) 1998-06-30 2002-05-21 Emc Corporation Moving a logical object from a set of source locations to a set of destination locations using a single command
US6446187B1 (en) * 2000-02-19 2002-09-03 Hewlett-Packard Company Virtual address bypassing using local page mask
US6473842B1 (en) * 1999-01-04 2002-10-29 Nec Corporation Virtual memory managing system for managing swap-outs by page units and a batch swap-out by task units
US6480950B1 (en) * 2000-01-24 2002-11-12 Oracle International Corporation Software paging system
US6493812B1 (en) * 1999-12-17 2002-12-10 Hewlett-Packard Company Apparatus and method for virtual address aliasing and multiple page size support in a computer system having a prevalidated cache
US6510499B1 (en) * 2000-06-22 2003-01-21 International Business Machines Corporation Method, apparatus, and article of manufacture for providing access to data stored in compressed files
US6542909B1 (en) 1998-06-30 2003-04-01 Emc Corporation System for determining mapping of logical objects in a computer system
US6549997B2 (en) * 2001-03-16 2003-04-15 Fujitsu Limited Dynamic variable page size translation of addresses
US6598050B1 (en) * 2000-02-11 2003-07-22 Integrated Device Technology, Inc. Apparatus and method for limited data sharing in a multi-tasking system
US20030196065A1 (en) * 2000-04-07 2003-10-16 Ronny Ronen Method for optimized representation of page table entries
US6684304B2 (en) * 1999-01-29 2004-01-27 Micron Technology, Inc. Method to access memory based on a programmable page limit
US6715057B1 (en) * 2000-08-31 2004-03-30 Hewlett-Packard Development Company, L.P. Efficient translation lookaside buffer miss processing in computer systems with a large range of page sizes
US20040133762A1 (en) * 2003-01-06 2004-07-08 Rui-Fu Chao Linear access window
US20040160448A1 (en) * 1997-12-30 2004-08-19 Joseph Jeddeloh Accelerated graphics port for a multiple memory controller computer system
US6801993B2 (en) 2001-09-28 2004-10-05 International Business Machines Corporation Table offset for shortening translation tables from their beginnings
US6851038B1 (en) 2000-05-26 2005-02-01 Koninklijke Philips Electronics N.V. Background fetching of translation lookaside buffer (TLB) entries
US20050027962A1 (en) * 2003-07-31 2005-02-03 David Zhang System and method for encoding page size information
US20050027961A1 (en) * 2003-07-31 2005-02-03 David Zhang System and method for resolving virtual addresses using a page size tag
US20050044312A1 (en) * 1998-06-30 2005-02-24 Blumenau Steven M. Method and apparatus for initializing logical objects in a data storage system
US7133951B1 (en) 2000-02-29 2006-11-07 Bourekas Philip A Alternate set of registers to service critical interrupts and operating system traps
US20070061546A1 (en) * 2005-09-09 2007-03-15 International Business Machines Corporation Compressibility checking avoidance
US20070156782A1 (en) * 2006-01-05 2007-07-05 Samsung Electronics Co., Ltd. System and method for managing log information
US7278008B1 (en) 2004-01-30 2007-10-02 Nvidia Corporation Virtual address translation system with caching of variable-range translation clusters
US7290116B1 (en) 2004-06-30 2007-10-30 Sun Microsystems, Inc. Level 2 cache index hashing to avoid hot spots
US7296139B1 (en) 2004-01-30 2007-11-13 Nvidia Corporation In-memory table structure for virtual address translation system with translation units of variable range size
US20080028181A1 (en) * 2006-07-31 2008-01-31 Nvidia Corporation Dedicated mechanism for page mapping in a gpu
US7334108B1 (en) * 2004-01-30 2008-02-19 Nvidia Corporation Multi-client virtual address translation system with translation units of variable-range size
US7366829B1 (en) 2004-06-30 2008-04-29 Sun Microsystems, Inc. TLB tag parity checking without CAM read
US7383294B1 (en) 1998-06-30 2008-06-03 Emc Corporation System for determining the mapping of logical objects in a data storage system
US7418582B1 (en) 2004-05-13 2008-08-26 Sun Microsystems, Inc. Versatile register file design for a multi-threaded processor utilizing different modes and register windows
US20080276067A1 (en) * 2007-05-01 2008-11-06 Via Technologies, Inc. Method and Apparatus for Page Table Pre-Fetching in Zero Frame Display Channel
WO2008155825A1 (en) 2007-06-19 2008-12-24 Fujitsu Limited Operation processing apparatus and operation processing method
US7509484B1 (en) 2004-06-30 2009-03-24 Sun Microsystems, Inc. Handling cache misses by selectively flushing the pipeline
US7543132B1 (en) 2004-06-30 2009-06-02 Sun Microsystems, Inc. Optimizing hardware TLB reload performance in a highly-threaded processor with multiple page sizes
US7571284B1 (en) 2004-06-30 2009-08-04 Sun Microsystems, Inc. Out-of-order memory transactions in a fine-grain multithreaded/multi-core processor
US20100011176A1 (en) * 2008-07-11 2010-01-14 Burkey Todd R Performance of binary bulk IO operations on virtual disks by interleaving
US7702757B2 (en) 2004-04-07 2010-04-20 Xiotech Corporation Method, apparatus and program storage device for providing control to a networked storage architecture
US20100106936A1 (en) * 2007-06-20 2010-04-29 Fujitsu Limited Calculator and TLB control method
US7716452B1 (en) 1996-08-22 2010-05-11 Kelly Edmund J Translated memory protection apparatus for an advanced microprocessor
US7730330B1 (en) 2000-06-16 2010-06-01 Marc Fleischmann System and method for saving and restoring a processor state without executing any instructions from a first instruction set
US20100228944A1 (en) * 2009-03-04 2010-09-09 Qualcomm Incorporated Apparatus and Method to Translate Virtual Addresses to Physical Addresses in a Base Plus Offset Addressing Mode
US20110283040A1 (en) * 2010-05-13 2011-11-17 International Business Machines Corporation Multiple Page Size Segment Encoding
US20130080735A1 (en) * 2011-09-26 2013-03-28 Fujitsu Limited Address translation device, processing device and control method of processing device
US20130339652A1 (en) * 2012-06-14 2013-12-19 International Business Machines Corporation Radix Table Translation of Memory
US8862859B2 (en) 2010-05-07 2014-10-14 International Business Machines Corporation Efficient support of multiple page size segments
US9086988B2 (en) 2012-06-14 2015-07-21 International Business Machines Corporation Identification and consolidation of page table entries
US9740628B2 (en) 2012-06-14 2017-08-22 International Business Machines Corporation Page table entry consolidation
CN108139981A (en) * 2016-08-11 2018-06-08 华为技术有限公司 The access method and processing chip of list item in a kind of page table cache TLB
US10320798B2 (en) 2013-02-20 2019-06-11 Varonis Systems, Inc. Systems and methodologies for controlling access to a file system
US10489303B2 (en) * 2016-03-10 2019-11-26 Arm Limited Multi-range lookup in translation lookaside buffer
US11175924B2 (en) * 2017-10-06 2021-11-16 International Business Machines Corporation Load-store unit with partitioned reorder queues with single cam port

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4356549A (en) * 1980-04-02 1982-10-26 Control Data Corporation System page table apparatus
US4731740A (en) * 1984-06-30 1988-03-15 Kabushiki Kaisha Toshiba Translation lookaside buffer control system in computer or virtual memory control scheme
US4774653A (en) * 1985-08-07 1988-09-27 Hewlett-Packard Company Hybrid hardware/software method and apparatus for virtual memory address translation using primary and secondary translation buffers
US4992936A (en) * 1987-11-11 1991-02-12 Hitachi, Ltd. Address translation method and apparatus therefor
US5133058A (en) * 1989-09-18 1992-07-21 Sun Microsystems, Inc. Page-tagging translation look-aside buffer for a computer memory system
US5263140A (en) * 1991-01-23 1993-11-16 Silicon Graphics, Inc. Variable page size per entry translation look-aside buffer

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4356549A (en) * 1980-04-02 1982-10-26 Control Data Corporation System page table apparatus
US4731740A (en) * 1984-06-30 1988-03-15 Kabushiki Kaisha Toshiba Translation lookaside buffer control system in computer or virtual memory control scheme
US4774653A (en) * 1985-08-07 1988-09-27 Hewlett-Packard Company Hybrid hardware/software method and apparatus for virtual memory address translation using primary and secondary translation buffers
US4992936A (en) * 1987-11-11 1991-02-12 Hitachi, Ltd. Address translation method and apparatus therefor
US5133058A (en) * 1989-09-18 1992-07-21 Sun Microsystems, Inc. Page-tagging translation look-aside buffer for a computer memory system
US5263140A (en) * 1991-01-23 1993-11-16 Silicon Graphics, Inc. Variable page size per entry translation look-aside buffer

Cited By (133)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5712998A (en) * 1993-07-13 1998-01-27 Intel Corporation Fast fully associative translation lookaside buffer with the ability to store and manage information pertaining to at least two different page sizes
US5956756A (en) * 1993-09-08 1999-09-21 Sun Microsystems, Inc. Virtual address to physical address translation of pages with unknown and variable sizes
US5907867A (en) * 1994-09-09 1999-05-25 Hitachi, Ltd. Translation lookaside buffer supporting multiple page sizes
US5796978A (en) * 1994-09-09 1998-08-18 Hitachi, Ltd. Data processor having an address translation buffer operable with variable page sizes
US5717885A (en) * 1994-09-27 1998-02-10 Hewlett-Packard Company TLB organization with variable page size mapping and victim-caching
US5845331A (en) * 1994-09-28 1998-12-01 Massachusetts Institute Of Technology Memory system including guarded pointers
US6003123A (en) * 1994-09-28 1999-12-14 Massachusetts Institute Of Technology Memory system with global address translation
US6006314A (en) * 1995-01-18 1999-12-21 Nec Corporation Image processing system, storage device therefor and accessing method thereof
US5752275A (en) * 1995-03-31 1998-05-12 Intel Corporation Translation look-aside buffer including a single page size translation unit
US5918250A (en) * 1995-05-05 1999-06-29 Intel Corporation Method and apparatus for preloading default address translation attributes
US6119213A (en) * 1995-06-07 2000-09-12 Discovision Associates Method for addressing data having variable data width using a fixed number of bits for address and width defining fields
US6026476A (en) * 1996-03-19 2000-02-15 Intel Corporation Fast fully associative translation lookaside buffer
WO1997039407A1 (en) * 1996-04-16 1997-10-23 Bull Hn Information Systems Inc. Mechanism for managing allocation of virtual memory buffers to virtual processes on a least recently used basis
US5946716A (en) * 1996-05-30 1999-08-31 Hewlett-Packard Company Sectored virtual memory management system and translation look-aside buffer (TLB) for the same
EP0810527A1 (en) * 1996-05-30 1997-12-03 Hewlett-Packard Company A sectored virtual memory management system and translation look-aside buffer (TLB) for the same
US5765220A (en) * 1996-06-18 1998-06-09 Hewlett-Packard Company Apparatus and method to reduce instruction address storage in a super-scaler processor
US5832205A (en) * 1996-08-20 1998-11-03 Transmeta Corporation Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed
WO1999008188A1 (en) * 1996-08-20 1999-02-18 Transmeta Corporation A memory controller for detecting a failure of speculation of a component being addressed
US7840776B1 (en) 1996-08-22 2010-11-23 Kelly Edmund J Translated memory protection apparatus for an advanced microprocessor
US8495337B2 (en) 1996-08-22 2013-07-23 Edmund Kelly Translated memory protection
US8719544B2 (en) 1996-08-22 2014-05-06 Edmund J. Kelly Translated memory protection apparatus for an advanced microprocessor
US7716452B1 (en) 1996-08-22 2010-05-11 Kelly Edmund J Translated memory protection apparatus for an advanced microprocessor
US20100205413A1 (en) * 1996-08-22 2010-08-12 Kelly Edmund J Translated memory protection
US8055877B1 (en) 1996-08-22 2011-11-08 Kelly Edmund J Translated memory protection apparatus for an advanced microprocessor
US6532528B1 (en) 1996-10-16 2003-03-11 Hitachi, Ltd. Data processor and data processor system having multiple modes of address indexing and operation
US6092172A (en) * 1996-10-16 2000-07-18 Hitachi, Ltd. Data processor and data processing system having two translation lookaside buffers
US5781922A (en) * 1996-11-19 1998-07-14 International Business Machines Corporation Page boundary caches
US5918251A (en) * 1996-12-23 1999-06-29 Intel Corporation Method and apparatus for preloading different default address translation attributes
US5991862A (en) * 1996-12-30 1999-11-23 Sun Microsystems, Inc. Modified indirect addressing for file system
US5852607A (en) * 1997-02-26 1998-12-22 Cisco Technology, Inc. Addressing mechanism for multiple look-up tables
US6418523B2 (en) 1997-06-25 2002-07-09 Micron Electronics, Inc. Apparatus comprising a translation lookaside buffer for graphics address remapping of virtual addresses
US6249853B1 (en) 1997-06-25 2001-06-19 Micron Electronics, Inc. GART and PTES defined by configuration registers
US6069638A (en) * 1997-06-25 2000-05-30 Micron Electronics, Inc. System for accelerated graphics port address remapping interface to main memory
US6282625B1 (en) 1997-06-25 2001-08-28 Micron Electronics, Inc. GART and PTES defined by configuration registers
US6182089B1 (en) 1997-09-23 2001-01-30 Silicon Graphics, Inc. Method, system and computer program product for dynamically allocating large memory pages of different sizes
US6112285A (en) * 1997-09-23 2000-08-29 Silicon Graphics, Inc. Method, system and computer program product for virtual memory support for managing translation look aside buffers with multiple page size support
US7777752B2 (en) 1997-12-30 2010-08-17 Round Rock Research, Llc Method of implementing an accelerated graphics port for a multiple memory controller computer system
US6252612B1 (en) 1997-12-30 2001-06-26 Micron Electronics, Inc. Accelerated graphics port for multiple memory controller computer system
US6157398A (en) * 1997-12-30 2000-12-05 Micron Technology, Inc. Method of implementing an accelerated graphics port for a multiple memory controller computer system
US6717582B2 (en) 1997-12-30 2004-04-06 Micron Technology, Inc. Accelerated graphics port for a multiple memory controller computer system
US7071946B2 (en) 1997-12-30 2006-07-04 Micron Technology, Inc. Accelerated graphics port for a multiple memory controller computer system
US6947050B2 (en) 1997-12-30 2005-09-20 Micron Technology Inc. Method of implementing an accelerated graphics/port for a multiple memory controller computer system
US20050001847A1 (en) * 1997-12-30 2005-01-06 Joseph Jeddeloh Method of implementing an accelerated graphics/port for a multiple memory controller computer system
US20040160448A1 (en) * 1997-12-30 2004-08-19 Joseph Jeddeloh Accelerated graphics port for a multiple memory controller computer system
US8564602B2 (en) 1997-12-30 2013-10-22 Round Rock Research, Llc Method of implementing an accelerated graphics port for a multiple memory controller computer system
US6741254B1 (en) 1997-12-30 2004-05-25 Micron Technology, Inc. Method of implementing an accelerated graphics port for a multiple memory controller computer system
US6901466B2 (en) 1998-01-20 2005-05-31 Micron Technology, Inc. Apparatus for extending the available number of configuration registers
US6272576B1 (en) 1998-01-20 2001-08-07 Micron Technology, Inc. Method for extending the available number of configuration registers
US6108733A (en) * 1998-01-20 2000-08-22 Micron Technology, Inc. Method for extending the available number of configuration registers
US6243775B1 (en) 1998-01-20 2001-06-05 Micron Technology, Inc. System for extending the available number of configuration registers
US6226730B1 (en) * 1998-06-05 2001-05-01 Intel Corporation Achieving page hit memory cycles on a virtual address reference
US20050044312A1 (en) * 1998-06-30 2005-02-24 Blumenau Steven M. Method and apparatus for initializing logical objects in a data storage system
US7383294B1 (en) 1998-06-30 2008-06-03 Emc Corporation System for determining the mapping of logical objects in a data storage system
US20030130986A1 (en) * 1998-06-30 2003-07-10 Tamer Philip E. System for determining the mapping of logical objects in a data storage system
US6393540B1 (en) 1998-06-30 2002-05-21 Emc Corporation Moving a logical object from a set of source locations to a set of destination locations using a single command
US6542909B1 (en) 1998-06-30 2003-04-01 Emc Corporation System for determining mapping of logical objects in a computer system
US7127556B2 (en) 1998-06-30 2006-10-24 Emc Corporation Method and apparatus for initializing logical objects in a data storage system
US6329985B1 (en) * 1998-06-30 2001-12-11 Emc Corporation Method and apparatus for graphically displaying mapping of a logical object
US6938059B2 (en) 1998-06-30 2005-08-30 Emc Corporation System for determining the mapping of logical objects in a data storage system
US6282602B1 (en) 1998-06-30 2001-08-28 Emc Corporation Method and apparatus for manipulating logical objects in a data storage system
US6883063B2 (en) 1998-06-30 2005-04-19 Emc Corporation Method and apparatus for initializing logical objects in a data storage system
US6473842B1 (en) * 1999-01-04 2002-10-29 Nec Corporation Virtual memory managing system for managing swap-outs by page units and a batch swap-out by task units
US6684304B2 (en) * 1999-01-29 2004-01-27 Micron Technology, Inc. Method to access memory based on a programmable page limit
US6493812B1 (en) * 1999-12-17 2002-12-10 Hewlett-Packard Company Apparatus and method for virtual address aliasing and multiple page size support in a computer system having a prevalidated cache
US6480950B1 (en) * 2000-01-24 2002-11-12 Oracle International Corporation Software paging system
US6366996B1 (en) 2000-01-24 2002-04-02 Pmc-Sierra, Inc. Page memory management in non time critical data buffering applications
US6598050B1 (en) * 2000-02-11 2003-07-22 Integrated Device Technology, Inc. Apparatus and method for limited data sharing in a multi-tasking system
US6446187B1 (en) * 2000-02-19 2002-09-03 Hewlett-Packard Company Virtual address bypassing using local page mask
US7133951B1 (en) 2000-02-29 2006-11-07 Bourekas Philip A Alternate set of registers to service critical interrupts and operating system traps
US6678816B2 (en) * 2000-04-07 2004-01-13 Intel Corporation Method for optimized representation of page table entries
US6647482B1 (en) * 2000-04-07 2003-11-11 Intel Corporation Method for optimized representation of page table entries
US20030196065A1 (en) * 2000-04-07 2003-10-16 Ronny Ronen Method for optimized representation of page table entries
US6851038B1 (en) 2000-05-26 2005-02-01 Koninklijke Philips Electronics N.V. Background fetching of translation lookaside buffer (TLB) entries
US7730330B1 (en) 2000-06-16 2010-06-01 Marc Fleischmann System and method for saving and restoring a processor state without executing any instructions from a first instruction set
US8140872B1 (en) 2000-06-16 2012-03-20 Marc Fleischmann Restoring processor context in response to processor power-up
US6510499B1 (en) * 2000-06-22 2003-01-21 International Business Machines Corporation Method, apparatus, and article of manufacture for providing access to data stored in compressed files
US6715057B1 (en) * 2000-08-31 2004-03-30 Hewlett-Packard Development Company, L.P. Efficient translation lookaside buffer miss processing in computer systems with a large range of page sizes
US6549997B2 (en) * 2001-03-16 2003-04-15 Fujitsu Limited Dynamic variable page size translation of addresses
US6801993B2 (en) 2001-09-28 2004-10-05 International Business Machines Corporation Table offset for shortening translation tables from their beginnings
US20040133762A1 (en) * 2003-01-06 2004-07-08 Rui-Fu Chao Linear access window
US20050027962A1 (en) * 2003-07-31 2005-02-03 David Zhang System and method for encoding page size information
US20050027961A1 (en) * 2003-07-31 2005-02-03 David Zhang System and method for resolving virtual addresses using a page size tag
US7089398B2 (en) * 2003-07-31 2006-08-08 Silicon Graphics, Inc. Address translation using a page size tag
US7100018B2 (en) * 2003-07-31 2006-08-29 Silicon Graphics, Inc. System and method for encoding page size information
US7278008B1 (en) 2004-01-30 2007-10-02 Nvidia Corporation Virtual address translation system with caching of variable-range translation clusters
US7334108B1 (en) * 2004-01-30 2008-02-19 Nvidia Corporation Multi-client virtual address translation system with translation units of variable-range size
US7797510B1 (en) 2004-01-30 2010-09-14 Nvidia Corporation Memory management for virtual address space with translation units of variable range size
US7296139B1 (en) 2004-01-30 2007-11-13 Nvidia Corporation In-memory table structure for virtual address translation system with translation units of variable range size
US7702757B2 (en) 2004-04-07 2010-04-20 Xiotech Corporation Method, apparatus and program storage device for providing control to a networked storage architecture
US7418582B1 (en) 2004-05-13 2008-08-26 Sun Microsystems, Inc. Versatile register file design for a multi-threaded processor utilizing different modes and register windows
US7509484B1 (en) 2004-06-30 2009-03-24 Sun Microsystems, Inc. Handling cache misses by selectively flushing the pipeline
US7290116B1 (en) 2004-06-30 2007-10-30 Sun Microsystems, Inc. Level 2 cache index hashing to avoid hot spots
US7571284B1 (en) 2004-06-30 2009-08-04 Sun Microsystems, Inc. Out-of-order memory transactions in a fine-grain multithreaded/multi-core processor
US7543132B1 (en) 2004-06-30 2009-06-02 Sun Microsystems, Inc. Optimizing hardware TLB reload performance in a highly-threaded processor with multiple page sizes
US7366829B1 (en) 2004-06-30 2008-04-29 Sun Microsystems, Inc. TLB tag parity checking without CAM read
US20070106876A1 (en) * 2005-09-09 2007-05-10 International Business Machines Corporation Keymap order compression
US20070061546A1 (en) * 2005-09-09 2007-03-15 International Business Machines Corporation Compressibility checking avoidance
US7783855B2 (en) 2005-09-09 2010-08-24 International Business Machines Corporation Keymap order compression
US7840774B2 (en) * 2005-09-09 2010-11-23 International Business Machines Corporation Compressibility checking avoidance
US20070156782A1 (en) * 2006-01-05 2007-07-05 Samsung Electronics Co., Ltd. System and method for managing log information
US7720816B2 (en) * 2006-01-05 2010-05-18 Samsung Electronics Co., Ltd. System and method for managing log information
US20080028181A1 (en) * 2006-07-31 2008-01-31 Nvidia Corporation Dedicated mechanism for page mapping in a gpu
US20080276067A1 (en) * 2007-05-01 2008-11-06 Via Technologies, Inc. Method and Apparatus for Page Table Pre-Fetching in Zero Frame Display Channel
EP2159706A1 (en) * 2007-06-19 2010-03-03 Fujitsu Limited Operation processing apparatus and operation processing method
WO2008155825A1 (en) 2007-06-19 2008-12-24 Fujitsu Limited Operation processing apparatus and operation processing method
US8296518B2 (en) 2007-06-19 2012-10-23 Fujitsu Limited Arithmetic processing apparatus and method
EP2159706A4 (en) * 2007-06-19 2010-11-03 Fujitsu Ltd Operation processing apparatus and operation processing method
US20100070708A1 (en) * 2007-06-19 2010-03-18 Fujitsu Limited Arithmetic processing apparatus and method
US20100106936A1 (en) * 2007-06-20 2010-04-29 Fujitsu Limited Calculator and TLB control method
US8190853B2 (en) * 2007-06-20 2012-05-29 Fujitsu Limited Calculator and TLB control method
US20100011176A1 (en) * 2008-07-11 2010-01-14 Burkey Todd R Performance of binary bulk IO operations on virtual disks by interleaving
WO2010102134A1 (en) * 2009-03-04 2010-09-10 Qualcomm Incorporated Apparatus and method to translate virtual addresses to physical addresses in a base plus offset addressing mode
US20100228944A1 (en) * 2009-03-04 2010-09-09 Qualcomm Incorporated Apparatus and Method to Translate Virtual Addresses to Physical Addresses in a Base Plus Offset Addressing Mode
US8195916B2 (en) 2009-03-04 2012-06-05 Qualcomm Incorporated Apparatus and method to translate virtual addresses to physical addresses in a base plus offset addressing mode
US8862859B2 (en) 2010-05-07 2014-10-14 International Business Machines Corporation Efficient support of multiple page size segments
US8745307B2 (en) * 2010-05-13 2014-06-03 International Business Machines Corporation Multiple page size segment encoding
US20110283040A1 (en) * 2010-05-13 2011-11-17 International Business Machines Corporation Multiple Page Size Segment Encoding
US8914611B2 (en) * 2011-09-26 2014-12-16 Fujitsu Limited Address translation device, processing device and control method of processing device
US20130080735A1 (en) * 2011-09-26 2013-03-28 Fujitsu Limited Address translation device, processing device and control method of processing device
US9753860B2 (en) 2012-06-14 2017-09-05 International Business Machines Corporation Page table entry consolidation
US9811472B2 (en) * 2012-06-14 2017-11-07 International Business Machines Corporation Radix table translation of memory
US9086988B2 (en) 2012-06-14 2015-07-21 International Business Machines Corporation Identification and consolidation of page table entries
US9092359B2 (en) 2012-06-14 2015-07-28 International Business Machines Corporation Identification and consolidation of page table entries
US9740628B2 (en) 2012-06-14 2017-08-22 International Business Machines Corporation Page table entry consolidation
US20130339654A1 (en) * 2012-06-14 2013-12-19 International Business Machines Corporation Radix Table Translation of Memory
US9785569B2 (en) * 2012-06-14 2017-10-10 International Business Machines Corporation Radix table translation of memory
US20130339652A1 (en) * 2012-06-14 2013-12-19 International Business Machines Corporation Radix Table Translation of Memory
US10320798B2 (en) 2013-02-20 2019-06-11 Varonis Systems, Inc. Systems and methodologies for controlling access to a file system
US10489303B2 (en) * 2016-03-10 2019-11-26 Arm Limited Multi-range lookup in translation lookaside buffer
CN108139981A (en) * 2016-08-11 2018-06-08 华为技术有限公司 The access method and processing chip of list item in a kind of page table cache TLB
US10740247B2 (en) * 2016-08-11 2020-08-11 Huawei Technologies Co., Ltd. Method for accessing entry in translation lookaside buffer TLB and processing chip
US11175924B2 (en) * 2017-10-06 2021-11-16 International Business Machines Corporation Load-store unit with partitioned reorder queues with single cam port
US11175925B2 (en) * 2017-10-06 2021-11-16 International Business Machines Corporation Load-store unit with partitioned reorder queues with single cam port

Similar Documents

Publication Publication Date Title
US5465337A (en) Method and apparatus for a memory management unit supporting multiple page sizes
KR960001946B1 (en) Translation lookaside buffer
US5724538A (en) Computer memory address control apparatus utilizing hashed address tags in page tables which are compared to a combined address tag and index which are longer than the basic data width of the associated computer
US6088780A (en) Page table walker that uses at least one of a default page size and a page size selected for a virtual address space to position a sliding field in a virtual address
US6393544B1 (en) Method and apparatus for calculating a page table index from a virtual address
KR920005280B1 (en) High speed cache system
US6012132A (en) Method and apparatus for implementing a page table walker that uses a sliding field in the virtual addresses to identify entries in a page table
US6014732A (en) Cache memory with reduced access time
US5058003A (en) Virtual storage dynamic address translation mechanism for multiple-sized pages
US5265227A (en) Parallel protection checking in an address translation look-aside buffer
US4279014A (en) Arrangement for converting virtual addresses into physical addresses in a data processing system
JPH04319747A (en) Address converting mechanism
EP0506236A1 (en) Address translation mechanism
US5060137A (en) Explicit instructions for control of translation lookaside buffers
US5241638A (en) Dual cache memory
JPH04232551A (en) Method and apparatus for converting multiple virtaul addresses
JPH04352256A (en) Method and apparatus for saving memory space
JPH08212136A (en) Method and apparatus for efficient sharing of virtual memoryconversion processing
CA2058259C (en) Apparatus for increasing the number of hits in a translation lookaside buffer
US4821171A (en) System of selective purging of address translation in computer memories
US5502829A (en) Apparatus for obtaining data from a translation memory based on carry signal from adder
US5319761A (en) Directory look-aside table for a virtual storage system including means for minimizing synonym entries
JPH07281948A (en) Memory controller
EP0212129A2 (en) Method of updating information in a translation lookaside buffer
US5408674A (en) System for checking the validity of two byte operation code by mapping two byte operation codes into control memory in order to reduce memory size

Legal Events

Date Code Title Description
STCF Information on status: patent grant

Free format text: PATENTED CASE

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FPAY Fee payment

Year of fee payment: 4

FEPP Fee payment procedure

Free format text: PAYER NUMBER DE-ASSIGNED (ORIGINAL EVENT CODE: RMPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FPAY Fee payment

Year of fee payment: 8

REMI Maintenance fee reminder mailed
FPAY Fee payment

Year of fee payment: 12