WO2011114495A1 - マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム - Google Patents
マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム Download PDFInfo
- Publication number
- WO2011114495A1 WO2011114495A1 PCT/JP2010/054708 JP2010054708W WO2011114495A1 WO 2011114495 A1 WO2011114495 A1 WO 2011114495A1 JP 2010054708 W JP2010054708 W JP 2010054708W WO 2011114495 A1 WO2011114495 A1 WO 2011114495A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- cpu
- switching time
- time
- core
- switching
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 45
- 238000012937 correction Methods 0.000 claims description 38
- 238000001514 detection method Methods 0.000 claims description 19
- 238000012545 processing Methods 0.000 description 87
- 230000004044 response Effects 0.000 description 32
- 230000008569 process Effects 0.000 description 30
- 230000006870 function Effects 0.000 description 22
- 238000004891 communication Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 12
- 230000004913 activation Effects 0.000 description 5
- 230000003111 delayed effect Effects 0.000 description 5
- 230000007423 decrease Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000005764 inhibitory process Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000004904 shortening Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4825—Interrupt from clock, e.g. time of day
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/486—Scheduler internals
Definitions
- the present invention relates to a multi-core processor system that controls thread switching, a thread switching control method, and a thread switching control program.
- an OS Operating System
- processes and threads are program execution units.
- Software consists of a collection of processes and threads. In general, the memory space is independent between processes, and the memory space is shared between threads.
- 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 CPUs.
- 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.
- a multi-core processor system having a centralized shared system structure has a problem that the completion time of real-time processing exceeds a predetermined time when it enters a contention state due to access contention.
- 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 switching control method, and a thread switching control program that guarantee the response performance of real-time processing in order to solve the above-described problems caused by the prior art.
- the disclosed multi-core processor system switches a plurality of threads assigned to each of a plurality of cores at a predetermined switching time, and switches a plurality of threads over a predetermined switching time by switching.
- the core that has switched threads is identified, and the predetermined switching time is corrected to be shortened based on the difference between the actual switching time in which switching of multiple threads in the identified core and the predetermined switching time are performed. It is a requirement to set the corrected switching time to a predetermined switching time.
- the multi-core processor system, the thread switching control method, and the thread switching control program have the effect of ensuring the response performance of real-time processing.
- FIG. 2 is a block diagram showing a hardware configuration and a 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 the dispatch state of the software in the case of performing with a single CPU. It is explanatory drawing which shows the delay of the real-time response by the contention state in the multi-core processor system 100 in a prior art example. It is explanatory drawing which shows the state after correct
- 3 is an explanatory diagram illustrating an example of stored contents of a software table 310. It is explanatory drawing which shows an example of real-time processing.
- 4 is a flowchart showing time slice setting processing including thread switching in the multi-core processor system 100. It is a flowchart which shows the time slice correction process by a hypervisor.
- FIG. 1 is a block diagram showing a hardware configuration of a multi-core processor system 100 according to the present 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 100.
- 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 the hardware configuration and software configuration of each CPU 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 dispatcher 206 under the control of the OS 205-1.
- the CPU 201-1 executes software 207-1 to software 207-m 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-1 executes the dispatcher 206 under the control of the OS 205-1.
- the hypervisor 204-1 also performs time slice correction processing, which is a feature of this embodiment, using the result of the dispatcher 206.
- the CPU 201-2 executes the high priority software 209 under the control of the OS 205-2.
- the hypervisor 204-1, the hypervisor 204-2, and the hypervisor operating on another CPU perform the hypervisor communication 214.
- 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
- real-time processing 208 that needs to be processed within the time determined by the CPU 201-1 is assigned.
- 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 CPU 201-1 and CPU 201-2 are accessing the shared memory 203, the CPU 201-1 and CPU 201-2 are also shared when accessing the I / F 106. It is included in accessing the memory 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 hypervisor operates special registers that perform processor cache control and I / O operations that cannot be performed by general programs.
- the hypervisor operates using a space on a memory that cannot be read and written by a general program.
- 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 scheduler function for determining software to be executed next.
- the dispatcher 206 has a function of switching the currently operating software to the next software determined by the scheduler. Specifically, for example, when the scheduler switches from the software 207-1 to the software 207-2, the CPU 201-1 saves register information including a program counter of the software 207-1. After saving, the CPU 201-1 restores the saved register information of the software 207-2. After the return, the CPU 201-1 can continue the processing of the software 207-2 from the time of the previous switching.
- Software 207-1,..., Software 207-m realizes a certain function by the CPU executing the execution code.
- the software is composed of one or more threads.
- the software 207-1,..., Software 207-m executes processing regardless of the end time.
- the real-time process 208 is an interrupt handler that is a process to be performed when an interrupt signal is received.
- the interrupt includes a hardware interrupt and a software interrupt.
- the communication device notifies the CPU of reception of data as an interrupt signal.
- the CPU executes an interrupt handler corresponding to the data reception of the communication device.
- received data is transferred from the storage area of the communication device to the RAM 103 and the flash ROM 104.
- the CPU that has received the interrupt signal saves the processing of the current thread and executes the interrupt handler if it is not in the interrupt prohibition period.
- the high priority software 209 is software to which a high priority attribute is assigned.
- High priority software has a feature that dispatch frequency is higher than other software. In addition, it has a feature that an access right can be acquired with high priority when resource contention occurs due to memory access or the like.
- software 207-1,..., Software 207-m and real-time processing 208 are executed by CPU 201-1 and high priority software 209 is executed by CPU 201-2.
- Specific examples of the software 207-1 to software 207-m and the high priority software 209 will be described later with reference to FIG.
- a specific example of the real-time processing 208 will be described later with reference to FIG.
- the access path 210 is a path for the CPU 201-1 to access the cache memory 202-1.
- the access path 211 is a path for the CPU 201-1 to access the shared memory 203.
- the access path 210 is used, and if there is no data, the access path 211 is set.
- the access path 212 is a path through which the CPU 201-2 accesses the cache memory 202-2.
- the access path 213 is a path for the CPU 201-2 to access the shared memory 203.
- Contention due to access conflict occurs when a plurality of CPUs access the shared memory 203.
- the access path of the CPU 201-1 is the access path 211 and the access path of the CPU 201-2 is the access path 213, contention due to access conflict with the shared memory 203 occurs.
- FIG. 3 is a block diagram showing a functional configuration of the multi-core processor system 100.
- the multi-core processor system 100 includes a detection unit 303, a specifying unit 304, a correction unit 305, a setting notification unit 306, a determination unit 307, a switching unit 308, and a setting unit 309.
- the functions (detection unit 303 to setting unit 309) serving as the control unit are executed by the CPUs 101, for example, by executing a program stored in a storage device such as the ROM 102, the RAM 103, and the flash ROM 104 illustrated in FIG. By realizing the function. Alternatively, the function may be realized by another CPU executing via the I / F 106.
- the multi-core processor system 100 accesses the software table 310 in order to determine the priority of software.
- the software table 310 is stored in the shared memory 203 and is accessed by, for example, the CPU 201-1.
- the CPU 201-1, CPU 201-2,..., CPU 201-n execute a hypervisor and OS / software.
- the detection unit 303 to the determination unit 307 illustrated in the area 301 are realized by the CPU 201-1 executing as a part of the function of the hypervisor 204-1.
- the switching unit 308 and the setting unit 309 illustrated in the area 302 are realized by the CPU 201-1 being executed as a part of the function of the OS 205-1.
- the cores other than the CPU 201-1 have the functions of the detection unit 303 to the setting unit 309.
- the detecting unit 303 has a function of detecting a core to which an arbitrary thread is assigned among a plurality of cores.
- the plurality of cores are CPU 201-1 to CPU 201-n. Specifically, for example, the detection unit 303 detects that the high priority software 209 is assigned to the CPU 201-2 by the inter-hypervisor communication 214.
- the detected core information is stored in the cache memory 202-1 or a storage area such as a general-purpose register of the CPU 201-1.
- the identifying unit 304 has a function of identifying a core in which a plurality of threads are switched over a predetermined switching time by the switching unit 308 among the plurality of cores.
- the predetermined switching time is a time slice and is a switching time ⁇ t for switching threads.
- the plurality of threads are software 207-1 to software 207-m executed on the CPU 201-1.
- the specifying unit 304 may specify the core by using the detection of the core by the detecting unit 303 as a trigger. Further, the specifying unit 304 is triggered by the detection of the core by the detection unit 303, and the priority of the thread assigned to the core detected by the detection unit 303 is determined from the priority of the thread after being switched by the switching unit 308. If the degree is high, the core may be specified.
- the specifying unit 304 switches the software assigned to the CPU 201-1 by the switching unit 308 from software 207-1 to software 207-m.
- the CPU is identified as a CPU that has switched a plurality of threads over a predetermined switching time.
- the method of obtaining the time ⁇ C assigned to the software 207-1 is obtained from the difference between the clock counter at the time when the software 207-1 is assigned and the clock counter at the time when the software 207-2 is assigned. be able to.
- the specified core information is stored in a storage area such as the cache memory 202-1 or a general-purpose register of the CPU 201-1.
- the correcting unit 305 has a function of correcting the predetermined switching time to be shortened based on the difference between the actual switching time in which a plurality of threads are switched in the core specified by the specifying unit 304 and the predetermined switching time. Have. Further, the correction unit 305 may perform correction so that the predetermined switching time is shortened based on the difference when the difference exceeds a predetermined interrupt inhibition time.
- the predetermined interrupt prohibition time is the longest path time lck (Locked Critical Kidapping-period) of the prohibited section set by the implementation rules. Details of lck will be described later with reference to FIG.
- the following formula (1) may be applied as an application example of the calculation formula for the switching time corrected to be shortened based on the difference.
- Corrected switching time predetermined switching time-(actual switching time-predetermined switching time) ... (1)
- the contention is delayed and the delay time is set as the thread switching shortening.
- the delay time decreases the interrupt event detection interval, and the interrupt event detection frequency increases.
- the response performance of real-time processing can be guaranteed.
- the following formula (2) may be applied when the difference exceeds a predetermined interrupt inhibition time.
- equation (2) if the delay time does not exceed the predetermined interrupt prohibition time, the response performance of real-time processing can be guaranteed according to the implementation rules. Therefore, the corrected switching time decrease is suppressed more than in equation (1). Yes. If the thread switching time is too small, performance degradation occurs due to thread dispatch overhead. Therefore, if it is possible to satisfy the response performance of real-time processing, equation (2) may be used.
- the calculation formula is not limited to the formulas (1) and (2), and the corrected switching time may be reduced.
- the corrected switching time is stored in a storage area such as the cache memory 202-1 or a general-purpose register of the CPU 201-1.
- the setting notification unit 306 has a function of notifying the OS of the switching time corrected by the correction unit 305.
- the setting notification unit 306 may notify the corrected switching time to be set to the switching time before correction. Further, as a specific notification content, the setting notification unit 306 may notify a difference that is (actual switching time ⁇ predetermined switching time). In addition, when the determination unit 307 determines that there is no access conflict, the setting notification unit 306 may notify the switching time before correction.
- the setting notification unit 306 transmits the switching time 7 [microseconds] corrected by the correction unit 305 to the OS.
- the notified switching time is stored in a storage area such as the cache memory 202-1 or a general-purpose register of the CPU 201-1.
- the determining unit 307 has a function of determining whether or not there is an access conflict regarding the memory accessed by the core specified by the specifying unit 304. Specifically, for example, the CPU 201-1 calculates the number of clock counters / issued instructions based on the number of issued instructions issued by the CPU for a certain period and the record of the clock counter. The CPU 201-1 determines that access competition is occurring when the calculated value is larger than a certain value.
- the switching unit 308 has a function of switching a plurality of threads assigned to each of a plurality of cores at a predetermined switching time. Specifically, for example, the switching unit 308 switches the software 207-1 to software 207-m with a predetermined switching time ⁇ t. When the setting unit 309 shortens the switching time from ⁇ t to ⁇ t ′, the switching unit 308 switches the software 207-1 to software 207-m at ⁇ t ′. Note that the information of the switched software may be stored in a storage area such as the shared memory 203.
- the setting unit 309 has a function of setting the corrected switching time notified by the setting notification unit 306 as the thread switching time.
- the setting unit 309 may set a predetermined switching time before correction when the setting notification unit 306 is notified of the switching time before correction.
- the setting unit 309 sets the corrected switching time ⁇ t ′ as the thread switching time.
- the set thread switching time may be stored in a storage area such as the shared memory 203.
- FIG. 4 is an explanatory diagram showing a software dispatch state when executed by a single CPU.
- the CPU 201-1 is executing in the multi-core processor system 100, and the CPU 201-1 executes software 207-1 to software 207-m.
- the CPU 201-1 executes the software 207-1 to software 207-m sequentially at the thread switching time ⁇ t, and executes the real-time processing 208 as an interrupt handler when a real-time interrupt is received.
- an interrupt event is an event that has received an interrupt signal. Even if an interrupt event occurs, when the CPU is in the interrupt-prohibited section, the real-time processing cannot be executed immediately, and after the interrupt-prohibited section ends, the CPU can perform real-time processing.
- the time 402 from when the interrupt event occurs until the current time becomes the timing 401 when the interrupt event is picked up and the real-time processing 208 is performed must be within the real-time interrupt interval.
- the time 403 that is an interval for performing the real-time processing 208 needs to be a real-time response time.
- an interrupt prohibition section is embedded in the processing of software 207-1 to software 207-m.
- the reason for embedding the interrupt-prohibited section is that, for example, intentional cache operations and register saving / restoring processes must be performed continuously without interrupting other processes.
- the CPU in the interrupt prohibited section cannot execute preemption such as context switch.
- the longest path time lck of the prohibited section is set in the form of an implementation rule, and the implementer implements software so that the interrupt prohibited section does not exceed lck.
- the implementer sets lck so as to guarantee real-time processing within the real-time interrupt interval and real-time response time even if an interrupt occurs in the interrupt prohibition interval. Therefore, when executing with a single CPU, the response performance of real-time processing can be guaranteed even if an interrupt event occurs during the interrupt-prohibited period.
- FIG. 5 is an explanatory diagram showing the delay of the real-time response depending on the contention state in the multi-core processor system 100 in the conventional example.
- the CPU 201-1 and CPU 201-2 are executing in the multi-core processor system 100, and the CPU 201-1 executes software 207-1 to software 207-m.
- the CPU 201-1 executes the software 207-1 to software 207-m sequentially at the thread switching time ⁇ t, and executes the real-time processing 208 as an interrupt handler when a real-time interrupt is received.
- the CPU 201-2 executes the high priority software 209.
- the multi-core processor system 100 preferentially allocates various resources to the high priority software 209. Specifically, for example, a case where the CPU 201-1 and the CPU 201-2 access the shared memory 203 at the same time is assumed. At this time, the multi-core processor system 100 controls the CPU 201-2 executing the high priority software 209 to preferentially access the shared memory 203.
- the CPU 201-1 waits for the access completion of the CPU 201-2, and enters a contention state in access contention.
- the processing of the CPU 201-1 in the contention state is delayed. If the processing is delayed, the interrupt disabled section is also delayed. As a result of the delay, the response performance of real-time processing cannot be guaranteed when the interrupt prohibition interval exceeds lck.
- the multi-core processor system 100 cannot guarantee the response performance of the real-time process. Further, even when the time 503 that is the interval for performing the real-time processing 208 exceeds the real-time response time, the multi-core processor system 100 cannot guarantee the response performance of the real-time processing.
- FIG. 6 is an explanatory diagram showing a state after the time slice is corrected in the multi-core processor system 100 according to the present embodiment.
- the execution state of the hardware and software is the same as in FIG. 5, but the CPU 201-1 is corrected so as to shorten the thread switching time from ⁇ t to ⁇ t ′.
- the multi-core processor system 100 can easily guarantee the response performance of real-time processing.
- real-time processing is performed within the real-time interrupt interval and real-time processing is performed within the real-time response time.
- the reason that real-time processing can be performed within the real-time interrupt interval is that the interval for detecting interrupt events is shortened and the frequency of detecting interrupt events is increased by reducing the thread switching time. Therefore, from the occurrence of the interrupt event, the current time becomes the timing 601 for picking up the interrupt event, and the time 602 until the real-time processing 208 is executed is shortened and can be made smaller than the real-time interrupt interval.
- the reason why the real-time processing can be performed within the real-time response time is that the number of processing times of the threads executed in the CPU increases due to the reduction of the thread switching time. Specifically, for example, it is assumed that there is a CPU executing 200 threads and the processing time for one thread is 10 [microseconds]. An interrupt event that triggers execution of real-time processing is assumed to be generated by execution of a specific thread out of 200 threads.
- every thread can perform processing once every 2 [milliseconds].
- the processing time of one thread becomes longer due to the contention state, the number of times a specific thread is processed increases by reducing the thread switching time.
- the time 603 serving as the interval for performing the real-time processing 208 can be made shorter than the real-time response time.
- FIG. 7 is an explanatory diagram showing an example of the contents stored in the software table 310.
- the software table 310 stores a list of software executed in the multi-core processor system 100.
- the software table 310 includes two fields, software name and priority.
- Software name field describes the name of the software. Actually, a program describing the processing contents exists in any of the ROM 102, the RAM 103, and the flash ROM 104. For example, the CPU 201-1 loads the program and executes it as a thread. In the priority field, a priority for executing the corresponding software is set. When detecting software with high priority, the multi-core processor system 100 preferentially passes the access right of the bus 108 to software with high priority.
- “moving image playback software” has a high priority when it is activated by the user and is executed in the foreground.
- “Web browser” has a low priority.
- the multi-core processor system 100 having a camera unit continuously performs photographing. Since continuous shooting is performed, “camera image storage software” for storing camera images has a high priority. “Camera shooting software” has a low priority.
- FIG. 8 is an explanatory diagram showing an example of real-time processing.
- Communication interrupt processing is real-time processing executed in response to an interrupt event from hardware that controls communication, such as the I / F 106. Communication is caused by software such as a “Web browser”.
- the I / F 106 receives data, it is necessary to send a response notification indicating that the data has been received to a device that has transmitted the data within a predetermined time depending on the data protocol. If the processing is not performed within a certain time, the device that transmitted the data determines that a timeout has occurred, and thus the multi-core processor system 100 needs to perform the processing within the certain time.
- Camera unit interrupt processing is real-time processing executed by the camera unit.
- image data is captured by “camera imaging software” and stored in a buffer. If the CPU 201-1 does not transfer the stored video data from the buffer to, for example, the shared memory 203, a data overflow occurs and image data is lost.
- Communication interrupt processing and “Camera unit interrupt processing” described above work without problems in a system that operates while switching tasks with a single core.
- the multi-core processor system 100 in the conventional example when one CPU executes real-time processing and another CPU executes high-priority software, it becomes a contention state due to access contention, and the response performance of real-time processing is improved. Cannot guarantee.
- FIG. 9 is a flowchart showing time slice setting processing including thread switching in the multi-core processor system 100.
- the CPUs 101 are switching the threads one after another.
- the CPU 201-1 sets the thread switching time to ⁇ t by the OS 205-1 (step S901).
- the CPU 201-2 similarly sets the thread switching time to ⁇ t.
- the CPU 201-1 activates the hypervisor 204-1 (step S902).
- the hypervisor 204-1 is activated at a constant cycle.
- the CPU 201-2 activates the hypervisor 204-2 (step S903).
- the CPU 201-1 switches the thread using the OS 205-1 (step S904). Although not shown, the CPU 201-2 similarly switches threads.
- the CPU 201-1 detects the thread activation by the function of the hypervisor 204-1 (step S905). Further, it is assumed that the high-priority software 209 is activated in the CPU 201-2. After starting the high priority software 209, the CPU 201-2 detects the high priority thread activation by the function of the hypervisor 204-2 (step S906). After the detection, the CPU 201-2 notifies all the hypervisors including the hypervisor 204-1 that the activation of the high priority thread has been detected by communication between the hypervisors (step S907). Similarly, the CPU 201-1 notifies the hypervisor 204-2 that the activation of the thread has been detected by communication between the hypervisors (step S908).
- the CPU 201-1 executes time slice correction processing by the hypervisor 204-1 (step S909). Details of the time slice correction processing will be described later with reference to FIG.
- the CPU 201-1 may be in a contention state because the high priority thread is activated by a CPU other than the CPU 201-1. In the contention state, the CPU 201-1 notifies the OS 205-1 of the difference ⁇ within the time slice correction process.
- the CPU 201-1 executes normal hypervisor processing by the hypervisor 204-1 (step S911), and terminates execution of the hypervisor 204-1 (step S913). After the execution is completed, the CPU 201-1 proceeds to the process of step S902 after a certain period.
- the CPU 201-2 executes time slice correction processing by the hypervisor 204-2 (step S910).
- the CPU 201-2 does not enter the contention state and does not notify the OS 205-2 because the high priority thread is not activated by a CPU other than the CPU 201-2.
- the CPU 201-2 executes normal hypervisor processing by the hypervisor 204-2 (step S912), and terminates execution of the hypervisor 204-2 (step S914).
- the CPU 201-2 proceeds to the process of step S903 after a certain period.
- FIG. 10 is a flowchart showing time slice correction processing by the hypervisor.
- the time slice correction process is executed by any CPU belonging to the CPUs 101.
- FIG. 10 illustrates a state executed by the CPU 201-1.
- the time slice correction process is executed by the function of the hypervisor.
- the CPU 201-1 determines whether the thread is activated by another CPU (step S1001). As for the detection of thread activation, the CPU 201-1 detects it by communication between hypervisors, which is the process of step S908 performed before the time slice correction process. If it is determined that the thread is activated by another CPU (step S1001: Yes), the CPU 201-1 continues to determine whether the priority of the thread activated by the other CPU is higher than the priority of the thread of this CPU. (Step S1002). This CPU is a CPU that becomes an execution subject, and corresponds to the CPU 201-1 in the description of FIG.
- step S1005 determines whether the contention state has been resolved.
- step S1005 sets 0 to the difference ⁇ (step S1008).
- the CPU records the number of issued instructions and the clock counter of the CPU for a certain period. Subsequently, the CPU calculates the number of clock counters / issued instructions, determines that the contention state is continuing if the calculated value is greater than a certain value, and determines if the calculated value is less than the certain value. It is determined that the tension state has been resolved.
- step S1002 When the priority of the thread activated by another CPU is not higher than the thread of this CPU, or when ⁇ t is larger than ⁇ C (step S1002: No, step S1004: Yes), the CPU 201-1 performs the process of step S1005. Transition.
- step S1006 the CPU 201-1 determines whether the calculated difference ⁇ is longer than the longest path time lck of the interrupt prohibited section (step S1007).
- step S1007: Yes the difference ⁇ is larger than lck
- step S1009 the CPU 201-1 notifies the OS of the difference ⁇
- step S1009 the CPU 201-1 ends the time slice correction process. If the difference ⁇ is equal to or less than lck (step S1007: No), or if the contention state has not been resolved (step S1005: No), the CPU 201-1 ends the time slice correction process.
- the operation log may be analyzed and determined. Further, when there is no profiler or debugger, the determination may be made by analyzing the execution performance when the software is individually executed and when the software is executed simultaneously.
- the multi-core processor system As described above, according to the multi-core processor system, the thread switching control method, and the thread switching control program, a CPU that has switched a plurality of threads over a predetermined switching time is specified. After the identification, the multi-core processor system sets the thread switching time based on the difference between the actual switching time when the thread is switched and a predetermined switching time. As a result, the detection frequency increases as the interrupt event detection interval decreases, so that the response performance of real-time processing can be guaranteed.
- the multi-core processor system may specify a CPU that has switched a plurality of threads over a predetermined switching time, triggered by detection of a CPU to which an arbitrary thread is assigned. Since contention due to access contention occurs when a thread is assigned by a plurality of CPUs, it can be executed at the best timing for time slice correction by using the thread assignment as a trigger.
- the multi-core processor system triggers detection of a CPU to which an arbitrary thread is assigned. Thereafter, when the priority of the thread assigned to the detected CPU is higher than the priority of the thread after switching of the CPU that has switched, the multi-core processor system switches a plurality of threads over a predetermined switching time. You may identify the CPU which performed.
- Contention due to access contention occurs when threads are assigned by multiple CPUs, one CPU is assigned a high priority thread, and the other CPU is assigned a low priority thread. To do. Therefore, by checking whether the priority of the thread assigned to the detected CPU is higher than the priority of the thread after the switching of the CPU that has performed the switching, the CPU to which time slice correction is performed is minimized. It can be narrowed down to.
- the multi-core processor system may correct so that the predetermined switching time is shortened when the difference between the actual switching time and the predetermined switching time exceeds a predetermined interrupt prohibition time.
- the multi-core processor system is designed to guarantee the response performance of real-time processing as long as the difference between the actual switching time and the predetermined switching time does not exceed the predetermined interrupt inhibition time. Therefore, by correcting the time slice when the difference exceeds a predetermined interrupt prohibition time, it is possible to correct the time slice only when there is a possibility that the response performance of the real-time processing is broken.
- the multi-core processor system may set the corrected switching time as the switching time before correction when there is no access contention for the CPU whose time slice is corrected.
- the correction of the time slice can be canceled by determining whether there is an access conflict without acquiring the actual switching time and comparing it with the predetermined switching time.
- the thread switching control method described in the present embodiment can be realized by executing a program prepared in advance on a computer such as a personal computer or a workstation.
- the thread switching 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 switching control program may be distributed through a network such as the Internet.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Hardware Redundancy (AREA)
Abstract
CPU(201-1)は、切替部(308)によって、複数のスレッドとしてソフトウェア(207-1)~ソフトウェア(207-m)を所定の切り替え時間で切り替えている。CPU(201-1)は、特定部(304)によって、CPU(201-1)が切替部(304)によって所定の切り替え時間を越えてスレッドの切り替えを行ったかを特定する。CPU(201-1)が特定された場合、CPU(201-1)は、補正部(305)によって複数のスレッドの切り替えを行った実切り替え時間と所定の切り替え時間との差分に基づいて、所定の切り替え時間が短縮するように補正する。CPU(201-1)は、設定部(309)によって、補正した切り替え時間をスレッドの切り替え時間に設定する。
Description
本発明は、スレッド切り替えを制御するマルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラムに関する。
従来から、1つのCPU(Central Processing Unit)に対して、複数のプログラムを動作させるマルチプログラミング技術が存在する。具体的には、OS(Operating System)は、CPUの処理時間を分割する機能を有し、分割された時間にプロセスやスレッドを割り当てることにより、CPUが同時に複数のプロセスやスレッドを動作する。ここで、プロセスやスレッドはプログラムの実行単位である。ソフトウェアは、プロセスやスレッドの集まりにて構成されている。また一般的に、プロセス間ではメモリ空間が独立しており、スレッド間ではメモリ空間を共有する。
スレッドの切り替え時間の変更を使用する技術として、スレッド数が多いときに切り替え時間を短くするように変更することで、各スレッドの処理回数を増やし、CPUのリソースを各スレッドに配分するという技術が開示されている(たとえば、下記特許文献1を参照。)。
また、コンピュータシステムに複数のCPUを搭載するマルチコアプロセッサシステムの技術も開示されている。これにより、前述のマルチプログラミング技術において、OSは複数のプログラムを複数のCPUに対して割り当てることができる。また、マルチコアプロセッサシステムの構成として、各CPUが専用のメモリを保持し、それ以外のデータが必要の場合には、共有メモリにアクセスを行うことを特徴とする、分散システムの構造を持ったマルチコアプロセッサシステムが開示されている。また、各CPUがキャッシュメモリのみを保持し、必要なデータは共有メモリに格納することを特徴とする、集中共用システムの構造を持ったマルチコアプロセッサシステムも開示されている。
マルチコアプロセッサシステムでのスレッドの切り替え技術として、タイムスライスで実行する特定のプロセスと高優先プロセスとの衝突後、再開した際に遅延分をタイムスライスに加算して特定のプロセスを再開するという技術が開示されている(たとえば、下記特許文献2を参照。)。
しかしながら、上述した従来技術において、集中共用システムの構造を持つマルチコアプロセッサシステムは、アクセス競合によるコンテンション状態となると、リアルタイム処理の完了時間が決められた時間を超過するという問題があった。リアルタイム処理とは、設計上あらかじめ決められた時刻に処理を終了しなければならない処理、および割り込み動作における、割り込みイベント発生から割り込み処理本体の開始時間までの許容されるインターバル時間が定められた処理をさす。
特許文献1および2にかかる技術を適用しても、アクセス競合によるコンテンション状態の判断をしておらず、コンテンション状態ではリアルタイム処理の応答性能が破たんするという問題があった。
本発明は、上述した従来技術による問題点を解消するため、リアルタイム処理の応答性能を保証するマルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するため、開示のマルチコアプロセッサシステムは、複数のコアのおのおのに割り当てた複数のスレッドを所定の切り替え時間で切り替え、切り替えによって所定の切り替え時間を越えて複数のスレッドの切り替えを行ったコアを特定し、特定されたコアにおいて複数のスレッドの切り替えを行った実切り替え時間と所定の切り替え時間との差分に基づいて、所定の切り替え時間が短縮するように補正し、補正された切り替え時間を所定の切り替え時間に設定することを要件とする。
本マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラムによれば、リアルタイム処理の応答性能を保証できるという効果を奏する。
以下に添付図面を参照して、本発明にかかるマルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラムの好適な実施の形態を詳細に説明する。
(マルチコアプロセッサシステムのハードウェア構成)
図1は、本実施の形態にかかるマルチコアプロセッサシステム100のハードウェア構成を示すブロック図である。マルチコアプロセッサシステムとは、コアが複数搭載されたプロセッサを含むコンピュータのシステムである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、説明を単純化するため、シングルコアのプロセッサであるCPUが並列されているプロセッサ群を例にあげて説明する。
図1は、本実施の形態にかかるマルチコアプロセッサシステム100のハードウェア構成を示すブロック図である。マルチコアプロセッサシステムとは、コアが複数搭載されたプロセッサを含むコンピュータのシステムである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、説明を単純化するため、シングルコアのプロセッサであるCPUが並列されているプロセッサ群を例にあげて説明する。
マルチコアプロセッサシステム100は、CPUを複数搭載するCPUs101と、ROM(Read‐Only Memory)102と、RAM(Random Access Memory)103と、フラッシュROM104と、を備えている。また、マルチコアプロセッサシステム100は、ユーザやその他の機器との入出力装置として、ディスプレイ105と、I/F(Interface)106と、を備えている。また、各構成部はバス108によってそれぞれ接続されている。本実施の形態にかかるハードウェアの構成は、集中共用システムを適用した構成となっている。
ここで、CPUs101は、マルチコアプロセッサシステム100の全体の制御を司る。また、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は、OS205-1の制御により、ディスパッチャ206を実行する。同様に、CPU201-1は、OS205-1の制御により、ソフトウェア207-1~ソフトウェア207-mを実行する。同様にCPU201-2も、ハイパーバイザ204-2、OS205-2を実行する。CPU201-1は、OS205-1の制御により、ディスパッチャ206を実行する。また、ハイパーバイザ204-1も、ディスパッチャ206の結果を用いて、本実施の形態での特徴である、タイムスライス補正処理を行う。CPU201-2は、OS205-2の制御により、高優先度ソフトウェア209を実行する。
CPU201-1がソフトウェア207-1~ソフトウェア207-mを実行する際には、データへのアクセス先が2通りあり、アクセス経路210とアクセス経路211である。同様に、CPU201-2が高優先度ソフトウェア209を実行する際にも、データへのアクセス先が2通りあり、アクセス経路212とアクセス経路213である。また、ハイパーバイザ204-1とハイパーバイザ204-2と、他のCPU上で動作しているハイパーバイザは、ハイパーバイザ間通信214を行う。
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にて決められた時間以内に処理を行う必要があるリアルタイム処理208を割り当てている。
Multi-processing)でもよい。また、CPU201-1、CPU201-2、・・・、CPU201-nは、処理内容によって分担するCPUを決めておくASMP(Asymmetric Multi-Processing)でもよい。ASMPの例として、本実施の形態にかかるマルチコアプロセッサシステム100では、CPU201-1にて決められた時間以内に処理を行う必要があるリアルタイム処理208を割り当てている。
共有メモリ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からみると共有メモリ203にアクセスしていることとなるため、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が何もスレッドを実行していない場合に、省電力設定にする。また、ハイパーバイザは、一般のプログラムでは操作できないプロセッサのキャッシュ制御やI/O操作を行うような特殊レジスタを操作する。また、ハイパーバイザは、一般のプログラムでは読み書きできないメモリ上の空間を用いて動作を行う。
OS205-1、OS205-2は、それぞれ、CPU201-1、CPU201-2にて動作するプログラムであり、ハイパーバイザ204-1、ハイパーバイザ204-2上で動作する。たとえば、OS205-1は、次に実行するソフトウェアを決めるスケジューラの機能を有する。
ディスパッチャ206は、現在動作中のソフトウェアに対して、スケジューラによって決定した次のソフトウェアに切り替える機能を有する。具体的には、たとえば、スケジューラは、ソフトウェア207-1からソフトウェア207-2に切り替える場合、CPU201-1は、ソフトウェア207-1のプログラムカウンタ等を含むレジスタ情報を退避する。退避後、CPU201-1は退避されてあったソフトウェア207-2のレジスタ情報を復帰する。復帰後、CPU201-1は、ソフトウェア207-2の処理を前回の切り替えられた時点から継続することができる。
ソフトウェア207-1、・・・、ソフトウェア207-mは、実行コードをCPUが実行することによりある機能を実現する。ソフトウェアは、1つ以上のスレッドで構成される。ソフトウェア207-1、・・・、ソフトウェア207-mは、終了時間に関係なく、処理を実行する。
リアルタイム処理208は、割り込み信号を受信した際に行う処理となる割り込みハンドラである。割り込みにはハードウェア割り込みとソフトウェア割り込みとがあり、たとえば、ハードウェア割り込みでは、通信デバイスがデータの受信を割り込み信号としてCPUに通知する。通知を受けたCPUは、通信デバイスのデータ受信に対応した割り込みハンドラを実行する。具体的な割り込みハンドラの処理内容としては、受信したデータを通信デバイスの記憶領域からRAM103、フラッシュROM104に転送する処理である。割り込み信号を受信したCPUは、割り込み禁止区間でなければ現在のスレッドの処理を退避し、割り込みハンドラを実行する。
高優先度ソフトウェア209は、ソフトウェアのうち高優先度属性が付与されているソフトウェアである。高優先度のソフトウェアは、ディスパッチ頻度が他のソフトウェアよりも高くなるといった特徴を持つ。また、メモリアクセスなどでリソース競合が起きたときに高優先度でアクセス権を獲得できるといった特徴を持つ。
本実施の形態では、ソフトウェア207-1、・・・、ソフトウェア207-mとリアルタイム処理208はCPU201-1にて実行され、高優先度ソフトウェア209はCPU201-2にて実行される。ソフトウェア207-1~ソフトウェア207-m、高優先度ソフトウェア209の具体例については、図7にて後述する。同様に、リアルタイム処理208の具体例については、図8にて後述する。
アクセス経路210は、CPU201-1がキャッシュメモリ202-1にアクセスする経路である。アクセス経路211は、CPU201-1が共有メモリ203にアクセスする経路である。アクセス経路210とアクセス経路211の違いとして、たとえば、ソフトウェア207-1がアクセスしたいデータがキャッシュメモリ202-1にあればアクセス経路210、なければアクセス経路211となる。アクセス経路212、アクセス経路213も同様で、アクセス経路212は、CPU201-2がキャッシュメモリ202-2にアクセスする経路である。アクセス経路213は、CPU201-2が共有メモリ203にアクセスする経路である。
アクセス競合によるコンテンションは、複数のCPUが共有メモリ203にアクセスすることで発生する。たとえば、CPU201-1のアクセス経路がアクセス経路211、CPU201-2のアクセス経路がアクセス経路213であるときに、共有メモリ203へのアクセス競合によるコンテンションが発生する。
コンテンションが発生すると、ソフトウェアの処理が遅延することになり、ソフトウェアの処理内に存在する割り込み禁止区間も初期状態よりも長くなってしまう。割り込み禁止区間時に割り込み信号がCPUに通知されても、割り込みハンドラであるリアルタイム処理208を実行できないため、リアルタイム処理208の応答性能の保証を行えない状態となる。コンテンション状態となり、リアルタイム処理208の応答時間の保証が行えない状態を後述する図5にて示す。
(マルチコアプロセッサシステム100の機能的構成)
次に、マルチコアプロセッサシステム100の機能的構成について説明する。図3は、マルチコアプロセッサシステム100の機能的構成を示すブロック図である。マルチコアプロセッサシステム100は、検出部303と、特定部304と、補正部305と、設定通知部306と、判断部307と、切替部308と、設定部309と、を含む構成である。この制御部となる機能(検出部303~設定部309)は、具体的には、たとえば、図1に示したROM102、RAM103、フラッシュROM104などの記憶装置に記憶されたプログラムをCPUs101が実行することにより、その機能を実現する。または、I/F106を経由して他のCPUが実行することにより、その機能を実現してもよい。
次に、マルチコアプロセッサシステム100の機能的構成について説明する。図3は、マルチコアプロセッサシステム100の機能的構成を示すブロック図である。マルチコアプロセッサシステム100は、検出部303と、特定部304と、補正部305と、設定通知部306と、判断部307と、切替部308と、設定部309と、を含む構成である。この制御部となる機能(検出部303~設定部309)は、具体的には、たとえば、図1に示したROM102、RAM103、フラッシュROM104などの記憶装置に記憶されたプログラムをCPUs101が実行することにより、その機能を実現する。または、I/F106を経由して他のCPUが実行することにより、その機能を実現してもよい。
また、マルチコアプロセッサシステム100は、ソフトウェアの優先度を判断するために、ソフトウェアテーブル310にアクセスする。ソフトウェアテーブル310は共有メモリ203に格納されており、たとえばCPU201-1がアクセスする。
また、CPU201-1、CPU201-2、・・・、CPU201-nは、ハイパーバイザとOS/ソフトウェアを実行する。さらに、一点破線で分割された領域のうち、領域301に図示している検出部303~判断部307は、CPU201-1がハイパーバイザ204-1の機能の一部として実行することにより実現する。同様に、領域302内に図示している切替部308、設定部309は、CPU201-1が、OS205-1の機能の一部として実行することにより実現する。また、図示していないが、CPU201-1以外のコアにも、検出部303~設定部309の機能を有している。
検出部303は、複数のコアのうち、任意のスレッドが割り当てられたコアを検出する機能を有する。複数のコアとは、CPU201-1~CPU201-nである。具体的には、たとえば、検出部303は、CPU201-2に高優先度ソフトウェア209が割り当てられたことをハイパーバイザ間通信214によって検出する。なお、検出されたコアの情報は、キャッシュメモリ202-1、または、CPU201-1の汎用レジスタなどの記憶領域に記憶される。
特定部304は、複数のコアのうち、切替部308によって所定の切り替え時間を越えて複数のスレッドの切り替えを行ったコアを特定する機能を有する。所定の切り替え時間とは、タイムスライスのことであり、スレッドを切り替える切替時間Δtのことである。複数のスレッドとは、CPU201-1上で実行されるソフトウェア207-1~ソフトウェア207-mである。
また、特定部304は、検出部303によってコアが検出されたことをトリガーとしてコアを特定してもよい。また、特定部304は、検出部303によってコアが検出されたことをトリガーとし、切替部308によって切り替えられた後のスレッドの優先度より検出部303によって検出されたコアに割り当てられたスレッドの優先度が高い場合に、コアを特定してもよい。
具体的には、たとえば、特定部304は、切替部308によってCPU201-1に割り当てるソフトウェアをソフトウェア207-1~ソフトウェア207-mに切り替えた場合を想定する。このとき、ソフトウェア207-1に割り当てられた時間ΔCがΔtを越えた場合に、所定の切り替え時間を越えて複数のスレッドの切り替えを行ったCPUとして特定する。
また、ソフトウェア207-1に割り当てられた時間ΔCの取得方法は、ソフトウェア207-1が割り当てられた時点でのクロックカウンタと、ソフトウェア207-2が割り当てられた時点でのクロックカウンタの差分から取得することができる。なお、特定されたコアの情報は、キャッシュメモリ202-1、または、CPU201-1の汎用レジスタなどの記憶領域に記憶される。
補正部305は、特定部304によって特定されたコアにおいて複数のスレッドの切り替えを行った実切り替え時間と所定の切り替え時間との差分に基づいて、所定の切り替え時間が短縮するように補正する機能を有する。また、補正部305は、差分が所定の割り込み禁止時間を越えた場合に、差分に基づいて所定の切り替え時間が短縮するように補正してもよい。所定の割り込み禁止時間とは、実装規約で設定される禁止区間の最長パス時間lck(Locked Critical Kidnapping-period)である。lckの詳細については、図4にて後述する。
差分に基づいて、短縮するように補正された切り替え時間の算出式の適用例としては、下記(1)式を適用してもよい。
補正された切り替え時間=所定の切り替え時間-(実切り替え時間-所定の切り替え時間) …(1)
(1)式では、コンテンション中となり遅延した時間をスレッド切り替えの短縮分に設定することになる。遅延した時間分が割り込みイベントの検出間隔の減少となり、割り込みイベントの検出頻度が増加した結果、リアルタイム処理の応答性能の保証ができるようになる。また、算出式は、差分が所定の割り込み禁止時間を越えた場合に、下記(2)式を適用してもよい。
補正された切り替え時間=所定の切り替え時間-((実切り替え時間-所定の切り替え時間)-所定の割り込み禁止時間) …(2)
(2)式では、遅延時間が所定の割り込み禁止時間を越えなければ、実装規約によって、リアルタイム処理の応答性能を保証できることから、補正された切り替え時間の減少分を(1)式よりも抑えている。スレッドの切り替え時間を小さくしすぎると、スレッドのディスパッチオーバーヘッドによる性能劣化を伴うため、リアルタイム処理の応答性能を満たすことが可能ならば、(2)式を使用してもよい。算出式は、(1)式、(2)式に限らず、補正された切り替え時間が減少すればよい。
具体的には、たとえば、実切り替え時間が13[マイクロ秒]であり、所定の切り替え時間が10[マイクロ秒]であった場合、差分は3[マイクロ秒]となり、補正された切り替え時間は(1)式から、7[マイクロ秒]となる。なお、補正された切り替え時間は、キャッシュメモリ202-1、または、CPU201-1の汎用レジスタなどの記憶領域に記憶される。
設定通知部306は、補正部305によって補正された切り替え時間をOSに通知する機能を有する。また、設定通知部306は、判断部307によって、アクセス競合中でないと判断された場合、補正された切り替え時間を補正前の切り替え時間に設定するように通知してもよい。また、通知内容の具体的として、設定通知部306は、(実切り替え時間-所定の切り替え時間)である差分を通知してもよい。また、判断部307によってアクセス競合中でないと判断された場合に、設定通知部306は、補正前の切り替え時間を通知してもよい。
具体的には、たとえば、設定通知部306は、補正部305によって補正された切り替え時間7[マイクロ秒]をOSに送信する。なお、通知された切り替え時間は、キャッシュメモリ202-1、または、CPU201-1の汎用レジスタなどの記憶領域に記憶される。
判断部307は、特定部304によって特定されたコアがアクセスするメモリに関してアクセス競合中か否かを判断する機能を有する。具体的には、たとえば、CPU201-1は、一定期間のCPUが発行した発行命令数とクロックカウンタの記録を元にクロックカウンタ/発行命令数を算出する。CPU201-1は、算出された値が一定値より大きい場合にアクセス競合中であると判断する。
具体的には、たとえば、(クロックカウンタ/発行命令数)>1000となった場合、1つの命令に1000クロック消費していることになりアクセス競合を発生していると判断する。なお、判断結果は、キャッシュメモリ202-1、または、CPU201-1の汎用レジスタなどの記憶領域に記憶される。
切替部308は、複数のコアのおのおのに割り当てた複数のスレッドを所定の切り替え時間で切り替える機能を有する。具体的には、たとえば、切替部308は、ソフトウェア207-1~ソフトウェア207-mを所定の切り替え時間Δtで切り替える。また、設定部309によって切り替え時間がΔtからΔt’に短縮した場合、切替部308は、Δt’にてソフトウェア207-1~ソフトウェア207-mを切り替える。なお、切り替えたソフトウェアの情報は、共有メモリ203などの記憶領域に記憶されてもよい。
設定部309は、設定通知部306によって通知された、補正された切り替え時間をスレッドの切り替え時間に設定する機能を有する。また、設定部309は、設定通知部306によって補正前の切り替え時間が通知されてきた場合に、補正前となる所定の切り替え時間に設定してもよい。
具体的には、たとえば、設定通知部306によって補正された切り替え時間Δt’が通知されてきた場合、設定部309は、スレッドの切り替え時間として補正された切り替え時間Δt’を設定する。なお、設定されたスレッドの切り替え時間は、共有メモリ203などの記憶領域に記憶されてもよい。
図4は、単一のCPUで実行している場合のソフトウェアのディスパッチ状態を示す説明図である。図4では、マルチコアプロセッサシステム100の中でCPU201-1が実行中であり、CPU201-1は、ソフトウェア207-1~ソフトウェア207-mを実行する。CPU201-1は、スレッドの切り替え時間Δtでソフトウェア207-1~ソフトウェア207-mを順次実行しつつ、リアルタイム割り込みを受信したら割込みハンドラとしてリアルタイム処理208を実行する。
また、マルチコアプロセッサシステム100がリアルタイム処理の応答性能を保証するには、以下の2つの時間以内にリアルタイム処理を行う必要がある。1つ目の条件として、割り込みイベントが発生後、CPU201-1はリアルタイム割り込み間隔以内に割り込みイベントに対応したリアルタイム処理を実行する必要がある。2つ目の条件として、CPU201-1はリアルタイム応答時間内に少なくとも1回リアルタイム処理を行う必要がある。割り込みイベントとは、割り込み信号を受信したイベントである。また、割り込みイベントが発生しても、CPUが割り込み禁止区間であるときはすぐにリアルタイム処理を実行することができず、割り込み禁止区間が終了した後に、CPUはリアルタイム処理が行えるようになる。
具体的に、図4の状態では、割り込みイベントの発生から現在時刻が割り込みイベントを拾うタイミング401となりリアルタイム処理208を行うまでの時間402が、リアルタイム割り込み間隔以内である必要がある。さらに、リアルタイム処理208を行う間隔となる時間403が、リアルタイム応答時間である必要がある。一般的にリアルタイム割り込み間隔はマイクロ秒オーダであり、リアルタイム応答時間は数ミリ秒である。数値例としては、リアルタイム割り込み間隔=10[マイクロ秒]、リアルタイム応答時間=10[ミリ秒]である。
また、ソフトウェア207-1~ソフトウェア207-mの処理の中には、割り込み禁止区間が埋め込まれている。割込み禁止区間を埋め込む理由としては、たとえば、意図的なキャッシュ操作やレジスタの退避復元処理などは、他の処理が割り込まない状態で連続して処理を行う必要があるためである。割り込み禁止区間中のCPUは、コンテキストスイッチなどのプリエンプションが実行できなくなる。割り込み禁止区間の設定については、システム設計の段階で、実装規約という形で禁止区間の最長パス時間lckを設定し、実装者は、割り込み禁止区間がlckを越えないようにソフトウェアの実装を行う。
割り込み禁止区間がlckを越えない限り、割り込み禁止区間にて割り込みが発生したとしても、リアルタイム割り込み間隔、および、リアルタイム応答時間内でのリアルタイム処理を保証するように実装者はlckを設定する。したがって、単一のCPUで実行している場合には、割り込み禁止区間中に割り込みイベントが発生しても、リアルタイム処理の応答性能を保証することができる。
図5は、従来例におけるマルチコアプロセッサシステム100にて、コンテンション状態によるリアルタイム応答の遅延を示す説明図である。図5では、マルチコアプロセッサシステム100の中でCPU201-1とCPU201-2が実行中であり、CPU201-1は、ソフトウェア207-1~ソフトウェア207-mを実行する。CPU201-1は、スレッドの切り替え時間Δtでソフトウェア207-1~ソフトウェア207-mを順次実行しつつ、リアルタイム割り込みを受信したら割込みハンドラとしてリアルタイム処理208を実行する。CPU201-2は、高優先度ソフトウェア209を実行する。
CPU201-2にて、高優先度ソフトウェア209を実行しているため、マルチコアプロセッサシステム100は、各種リソースを高優先度ソフトウェア209に優先的に割り当てる。具体的には、たとえば、CPU201-1とCPU201-2が同時に共有メモリ203にアクセスした場合を想定する。このときマルチコアプロセッサシステム100は、高優先度ソフトウェア209を実行しているCPU201-2が優先的に共有メモリ203にアクセスするように制御する。
したがって、CPU201-1は、CPU201-2のアクセス完了を待つことになり、アクセス競合におけるコンテンション状態となる。コンテンション状態となったCPU201-1は、処理が遅延することになる。処理が遅延すると、割り込み禁止区間も遅延することになる。遅延した結果、割り込み禁止区間がlckを越えた場合に、リアルタイム処理の応答性能を保証することができなくなる。
図5の例では、割り込みイベントが発生し、現在時刻が割り込みイベントを拾うタイミング501となった際、CPU201-1は割り込み禁止区間となっている。したがって、CPU201-1は、リアルタイム処理208をすぐに実行できず、割り込み禁止区間の終了後にリアルタイム処理208を実行する。
結果、割り込みイベント発生からリアルタイム処理208実行までの時間502がリアルタイム割り込み間隔を越えた場合に、マルチコアプロセッサシステム100はリアルタイム処理の応答性能を保証できなくなる。また、リアルタイム処理208を行う間隔となる時間503がリアルタイム応答時間を越えた場合にも、マルチコアプロセッサシステム100はリアルタイム処理の応答性能を保証できなくなる。
図6は、本実施の形態におけるマルチコアプロセッサシステム100にて、タイムスライスを補正した後の状態を示す説明図である。図6では、ハードウェアとソフトウェアの実行状態は図5と等しいが、CPU201-1にて、ΔtからΔt’へと、スレッドの切り替え時間が短縮するように補正されている。
スレッドの切り替え時間が短縮された結果、マルチコアプロセッサシステム100がリアルタイム処理の応答性能を保証しやすくなる。応答性能の保証を満たすには、図4にて前述したように、リアルタイム割り込み間隔以内にリアルタイム処理を行うことと、リアルタイム応答時間内にリアルタイム処理を行うことである。
リアルタイム割り込み間隔以内にリアルタイム処理を行えるようになる理由は、スレッドの切り替え時間が短縮することにより、割り込みイベントを検出する間隔が短くなり、割り込みイベントを検出する頻度があがるためである。したがって割り込みイベントの発生から、現在時刻が割り込みイベントを拾うタイミング601となり、リアルタイム処理208を実行するまでの時間602が短くなり、リアルタイム割り込み間隔より小さくすることができる。
リアルタイム応答時間以内にリアルタイム処理を行えるようになる理由は、スレッドの切り替え時間が短縮することにより、CPU内で実行しているスレッドの処理回数が増えるためである。具体的には、たとえば、スレッドを200個実行しているCPUが存在し、スレッド1回の処理時間が10[マイクロ秒]であったと想定する。また、リアルタイム処理を実行する契機となる割り込みイベントは、200個のスレッドのうちの特定のスレッドの実行によって発生するものとする。
この場合、スレッドの優先度がすべて等しい場合、2[ミリ秒]に1回は、どのスレッドも処理を行えることになる。スレッド1回の処理時間がコンテンション状態により長くなった場合に、スレッドの切り替え時間が短縮することにより、特定のスレッドの処理が行われる回数が増えることになる。結果、リアルタイム処理208を行う間隔となる時間603はリアルタイム応答時間より小さくすることができる。
図7は、ソフトウェアテーブル310の記憶内容の一例を示す説明図である。ソフトウェアテーブル310はマルチコアプロセッサシステム100にて実行されるソフトウェアの一覧を格納する。ソフトウェアテーブル310は、ソフトウェア名称と、優先度という2つのフィールドで構成する。
ソフトウェア名称フィールドは、ソフトウェアの名称を記述している。実際には、処理内容を記述したプログラムがROM102、RAM103、フラッシュROM104のいずれかに存在し、たとえば、CPU201-1は、プログラムをロードし、スレッドとして実行する。優先度フィールドは、対応するソフトウェアを実行する際の優先度を設定している。優先度が高いソフトウェアを検出すると、マルチコアプロセッサシステム100は、バス108のアクセス権などを優先度が高いソフトウェアに優先的に渡す。
具体的には、たとえば、“動画像再生ソフトウェア”は、ユーザによって起動され、フォアグラウンドで実行している場合には、高優先度となる。また、“Webブラウザ”は低優先度となる。また、別のパターンとして、カメラユニットを持つマルチコアプロセッサシステム100が連続して撮影を行うことを想定する。連続して撮影を行うため、カメラの画像を保存する“カメラ画像保存ソフトウェア”は高優先度となる。また、“カメラ撮影ソフトウェア”は低優先度となる。
図8は、リアルタイム処理の一例を示す説明図である。“通信割り込み処理”は、通信を司るハードウェア、たとえばI/F106からの割り込みイベントに対して実行されるリアルタイム処理である。また、通信は、たとえば“Webブラウザ”等のソフトウェアによって引き起こされる。I/F106はデータを受信した場合、データのプロトコルによっては受信したという応答通知を一定時間内にデータを送信した機器に送信する必要がある。一定時間内に処理を行わないと、データを送信した機器はタイムアウトと判断するため、マルチコアプロセッサシステム100は、一定時間内に処理を行う必要がある。
また、“カメラユニット割り込み処理”は、カメラユニットにより実行されるリアルタイム処理である。カメラユニット割り込み処理は“カメラ撮影ソフトウェア”によって画像データを撮影し、バッファに格納する。CPU201-1が、格納された映像データをバッファからたとえば共有メモリ203に転送しないと、データオーバーフローが発生し、画像データをとりこぼすことになる。
前述した“通信割り込み処理”、“カメラユニット割り込み処理”は、シングルコアでタスクスイッチしながら動作するシステムでは問題なく動作する。しかし、従来例におけるマルチコアプロセッサシステム100では、リアルタイム処理を1つのCPUが実行し、別のCPUが高優先度ソフトウェアを実行している場合、アクセス競合によるコンテンション状態となり、リアルタイム処理の応答性能を保証できない。
図9は、マルチコアプロセッサシステム100でのスレッド切り替えを含むタイムスライス設定処理を示すフローチャートである。CPUs101は、スレッドを次々と切り替えている。初期状態として、CPU201-1は、OS205-1によって、スレッドの切り替え時間をΔtに設定する(ステップS901)。図示していないが、CPU201-2も同様にスレッドの切り替え時間をΔtに設定する。
次に、CPU201-1は、ハイパーバイザ204-1を起動する(ステップS902)。ハイパーバイザ204-1は一定周期で起動される。同様に、CPU201-2も、ハイパーバイザ204-2を起動する(ステップS903)。スレッドの切り替え時間が経過した後に、CPU201-1は、OS205-1によってスレッドを切り替える(ステップS904)。図示していないが、CPU201-2も同様にスレッドを切り替える。
スレッドを切り替えると、CPU201-1は、ハイパーバイザ204-1の機能によって、スレッド起動を検出する(ステップS905)。また、CPU201-2では、高優先度ソフトウェア209が起動されることを想定する。高優先度ソフトウェア209の起動後、CPU201-2は、ハイパーバイザ204-2の機能によって、高優先度スレッド起動を検出する(ステップS906)。検出後、CPU201-2は、ハイパーバイザ間通信によって、高優先度スレッドの起動を検出したことをハイパーバイザ204-1を含むすべてのハイパーバイザに通知する(ステップS907)。CPU201-1も同様に、ハイパーバイザ間通信によって、スレッドの起動を検出したことをハイパーバイザ204-2に通知する(ステップS908)。
通知後、CPU201-1は、ハイパーバイザ204-1によってタイムスライス補正処理を実行する(ステップS909)。タイムスライス補正処理の詳細は、図10にて後述する。ここで、CPU201-1は、CPU201-1以外のCPUにて高優先度スレッドが起動しているため、コンテンション状態となる可能性がある。コンテンション状態となっていた場合、CPU201-1は、タイムスライス補正処理内で、OS205-1に差分τを通知する。タイムスライス補正処理後、CPU201-1は、ハイパーバイザ204-1によって通常のハイパーバイザ処理を実行し(ステップS911)、ハイパーバイザ204-1を実行終了する(ステップS913)。実行終了後、CPU201-1は、一定周期後にステップS902の処理に移行する。
CPU201-2も同様に、ハイパーバイザ204-2によってタイムスライス補正処理を実行する(ステップS910)。CPU201-2は、CPU201-2以外のCPUにて高優先度スレッドが起動していないため、コンテンション状態とはならず、OS205-2に通知は行わない。タイムスライス補正処理後、CPU201-2は、ハイパーバイザ204-2によって通常のハイパーバイザ処理を実行し(ステップS912)、ハイパーバイザ204-2を実行終了する(ステップS914)。実行終了後、CPU201-2は、一定周期後にステップS903の処理に移行する。
CPU201-1がハイパーバイザ204-1によって差分τを通知後、CPU201-1は、OS・ハイパーバイザ間通信によって差分τを受信する(ステップS915)。続けて、CPU201-1は、補正値Δt’=Δt-τを算出する(ステップS916)。ステップS916での算出式は、(1)式を適用しているが、(2)式を適用してもよい。算出後、CPU201-1は、OS205-1によってスレッドの切り替え時間を補正値Δt’に設定する(ステップS917)。Δt’時間経過後、CPU201-1は、ステップS904の処理に移行する。
図10は、ハイパーバイザによるタイムスライス補正処理を示すフローチャートである。タイムスライス補正処理は、CPUs101に属するどのCPUでも実行されるが、図10では、CPU201-1にて実行される状態を説明する。また、タイムスライス補正処理は、ハイパーバイザの機能によって実行される。
CPU201-1は、別CPUでスレッドが起動されたかを判断する(ステップS1001)。スレッド起動の検出としては、CPU201-1は、タイムスライス補正処理の前に行われたステップS908の処理であるハイパーバイザ間通信によって検出する。別CPUでスレッドが起動されたと判断された場合(ステップS1001:Yes)、CPU201-1は続けて、別CPUで起動されたスレッドの優先度が、本CPUのスレッドの優先度より高いかを判断する(ステップS1002)。本CPUとは、実行主体となるCPUのことで、図10の説明ではCPU201-1に相当する。
別CPUで起動されたスレッドの優先度が本CPUのスレッドより高い場合(ステップS1002:Yes)、CPU201-1は、クロックカウンタから取得した処理時間ΔCを取得する(ステップS1003)。ΔCを取得後、所定のスレッド切り替え時間Δtが処理時間ΔCより大きいかを判断する(ステップS1004)。ΔtがΔC以下の場合(ステップS1004:No)、CPU201-1は、差分τ=ΔC-Δtを算出する(ステップS1006)。なお、ステップS1004:Noとなった場合が、CPU201-1にてアクセス競合によるコンテンション状態となった状態である。
別CPUでスレッドが起動していない場合(ステップS1001:No)、CPU201-1は、コンテンション状態が解消したかを判断する(ステップS1005)。コンテンション状態が解消した場合(ステップS1005:Yes)、CPU201-1は、差分τに0を設定する(ステップS1008)。アクセス競合によるコンテンション状態が解消したか否かの判断方法として、CPUは、一定期間のCPUの発行命令数とクロックカウンタを記録しておく。続けて、CPUはクロックカウンタ/発行命令数を算出し、算出された値が一定値より大きい場合にコンテンション状態が継続中であると判断し、算出された値が一定値以下の場合にコンテンション状態が解消したと判断する。
別CPUで起動されたスレッドの優先度が本CPUのスレッドより高くない場合、または、ΔtがΔCより大きい場合(ステップS1002:No、ステップS1004:Yes)、CPU201-1は、ステップS1005の処理に移行する。
ステップS1006の処理後、CPU201-1は、算出した差分τが割り込み禁止区間の最長パス時間lckより大きいかを判断する(ステップS1007)。差分τがlckより大きい場合(ステップS1007:Yes)、またはステップS1007の処理終了後、CPU201-1は、OSに差分τを通知する(ステップS1009)。差分τを通知後、CPU201-1はタイムスライス補正処理を終了する。また、差分τがlck以下である場合(ステップS1007:No)、またはコンテンション状態が解消していない場合(ステップS1005:No)、CPU201-1は、タイムスライス補正処理を終了する。
本実施の形態におけるマルチコアプロセッサシステム100の性能向上を測定するには、たとえば、プロファイラ、または、デバッガがあれば動作ログを解析して判別してもよい。また、プロファイラかデバッガがない場合、ソフトウェアを個別実行させた場合と、同時実行させた場合の実行性能を解析することにより判別してもよい。
以上説明したように、マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラムによれば、所定の切り替え時間を越えて複数のスレッドの切り替えを行ったCPUを特定する。特定後、マルチコアプロセッサシステムは、スレッドの切り替えを行った実切り替え時間と所定の切り替え時間の差分によってスレッドの切り替え時間を設定する。これにより、割り込みイベントの検出間隔が減少する分検出頻度が増加するため、リアルタイム処理の応答性能を保証できる。
また、マルチコアプロセッサシステムは、任意のスレッドが割り当てられたCPUの検出をトリガーにして、所定の切り替え時間を越えて複数のスレッドの切り替えを行ったCPUを特定してもよい。アクセス競合によるコンテンションは、複数のCPUでスレッドが割り当てられたときに発生するため、スレッドの割り当てをトリガーにすることにより、タイムスライスの補正を行う最もよいタイミングで実行することができる。
また、マルチコアプロセッサシステムは、任意のスレッドが割り当てられたCPUの検出をトリガーにする。その後、マルチコアプロセッサシステムは、切り替えを行ったCPUの切り替え後のスレッドの優先度より、検出されたCPUに割り当てられたスレッドの優先度が高い場合、所定の切り替え時間を越えて複数のスレッドの切り替えを行ったCPUを特定してもよい。
アクセス競合によるコンテンションは、複数のCPUでスレッドが割り当てられており、さらに、一つのCPUで高優先度のスレッドが割り当てられ、もう一方のCPUでは低優先度のスレッドが割り当てられた場合に発生する。したがって、切り替えを行ったCPUの切り替え後のスレッドの優先度より、検出されたCPUに割り当てられたスレッドの優先度が高いかを確認することにより、タイムスライスの補正を行う対象のCPUを最小限に絞ることができる。
また、マルチコアプロセッサシステムは、実切り替え時間と所定の切り替え時間との差分が所定の割り込み禁止時間を越えた場合に、所定の切り替え時間が短縮するように補正してもよい。マルチコアプロセッサシステムは、実切り替え時間と所定の切り替え時間との差分が所定の割り込み禁止時間を越えない限り、リアルタイム処理の応答性能を保証するように設計されている。したがって、差分が所定の割り込み禁止時間を越えた場合にタイムスライスの補正を行うことにより、リアルタイム処理の応答性能が破たんする可能性があるときに絞って、タイムスライスの補正を行うことができる。
また、マルチコアプロセッサシステムは、タイムスライスを補正したCPUに対して、アクセス競合中でない場合に、補正された切り替え時間を補正前の切り替え時間に設定してもよい。これにより、実切り替え時間を取得し所定の切り替え時間との比較を行わなくとも、アクセス競合か否かを判断することで、タイムスライスの補正を解除することができる。
なお、本実施の形態で説明したスレッド切り替え制御方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本スレッド切り替え制御プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本スレッド切り替え制御プログラムは、インターネット等のネットワークを介して配布してもよい。
108 バス
201-1 CPU
201-2 CPU
207-1~207-m ソフトウェア
209 高優先度ソフトウェア
301 領域
302 領域
303 検出部
304 特定部
305 補正部
306 設定通知部
307 判断部
308 切替部
309 設定部
310 ソフトウェアテーブル
201-1 CPU
201-2 CPU
207-1~207-m ソフトウェア
209 高優先度ソフトウェア
301 領域
302 領域
303 検出部
304 特定部
305 補正部
306 設定通知部
307 判断部
308 切替部
309 設定部
310 ソフトウェアテーブル
Claims (7)
- 複数のコアのおのおのに割り当てた複数のスレッドを所定の切り替え時間で切り替える切替手段と、
前記複数のコアのうち、前記切替手段によって前記所定の切り替え時間を越えて前記複数のスレッドの切り替えを行ったコアを特定する特定手段と、
前記特定手段によって特定されたコアにおいて前記複数のスレッドの切り替えを行った実切り替え時間と前記所定の切り替え時間との差分に基づいて、前記所定の切り替え時間が短縮するように補正する補正手段と、
前記補正手段によって補正された切り替え時間を前記所定の切り替え時間に設定する設定手段と、
を備えることを特徴とするマルチコアプロセッサシステム。 - 前記複数のコアのうち、任意のスレッドが割り当てられたコアを検出する検出手段をさらに備え、
前記特定手段は、
前記検出手段によって検出された場合、前記複数のコアのうち、前記切替手段によって前記所定の切り替え時間を越えて前記複数のスレッドの切り替えを行ったコアを特定することを特徴とする請求項1に記載のマルチコアプロセッサシステム。 - 前記特定手段は、
前記検出手段によって検出され、前記複数のコアのうち、当該コアに前記切替手段によって切り替えられた後のスレッドの優先度より前記検出手段によって検出されたコアに割り当てられたスレッドの優先度が高い場合、前記切替手段によって前記所定の切り替え時間を越えて前記複数のスレッドの切り替えを行った当該コアを特定することを特徴とする請求項2に記載のマルチコアプロセッサシステム。 - 前記補正手段は、
前記特定手段によって特定されたコアにおいて前記複数のスレッドの切り替えを行った実切り替え時間と前記所定の切り替え時間との差分が所定の割り込み禁止時間を越えた場合に、前記差分に基づいて、前記所定の切り替え時間が短縮するように補正することを特徴とする請求項3に記載のマルチコアプロセッサシステム。 - 前記特定手段によって特定されたコアがアクセスするメモリに関してアクセス競合中か否かを判断する判断手段をさらに備え、
前記設定手段は、
前記判断手段によってアクセス競合中でないと判断された場合、前記補正された切り替え時間を補正前の切り替え時間に設定することを特徴とする請求項4に記載のマルチコアプロセッサシステム。 - 複数のコアのうち、当該コアに割り当てた複数のスレッドを所定の切り替え時間で切り替えた後に前記所定の切り替え時間を越えて前記複数のスレッドの切り替えを行ったコアを特定する特定工程と、
前記特定工程によって特定されたコアにおいて前記複数のスレッドの切り替えを行った実切り替え時間と前記所定の切り替え時間との差分に基づいて、前記所定の切り替え時間が短縮するように補正する補正工程と、
前記補正工程によって補正された切り替え時間を通知する通知工程と、
を前記コアが実行することを特徴とするスレッド切り替え制御方法。 - 複数のコアのうち、当該コアに割り当てた複数のスレッドを所定の切り替え時間で切り替えた後に前記所定の切り替え時間を越えて前記複数のスレッドの切り替えを行ったコアを特定する特定工程と、
前記特定工程によって特定されたコアにおいて前記複数のスレッドの切り替えを行った実切り替え時間と前記所定の切り替え時間との差分に基づいて、前記所定の切り替え時間が短縮するように補正する補正工程と、
前記補正工程によって補正された切り替え時間を通知する通知工程と、
を前記コアに実行させることを特徴とするスレッド切り替え制御プログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012505398A JP5376042B2 (ja) | 2010-03-18 | 2010-03-18 | マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム |
PCT/JP2010/054708 WO2011114495A1 (ja) | 2010-03-18 | 2010-03-18 | マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム |
US13/614,071 US20130007758A1 (en) | 2010-03-18 | 2012-09-13 | Multi-core processor system, thread switching control method, and computer product |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2010/054708 WO2011114495A1 (ja) | 2010-03-18 | 2010-03-18 | マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/614,071 Continuation US20130007758A1 (en) | 2010-03-18 | 2012-09-13 | Multi-core processor system, thread switching control method, and computer product |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2011114495A1 true WO2011114495A1 (ja) | 2011-09-22 |
Family
ID=44648623
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2010/054708 WO2011114495A1 (ja) | 2010-03-18 | 2010-03-18 | マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US20130007758A1 (ja) |
JP (1) | JP5376042B2 (ja) |
WO (1) | WO2011114495A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10582441B2 (en) * | 2015-06-11 | 2020-03-03 | Lg Electronics Inc. | Method and apparatus for transmitting system information for cellular internet-of-things in wireless communication system |
WO2018227614A1 (en) * | 2017-06-16 | 2018-12-20 | Qualcomm Incorporated | Channel state information feedback for flexible uplink control signaling |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0449427A (ja) * | 1990-06-19 | 1992-02-18 | Fujitsu Ltd | 周期起動制御方式 |
JPH05158717A (ja) * | 1991-12-03 | 1993-06-25 | Nec Corp | ディスパッチング制御装置 |
JPH07281909A (ja) * | 1994-04-05 | 1995-10-27 | Mitsubishi Heavy Ind Ltd | リアルタイム・タスク周期実行管理システム |
JP2002259139A (ja) * | 2001-03-05 | 2002-09-13 | Denso Corp | マイクロコンピュータ、プログラム及び記録媒体 |
JP2008305351A (ja) * | 2007-06-11 | 2008-12-18 | Renesas Technology Corp | ディスパッチ装置 |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6211941A (ja) * | 1985-07-10 | 1987-01-20 | Nec Corp | 多重処理制御方式 |
US5826081A (en) * | 1996-05-06 | 1998-10-20 | Sun Microsystems, Inc. | Real time thread dispatcher for multiprocessor applications |
US6567839B1 (en) * | 1997-10-23 | 2003-05-20 | International Business Machines Corporation | Thread switch control in a multithreaded processor system |
US6076157A (en) * | 1997-10-23 | 2000-06-13 | International Business Machines Corporation | Method and apparatus to force a thread switch in a multithreaded processor |
US6018759A (en) * | 1997-12-22 | 2000-01-25 | International Business Machines Corporation | Thread switch tuning tool for optimal performance in a computer processor |
US6542921B1 (en) * | 1999-07-08 | 2003-04-01 | Intel Corporation | Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor |
US6834386B1 (en) * | 1999-07-16 | 2004-12-21 | Microsoft Corporation | Method and system for regulating background tasks using performance measurements |
US7234143B2 (en) * | 2002-06-20 | 2007-06-19 | Hewlett-Packard Development Company, L.P. | Spin-yielding in multi-threaded systems |
WO2004059481A2 (en) * | 2002-12-16 | 2004-07-15 | Globespanvirata Incorporated | System and method for scheduling thread execution |
US8484643B2 (en) * | 2003-03-31 | 2013-07-09 | Fujitsu Limited | CPU usage time counting method and job control system using this CPU usage time |
US7594234B1 (en) * | 2004-06-04 | 2009-09-22 | Sun Microsystems, Inc. | Adaptive spin-then-block mutual exclusion in multi-threaded processing |
US9753754B2 (en) * | 2004-12-22 | 2017-09-05 | Microsoft Technology Licensing, Llc | Enforcing deterministic execution of threads of guest operating systems running in a virtual machine hosted on a multiprocessor machine |
JP2007026095A (ja) * | 2005-07-15 | 2007-02-01 | Matsushita Electric Ind Co Ltd | 並列演算装置 |
JP4580845B2 (ja) * | 2005-08-24 | 2010-11-17 | パナソニック株式会社 | タスク実行装置 |
US7370331B2 (en) * | 2005-09-08 | 2008-05-06 | International Business Machines Corporation | Time slicing in a shared partition |
JP2007133723A (ja) * | 2005-11-11 | 2007-05-31 | Hitachi Ltd | マルチプロセッサ、タスクスケジューリング方法、及びコンパイラ |
US7865895B2 (en) * | 2006-05-18 | 2011-01-04 | International Business Machines Corporation | Heuristic based affinity dispatching for shared processor partition dispatching |
US7844970B2 (en) * | 2006-08-22 | 2010-11-30 | International Business Machines Corporation | Method and apparatus to control priority preemption of tasks |
US8069444B2 (en) * | 2006-08-29 | 2011-11-29 | Oracle America, Inc. | Method and apparatus for achieving fair cache sharing on multi-threaded chip multiprocessors |
US7673113B2 (en) * | 2006-12-29 | 2010-03-02 | Intel Corporation | Method for dynamic load balancing on partitioned systems |
US20090031314A1 (en) * | 2007-07-25 | 2009-01-29 | Microsoft Corporation | Fairness in memory systems |
US8584138B2 (en) * | 2007-07-30 | 2013-11-12 | Hewlett-Packard Development Company, L.P. | Direct switching of software threads by selectively bypassing run queue based on selection criteria |
US8055822B2 (en) * | 2007-08-21 | 2011-11-08 | International Business Machines Corporation | Multicore processor having storage for core-specific operational data |
US20090089792A1 (en) * | 2007-09-27 | 2009-04-02 | Sun Microsystems, Inc. | Method and system for managing thermal asymmetries in a multi-core processor |
US8117618B2 (en) * | 2007-10-12 | 2012-02-14 | Freescale Semiconductor, Inc. | Forward progress mechanism for a multithreaded processor |
US8245236B2 (en) * | 2008-02-27 | 2012-08-14 | International Business Machines Corporation | Lock based moving of threads in a shared processor partitioning environment |
US8166480B2 (en) * | 2008-07-29 | 2012-04-24 | International Business Machines Corporation | Reducing lock contention by adding a time slice to an active thread holding a lock |
US9244732B2 (en) * | 2009-08-28 | 2016-01-26 | Vmware, Inc. | Compensating threads for microarchitectural resource contentions by prioritizing scheduling and execution |
US8904399B2 (en) * | 2010-03-15 | 2014-12-02 | Qualcomm Incorporated | System and method of executing threads at a processor |
KR101699770B1 (ko) * | 2010-09-06 | 2017-02-13 | 삼성전자주식회사 | 가상화 시스템 및 그 가상화 시스템에서 자원 할당 방법 |
-
2010
- 2010-03-18 WO PCT/JP2010/054708 patent/WO2011114495A1/ja active Application Filing
- 2010-03-18 JP JP2012505398A patent/JP5376042B2/ja not_active Expired - Fee Related
-
2012
- 2012-09-13 US US13/614,071 patent/US20130007758A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0449427A (ja) * | 1990-06-19 | 1992-02-18 | Fujitsu Ltd | 周期起動制御方式 |
JPH05158717A (ja) * | 1991-12-03 | 1993-06-25 | Nec Corp | ディスパッチング制御装置 |
JPH07281909A (ja) * | 1994-04-05 | 1995-10-27 | Mitsubishi Heavy Ind Ltd | リアルタイム・タスク周期実行管理システム |
JP2002259139A (ja) * | 2001-03-05 | 2002-09-13 | Denso Corp | マイクロコンピュータ、プログラム及び記録媒体 |
JP2008305351A (ja) * | 2007-06-11 | 2008-12-18 | Renesas Technology Corp | ディスパッチ装置 |
Also Published As
Publication number | Publication date |
---|---|
JPWO2011114495A1 (ja) | 2013-06-27 |
JP5376042B2 (ja) | 2013-12-25 |
US20130007758A1 (en) | 2013-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11550627B2 (en) | Hardware accelerated dynamic work creation on a graphics processing unit | |
JP5498505B2 (ja) | データバースト間の競合の解決 | |
JP5673672B2 (ja) | マルチコアプロセッサシステム、制御プログラム、および制御方法 | |
US9043520B2 (en) | Interrupt control method and multicore processor system | |
US9311142B2 (en) | 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 | |
US20140026143A1 (en) | Exclusive access control method and computer product | |
US20130125131A1 (en) | Multi-core processor system, thread control method, and computer product | |
JP5376042B2 (ja) | マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム | |
JP2009175960A (ja) | 仮想マルチプロセッサシステム | |
US11481250B2 (en) | Cooperative workgroup scheduling and context prefetching based on predicted modification of signal values | |
JP2010140239A (ja) | 割り込みレイテンシーを短縮する装置及び方法 | |
JP5582241B2 (ja) | マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム | |
JP2004192052A (ja) | ソフトウェア処理方法およびソフトウェア処理システム | |
JP5704176B2 (ja) | プロセッサ処理方法、およびプロセッサシステム | |
JP4441592B2 (ja) | 並列処理装置及び排他制御方法 | |
US20130239113A1 (en) | Information processing apparatus, computer product, and information processing method | |
EP2798455B1 (en) | Direct ring 3 submission of processing jobs to adjunct processors | |
JP5601414B2 (ja) | マルチコアプロセッサシステム、制御方法、および制御プログラム | |
JP6477216B2 (ja) | 演算装置、スレッド切替方法、及びマルチスレッドプログラム | |
CN115599508A (zh) | Cpu及任务调度方法 | |
JP2009116885A (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: 10847909 Country of ref document: EP Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2012505398 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: 10847909 Country of ref document: EP Kind code of ref document: A1 |