WO2015020092A1 - 情報処理方法、情報処理装置及びプログラム - Google Patents

情報処理方法、情報処理装置及びプログラム Download PDF

Info

Publication number
WO2015020092A1
WO2015020092A1 PCT/JP2014/070750 JP2014070750W WO2015020092A1 WO 2015020092 A1 WO2015020092 A1 WO 2015020092A1 JP 2014070750 W JP2014070750 W JP 2014070750W WO 2015020092 A1 WO2015020092 A1 WO 2015020092A1
Authority
WO
WIPO (PCT)
Prior art keywords
memory
access
time
unit
memory access
Prior art date
Application number
PCT/JP2014/070750
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 WO2015020092A1 publication Critical patent/WO2015020092A1/ja
Priority to US15/014,673 priority Critical patent/US10025504B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction

Definitions

  • Embodiments described herein relate generally to an information processing method, an information processing apparatus, and a program.
  • Memory access has a major impact on processor performance, as referred to as the memory wall problem.
  • memory access latency concealment techniques such as Out-of-Order and SMT (Simultaneous Multithreading) have become common, and the effect of memory access on the computation performance of the processor depends on the nature of the program being executed and hardware resources It changes dynamically depending on the size of.
  • an aspect of the present invention has been made in view of the above problems, and an information processing method, an information processing apparatus, and a program capable of accurately evaluating the degree of influence of memory access on the arithmetic performance of a processor It is an issue to provide.
  • the time information acquisition unit starts and ends the access to the target memory by the memory access unit in accordance with the instruction from the instruction issuer. Based on this detection, the time from the start to the end of this access is acquired as the memory access time.
  • the operation amount acquisition step the operation amount acquisition unit calculates the operation amount executed by the operation unit according to the instruction from the instruction issuer from the time when the memory access unit starts accessing the target memory to the time when it ends.
  • the evaluation step the evaluation unit evaluates the calculation performance of the calculation unit from the start to the end of the access based on the memory access time and the calculation amount.
  • FIG. 5 is a flowchart illustrating an example of a processing flow of a monitoring unit 4 at the end of memory access in the first embodiment.
  • It is a schematic block diagram which shows the processor 1b in 2nd Embodiment.
  • It is an example of core information table T3 in 2nd Embodiment.
  • It is a schematic block diagram which shows the memory 7 in 2nd Embodiment.
  • It is a 1st example of the table according to memory hierarchy after running the program which is an MRAM core.
  • 13 is a table showing an IPC for each memory hierarchy in the case of the memory hierarchy table in FIG. 12.
  • FIG. 15 is a table showing an IPC for each memory hierarchy in the case of the memory hierarchy table of FIG. 14.
  • FIG. It is a flowchart which shows the 1st process example of the process of the processor 1b in 2nd Embodiment. It is a flowchart which shows the 2nd process example of the process of the processor 1b in 2nd Embodiment. It is an example of the image figure of the cache memory in 2nd Embodiment. It is a flowchart which shows the 3rd process example of a process of the processor 1b in 2nd Embodiment.
  • FIG. 1 is a schematic block diagram showing a processor 1 in the first embodiment.
  • a solid line block represents a block having a physical or logical function or storage area
  • a broken line block represents information passed between the functional blocks
  • an arrow represents an information transmission path.
  • These storage areas may be realized by any means as long as information can be stored. For example, hardware such as a register may be used, or software variables such as C language may be used.
  • any means may be used as long as a desired function can be realized.
  • hardware such as an adder / subtracter may be used, or a software addition / subtraction function such as C language may be used.
  • the information transmission path may be any means as long as it can exchange information correctly.
  • hardware such as signal transmission by wiring may be used, or substitution of software variables such as C language may be used.
  • the processor 1 includes a CPU (Central Processing Unit) core 2 connected to the memory device 3 and the monitoring unit 4, a memory device 3 connected to the CPU core 2, and a monitoring unit (information processing apparatus) connected to the CPU core 2. 4).
  • CPU Central Processing Unit
  • the processor 1 includes a CPU (Central Processing Unit) core 2 connected to the memory device 3 and the monitoring unit 4, a memory device 3 connected to the CPU core 2, and a monitoring unit (information processing apparatus) connected to the CPU core 2. 4).
  • CPU Central Processing Unit
  • the CPU core 2 executes a program in units of instructions.
  • the CPU core 2 includes an instruction issuer 21 connected to the operation unit 22 and the memory access unit 24, an operation unit 22 connected to the instruction issuer 21 and the memory access unit 24, and an instruction issuer 21 and an operation unit.
  • a memory access unit 24 connected to the memory 22 is provided.
  • the arithmetic unit 22 includes a first arithmetic unit 221 connected to the instruction issuer 21 and the memory access unit 24, and a second arithmetic unit 222 connected to the instruction issuer 21 and the memory access unit 24.
  • the instruction issuer 21 issues instructions to the first arithmetic unit 221, the second arithmetic unit 222, the memory access unit 24, and the like.
  • the first computing unit 221 and the second computing unit 222 perform calculations according to the instructions issued by the instruction issuing unit 21.
  • the memory access unit 24 issues an access request for the memory device 3 to the memory device 3.
  • the CPU core may be a functional block that holds an arithmetic function, and may hold one or more arithmetic units. Further, for example, there may be one arithmetic unit or three or more arithmetic units, and the CPU core 2 may include a plurality of memory access units and instruction issuers.
  • the memory device 3 stores data and program codes.
  • the memory device 3 has three levels: an L1 cache 31 connected to the memory access unit 24, an L2 cache 32 connected to the main memory 33, and a main memory 33 connected to the L2 cache 32. It consists of a hierarchical structure.
  • the memory hierarchical structure refers to a group of memories that can store data in the shared memory area and have different access speeds from the CPU core 2. In this embodiment, the access speed from the CPU core 2 is the fastest in the L1 cache and the slowest in the main memory.
  • three memory layers are illustrated, but the present invention is not limited to such a configuration.
  • a four-level hierarchical structure such as an L1 cache, an L2 cache, an L3 cache, and a main memory may be used, or a two-level hierarchical structure such as an L1 cache and a main memory may be used. Further, it may have a hierarchical structure of five levels or more.
  • the main memory may be connected to an auxiliary storage device or the like.
  • the monitoring unit 4 monitors the CPU core 2 and the memory device 3, and evaluates the computing performance of the computing unit 22 from the start to the end of memory access.
  • the calculation performance is, for example, the issue per time (for example, execution cycle or real time), the number of instructions committed or executed, that is, the number of instructions issued per unit time, the number of instructions committed or executed, or the arithmetic unit per unit time.
  • a performance index such as usage rate.
  • the monitoring unit 4 includes a control unit 41, a global counter 42 connected to the control unit 41, a memory access information table 43 connected to the control unit 41, and a memory hierarchy connected to the control unit 41.
  • Another information table storage unit 44 is provided.
  • the global counter 42 is a storage area that holds the state of the CPU core 2 being executed.
  • FIG. 2 is a schematic block diagram showing the global counter 42 in the first embodiment. As shown in FIG. 2, the global counter 42 includes a time counter 421 and an instruction count counter 422.
  • the time counter 421 measures time from an arbitrary time point.
  • the time may be any time as long as time information can be expressed quantitatively, may be a time dependent on processor implementation such as the number of clock cycles, or a processor such as time. It may be a time that does not depend on the implementation of.
  • the timing of updating the time counter 421 may be any timing. It may be every 1 cycle, every 10 cycles, or every 1000 cycles.
  • the instruction number counter 422 measures the number of instructions from an arbitrary time point.
  • the number of instructions may be any information as long as the number of executed instructions (hereinafter referred to as the number of executed instructions) can be measured directly or approximately.
  • the number of instruction commits may be measured as the number of instructions
  • the number of instructions that have been computed by the first computing unit 221 and the second computing unit 222 may be measured as the number of instructions
  • the number of issues may be measured as the number of instructions.
  • the update timing of the instruction counter 422 may be any timing. For example, it may be every fixed number of cycles or every fixed number of instructions.
  • the memory access information table storage unit 43 records information on the memory access being executed.
  • FIG. 3 is an example of the memory access information table T1 stored in the memory access information table storage unit 43 according to the first embodiment.
  • the memory access information table storage unit 43 associates a memory access ID for identifying the memory access, start time information, and start instruction number information for each memory access. Is remembered.
  • the start time information is information (for example, the value of the time counter 421) indicating the time when the memory access is started.
  • the start instruction number information is the instruction number (for example, the value of the instruction number counter 422) at the time when the memory access is started.
  • the memory access information table storage unit 43 may use the memory address of the access destination as the memory access ID, or may use an ID that is uniquely issued when the memory access is issued as the memory access ID.
  • the memory tier-specific information table storage unit 44 records information related to memory access to the target tier for each memory.
  • FIG. 4 is an example of the information table T2 by memory hierarchy stored in the information table storage section 44 by memory hierarchy in the first embodiment.
  • “Non-mem time information” in FIG. 4 is time other than memory access.
  • the memory level information table storage unit 44 stores time information and instruction count information in association with each memory.
  • the time information is an integrated value of the time required for memory access.
  • the instruction number information is an integrated value of the number of instructions executed during memory access.
  • the control unit 41 controls the global counter 42, the memory access information table storage unit 43, and the information table storage unit 44 by memory hierarchy. In addition, the control unit 41 holds an arithmetic function for performing addition / subtraction.
  • FIG. 5 is a schematic block diagram showing the control unit 41 in the first embodiment.
  • the control unit 41 includes a time information acquisition unit 411 connected to the evaluation unit 413, a calculation amount acquisition unit 412 connected to the evaluation unit 413, and an evaluation unit 413 connected to the time information acquisition unit 411 and the calculation amount acquisition unit 412.
  • a first storage processing unit 414 connected to the memory access information table storage unit 43, and a second storage processing unit 415 connected to the memory access information table storage unit 43.
  • the first storage processing unit 414 causes the memory access information table storage unit 43 to store the value of the time counter at the start of memory access counted by the time counter that counts the time from an arbitrary point in the program as start time information.
  • the first storage processing unit 415 is a memory access information table storage unit that uses the value of the instruction number counter 422 at the start of memory access counted by the instruction number counter 422 for counting the number of instructions from an arbitrary point in the program as start instruction number information. 43 is stored.
  • the time information acquisition unit 411 detects the start of access to the target memory by the memory access unit 24 according to the instruction from the instruction issuer 21 and the end of this access, and from the start to the end of this access based on this detection. Is obtained as the memory access time. More specifically, the time information acquisition unit 411 acquires the memory access time for the target memory. The time information acquisition unit 411 acquires the memory access time for all the memories by performing the above processing for all the memories. That is, the time information acquisition unit 411 acquires the memory access time for each memory.
  • the time information acquisition unit 411 calculates the memory access time by comparing the time at the start of memory access with the time at the end of memory access. More specifically, the time information acquisition unit 411 acquires, for example, the start time information stored in the memory access information table storage unit 43, acquires the value of the time counter at the end of the memory access, and the acquired start time information And the difference between the obtained time counter values is obtained as the memory access time for the memory from which the target data was obtained during memory access.
  • the time information acquisition unit 411 outputs memory access time information indicating the acquired memory access time to the evaluation unit 413.
  • the calculation amount acquisition unit 412 calculates the calculation amount based on the instruction from the instruction issuer 21 from the time when the memory access unit 24 starts to access the target memory to the time when it ends.
  • the calculation amount acquisition unit 412 calculates the calculation amount for all the memories by performing the above processing for all the memories. That is, the calculation amount acquisition unit 412 calculates the calculation amount for each memory.
  • the calculation amount is, for example, the number of issued, committed, or executed instructions.
  • the calculation amount acquisition unit 412 calculates the number of instructions from the start to the end of the access by comparing the number of instructions at the start of the memory access with the number of instructions at the end of the memory access.
  • the calculation amount acquisition unit 412 acquires, for example, the start instruction number information stored in the memory access information table storage unit 43, acquires the value of the instruction number counter 422 at the end of memory access, and acquired The difference between the start instruction number information and the value of the acquired instruction number counter 422 is acquired as the number of instructions from the start to the end of the access to the memory from which the target data is acquired during the memory access.
  • the calculation amount acquisition unit 412 outputs calculation amount information indicating the acquired calculation amount (here, the number of instructions as an example) to the evaluation unit 413.
  • the evaluation unit 413 evaluates the calculation performance of the calculation unit 22 from the start to the end of the access based on the memory access time acquired by the time information acquisition unit 411 and the calculation amount acquired by the calculation amount acquisition unit 412. . More specifically, the evaluation unit 413 evaluates the calculation performance of the calculation unit 22 from the start to the end of access to the target memory based on the memory access time of the target memory and the calculation amount of the target memory. The evaluation unit 413 evaluates the calculation performance of the calculation unit 22 for all the memories by performing the above processing for all the memories. That is, for each memory connected in a hierarchical manner, the evaluation unit 413 is based on the memory access information of the memory and the calculation amount information of the memory. Evaluate computing performance.
  • FIG. 6 is a flowchart showing an example of the processing flow of the monitoring unit 4 at the start of memory access in the first embodiment.
  • Step S101 When a memory access command is issued to the memory access unit 24, the control unit 41 detects the issuance of the memory access command. As long as the control unit 41 can detect the start of memory access, any realization method may be used. For example, as shown in FIG. 1, the memory access unit 24 that performs memory access may transmit the start of memory access to the control unit 41, or the control unit 41 periodically monitors the memory access unit 24. The start of memory access may be detected.
  • Step S102 the control unit 41 checks the state of the CPU core 2 when the memory access instruction is issued. Specifically, for example, the control unit 41 refers to the value of the time counter 421 and the value of the instruction count counter 422 included in the global counter 42, and acquires these two values as current value information.
  • Step S103 the control unit 41 records the current value information in the memory access information table of the memory access information table storage unit 44 together with the memory access ID that can specify the memory access. Specifically, the control unit 41 records the value of the time counter 421 in the start time information of the memory access information table, and records the value of the instruction number counter 422 in the start instruction number information of the memory access information table.
  • the memory access information table storage unit 44 records the time at the start of memory access and the number of instructions executed up to that time.
  • FIG. 7 is a flowchart showing an example of the processing flow of the monitoring unit 4 at the end of memory access in the first embodiment.
  • Step S201 the control unit 41 receives memory access information including information on completion of memory access from the memory access unit 24.
  • the memory access information includes a memory access ID and memory identification information indicating the memory from which the completed memory access has acquired data.
  • the memory identification information may be any information as long as it can uniquely identify the memory constituting the memory device 3. For example, text data such as “L1 cache” and “main memory” may be used, or an identifier assigned to the memory may be given.
  • the memory identification information may be sent to the memory access unit 24 together with the data to be accessed, for example, or may be transmitted directly to the control unit 41 from the memory in the hierarchy where the data existed.
  • the memory access unit 24 may predict the memory from which data is acquired from the time required for memory access. Specifically, for example, if the time required for memory access is the number of cycles equal to or less than a first threshold (for example, 5 or less), the memory access unit 24 may predict that the memory from which the data has been acquired is an L1 cache Good. For example, when the time required for memory access is the number of cycles within a predetermined range (10 or more and less than 50), the memory access unit 24 may predict the memory from which the data is acquired as the L2 cache. Further, for example, when the time required for memory access is the number of cycles equal to or greater than the second threshold (for example, 80 or greater), the memory access unit 24 may predict the memory from which the data has been acquired as the main memory.
  • a first threshold for example, 5 or less
  • the memory access unit 24 may predict that the memory from which the data has been acquired is an L1 cache Good. For example, when the time required for memory access is the number of cycles within a predetermined range (10 or more and less than 50), the
  • the memory access unit 24 sends the memory identification information to the control unit 41, but any implementation may be used as long as the control unit 41 can detect the end of the memory access.
  • the control unit 41 may periodically check the memory access unit 24.
  • control unit 41 When acquiring the memory access end information, the control unit 41 acquires the respective information as shown in steps S202 to S204. In order to acquire the respective information, the global counter 42, the memory access information table storage unit 43, and the information table for each memory hierarchy A request is sent to the storage unit 44.
  • Step S202 The control unit 41 acquires current value information from the global counter. As described above, the current value information is the value of the time counter 421 and the value of the instruction number counter 422.
  • Step S203 The control unit 41 acquires start time information and start instruction number information from the memory access information table storage unit 43 in parallel with steps S202 and S204.
  • Step S204 In parallel with Steps S202 and S203, the control unit 41 performs time information on the memory indicated by the memory identification information acquired in Step S201 from the memory tier-specific information table storage unit 44, that is, the memory from which the data has been acquired. And get the instruction count information.
  • FIG. 7 illustrates that the processes in steps S202 to S204 are performed at the same time, this only indicates that simultaneous processing is possible, and is not necessarily limited to simultaneous processing. For example, the processes in steps S202 to S204 may be performed sequentially.
  • Step S205 the time information acquisition unit 411 of the control unit 41 calculates the time from the start to the end of access to the target memory (hereinafter referred to as memory access time). Specifically, for example, the time information acquisition unit 411 of the control unit 41 subtracts the value of the start time information from the value of the time counter 421 of the global counter 42, and uses the value obtained by subtraction as the memory access time. To do.
  • the calculation amount acquisition unit 412 of the control unit 41 calculates the number of instructions executed during memory access (hereinafter referred to as the number of instructions during memory access). Further, for example, the calculation amount acquisition unit 412 of the control unit 41 subtracts the value of the start instruction number information from the value of the instruction number counter 422 of the global counter 42, and uses the value obtained by subtraction as the number of instructions in memory access. To do.
  • control unit 41 updates the information table T2 by memory hierarchy based on the memory access time of the target memory and the number of instructions during memory access as follows.
  • Step S207 When the processing of Step S205 and Step S206 is completed, the control unit 41 is obtained by adding the memory access time calculated in Step S205 to the time information value read in Step S204, for example.
  • the updated value is a time update value which is one of the update value information.
  • the control unit 41 adds the number of in-memory instructions calculated in step S205 to the value of the instruction number information, and updates the instruction number that is one of the update value information by the addition result. Value.
  • Step S208 the control unit 41 sets time information corresponding to the memory indicated by the memory identification information acquired in step S201 in the memory level information table T2 stored in the memory level information table storage unit 44. Overwrite with updated value.
  • the control unit 41 uses the instruction number update value for the instruction number information corresponding to the memory indicated by the memory identification information acquired in step S201 in the information table T2 by memory hierarchy stored in the information table storage unit 44 by memory hierarchy. Overwrite.
  • the memory access time and the number of instructions during memory access are acquired for the target memory access. Also, the accumulated time of memory access and the accumulated value of the number of instructions during memory access are stored for each memory in the information table T2 for each memory hierarchy.
  • the time information acquisition unit 411 acquires memory access time information indicating the time required for memory access for each memory access. Then, the calculation amount acquisition unit 412 acquires calculation amount information indicating the calculation amount during memory access for each memory access.
  • the evaluation unit 413 evaluates the calculation performance of the calculation unit 22 from the start to the end of access to the target memory based on the memory access information and the calculation amount information.
  • the control unit 41 evaluates the execution efficiency of the processor 1 as an example of the calculation performance by the calculation unit 22 from the start to the end of access to the target memory, based on the calculated memory access time and the number of instructions during memory access. To do. Specifically, for example, the control unit 41 calculates an instruction execution throughput during memory access as an example of the execution efficiency of the processor 1. For example, when the instruction execution throughput is expressed by IPC (Instructions Per Cycle: the number of instructions per unit cycle), the control unit 41 divides, for example, the calculated number of instructions during memory access by the memory access time, and calculates the divided value. IPC. Thereby, the IPC is calculated for the target memory access.
  • the calculation of the calculation performance based on the memory access time and the number of instructions during memory access may be performed at an arbitrary timing. For example, it may be performed after step S205 or after step S208.
  • the degree of influence of the memory access on the computing performance of the processor can be accurately evaluated.
  • the method of holding the time and the number of instructions in each storage area for each memory is shown, but the information to be held may be the calculation performance for each memory.
  • the control unit 41 may record the IPC obtained by dividing the two values without individually recording the number of in-memory accesses in the memory hierarchy information table T2.
  • the CPU core 2, the memory device 3, and the monitoring unit 4 are illustrated as individual functional units. However, the present invention is not limited to this, and each functional block may be divided or combined.
  • the memory access information table storage unit 43 may be mounted in combination with the memory access unit 24, or the control function of the control unit 41 may be distributed to the counter or table to be controlled.
  • the function of the monitoring unit 4 can be implemented by using a function provided in a general processor.
  • the time counter 421 of the monitoring unit 4 may use a cycle number measurement counter provided in a general processor, and the calculation of the control unit 41 is performed by the first calculator 221 or the second calculator 221 of the CPU core 2.
  • the calculator 222 may be used. Since the memory access unit 24 is tagged and managed for each memory access, the memory access ID of the memory access information table storage unit 43 may be used as identification information for this management.
  • the monitoring unit 4 can take various implementation forms. All may be implemented by hardware, all may be implemented by software, and may be implemented using both hardware and software. As an implementation using both hardware and software, for example, the information storage function and information update function of the global counter 42, the information table storage unit 44 by memory hierarchy, and the memory access information table storage unit 43 in FIG. A form in which the function of the control unit 41 that reads them and calculates the calculation performance is implemented by software is conceivable.
  • the second embodiment is a usage example of the monitoring unit 4 of the first embodiment. If the computing performance during memory access that can be calculated from the measurement information of the monitoring unit is used, it can be determined how much the specific memory affects the performance of the processor. Therefore, the processor according to the present embodiment uses the computing performance during memory access as control information when using a plurality of memories having different latencies.
  • FIG. 8 is a schematic block diagram showing the processor 1b in the second embodiment.
  • the processor 1 b includes an information processing device 5, a first CPU core 100 connected to the information processing device 5 and the memory 7, a second CPU core 200 connected to the information processing device 5 and the memory 7, and a memory 7.
  • the information processing apparatus 5 controls allocation of processes to the first CPU core 100 and the second CPU core 200.
  • the information processing apparatus 5 includes a process management unit 51 connected to the interface unit 52, an interface unit 52 connected to the process management unit 51, the first CPU core 100, and the second CPU core 200, and the interface unit 52 and the first CPU core.
  • a monitoring unit 53 connected to 100, and a monitoring unit 54 connected to the interface unit 52 and the second CPU core 200.
  • the process management unit 51 manages information related to processes and assigns processes to the first CPU core 100 and the second CPU core 200. “Processing” refers to an instruction sequence composed of two or more instructions, such as a process, a thread, or a basic block.
  • the process management unit 20 includes a core information table storage unit 512 connected to the scheduler 513, a core information table storage unit 512, and a scheduler (allocation unit) 513 connected to the interface unit 52.
  • the process management unit 51 is mainly implemented by software, but a part or all of it may be implemented by hardware.
  • the program may be executed by the first core 100 or the second core 200 in FIG. 1, or other than the first core 100 and the second core 200. It may be executed by an arithmetic device.
  • the core information table storage unit 512 is a table that records information for each core.
  • the scheduler 513 allocates processing to either the first CPU core 100 or the second CPU core 200 via the interface unit 52 based on the information in the core information table storage unit 512. At that time, for example, the scheduler 513 assigns a process to one of the cores based on the memory access time in addition to the calculation performance of the calculation unit 22.
  • the scheduler 513 selects one of the memory access times acquired by the time information acquisition unit 411 and the comparison result of the calculation performances obtained by the evaluation unit 413. Processing may be assigned to the cores. In addition, for example, the scheduler 513 compares the result of comparison between the memory access time to the target memory acquired by the time information acquisition unit 411 and the memory access time to all the memories, and the calculation performance obtained by the evaluation unit 413. Processing may be assigned to any of the cores based on the comparison result.
  • the scheduler 513 may assign a core for processing a program based at least on the calculation performance of the calculation unit 22. More specifically, the scheduler 513 compares the execution efficiency (for example, IPC) for each memory obtained by the evaluation unit of the monitoring unit 53 and assigns a process to one of the cores based on the comparison result. May be.
  • IPC execution efficiency
  • the scheduler 513 receives information from the first CPU core 100 and the second CPU core 200 via the interface unit 52 and updates the contents of the core information table storage unit 512.
  • the interface unit 52 has an input / output function for exchanging information with the monitoring unit 53, the monitoring unit 54, the first CPU core 100, and the second CPU core 200.
  • the monitoring unit 53 has the same function as the monitoring unit 4 in the first embodiment, monitors the first CPU core 100 and the memory 7, and evaluates the degree of influence of memory access on the execution efficiency of the first CPU core 100. .
  • the monitoring unit 54 has the same function as the monitoring unit 4 in the first embodiment, monitors the second CPU core 200 and the memory 7, and evaluates the degree of influence of memory access on the execution efficiency of the second CPU core 200. .
  • FIG. 9 is an example of the core information table T3 in the second embodiment.
  • the core ID for identifying the core is associated with the local memory recording method.
  • the core ID of the first CPU core 100 is 1, and the core ID of the second CPU core 200 is 2.
  • the core local memory type is recorded.
  • the MRAM is used as the local memory in the first CPU core 100, information that can identify the MRAM (in this example, the character string “MRAM”) is recorded. Since the second CPU core 200 uses SRAM as the local memory, information (character string “SRAM” in this example) that can identify the SRAM is recorded.
  • the type of core local memory is represented by a character string and recorded, but this is not limited to a character string as long as the scheduler 23 can identify the core characteristics. For example, it may be determined in advance that the MRAM corresponds to the value “1” and the value “2” corresponds to the SRAM. In that case, in the core information table T3 held by the core information table storage unit 512, “1” may be recorded as the local memory recording method of the core ID1, and “2” may be recorded as the local memory recording method of the core ID2.
  • the local memory recording method is recorded as information in the core information table T3 held by the core information table storage unit 512, but other information may be recorded.
  • the computing capacity of the core such as the operating frequency may be recorded.
  • FIG. 10 is a schematic block diagram showing the memory 7 in the second embodiment.
  • the memory 7 includes an L1 instruction cache 101 connected to the first CPU core 100, an L1 data cache 102 connected to the first CPU core 100, an L1 instruction cache 101, and an L2 cache 103 connected to the L1 data cache 102.
  • the memory 7 further includes an L1 instruction cache 201 connected to the second CPU core 200, an L1 data cache 202 connected to the second CPU core 200, an L1 instruction cache 201, and an L2 cache 203 connected to the L1 data cache 202.
  • the memory 7 includes a bus 300 connected to the L2 cache 103 and the L2 cache 203 and a main memory 400 connected to the bus 300.
  • All L1 caches (L1 instruction caches 101 and 201, L1 data caches 102 and 202) are configured by SRAM, for example, and main memory is configured by MRAM.
  • main memory is configured by MRAM.
  • the L2 cache the L2 cache 103 accessible by the first CPU core 100 is an MRAM, whereas the L2 cache 203 accessible by the second CPU core 200 is an SRAM.
  • the first CPU core 100 whose accessible L2 cache is MRAM is also referred to as an MRAM core.
  • the second CPU core 200 whose accessible L2 cache is SRAM is also referred to as SRAM core.
  • the L2 cache 103 configured with MRAM has a larger capacity (low speed) than the L2 cache 203 configured with SRAM.
  • the L2 cache 203 configured with SRAM has a smaller capacity (high speed) than the L2 cache 103 configured with MRAM, although it has a smaller capacity.
  • the scheduler 513 should have a problem in executing processing with an MRAM core as a problem for the entire processor. It is determined that the MRAM core is optimal. Specifically, for example, the scheduler 513 first assigns processing to the MRAM core. If the latency, which is a disadvantage of the L2 cache constituted by the MRAM, does not affect the processor performance, the scheduler 513 causes the MRAM core to execute the process as it is. When performing such control, the scheduler 513 uses, for example, the in-access IPC for each memory measured by the monitoring units 53 and 54.
  • the scheduler 513 can determine these conditions from the information of the monitoring units 53 and 54. As an example, the scheduler 513 determines the first condition from the ratio of the L2 cache time information in the memory tier information table T2 to the total execution time of the program. For example, the scheduler 513 determines the second condition from the accessing IPC for each memory calculated from the memory tier information table T2.
  • each determination process will be exemplified.
  • FIG. 11 is an example of a table by memory hierarchy after executing the program that is the MRAM core.
  • FIG. 11 is an example of a table by memory hierarchy after executing a program that is an MRAM core.
  • time and the number of instructions are associated with each other.
  • Non-mem represents when there is no memory access.
  • the L1 cache represents when the L1 cache is accessed.
  • the L2 cache represents when the L2 cache is accessed.
  • the main memory indicates when the main memory is accessed.
  • the total time other than the L2 cache (Non-mem, L1 cache, main memory) is 2200 cycles, but the access time to the L2 cache is 20 cycles.
  • the ratio of the access time to the L2 cache in the total time is very small. Therefore, it is understood that the latency of the MRAM L2 cache does not become a problem without checking the IPC during the L2 cache access, and it can be determined that the execution of the target program in the MRAM core is optimal.
  • the second condition is “although the access time to the L2 cache is relatively large compared to the execution time of the program, the performance of the L2 cache latency does not deteriorate so much due to the effect of the memory access latency concealment technique.
  • An example of checking whether or not In general, the higher the memory access latency, the lower the CPU performance. For this reason, the IPC during access for each memory generally has the highest IPC when there is no memory access, and the IPC during memory access tends to decrease as the memory is closer to the main memory. In other words, if the IPC during L2 cache access measured by the monitoring units 53 and 54 is not different from the IPC when there is no memory access or the IPC during L1 cache access, the scheduler 513 causes the L2 cache latency factor. It can be determined that there is no performance degradation.
  • FIG. 12 is a second example of the table by memory hierarchy after executing the program that is the MRAM core. Similar to FIG. 11, the time and the number of instructions are associated with each other in the memory hierarchy table in FIG. 11.
  • Non-mem represents when there is no memory access.
  • the L1 cache represents when the L1 cache is accessed.
  • the L2 cache represents when the L2 cache is accessed.
  • the main memory indicates when the main memory is accessed.
  • the IPC for each memory hierarchy is calculated as shown in the table of FIG.
  • FIG. 13 is a table showing the IPC for each memory in the case of the table by memory hierarchy of FIG.
  • Non-mem represents the IPC when there is no memory access
  • the names of other memories represent the IPCs that are accessing the respective memories.
  • the IPC during the L2 cache access is 4, and the IPC when there is no memory access and the IPC during the L1 cache access are also 4. Therefore, there is no performance degradation of the processor 1b due to the latency of the L2 cache. I understand. That is, in this case, it can be seen that the latency of the MRAM L2 cache is not a problem in the overall performance of the processor 1b, and it can be determined that the execution in the MRAM core is optimal.
  • FIG. 14 shows an example of a table by memory hierarchy that requires reassignment of the program to the SRAM core as a result of executing the program by the MRAM core.
  • FIG. 14 is a third example of the table by memory hierarchy after executing the program that is the MRAM core. Similar to FIG. 11, the time and the number of instructions are associated with each other in the memory hierarchy table in FIG. 11. Non-mem represents when there is no memory access.
  • the L1 cache represents when the L1 cache is accessed.
  • the L2 cache represents when the L2 cache is accessed.
  • the main memory indicates when the main memory is accessed.
  • the IPC for each memory is calculated as shown in the table of FIG.
  • FIG. 15 is a table showing the IPC for each memory in the case of the table by memory hierarchy of FIG.
  • the IPC when there is no memory access and the IPC during L1 cache access is 4, but the IPC during L2 cache access is 0.3, and the performance of the processor 1b depends on the latency of the L2 cache. It turns out that it has fallen.
  • the scheduler 513 reassigns processing from the MRAM core to the SRAM core for optimization.
  • FIG. 16 is a flowchart showing a first example of processing of the processor 1b in the second embodiment.
  • the processor 1b executes the following processing when a predetermined time has elapsed.
  • the predetermined time is, for example, the number of cycles, real time, or the number of instructions of a program.
  • the processor 1b may execute the following processing after executing 1000 instructions.
  • Step S301 the control unit 41 of the monitoring unit 53 refers to the memory level information table T2 stored in the memory level information table storage unit 44 and acquires the access time for each memory.
  • Step S302 the control unit 41 of the monitoring unit 53 refers to the memory level information table T2 stored in the memory level information table storage unit 44 and acquires the number of instructions for each memory.
  • Step S303 the control unit 41 of the monitoring unit 53 obtains the IPC for each memory hierarchy by dividing the corresponding instruction number by the corresponding access time for each memory hierarchy.
  • Step S304 the scheduler 513 calculates the total access time of all the memories in the information table by memory layer T2 stored in the information table storage unit by memory layer 44 as the total execution time.
  • the total execution time is calculated using the information in the information table T2 by memory hierarchy, but the calculation method of the total execution time is not limited to this. For example, a separate table for counting the total execution time may be held.
  • Step S305 the scheduler 513 determines whether or not the access time to the L2 cache 103 is shorter than the time obtained by multiplying the total execution time of the program by a predetermined ratio (for example, 5%). If the access time to the L2 cache 103 is shorter than the time obtained by multiplying the total execution time of the program by a predetermined ratio (YES), the scheduler 513 proceeds to step S306. If the access time to the L2 cache 103 is not shorter than the time obtained by multiplying the total execution time of the program by a predetermined ratio (for example, 5%) (NO), the process proceeds to step S307.
  • a predetermined ratio for example, 5%
  • Step S306 when it is determined that the access time to the L2 cache 103 is shorter than the time obtained by multiplying the total execution time of the program by a predetermined ratio, the scheduler 513 instructs the first CPU core (MRAM core) 100. The process is executed as it is, and the process ends.
  • MRAM core first CPU core
  • Step S307 On the other hand, if it is determined in Step S305 that the access time to the L2 cache 103 is not shorter than the time obtained by multiplying the total execution time of the program by a predetermined ratio, the scheduler 513 It is determined whether or not the IPC is smaller than a value obtained by multiplying the IPC being accessed by the L1 data cache 102 by a predetermined ratio (for example, 10%).
  • the scheduler 513 proceeds to step S308. If the IPC currently accessing the L2 cache 103 is not smaller than the value obtained by multiplying the IPC currently accessing the L1 data cache 102 by a predetermined ratio (NO), the scheduler 513 proceeds to step S309.
  • Step S308 If it is determined in step S307 that the IPC that is accessing the L2 cache 103 is smaller than the value obtained by multiplying the IPC that is accessing the L1 data cache 102 by a predetermined ratio, the scheduler 513 executes the first CPU core (MRAM core). ) The processing is reassigned from 100 to the second CPU core (SRAM core) 200, and the processing ends.
  • MRAM core first CPU core
  • Step S309 If it is determined in step S307 that the IPC that is accessing the L2 cache 103 is not smaller than a value obtained by multiplying the IPC that is accessing the L1 data cache 102 by a predetermined ratio, the scheduler 513 executes the first CPU core (MRAM The core) 100 executes the process as it is, and the process ends.
  • MRAM CPU core
  • the scheduler 513 first checks the first condition and then checks the second condition.
  • the order is not limited to this, and the scheduler 513 may check in the reverse order.
  • the scheduler 513 compares the access time to the target memory including the MRAM and the total execution time, and accesses the IPC and other memory that are accessing the target memory.
  • a process is assigned to one of the cores based on the comparison with the IPC in the middle.
  • the execution efficiency of the process is reduced due to the access to the target memory, so the process is allocated from the MRAM core to the SRAM core. By changing, it is possible to suppress a decrease in performance.
  • the IPC that is accessing the target memory is not so much lower than the IPC that is accessing another memory, the execution efficiency of the process is not so much reduced by accessing the target memory. Even if the process is executed as it is, the performance is not greatly reduced.
  • the scheduler 513 can allocate processing to a CPU core that can suppress a decrease in processing performance due to memory access, thereby improving the arithmetic performance of the processor. Can do.
  • the scheduler 513 is based on the comparison result between the access time to the L2 cache 103 and the total execution time, and the comparison result between the IPC that is accessing the L2 cache 103 and the IPC that is accessing the L1 data cache 102. Assigned to one of the cores.
  • the scheduler 513 refers to the access time to the main memory 400, the access time to the L2 cache 103, the IPC accessing the main memory 400, and the IPC accessing the L2 cache 103. , Assign processing to one of the cores.
  • the access time to the L2 cache 103 causes a reduction in processing efficiency
  • the L2 cache to be accessed is changed from MRAM to SRAM, and the access speed to the L2 cache is improved, so that improvement in processing efficiency can be expected.
  • the access time to the main memory 400 causes a reduction in processing efficiency
  • the L2 cache to be accessed is changed from SRAM to MRAM, the capacity of the L2 cache is increased, and the access frequency to the main memory is reduced, so that improvement in processing efficiency can be expected.
  • the scheduler 513 calculates, for example, the IPC reduction degree of the main memory 400 and the IPC reduction degree of the L2 cache 203. Specifically, for example, the scheduler 513 divides the IPC that is accessing the main memory 400 by the IPC that is accessing the cache in the higher hierarchy than the main memory 400, and subtracts the value after the division from 1 as the main value. Calculated as the degree of IPC decrease in the memory 400.
  • the IPC that is accessing the cache in the higher hierarchy than the main memory 400 is, for example, the IPC that is accessing the L2 cache 203, the IPC that is accessing the L1 cache, or the IPC when not accessing the memory, or the IPC of the entire process It is.
  • the scheduler 513 uses the IPC that is accessing the cache at a higher level than the L2 cache 203 (for example, the IPC that is accessing the L1 cache, the IPC when the memory is not accessed, or the IPC of the entire process) to the L2 cache.
  • the IPC being accessed is divided, and a value obtained by subtracting the value after the division from 1 is calculated as the IPC lowering degree of the L2 cache 203.
  • the scheduler 513 changes the processing allocation from the SRAM core to the MRAM core.
  • the product of the access time to the main memory 400 and the IPC reduction degree of the main memory 400 is a coefficient corresponding to the time waiting in the main memory 400.
  • the product of the access time to the L2 cache 203 and the IPC decrease degree of the L2 cache 203 is a coefficient corresponding to the time waited in the L2 cache 203.
  • the MRAM L2 cache 103 has a larger capacity than the SRAM L2 cache 203 as described above, so that the MRAM core can take less time to access the main memory 400 than the SRAM core. The time spent waiting for access can be shortened. As a result, the scheduler 513 can be expected to improve the execution efficiency of the process.
  • the scheduler 513 indicates that the ratio of the access time to the target L2 cache accessible by the core that is currently executing the process to the total execution time and the ratio of the main memory 400 access time to the total execution time are both It is determined whether or not it is larger than the threshold value. When both are larger than the threshold, the scheduler 513 calculates the product of the access time to the target L2 cache and the IPC decrease degree of the target L2 cache, and the product of the access time to the main memory 400 and the IPC decrease degree of the main memory 400. Compare When the product of the access time to the target L2 cache and the IPC decrease degree of the target L2 cache is smaller, it means that the main memory 400 has waited for the target L2 cache. On the other hand, when the product of the access time to the main memory 400 and the IPC decrease degree of the main memory 400 is smaller, it means that the target L2 cache waits from the main memory 400.
  • processing is first assigned to the MRAM core.
  • the target L2 cache is the L2 cache 103 configured with MRAM.
  • the product of the access time to the L2 cache 103 and the IPC decrease degree of the L2 cache 103 is larger than the product of the access time to the main memory 400 and the IPC decrease degree of the main memory 400, the L2 cache 103 than the main memory 400.
  • the scheduler 513 changes the allocation of processing from the MRAM core to the SRAM core.
  • the scheduler 513 can be expected to improve the execution efficiency of the process.
  • processing is first assigned to the SRAM core.
  • the target L2 cache is an L2 cache 203 configured with SRAM.
  • the scheduler 513 changes the allocation of processing from the SRAM core to the MRAM core.
  • the processing is allocated to the MRAM core, the capacity of the L2 cache 103 accessed by the MRAM core is larger than the capacity of the L2 cache 203, so the number of accesses to the main memory 400 is reduced.
  • the time waiting for access can be shortened.
  • the IPC value during access to the main memory 400 is improved.
  • the scheduler 513 can be expected to improve the execution efficiency of processing.
  • FIG. 17 is a flowchart showing a second processing example of the processing of the processor 1b in the second embodiment.
  • the processor 1b executes the following processing when a predetermined time has elapsed.
  • the predetermined time is, for example, the number of cycles, real time, or the number of instructions of a program.
  • the processor 1b may execute the following processing after executing 1000 instructions.
  • steps S401 to S403 Since the processing in steps S401 to S403 is the same as that in steps S301 to S303 in FIG. 16, the description thereof is omitted.
  • Step S406 when the first CPU core is executing the process, the scheduler 513 checks whether the access time to the target L2 cache with respect to the total execution time is larger than the threshold value. Further, when the second CPU core is executing a process, the scheduler 513 determines whether the access time to the main memory 400 for the entire execution time is larger than the threshold value. When processing is being executed in the first CPU core and the access time to the target L2 cache with respect to the entire execution time is greater than the threshold value, or processing is being executed in the second CPU core and the access time to the main memory 400 with respect to the total execution time is the threshold value If larger, the scheduler 513 proceeds to step S408. If these conditions are not met, the process proceeds to step S407.
  • Step S407 When the process being executed does not satisfy the condition of Step S406, the scheduler 513 causes the core that is currently executing the process to execute the process as it is.
  • Step S408 The scheduler 513 determines that the product of the access time to the main memory 400 and the IPC reduction degree of the main memory 400 (hereinafter referred to as main memory product) is the access time to the target L2 cache and the IPC reduction degree of the target L2 cache. Is greater than the product (hereinafter referred to as the target L2 product). If the main memory product is larger than the L2 product (YES), the scheduler 513 proceeds to step S409. On the other hand, if the main memory product is equal to or less than the target L2 product (NO), the scheduler 513 proceeds to step S412.
  • Step S409 When it is determined in step S408 that the main memory product is larger than the target L2 product, the process waits for access to the main memory 400 from the target L2 cache. In that case, the scheduler 513 determines whether or not the second CPU core 200 is executing. If it is being executed by the second CPU core 200 (YES), the scheduler 513 proceeds to step S410. If the second CPU core 200 is not executing (NO), the scheduler 513 proceeds to step S411.
  • Step S410 When it is determined in Step S409 that the second CPU core 200 is executing, the scheduler 513 switches the process assignment from the second CPU core 200 to the first CPU core 100.
  • the capacity of the L2 cache 103 accessed by the first CPU core (MRAM core) 100 is larger than the capacity of the L2 cache 203, the number of accesses to the main memory 400 is reduced. You can shorten your time. As a result, the IPC value during access to the main memory 400 is improved. As a result, the scheduler 513 can be expected to improve the execution efficiency of the process.
  • Step S411 When it is determined in Step S409 that the second CPU core 200 is not executing, the scheduler 513 causes the first CPU core 100 to execute the process as it is.
  • Step S412 When it is determined in step S408 that the main memory product is equal to or less than the target L2 product, the main memory 400 is waiting for access to the target L2 cache. In that case, the scheduler 513 determines whether or not the first CPU core 100 is executing. If it is being executed by the first CPU core 100 (YES), the scheduler 513 proceeds to step S413. On the other hand, when not being executed by the first CPU core 100 (NO, the scheduler 513 proceeds to step S414).
  • Step S413 When it is determined in Step S412 that the first CPU core 100 is executing, the scheduler 513 changes the process assignment from the first CPU core 100 to the second CPU core 200. As a result, the L2 cache 203 accessed by the second CPU core (SRAM core) 200 is faster than the L2 cache 103, so that the time waited for access to the L2 cache is reduced. As a result, the scheduler 513 can be expected to improve the execution efficiency of the process.
  • Step S4114 When it is determined in Step S412 that the first CPU core 100 is not executing, the scheduler 513 causes the second CPU core 200 to execute the process as it is.
  • the scheduler 513 compares the access time to the main memory 400 and the access time to the L2 cache 103, the access time to the main memory 400, and the threshold value. Which core is processed based on at least one of the comparison of the access time to the L2 cache 103 and the comparison of the threshold value and the comparison result of the IPC that is accessing the main memory 400 and the IPC that is accessing the L2 cache 103 Decide whether to assign
  • the processing allocation from the MRAM core to the SRAM core can be changed.
  • the L2 cache to be accessed is changed from MRAM to SRAM, and the access speed to the L2 cache is improved, so that improvement in processing efficiency can be expected.
  • the processing assignment from the SRAM core to the MRAM core can be changed.
  • the L2 cache to be accessed is changed from SRAM to MRAM, the capacity of the L2 cache is increased, and the access frequency to the main memory is reduced, so that improvement in processing efficiency can be expected.
  • the scheduler 513 determines the core to which the process is assigned by comparing the execution information in the MRAM core with the execution information in the SRAM core predicted from the execution information in the MRAM core.
  • the scheduler 513 includes each of overhead due to latency when each core accesses a memory of a corresponding hierarchy in a different memory system, and the number of predicted cache miss increases due to movement of processing from the MRAM core to the SRAM core. And a process is allocated to one of the cores based on the migration overhead, which is the time required to change the process allocation.
  • each of the plurality of cores can access memories included in different memory systems among a plurality of memory systems including a plurality of memories connected in a hierarchy.
  • the memories in the hierarchy in which the cores correspond to different memory systems are the L2 cache 103 and the L2 cache 203.
  • the scheduler 513 obtains, for example, from “the overhead due to the L2 cache latency of the MRAM core” to “the overhead due to the L2 cache miss in the SRAM core” after a predetermined time has elapsed since the MRAM core started execution.
  • the difference is obtained by difference. For example, if the difference value is less than the migration overhead, the scheduler 513 executes the process as it is in the MRAM core, and if the difference value is equal to or greater than the migration overhead, the scheduler 513 reassigns the process to the SRAM core.
  • the scheduler 513 determines whether to switch the processing assignment in consideration of the migration overhead, and thus the effect of improving the processing efficiency due to the processing assignment change can be suppressed by reducing the occurrence frequency of the state where the overhead due to the processing assignment change exceeds. I can do it.
  • the migration overhead is a threshold for adjusting the frequency of program execution core movement.
  • the migration overhead may be a constant given in advance before actual processing execution or may be a value calculated from an execution history or the like.
  • the migration overhead may be a value calculated by the scheduler 513 for the overhead required to move the program execution core. In this embodiment, as an example, the migration overhead is given in advance as 5% of the total execution time of the program before executing the program.
  • the scheduler 513 calculates, for example, the overhead OH_L2M due to the L2 cache latency of the MRAM core by the following equation (1).
  • OH_L2M MRAM total access latency x IPC degradation level ... (1)
  • the MRAM total access latency is an integrated value of the access latency of the L2 cache 103 when a predetermined time has elapsed from the start of processing.
  • the scheduler 513 uses, for example, the value of the access time to the L2 cache of the monitoring unit 53 in FIG. 14 as the total access latency, the total access latency is 1000.
  • the scheduler 513 may use the value of the access time to the L2 cache in the memory hierarchy table T2 as the MRAM total access latency.
  • the IPC reduction degree can be calculated using the monitoring unit 53, for example.
  • the scheduler 513 for example, based on the information of the monitoring unit 53, an IPC that is accessing the L2 cache and an IPC that includes information of a higher-level cache than the L2 cache (for example, an IPC of the L1 cache or an IPC when no memory access is performed, Alternatively, the IPC reduction degree is calculated by comparing the IPC of the entire process. Specifically, for example, the scheduler 513 divides the IPC currently accessing the L2 cache by the IPC of the L1 cache, and calculates a value obtained by subtracting the value after the division from 1 as the IPC decrease degree for the L2 cache.
  • the method for obtaining the total access latency is not limited to this.
  • the access latency to the MRAM L2 cache is statically given, and the scheduler 513 multiplies the number of L2 cache accesses acquired during the program execution by the access latency to the MRAM L2 cache to obtain the total access latency. May be calculated.
  • the IPC during L2 cache access is 0.3.
  • the IPC in the higher hierarchy than the L2 cache may use the value of the L1 cache or the non-mem value, but in the present embodiment, the scheduler 513 uses the non-mem value of 4 as an example. .
  • the scheduler 513 calculates the overhead OH_L2S due to the L2 cache miss in the SRAM core by the following equation (2).
  • the scheduler 513 In order to obtain SRAM core execution information during program execution by the MRAM core, it is necessary to predict SRAM core execution information based on the MRAM core execution information.
  • the main memory access latency is a latency required for one access to the main memory.
  • the scheduler 513 also divides the access time to the main memory 400 stored in the memory tier-specific table T2 of the monitoring unit 53 connected to the first CPU core (MRAM core) 100 by the number of main memory accesses to obtain the main memory access latency. Good.
  • the access time to the main memory 400 recorded in the memory hierarchy table T2 is an integrated value obtained by integrating the memory access times to the main memory 400 at least once.
  • access latency to the main memory 400 may be statically given. In this embodiment, as an example, the scheduler 513 uses 200 as the main memory latency.
  • the scheduler 513 can predict the predicted increase in the number of L2 cache misses by the SRAM core by using the LRU (Least Recently Used) access information of the cache in the MRAM core.
  • LRU east Recently Used
  • FIG. 18 is an example of an image diagram of the cache memory in the second embodiment.
  • the cache memory holds a set for each hash value of the memory address. The way is the upper limit number that can hold the same set of data.
  • An area R181 in FIG. 18 represents the set index information (tag memory array) as an image, and an area R182 represents the way index information (tag memory array) as an image.
  • An area R183 represents a cache memory (data memory array) that stores data.
  • hash functions that determine the correspondence between memory addresses and sets.
  • the set is determined by the value of the upper 3 bits of the address.
  • the data of the 32-bit address “010000010101010101010101010101” is stored in the set 3 because the upper bit is “010”.
  • the above-mentioned LRU is a general method for determining which data of the same set of data remains.
  • the most recently accessed data is arranged in the order of way 1 to way 8.
  • the data arranged in the way 1 is referred to more recently than the data arranged in the way 2.
  • Such data arrangement is realized by arranging accessed data in way 1 and shifting other data by one way.
  • the data of way 8 is moved from the cache to the lower hierarchy.
  • caches having the same number of sets have the same cache access behavior with the same way number.
  • the access history up to SRAM 4 way and the access history up to MRAM 4 way are the same.
  • access to ways 5 to 16 of MRAM 4 MB is a cache hit in MRAM 4 MB, but a miss in SRAM 1 MB.
  • the scheduler 513 obtains the number of cache miss increases in the SRAM core by counting accesses to ways that do not exist in the SRAM core cache during execution in the MRAM core. At that time, the scheduler 513 may acquire the access count for each way using an access counter prepared for each way or may be acquired using an access counter prepared for each of a plurality of ways. Good.
  • the obtained access increase frequency prediction value in the SRAM core is 3.
  • the scheduler 513 subtracts the overhead caused by the L2 cache miss by the SRAM core from the overhead caused by the L2 cache latency of the MRAM core calculated as described above.
  • the migration overhead is 5% of the time taken from the start to the end of the program (hereinafter referred to as the total execution time of the program).
  • the total execution time of the program is 10,000 cycles
  • the scheduler 513 allocates processing from the MRAM core. Switch to SRAM core.
  • FIG. 19 is a flowchart illustrating a third processing example of the processing of the processor 1b according to the second embodiment.
  • steps S501 to S503 Since the processing of steps S501 to S503 is the same as that of steps S301 to S303 in FIG. 16, the description thereof is omitted.
  • Step S504 the scheduler 513 calculates the IPC decrease degree.
  • Step S505 the scheduler 513 calculates the overhead due to the L2 cache latency of the MRAM core.
  • Step S506 the scheduler 513 calculates a predicted increase number of L2 cache misses by the SRAM core.
  • Step S507 the scheduler 513 calculates the overhead due to the L2 cache miss by the SRAM core.
  • Step S508 the scheduler 513 subtracts the overhead caused by the L2 cache miss by the SRAM core from the overhead caused by the L2 cache latency of the MRAM core, and acquires the subtracted value obtained by the subtraction.
  • Step S509 the scheduler 513 calculates a migration overhead.
  • the scheduler 513 since the migration overhead set statically is used, the scheduler 513 reads from the storage area storing the migration overhead.
  • Step S510 the scheduler 513 determines whether or not the subtraction value is greater than or equal to the migration overhead. If the subtraction value is equal to or greater than the migration overhead (YES), the scheduler 513 proceeds to step S511. If the subtraction value is not greater than or equal to the migration overhead (NO), the scheduler 513 proceeds to step S512.
  • Step S511) When it is determined in Step S510 that the subtraction value is greater than or equal to the migration overhead, the scheduler 513 changes the processing assignment from the first CPU core (MRAM core) 100 to the second CPU core (SRAM core) 200.
  • Step S512 Next, when it is determined in step S510 that the subtraction value is not equal to or higher than the migration overhead, the scheduler 513 causes the first CPU core 100 to execute the process as it is.
  • the scheduler 513 for example, from the “overhead due to the L2 cache latency of the MRAM core” after the predetermined time elapses from when the MRAM core starts execution, The overhead due to the L2 cache miss ”is subtracted to obtain a difference value. Then, for example, if the difference value is less than the migration overhead, the scheduler 513 executes the process as it is in the MRAM core. As a result, the scheduler 513 determines whether to switch the processing assignment in consideration of the migration overhead, so that the improvement in processing efficiency due to the processing assignment change can be expected to improve the occurrence frequency exceeding the overhead due to the processing assignment change.
  • the scheduler 513 compares the difference value and the migration overhead, and assigns a process to one of the cores based on the comparison result.
  • the scheduler 513 is not limited to this, and the scheduler 513 Processing may be assigned to any of the cores based on the comparison result with the second performance degradation level.
  • the third process in the second embodiment is summarized as follows.
  • the first memory that can be accessed by the first CPU core 100 and the second CPU core 200 that can be accessed for each processing, and a smaller capacity than the first memory
  • the second memory having a low latency can be selected.
  • the evaluation unit 413 evaluates the calculation performance for each of the plurality of memories included in the first memory during the execution of the process in the first core.
  • the scheduler 513 uses the evaluated calculation performance to identify the first performance degradation level due to the latency of the first memory, and from the LRU access information of the first memory, the data in the second memory.
  • the second performance degradation level due to non-holding is specified, the first performance degradation level and the second performance degradation level are compared, and processing is assigned to any of the cores based on the comparison result.
  • the computing performance evaluated by the evaluation unit 413 can be used for various purposes.
  • the OS Operating System
  • the calculation performance for example, the degree of IPC decrease
  • the programmer may optimize the data structure or algorithm of the target process (software) with reference to the calculation performance (for example, IPC reduction degree) obtained from the evaluation unit.
  • monitoring unit implementations there are various types of monitoring unit implementations.
  • One of them is a performance counter (performance monitor) function that measures the execution efficiency of the processor.
  • the time information acquisition unit 411, the calculation amount acquisition unit 412 and the evaluation unit 413 in each of the embodiments described above may be provided, or only the time information acquisition unit 411 and the calculation amount acquisition unit 412 may be provided. You may prepare.
  • the output result of the evaluation unit 413 may be used as the performance counter value, or the output results of the time information acquisition unit and the calculation amount acquisition unit may be used as the performance counter value.
  • a system including a plurality of devices may process each process of the monitoring unit or the information processing device according to each embodiment in a distributed manner.
  • a program for executing each process of the monitoring unit or information processing apparatus of each embodiment is recorded on a computer-readable recording medium, and the program recorded on the recording medium is read into a computer system and executed.
  • the “computer system” referred to here may include an OS and hardware such as peripheral devices. Further, the “computer system” includes a homepage providing environment (or display environment) if a WWW system is used.
  • the “computer-readable recording medium” means a flexible disk, a magneto-optical disk, a ROM, a writable nonvolatile memory such as a flash memory, a portable medium such as a CD-ROM, a hard disk built in a computer system, etc. This is a storage device.
  • the “computer-readable recording medium” refers to a volatile memory (for example, DRAM (Dynamic) in a computer system serving as a server or a client when a program is transmitted via a network such as the Internet or a communication line such as a telephone line. Random Access Memory)), etc. that hold a program for a certain period of time.
  • the program may be transmitted from a computer system storing the program in a storage device or the like to another computer system via a transmission medium or by a transmission wave in the transmission medium.
  • the “transmission medium” for transmitting the program refers to a medium having a function of transmitting information, such as a network (communication network) such as the Internet or a communication line (communication line) such as a telephone line.
  • the program may be for realizing a part of the functions described above. Furthermore, what can implement
  • the present invention is not limited to the above-described embodiment as it is, and can be embodied by modifying the constituent elements without departing from the scope of the invention in the implementation stage.
  • various inventions can be formed by appropriately combining a plurality of components disclosed in the embodiment. For example, some components may be deleted from all the components shown in the embodiment.
  • constituent elements over different embodiments may be appropriately combined.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Debugging And Monitoring (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

 本発明の実施形態に係る情報処理方法によれば、時間情報取得ステップにおいて、時間情報取得部が、命令発行器による命令に従ったメモリアクセスユニットによる対象メモリへのアクセスの開始とこのアクセスの終了とを検知し、この検知に基づいてこのアクセスの開始から終了までの時間をメモリアクセス時間として取得する。演算量取得ステップにおいて、演算量取得部が、上記メモリアクセスユニットが対象メモリへアクセスを開始した時から終了した時までに、上記命令発行器による命令に従って演算部が実行した演算量を算出する。そして、評価ステップにおいて、評価部が、このメモリアクセス時間とこの演算量とに基づいて、このアクセス開始から終了までの間における上記演算部による演算性能を評価する。

Description

情報処理方法、情報処理装置及びプログラム
 本発明の実施形態は、情報処理方法、情報処理装置及びプログラムに関する。
 メモリウォール問題と称されるように、メモリアクセスはプロセッサの性能へと大きな影響を与える。また、Out-of-OrderやSMT(Simultaneous Multithreading:同時マルチスレディング)といったメモリアクセスレイテンシ隠蔽技術が一般的となり、メモリアクセスのプロセッサの演算性能への影響は実行中のプログラムの性質やハードウェア資源の大小により動的に変化する。
WO2004/044745号公報
 プロセッサの性能解析を行う際に、メモリアクセスのプロセッサの演算性能への影響を特定することは非常に重要である。しかしながら、メモリアクセスがプロセッサの演算性能に与える影響の度合いを評価する際の精度が低いという問題がある。
 そこで本発明の一態様は、上記問題に鑑みてなされたものであり、メモリアクセスがプロセッサの演算性能に与える影響の度合いを精度良く評価することを可能とする情報処理方法、情報処理装置及びプログラムを提供することを課題とする。
 本発明の実施形態に係る情報処理方法によれば、時間情報取得ステップにおいて、時間情報取得部が、命令発行器による命令に従ったメモリアクセスユニットによる対象メモリへのアクセスの開始とこのアクセスの終了とを検知し、この検知に基づいてこのアクセスの開始から終了までの時間をメモリアクセス時間として取得する。演算量取得ステップにおいて、演算量取得部が、上記メモリアクセスユニットが対象メモリへアクセスを開始した時から終了した時までに、上記命令発行器による命令に従って演算部が実行した演算量を算出する。そして、評価ステップにおいて、評価部が、このメモリアクセス時間とこの演算量とに基づいて、このアクセス開始から終了までの間における上記演算部による演算性能を評価する。
第1の実施形態におけるプロセッサ1を示す概略ブロック図である。 第1の実施形態におけるグローバルカウンタ42を示す概略ブロック図である。 第1の実施形態におけるメモリアクセス情報テーブル記憶部43が記憶するメモリアクセス情報テーブルT1の一例である。 第1の実施形態におけるメモリ階層別情報テーブル記憶部44が記憶するメモリ階層別情報テーブルT2の一例である。 第1の実施形態における制御部41を示す概略ブロック図である。 第1の実施形態において、メモリアクセス開始時のモニタリングユニット4の処理の流れの一例を示すフローチャートである。 第1の実施形態において、メモリアクセス終了時のモニタリングユニット4の処理の流れの一例を示すフローチャートである。 第2の実施形態におけるプロセッサ1bを示す概略ブロック図である。 第2の実施形態におけるコア情報テーブルT3の一例である。 第2の実施形態におけるメモリ7を示す概略ブロック図である。 MRAMコアであるプログラムを実行した後のメモリ階層別テーブルの第1の例である。 MRAMコアであるプログラムを実行した後のメモリ階層別テーブルの第2の例である。 図12のメモリ階層別テーブルの場合におけるメモリ階層毎のIPCを示す表である。 MRAMコアであるプログラムを実行した後のメモリ階層別テーブルの第3の例である。 図14のメモリ階層別テーブルの場合におけるメモリ階層毎のIPCを示す表である。 第2の実施形態におけるプロセッサ1bの処理の第1の処理例を示すフローチャートである。 第2の実施形態におけるプロセッサ1bの処理の第2の処理例を示すフローチャートである。 第2の実施形態におけるキャッシュメモリのイメージ図の一例である。 第2の実施形態におけるプロセッサ1bの処理の第3の処理例を示すフローチャートである。
実施形態
 以下、本発明の実施形態について、図面を参照して詳細に説明する。
 (第1の実施形態)
 図1は、第1の実施形態におけるプロセッサ1を示す概略ブロック図である。実線のブロックが物理的または論理的な機能または記憶領域を有するブロックを表しており、破線のブロックは機能ブロック間で受け渡される情報を表しており、矢印は情報の伝達経路を表している。これら記憶領域は、情報を記憶可能であればどのような手段を用いて実現してもよい。例えば、レジスタといったハードウェアを利用してもよいし、C言語などのソフトウェアの変数を利用してもよい。
 機能ブロックについても、所望の機能が実現可能であればどのような手段を用いて実現してもよい。例えば、加算器・減算器のようなハードウェアを利用してもよいし、C言語などのソフトウェアの加減算機能を利用してもよい。情報の伝達経路も、正しく情報をやり取りできる手段であればどのようなものであってもよい。例えば、配線による信号の伝達といったハードウェアを利用してもよいし、C言語といったソフトウェアの変数の代入を利用してもよい。
 プロセッサ1は、メモリデバイス3及びモニタリングユニット4に接続されたCPU(Central Processing Unit)コア2と、CPUコア2に接続されたメモリデバイス3と、CPUコア2に接続されたモニタリングユニット(情報処理装置)4とを備える。
 CPUコア2は、命令単位でプログラムを実行する。ここで、CPUコア2は、演算部22とメモリアクセスユニット24に接続された命令発行器21、命令発行器21とメモリアクセスユニット24に接続された演算部22、及び命令発行器21と演算部22に接続されたメモリアクセスユニット24を備える。ここで、演算部22は、命令発行器21とメモリアクセスユニット24に接続された第1演算器221、及び命令発行器21とメモリアクセスユニット24に接続された第2演算器222を備える。
 命令発行器21は、第1演算器221、第2演算器222及びメモリアクセスユニット24等に命令を発行する。
 第1演算器221及び第2演算器222は、命令発行器21が発行した命令に従って計算を行う。
 メモリアクセスユニット24は、メモリデバイス3に対するアクセス要求をメモリデバイス3へ発行する。
 なお、本実施形態では、CPUコア2の構成要素として2つの演算器と1つのメモリアクセスユニットを例示したが、このような構成に限定されるものではない。CPUコアは、演算機能を保持する機能ブロックであればよく、演算器を1つ以上保持すればよい。また、例えば、演算器は1つであっても3つ以上であってもよいし、CPUコア2は、メモリアクセスユニットや命令発行器を複数備えていてもよい。
 メモリデバイス3には、データやプログラムコードが記憶されている。メモリデバイス3は、一例として、メモリアクセスユニット24と接続されたL1キャッシュ31、L1キャッシュ31及び主記憶33と接続されたL2キャッシュ32、L2キャッシュ32と接続された主記憶33という三つのレベルの階層構造で構成されている。メモリの階層構造とは、共有メモリ領域のデータを記憶可能であってCPUコア2からのアクセス速度が異なるメモリ群を指す。本実施形態では、CPUコア2からのアクセス速度は、L1キャッシュが最も速く、主記憶が最も遅い。
 なお、本実施形態では3階層のメモリ階層を例示したが、このような構成に限定されるものではない。例えば、L1キャッシュ、L2キャッシュ、L3キャッシュ、主記憶という四つのレベルの階層構造であってもよいし、L1キャッシュ、主記憶といった二つのレベルの階層構造であってもよい。また、五つレベル以上の階層構造であってもよい。また、図1には図示されていないが、主記憶は補助記憶装置等と接続されていてもよい。
 モニタリングユニット4は、CPUコア2及びメモリデバイス3を監視し、メモリアクセス開始から終了までの間における演算部22の演算性能を評価する。演算性能とは、例えば、時間(例えば、実行サイクルまたは実時間)あたりの発行、コミットまたは実行された命令数すなわち単位時間あたりの発行、コミットまたは実行された命令数、または単位時間あたりの演算器の使用率といった性能指標をさす。
 図1に示すように、モニタリングユニット4は、制御部41、制御部41と接続されたグローバルカウンタ42、制御部41と接続されたメモリアクセス情報テーブル43、及び制御部41と接続されたメモリ階層別情報テーブル記憶部44を備える。
 グローバルカウンタ42は、実行中のCPUコア2の状態を保持する記憶領域である。図2は、第1の実施形態におけるグローバルカウンタ42を示す概略ブロック図である。図2に示すように、グローバルカウンタ42は、時間カウンタ421と命令数カウンタ422を備える。
 時間カウンタ421は、任意の時点からの時間を計測する。ここで、時間とは、時間情報を定量的に表せるものであればどのようなものでもよく、クロックサイクル数のようなプロセッサの実装に依存した時間であってもよいし、時刻のようなプロセッサの実装に依存しない時間であってもよい。
 時間カウンタ421の更新のタイミングは、任意のタイミングでよい。1サイクル毎であってもよいし、10サイクル毎であってもよいし、1000サイクル毎であってもよい。
 命令数カウンタ422は、任意の時点からの命令数を計測する。命令数は、実行された命令数(以下、実行命令数という)が直接的または近似的に計測可能な情報であればどのようなものでもよい。例えば、命令のコミット数をこの命令数として計測してもよいし、第1演算器221及び第2演算器222で演算を終えた命令数をこの命令数として計測してもよいし、命令の発行数をこの命令数として計測してもよい。
 命令数カウンタ422の更新のタイミングは、任意のタイミングでよい。例えば、一定のサイクル数毎であってもよいし、一定の命令数毎であってもよい。
 メモリアクセス情報テーブル記憶部43は、実行中のメモリアクセスの情報を記録する。図3は、第1の実施形態におけるメモリアクセス情報テーブル記憶部43が記憶するメモリアクセス情報テーブルT1の一例である。図3のメモリアクセス情報テーブルT1に示すように、メモリアクセス情報テーブル記憶部43には、メモリアクセス毎に、そのメモリアクセスを識別するメモリアクセスIDと、開始時間情報と開始命令数情報が関連付けられて記憶されている。ここで開始時間情報は、メモリアクセスを開始した時刻を表す情報(例えば、時間カウンタ421の値)である。また開始命令数情報は、メモリアクセスを開始した時点での命令数(例えば、命令数カウンタ422の値)である。
 なお、メモリアクセスIDには様々なものが利用可能である。例えば、メモリアクセス情報テーブル記憶部43は、アクセス先のメモリアドレスをメモリアクセスIDに用いてもよいし、メモリアクセス発行時に一意に発行されるIDをメモリアクセスIDとして用いてもよい。
 メモリ階層別情報テーブル記憶部44は、メモリ毎に、対象階層へのメモリアクセスに関する情報を記録する。図4は、第1の実施形態におけるメモリ階層別情報テーブル記憶部44が記憶するメモリ階層別情報テーブルT2の一例である。図4の「Non-mem時間情報」は、メモリアクセス以外の時間である。図4のメモリ階層別情報テーブルT2に示すように、メモリ階層別情報テーブル記憶部44には、メモリ毎に時間情報と命令数情報が関連付けられて記憶されている。ここで時間情報は、メモリアクセスに要した時間の積算値である。命令数情報は、メモリアクセス中に実行された命令数の積算値である。
 制御部41は、グローバルカウンタ42、メモリアクセス情報テーブル記憶部43及びメモリ階層別情報テーブル記憶部44を制御する。また制御部41は、加減算を行う演算機能を保持する。
 図5は、第1の実施形態における制御部41を示す概略ブロック図である。制御部41は、評価部413に接続された時間情報取得部411、評価部413に接続された演算量取得部412、時間情報取得部411と演算量取得部412とに接続された評価部413、メモリアクセス情報テーブル記憶部43と接続された第1記憶処理部414、及びメモリアクセス情報テーブル記憶部43と接続された第2記憶処理部415を備える。
 第1記憶処理部414は、プログラムの任意の時点からの時間を計数する時間カウンタが計数するメモリアクセス開始時の時間カウンタの値を開始時間情報としてメモリアクセス情報テーブル記憶部43に記憶させる。
 第1記憶処理部415は、プログラムの任意の時点からの命令数を計数する命令数カウンタ422が計数するメモリアクセス開始時の命令数カウンタ422の値を開始命令数情報としてメモリアクセス情報テーブル記憶部43に記憶させる。
 時間情報取得部411は、命令発行器21による命令に従ったメモリアクセスユニット24による対象メモリへのアクセスの開始とこのアクセスの終了とを検知し、この検知に基づいてこのアクセスの開始から終了までの時間をメモリアクセス時間として取得する。より詳細には、時間情報取得部411は、対象メモリについて上記メモリアクセス時間を取得する。時間情報取得部411は、上記の処理を全てのメモリについて行うことで、全てのメモリについて上記メモリアクセス時間を取得する。すなわち、時間情報取得部411は、メモリ毎に上記メモリアクセス時間を取得する。
 具体的には、例えば、時間情報取得部411は、メモリアクセス開始時の時刻とメモリアクセス終了時の時刻を比較することで、メモリアクセス時間を算出する。より詳細には、時間情報取得部411は、例えば、メモリアクセス情報テーブル記憶部43に記憶された開始時間情報を取得し、メモリアクセス終了時の時間カウンタの値を取得し、取得した開始時間情報と取得した時間カウンタの値の差を、メモリアクセスの際に対象データを取得したメモリについてのメモリアクセス時間として取得する。
 時間情報取得部411は、取得したメモリアクセス時間を示すメモリアクセス時間情報を評価部413へ出力する。
 演算量取得部412は、メモリアクセスユニット24が対象メモリへアクセスを開始した時から終了した時までに、命令発行器21による命令に基づく演算量を算出する。演算量取得部412は、上記の処理を全てのメモリについて行うことで、全てのメモリについて、上記演算量を算出する。すなわち、演算量取得部412は、メモリ毎に上記演算量を算出する。
 ここで、演算量は、例えば、発行、コミットまたは実行された命令数である。その前提で、例えば、演算量取得部412は、メモリアクセス開始時の命令数とメモリアクセス終了時の命令数を比較することで、上記アクセス開始から終了までの間の命令数を算出する。
 より詳細には、演算量取得部412は、例えば、メモリアクセス情報テーブル記憶部43に記憶された開始命令数情報を取得し、メモリアクセス終了時の命令数カウンタ422の値を取得し、取得した開始命令数情報と取得した命令数カウンタ422の値との差を、前記メモリアクセスの際に対象データを取得したメモリについての上記アクセス開始から終了までの間の命令数として取得する。
 演算量取得部412は、取得した演算量(ここでは、一例として命令数)を示す演算量情報を評価部413へ出力する。
 評価部413は、時間情報取得部411が取得したメモリアクセス時間と演算量取得部412が取得した演算量とに基づいて、上記アクセス開始から終了までの間における演算部22による演算性能を評価する。より詳細には、評価部413は、対象メモリのメモリアクセス時間と、対象メモリの演算量とに基づいて、対象メモリへのアクセス開始から終了までの間における演算部22による演算性能を評価する。評価部413は、上記の処理を全てのメモリについて行うことで、全てのメモリについて演算部22による演算性能を評価する。すなわち、評価部413は、階層状に接続されたメモリ毎に、そのメモリのメモリアクセス情報とそのメモリの演算量情報とに基づいて、そのメモリについてアクセス開始から終了までの間における演算部22による演算性能を評価する。
 以下、あるメモリアクセスを例にし、モニタリングユニット4の動作例を説明する。モニタリングユニット4の動作は、メモリアクセス開始時と、メモリアクセス終了時に行う必要があるため、それぞれについて以下で説明する。
 <モニタリングユニット4のメモリアクセス開始時の処理>
 図6は、第1の実施形態において、メモリアクセス開始時のモニタリングユニット4の処理の流れの一例を示すフローチャートである。
 (ステップS101)メモリアクセス命令がメモリアクセスユニット24に発行されると、制御部41はそのメモリアクセス命令の発行を検知する。制御部41がメモリアクセス開始を検知可能であれば、その実現方法はいかなるものであってもよい。例えば、図1に示すように、メモリアクセスを行うメモリアクセスユニット24がメモリアクセスの開始を制御部41に伝達してもよいし、制御部41がメモリアクセスユニット24を定期的に監視することによってメモリアクセスの開始を検知してもよい。
 (ステップS102)次に、制御部41は、メモリアクセス命令発行時のCPUコア2の状態をチェックする。具体的には、例えば、制御部41は、グローバルカウンタ42が備える時間カウンタ421の値と命令数カウンタ422の値を参照し、これら2つの値を現在値情報として取得する。
 (ステップS103)次に、制御部41は、メモリアクセスを特定可能なメモリアクセスIDとともに現在値情報を、メモリアクセス情報テーブル記憶部44のメモリアクセス情報テーブルに記録する。具体的には、制御部41は、メモリアクセス情報テーブルの開始時間情報には時間カウンタ421の値を、メモリアクセス情報テーブルの開始命令数情報には命令数カウンタ422の値を記録する。
 以上に処理により、メモリアクセス開始時の時間とその時までに実行された命令数とがメモリアクセス情報テーブル記憶部44に記録される。
 <モニタリングユニット4のメモリアクセス終了時の処理>
 図7は、第1の実施形態において、メモリアクセス終了時のモニタリングユニット4の処理の流れの一例を示すフローチャートである。
 (ステップS201)まず、制御部41は、メモリアクセス終了の情報を含むメモリアクセス情報をメモリアクセスユニット24から受け取る。メモリアクセス情報には、メモリアクセスIDと、終了したメモリアクセスがデータを取得したメモリを示すメモリ識別情報とが含まれる。
 メモリ識別情報は、メモリデバイス3を構成するメモリを一意に特定できる情報であればどのようなものでもよい。例えば、「L1キャッシュ」、「主記憶」といったテキストデータであってもよいし、メモリに割り当てられた識別子を付与しておいてもよい。メモリ識別情報は、例えばアクセス対象のデータと一緒にメモリアクセスユニット24に送付されてもよいし、データが存在した階層のメモリから直接、制御部41へと伝達されてもよい。
 なお、メモリアクセスユニット24は、メモリアクセスに要した時間からデータを取得したメモリを予測してもよい。具体的には、例えば、メモリアクセスユニット24は、メモリアクセスに要した時間が第1の閾値以下(例えば、5以下)のサイクル数の場合、データを取得したメモリをL1キャッシュと予測してもよい。また、例えば、メモリアクセスユニット24は、メモリアクセスに要した時間が所定の範囲(10以上50未満)のサイクル数の場合、データを取得したメモリをL2キャッシュと予測してもよい。また、例えば、メモリアクセスユニット24は、メモリアクセスに要した時間が第2の閾値以上(例えば、80以上)のサイクル数の場合、データを取得したメモリを主記憶と予測してもよい。
 図1ではメモリアクセスユニット24が制御部41にメモリ識別情報を送付するように記載されているが、制御部41がメモリアクセスの終了を検知できればどのような実現形態を用いてもよい。例えば、制御部41がメモリアクセスユニット24を定期的にチェックしてもよい。
 制御部41は、メモリアクセス終了の情報を取得すると、ステップS202~ステップS204にあるように、それぞれの情報を取得するために、グローバルカウンタ42、メモリアクセス情報テーブル記憶部43及びメモリ階層別情報テーブル記憶部44に対して、リクエストを送付する。
 (ステップS202)制御部41は、グローバルカウンタ42からは現在値情報を取得する。既述したように、現在値情報は、時間カウンタ421の値と命令数カウンタ422の値である。
 (ステップS203)制御部41は、ステップS202及びS204と並行して、メモリアクセス情報テーブル記憶部43から、開始時間情報と開始命令数情報を取得する。
 (ステップS204)制御部41は、ステップS202及びS203と並行して、メモリ階層別情報テーブル記憶部44から、ステップS201で取得したメモリ識別情報が示すメモリ、すなわちデータを取得したメモリについて、時間情報と命令数情報を取得する。
 なお、図7ではステップS202~S204の処理を同時に行うように図示されているが、これは同時処理が可能であることを示しているだけであり、必ずしも同時処理に限定されるものではない。例えば、ステップS202~S204の処理を逐次的に行ってもよい。
 (ステップS205)ステップS203及びステップS204の処理が完了すると、制御部41の時間情報取得部411は、対象メモリへのアクセス開始から終了までの時間(以下、メモリアクセス時間)を算出する。具体的には、例えば、制御部41の時間情報取得部411は、グローバルカウンタ42の時間カウンタ421の値から、開始時間情報の値を減算し、減算して得られた値をメモリアクセス時間とする。
 また、制御部41の演算量取得部412は、メモリアクセス中に実行された命令数(以下、メモリアクセス中命令数という)を算出する。また、例えば、制御部41の演算量取得部412は、グローバルカウンタ42の命令数カウンタ422の値から開始命令数情報の値を減算し、減算して得られた値をメモリアクセス中命令数とする。
 続いて、制御部41は、以下のようにして、対象メモリのメモリアクセス時間およびメモリアクセス中命令数に基づいて、メモリ階層別情報テーブルT2を更新する。
 (ステップS207)ステップS205及びステップS206の処理が完了すると、制御部41は、例えば、ステップS204で読み出した時間情報の値に、ステップS205で算出したメモリアクセス時間を加算し、加算して得られた値を更新値情報の一つである時間更新値とする。同様に、例えば、制御部41は、命令数情報の値に、ステップS205で算出したメモリアクセス中命令数を加算し、加算して得られた値を更新値情報の一つである命令数更新値とする。
 (ステップS208)次に、制御部41は、メモリ階層別情報テーブル記憶部44に記憶されたメモリ階層別情報テーブルT2において、ステップS201で取得したメモリ識別情報が示すメモリに対応する時間情報を時間更新値で上書きする。また、制御部41は、メモリ階層別情報テーブル記憶部44に記憶されたメモリ階層別情報テーブルT2において、ステップS201で取得したメモリ識別情報が示すメモリに対応する命令数情報を命令数更新値で上書きする。
 以上の処理により、対象メモリアクセスについて、メモリアクセス時間とメモリアクセス中命令数が取得される。また、メモリアクセスの積算時間とメモリアクセス中の命令数の積算値がメモリ毎にメモリ階層別情報テーブルT2に記憶される。
 以上、第1の実施形態において、時間情報取得部411は、メモリアクセス毎のメモリアクセスに要した時間を示すメモリアクセス時間情報を取得する。そして、演算量取得部412が、メモリアクセス毎のメモリアクセス中の演算量を示す演算量情報を取得する。
 そして、評価部413が、上記メモリアクセス情報と上記演算量情報とに基づいて、対象メモリへのアクセス開始から終了までの間における演算部22による演算性能を評価する。
 制御部41は、算出したメモリアクセス時間とメモリアクセス中命令数とに基づいて、対象メモリへのアクセス開始から終了までの間における演算部22による演算性能の一例として、プロセッサ1の実行効率を評価する。具体的には、例えば、制御部41は、このプロセッサ1の実行効率の一例として、メモリアクセス中の命令実行スループットを算出する。例えば、命令実行スループットをIPC(Instructions Per Cycle:単位サイクル当たりの命令数)で表現する場合、制御部41は、例えば、算出したメモリアクセス中命令数をメモリアクセス時間で除算し、除算した値をIPCとする。これにより、対象のメモリアクセスについて、IPCが算出される。 このような、メモリアクセス時間とメモリアクセス中命令数に基づく演算性能の算出は任意のタイミングで行ってもよい。例えば、ステップS205の後に行ってもよいし、Sステップ208の後に行ってもよい。
 このように、対象メモリへのアクセス開始から終了までの間における演算部22による演算性能を評価できるので、メモリアクセスがプロセッサの演算性能に与える影響の程度を精度良く評価することができる。
 なお、本実施形態では、メモリ毎に時間と命令数を個別の記憶領域に保持する方式を示したが、保持する情報はメモリ毎の演算性能であってもよい。例えば、制御部41は、メモリ階層別情報テーブルT2にメモリアクセス中命令数を個別に記録せず、2つの値を除算して得られるIPCを記録してもよい。
 図1に示したプロセッサ1では、CPUコア2、メモリデバイス3及びモニタリングユニット4を個別の機能ユニットとして例示した。しかし、これに限定されるものではなく、それぞれの機能ブロックを分割または結合してもよい。例えば、メモリアクセス情報テーブル記憶部43がメモリアクセスユニット24と結合されて実装されてもよいし、制御部41による制御機能が制御対象のカウンタまたはテーブルに分散されていてもよい。
 また、モニタリングユニット4の機能は、一般的なプロセッサに備えられている機能を利用し実装することも可能である。例えば、モニタリングユニット4の時間カウンタ421は、一般的なプロセッサが備えているサイクル数計測カウンタを利用してもよいし、制御部41の演算は、CPUコア2の第1演算器221または第2演算器222を利用してもよい。メモリアクセスユニット24は、メモリアクセス毎にタグ付けされて管理するため、この管理の際の識別情報に、メモリアクセス情報テーブル記憶部43のメモリアクセスIDを流用してもよい。
 また、モニタリングユニット4の機能には様々な実装形態をとりうる。全てハードウェアで実装してもよいし、全てソフトウェアで実装してもよいし、ハードウェアとソフトウェアの両方を用いて実装してもよい。ハードウェアとソフトウェアの両方を用いる実装として、例えば、図1のグローバルカウンタ42、メモリ階層別情報テーブル記憶部44、メモリアクセス情報テーブル記憶部43の情報記憶機能および情報更新機能をハードウェアで実装し、それらを読み取り演算性能を算出する制御部41の機能をソフトウェアで実装するといった形態が考えられる。
 (第2の実施形態)
 続いて、第2の実施形態について説明する。第2の実施形態は、第1の実施形態のモニタリングユニット4の利用例である。モニタリングユニットの計測情報から算出できるメモリアクセス中演算性能を利用すれば、特定のメモリがどの程度プロセッサの性能に影響を与えているか判明する。そこで、本実施形態におけるプロセッサは、レイテンシが異なる複数のメモリを使い分ける場合の制御情報としてメモリアクセス中演算性能を利用する。
 図8は、第2の実施形態におけるプロセッサ1bを示す概略ブロック図である。プロセッサ1bは、情報処理装置5、情報処理装置5及びメモリ7に接続された第1CPUコア100、情報処理装置5及びメモリ7に接続された第2CPUコア200、及びメモリ7を備える。
 情報処理装置5は、第1CPUコア100と第2CPUコア200への処理の割り当てを制御する。ここで、情報処理装置5は、インタフェース部52に接続された処理管理部51、処理管理部51と第1CPUコア100と第2CPUコア200に接続されたインタフェース部52、インタフェース部52と第1CPUコア100に接続されたモニタリングユニット53、及びインタフェース部52と第2CPUコア200に接続されたモニタリングユニット54を備える。
 処理管理部51は、処理に関する情報の管理や、第1CPUコア100及び第2CPUコア200に対する処理の割り当てを行う。「処理」とは、2つ以上の命令からなる命令列を指し、例えば、プロセスやスレッドや基本ブロックなどである。処理管理部20は、スケジューラ513に接続されたコア情報テーブル記憶部512及びコア情報テーブル記憶部512及びインタフェース部52に接続されたスケジューラ(割当部)513を備える。
 処理管理部51は主にソフトウェアで実装されるが、一部もしくはすべてがハードウェアで実装されてもよい。処理管理部51がソフトウェアで実装される場合、そのプログラムが図1の第1のコア100もしくは第2のコア200で実行されてもよいし、第1のコア100と第2のコア200以外の演算装置で実行されてもよい。
 コア情報テーブル記憶部512は、コア毎の情報を記録するテーブルである。
 スケジューラ513は、コア情報テーブル記憶部512の情報をもとに、インタフェース部52を介して、第1CPUコア100及び第2CPUコア200のいずれかに処理を割り当てる。その際、スケジューラ513は、例えば、演算部22による演算性能に加えてメモリアクセス時間に基づいて、いずれかのコアに処理を割り当てる。
 具体的には、例えば、スケジューラ513は、時間情報取得部411が取得した各メモリアクセス時間の比較結果と、評価部413が評価して得た各演算性能の比較結果とに基づいて、いずれかのコアに処理を割り当ててもよい。また、例えば、スケジューラ513は、時間情報取得部411が取得した対象メモリへのメモリアクセス時間と全メモリへのメモリアクセス時間との比較結果と、評価部413が評価して得た各演算性能の比較結果とに基づいて、いずれかのコアに処理を割り当ててもよい。
 なお、スケジューラ513は、演算部22の演算性能に少なくとも基づいて、プログラムを処理するコアを割り当ててもよい。より詳細には、スケジューラ513は、モニタリングユニット53の評価部が評価して得たメモリ毎の実行効率(例えば、IPC)を比較し、比較した結果に基づいて、いずれかのコアに処理を割り当ててもよい。
 また、スケジューラ513は、インタフェース部52を介して、第1CPUコア100及び第2CPUコア200からの情報を受け取り、コア情報テーブル記憶部512の内容を更新する。
 インタフェース部52は、モニタリングユニット53、モニタリングユニット54、第1CPUコア100及び第2CPUコア200との情報交換を行う入出力機能を有する。
 モニタリングユニット53は、第1の実施形態におけるモニタリングユニット4と同様の機能を有し、第1CPUコア100及びメモリ7を監視し、第1CPUコア100の実行効率に対するメモリアクセスの影響の程度を評価する。
 モニタリングユニット54は、第1の実施形態におけるモニタリングユニット4と同様の機能を有し、第2CPUコア200及びメモリ7を監視し、第2CPUコア200の実行効率に対するメモリアクセスの影響の程度を評価する。
 図9は、第2の実施形態におけるコア情報テーブルT3の一例である。同図のテーブルT3において、コアを識別するコアIDと、ローカルメモリ記録方式とが関連付けられている。本実施形態では、一例として、第1CPUコア100のコアIDが1であり、第2CPUコア200のコアIDが2である。ローカルメモリ記録方式に、コアローカルなメモリの種類が記録される。
 第1CPUコア100には、ローカルメモリにMRAMが用いられているため、MRAMであることを識別可能な情報(本例では文字列「MRAM」)が記録される。第2CPUコア200にはローカルメモリにSRAMが用いられているため、SRAMであることを識別可能な情報(本例では文字列「SRAM」)が記録される。
 本実施形態では、コアローカルなメモリの種類を文字列で表現してこれを記録することとしたが、スケジューラ23がコアの特徴を識別可能な情報であれば、文字列に限らない。例えば、MRAMが値「1」に対応し、SRAMに値「2」が対応することを仕様として予め決めておいてもよい。その場合、コア情報テーブル記憶部512が保持するコア情報テーブルT3において、コアID1のローカルメモリ記録方式として「1」が、コアID2のローカルメモリ記録方式として「2」が記録されてもよい。
 図9の例では、コア情報テーブル記憶部512が保持するコア情報テーブルT3にローカルメモリ記録方式のみを情報として記録されることを想定したが、それ以外の情報が記録されてもよい。例えば、動作周波数などのコアの演算能力が記録されてもよい。
 図10は、第2の実施形態におけるメモリ7を示す概略ブロック図である。メモリ7は、第1CPUコア100と接続されたL1命令キャッシュ101、第1CPUコア100と接続されたL1データキャッシュ102、L1命令キャッシュ101及びL1データキャッシュ102と接続されたL2キャッシュ103を備える。
 メモリ7は、第2CPUコア200と接続されたL1命令キャッシュ201、第2CPUコア200と接続されたL1データキャッシュ202、L1命令キャッシュ201及びL1データキャッシュ202と接続されたL2キャッシュ203を更に備える。メモリ7は、L2キャッシュ103及びL2キャッシュ203と接続されたバス300及びバス300と接続された主記憶400を備える。
 全てのL1キャッシュ(L1命令キャッシュ101及び201、L1データキャッシュ102及び202)は、一例として、SRAMで構成され、主記憶はMRAMで構成されている。一方、L2キャッシュについては、第1CPUコア100がアクセス可能なL2キャッシュ103はMRAMであるのに対し、第2CPUコア200がアクセス可能なL2キャッシュ203はSRAMである。
 以下では、アクセス可能なL2キャッシュがMRAMの第1CPUコア100をMRAMコアともいう。アクセス可能なL2キャッシュがSRAMの第2CPUコア200をSRAMコアともいう。
 なお、本実施形態では、一例として、MRAMで構成されたL2キャッシュ103はSRAMで構成されたL2キャッシュ203より大容量であるのものレイテンシが大きい(低速)。逆な観点からみれば、SRAMで構成されたL2キャッシュ203は、MRAMで構成されたL2キャッシュ103より小容量であるもののレイテンシが小さい(高速)である。
 第1CPUコア100と第2CPUコア200を使い分けるポリシーには様々なものが考えられる。単純な方法としては、MRAMコアとSRAMコアの両方でプログラムを実行し、性能が高いコアを利用する制御が考えられる。しかしながら、この方法では最適なCPUコアの選択に両方のCPUコアでの事前実行が必要となる。当然、片方のCPUコアのみの実行で最適なCPUコアが選択できることが望ましい。
 本実施形態では、片方のCPUコアのみの実行で最適なCPUコアを選択するポリシーの一例として、スケジューラ513は、例えば、MRAMコアで処理を実行する際の短所がプロセッサ全体として問題となっていなければMRAMコアが最適であると判断する。具体的には例えば、スケジューラ513は、まずMRAMコアに最初に処理を割り当てる。そして、MRAMから構成されるL2キャッシュの短所であるレイテンシがプロセッサ性能へと影響を与えていなければ、スケジューラ513は、MRAMコアでそのまま処理を実行させる。このような制御を行う場合に、スケジューラ513は、例えば、モニタリングユニット53及び54が測定したメモリ毎のアクセス中IPCを用いる。
 (第2の実施形態の第1の処理例)
 以下、第2の実施形態の第1の処理例について説明する。MRAMコアにおいて、MRAMから構成されるL2キャッシュのレイテンシが問題とならないのは、第1の条件である「L2キャッシュへのアクセス時間がプログラムの実行時間と比較し十分に小さい」場合、または第2の条件である「L2キャッシュへのアクセス時間がプログラムの実行時間と比較しそれなりに大きいものの、メモリアクセスレイテンシ隠蔽技術の効果により、L2キャッシュのレイテンシの影響でそれほど性能が低下していない」場合の2つである。
 スケジューラ513は、これらの条件を、モニタリングユニット53及び54の情報から判断可能である。スケジューラ513は、一例として、第1の条件を、メモリ階層別情報テーブルT2のL2キャッシュ時間情報がプログラムの全実行時間に占める割合から判断する。スケジューラ513は、第2の条件を、一例として、メモリ階層別情報テーブルT2から算出されるメモリ毎のアクセス中IPCから判断する。以下、それぞれの判断処理について例示する。
 まず、第1の条件である「L2キャッシュへのアクセス時間がプログラムの実行時間と比較し十分に小さい」場合の例として、MRAMコアであるプログラムを実行した後のメモリ階層別テーブルの一例を図11に示す。図11は、MRAMコアであるプログラムを実行した後のメモリ階層別テーブルの一例である。同図のメモリ階層別テーブルにおいて、時間と命令数が関連付けられている。Non-memは、メモリアクセスが無いときを表す。L1キャッシュは、L1キャッシュにアクセスしたときを表す。L2キャッシュは、L2キャッシュにアクセスしたときを表す。主記憶は、主記憶にアクセスしたときを表す。
 図11のテーブルを参照すると分かるように、L2キャッシュ以外(Non-mem、L1キャッシュ、主記憶)の時間合計は2200サイクルであるが、L2キャッシュへのアクセス時間は20サイクルとなっており、この時間合計に占めるL2キャッシュへのアクセス時間の割合が非常に小さい。従って、L2キャッシュアクセス中のIPCをチェックするまでもなくMRAM L2キャッシュのレイテンシが問題とならないことが分かり、対象プログラムのMRAMコアでの実行が最適であると判断できる。
 次に、第2の条件である「L2キャッシュへのアクセス時間がプログラムの実行時間と比較しそれなりに大きいものの、メモリアクセスレイテンシ隠蔽技術の効果により、L2キャッシュのレイテンシによりそれほど性能が低下していない」かどうかをチェックする例を示す。なお、一般的にメモリアクセスレイテンシが長い階層ほどCPU性能を低下させやすい。このため、メモリ毎のアクセス中IPCは、一般的に、メモリアクセスが無いときのIPCが最も高く、主記憶に近いメモリほどメモリアクセス中のIPCが低下する傾向にある。逆に言うと、モニタリングユニット53及び54で計測したL2キャッシュアクセス中のIPCが、メモリアクセスが無いときのIPCや、L1キャッシュアクセス中のIPCと変わらなければ、スケジューラ513は、L2キャッシュレイテンシ要因での性能低下が無いと判断可能である。
 あるプログラムをMRAMコアで実行した時のメモリ階層別テーブルが、例えば図12のようになった場合を考える。図12は、MRAMコアであるプログラムを実行した後のメモリ階層別テーブルの第2の例である。図11と同様に、同図のメモリ階層別テーブルにおいて、時間と命令数が関連付けられている。Non-memは、メモリアクセスが無いときを表す。L1キャッシュは、L1キャッシュにアクセスしたときを表す。L2キャッシュは、L2キャッシュにアクセスしたときを表す。主記憶は、主記憶にアクセスしたときを表す。
 この場合のメモリ階層毎のIPCを計算すると図13の表のようになる。図13は、図12のメモリ階層別テーブルの場合におけるメモリ毎のIPCを示す表である。図13の表の項目は、Non-memはメモリアクセスが無いときのIPCを表しており、その他のメモリの名前はそれぞれのメモリにアクセス中のIPCを表している。この例だと、L2キャッシュアクセス中のIPCは4であり、メモリアクセスが無いときのIPCおよびL1キャッシュアクセス中のIPCも4であるため、L2キャッシュのレイテンシによるプロセッサ1bの性能低下が無いことが分かる。つまり、この場合はMRAM L2キャッシュのレイテンシがプロセッサ1b全体の性能において問題とならないことが分かり、MRAMコアでの実行が最適であると判断できる。
 一方で、MRAMコアでプログラムを実行した結果、SRAMコアへのプログラムの再割り当てが必要なメモリ階層別テーブルの例を図14に示す。図14は、MRAMコアであるプログラムを実行した後のメモリ階層別テーブルの第3の例である。図11と同様に、同図のメモリ階層別テーブルにおいて、時間と命令数が関連付けられている。Non-memは、メモリアクセスが無いときを表す。L1キャッシュは、L1キャッシュにアクセスしたときを表す。L2キャッシュは、L2キャッシュにアクセスしたときを表す。主記憶は、主記憶にアクセスしたときを表す。
 この場合のメモリ毎のIPCを計算すると図15の表のようになる。図15は、図14のメモリ階層別テーブルの場合におけるメモリ毎のIPCを示す表である。図15に示すように、メモリアクセスが無いときのIPC及びL1キャッシュアクセス中のIPCは4であるが、L2キャッシュアクセス中のIPCは0.3であり、L2キャッシュのレイテンシによりプロセッサ1bの性能が低下していることが分かる。この場合、スケジューラ513は、最適化のため、MRAMコアからSRAMコアへと処理の再割り当てを行う。
 図16は、第2の実施形態におけるプロセッサ1bの処理の第1の例を示すフローチャートである。ここでは、最初に、処理が第1CPUコアに割り当てられていることを前提とする。プロセッサ1bは、所定の時刻が経過した場合に、以下の処理を実行する。ここで、所定の時刻は、例えば、サイクル数、実時間、またはプログラムの命令数である。例えば、プロセッサ1bは、1000命令実行したら、以下の処理を実行してもよい。
 (ステップS301)まず、モニタリングユニット53の制御部41は、メモリ階層別情報テーブル記憶部44に記憶されているメモリ階層別情報テーブルT2を参照して、メモリ毎のアクセス時間を取得する。
 (ステップS302)次に、モニタリングユニット53の制御部41は、メモリ階層別情報テーブル記憶部44に記憶されているメモリ階層別情報テーブルT2を参照して、メモリ毎の命令数を取得する。
 (ステップS303)次に、モニタリングユニット53の制御部41は、メモリ階層毎に、該当する命令数を該当するアクセス時間で除算することで、メモリ階層毎にIPCを取得する。
 (ステップS304)次に、スケジューラ513は、メモリ階層別情報テーブル記憶部44に記憶されているメモリ階層別情報テーブルT2内の全てのメモリのアクセス時間の総和を全実行時間として算出する。本例では、全実行時間をメモリ階層別情報テーブルT2の情報を利用し算出するが、全実行時間の算出方法はこれに限定されない。例えば、全実行時間をカウントするテーブルを別に保持してもよい。
 (ステップS305)次に、スケジューラ513は、例えば、L2キャッシュ103へのアクセス時間がプログラムの全実行時間に所定の割合(例えば、5%)を乗じた時間よりも短いか否か判定する。L2キャッシュ103へのアクセス時間がプログラムの全実行時間に所定の割合を乗じた時間よりも短い場合(YES)、スケジューラ513はステップS306へ進む。L2キャッシュ103へのアクセス時間がプログラムの全実行時間に所定の割合(例えば、5%)を乗じた時間より短くない場合(NO)、ステップS307に進む。
 (ステップS306)ステップS305で、L2キャッシュ103へのアクセス時間がプログラムの全実行時間に所定の割合を乗じた時間よりも短いと判定された場合、スケジューラ513は第1CPUコア(MRAMコア)100にそのまま処理を実行させ、その処理を終了する。
 (ステップS307)一方、ステップS305で、L2キャッシュ103へのアクセス時間がプログラムの全実行時間に所定の割合を乗じた時間よりも短くないと判定された場合、スケジューラ513は、L2キャッシュアクセス103中のIPCがL1データキャッシュ102アクセス中のIPCに所定の割合(例えば、10%)を乗じた値よりも小さいか否か判定する。
 L2キャッシュ103アクセス中のIPCがL1データキャッシュ102アクセス中のIPCの所定の割合よりも小さい場合(YES)、スケジューラ513はステップS308へ進む。L2キャッシュ103アクセス中のIPCがL1データキャッシュ102アクセス中のIPCに所定の割合を乗じた値よりも小さくない場合(NO)、スケジューラ513はステップS309へ進む。
 (ステップS308)ステップS307で、L2キャッシュ103アクセス中のIPCがL1データキャッシュ102アクセス中のIPCに所定の割合を乗じた値よりも小さいと判定された場合、スケジューラ513は第1CPUコア(MRAMコア)100から第2CPUコア(SRAMコア)200へと処理の再割り当てを行い、その処理を終了する。
 (ステップS309)ステップS307で、L2キャッシュ103アクセス中のIPCがL1データキャッシュ102アクセス中のIPCに所定の割合を乗じた値よりも小さくないと判定された場合、スケジューラ513は第1CPUコア(MRAMコア)100にそのまま処理を実行させ、その処理を終了する。
 なお、本例では、スケジューラ513は、最初に第1の条件をチェックし、第2の条件をチェックした。しかしながら、この順番に限定されるものではなく、スケジューラ513は、逆の順番でチェックを行ってもよい。
 以上、第2の実施形態の第1の処理例において、スケジューラ513は、MRAMからなる対象メモリへのアクセス時間と全実行時間との比較、及び対象メモリにアクセス中のIPCと他のメモリにアクセス中のIPCとの比較に基づいて、いずれかのコアに処理を割り当てる。
 これにより、対象メモリへのアクセス時間がプログラムの全実行時間よりも十分に小さい場合、MRAMコアに処理が割り当てられる。その場合、MRAMコアが実行してMRAMからなる対象メモリへアクセスしたとしても、アクセス時間がプログラムの全実行時間より十分に小さいので、処理性能の低下を抑えることができる。
 また、対象メモリにアクセス中のIPCが、他のメモリにアクセス中のIPCより小さい場合、対象メモリへのアクセスによって処理の実行効率が低下しているので、MRAMコアからSRAMコアへ処理の割り当てを変更することで、性能の低下を抑えることができる。一方、対象メモリにアクセス中のIPCが、他のメモリにアクセス中のIPCと比べてあまり低下していない場合、対象メモリへのアクセスによって処理の実行効率があまり低下していないので、MRAMコアが処理をそのまま実行しても、大きな性能の低下にはならない。
 よって、第2の実施形態の第1の処理例において、スケジューラ513は、メモリアクセスによる処理性能の低下を抑えることができるCPUコアに処理を割り当てることができるので、プロセッサの演算性能を向上させることができる。
 (第2の実施形態の第2の処理例)
 続いて、第2の実施形態の第2の処理例について説明する。第1の処理例では、スケジューラ513は、L2キャッシュ103へのアクセス時間と全実行時間との比較結果、及びL2キャッシュ103アクセス中のIPCとL1データキャッシュ102アクセス中のIPCとの比較結果に基づいて、いずれかのコアに処理を割り当てた。
 それに対し、第2の処理例では、スケジューラ513は、主記憶400へのアクセス時間、L2キャッシュ103へのアクセス時間、主記憶400アクセス中のIPC、及びL2キャッシュ103アクセス中のIPCを参照して、いずれかのコアに処理を割り当てる。
 これにより、L2キャッシュ103へのアクセス時間が処理効率低下の原因になっている場合、MRAMコアからSRAMコアへ処理の割り当てを変更することができる。その結果、アクセスするL2キャッシュがMRAMからSRAMへと変わり、L2キャッシュへのアクセス速度が向上するので、処理効率の向上が期待できる。また、主記憶400へのアクセス時間が処理効率低下の原因になっている場合、SRAMコアからMRAMコアへ処理の割り当てを変更することができる。その結果、アクセスするL2キャッシュがSRAMからMRAMへと変わり、L2キャッシュの容量が大きくなって、主記憶へのアクセス頻度が低下するので、処理効率の向上が期待できる。
 以下、具体的にスケジューラ513の処理を説明する。例えば、SRAMコアで実行中に、スケジューラ513は、例えば、主記憶400のIPC低下度とL2キャッシュ203のIPC低下度を算出する。具体的には、例えば、スケジューラ513は、主記憶400より上位の階層のキャッシュにアクセス中のIPCで主記憶400アクセス中のIPCを除算し、1からその除算後の値を減算した数値を主記憶400のIPC低下度として算出する。ここで、主記憶400より上位の階層のキャッシュにアクセス中のIPCは、例えば、L2キャッシュ203にアクセス中のIPC、L1キャッシュにアクセス中のIPCまたはメモリアクセスしない場合のIPC・若しくは処理全体のIPCである。また、例えば、スケジューラ513は、L2キャッシュ203より上位の階層のキャッシュにアクセス中のIPC(例えば、L1キャッシュにアクセス中のIPCまたはメモリアクセスしない場合のIPC・若しくは処理全体のIPC)でL2キャッシュにアクセス中のIPCを除算し、1からその除算後の値を減算した数値をL2キャッシュ203のIPC低下度として算出する。
 例えば、SRAMコアで実行中に、主記憶400へのアクセス時間と主記憶400のIPC低下度との積が、L2キャッシュ203へのアクセス時間とL2キャッシュ203のIPC低下度との積より大きい場合、L2キャッシュ203より主記憶400へのアクセスで待たされているので、スケジューラ513は、SRAMコアからMRAMコアへ処理の割り当てを変更する。ここで、主記憶400へのアクセス時間と主記憶400のIPC低下度との積は、主記憶400で待たされている時間に相当する係数である。L2キャッシュ203へのアクセス時間とL2キャッシュ203のIPC低下度との積は、L2キャッシュ203で待たされている時間に相当する係数である。
 これにより、上述したようにMRAMのL2キャッシュ103はSRAMのL2キャッシュ203より容量が大きいので、MRAMコアは、SRAMコアよりも主記憶400へのアクセス時間を少なくすることができ、主記憶400へのアクセスで待たされている時間を短くすることができる。その結果、スケジューラ513は、処理の実行効率を向上させることが期待できる。
 また、例えば、スケジューラ513は、現在処理を実行しているコアがアクセス可能な対象L2キャッシュへのアクセス時間の全実行時間に対する割合、及び全実行時間に対する主記憶400アクセス時間の割合が、両方とも閾値より大きいか否か判定する。両方とも閾値より大きい場合、スケジューラ513は、対象L2キャッシュへのアクセス時間と対象L2キャッシュのIPC低下度との積と、主記憶400へのアクセス時間と主記憶400のIPC低下度との積とを比較する。対象L2キャッシュへのアクセス時間と対象L2キャッシュのIPC低下度との積の方が小さい場合、対象L2キャッシュより主記憶400で待たされていることになる。一方、主記憶400へのアクセス時間と主記憶400のIPC低下度との積の方が小さい場合、主記憶400より対象L2キャッシュで待たされていることになる。
 ここで、一例として、最初にMRAMコアに処理が割り当てられている場合を前提とする。例えば、対象L2キャッシュがMRAMで構成されたL2キャッシュ103の場合を想定する。主記憶400へのアクセス時間と主記憶400のIPC低下度との積よりL2キャッシュ103へのアクセス時間とL2キャッシュ103のIPC低下度との積の方が大きい場合、主記憶400よりL2キャッシュ103へのアクセスで待たされている場合、スケジューラ513は、MRAMコアからSRAMコアへ処理の割り当てを変更する。
 これにより、SRAMコアに処理が割り当てられることで、SRAMコアがアクセスするL2キャッシュ203がL2キャッシュ103より高速であるので、L2キャッシュへのアクセスで待たされている時間が短縮される。その結果、スケジューラ513は、処理の実行効率を向上させることが期待できる。
 一方、一例として、最初にSRAMコアに処理が割り当てられている場合を前提とする。例えば、対象L2キャッシュがSRAMで構成されたL2キャッシュ203の場合を想定する。L2キャッシュ203へのアクセス時間とL2キャッシュ203のIPC低下度との積より主記憶400へのアクセス時間と主記憶400のIPC低下度との積の方が大きい場合、L2キャッシュ203より主記憶400へのアクセスで待たされている場合、スケジューラ513は、SRAMコアからMRAMコアへ処理の割り当てを変更する。これにより、MRAMコアに処理が割り当てられることで、MRAMコアがアクセスするL2キャッシュ103の容量がL2キャッシュ203の容量より大きいので、主記憶400へアクセスする回数が少なくなるので、主記憶400へのアクセスで待たされている時間を短くすることができる。そのため、主記憶400アクセス中のIPCの値が改善される。その結果、スケジューラ513は、処理の実行効率向上が期待できる。
 図17は、第2の実施形態におけるプロセッサ1bの処理の第2の処理例を示すフローチャートである。プロセッサ1bは、所定の時刻が経過した場合に、以下の処理を実行する。ここで、所定の時刻は、例えば、サイクル数、実時間、またはプログラムの命令数である。例えば、プロセッサ1bは、1000命令実行したら、以下の処理を実行してもよい。
 ステップS401~S403の処理は、図16のステップS301~S303と同一であるので、その説明を省略する。
 (ステップS406)次に、スケジューラ513は、第1CPUコアで処理実行中の場合は全実行時間に対する対象L2キャッシュへのアクセス時間が閾値より大きいかをチェックする。また、スケジューラ513は、第2CPUコアで処理実行中の場合は、全実行時間に対する主記憶400へのアクセス時間が閾値より大きいか否か判定する。第1CPUコアで処理実行中で、全実行時間に対する対象L2キャッシュへのアクセス時間が閾値より大きい場合、もしくは、第2CPUコアで処理実行中で、全実行時間に対する主記憶400へのアクセス時間が閾値より大きい場合に、スケジューラ513は、ステップS408に進む。これらの条件に当てはまらない場合、ステップS407に進む。
 (ステップS407)実行中の処理がステップS406の条件に当てはまらない場合、スケジューラ513は、現在処理を実行しているコアにそのまま処理を実行させる。
 (ステップS408)スケジューラ513は、主記憶400へのアクセス時間と主記憶400のIPC低下度との積(以下、主記憶積という)が対象L2キャッシュへのアクセス時間と対象L2キャッシュのIPC低下度との積(以下、対象L2積という)より大きいか否か判定する。主記憶積がL2積より大きい場合(YES)、スケジューラ513は、ステップS409に進む。一方、主記憶積が対象L2積以下の場合(NO)、スケジューラ513は、ステップS412に進む。
 (ステップS409)ステップS408で主記憶積が対象L2積より大きいと判定された場合、対象L2キャッシュより主記憶400へのアクセスで待たされている。その場合、スケジューラ513は、第2CPUコア200で実行中か否か判定する。第2CPUコア200で実行中の場合(YES)、スケジューラ513はステップS410へ進む。第2CPUコア200で実行中でない場合(NO)、スケジューラ513はステップS411へ進む。
 (ステップS410)ステップS409で第2CPUコア200で実行中と判定された場合、スケジューラ513は、処理の割り当てを第2CPUコア200から第1CPUコア100へ切り替える。これにより、第1CPUコア(MRAMコア)100がアクセスするL2キャッシュ103の容量がL2キャッシュ203の容量より大きいので、主記憶400へアクセスする回数が少なくなるので、主記憶400へのアクセスで待たされている時間を短くすることができる。そのため、主記憶400アクセス中のIPCの値が改善される。その結果、スケジューラ513は、処理の実行効率を向上させることが期待できる。
 (ステップS411)ステップS409で第2CPUコア200で実行中でないと判定された場合、スケジューラ513は、第1CPUコア100に処理をそのまま実行させる。
 (ステップS412)ステップS408で主記憶積が対象L2積以下であると判定された場合、主記憶400より対象L2キャッシュへのアクセスで待たされている。その場合、スケジューラ513は、第1CPUコア100で実行中か否か判定する。第1CPUコア100で実行中の場合(YES)、スケジューラ513はステップS413へ進む。一方、第1CPUコア100で実行中でない場合(NO、スケジューラ513はステップS414へ進む。
 (ステップS413)ステップS412で第1CPUコア100で実行中と判定された場合、スケジューラ513は、第1CPUコア100から第2CPUコア200へ処理の割り当てを変更する。これにより、第2CPUコア(SRAMコア)200がアクセスするL2キャッシュ203がL2キャッシュ103より高速であるので、L2キャッシュへのアクセスで待たされている時間が短縮される。その結果、スケジューラ513は、処理の実行効率を向上させることが期待できる。
 (ステップS414)ステップS412で第1CPUコア100で実行中でないと判定された場合、スケジューラ513は、第2CPUコア200に処理をそのまま実行させる。
 以上、第2の実施形態の第2の処理例において、スケジューラ513は、主記憶400へのアクセス時間とL2キャッシュ103へのアクセス時間との比較結果と、主記憶400へのアクセス時間と閾値との比較及びL2キャッシュ103へのアクセス時間と閾値との比較とのうち少なくとも一方と、主記憶400アクセス中のIPCとL2キャッシュ103アクセス中のIPCとの比較結果とに基づいて、どのコアに処理を割り当てるか決定する。
 これにより、L2キャッシュ103へのアクセス時間が処理効率低下の主要因になっている場合、MRAMコアからSRAMコアへ処理の割り当てを変更することができる。その結果、アクセスするL2キャッシュがMRAMからSRAMへと変わり、L2キャッシュへのアクセス速度が向上するので、処理効率向上が期待できる。また、主記憶400へのアクセス時間が処理効率低下の主要因になっている場合、SRAMコアからMRAMコアへ処理の割り当てを変更することができる。その結果、アクセスするL2キャッシュがSRAMからMRAMへと変わり、L2キャッシュの容量が大きくなって、主記憶へのアクセス頻度が低下するので、処理効率向上が期待できる。
 (第2の実施形態における第3の処理例)
 続いて、第2の実施形態における第3の処理例について説明する。第3の処理例では、スケジューラ513は、MRAMコアでの実行情報と、MRAMコアでの実行情報から予測されるSRAMコアでの実行情報とを比較することで、処理を割り当てるコアを決定する。
 より詳細には、スケジューラ513は、各コアが互いに異なるメモリ系統で対応する階層のメモリにアクセスする際のレイテンシによるオーバーヘッドそれぞれと、MRAMコアからSRAMコアへの処理の移動に伴う予測キャッシュミス増加回数と、処理の割り当ての変更に必要な時間であるマイグレーションオーバーヘッドとに基づいて、いずれかのコアに処理を割り当てる。ここで、複数のコアそれぞれは、階層状に接続された複数のメモリを含む複数のメモリ系統のうち互いに異なるメモリ系統に含まれるメモリにアクセス可能である。また、各コアが互いに異なるメモリ系統で対応する階層のメモリは、一例として、L2キャッシュ103とL2キャッシュ203である。
 以下、スケジューラ513の処理の具体例について説明する。ここで、一例として、最初にMRAMコアに処理が割り当てられていることを前提とする。その前提の下で、スケジューラ513は、例えば、MRAMコアが実行を開始した時から所定の時間経過後に、「MRAMコアのL2キャッシュレイテンシによるオーバーヘッド」から「SRAMコアでのL2キャッシュミスによるオーバーヘッド」を差分して、差分値を得る。そして、スケジューラ513は、例えば、差分値がマイグレーションオーバーヘッド未満であれば、そのままMRAMコアで実行し、差分値がマイグレーションオーバーヘッド以上であれば、SRAMコアへと処理の再割り当てを行う。これにより、スケジューラ513は、マイグレーションオーバーヘッドを考慮して処理の割り当てを切り替えるか決定するので、処理割り当て変更による処理効率向上の効果を、処理割り当て変更によるオーバーヘッドが上回る状態の発生頻度を抑制することが出来る。
 なお、マイグレーションオーバーヘッドは、プログラム実行コア移動の頻度を調節する閾値である。マイグレーションオーバーヘッドは、処理実実行前にあらかじめ与えられた定数であってもよいし、実行履歴等から算出される値であってもよい。マイグレーションオーバーヘッドは、プログラム実行コア移動に要するオーバーヘッドをスケジューラ513によって算出された値であってもよい。本実施形態では、一例として、マイグレーションオーバーヘッドは、プログラムの全実行時間の5%として、プログラム実行前に予め与えられている。
 スケジューラ513は、例えば、MRAMコアのL2キャッシュレイテンシによるオーバーヘッドOH_L2Mを、次の式(1)で算出する。
 OH_L2M = MRAM総アクセスレイテンシ×IPC低下度 …(1)
 MRAM総アクセスレイテンシは、処理開始時から所定の時間経過時のL2キャッシュ103のアクセスレイテンシの積算値である。スケジューラ513が、例えば、総アクセスレイテンシとして、例えば、図14のモニタリングユニット53のL2キャッシュへのアクセス時間の値を用いると、総アクセスレイテンシは1000である。このように、スケジューラ513は、例えば、メモリ階層別テーブルT2のL2キャッシュへのアクセス時間の値を、MRAM総アクセスレイテンシとしてもよい。
 IPC低下度は例えばモニタリングユニット53を利用し算出できる。スケジューラ513は、例えば、モニタリングユニット53の情報を基に、L2キャッシュアクセス中のIPCと、L2キャッシュより上位階層キャッシュの情報を含むIPC(例えば、L1キャッシュのIPC、またはメモリアクセスしない場合のIPC、または処理全体のIPC)を比較することでIPC低下度を算出する。具体的には、例えば、スケジューラ513は、L1キャッシュのIPCでL2キャッシュアクセス中のIPCを除算し、1からその除算後の値を減算した値をL2キャッシュについてのIPC低下度として算出する。
 なお、総アクセスレイテンシの取得方法は、これに限定されない。例えば、静的にMRAM L2キャッシュへのアクセスレイテンシが与えられており、スケジューラ513は、プログラム実行中に取得されるL2キャッシュアクセス回数とMRAM L2キャッシュへのアクセスレイテンシとを乗算することで総アクセスレイテンシを算出してもよい。
 図11から算出された図12にあるように、L2キャッシュアクセス中のIPCは0.3である。L2キャッシュより上位の階層のIPCはL1キャッシュの値を用いてもNon-memの値を用いてもよいが、本実施形態では、スケジューラ513は、一例としてNon-memの値である4を用いる。スケジューラ513は、例えば、これらの値から、IPC低下度として0.925(=1-(0.3÷4))を算出する。そして、スケジューラ513は、例えば、MRAMコアのL2キャッシュレイテンシによるオーバーヘッドMRAMコアのL2キャッシュレイテンシによるオーバーヘッドとして、925(=1000×0.925)を算出する。
 スケジューラ513は、例えば、SRAMコアでのL2キャッシュミスによるオーバヘッドOH_L2Sを、次の式(2)で算出する。なお、MRAMコアでプログラム実行中にSRAMコアの実行情報を取得するには、MRAMコア実行情報を基にしたSRAMコア実行情報の予測が必要となる。
 OH_L2S = 主記憶アクセスレイテンシ×SRAMコアによるL2キャッシュミスの増加回数予測値 …(2)
 主記憶アクセスレイテンシは、主記憶への1回のアクセスに要するレイテンシである。スケジューラ513は、第1CPUコア(MRAMコア)100に接続されたモニタリングユニット53のメモリ階層別テーブルT2に格納された主記憶400へのアクセス時間を主記憶アクセス回数で除算し主記憶アクセスレイテンシとしてもよい。ここで、メモリ階層別テーブルT2に記録されている主記憶400へのアクセス時間は1回以上の主記憶400へのメモリアクセス時間を積算された積算値である。また、静的に主記憶400へのアクセスレイテンシが与えられてもよい。本実施形態では、一例として、スケジューラ513は、主記憶レイテンシとして200を用いる。
 スケジューラ513は、SRAMコアによるL2キャッシュミスの増加回数予測値を、MRAMコアにおけるキャッシュのLRU(Least Recently Used )アクセス情報を利用することで予想することが可能である。まず、以下で、一般的なキャッシュについて説明すると共にLRUの基本動作を示す。
 図18は、第2の実施形態におけるキャッシュメモリのイメージ図の一例である。キャッシュメモリは、図18に示すように、メモリアドレスのハッシュ値毎にセットを保持する。ウェイは、同一セットのデータを保持可能な上限数である。図18の領域R181は、セットのインデックス情報(タグメモリアレイ)をイメージとして表したもので、領域R182は、ウェイのインデックス情報(タグメモリアレイ)をイメージとして表したものである。また、領域R183は、データを格納するキャッシュメモリ(データメモリアレイ)そのものを表したものである。
 メモリアドレスとセットの対応関係を決定するハッシュ関数は、様々な方式が存在する。本実施形態では、一例として、セット数が10であるため、アドレスの上位3ビットの値でセットが決定される。例えば、32ビットアドレス「01000001010101010101010101010101」のデータは上位ビットが「010」であるため、セット3に格納される。
 同一セットのデータのうちどのデータを残しておくかを決定する一般的な方式が前述のLRUである。LRUではウェイ1からウェイ8の順に直近にアクセスされたデータが配置される。例えば、ウェイ1に配置されているデータはウェイ2に配置されているデータより直近に参照されている。このようなデータ配置は、アクセスしたデータをウェイ1に配置し、それ以外のデータを1ウェイずらすことで実現する。また、新たなデータがキャッシュに配置される場合には、ウェイ8のデータをキャッシュから下位階層に移動する。
 図18のような一般的なキャッシュでは、セット数が同一であるキャッシュは、同一ウェイ番号のキャッシュアクセスの振る舞いも同一のものとなる。同一セット数の、SRAM 1MB 4wayのキャッシュ、および、MRAM 4MB 16wayのキャッシュを例とした場合、SRAM 4wayまでのアクセス履歴と、MRAM 4wayまでのアクセス履歴は同一のものとなる。逆に言うと、MRAM 4MBのway5~way16へのアクセスは、MRAM 4MBではキャッシュヒットとなるものの、SRAM 1MBではミスとなるアクセスである。
 したがって、スケジューラ513は、例えば、MRAMコアでの実行中に、SRAMコアのキャッシュに存在しないウェイへのアクセスをカウントすることにより、SRAMコアでのキャッシュミス増加回数を取得する。その際、スケジューラ513は、このウェイ毎のアクセスカウントを、ウェイ毎に用意されたアクセスカウンターを用いて取得してもよいし、複数のウェイ毎に用意されたアクセスカウンターを用いて取得してもよい。
 本実施形態では、一例として、取得されたSRAMコアでのアクセス増加回数予測値が3である。この場合、SRAMコアによるL2キャッシュミスによるオーバーヘッドは600(=200×3)である。
 スケジューラ513は、例えば、上記のように算出された、MRAMコアのL2キャッシュレイテンシによるオーバーヘッドからSRAMコアによるL2キャッシュミスによるオーバーヘッドを減算する。本例では、減算して得られる減算値は、325(=925-600)である。
 ここで、一例として、マイグレーションオーバーヘッドが、プログラムの開始から終了までにかかる時間(以下、プログラムの全実行時間という)の5%であることを前提とする。その前提で、例えば、プログラムの全実行時間が10000サイクルであった場合、算出された減算値325はマイグレーションオーバーヘッド500(=10000×5/100)未満のため、スケジューラ513は、MRAMコアにそのまま処理を行わせる。
 一方、例えば、プログラムの全実行時間が5000サイクルであった場合、算出された減算値325はマイグレーションオーバーヘッド250(=5000×5/100)以上のため、スケジューラ513は、処理の割り当てをMRAMコアからSRAMコアへ切り替える。
 図19は、第2の実施形態におけるプロセッサ1bの処理の第3の処理例を示すフローチャートである。
 ステップS501~S503の処理は、図16のステップS301~S303と同一であるので、その説明を省略する。
 (ステップS504)次に、スケジューラ513は、IPC低下度を算出する。
 (ステップS505)次に、スケジューラ513は、MRAMコアのL2キャッシュレイテンシによるオーバーヘッドを算出する。
 (ステップS506)次に、スケジューラ513は、SRAMコアによるL2キャッシュミスの増加回数予測値を算出する。
 (ステップS507)次に、スケジューラ513は、SRAMコアによるL2キャッシュミスによるオーバーヘッドを算出する。
 (ステップS508)次に、スケジューラ513は、MRAMコアのL2キャッシュレイテンシによるオーバーヘッドからSRAMコアによるL2キャッシュミスによるオーバーヘッドを減算し、減算した得た減算値を取得する。
 (ステップS509)次に、スケジューラ513は、マイグレーションオーバヘッドを算出する。本例では、静的に設定されたマイグレーションオーバヘッドを用いるため、スケジューラ513は、マイグレーションオーバヘッドを格納している記憶領域から読み出しを行う。
 (ステップS510)次に、スケジューラ513は減算値がマイグレーションオーバーヘッド以上か否か判定する。減算値がマイグレーションオーバーヘッド以上である場合(YES)、スケジューラ513はステップS511に進む。減算値がマイグレーションオーバーヘッド以上でない場合(NO)、スケジューラ513はステップS512に進む。
 (ステップS511)ステップS510で減算値がマイグレーションオーバーヘッド以上であると判定された場合、スケジューラ513は、第1CPUコア(MRAMコア)100から第2CPUコア(SRAMコア)200へ処理の割り当てを変更する。
 (ステップS512)次に、ステップS510で減算値がマイグレーションオーバーヘッド以上でないと判定された場合、スケジューラ513は、第1CPUコア100に処理をそのまま実行させる。
 以上、第2の実施形態における第3の処理において、スケジューラ513は、例えば、MRAMコアが実行を開始した時から所定の時間経過後に、「MRAMコアのL2キャッシュレイテンシによるオーバーヘッド」から「SRAMコアでのL2キャッシュミスによるオーバーヘッド」を差分して、差分値を得る。そして、スケジューラ513は、例えば、この差分値がマイグレーションオーバーヘッド未満であれば、そのままMRAMコアで実行し、この差分値がマイグレーションオーバーヘッド以上であれば、MRAMコアからSRAMコアへ処理の割り当てを変更する。これにより、スケジューラ513は、マイグレーションオーバーヘッドを考慮して処理の割り当てを切り替えるか決定するので、処理割り当て変更による処理効率向上の効果が、処理割り当て変更によるオーバーヘッドを上回る発生頻度の向上を期待出来る。
 なお、上述した第3の処理は一例であって、これに限ったものではない。スケジューラ513は、上記の差分値とマイグレーションオーバーヘッドを比較して、この比較結果に基づいて、いずれかのコアに処理を割り当てたが、これに限らず、スケジューラ513は、第1の性能低下度と第2の性能低下度との比較結果から、いずれかのコアに処理を割り当ててもよい。
 以上、第2の実施形態における第3の処理をまとめると以下のようになる。第1CPUコア100または第2CPUコア200への演算割り当てを行うことにより、処理毎に第1CPUコア100がアクセス可能な第1のメモリと第2CPUコア200がアクセス可能で第1のメモリよりも小容量かつレイテンシが低速な第2のメモリを選択可能である。
 そして、評価部413は、第1のコアでの処理実行中に、上記第1のメモリに含まれる複数のメモリそれぞれ毎に演算性能を評価する。
 そして、スケジューラ513は、評価した演算性能を利用して 上記第1のメモリのレイテンシによる第1の性能低下度を特定し、上記第1のメモリのLRUアクセス情報から、第2のメモリでのデータ非保持による第2の性能低下度を特定し、この第1の性能低下度とこの第2の性能低下度とを比較し、この比較結果に基づいて、いずれかのコアに処理を割り当てる。
 なお、評価部413が評価した演算性能は、様々な用途に用いることができる。例えば、第2の実施形態のように、OS(Operating System)が評価部から得られる演算性能(例えば、IPC低下度)を参照し、適切な処理のコア割り当ての判断情報として利用してもよい。また、プログラマーが、評価部から得られる演算性能(例えば、IPC低下度)を参照して、対象処理(ソフトウェア)のデータ構造またはアルゴリズム改良して、最適化を行ってもよい。
 また、モニタリングユニットの実装形態には様々なものが考えられるが、その1つとしてプロセッサの実行効率を計測するパフォーマンスカウンタ(パフォーマンスモニタ)機能が考えられる。パフォーマンスカウンタの機能として、例えば、上述した各実施形態における時間情報取得部411、演算量取得部412及び評価部413を全て備えてもよいし、時間情報取得部411、演算量取得部412のみを備えてもよい。つまり、パフォーマンスカウンタの値として、評価部413の出力結果を利用する形態でもよいし、パフォーマンスカウンタの値として時間情報取得部と演算量取得部の出力結果を利用する形態でも良い。
 なお、複数の装置を備えるシステムが、各実施形態のモニタリングユニットまたは情報処理装置の各処理を、それらの複数の装置で分散して処理してもよい。
 また、各実施形態のモニタリングユニットまたは情報処理装置の各処理を実行するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、当該記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより、モニタリングユニットまたは情報処理装置に係る上述した種々の処理を行ってもよい。
 なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものであってもよい。また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、フラッシュメモリ等の書き込み可能な不揮発性メモリ、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
 さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(例えばDRAM(Dynamic Random Access Memory))のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
 以上、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
1 プロセッサ
2 CPUコア
21 命令発行器
22 演算部
221 第1演算器
222 第2演算器
24 メモリアクセスユニット
3 メモリ
31 L1キャッシュ
32 L2キャッシュ
33 主記憶
4 モニタリングユニット(情報処理装置)
41 制御部
411 時間情報取得部
412 演算量取得部
413 評価部
414 第1記憶処理部
415 第2記憶処理部
42 グローバルカウンタ
421 時間カウンタ
422 命令数カウンタ
43 メモリアクセス情報テーブル記憶部
44 メモリ階層別情報テーブル記憶部
5 情報処理装置
51 処理管理部
512 コア情報テーブル記憶部
513 スケジューラ(割当部)
52 インタフェース部
53 モニタリングユニット
54 モニタリングユニット
7 メモリ
100 第1CPUコア
101 L1命令キャッシュ
102 L1データキャッシュ
103 L2キャッシュ
200 第2CPUコア
201 L1命令キャッシュ
202 L1データキャッシュ
203 L2キャッシュ
300 バス
400 主記憶

Claims (13)

  1.  時間情報取得部が、命令発行器による命令に従ったメモリアクセスユニットによる対象メモリへのアクセスの開始とこのアクセスの終了とを検知し、この検知に基づいてこのアクセスの開始から終了までの時間をメモリアクセス時間として取得する時間情報取得ステップと、
     演算量取得部が、前記メモリアクセスユニットが前記対象メモリへアクセスを開始した時から終了した時までに、前記命令発行器による命令に基づく演算量を算出する演算量取得ステップと、
     評価部が、前記メモリアクセス時間と前記演算量とに基づいて、前記アクセス開始から終了までの間における前記演算部による演算性能を評価する評価ステップと、
     を有する情報処理方法。
  2.  前記対象メモリは、階層状に接続された複数のメモリのうちの一つのメモリである
     請求項1に記載の情報処理方法。
  3.  前記対象メモリは、階層状に接続された複数のメモリそれぞれであり、
     前記時間情報取得ステップにおいて、前記時間情報取得部が、前記メモリ毎に前記メモリアクセス時間を取得し、
     前記演算量取得ステップにおいて、前記演算量取得部が、前記メモリ毎に前記演算量を算出し、
     前記評価ステップは、前記評価部が、前記メモリ毎に、前記メモリアクセス時間と前記演算量とに基づいて、そのメモリへのアクセス開始から終了までの間における前記演算部による演算性能を評価する
     請求項1に記載の情報処理方法。
  4.  前記演算量は、発行、コミットまたは実行された命令数であり、
     前記時間情報取得ステップにおいて、前記時間情報取得部が、メモリアクセス開始時の時刻とメモリアクセス終了時の時刻を比較することで、前記メモリアクセス時間を算出し、
     前記演算量取得ステップにおいて、前記演算量取得部が、メモリアクセス開始時の命令数とメモリアクセス終了時の前記命令数を比較することで、前記アクセス開始から終了までの間の前記命令数を算出する
     請求項1に記載の情報処理方法。
  5.  第1記憶処理部が、プログラムの任意の時点からの時間を計数可能な時間カウンタが計数したメモリアクセス開始時の前記時間カウンタの値を開始時間情報として記憶部に記憶させるステップと、
     第2記憶処理部が、プログラムの任意の時点からの前記命令数を計数可能な命令数カウンタが計数したメモリアクセス開始時の前記命令数カウンタの値を開始命令数情報として記憶部に記憶させるステップと、
     を更に有し、
     前記時間情報取得ステップにおいて、
     前記記憶部に記憶された開始時間情報を取得し、メモリアクセス終了時の前記時間カウンタの値を取得し、前記取得した開始時間情報と前記取得した時間カウンタの値との差を、前記対象メモリのメモリアクセス時間として取得し、
     前記演算量取得ステップにおいて、
     前記記憶部に記憶された開始命令数情報を取得し、メモリアクセス終了時の前記命令数カウンタの値を取得し、前記取得した開始命令数情報と前記取得した命令数カウンタの値との差を、前記対象メモリの前記アクセス開始から終了までの間の前記命令数として取得する
     請求項4に記載の情報処理方法。
  6.  前記評価ステップにおいて、前記評価部は前記命令発行器と前記メモリアクセスユニットと前記演算部とを備える複数のコアそれぞれ毎に、前記演算性能を評価し、
     割当部が、前記演算性能の比較に少なくとも基づいて、いずれかのコアに処理を割り当てる割当ステップを更に有する
     請求項1に記載の情報処理方法。
  7.  前記評価ステップは、前記評価部は、階層状に接続された複数のメモリそれぞれ毎に前記演算性能を評価し、
     前記割当ステップにおいて、割当部が、前記評価部が評価して得たメモリ毎の演算性能を比較し、比較した結果に基づいて、いずれかのコアに処理を割り当てる
     請求項6に記載の情報処理方法。
  8.  前記割当ステップにおいて、
     割当部は、前記演算部による演算性能に加えて前記メモリアクセス時間に基づいて、いずれかのコアに処理を割り当てる
     請求項6に記載の情報処理方法。
  9.  前記時間情報取得ステップにおいて、前記時間情報取得部が、階層状に接続された複数のメモリそれぞれ毎に前記メモリアクセス時間を取得し、
     前記評価ステップは、前記評価部は、前記複数のメモリそれぞれ毎に前記演算性能を評価し、
     前記割当ステップにおいて、前記割当部は、前記時間情報取得部が取得したメモリアクセス時間と前記評価部が評価して得た演算性能から得られる性能低下度との積を前記メモリ間で比較し、この比較結果に基づいて、いずれかのコアに処理を割り当てる
     請求項8に記載の情報処理方法。
  10.  第1のコアまたは第2のコアへの演算割り当てを行うことにより、演算毎に前記第1のコアがアクセス可能な第1のメモリと前記第2のコアがアクセス可能で前記第1のメモリよりも小容量かつレイテンシが低速な第2のメモリを選択可能であり、
     前記評価ステップにおいて、前記評価部は、前記第1のコアでの処理実行中に、前記第1のメモリに含まれる複数のメモリそれぞれ毎に演算性能を評価し、
     前記割当ステップにおいて、前記割当部は、評価した演算性能を利用して前記第1のメモリのレイテンシによる第1の性能低下度を特定し、
     前記第1のメモリのLRUアクセス情報から、前記第2のメモリでのデータ非保持による第2の性能低下度を特定し、
     前記第1の性能低下度と前記第2の性能低下度とを比較し、この比較結果に基づいて、いずれかのコアに処理を割り当てる
     請求項8に記載の情報処理方法。
  11.  命令発行器による命令に従ったメモリアクセスユニットによる対象メモリへのアクセスの開始とこのアクセスの終了とを検知し、この検知に基づいてこのアクセスの開始から終了までの時間をメモリアクセス時間として取得する時間情報取得部と、
     前記メモリアクセスユニットが前記対象メモリへアクセスを開始した時から終了した時までに、前記命令発行器による命令に基づく演算量を算出する演算量取得部と、
     を備える情報処理装置に、
     前記情報処理装置から取得する前記メモリアクセス時間と前記演算量とに基づいて、前記アクセス開始から終了までの間における前記演算部による演算性能を評価する評価ステップ
     を実行させるためのプログラム。
  12.  命令発行器による命令に従ったメモリアクセスユニットによる対象メモリへのアクセスの開始とこのアクセスの終了とを検知し、この検知に基づいてこのアクセスの開始から終了までの時間をメモリアクセス時間として取得する時間情報取得部と、
     前記メモリアクセスユニットが前記対象メモリへアクセスを開始した時から終了した時までに、前記命令発行器による命令に基づく演算量を算出する演算量取得部と、
     前記メモリアクセス時間と前記演算量とに基づいて、前記アクセス開始から終了までの間における前記演算部による演算性能を評価する評価部と、
     を備える情報処理装置。
  13.  コンピュータに、
     命令発行器による命令に従ったメモリアクセスユニットによる対象メモリへのアクセスの開始とこのアクセスの終了とを検知し、この検知に基づいてこのアクセスの開始から終了までの時間をメモリアクセス時間として取得する時間情報取得ステップと、
     前記メモリアクセスユニットが前記対象メモリへアクセスを開始した時から終了した時までに、前記命令発行器による命令に基づく演算量を算出する演算量取得ステップと、
     前記メモリアクセス時間と前記演算量とに基づいて、前記アクセス開始から終了までの間における前記演算部による演算性能を評価する評価ステップと、
     を実行させるためのプログラム。
PCT/JP2014/070750 2013-08-07 2014-08-06 情報処理方法、情報処理装置及びプログラム WO2015020092A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/014,673 US10025504B2 (en) 2013-08-07 2016-02-03 Information processing method, information processing apparatus and non-transitory computer readable medium

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2013-164584 2013-08-07
JP2013164584A JP6166616B2 (ja) 2013-08-07 2013-08-07 情報処理方法、情報処理装置及びプログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US15/014,673 Continuation US10025504B2 (en) 2013-08-07 2016-02-03 Information processing method, information processing apparatus and non-transitory computer readable medium

Publications (1)

Publication Number Publication Date
WO2015020092A1 true WO2015020092A1 (ja) 2015-02-12

Family

ID=52461423

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/070750 WO2015020092A1 (ja) 2013-08-07 2014-08-06 情報処理方法、情報処理装置及びプログラム

Country Status (3)

Country Link
US (1) US10025504B2 (ja)
JP (1) JP6166616B2 (ja)
WO (1) WO2015020092A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5974133B1 (ja) * 2015-03-20 2016-08-23 株式会社東芝 メモリシステム

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2694076T3 (es) 2009-10-01 2018-12-17 Interdigital Patent Holdings, Inc. Transmisión de datos de control del enlace ascendente
EP2738953A1 (en) 2011-01-07 2014-06-04 Interdigital Patent Holdings, Inc. Communicating channel state information (CSI) of multiple transmission points
US9456372B2 (en) 2011-08-12 2016-09-27 Interdigital Patent Holdings, Inc. Interference measurement in wireless networks
KR101647007B1 (ko) 2012-06-04 2016-08-10 인터디지탈 패튼 홀딩스, 인크 다중 전송 포인트의 통신 채널 상태 정보(csi)
US20160080963A1 (en) 2013-05-08 2016-03-17 Interdigital Patent Holdings, Inc. Methods, systems and apparatuses for network assisted interference cancellation and suppression in long-term evolution (lte) systems
JP6327994B2 (ja) * 2014-07-28 2018-05-23 ルネサスエレクトロニクス株式会社 制御システムおよび半導体装置
JP2019179415A (ja) * 2018-03-30 2019-10-17 株式会社デンソー マルチコアシステム
US10846004B2 (en) * 2018-05-03 2020-11-24 Mediatek Inc. Memory management system and memory management method for dynamic memory management by monitoring whether memory is accessed and predicting when memory is to be accessed
US11580023B2 (en) 2020-03-11 2023-02-14 Fujitsu Limited Information processing apparatus, computer-readable recording medium having stored therein memory control program, and computer-readable recording medium having stored therein information processing program

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004044745A1 (ja) * 2002-11-13 2004-05-27 Fujitsu Limited マルチスレッディングプロセッサにおけるスケジューリング方法およびマルチスレッディングプロセッサ
US20060265542A1 (en) * 2005-05-18 2006-11-23 Xiaowei Shen Cache line replacement monitoring and profiling
WO2009096161A1 (ja) * 2008-01-29 2009-08-06 Panasonic Corporation プロセッサ性能解析装置、方法及びシミュレータ

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7954102B2 (en) 2002-11-13 2011-05-31 Fujitsu Limited Scheduling method in multithreading processor, and multithreading processor
US7181599B2 (en) * 2004-01-14 2007-02-20 International Business Machines Corporation Method and apparatus for autonomic detection of cache “chase tail” conditions and storage of instructions/data in “chase tail” data structure
US9547594B2 (en) * 2013-03-15 2017-01-17 Intel Corporation Instructions to mark beginning and end of non transactional code region requiring write back to persistent storage
US9418013B2 (en) * 2014-06-30 2016-08-16 Intel Corporation Selective prefetching for a sectored cache

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004044745A1 (ja) * 2002-11-13 2004-05-27 Fujitsu Limited マルチスレッディングプロセッサにおけるスケジューリング方法およびマルチスレッディングプロセッサ
US20060265542A1 (en) * 2005-05-18 2006-11-23 Xiaowei Shen Cache line replacement monitoring and profiling
WO2009096161A1 (ja) * 2008-01-29 2009-08-06 Panasonic Corporation プロセッサ性能解析装置、方法及びシミュレータ

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5974133B1 (ja) * 2015-03-20 2016-08-23 株式会社東芝 メモリシステム
JP2016177687A (ja) * 2015-03-20 2016-10-06 株式会社東芝 メモリシステム
US10031854B2 (en) 2015-03-20 2018-07-24 Kabushiki Kaisha Toshiba Memory system

Also Published As

Publication number Publication date
JP6166616B2 (ja) 2017-07-19
JP2015035028A (ja) 2015-02-19
US20160154589A1 (en) 2016-06-02
US10025504B2 (en) 2018-07-17

Similar Documents

Publication Publication Date Title
JP6166616B2 (ja) 情報処理方法、情報処理装置及びプログラム
TWI564719B (zh) 具有多個資料預取器的處理器、所述處理器的操作方法及所述處理器操作的電腦程式產品
US8495318B2 (en) Memory page management in a tiered memory system
JP5413001B2 (ja) キャッシュメモリ
KR101361945B1 (ko) 컴퓨터 스레드들의 이종 리소스들로의 맵핑
US9477601B2 (en) Apparatus and method for determining a sector division ratio of a shared cache memory
US20190179763A1 (en) Method of using memory allocation to address hot and cold data
CN107810491B (zh) 用于管理并控制存储器高速缓存的方法和系统
JP6149595B2 (ja) キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法
US10496541B2 (en) Dynamic cache partition manager in heterogeneous virtualization cloud cache environment
CN113641596B (zh) 缓存管理方法、缓存管理装置、处理器
JP2012033001A (ja) 情報処理装置および情報処理方法
JP2023507078A (ja) プリフェッチレベルの降格
JP5591969B1 (ja) マルチコアプロセッサおよび制御方法
JP2015001909A (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
CN109597771B (zh) 用于控制分层存储器系统的方法和装置
WO2014141419A1 (ja) 仮想計算機システムおよびスケジューリング方法
JP2014010604A (ja) ストレージ装置とプログラムと方法
US20220114097A1 (en) System performance management using prioritized compute units
KR101502225B1 (ko) 컴퓨팅 장치에서의 가상머신 간의 성능간섭 감소를 위한 가상머신 할당 방법
EP4312123A1 (en) Memory aware context switching
CN117331858B (zh) 存储装置及数据处理系统
Pai et al. AB-Aware: application behavior aware management of shared last level caches
Mahto et al. ACAM: Application Aware Adaptive Cache Management for Shared LLC
JP6260456B2 (ja) 演算処理装置及び演算処理装置の制御方法

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: 14834589

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: 14834589

Country of ref document: EP

Kind code of ref document: A1