US20160328218A1 - Program execution device and compiler system - Google Patents
Program execution device and compiler system Download PDFInfo
- Publication number
- US20160328218A1 US20160328218A1 US15/217,633 US201615217633A US2016328218A1 US 20160328218 A1 US20160328218 A1 US 20160328218A1 US 201615217633 A US201615217633 A US 201615217633A US 2016328218 A1 US2016328218 A1 US 2016328218A1
- Authority
- US
- United States
- Prior art keywords
- access frequency
- tlb
- logical address
- address range
- conversion table
- 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.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
Definitions
- the present disclosure relates to a program execution device, and more particularly to a technique for reducing a translation look-aside buffer (TLB) miss rate during program execution.
- TLB translation look-aside buffer
- an application accessing a memory space that is enormous in size has increased in popularity in recent years due to the spread of full high definition (Full HD) equipment.
- an application refers to a TLB for high-speed access to a memory. If a logical address to be accessed by the application is not in the TLB, it is a TLB miss.
- the application accesses an address conversion table managed by an operating system. Then, a logical address to be accessed and a physical address corresponding to this logical address are registered to a TLB entry from the address conversion table, and thus an overhead occurs. This results in reduction in an execution speed of the application.
- FIG. 10 illustrates a conventional address conversion system.
- a central processing unit (CPU) 3 includes a memory management unit (MMU) 4 including a TLB 5 converting a logical address located in a logical address space 1 into a physical address located in a physical address space 2 .
- MMU memory management unit
- TLB 5 converting a logical address located in a logical address space 1 into a physical address located in a physical address space 2 .
- a page size of a TLB entry is increased to expand an address range stored in the TLB entry in order to prevent occurrence of a TLB miss (see, e.g., Japanese Patent Publication No. 2000-57054 and Japanese Patent Publication No. 2010-191645).
- a page size of a TLB entry is determined based on the overall size where text portions of a plurality of programs are merged and the overall size where data portions of the plurality of programs are merged.
- a page size of a TLB entry is determined to have a size where the largest text portion in a plurality of programs can be stored. In such manners, in conventional techniques, as the size of a text portion etc. in a program becomes larger, a page size becomes larger.
- a portion of a TLB entry that does not include a text portion is a wasted space because an address range not used by a program is mapped thereon.
- the wasted space might increase depending on a relation between the page size of a TLB entry and the size of a text portion etc. That is, in conventional techniques, finite TLB resources cannot be efficiently used, and thus, when a plurality of applications are concurrently executed, the TLB might not be able to store the address ranges accessed by these applications. Accordingly, while a TLB miss rate can decrease when a single application is executed, the TLB miss rate may increase when multiple applications are concurrently executed.
- a program execution device of the present disclosure executing a machine language program includes a program loader, an address conversion table creator, and a TLB register.
- the program loader reads the machine language program including a machine language code, and access frequency information associated with a logical address range accessed according to the machine language code and the frequency of access to the logical address range.
- the address conversion table creator creates an address conversion table including entries, each of which indicates a relation between a logical address range and a physical address range.
- the TLB register registers, in a TLB, an entry of the address conversion table storing a logical address range accessed according to the machine language code.
- the address conversion table creator can adjust the size of an entry of the address conversion table storing a logical address range having a high access frequency to a size appropriate for this logical address range. Then, the TLB register, in the TLB, an entry of the address conversion table. Thus, the size of a TLB entry storing a logical address range having a high access frequency can be adjusted to a size appropriate for this logical address range. That is, even if a plurality of applications access a plurality of logical address ranges, the size of a TLB entry storing a logical address range having a high access frequency is adjusted to a large size appropriate for this logical address range. Therefore, the TLB can be efficiently used, and a TLB miss can be reduced.
- the address conversion table creator selects, as a lock candidate, an entry of the address conversion table storing a logical address range including a high access frequency.
- the TLB register registers, in a lock field of the TLB, the entry of the address conversion table selected as a lock candidate.
- the TLB entry storing a logical address range having a high access frequency is locked, and thus the contents in this TLB entry are protected from being changed. This further reduces a TLB miss.
- a compiler system of the present disclosure compiling a source program and generating a machine language program includes an access frequency analyzer and an output portion.
- the access frequency analyzer analyzes the source program and obtains the frequency of access to a logical address range accessed by at least one variable in the source program.
- the output portion associates the logical address range with the access frequency, generates the access frequency information, and outputs the machine language program including the access frequency information and the machine language code.
- This compiler system generates a machine language program including access frequency information and a machine language code. Then, when the program execution device executes the machine language code included in the machine language program, a TLB miss is reduced. This improves the speed for executing the machine language code.
- FIG. 1 is a schematic diagram of an address converter including a program execution device of one embodiment of the present disclosure.
- FIG. 2 is a diagram showing a relation between an address conversion table and a TLB.
- FIG. 3 is a flow chart showing an example of processing in an address conversion table creator.
- FIG. 4 is a flow chart showing an example of processing in a TLB register.
- FIG. 5 is a block diagram showing a configuration of a compiler system of one embodiment of the present disclosure.
- FIG. 6 illustrates an example of a high-level language program input to the compiler system of FIG. 5 .
- FIG. 7 illustrates an example of a machine language code and access frequency information generated by the compiler system of FIG. 5 .
- FIG. 8 is a flow chart showing an example of processing in an access frequency analyzer.
- FIGS. 9A-9C are tables used in the course of calculating access frequencies.
- FIG. 10 is a schematic diagram of a conventional address converter.
- FIG. 1 is a block diagram of an address converter including a program execution device of one embodiment of the present disclosure.
- the address converter illustrated in FIG. 1 includes a CPU 3 and an operating system (hereinafter referred to as OS) 10 serving as a program execution device.
- OS operating system
- the CPU 3 includes an MMU 4 including a TLB 5 converting a logical address located in a logical address space 1 into a physical address located in a physical address space 2 .
- the TLB 5 includes entries, each of which is associated with a logical address, a physical address, and a page size. That is, each of the entries in the TLB 5 can store a logical address range and a physical address range of which sizes are indicated by the page size.
- the entries of the TLB 5 are, e.g., updated by software processing of the OS 10 .
- the OS 10 reads and executes a machine language program 20 .
- the OS 10 includes a program loader 11 , an address conversion table creator 12 , an address conversion table 13 , and a TLB register 14 .
- the program loader 11 loads the machine language program 20 , and then outputs access frequency information 22 to the address conversion table creator 12 , while outputting a machine language code 21 serving as an executable file to a program executor (not shown).
- the program loader 11 can concurrently load a plurality of machine language programs 20 .
- the access frequency information 22 relates to a relation between at least one logical address range accessed by the machine language code 21 and a frequency of access to this logical address range.
- the address conversion table creator 12 creates the address conversion table 13 including entries, each of which is associated with a logical address located in the logical address space 1 , a physical address located in the physical address space 2 , and a page size. That is, each of the entries of the address conversion table 13 can store a logical address range and a physical address range of which sizes are indicated by the page size. In addition, the address conversion table creator 12 determines whether the frequency of access to a logical address range is high or not based on the access frequency information 22 . The address conversion table creator 12 can determine, for example, whether or not the frequency of access to a logical address range is relatively high, or whether or not this frequency is higher than the threshold value thereof.
- the address conversion table creator 12 When determining that a frequency of access to a logical address range is high, the address conversion table creator 12 adjusts the page size of the entry of the address conversion table 13 storing this logical address range to an appropriate size. This optimizes the address conversion table.
- the address conversion table creator 12 may create the address conversion table 13 such that the entries are sorted in ascending or descending order of the access frequency.
- the TLB register 14 registers, in the TLB 5 , an entry of the address conversion table 13 storing a logical address range accessed according to the machine language code 21 . That is, the page size of the TLB entry storing the logical address range having a high access frequency is adjusted to a size appropriate for this logical address range.
- the address conversion table creator 12 may detect, based on the access frequency information 22 , a logical address range that is most frequently accessed during execution of the machine language code 21 , and then select the entry storing the determined logical address range as a lock candidate. Specifically, as illustrated in FIG. 2 , a lock candidate flag indicating whether an entry is a lock candidate or not is added to the address conversion table 13 .
- the address conversion table creator 12 sets a lock candidate flag to, e.g., “1” when selecting an entry of the address conversion table 13 as a lock candidate, and sets a lock candidate flag to, e.g., “0” when selecting an entry as a non-lock candidate.
- the TLB register 14 registers, in a lock field of the TLB 5 , a logical address range and a physical address range that are stored in an entry of the address conversion table 13 of which the lock candidate flag is “1.” In addition, the TLB register 14 registers, in a non-lock field of the TLB 5 , an entry of which the lock candidate flag is “0.”
- the lock field is an entry of the TLB 5 that is protected from being overwritten with a newly registered entry.
- a page fault occurs when, in the address conversion table 13 , an accessed logical address range is not mapped in a physical address range.
- the access frequency information 22 determines whether or not the logical address range accessed according to the machine language code 21 has a high access frequency (S 301 ). If the logical address range has a high access frequency (“Yes” in S 301 ), a minimum page size where this logical address range can be stored is selected. If any page size of, e.g., 4 KB, 8 KB, 16 KB, or 32 KB is selectable, and the page size of the logical address range having a high access frequency is 10 KB, the page size of 16 KB is selected. Then, a physical address of the selected page size is obtained from the physical address space 2 , and stored in an entry of the address conversion table 13 (S 302 ). This causes the logical address range relating to the page fault to be mapped in the physical address range.
- a minimum page size where this logical address range can be stored is selected. If any page size of, e.g., 4 KB, 8 KB, 16 KB, or 32 KB is selectable, and the page size
- a logical address range that is included in the plurality of logical address ranges accessed according to the machine language code 21 and is accessed when the page fault occurs has the highest access frequency (S 303 ). If this logical address range has the highest access frequency (Yes in S 303 ), the entry storing this logical address range is selected as a lock candidate (S 304 ). In other words, the lock candidate flag of this entry is set to “1.” On the other hand, if the logical address range accessed when a page fault occurs does not have the highest access frequency (No in S 303 ), the lock candidate flag of the entry storing this address range is set to “0.”
- the page size of an entry of the address conversion table 13 storing a logical address range having a high access frequency is increased, and thus internal fragmentation is less likely to occur. While an entry storing a logical address range having the highest access frequency is selected as a lock candidate in S 303 and S 304 , an entry storing a logical address range having an access frequency higher than or equal to a threshold value may be selected as a lock candidate.
- the TLB register 14 refers to the lock candidate flag in the address conversion table 13 to determine whether an entry of the address conversion table 13 to be registered in the TLB 5 is a lock candidate or not (S 401 ). If the entry is a lock candidate (Yes in S 401 ), it is determined whether or not there is free space in the lock field of the TLB 5 (S 402 ). If there is free space in the lock field of the TLB 5 (Yes in S 402 ), the entry of the address conversion table 13 that is a lock candidate is registered in the lock field of the TLB 5 (S 403 ).
- these entries may be registered in the lock field of the TLB 5 in order of processing of the TLB register 14 . If there is no free space in the lock field of the TLB 5 (No in S 402 ), the entry of the address conversion table 13 that is a lock candidate is registered in the non-lock field of the TLB 5 (S 404 ).
- the OS 10 of this embodiment increases the page size of only a TLB entry storing a frequently accessed logical address range regardless of an increase in the number of logical address ranges, thereby efficiently using the TLB 5 . Accordingly, a TLB miss can be reduced. Moreover, a lock of a TLB entry storing a logical address range having a high access frequency enables a TLB hit to occur every time this logical address range is accessed.
- the TLB register 14 preferably moves, to the non-lock field, an entry that is registered in the lock field of the TLB 5 and referred to during execution of the machine language code 21 .
- the address conversion table creator 12 changes, from a lock candidate to a non-lock candidate, the entry of the address conversion table 13 corresponding to the entry moved to the non-lock field of the TLB 5 .
- FIG. 5 is a block diagram showing a configuration of a compiler system generating the machine language program 20 illustrated in FIG. 1 .
- a compiler system 30 illustrated in FIG. 5 compiles a high-level language program 27 , which is a source program, to generate the machine language program 20 .
- the compiler system 30 includes a parser 31 , an optimizer 32 , a code generator 34 , and an output portion 35 .
- the parser 31 splits the high-level language program 27 written in the C language etc. illustrated in FIG. 6 into tokens, and then analyzes a structure of the high-level language program 27 based on the split tokens to generate an intermediate code.
- the optimizer 32 converts the intermediate code into an efficient code to minimize time etc. during which the machine language code 21 is executed.
- the optimizer 32 includes an access frequency analyzer 33 .
- the access frequency analyzer 33 extracts information about variables a, b, and c used in the high-level language program 27 illustrated in FIG. 6 . Specifically, logical address ranges accessed by the variables a, b, and c are obtained based on start addresses and sizes of the variables a, b, and c.
- the access frequency analyzer 33 calculates the frequency of access of the variables a, b, and c to the obtained logical address ranges.
- the access frequency analyzer 33 may be provided outside the optimizer 32 . In this case, the optimizer 32 is optional.
- the code generator 34 generates the machine language code 21 .
- the output portion 35 associates a logical address range with its access frequency to generate the access frequency information 22 , and then outputs the machine language program 20 illustrated in FIG. 7 and including the machine language code 21 and the access frequency information 22 .
- reference numeral 23 in the access frequency information 22 illustrated in FIG. 7 denotes the start addresses of the variables a, b, and c in the high-level language program 27 .
- Reference numeral 24 denotes the sizes of the variables a, b, and c.
- Reference numeral 25 denotes the access frequencies of the variables a, b, and c.
- the logical address range is indicated by the start addresses 23 and the sizes 24 of the variables a, b, and c.
- the output portion 35 may separate the access frequency information 22 from the machine language program 20 to output the access frequency information 22 to another file.
- the high-level language program 27 contains a function not registered in a table 36 illustrated in FIG. 9A (S 801 ). If there is a function not registered in the table 36 (Yes in S 801 ), the name of this function and the total number of calls of this function are registered in the table 36 (S 802 ). For example, in FIG. 6 , a function func 1 is called only once in the high-level language program 27 , and thus the total number of calls is “1.” Then, a variable used in a function of the high-level language program 27 and, if any, a nested level of a loop in which this variable appears are associated with the name of the function, and then registered in the table 37 illustrated in FIG. 9B (S 803 ).
- the nested level of the loop in which the variable a appears in the function func 1 is “1.”
- “(a, 1)” is associated with the function func 1, and registered in the table 37 .
- the process subsequently returns to step S 801 to repeat from step S 801 to step S 803 .
- the tables 36 and 37 are created. Note that if a variable appears outside the loop, the nested level thereof only has to be “1.”
- an access frequency is calculated based on the tables 36 and 37 (S 804 ).
- access frequencies fa, fb, and fc of the variables a, b, and c used in the high-level language program 27 illustrated in FIG. 6 can be calculated by
- the variables a, b, and c, and the access frequencies thereof are subsequently registered in the table 38 illustrated in FIG. 9C .
- the access frequencies 25 illustrated in FIG. 7 are values determined by
- a TLB miss rate can be minimized when the OS 10 illustrated in FIG. 1 executes the machine language program 20 generated by the compiler system 30 of this embodiment.
- a nested level of a loop in which a variable appears, and the number of calls of at least one function for which the variable is used are static, and the number of loops is dynamic.
- the access frequencies 25 increase.
- the access frequencies 25 are preferably calculated based on the nested level of a loop and the number of calls of at least one function. Alternatively, the access frequencies 25 may be calculated based on only the number of calls of at least one function. In addition, the values of the parameters m and n are arbitrary.
- this number of a loop may serve as the access frequency 25 .
- the compiler system 30 may read, from a profile etc., dynamic information affecting fluctuations of the access frequencies 25 to calculate the access frequencies 25 .
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
A program execution device includes a program loader reading a machine language program including a machine language code and access frequency information; an address conversion table creator creating an address conversion table including entries, each of which indicates a relation between a logical address range and a physical address range; and a TLB register registering, in a TLB, an entry of the address conversion table storing a logical address range accessed according to the machine language code. When determining that the frequency of access to a logical address range is high based on the access frequency information, the address conversion table creator adjusts the size of an entry storing this logical address range to an appropriate size.
Description
- This is a Divisional application of U.S. patent application Ser. No. 13/913,130, filed on Jun. 7, 2013, which is a continuation of International Application No. PCT/JP2011/004214 filed on Jul. 26, 2011, which claims priority to Japanese Patent Application No. 2011-004246 filed on Jan. 12, 2011. The entire disclosures of these applications are incorporated by reference herein.
- The present disclosure relates to a program execution device, and more particularly to a technique for reducing a translation look-aside buffer (TLB) miss rate during program execution.
- An application accessing a memory space that is enormous in size has increased in popularity in recent years due to the spread of full high definition (Full HD) equipment. In general, an application refers to a TLB for high-speed access to a memory. If a logical address to be accessed by the application is not in the TLB, it is a TLB miss.
- If a TLB miss occurs, the application accesses an address conversion table managed by an operating system. Then, a logical address to be accessed and a physical address corresponding to this logical address are registered to a TLB entry from the address conversion table, and thus an overhead occurs. This results in reduction in an execution speed of the application.
-
FIG. 10 illustrates a conventional address conversion system. A central processing unit (CPU) 3 includes a memory management unit (MMU) 4 including aTLB 5 converting a logical address located in alogical address space 1 into a physical address located in aphysical address space 2. Conventionally, a page size of a TLB entry is increased to expand an address range stored in the TLB entry in order to prevent occurrence of a TLB miss (see, e.g., Japanese Patent Publication No. 2000-57054 and Japanese Patent Publication No. 2010-191645). - In the technique disclosed in Japanese Patent Publication No. 2000-57054, a page size of a TLB entry is determined based on the overall size where text portions of a plurality of programs are merged and the overall size where data portions of the plurality of programs are merged. In addition, in the technique disclosed in Japanese Patent Publication No. 2010-191645, a page size of a TLB entry is determined to have a size where the largest text portion in a plurality of programs can be stored. In such manners, in conventional techniques, as the size of a text portion etc. in a program becomes larger, a page size becomes larger.
- A portion of a TLB entry that does not include a text portion is a wasted space because an address range not used by a program is mapped thereon. The wasted space might increase depending on a relation between the page size of a TLB entry and the size of a text portion etc. That is, in conventional techniques, finite TLB resources cannot be efficiently used, and thus, when a plurality of applications are concurrently executed, the TLB might not be able to store the address ranges accessed by these applications. Accordingly, while a TLB miss rate can decrease when a single application is executed, the TLB miss rate may increase when multiple applications are concurrently executed.
- To solve this problem, a program execution device of the present disclosure executing a machine language program includes a program loader, an address conversion table creator, and a TLB register. The program loader reads the machine language program including a machine language code, and access frequency information associated with a logical address range accessed according to the machine language code and the frequency of access to the logical address range. The address conversion table creator creates an address conversion table including entries, each of which indicates a relation between a logical address range and a physical address range. The TLB register registers, in a TLB, an entry of the address conversion table storing a logical address range accessed according to the machine language code. When determining that the frequency of access to a logical address range is high based on the access frequency information, the address conversion table creator adjusts the size of an entry storing this logical address range to an appropriate size.
- In this program execution device, the address conversion table creator can adjust the size of an entry of the address conversion table storing a logical address range having a high access frequency to a size appropriate for this logical address range. Then, the TLB register, in the TLB, an entry of the address conversion table. Thus, the size of a TLB entry storing a logical address range having a high access frequency can be adjusted to a size appropriate for this logical address range. That is, even if a plurality of applications access a plurality of logical address ranges, the size of a TLB entry storing a logical address range having a high access frequency is adjusted to a large size appropriate for this logical address range. Therefore, the TLB can be efficiently used, and a TLB miss can be reduced.
- Preferably, the address conversion table creator selects, as a lock candidate, an entry of the address conversion table storing a logical address range including a high access frequency. The TLB register registers, in a lock field of the TLB, the entry of the address conversion table selected as a lock candidate.
- In this case, the TLB entry storing a logical address range having a high access frequency is locked, and thus the contents in this TLB entry are protected from being changed. This further reduces a TLB miss.
- In addition, a compiler system of the present disclosure compiling a source program and generating a machine language program includes an access frequency analyzer and an output portion. The access frequency analyzer analyzes the source program and obtains the frequency of access to a logical address range accessed by at least one variable in the source program. The output portion associates the logical address range with the access frequency, generates the access frequency information, and outputs the machine language program including the access frequency information and the machine language code.
- This compiler system generates a machine language program including access frequency information and a machine language code. Then, when the program execution device executes the machine language code included in the machine language program, a TLB miss is reduced. This improves the speed for executing the machine language code.
-
FIG. 1 is a schematic diagram of an address converter including a program execution device of one embodiment of the present disclosure. -
FIG. 2 is a diagram showing a relation between an address conversion table and a TLB. -
FIG. 3 is a flow chart showing an example of processing in an address conversion table creator. -
FIG. 4 is a flow chart showing an example of processing in a TLB register. -
FIG. 5 is a block diagram showing a configuration of a compiler system of one embodiment of the present disclosure. -
FIG. 6 illustrates an example of a high-level language program input to the compiler system ofFIG. 5 . -
FIG. 7 illustrates an example of a machine language code and access frequency information generated by the compiler system ofFIG. 5 . -
FIG. 8 is a flow chart showing an example of processing in an access frequency analyzer. -
FIGS. 9A-9C are tables used in the course of calculating access frequencies. -
FIG. 10 is a schematic diagram of a conventional address converter. -
FIG. 1 is a block diagram of an address converter including a program execution device of one embodiment of the present disclosure. The address converter illustrated inFIG. 1 includes aCPU 3 and an operating system (hereinafter referred to as OS) 10 serving as a program execution device. - The
CPU 3 includes anMMU 4 including aTLB 5 converting a logical address located in alogical address space 1 into a physical address located in aphysical address space 2. TheTLB 5 includes entries, each of which is associated with a logical address, a physical address, and a page size. That is, each of the entries in theTLB 5 can store a logical address range and a physical address range of which sizes are indicated by the page size. In this embodiment, the entries of the TLB 5 are, e.g., updated by software processing of theOS 10. - The OS 10 reads and executes a
machine language program 20. Specifically, theOS 10 includes aprogram loader 11, an addressconversion table creator 12, an address conversion table 13, and aTLB register 14. Theprogram loader 11 loads themachine language program 20, and then outputsaccess frequency information 22 to the addressconversion table creator 12, while outputting amachine language code 21 serving as an executable file to a program executor (not shown). Theprogram loader 11 can concurrently load a plurality of machine language programs 20. Theaccess frequency information 22 relates to a relation between at least one logical address range accessed by themachine language code 21 and a frequency of access to this logical address range. - The address
conversion table creator 12 creates the address conversion table 13 including entries, each of which is associated with a logical address located in thelogical address space 1, a physical address located in thephysical address space 2, and a page size. That is, each of the entries of the address conversion table 13 can store a logical address range and a physical address range of which sizes are indicated by the page size. In addition, the addressconversion table creator 12 determines whether the frequency of access to a logical address range is high or not based on theaccess frequency information 22. The addressconversion table creator 12 can determine, for example, whether or not the frequency of access to a logical address range is relatively high, or whether or not this frequency is higher than the threshold value thereof. When determining that a frequency of access to a logical address range is high, the addressconversion table creator 12 adjusts the page size of the entry of the address conversion table 13 storing this logical address range to an appropriate size. This optimizes the address conversion table. The addressconversion table creator 12 may create the address conversion table 13 such that the entries are sorted in ascending or descending order of the access frequency. - The TLB register 14 registers, in the
TLB 5, an entry of the address conversion table 13 storing a logical address range accessed according to themachine language code 21. That is, the page size of the TLB entry storing the logical address range having a high access frequency is adjusted to a size appropriate for this logical address range. - The address
conversion table creator 12 may detect, based on theaccess frequency information 22, a logical address range that is most frequently accessed during execution of themachine language code 21, and then select the entry storing the determined logical address range as a lock candidate. Specifically, as illustrated inFIG. 2 , a lock candidate flag indicating whether an entry is a lock candidate or not is added to the address conversion table 13. The addressconversion table creator 12 sets a lock candidate flag to, e.g., “1” when selecting an entry of the address conversion table 13 as a lock candidate, and sets a lock candidate flag to, e.g., “0” when selecting an entry as a non-lock candidate. The TLB register 14 registers, in a lock field of theTLB 5, a logical address range and a physical address range that are stored in an entry of the address conversion table 13 of which the lock candidate flag is “1.” In addition, theTLB register 14 registers, in a non-lock field of theTLB 5, an entry of which the lock candidate flag is “0.” Here, the lock field is an entry of theTLB 5 that is protected from being overwritten with a newly registered entry. - Next, an example of processing in the address
conversion table creator 12 will be described with reference toFIG. 3 . Specifically, an example of a page fault occurring when the plurality of logical address ranges are accessed according to themachine language code 21 will be described. A page fault occurs when, in the address conversion table 13, an accessed logical address range is not mapped in a physical address range. - First, when a page fault occurs, it is determined based on the
access frequency information 22 whether or not the logical address range accessed according to themachine language code 21 has a high access frequency (S301). If the logical address range has a high access frequency (“Yes” in S301), a minimum page size where this logical address range can be stored is selected. If any page size of, e.g., 4 KB, 8 KB, 16 KB, or 32 KB is selectable, and the page size of the logical address range having a high access frequency is 10 KB, the page size of 16 KB is selected. Then, a physical address of the selected page size is obtained from thephysical address space 2, and stored in an entry of the address conversion table 13 (S302). This causes the logical address range relating to the page fault to be mapped in the physical address range. - After that, it is determined whether or not a logical address range that is included in the plurality of logical address ranges accessed according to the
machine language code 21 and is accessed when the page fault occurs has the highest access frequency (S303). If this logical address range has the highest access frequency (Yes in S303), the entry storing this logical address range is selected as a lock candidate (S304). In other words, the lock candidate flag of this entry is set to “1.” On the other hand, if the logical address range accessed when a page fault occurs does not have the highest access frequency (No in S303), the lock candidate flag of the entry storing this address range is set to “0.” - On the other hand, if the logical address range accessed according to the
machine language code 21 does not have a high access frequency when a page fault occurs (No in S301), 4 KB is selected as a default page size, for example (S305). - As described above, the page size of an entry of the address conversion table 13 storing a logical address range having a high access frequency is increased, and thus internal fragmentation is less likely to occur. While an entry storing a logical address range having the highest access frequency is selected as a lock candidate in S303 and S304, an entry storing a logical address range having an access frequency higher than or equal to a threshold value may be selected as a lock candidate.
- Next, an example of processing in the
TLB register 14 will be described with reference toFIG. 4 . First, theTLB register 14 refers to the lock candidate flag in the address conversion table 13 to determine whether an entry of the address conversion table 13 to be registered in theTLB 5 is a lock candidate or not (S401). If the entry is a lock candidate (Yes in S401), it is determined whether or not there is free space in the lock field of the TLB 5 (S402). If there is free space in the lock field of the TLB 5 (Yes in S402), the entry of the address conversion table 13 that is a lock candidate is registered in the lock field of the TLB 5 (S403). If there exist a plurality of entries that are lock candidates, these entries may be registered in the lock field of theTLB 5 in order of processing of theTLB register 14. If there is no free space in the lock field of the TLB 5 (No in S402), the entry of the address conversion table 13 that is a lock candidate is registered in the non-lock field of the TLB 5 (S404). - On the other hand, if an entry of the address conversion table 13 to be registered in the
TLB 5 is not a lock candidate (No in S401), this entry is registered in the non-lock field of the TLB 5 (S404). - That is, the
OS 10 of this embodiment increases the page size of only a TLB entry storing a frequently accessed logical address range regardless of an increase in the number of logical address ranges, thereby efficiently using theTLB 5. Accordingly, a TLB miss can be reduced. Moreover, a lock of a TLB entry storing a logical address range having a high access frequency enables a TLB hit to occur every time this logical address range is accessed. - Note that when the
OS 10 has completed processing of themachine language code 21, theTLB register 14 preferably moves, to the non-lock field, an entry that is registered in the lock field of theTLB 5 and referred to during execution of themachine language code 21. In this case, the addressconversion table creator 12 changes, from a lock candidate to a non-lock candidate, the entry of the address conversion table 13 corresponding to the entry moved to the non-lock field of theTLB 5. -
FIG. 5 is a block diagram showing a configuration of a compiler system generating themachine language program 20 illustrated inFIG. 1 . Acompiler system 30 illustrated inFIG. 5 compiles a high-level language program 27, which is a source program, to generate themachine language program 20. Thecompiler system 30 includes aparser 31, anoptimizer 32, acode generator 34, and anoutput portion 35. - The
parser 31 splits the high-level language program 27 written in the C language etc. illustrated inFIG. 6 into tokens, and then analyzes a structure of the high-level language program 27 based on the split tokens to generate an intermediate code. - Referring back to
FIG. 5 , theoptimizer 32 converts the intermediate code into an efficient code to minimize time etc. during which themachine language code 21 is executed. In addition, theoptimizer 32 includes anaccess frequency analyzer 33. Theaccess frequency analyzer 33 extracts information about variables a, b, and c used in the high-level language program 27 illustrated inFIG. 6 . Specifically, logical address ranges accessed by the variables a, b, and c are obtained based on start addresses and sizes of the variables a, b, and c. Moreover, theaccess frequency analyzer 33 calculates the frequency of access of the variables a, b, and c to the obtained logical address ranges. Theaccess frequency analyzer 33 may be provided outside theoptimizer 32. In this case, theoptimizer 32 is optional. - Referring back to
FIG. 5 , thecode generator 34 generates themachine language code 21. Theoutput portion 35 associates a logical address range with its access frequency to generate theaccess frequency information 22, and then outputs themachine language program 20 illustrated inFIG. 7 and including themachine language code 21 and theaccess frequency information 22. Here,reference numeral 23 in theaccess frequency information 22 illustrated inFIG. 7 denotes the start addresses of the variables a, b, and c in the high-level language program 27.Reference numeral 24 denotes the sizes of the variables a, b, and c.Reference numeral 25 denotes the access frequencies of the variables a, b, and c. The logical address range is indicated by the start addresses 23 and thesizes 24 of the variables a, b, and c. Theoutput portion 35 may separate theaccess frequency information 22 from themachine language program 20 to output theaccess frequency information 22 to another file. - Next, an example of calculation of the
access frequencies 25 by theaccess frequency analyzer 33 will be described with reference toFIGS. 8 and 9A-9C . - First, it is determined whether or not the high-
level language program 27 contains a function not registered in a table 36 illustrated inFIG. 9A (S801). If there is a function not registered in the table 36 (Yes in S801), the name of this function and the total number of calls of this function are registered in the table 36 (S802). For example, inFIG. 6 , afunction func 1 is called only once in the high-level language program 27, and thus the total number of calls is “1.” Then, a variable used in a function of the high-level language program 27 and, if any, a nested level of a loop in which this variable appears are associated with the name of the function, and then registered in the table 37 illustrated inFIG. 9B (S803). For example, inFIG. 6 , the nested level of the loop in which the variable a appears in thefunction func 1 is “1.” Thus, “(a, 1)” is associated with thefunction func 1, and registered in the table 37. The process subsequently returns to step S801 to repeat from step S801 to step S803. In such a manner, the tables 36 and 37 are created. Note that if a variable appears outside the loop, the nested level thereof only has to be “1.” - On the other hand, if there is no function not registered in the table 36 (No in S801), an access frequency is calculated based on the tables 36 and 37 (S804). Specifically, regarding a function name common to the tables 36 and 37, an access frequency f can be calculated by the equation: f=the number of calls of a function in the table 36×m +the nested level of a loop in the table 37×n, where the parameter m represents the weight of the number of calls of a function in the table 36, and the parameter n represents the weight of the nested level of a loop in the table 37.
- Thus, from the tables 36 and 37, access frequencies fa, fb, and fc of the variables a, b, and c used in the high-
level language program 27 illustrated inFIG. 6 can be calculated by -
fa=1×m+1×n=m+n, -
fb=1×m+2 ×n=m+2n, -
and -
fc=2×m+2×n=2m+2n, - respectively. The variables a, b, and c, and the access frequencies thereof are subsequently registered in the table 38 illustrated in
FIG. 9C . Here, theaccess frequencies 25 illustrated inFIG. 7 are values determined by -
fa=m+n=10+20=30, -
fb=m+2n=10+2×20=50, -
and -
fc=2m+2n=2×10+2×20=60, - where the parameter m is 10 and the parameter n is 20.
- In such a manner, a TLB miss rate can be minimized when the
OS 10 illustrated inFIG. 1 executes themachine language program 20 generated by thecompiler system 30 of this embodiment. - Generally, in many high-level language programs, a nested level of a loop in which a variable appears, and the number of calls of at least one function for which the variable is used are static, and the number of loops is dynamic. When the nested level of a loop and the number of calls of at least one function increase, the
access frequencies 25 increase. - Thus, the
access frequencies 25 are preferably calculated based on the nested level of a loop and the number of calls of at least one function. Alternatively, theaccess frequencies 25 may be calculated based on only the number of calls of at least one function. In addition, the values of the parameters m and n are arbitrary. - Note that if the number of a loop in which a variable appears is static in a high-level language program, this number of a loop may serve as the
access frequency 25. In addition to the number of calls of at least one function and a nested level of a loop, thecompiler system 30 may read, from a profile etc., dynamic information affecting fluctuations of theaccess frequencies 25 to calculate theaccess frequencies 25.
Claims (4)
1. A compiler system configured to compile a source program and generate a machine language program, the compiler system comprising:
an access frequency analyzer configured to analyze the source program and obtain a logical address range accessed by at least one variable in the source program, and the frequency of access to the logical address range; and
an output portion configured to associate the logical address range with the access frequency to generate access frequency information, and output the machine language program including the access frequency information and the machine language code.
2. The compiler system of claim 1 , wherein
the access frequency analyzer calculates the access frequency based on the number of calls of at least one function in which the variable appears.
3. The compiler system of claim 2 , wherein
when the variable appears in a loop, the access frequency analyzer considers the nested level of this loop to calculate the access frequency.
4. The compiler system of claim 3 , wherein
the access frequency analyzer weights the number of calls of the at least one function and the nested level of the loop to calculate the access frequency.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/217,633 US20160328218A1 (en) | 2011-01-12 | 2016-07-22 | Program execution device and compiler system |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011-004246 | 2011-01-12 | ||
JP2011004246 | 2011-01-12 | ||
PCT/JP2011/004214 WO2012095901A1 (en) | 2011-01-12 | 2011-07-26 | Program execution device and compiler system |
US13/913,130 US9501423B2 (en) | 2011-01-12 | 2013-06-07 | Program execution device and compiler system |
US15/217,633 US20160328218A1 (en) | 2011-01-12 | 2016-07-22 | Program execution device and compiler system |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/913,130 Division US9501423B2 (en) | 2011-01-12 | 2013-06-07 | Program execution device and compiler system |
Publications (1)
Publication Number | Publication Date |
---|---|
US20160328218A1 true US20160328218A1 (en) | 2016-11-10 |
Family
ID=46506834
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/913,130 Active 2033-04-03 US9501423B2 (en) | 2011-01-12 | 2013-06-07 | Program execution device and compiler system |
US15/217,633 Abandoned US20160328218A1 (en) | 2011-01-12 | 2016-07-22 | Program execution device and compiler system |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/913,130 Active 2033-04-03 US9501423B2 (en) | 2011-01-12 | 2013-06-07 | Program execution device and compiler system |
Country Status (4)
Country | Link |
---|---|
US (2) | US9501423B2 (en) |
JP (1) | JP5702808B2 (en) |
CN (1) | CN103282890B (en) |
WO (1) | WO2012095901A1 (en) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103473319B (en) * | 2013-09-12 | 2017-02-15 | 中国科学院声学研究所 | Statistical method for hotspot data |
US9430375B2 (en) * | 2013-12-30 | 2016-08-30 | International Business Machines Corporation | Techniques for storing data in bandwidth optimized or coding rate optimized code words based on data access frequency |
KR102430198B1 (en) | 2014-06-12 | 2022-08-05 | 삼성전자주식회사 | A method of organizing an address mapping table in a flash storage device |
CN106326150B (en) * | 2015-06-26 | 2020-09-15 | 中兴通讯股份有限公司 | Memory access processing method and device |
US10452539B2 (en) | 2016-07-19 | 2019-10-22 | Sap Se | Simulator for enterprise-scale simulations on hybrid main memory systems |
US10474557B2 (en) | 2016-07-19 | 2019-11-12 | Sap Se | Source code profiling for line-level latency and energy consumption estimation |
US10698732B2 (en) * | 2016-07-19 | 2020-06-30 | Sap Se | Page ranking in operating system virtual pages in hybrid memory systems |
US10540098B2 (en) | 2016-07-19 | 2020-01-21 | Sap Se | Workload-aware page management for in-memory databases in hybrid main memory systems |
US10783146B2 (en) | 2016-07-19 | 2020-09-22 | Sap Se | Join operations in hybrid main memory systems |
US10437798B2 (en) | 2016-07-19 | 2019-10-08 | Sap Se | Full system simulator and memory-aware splay tree for in-memory databases in hybrid memory systems |
US11977484B2 (en) | 2016-07-19 | 2024-05-07 | Sap Se | Adapting in-memory database in hybrid memory systems and operating system interface |
US10387127B2 (en) | 2016-07-19 | 2019-08-20 | Sap Se | Detecting sequential access data and random access data for placement on hybrid main memory for in-memory databases |
US11010379B2 (en) | 2017-08-15 | 2021-05-18 | Sap Se | Increasing performance of in-memory databases using re-ordered query execution plans |
CN112540939A (en) * | 2019-09-23 | 2021-03-23 | 阿里巴巴集团控股有限公司 | Storage management device, storage management method, processor and computer system |
US20220206955A1 (en) * | 2020-12-26 | 2022-06-30 | Intel Corporation | Automated translation lookaside buffer set rebalancing |
Citations (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5956756A (en) * | 1993-09-08 | 1999-09-21 | Sun Microsystems, Inc. | Virtual address to physical address translation of pages with unknown and variable sizes |
US6223256B1 (en) * | 1997-07-22 | 2001-04-24 | Hewlett-Packard Company | Computer cache memory with classes and dynamic selection of replacement algorithms |
US6397379B1 (en) * | 1999-01-28 | 2002-05-28 | Ati International Srl | Recording in a program execution profile references to a memory-mapped active device |
US20020099930A1 (en) * | 2000-12-04 | 2002-07-25 | Mitsubishi Denki Kabushiki Kaisha | Data processor having translator and interpreter that execute non-native instructions |
US6549959B1 (en) * | 1999-08-30 | 2003-04-15 | Ati International Srl | Detecting modification to computer memory by a DMA device |
US6684304B2 (en) * | 1999-01-29 | 2004-01-27 | Micron Technology, Inc. | Method to access memory based on a programmable page limit |
US20040139473A1 (en) * | 2003-01-10 | 2004-07-15 | Adc Broadband Access Systems, Inc. | Increasing capacity in a cable modem termination system (CMTS) with passive redundancy |
US6829678B1 (en) * | 2000-07-18 | 2004-12-07 | International Business Machines Corporation | System for determining the order and frequency in which space is allocated on individual storage devices |
US20050235119A1 (en) * | 2002-10-04 | 2005-10-20 | Microsoft Corporation | Methods and mechanisms for proactive memory management |
US7082508B2 (en) * | 2003-06-24 | 2006-07-25 | Intel Corporation | Dynamic TLB locking based on page usage metric |
US7155617B2 (en) * | 2002-08-01 | 2006-12-26 | Texas Instruments Incorporated | Methods and systems for performing dynamic power management via frequency and voltage scaling |
US7174468B2 (en) * | 2002-08-01 | 2007-02-06 | Texas Instruments Incorporated | Methodology for coordinating and tuning application power |
US20070150881A1 (en) * | 2005-12-22 | 2007-06-28 | Motorola, Inc. | Method and system for run-time cache logging |
US20080216073A1 (en) * | 1999-01-28 | 2008-09-04 | Ati International Srl | Apparatus for executing programs for a first computer architechture on a computer of a second architechture |
US7636832B2 (en) * | 2006-10-26 | 2009-12-22 | Intel Corporation | I/O translation lookaside buffer performance |
US7702843B1 (en) * | 2006-04-27 | 2010-04-20 | Vmware, Inc. | Determining memory conditions in a virtual machine |
US20110153307A1 (en) * | 2009-12-23 | 2011-06-23 | Sebastian Winkel | Transitioning From Source Instruction Set Architecture (ISA) Code To Translated Code In A Partial Emulation Environment |
US20110307876A1 (en) * | 2010-06-14 | 2011-12-15 | Ottoni Guilherme D | Register mapping techniques for efficient dynamic binary translation |
US9880846B2 (en) * | 2012-04-11 | 2018-01-30 | Nvidia Corporation | Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05165727A (en) * | 1991-12-11 | 1993-07-02 | Nec Eng Ltd | Address conversion mechanism incorporated microprocessor |
JPH0962574A (en) * | 1995-08-28 | 1997-03-07 | Mitsubishi Electric Corp | Memory address allocation method |
US6003115A (en) * | 1997-07-29 | 1999-12-14 | Quarterdeck Corporation | Method and apparatus for predictive loading of a cache |
JP2000057054A (en) | 1998-08-12 | 2000-02-25 | Fujitsu Ltd | High speed address translation system |
DE59811962D1 (en) * | 1998-09-04 | 2004-10-21 | Hyperstone Ag | ACCESS CONTROL OF A RESTRICTED ERASE FREQUENCY |
JP4912718B2 (en) * | 2006-03-30 | 2012-04-11 | 富士通セミコンダクター株式会社 | Dynamic semiconductor memory |
JP2007286705A (en) * | 2006-04-13 | 2007-11-01 | Yokogawa Electric Corp | Address conversion device |
US7783859B2 (en) | 2007-07-12 | 2010-08-24 | Qnx Software Systems Gmbh & Co. Kg | Processing system implementing variable page size memory organization |
JP2010191645A (en) | 2009-02-18 | 2010-09-02 | Yokogawa Electric Corp | Address mapping method |
-
2011
- 2011-07-26 WO PCT/JP2011/004214 patent/WO2012095901A1/en active Application Filing
- 2011-07-26 CN CN201180062728.1A patent/CN103282890B/en active Active
- 2011-07-26 JP JP2012552536A patent/JP5702808B2/en active Active
-
2013
- 2013-06-07 US US13/913,130 patent/US9501423B2/en active Active
-
2016
- 2016-07-22 US US15/217,633 patent/US20160328218A1/en not_active Abandoned
Patent Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5956756A (en) * | 1993-09-08 | 1999-09-21 | Sun Microsystems, Inc. | Virtual address to physical address translation of pages with unknown and variable sizes |
US6223256B1 (en) * | 1997-07-22 | 2001-04-24 | Hewlett-Packard Company | Computer cache memory with classes and dynamic selection of replacement algorithms |
US6397379B1 (en) * | 1999-01-28 | 2002-05-28 | Ati International Srl | Recording in a program execution profile references to a memory-mapped active device |
US20080216073A1 (en) * | 1999-01-28 | 2008-09-04 | Ati International Srl | Apparatus for executing programs for a first computer architechture on a computer of a second architechture |
US6684304B2 (en) * | 1999-01-29 | 2004-01-27 | Micron Technology, Inc. | Method to access memory based on a programmable page limit |
US6549959B1 (en) * | 1999-08-30 | 2003-04-15 | Ati International Srl | Detecting modification to computer memory by a DMA device |
US7934056B2 (en) * | 2000-07-18 | 2011-04-26 | International Business Machines Corporation | Allocating space on data storage devices in proportion to weights associated with the devices |
US6829678B1 (en) * | 2000-07-18 | 2004-12-07 | International Business Machines Corporation | System for determining the order and frequency in which space is allocated on individual storage devices |
US20020099930A1 (en) * | 2000-12-04 | 2002-07-25 | Mitsubishi Denki Kabushiki Kaisha | Data processor having translator and interpreter that execute non-native instructions |
US7155617B2 (en) * | 2002-08-01 | 2006-12-26 | Texas Instruments Incorporated | Methods and systems for performing dynamic power management via frequency and voltage scaling |
US7174468B2 (en) * | 2002-08-01 | 2007-02-06 | Texas Instruments Incorporated | Methodology for coordinating and tuning application power |
US20050235119A1 (en) * | 2002-10-04 | 2005-10-20 | Microsoft Corporation | Methods and mechanisms for proactive memory management |
US20040139473A1 (en) * | 2003-01-10 | 2004-07-15 | Adc Broadband Access Systems, Inc. | Increasing capacity in a cable modem termination system (CMTS) with passive redundancy |
US7082508B2 (en) * | 2003-06-24 | 2006-07-25 | Intel Corporation | Dynamic TLB locking based on page usage metric |
US20070150881A1 (en) * | 2005-12-22 | 2007-06-28 | Motorola, Inc. | Method and system for run-time cache logging |
US7702843B1 (en) * | 2006-04-27 | 2010-04-20 | Vmware, Inc. | Determining memory conditions in a virtual machine |
US7636832B2 (en) * | 2006-10-26 | 2009-12-22 | Intel Corporation | I/O translation lookaside buffer performance |
US20110153307A1 (en) * | 2009-12-23 | 2011-06-23 | Sebastian Winkel | Transitioning From Source Instruction Set Architecture (ISA) Code To Translated Code In A Partial Emulation Environment |
US20110307876A1 (en) * | 2010-06-14 | 2011-12-15 | Ottoni Guilherme D | Register mapping techniques for efficient dynamic binary translation |
US9880846B2 (en) * | 2012-04-11 | 2018-01-30 | Nvidia Corporation | Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries |
Also Published As
Publication number | Publication date |
---|---|
JP5702808B2 (en) | 2015-04-15 |
CN103282890A (en) | 2013-09-04 |
US20130275716A1 (en) | 2013-10-17 |
US9501423B2 (en) | 2016-11-22 |
CN103282890B (en) | 2015-11-25 |
JPWO2012095901A1 (en) | 2014-06-09 |
WO2012095901A1 (en) | 2012-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9501423B2 (en) | Program execution device and compiler system | |
US9798528B2 (en) | Software solution for cooperative memory-side and processor-side data prefetching | |
JP5473768B2 (en) | Method, system, and computer program for causing a computer to execute multipath dynamic profiling | |
US8984497B2 (en) | Source code converting, method program, and systems for first programming language to a code in a second programming language | |
JP5583514B2 (en) | Compiling method for optimizing binary code, compiler system thereof, and computer program | |
US11023203B2 (en) | Method, device, and computer program for merge-sorting record groups having tree structure efficiently | |
US10372430B2 (en) | Method of compiling a program | |
US9280350B2 (en) | Methods and apparatus to perform adaptive pre-fetch operations in managed runtime environments | |
KR20020039688A (en) | Method and apparatus for maintaining context while executing translated instruction | |
US20210326864A1 (en) | Methods, blockchain nodes, and storage media for executing smart contract | |
JP6379654B2 (en) | Process execution program, process execution method, and information processing apparatus | |
CN103412754A (en) | Dynamic language code execution method and device | |
US9507576B2 (en) | Optimizing if statements in computer programming | |
CN116257552A (en) | Database query statement optimization method, storage medium and device | |
KR101537725B1 (en) | Method and system for determining work-group size and computer readable recording medium therefor | |
US20210036944A1 (en) | Ranking service implementations for a service interface | |
JP5871589B2 (en) | Information processing apparatus, array initial size adjustment program and method | |
JP2006163686A (en) | Compiling method, compiling program, compiling device and recording medium for compile | |
US10416967B2 (en) | Method of optimizing vargs in object-oriented programming languages | |
US20090249292A1 (en) | Processing strings based on whether the strings are short strings or long strings | |
US7770152B1 (en) | Method and apparatus for coordinating state and execution context of interpreted languages | |
JP2002182926A (en) | Compiling method and computer readable recording medium | |
US12039308B2 (en) | Information processing device and compiler method | |
JP2007272672A (en) | Compilation optimization method and compiler | |
Ide et al. | Just-in-time Compiler for KonohaScript Using LLVM |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |