[go: up one dir, main page]

WO2011104823A1 - マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム - Google Patents

マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム Download PDF

Info

Publication number
WO2011104823A1
WO2011104823A1 PCT/JP2010/052792 JP2010052792W WO2011104823A1 WO 2011104823 A1 WO2011104823 A1 WO 2011104823A1 JP 2010052792 W JP2010052792 W JP 2010052792W WO 2011104823 A1 WO2011104823 A1 WO 2011104823A1
Authority
WO
WIPO (PCT)
Prior art keywords
core
cpu
cores
access
thread
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
PCT/JP2010/052792
Other languages
English (en)
French (fr)
Inventor
浩一郎 山下
宏真 山内
清志 宮▲崎▼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to PCT/JP2010/052792 priority Critical patent/WO2011104823A1/ja
Priority to JP2012501562A priority patent/JP5408330B2/ja
Publication of WO2011104823A1 publication Critical patent/WO2011104823A1/ja
Priority to US13/569,725 priority patent/US9311142B2/en
Anticipated expiration legal-status Critical
Priority to US15/057,383 priority patent/US20160179429A1/en
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0673Single storage device
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44552Conflict resolution, i.e. enabling coexistence of conflicting executables

Definitions

  • the present invention relates to a multi-core processor system that controls threads, a thread control method, and a thread control program.
  • the OS has a function of dividing the processing time of the CPU (Central Processing Unit), and by assigning processes and threads to the divided times, the CPU can simultaneously process a plurality of processes and threads.
  • a process is a program execution unit.
  • the OS performs processing preferentially by increasing the thread allocation time for the CPU over other processes, and performs processing within a certain period of time.
  • This technique is also disclosed.
  • a technique for effectively switching processes a technique is disclosed in which the OS acquires the number of execution instructions for each process and executes a process having a large number of execution instructions first (for example, see Patent Document 1 below). ).
  • the overall throughput can be improved by executing the process held most in the cache memory.
  • a technique of a multi-core processor system in which a plurality of CPUs are mounted on a computer system.
  • the OS can allocate a plurality of programs to a plurality of processes.
  • a multi-core processor system configuration a multi-core having a distributed system structure is characterized in that each CPU holds a dedicated memory, and when other data is required, the shared memory is accessed.
  • a processor system is disclosed.
  • a multi-core processor system having a centralized shared system structure in which each CPU holds only a cache memory and necessary data is stored in a shared memory.
  • contention occurs when a plurality of CPUs simultaneously access the shared memory.
  • the CPU cannot finish the process within a normal processing time, and cannot perform a real-time process that needs to finish the process within a certain time.
  • Real-time processing refers to processing that must be completed at a predetermined time in design, and processing that determines the allowable interval time from the occurrence of an interrupt event to the start time of the interrupt processing body in interrupt operation.
  • An object of the present invention is to provide a multi-core processor system, a thread control method, and a thread control program that can guarantee real-time processing in a multi-core processor system in order to solve the above-described problems caused by the prior art.
  • the disclosed multi-core processor system detects a first core having the highest execution priority among a plurality of cores, and detects a memory among the detected first cores.
  • the second core that caused the access contention is identified, and the threads that do not access the memory are accessed for all the cores except the first core and the second core among the plurality of cores. It is a requirement to provide control to be executed during at least some of the periods of contention.
  • This multi-core processor system, thread control method, and thread control program perform real-time processing, and have the effect of guaranteeing real-time processing of the core that is generating contention.
  • FIG. 2 is a block diagram showing a partial hardware configuration and software configuration of each CPU of the multi-core processor system 100.
  • FIG. 2 is a block diagram showing a functional configuration of a multi-core processor system 100.
  • FIG. It is explanatory drawing which shows a contention state. It is explanatory drawing which shows the state from which contention was eliminated. It is explanatory drawing which shows the performance ratio of the multi-core processor system 100 to which this Embodiment is applied. It is explanatory drawing which shows an example of the memory content of the priority table 303-1. It is a flowchart which shows the message transmission process by a hypervisor. It is a flowchart which shows the message reception process by a hypervisor.
  • FIG. 1 is a block diagram of a hardware configuration of the multi-core processor system according to the embodiment.
  • a multi-core processor system is a computer system including a processor having a plurality of cores. If a plurality of cores are mounted, a single processor mounted with a plurality of cores or a processor group in which single-core processors are arranged in parallel may be used. In this embodiment, in order to simplify the description, a processor group in which CPUs that are single-core processors are arranged in parallel will be described as an example.
  • the multi-core processor system 100 includes CPUs 101 equipped with a plurality of CPUs, a ROM (Read-Only Memory) 102, a RAM (Random Access Memory) 103, and a flash ROM 104.
  • the multi-core processor system 100 includes a display 105 and an I / F (Interface) 106 as input / output devices for a user and other devices. Each component is connected by a bus 108.
  • the hardware configuration according to the present embodiment is a configuration to which a centralized shared system is applied.
  • the CPUs 101 are responsible for overall control of the multi-core processor system.
  • the CPUs 101 refers to all CPUs in which single-core processors are connected in parallel. Details will be described later with reference to FIG.
  • the ROM 102 stores a program such as a boot program.
  • the RAM 103 is used as a work area for the CPUs 101.
  • the flash ROM 104 is a non-volatile semiconductor memory that can be rewritten and does not lose data even when the power is turned off.
  • the flash ROM 104 stores software programs and data. Instead of the flash ROM 104, the data may be stored in an HDD (hard disk drive) that is a magnetic disk.
  • HDD hard disk drive
  • the use of the flash ROM 104 makes it more resistant to vibration than a mechanically operated HDD.
  • the flash ROM 104 can reduce the possibility of erasing data even when there is strong vibration with respect to the device configured by the multi-core processor system 100.
  • the display 105 displays data such as a document, an image, and function information as well as a cursor, an icon, or a tool box.
  • data such as a document, an image, and function information as well as a cursor, an icon, or a tool box.
  • a TFT liquid crystal display can be adopted as the display 105.
  • the display 105 may be in a form of input using a touch panel.
  • the I / F 106 is connected to a network 107 such as a LAN (Local Area Network), a WAN (Wide Area Network), or the Internet through a communication line, and is connected to another device via the network 107.
  • the I / F 106 serves as an internal interface with the network 107 and controls input / output of data from an external device.
  • a modem or a LAN adapter can be employed as the I / F 106.
  • FIG. 2 is a block diagram showing a partial configuration and software configuration of each CPU hardware of the multi-core processor system 100.
  • the hardware configuration of the multi-core processor system 100 includes CPUs 101 and a shared memory 203.
  • the CPUs 101 includes a CPU 201-1, a CPU 201-2,..., A CPU 201-n as a plurality of CPUs.
  • the CPU 201-1, CPU 201-2,..., And CPU 201-n respectively hold a cache memory 202-1, a cache memory 202-2,.
  • Each CPU and the shared memory 203 are connected by a bus 108.
  • the CPU 201-1 and CPU 201-2 will be described.
  • the CPU 201-1 executes a hypervisor 204-1 and an OS 205-1.
  • the CPU 201-1 executes the monitoring library 206-1 under the control of the hypervisor 204-1.
  • the CPU 201-1 executes the real-time software 207 under the control of the OS 205-1.
  • the CPU 201-2 executes the hypervisor 204-2 and the OS 205-2.
  • the CPU 201-2 executes the monitoring library 206-2 under the control of the hypervisor 204-2.
  • the CPU 201-2 executes the software 208 under the control of the OS 205-2.
  • the CPU 201-1 executes the real-time software 207
  • there are two access destinations to the data the access path 209 and the access path 210.
  • the CPU 201-2 executes the software 208
  • there are two access destinations to the data that is, the access path 211 and the access path 212.
  • the hypervisor 204-1, the hypervisor 204-2, and the hypervisor operating on another CPU perform communication 213 between hypervisors.
  • the CPU 201-1, CPU 201-2,..., And CPU 201-n control the multi-core processor system 100.
  • the CPU 201-1, CPU 201-2,..., CPU 201-n are symmetrically and uniformly assigned SMP (Symmetric). Multi-processing) is also possible.
  • the CPU 201-1, CPU 201-2,..., CPU 201-n may be ASMP (Asymmetric Multi-Processing) that determines the CPU to be shared according to the processing content.
  • ASMP Asymmetric Multi-Processing
  • the multi-core processor system 100 may assign real-time processing that should be preferentially processed by the CPU 201-1.
  • the shared memory 203 is a storage area accessible from the CPU 201-1, CPU 201-2,..., CPU 201-n.
  • the storage area is, for example, the ROM 102, the RAM 103, and the flash ROM 104.
  • the CPU 201-1 requests the display 105 to display image data
  • the CPU 201-1 accesses a VRAM (Video RAM) included in the RAM 103 and writes the image data in the VRAM. Therefore, the case where the CPU 201-1 accesses the display 105 is also included in accessing the shared memory 203.
  • VRAM Video RAM
  • the CPU 201-1 accesses the I / F 106, for example.
  • a specific example of the I / F 106 is a LAN adapter, which has either a format for accessing a buffer in the LAN adapter or a format for accessing the RAM 103 and then transferring to the LAN adapter.
  • the shared memory is also used when the CPU 201-1 and CPU 201-2 access the I / F 106. Include in accessing 203.
  • the shared memory area prepared by the device driver that controls the I / F 106 is accessed, and as a result, the shared memory 203 is accessed. Become.
  • the hypervisor 204-1 and the hypervisor 204-2 are programs that operate on the CPU 201-1 and the CPU 201-2, respectively.
  • the hypervisor function is located between the OS and CPU, monitors the OS, resets when the OS hangs, and sets the power saving when the OS is not executing any threads.
  • the CPU 201-1 and the CPU 201-2 execute the monitoring library 206-1 and the monitoring library 206-2 for monitoring contention, which are the features of the present embodiment, by the respective hypervisors.
  • the OS 205-1 and OS 205-2 are programs that operate on the CPU 201-1 and CPU 201-2, respectively, and operate on the hypervisor 204-1 and the hypervisor 204-2, respectively.
  • the OS 205-1 has a thread scheduler that allocates and executes the real-time software 207 to the CPU 201-1.
  • the monitoring library 206-1 and the monitoring library 206-2 are programs that operate on the hypervisor 204-1 and the hypervisor 204-2, respectively, and no contention due to access contention occurs in the shared memory 203. To monitor. If contention occurs as a result of monitoring, the monitoring library transmits information between the hypervisors and transmits information indicating that contention has occurred to other hypervisors.
  • Real-time software 207 is a program assigned to the CPU 201-1 by the OS 205-1.
  • a specific example of real-time software is communication packet processing. The communication packet processing needs to be performed within the time determined by the protocol, and real-time processing is required.
  • the software 208 is a program assigned to the CPU 201-2 by the OS 205-2. Software 208 is not required for real-time processing. As described above, in the present embodiment, it is assumed that the CPU 201-1 is executing software that requires guarantee of real-time processing.
  • the access path 209 is a path for the CPU 201-1 to access the cache memory 202-1.
  • the access path 210 is a path for the CPU 201-1 to access the shared memory 203.
  • the access path 209 if the data that the real-time software 207 desires to access is in the cache memory 202-1, the access path 209 is not present, and if the data is to be accessed, the access path 210 is present.
  • the access path 211 is a path through which the CPU 201-2 accesses the cache memory 202-2.
  • the access path 212 is a path for the CPU 201-2 to access the shared memory 203.
  • the hypervisor communication 213 is communication for transmitting and receiving messages between hypervisors. Specifically, for example, when the CPU 201-1 enters a contention state while executing the real-time software 207, a message is broadcast from the hypervisor 204-1 to all hypervisors including the hypervisor 204-2. Send.
  • FIG. 3 is a block diagram showing a functional configuration of the multi-core processor system 100.
  • the multi-core processor system 100 is configured to include a priority detection unit 305, an issued instruction efficiency calculation unit 306, a contention detection unit 307, a specification unit 308, and a control unit 311.
  • the functions (priority detection unit 305 to control unit 311) serving as the control unit are executed by the CPUs 101 by executing a program stored in a storage device such as the ROM 102, the RAM 103, and the flash ROM 104 shown in FIG. By doing so, the function is realized.
  • the CPU 201-1, CPU 201-2,..., CPU 201-n execute a hypervisor and OS / software.
  • the priority detection unit 305 to the hypervisor message transmission unit 309 illustrated in the area 301-1 are a part of the functions of the hypervisor 204-1 by the CPU 201-1. This is realized by executing as Similarly, the inter-hypervisor message receiving unit 310 and the control unit 311 illustrated in the area 301-2 are realized by the CPU 201-2 being executed as a part of the function of the hypervisor 204-2.
  • the hypervisor executed by the core other than the CPU 201-1 also has the functions of the priority detection unit 305 to the hypervisor message transmission unit 309.
  • the hypervisor executed by the core other than the CPU 201-2 also has the functions of the inter-hypervisor message receiving unit 310 and the control unit 311.
  • the priority detection unit 305 to the hypervisor message transmission unit 309 correspond to the monitoring library 206-1.
  • the hypervisor message receiving unit 310 and the control unit 311 correspond to the monitoring library 206-2.
  • the OS scheduler monitoring unit 304-1, the real-time software 207, and the software 312 illustrated in the area 302-1 are realized by the CPU 201-1 executing as a part of the functions of the OS 205-1.
  • the priority table 303-1 is a table accessible from the hypervisor 204-1 or the OS 205-1.
  • the OS scheduler monitoring unit 304-2, software 208, software 313, nice value setting unit 314, and dummy thread activation unit 315 illustrated in the area 302-2 are part of the functions of the OS 205-2 by the CPU 201-2. This is realized by executing as
  • the priority table 303-2 is a table that can be accessed from the hypervisor 204-2 or the OS 205-2.
  • the priority table 303-1 and the priority table 303-2 are tables that manage the processing executed in the multi-core processor system 100 in association with the processing priority. Details of the contents of the priority table 303-1 will be described later with reference to FIG.
  • the OS scheduler monitoring unit 304-1 and the OS scheduler monitoring unit 304-2 have a function of monitoring software allocated to the CPU 201-1 and the CPU 201-2. Specifically, for example, it is assumed that the real-time software 207 is assigned to the CPU 201-1 and the real-time software 207 requests access to shared resources on the RAM 103 or the flash ROM 104.
  • the OS scheduler monitoring unit 304-1 sets the execution state of the real-time software 207 in a waiting state. Subsequently, the OS scheduler monitoring unit 304-1 sets another software that has been in an executable state, for example, the software 312 to an execution state and assigns it to the CPU 201-1.
  • the OS scheduler monitoring unit 304-1 assigns another software to the CPU 201-1. Further, as described above, switching the software assigned to the CPU is called dispatch.
  • the OS scheduler monitoring unit 304-1 is activated as a thread that is a unit of software execution when the software is newly activated. Each thread has a stack area, register information including a program counter, and the like. Each time dispatch is performed, the OS scheduler monitoring unit 304-1 saves the currently executed register information or the like to the shared memory 203, acquires the next software register information or the like from the shared memory 203, and stores it in the CPU register information. Set.
  • the multi-core processor system 100 may constitute one process from a set of threads.
  • the memory space is common among threads, but the memory space is independent between processes, and the memory space cannot be directly accessed.
  • the description is made using threads, but it may be replaced with a process.
  • the OS scheduler monitoring unit 304-1 may perform allocation based on the priority table 303-1. Further, the OS scheduler monitoring unit 304-1 may allocate the software with the oldest allocation time based on the allocation time of each software.
  • the priority detection unit 305 has a function of detecting the first core having the highest execution priority among the plurality of cores.
  • the core corresponds to the CPU 201-1, CPU 201-2,..., CPU 201-n constituting the CPUs 101. If the multi-core processor system 100 is ASMP and there is a CPU to which real-time processing is assigned, the first core may be detected by the CPU.
  • the CPU 201-1 acquires the priority of the currently assigned software from the priority table 303-1, and when the priority is “real time”, the CPU 201-1 has the highest execution priority. 1 core.
  • the detected first core information is stored in a storage area such as the cache memory 202-1, the general-purpose register of the CPU 201-1.
  • the issued instruction efficiency calculation unit 306 has a function of calculating the issued instruction efficiency for each core based on the number of issued instructions issued by the core and the number of cycles of the core.
  • the number of issued commands is the number of commands issued by the CPU within a predetermined time.
  • the number of issued instructions is stored in an issued instruction counter I which is a special register of the CPU, and the hypervisor acquires the value of the issued instruction counter I by shifting to the supervisor mode.
  • the cycle number is the number of clocks input by the CPU within a predetermined time.
  • the number of cycles is stored in a clock counter C that is a register of the CPU.
  • the issued instruction efficiency is the number of clocks required for one instruction, and is calculated by C / I.
  • the issued instruction efficiency calculation unit 306 may calculate the issued instruction efficiency as I / C, and may compare the threshold value ⁇ described later with an inverse number.
  • the CPU 201-1 calculates C / I. Since the hypervisor is executed at intervals of once every several tens of microseconds to several milliseconds, the issued instruction counter I and the clock counter C at that time are acquired, and C / I is calculated. The calculated issued instruction efficiency is stored in a storage area such as the cache memory 202-1, the general-purpose register of the CPU 201-1.
  • the contention detection unit 307 has a function of detecting an access conflict based on the issue instruction efficiency calculated by the issue instruction efficiency calculation unit 306 and a predetermined threshold.
  • the predetermined threshold is a value that can be set from the specification and is represented by ⁇ . A specific method for setting the threshold ⁇ will be described later with reference to FIG. Specifically, for example, when the number of issued instructions is larger than the threshold ⁇ , the CPU 201-1 detects that contention due to access contention with respect to the shared memory 203 has occurred. The detected result is stored in a storage area such as the cache memory 202-1, the general-purpose register of the CPU 201-1.
  • the identifying unit 308 has a function of identifying a second core that has caused an access conflict with respect to the shared memory 203 among the first cores detected by the priority detection unit 305 among the plurality of cores. Further, the specifying unit 308 may specify a third core that has generated access contention for the shared memory 203 and competes with the second core. When detecting the occurrence of contention due to access competition, the CPU 201-1 may detect the contention by the contention detection unit 307.
  • the CPU 201-1 detects the CPU generating contention from the CPUs in “real time” by the priority detection unit 305 and identifies it as the second core. Further, the CPU 201-1 may detect a CPU generating contention from a plurality of CPUs and identify it as the third core. Note that the information of the specified second core or third core is stored in a storage area such as the cache memory 202-1, the general-purpose register of the CPU 201-1.
  • the hypervisor message transmission unit 309 has a function of broadcasting a message to other hypervisors. Specifically, for example, the hypervisor 204-1 that performs real-time processing and detects the occurrence of contention broadcasts a message to the hypervisor 204-2 and other hypervisors via the bus 108. . Note that the content of the transmitted message may be stored in a storage area such as the cache memory 202-1, the general-purpose register of the CPU 201-1.
  • the hypervisor message receiving unit 310 has a function of receiving a message transmitted by another hypervisor. Specifically, for example, the hypervisor 204-2 performs a real-time process and receives a message from the hypervisor 204-1 that has detected the occurrence of contention. The contents of the received message are stored in a storage area such as a cache memory 202-2 and a general-purpose register of the CPU 201-2.
  • the control unit 311 controls the third core excluding the first core and the second core specified by the specifying unit 308 to execute a thread that does not access the shared memory 203 among the plurality of cores. It has the function to do. In addition, the control unit 311 may perform control so that a thread that does not access the shared memory 203 is executed on the third core excluding the second core. When the third core is specified by the specifying unit 308, the control unit 311 may control the specified third core to execute a thread that does not access the shared memory 203.
  • the period for executing the thread that does not access the shared memory 203 is a predetermined period among the periods in which the access contention occurs.
  • the predetermined period is a time slice value held by the OS 205-2.
  • the predetermined period may be a period in which time is divided between a thread allocated to the third core and a thread that does not access the shared memory 203 in a period in which access contention occurs.
  • the CPU that receives the message becomes the third core, and the OS scheduler executes a thread that does not access the shared memory 203.
  • the control unit 311 controls the OS scheduler monitoring unit 304-2 to execute the nice value setting unit 314 or the dummy thread activation unit 315.
  • the nice value setting unit 314 has a function of setting a nice value of currently executed software.
  • the nice value is a value set by a nice command defined in POSIX (Portable Operating System Interface for UNIX (registered trademark)).
  • the OS 205-2 controls the execution priority of the software by changing the setting value with the nice command.
  • the OS 205-2 calculates a value obtained by adding the nice value to the software assignment end time.
  • the OS scheduler monitoring unit 304-2 may adopt a method in which the software having the smallest value is determined as a dispatch target based on the added value.
  • the nice value setting unit 314 may be realized by adding the above-described processing.
  • the set value is stored in a storage area such as the RAM 103 or the flash ROM 104.
  • the dummy thread activation unit 315 has a function of generating a thread that does not access the shared memory 203. Specifically, for example, the CPU 201-2 activates a thread that performs a nop that is a code that does not operate on the CPU for a certain period of time.
  • the nice value setting unit 314 and the dummy thread activation unit 315 are executed by the OS scheduler monitoring unit 304-2 during at least a part of the contention generation period due to access contention.
  • FIG. 4 is an explanatory diagram showing a contention state.
  • the CPU 201-1 executes the hypervisor 204-1 and the real-time software 207
  • the CPU 201-2 executes the hypervisor 204-2 and the software 208.
  • Each CPU accesses the cache memory by executing software or accesses the shared memory 203.
  • the hypervisor is activated periodically, and the activation interval is from several tens of microseconds to several milliseconds.
  • the time shown is divided into a time 401, a time 402, and a time 403 according to which memory is accessed.
  • the CPU 201-1 and CPU 201-2 do not enter the contention state because the real-time software 207 and the software 208 are not simultaneously accessing the shared memory 203.
  • the contention state is caused by access contention with respect to the shared memory 203.
  • the CPU 201-1 takes several hundred cycles for memory access, causing a processing delay of the real-time software 207.
  • the CPU 201-1 may not be able to finish the process by the time required by the real-time software 207, and the real-time process cannot be guaranteed.
  • the number of clocks per instruction can be obtained by calculating C / I based on the issued instruction counter I and the clock counter C within a certain time.
  • the CPU 201-1 consumes tens of counts of access to the shared memory 203. However, when contention occurs due to access contention to the shared memory 203, tens to hundreds of counts are consumed, and the operating efficiency of the CPU 201-1 may be reduced to 30% at the maximum.
  • FIG. 5 is an explanatory diagram showing a state in which contention is eliminated.
  • the CPU 201-1 executes the hypervisor 204-1 and the real-time software 207
  • the CPU 201-2 executes the hypervisor 204-2 and the software 208 as in FIG.
  • the CPU 201-1 and CPU 201-2 accessed the shared memory 203 at the same time, and contention due to access contention occurred.
  • the CPU 201-2 at time 402 in FIG. 5 eliminates contention due to access contention by executing software 208 and dummy threads alternately.
  • the CPU 201-1 can finish the processing by the time required by the real-time software 207, and can guarantee the real-time processing.
  • FIG. 6 is an explanatory diagram showing the performance ratio of the multi-core processor system 100 to which the present embodiment is applied.
  • the horizontal axis in FIG. 6 is the number of buffer stages set in the bus 108, and the vertical axis is the performance ratio based on the number of buffer stages 1 in the conventional example. In the case of performance equal to the number of buffer stages of the conventional example, the vertical axis is plotted at 1.00.
  • a result obtained by plotting a performance ratio with the conventional example for each number of buffer stages and connecting with a curve is a curve 602.
  • the curves 601 and 602 are located in the region 603 when the performance ratio is better than that of the conventional buffer stage number 1, and located in the region 604 when the performance ratio is worse.
  • the multi-core processor system 100 can guarantee real-time processing, and when located in the area 604, real-time processing cannot be guaranteed.
  • the bus utilization efficiency can be increased as the number of buffer stages of the bus increases, but it becomes difficult to guarantee real-time processing.
  • the curve 602 according to the conventional example is located in the region 604 when the number of buffer stages is five or more. Therefore, the multi-core processor system according to the conventional example cannot guarantee real-time processing when the number of buffer stages is five or more.
  • the curve 601 according to the present embodiment is located in the region 603 until the number of buffer stages becomes 13. Therefore, the multi-core processor system 100 according to the present embodiment can guarantee real-time processing up to 13 buffer stages.
  • FIG. 7 is an explanatory diagram showing an example of the contents stored in the priority table 303-1.
  • the priority table 303-1 includes a process name field and an execution priority field. Similar data is set in the priority table 303-2.
  • the process name field describes specific processing contents. Actually, a program describing the processing contents exists in any one of the ROM 102, the RAM 103, and the flash ROM 104, and the CPU 201-1 loads the program and executes it as a thread.
  • the execution priority field sets a priority for executing the corresponding process name.
  • the execution priority field is “real time”.
  • the “drawing rendering” process is a normal process, and it is not necessary to guarantee real-time processing. Therefore, the execution priority field is “normal”.
  • the “UI input” process needs to guarantee real-time processing when the response time for the user is determined by the specification. “Dictionary look-ahead search” processing does not require real-time processing.
  • a contention occurs, for example, a state where the multi-core processor system 100 is performing a web browsing process.
  • the CPU 201-1 is executing communication packet reception processing
  • the CPU 201-2 is executing drawing rendering processing.
  • the rendering / rendering process has many memory accesses, and there is a high possibility that a communication packet reception process and an access conflict with the shared memory 203 will occur.
  • the CPU 201-2 increases the nice value of the rendering rendering process by the OS 205-2.
  • the OS 205-2 assigns the rendering rendering process in which the nice value is increased to the CPU 201-2 so as to be sparser.
  • the multi-core processor system 100 can avoid contention due to access contention, and can guarantee real-time processing of rendering rendering processing.
  • a state is assumed in which the multi-core processor system 100 accepts a character input from the user.
  • the CPU 201-1 is executing UI input processing
  • the CPU 201-2 is executing dictionary prefetch search processing.
  • the dictionary look-ahead search process has many I / O accesses, and there is a high possibility that a communication packet reception process and an access conflict with the shared memory 203 will occur.
  • the CPU 201-2 increases the nice value of the dictionary prefetch search processing by the OS 205-2.
  • the OS 205-2 assigns to the CPU 201-2 the sparseness of the dictionary look-ahead search processing in which the nice value is increased.
  • the multi-core processor system 100 can avoid contention due to access contention and can guarantee real-time processing of UI input processing.
  • FIG. 8 is a flowchart showing message transmission processing by the hypervisor.
  • the message transmission process is performed every time the hypervisor is activated.
  • the CPU 201-1 checks whether the real-time software is being executed (step S801). When the real-time software is being executed (step S801: Yes), the CPU 201-1 acquires the issued instruction counter I (step S802). Subsequently, the CPU 201-1 acquires the clock counter C (step S803). After the acquisition, the CPU 201-1 calculates a C / I value that is a determination value indicating whether contention is in progress (step S804). After the calculation, the CPU 201-1 compares the C / I value with the threshold value ⁇ (step S805).
  • step S805 When the C / I value is larger than the threshold ⁇ (step S805: Yes), the contention is in progress, and the CPU 201-1 generates a nice value increase message (step S806).
  • the CPU that has received this message increases the nice value of the currently operating software, and the software with the increased nice value has a lower priority, so the execution of the currently operating software is sparse.
  • the CPU 201-1 After generation, the CPU 201-1 broadcasts a message between the hypervisors (step S807). After the transmission, the CPU 201-1 executes normal hypervisor processing (step S810), and ends the processing. If the C / I value is less than or equal to the threshold ⁇ (step S805: No), it means that contention is not in progress, and the CPU 201-1 performs the process of step S810 and ends the process.
  • step S801: No the CPU 201-1 subsequently checks whether the nice value of the software being executed is an initial value (step S808). If it is not the initial value (step S808: No), the CPU 201-1 sets the nice value of the software being executed to the initial value (step S809), and proceeds to the process of step S810. When the nice value is the initial value (step S808: Yes), the CPU 201-1 proceeds to the process of step S810.
  • the CPU 201-1 calculates the C / I value after step S808: No, and compares it with the threshold value ⁇ to confirm that the contention has been resolved.
  • the process of S809 may be executed.
  • FIG. 9 is a flowchart showing message reception processing by the hypervisor.
  • the CPU 201-2 receives a message between hypervisors (step S901). In the present embodiment, the message transmitted by the CPU 201-1 is received. Next, the CPU 201-2 confirms whether its own CPU has broadcast the message (step S902).
  • step S902: Yes When broadcasting (step S902: Yes), the CPU 201-2 ends the processing because the contention is in progress and the thread is not controlled. If it is not broadcasted (step S902: No), it causes contention, so the CPU 201-2 executes processing that does not access the shared memory 203.
  • the CPU 201-2 instructs the OS 205-2 to increase the nice value of the currently operating software (step S903). If the OS does not have a nice value function, the CPU 201-2 may instruct the OS 205-2 to activate a dummy thread.
  • step S902 the CPU 201-2 calculates the C / I value when the real-time software is not operating, compares the C / I value with the threshold value ⁇ , and is in contention. You may control the thread. In this case, the processing increases by the comparison of the C / I values, but only the CPU in which contention occurs can be targeted.
  • the CPU 201-1 checks the contention after dividing the priority into two stages of whether or not to execute the real-time priority in the message transmission process. However, the priority is divided into three or more stages. You may check contention.
  • the CPU 201-1 sets three or more possible values in the execution priority field of the priority table 303-1.
  • the execution priority of the “UI input” process is “high priority” between “real time” and “normal”, and the execution priority of the “dictionary look-ahead search” process is below “normal”. “Low priority”.
  • “Is real-time software being executed?” Is replaced with “Is software having a priority other than low priority being executed?” In step S801. Further, in the process of step S806, the priority of the currently operating software is given to the message content.
  • a new condition between the process after step S902: No and the process at step S903 is "Are the received message priority higher than the priority of the currently operating software?" Add. If the condition is Yes, the CPU that is the execution subject performs the process of Step S903, and if No, the process ends without performing the process of Step S903.
  • the CPU executing the high-priority UI input processing described above with reference to FIG. 7 becomes Yes in step S801, and sends a message to other cores in the processing in step S807. Broadcast transmission. If the CPU executing the rendering rendering, which is the normal priority, receives the above message, “Yes, is the priority of the received message higher than the priority of the currently operating software?”, Step The process of S903 is performed to control the nice value.
  • the CPU that performs message transmission processing divides the priority into three or more stages to check contention, and the CPU that performs message reception processing adds priority determination, thereby lowering priority processing. Sparse CPU processing.
  • the multi-core processor system 100 can process a process with high priority first.
  • a value for increasing the nice value is set based on the priority of the received message and the priority of the currently operating software. It may be set. For example, if the priority of the received message is real-time and the priority of the currently operating software is normal, the priority is two steps away, so that the nice value is increased by two. Also good. In this way, by controlling the nice value in stages by the hypervisor 204-2, the OS 205-2 executes the processing with lower priority more sparsely and is assigned to the CPU 201-1. Real-time processing can be processed first.
  • a process for increasing the value for increasing the nice value by two or more stages may be added.
  • the CPU 201-2 receives a message, after receiving the message reception process and increasing the nice value by 1, before returning the nice value to the initial value. In this case, it means that the content is still in spite of the increase in the nice value. Therefore, the CPU 201-2 sets the nice value to be increased by 1, so that the contention state is increased. It becomes easier to eliminate.
  • the multi-core processor system the thread control method, and the thread control program, the CPU in contention is specified by real-time processing. Then, control is performed so that all CPUs except for the CPU identified as the CPU in real-time processing execute a thread that does not access the shared memory. Thereby, the multi-core processor system can guarantee real-time processing.
  • the multi-core processor system may execute a thread that does not access the shared memory for all CPUs except the specified CPU.
  • the control request is sent to all CPUs other than the own CPU without searching for a competing partner. Since the search process is not performed, the process can be simplified.
  • the multi-core processor system may specify a CPU in contention among a plurality of CPUs, and control the specified CPU to execute a thread that does not access the shared memory.
  • the multi-core processor system can control the thread only for the CPU that has caused contention, and can continue normal processing for the CPU that has not caused contention.
  • the multi-core processor system time-divides the execution time of the thread assigned to the controlling CPU and the time of the thread not accessing the memory with respect to the CPU controlling the thread during the contention generation period. You may divide and allocate by. As a result, the multi-core processor system can solve the contention, and can also process the thread assigned to the CPU to be controlled.
  • the multi-core processor system calculates, for each CPU, the issued instruction efficiency based on the number of issued instructions issued by the CPU and the number of cycles of the CPU, and based on the calculated issued instruction efficiency and a predetermined threshold ⁇ . Contention may be detected. As a result, the multi-core processor system can detect contention due to access contention and guarantee real-time processing.
  • the multi-core processor system may detect the core having the highest execution priority of the thread assigned to the CPU. As a result, the multi-core processor system can determine the thread that needs to guarantee real-time processing, and can eliminate contention and guarantee real-time processing regardless of which CPU the thread is assigned to. .
  • the thread control method described in the present embodiment can be realized by executing a program prepared in advance on a computer.
  • the thread control program is recorded on a computer-readable recording medium such as a hard disk, a flexible disk, a CD-ROM, an MO, and a DVD, and is executed by being read from the recording medium by the computer.
  • the thread control program may be distributed via a network such as the Internet.
  • priority detection unit 306 issuing instruction Efficiency calculation unit 307 contention detection unit 308 identification unit 309 inter-hypervisor message transmission unit 310 inter-hypervisor message reception unit 311 control unit 312 software 313 software 314 nice value setting unit 315 dummy thread activation unit

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

 CPU(201-1)は、優先度検出部(305)によって実行優先度が最も高いCPUであるか検出し、発行命令効率算出部(306)によって発行命令効率を算出し、コンテンション検出部(307)によってコンテンションかを検出する。検出後、CPU(201-1)は、特定部(308)にてリアルタイム処理を保証するCPUであることを特定し、ハイパーバイザ間メッセージ送信部(309)によって、特定されたCPUを除いたすべてのCPUにメッセージを送信する。CPU(201-2)は、ハイパーバイザ間メッセージ受信部(310)によってメッセージを受信し、制御部(311)によって共有メモリにアクセスしないスレッドを、コンテンションが発生した期間のうち、所定の期間実行するように制御する。

Description

マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム
 本発明は、スレッドを制御するマルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラムに関する。
 従来から、1つのCPUに対して、複数のプログラムを動作させるマルチプログラミング技術が存在する。具体的には、OS(Operating System)は、CPU(Central Processing Unit)の処理時間を分割する機能を有し、分割された時間にプロセスやスレッドを割り当てることにより、CPUが同時に複数のプロセスやスレッドを動作する。ここで、プロセスはプログラムの実行単位である。
 また、一定時間内に処理を終える必要があるプロセスに対して、OSがCPUに対するスレッドの割り当て時間を他のプロセスより多くすることで、優先的に処理を行い、一定時間内に処理を行う、という技術も開示されている。また、プロセスを効果的に切り替える技術として、OSがプロセスごとに実行命令数を取得し、実行命令数の多いプロセスを先に実行する技術が開示されている(たとえば、下記特許文献1を参照。)。前述の技術では、キャッシュメモリに一番多く保持されているプロセスが実行されることにより、全体のスループットを向上させることができる。
 また、コンピュータシステムに複数のCPUを搭載するマルチコアプロセッサシステムの技術も開示されている。これにより、前述のマルチプログラミング技術において、OSは複数のプログラムを複数のプロセスに対して割り当てることができる。また、マルチコアプロセッサシステムの構成として、各CPUが専用のメモリを保持し、それ以外のデータが必要の場合には、共有メモリにアクセスを行うことを特徴とする、分散システムの構造を持ったマルチコアプロセッサシステムが開示されている。また、各CPUがキャッシュメモリのみを保持し、必要なデータは共有メモリに格納することを特徴とする、集中共用システムの構造を持ったマルチコアプロセッサシステムも開示されている。
特開平9-330237号公報
 しかしながら、マルチコアプロセッサシステムでは、複数のCPUが共有メモリに同時にアクセスすることによってコンテンションが発生する。コンテンションが発生すると、CPUは、通常の処理時間以内に処理を終了できなくなり、一定時間内に処理を終わらせる必要があるリアルタイム処理を行えないという問題があった。リアルタイム処理とは、設計上あらかじめ決められた時刻に処理を終了しなければならない処理、および割り込み動作における、割り込みイベント発生から割り込み処理本体の開始時間までの許容されるインターバル時間が定められた処理をさす。
 また、コンテンションはハードウェアを原因として引き起こされる。したがって、上述した従来技術において、マルチコアプロセッサシステムに特許文献1を適用しても、CPUはキャッシュメモリに一番多く保持されているプロセスによってコンテンションを起こす可能性もあり、コンテンションの解決に至らないという問題があった。
 また、前述した分散システムを適用した場合、コンテンションが発生する頻度は少ないが、CPUごとにメモリを配置する必要があるため、コストと消費電力が大きくなるという問題があった。したがって、コストと消費電力に制限のある組み込み環境では、集中共用システムを適用したマルチコアプロセッサシステムがよく適用される。しかし、集中共用システムを適用したマルチコアプロセッサシステムは、複数のCPUが共有メモリに同時にアクセスする機会が多く、コンテンションが発生する頻度が多いという問題があった。
 本発明は、上述した従来技術による問題点を解消するため、マルチコアプロセッサシステムにてリアルタイム処理を保証できるマルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラムを提供することを目的とする。
 上述した課題を解決し、目的を達成するため、開示のマルチコアプロセッサシステムは複数のコアのうち、実行優先度が最も高い第1のコアを検出し、検出された第1のコアのうち、メモリに対してアクセス競合を発生させた第2のコアを特定し、複数のコアのうち、第1のコアと第2のコアとを除いたすべてのコアに対し、メモリにアクセスしないスレッドを、アクセス競合の期間のうち少なくとも一部の期間中に実行させるように制御することを備えることを要件とする。
 本マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラムによれば、リアルタイム処理を行っており、コンテンション発生中のコアのリアルタイム処理を保証することができるという効果を奏する。
実施の形態にかかるマルチコアプロセッサシステムのハードウェア構成を示すブロック図である。 マルチコアプロセッサシステム100の各CPUのハードウェアの一部の構成とソフトウェア構成を示すブロック図である。 マルチコアプロセッサシステム100の機能的構成を示すブロック図である。 コンテンション状態を示す説明図である。 コンテンションが解消された状態を示す説明図である。 本実施の形態を適用したマルチコアプロセッサシステム100の性能比を示す説明図である。 優先度テーブル303-1の記憶内容の一例を示す説明図である。 ハイパーバイザによるメッセージ送信処理を示すフローチャートである。 ハイパーバイザによるメッセージ受信処理を示すフローチャートである。
 以下に添付図面を参照して、本発明にかかるマルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラムの好適な実施の形態を詳細に説明する。
(マルチコアプロセッサシステムのハードウェア構成)
 図1は、実施の形態にかかるマルチコアプロセッサシステムのハードウェア構成を示すブロック図である。マルチコアプロセッサシステムとは、コアが複数搭載されたプロセッサを含むコンピュータのシステムである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、説明を単純化するため、シングルコアのプロセッサであるCPUが並列されているプロセッサ群を例にあげて説明する。
 マルチコアプロセッサシステム100は、CPUを複数搭載するCPUs101と、ROM(Read‐Only Memory)102と、RAM(Random Access Memory)103と、フラッシュROM104と、を備えている。また、マルチコアプロセッサシステム100は、ユーザやその他の機器との入出力装置として、ディスプレイ105と、I/F(Interface)106と、を備えている。また、各構成部はバス108によってそれぞれ接続されている。本実施の形態にかかるハードウェアの構成は、集中共用システムを適用した構成となっている。
 ここで、CPUs101は、マルチコアプロセッサシステムの全体の制御を司る。また、CPUs101は、シングルコアのプロセッサを並列して接続したすべてのCPUを指している。詳細は、図2にて後述する。ROM102は、ブートプログラムなどのプログラムを記憶している。RAM103は、CPUs101のワークエリアとして使用される。
 フラッシュROM104は、書き換えが可能であり、電源を切ってもデータが消えないという特徴を持つ不揮発性の半導体メモリである。フラッシュROM104は、ソフトウェアプログラムや、データを記憶している。フラッシュROM104の代わりに、磁気ディスクであるHDD(ハードディスクドライブ)にて記憶してもよいが、フラッシュROM104を使用することにより、機械的に動作するHDDに比べて振動に強くすることができる。たとえば、マルチコアプロセッサシステム100で構成する装置に対し、強い振動があった場合でも、フラッシュROM104であればデータが消える可能性を低くすることができる。
 ディスプレイ105は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ105は、たとえば、TFT液晶ディスプレイなどを採用することができる。また、ディスプレイ105は、タッチパネル式で入力する形態でもよい。
 I/F106は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク107に接続され、このネットワーク107を介して他の装置に接続される。そして、I/F106は、ネットワーク107と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F106には、たとえばモデムやLANアダプタなどを採用することができる。
 図2は、マルチコアプロセッサシステム100の各CPUのハードウェアの一部の構成とソフトウェア構成を示すブロック図である。マルチコアプロセッサシステム100のハードウェア構成は、CPUs101と、共有メモリ203で構成される。CPUs101は、複数のCPUとしてCPU201-1、CPU201-2、・・・、CPU201-nで構成される。
 CPU201-1、CPU201-2、・・・、CPU201-nは、それぞれ、キャッシュメモリ202-1、キャッシュメモリ202-2、・・・、キャッシュメモリ202-nを保持している。各CPUと共有メモリ203は、バス108によってそれぞれ接続されている。以下の記述では、CPU201-1、CPU201-2について記述する。
 また、マルチコアプロセッサシステム100のソフトウェア構成として、CPU201-1は、ハイパーバイザ204-1、OS205-1を実行する。CPU201-1は、ハイパーバイザ204-1の制御により、監視ライブラリ206-1を実行する。同様に、CPU201-1は、OS205-1の制御により、リアルタイムソフトウェア207を実行する。同様にCPU201-2も、ハイパーバイザ204-2、OS205-2を実行する。CPU201-2は、ハイパーバイザ204-2の制御により、監視ライブラリ206-2を実行する。同様に、CPU201-2は、OS205-2の制御により、ソフトウェア208を実行する。
 CPU201-1がリアルタイムソフトウェア207を実行する際には、データへのアクセス先が2通りあり、アクセス経路209とアクセス経路210である。同様に、CPU201-2がソフトウェア208を実行する際にも、データへのアクセス先が2通りあり、アクセス経路211とアクセス経路212である。また、ハイパーバイザ204-1とハイパーバイザ204-2と、他のCPU上で動作しているハイパーバイザは、ハイパーバイザ間通信213を行う。
 CPU201-1、CPU201-2、・・・、CPU201-nは、マルチコアプロセッサシステム100の制御を司る。CPU201-1、CPU201-2、・・・、CPU201-nは、対称的、均一的に処理が割り付けられたSMP(Symmetric
 Multi-processing)でもよい。また、CPU201-1、CPU201-2、・・・、CPU201-nは、処理内容によって分担するCPUを決めておくASMP(Asymmetric Multi-Processing)でもよい。ASMPの例として、マルチコアプロセッサシステム100は、CPU201-1にて優先して処理すべきであるリアルタイム処理を割り当ててもよい。
 共有メモリ203は、CPU201-1、CPU201-2、・・・、CPU201-nからアクセス可能な記憶領域である。記憶領域とは、具体的には、たとえば、ROM102、RAM103、フラッシュROM104である。また、たとえば、CPU201-1が、ディスプレイ105に画像データの表示を要求する場合、RAM103に含まれるVRAM(Video RAM)にアクセスし、画像データをVRAMに書き込むことになる。したがって、CPU201-1が、ディスプレイ105へアクセスする場合も、共有メモリ203にアクセスすることに含める。
 また、たとえば、CPU201-1が、I/F106にアクセスする場合も同様である。たとえば、I/F106の具体例がLANアダプタとして、LANアダプタにあるバッファにアクセスする形式か、RAM103にアクセスし、その後LANアダプタに転送する形式かのどちらかになる。どちらの場合であっても、CPU201-1、CPU201-2からみると共有メモリにアクセスしていることとなるため、CPU201-1、CPU201-2が、I/F106へアクセスする場合も、共有メモリ203にアクセスすることに含める。同様に、CPU201-1が、I/F106にアクセスする場合も、I/F106を制御するデバイスドライバが用意する共有の記憶領域にアクセスすることになるため、結果、共有メモリ203にアクセスすることになる。
 ハイパーバイザ204-1、ハイパーバイザ204-2は、それぞれCPU201-1、CPU201-2にて動作するプログラムである。ハイパーバイザの機能は、OSとCPUの間にて位置し、OSの監視を行い、OSがハングアップした際にリセットをする他、OSが何もスレッドを実行していない場合に、省電力設定にする。また、CPU201-1、CPU201-2は、それぞれのハイパーバイザによって、本実施の形態での特徴である、コンテンションの監視をする監視ライブラリ206-1、監視ライブラリ206-2を実行する。
 OS205-1、OS205-2は、それぞれ、CPU201-1、CPU201-2にて動作するプログラムであり、ハイパーバイザ204-1、ハイパーバイザ204-2上で動作する。たとえば、OS205-1は、リアルタイムソフトウェア207をCPU201-1に割り当てて実行させるスレッドのスケジューラを持つ。
 監視ライブラリ206-1、監視ライブラリ206-2は、それぞれ、ハイパーバイザ204-1、ハイパーバイザ204-2上で動作するプログラムであり、共有メモリ203に対してアクセス競合によるコンテンションが発生していないかを監視する。監視の結果、コンテンションが発生している場合、監視ライブラリは、ハイパーバイザ間で情報を送信し、コンテンションを起こしたことを、他のハイパーバイザに送信する。
 リアルタイムソフトウェア207は、OS205-1によってCPU201-1に割り当てられたプログラムである。リアルタイムソフトウェアの具体例としては、通信パケット処理がある。通信パケット処理は、プロトコルの決められた時間以内に処理を行う必要があり、リアルタイム処理を要求される。ソフトウェア208は、OS205-2によってCPU201-2に割り当てられたプログラムである。ソフトウェア208は、リアルタイム処理を要求されていない。前述のように、本実施の形態では、CPU201-1にてリアルタイム処理の保証を必要とするソフトウェアを実行している状態を想定する。
 アクセス経路209は、CPU201-1がキャッシュメモリ202-1にアクセスする経路である。アクセス経路210は、CPU201-1が共有メモリ203にアクセスする経路である。アクセス経路209とアクセス経路210の違いとして、リアルタイムソフトウェア207がアクセスしたいデータがキャッシュメモリ202-1にあればアクセス経路209、なければアクセス経路210となる。アクセス経路211、アクセス経路212も同様で、アクセス経路211は、CPU201-2がキャッシュメモリ202-2にアクセスする経路である。アクセス経路212は、CPU201-2が共有メモリ203にアクセスする経路である。
 ハイパーバイザ間通信213は、ハイパーバイザ間でメッセージの送受信をする通信である。具体的には、たとえば、CPU201-1にて、リアルタイムソフトウェア207を実行中にコンテンション状態になった場合に、ハイパーバイザ204-1からハイパーバイザ204-2を含むすべてのハイパーバイザにメッセージをブロードキャスト送信する。
(マルチコアプロセッサシステムの機能的構成)
 次に、マルチコアプロセッサシステム100の機能的構成について説明する。図3は、マルチコアプロセッサシステム100の機能的構成を示すブロック図である。マルチコアプロセッサシステム100は、優先度検出部305と、発行命令効率算出部306と、コンテンション検出部307と、特定部308と、制御部311と、を含む構成である。この制御部となる機能(優先度検出部305~制御部311)は、具体的には、たとえば、図1に示したROM102、RAM103、フラッシュROM104などの記憶装置に記憶されたプログラムをCPUs101が実行することにより、その機能を実現する。
 また、CPU201-1、CPU201-2、・・・、CPU201-nは、ハイパーバイザとOS/ソフトウェアを実行する。さらに、一点破線で分割された領域のうち、領域301-1に図示している優先度検出部305~ハイパーバイザ間メッセージ送信部309は、CPU201-1がハイパーバイザ204-1の機能の一部として実行することにより実現する。同様に、領域301-2内に図示しているハイパーバイザ間メッセージ受信部310、制御部311は、CPU201-2が、ハイパーバイザ204-2の機能の一部として実行することにより実現する。
 また、図示していないが、CPU201-1以外のコアが実行しているハイパーバイザにも、優先度検出部305~ハイパーバイザ間メッセージ送信部309の機能を有している。同様に、CPU201-2以外のコアが実行しているハイパーバイザにも、ハイパーバイザ間メッセージ受信部310、制御部311の機能を有している。また、優先度検出部305~ハイパーバイザ間メッセージ送信部309は、監視ライブラリ206-1に相当する。同様に、ハイパーバイザ間メッセージ受信部310、制御部311は、監視ライブラリ206-2に相当する。
 また、領域302-1に図示しているOSスケジューラ監視部304-1、リアルタイムソフトウェア207、ソフトウェア312は、CPU201-1がOS205-1の機能の一部として実行することにより実現する。優先度テーブル303-1は、ハイパーバイザ204-1またはOS205-1からアクセスできるテーブルである。
 また、領域302-2に図示しているOSスケジューラ監視部304-2、ソフトウェア208、ソフトウェア313、nice値設定部314、ダミースレッド起動部315は、CPU201-2がOS205-2の機能の一部として実行することにより実現する。優先度テーブル303-2は、ハイパーバイザ204-2またはOS205-2からアクセスできるテーブルである。
 優先度テーブル303-1、優先度テーブル303-2は、マルチコアプロセッサシステム100で実行される処理と処理の優先度を関連付けて管理するテーブルである。優先度テーブル303-1の内容の詳細は、図7にて後述する。
 OSスケジューラ監視部304-1、OSスケジューラ監視部304-2は、CPU201-1、CPU201-2に割り当てるソフトウェアを監視する機能を有する。具体的には、たとえば、リアルタイムソフトウェア207がCPU201-1に割り当てられており、リアルタイムソフトウェア207がRAM103やフラッシュROM104上にある共有資源にアクセス要求する場合を想定する。
 この時、既に他のソフトウェアが共有資源を使用すると宣言中であった場合に、OSスケジューラ監視部304-1は、リアルタイムソフトウェア207の実行状態を待ち状態にする。続けて、OSスケジューラ監視部304-1は、実行可能状態となっていた別のソフトウェア、たとえばソフトウェア312を実行状態にして、CPU201-1に割り当てる。
 また、別の具体例として、たとえば、リアルタイムソフトウェア207が所定期間以上CPU201-1に割り当てられていた場合にも、OSスケジューラ監視部304-1は、別のソフトウェアをCPU201-1に割り当てる。また、前述のように、CPUに割り当てられたソフトウェアを切り替えることを、ディスパッチという。
 また、OSスケジューラ監視部304-1は、新しくソフトウェアを起動する際に、ソフトウェアの実行単位となるスレッドとして起動する。各スレッドは、スタック領域、プログラムカウンタを含むレジスタ情報等を持つ。OSスケジューラ監視部304-1は、ディスパッチを行うたびに、現在実行中のレジスタ情報等を共有メモリ203に退避し、次のソフトウェアのレジスタ情報等を共有メモリ203から取得し、CPUのレジスタ情報に設定する。
 また、マルチコアプロセッサシステム100は、スレッドの集合から、1つのプロセスを構成してもよい。スレッド間ではメモリ空間が共通であるが、プロセス間ではメモリ空間が独立しており、お互いのメモリ空間に直接アクセスできない。本実施の形態では、スレッドを用いて説明しているが、プロセスに置き換えてもよい。
 別のソフトウェアをCPU201-1に割り当てる際に、複数の割り当て候補となるソフトウェアが存在する場合、OSスケジューラ監視部304-1は、優先度テーブル303-1に基づいて割り当てを行ってもよい。また、OSスケジューラ監視部304-1は、それぞれのソフトウェアの割り当て時刻に基づいて、割り当て時刻が一番古いソフトウェアを割り当ててもよい。
 優先度検出部305は、複数のコアのうち、実行優先度が最も高い第1のコアを検出する機能を有する。ここでのコアは、CPUs101を構成しているCPU201-1、CPU201-2、・・・、CPU201-nに相当する。また、マルチコアプロセッサシステム100がASMPであり、リアルタイム処理が割り当てられたCPUが存在するならば、CPUによって第1のコアを検出してもよい。
 具体的には、たとえば、CPU201-1は、現在割り当てられているソフトウェアの優先度を、優先度テーブル303-1から取得し、優先度が“リアルタイム”の場合に、実行優先度が最も高い第1のコアとする。なお、検出した第1のコアの情報は、キャッシュメモリ202-1、CPU201-1の汎用レジスタなどの記憶領域に記憶される。
 発行命令効率算出部306は、コアごとに、コアが命令を発行した発行命令数とコアのサイクル数に基づいて、発行命令効率を算出する機能を有する。発行命令数は、所定時間内にCPUが命令を行った数である。発行命令数はCPUの特殊なレジスタである発行命令カウンタIに格納されており、ハイパーバイザは、スーパバイザモードに移行することにより、発行命令カウンタIの値を取得する。サイクル数は、所定時間内にCPUが入力されたクロックの数である。サイクル数はCPUのレジスタであるクロックカウンタCに格納されている。発行命令効率は、1命令にかかったクロック数であり、C/Iにて算出される。発行命令効率算出部306は、発行命令効率をI/Cとして算出し、後述する閾値τも逆数にして比較してもよい。
 具体的には、たとえば、ハイパーバイザ204-1が起動するたびに、CPU201-1は、C/Iを算出する。ハイパーバイザは、数十マイクロ秒~数ミリ秒に1回の間隔で実行されるため、その時間での発行命令カウンタIとクロックカウンタCを取得し、C/Iを算出する。なお、算出された発行命令効率は、キャッシュメモリ202-1、CPU201-1の汎用レジスタなどの記憶領域に記憶される。
 コンテンション検出部307は、発行命令効率算出部306によって算出された発行命令効率と所定の閾値とに基づいて、アクセス競合を検出する機能を有する。所定の閾値とは、仕様から設定できる値であり、τで表す。閾値τの具体的な設定方法は、図4にて後述する。具体的には、たとえば、発行命令数が閾値τより大きい場合、CPU201-1は、共有メモリ203に対するアクセス競合によるコンテンションが発生していることを検出する。なお、検出された結果は、キャッシュメモリ202-1、CPU201-1の汎用レジスタなどの記憶領域に記憶される。
 特定部308は、複数のコアのうち、優先度検出部305によって検出された第1のコアのうち、共有メモリ203に対してアクセス競合を発生させた第2のコアを特定する機能を有する。また、特定部308は、共有メモリ203に対してアクセス競合を発生させており第2のコアと競合する第3のコアを特定してもよい。アクセス競合によるコンテンション発生を検出する際にCPU201-1は、コンテンション検出部307によって検出してもよい。
 具体的には、たとえば、CPU201-1は、優先度検出部305によって“リアルタイム”であるCPUから、コンテンションを発生しているCPUを検出して、第2のコアとして特定する。また、CPU201-1は、複数のCPUからコンテンションを発生しているCPUを検出して、第3のコアとして特定してもよい。なお、特定された第2のコア、または第3のコアの情報は、キャッシュメモリ202-1、CPU201-1の汎用レジスタなどの記憶領域に記憶される。
 ハイパーバイザ間メッセージ送信部309は、他のハイパーバイザにメッセージをブロードキャスト送信する機能を有する。具体的には、たとえば、リアルタイム処理を行っており、コンテンション発生を検出したハイパーバイザ204-1は、バス108を通じてハイパーバイザ204-2や、その他のハイパーバイザに対して、メッセージをブロードキャスト送信する。なお、送信したメッセージの内容は、キャッシュメモリ202-1、CPU201-1の汎用レジスタなどの記憶領域に記憶されてもよい。
 ハイパーバイザ間メッセージ受信部310は、他のハイパーバイザが送信したメッセージを受信する機能を有する。具体的には、たとえば、ハイパーバイザ204-2は、リアルタイム処理を行っておりコンテンション発生を検出したハイパーバイザ204-1からメッセージを受信する。なお、受信したメッセージの内容は、キャッシュメモリ202-2、CPU201-2の汎用レジスタなどの記憶領域に記憶される。
 制御部311は、複数のコアのうち、第1のコアと特定部308によって特定された第2のコアを除いた第3のコアに対し、共有メモリ203にアクセスしないスレッドを実行するように制御する機能を有する。また、制御部311は、第2のコアを除いた第3のコアに対し、共有メモリ203にアクセスしないスレッドを実行するように制御してもよい。また、特定部308によって第3のコアが特定されている場合、制御部311は、特定された第3のコアに対し、共有メモリ203にアクセスしないスレッドを実行するように制御してもよい。
 また、共有メモリ203にアクセスしないスレッドを実行する期間は、アクセス競合が発生した期間のうち、所定の期間である。所定の期間とは、OS205-2が保持しているタイムスライスの値となる。また、所定の期間は、アクセス競合が発生した期間のうち、第3のコアに割り当てられていたスレッドと、共有メモリ203にアクセスしないスレッドとで、時分割した期間としてもよい。
 具体的には、たとえば、特定された第2のコアは、ハイパーバイザ間通信を行うため、メッセージを受信したCPUが第3のコアとなり、共有メモリ203にアクセスしないスレッドを実行するようにOSスケジューラ監視部304-2を制御する。制御内容としては、制御部311は、nice値設定部314か、または、ダミースレッド起動部315を実行するようにOSスケジューラ監視部304-2を制御する。
 nice値設定部314は、現在実行されているソフトウェアのnice値を設定する機能を有する。nice値とは、POSIX(Portable Operating System Interface for UNIX(登録商標))にて定義されているniceコマンドで設定する値である。niceコマンドによって設定値を変更することにより、OS205-2はソフトウェアの実行優先度を制御する。
 具体的には、たとえば、リアルタイム処理を要求されないソフトウェアに対して、nice値を上昇させると、優先度が低くなる。niceコマンドの実装の一例としては、OS205-2は、ソフトウェアの割り当て終了時刻にnice値を加算した値を算出する。次に、OSスケジューラ監視部304-2は、加算した値に基づいて、一番小さい値を持つソフトウェアをディスパッチ対象に決める、という方法をとってもよい。
 結果、対象のソフトウェアのnice値が大きいほど対象のソフトウェアの優先度が低くなる。したがって、もしOS205-2がPOSIX仕様に準拠していなく、niceコマンドが存在しない場合でも、前述の処理を加えることでnice値設定部314を実現してもよい。なお、設定された値は、RAM103、フラッシュROM104などの記憶領域に記憶される。
 ダミースレッド起動部315は、共有メモリ203にアクセスしないスレッドを生成する機能を有する。具体的には、たとえば、CPU201-2は、CPUに対して何も動作しないコードであるnopを一定時間行うスレッドを起動する。また、nice値設定部314とダミースレッド起動部315は、OSスケジューラ監視部304-2によってアクセス競合によるコンテンション発生の期間のうち少なくとも一部の期間中に実行する。
 図4は、コンテンション状態を示す説明図である。初めに、CPU201-1は、ハイパーバイザ204-1とリアルタイムソフトウェア207を実行しており、CPU201-2は、ハイパーバイザ204-2とソフトウェア208を実行している。それぞれのCPUは、実行中のソフトウェアによってキャッシュメモリにアクセスするか、または、共有メモリ203にアクセスする。
 ハイパーバイザは周期的に起動しており、起動間隔は、数十マイクロ秒から、数ミリ秒である。図4では、どちらのメモリにアクセスしたかという動作に従って、示した時間を、時間401、時間402、時間403に分割して示している。時間401と時間403にて、CPU201-1とCPU201-2は、リアルタイムソフトウェア207と、ソフトウェア208によって同時に共有メモリ203にアクセスしていないため、コンテンション状態とはならない。
 しかし、時間402にて、CPU201-1とCPU201-2は、同時に共有メモリ203にアクセスしているため、共有メモリ203に対してアクセス競合によるコンテンション状態となっている。コンテンション状態になると、CPU201-1は、メモリアクセスにかかる時間が数百サイクルとなり、リアルタイムソフトウェア207の処理遅延を発生させてしまう。結果、CPU201-1は、リアルタイムソフトウェア207に求められている時刻までに処理を終了することができない可能性があり、リアルタイム処理の保証を行えない状態となる。
 次に、リアルタイム処理の保証について説明する。リアルタイム処理は、決められた時間以内に応答を返す必要があり、その時間を、Δ[秒]とする。ここで、リアルタイム処理を行うCPU201-1のクロックサイクルをclk[1/秒]とする。したがって、時間Δを消費する間に許されるCPU201-1のクロックのカウント数はΔ・clk[個]となる。もしコンテンション状態になっており、CPU201-1がΔ・clk[個]のカウント数で1命令を実行できない場合に、リアルタイム処理の保証を行えないことになる。
 1命令あたりのクロック数は、一定時間内での発行命令カウンタIと、クロックカウンタCに基づいて、C/Iを算出することで求められる。ここで、閾値τを、τ=Δ・clkで示す。C/Iが閾値τ以下の場合、CPU201-1は、リアルタイム処理の保証を行える状態であり、C/Iが閾値τより大きい場合、CPU201-1は、リアルタイム処理の保証を行えない状態である。
 Δやclkは、仕様策定時に決定可能な値であるため、閾値τも仕様策定時に決定可能である。具体的には、たとえば、Δ=2[マイクロ秒]、clk=500[MHz]である場合、τ=1000となる。通常、CPU201-1は、共有メモリ203へのアクセスは数十カウント消費する。しかし、共有メモリ203へのアクセス競合によるコンテンション発生時には、数十~数百カウント消費し、CPU201-1の動作効率は最大でピーク時の30%にまで低減することがある。
 図5は、コンテンションが解消された状態を示す説明図である。図5も図4と同様に、CPU201-1は、ハイパーバイザ204-1とリアルタイムソフトウェア207を実行しており、CPU201-2は、ハイパーバイザ204-2とソフトウェア208を実行している。図4では、時間402にて、CPU201-1とCPU201-2が同時に共有メモリ203にアクセスし、アクセス競合によるコンテンションが発生していた。
 しかし、図5での時間402でのCPU201-2は、ソフトウェア208とダミースレッドを交互に実行することにより、アクセス競合によるコンテンションを解消している。結果、CPU201-1は、リアルタイムソフトウェア207に求められている時刻までに処理を終了することができ、リアルタイム処理を保証できる。
 図6は、本実施の形態を適用したマルチコアプロセッサシステム100の性能比を示す説明図である。図6の横軸は、バス108に設定したバッファ段数であり、縦軸は従来例のバッファ段数1を基準とした性能比である。従来例のバッファ段数1と等しい性能の場合、縦軸が1.00にプロットされることになる。本実施の形態にかかるマルチコアプロセッサシステム100に関して、バッファ段数ごとに、従来例との性能比をプロットして曲線で結んだ結果が曲線601である。また、Δ=1[ミリ秒]、clk=600[MHz]である。同様に、従来例にかかるマルチコアプロセッサシステムに関して、バッファ段数ごとに、従来例との性能比をプロットして曲線で結んだ結果が曲線602である。
 また、曲線601、曲線602は、従来例のバッファ段数1を基準として、それより性能比がよい場合には領域603に位置し、悪い場合には領域604に位置する。領域603に位置する場合、マルチコアプロセッサシステム100はリアルタイム処理を保証でき、領域604に位置する場合、リアルタイム処理を保証できないことになる。マルチコアプロセッサシステムは、バスのバッファ段数が増えるとバス利用の効率をあげることができるが、リアルタイム処理を保証することが難しくなる。
 従来例にかかる曲線602は、バッファ段数が5段以上では領域604に位置している。したがって、従来例にかかるマルチコアプロセッサシステムは、バッファ段数が5段以上になると、リアルタイム処理保証を行えない。本実施の形態にかかる曲線601では、バッファ段数が13段となるまで領域603に位置している。したがって、本実施の形態にかかるマルチコアプロセッサシステム100は、バッファ段数が13段まで、リアルタイム処理を保証することができる。
 図7は、優先度テーブル303-1の記憶内容の一例を示す説明図である。優先度テーブル303-1は、処理名称フィールドと、実行優先度フィールドで構成する。なお、優先度テーブル303-2も同様のデータが設定されている。処理名称フィールドは、具体的な処理の内容を記述している。実際には、処理内容を記述したプログラムがROM102、RAM103、フラッシュROM104のいずれかに存在し、CPU201-1は、プログラムをロードし、スレッドとして実行する。実行優先度フィールドは、対応する処理名称の実行する際の優先度を設定している。
 たとえば、“通信パケット受信”処理は、一定時間内にパケット処理を行わないと、タイムアウトになるため、リアルタイム処理を保証する必要がある。したがって、実行優先度フィールドは、“リアルタイム”となる。続けて、“描画レンダリング”処理は、通常の処理であって、リアルタイム処理を保証する必要がない。したがって、実行優先度フィールドは、“通常”となる。同様に、“UI入力”処理は、仕様によりユーザに対する応答時間を決められている場合、リアルタイム処理を保証する必要がある。“辞書の先読み検索”処理は、リアルタイム処理を保証する必要がない。
 コンテンションが起こる状態として、たとえば、マルチコアプロセッサシステム100が、Webブラウジング処理を行っている状態を想定する。前述の状態でCPU201-1は、通信パケット受信処理を実行しており、CPU201-2は、描画レンダリング処理を実行している。描画レンダリング処理は、メモリアクセスが多く、通信パケット受信処理と共有メモリ203に対するアクセス競合を起こす可能性が高い。
 本実施の形態を適用した状態では、前述の状態のようにアクセス競合によるコンテンションが発生した際に、CPU201-2が、OS205-2によって描画レンダリング処理のnice値を上昇させる。OS205-2は、nice値を上昇させた描画レンダリング処理をよりまばらになるようにCPU201-2に割り当てる。結果、マルチコアプロセッサシステム100は、アクセス競合によるコンテンションを回避でき、描画レンダリング処理のリアルタイム処理を保証できる。
 また別のコンテンション状態として、たとえば、マルチコアプロセッサシステム100が、ユーザからの文字入力を受け付けている状態を想定する。前述の状態で、CPU201-1は、UI入力処理を実行しており、CPU201-2は、辞書の先読み検索処理を実行している。辞書の先読み検索処理は、I/Oアクセスが多く、通信パケット受信処理と共有メモリ203に対するアクセス競合を起こす可能性が高い。
 本実施の形態を適用した状態では、前述の状態のようにアクセス競合によるコンテンションが発生した際に、CPU201-2が、OS205-2によって辞書の先読み検索処理のnice値を上昇させる。OS205-2は、nice値を上昇させた辞書の先読み検索処理をよりまばらになるようにCPU201-2に割り当てる。結果、マルチコアプロセッサシステム100は、アクセス競合によるコンテンションを回避でき、UI入力処理のリアルタイム処理を保証できる。
 図8は、ハイパーバイザによるメッセージ送信処理を示すフローチャートである。メッセージ送信処理は、ハイパーバイザが起動するたびに行われる。CPU201-1は、リアルタイムソフトウェアが実行中かを確認する(ステップS801)。リアルタイムソフトウェアが実行中の場合(ステップS801:Yes)、CPU201-1は、発行命令カウンタIを取得する(ステップS802)。続けて、CPU201-1は、クロックカウンタCを取得する(ステップS803)。取得後、CPU201-1は、コンテンション中かの判断値となるC/I値を算出する(ステップS804)。算出後、CPU201-1は、C/I値と閾値τを比較する(ステップS805)。
 C/I値が閾値τより大きい場合(ステップS805:Yes)、コンテンション中となり、CPU201-1は、nice値上昇メッセージを生成する(ステップS806)。このメッセージを受信したCPUは、現在動作中のソフトウェアのnice値を上昇させ、nice値が上昇したソフトウェアは優先度が下がるため、現在動作中のソフトウェアの実行をまばらにすることになる。
 生成後、CPU201-1は、ハイパーバイザ間にメッセージをブロードキャスト送信する(ステップS807)。送信後、CPU201-1は、通常のハイパーバイザ処理を実行し(ステップS810)、処理を終了する。C/I値が閾値τ以下の場合(ステップS805:No)、コンテンション中ではないことになり、CPU201-1は、ステップS810の処理を行い、処理を終了する。
 リアルタイムソフトウェアが実行中でない場合(ステップS801:No)、CPU201-1は、続けて、実行中のソフトウェアのnice値が初期値かを確認する(ステップS808)。初期値でない場合(ステップS808:No)、CPU201-1は、実行中のソフトウェアのnice値を初期値に設定し(ステップS809)、ステップS810の処理に移行する。nice値が初期値の場合(ステップS808:Yes)、CPU201-1は、ステップS810の処理に移行する。
 nice値が初期値でない場合、CPU201-1で実行していた処理がコンテンションの原因だったことを示しており、CPU201-1は、ステップS809の処理にて、コンテンション回避のために低下していた処理を元に戻すことができる。コンテンションを解決する場合、コンテンションの原因となっている処理を、OSのスケジューラが切り替え可能とする最小単位の時間で休止することで、コンテンションの解決を得られるケースが多い。もし、最小単位の時間で解決しないことが多い場合、CPU201-1は、ステップS808:Noの後にC/I値を算出し、閾値τと比較してコンテンションが解決したことを確認した後にステップS809の処理を実行してもよい。
 図9は、ハイパーバイザによるメッセージ受信処理を示すフローチャートである。CPU201-2は、ハイパーバイザ間のメッセージを受信する(ステップS901)。本実施の形態では、CPU201-1が送信したメッセージを受信する。次に、CPU201-2は、自身のCPUがメッセージをブロードキャストしたかを確認する(ステップS902)。
 ブロードキャストしている場合(ステップS902:Yes)、リアルタイム処理中でコンテンション中であり、スレッドの制御を行わないため、CPU201-2は、処理を終了する。ブロードキャストしていない場合(ステップS902:No)、コンテンションの原因となるので、CPU201-2は、共有メモリ203にアクセスしない処理を実行する。
 たとえば、CPU201-2は、現在動作中のソフトウェアのnice値を上昇させるようにOS205-2に指示する(ステップS903)。もし、nice値の機能を持っていないOSの場合、CPU201-2は、OS205-2に対してダミースレッドを起動させるよう指示してもよい。
 また、CPU201-2は、ステップS902:Noにて、リアルタイムソフトが動作していない場合、C/I値を算出し、C/I値と閾値τを比較しコンテンション中であった場合に、スレッドの制御を行ってもよい。この場合、C/I値の比較の分だけ処理が増加するが、コンテンションが発生しているCPUだけを対象にすることができる。
 また、本実施の形態では、CPU201-1は、メッセージ送信処理にて優先度をリアルタイム実行か否かという2段階で分けたうえでコンテンションのチェックをしたが、優先度を3段階以上に分けてコンテンションのチェックをしてもよい。
 その場合の処理を行う例として、CPU201-1は、優先度テーブル303-1の実行優先度フィールドの取りうる値を3段階以上にする。たとえば、“UI入力”処理の実行優先度が“リアルタイム”と“通常”の間である“高優先”であり、“辞書の先読み検索”処理の実行優先度が“通常”の下である“低優先”とする。さらに、メッセージ送信処理では、ステップS801の処理にて、「リアルタイムソフトウェアが実行中か?」を「低優先以外の優先度を持つソフトウェアが実行中か?」に置き換える。さらに、ステップS806の処理にて、メッセージの内容に、現在動作中のソフトウェアの優先度を付与する。
 続けて、メッセージ受信処理では、ステップS902:Noの処理の後とステップS903の処理の間に新たな条件として、「受信したメッセージの優先度が現在動作中のソフトウェアの優先度より高いか?」を付け加える。条件がYesの場合、実行主体となるCPUは、ステップS903の処理を行い、Noの場合には、ステップS903の処理を行わず処理を終了する。
 前述した処理の状態にて、たとえば、図7にて前述した高優先であるUI入力処理を実行しているCPUは、ステップS801にてYesとなり、ステップS807の処理にて他のコアにメッセージをブロードキャスト送信する。前述のメッセージを通常の優先度である描画レンダリングを実行しているCPUが受信した場合、「受信したメッセージの優先度が現在動作中のソフトウェアの優先度より高いか?」が、Yesとなり、ステップS903の処理を行い、nice値の制御を行う。
 もし、前述のメッセージをリアルタイム処理が要求される通信パケットを実行しているCPUが受信した場合、「受信したメッセージの優先度が現在動作中のソフトウェアの優先度より高いか?」が、Noとなるため、nice値の制御を行わない。このように、メッセージ送信処理を行うCPUは、優先度を3段階以上に分けてコンテンションのチェックを行い、メッセージ受信処理を行うCPUは、優先度の判断を加えることで、優先度の低い処理を行っているCPUの処理をまばらにする。これにより、マルチコアプロセッサシステム100は、優先度の高い処理を先に処理することができる。
 また、前述の実行優先度が3段階以上の処理の場合でステップS903を実行する際に、受信したメッセージの優先度と現在動作中のソフトウェアの優先度に基づいて、nice値の上昇させる値を設定してもよい。たとえば、受信したメッセージの優先度がリアルタイムであり、現在動作中のソフトウェアの優先度が通常であった場合、優先度が2段階離れているため、nice値を2上昇させる、という処理を行ってもよい。このように、ハイパーバイザ204-2によってnice値を段階的に制御することで、OS205-2は、優先度の低い処理ほど、よりまばらに実行することになり、CPU201-1に割り当てられているリアルタイム処理を先に処理することができる。
 また、実行優先度が2段階の状態においても、nice値の上昇させる値を2段階以上あげる処理を追加してもよい。具体的には、たとえば、CPU201-2が、メッセージ受信処理を受けてnice値を1上昇させた後に、nice値を初期値に戻す前に、メッセージ受信した場合である。この場合、nice値を上昇させたにもかかわらず、まだコンテンション状態であることを意味しているため、CPU201-2はさらにnice値を1上昇させるように設定することで、コンテンション状態がより解消しやすくなる。
 以上説明したように、マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラムによれば、リアルタイム処理でコンテンション中のCPUを特定する。そして、リアルタイム処理中のCPUと特定されたCPUを除いたすべてのCPUが、共有メモリにアクセスしないスレッドを実行するよう制御する。これにより、マルチコアプロセッサシステムは、リアルタイム処理を保証できる。
 また、マルチコアプロセッサシステムは、特定されたCPUを除いたすべてのCPUに対し、共有メモリにアクセスしないスレッドを実行してもよい。これにより、特定されたCPUから、特定されたCPUを除いたすべてのCPUに対して制御依頼をする際に、競合している相手を探さず、自身のCPU以外のすべてのCPUに制御依頼を行うことで検索処理を行わないため、処理を簡略化できる。
 また、マルチコアプロセッサシステムは、複数のCPUのうち、コンテンション中のCPUを特定し、特定されたCPUが、共有メモリにアクセスしないスレッドを実行するよう制御してもよい。これにより、マルチコアプロセッサシステムは、コンテンションを起こしたCPUのみスレッドを制御させ、コンテンションを起こしていないCPUに対しては、通常処理を続けさせることができる。
 また、マルチコアプロセッサシステムは、コンテンションが発生した期間のうち、スレッドを制御するCPUに対して、制御するCPUに割り当てられていたスレッドの実行時間と、メモリにアクセスしないスレッドの時間を、時分割で分割して割り当ててもよい。これにより、マルチコアプロセッサシステムは、コンテンションを解消し、また、制御するCPUに割り当てられていたスレッドの処理も行うことができる。
 また、マルチコアプロセッサシステムは、CPUごとに、CPUの命令を発行した発行命令数とCPUのサイクル数とに基づいて、発行命令効率を算出し、算出された発行命令効率と所定の閾値τに基づいて、コンテンションを検出してもよい。これにより、マルチコアプロセッサシステムは、アクセス競合によるコンテンションを検出することができ、リアルタイム処理を保証できる。
 また、マルチコアプロセッサシステムは、CPUに割り当てられたスレッドの実行優先度が最も高いコアを検出してもよい。これにより、マルチコアプロセッサシステムは、リアルタイム処理の保証を必要とするスレッドを決めておくことで、そのスレッドがどのCPUに割り当てられていても、コンテンションを解消しリアルタイム処理の保証を行うことができる。
 なお、本実施の形態で説明したスレッド制御方法は、予め用意されたプログラムをコンピュータで実行することにより実現することができる。本スレッド制御プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本スレッド制御プログラムは、インターネット等のネットワークを介して配布してもよい。
 201-1 CPU
 201-2 CPU
 301-1 領域
 301-2 領域
 302-1 領域
 302-2 領域
 303-1 優先度テーブル
 303-2 優先度テーブル
 304-1 OSスケジューラ監視部
 304-2 OSスケジューラ監視部
 305 優先度検出部
 306 発行命令効率算出部
 307 コンテンション検出部
 308 特定部
 309 ハイパーバイザ間メッセージ送信部
 310 ハイパーバイザ間メッセージ受信部
 311 制御部
 312 ソフトウェア
 313 ソフトウェア
 314 nice値設定部
 315 ダミースレッド起動部

Claims (8)

  1.  複数のコアと前記複数のコアからアクセス可能なメモリとを備えたマルチコアプロセッサシステムであって、
     前記複数のコアのうち、実行優先度が最も高い第1のコアを検出する検出手段と、
     前記検出手段によって検出された第1のコアのうち、前記メモリに対してアクセス競合を発生させた第2のコアを特定する特定手段と、
     前記複数のコアのうち、前記第1のコアと前記特定手段によって特定された第2のコアとを除いた第3のコアに対し、前記メモリにアクセスしないスレッドを、前記アクセス競合が発生した期間のうち、所定の期間実行するように制御する制御手段と、
     を備えることを特徴とするマルチコアプロセッサシステム。
  2.  前記制御手段は、
     前記複数のコアのうち、前記特定手段によって特定された第2のコアを除いた第3のコアに対し、前記メモリにアクセスしないスレッドを、前記アクセス競合が発生した期間のうち、所定の期間実行するように制御することを特徴とする請求項1に記載のマルチコアプロセッサシステム。
  3.  前記特定手段は、
     前記複数のコアのうち、前記メモリに対してアクセス競合を発生させており前記第2のコアと競合する第3のコアを特定し、
     前記制御手段は、
     前記特定手段によって特定された第3のコアに対し、前記メモリにアクセスしないスレッドを、前記アクセス競合が発生した期間のうち、所定の期間実行するように制御することを特徴とする請求項1に記載のマルチコアプロセッサシステム。
  4.  前記所定の期間は、前記アクセス競合が発生した期間のうち、前記第3のコアに割り当てられていたスレッドと、前記メモリにアクセスしないスレッドとで、時分割した期間であることを特徴とする請求項1~3のいずれか一つに記載のマルチコアプロセッサシステム。
  5.  前記コアごとに、当該コアが命令を発行した発行命令数と当該コアのサイクル数とに基づいて、発行命令効率を算出する算出手段と、
     前記算出手段によって算出された発行命令効率と所定の閾値とに基づいて、前記アクセス競合を検出する競合検出手段と、
     をさらに備えることを特徴とする請求項4に記載のマルチコアプロセッサシステム。
  6.  前記検出手段は、
     前記複数のコアのうち、当該コアに割り当てられたスレッドの実行優先度が最も高い第1のコアを検出することを特徴とする請求項5に記載のマルチコアプロセッサシステム。
  7.  複数のコアと前記複数のコアからアクセス可能なメモリと検出手段と、特定手段と、制御手段とを備えたマルチコアプロセッサシステムの前記コアが、
     前記検出手段により、前記複数のコアのうち、実行優先度が最も高い第1のコアを検出する検出工程と、
     前記特定工程により、前記検出工程によって検出された第1のコアのうち、前記メモリに対してアクセス競合を発生させた第2のコアを特定する特定工程と、
     前記制御手段により、前記複数のコアのうち、前記第1のコアと前記特定工程によって特定された第2のコアとを除いた第3のコアに対し、前記メモリにアクセスしないスレッドを、前記アクセス競合が発生した期間のうち、所定の期間実行するように制御指示する制御指示工程と、
     を実行することを特徴とするスレッド制御方法。
  8.  複数のコアと前記複数のコアからアクセス可能なメモリとを備えたマルチコアプロセッサシステムの前記コアを、
     前記複数のコアのうち、実行優先度が最も高い第1のコアを検出する検出手段、
     前記検出手段によって検出された第1のコアのうち、前記メモリに対してアクセス競合を発生させた第2のコアを特定する特定手段、
     前記複数のコアのうち、前記第1のコアと前記特定手段によって特定された第2のコアとを除いた第3のコアに対し、前記メモリにアクセスしないスレッドを、前記アクセス競合が発生した期間のうち、所定の期間実行するように制御指示する制御指示手段、
     として機能させることを特徴とするスレッド制御プログラム。
PCT/JP2010/052792 2010-02-23 2010-02-23 マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム Ceased WO2011104823A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
PCT/JP2010/052792 WO2011104823A1 (ja) 2010-02-23 2010-02-23 マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム
JP2012501562A JP5408330B2 (ja) 2010-02-23 2010-02-23 マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム
US13/569,725 US9311142B2 (en) 2010-02-23 2012-08-08 Controlling memory access conflict of threads on multi-core processor with set of highest priority processor cores based on a threshold value of issued-instruction efficiency
US15/057,383 US20160179429A1 (en) 2010-02-23 2016-03-01 Controlling memory access conflict of threads on multi-core processor with set of highest priority processor cores based on a threshold value of issued-instruction efficiency

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/052792 WO2011104823A1 (ja) 2010-02-23 2010-02-23 マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/569,725 Continuation US9311142B2 (en) 2010-02-23 2012-08-08 Controlling memory access conflict of threads on multi-core processor with set of highest priority processor cores based on a threshold value of issued-instruction efficiency

Publications (1)

Publication Number Publication Date
WO2011104823A1 true WO2011104823A1 (ja) 2011-09-01

Family

ID=44506270

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/052792 Ceased WO2011104823A1 (ja) 2010-02-23 2010-02-23 マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム

Country Status (3)

Country Link
US (2) US9311142B2 (ja)
JP (1) JP5408330B2 (ja)
WO (1) WO2011104823A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017073083A (ja) * 2015-10-09 2017-04-13 株式会社デンソー 並列化方法、並列化ツール、車載装置

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9736271B2 (en) * 2012-12-21 2017-08-15 Akamai Technologies, Inc. Scalable content delivery network request handling mechanism with usage-based billing
US9654579B2 (en) 2012-12-21 2017-05-16 Akamai Technologies, Inc. Scalable content delivery network request handling mechanism
US10585800B2 (en) 2017-06-16 2020-03-10 International Business Machines Corporation Reducing cache transfer overhead in a system
FR3075412B1 (fr) * 2017-12-20 2020-01-10 Thales Procede et systeme de controle d'ordonnancement de taches logicielles
US10831492B2 (en) 2018-07-05 2020-11-10 International Business Machines Corporation Most favored branch issue
US11263114B2 (en) * 2019-09-24 2022-03-01 International Business Machines Corporation Method and technique to find timing window problems
US11321123B2 (en) * 2019-11-21 2022-05-03 International Business Machines Corporation Determining an optimum number of threads to make available per core in a multi-core processor complex to executive tasks

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05225149A (ja) * 1992-02-13 1993-09-03 Toshiba Corp ロック方式
JPH1115793A (ja) * 1997-05-28 1999-01-22 Internatl Business Mach Corp <Ibm> 資源の保全性を保護する方法
JP2001084235A (ja) * 1999-09-10 2001-03-30 Nec Corp ロック粒度統計情報を利用した排他制御方法及びプログラムを記録した機械読み取り可能な記録媒体
JP2003030042A (ja) * 2001-07-11 2003-01-31 Fujitsu Ten Ltd 複数コア付マイクロコンピュータ装置
JP2008269578A (ja) * 2007-03-27 2008-11-06 Nec Corp 競合部分処理検出方法、装置及びコンピュータプログラム

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5202991A (en) * 1988-04-14 1993-04-13 Digital Equipment Corporation Reducing the effect processor blocking
JPH09330237A (ja) 1996-06-07 1997-12-22 Toshiba Corp プロセス切り替え装置およびプロセス切り替え方法
US7093109B1 (en) * 2000-04-04 2006-08-15 International Business Machines Corporation Network processor which makes thread execution control decisions based on latency event lengths
JP4394298B2 (ja) * 2001-02-20 2010-01-06 日本電気株式会社 マルチプロセッサシステムとその共有メモリ制御方法、及び共有メモリ制御プログラム
US7441242B2 (en) * 2004-04-22 2008-10-21 International Business Machines Corporation Monitoring performance of a logically-partitioned computer
US7401206B2 (en) * 2004-06-30 2008-07-15 Sun Microsystems, Inc. Apparatus and method for fine-grained multithreading in a multipipelined processor core
US20060036810A1 (en) * 2004-08-12 2006-02-16 International Business Machines Corporation System, application and method of reducing cache thrashing in a multi-processor with a shared cache on which a disruptive process is executing
US20060112208A1 (en) * 2004-11-22 2006-05-25 International Business Machines Corporation Interrupt thresholding for SMT and multi processor systems
JP2007241918A (ja) * 2006-03-13 2007-09-20 Fujitsu Ltd プロセッサ装置
US8345053B2 (en) * 2006-09-21 2013-01-01 Qualcomm Incorporated Graphics processors with parallel scheduling and execution of threads
US9081605B2 (en) 2007-03-27 2015-07-14 Nec Corporation Conflicting sub-process identification method, apparatus and computer program
US8886918B2 (en) * 2007-11-28 2014-11-11 International Business Machines Corporation Dynamic instruction execution based on transaction priority tagging
US8544006B2 (en) * 2007-12-19 2013-09-24 International Business Machines Corporation Resolving conflicts by restarting execution of failed discretely executable subcomponent using register and memory values generated by main component after the occurrence of a conflict
GB2458487B (en) * 2008-03-19 2011-01-19 Imagination Tech Ltd Pipeline processors
US9244732B2 (en) * 2009-08-28 2016-01-26 Vmware, Inc. Compensating threads for microarchitectural resource contentions by prioritizing scheduling and execution
US8190930B2 (en) * 2009-03-30 2012-05-29 Intel Corporation Methods and apparatuses for controlling thread contention

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05225149A (ja) * 1992-02-13 1993-09-03 Toshiba Corp ロック方式
JPH1115793A (ja) * 1997-05-28 1999-01-22 Internatl Business Mach Corp <Ibm> 資源の保全性を保護する方法
JP2001084235A (ja) * 1999-09-10 2001-03-30 Nec Corp ロック粒度統計情報を利用した排他制御方法及びプログラムを記録した機械読み取り可能な記録媒体
JP2003030042A (ja) * 2001-07-11 2003-01-31 Fujitsu Ten Ltd 複数コア付マイクロコンピュータ装置
JP2008269578A (ja) * 2007-03-27 2008-11-06 Nec Corp 競合部分処理検出方法、装置及びコンピュータプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
HIROSHI SASAKI ET AL.: "CMP no Tokeiteki Modeling ni yoru Jikkoji Saitekika Shuho", INFORMATION PROCESSING SOCIETY OF JAPAN KENKYU HOKOKU, vol. 2008, no. 75, 29 July 2008 (2008-07-29), pages 31 - 36 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017073083A (ja) * 2015-10-09 2017-04-13 株式会社デンソー 並列化方法、並列化ツール、車載装置

Also Published As

Publication number Publication date
JPWO2011104823A1 (ja) 2013-06-17
US9311142B2 (en) 2016-04-12
JP5408330B2 (ja) 2014-02-05
US20120304183A1 (en) 2012-11-29
US20160179429A1 (en) 2016-06-23

Similar Documents

Publication Publication Date Title
JP5408330B2 (ja) マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム
JP4702127B2 (ja) 仮想計算機システム及びその物理リソース再構成方法並びにプログラム
US8544010B2 (en) Providing notification to speculatively waking up target virtual machine for an I/O event using multiple virtual machines and processors
US9063783B2 (en) Coordinating parallel execution of processes using agents
US11474712B2 (en) Method, apparatus, device and storage medium for managing access request
US20070204268A1 (en) Methods and systems for scheduling processes in a multi-core processor environment
CN102822802B (zh) 多核处理器系统以及控制方法
US8589938B2 (en) Composite contention aware task scheduling
WO2014015725A1 (zh) 基于应用效果即时反馈的显卡虚拟化下资源调度系统、方法
JP2009140157A (ja) 仮想計算機システム、仮想計算機の制御方法及びプログラム
US9189293B2 (en) Computer, virtualization mechanism, and scheduling method
JP5660149B2 (ja) 情報処理装置、ジョブスケジューリング方法およびジョブスケジューリングプログラム
US20180260257A1 (en) Pld management method and pld management system
JP2009223842A (ja) 仮想計算機制御プログラム及び仮想計算機システム
US20130125131A1 (en) Multi-core processor system, thread control method, and computer product
CN117472570A (zh) 用于调度加速器资源的方法、装置、电子设备和介质
US9690619B2 (en) Thread processing method and thread processing system for setting for each thread priority level of access right to access shared memory
JP5601414B2 (ja) マルチコアプロセッサシステム、制御方法、および制御プログラム
US9367326B2 (en) Multiprocessor system and task allocation method
KR20110018618A (ko) 다중 쓰레드의 비동기 입출력 처리 장치 및 그 방법
WO2010137092A1 (ja) マルチオペレーティングシステム制御方法及びプロセッサシステム
JP5376042B2 (ja) マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム
US9354929B2 (en) Shut down real time domain when last real time process terminates on a core
JP5582241B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム
JP4878050B2 (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: 10846490

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2012501562

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 10846490

Country of ref document: EP

Kind code of ref document: A1