WO2003040948A1 - Ordinateur et procede de commande - Google Patents

Ordinateur et procede de commande Download PDF

Info

Publication number
WO2003040948A1
WO2003040948A1 PCT/JP2001/009788 JP0109788W WO03040948A1 WO 2003040948 A1 WO2003040948 A1 WO 2003040948A1 JP 0109788 W JP0109788 W JP 0109788W WO 03040948 A1 WO03040948 A1 WO 03040948A1
Authority
WO
WIPO (PCT)
Prior art keywords
processor
spin
wait
instruction
computer
Prior art date
Application number
PCT/JP2001/009788
Other languages
English (en)
French (fr)
Inventor
Akira Naruse
Kouichi Kumon
Mitsuru Sato
Original Assignee
Fujitsu Limited
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 Limited filed Critical Fujitsu Limited
Priority to JP2003542505A priority Critical patent/JP4253796B2/ja
Priority to PCT/JP2001/009788 priority patent/WO2003040948A1/ja
Publication of WO2003040948A1 publication Critical patent/WO2003040948A1/ja
Priority to US10/841,619 priority patent/US7337274B2/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30083Power or thermal control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Definitions

  • the present invention relates to a computer and a control method of a shared memory multiprocessor configuration having a plurality of processors each having a cache memory, and more particularly to a computer and a control for improving instruction execution efficiency of a spin wait instruction used for synchronous processing and the like.
  • a shared memory multiprocessor configuration having a plurality of processors each having a cache memory
  • spin wait is often used for synchronization processing between processors.
  • a typical example of using a spin wait for synchronization between processors is a spin lock.
  • spin lock instruction processing is often realized by the procedure of the verification unit 100 and the setting unit 102.
  • the spin wait is often used in the spin lock verification unit 100 that checks whether lock acquisition is possible.
  • barrier synchronization that uses spin wait for synchronization between processors in a shared memory multiprocessor system.
  • Barrier synchronization means that a process or thread to be synchronized waits at a synchronization point. That is to say, in the case of memory-based barrier synchronization, it is often realized by the procedure shown in Fig. 2.
  • the process or thread is locked using the lock variable X corresponding to the process or thread using an instantaneous lock instruction such as “test_and_set” or “co-immediate are—and —] 'u-immediate”.
  • all x l
  • the system exits the spin wait in the synchronized state and moves on to the next processing.
  • the spin wait is often used in the verification unit 106 that checks whether all processes or all threads have reached the synchronization point.
  • I / O devices input / output devices
  • I / O devices input / output devices
  • interrupts were generally used for synchronization between the processor and the IZO device. This is because the I / O device was much slower than the processor, and the loss of the processor waiting for a response from the Izo device was large.
  • the use of interrupts has caused some harm in some IZO devices.
  • interrupts have a large overhead (delay), and cannot take advantage of the inherent speed of the IZO device. For this reason, some high-speed I / O devices have begun to adopt spin-wait synchronization.
  • the spin wait repeats execution of the same instruction sequence endlessly until the variable value, which is the condition for terminating the eight, is changed to a desired value by another processor or another agent such as an IZO device.
  • the number of spins which is the number of repetitions, is hundreds or even thousands of times, and in some sense, the processor is wasted.
  • power is wasted during spin weights.
  • SMT Simultaneous Multi-Threading architecture
  • processor resources are shared between threads. In general, the processor resources are not allocated evenly for each execution thread, but the number and amount of processor resources to be allocated vary according to the state of each thread.
  • Various methods have been proposed as criteria for determining processor resource allocation. For example, the following approaches are available.
  • spinwait can execute instructions very smoothly. This is because the same instruction sequence is only executed repeatedly, so no cache miss occurs and the branch prediction does not fall off. Therefore, in the SMT processor, processor resources are preferentially allocated without considering the thread in which the spin wait is being executed. Then, compared to the thread executing the spin wait, the allocation of the processor resource to the other thread which seems to execute the highly productive instruction sequence is reduced, and as a result, the performance of the processor may be reduced. Like this, the spin weight
  • the present invention relates to a computer having a plurality of processors each having a cache memory, and when detecting that a processor is executing a spin wait instruction, instructs monitoring of a variable value serving as an end condition of the spin wait, and then executes the instruction of the processor.
  • a spin weight detector that changes the operating state, and a variable value specified by the spin weight detector is monitored, and when it is detected that the variable value has been changed, the processor notifies the processor of the change in the value and operates.
  • a value change detection unit that restores the original value.
  • the present invention reduces the waste generated during the execution of the spin wait by changing the operation state of the processor when there is no possibility or the possibility that the spin wait can be escaped is low.
  • a spin weight detection unit is provided in a processor and a value change detection unit is provided in a cache memory
  • a value change detection unit is provided in a cache memory
  • the spin-wait detector When detecting that the processor is executing the spin-wait instruction, the spin-wait detector detects, in the value change detector, the cache memory cache block storing the variable value referenced by the execution of the spin-wait instruction. To instruct.
  • the value change detection unit detects that the state of the cache block has been changed by another processor or input / output unit. Notifies the processor of a value change when it detects invalidation.
  • the change detection unit also notifies the processor of the value change when detecting that the cache block has been evicted from the cache memory.
  • the spin-wait detector When detecting that the processor is executing the spin-wait instruction, the spin-wait detector detects the bus request for the memory address storing the variable value referred to by the execution of the spin-wait instruction, and the value change detector detects the bus request. To instruct.
  • the value change detection unit monitors a bus request for a memory address in which the variable value specified by the spin wait detection unit is stored, and detects a bus request for the memory address from another processor or an input / output unit. Notify the processor of the value change, if any.
  • the spin wait detection unit changes the operation mode of the processor to the low power consumption mode when detecting that the spin wait instruction is being executed.
  • Change to The value change detection unit changes the operation mode of the processor to the normal mode when detecting a change in the variable value serving as the spin wait termination condition. As a result, the power consumption of the processor can be reduced during execution of the spin rate.
  • the spin weight detection unit causes the processor to stop the program execution when detecting that the spin wait instruction is being executed. Further, the value change detection unit causes the processor to restart the execution of the program when detecting a change in the variable value serving as a spin wait end condition. As a result, the execution of the program is stopped during the execution of the spin wait, and the power consumption of the processor can be reduced accordingly.
  • the spin wait detection unit allocates processor resources to this thread when detecting a thread that is executing a spin wait instruction. Decrease or stop.
  • the value change detection unit increases or restarts the allocation of processor resources to the thread when detecting a change in a variable value that is a spin wait termination condition.
  • the execution of another thread program is stopped during the execution of the thread spin wait in the SMP processor, and the spin wait execution thread is executed.
  • the processor has a dedicated spin-wait instruction, and the spin-wait detecting unit detects that the processor is executing the spin-wait from the execution of the dedicated spin-wait instruction.
  • the spin wait detecting unit compares the buffer with the instruction sequence recording unit which stores the instruction sequence of the instruction executed by the processor, the instruction sequence recording unit which records the instruction sequence of the spin wait dedicated instruction, and compares the instruction sequence with the buffer.
  • the present invention provides a control method for a computer having a plurality of processors each having a cache memory.
  • the processor When detecting that the processor is executing the spin wait instruction, the processor changes the operation state of the processor after starting monitoring the variable value that is the termination condition of the spin wait,
  • the processor When a change in the variable value is detected during monitoring, the processor is notified of the change in the value and the operation state is returned to the original state.
  • FIG 1 is an illustration of the conventional spin lock process
  • Figure 2 is an illustration of conventional barrier synchronization processing
  • FIG. 3 is a book diagram of a shared memory multiprocessor system to which the present invention is applied;
  • FIG. 4 is a block diagram of an embodiment of a processor according to the present invention.
  • FIG. 5 is a block diagram showing an embodiment of the spin weight detector in FIG. 4;
  • FIG. 6 is a block diagram of an embodiment of the value change detection unit in FIG. 4 for monitoring a cache block
  • FIG. 7 is a time chart of a processing procedure of the present invention in which a cache block is monitored when a spin wait is detected and a value change is detected;
  • FIG. 8 is an explanatory diagram of the synchronization processing according to the present invention.
  • FIG. 9 is a block diagram of another embodiment of the value change detection unit in FIG. 4 for monitoring a bus transaction
  • FIG. 10 is a time chart of a processing procedure of the present invention for detecting a value change by monitoring a bus transaction when detecting a spin wait according to the present invention
  • FIG. 11 is a block diagram of a schematic configuration of an SMT processor to which the present invention is applied;
  • FIG. 12 is a time chart of a processing procedure of the present invention for detecting a spin weight and reducing processor resources; Best form of
  • FIG. 3 is a block diagram of a shared memory multiprocessor system to which the present invention is applied.
  • the multiprocessor system has, for example, four processors 10—1 to: L0—4, and a cache memory 12— for each processor 10—1 to: L0—4. ! ⁇ 1 2-4 are provided.
  • the cache memories 12-1 to 12-4 are connected to a main memory 16 used as a shared memory via a bus 14.
  • An input / output unit 18 is connected to the bus 14, and the input / output unit 18 is, for example, an input / output processor that functions as an input / output agent, and is a subsystem network such as an external hard disk drive HDD.
  • input / output devices such as a keyboard, mouse, and display are connected.
  • FIG. 4 is an embodiment of the processor 10-1 of FIG.
  • the other processors 10_2 to 10-4 also have the same embodiment.
  • a processor 10-1 includes a processor core 11 and a cache memory interface 20.
  • the cache memory 12-1 includes a processor interface 24, a cache memory control unit 26, a bus interface 28, and a cache memory array 30.
  • a new spin weight detector 22 is provided on the processor 10-1 side.
  • a value change detector 32 is provided on the cache memory 12-1 side.
  • the spin wait detection unit 22 provided in the processor 10-1 caches monitoring of a variable value serving as a spin wait end condition when detecting that the processor core 11 is executing a spin wait instruction. After instructing the value change detection unit 32 provided on the memory 1 2 _ 1 side, the processor 10 0-1 Change the operating state.
  • the change of the operation state of the processor 10-1 by the spin-wait detection unit 22 is to change the operation state to reduce the waste generated during the execution of the spin-wait instruction. Specifically, the following is performed. .
  • the spin wait detection unit 22 when the processor 10-1 has at least two operation modes of a normal mode and a low power consumption mode, when the spin wait detection unit 22 detects that the spin wait instruction is being executed, Changes the operating mode of the processor to the low power consumption mode. If the processor has a function of stopping the execution of the program, the spin wait detection unit 22 causes the processor to stop the execution of the program when it detects that the spin wait instruction is being executed. Regardless of the change to the low power consumption mode or the stop of program execution when the execution of the spin-wait instruction is detected, the instruction sequence of the spin-wait instruction is executed endlessly until the end condition of the spin-wait is changed to a predetermined value. This prevents unnecessary operation of the processor and wasteful power consumption. Of course, it can be said that stopping the execution of the program by the processor when the spin wait instruction is detected is included in one form of the low power consumption mode.
  • the value change detection unit 32 provided in the cache memory 1 2 _ 1 monitors a variable value which is a spin wait end condition instructed by the spin weight detection unit 22, and this variable value is When a change is detected by the processor 10_2 to 10-4 or the input / output unit 18, a value change is notified to the processor 10-1 and the processor operation state is restored. . For example, if the processor or the low power consumption mode has been changed by the detection during the execution of the spin wait instruction, the mode is returned to the normal mode. If the execution of the spin wait instruction is detected and the execution of the program of the processor is stopped, the program execution is restarted.
  • FIG. 5 shows an embodiment of the spin weight detector 22 provided in the processor 10-1 in FIG.
  • the spin-wait detection unit 22 includes an executed instruction sequence buffer 34, a spin-wait instruction sequence recording unit 36, and a comparison unit 38.
  • the spin weight detecting unit 22 preliminarily records an instruction sequence indicating a spin wait in the spin wait instruction sequence recording unit 36. This The instruction sequence may be recorded in plural numbers, and the recorded contents may be predetermined.
  • the executed instruction string buffer 34 records an instruction string that has been executed by the processor core.
  • the comparing unit 38 compares the reference instruction sequence recorded in the spin-wait instruction sequence recording unit 36 with the instruction sequence recorded in the executed instruction sequence buffer 34. When it detects that the instruction sequence is being executed, it outputs a spin wait instruction sequence detection signal E 1 to the cache memory interface 20.
  • FIG. 6 shows an embodiment of the value change detection unit 32 provided on the cache memory 12-1 side of FIG.
  • the value change detection unit 32 is provided with a monitoring destination recording unit 40 and a cache state monitoring unit 42.
  • a spin-wait instruction sequence detection signal E1 is output from the spin-rate detection unit 22 shown in FIG. 5 and provided in the value change detection unit 32 in FIG.
  • a cache block that stores a variable value referenced as a spin wait termination condition in the monitored address recording unit 40, specifically, a cache memory entry, is received via the cache memory control unit 26. Record.
  • the cache state monitoring unit 42 monitors the cache memory entry recorded in the monitored address recording unit 40. When the cache state (cache state) of this entry is updated, the cache state monitoring unit 42 transmits the cache state via the cache memory control unit 26. And outputs a value change detection signal E2 to the processor.
  • the MESI protocol is used as an example of a cache protocol.
  • the cache state monitoring unit 42 outputs a value change detection signal E 2 when the cache state of the entry to be monitored is updated to invalid I. I do.
  • the cache state monitoring unit 42 outputs the value change detection signal E2 from the update of the invalid I of the cache state corresponding to the rewriting of the variable value serving as the spin wait end condition.
  • the value change detection signal E2 is also output when the cache memory entry to be monitored is evicted by the algorithm.
  • FIG. 7 shows the monitoring of the cache memory entry (cache block) that stores the variable value that is the spin wait end condition when the spin wait is detected.
  • 6 is a time chart of a processing procedure of the present invention for detecting a value change.
  • the spin weight detector 22 checks in step S1 whether the processor 10-1 is executing a spin wait instruction. When the processor 10-1 executes a spin-wait instruction, the execution of the spin-wait instruction is detected by the spin-wait detector 22 as shown in the embodiment of FIG. 5, and the spin-wait instruction detection signal E1 is output. Is done.
  • step S2 the spin weight detector 22 monitors the cache block in which the variable value referred to by the spin weight is stored to the value change detector 32 of the cache memory 12-1. To instruct.
  • the spin-wait detector 22 stops the execution of the spin-wait instruction by the processor 10-1 in step S3, and enters a low power consumption operation state.
  • step S102 a change in the cache state, that is, a change in the cache state in the cache block to be monitored, specifically, whether or not invalidation has been performed is detected. If the cache block is updated by any of the other processors 10-1 to 10-4 or the I / O unit 18 in this state, the cache state of the monitored cache block is updated to the invalid state. You. If this is detected in step S102, the process proceeds to step S103, in which a change in the state of the cache block is output as a value change detection signal E2 from the value change detection unit 30 in FIG.
  • FIG. 3 is an explanatory diagram showing a processing procedure of the present invention for an example.
  • Fig. 8 (A) shows a part of a multiprocessor system that is subject to barrier synchronization processing.
  • the barrier synchronization processing of two processors 10-1 and 10-2 is used as an example.
  • the cache memory 12-1 and 12-2 provided in the processor 10-11 and 10-2 are the termination conditions for the spin wait referenced by the execution of the spin wait instruction.
  • T indicating the variable value of the bit and the cache state in the cache block
  • This cache state is compatible with the MESI protocol, and the variable value is 2-bit information corresponding to each of the two processors 10-1 and 10-2, because they are barrier-synchronized. Before reaching the point, it is “0 0”.
  • FIGS. 8 (B) to 8 (G) show the transition state of the operation of the parallel synchronization processing according to the processing procedure of the present invention shown in FIG.
  • FIG. 8 (B) shows a state in which, of the two processors 10-1 and 10-2 subject to barrier synchronization, processor 10-1 reaches the synchronization point and spin-waits. That is, the processor 10 1 sets the corresponding bit of the variable value of the target entry of the cache memory 12-1 to 1 by the processing of the setting unit 104 shown in FIG. 2 upon reaching the synchronization point. This changes the variable value from "0 0" to "0 1".
  • the cache state is invalidated in the cache memory 12-2 of the processor 10-2 having the same cache block. .
  • the cache state of the corresponding cache block is updated to change M.
  • the spin wait detector 22 provided in the processor 10-1 detects that the spin wait instruction is being executed as shown in FIG. Then, it instructs the cache memory 1 2 — 1 to monitor whether the cache state of the corresponding cache block becomes invalid I. At the same time, the processor 10-1 stops, for example, the execution of the program of the spin wait. As a result, as shown in FIG. 8 (C), the processor 10-1 stops executing the program of the spin wait, while the processor 10-2 continues the program execution in the normal mode.
  • FIG. 8 (D) shows the processing when the processor 10-2 reaches the synchronization point.
  • the processor 10-2 executes a spin wait instruction to read a variable value serving as a spin wait end condition from the cache memory 12-2.
  • the corresponding cache block of the cache memory 1 2—2 is in the invalid I state, so the variable is read from the cache memory 12-2—2 of the processor 10—1 by the cache protocol and the cache state is shared. And then read by processor 10-2.
  • the processor 10-2 changes the variable value to “1 1” by rewriting the bit assigned to itself to “1”.
  • variable value is invalidated for the cache memory 1 2 — 1 of processor 10 — 1 at the stop of program execution, and the cache state is updated from the previous shared S to invalid I Is done.
  • the value change detection unit 32 provided in the cache memory 12-1 in FIG. 4 detects the state change to invalid I in the cache memory 12-1, the processor 10-1 notifies the processor 10-1 of the value change. Then, the execution of the program which has been stopped is resumed.
  • the processor 10-1 which resumed the program execution, reads the variable value "1 1" of the corresponding cache block in the cache memory 12-1 by executing the spin wait instruction in FIG. Recognizes that the spin wait end condition has been established. At this time, even if the processor 12-2 is on the side, the spin wait end condition is determined by recognizing the variable value "1 1", whereby the two processors 10-1 and 10-2 The barrier synchronization is established, the spin-out is completed as shown in Fig. 8 (G), and the process moves to the execution of the next program.
  • FIG. 9 shows another embodiment of the value change detection unit 32 provided on the cache memory 12-1 side of FIG. 4.
  • the variable value serving as the end condition of the spin wait is shown. It is characterized in that a value change is detected by monitoring a path transaction (bus request) for changing a variable value by another processor or an input / output unit for a cache block storing the value.
  • the value change detection unit 32 in FIG. 9 is provided with a bus transaction monitoring unit 44 for the same monitoring target address recording unit 40 as in FIG.
  • the bus transaction monitoring unit 44 monitors the transaction for the monitored address by the path 14 from another processor or the input / output unit via the bus interface 28.
  • the bus transaction monitoring unit 44 monitors the bus transaction being monitored.
  • a value change detection signal E2 is output to the processor via the cache memory control unit 26.
  • This bus The value change detection by Yong's monitoring does not directly detect a change in the variable value that is the end condition of the spin wait, but rather accurately detects that the variable value may be changed. I can say.
  • FIG. 10 is a time chart of the processing procedure of the present invention when a value change is detected by monitoring the bus transaction of FIG.
  • the spin-wait detection unit 22 detects in step S1 that a spin-wait instruction is being executed by the processor, in step S2, the cache block in which the variable value referenced by the spin-wait instruction is stored, That is, the instruction to monitor the data address is sent to the value change detection unit on the cache memory side.
  • step S3 the spin-wait detection unit 22 outputs a spin-wait instruction sequence detection execution to the processor, and stops the processor from executing the spin-wait instruction.
  • step S101 the bus transaction for the data address specified by the processor is monitored, and the bus transaction for the monitored cache block is determined in step S101. If detected in step 102, a state change (possibility) due to a bus transaction is notified to the processor in step S103 by outputting a value change detection signal. In response to this, the spin-wait detection unit 22 resumes the execution of the spin-up instruction by the processor in step S4.
  • FIG. 11 is a schematic configuration of an SMT processor to which the present invention is applied.
  • the SMT processor has instruction pointers 46--1, 46--2, fetch Z-decode 48-1, and
  • An SMT processor with such a schematic configuration usually has multiple instruction pointers to execute multiple threads at the same time. In this example, if there are two instruction pointers 46-1, and 46-2, Is shown. This instruction is realized by instruction pointers 46-1, 46-2 and fetch / decode 48-1, 48-2. In the execution of these two threads, the effective utilization of resources is increased by sharing resources such as the execution unit 50 between the threads, which is the aim of the SMT processor. As for the SMT processor in which the processor resources are shared by a plurality of threads as described above, various policies have been proposed for determining the next instruction of the thread to be assigned to the execution unit 50.
  • the present invention can be used to determine a policy for deciding which thread instruction to allocate processor resources such as the execution unit. Specifically, upon detecting a thread that is executing a spin wait instruction, the processor reduces or stops the allocation of processor resources such as an execution unit to the thread that is executing a spin wait instruction. This increases the chances of assigning instructions of other threads that are not spin-waiting and that are executing more meaningful instructions to execution units. As a result, the processing performance of the SMT processor can be expected to improve.
  • FIG. 12 is a time chart of the processing procedure of the present invention for detecting a spin weight and reducing processor resources for the SMT processor.
  • the spin wait detection unit 22 of the SMT processor checks in step S1 whether or not a thread among a plurality of threads is executing a spin wait, and if the execution is detected, the process proceeds to step S2. Instruct the value change detection unit 32 on the cache memory side to monitor the cache block storing the variable value referred to by the spin weight.
  • step S3 the processor resources to which the thread instruction executing the spin wait instruction is allocated is reduced or stopped.
  • the instruction execution unit 50 by this thread is used. Instruction pointers 4 6-2, fetch / decode 4 8-that are executing instructions other than spin wait instructions, and allocate execution unit 50 to instructions of other threads on the 2 side .
  • the cache state of the cache block specified by the processor is monitored in step S101, and the cache state, that is, the state is invalid in step S102. If it is detected that the cache block has been updated to I, the state change of the cache block is passed to the processor in step S103. Know. In response to this, the spin-wait detector 22 cancels the reduction or suspension of the allocation of processor resources to the thread executing the spin-wait instruction in step S4.
  • the MESI protocol is taken as an example of the cache protocol.
  • any cache protocol may be used as long as it includes updating to invalid I.
  • the cache state of the corresponding cache block is invalidated as a change value for the spin-gate end condition, or the cache end condition is determined from a bus transaction for this state.
  • the variable values are monitored directly or indirectly, it goes without saying that other variable values may be monitored directly or indirectly.
  • the spin wait is being executed, the operation state of the processor is changed to the low power consumption mode, the program execution is stopped, and the SMT processor is not changed.
  • the processor resource allocation is reduced or stopped, but any other change in the operating state of the processor that eliminates waste or waste caused by the execution of an appropriate spin-wait instruction is included.
  • the present invention is not limited to the above-described embodiment, and includes appropriate modifications without impairing the advantages and objects thereof. Further, the present invention is not limited by the numerical values shown in the above embodiments. [Industrial applicability]

Landscapes

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

Description

明 細 書 コンピュータ及び制御方法 技術分野
本発明は、 キャッシュメモリを備えた複数のプロセッサを有する共有メモリ型 マルチプロセッサ構成のコンピュータ及び制御方法に関し、 特に、 同期処理など に用いられるスピンウェイト命令の命令実行効率を改善するためのコンピュータ 及び制御方法に関する。 背景技術
従来、 キャッシュメモリを備えた複数のプロセッサでメインメモリを共有する 共有メモリ型マルチプロセッサシステムにおいては、 プロセッサ間の同期処理に スピンウェイトが用いられることが多い。
このプロセッサ間の同期処理にスピンウェイトを使用する代表的な例がスピン ロックである。 スピンロックの命令処理は図 1のように、 検証部 1 0 0と設定部 1 0 2の手順で実現されることが多い。 検証部 1 0 0は、 ロック獲得ポイントに 達したプロセス又はスレツドがステップ S 1で変数 Xをロードし、 ステップ S 2 で変数 Xが例えば X = 0といったロック獲得が可能であることを示す値か否か判 定し、 X = 0になるまでステップ S 1, S 2の処理を繰り返すスピンを行って待 つス ピンウェイ ト を行う 。 設定部 1 0 2 は、 「 tes t— and— set」 や 「compare— and— j ump」 などのイン夕一ロック命令を用いて、 ステップ S 3でロッ ク変数値 Xを X = 1に設定してスピンロック処理を抜ける。 もしロック変数値 X = 1の設定に失敗したら検証部 1 0 0に戻りスピンウェイトを継続する。 このよ うに、 ロック獲得が可能であるかどうかをチェックするスピンロックの検証部 1 0 0でスピンウェイトが用いられることが多い。
スピンロック以外では、 共有メモリ型マルチプロセッサシステムにおけるプロ セッサ間の同期処理にスピンウェイトを使用するバリア同期がある。 バリア同期 とは、 同期対象であるプロ.セス又はスレツドが同期ポイントで待ち合わせを行う ことであり、 メモリベースのバリア同期の場合には、 図 2の手順で実現されるこ とが多い。 まず設定部 1 0 4のステップ S 1において、 プロセス又はスレツドが 同期ボイントに達する前は口ック変数 Xは X == 0である。 同期ボイントに達する とプロセス又はスレツドは、 「tes t— and_set」や「co即 are— and— ]' u即」などのイン 夕一ロック命令を用いて該当するプロセス又はスレツドに対応するロック変数 X のビットを 1に設定し、 検証部 1 0 6に進む。 検証部 1 0 6は、 ステップ S 2で ロック変数 Xをロードし、 ステップ S 3でバリア同期の対象となっている全プロ セス又は全スレッドのビットが 1になるまで、 即ち al l X = lまで スピンして 待つスピンウェイトを行う。 全プロセス又は全スレツドが同期ポイントに達する と、 al l X = lになり、 同期がとられた状態でスピンウェイトを抜けて次の処理 に移行する。 このようにバリア同期でも、 全プロセス又は全スレッドが同期ボイ ントに達しているかどうかをチェックする検証部 1 0 6でスピンウェイトが用い られることが多い。
また、 I /Oデバイス (入出力デバイス) との同期にもスピンウェイトが使用 されている。 通常の I ZO処理では、 プロセッサと I ZOデバイス間の同期には 割り込みを使うのが一般的であった。 これは、 Iノ〇デバイスがプロセッサと比 ベて非常に遅く、 I z oデバイスからの応答をプロセッサが待ち続けることの損 失が大きかったためである。 しかし、 I /Oデバイスの高速化により、 一部の I ZOデバイスにおいては割り込みを使うことによる弊害が出てきている。 一般的 に割り込みはオーバーヘッド(遅延)が大きいので、 I ZOデバイス本来の速度を 活かせない。 そのため、 一部の高速 I /oデバイスに関しては、 スピンウェイト による同期処理を採用し始めている。
しかしながら、 スピンウェイトの実行には無駄が多い。 スピンウェイトは、 ゥ エイト終了条件となっている変数値が他のプロセッサや I ZOデバイスなどの他 のエージェントにより所望の値に変更されるまで延々と同じ命令列の実行を繰り 返す。 繰り返しの回数となるスピン回数は、 場合によっては数百回、 数千回に及 ぶこともめずらしくなく、ある意味でプロセッサを無駄に使用しているといえる。 電力消費の観点から考えると、 スピンウェイトのあいだは無駄に電力を消費して いることになる。 また、複数スレツドの同時実行が可能な S MT (S imul t aneous Mul t i- Threading archi tec ture)プロセッサにおいては、スピンウェイトを実行中のスレツドが他の 実行スレッドの妨げとなる可能性がある。 一般的に S M Tプロセッサでは、 プロ セッサリソースはスレッド間で共有されている。 このプロセッサリソースは、 実 行スレツド毎に均等に割当てられるのではなく、 各スレツドの状態に応じて割当 てられるプロセッサリソースの数や量が変わるというのが一般的である。 プロセ ッサリソース割当てを決定する基準にはいろいろな方法が提案されているが、 例 えば次のようなアプローチがある。
( 1 ) キャッシュミスを起こしたスレツドへのリソース割当てを減らす; ( 2 ) 投機的に実行している命令数が多いスレッドへのリソース割当てを減ら する;
( 3 ) リザべ一ションステーションに登録されている命令数の多いスレツドへ のリソース割当てを減らす;
これらのアプローチは、 よりスムーズに命令を実行できる可能性の高いスレツ ドに優先的にプロセッサリソースを割当てようという考えに基づいている。 ここ スピンウェイトは命令を非常にスムーズに実行することができる。 なぜなら、 同 じ命令列の実行を繰り返しているだけなので、 キャッシュミスも起らないし、 分 岐予測も外れることがないからである。 したがって、 S MTプロセッサにおいて は、 スピンウェイトを実行中のスレツドに期せずして優先的にプロセッサリソー スを割当てることになる。 すると、 スピンウェイト実行中スレッドに比べ、 生産 性の高い命令列を実行していると思われる他のスレッドへのプロセッサリソース の割当てが減ってしまい、 結果としてプロセッサの性能が下がる可能性がある。 この様に、 スピンウェイ卜には
( 1 ) 電力を無駄に消費する;
( 2 ) S MTプロセッサの性能が下げる可能性が高い;
といった問題がある。
この問題への対策として、 スピンウェイトが始まったことを検出したら、 スピ ンウェイトの実行を停止し、 スピンウェイトから抜けられる条件が整ったら割り 込みにより通知し、 実行を再開するという手法もある。 しかし、 スピンウェイト から抜けられる条件が整ったことを、 割り込みで通知してしまっては元も子もな レ^ そもそもスピンウェイトは低遅延を実現するために採用しているのであり、 割り込みを使つたら時間コストがが大きくなつてしまう。
また、 同期専用のハードウェアを備えるという手法もある。 しかし、 その場合 にはハードウェアコストが高くなる。 現在、 メモリベースの同期処理が一般的と なっている背景には、汎用デバイス(メモリ)を用いて同期処理を行うことによる コスト削減のメリットが大きいという歴史的な経緯がある。
本発明は、 スピンウェイトの実行で生じる電力やプロセッサリソースの無駄を 省いて命令実行効率を高めるコンピュータ及び制御方法を提供することを目的と する。 発明の開示 。
本発明は、 キャッシュメモリを備えた複数のプロセッサを有するコンピュータ において、 プロセッサによるスピンウェイト命令の実行中を検出した際に、 スピ ンウェイトの終了条件となっている変数値の監視を指示した後にプロセッサの動 作状態を変更させるスピンウェイト検出部と、 スピンウェイト検出部から指示さ れた変数値を監視し、 この変数値が変更されたことを検出した場合にプロセッサ に値変更を通知して動作状態を元に戻す値変更検出部とを設けたことを特徴とす る。 このように本発明は、 スピンウェイトから脱出できる可能性がない時、 もし くは可能性が低い時は、 プロセッサの動作状態を変更することにより、 スピンゥ エイト実行中に生ずる無駄を削減する。 また本発明によれば、 プロセッサにスピ ンウェイト検出部を設け、 またキャッシュメモリに値変更検出部を設けるといつ た少量のハードウェアの追加により、 スピンウェイトが終了する可能性が無いか 又は低いときの無駄を削減し、 スピンウェイトの低遅延という特徴を損ねること なく、 プロセッサの命令実行効率を良くする。
スピンウェイト検出部は、 プロセッサによるスピンウェイト命令の実行中を検 出した際に、 スピンウェイト命令の実行で参照している変数値が格納されたキヤ ッシュメモリのキャッシュブロックの監視を値変更検出部に指示する。 値変更検 出部は、 キャッシュブロックの状態が他のプロセッサ又は入出力ュニットにより 無効化されたことを検出した場合に、 プロセッサに値変更を通知する。 変更検出 部は、 キャッシュブロックがキャッシュメモリから追い出されたことを検出した 場合にも、 プロセッサに値変更を通知する。
スピンウェイト検出部は、 プロセッサによるスピンウェイト命令の実行中を検 出した際に、 スピンウェイト命令の実行で参照している変数値が格納されている メモリアドレスに対するバスリクエストの監視を値変更検出部に指示する。 値変 更検出部は、 スピンウェイト検出部から指示された変数値が格納されているメモ リアドレスに対するバスリクェストを監視し、 他のプロセッサ又は入出力ュニッ トから前記メモリアドレスに対するバスリクエストを検出した場合に、 プロセッ ザに値変更を通知する。
プロセッサは通常モードと低消費電力モードの少なくとも 2つ以上の動作モー ドを持っている場合、 スピンウェイト検出部は、 スピンウェイト命令の実行中を 検出した際にプロセッサの動作モードを低消費電力モードに変更する。 また値変 更検出部は、 スピンウェイトの終了条件となっている変数値の変更を検出した際 に、 プロセッサの動作モードを通常モードに変更させる。 これによりスピンゥェ ィト実行中にプロセッサの消費電力量を削減できる。
プロセッサはプログラム実行を停止する機能を持っている場合、 スピンウェイ ト検出部は、 スピンウェイト命令の実行中を検出した際にプロセッサにプロダラ ムの実行を停止させる。 また値変更検出部は、 スピンウェイトの終了条件となつ ている変数値の変更を検出した際に、 プロセッサにプログラムの実行を再開させ る。 これによりスピンウェイト実行中にプログラムの実行が停止され、 これに伴 いプロセッサの消費電力量を削減できる。
プロセッサは、 複数スレッドを同時実行できる構造 (S MTプロセッサ) を持 つている場合、 スピンウェイト検出部は、 スピンウェイト命令の実行中のスレツ ドを検出した際に、 このスレッドへのプロセッサリソースの割当てを減少又は停 止させる。 また値変更検出部は、 スピンウェイトの終了条件となっている変数値 の変更を検出した際に、 スレツドへのプロセッサリソースの割当てを増加又は再 開させる。 これにより S M Pプロセッサにおけるスレツドのスピンウェイト実行 中に、 他のスレッドプログラムの実行が停止され、 スピンウェイト実行スレッド による他のスレツドへの悪影響を回避し、結果としてプロセッサの性能が上がる。 プロセッサはスピンウェイト専用命令を持っており、スピンウェイト検出部は、 プロセッサによるスピンウェイト専用命令の実行からスピンウェイト実行中を検 出する。 またスピンウェイト検出部は、 プロセッサによる実効済命令列を格納す るバッファと、 スピンウェイト専用命令の命令列を記録する命令列記録部と、 ッファと命令列記録部とを比較して命令列が一致した際に、 スピンウェイト実行 中を検出する比較部とを備える。
本発明は、 キャッシュメモリを備えた複数のプロセッサを有するコンピュータ の制御方法を提供するものであり、
プロセッサによるスピンウェイト命令の実行中を検出した際に、 スピンウェイ トの終了条件となっている変数値の監視を開始した後にプロセッサの動作状態を 変更させ、
監視中に変数値が変更されたことを検出した場合にプロセッサに値変更を通知 して動作状態を元に戻させることを特徴とする。
この制御方法の詳細はコンピュータの場合と基本的に同じになる。 図面の簡単な説明
図 1は従来のスピンロック処理の説明図;
図 2は従来のバリア同期処理の説明図;
図 3は本発明が適用される共有メモリ型マルチプロセッサシステムのブック図; 図 4は本発明によるプロセッサの実施形態のブロック図
図 5は図 4におけるスピンウェイト検出部の実施形態ブロック図;
図 6はキヤッシュブロックを監視する図 4における値変更検出部の実施形態のブ ロック図;
図 7はスピンウェイト検出時にキャッシュブロックを監視して値変更を検出する 本発明の処理手順のタイムチャート;
図 8は本発明による同期処理の説明図
図 9はバストランザクションを監視する図 4における値変更検出部の他の実施形 態のブロック図; 図 1 0は本発明によるスピンウェイト検出時にバストランザクションを監視して 値変更を検出する本発明の処理手順のタイムチャート;
図 1 1は本発明が適用される S MTプロセッサの概略構成のブロック図; 図 1 2はスピンウェイトを検出してプロセッサリソースを削減する本発明の処理 手順のタイムチヤ一ト; 発明を実施するための最良の形態
図 3は、 本発明が適用される共有メモリ型マルチプロセッサシステムのブロッ ク図である。 図 3において、 マルチプロセッサシステムは、 例えば 4台のプロセ ッサ 1 0— 1〜: L 0 — 4を備えており、 プロセッサ 1 0— 1〜: L 0 — 4ごとにキ ャッシュメモリ 1 2—:!〜 1 2— 4が設けられている。 キャッシュメモリ 1 2— 1〜1 2— 4はバス 1 4を介して共有メモリとして使用されるメインメモリ 1 6 を接続している。 またバス 1 4には入出力ユニット 1 8が接続され、 この入出力 ュニット 1 8としては例えば入出力エージェントとして機能する入出力プロセッ サであり、 外部のハードディスクドライブ H D Dなどのサブシステムゃネットヮ —ク、 更にはキーボード、 マウス、 ディスプレイなどの入出力機器を接続してい る。
図 4は、 図 3のプロセッサ 1 0— 1の実施形態である。 なお、 他のプロセッサ 1 0 _ 2〜1 0 — 4も同じ実施形態となる。 図 4において、 プロセッサ 1 0— 1 は、 プロセッサコア 1 1、 キャッシュメモリインタフェース 2 0を備える。 また キャッシュメモリ 1 2— 1は、 プロセッサインタフェース 2 4、 キャッシュメモ リ制御部 2 6、 バスインタフェース 2 8及びキャッシュメモリアレイ 3 0を備え ている。 このようなプロセッサ 1 0— 1及びキャッシュメモリ 1 2— 1の構成は 従来のプロセッサと同じであるが、 本発明にあってはプロセッサ 1 0— 1側に新 たにスピンウェイト検出部 2 2を設け、 同時にキャッシュメモリ 1 2— 1側に値 変更検出部 3 2を設けている。 プロセッサ 1 0— 1に設けられたスピンウェイト 検出部 2 2は、 プロセッサコア 1 1によるスピンウェイト命令の実行中を検出し た際に、 スピンウェイトの終了条件となっている変数値の監視をキャッシュメモ リ 1 2 _ 1側に設けた値変更検出部 3 2に指示した後に、 プロセッサ 1 0— 1の 動作状態を変更させる。 スピンウェイト検出部 2 2によるプロセッサ 1 0— 1の 動作状態の変更としては、 スピンウェイト命令の実行中に生ずる無駄を削減する 動作状態に変更するものであり、 具体的には次のようになる。
例えばプロセッサ 1 0 — 1が通常モードと低消費電力モ一ドの少なくとも 2つ の動作モードを持っている場合には、 スピンウェイト検出部 2 2でスピンウェイ ト命令の実行中を検出した際にはプロセッサの動作モードを低消費電力モードに 変更する。 またプロセッサがプログラム実行を停止する機能を持っている場合に は、 スピンウェイト検出部 2 2でスピンウェイト命令の実行中を検出した際にプ 口セッサにプログラムの実行を停止させる。 このスピンゥヱイト命令の実行を検 出した際の低消費電力モードへの変更あるいはプログラムの実行停止のいずれも、 スピンウェイトの終了条件が所定の値に変更されるまで延々とスピンウェイトの 命令列の実行を繰り返すスピンにより、 プロセッサの無駄な動作や無駄に使用し ている消費電力を防ぐようにする。 もちろん、 スピンウェイト命令検出時のプロ セッサによるプログラムの実行停止は低消費電力モードの 1つの形態に含まれる と言うこともできる。
キャッシュメモリ 1 2 _ 1側に設けた値変更検出部 3 2は、 スピンウェイト検 出部 2 2から指示されたスピンウェイトの終了条件となっている変数値を監視し、 この変数値が他のプロセッサ 1 0 _ 2〜1 0— 4や入出力ュニット 1 8により変 更されたことを検出した場合に、 プロセッサ 1 0— 1側に値変更を通知してプロ セッサの動作状態を元に戻す。 例えば、 スピンウェイト命令実行中の検出でプロ セッサか低消費電力モードに変更されていた場合には通常モードに戻す。 またス ピンウェイト命令の実行中の検出でプロセッサのプログラムの実行停止となって いた場合にはプログラムの実行を再開させる。
図 5は、 図 4のプロセッサ 1 0— 1に設けているスピンウェイト検出部 2 2の 実施形態である。 スピンウェイト検出部 2 2は、 実行済命令列バッファ 3 4、 ス ピンウェイ卜命令列記録部 3 6及び比較部 3 8を備える。 この実施形態にあって は、 既存の命令セット I S A (Instruction Set Architecture) をそのまま使用し た場合を例に取っている。 スピンウェイト検出部 2 2は、 まずスピンウェイト命 令列記録部 3 6にスピンウェイトであることを示す命令列を予め記録する。 この 命令列の記録は複数個でもよく、 また記録内容は予め定められたものであっても 良い。 実行済命令列バッファ 3 4には、 プロセッサコアで実行が完了した命令列 が記録される。 比較部 3 8は、 スピンウェイト命令列記録部 3 6に記録している 基準となる命令列と実行済命令列バッファ 3 4に記録された命令列を比較し、 両 者が一致したら即ちスピンウェイト命令列が実行されていることを検出したら、 キャッシュメモリインタフェース 2 0に対しスピンウェイト命令列検出信号 E 1 を出力する。
図 6は、 図 4のキャッシュメモリ 1 2— 1側に設けている値変吏検出部 3 2の 実施形態である。 この実施形態において値変更検出部 3 2には、 監視対象先記録 部 4 0とキャッシュステート監視部 4 2を設けている。 プロセッサにおいてスピ ンウェイト命令の実行によりスピンウェイトが始まると、 図 5に示したスピンゥ エイト検出部 2 2よりスピンウェイト命令列検出信号 E 1が出力され、 図 6の値 変更検出部 3 2に設けている監視対象アドレス記録部 4 0にスピンウェイトの終 了条件として参照している変数値を格納しているキャッシュブロック、 具体的に はキャッシュメモリエントリを、 キャッシュメモリ制御部 2 6を経由して受けて 記録する。 キャッシュステート監視部 4 2は監視対象アドレス記録部 4 0に記録 されたキャッシュメモリエントリを監視しており、 このエントリのキャッシュス テート (キャッシュ状態) が更新されたら、 キャッシュメモリ制御部 2 6を介し てプロセッサ側に値変更検出信号 E 2を出力する。
この実施形態において、 キャッシュプロトコルとしては M E S Iプロトコルを 例にとっており、 この場合、 キャッシュステート監視部 4 2は監視対象となるェ ントリのキヤッシュステートが無効 Iに更新されたら値変更検出信号 E 2を出力 する。 なおキャッシュステート監視部 4 2としては、 スピンウェイト終了条件と なっている変数値の書き換えに対応したキャッシュステートの無効 Iの更新から 値変更検出信号 E 2を出力しているが、 キャッシュメモリの L R Uアルゴリズム により監視対象となっているキャッシュメモリエントリの追い出しが行われた場 合にも値変更検出信号 E 2を出力する。
図 7は、 スピンウェイト検出時にスピンウェイト終了条件となっている変数値 が格納されているキャッシュメモリエントリ (キャッシュブロック) を監視して 値変更を検出する本発明の処理手順のタイムチャートである。 まずスピンウェイ ト検出部 2 2がステップ S 1でプロセッサ 1 0— 1でスピンウェイト命令を実行 中か否かチェックしている。 プロセッサ 1 0— 1でスピンウェイト命令が実行さ れると、 図 5の実施形態に示したようなスピンウェイト検出部 2 2でスピンゥェ イト命令の実行が検出され、 スピンウェイト命令検出信号 E 1が出力される。 こ れによって、 ステップ S 2でスピンウェイト検出部 2 2は、 スピンウェイトで参 照している変数値が格納されたキャッシュブロックの監視をキャッシュメモリ 1 2— 1側の値変更検出部 3 2に指示する。 これと同時にスピンウェイト検出部 2 2は、 ステップ S 3でプロセッサ 1 0— 1によるスピンウェイト命令の実行を停 止し、 低消費電力の動作状態に入る。
スピンウェイト検出部 2 2からキャッシュブロックの監視 ¾指示された値変更 検出部 3 2は、 ステップ S 1 0 1でプロセッサから指示されたキャッシュブロッ クの監視を開始する。 即ち、 ステップ S 1 0 2で監視対象となるキャッシュプロ ックにおけるキャッシュステート即ちキャッシュ状態の状態変化、 具体的には無 効化が行われたか否かを検出している。 この状態で他のプロセッサ 1 0— 1〜1 0— 4のいずれか、 あるいは入出力ュニット 1 8によるキャッシュブロックの更 新があると、 監視しているキャッシュブロックのキャッシュステートが無効状態 に更新される。 これをステップ S 1 0 2で検出すると、ステップ S 1 0 3に進み、 キャッシュブロックの状態変化を図 6の値変更検出部 3 0より値変更検出信号 E 2として出力し、 キャッシュブロックの状態変化即ち無効化をプロセッサ側に通 知する。 この値変更検出信号を受けて、 スピンウェイト検出部 2 2にあっては、 ステップ S 4でプロセッサ 1 0— 1によるスピンウェイト命令の実行を再開する 図 8は、 マルチプロセッサシステムにおけるバリア同期処理を例にとって本発 明の処理手順を示した説明図である。 図 8 (A) はバリア同期処理の対象となる マルチプロセッサシステムの一部であり、 説明を簡単にするため 2台のプロセッ サ 1 0— 1, 1 0— 2のバリア同期処理を例にとっている。 またプロセッサ 1 0 一 1, 1 0— 2に設けたキャッシュメモリ 1 2— 1, 1 2— 2にあっては、 スピ ンウェイト命令の実行で参照しているスピンウェイトの終了条件となっている 2 ビットの変数値とキャッシュブロックにおけるキャッシュステートを示している t このキャッシュステートは M E S Iプロトコルに対応しており、 また変数値は 2 台のプロセッサ 1 0— 1, 1 0 — 2のバリア同期であることから、 それぞれに対 応した 2ビットの情報であり、 同期ポイントに達する前の状態では 「0 0」 とな つている。
図 8 ( B ) 〜 (G) は、 図 7に示した本発明の処理手順に従ったパリア同期処 理の動作の遷移状態を時間的に分けて表わしている。 図 8 ( B ) はバリア同期の 対象となっている 2台のプロセッサ 1 0— 1 , 1 0— 2の内、 プロセッサ 1 0— 1が同期ポイントに達してスピンウェイトした状態である。 即ちプロセッサ 1 0 _ 1は、 同期ポイントへの到達で図 2に示した設定部 1 0 4の処理により、 キヤ ッシュメモリ 1 2— 1の対象エントリの変数値のうち自分の対応ビットを 1にセ ットし、 これにより変数値は 「0 0」 から 「0 1」 となる。 このキャッシュメモ リ 1 2 — 1の変数値の更新に際し、 同じキャッシュブロックを持っているプロセ ッサ 1 0— 2のキャッシュメモリ 1 2— 2にあっては、 キャッシュステートの無 効化が行われる。 なおキャッシュメモリ 1 2— 1にあっては、 該当するキヤッシ ュブロックのキャッシュステートは変更 Mに更新される。
この図 8 ( B ) のようにプロセッサ 1 0 _ 1でスピンウェイト状態になると、 図 4のようにプロセッサ 1 0— 1に設けているスピンウェイト検出部 2 2がスピ ンウェイト命令の実行中を検出し、 キャッシュメモリ 1 2 — 1に対し該当するキ ャッシュブロックのキャッシュステートが無効 Iになるか否かの監視を指示する。 同時にプロセッサ 1 0— 1に対し例えばスピンウェイトのプログラム実行を停止 させる。 これにより図 8 ( C) のように、 プロセッサ 1 0— 1はスピンウェイト のプログラム実行を停止した状態となり、 一方、 プロセッサ 1 0 — 2は通常モー ドでプログラム実行を続けている。
図 8 (D) はプロセッサ 1 0— 2が同期ポイントに達したときの処理である。 プロセッサ 1 0— 2が同期ポイントに達すると、 スピンウエイト命令の実行によ りキャッシュメモリ 1 2— 2からスピンウェイト終了条件となる変数値の読み込 みを行う。 このときキヤッシュメモリ 1 2— 2の該当キャッシュブロックは無効 I状態にあることから、 キャッシュプロトコルによりプロセッサ 1 0 — 1のキヤ ッシュメモリ 1 2— 2から変数値を読み出してキャッシュステートを共有 S状態 にした後にプロセッサ 1 0— 2で読み取る。 続いて図 8 (E) のように、 プロセ ッサ 1 0— 2は自分に割り当てられているビットを 1に書き換えることで変数値 を 「1 1」 とする。 この変数値の更新により、 プログラムの実行停止にあるプロ セッサ 1 0—1のキャッシュメモリ 1 2 — 1に対し変数値の無効化が行われ、 キ ャッシュステートはそれまでの共有 Sから無効 Iに更新される。 このキャッシュ メモリ 1 2— 1における無効 Iへの状態変化を図 4のキャッシュメモリ 1 2— 1 側に設けている値変更検出部 3 2で検出すると、 プロセッサ 1 0— 1に対し値変 更通知を行い、 これによつて、 それまで停止していたプログラムの実行が再開さ れる。
このため、 プログラムの実行を再開したプロセッサ 1 0— 1は、 図 8 ( F ) で スピンウェイト命令の実行によりキャッシュメモリ 1 2 - 1の該当キャッシュブ ロックの変数値 「1 1」 を読み込み、 これによつてスピンウェイト終了条件が成 立したことを認識する。 このときプロセッサ 1 2— 2側にあっても、 変数値 「1 1」 の認識でスピンウェイト終了条件を判定しており、 これにより 2台のプロセ ッサ 1 0— 1, 1 0— 2のバリア同期が取られ、 図 8 ( G) のようにスピンゥェ ィトを終了して、 次のプログラムの実行処理に移行することになる。
図 9は、 図 4のキャッシュメモリ 1 2— 1側に設けている値変更検出部 3 2の 他の実施形態であり、 この実施形態にあってはスピンウェイトの終了条件となつ ている変数値を格納しているキャッシュブロックに対する他のプロセッサ、 ある いは入出力ユニットによる変数値変更のためのパストランザクション (バスリク エスト) を監視して値変更を検出するようにしたことを特徴とする。
図 9の値変更検出部 3 2は、 図 6と同じ監視対象アドレス記録部 4 0に対しバ ストランザクション監視部 4 4を設けている。 プロセッサ側でスピンウェイト命 令の実行が開始されると、 スピンウェイ卜で参照しているデータアドレスが監視 対象ァドレス記録部 4 0に記録される。 バストランザクシヨン監視部 4 4は、 監 視対象アドレスに対する他のプロセッサあるいは入出力ュニットからのパス 1 4 によるトランザクションをバスインタフェースス 2 8を介して監視しており、 監 視しているバストランザクションを検出すると、 値変更検出信号 E 2をキヤッシ ュメモリ制御部 2 6を経由してプロセッサ側に出力する。 このバス ヨンの監視による値変更検出は、 スピンウェイトの終了条件となっている変数値 の変更を直接検出するものではなく、 正確には変数値が変更される可能性がある ことを検出していると言うことができる。
図 1 0は、 図 9のバストランザクションの監視により値変更を検出する場合の 本発明の処理手順のタイムチャートである。 スピンウェイト検出部 2 2は、 ステ ップ S 1でプロセッサでのスピンウェイト命令実行中を検出すると、 ステップ S 2で、 スピンウェイト命令で参照している変数値が格納されているキャッシュブ ロック、 即ちデ一夕アドレスの監視の指示をキャッシュメモリ側の値変更検出部
3 2に対し行う。 またステップ S 3で、 スピンウェイト検出部 2 2はプロセッサ に対しスピンウェイト命令列検出実行を出力して、 プロセッサによるスピンゥェ ィト命令の実行を停止させる。
キャッシュメモリ側の値変更検出部 3 2にあっては、 ステップ S 1 0 1でプロ セッサ側から指示されたデ一タアドレスに対するバストランザクションを監視し、 監視対象のキャッシュブロックに対するバストランザクションをステップ S 1 0 2で検出すると、 ステップ S 1 0 3でバストランザクションによる状態変化 (可 能性) を値変更検出信号の出力によりプロセッサ側に通知する。 これを受けてス ピンウェイト検出部 2 2にあっては、 ステップ S 4でプロセッサによるスピンゥ エイト命令の実行を再開することになる。
次に図 3のプロセッサ 1 0 _ 1〜1 0— 4として S M Tプロセッサを使用した 場合について、 スピンウェイト命令実行中のプロセッサに対するプロセッサリソ ースの割当てを削減する本発明の他の実施形態を説明する。
図 1 1は、 本発明が適用される S M Tプロセッサの概略構成である。 S M Tプ 口セッサは、 命令ポインタ 4 6— 1 , 4 6— 2、 フェッチ Zデコード 4 8— 1 ,
4 8— 2、 実行ユニット 5 0、 リタイヤメントユニット 5 2、 1次命令キヤッシ ュユニット 5 4、 1次データキャッシュユニット 5 6及び 2次キャッシュュニッ ト 5 8を備えている。 このような概略構成を持つ S MTプロセッサは、 同時に複 数スレツドを実行するため通常は命令ポインタを複数持っており、 この例では 2 つの命令ポインタ 4 6— 1, 4 6— 2を持った場合を示している。 この命令ポィ ンタ 4 6— 1, 4 6— 2及びフェッチ/デコード 4 8— 1, 4 8— 2で実現され る 2つのスレツドの実行にあっては、 実行ュニット 5 0などのリソースをスレツ ド間で共有することにより、 リソースの有効利用率を高めており、 これが S MT プロセッサの狙いである。 このように複数のスレツドでプロセッサリソースを共 有する S MTプロセッサにあっては、 次にどのスレツドの命令を実行ュニット 5 0に割り当てるかを極める方針がいろいろ提案されている。 そこで本発明は、 こ の実行ュニットなどのプロセッサリソースをどのスレツドの命令に割り当てるか を決める方針の決定に利用することができる。 具体的には、 スピンウェイト実行 中のスレツドを検出したら、 スピンウェイト命令を実行中のスレツドに対する実 行ュニットなどのプロセッサリソースの割当てを削減もしくは停止する。 これに よってスピンウェイトではない、 より意味のある命令を実行している他のスレツ ドの命令を実行ユニットに割り当てる機会が増え、 その結果、 S MTプロセッサ の処理性能の向上が期待できる。
図 1 2は、 S MTプロセッサについてスピンウェイトを検出してプロセッサリ ソースを削減する本発明の処理手順のタイムチヤ一トである。 S M Tプロセッサ 側のスピンウェイト検出部 2 2は、 ステップ S 1で複数のスレッドの内のあるス レツドでスピンウェイト実行中か否かをチェックしており、実行中を検出すると、 ステップ S 2に進み、 スピンウェイトで参照している変数値が格納されたキヤッ シュブロックの監視をキャッシュメモリ側の値変更検出部 3 2に指示する。 また ステップ S 3で、 スピンウェイト命令を実行中のスレツドの命令を割り当てるプ 口セッサリソースの削減または停止を行う。 具体的には、 例えば命令ポインタ 4 6 - 1及びフェッチ /デコード 4 8— 1側で実行されるスレッドの命令でスピン ウェイト実行中が検出された場合には、 このスレツドによる命令の実行ュニット 5 0に対する割当てを削減または停止し、 スピンウェイト命令以外の命令を実行 している命令ポインタ 4 6 - 2 , フェッチ /デコード 4 8— 2側となる他のスレ ッドの命令に実行ュニット 5 0を割り当てる。
キャッシュメモリ側の値変更検出部 3 2にあっては、 ステップ S 1 0 1でプロ セッサ側から指示されたキャッシュブロックのキャッシュステートを監視し、 ス テツプ S 1 0 2でキャッシュステート即ち状態が無効 Iに更新されたことを検出 すると、 ステップ S 1 0 3でキャッシュブロックの状態変化をプロセッサ側に通 知する。 これを受けてスピンウェイト検出部 2 2側にあっては、 ステップ S 4で スピンウェイト命令を実行中のスレツドに対するそれまでのプロセッサリソース の割当ての削減または停止を解除する。
なお上記の実施形態にあっては、 キャッシュプロトコルとして M E S Iプロト コルを例にとるものであつたが、 無効 Iへの更新を含むものであれば適宜のキヤ ッシュプロトコルであってもよい。 また上記の実施形態にあっては、 スピンゥェ ィト終了条件のための変更値として該当するキャッシュブロックのキャッシュス テートの無効化、 あるいはこのステ一トに対するバストランザクションからキヤ ッシュ終了条件となっている変数値を直接または間接的に監視しているが、 これ 以外の変数値の直接または間接的な監視であっても良いことはもちろんである。 また上記の実施形態にあっては、 スピンウェイト実行中を検出した際のプロセ ッサの動作状態の変更として、 低消費電力モードへの変更、 プログラムの実行停 止、 更には S MTプロセッサにあってはプロセッサリソースの割当て減少または 停止を例に取るものであつたが、 これ以外に適宜のスピンウェイト命令の実行で 生ずる無,駄を省くプロセッサの動作状態の変更であれば適宜のものを含む。 また本発明は上記の実施形態に限定されず、 その利点と目的を損なうことのな い適宜の変形を含む。 更に本発明は上記の実施形態に示した数値による限定は受 けない。 【産業上の利用可能性】
以上説明してきたように本発明によれば、 スピンウェイトの特徴である遅延の 低さを犠牲にすることなく、 スピンウェイト命令実行によって発生する無駄な命 令実行やプロセッサの動作を制限することができ、 その結果としてプロセッサの 電力消費を節減することができる。
また S MTプロセッサにあっては、 スピンウェイト実行スレッドによる他のス レツドへの悪影響を回避することができ、 S MTプロセッサの処理能力を向上さ せることができる。

Claims

請求の範囲
1 .キャッシュメモリを備えた複数のプロセッサを有するコンピュータに於いて、 前記プロセッサによるスピンウェイト命令の実行中を検出した際に、 前記スピ ンウェイ卜の終了条件となっている変数値の監視を指示した後に前記プロセッサ の動作状態を変更させるスピンウェイト検出部と、 .
前記スピンウェイト検出部から指示された変数値を監視し、 該変数値が変更さ れたことを検出した場合に前記プロセッサに値変更を通知して動作状態を元に戻 す値変更検出部と、
を備えたことを特徴とするコンピュータ。
2 . 請求の範囲 1のコンピュータにおいて、 前記スピンウェイト検出部は、 前記 プロセッサによるスピンウェイト命令の実行中を検出した際に、 前記スピンゥェ ィト命令の実行で参照している前記変数値が格納された前記キャッシュメモリの キャッシュブロックの監視を前記値変更検出部に指示し、
前記値変更検出部は、 前記スピンウェイト検出部から指示されたキャッシュブ ロックを監視し、 該キャッシュブロックの状態が変更されたことを検出した場合 に前記プロセッサに値変更を通知することを特徴とするコンピュータ。
3 . 請求の範囲 2のコンピュータに於いて、 前記値変更検出部は、 前記キヤッシ ュブロックの状態が他のプ口セッサ又は入出力ユニットにより無効化されたこと を検出した場合に、 前記プロセッサに値変更を通知することを特徴とするコンビ ュ一タ。
4 . 請求の範囲 2のコンピュータに於いて、 前記値変更検出部は、 前記キヤッシ ュブロックがキャッシュメモリから追い出されたことを検出した場合に、 前記プ 口セッサに値変更を通知することを特徴とするコンピュータ。
5 . 請求の範囲 1のコンピュータに於いて、 前記スピンウェイト検出部は、 前記プロセッサによるスピンウェイト命令の実 行中を検出した際に、 前記スピンウェイト命令の実行で参照している変数値が格 納されているメモリアドレスに対するバスリクエストの監視を前記値変更検出部 に指示し、
前記値変更検出部は、 前記スピンウェイト検出部から指示された変数値が格納 されているメモリアドレスに対するバスリクエストを監視し、 他のプロセッサ又 は入出力ュニッ卜から前記メモリアドレスに対するバスリクエストを検出した場 合に、 前記プロセッサに値変更を通知することを特徴とするコンピュータ。
6 . 請求の範囲 1のコンピュータに於いて、
前記プロセッサは通常モードと低消費電力モ一ドの少なくとも 2つ以上の動作 モードを持っており、
前記スピンウェイト検出部は、 スピンウェイト命令の実行中を検出した際に前 記プロセッサの動作モードを低消費電力モードに変更し、
前記値変更検出部は、 前記スピンウェイトの終了条件となっている変数値の変 更を検出した際に、 前記プロセッサの動作モードを通常モードに変更させること を特徴とするコンピュータ。
7 . 請求の範囲 1のコンビュ一夕に於いて、
前記プロセッサはプログラム実行を停止する機能を持っており、
前記スピンウェイト検出部は、 スピンウェイト命令の実行中を検出した際に前 記プロセッサにプログラムの実行を停止させ、
前記値変更検出部は、 前記スピンウェイトの終了条件となっている変数値の変 更を検出した際に、 前記プロセッサにプログラムの実行を再開させることを特徴 とするコンピュータ。
8 . 請求の範囲 1のコンピュータに於いて、
前記プロセッサは、 複数スレツドを同時実行できる構造を持っており、 前記スピンウェイト検出部は、 スピンウェイト命令の実行中のスレツドを検出 した際に、 該スレツドへのプロセッサリソースの割当てを減少又は停止させ、 前記値変更検出部は、 前記スピンウェイトの終了条件となっている変数値の変 更を検出した際に、 前記スレツドへのプロセッサリソースの割当てを増加又は再 開させることを特徴とするコンピュータ。
9 . 請求の範囲 1のコンピュータに於いて、 前記プロセッサはスピンウェイト専 用命令を持っており、 前記スピンウェイト検出部は、 前記プロセッサによるスピ ンウェイト専用命令の実行からスピンウェイト実行中を検出することを特徴とす るコンピュータ。
1 0 . 請求の範囲 1のコンピュータに於いて、 前記スピンウェイト検出部は、 前記プロセッサによる実効済命令列を格納するバッファと、
前記スピンウェイト専用命令の命令列を記録するスピンウェイト命令列記録部 と、
前記バッファとスピンウェイト命令列記録部とを比較して命令列が一致した際 に、 スピンウェイト実行中を検出することを特徴とするコンピュータ。
1 1 . キャッシュメモリを備えた複数のプロセッサを有するコンピュータの制御 方法に於いて、
前記プロセッサによるスピンウェイト命令の実行中を検出した際に、 前記スピ ンウェイトの終了条件となっている変数値の監視を開始した後に前記プロセッサ の動作状態を変更させ、
前記変数値が変更されたことを検出した場合に前記プロセッサに値変更を通知 して動作状態を元に戻すことを特徴とするコンピュータの制御方法。
1 2 . 請求の範囲 1 1のコンピュータの制御方法に於いて、
前記プロセッサによるスピンウェイト命令の実行中を検出した際に、 前記スピ ンウェイト命令の実行で参照している前記変数値が格納された前記キャッシュメ モリのキャッシュブロックの監視を開始し、 前記キャッシュブロックの監視中に、 該キャッシュブロックの状態が変更され たことを検出した場合に前記プロセッサに値変更を通知することを特徴とするコ ンピュー夕の制御方法。
1 3 . 請求の範囲 1 2のコンピュータの制御方法に於いて、 前記キャッシュブロ ックの状態が他のプロセッサ又は入出力ュニットにより無効化されたことを検出 した場合に、 前記プロセッサに値変更を通知することを特徴とするコンピュータ の制御方法。
1 4 . 請求の範囲 1 2のコンピュータの制御方法に於いて、 前記キャッシュブロ ックがキャッシュメモリから追い出されたことを検出した場合に、 前記プロセッ サに値変更を通知することを特徴とするコンピュータの制御方法。
1 5 . 請求の範囲 1 1のコンピュータの制御方法に於いて、
前記プロセッサによるスピンウェイト命令の実行中を検出した際に、 前記スピ ンウェイト命令の実行で参照している変数値が格納されているメモリアドレスに 対するバスリクエストの監視を開始し、
前記メモリアドレスに対するバスリクエストの監視中に、 他のプロセッサ又は 入出力ュニッ卜から前記メモリアドレスに対するバスリクエストを検出した場合 に、 前記プロセッサに値変更を通知することを特徴とするコンピュータの制御方
1 6 . 請求の範囲 1 1のコンピュータの制御方法に於いて、
前記プロセッサは通常モードと低消費電力モードの少なくとも 2つ以上の動作 モ一ドを持っており、
前記スピンウェイト命令の実行中を検出した際に前記プロセッサの動作モード を低消費電力モードに変更させ、
前記スピンウェイトの終了条件となっている変数値の変更を検出した際に、 前 記プロセッサの動作モードを通常モードに変更させることを特徴とするコンビュ 一夕の制御方法。
1 7 . 請求の範囲 1 1のコンピュータの制御方法に於いて、
前記プロセッサはプログラム実行を停止する機能を持っており、
前記スピンウェイト命令の実行中を検出した際に前記プロセッサにプログラム の実行を停止させ、
前記スピンウェイトの終了条件となっている変数値の変更を検出した際に、 前 記プロセッサにプログラムの実行を再開させることを特徴とするコンピュータの 制御方法。
1 8 . 請求の範囲 1 1のコンピュータの制御方法に於いて、
前記プロセッサは、 複数スレツドを同時実行できる構造を持っており、 前記スピンウェイト命令の実行中のスレツドを検出した際に、 該スレツドへの プロセッサリソースの割当てを減少又は停止させ、
スピンウェイ卜の終了条件となっている変数値の変更を検出した際に、 前記ス レッドへのプロセッサリソースの割当てを増加又は再開させることを特徴とする コンピュータの制御方法。
1 9 . 請求の範囲 1 1のコンピュータの制御方法に於いて、 前記プロセッサはス ピンウェイト専用命令を持っており、 前記プロセッサによるスピンウェイト専用 命令の実行からスピンウェイト実行中を検出することを特徴とするコンピュータ の制御方法。
2 0 . 請求の範囲 1 9のコンピュータの制御方法に於いて、 前記スピンウェイト 検出は、
前記スピンウェイト専用命令の命令列をスピンウェイト命令列記録部に記録し、 前記プロセッサによる実行済命令列を順次バッファに格納し、
前記バッファとスピンウェイト命令列記録部とを比較して命令列が一致した際 に、スピンウェイト実行中を検出することを特徴とするコンピュータの制御方法。
PCT/JP2001/009788 2001-11-08 2001-11-08 Ordinateur et procede de commande WO2003040948A1 (fr)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2003542505A JP4253796B2 (ja) 2001-11-08 2001-11-08 コンピュータ及び制御方法
PCT/JP2001/009788 WO2003040948A1 (fr) 2001-11-08 2001-11-08 Ordinateur et procede de commande
US10/841,619 US7337274B2 (en) 2001-11-08 2004-05-10 Computer and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2001/009788 WO2003040948A1 (fr) 2001-11-08 2001-11-08 Ordinateur et procede de commande

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US10/841,619 Continuation US7337274B2 (en) 2001-11-08 2004-05-10 Computer and control method

Publications (1)

Publication Number Publication Date
WO2003040948A1 true WO2003040948A1 (fr) 2003-05-15

Family

ID=11737921

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2001/009788 WO2003040948A1 (fr) 2001-11-08 2001-11-08 Ordinateur et procede de commande

Country Status (3)

Country Link
US (1) US7337274B2 (ja)
JP (1) JP4253796B2 (ja)
WO (1) WO2003040948A1 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005055057A1 (en) * 2003-12-01 2005-06-16 Sony Computer Entertainment Inc. Methods and apparatus for efficient multi-tasking
EP1594059A2 (en) * 2004-04-30 2005-11-09 Fujitsu Limited Information processing devices and control methods therefor
JP2010044770A (ja) * 2003-06-27 2010-02-25 Intel Corp モニタメモリ待機を用いたキューされたロック
JP2010524054A (ja) * 2007-03-30 2010-07-15 インターナショナル・ビジネス・マシーンズ・コーポレーション エミュレートされた処理環境でメモリ・アクセスを管理する方法、システム、およびそのためのコンピュータ・プログラム
JP2014119918A (ja) * 2012-12-14 2014-06-30 Fujitsu Ltd 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム
US8918664B2 (en) 2010-06-25 2014-12-23 Panasonic Corporation Integrated circuit, computer system, and control method, including power saving control to reduce power consumed by execution of a loop
US9733937B2 (en) 2004-06-30 2017-08-15 Intel Corporation Compare and exchange operation using sleep-wakeup mechanism

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7475385B2 (en) * 2004-09-29 2009-01-06 Hewlett-Packard Development Company, L.P. Cooperating test triggers
JP4878050B2 (ja) * 2008-11-28 2012-02-15 富士通株式会社 コンピュータ及び制御方法
US9021502B2 (en) * 2008-12-29 2015-04-28 Oracle America Inc. Method and system for inter-thread communication using processor messaging
KR102476357B1 (ko) 2015-08-06 2022-12-09 삼성전자주식회사 클럭 관리 유닛과 이를 적용하는 집적 회로 및 시스템 온 칩 및 그 동작 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6944779B2 (en) * 1999-07-14 2005-09-13 Visteon Global Technologies, Inc. Power management fault strategy for automotive multimedia system
US6721892B1 (en) * 2000-05-09 2004-04-13 Palmone, Inc. Dynamic performance adjustment of computation means

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Using Spin-Loops on Intel Pentium 4 Processor and Intel Xeon Processor, [Online], Intel Corp., May 2001,[retrieved on 2002-2-08], Retrieved from the Internet: <URL:ftp://download.intel.com/design/perftool/cbts/appnotes/sse2/w_spinlock.pdf>. ibid *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010044770A (ja) * 2003-06-27 2010-02-25 Intel Corp モニタメモリ待機を用いたキューされたロック
WO2005055057A1 (en) * 2003-12-01 2005-06-16 Sony Computer Entertainment Inc. Methods and apparatus for efficient multi-tasking
EP1594059A2 (en) * 2004-04-30 2005-11-09 Fujitsu Limited Information processing devices and control methods therefor
EP1594059A3 (en) * 2004-04-30 2007-09-05 Fujitsu Limited Information processing devices and control methods therefor
US7853756B2 (en) 2004-04-30 2010-12-14 Fujitsu Limited Information processing device, processor, processor control method, information processing device control method and cache memory
US9733937B2 (en) 2004-06-30 2017-08-15 Intel Corporation Compare and exchange operation using sleep-wakeup mechanism
JP2010524054A (ja) * 2007-03-30 2010-07-15 インターナショナル・ビジネス・マシーンズ・コーポレーション エミュレートされた処理環境でメモリ・アクセスを管理する方法、システム、およびそのためのコンピュータ・プログラム
JP4738548B2 (ja) * 2007-03-30 2011-08-03 インターナショナル・ビジネス・マシーンズ・コーポレーション エミュレートされた処理環境でメモリ・アクセスを管理する方法、システム、およびそのためのコンピュータ・プログラム
US8918664B2 (en) 2010-06-25 2014-12-23 Panasonic Corporation Integrated circuit, computer system, and control method, including power saving control to reduce power consumed by execution of a loop
JP2014119918A (ja) * 2012-12-14 2014-06-30 Fujitsu Ltd 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム

Also Published As

Publication number Publication date
US7337274B2 (en) 2008-02-26
JPWO2003040948A1 (ja) 2005-03-03
US20040210723A1 (en) 2004-10-21
JP4253796B2 (ja) 2009-04-15

Similar Documents

Publication Publication Date Title
US6871264B2 (en) System and method for dynamic processor core and cache partitioning on large-scale multithreaded, multiprocessor integrated circuits
US6078944A (en) Process management method and system
US8756605B2 (en) Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline
US8145723B2 (en) Complex remote update programming idiom accelerator
JP3595504B2 (ja) マルチスレッド式プロセッサにおけるコンピュータ処理方法
US8898435B2 (en) Optimizing system throughput by automatically altering thread co-execution based on operating system directives
US8046758B2 (en) Adaptive spin-then-block mutual exclusion in multi-threaded processing
US9047120B2 (en) Virtual queue processing circuit and task processor
US8230201B2 (en) Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system
US8082315B2 (en) Programming idiom accelerator for remote update
US8886919B2 (en) Remote update programming idiom accelerator with allocated processor resources
US8775837B2 (en) System and method for enabling turbo mode in a processor
US20040216120A1 (en) Method and logical apparatus for rename register reallocation in a simultaneous multi-threaded (SMT) processor
US8572624B2 (en) Providing multiple quiesce state machines in a computing environment
US20060136919A1 (en) System and method for controlling thread suspension in a multithreaded processor
JP2006508468A (ja) マルチスレッド・プロセッサ性能を制御する装置及び方法
EP2857968A1 (en) Task processor
JPH10149285A (ja) 命令実行制御方法および情報処理装置
JP2009541848A (ja) コンピュータマイクロジョブを中断せずに実行するようスケジュールするための方法、システムおよび装置
WO2008023426A1 (fr) Dispositif de traitement de tâche
US20080172670A1 (en) Method and Apparatus for Reducing Contention for Computer System Resources Using Soft Locks
JP2013118005A (ja) 単一プロセッサまたはマルチプロセッサ・コンピュータ・システムにおけるマルチタスク・アプリケーションのロギングおよび再生を最適化する方法
KR20090119032A (ko) 멀티 프로세서 시스템
JPH10301794A (ja) 情報処理システムおよびキャッシュ・メモリのロード方法
WO2003040948A1 (fr) Ordinateur et procede de commande

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): JP US

WWE Wipo information: entry into national phase

Ref document number: 2003542505

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 10841619

Country of ref document: US