WO2006099633A2 - Method and system for optimizing translation lookaside buffer entries - Google Patents

Method and system for optimizing translation lookaside buffer entries Download PDF

Info

Publication number
WO2006099633A2
WO2006099633A2 PCT/US2006/010087 US2006010087W WO2006099633A2 WO 2006099633 A2 WO2006099633 A2 WO 2006099633A2 US 2006010087 W US2006010087 W US 2006010087W WO 2006099633 A2 WO2006099633 A2 WO 2006099633A2
Authority
WO
WIPO (PCT)
Prior art keywords
virtual memory
block
memory
page address
contiguous
Prior art date
Application number
PCT/US2006/010087
Other languages
French (fr)
Other versions
WO2006099633A3 (en
Inventor
Thomas Andrew Sartorius
Jeffrey Todd Bridges
James Norris Dieffenderfer
Victor Roberts Augsburg
Original Assignee
Qualcomm Incorporated
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 Qualcomm Incorporated filed Critical Qualcomm Incorporated
Priority to MX2007011359A priority Critical patent/MX2007011359A/en
Priority to EP06739038A priority patent/EP1866773A2/en
Priority to JP2008502151A priority patent/JP2008533620A/en
Publication of WO2006099633A2 publication Critical patent/WO2006099633A2/en
Publication of WO2006099633A3 publication Critical patent/WO2006099633A3/en
Priority to IL185963A priority patent/IL185963A0/en

Links

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
    • 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

  • the present disclosure relates generally to translation lookaside buffers, and more specifically, to methods and systems for optimizing translation lookaside buffer entries.
  • Virtual memory is a technique that abstracts memory into a large, uniform array of virtual storage, which exceeds memory readily available to the processor. This separation allows a large virtual memory to be provided for programmers when only a smaller physical memory, commonly a semiconductor memory (such as but not limited to RAM or DRAM) hereinafter referred to simply as "memory”, is available, thereby freeing programmers from concern over memory storage limitations.
  • a semiconductor memory such as but not limited to RAM or DRAM
  • memory memory
  • numerous applications can be launched by loading portions of them from higher latency hard drive storage to lower latency memory even though the lower latency memory is not large enough to hold them all. This may be achieved by identifying portions of memory that have not been used recently and copying them back onto the hard drive. This frees up space in memory to load new portions of memory for more immediate use.
  • a central processing unit uses virtual memory to execute programs.
  • a virtual address is mapped to a corresponding physical address.
  • this mapping is performed by a translation lookaside buffer (“TLB”), which is nothing more than a memory that maps the most often used virtual memory page addresses to their corresponding physical memory page addresses.
  • TLB translation lookaside buffer
  • each TLB entry maps one page in memory to a virtual memory page address. This limits the number of addresses that can be represented by each TLB entry. Since maintaining a TLB requires system resources, it would be desirable to provide more efficient methods and systems for optimizing TLB entries by consolidating multiple contiguous page entries into a single entry.
  • a processing system includes a translation lookaside buffer (TLB) configured to map a contiguous block of virtual memory to physical memory, and provide a size attribute indicating the size of the contiguous block of virtual memory, and a processor configured to vary the size of the contiguous block of virtual memory and the corresponding physical memory, and vary the size attribute accordingly.
  • TLB translation lookaside buffer
  • the processing system includes a translation lookaside buffer (TLB) configured to store a plurality of entries, each of the entries mapping a contiguous block of virtual memory to physical memory, and each of the entries having a size attribute indicating the size of its respective block of virtual memory, and a processor configured to vary the size of the contiguous block of virtual memory and the corresponding physical memory for one of the entries, and wherein the processor is further configured to vary the size attribute for said one of the entries.
  • TLB translation lookaside buffer
  • a method of storing a plurality of entries in a translation lookaside buffer includes mapping a contiguous virtual memory block to physical memory, providing a size attribute indicating the size of the contiguous block of virtual memory, varying the size of the contiguous block of virtual memory and the corresponding physical memory, and varying the size attribute to reflect the change in the contiguous block of virtual memory and the corresponding physical memory.
  • TLB translation lookaside buffer
  • the method includes identifying a new block of virtual memory, locating an entry in the TLB having an existing block of virtual memory that is contiguous with the new block of virtual memory, the TLB entry containing a mapping between the existing block of virtual memory and physical memory, and consolidating the new and existing blocks of virtual memory, and their corresponding physical memory, in the TLB entry, the consolidation of the new and existing blocks of virtual memory further comprising adjusting a size attribute to reflect a change in the size from the existing block size of virtual memory to the consolidated block size of virtual memory.
  • FIG. 1 is a simplified block diagram illustrating a system for optimizing translation lookaside tables according to the present disclosure
  • FIG. 2 is a simplified schematic diagram showing a TLB entry according to the present disclosure.
  • FIG. 3 is a simplified schematic diagram showing a TLB entry and a proposed entry for use in an illustration according to the present disclosure.
  • FIG. 1 is a conceptual block diagram illustrating an example of a data processing system 100.
  • the data processing system 100 may be a stand-alone system, or alternatively embedded in a device such as a wired or wireless phone, Personal Digital Assistant (PDA), Personal Computer (PC), laptop, digital camera, game console, pager, modem, video conferencing equipment, or any other suitable device.
  • the data processing system 100 may include a processor 102, such as a microprocessor or other processing entity.
  • the processor 102 may be used as a platform for to run any number of applications including, by way of example, an operating system, a Web browser, an e-mail system, a word processor, as well as other software programs to support video, telephony, and the like.
  • the processing system 100 may also include memory 104, which holds the program instructions and data needed by the processor 102 to perform its functions.
  • the memory 104 may be implemented with Random Access Memory ("RAM") or other suitable memory, and may serve as the processor's main memory, a L2 cache, or a combination thereof.
  • Program instructions for the various programs launched by the processor 102 may be loaded from a non-volatile storage device 106, such as a hard drive, to memory 104.
  • a TLB 108 may be used to map memory page addresses from 106, which may comprise for exemplary purposes a non volatile storage device, to corresponding page addresses in memory 104.
  • the TLB may be a relatively small, high-speed cache that is integrated into the processor 102, but is shown separate from the processor 102 for illustration purposes.
  • the processor 102 searches the TLB 108 for a virtual memory page address. If the processor 102 finds the virtual memory page address in the TLB 108, a "TLB hit" has occurred. On a TLB hit, the processor 102 retrieves the corresponding physical memory page address from the TLB 108 and provides it to the memory 104 over an address bus 110.
  • the processor 102 can then access the contents of that address in memory 104 to perform either a read or write operation over a data bus 112. [0017] In the event that the processor cannot find the virtual memory page address in the TLB 108, a "TLB miss" has occurred.
  • TLB miss Various techniques for handling a TLB miss are well known in the art, and therefore, will not be discussed any further except to say that the processor 102 can invoke certain processing functions to determine the physical memory page address required for it to perform its current operation. Once it determines the physical memory page address, the processor can access memory 104, which may or may not require program instructions to be transferred between memory 104 and the non-volatile storage device 106. A new TLB entry may be created in the TLB 108 to handle future access to the same physical memory page address.
  • the processor 102 may be configured to dynamically manage the number of pages that can be stored in a single TLB entry.
  • each TLB entry 200 in the TLB 108 may include a virtual memory page address 202 and a physical memory page address 204.
  • the virtual memory page address 202 is mapped to the physical memory page address 204, which corresponds to a page in memory (not shown).
  • a size attribute 206 may be appended to the virtual memory page address 202. The size attribute 206 may be used to indicate the number of pages represented by each TLB entry.
  • the processor may be configured to adjust the size attribute for a given TLB entry on a dynamic basis. This may be achieved in a variety of ways.
  • the processor 102 invokes certain processing functions to determine the physical memory page address required for it to perform its current operation.
  • the processor 102 creates a new TLB entry, it first determines whether the proposed new entry is contiguous with an existing entry in the TLB 108. Two entries in the TLB 108 are said to be contiguous if both the virtual memory page addresses are contiguous and the physical memory page addresses are contiguous.
  • the processor 102 determines that contiguity exists with an existing TLB entry, then the two virtual memory pages and the two physical memory pages may be consolidated into a single entry in the TLB 108.
  • the size attribute 206 (see FIG. 2) may be increased to indicate that the virtual memory page address and the corresponding physical memory page address represents two pages in memory 104.
  • a new TLB entry may be created.
  • FIG. 3 shows an existing entry 300 in the TLB and a proposed new entry 302.
  • the existing entry 300 may include a size attribute, a virtual memory page address having a most-significant-bit portion (Xl) and a least-significant- bit (Yl), and a corresponding physical memory page address having a most-significant- bit portion (Al) and a least-significant-bit (Bl).
  • the size attribute is set to indicate that the TLB entry represents one page of memory.
  • Portion Xl is made up of bits 13-31 and portion Yl is made up of bit 12.
  • the proposed new entry 302 may include a virtual memory page address having a most-significant-bit portion (X2) and a least- significant-bit (Y2), and a corresponding physical memory page address having a most- significant-bit portion (A2) and a least-significant-bit (B2). It should be noted that, for both the existing entry 300 and the proposed entry 302, bits 0-11 correspond to the offset portion of the address and thus are not part of the entry.
  • the proposed entry 302 is checked for contiguity against the existing entry 300 in response to a TLB miss.
  • This may be achieved with a four step process.
  • the physical memory page addresses are checked for contiguity by comparing Al to A2, and Bl to B2.
  • the physical memory page addresses are also off by one least- significant-bit, and said to be contiguous in physical memory address space.
  • the virtual and physical memory page address of the existing entry and the proposed entry are then checked to ensure that the proposed entry's virtual and physical memory page addresses are both either higher than or lower than the existing entry's virtual and physical memory page addresses, respectively.
  • the existing and proposed entries are to be consolidated into one larger entry, the virtual and physical page address ranges covered by the larger entry are checked to ensure that both address ranges are aligned on the large size boundary. If all these conditions are met, then the existing and proposed entries can be consolidated into a single entry.
  • the two entries can be consolidated by merely increasing the size attribute to indicate that the consolidated TLB entry represent two pages in memory beginning at the virtual and physical memory page addresses of the original entry 300.
  • the two entries can be consolidated by writing the proposed virtual and physical memory page addresses over the existing entry and changing the size attribute to indicate that the consolidated TLB entry represent two pages in memory beginning at the virtual and physical memory page addresses of the new entry 302.
  • the existing and proposed entries could not be combined, because the resultant 8KB page would not start at a boundary that is aligned on an 8KB region. [0024] Consequently, assuming the contiguity check is satisfactory, the size attribute in the existing entry 300 is dynamically changed to 8KB.
  • the 8KB size is based on the fact that the existing page is 4KB and the new page is 4KB. Hence, consolidating or combining the new page and the existing page results in an 8KB page. As the foregoing example illustrates, if an existing page that is contiguous to a new page can be located in the TLB, the entry for the existing page can simply be modified and no separate entry need to be added to the TLB for the new page.
  • the modified (8KB) entry may need to have Yl and Bl both set to "0", if they did't already both "0". This is performed so that the modified entry correctly reflects the starting address of the new 8KB page (that is, the lower-numbered of the two contiguous 4KB pages).
  • bit 12 of the existing entry changes from being the least-significant bit of the virtual page address to effectively being the most-significant bit of the offset (not shown).
  • the offset is used to form the complete physical page address with which to access memory. The offset is not important in the translation or mapping process between virtual page address and physical page address.
  • the size attribute of the entry being 8KB (rather than 4KB) indicates that bit 12 is now part of the offset. As such, bit 12 of the virtual page address no longer needs to be considered part of the TLB entry and, hence, does not need to participate in the comparison against subsequent addresses to determine a match.
  • Some implementations can properly and automatically ignore this bit position, in both the virtual and the physical page address portions of the TLB entry, based upon the size attribute. Other implementations may require one or the other, or both, of these bit positions to reflect the lower-numbered page address (in other words, for them to be O's).
  • the foregoing can be extended to accommodate consolidation of larger page sizes.
  • the entry 300 now references an 8KB page (since two (2) contiguous 4KB pages have been consolidated).
  • the processor 102 (see FIG. 1) can be further configured to now search for an entry in the TLB 108 that references another 8K page that is contiguous to the 8K page referenced by the modified entry 300. If it is determined that there is another 8K page contiguous to the 8K page referenced by the modified entry 300, then the size attribute of one of the two existing entries can be modified to now reflect that the page size for that entry is 16K and the remaining entry can be eliminated.
  • a 16K page is now referenced by a single entry, as opposed to two (2) contiguous 8K pages referenced by two (2) different entries.
  • another existing 16K page that is contiguous to the newly consolidated 16K page can also be consolidated to form a 32K page that is referenced by a single entry.
  • the foregoing can be extended to consolidate pages into increasingly larger page sizes.
  • the processor 102 can also be configured to consolidate entries referencing pages with smaller page sizes to create an updated entry referencing a page with a desired page size.
  • the updated entry can then be consolidated with another entry that references a page having the same desired page size.
  • the entry 300 now references an 8K page.
  • the processor 102 can first consolidate two (2) contiguous 4KB pages to create an 8KB page referenced by a single entry.
  • the newly created 8KB page can now be further consolidated with the 8KB page referenced by the entry 300 to form a 16KB page referenced by a single entry.
  • the processor 102 can then consolidate four (4) contiguous 4KB pages to form another 16KB page referenced by another entry. Subsequently, the newly formed 16KB page can be consolidated with the previously formed 16KB page to form a 32KB page. Based on the disclosure and teachings provided herein, a person of ordinary skill in the art will understand how to expand the foregoing to optimize entries in the TLB 108 to cover other larger page sizes according to the present disclosure.
  • DSP digital signal processor
  • ASIC application specific integrated circuit
  • FPGA field programmable gate array
  • a general purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine.
  • a processor may also be implemented as a combination of computing components, e.g., a combination of a DSP and a microprocessor, a number of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.
  • a software module may reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art.
  • a storage medium may be coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

A system for optimizing translation lookaside buffer entries is provided. The system includes a translation lookaside buffer configured to store a number of entries, each entry having a size attribute, each entry referencing a corresponding page, and control logic configured to modify the size attribute of an existing entry in the translation lookaside buffer if a new page is contiguous with an existing page referenced by the existing entry. The existing entry after having had its size attribute modified references a consolidated page comprising the existing page and the new page.

Description

METHOD AND SYSTEM FOR OPTIMIZING TRANSLATION LOOKASIDE
BUFFER ENTRIES
BACKGROUND
Field
[0001] The present disclosure relates generally to translation lookaside buffers, and more specifically, to methods and systems for optimizing translation lookaside buffer entries.
Background
[0002] Many existing computer systems today utilize virtual memory. Virtual memory is a technique that abstracts memory into a large, uniform array of virtual storage, which exceeds memory readily available to the processor. This separation allows a large virtual memory to be provided for programmers when only a smaller physical memory, commonly a semiconductor memory (such as but not limited to RAM or DRAM) hereinafter referred to simply as "memory", is available, thereby freeing programmers from concern over memory storage limitations. As a result, numerous applications can be launched by loading portions of them from higher latency hard drive storage to lower latency memory even though the lower latency memory is not large enough to hold them all. This may be achieved by identifying portions of memory that have not been used recently and copying them back onto the hard drive. This frees up space in memory to load new portions of memory for more immediate use.
[0003] In many processing systems today, a central processing unit (CPU) uses virtual memory to execute programs. In such processing systems a virtual address is mapped to a corresponding physical address. Typically, this mapping is performed by a translation lookaside buffer ("TLB"), which is nothing more than a memory that maps the most often used virtual memory page addresses to their corresponding physical memory page addresses.
[0004] Commonly, each TLB entry maps one page in memory to a virtual memory page address. This limits the number of addresses that can be represented by each TLB entry. Since maintaining a TLB requires system resources, it would be desirable to provide more efficient methods and systems for optimizing TLB entries by consolidating multiple contiguous page entries into a single entry.
SUMMARY
[0005] A processing system is disclosed. The processing system includes a translation lookaside buffer (TLB) configured to map a contiguous block of virtual memory to physical memory, and provide a size attribute indicating the size of the contiguous block of virtual memory, and a processor configured to vary the size of the contiguous block of virtual memory and the corresponding physical memory, and vary the size attribute accordingly.
[0006] Another aspect of the processing system is disclosed. The processing system includes a translation lookaside buffer (TLB) configured to store a plurality of entries, each of the entries mapping a contiguous block of virtual memory to physical memory, and each of the entries having a size attribute indicating the size of its respective block of virtual memory, and a processor configured to vary the size of the contiguous block of virtual memory and the corresponding physical memory for one of the entries, and wherein the processor is further configured to vary the size attribute for said one of the entries.
[0007] A method of storing a plurality of entries in a translation lookaside buffer (TLB) is disclosed. The method includes mapping a contiguous virtual memory block to physical memory, providing a size attribute indicating the size of the contiguous block of virtual memory, varying the size of the contiguous block of virtual memory and the corresponding physical memory, and varying the size attribute to reflect the change in the contiguous block of virtual memory and the corresponding physical memory.
[0008] Another aspect of a method of storing a plurality of entries in a translation lookaside buffer (TLB) is disclosed. The method includes identifying a new block of virtual memory, locating an entry in the TLB having an existing block of virtual memory that is contiguous with the new block of virtual memory, the TLB entry containing a mapping between the existing block of virtual memory and physical memory, and consolidating the new and existing blocks of virtual memory, and their corresponding physical memory, in the TLB entry, the consolidation of the new and existing blocks of virtual memory further comprising adjusting a size attribute to reflect a change in the size from the existing block size of virtual memory to the consolidated block size of virtual memory.
[0009] It is understood that other embodiments of the present invention will become readily apparent to those skilled in the art from the following detailed description, wherein various embodiments of the invention are shown and described by way of illustration. As will be realized, the invention is capable of other and different embodiments and its several details are capable of modification in various other respects, all without departing from the spirit and scope of the present invention. Accordingly, the drawings and detailed description are to be regarded as illustrative in nature and not as restrictive.
BRIEF DESCRIPTION OF THE DRAWINGS
[0010] FIG. 1 is a simplified block diagram illustrating a system for optimizing translation lookaside tables according to the present disclosure;
[0011] FIG. 2 is a simplified schematic diagram showing a TLB entry according to the present disclosure; and
[0012] FIG. 3 is a simplified schematic diagram showing a TLB entry and a proposed entry for use in an illustration according to the present disclosure.
DETAILED DESCRIPTION
[0013] The detailed description set forth below in connection with the appended drawings is intended as a description of various embodiments of the present invention and is not intended to represent the only embodiments in which the present invention may be practiced. The detailed description includes specific details for the purpose of providing a thorough understanding of the present invention. However, it will be apparent to those skilled in the art that the present invention may be practiced without these specific details. In some instances, well-known structures and components are shown in block diagram form in order to avoid obscuring the concepts of the present invention.
[0014] FIG. 1 is a conceptual block diagram illustrating an example of a data processing system 100. The data processing system 100 may be a stand-alone system, or alternatively embedded in a device such as a wired or wireless phone, Personal Digital Assistant (PDA), Personal Computer (PC), laptop, digital camera, game console, pager, modem, video conferencing equipment, or any other suitable device. The data processing system 100 may include a processor 102, such as a microprocessor or other processing entity. The processor 102 may be used as a platform for to run any number of applications including, by way of example, an operating system, a Web browser, an e-mail system, a word processor, as well as other software programs to support video, telephony, and the like.
[0015] The processing system 100 may also include memory 104, which holds the program instructions and data needed by the processor 102 to perform its functions. The memory 104 may be implemented with Random Access Memory ("RAM") or other suitable memory, and may serve as the processor's main memory, a L2 cache, or a combination thereof. Program instructions for the various programs launched by the processor 102 may be loaded from a non-volatile storage device 106, such as a hard drive, to memory 104.
[0016] A TLB 108 may be used to map memory page addresses from 106, which may comprise for exemplary purposes a non volatile storage device, to corresponding page addresses in memory 104. The TLB may be a relatively small, high-speed cache that is integrated into the processor 102, but is shown separate from the processor 102 for illustration purposes. When the processor 102 needs to access memory 104, it searches the TLB 108 for a virtual memory page address. If the processor 102 finds the virtual memory page address in the TLB 108, a "TLB hit" has occurred. On a TLB hit, the processor 102 retrieves the corresponding physical memory page address from the TLB 108 and provides it to the memory 104 over an address bus 110. The processor 102 can then access the contents of that address in memory 104 to perform either a read or write operation over a data bus 112. [0017] In the event that the processor cannot find the virtual memory page address in the TLB 108, a "TLB miss" has occurred. Various techniques for handling a TLB miss are well known in the art, and therefore, will not be discussed any further except to say that the processor 102 can invoke certain processing functions to determine the physical memory page address required for it to perform its current operation. Once it determines the physical memory page address, the processor can access memory 104, which may or may not require program instructions to be transferred between memory 104 and the non-volatile storage device 106. A new TLB entry may be created in the TLB 108 to handle future access to the same physical memory page address.
[0018] The processor 102 may be configured to dynamically manage the number of pages that can be stored in a single TLB entry. As shown in FIG. 2, each TLB entry 200 in the TLB 108 may include a virtual memory page address 202 and a physical memory page address 204. As explained above, the virtual memory page address 202 is mapped to the physical memory page address 204, which corresponds to a page in memory (not shown). A size attribute 206 may be appended to the virtual memory page address 202. The size attribute 206 may be used to indicate the number of pages represented by each TLB entry.
[0019] In at least one embodiment of the data processing system, the processor may be configured to adjust the size attribute for a given TLB entry on a dynamic basis. This may be achieved in a variety of ways. Returning back to FIG. 1, when a TLB miss occurs, the processor 102 invokes certain processing functions to determine the physical memory page address required for it to perform its current operation. However, before the processor 102 creates a new TLB entry, it first determines whether the proposed new entry is contiguous with an existing entry in the TLB 108. Two entries in the TLB 108 are said to be contiguous if both the virtual memory page addresses are contiguous and the physical memory page addresses are contiguous. If the processor 102 determines that contiguity exists with an existing TLB entry, then the two virtual memory pages and the two physical memory pages may be consolidated into a single entry in the TLB 108. The size attribute 206 (see FIG. 2) may be increased to indicate that the virtual memory page address and the corresponding physical memory page address represents two pages in memory 104. Alternatively, if the processor 102 determines that contiguity does not exist with an existing TLB entry, a new TLB entry may be created. [0020] The following is an illustrative example showing how the processor 102 optimizes entries in the TLB 108. FIG. 3 shows an existing entry 300 in the TLB and a proposed new entry 302. The existing entry 300 may include a size attribute, a virtual memory page address having a most-significant-bit portion (Xl) and a least-significant- bit (Yl), and a corresponding physical memory page address having a most-significant- bit portion (Al) and a least-significant-bit (Bl). The size attribute is set to indicate that the TLB entry represents one page of memory. Portion Xl is made up of bits 13-31 and portion Yl is made up of bit 12. Similarly, the proposed new entry 302 may include a virtual memory page address having a most-significant-bit portion (X2) and a least- significant-bit (Y2), and a corresponding physical memory page address having a most- significant-bit portion (A2) and a least-significant-bit (B2). It should be noted that, for both the existing entry 300 and the proposed entry 302, bits 0-11 correspond to the offset portion of the address and thus are not part of the entry.
[0021] The processor determines whether the existing entry 300 and the proposed entry 302 can be optimized as follows. First, the virtual memory page addresses of the existing entry 300 and the proposed entry 302 are compared. If X1=X2 and Y1=Y2, then it is considered a TLB hit. As explained earlier, the processor may then retrieve the corresponding physical memory page address from the TLB and place it on the address bus to access memory. If, on the other hand, Xl ≠ X2 or Yl ≠ Y2, then it is considered a TLB miss. Assuming that the processor cannot obtain a TLB hit with another TLB entry, it invokes certain processing functions to determine the corresponding physical memory page address. However, before a new TLB entry is created, the proposed entry 302 is checked for contiguity with the existing entries in the TLB.
[0022] In the example shown in FIG. 3, the proposed entry 302 is checked for contiguity against the existing entry 300 in response to a TLB miss. This may be achieved with a four step process. First, the virtual memory page addresses are checked for contiguity by comparing Xl to X2, and Yl to Y2. If X1=X2 and Yl ≠ Y2, then the virtual memory page addresses are off by one least-significant-bit, and said to be contiguous in virtual memory address space. Second, the physical memory page addresses are checked for contiguity by comparing Al to A2, and Bl to B2. If A1=A2 and B1 ≠B2, then the physical memory page addresses are also off by one least- significant-bit, and said to be contiguous in physical memory address space. Third, the virtual and physical memory page address of the existing entry and the proposed entry are then checked to ensure that the proposed entry's virtual and physical memory page addresses are both either higher than or lower than the existing entry's virtual and physical memory page addresses, respectively. Finally, when the existing and proposed entries are to be consolidated into one larger entry, the virtual and physical page address ranges covered by the larger entry are checked to ensure that both address ranges are aligned on the large size boundary. If all these conditions are met, then the existing and proposed entries can be consolidated into a single entry. In the case where the virtual and physical memory page addresses for the proposed entry 302 are higher than that for the existing entry 300, then the two entries can be consolidated by merely increasing the size attribute to indicate that the consolidated TLB entry represent two pages in memory beginning at the virtual and physical memory page addresses of the original entry 300. Alternatively, where the virtual and physical memory page addresses for the proposed entry 302 are lower than that for the existing entry 300, then the two entries can be consolidated by writing the proposed virtual and physical memory page addresses over the existing entry and changing the size attribute to indicate that the consolidated TLB entry represent two pages in memory beginning at the virtual and physical memory page addresses of the new entry 302.
[0023] An example will now be provided. Assume that the virtual memory page of the existing entry 300 is 4KB starting at address "0x0000_0000", and the corresponding physical memory page is 4KB page starting at address "0x8000_0000". If the virtual memory page for the proposed entry 302 is 4KB page starting at address "0x0000_1000", and the corresponding physical memory page is 4KB page starting at address "0x8000_1000", then both entries can be consolidated into an 8KB region starting at the same addresses as the existing entry. However, if the existing entry's virtual region started at address "0x0000_1000" and its corresponding physical region at address "0x8000_1000", and the proposed entry's virtual region started at address "0x0000_2000" and its corresponding physical region at address "0x8000_2000", then the existing and proposed entries could not be combined, because the resultant 8KB page would not start at a boundary that is aligned on an 8KB region. [0024] Consequently, assuming the contiguity check is satisfactory, the size attribute in the existing entry 300 is dynamically changed to 8KB. The 8KB size is based on the fact that the existing page is 4KB and the new page is 4KB. Hence, consolidating or combining the new page and the existing page results in an 8KB page. As the foregoing example illustrates, if an existing page that is contiguous to a new page can be located in the TLB, the entry for the existing page can simply be modified and no separate entry need to be added to the TLB for the new page.
[0025] In addition, the modified (8KB) entry may need to have Yl and Bl both set to "0", if they weren't already both "0". This is performed so that the modified entry correctly reflects the starting address of the new 8KB page (that is, the lower-numbered of the two contiguous 4KB pages). However, it should be noted that not all implementations would require this change. Essentially, when a 4KB entry is converted to an 8KB entry, bit 12 of the existing entry changes from being the least-significant bit of the virtual page address to effectively being the most-significant bit of the offset (not shown). The offset is used to form the complete physical page address with which to access memory. The offset is not important in the translation or mapping process between virtual page address and physical page address. The size attribute of the entry being 8KB (rather than 4KB) indicates that bit 12 is now part of the offset. As such, bit 12 of the virtual page address no longer needs to be considered part of the TLB entry and, hence, does not need to participate in the comparison against subsequent addresses to determine a match. Some implementations can properly and automatically ignore this bit position, in both the virtual and the physical page address portions of the TLB entry, based upon the size attribute. Other implementations may require one or the other, or both, of these bit positions to reflect the lower-numbered page address (in other words, for them to be O's).
[0026] Based on the disclosure and teachings provided herein, it will be appreciated that the foregoing can be extended to accommodate consolidation of larger page sizes. Using the modified entry 300 for further illustration, the entry 300 now references an 8KB page (since two (2) contiguous 4KB pages have been consolidated). The processor 102 (see FIG. 1) can be further configured to now search for an entry in the TLB 108 that references another 8K page that is contiguous to the 8K page referenced by the modified entry 300. If it is determined that there is another 8K page contiguous to the 8K page referenced by the modified entry 300, then the size attribute of one of the two existing entries can be modified to now reflect that the page size for that entry is 16K and the remaining entry can be eliminated. As a result, a 16K page is now referenced by a single entry, as opposed to two (2) contiguous 8K pages referenced by two (2) different entries. Expanding the foregoing further, another existing 16K page that is contiguous to the newly consolidated 16K page can also be consolidated to form a 32K page that is referenced by a single entry. The foregoing can be extended to consolidate pages into increasingly larger page sizes.
[0027] Optionally, the processor 102 (see FIG. 1) can also be configured to consolidate entries referencing pages with smaller page sizes to create an updated entry referencing a page with a desired page size. The updated entry can then be consolidated with another entry that references a page having the same desired page size. For example, using the modified entry 300 again for illustration, the entry 300 now references an 8K page. The processor 102 (see FIG. 1) can first consolidate two (2) contiguous 4KB pages to create an 8KB page referenced by a single entry. The newly created 8KB page can now be further consolidated with the 8KB page referenced by the entry 300 to form a 16KB page referenced by a single entry. Similarly, the processor 102 can then consolidate four (4) contiguous 4KB pages to form another 16KB page referenced by another entry. Subsequently, the newly formed 16KB page can be consolidated with the previously formed 16KB page to form a 32KB page. Based on the disclosure and teachings provided herein, a person of ordinary skill in the art will understand how to expand the foregoing to optimize entries in the TLB 108 to cover other larger page sizes according to the present disclosure.
[0028] The various illustrative logical blocks, modules, circuits, elements, and/or components described in connection with the embodiments disclosed herein may be implemented or performed with a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic component, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing components, e.g., a combination of a DSP and a microprocessor, a number of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.
[0029] The methods or algorithms described in connection with the embodiments disclosed herein may be embodied directly in hardware, in a software module executable by a processor, or in a combination of both, in the form of control logic, programming instructions, or other directions. A software module may reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art. A storage medium may be coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor.
[0030] The previous description of the disclosed embodiments is provided to enable any person skilled in the art to make or use the present invention. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments without departing from the spirit of scope of the invention. Thus, the present invention is not intended to be limited to the embodiments shown herein, but is to be accorded the full scope consistent with the claims, wherein reference to an element in the singular is not intended to mean "one and only one" unless specifically so stated, but rather "one or more". All structural and functional equivalents to the elements of the various embodiments described throughout this disclosure that are known or later come to be known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the claims. Moreover, nothing disclosed herein is intended to be dedicated to the public regardless of whether such disclosure is explicitly recited in the claims. No claim element is to be construed under the provisions of 35 U.S.C. §112, sixth paragraph, unless the element is expressly recited using the phrase "means for" or, in the case of a method claim, the element is recited using the phrase "step for".
WHAT IS CLAIMED IS:

Claims

1. A processing system, comprising: a translation lookaside buffer (TLB) configured to map a contiguous block of virtual memory to physical memory, and provide a size attribute indicating the size of the contiguous block of virtual memory; and a processor configured to vary the size of the contiguous block of virtual memory and the corresponding physical memory, and vary the size attribute accordingly.
2. The processing system of claim 1 wherein the processor includes the TLB.
3. The processing system of claim 1 wherein the processor is further configured to vary the size of the contiguous block of virtual memory by consolidating a first block of virtual memory with a second block of virtual memory.
4. The processing system of claim 3 wherein the processor is further configured to consolidate the first and second blocks of virtual memory in response to a determination that both the first and second blocks of virtual memory are contiguous, and the corresponding of physical memory is also contiguous.
5. The processing system of claim 4 wherein the processor is further configured to map the first and second blocks of virtual memory to their corresponding blocks of physical memory by mapping the page address for the first block of virtual memory to the page address for its corresponding block of physical memory, the page address for the first block of virtual memory being lower than the page address for the second block of virtual memory.
6. The processing system of claim 5 wherein the processor is further configured to consolidate the first and second blocks of virtual memory by varying the size attribute without changing the page address mappings.
7. The processing system of claim 5 wherein the processor is further configured to consolidate the first and second blocks of virtual memory by varying the size attribute and changing the page address for the second block of virtual memory to the page address for the first block of virtual memory, and changing the page address for the block of physical memory accordingly.
8. A processing system, comprising: a translation lookaside buffer (TLB) configured to store a plurality of entries, each of the entries mapping a contiguous block of virtual memory to physical memory, and each of the entries having a size attribute indicating the size of its respective block of virtual memory; and a processor configured to vary the size of the contiguous block of virtual memory and the corresponding physical memory for one of the entries, and wherein the processor is further configured to vary the size attribute for said one of the entries.
9. The processing system of claim 8 wherein the processor includes the TLB.
10. The processing system of claim 8 wherein the processor is further configured to vary the size of the contiguous block of virtual memory for said one of the entries by consolidating the block of virtual memory for said one of the entries with a new block of virtual memory.
11. The processing system of claim 10 wherein the processor is further configured to consolidate the virtual memory block for said one of the entries and the new virtual memory block in response to a determination that both such blocks of virtual memory are contiguous, and the corresponding blocks of physical memory are also contiguous.
12. The processing system of claim 11 wherein the processor is further configured to map the consolidated block of virtual memory to physical memory by mapping the page address for the virtual memory block for said one of the entries to the page address for its corresponding block of physical memory.
13. The processing system of claim 11 wherein the processor is further configured to map the consolidated block of virtual memory to physical memory by mapping the page address for the new virtual memory block to the page address for its corresponding block of physical memory.
14. A method of storing a plurality of entries in a translation lookaside buffer (TLB), comprising: mapping a contiguous virtual memory block to physical memory; providing a size attribute indicating the size of the contiguous block of virtual memory; varying the size of the contiguous block of virtual memory and the corresponding physical memory; and varying the size attribute to reflect the change in the contiguous block of virtual memory and the corresponding physical memory.
15. The method of claim 14 wherein the size of the contiguous block of virtual memory and the corresponding physical memory is varied by consolidating a first block of virtual memory with a second block of virtual memory.
16. The method of claim 15 wherein the first and second blocks of virtual memory is consolidated in response to a determination that both the first and second blocks of virtual memory are contiguous, and the corresponding physical memory are also contiguous.
17. The processing system of claim 16 wherein the mapping of the consolidated first and second blocks of virtual memory to physical memory comprises determining that page address for the first block of virtual memory is lower than the page address for the second block of virtual memory, and mapping the page address for the first block of virtual memory to the page address for its corresponding block of physical memory.
18. The method of claim 17 wherein the first and second blocks of virtual memory are consolidated by varying the size attribute without changing the page address mappings.
19. The method of claim 17 wherein the first and second blocks of virtual memory are consolidated by varying the size attribute and changing the page address for the second block of virtual memory to the page address for the first block of virtual memory, and changing the page address for corresponding physical memory accordingly.
20. A method of storing a plurality of entries in a translation lookaside buffer (TLB), comprising: identifying a new block of virtual memory; locating an entry in the TLB having an existing block of virtual memory that is contiguous with the new block of virtual memory, the TLB entry containing a mapping between the existing block of virtual memory and physical memory; and consolidating the new and existing blocks of virtual memory, and their corresponding physical memory, in the TLB entry, the consolidation of the new and existing blocks of virtual memory further comprising adjusting a size attribute to reflect a change in the size from the existing block size of virtual memory to the consolidated block size of virtual memory.
21. The method of claim 21 further comprising determining that the corresponding physical memory for the existing block of virtual memory is contiguous with the corresponding memory for the new block of the virtual memory.
22. The method of claim 22 further comprising determining that the consolidated block of virtual memory maps to a block of physical memory represented by physical memory corresponding to the existing and new block of virtual memory.
23. The method of claim 21 wherein the existing block of virtual memory is mapped to its corresponding physical memory by mapping the page address of the existing block of virtual memory to the page address of its corresponding physical memory.
24. The method of claim 23 further comprising determining that the page address for the existing block of virtual memory is lower than the page address for the new block of virtual memory, and wherein the consolidation of the new and existing block of virtual memory further comprises adjusting the size attribute without changing the page mapping in the entry.
25. The method of claim 23 further comprising determining that the page address for the existing block of virtual memory is higher than the page address for the new block of virtual memory, and wherein the consolidation of the new and existing block of virtual memory further comprises adjusting the size attribute and mapping the page address for the new block of virtual memory to the page address of its corresponding physical memory.
PCT/US2006/010087 2005-03-17 2006-03-17 Method and system for optimizing translation lookaside buffer entries WO2006099633A2 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
MX2007011359A MX2007011359A (en) 2005-03-17 2006-03-17 Method and system for optimizing translation lookaside buffer entries.
EP06739038A EP1866773A2 (en) 2005-03-17 2006-03-17 Method and system for optimizing translation lookaside buffer entries
JP2008502151A JP2008533620A (en) 2005-03-17 2006-03-17 Method and system for optimizing translation index buffer entries
IL185963A IL185963A0 (en) 2005-03-17 2007-09-16 Method and system for optimizing translation lookaside buffer entries

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/083,691 2005-03-17
US11/083,691 US7366869B2 (en) 2005-03-17 2005-03-17 Method and system for optimizing translation lookaside buffer entries

Publications (2)

Publication Number Publication Date
WO2006099633A2 true WO2006099633A2 (en) 2006-09-21
WO2006099633A3 WO2006099633A3 (en) 2007-03-01

Family

ID=36685794

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2006/010087 WO2006099633A2 (en) 2005-03-17 2006-03-17 Method and system for optimizing translation lookaside buffer entries

Country Status (9)

Country Link
US (1) US7366869B2 (en)
EP (1) EP1866773A2 (en)
JP (1) JP2008533620A (en)
KR (1) KR100944142B1 (en)
CN (1) CN101176078A (en)
IL (1) IL185963A0 (en)
MX (1) MX2007011359A (en)
TW (1) TWI307839B (en)
WO (1) WO2006099633A2 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009020881A (en) * 2007-07-12 2009-01-29 Qnx Software Systems Gmbh & Co Kg Processing system implementing variable page size memory organization
JP2010518519A (en) * 2007-02-07 2010-05-27 クゥアルコム・インコーポレイテッド Address translation method and apparatus
US9330026B2 (en) 2013-03-05 2016-05-03 Qualcomm Incorporated Method and apparatus for preventing unauthorized access to contents of a register under certain conditions when performing a hardware table walk (HWTW)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7895410B1 (en) * 2005-06-14 2011-02-22 Oracle America, Inc. Method and apparatus for facilitating adaptive page sizes
US8028118B2 (en) * 2007-12-05 2011-09-27 Internation Business Machines Corporation Using an index value located on a page table to index page attributes
US8151076B2 (en) * 2008-04-04 2012-04-03 Cisco Technology, Inc. Mapping memory segments in a translation lookaside buffer
US20100030994A1 (en) * 2008-08-01 2010-02-04 Guzman Luis F Methods, systems, and computer readable media for memory allocation and deallocation
US8024546B2 (en) * 2008-10-23 2011-09-20 Microsoft Corporation Opportunistic page largification
US20100332788A1 (en) * 2009-06-30 2010-12-30 Li Zhao Automatically using superpages for stack memory allocation
JP2011018182A (en) * 2009-07-08 2011-01-27 Panasonic Corp Address translation device
US10133676B2 (en) 2010-07-28 2018-11-20 Rambus Inc. Cache memory that supports tagless addressing
US8527736B1 (en) * 2010-09-07 2013-09-03 Adtran, Inc. Systems and methods for improving address translation speed
KR101707927B1 (en) * 2010-11-25 2017-02-28 삼성전자주식회사 Memory system and operating method there-of
CN102486751A (en) * 2010-12-01 2012-06-06 安凯(广州)微电子技术有限公司 Method for realizing virtual big page through small page NANDFLASH on micro memory system
WO2013001568A1 (en) * 2011-06-28 2013-01-03 Hitachi, Ltd. Data storage apparatus and control method therefor
US9753860B2 (en) * 2012-06-14 2017-09-05 International Business Machines Corporation Page table entry consolidation
US9092359B2 (en) * 2012-06-14 2015-07-28 International Business Machines Corporation Identification and consolidation of page table entries
US9811472B2 (en) 2012-06-14 2017-11-07 International Business Machines Corporation Radix table translation of memory
US20140075142A1 (en) * 2012-09-13 2014-03-13 International Business Machines Corporation Managing backing of virtual memory
US9436616B2 (en) * 2013-05-06 2016-09-06 Qualcomm Incorporated Multi-core page table sets of attribute fields
WO2017000124A1 (en) * 2015-06-29 2017-01-05 华为技术有限公司 Method and device for entry merging in directory
US10216644B2 (en) * 2016-11-04 2019-02-26 Toshiba Memory Corporation Memory system and method
GB2570474B (en) * 2018-01-26 2020-04-15 Advanced Risc Mach Ltd Region fusing

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040117594A1 (en) * 2002-12-13 2004-06-17 Vanderspek Julius Memory management method
US20040215918A1 (en) * 2003-04-24 2004-10-28 International Business Machines Corporation Method, apparatus and computer program product for dynamically minimizing translation lookaside buffer entries across contiguous memory

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040117594A1 (en) * 2002-12-13 2004-06-17 Vanderspek Julius Memory management method
US20040215918A1 (en) * 2003-04-24 2004-10-28 International Business Machines Corporation Method, apparatus and computer program product for dynamically minimizing translation lookaside buffer entries across contiguous memory

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010518519A (en) * 2007-02-07 2010-05-27 クゥアルコム・インコーポレイテッド Address translation method and apparatus
JP2013065325A (en) * 2007-02-07 2013-04-11 Qualcomm Inc Address translation method and apparatus
JP2009020881A (en) * 2007-07-12 2009-01-29 Qnx Software Systems Gmbh & Co Kg Processing system implementing variable page size memory organization
US9330026B2 (en) 2013-03-05 2016-05-03 Qualcomm Incorporated Method and apparatus for preventing unauthorized access to contents of a register under certain conditions when performing a hardware table walk (HWTW)

Also Published As

Publication number Publication date
MX2007011359A (en) 2007-12-05
JP2008533620A (en) 2008-08-21
IL185963A0 (en) 2008-02-09
CN101176078A (en) 2008-05-07
TW200707192A (en) 2007-02-16
TWI307839B (en) 2009-03-21
EP1866773A2 (en) 2007-12-19
WO2006099633A3 (en) 2007-03-01
KR20070113293A (en) 2007-11-28
KR100944142B1 (en) 2010-02-24
US20060212675A1 (en) 2006-09-21
US7366869B2 (en) 2008-04-29

Similar Documents

Publication Publication Date Title
US7366869B2 (en) Method and system for optimizing translation lookaside buffer entries
US8145876B2 (en) Address translation with multiple translation look aside buffers
US8938601B2 (en) Hybrid memory system having a volatile memory with cache and method of managing the same
US8028148B2 (en) Safe and efficient allocation of memory
US9886385B1 (en) Content-directed prefetch circuit with quality filtering
US20070239960A1 (en) Data processor and IP module for data processor
US10268413B2 (en) Overflow region memory management
US11030088B2 (en) Pseudo main memory system
WO2007024937A1 (en) Tlb lock indicator
JP2005115910A (en) Priority-based flash memory control apparatus for xip in serial flash memory, memory management method using the same, and flash memory chip based on the same
JP4574712B2 (en) Arithmetic processing apparatus, information processing apparatus and control method
US8880845B2 (en) Memory system and operating method thereof
US20090158003A1 (en) Structure for a memory-centric page table walker
US20100146214A1 (en) Method and system for efficient cache locking mechanism
US20030041222A1 (en) Method to prevent corruption of page tables during flash EEPROM programming
JP2007304747A (en) Computer system and memory access method
US11561898B1 (en) Address expansion
US7139879B2 (en) System and method of improving fault-based multi-page pre-fetches
US20100268921A1 (en) Data collection prefetch device and methods thereof
JP2024510127A (en) Randomize address space placement with page remapping and rotation to increase entropy
WO2006108618A1 (en) Generic low cost hardware mechanism for memory protection
US20050228951A1 (en) Virtualized load buffers
CN107423232B (en) FTL quick access method and device
US20040024970A1 (en) Methods and apparatuses for managing memory
US11409665B1 (en) Partial logical-to-physical (L2P) address translation table for multiple namespaces

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 200680016065.9

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: MX/a/2007/011359

Country of ref document: MX

WWE Wipo information: entry into national phase

Ref document number: 185963

Country of ref document: IL

ENP Entry into the national phase

Ref document number: 2008502151

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 1572/MUMNP/2007

Country of ref document: IN

WWE Wipo information: entry into national phase

Ref document number: 2006739038

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 1020077023698

Country of ref document: KR

NENP Non-entry into the national phase

Ref country code: RU