US20160328218A1 - Program execution device and compiler system - Google Patents

Program execution device and compiler system Download PDF

Info

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
Application number
US15/217,633
Inventor
Yoshitaka Nishida
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Socionext Inc
Original Assignee
Socionext Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Socionext Inc filed Critical Socionext Inc
Priority to US15/217,633 priority Critical patent/US20160328218A1/en
Publication of US20160328218A1 publication Critical patent/US20160328218A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • 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/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details 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

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • 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.
  • BACKGROUND
  • 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 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. 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).
  • SUMMARY
  • 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.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • 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.
  • DETAILED DESCRIPTION
  • 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.
  • 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. In this embodiment, 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. Specifically, 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. 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.” Here, the lock field is an entry of the TLB 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 to FIG. 3. Specifically, an example of a page fault occurring when the plurality of logical address ranges are accessed according to the machine 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 the machine 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 the physical 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 to FIG. 4. First, 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 (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 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 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 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.
  • Note that when the OS 10 has completed processing of the machine language code 21, 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. In this case, 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.
  • Referring back to FIG. 5, the optimizer 32 converts the intermediate code into an efficient code to minimize time etc. during which the machine language code 21 is executed. In addition, 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. Moreover, 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.
  • Referring back to FIG. 5, 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. Here, 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.
  • Next, an example of calculation of the access frequencies 25 by the access frequency analyzer 33 will be described with reference to FIGS. 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 in FIG. 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, 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 (S803). For example, in FIG. 6, the nested level of the loop in which the variable a appears in the function func 1 is “1.” Thus, “(a, 1)” is associated with the function 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 in FIG. 6 can be calculated by

  • fa=m+n=m+n,

  • fb=m+2 ×n=m+2n,

  • and

  • fc=m+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, the access frequencies 25 illustrated in FIG. 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 in FIG. 1 executes the machine language program 20 generated by the compiler 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, 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.
  • 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, 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.

Claims (4)

What is claimed is:
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.
US15/217,633 2011-01-12 2016-07-22 Program execution device and compiler system Abandoned US20160328218A1 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (20)

* Cited by examiner, † Cited by third party
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