WO2018168264A1 - 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム - Google Patents

情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム Download PDF

Info

Publication number
WO2018168264A1
WO2018168264A1 PCT/JP2018/004181 JP2018004181W WO2018168264A1 WO 2018168264 A1 WO2018168264 A1 WO 2018168264A1 JP 2018004181 W JP2018004181 W JP 2018004181W WO 2018168264 A1 WO2018168264 A1 WO 2018168264A1
Authority
WO
WIPO (PCT)
Prior art keywords
unit
cache
data processing
cache control
data
Prior art date
Application number
PCT/JP2018/004181
Other languages
English (en)
French (fr)
Inventor
貴志 清水
渡部 康弘
Original Assignee
富士通株式会社
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 富士通株式会社 filed Critical 富士通株式会社
Publication of WO2018168264A1 publication Critical patent/WO2018168264A1/ja

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
    • 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/12Replacement control
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form

Definitions

  • the present invention relates to an information processing apparatus, an information processing apparatus control method, and an information processing apparatus control program.
  • the logic built in the FPGA is generated by sequentially converting a source file described in a high-level language into a control flow graph expression and a control data flow graph expression, and converting the control data flow graph expression into a hardware description language.
  • a technique is known in which a compiler determines a part executed by software and a part executed by hardware in a source file (see, for example, Patent Document 3).
  • a data access pattern is analyzed in advance by executing a program, and data to be processed by a plurality of arithmetic units is specified based on the analysis result.
  • a cache memory is connected to each of the plurality of arithmetic units, the specified data is stored in a cache memory corresponding to the arithmetic unit that processes the data (see, for example, Patent Document 4).
  • a memory access pattern by the data processing unit installed in the FPGA is different for each application. For this reason, when a general-purpose cache memory is used, cache efficiency such as a cache hit rate may be reduced. For example, data held in the cache memory is replaced according to an LRU (Least Recently Used) method.
  • LRU Least Recently Used
  • the LRU method is not necessarily suitable for all applications.
  • a method for optimizing cache efficiency for each application in a domain-oriented information processing apparatus has not been proposed.
  • an object of the present invention is to optimize cache efficiency according to the characteristics of memory access by a data processing unit programmed in a programmable unit.
  • the information processing apparatus includes a storage unit that stores data, a data processing unit that processes data stored in the storage unit, a cache memory unit that stores data used in the data processing unit, and data
  • a cache control unit that determines whether data read from the storage unit by the processing unit is stored in the cache memory unit based on the cache control information, and a cache control that generates cache control information based on a memory access request issued by the data processing unit
  • the present invention can optimize the cache efficiency according to the characteristics of memory access by the data processing unit programmed in the programmable unit.
  • FIG. 1 It is a figure which shows one Embodiment of the information processing apparatus, the control method of information processing apparatus, and the control program of information processing apparatus. It is a figure which shows an example of the operation
  • FIG. 1 shows an embodiment of an information processing apparatus, a control method for the information processing apparatus, and a control program for the information processing apparatus.
  • An information processing apparatus 100 illustrated in FIG. 1 is, for example, a domain-oriented server, and includes a programmable unit 1 such as an FPGA, a storage unit 2 such as a memory module, and an arithmetic processing unit 3 such as a CPU (Central Processing Unit).
  • the information processing apparatus 100 may include an HDD (Hard Disk Disk Drive), a communication interface, and the like in addition to the elements illustrated in FIG.
  • HDD Hard Disk Disk Drive
  • the cache circuit 1b includes a cache control switching unit 1c, a cache control unit 1d, and a cache memory unit 1e.
  • the cache memory unit 1e stores data used by the data processing unit 1a.
  • the cache control unit 1d executes control to access the storage unit 2 based on a memory access request issued by the data processing unit 1a. Further, the cache control unit 1d determines whether or not the data read from the storage unit 2 by the data processing unit 1a is stored in the cache memory unit 1e based on the cache control information CINF.
  • the cache control switching unit 1c generates the cache control information CINF based on the memory access request (read access request or write access request) issued by the data processing unit 1a.
  • the cache control switching unit 1c uses the cache control information CINF indicating “S” (Shared) based on the read access request. Generate.
  • the cache control switching unit 1c generates cache control information CINF indicating “I” (Invalid) based on the read access request. .
  • the cache control unit 1d outputs a read access request to the storage unit 2 when the cache control information CINF received in response to the read access request is “S”.
  • the cache control unit 1d stores the data read from the storage unit 2 in the cache memory unit 1e and outputs the data to the data processing unit 1a.
  • the cache control unit 1d holds the data in the cache memory unit 1e without outputting a read access request to the storage unit 2.
  • the processed data is output to the data processing unit 1a.
  • the cache control unit 1d outputs a read access request to the storage unit 2 when the cache control information CINF received in response to the read access request is “I”. Then, the cache control unit 1d outputs the data read from the storage unit 2 to the data processing unit 1a without storing it in the cache memory unit 1e.
  • the cache control unit 1d may generate the cache control information CINF when the data processing unit 1a issues a write access request for writing data to the storage unit 2. For example, when the write data output from the data processing unit 1a is held in the cache memory unit 1e, the cache control switching unit 1c generates cache control information CINF indicating “M” (Modified) based on the write access request. . When the data to be written in the storage unit 2 by the data processing unit 1a is not held in the cache memory unit 1e, the cache control switching unit 1c generates cache control information CINF indicating “I” based on the write access request.
  • the cache control unit 1d When the cache control information CINF received in response to the write access request is “M”, the cache control unit 1d stores the data output from the data processing unit 1a in the cache memory unit 1e and does not write it in the storage unit 2. .
  • the cache control unit 1d stores the data output from the data processing unit 1a in the storage unit 2 without storing it in the cache memory unit 1e.
  • the cache control information CINF indicating “M” or “I” generated in response to the write access request issued by the data processing unit 1a is an example of first information.
  • the storage unit 2 includes a semiconductor memory such as an SDRAM (Synchronous Dynamic Random Access Memory), SRAM, or flash memory.
  • the storage unit 2 includes a data area 2a, a program area 2b, and a configuration information area 2c.
  • the data area 2a holds data processed by the data processing unit 1a, data used by the arithmetic processing unit 3, and the like.
  • the program area 2b holds a first program 2d, a second program 2e, a control program 2f, and the like.
  • the first program 2d is used when executing predetermined data processing without using the data processing unit 1a.
  • the first program 2d is a source program including a process equivalent to a process executed by the data processing unit 1a.
  • the second program 2e is used when executing predetermined data processing using the data processing unit 1a.
  • the second program 2e is generated by deleting a process equivalent to the process executed by the data processing unit 1a from the first program 2d and adding a process for calling the data processing unit 1a.
  • the data processing executed by the first program 2d and the data processing executed by the data processing unit 1a according to the instruction of the second program 2e are equivalent to each other.
  • the first program 2d is an example of a processing program. An example of the operation by the first program 2d and the second program 2e is shown in FIG.
  • the control program 2f is executed by the arithmetic processing unit 3a, thereby realizing the functions of the analysis unit 3b, the determination unit 3c, and the configuration control unit 3d.
  • the control program 2f may be stored in a computer-readable recording medium 4 such as a CD-ROM (Compact Disc Read Only Memory), a DVD (Digital Versatile Disc), or a USB (Universal Serial Bus) memory.
  • a computer-readable recording medium 4 such as a CD-ROM (Compact Disc Read Only Memory), a DVD (Digital Versatile Disc), or a USB (Universal Serial Bus) memory.
  • the control program 2 f stored in the recording medium 4 is transferred from the recording medium 4 to the program area 2 b via an input / output interface (not shown) provided in the information processing apparatus 100.
  • the control program may be transferred from the recording medium 4 to an HDD (not shown) and then transferred from the HDD to the program area 2b.
  • the configuration information area 2c holds configuration information of various circuits programmed in the programmable unit 1.
  • the configuration information may be generated in advance, or may be generated by the arithmetic processing device 3 in accordance with the processing performance required for the information processing device 100.
  • the configuration information may be stored in a storage area other than the storage unit 2 of the information processing apparatus 100 or may be stored in a storage area outside the information processing apparatus 100.
  • the arithmetic processing unit 3 includes an arithmetic processing unit 3a such as a CPU core, and an analysis unit 3b, a determination unit 3c, and a configuration control unit 3d realized by executing the control program 2f.
  • an arithmetic processing unit 3a such as a CPU core
  • an analysis unit 3b such as a CPU core
  • a determination unit 3c such as a CPU core
  • a configuration control unit 3d realized by executing the control program 2f.
  • the analysis unit 3b, the determination unit 3c, and the configuration control unit 3d may be mounted on the information processing apparatus 100 as hardware (circuit).
  • at least one of the analysis unit 3b, the determination unit 3c, and the configuration control unit 3d may be realized using the programmable unit 1.
  • the arithmetic processor 3a executes arithmetic processing by executing programs such as the first program 2d, the second program 2e, and the control program 2f, and realizes the function of the information processing apparatus 100.
  • the analysis unit 3b Based on the execution of the first program 2d by the arithmetic processing unit 3a, the analysis unit 3b indirectly detects a memory access request issued by the data processing unit 1a without operating the data processing unit 1a, and generates a memory access request. Analyzes the pattern of access addresses included in the.
  • the determination unit 3c generates the configuration information of the cache control switching unit 1c that is optimal for memory access by the data processing unit 1a based on the access address pattern analyzed by the analysis unit 3b, thereby programming the programmable unit 1 into the cache
  • the control switching unit 1c is determined.
  • the configuration information of the cache control switching unit 1c generated by the determination unit 3c is stored in the configuration information area 2c.
  • the determining unit 3c programs the programmable unit 1 by selecting configuration information to be programmed in the programmable unit 1 from the configuration information of the plurality of cache control switching units 1c already stored in the configuration information area 2c.
  • the cache control switching unit 1c may be determined.
  • the configuration control unit 3d executes control for reading the configuration information of the cache control switching unit 1c generated by the determination unit 3c from the configuration information area 2c and programming it in the programmable unit 1.
  • FIG. 2 shows an example of an operation flow of the information processing apparatus 100 shown in FIG.
  • the flow shown in FIG. 2 receives an instruction to cause the data processing unit 1a to execute part of the data processing executed by the arithmetic processing unit 3a from an administrator who manages the information processing device 100 or a user who uses the information processing device 100. Start based on what you did.
  • step S1 the information processing apparatus 100 starts executing the first program 2d that executes predetermined data processing without using the data processing unit 1a.
  • step S2 the analysis unit 3b of the information processing apparatus 100 indirectly detects a memory access request issued by the data processing unit 1a based on the execution of the first program 2d, and is included in the memory access request. Analyze access address patterns. By using the first program, the access address pattern can be analyzed before the data processing unit 1a and the cache circuit 1b are programmed into the programmable unit 1.
  • step S3 the information processing apparatus 100 proceeds to step S4 when the analysis of the access address pattern by the analysis unit 3b is completed, and performs processing when the analysis of the access address pattern is not completed.
  • step S2 For example, when the characteristics of the access address pattern included in the memory access request issued by the data processing unit 1a are found, the analysis unit 3b completes the analysis of the access address pattern.
  • step S4 the determination unit 3c of the information processing device 100 generates the configuration information of the cache control switching unit 1c based on the access address pattern analyzed by the analysis unit 3b, thereby programming the cache control switching to the programmable unit 1. Part 1c is determined.
  • step S5 the configuration control unit 3d of the information processing apparatus 100 changes the cache control switching unit 1c determined by the determination unit 3c to the programmable unit 1 together with the data processing unit 1a, the cache control unit 1d, and the cache memory unit 1e.
  • the processing from step S2 to step S5 shows an example of a control method of the information processing apparatus 100 and an example of a control program of the information processing apparatus 100.
  • step S6 the information processing apparatus 100 stops the execution of the first program 2d, and starts the execution of the second program 2e from the location corresponding to the location where the execution is stopped. Thereby, it is possible to switch from the first program 2d to the second program 2e without duplicating or missing data processing.
  • FIG. 3 shows an example of the operation of the information processing apparatus 100 shown in FIG. That is, FIG. 2 shows an example of a control method of the information processing apparatus 100.
  • a white rectangle indicates a process executed by the arithmetic processing unit 3a.
  • the hatched rectangle indicates data processing equivalent to data processing executed by the data processing unit 1a or data processing executed by the data processing unit 1a.
  • a shaded rectangle indicates a process executed by the cache control switching unit 1c.
  • the information processing apparatus 100 starts execution of the first program 2d that executes predetermined data processing without using the data processing unit 1a (FIG. 3A).
  • the first program 2d executes data processing equivalent to the data processing executed by the data processing unit 1a (FIG. 3B).
  • the first program 2d executes data processing using the same data as the data used by the data processing unit 1a for data processing.
  • the data processing executed by the data processing unit 1a is an example of first data processing.
  • the data processing executed by the first program 2d is an example of second data processing. In the left parenthesis in FIG. 3, an example of operation when data processing is continued by the first program 2d is shown.
  • the analysis unit 3b monitors the access of the data area 2a by equivalent data processing (that is, a memory access request), and analyzes the pattern of the access address (FIG. 3C). That is, the analysis unit 3b analyzes the access address pattern based on the access to the storage unit 2 when a part of the data processing is executed by the first program 2d.
  • the analysis unit 3b analyzes the characteristics of memory access by the data processing unit 1a. be able to.
  • the determination unit 3c determines to generate the configuration information of the cache control switching unit 1c based on the characteristics of the access address pattern analyzed by the analysis unit 3b, and programs the generated cache control switching unit 1c in the programmable unit 1 To decide (FIG. 3D).
  • the configuration control unit 3d programs the cache control switching unit 1c generated by the determination unit 3c into the programmable unit 1 together with the data processing unit 1a, the cache control unit 1d, and the cache memory unit 1e (FIG. 3 (e)).
  • the data processing unit 1a, the cache control unit 1d, and the cache memory unit 1e may be programmed in the programmable unit 1 before the cache control switching unit 1c is generated (that is, before the start of the operation in FIG. 3).
  • the information processing apparatus 100 stops the execution of the first program 2d and starts the execution of the second program 2e from the location corresponding to the location where the execution is stopped. (FIG. 3 (f)). Then, the second program 2e calls the data processing unit 1a and causes the data processing unit 1a to execute an unexecuted process among the data processes executed by the first program 2d (FIG. 3 (g)).
  • the cache control switching unit 1c While the data processing unit 1a is operating, the cache control switching unit 1c, the cache control unit 1d, and the cache memory unit 1e operate based on the memory access request issued by the data processing unit 1a (FIG. 3 (h)).
  • the cache control switching unit 1c generates cache control information CINF based on the memory access request, and the cache control unit 1d operates based on the cache control information CINF.
  • the cache control information CINF is generated in accordance with the memory access characteristics of the data processing unit 1a, the cache hit rate of the cache circuit 1b is improved as compared with the case of using another cache control switching unit. Can do.
  • the frequency of the eviction process for writing back data from the cache memory unit 1e to the data area 2a to secure a storage area for storing new data decreases.
  • cache efficiency can be improved by reducing useless memory access to the data area 2a, and the processing performance of the information processing apparatus 100 can be improved.
  • the data processing by the data processing unit 1a is executed by hardware programmed in the programmable unit 1. For this reason, the efficiency of data processing by the data processing unit 1a is higher than the efficiency of data processing by the first program 2d (software). Therefore, the data processing by the data processing unit 1a is completed earlier than the case where the data processing equivalent to the data processing executed by the data processing unit 1a is executed by the first program 2d (FIG. 3 (i)).
  • the second program 2e executes processing by software (FIG. 3 (j)). Thereafter, the second program 2e calls the data processing unit 1a to cause the data processing unit 1a to execute data processing, and the data processing unit 1a executes data processing (FIG. 3 (k)). As described above, the data processing by the data processing unit 1a is completed earlier than the data processing by the first program 2d (FIG. 3 (l)). Then, after the data processing by the data processing unit 1a is completed, the second program 2e executes processing by software, and the entire processing is completed (FIG. 3 (m)). As shown in FIG. 3, the entire processing executed by the second program 2e including data processing by the data processing unit 1a is completed earlier than the entire processing executed by the first program 2d.
  • the information processing apparatus 100 analyzes the pattern of the access address included in the memory access request output from the data processing unit 1 a and obtains the cache control information CINF based on the analysis result.
  • the output cache control switching unit 1c is generated.
  • the first program 2d executed by the information processing apparatus 100 executes data processing using the same data as the data used by the data processing unit 1a for data processing. Therefore, the analysis unit 3b can analyze the characteristics of memory access by the data processing unit 1a without operating the data processing unit 1a.
  • the cache efficiency such as the cache hit rate of the cache circuit 1b can be optimized in accordance with the memory access characteristics of the data processing unit 1a before being mounted on the programmable unit 1.
  • useless memory access to the data area 2a can be reduced, cache efficiency can be improved, and processing performance of the information processing apparatus 100 can be improved.
  • the information processing apparatus 100 uses the first program, which is a source program including a process to be executed by the data processing unit 1a, so that the data processing unit 1a and the cache circuit 1b can be changed in the access address before being mounted on the programmable unit 1.
  • the pattern can be analyzed.
  • the analysis of the access address pattern is completed, by causing the second program to continue the processing by the first program, it is possible to eliminate the waste of redundantly executing the same processing in the first program and the second program. Can do.
  • the cache control switching unit 1c is added to the programmable unit 1 without preparing the logic of the plurality of types of cache control switching unit 1c in advance. Can be programmed.
  • FIG. 4 shows another embodiment of the information processing apparatus, the control method for the information processing apparatus, and the control program for the information processing apparatus. Elements that are the same as or similar to those described in the embodiment shown in FIGS. 1 to 3 are given the same reference numerals, and detailed descriptions thereof are omitted.
  • An information processing apparatus 100A illustrated in FIG. 4 is, for example, a domain-oriented server.
  • the information processing apparatus 100A includes a programmable unit 10 such as an FPGA, a main memory 20, an arithmetic processing unit 30 such as a CPU, an input / output interface 40, an HDD 50, and a communication interface 60.
  • the programmable unit 10 is programmed with circuits such as a data processing unit 10a and a cache circuit 10b that process data used in a specific application.
  • the data processing unit 10a operates based on control of an application program (second program) executed by the CPU core 30a, and executes data processing instead of the CPU core 30a.
  • the data processing unit 10a is an example of a data processing unit that processes data.
  • the data processing executed by the data processing unit 10a is an example of first data processing. Access to the main memory 20 (data read or data write) by the data processing unit 10a is executed via the cache circuit 10b and the LLC (Last Level Cache) 30b.
  • the cache circuit 10b includes a cache control switching unit 10c, a cache control unit 10d, and a cache memory unit 10e.
  • the cache control switching unit 10c determines a cache hint and burst length to be output to the cache control unit 10d based on a memory access request (read access request or write access request) issued by the data processing unit 10a.
  • the cache hint includes information indicating whether or not the data received from the LLC 30b is held in the cache memory unit 10e based on the read access request.
  • the cache hint includes information indicating whether the write data is written to the cache memory unit 10e or output to the LLC 30b when the data processing unit 10a issues a write access request together with the write data.
  • the burst length includes information indicating the length of data received from the LLC 30b when the data processing unit 10a issues a read access request.
  • the cache hint and burst length are examples of cache control information output from the cache control switching unit 10c.
  • the burst length is an example of second information in the cache control information.
  • the cache circuit 10b executes control for maintaining data consistency using a MESI (Modified, Exclusive, Shared, Invalid) protocol.
  • MESI Modified, Exclusive, Shared, Invalid
  • “Modified” indicates a state in which the data held in the cache memory unit 10 e is updated (rewritten) and is different from the data held in the LLC 30 b or the main memory 20.
  • “Exclusive” indicates a state in which data to be accessed is held only in the cache memory unit 10e and the data is not updated.
  • “Shared” indicates that the data to be accessed is held in, for example, the LLC 30b and the cache memory unit 10e, and the data is not updated.
  • “Invalid” indicates that the data held in the cache memory unit 10e is invalid.
  • the cache control unit 10d When the cache control unit 10d receives a read access request from the data processing unit 10a, the cache control unit 10d determines whether the access target data is held in the cache memory unit 10e. When the target data is held in the cache memory unit 10e (cache hit), the cache control unit 10d reads the data from the cache memory unit 10e and outputs the read data to the data processing unit 10a.
  • the cache control unit 10d When the target data is not held in the cache memory unit 10e (cache miss), the cache control unit 10d issues a read access request to the LLC 30b and receives data output from the LLC 30b. Thereafter, the cache control unit 10d operates as follows according to the cache hint received from the cache control switching unit 10c in response to the read access request.
  • the cache control unit 10d When the cache hint is “S”, the cache control unit 10d outputs the data received from the LLC 30b to the data processing unit 10a and stores it in the cache memory unit 10e. When there is no free space for storing data in the cache memory unit 10e, the cache control unit 10d executes a eviction process for writing back any of the data held by the cache memory unit 10e to the LLC 30b.
  • the eviction process includes a write access request for writing data back to the LLC 30b.
  • the cache control unit 10d When the cache hint is “I”, the cache control unit 10d outputs the data received from the LLC 30b to the data processing unit 10a without storing it in the cache memory unit 10e. When a cache miss occurs, the cache control unit 10d issues a read access request to the LLC 30b for reading out data from the LLC 30b corresponding to the burst length output from the cache control switching unit 10c in response to the read access request. To do.
  • the cache control unit 10d determines whether the access target data is held in the cache memory unit 10e.
  • the cache control unit 10d operates as follows according to the cache hint received from the cache control switching unit 10c in response to the write access request. To do.
  • the cache control unit 10d When the cache hint is “M”, the cache control unit 10d overwrites the cache hit target data held in the cache memory unit 10e with the write data, and does not issue a write access request to the LLC 30b.
  • the cache control unit 10d deletes the cache hit target data held by the cache memory unit 10e, and issues a write access request for writing the write data to the LLC 30b to the LLC 30b.
  • the cache hint “M” or “I” output by the cache control unit 10d based on the write access request is an example of first information.
  • the cache control unit 10d When the target data is not held in the cache memory unit 10e (cache miss), the cache control unit 10d operates as follows according to the cache hint received from the cache control switching unit 10c in response to the write access request To do.
  • the cache control unit 10d issues a data read request corresponding to the write data to the LLC 30b, replaces the data received from the LLC 30b with the write data, and stores the data in the cache memory unit 10e.
  • the bit width of the write data is smaller than the bit width of the data received from the LLC 30b, a part of the data received from the LLC 30b is replaced with the write data.
  • the cache hint is “I”
  • the cache control unit 10d issues a write access request for writing the write data to the LLC 30b to the LLC 30b.
  • the cache memory unit 10e has a plurality of entries (cache lines) which are units of data input / output, and data input / output to the LLC 30b is executed in units of cache lines.
  • cache lines are units of data input / output, and data input / output to the LLC 30b is executed in units of cache lines.
  • the main memory 20 is, for example, a memory module in which a plurality of SDRAMs are mounted, and includes a data area 20a, a program area 20b, and a configuration information area 20c.
  • the main memory 20 is an example of a storage unit.
  • the data area 20a holds data processed by the data processing unit 10a and data used by the arithmetic processing unit 30.
  • the program area 20b holds various programs 20d such as an OS, a management program, and an application program, a control program 20e, and the like.
  • one of the application programs is a first program that executes predetermined data processing without using the data processing unit 10a.
  • the first program is an example of a processing program including a function for executing data processing equivalent to data processing executed by the data processing unit 10a.
  • Data processing executed by the first program is an example of second data processing.
  • Another one of the application programs is a second program that executes predetermined data processing using the data processing unit 10a.
  • the various programs 20d and the control program 20e stored in the program area 20b are stored in the HDD 50 via a computer-readable recording medium 70 such as a CD-ROM, DVD, USB memory, or the network NW. Thereafter, the various programs 20 d and the control program 20 e are transferred from the HDD 50 to the main memory 20.
  • the configuration information area 20c holds configuration information of various circuits programmed in the programmable unit 10.
  • the programmable unit 10 realizes functions of the data processing unit 10a, the cache circuit 10b, and the like.
  • the configuration information may be generated in advance, or may be generated by a logic synthesis program executed by the arithmetic processing device 30 in accordance with the processing performance required for the information processing apparatus 100A.
  • the configuration information may be stored in a storage area other than the main memory 20, or may be stored in a storage area outside the information processing apparatus 100A.
  • the arithmetic processing unit 30 has a plurality of CPU cores 30a, LLC 30b, and MMU (Memory Management Unit) 30c capable of executing various programs in parallel.
  • the programmable unit 10 is connected to the LLC 30b of the arithmetic processing unit 30 via the bus BUS1, and the main memory 20 is connected to the MMU 30c of the arithmetic processing unit 30 via the bus BUS2.
  • the arithmetic processing unit 30 controls the overall operation of the information processing apparatus 100A by executing an OS (Operating System) and a management program by the CPU core 30a. Moreover, the arithmetic processing unit 30 functions as a domain-oriented server by executing an application program by the CPU core 30a.
  • OS Operating System
  • the arithmetic processing unit 30 functions as a domain-oriented server by executing an application program by the CPU core 30a.
  • the arithmetic processing unit 30 functions as an analysis unit 30d, a determination unit 30e, and a configuration control unit 30f by the CPU core 30a executing the control program 20e.
  • the analysis unit 30d, the determination unit 30e, and the configuration control unit 30f may be mounted on the information processing apparatus 100A as hardware (circuit).
  • the LLC 30b is a kind of cache memory, and is the cache memory that is farthest from the CPU core 30a (that is, closest to the main memory 20).
  • the MMU 30 c manages memory access to the main memory 20. For example, the MMU 30 c converts a virtual address output from the CPU core 30 a into a physical address assigned to the main memory 20.
  • the functions of the analysis unit 30d, the determination unit 30e, and the configuration control unit 30f are the same as the functions of the analysis unit 3b, the determination unit 3c, and the configuration control unit 3d described with reference to FIGS.
  • the operations of the analysis unit 30d, the determination unit 30e, and the configuration control unit 30f will be described with reference to FIGS.
  • One of the input / output interfaces 40 is connected to an optical drive device to which a recording medium 70 such as a DVD is mounted, or has a connector to which a USB memory or the like is mounted.
  • the other input / output interface 40 is connected to an input device such as a mouse and a keyboard (not shown) and an output device such as a display (not shown).
  • the HDD 50 stores programs and configuration information stored in the main memory 20.
  • the communication interface 60 is connected to a network NW such as the Internet or an intranet, and inputs / outputs information to / from the network NW.
  • the input / output interface 40, the HDD 50, and the communication interface 60 are connected to the arithmetic processing unit 30 via the bus BUS3.
  • FIG. 5 shows an example of the chip configuration of the programmable unit 10 shown in FIG.
  • the programmable unit 10 includes a plurality of input / output terminals IO indicated by hatched rectangles, a plurality of ALMs (Adaptive Logic Modules) indicated by white rectangles, a plurality of memories M1, a plurality of memories M2, and a plurality of DSPs (Digital Signal Processor). ).
  • the ALM is programmed with logic based on configuration information transferred to the programmable unit 10.
  • the storage elements of the memories M1 and M2 and the internal circuit of the DSP are built in the programmable unit 10 in advance, and connection wiring is built by transferring configuration information.
  • the data processing unit 10a shown in FIG. 4 is constructed on the programmable unit 10 using a predetermined number of input / output terminals IO, a predetermined number of ALMs, a predetermined number of memories M1, and a predetermined number of DSPs.
  • the cache memory unit 10e is constructed on the programmable unit 10 using a predetermined number of ALMs and a predetermined number of memories M1 and M2.
  • Each of the cache control unit 10d and the cache control switching unit 10c is constructed on the programmable unit 10 using a predetermined number of ALMs, a predetermined number of memories M1, and a predetermined number of DSPs.
  • FIG. 6 shows an example of the data processing unit 10a programmed in the programmable unit 10 shown in FIG.
  • the data processing unit 10a logically synthesizes the data processing part to be executed by the programmable unit 10 from the first program that completes the data processing only by the CPU core 30a, and generates configuration information.
  • the data processing to be executed by the programmable unit 10 is a portion surrounded by a broken line, is data processing that takes time compared to other data processing, and is data processing having repeatability.
  • the data processing unit 10 a is constructed in the programmable unit 10 by configuration information being programmed in the programmable unit 10. That is, a part of the data processing executed by the CPU core 30a by the program is offloaded to the programmable unit 10.
  • the data processing part by the logically synthesized data processing unit 10a is removed from the first program, and the second program in which the calling process of the data processing unit 10a is added is executed after the data processing unit 10a is programmed in the programmable unit 10.
  • the programmable unit 10 operates as an accelerator of the arithmetic processing device 30, and data processing is performed by the arithmetic processing device 30 and the programmable unit 10.
  • FIG. 7 shows an example of processing for constructing an environment for executing the second program shown in FIG. First, as advance preparation, in step S10, the cache control unit 10d and the cache memory unit 10e are logically synthesized, and configuration information is generated. In step S12, the part to be processed by the programmable unit 10 in the first program is logically synthesized as the data processing unit 10a, and configuration information is generated.
  • step S14 a second program (source program) that causes the logically synthesized data processing unit 10a to execute data processing is generated. Then, by compiling the source program, an object file of the second program that can be executed by the CPU core 30a is generated.
  • step S16 the first program (source program) is compiled, and an object file of the first program is generated.
  • steps S10, S12, S14, and S16 may be executed out of the order shown in FIG. 7 except that steps S12 and S14 are sequentially executed.
  • the advance preparation may be executed by the information processing apparatus 100A or may be executed using another tool.
  • a construction process for constructing an environment for executing data processing on the information processing apparatus 100A using the data processing unit 10a is executed.
  • the construction process is based on receiving an instruction to cause the data processing unit 10a to execute a part of the data processing executed by the CPU core 30a from an administrator who manages the information processing apparatus 100A or a user who uses the information processing apparatus 100A. Will start.
  • the information processing apparatus 100A causes the arithmetic processing apparatus 30 to start executing the first program.
  • step S22 the analysis unit 30d of the information processing apparatus 100A analyzes the instruction corresponding to the operation of the data processing unit 10a in the first program, and extracts the feature of the memory access instruction.
  • the instruction corresponding to the operation of the data processing unit 10a is an instruction included in a portion surrounded by a broken line in the first program shown in FIG.
  • step S24 the determination unit 30e of the information processing device 100A generates the logic of the cache control switching unit 10c based on the feature extracted in step S22, thereby programming the programmable control unit 10 into the cache control switching unit. 10c is determined.
  • the configuration control unit 30f of the information processing device 100A programs the configuration information of the cache circuit 10b and the configuration information of the data processing unit 10a in the programmable unit 10.
  • the cache circuit 10b includes a cache control switching unit 10c, a cache control unit 10d, and a cache memory unit 10e. That is, the information processing apparatus 100A receives the configuration information of the cache control unit 10d, the cache memory unit 10e, and the data processing unit 10a prepared in advance, and the configuration information of the cache control switching unit 10c generated in step S24. To program. And the construction process which constructs
  • step S22 to step S26 shows an example of a control method of the information processing apparatus 100A and an example of a control program of the information processing apparatus 100A, and corresponds to the processing shown in FIGS. 3 (a) to 3 (e). .
  • FIG. 3 shows an example of the operation of the information processing apparatus 100A by replacing the data processing unit at the right end of FIG. 3 with the data processing unit 10a and changing the signs of the respective elements.
  • the analysis unit 30d analyzes an access address pattern based on access to the main memory 20 when a part of data processing is executed by the first program executed by the CPU core 30a.
  • the determination unit 30e generates the cache control switching unit 10c based on the characteristics of the access address pattern analyzed by the analysis unit 30d, and determines to program the generated cache control switching unit 1c into the programmable unit 10.
  • the configuration control unit 30f programs the cache control switching unit 10c generated by the determination unit 30e into the programmable unit 10 together with the data processing unit 10a, the cache control unit 10d, and the cache memory unit 10e.
  • the information processing apparatus 100A stops the execution of the first program and starts the execution of the second program from the location corresponding to the location where the execution is stopped. Then, the second program calls the data processing unit 10a and causes the data processing unit 10a to execute an unexecuted process among the data processes executed by the first program. While the data processing unit 10a is operating, the cache control switching unit 10c, the cache control unit 10d, and the cache memory unit 10e operate based on a memory access request issued by the data processing unit 10a. The cache control switching unit 10c generates a cache hint and burst length based on the memory access request, and the cache control unit 10d operates based on the cache hint and burst length.
  • the configuration information of the cache control unit 10d, the cache memory unit 10e, and the data processing unit 10a may be programmed in the programmable unit 10 before starting the process of step S20.
  • an interface specification for connecting the data processing unit 10a and the cache control switching unit 10c to each other and an interface specification for connecting the cache control switching unit 10c and the cache control unit 10d to each other are determined.
  • the determination unit 30e generates the logic of the cache control switching unit 10c according to the interface specification determined in advance preparation.
  • FIG. 8 shows an example of the operation of the cache circuit including the cache control switching unit 10c generated in step S24 shown in FIG.
  • the left column shows an instruction group (source program) equivalent to the processing executed by the data processing unit 10a and its line number.
  • the instruction group shown in FIG. 8 shows an example of instructions executed within the broken line frame of the first program of FIG.
  • the instruction group includes processing of three processes A, B, and C.
  • LD indicates a load instruction
  • ST indicates a store instruction
  • EXE indicates an operation instruction
  • BR indicates a branch instruction.
  • LD A1, Da1 on the first line indicates that data is read from the memory area at the address A1 and stored in the register Da1.
  • ST A3, Da3 on the fourth line indicates that the data held in the register Da3 is stored in the memory area of the address A3.
  • EXE1 Da3 (Da1, Da2)” on the third line indicates that the data held in the registers Da1 and Da2 is calculated and the calculation result is stored in the register Da3.
  • BR Da3 B C indicates branching to the sixth line or the 21st line depending on the value stored in the register Da3.
  • B” and “C” indicate labels.
  • the middle column shows an example of the operation of the cache circuit 10b, and the cache hint and burst length are generated by the cache control switching unit 10c for each memory access request (load instruction LD or store instruction ST).
  • the right column shows an example of the operation of another cache circuit that does not have the cache control switching unit 10c.
  • the cache hint is fixed to “S” (read access) and “M” (write access), and the burst length is “ Fixed to 1 ′′.
  • “miss” indicates the occurrence of a cache miss
  • “hit” indicates the occurrence of a cache hit
  • the number shown in “occurrence of eviction” indicates the number of cache lines that evoke data. Indicates.
  • the data processing unit 10a does not execute the read access (address A1) thereafter, the data output from the LCC 30b based on the read access may not be held in the cache memory unit 10e.
  • the cache hint is “S” in the read access (address A1) executed by the data processing unit 10a in response to the load instruction LD in the first row. Unnecessary eviction occurs.
  • the load instruction LD (address A2) is also executed on the 22nd line.
  • Store instruction ST (address A3) is also executed in the 25th line.
  • the read access address B2 executed by the data processing unit 10a in response to the load instruction LD in the eighth row is continuous to the address B1. In this case, by setting the burst length to “2”, the read access (address B2) can be cache hit, and the frequency of access requests to the LLC 30b can be reduced.
  • the burst length of the read access (address B1) executed by the data processing unit 10a in response to the load instruction LD on the seventh line is set to “1”. Therefore, a cache miss occurs in the read access (address B2) executed by the data processing unit 10a in response to the load instruction LD on the eighth line, and the cache control unit 10d issues a useless read access request to the LLC 30b. .
  • the data processing unit 10a does not execute the write access (address B3) thereafter, the write data output from the data processing unit 10a together with the write access may not be held in the cache memory unit 10e.
  • the cache hint to “I” and writing the write data directly to the LLC 30b, it is possible to prevent the cache line from being expelled from the cache memory unit 10e.
  • the cache hint for the write access (address B3) executed by the data processing unit 10a corresponding to the store instruction ST on the 10th line is set to “M”. For this reason, useless data that is not used in subsequent accesses is held in the cache memory unit 10e, and useless expulsion of the cache line occurs.
  • the cache control switching unit 10c generated based on the characteristics of the access address pattern of the data processing unit 10a causes the cache circuit 10b to generate useless eviction processing and useless access requests to the LLC 30b. Can be deterred. As a result, the usage efficiency of the bus BUS1 shown in FIG. 4 can be improved compared to other cache circuits, and the processing performance of the information processing apparatus 100A can be improved.
  • FIG. 9 shows an example of the feature extraction table TBL used in step S22 shown in FIG.
  • the feature extraction table TBL is used to record the feature of the memory access instruction extracted by the analysis unit 30d.
  • the feature extraction table TBL has a plurality of entries including an area for storing an access type, an access address, a cache hint, and a burst length.
  • the memory access instruction from which the feature is extracted when the memory access instruction from which the feature is extracted is a read instruction, information indicating the read is stored.
  • the memory access instruction from which the feature is extracted is a write instruction, information indicating the write is stored.
  • the In the access address area an address included in the memory access instruction from which the feature is extracted is stored.
  • the cache hint used by the cache control unit 10d is stored in the cache hint area.
  • the cache hint stores “S” indicating “Shared”, “M” indicating “Modified”, “I” indicating “Invalid”, or “E” indicating “Exclusive”.
  • the cache hint indicates whether or not the cache control unit 10d holds the data received from the LLC 30b in the cache memory unit 10e based on the read access request corresponding to the read command.
  • the cache hint is stored in the cache memory unit 10e or output to the LLC 30b by the cache control unit 10d based on the write access request corresponding to the write instruction. Indicates what to do.
  • burst length area a burst length indicating the number of data input to the cache memory unit 10e by a memory access instruction is stored.
  • the burst length indicates the number of accesses to the cache line that is a unit of access to the cache memory unit 10e.
  • the analyzing unit 30d sequentially stores the access type and the access address for each memory access instruction in the feature extraction table TBL until the characteristics of the memory access instruction can be extracted. Then, while extracting the characteristics of the memory access instruction, the cache hint and burst length optimum for the memory access request stored in each entry are determined, and the determined cache hint and burst length are stored in each entry.
  • FIG. 10 shows an example of the process of step S22 shown in FIG.
  • the analysis unit 30d initializes the feature extraction table TBL. For example, invalid values are stored in the areas of access type and access address. “I” is stored in the cache hint area, and “1” is stored in the burst length area.
  • step S224 the analysis unit 30d detects a memory access instruction from the sequentially executed instructions.
  • the memory access instruction to be detected is a memory access instruction included in a portion surrounded by a broken line to be processed by the data processing unit 10a in the first program shown in FIG.
  • step S226 if the detected memory access instruction is a store instruction, the analysis unit 30d proceeds to step S228. If the detected memory access instruction is not a store instruction, the analysis unit 30d performs a process because the detected instruction is a load instruction. The process proceeds to step S232.
  • step S2208 if the address included in the store instruction detected this time is the same as the address included in the store instruction detected previously, the analysis unit 30d proceeds to step S230. When the address included in the detected store instruction is different from the address included in the previously detected store instruction, the analysis unit 30d moves the process to step S240.
  • step S232 if the address included in the load instruction detected this time is the same as the address included in the previously detected load instruction, the analysis unit 30d proceeds to step S234. If the address included in the detected load instruction is the same as the address included in the previously detected load instruction, the analysis unit 30d proceeds to step S236.
  • step S236 if the addresses of the current load instruction and the previous load instruction are the same, the analysis unit 30d proceeds to step S238, and the addresses of the current load instruction and the previous load instruction are different from each other. Then, the process proceeds to step S240.
  • step S240 when the analysis unit 30d determines that the feature of the memory access instruction is extracted and the cache hit rate of the cache memory unit 10e can be improved based on the information stored in the feature extraction table TBL, the process ends. If the analysis unit 30d determines that the feature extraction of the memory access instruction is insufficient, the analysis unit 30d returns the process to step S224, and continues the extraction of the feature of the memory access instruction. As described above, the analysis unit 30d extracts the characteristics of the memory access request instruction issued from the data processing unit 10a by using the memory access instruction generated by the execution of the first program.
  • the feature extraction table TBL storing the features of the memory access instruction is programmed in the memory M1 (FIG. 5) in the programmable unit 10 as a part of the cache control switching unit 10c.
  • the feature extraction table TBL storing the features of the memory access instruction may be programmed in the ALM in the programmable unit 10 as a part of the cache control switching unit 10c.
  • the same effect as that of the embodiment shown in FIGS. 1 to 3 can be obtained.
  • the cache efficiency of the cache circuit 10b can be optimized in accordance with the memory access characteristics of the data processing unit 10a, and the processing performance of the information processing apparatus 100A can be improved.
  • the access address pattern can be analyzed. It is possible to eliminate the waste of executing the same process in the first program and the second program in duplicate, or to prevent the process from being lost.
  • FIG. 11 shows an example of processing for constructing an environment for executing the second program in another embodiment of the information processing apparatus. Detailed description of the same elements as those in FIG. 7 is omitted.
  • step S22A is executed instead of step S22 of FIG. Processing excluding step S22A is the same as that in FIG.
  • steps S22A, S24, and S26 are executed by a control program executed by the information processing apparatus. That is, the processes shown in steps S22A, S24, and S26 show an example of an information processing device control method and an example of an information processing device control program.
  • the information processing apparatus that executes steps S20, S22A, S24, and S26 is the same as the information processing apparatus 100A illustrated in FIG. 4 except that the control program 20e illustrated in FIG. 4 is different.
  • the information processing apparatus that executes steps S20, S22A, S24, and S26 differs from the information processing apparatus 100A shown in FIG. 4 except that the processing executed by the analysis unit 30d and the determination unit 30e shown in FIG. 4 is different. It is the same.
  • step S22A the analysis unit 30d of the information processing apparatus 100A analyzes an instruction corresponding to the operation of the data processing unit 10a in the first program, and detects a branch destination having a higher probability of branching than others in the branch instruction. Then, the analysis unit 30d extracts a feature of memory access executed at a branch destination having a higher probability of branching than others. That is, the analysis unit 30d analyzes the access address pattern by a process having a higher execution frequency than other processes among the processes A, B, and C shown in FIG.
  • step S24 the determination unit 30e generates logic for the cache control switching unit 10c based on the features extracted in step S22A.
  • FIG. 12 shows an example of the operation of the cache circuit 10b including the cache control switching unit 10c generated in step S24 shown in FIG. Detailed description of the same or similar elements as those in FIG. 8 will be omitted.
  • the instruction group (source program) equivalent to the processing executed by the data processing unit 10a shown in the left column is the same as that in FIG.
  • the middle column shows the operation of the cache circuit including the cache control switching unit generated based on the extraction of the memory access feature executed in the process B in the branch instruction BR on the fifth line. That is, the center column shows the operation of the cache circuit including the cache control switching unit generated when the probability of branching to label B is higher than the probability of branching elsewhere.
  • the right column shows the operation of the cache circuit including the cache control switching unit generated based on the extraction of the memory access feature executed by the process C in the branch instruction BR on the fifth line. That is, the right column shows the operation of the cache circuit including the cache control switching unit generated when the probability of branching to label C is higher than the probability of branching elsewhere.
  • the burst length of the read access (address B1) executed by the data processing unit 10a corresponding to the load instruction LD in the seventh line is “2”.
  • the next read access (address B2) can be cache hit, and the frequency of access requests to the LLC 30b can be reduced.
  • the cache hint is set to “S” and the burst length is set to “2” in all read accesses so that the cache efficiency in the process B is increased.
  • the load instruction (address in the second line) is improved in order to improve the access efficiency of the load instruction LD (address A2) in the 22nd line.
  • the cache hint of A2) is set to “S”. Since the load instruction LD (address A1) on the first line and the load instruction (address B2) on the eighth line are not executed in the process C, the cache hint is set to “I”.
  • the cache hint of the load instruction on the seventh line is “ S "is set. Since the data read by the load instruction LD (address C1) on the 23rd line is not used in the subsequent process C, the cache hint of the load instruction LD on the 23rd line is set to “I”.
  • the load instruction LD on the 22nd line can be cache hit, and it is possible to prevent the cache line from being expelled based on the load instruction LD on the 23rd line.
  • other processes (first and eighth lines) that execute processing related to the process C it is possible to prevent occurrence of useless eviction of the cache line.
  • the cache hint is set to “M” and the burst length is set as in the right column of FIG. Set to “1”.
  • the same effect as that of the embodiment shown in FIGS. 1 to 3 can be obtained.
  • the cache efficiency of the cache circuit 10b can be optimized in accordance with the memory access characteristics of the data processing unit 10a, and the processing performance of the information processing apparatus 100A can be improved.
  • the access address pattern can be analyzed. It is possible to eliminate the waste of executing the same process in the first program and the second program in duplicate, or to prevent the process from being lost.
  • the cache efficiency of the cache circuit 10b can be optimized in accordance with the characteristics of the access address pattern of the process whose execution frequency is higher than others.
  • the cache efficiency of the cache circuit 10b can be optimized by specializing in the process C or the process C.
  • FIG. 13 shows an example of processing for constructing an environment for executing the second program in another embodiment of the information processing apparatus. Detailed description of the same elements as those in FIG. 7 is omitted.
  • step S11B for logically synthesizing a plurality of cache control switching units in advance preparation is added to FIG. Further, step S24B is executed instead of step S24 in FIG.
  • Other processes are the same as those in FIG.
  • steps S22, S24B, and S26 are executed by a control program executed by the information processing apparatus. That is, the processes shown in steps S22, S24B, and S26 show an example of a control method for the information processing apparatus and an example of a control program for the information processing apparatus.
  • the information processing apparatus that executes steps S20, S22, S24B, and S26 is the same as the information processing apparatus 100A illustrated in FIG. 4 except that the control program 20e illustrated in FIG. 4 is different.
  • the information processing device that executes steps S20, S22, S24B, and S26 is the same as the information processing device 100A shown in FIG. 4 except that the processing executed by the determination unit 30e shown in FIG. 4 is different.
  • step S11B a plurality of types of cache control switching units according to various memory access characteristics are logically synthesized to generate configuration information.
  • the preliminary preparation may be executed by the information processing apparatus 100A or may be executed using another tool.
  • Step S ⁇ b> 11 ⁇ / b> B may be arranged at another location in the advance preparation flow.
  • step S24B the determination unit 30e of the information processing apparatus 100A performs cache control in which memory access efficiency is higher than the others among the plurality of types of cache control switching units generated in step S11B based on the features extracted in step S22.
  • the switching unit 10c is selected. Note that step S22A shown in FIG. 11 is executed instead of step S22, and in step S24B, the cache access switching unit 10c has higher memory access efficiency than the others based on the features extracted by the determination unit 30e in step S22A. May be selected.
  • the determination unit 30e can use the configuration information of the cache control switching unit generated in advance preparation, the process of generating the cache control switching unit 10c based on the analysis result of the access address pattern can be omitted. Thereby, it is possible to minimize the number of instructions of the first program executed until the cache control switching unit 10c to be programmed in the programmable unit 10 is prepared. As a result, the operation rate of the data processing unit 10a used for data processing executed by the information processing apparatus 100A can be improved, and the processing performance of data processing can be improved.
  • the cache efficiency of the cache circuit 10b can be optimized in accordance with the memory access characteristics of the data processing unit 10a, and the processing performance of the information processing apparatus 100A can be improved.
  • the access address pattern can be analyzed. It is possible to eliminate the waste of executing the same process in the first program and the second program in duplicate, or to prevent the process from being lost.
  • the first process is executed until the cache control switching unit 10 c to be programmed in the programmable unit 10 is prepared by using the configuration information of the cache control switching unit generated in advance preparation.
  • the number of instructions in the program can be minimized.
  • the operation rate of the data processing unit 10a used for data processing executed by the information processing apparatus 100A can be improved, and the processing performance of data processing can be improved.
  • FIG. 14 shows an example of processing for constructing an environment for executing the second program in another embodiment of the information processing apparatus. Detailed description of the same elements as those in FIG. 7 is omitted.
  • step S24C is executed instead of step S24 of FIG. 7, and step S23C is added after step S22 of FIG. Processing excluding steps S23C and S24C is the same as that in FIG.
  • steps S22, S23C, S24C, and S26 are executed by a control program executed by the information processing apparatus. That is, the processes shown in steps S22, S23C, S24C, and S26 show an example of a control method for the information processing apparatus and an example of a control program for the information processing apparatus.
  • the information processing apparatus that executes steps S20, S22, S23C, S24C, and S26 is the same as the information processing apparatus 100A illustrated in FIG. 4 except that the control program 20e illustrated in FIG. 4 is different.
  • the information processing device that executes S20, S22, S23C, S24C, and S26 operates in the same manner as the information processing device 100A shown in FIG. 4 except that the processing executed by the determination unit 30e shown in FIG. 4 is different. To do.
  • step S23C the determination unit 30e detects, in the programmable unit 10, a free area in which the cache control switching unit can be programmed. For example, the determination unit 30e detects the number of unused ALMs, the number of unused memories M1, and the number of unused DSPs in the programmable unit 10 illustrated in FIG.
  • step S24C the determination unit 30e generates the logic of the cache control switching unit 10c having a scale that can be programmed in the free area, based on the feature extracted in step S22. That is, the determination unit 30e generates a cache control switching unit 10c having a circuit scale that can be mounted using unused ALM, the memory M1, and the DSP.
  • the performance of the cache control switching unit 10c increases as the circuit scale increases and decreases as the circuit scale decreases.
  • the performance of the cache control switching unit 10c is higher as the cache hit rate is higher, and is higher as the cache line eviction frequency is lower.
  • the cache control switching unit 10c having the optimum performance can be mounted in the programmable unit 10 according to the free area of the programmable unit 10 through steps S23C and S24C.
  • the problem that the cache control switching unit 10c is not programmed in the programmable unit 10 due to the limitation of the free space can be solved.
  • the analysis unit 30d may extract a feature of memory access executed at a branch destination having a higher probability of branching than the others.
  • the determination unit 30e has a memory access efficiency higher than that of the plurality of cache control switching units generated in advance, instead of generating the logic of the cache control switching unit 10c. A cache control switching unit that becomes higher may be selected. In this case, the determination unit 30e selects the cache control switching unit according to the free area of the programmable unit 10. Furthermore, in addition to the determination unit 30e selecting a cache control switching unit with higher memory access efficiency than others, as shown in FIG. 11, the memory at the branch destination where the analysis unit 30d has a higher probability of branching than others. Access characteristics may be extracted.
  • the cache efficiency of the cache circuit 10b can be optimized in accordance with the memory access characteristics of the data processing unit 10a, and the processing performance of the information processing apparatus 100A can be improved.
  • the access address pattern can be analyzed. It is possible to eliminate the waste of executing the same process in the first program and the second program in duplicate, or to prevent the process from being lost.
  • the cache control switching unit 10c having the optimum performance according to the free space of the programmable unit 10 can be mounted on the programmable unit 10. Moreover, the problem that the cache control switching unit 10c is not programmed in the programmable unit 10 due to the limitation of the free space can be solved.
  • FIG. 15 shows an example of a process for constructing an environment for executing the second program in another embodiment of the information processing apparatus. Detailed description of the same elements as those in FIG. 7 is omitted.
  • steps S11D, S13D, and 17D for logically synthesizing a plurality of cache control switching units in advance preparation are added to FIG. Further, steps S20D, S22D, S24D, and S26D are executed instead of steps S20, S22, S24, and S26 of FIG.
  • Other processes are the same as those in FIG.
  • steps S22D, S24D, and S26D are executed by a control program executed by the information processing apparatus. That is, the processes shown in steps S22D, S24D, and S26D show an example of a control method for the information processing apparatus and an example of a control program for the information processing apparatus.
  • the information processing apparatus that executes steps S20D, S22D, S24D, and S26D is the information processing apparatus illustrated in FIG. 4 except that the control program 20e illustrated in FIG. 4 is different and the analysis unit 30d is disposed in the programmable unit 10.
  • the same as 100A In other words, the information processing apparatus that executes steps S20D, S22D, S24D, and S26D operates in the same manner as the information processing apparatus 100A illustrated in FIG. 4 except that the processing executed by the determination unit 30e illustrated in FIG. 4 is different. .
  • step S11D a default cache control switching unit that generates a standard cache hint and burst length is logically synthesized, and configuration information is generated.
  • step S13D the analysis circuit for analyzing the memory access characteristics of the data processing unit 10a shown in FIG. 4 is logically synthesized to generate configuration information.
  • step S14 the data processing unit 10a, the cache control unit 10d, the cache memory unit 10e, the default cache control switching unit, and the analysis circuit are programmed in the programmable unit 10 in step S17D.
  • step S11D and S13D may be arrange
  • step S20D the information processing apparatus 100A causes the arithmetic processing unit 30 to start executing the second program.
  • step S22D the analysis unit 30d programmed in the programmable unit 10 extracts the characteristics of the memory access request output by the data processing unit 10a that is called and operated by the second program. That is, by mounting the analysis unit 30d in the programmable unit 10, it is possible to directly analyze the memory access characteristics of the data processing unit 10a called by the second program without executing the first program. Since the memory access request output from the data processing unit 10a (hardware) can be directly analyzed, the time required for extracting the characteristics of the memory access request can be reduced as compared with the method shown in FIG. As in step S22A shown in FIG. 11, the analysis unit 30d may extract a feature of memory access executed at a branch destination having a higher probability of branching than the others.
  • step S24D the determination unit 30e generates the logic of the cache control switching unit 10c based on the features extracted by the analysis unit 30d on the programmable unit 10.
  • the determination unit 30e may generate the logic of the cache control switching unit 10c having a scale that can be programmed in the free area based on the feature extracted in step S22D.
  • the analysis unit 30d extracts the characteristics of memory access at a branch destination having a higher probability of branching than the others, and the determination unit 30e generates the logic of the cache control switching unit 10c having a scale that can be programmed into a free area. Also good.
  • the determination unit 30e has a memory access efficiency higher than that of the plurality of cache control switching units generated in advance, instead of generating the logic of the cache control switching unit 10c.
  • a cache control switching unit that becomes higher may be selected.
  • the analysis unit 30d may extract the characteristics of the memory access at the branch destination having a higher probability of branching than the others, and the determination unit 30e generates the logic of the cache control switching unit 10c having a scale programmable in the free area. May be.
  • the analysis unit 30d extracts the characteristics of memory access at a branch destination having a higher probability of branching than the others, and the determination unit 30e generates the logic of the cache control switching unit 10c having a scale that can be programmed into a free area. Also good.
  • step S26D the configuration control unit 30f replaces the default cache control switching unit programmed in the programmable unit 10 with the cache control switching unit 10c generated in step S24D. Then, the information processing apparatus 100A continues to execute the second program.
  • the cache efficiency of the cache circuit 10b can be optimized in accordance with the memory access characteristics of the data processing unit 10a, and the processing performance of the information processing apparatus 100A can be improved.
  • the memory access characteristics of the data processing unit 10 a called by the second program can be directly measured without executing the first program. Can be analyzed. Since the memory access request output from the data processing unit 10a (hardware) can be directly analyzed, the time required for extracting the characteristics of the memory access request can be reduced as compared with the method shown in FIG.
  • a data processing unit for processing data stored in the storage unit, a cache memory unit for storing data used in the data processing unit, and data read from the storage unit by the data processing unit are stored in the cache memory unit
  • a programmable unit that is programmed with a cache control unit that determines whether to perform cache control information, and a cache control switching unit that generates the cache control information based on a memory access request issued by the data processing unit;
  • An analysis unit that analyzes a pattern of an access address included in the memory access request issued by the data processing unit programmed in the programmable unit; Based on the pattern of the access address analyzed by the analysis unit, a determination unit that determines the logic of the cache control switching unit to be programmed into the programmable unit;
  • the data processing unit, the cache memory unit, and the cache control unit are programmed into the programmable unit, and the configuration control unit is configured to program the cache control switching unit determined by the determination unit into the
  • Information processing apparatus An arithmetic processing unit that executes a processing program including a function of executing second data processing equivalent to first data processing executed by the data processing unit; 2.
  • Appendix 3 When the analysis of the access address pattern by the analysis unit is completed during the execution of the second data processing by the processing program, The configuration control unit programs the cache control switching unit determined by the determination unit into the programmable unit,
  • the information processing apparatus according to claim 2 wherein the arithmetic processing unit causes the data processing unit to execute an unexecuted process of the second data process as a part of the first data process.
  • the analysis unit is programmed in the programmable unit, The configuration control unit programs the data processing unit, the analysis unit, and a default cache control switching unit in the programmable unit, and the analysis unit sets the access address based on the memory access request issued by the data processing unit.
  • the information processing apparatus according to claim 1, wherein after analyzing the pattern, the default cache control switching unit is replaced with the cache control switching unit determined by the determination unit.
  • the data processing executed by the data processing unit includes a plurality of processes, 5.
  • the determination unit generates configuration information of the cache control switching unit determined based on the access address pattern analyzed by the analysis unit, 6.
  • the information processing apparatus according to claim 1, wherein the configuration control unit programs the configuration information of the cache control switching unit generated by the determination unit in the programmable unit.
  • the determination unit selects any one of a plurality of types of configuration information of the cache control switching unit corresponding to a plurality of types of the access address patterns based on the access address pattern analyzed by the analysis unit,
  • the information processing apparatus according to any one of appendix 1 to appendix 5, wherein the configuration control unit programs configuration information of the cache control switching unit selected by the determination unit into the programmable unit.
  • the determination unit determines logic of the cache control switching unit that can be programmed in a free area of the programmable unit based on the pattern of the access address analyzed by the analysis unit.
  • the information processing apparatus according to any one of the above.
  • the cache control information output by the cache control switching unit includes first information indicating whether to store data in the cache memory unit instead of writing data in the storage unit, 9.
  • the cache control information output by the cache control switching unit includes second information indicating a length of data transferred in response to the memory access request issued by the data processing unit,
  • the information processing apparatus according to any one of Supplementary Note 1 to Supplementary Note 9, wherein the cache control unit reads data having a length corresponding to the second information from the storage unit.
  • the information processing apparatus is Analyzing a pattern of access addresses included in the memory access request issued by the data processing unit programmed in the programmable unit; Based on the analyzed pattern of the access address, determine the logic of the cache control switching unit to be programmed into the programmable unit, The data processing unit, the cache memory unit, and the cache control unit are programmed in the programmable unit, and the determined cache control switching unit is programmed in the programmable unit.
  • the cache control switching unit for generating Analyzing a pattern of access addresses included in the memory access request issued by the data processing unit programmed in the programmable unit; Based on the analyzed pattern of the access address, determine the logic of the cache control switching unit to be programmed into the programmable unit, Control for causing the information processing apparatus to execute a process for programming the data processing unit, the cache memory unit, and the cache control unit into the programmable unit and programming the determined cache control switching unit into the programmable unit.
  • the recording medium recording the control program of the information processing apparatus to which the cache control switching unit for generating Analyzing a pattern of access addresses included in the memory access request issued by the data processing unit programmed in the programmable unit; Based on the analyzed pattern of the access address, determine the logic of the cache control switching unit to be programmed into the programmable unit, Programming the data processing unit, the cache memory unit, and the cache control unit into the programmable unit, and causing the information processing apparatus to execute processing for programming the cache control switching unit determined by the programmable unit.
  • Cache control unit 10e ... Cache memory unit; 20 ... Main memory; 20b ... Program area; 20c ... Configuration information area; 20d ... Program; 20e ... Control program; 30 ... 30a ... CPU core; 30b ... LLC; 30c ... MMU; 30d ... analyzing unit; 30e ... determining unit; 30f ... configuration control unit; 40 ... input / output interface; 50 ... HDD; 60 ... communication interface; 70 ... Recording medium; 100, 100A ... information processing apparatus; BUS1, BUS2, BUS3 ... bus; CINF ... cache control information; NW ... network; TBL ... feature extraction table

Landscapes

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

Abstract

【課題】 プログラマブル部にプログラムされるデータ処理部によるメモリアクセスの特徴に応じて、キャッシュ効率を最適化する。 【解決手段】 情報処理装置は、データを記憶する記憶部と、データ処理部、キャッシュ制御切替部、キャッシュ制御部およびキャッシュメモリ部がプログラムされるプログラマブル部と、分析部と、決定部と、構成制御部とを有する。分析部は、データ処理部が発行するメモリアクセス要求に含まれるアクセスアドレスのパターンを分析する。決定部は、分析したアクセスアドレスのパターンに基づいて、プログラマブル部にプログラムするキャッシュ制御切替部の論理を決定する。構成制御部は、データ処理部、キャッシュメモリ部およびキャッシュ制御部をプログラマブル部にプログラムするとともに、決定部が決定したキャッシュ制御切替部をプログラマブル部にプログラムする。

Description

情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
 本発明は、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムに関する。
 近時、論理を動的に再構成可能なFPGA(Field-Programmable Gate Array)等のプ
ログラマブルデバイスをアクセラレータとして機能させる情報処理装置が注目されている。この種の情報処理装置において、処理をソフトウェアまたはハードウェアのいずれで実行するかを判断し、ハードウェアで実行する場合、FPGAに論理を構築して処理を実行する手法が知られている(例えば、特許文献1参照)。
 例えば、FPGAに構築する論理は、高級言語で記述されたソースファイルを制御フローグラフ表現、制御データフローグラフ表現に順次変換し、制御データフローグラフ表現をハードウェア記述言語に変換することで生成される(例えば、特許文献2参照)。また、ソースファイルのうち、ソフトウェアで実行する部分とハードウェアで実行する部分とを、コンパイラによって判定する手法が知られている(例えば、特許文献3参照)。
 一方、演算処理を並列に実行する複数の演算器を含むデータ処理装置では、プログラムの実行によりデータのアクセスパターンが予め解析され、解析結果に基づいて、複数の演算器で処理するデータが特定される。複数の演算器にキャッシュメモリがそれぞれ接続される場合、特定されたデータは、データを処理する演算器に対応するキャッシュメモリに格納される(例えば、特許文献4参照)。
特開2004-21426号公報 特表2006-505055号公報 特表2005-535055号公報 特開2011-8485号公報
 ところで、特定のアプリケーション用のデータ処理を実行するデータ処理部をFPGAに搭載するドメイン指向型の情報処理装置では、FPGAに搭載するデータ処理部によるメモリアクセスのパターンは、アプリケーション毎に相違する。このため、汎用のキャッシュメモリを使用する場合、キャッシュヒット率等のキャッシュ効率が低下する場合がある。例えば、キャッシュメモリに保持されたデータは、LRU(Least Recently Used)方式にしたがって入れ替えられる。しかしながら、ドメイン指向型の情報処理装置が実行する各種アプリケーションは、メモリアクセスの特徴がそれぞれ異なるため、LRU方式が全てのアプリケーションに適するとは限らない。しかしながら、ドメイン指向型の情報処理装置において、アプリケーション毎にキャッシュ効率を最適化する手法は提案されていない。
 1つの側面では、本発明は、プログラマブル部にプログラムされるデータ処理部によるメモリアクセスの特徴に応じて、キャッシュ効率を最適化することを目的とする。
 一つの実施態様では、情報処理装置は、データを記憶する記憶部と、記憶部が記憶するデータを処理するデータ処理部と、データ処理部で使用するデータが格納されるキャッシュメモリ部と、データ処理部が記憶部から読み出すデータをキャッシュメモリ部に格納するかをキャッシュ制御情報に基づいて決定するキャッシュ制御部と、データ処理部が発行するメモリアクセス要求に基づいてキャッシュ制御情報を生成するキャッシュ制御切替部とがプログラムされるプログラマブル部と、プログラマブル部にプログラムされるデータ処理部が発行するメモリアクセス要求に含まれるアクセスアドレスのパターンを分析する分析部と、分析部が分析したアクセスアドレスのパターンに基づいて、プログラマブル部にプログラムするキャッシュ制御切替部の論理を決定する決定部と、データ処理部、キャッシュメモリ部およびキャッシュ制御部をプログラマブル部にプログラムするとともに、決定部が決定したキャッシュ制御切替部をプログラマブル部にプログラムする構成制御部とを備える。
 1つの側面では、本発明は、プログラマブル部にプログラムされるデータ処理部によるメモリアクセスの特徴に応じて、キャッシュ効率を最適化することができる。
情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムの一実施形態を示す図である。 図1に示す情報処理装置の動作フローの一例を示す図である。 図1に示す情報処理装置の動作の一例を示す図である。 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムの別の実施形態を示す図である。 図4に示すプログラマブル部のチップ構成の一例を示す図である。 図4に示すプログラマブル部にプログラムされるデータ処理部の一例を示す図である。 図6に示す第2プログラムを実行する環境を構築する処理の一例を示す図である。 図7に示すステップS24で生成されるキャッシュ制御切替部を含むキャッシュ回路の動作の一例を示す図である。 図7に示すステップS22で使用する特徴抽出テーブルの一例を示す図である。 図7に示すステップS22の処理の一例を示す図である。 情報処理装置の別の実施形態における第2プログラムを実行する環境を構築する処理の一例を示す図である。 図11に示すステップS24で生成されたキャッシュ制御切替部を含むキャッシュ回路の動作の一例を示す図である。 情報処理装置の別の実施形態における第2プログラムを実行する環境を構築する処理の一例を示す図である。 情報処理装置の別の実施形態における第2プログラムを実行する環境を構築する処理の一例を示す図である。 情報処理装置の別の実施形態における第2プログラムを実行する環境を構築する処理の一例を示す図である。
 以下、図面を用いて実施形態を説明する。
 図1は、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムの一実施形態を示す。図1に示す情報処理装置100は、例えば、ドメイン指向サーバであり、FPGA等のプログラマブル部1、メモリモジュール等の記憶部2およびCPU(Central Processing Unit)等の演算処理装置3を有する。情報処理装置100は、図1に示す要素以外に、HDD(Hard Disk Drive)および通信インタフェース等を有してもよい。
 プログラマブル部1には、例えば、特定のアプリケーションで使用するデータを処理するデータ処理部1aおよびキャッシュ回路1b等の回路がプログラムされる。キャッシュ回路1bは、キャッシュ制御切替部1c、キャッシュ制御部1dおよびキャッシュメモリ部1eを有する。キャッシュメモリ部1eには、データ処理部1aで使用するデータが格納される。キャッシュ制御部1dは、データ処理部1aが発行するメモリアクセス要求に基づいて、記憶部2にアクセスする制御を実行する。また、キャッシュ制御部1dは、データ処理部1aが記憶部2から読み出すデータをキャッシュメモリ部1eに格納するか否かをキャッシュ制御情報CINFに基づいて決定する。キャッシュ制御切替部1cは、データ処理部1aが発行するメモリアクセス要求(リードアクセス要求またはライトアクセス要求)に基づいてキャッシュ制御情報CINFを生成する。
 例えば、データ処理部1aが記憶部2から読み出すデータを、キャッシュメモリ部1eに保持させる場合、キャッシュ制御切替部1cは、リードアクセス要求に基づいて”S”(Shared)を示すキャッシュ制御情報CINFを生成する。データ処理部1aが記憶部2から読み出すデータを、キャッシュメモリ部1eに保持させない場合、キャッシュ制御切替部1cは、リードアクセス要求に基づいて”I”(Invalid)を示すキャッシュ制御情報CINFを生成する。
 キャッシュ制御部1dは、リードアクセス要求に対応して受けるキャッシュ制御情報CINFが”S”の場合、記憶部2にリードアクセス要求を出力する。そして、キャッシュ制御部1dは、記憶部2から読み出されるデータを、キャッシュメモリ部1eに格納するとともに、データ処理部1aに出力する。なお、記憶部2からの読み出し対象のデータが、キャッシュメモリ部1eに既に保持されている場合、キャッシュ制御部1dは、記憶部2にリードアクセス要求を出力することなく、キャッシュメモリ部1eに保持されたデータをデータ処理部1aに出力する。キャッシュ制御部1dは、リードアクセス要求に対応して受けるキャッシュ制御情報CINFが”I”の場合、記憶部2にリードアクセス要求を出力する。そして、キャッシュ制御部1dは、記憶部2から読み出されるデータを、キャッシュメモリ部1eに格納することなく、データ処理部1aに出力する。
 なお、キャッシュ制御部1dは、データ処理部1aが記憶部2にデータを書き込むライトアクセス要求を発行する場合に、キャッシュ制御情報CINFを生成してもよい。例えば、データ処理部1aから出力される書き込みデータをキャッシュメモリ部1eに保持する場合、キャッシュ制御切替部1cは、ライトアクセス要求に基づいて”M”(Modified)を示すキャッシュ制御情報CINFを生成する。データ処理部1aが記憶部2に書き込むデータを、キャッシュメモリ部1eに保持させない場合、キャッシュ制御切替部1cは、ライトアクセス要求に基づいて”I”を示すキャッシュ制御情報CINFを生成する。
 キャッシュ制御部1dは、ライトアクセス要求に対応して受けるキャッシュ制御情報CINFが”M”の場合、データ処理部1aから出力されるデータを、キャッシュメモリ部1eに格納し、記憶部2に書き込まない。キャッシュ制御部1dは、ライトアクセス要求に対応して受けるキャッシュ制御情報CINFが”I”の場合、データ処理部1aから出力されるデータを、キャッシュメモリ部1eに格納することなく、記憶部2に書き込む。データ処理部1aが発行するライトアクセス要求に対応して生成される”M”または”I”を示すキャッシュ制御情報CINFは、第1情報の一例である。
 記憶部2は、SDRAM(Synchronous Dynamic Random Access Memory)、SRAM、またはフラッシュメモリ等の半導体メモリを含む。記憶部2は、データ領域2a、プログラム領域2bおよび構成情報領域2cを有する。データ領域2aは、データ処理部1aで処理するデータおよび演算処理装置3で使用するデータ等を保持する。プログラム領域2bは、第1プログラム2d、第2プログラム2eおよび制御プログラム2f等を保持する。第1プログラム2dは、データ処理部1aを使用せずに所定のデータ処理を実行する場合に使用される。例えば、第1プログラム2dは、データ処理部1aに実行させる処理と等価な処理を含むソースプログラムである。
 第2プログラム2eは、データ処理部1aを使用して所定のデータ処理を実行する場合に使用される。例えば、第2プログラム2eは、第1プログラム2dからデータ処理部1aが実行する処理と等価な処理を削除し、データ処理部1aを呼び出す処理を追加することで生成される。このため、第1プログラム2dが実行するデータ処理と、第2プログラム2eの指示によりデータ処理部1aが実行するデータ処理は、互いに等価である。第1プログラム2dは、処理プログラムの一例である。第1プログラム2dおよび第2プログラム2eによる動作の例は、図3に示される。
 制御プログラム2fは、演算処理部3aにより実行されることで、分析部3b、決定部3cおよび構成制御部3dの機能を実現する。なお、制御プログラム2fは、CD-ROM(Compact Disc Read Only Memory)、DVD(Digital Versatile Disc)、USB(Universal Serial Bus)メモリ等のコンピュータにより読み取り可能な記録媒体4に格納されてもよい。この場合、記録媒体4に格納された制御プログラム2fは、情報処理装置100に設けられる図示しない入出力インタフェースを介して記録媒体4からプログラム領域2bに転送される。なお、制御プログラムは、記録媒体4から図示しないHDDに転送された後、HDDからプログラム領域2bに転送されてもよい。
 構成情報領域2cは、プログラマブル部1にプログラムされる様々な回路の構成情報を保持する。構成情報は、予め生成されてもよく、情報処理装置100に要求される処理性能に合わせて、演算処理装置3により生成されてもよい。なお、構成情報は、情報処理装置100の記憶部2以外の記憶領域に記憶されてもよく、情報処理装置100の外部の記憶領域に記憶されてもよい。
 演算処理装置3は、CPUコア等の演算処理部3aと、制御プログラム2fの実行により実現される分析部3b、決定部3cおよび構成制御部3dとを有する。なお、分析部3b、決定部3cおよび構成制御部3dの少なくともいずれかは、ハードウェア(回路)として、情報処理装置100に搭載されてもよい。この場合、分析部3b、決定部3cおよび構成制御部3dの少なくともいずれかは、プログラマブル部1を使用して実現されてもよい。
 演算処理部3aは、第1プログラム2d、第2プログラム2eおよび制御プログラム2f等のプログラムを実行することで、演算処理を実行し、情報処理装置100の機能を実現する。
 分析部3bは、演算処理部3aによる第1プログラム2dの実行に基づいて、データ処理部1aを動作させることなく、データ処理部1aが発行するメモリアクセス要求を間接的に検出し、メモリアクセス要求に含まれるアクセスアドレスのパターンを分析する。
 決定部3cは、分析部3bが分析したアクセスアドレスのパターンに基づいて、データ処理部1aによるメモリアクセスに最適なキャッシュ制御切替部1cの構成情報を生成することで、プログラマブル部1にプログラムするキャッシュ制御切替部1cを決定する。決定部3cにより生成されるキャッシュ制御切替部1cの構成情報は、構成情報領域2cに格納される。なお、決定部3cは、構成情報領域2cに既に格納済みの複数のキャッシュ制御切替部1cの構成情報の中から、プログラマブル部1にプログラムする構成情報を選択することで、プログラマブル部1にプログラムするキャッシュ制御切替部1cを決定してもよい。
 構成制御部3dは、決定部3cが生成したキャッシュ制御切替部1cの構成情報を、構成情報領域2cから読み出してプログラマブル部1にプログラムする制御を実行する。
 図2は、図1に示す情報処理装置100の動作フローの一例を示す。図2に示すフローは、演算処理部3aで実行するデータ処理の一部をデータ処理部1aに実行させる指示を、情報処理装置100を管理する管理者または情報処理装置100を使用するユーザから受信したことに基づいて開始される。
 まず、ステップS1において、情報処理装置100は、データ処理部1aを使用せずに所定のデータ処理を実行する第1プログラム2dの実行を開始する。次に、ステップS2において、情報処理装置100の分析部3bは、第1プログラム2dの実行に基づいて、データ処理部1aが発行するメモリアクセス要求を間接的に検出し、メモリアクセス要求に含まれるアクセスアドレスのパターンを分析する。第1プログラムを使用することで、データ処理部1aおよびキャッシュ回路1bをプログラマブル部1にプログラムする前に、アクセスアドレスのパターンを分析することができる。
 次に、ステップS3において、情報処理装置100は、分析部3bによるアクセスアドレスのパターンの分析が完了した場合、処理をステップS4に移行し、アクセスアドレスのパターンの分析が完了していない場合、処理をステップS2に移行する。例えば、分析部3bは、データ処理部1aが発行するメモリアクセス要求に含まれるアクセスアドレスのパターンの特徴が判明した場合、アクセスアドレスのパターンの分析を完了する。
 ステップS4において、情報処理装置100の決定部3cは、分析部3bが分析したアクセスアドレスのパターンに基づいてキャッシュ制御切替部1cの構成情報を生成することで、プログラマブル部1にプログラムするキャッシュ制御切替部1cを決定する。
 次に、ステップS5において、情報処理装置100の構成制御部3dは、決定部3cが決定したキャッシュ制御切替部1cを、データ処理部1a、キャッシュ制御部1dおよびキャッシュメモリ部1eとともにプログラマブル部1にプログラムする。ステップS2からステップS5までの処理は、情報処理装置100の制御方法の一例および情報処理装置100の制御プログラムの一例を示す。
 次に、ステップS6において、情報処理装置100は、第1プログラム2dの実行を停止し、実行を停止した個所に対応する個所から第2プログラム2eの実行を開始する。これにより、データ処理を重複または欠落させることなく、第1プログラム2dから第2プログラム2eに切り替えることができる。
 図3は、図1に示す情報処理装置100の動作の一例を示す。すなわち、図2は、情報処理装置100の制御方法の一例を示す。図3において、白抜きの矩形は、演算処理部3aで実行される処理を示す。斜線の矩形は、データ処理部1aで実行されるデータ処理と等価なデータ処理、またはデータ処理部1aで実行されるデータ処理を示す。網掛けの矩形は、キャッシュ制御切替部1cで実行される処理を示す。
 まず、情報処理装置100は、データ処理部1aを使用せずに所定のデータ処理を実行する第1プログラム2dの実行を開始する(図3(a))。第1プログラム2dは、データ処理部1aが実行するデータ処理と等価なデータ処理を実行する(図3(b))。換言すれば、第1プログラム2dは、データ処理部1aがデータ処理で使用するデータと同じデータを用いてデータ処理を実行する。データ処理部1aが実行するデータ処理は、第1データ処理の一例である。第1プログラム2dが実行するデータ処理は、第2データ処理の一例である。なお、図3の左端の括弧内は、第1プログラム2dによりデータ処理を継続した場合の動作の例を示す。
 分析部3bは、等価なデータ処理によるデータ領域2aのアクセス(すなわち、メモリアクセス要求)をモニタし、アクセスアドレスのパターンを分析する(図3(c))。すなわち、分析部3bは、第1プログラム2dによりデータ処理の一部を実行させた場合の記憶部2へのアクセスに基づいてアクセスアドレスのパターンを分析する。ここで、データ処理部1aがデータ処理で使用するデータと同じデータを用いて、第1プログラム2dがデータ処理を実行するため、分析部3bは、データ処理部1aによるメモリアクセスの特徴を分析することができる。
 決定部3cは、分析部3bが分析したアクセスアドレスのパターンの特徴に基づいて、キャッシュ制御切替部1cの構成情報を生成することを決定し、生成したキャッシュ制御切替部1cをプログラマブル部1にプログラムすることを決定する(図3(d))。構成制御部3dは、決定部3cが生成したキャッシュ制御切替部1cを、データ処理部1a、キャッシュ制御部1dおよびキャッシュメモリ部1eとともにプログラマブル部1にプログラムする(図3(e))。なお、データ処理部1a、キャッシュ制御部1dおよびキャッシュメモリ部1eは、キャッシュ制御切替部1cが生成される前(すなわち、図3の動作の開始前)にプログラマブル部1にプログラムされてもよい。
 キャッシュ制御切替部1cがプログラマブル部1にプログラムされた後、情報処理装置100は、第1プログラム2dの実行を停止し、実行を停止した個所に対応する個所から第2プログラム2eの実行を開始する(図3(f))。そして、第2プログラム2eは、データ処理部1aを呼び出し、第1プログラム2dが実行していたデータ処理のうち、未実行の処理を、データ処理部1aに実行させる(図3(g))。
 データ処理部1aが動作中、データ処理部1aが発行するメモリアクセス要求に基づいて、キャッシュ制御切替部1c、キャッシュ制御部1dおよびキャッシュメモリ部1eが動作する(図3(h))。キャッシュ制御切替部1cは、メモリアクセス要求に基づいて、キャッシュ制御情報CINFを生成し、キャッシュ制御部1dは、キャッシュ制御情報CINFに基づいて動作する。ここで、キャッシュ制御情報CINFは、データ処理部1aのメモリアクセス特性に合わせて生成されるため、他のキャッシュ制御切替部を使用する場合に比べて、キャッシュ回路1bのキャッシュヒット率を向上することができる。また、キャッシュヒット率の向上により、新たなデータを格納する記憶領域を確保するためにキャッシュメモリ部1eからデータをデータ領域2aに書き戻す追い出し処理の頻度は低下する。この結果、データ領域2aへの無駄なメモリアクセスを低減することでキャッシュ効率を向上することができ、情報処理装置100の処理性能を向上することができる。
 なお、データ処理部1aによるデータ処理は、プログラマブル部1にプログラムされたハードウェアにより実行される。このため、データ処理部1aによるデータ処理の効率は、第1プログラム2d(ソフトウェア)によるデータ処理の効率に比べて高い。したがって、データ処理部1aによるデータ処理は、データ処理部1aで実行されるデータ処理と等価なデータ処理を第1プログラム2dにより実行する場合に比べて、早く完了する(図3(i))。
 データ処理部1aによるデータ処理が完了した後、第2プログラム2eは、ソフトウェアによる処理を実行する(図3(j))。この後、第2プログラム2eは、データ処理部1aにデータ処理を実行させるため、データ処理部1aを呼び出し、データ処理部1aは、データ処理を実行する(図3(k))。上述と同様に、データ処理部1aによるデータ処理は、第1プログラム2dによりデータ処理に比べて、早く完了する(図3(l))。そして、データ処理部1aによるデータ処理が完了した後、第2プログラム2eは、ソフトウェアによる処理を実行し、全体の処理が完了する(図3(m))。図3に示すように、データ処理部1aによるデータ処理を含む第2プログラム2eにより実行される全体の処理は、第1プログラム2dにより実行される全体の処理に比べて早く完了する。
 以上、図1から図3に示す実施形態では、情報処理装置100は、データ処理部1aが出力するメモリアクセス要求に含まれるアクセスアドレスのパターンを分析し、分析結果に基づいたキャッシュ制御情報CINFを出力するキャッシュ制御切替部1cを生成する。例えば、情報処理装置100が実行する第1プログラム2dは、データ処理部1aがデータ処理で使用するデータと同じデータを用いてデータ処理を実行する。このため、分析部3bは、データ処理部1aを動作させることなく、データ処理部1aによるメモリアクセスの特徴を分析することができる。これにより、プログラマブル部1に搭載される前のデータ処理部1aのメモリアクセスの特徴に合わせて、キャッシュ回路1bのキャッシュヒット率等のキャッシュ効率を最適化することができる。この結果、データ領域2aへの無駄なメモリアクセスを低減してキャッシュ効率を向上することができ、情報処理装置100の処理性能を向上することができる。
 情報処理装置100は、データ処理部1aに実行させる処理を含むソースプログラムである第1プログラムを使用することで、データ処理部1aおよびキャッシュ回路1bをプログラマブル部1に搭載する前に、アクセスアドレスのパターンを分析することができる。アクセスアドレスのパターンの分析が完了した場合に、第1プログラムによる処理の続きを第2プログラムに実行させることで、同じ処理を第1プログラムと第2プログラムとで重複して実行する無駄を省くことができる。アクセスアドレスのパターンの分析結果に基づいてキャッシュ制御切替部1cの論理を生成することで、複数種のキャッシュ制御切替部1cの論理を予め準備することなく、プログラマブル部1にキャッシュ制御切替部1cをプログラムすることができる。
 図4は、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムの別の実施形態を示す。図1から図3に示す実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。図4に示す情報処理装置100Aは、例えば、ドメイン指向サーバである。情報処理装置100Aは、FPGA等のプログラマブル部10、メインメモリ20、CPU等の演算処理装置30、入出力インタフェース40、HDD50および通信インタフェース60を有する。
 プログラマブル部10には、特定のアプリケーションで使用するデータを処理するデータ処理部10aおよびキャッシュ回路10b等の回路がプログラムされる。データ処理部10aは、CPUコア30aが実行するアプリケーションプログラム(第2プログラム)の制御に基づいて動作し、CPUコア30aの代わりにデータ処理を実行する。データ処理部10aは、データを処理するデータ処理部の一例である。データ処理部10aが実行するデータ処理は、第1データ処理の一例である。データ処理部10aによるメインメモリ20へのアクセス(データのリードまたはデータのライト)は、キャッシュ回路10bおよびLLC(Last Level Cache)30bを介して実行される。
 キャッシュ回路10bは、図1に示すキャッシュ回路1bと同様に、キャッシュ制御切替部10c、キャッシュ制御部10dおよびキャッシュメモリ部10eを有する。キャッシュ制御切替部10cは、データ処理部10aが発行するメモリアクセス要求(リードアクセス要求またはライトアクセス要求)に基づいて、キャッシュ制御部10dに出力するキャッシュヒントおよびバースト長を決定する。キャッシュヒントは、データ処理部10aがリードアクセス要求を発行した場合、リードアクセス要求に基づいて、LLC30bから受信したデータをキャッシュメモリ部10eに保持するか否かの情報を含む。また、キャッシュヒントは、データ処理部10aがライトデータとともにライトアクセス要求を発行した場合、ライトデータをキャッシュメモリ部10eに書き込むか、LLC30bに出力するかを示す情報を含む。
 バースト長は、データ処理部10aがリードアクセス要求を発行した場合、LLC30bから受信するデータの長さを示す情報を含む。キャッシュヒントおよびバースト長は、キャッシュ制御切替部10cが出力するキャッシュ制御情報の一例である。バースト長は、キャッシュ制御情報のうちの第2情報の一例である。
 例えば、キャッシュ回路10bは、MESI(Modified, Exclusive, Shared, Invalid)プロトコルを用いて、データの一貫性を維持する制御を実行する。MESIプロトコルにおいて、”Modified”は、キャッシュメモリ部10eに保持されたデータが更新され(書き替えられ)、LLC30bまたはメインメモリ20が保持するデータと異なる状態を示す。”Exclusive”は、アクセス対象のデータが、キャッシュメモリ部10eのみに保持され、データが更新されていない状態を示す。”Shared”は、アクセス対象のデータが例えばLLC30bとキャッシュメモリ部10eとに保持され、データが更新されていない状態を示す。”Invalid”は、キャッシュメモリ部10eに保持されたデータが無効であることを示す。
 キャッシュ制御部10dは、データ処理部10aからリードアクセス要求を受信した場合、アクセスの対象データがキャッシュメモリ部10eに保持されているか否かを判定する。キャッシュ制御部10dは、対象データがキャッシュメモリ部10eに保持されている場合(キャッシュヒット)、キャッシュメモリ部10eからデータを読み出し、読み出したデータをデータ処理部10aに出力する。
 キャッシュ制御部10dは、対象データがキャッシュメモリ部10eに保持されていない場合(キャッシュミス)、LLC30bにリードアクセス要求を発行し、LLC30bから出力されるデータを受信する。この後、キャッシュ制御部10dは、リードアクセス要求に対応してキャッシュ制御切替部10cから受信するキャッシュヒントに応じて、以下のように動作する。
 キャッシュヒントが”S”の場合、キャッシュ制御部10dは、LLC30bから受信したデータをデータ処理部10aに出力するとともにキャッシュメモリ部10eに格納する。キャッシュメモリ部10eにデータを格納する空き領域がない場合、キャッシュ制御部10dは、キャッシュメモリ部10eが保持するデータのいずれかをLLC30bに書き戻す追い出し処理を実行する。追い出し処理は、データをLLC30bに書き戻すためのライトアクセス要求を含む。
 キャッシュヒントが”I”の場合、キャッシュ制御部10dは、LLC30bから受信したデータをキャッシュメモリ部10eに格納せずにデータ処理部10aに出力する。なお、キャッシュミスの発生時、キャッシュ制御部10dは、リードアクセス要求に対応してキャッシュ制御切替部10cから出力されるバースト長に対応する長さのデータをLLC30bから読み出すリードアクセス要求をLLC30bに発行する。
 一方、キャッシュ制御部10dは、データ処理部10aからライトデータとともにライトアクセス要求を受信した場合、アクセスの対象データがキャッシュメモリ部10eに保持されているか否かを判定する。キャッシュ制御部10dは、対象データがキャッシュメモリ部10eに保持されている場合(キャッシュヒット)、ライトアクセス要求に対応してキャッシュ制御切替部10cから受信するキャッシュヒントに応じて、以下のように動作する。
 キャッシュヒントが”M”の場合、キャッシュ制御部10dは、キャッシュメモリ部10eが保持するキャッシュヒットの対象データをライトデータで上書きし、LLC30bにライトアクセス要求を発行しない。キャッシュヒントが”I”の場合、キャッシュ制御部10dは、キャッシュメモリ部10eが保持するキャッシュヒットの対象データを削除し、ライトデータをLLC30bに書き込むライトアクセス要求をLLC30bに発行する。キャッシュ制御部10dがライトアクセス要求に基づいて出力する”M”または”I”のキャッシュヒントは、第1情報の一例である。
 キャッシュ制御部10dは、対象データがキャッシュメモリ部10eに保持されていない場合(キャッシュミス)、ライトアクセス要求に対応してキャッシュ制御切替部10cから受信するキャッシュヒントに応じて、以下のように動作する。
 キャッシュヒントが”M”の場合、キャッシュ制御部10dは、ライトデータに対応するデータの読み出し要求をLLC30bに発行し、LLC30bから受信するデータをライトデータに置き換え、キャッシュメモリ部10eに格納する。ここで、ライトデータのビット幅がLLC30bから受信するデータのビット幅より小さい場合、LLC30bから受信するデータの一部がライトデータで置き換えられる。キャッシュヒントが”I”の場合、キャッシュ制御部10dは、ライトデータをLLC30bに書き込むライトアクセス要求をLLC30bに発行する。
 キャッシュメモリ部10eは、データの入出力の単位である複数のエントリ(キャッシュライン)を有し、LLC30bに対するデータの入出力は、キャッシュライン単位で実行される。また、バースト長が”1”の場合、1つのキャッシュラインに対応するデータがアクセスされる。バースト長が”2”の場合、2つのキャッシュラインに対応するデータがアクセスされる。バースト長が”4”の場合、4つのキャッシュラインに対応するデータがアクセスされる。
 メインメモリ20は、例えば、複数のSDRAMが搭載されたメモリモジュールであり、データ領域20a、プログラム領域20bおよび構成情報領域20cを有する。メインメモリ20は、記憶部の一例である。データ領域20aは、データ処理部10aで処理するデータおよび演算処理装置30で使用するデータ等を保持する。
 プログラム領域20bは、OS、管理プログラムおよびアプリケーションプログラム等の各種プログラム20dと、制御プログラム20e等を保持する。例えば、アプリケーションプログラムのいずれかは、データ処理部10aを使用せずに所定のデータ処理を実行する第1プログラムである。第1プログラムは、データ処理部10aが実行するデータ処理と等価なデータ処理を実行する機能を含む処理プログラムの一例である。第1プログラムが実行するデータ処理は、第2データ処理の一例である。
 アプリケーションプログラムの他のいずれかは、データ処理部10aを使用して所定のデータ処理を実行する第2プログラムである。例えば、プログラム領域20bに格納される各種プログラム20dと制御プログラム20eとは、CD-ROM、DVD、USBメモリ等のコンピュータにより読み取り可能な記録媒体70またはネットワークNWを介してHDD50に格納される。この後、各種プログラム20dと制御プログラム20eとは、HDD50からメインメモリ20に転送される。
 構成情報領域20cは、プログラマブル部10にプログラムされる様々な回路の構成情報を保持する。構成情報がプログラマブル部10に書き込まれることで、プログラマブル部10は、データ処理部10aおよびキャッシュ回路10b等の機能を実現する。構成情報は、予め生成されてもよく、情報処理装置100Aに要求される処理性能に合わせて、演算処理装置30が実行する論理合成用のプログラム等により生成されてもよい。なお、構成情報は、メインメモリ20以外の記憶領域に記憶されてもよく、情報処理装置100Aの外部の記憶領域に記憶されてもよい。
 演算処理装置30は、各種プログラムを並列に実行可能な複数のCPUコア30a、LLC30bおよびMMU(Memory Management Unit)30cを有する。プログラマブル部10は、バスBUS1を介して演算処理装置30のLLC30bに接続され、メインメモリ20は、バスBUS2を介して演算処理装置30のMMU30cに接続される。
 演算処理装置30は、CPUコア30aによりOS(Operating System)および管理プログラムを実行することで情報処理装置100Aの全体の動作を制御する。また、演算処理装置30は、CPUコア30aによりアプリケーションプログラムを実行することで、ドメイン指向サーバとして機能する。
 さらに、演算処理装置30は、CPUコア30aが制御プログラム20eを実行することで、分析部30d、決定部30eおよび構成制御部30fとして機能する。なお、分析部30d、決定部30eおよび構成制御部30fは、ハードウェア(回路)として、情報処理装置100Aに搭載されてもよい。
 LLC30bは、キャッシュメモリの一種であり、CPUコア30aから最も離れた(すなわち、メインメモリ20に最も近い)キャッシュメモリである。MMU30cは、メインメモリ20に対するメモリアクセスを管理する。例えば、MMU30cは、CPUコア30aが出力する仮想アドレスを、メインメモリ20に割り当てられた物理アドレスに変換する。
 分析部30d、決定部30eおよび構成制御部30fのそれぞれの機能は、図1から図3で説明した分析部3b、決定部3cおよび構成制御部3dのそれぞれの機能と同様である。分析部30d、決定部30eおよび構成制御部30fの動作は、図7から図10で説明される。
 入出力インタフェース40の1つは、DVD等の記録媒体70が装着される光学ドライブ装置に接続され、あるいは、USBメモリ等が装着されるコネクタを有する。他の入出力インタフェース40は、図示しないマウスおよびキーボード等の入力装置と、図示しないディスプレイ等の出力装置にそれぞれ接続される。
 HDD50は、メインメモリ20に格納するプログラムおよび構成情報等を記憶する。通信インタフェース60は、インターネットまたはイントラネット等のネットワークNWに接続され、ネットワークNWとの間で情報を入出力する。入出力インタフェース40、HDD50および通信インタフェース60は、バスBUS3を介して演算処理装置30に接続される。
 図5は、図4に示すプログラマブル部10のチップ構成の一例を示す。プログラマブル部10は、網掛けの矩形で示す複数の入出力端子IO、白抜きの矩形で示す複数のALM(Adaptive Logic Module)、複数のメモリM1、複数のメモリM2および複数のDSP(Digital Signal Processor)を有する。ALMには、プログラマブル部10に転送される構成情報に基づいて論理がプログラムされる。特に限定されないが、メモリM1、M2の記憶素子と、DSPの内部回路は、プログラマブル部10に予め構築されており、構成情報の転送により、接続配線が構築される。
 例えば、図4に示すデータ処理部10aは、所定数の入出力端子IO、所定数のALM、所定数のメモリM1および所定数のDSPを使用してプログラマブル部10上に構築される。キャッシュメモリ部10eは、所定数のALMおよび所定数のメモリM1、M2を使用してプログラマブル部10上に構築される。キャッシュ制御部10dおよびキャッシュ制御切替部10cの各々は、所定数のALM、所定数のメモリM1および所定数のDSPを使用してプログラマブル部10上に構築される。
 図6は、図4に示すプログラマブル部10にプログラムされるデータ処理部10aの一例を示す。データ処理部10aは、CPUコア30aのみでデータ処理が完結する第1プログラムの中から、プログラマブル部10に実行させるデータ処理の部分を論理合成し、構成情報を生成する。例えば、プログラマブル部10に実行させるデータ処理は、破線で囲った部分であり、他のデータ処理に比べて時間が掛かるデータ処理であり、かつ、反復性を有するデータ処理である。データ処理部10aは、構成情報がプログラマブル部10にプログラムされることで、プログラマブル部10に構築される。すなわち、CPUコア30aがプログラムにより実行するデータ処理の一部が、プログラマブル部10にオフロードされる。
 そして、論理合成したデータ処理部10aによるデータ処理部分を第1プログラムから除き、データ処理部10aの呼び出し処理を追加した第2プログラムが、データ処理部10aがプログラマブル部10にプログラムされた後に実行される。これにより、プログラマブル部10は、演算処理装置30のアクセラレータとして動作し、演算処理装置30とプログラマブル部10とによりデータ処理が実行される。
 図7は、図6に示す第2プログラムを実行する環境を構築する処理の一例を示す。まず、事前準備として、ステップS10において、キャッシュ制御部10dおよびキャッシュメモリ部10eが論理合成され、構成情報が生成される。ステップS12において、第1プログラムの中でプログラマブル部10に処理させる部分が、データ処理部10aとして論理合成され、構成情報が生成される。
 ステップS14において、論理合成したデータ処理部10aにデータ処理を実行させる第2プログラム(ソースプログラム)が生成される。そして、ソースプログラムをコンパイルすることにより、CPUコア30aで実行可能な第2プログラムのオブジェクトファイルが生成される。ステップS16において、第1プログラム(ソースプログラム)がコンパイルされ、第1プログラムのオブジェクトファイルが生成される。
 なお、ステップS12、S14が順次実行されることを除き、ステップS10、S12、S14、S16は、図7に示す順序以外で実行されてもよい。また、事前準備は、情報処理装置100Aで実行されてもよく、他のツールを使用して実行されてもよい。
 事前準備が完了した後、データ処理部10aを使用してデータ処理を実行するための環境を情報処理装置100A上に構築する構築処理が実行される。構築処理は、CPUコア30aで実行するデータ処理の一部をデータ処理部10aに実行させる指示を、情報処理装置100Aを管理する管理者または情報処理装置100Aを使用するユーザから受信したことに基づいて開始される。まず、ステップS20において、情報処理装置100Aは、演算処理装置30に第1プログラムの実行を開始させる。
 次に、ステップS22において、情報処理装置100Aの分析部30dは、第1プログラムにおいてデータ処理部10aの動作に相当する命令を分析し、メモリアクセス命令の特徴を抽出する。ここで、データ処理部10aの動作に相当する命令は、図6に示した第1プログラムのうち、破線で囲った部分に含まれる命令である。
 次に、ステップS24において、情報処理装置100Aの決定部30eは、ステップS22で抽出した特徴に基づいて、キャッシュ制御切替部10cの論理を生成することで、プログラマブル部10にプログラムするキャッシュ制御切替部10cを決定する。
 次に、ステップS26において、情報処理装置100Aの構成制御部30fは、キャッシュ回路10bの構成情報とデータ処理部10aの構成情報とを、プログラマブル部10にプログラムする。キャッシュ回路10bは、キャッシュ制御切替部10c、キャッシュ制御部10dおよびキャッシュメモリ部10eを含む。すなわち、情報処理装置100Aは、事前に準備したキャッシュ制御部10d、キャッシュメモリ部10eおよびデータ処理部10aの構成情報と、ステップS24で生成したキャッシュ制御切替部10cの構成情報とを、プログラマブル部10にプログラムする。そして、データ処理部10aを使用してデータ処理を実行するための環境を構築する構築処理が完了する。これにより、第2プログラムの実行が可能になる。
 ステップS22からステップS26までの処理は、情報処理装置100Aの制御方法の一例および情報処理装置100Aの制御プログラムの一例を示し、図3(a)から図3(e)に示した処理に対応する。換言すれば、図3の右端のデータ処理部をデータ処理部10aに置き換え、各要素の符号を付け替えることで、図3は、情報処理装置100Aの動作の例を示す。
 例えば、分析部30dは、CPUコア30aが実行する第1プログラムによりデータ処理の一部を実行させた場合のメインメモリ20へのアクセスに基づいてアクセスアドレスのパターンを分析する。決定部30eは、分析部30dが分析したアクセスアドレスのパターンの特徴に基づいて、キャッシュ制御切替部10cを生成し、生成したキャッシュ制御切替部1cをプログラマブル部10にプログラムすることを決定する。構成制御部30fは、決定部30eが生成したキャッシュ制御切替部10cを、データ処理部10a、キャッシュ制御部10dおよびキャッシュメモリ部10eとともにプログラマブル部10にプログラムする。
 キャッシュ制御切替部10cがプログラマブル部1にプログラムされた後、情報処理装置100Aは、第1プログラムの実行を停止し、実行を停止した個所に対応する個所から第2プログラムの実行を開始する。そして、第2プログラムは、データ処理部10aを呼び出し、第1プログラムが実行していたデータ処理のうち、未実行の処理を、データ処理部10aに実行させる。データ処理部10aが動作中、データ処理部10aが発行するメモリアクセス要求に基づいて、キャッシュ制御切替部10c、キャッシュ制御部10dおよびキャッシュメモリ部10eが動作する。キャッシュ制御切替部10cは、メモリアクセス要求に基づいて、キャッシュヒントおよびバースト長を生成し、キャッシュ制御部10dは、キャッシュヒントおよびバースト長に基づいて動作する。
 なお、キャッシュ制御部10d、キャッシュメモリ部10eおよびデータ処理部10aの構成情報は、ステップS20の処理を開始する前に、プログラマブル部10にプログラムされてもよい。この場合、事前準備において、データ処理部10aとキャッシュ制御切替部10cとを互いに接続するインタフェース仕様と、キャッシュ制御切替部10cとキャッシュ制御部10dとを互いに接続するインタフェース仕様とが決められる。そして、決定部30eは、事前準備で決められたインタフェース仕様にしたがって、キャッシュ制御切替部10cの論理を生成する。
 図8は、図7に示すステップS24で生成されるキャッシュ制御切替部10cを含むキャッシュ回路の動作の一例を示す。左側の欄は、データ処理部10aで実行する処理と等価な命令群(ソースプログラム)とその行番号を示す。図8に示す命令群は、図6の第1プログラムの破線の枠内で実行される命令の一例を示す。例えば、命令群は、3つのプロセスA、B、Cの処理を含む。
 ”LD”はロード命令を示し、”ST”はストア命令を示し、”EXE”が付く命令は演算命令を示し、”BR”は分岐命令を示す。例えば、1行目の”LD A1,Da1”は、アドレスA1のメモリ領域からデータを読み出してレジスタDa1に格納することを示す。4行目の”ST A3,Da3”は、レジスタDa3に保持されたデータをアドレスA3のメモリ領域に格納することを示す。3行目の”EXE1 Da3 (Da1,Da2)”は、レジスタDa1、Da2に保持されたデータを演算し、演算結果をレジスタDa3に格納することを示す。5行目の”BR Da3 B C”は、レジスタDa3に格納された値に応じて6行目または21行目に分岐することを示す。”B”、”C”は、ラベルを示す。
 中央の欄は、キャッシュ回路10bの動作の例を示し、キャッシュヒントとバースト長は、メモリアクセス要求(ロード命令LDまたはストア命令ST)毎にキャッシュ制御切替部10cにより生成される。右側の欄は、キャッシュ制御切替部10cを持たない他のキャッシュ回路の動作の例を示し、キャッシュヒントは”S”(リードアクセス)と”M”(ライトアクセス)に固定され、バースト長は”1”に固定される。中央の欄および右側の欄において、”ミス”は、キャッシュミスの発生を示し、”ヒット”は、キャッシュヒットの発生を示し、”追い出しの発生”に示す数字は、データを追い出すキャッシュラインの数を示す。
 キャッシュ回路10bの動作において、1行目のロード命令LDに対応してデータ処理部10aが実行するリードアクセス(アドレスA1)では、キャッシュ制御切替部10cは、キャッシュヒント(=”I”)をキャッシュ制御部10dに出力する。データ処理部10aが、この後、リードアクセス(アドレスA1)を実行しない場合、リードアクセスに基づいてLCC30bから出力されるデータは、キャッシュメモリ部10eに保持しなくてよい。
 この場合、キャッシュヒントを”I”に設定することで、キャッシュメモリ部10eからキャッシュラインが無駄に追い出されることを抑止することができる。これに対して、他のキャッシュ回路の動作では、1行目のロード命令LDに対応してデータ処理部10aが実行するリードアクセス(アドレスA1)では、キャッシュヒントが”S”のため、キャッシュラインの無駄な追い出しが発生する。
 2行目のロード命令LDに対応してデータ処理部10aが実行するリードアクセス(アドレスA2)では、キャッシュ制御切替部10cは、キャッシュヒント(=”S”)をキャッシュ制御部10dに出力する。ロード命令LD(アドレスA2)は、22行目でも実行される。データ処理部10aが、同じアドレスのリードアクセスを複数回実行する場合、最初のリードアクセスのキャッシュヒントを”S”にすることで、2回目以降のリードアクセスをキャッシュヒットさせることができる。
 4行目のストア命令STに対応してデータ処理部10aが実行するライトアクセス(アドレスA3)では、キャッシュ制御切替部10cは、キャッシュヒント(=”M”)とバースト長(=”1”)をキャッシュ制御部10dに出力する。ストア命令ST(アドレスA3)は、25行目でも実行される。データ処理部10aが、同じアドレスのライトアクセスを複数回実行する場合、ライトアクセスのキャッシュヒントを”M”にすることで、LLC30bに発行するライトアクセス要求の頻度を下げることができる。
 7行目のロード命令LDに対応してデータ処理部10aが実行するリードアクセス(アドレスB1)では、キャッシュ制御切替部10cは、キャッシュヒント(=”S”)とバースト長(=”2”)をキャッシュ制御部10dに出力する。8行目のロード命令LDに対応してデータ処理部10aが実行するリードアクセスのアドレスB2は、アドレスB1に連続する。この場合、バースト長を”2”に設定することで、リードアクセス(アドレスB2)をキャッシュヒットさせることができ、LLC30bへのアクセス要求の頻度を減らすことができる。
 これに対して、他のキャッシュ回路の動作では、7行目のロード命令LDに対応してデータ処理部10aが実行するリードアクセス(アドレスB1)のバースト長が”1”に設定される。このため、8行目のロード命令LDに対応してデータ処理部10aが実行するリードアクセス(アドレスB2)でキャッシュミスが発生し、キャッシュ制御部10dは、LLC30bに無駄なリードアクセス要求を発行する。
 10行目のストア命令STに対応してデータ処理部10aが実行するライトアクセス(アドレスB3)では、キャッシュ制御切替部10cは、キャッシュヒント(=”I”)とバースト長(=”1”)をキャッシュ制御部10dに出力する。データ処理部10aが、この後、ライトアクセス(アドレスB3)を実行しない場合、ライトアクセスとともにデータ処理部10aが出力するライトデータは、キャッシュメモリ部10eに保持しなくてよい。この場合、キャッシュヒントを”I”に設定し、ライトデータをLLC30bに直接書き込むことで、キャッシュメモリ部10eからキャッシュラインが無駄に追い出されることを抑止することができる。
 これに対して、他のキャッシュ回路の動作では、10行目のストア命令STに対応してデータ処理部10aが実行するライトアクセス(アドレスB3)のキャッシュヒントが”M”に設定される。このため、その後のアクセスで使用されない無駄なデータがキャッシュメモリ部10eに保持され、キャッシュラインの無駄な追い出しが発生する。
 23行目のロード命令LDに対応してデータ処理部10aが実行するリードアクセス(アドレスC1)では、1行目と同様に、キャッシュ制御切替部10cは、キャッシュヒント(=”I”)をキャッシュ制御部10dに出力する。データ処理部10aが、この後、リードアクセス(アドレスC1)を実行しない場合、キャッシュヒントを”I”に設定することで、キャッシュメモリ部10eからキャッシュラインが無駄に追い出されることを抑止することができる。
 このように、データ処理部10aのアクセスアドレスのパターンの特徴に基づいて生成されたキャッシュ制御切替部10cにより、キャッシュ回路10bは、無駄な追い出し処理および無駄なLLC30bへのアクセス要求が発生することを抑止することができる。この結果、他のキャッシュ回路に比べて、図4に示すバスBUS1の使用効率を向上することができ、情報処理装置100Aの処理性能を向上することができる。
 図9は、図7に示すステップS22で使用する特徴抽出テーブルTBLの一例を示す。特徴抽出テーブルTBLは、分析部30dが抽出したメモリアクセス命令の特徴を記録するために使用される。特徴抽出テーブルTBLは、アクセス種別、アクセスアドレス、キャッシュヒントおよびバースト長を格納する領域を含む複数のエントリを有する。
 アクセス種別の領域には、特徴を抽出したメモリアクセス命令がリード命令である場合、リードを示す情報が格納され、特徴を抽出したメモリアクセス命令がライト命令である場合、ライトを示す情報が格納される。アクセスアドレスの領域には、特徴を抽出したメモリアクセス命令に含まれるアドレスが格納される。
 キャッシュヒントの領域には、キャッシュ制御部10dが使用するキャッシュヒントが格納される。キャッシュヒントは、”Shared”を示す”S”、”Modified”を示す”M”、”Invalid”を示す”I”、または”Exclusive”を示す”E”が格納される。
 アクセス種別がリードの場合、キャッシュヒントは、リード命令に相当するリードアクセス要求に基づいて、キャッシュ制御部10dが、LLC30bから受信したデータをキャッシュメモリ部10eに保持するか否かを示す。アクセス種別がライトの場合、キャッシュヒントは、ライト命令に相当するライトアクセス要求に基づいて、キャッシュ制御部10dが、ライトアクセス要求に含まれるライトデータをキャッシュメモリ部10eに格納するか、LLC30bに出力するかを示す。
 バースト長の領域には、メモリアクセス命令によりキャッシュメモリ部10eに入力されるデータの数を示すバースト長が格納される。なお、バースト長は、キャッシュメモリ部10eのアクセスの単位であるキャッシュラインのアクセス数を示す。
 分析部30dは、メモリアクセス命令の特徴が抽出できるまで、メモリアクセス命令毎に、アクセス種別とアクセスアドレスとを特徴抽出テーブルTBLに順次格納する。そして、メモリアクセス命令の特徴が抽出しながら、各エントリに格納したメモリアクセス要求に最適なキャッシュヒントとバースト長とを判定し、判定したキャッシュヒントとバースト長とを各エントリに格納する。
 図10は、図7に示すステップS22の処理の一例を示す。まず、ステップS222において、分析部30dは、特徴抽出テーブルTBLを初期化する。例えば、アクセス種別とアクセスアドレスの領域には、無効な値が格納される。キャッシュヒントの領域には、”I”が格納され、バースト長の領域には、”1”が格納される。
 次に、ステップS224において、分析部30dは、順次実行される命令の中からメモリアクセス命令を検出する。なお、検出対象のメモリアクセス命令は、図6に示す第1プログラムの中で、データ処理部10aに処理させる破線で囲った部分に含まれるメモリアクセス命令である。
 次に、ステップS226において、分析部30dは、検出したメモリアクセス命令がストア命令の場合、処理をステップS228に移行し、検出したメモリアクセス命令がストア命令でない場合、ロード命令であるため、処理をステップS232に移行する。
 ステップS228において、分析部30dは、今回検出したストア命令に含まれるアドレスが、以前に検出したストア命令に含まれるアドレスと同じ場合、処理をステップS230に移行する。分析部30dは、検出したストア命令に含まれるアドレスが、以前に検出したストア命令に含まれるアドレスと異なる場合、処理をステップS240に移行する。
 ステップS230において、分析部30dは、アドレスが互いに同じストア命令に対応して、特徴抽出テーブルTBLに、ライトを示す情報と、アドレスの値と、キャッシュヒント=”M”とを格納し、処理をステップS240に移行する。
 一方、ステップS232において、分析部30dは、今回検出したロード命令に含まれるアドレスが、以前に検出したロード命令に含まれるアドレスと同じ場合、処理をステップS234に移行する。分析部30dは、検出したロード命令に含まれるアドレスが、以前に検出したロード命令に含まれるアドレスと異なる同じ場合、処理をステップS236に移行する。
 ステップS234において、分析部30dは、アドレスが互いに同じロード命令に対応して、特徴抽出テーブルTBLに、リードを示す情報と、アドレスの値と、キャッシュヒント=”S”とを格納し、処理をステップS236に移行する。
 ステップS236において、分析部30dは、現在のロード命令と直前のロード命令とのアドレスが互いに同じ場合、処理をステップS238に移行し、現在のロード命令と直前のロード命令とのアドレスが互いに異なる場合、処理をステップS240に移行する。ステップS238において、分析部30dは、直前のロード命令とアドレスが互いに同じロード命令に対応して、特徴抽出テーブルTBLに、リードを示す情報と、アドレスの値と、キャッシュヒント=”S”と、バースト長=”2”とを格納する。この後、処理は、ステップS240に移行される。
 ステップS240において、分析部30dは、メモリアクセス命令の特徴が抽出され、特徴抽出テーブルTBLに格納した情報に基づいてキャッシュメモリ部10eのキャッシュヒット率を向上できると判断した場合、処理を終了する。分析部30dは、メモリアクセス命令の特徴の抽出が不十分であると判定した場合、処理をステップS224に戻し、メモリアクセス命令の特徴の抽出を続行する。このように、分析部30dは、第1プログラムの実行により発生する、メモリアクセス命令を利用して、データ処理部10aから発行されるメモリアクセス要求命令の特徴を抽出する。
 例えば、メモリアクセス命令の特徴が格納された特徴抽出テーブルTBLは、キャッシュ制御切替部10cの一部として、プログラマブル部10内のメモリM1(図5)にプログラムされる。なお、メモリアクセス命令の特徴が格納された特徴抽出テーブルTBLは、キャッシュ制御切替部10cの一部として、プログラマブル部10内のALMにプログラムされてもよい。
 以上、図4から図10に示す実施形態においても、図1から図3に示す実施形態と同様の効果を得ることができる。例えば、データ処理部10aのメモリアクセスの特徴に合わせて、キャッシュ回路10bのキャッシュ効率を最適化することができ、情報処理装置100Aの処理性能を向上することができる。データ処理部10aおよびキャッシュ回路10bをプログラマブル部10に搭載する前に、アクセスアドレスのパターンを分析することができる。第1プログラムと第2プログラムとで同じ処理を重複して実行する無駄を省くことができ、あるいは、処理が欠落することを抑止することができる。
 図11は、情報処理装置の別の実施形態における第2プログラムを実行する環境を構築する処理の一例を示す。図7と同一の要素については、詳細な説明は省略する。図11では、図7のステップS22の代わりに、ステップS22Aが実行される。ステップS22Aを除く処理は、図7と同じである。
 ステップS22A、S24、S26に示す処理は、情報処理装置が実行する制御プログラムにより実行される。すなわち、ステップS22A、S24、S26に示す処理は、情報処理装置の制御方法の一例および情報処理装置の制御プログラムの一例を示す。
 ステップS20、S22A、S24、S26を実行する情報処理装置は、図4に示した制御プログラム20eが異なることを除き、図4に示す情報処理装置100Aと同様である。換言すれば、ステップS20、S22A、S24、S26を実行する情報処理装置は、図4に示す分析部30dと決定部30eが実行する処理が異なることを除き、図4に示す情報処理装置100Aと同様である。
 ステップS22Aにおいて、情報処理装置100Aの分析部30dは、第1プログラムにおいてデータ処理部10aの動作に相当する命令を分析し、分岐命令において、分岐する確率が他より高い分岐先を検出する。そして、分析部30dは、分岐する確率が他より高い分岐先で実行されるメモリアクセスの特徴を抽出する。すなわち、分析部30dは、図12に示す複数のプロセスA、B、Cのうち、実行頻度が他のプロセスよりも高いプロセスによるアクセスアドレスのパターンを分析する。次に、ステップS24において、決定部30eは、ステップS22Aで抽出した特徴に基づいて、キャッシュ制御切替部10cの論理を生成する。
 図12は、図11に示すステップS24で生成されたキャッシュ制御切替部10cを含むキャッシュ回路10bの動作の一例を示す。図8と同一または同様の要素については、詳細な説明は省略する。左側の欄に示すデータ処理部10aで実行する処理と等価な命令群(ソースプログラム)は、図8と同じである。
 中央の欄は、5行目のブランチ命令BRにおいて、プロセスBで実行されるメモリアクセスの特徴の抽出に基づいて生成されたキャッシュ制御切替部を含むキャッシュ回路の動作を示す。すなわち、中央の欄は、ラベルBに分岐する確率が他に分岐する確率より高い場合に合わせて生成されたキャッシュ制御切替部を含むキャッシュ回路の動作を示す。
 右側の欄は、5行目のブランチ命令BRにおいて、プロセスCで実行されるメモリアクセスの特徴の抽出に基づいて生成されたキャッシュ制御切替部を含むキャッシュ回路の動作を示す。すなわち、右側の欄は、ラベルCに分岐する確率が他に分岐する確率より高い場合に合わせて生成されたキャッシュ制御切替部を含むキャッシュ回路の動作を示す。
 5行目のブランチ命令BRにおいて、ラベルBに分岐する確率が高い場合、7行目のロード命令LDに対応してデータ処理部10aが実行するリードアクセス(アドレスB1)のバースト長が”2”に設定される。これにより、次のリードアクセス(アドレスB2)をキャッシュヒットさせることができ、LLC30bへのアクセス要求の頻度を減らすことができる。この例では、プロセスBでのキャッシュ効率が高くなるように、全てのリードアクセスにおいて、キャッシュヒントは”S”に設定され、バースト長は”2”に設定される。
 一方、5行目のブランチ命令BRにおいて、ラベルCに分岐する確率が高い場合、例えば、22行目のロード命令LD(アドレスA2)のアクセス効率を向上するため、2行目のロード命令(アドレスA2)のキャッシュヒントが”S” に設定される。また、1行目のロード命令LD(アドレスA1)と8行目のロード命令(アドレスB2)は、プロセスCでは実行されないため、キャッシュヒントが”I”に設定される。
 さらに、7行目のロード命令LD(アドレスB1)が実行された後に、プロセスCにおいて、アドレスB1のリードアクセスが実行されるため(図示せず)、7行目のロード命令のキャッシュヒントが”S”に設定される。23行目のロード命令LD(アドレスC1)で読み出されたデータは、その後のプロセスCの処理で使用されないため、23行目のロード命令LDのキャッシュヒントは”I”に設定される。
 これにより、22行目のロード命令LDをキャッシュヒットさせることができ、23行目のロード命令LDに基づいてキャッシュラインの無駄な追い出しが発生することを抑止することができる。また、プロセスCに関連する処理を実行する他のプロセス(1行目、8行目)においても、キャッシュラインの無駄な追い出しが発生することを抑止することができる。
 なお、図12に示す動作では、ストア命令STに対応してデータ処理部10aが実行するライトアクセスは、図8の右側の欄と同様に、キャッシュヒントは”M”に設定され、バースト長は”1”に設定される。
 以上、図11および図12に示す実施形態においても、図1から図3に示す実施形態と同様の効果を得ることができる。例えば、データ処理部10aのメモリアクセスの特徴に合わせて、キャッシュ回路10bのキャッシュ効率を最適化することができ、情報処理装置100Aの処理性能を向上することができる。データ処理部10aおよびキャッシュ回路10bをプログラマブル部10に搭載する前に、アクセスアドレスのパターンを分析することができる。第1プログラムと第2プログラムとで同じ処理を重複して実行する無駄を省くことができ、あるいは、処理が欠落することを抑止することができる。
 さらに、図11および図12に示す実施形態では、実行頻度が他より高い処理のアクセスアドレスのパターンの特徴に合わせて、キャッシュ回路10bのキャッシュ効率を最適化することができる。これにより、例えば、プロセスCまたはプロセスCに特化して、キャッシュ回路10bのキャッシュ効率を最適化することができる。
 図13は、情報処理装置の別の実施形態における第2プログラムを実行する環境を構築する処理の一例を示す。図7と同一の要素については、詳細な説明は省略する。図13では、事前準備において、複数のキャッシュ制御切替部を論理合成するステップS11Bが、図7に対して追加される。また、図7のステップS24の代わりに、ステップS24Bが実行される。その他の処理は、図7と同じである。
 ステップS22、S24B、S26に示す処理は、情報処理装置が実行する制御プログラムにより実行される。すなわち、ステップS22、S24B、S26に示す処理は、情報処理装置の制御方法の一例および情報処理装置の制御プログラムの一例を示す。ステップS20、S22、S24B、S26を実行する情報処理装置は、図4に示す制御プログラム20eが異なることを除き、図4に示す情報処理装置100Aと同様である。換言すれば、ステップS20、S22、S24B、S26を実行する情報処理装置は、図4に示す決定部30eが実行する処理が異なることを除き、図4に示す情報処理装置100Aと同様である。
 ステップS11Bにおいて、様々なメモリアクセスの特徴に合わせた複数種のキャッシュ制御切替部が論理合成され、構成情報が生成される。なお、事前準備は、情報処理装置100Aで実行されてもよく、他のツールを使用して実行されてもよい。ステップS11Bは、事前準備のフローにおいて、他の個所に配置されてもよい。
 ステップS24Bにおいて、情報処理装置100Aの決定部30eは、ステップS22で抽出した特徴に基づいて、ステップS11Bで生成された複数種のキャッシュ制御切替部の中からメモリアクセス効率が他より高くなるキャッシュ制御切替部10cを選択する。なお、ステップS22の代わりに図11に示したステップS22Aが実行され、ステップS24Bにおいて、決定部30eが、ステップS22Aで抽出した特徴に基づいて、メモリアクセス効率が他より高くなるキャッシュ制御切替部10cを選択してもよい。
 決定部30eは、事前準備で生成されたキャッシュ制御切替部の構成情報を使用できるため、アクセスアドレスのパターンの分析結果に基づいてキャッシュ制御切替部10cを生成する処理を省略することができる。これにより、プログラマブル部10にプログラムするキャッシュ制御切替部10cを準備するまでに実行される第1プログラムの命令数を最小限にすることができる。この結果、情報処理装置100Aが実行するデータ処理に使用されるデータ処理部10aの動作率を向上することができ、データ処理の処理性能を向上することができる。
 以上、図13に示す実施形態においても、図1から図3に示す実施形態と同様の効果を得ることができる。例えば、データ処理部10aのメモリアクセスの特徴に合わせて、キャッシュ回路10bのキャッシュ効率を最適化することができ、情報処理装置100Aの処理性能を向上することができる。データ処理部10aおよびキャッシュ回路10bをプログラマブル部10に搭載する前に、アクセスアドレスのパターンを分析することができる。第1プログラムと第2プログラムとで同じ処理を重複して実行する無駄を省くことができ、あるいは、処理が欠落することを抑止することができる。
 さらに、図13に示す実施形態では、事前準備で生成されたキャッシュ制御切替部の構成情報を使用することで、プログラマブル部10にプログラムするキャッシュ制御切替部10cを準備するまでに実行される第1プログラムの命令数を最小限にすることができる。この結果、情報処理装置100Aが実行するデータ処理に使用されるデータ処理部10aの動作率を向上することができ、データ処理の処理性能を向上することができる。
 図14は、情報処理装置の別の実施形態における第2プログラムを実行する環境を構築する処理の一例を示す。図7と同一の要素については、詳細な説明は省略する。図14では、図7のステップS24の代わりに、ステップS24Cが実行され、図7のステップS22の後にステップS23Cが追加される。ステップS23C、S24Cを除く処理は、図7と同じである。
 ステップS22、S23C、S24C、S26に示す処理は、情報処理装置が実行する制御プログラムにより実行される。すなわち、ステップS22、S23C、S24C、S26に示す処理は、情報処理装置の制御方法の一例および情報処理装置の制御プログラムの一例を示す。ステップS20、S22、S23C、S24C、S26を実行する情報処理装置は、図4に示す制御プログラム20eが異なることを除き、図4に示す情報処理装置100Aと同様である。換言すれば、S20、S22、S23C、S24C、S26を実行する情報処理装置は、図4に示す決定部30eが実行する処理が異なることを除き、図4に示す情報処理装置100Aと同様に動作する。
 ステップS23Cにおいて、決定部30eは、プログラマブル部10において、キャッシュ制御切替部をプログラム可能な空き領域を検出する。例えば、決定部30eは、図5に示したプログラマブル部10において、未使用のALMの数、未使用のメモリM1の数および未使用のDSPの数を検出する。
 次に、ステップS24Cにおいて、決定部30eは、ステップS22で抽出された特徴に基づいて、空き領域にプログラム可能な規模のキャッシュ制御切替部10cの論理を生成する。すなわち、決定部30eは、未使用のALM、メモリM1、DSPを使用して搭載可能な回路規模のキャッシュ制御切替部10cを生成する。
 キャッシュ制御切替部10cの性能は、回路規模が大きいほど高くなり、回路規模が小さいほど低くなる。ここで、キャッシュ制御切替部10cの性能は、キャッシュヒット率が高いほど高く、キャッシュラインの追い出し頻度が少ないほど高い。このように、ステップS23C、S24Cにより、プログラマブル部10の空き領域に応じて最適な性能のキャッシュ制御切替部10cをプログラマブル部10に搭載することができる。また、空き領域の制限により、キャッシュ制御切替部10cがプログラマブル部10にプログラムされない不具合を解消することができる。
 なお、図11に示すステップS22Aと同様に、分析部30dは、分岐する確率が他より高い分岐先で実行されるメモリアクセスの特徴を抽出してもよい。また、図13に示すステップS24Bと同様に、決定部30eは、キャッシュ制御切替部10cの論理を生成する代わりに、予め生成された複数のキャッシュ制御切替部の中から、メモリアクセス効率が他より高くなるキャッシュ制御切替部を選択してもよい。この場合、決定部30eは、プログラマブル部10の空き領域に合わせてキャッシュ制御切替部を選択する。さらに、決定部30eがメモリアクセス効率が他より高くなるキャッシュ制御切替部を選択することに加えて、図11に示したように、分析部30dが分岐する確率が他より高い分岐先でのメモリアクセスの特徴を抽出してもよい。
 以上、図14に示す実施形態においても、図1から図3に示す実施形態と同様の効果を得ることができる。例えば、データ処理部10aのメモリアクセスの特徴に合わせて、キャッシュ回路10bのキャッシュ効率を最適化することができ、情報処理装置100Aの処理性能を向上することができる。データ処理部10aおよびキャッシュ回路10bをプログラマブル部10に搭載する前に、アクセスアドレスのパターンを分析することができる。第1プログラムと第2プログラムとで同じ処理を重複して実行する無駄を省くことができ、あるいは、処理が欠落することを抑止することができる。
 さらに、図14に示す実施形態では、プログラマブル部10の空き領域に応じた最適な性能のキャッシュ制御切替部10cをプログラマブル部10に搭載することができる。また、空き領域の制限により、キャッシュ制御切替部10cがプログラマブル部10にプログラムされない不具合を解消することができる。
 図15は、情報処理装置の別の実施形態における第2プログラムを実行する環境を構築する処理の一例を示す。図7と同一の要素については、詳細な説明は省略する。図15では、事前準備において、複数のキャッシュ制御切替部を論理合成するステップS11D、S13D、17Dが、図7に対して追加される。また、図7のステップS20、S22、S24、S26の代わりに、ステップS20D、S22D、S24D、S26Dが実行される。その他の処理は、図7と同じである。
 ステップS22D、S24D、S26Dに示す処理は、情報処理装置が実行する制御プログラムにより実行される。すなわち、ステップS22D、S24D、S26Dに示す処理は、情報処理装置の制御方法の一例および情報処理装置の制御プログラムの一例を示す。ステップS20D、S22D、S24D、S26Dを実行する情報処理装置は、図4に示す制御プログラム20eが異なることと、分析部30dがプログラマブル部10に配置されることを除き、図4に示す情報処理装置100Aと同様である。換言すれば、ステップS20D、S22D、S24D、S26Dを実行する情報処理装置は、図4に示す決定部30eが実行する処理が異なることを除き、図4に示す情報処理装置100Aと同様に動作する。
 ステップS11Dにおいて、標準的なキャッシュヒントとバースト長とを生成するデフォルトのキャッシュ制御切替部が論理合成され、構成情報が生成される。ステップS13Dにおいて、図4に示すデータ処理部10aのメモリアクセスの特徴を分析する分析回路が論理合成され、構成情報が生成される。ステップS14の後、ステップS17Dにおいて、データ処理部10a、キャッシュ制御部10d、キャッシュメモリ部10e、デフォルトのキャッシュ制御切替部および分析回路がプログラマブル部10にプログラムされる。なお、ステップS11D、S13Dは、事前準備のフローにおいて、他の個所に配置されてもよい。事前準備は、情報処理装置100Aで実行されてもよく、他のツールを使用して実行されてもよい。
 事前準備が完了した後、ステップS20Dにおいて、情報処理装置100Aは、演算処理装置30に第2プログラムの実行を開始させる。次に、ステップS22Dにおいて、プログラマブル部10にプログラムされた分析部30dは、第2プログラムに呼び出されて動作するデータ処理部10aが出力するメモリアクセス要求の特徴を抽出する。すなわち、分析部30dをプログラマブル部10内に搭載することで、第1プログラムを実行することなく、第2プログラムで呼び出されるデータ処理部10aのメモリアクセスの特徴を直接分析することができる。データ処理部10a(ハードウェア)が出力するメモリアクセス要求を直接分析できるため、メモリアクセス要求の特徴の抽出に掛かる時間を、図7に示した手法に比べて短縮することができる。なお、図11に示すステップS22Aと同様に、分析部30dは、分岐する確率が他より高い分岐先で実行されるメモリアクセスの特徴を抽出してもよい。
 次に、ステップS24Dにおいて、決定部30eは、プログラマブル部10上の分析部30dが抽出した特徴に基づいて、キャッシュ制御切替部10cの論理を生成する。なお、図14に示すステップS24Dと同様に、決定部30eは、ステップS22Dで抽出された特徴に基づいて、空き領域にプログラム可能な規模のキャッシュ制御切替部10cの論理を生成してもよい。さらに、分岐する確率が他より高い分岐先でのメモリアクセスの特徴を分析部30dが抽出し、かつ、空き領域にプログラム可能な規模のキャッシュ制御切替部10cの論理を決定部30eが生成してもよい。
 また、図13に示すステップS24Bと同様に、決定部30eは、キャッシュ制御切替部10cの論理を生成する代わりに、予め生成された複数のキャッシュ制御切替部の中から、メモリアクセス効率が他より高くなるキャッシュ制御切替部を選択してもよい。この場合、分岐する確率が他より高い分岐先でのメモリアクセスの特徴を分析部30dが抽出してもよく、空き領域にプログラム可能な規模のキャッシュ制御切替部10cの論理を決定部30eが生成してもよい。さらに、分岐する確率が他より高い分岐先でのメモリアクセスの特徴を分析部30dが抽出し、かつ、空き領域にプログラム可能な規模のキャッシュ制御切替部10cの論理を決定部30eが生成してもよい。
 次に、ステップS26Dにおいて、構成制御部30fは、プログラマブル部10にプログラムされたデフォルトのキャッシュ制御切替部を、ステップS24Dで生成されたキャッシュ制御切替部10cに置き換える。そして、情報処理装置100Aは、第2プログラムの実行を継続する。
 以上、図15に示す実施形態においても、図1から図3に示す実施形態と同様の効果を得ることができる。例えば、データ処理部10aのメモリアクセスの特徴に合わせて、キャッシュ回路10bのキャッシュ効率を最適化することができ、情報処理装置100Aの処理性能を向上することができる。
 さらに、図15に示す実施形態では、分析部30dをプログラマブル部10内に搭載することで、第1プログラムを実行することなく、第2プログラムで呼び出されるデータ処理部10aのメモリアクセスの特徴を直接分析することができる。データ処理部10a(ハードウェア)が出力するメモリアクセス要求を直接分析できるため、メモリアクセス要求の特徴の抽出に掛かる時間を、図7による手法に比べて短縮することができる。
 以上の図1から図10に示す実施形態に関し、さらに以下の付記を開示する。
(付記1)
 データを記憶する記憶部と、
 前記記憶部が記憶するデータを処理するデータ処理部と、前記データ処理部で使用するデータが格納されるキャッシュメモリ部と、前記データ処理部が前記記憶部から読み出すデータを前記キャッシュメモリ部に格納するかをキャッシュ制御情報に基づいて決定するキャッシュ制御部と、前記データ処理部が発行するメモリアクセス要求に基づいて前記キャッシュ制御情報を生成するキャッシュ制御切替部とがプログラムされるプログラマブル部と、
 前記プログラマブル部にプログラムされる前記データ処理部が発行する前記メモリアクセス要求に含まれるアクセスアドレスのパターンを分析する分析部と、
 前記分析部が分析した前記アクセスアドレスのパターンに基づいて、前記プログラマブル部にプログラムする前記キャッシュ制御切替部の論理を決定する決定部と、
 前記データ処理部、前記キャッシュメモリ部および前記キャッシュ制御部を前記プログラマブル部にプログラムするとともに、前記決定部が決定した前記キャッシュ制御切替部を前記プログラマブル部にプログラムする構成制御部と
 を備えることを特徴とする情報処理装置。
(付記2)
 前記データ処理部が実行する第1データ処理と等価な第2データ処理を実行する機能を含む処理プログラムを実行する演算処理部を備え、
 前記分析部は、前記処理プログラムによる前記第2データ処理の実行により発生する前記記憶部へのアクセスに基づいて前記アクセスアドレスのパターンを分析することを特徴とする付記1記載の情報処理装置。
(付記3)
 前記処理プログラムによる前記第2データ処理の実行中に前記分析部による前記アクセスアドレスのパターンの分析が完了した場合、
 前記構成制御部は、前記決定部が決定した前記キャッシュ制御切替部を前記プログラマブル部にプログラムし、
 前記演算処理部は、前記第2データ処理のうち未実行の処理を、前記第1データ処理の一部として前記データ処理部に実行させることを特徴とする付記2記載の情報処理装置。
(付記4)
 前記分析部は、前記プログラマブル部にプログラムされ、
 前記構成制御部は、前記データ処理部、前記分析部およびデフォルトのキャッシュ制御切替部を前記プログラマブル部にプログラムし、前記データ処理部が発行する前記メモリアクセス要求に基づいて前記分析部が前記アクセスアドレスのパターンを分析した後、前記デフォルトのキャッシュ制御切替部を、前記決定部が決定した前記キャッシュ制御切替部に置き換えることを特徴とする付記1記載の情報処理装置。
(付記5)
 前記データ処理部が実行するデータ処理は、複数のプロセスを含み、
 前記分析部は、前記複数のプロセスのうち、実行頻度が他のプロセスよりも高いプロセスによる前記アクセスアドレスのパターンを分析することを特徴とする付記1ないし付記4のいずれか1項記載の情報処理装置。
(付記6)
 前記決定部は、前記分析部が分析した前記アクセスアドレスのパターンに基づいて決定した前記キャッシュ制御切替部の構成情報を生成し、
 前記構成制御部は、前記決定部が生成した前記キャッシュ制御切替部の構成情報を前記プログラマブル部にプログラムすることを特徴とする付記1ないし付記5のいずれか1項記載の情報処理装置。
(付記7)
 前記決定部は、複数種の前記アクセスアドレスのパターンにそれぞれ対応する複数種の前記キャッシュ制御切替部の構成情報のいずれかを、前記分析部が分析した前記アクセスアドレスのパターンに基づいて選択し、
 前記構成制御部は、前記決定部が選択した前記キャッシュ制御切替部の構成情報を前記プログラマブル部にプログラムすることを特徴とする付記1ないし付記5のいずれか1項記載の情報処理装置。
(付記8)
 前記決定部は、前記分析部が分析した前記アクセスアドレスのパターンに基づいて、前記プログラマブル部の空き領域にプログラム可能な前記キャッシュ制御切替部の論理を決定することを特徴とする付記1ないし付記7のいずれか1項記載の情報処理装置。
(付記9)
 前記キャッシュ制御切替部が出力する前記キャッシュ制御情報は、データを前記記憶部に書き込む代わりに前記キャッシュメモリ部に格納するか否かを示す第1情報を含み、
 前記キャッシュ制御部は、前記第1情報に応じて、データを前記記憶部または前記キャッシュメモリ部に書き込むことを特徴とする付記1ないし付記8のいずれか1項記載の情報処理装置。
(付記10)
 前記キャッシュ制御切替部が出力する前記キャッシュ制御情報は、前記データ処理部が発行する前記メモリアクセス要求に対応して転送されるデータの長さを示す第2情報を含み、
 前記キャッシュ制御部は、前記第2情報に応じた長さのデータを前記記憶部から読み出すことを特徴とする付記1ないし付記9のいずれか1項記載の情報処理装置。
(付記11)
 データを記憶する記憶部とプログラマブル部を備え、前記プログラマブル部に、前記記憶部が記憶するデータを処理するデータ処理部と、前記データ処理部で使用するデータが格納されるキャッシュメモリ部と、前記データ処理部が前記記憶部から読み出すデータを前記キャッシュメモリ部に格納するかをキャッシュ制御情報に基づいて決定するキャッシュ制御部と、前記データ処理部が発行するメモリアクセス要求に基づいて前記キャッシュ制御情報を生成するキャッシュ制御切替部がプログラムされる情報処理装置の制御方法において、
 前記情報処理装置が、
 前記プログラマブル部にプログラムされる前記データ処理部が発行する前記メモリアクセス要求に含まれるアクセスアドレスのパターンを分析し、
 分析した前記アクセスアドレスのパターンに基づいて、前記プログラマブル部にプログラムする前記キャッシュ制御切替部の論理を決定し、
 前記データ処理部、前記キャッシュメモリ部および前記キャッシュ制御部を前記プログラマブル部にプログラムするとともに、決定した前記キャッシュ制御切替部を前記プログラマブル部にプログラムすることを特徴とする情報処理装置の制御方法。
(付記12)
 データを記憶する記憶部とプログラマブル部を備え、前記プログラマブル部に、前記記憶部が記憶するデータを処理するデータ処理部と、前記データ処理部で使用するデータが格納されるキャッシュメモリ部と、前記データ処理部が前記記憶部から読み出すデータを前記キャッシュメモリ部に格納するかをキャッシュ制御情報に基づいて決定するキャッシュ制御部と、前記データ処理部が発行するメモリアクセス要求に基づいて前記キャッシュ制御情報を生成するキャッシュ制御切替部がプログラムされる情報処理装置の制御プログラムにおいて、
 前記プログラマブル部にプログラムされる前記データ処理部が発行する前記メモリアクセス要求に含まれるアクセスアドレスのパターンを分析し、
 分析した前記アクセスアドレスのパターンに基づいて、前記プログラマブル部にプログラムする前記キャッシュ制御切替部の論理を決定し、
 前記データ処理部、前記キャッシュメモリ部および前記キャッシュ制御部を前記プログラマブル部にプログラムするとともに、決定した前記キャッシュ制御切替部を前記プログラマブル部にプログラムする
 処理を、前記情報処理装置に実行させるための制御プログラム。
(付記13)
 データを記憶する記憶部とプログラマブル部を備え、前記プログラマブル部に、前記記憶部が記憶するデータを処理するデータ処理部と、前記データ処理部で使用するデータが格納されるキャッシュメモリ部と、前記データ処理部が前記記憶部から読み出すデータを前記キャッシュメモリ部に格納するかをキャッシュ制御情報に基づいて決定するキャッシュ制御部と、前記データ処理部が発行するメモリアクセス要求に基づいて前記キャッシュ制御情報を生成するキャッシュ制御切替部がプログラムされる情報処理装置の制御プログラムを記録した記録媒体において、
 前記プログラマブル部にプログラムされる前記データ処理部が発行する前記メモリアクセス要求に含まれるアクセスアドレスのパターンを分析し、
 分析した前記アクセスアドレスのパターンに基づいて、前記プログラマブル部にプログラムする前記キャッシュ制御切替部の論理を決定し、
 前記データ処理部、前記キャッシュメモリ部および前記キャッシュ制御部を前記プログラマブル部にプログラムするとともに、が決定した前記キャッシュ制御切替部を前記プログラマブル部にプログラムする
 処理を、前記情報処理装置に実行させるための制御プログラムを記録した記録媒体。
 以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
 1…プログラマブル部;1a…データ処理部;1b…キャッシュ回路;1c…キャッシュ制御切替部;1d…キャッシュ制御部;1e…キャッシュメモリ部;2…記憶部;2a…データ領域;2b…プログラム領域;2c…構成情報領域;2d…第1プログラム;2e…第2プログラム;2f…制御プログラム;3…演算処理装置;3a…演算処理部;3b…分析部;3c…決定部;3d…構成制御部;4…記録媒体;10…プログラマブル部;10a…データ処理部;10b…キャッシュ回路;10c…キャッシュ制御切替部;10d…キャッシュ制御部;10e…キャッシュメモリ部;20…メインメモリ;20a…データ領域;20b…プログラム領域;20c…構成情報領域;20d…プログラム;20e…制御プログラム;30…演算処理装置;30a…CPUコア;30b…LLC;30c…MMU;30d…分析部;30e…決定部;30f…構成制御部;40…入出力インタフェース;50…HDD;60…通信インタフェース;70…記録媒体;100、100A…情報処理装置;BUS1、BUS2、BUS3…バス;CINF…キャッシュ制御情報;NW…ネットワーク;TBL…特徴抽出テーブル
 

Claims (13)

  1.  データを記憶する記憶部と、
     前記記憶部が記憶するデータを処理するデータ処理部と、前記データ処理部で使用するデータが格納されるキャッシュメモリ部と、前記データ処理部が前記記憶部から読み出すデータを前記キャッシュメモリ部に格納するかをキャッシュ制御情報に基づいて決定するキャッシュ制御部と、前記データ処理部が発行するメモリアクセス要求に基づいて前記キャッシュ制御情報を生成するキャッシュ制御切替部とがプログラムされるプログラマブル部と、
     前記プログラマブル部にプログラムされる前記データ処理部が発行する前記メモリアクセス要求に含まれるアクセスアドレスのパターンを分析する分析部と、
     前記分析部が分析した前記アクセスアドレスのパターンに基づいて、前記プログラマブル部にプログラムする前記キャッシュ制御切替部の論理を決定する決定部と、
     前記データ処理部、前記キャッシュメモリ部および前記キャッシュ制御部を前記プログラマブル部にプログラムするとともに、前記決定部が決定した前記キャッシュ制御切替部を前記プログラマブル部にプログラムする構成制御部と
     を備えることを特徴とする情報処理装置。
  2.  前記データ処理部が実行する第1データ処理と等価な第2データ処理を実行する機能を含む処理プログラムを実行する演算処理部を備え、
     前記分析部は、前記処理プログラムによる前記第2データ処理の実行により発生する前記記憶部へのアクセスに基づいて前記アクセスアドレスのパターンを分析することを特徴とする請求項1記載の情報処理装置。
  3.  前記処理プログラムによる前記第2データ処理の実行中に前記分析部による前記アクセスアドレスのパターンの分析が完了した場合、
     前記構成制御部は、前記決定部が決定した前記キャッシュ制御切替部を前記プログラマブル部にプログラムし、
     前記演算処理部は、前記第2データ処理のうち未実行の処理を、前記第1データ処理の一部として前記データ処理部に実行させることを特徴とする請求項2記載の情報処理装置。
  4.  前記分析部は、前記プログラマブル部にプログラムされ、
     前記構成制御部は、前記データ処理部、前記分析部およびデフォルトのキャッシュ制御切替部を前記プログラマブル部にプログラムし、前記データ処理部が発行する前記メモリアクセス要求に基づいて前記分析部が前記アクセスアドレスのパターンを分析した後、前記デフォルトのキャッシュ制御切替部を、前記決定部が決定した前記キャッシュ制御切替部に置き換えることを特徴とする請求項1記載の情報処理装置。
  5.  前記データ処理部が実行するデータ処理は、複数のプロセスを含み、
     前記分析部は、前記複数のプロセスのうち、実行頻度が他のプロセスよりも高いプロセスによる前記アクセスアドレスのパターンを分析することを特徴とする請求項1ないし請求項4のいずれか1項記載の情報処理装置。
  6.  前記決定部は、前記分析部が分析した前記アクセスアドレスのパターンに基づいて決定した前記キャッシュ制御切替部の構成情報を生成し、
     前記構成制御部は、前記決定部が生成した前記キャッシュ制御切替部の構成情報を前記プログラマブル部にプログラムすることを特徴とする請求項1ないし請求項5のいずれか1項記載の情報処理装置。
  7.  前記決定部は、複数種の前記アクセスアドレスのパターンにそれぞれ対応する複数種の前記キャッシュ制御切替部の構成情報のいずれかを、前記分析部が分析した前記アクセスアドレスのパターンに基づいて選択し、
     前記構成制御部は、前記決定部が選択した前記キャッシュ制御切替部の構成情報を前記プログラマブル部にプログラムすることを特徴とする請求項1ないし請求項5のいずれか1項記載の情報処理装置。
  8.  前記決定部は、前記分析部が分析した前記アクセスアドレスのパターンに基づいて、前記プログラマブル部の空き領域にプログラム可能な前記キャッシュ制御切替部の論理を決定することを特徴とする請求項1ないし請求項7のいずれか1項記載の情報処理装置。
  9.  前記キャッシュ制御切替部が出力する前記キャッシュ制御情報は、データを前記記憶部に書き込む代わりに前記キャッシュメモリ部に格納するか否かを示す第1情報を含み、
     前記キャッシュ制御部は、前記第1情報に応じて、データを前記記憶部または前記キャッシュメモリ部に書き込むことを特徴とする請求項1ないし請求項8のいずれか1項記載の情報処理装置。
  10.  前記キャッシュ制御切替部が出力する前記キャッシュ制御情報は、前記データ処理部が発行する前記メモリアクセス要求に対応して転送されるデータの長さを示す第2情報を含み、
     前記キャッシュ制御部は、前記第2情報に応じた長さのデータを前記記憶部から読み出すことを特徴とする請求項1ないし請求項9のいずれか1項記載の情報処理装置。
  11.  データを記憶する記憶部とプログラマブル部を備え、前記プログラマブル部に、前記記憶部が記憶するデータを処理するデータ処理部と、前記データ処理部で使用するデータが格納されるキャッシュメモリ部と、前記データ処理部が前記記憶部から読み出すデータを前記キャッシュメモリ部に格納するかをキャッシュ制御情報に基づいて決定するキャッシュ制御部と、前記データ処理部が発行するメモリアクセス要求に基づいて前記キャッシュ制御情報を生成するキャッシュ制御切替部がプログラムされる情報処理装置の制御方法において、
     前記情報処理装置が、
     前記プログラマブル部にプログラムされる前記データ処理部が発行する前記メモリアクセス要求に含まれるアクセスアドレスのパターンを分析し、
     分析した前記アクセスアドレスのパターンに基づいて、前記プログラマブル部にプログラムする前記キャッシュ制御切替部の論理を決定し、
     前記データ処理部、前記キャッシュメモリ部および前記キャッシュ制御部を前記プログラマブル部にプログラムするとともに、決定した前記キャッシュ制御切替部を前記プログラマブル部にプログラムすることを特徴とする情報処理装置の制御方法。
  12.  データを記憶する記憶部とプログラマブル部を備え、前記プログラマブル部に、前記記憶部が記憶するデータを処理するデータ処理部と、前記データ処理部で使用するデータが格納されるキャッシュメモリ部と、前記データ処理部が前記記憶部から読み出すデータを前記キャッシュメモリ部に格納するかをキャッシュ制御情報に基づいて決定するキャッシュ制御部と、前記データ処理部が発行するメモリアクセス要求に基づいて前記キャッシュ制御情報を生成するキャッシュ制御切替部がプログラムされる情報処理装置の制御プログラムにおいて、
     前記プログラマブル部にプログラムされる前記データ処理部が発行する前記メモリアクセス要求に含まれるアクセスアドレスのパターンを分析し、
     分析した前記アクセスアドレスのパターンに基づいて、前記プログラマブル部にプログラムする前記キャッシュ制御切替部の論理を決定し、
     前記データ処理部、前記キャッシュメモリ部および前記キャッシュ制御部を前記プログラマブル部にプログラムするとともに、決定した前記キャッシュ制御切替部を前記プログラマブル部にプログラムする
     処理を、前記情報処理装置に実行させるための制御プログラム。
  13.  データを記憶する記憶部とプログラマブル部を備え、前記プログラマブル部に、前記記憶部が記憶するデータを処理するデータ処理部と、前記データ処理部で使用するデータが格納されるキャッシュメモリ部と、前記データ処理部が前記記憶部から読み出すデータを前記キャッシュメモリ部に格納するかをキャッシュ制御情報に基づいて決定するキャッシュ制御部と、前記データ処理部が発行するメモリアクセス要求に基づいて前記キャッシュ制御情報を生成するキャッシュ制御切替部がプログラムされる情報処理装置の制御プログラムを記録した記録媒体において、
     前記プログラマブル部にプログラムされる前記データ処理部が発行する前記メモリアクセス要求に含まれるアクセスアドレスのパターンを分析し、
     分析した前記アクセスアドレスのパターンに基づいて、前記プログラマブル部にプログラムする前記キャッシュ制御切替部の論理を決定し、
     前記データ処理部、前記キャッシュメモリ部および前記キャッシュ制御部を前記プログラマブル部にプログラムするとともに、が決定した前記キャッシュ制御切替部を前記プログラマブル部にプログラムする
     処理を、前記情報処理装置に実行させるための制御プログラムを記録した記録媒体。
PCT/JP2018/004181 2017-03-13 2018-02-07 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム WO2018168264A1 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2017047223A JP6828528B2 (ja) 2017-03-13 2017-03-13 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
JP2017-047223 2017-03-13

Publications (1)

Publication Number Publication Date
WO2018168264A1 true WO2018168264A1 (ja) 2018-09-20

Family

ID=63523586

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2018/004181 WO2018168264A1 (ja) 2017-03-13 2018-02-07 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム

Country Status (2)

Country Link
JP (1) JP6828528B2 (ja)
WO (1) WO2018168264A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116149226B (zh) * 2023-02-22 2023-11-10 山东中安电力科技有限公司 一种基于数据分析的开关柜远程控制系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002140234A (ja) * 2000-11-02 2002-05-17 Hitachi Ltd キャッシュ装置
JP2010003042A (ja) * 2008-06-19 2010-01-07 Koyo Electronics Ind Co Ltd マルチcpuシステムおよびプログラマブルコントローラ
JP2015069641A (ja) * 2013-09-30 2015-04-13 三星電子株式会社Samsung Electronics Co.,Ltd. キャッシュメモリシステム及びその動作方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002140234A (ja) * 2000-11-02 2002-05-17 Hitachi Ltd キャッシュ装置
JP2010003042A (ja) * 2008-06-19 2010-01-07 Koyo Electronics Ind Co Ltd マルチcpuシステムおよびプログラマブルコントローラ
JP2015069641A (ja) * 2013-09-30 2015-04-13 三星電子株式会社Samsung Electronics Co.,Ltd. キャッシュメモリシステム及びその動作方法

Also Published As

Publication number Publication date
JP6828528B2 (ja) 2021-02-10
JP2018151827A (ja) 2018-09-27

Similar Documents

Publication Publication Date Title
JP6949857B2 (ja) タイミングを中断させるモードにおけるソフトウェアの後方互換性テスト
TWI514156B (zh) 推測式快取修改技術
KR20120123127A (ko) 이종 플랫폼에서 포인터를 공유시키는 방법 및 장치
US8296518B2 (en) Arithmetic processing apparatus and method
WO2014090087A1 (en) Translation management instructions for updating address translation data structures in remote processing nodes
JP2009009571A (ja) レベル2キャッシュ/ネスト・アドレスを変換する方法および装置
JP5625809B2 (ja) 演算処理装置、情報処理装置及び制御方法
JP2009020696A (ja) 情報処理装置及びシステム
JP2012247827A (ja) プログラム生成装置、プログラム生成方法及びプログラム
Kim et al. Leveraging cache coherence in active memory systems
CN114238167A (zh) 信息预取方法、处理器、电子设备
WO2018168264A1 (ja) 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
JP5278538B2 (ja) コンパイルシステム、コンパイル方法およびコンパイルプログラム
JP2003140965A (ja) 分散共有メモリ型並列計算機および命令スケジューリング方法
US8166252B2 (en) Processor and prefetch support program
JP5687603B2 (ja) プログラム変換装置、プログラム変換方法、および変換プログラム
EP4020229A1 (en) System, apparatus and method for prefetching physical pages in a processor
JP2009020695A (ja) 情報処理装置及びシステム
US20140281382A1 (en) Modified execution using context sensitive auxiliary code
JP2021089736A (ja) 命令プリフェッチ方法、装置、機器及び媒体
Fu et al. A hardware-efficient dual-source data replication and local broadcast mechanism in distributed shared caches
JP2007114890A (ja) 演算処理装置およびキャッシュ動作方法
JP4133107B2 (ja) ロードモジュール生成方法、ロードモジュール生成プログラムおよびロードモジュール生成装置
CN114218132B (zh) 信息预取方法、处理器、电子设备
US20100077145A1 (en) Method and system for parallel execution of memory instructions in an in-order processor

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 18767109

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 18767109

Country of ref document: EP

Kind code of ref document: A1