WO2004044745A1 - マルチスレッディングプロセッサにおけるスケジューリング方法およびマルチスレッディングプロセッサ - Google Patents

マルチスレッディングプロセッサにおけるスケジューリング方法およびマルチスレッディングプロセッサ Download PDF

Info

Publication number
WO2004044745A1
WO2004044745A1 PCT/JP2002/011818 JP0211818W WO2004044745A1 WO 2004044745 A1 WO2004044745 A1 WO 2004044745A1 JP 0211818 W JP0211818 W JP 0211818W WO 2004044745 A1 WO2004044745 A1 WO 2004044745A1
Authority
WO
WIPO (PCT)
Prior art keywords
thread
threads
fetch
threading processor
instruction
Prior art date
Application number
PCT/JP2002/011818
Other languages
English (en)
French (fr)
Inventor
Hideki Okawara
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 PCT/JP2002/011818 priority Critical patent/WO2004044745A1/ja
Priority to JP2004551175A priority patent/JP4086846B2/ja
Publication of WO2004044745A1 publication Critical patent/WO2004044745A1/ja
Priority to US11/122,047 priority patent/US7954102B2/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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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 scheduling method for a multi-threading processor and a multi-threading processor.
  • the present invention relates to a scheduling method and a multi-threading processor in a multi-threading processor, and more particularly, to a scheduling method and a multi-threading method for dynamically selecting a thread to be executed according to an operation state of the multi-threading processor. It relates to a towing processor. Background art
  • a thread is a process that is divided into multiple processes. For each thread, there is information such as the registration evening and the program count evening used by the thread. This information is called a context.
  • SMT Simultaneous Multi Threading
  • the multi-threading processor has a plurality of context units for storing a context for each thread. The multi-threading processor allocates threads for each context unit and executes multiple threads simultaneously.
  • the multi-threading processor reads an instruction from an address specified by a program counter corresponding to each thread (this is called a fetch), and executes multiple threads simultaneously. Since the number of threads that can be executed simultaneously is limited by the number of implemented context units, the multi-threading processor selects the next thread to execute from the threads that are not assigned to the context unit and that are in a standby state. Switching the executable thread (this is called a context switch). In this specification, the selection of an execution thread and the switching of a thread by a context switch are called scheduling. However, in the conventional scheduling, the multi-threading processor uses all the implemented context units and simultaneously fetches all executable thread instructions selected at the time of the context switch. Also, the thread selected at the time of context switch did not reflect the operating state of the multi-threading processor.
  • the processing is concentrated on a specific unit in the multi-threading processor, causing a delay due to resource contention that hinders efficient execution of the thread, thereby reducing the implemented context unit. Even when the thread was used to execute the threading, the processing efficiency of the multi-threading processor did not improve.
  • An object of the present invention is to provide a scheduling method for selecting a thread to be executed and a multi-threading processor so that a delay due to resource contention does not occur. It is to be.
  • a scheduling method in a multi-threading processor wherein a plurality of executable threads are allocated, and the number of threads to be executed is determined by an operation state of the multi-threading processor. Dynamically selecting the selected number of threads from the plurality of allocated threads, fetching and executing instructions of the selected threads within the same period. Achieved by providing a method.
  • a scheduling method in a multi-threading processor wherein the number of threads to be context-switched is changed according to an operation state of the multi-threading processor.
  • Scheduling wherein the determined number of threads are allocated dynamically from a plurality of executable threads, and the instructions of the allocated threads are fetched and executed within the same period of time. Achieved by providing a method.
  • At least one thread is selected under a predetermined condition, and an instruction of the selected thread is executed.
  • a scheduling method in a multi-threading processor for allocating a plurality of executable threads, simultaneously fetching and executing instructions of the plurality of threads within the same period, and It is achieved by providing a scheduling method characterized by preferentially selecting a plurality of threads from the same process, and fetching and executing instructions of the selected threads.
  • a plurality of context units each of which is associated with one thread, and a resource conflict measurement unit for measuring a resource conflict when executing a thread are provided.
  • the number and combination of simultaneously executed threads are dynamically selected based on the number of fetch stalls of each thread, and the selected threads are executed.
  • a thread from the same process is preferentially selected, and the selected thread is executed.
  • a first period during which the resource contention of the multi-threading processor is measured while changing a predetermined condition, and a condition under which the resource contention measured in the phase is the lowest.
  • FIG. 1 is a configuration example of a multi-threading processor according to an embodiment of the present invention.
  • FIG. 2 is a diagram illustrating the first embodiment.
  • FIG. 3 is a flowchart for explaining the operation state determination based on the number of times of the launching.
  • FIG. 4 is a flowchart illustrating the operation state determination based on the memory access latency.
  • FIG. 5 is a diagram for explaining the second embodiment.
  • FIG. 6 is an example of the number of fetch stalls corresponding to each thread.
  • FIG. 7 is an example of the number of cache misses corresponding to each thread.
  • FIG. 8 shows an example of an IPC value corresponding to each thread.
  • FIG. 9 is a diagram for explaining the third embodiment.
  • FIG. 10 is a diagram for explaining the fourth embodiment. BEST MODE FOR CARRYING OUT THE INVENTION
  • FIG. 1 is a configuration example of a multi-threading processor according to an embodiment of the present invention.
  • the multi-threading processor 1 has a number of threads for simultaneously executing context units for saving the context of each thread.
  • Each context unit has a register 14 for storing an operation result, a program counter 15 for storing an address from which an instruction is to be read next, and an instruction buffer 1 for storing a read instruction. And 6.
  • the flow of instruction execution in a multi-threading processor is as follows. First, the fetch unit 17 searches the cache memory 22 to fetch the instruction at the address specified by the program counter 15 of each thread. If there is no address specified in the cache memory 22 (this is called cache miss), the instruction at the specified address is read from the main memory 2 and from the cache memory 22 if there is an address specified in the cache memory 22. It is stored in the instruction buffer 16 of the corresponding context unit. The decode unit 19 decodes the instruction stored in the instruction buffer 16 and the instruction execution unit 20 executes the decoded instruction.
  • the multi-threading processor 1 has the following counters for judging its operation state.
  • the instruction acquisition fails for some reason during fetching (for example, a cache miss occurs) and decoding cannot be performed (this is called a fetch stall).
  • the fetch unit 17 Equipped with a fetch stall counter 18 for recording the number of stitch stalls.
  • the instruction execution unit 20 has an IPC (Instruction PerCycle) counter 21 for recording the number of instructions executed per cycle for each thread. One cycle is the reciprocal of the internal frequency of the multi-threading processor (in the unit time shown).
  • the cache memory 22 has a cache miss count 23 for recording the number of cache misses for each thread, and a memory access latency count 24 for recording the time until the main memory is accessed and an instruction or data is read in the event of a cache miss. .
  • FIG. 2 is a diagram illustrating the first embodiment.
  • the operation state of the multi-threading processor is determined from the number of times of concurrently executing thread fetch stalls, and the number of simultaneously executed threads is dynamically determined according to the operation state of the multi-threading processor. This is an example to avoid delays due to resource contention. It is assumed that a fetch stall reference value is set in advance.
  • FIG. 2 shows the context unit, the thread ID assigned to the context unit, the process ID of the thread, and the execution state of the thread.
  • FIG. 2a shows a state in which four threads (process IDs 0 to 3) (thread IDs 0 to 3) are allocated to the context units 10 to 13, and all four threads are running.
  • step 3 is a flowchart for explaining the operation state determination based on the number of times of stall.
  • step 31 it is determined whether a predetermined period has elapsed. If the predetermined period has not elapsed, step 31 is repeated until the predetermined period has elapsed. After a predetermined period If so, it is determined whether the number of fetch stalls during that period is greater than a set fetch stall reference value (S32). The determination in step S32 may be made, for example, by comparing the total number of fetch stalls of the threads assigned to the context unit within a predetermined period with the fetch stall reference value.
  • step S33 If the number of fetch stalls is larger than the fetch stall reference value in step S32, the number of threads to be executed simultaneously is reduced (S33). This is because resource contention due to the execution of a large number of threads is considered to reduce processing efficiency, and resource contention is avoided by reducing the number of threads.
  • step S34 the number of threads to be executed simultaneously is increased (S34). This is because there are unused context units and there is no resource competition in the currently running thread, so there is likely to be room for improving processing efficiency. .
  • steps S33 and S34 the process waits until a predetermined period has elapsed again and repeats the processing from step S31.
  • the operation state of the multi-threading processor is determined based on the number of fetch stalls, and the number of threads to be simultaneously executed is changed in accordance with the determination to avoid a delay due to resource contention and improve processing performance. Can be improved.
  • the operation state is determined based on the number of fetch stalls.
  • the operation state may be determined based on the memory access latency. It is assumed that a latency reference value has been set in order to make a determination based on the memory access latency.
  • FIG. 4 is a flowchart illustrating the operation state determination based on the memory access latency. First, it is determined whether a predetermined period has elapsed (S41). If the predetermined period has not elapsed, step S41 is repeated until the predetermined period has elapsed. If the predetermined period has elapsed, it is determined whether the memory access latency within that period is greater than the set latency reference value (S42).
  • step S43 If the memory access latency is larger than the reference latency value in step S42, the number of threads to be executed simultaneously is reduced (S43). This is thought to be due to resource contention caused by the execution of a large number of threads, which reduced processing efficiency. Therefore, resource contention is avoided by reducing the number of threads.
  • Step S44 the number of concurrently executed threads is increased (S44). This is because there is an unused context unit and there is no resource contention in the currently running thread, so there is room for improvement in processing efficiency.
  • the cache miss count it is possible to determine the operating state of the multi-threading processor. Furthermore, it is also possible to determine the operating state of the multithreading processor by using the IPC counter. In this case, the difference between Fig. 3 and Fig. 4 is that the number of threads is increased when the measured IPC value is larger than the reference value set for IPC, and the number of threads is decreased when the measured IPC value is smaller. .
  • FIG. 5 is a diagram for explaining the second embodiment.
  • the second embodiment is an example of combining a thread with a large number of fetch stalls and a thread with a small number of fetch stalls at the time of context switching, and dynamically selecting a thread to be executed simultaneously, thereby avoiding delay due to resource contention. Note that the first embodiment is applied at a timing other than the context switch.
  • the vertical axis in Fig. 5 represents the passage of time, and the horizontal axis represents the thread to be executed.
  • the solid line indicates that the thread is assigned to a context unit, and the colored part indicates that the thread is running.
  • the context switch 51 in FIG. 5 indicates a state in which there are 12 threads from 0 to 11 as threads to be executed, and four threads of threads 0 to 3 are allocated to four context units.
  • threads 0 to 3 are all running at first.
  • the first embodiment is applied, and the number of threads simultaneously executed between the context switches 51 and 52 dynamically changes.
  • ⁇ Codes 4, 5, 7, and 8 are assigned to four context units. Further, as a result of applying the first embodiment, thread 4 is first executed in the context switch 52, and thereafter the first embodiment is applied, and the number of threads is dynamically changed.
  • FIG. 6 is an example of the number of fetch stalls corresponding to each thread in the context switch 52.
  • the number of fetch stalls for each thread is accumulated and recorded. Threads 5 and 8 are selected as the upper two threads, and threads 4 and 7 are selected as the lower two threads.
  • threads 2, 3, 7, and 10 are allocated to the context unit. Furthermore, as a result of the application of the first embodiment, four threads 2, 3, 7, and 10 are first executed in the context switch 53, and thereafter, the first embodiment is applied and the number of threads is changed. Is changing dynamically.
  • the upper two and lower two threads are selected from the number of fetch stalls reflecting the operation state of the multi-threading processor, so that delay due to resource contention is avoided and multi-threading is prevented.
  • the processing efficiency of the towing processor can be improved.
  • it is implemented in combination with the first embodiment, and it is possible to further improve the performance by dynamically selecting threads to be simultaneously executed.
  • the thread selection method can be one of the upper one and the lower three, or the upper three and the lower one.
  • the thread is selected based on the number of fetch stalls.
  • the thread may be selected based on the number of cache misses.
  • Figure 7 shows an example of the number of cache misses corresponding to each thread. In the example of Fig. 7, for example, if the top two and the bottom two of the number of cache misses are selected, threads 1, 2, 5, and 11 are selected. Selected.
  • FIG. 8 is an example of an IPC value corresponding to each thread. In the example of FIG. 8, for example, if the upper two and lower two IPC values are selected, threads 2, 3, 8, and 10 are selected.
  • FIG. 9 is a diagram for explaining the third embodiment.
  • the third embodiment is an example of avoiding a delay due to resource contention by preferentially selecting a thread of the same process as an execution thread at the time of fetch or in a context switch. Since the threads of the same process share the same memory space and operate, the increase in cache misses (cache conflict) is smaller than when selecting the thread of a different process operating in a different memory space. Access delays are avoided.
  • FIG. 9A shows a state in which four threads (threads 0 to 3) from process 0 are preferentially assigned to the context, and all four threads are executed.
  • FIG. 9b shows a state in which two threads (threads 4 and 5) from process 4 among threads 0 and 3 of process 0 and threads 4 and 5 of process 4 assigned to the context are executed.
  • threads of the same process sharing and operating in the same memory space are preferentially selected. It is possible to avoid the delay due to resource contention and improve the processing efficiency of the multi-threading processor without adverse effects among multiple threads.
  • FIG. 10 is a diagram for explaining the fourth embodiment.
  • a thread is divided into a sampling phase in which the operating state is measured by changing the conditions and an execution phase in which the execution thread is selected under the condition of the highest processing efficiency in the operating state measured in the sampling phase. Is executed to avoid a delay due to resource contention.
  • the sampling phase 102 for example, four threads (threads 0 to 3) in FIG. 2A are executed.
  • two kinds of threads, ie, threads 0 and 1 and threads 2 and 3 are executed.
  • FIG. 2B two kinds of threads, ie, threads 0 and 1 and threads 2 and 3 are executed.
  • FIG. Execute four types of thread 1, thread 2, and thread 3.
  • the statistical information of each thread is collected, and the optimum number of threads is determined.
  • the statistical information for selecting the optimal thread for example, the number of times of fetching per thread can be used.
  • the thread of the optimal combination determined in the sampling phase 102 is executed. According to the fourth embodiment, since the optimum combination is determined after actually measuring the operation states of various combinations, it is possible to avoid the delay due to resource contention and to improve the processing efficiency of the multi-threading processor. Is possible.
  • the number of fetch stalls is used to determine the operation state.
  • the IPC value the number of cache misses
  • the memory access latency the like.
  • a method of determining the optimal combination it is possible to apply a method that focuses on a certain thread and selects it under the condition that the processing efficiency of the thread is the highest.
  • each unit can implement the method implemented in the embodiment of the present invention as a function. For example, the determination in FIG. 3 can be performed by the fetch unit 17. Industrial potential
  • the present invention by measuring the operating state of the multi-threading processor, dynamically selecting the number of threads to be simultaneously executed / combination, and performing scheduling to avoid delay due to resource contention, The processing efficiency of the multi-threading processor can be improved.

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)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

マルチスレッディングプロセッサにおけるスケジューリング方法に関し、マルチスレッディングプロセッサの動作状態に応じてコンテキストユニットに割り当てられたスレッドから実行するスレッドを動的に選択し、同時実行するスレッド数または組み合わせを動的に変化させる。また、コンテキストスイッチの際にマルチスレッディングプロセッサの動作状態に応じてコンテキストユニットに割り当てるスレッドを動的に選択する。動作状態を判断する一例としては、スレッドごとに所定の期間内のフェッチストール回数、キャッシュミス回数、メモリアクセスレーテンシまたはIPCカウンタなどが設定された基準値を超えるかどうかで判断する。組み合わせの選択法の一例としては、スレッドを同時実行する際マルチスレッディングプロセッサ内の特定ユニットへの処理集中を避けるように、負荷の高いものと少ないものを明示的に選択する方法がある。

Description

明細書
マルチスレツディングプロセッサにおけるスケジユーリング方法およびマルチス レツディングプロセヅサ 技術分野
本発明は、 マルチスレツディングプロセッサにおけるスケジューリング方法お よびマルチスレツディングプロセッサに関し、 特に、 実行するスレッドをマルチ スレツディングプロセヅザの動作状態に応じて動的に選択するスケジューリング 方法およびマルチスレツディングプロセッサに関する。 背景技術
テキストエディ夕などで作成される命令手順書であるプログラムがプロセッサ で実行される状態をプロセスと呼ぶ。 プロセスにより行われる処理を複数に分割 したものがスレツドである。 各スレツドに対し、 そのスレツ ドが使用するレジス 夕、プログラムカウン夕などの情報が存在する。この情報をコンテキストと呼ぶ。 近年複数のスレッド (またはプロセス) を 1つのプロセッサ上で同時に実行可 能な S M T (Simultaneous Multi Threading) プロセヅサが注目されている。マ ルチスレツディングプロセッサには、 スレツド毎のコンテキストを保存するため の複数のコンテキストュニヅ卜が実装されている。 マルチスレヅディングプロセ ッサは、 コンテキストユニット毎にスレッドを割り当て、 複数スレッドを同時実 行する。
マルチスレツディングプロセヅサは、 各スレッドに対応するプログラムカウン 夕により指定されるアドレスから命令を読み込み (これをフェッチと呼ぶ) 、 複 数スレツドを同時実行する。 同時に実行可能なスレツド数は実装されたコンテキ ストユニット数に制限されるため、 マルチスレツディングプロセッサは、 コンテ キストュニッ卜に割り当てられていない待機状態のスレツドから次に実行するス レッドを選択し、 実行可能なスレッドを切り替える (これをコンテキストスィヅ チと呼ぶ) 。 本明細書においては、 実行スレッドの選択やコンテキストスイッチ によるスレツドの切り替えをスケジユーリングと呼ぶ。 しかしながら、 従来のスケジューリングでは、 マルチスレヅデイングプロセヅ サは、 実装されたコンテキストユニットをすベて使用し、 コンテキストスィッチ の際に選択された実行可能な全スレツドの命令を同時フェッチしていた。 また、 コンテキストスィツチの際に選択されるスレツドは、 マルチスレツディングプロ セッサの動作状態を反映したものではなかった。
従って、 選択されたスレッドの組み合わせによっては、 マルチスレヅデイング プロセッサ内の特定ュニットに処理が集中することで、 効率的なスレツドの実行 を妨げる資源競合による遅延が生じ、 実装されたコンテキストユニットをすベて 使用してスレツドを実行してもマルチスレツディングプロセッサの処理効率が向 上しないでいた。
例えば、 命令フェッチやメモリアクセス命令でアクセスされるデ一夕が高速な 転送レートのキャッシュ上になく、 キャッシュミスが発生した場合には、 低速な 転送レー卜のメインメモリにアクセスすることで遅延が生じるが、 マルチスレツ デイングプロセッサにおいても同様に複数スレヅドの命令が同時フェッチ、 実行 されることでキャッシュ競合が発生してキャッシュミスが増加し、 メモリァクセ スによる遅延によってマルチスレツディングプロセッサの処理効率が向上しない ことがある。
マルチスレッディングプロセッサにおける処理効率の向上を図る一手法として は、 文献 (Quinn A. Jacobson, "Mult ithreadi n g processor with thread predict or' , 米国特許番号 6, 247, 121 Jun. 12, 2001 ) がある。 この特許 は、 マルチスレツディングプロセッサにおいて、 分岐命令の実行を待たずに分岐 予測に基づき投機的スレヅドを生成し、 マルチスレツディングプロセッサ上で実 行するものであるが、 同一または別プロセスが複数存在する場合のスケジュ一リ ングについての提案はされていない。 発明の開示
本発明の目的は、 資源競合による遅延が生じないように、 実行するスレッドを 選択するスケジュ一リング方法およびマルチスレツディングプロセッサを提供す ることにある。
上記目的は、 本発明第 1の発明によれば、 マルチスレツディングプロセッサに おけるスケジューリング方法であって、 実行可能な複数のスレツドを割り当て、 実行するスレツド数を前記マルチスレツディングプロセッサの動作状態に応じて 動的に決定し、 前記割り当てられた複数スレッドから前記決定された数のスレツ ドを選択し、 同一期間内に前記選択されたスレヅドの命令をフエヅチし実行する ことを特徴とするスケジューリング方法を提供することで達成される。
また、 上記目的は、 本発明第 2の発明によれば、 マルチスレツディングプロセ ッサにおけるスケジユーリング方法であって、 コンテキストスィツチするスレツ ド数を前記マルチスレツディングプロセッサの動作状態に応じて動的に決定し、 実行可能な複数のスレッドから前記決定された数のスレッドを割り当て、 同一期 間内に前記割り当てられたスレツドの命令をフエツチし実行することを特徴とす るスケジユーリング方法を提供することで達成される。
また、 上記目的は、 本発明第 8の発明によれば、 本発明第 1の発明または第 2 の発明において、 所定の条件で少なくとも 1つのスレッドを選択し、 前記選択さ れたスレツドの命令をフヱツチして実行し、前記実行の際の資源競合度を記録し、 前記所定の条件を変更し、 所定の回数前記資源競合度の記録を繰り返す第 1の期 間と、 前記第 1の期間で記録された資源競合度が最も低くなる条件に基づきスレ ッドを選択し、 前記選択されたスレツドの命令をフェッチし実行する第 2の期間 を有することを特徴とするスケジユーリング方法を提供することで達成される。 また、 上記目的は、 本発明第 9の発明によれば、 実行可能な複数のスレッドを 割り当て、 同一期間内に前記複数スレッドの命令を同時フェッチし、 実行するマ ルチスレツディングプロセッサにおけるスケジューリング方法であって、 同一プ ロセスから複数のスレツドを優先的に選択し、 前記選択されたスレツドの命令を フヱツチし実行することを特徴とするスケジューリング方法を提供することで達 成される。
また、 上記目的は、 本発明第 1 0の発明によれば、 それそれが 1つのスレッド に対応付けられる複数のコンテキストュニットと、 スレツドを実行する際の資源 競合度を測定する資源競合測定ュニッ卜と、 前記測定された資源競合度に応じて 前記コンテキストュニットに対応付けられたスレツドのうち少なくとも 1つのス レツドを選択するとともに選択されたスレヅドの命令をフェッチするフェッチュ ニットと、 前記フヱツチされた命令をデコードするデコードユニットと、 デコー ドされた命令を実行する命令実行ュニットを備えたマルチスレツディングプロセ ッサを提供することで達成される。
上記発明の実施の一形態によれば、各スレヅドのフェッチストール回数を基に、 同時実行するスレツドの数や組み合わせを動的に選択し、 選択されたスレツドが 実行される。 また、 別の実施の形態によれば、 同一プロセスからのスレッドを優 先的に選択し、 選択されたスレッドが実行される。 さらに別の実施の形態によれ ば、 所定の条件を変更しながら、 マルチスレツディングプロセッサの資源競合度 を測定する第 1の期間と、 前記フェーズで測定された資源競合度が最も低くなる 条件でスレツドが選択される第 2の期間を有し、 選択されたスレツドが実行され る。
このように、 マルチスレヅディングプロセッサの動作状態に応じてコンテキス トユニットに割り当てられたスレッドから実行するスレッドを動的に選択し、 同 時実行するスレツド数または組み合わせを動的に変化させることにより、 資源競 合による遅延を避け、 マルチスレツディングプロセッサの処理効率を向上させる ことが可能になる。 図面の簡単な説明
図 1は、 本発明の実施の形態におけるマルチスレツディングプロセッサの構成 例である。
図 2は、 第 1の実施の形態を説明する図である。
図 3は、 フヱツチスト一ル回数による動作状態判定を説明するフローチヤ一卜 である。
図 4は、 メモリアクセスレーテンシによる動作状態判定を説明するフローチヤ —トである。
図 5は、 第 2の実施の形態を説明する図である。
図 6は、 各スレツドと対応するフェッチストール回数の例である。 図 7は、 各スレヅドと対応するキャッシュミス回数の例である。
図 8は、 各スレッドと対応する I P C値の例である。
図 9は、 第 3の実施の形態を説明する図である。
図 1 0は、 第 4の実施の形態を説明する図である。 発明を実施するための最良の形態
以下、 本発明の実施の形態について図面に従って説明する。 しかしながら、 本 発明の技術的範囲はかかる実施の形態によって限定されるものではなく、 特許請 求の範囲に記載された発明とその均等物に及ぶものである。
図 1は、 本発明の実施の形態におけるマルチスレツディングプロセッサの構成 例である。 マルチスレヅデイングプロセッサ 1は、 各スレッドのコンテキストを 保存するためのコンテキストュニヅトを同時実行するスレヅド数分有する。 図 1 の例ではコンテキストュニット 1 0〜 1 3の 4つである。 各コンテキストュニッ トは、 演算結果を格納するためのレジス夕 1 4と、 次に命令を読み出すべきアド レスを格納するプログラムカウン夕 1 5と、 読み出された命令を格納する命令バ ヅファ 1 6とを有する。
マルチスレツディングプロセッサにおける命令実行の流れは次のようなもので ある。 まず、 フェッチュニット 1 7は、 各スレツドのプログラムカウン夕 1 5に より指定されるアドレスの命令をフェッチするため、 キャッシュメモリ 2 2を検 索する。 キヤヅシュメモリ 2 2に指定されたアドレスが無ければ (これをキヤヅ シュミスと呼ぶ) メインメモリ 2から、 キャッシュメモリ 2 2に指定されたアド レスがあればキャッシュメモリ 2 2から、 指定されたアドレスの命令を対応する コンテキストュニヅ卜の命令バッファ 1 6に格納する。デコードュニヅト 1 9は、 命令バッファ 1 6に格納された命令をデコードし、 命令実行ュニット 2 0がデコ —ドされた命令を実行する。
また、 マルチスレツディングプロセッサ 1は、 その動作状態を判断するために 以下のカウン夕を備えている。 フェッチの際に何らかの原因で命令取得に失敗し (例えば、 キャッシュミスの発生など) デコード処理が行えない場合がある (こ れをフェッチストールと呼ぶ) 。 フェッチユニット 1 7は、 スレッドごとにフエ ツチストール回数を記録するフェッチストールカウン夕 18を備える。
命令実行ュニット 20は、 1サイクルあたりに実行した命令数をスレッド毎に 記録する IPC (Inst ruct ionPerCycle) カウン夕 21を備 える。 1サイクルとは、 マルチスレツディングプロセッサの内部周波数の逆数で (示される単位時間で) ある。 キヤヅシュメモリ 22は、 キヤヅシュミス回数を スレツド毎に記録するキャッシュミスカウン夕 23と、 キャッシュミスの際にメ ィンメモリにアクセスし命令やデータが読み出されるまでの時間を記録するメモ リアクセスレーテンシカウン夕 24を有する。
図 2は、 第 1の実施の形態を説明する図である。 第 1の実施の形態は、 同時実 行するスレツドのフェッチストール回数からマルチスレツディングプロセッサの 動作状態を判断し、 同時実行するスレツド数をマルチスレツディングプロセッサ の動作状態に応じて動的に変更することで、 資源競合による遅延を避ける例であ る。 あらかじめフェッチストール基準値が設定されるものとする。
図 2には、 コンテキストュニヅトとそのコンテキストュニットに割り当てられ たスレッド I D、 そのスレッドのプロセス I Dおよびスレッドの実行状態が描か れている。 図 2 aは、 プロセス ID 0から 4スレッド (スレッド ID0〜3) が コンテキストュニット 10〜13に割り当てられ、 4スレツドとも実行されてい る状態である。
図 3のフェッチストール回数による動作状態の判定を行った結果、 所定期間の フェッチストール回数がフェッチストール基準値より大きければ、 図 2 aで 4ス レツドが同時実行されていた状態から、 図 2bの 2スレツドの同時実行状態に遷 移する。 新たな動作状態の判定によって、 フェッチストール回数がフェッチスト —ル基準値より大きければ、 図 2bの 2スレツド実行状態から図 2 cの 1スレツ ド実行状態になり、 フェッチストール回数がフェッチストール基準値以下であれ ば、 図 2 bの 2スレツド実行状態から図 2aの 4スレッド同時実行状態に遷移す る。 このように、 図 2 aと図 2 b、 図 2 bと図 2 cの間で状態遷移が起こる。 図 3は、 フヱツチストール回数による動作状態判定を説明するフローチャート である。 まず所定期間が経過したか判定する (S31)。 所定期間が経過してい なければ、 所定期間が経過するまでステップ 31を繰り返す。 所定期間が経過し ていれば、 その期間内のフェッチストール回数が設定されたフエヅチストール基 準値より大きいかを判定する (S 3 2 ) 。 ステップ S 3 2の判定は、 例えば、 コ ンテキストュニットに割り当てられたスレツドの所定期間内のフェッチストール 回数の合計をフェッチストール基準値と比較すればよい。
ステップ S 3 2で、 フェッチストール回数がフェッチストール基準値より大き い場合、 同時実行するスレッド数を減らす (S 3 3 ) 。 これは、 多数のスレッド を実行することによる資源競合が発生し、 処理効率を下げていると考えられるた めであり、 スレツド数を減少させることで資源競合を回避する。
逆に、 ステップ S 3 2で、 フェッチストール回数がフェッチストール基準値以 下であれば、 同時実行するスレッドを増やす (S 3 4 ) 。 これは、 使用されてい ないコンテキストュニットが存在し、 さらに現在実行しているスレツドで資源競 合が発生していないことから、 処理効率を向上させる余地が残されていると考え られるからである。 ステップ S 3 3、 S 3 4が終了すると、 再び所定の期間が経 過まで待ちステップ S 3 1からの処理を繰り返す。
第 1の実施の形態によれば、 フェッチストール回数により、 マルチスレツディ ングプロセッサの動作状態を判定し、 それに合わせて同時実行するスレツド数を 変更することで資源競合による遅延をさけ、 処理性能を向上させることが可能と なる。 なお、 第 1の実施の形態は、 フェッチストール回数による動作状態判定を 行ったが、 メモリアクセスレーテンシによる動作状態判定を行うことも可能であ る。 メモリアクセスレーテンシにより判定を行うために、 レーテンシ基準値が設 定されているものとする。
図 4は、 メモリアクセスレーテンシによる動作状態判定を説明するフローチヤ —トである。 まず所定期間が経過したか判定する (S 4 1 ) 。 所定期間が経過し ていなければ、 所定期間が経過するまでステップ S 4 1を繰り返す。 所定期間が 経過していれば、 その期間内のメモリアクセスレ一テンシが設定されたレ一テン シ基準値より大きいかを判定する (S 4 2 ) 。
ステップ S 4 2で、 メモリアクセスレーテンシがレーテンシ基準値より大きい 場合、 同時実行するスレッ ド数を減らす (S 4 3 ) 。 これは、 多数のスレッ ドを 実行することによる資源競合が発生し、 処理効率を下げていると考えられるため であり、 スレッ ド数を減少させることで資源競合を回避する。
逆に、 ステップ S 4 2で、 メモリアクセスレーテンシが基準値以下であれば、 同時実行するスレッドを増やす (S 4 4 ) 。 これは、 使用されていないコンテキ ストュニヅ卜が存在し、 さらに現在実行しているスレツドで資源競合が発生して いないことから、 処理効率を向上させる余地が残されていると考えられるからで ある。 ステップ S 4 3、 S 4 4が終了すると、 再び所定の期間が経過まで待ちス テヅプ S 4 1からの処理を繰り返す。
同様に、 キャッシュミスカウン夕を使用し、 マルチスレツディングプロセッサ の動作状態を判定することも可能である。 さらに、 I P Cカウンタを使用し、 マ ルチスレツディングプロセッサの動作状態を判定することも可能である。 この場 合は、 測定された I P C値が I P C用に設定された基準値より大きい場合スレッ ド数を増加させ、 少ない場合スレッド数を減少させるように選択する点が、 図 3 や図 4と異なる。
図 5は、 第 2の実施の形態を説明する図である。 第 2の実施の形態は、 コンテ キストスィツチの際にフェッチストール回数の多いスレツドと少ないスレツドを 組み合わせて、 同時実行するスレツドを動的に選択することで資源競合による遅 延を避ける例である。 なお、 コンテキストスィッチ以外のタイミングにおいて、 第 1の実施の形態が適用されるものとする。
図 5の縦軸は時間経過を表し、 横軸は実行対象のスレツドを表す。 実線はその スレッドがコンテキストユニットに割り当てられていることを示し、 色付きの部 分はそのスレツドが実行されていることを示す。
図 5のコンテキストスィツチ 5 1は、 実行対象のスレツドとしてスレツド 0〜 1 1まで 1 2スレツド存在し、 スレッド 0〜3の 4スレツドが 4つのコンテキス トユニットに割り当てられている状態を表す。 コンテキストスィッチ 5 1では、 最初スレッド 0〜 3がすべて実行状態にある。 図 5では、 第 1の実施の形態が適 用され、 コンテキストスイッチ 5 1から 5 2までの間に同時実行されるスレツド 数が動的に変化している。
コンテキス卜スィッチ 5 2の夕イミングにおいて、 フェッチストール回数の上 位 2つのスレツドと下位 2つのスレツドが選択された結果 (図 6を参照) 、 スレ ヅ ド 4、 5、 7、 8が 4つのコンテキストユニットに割り当てられる。 さらに第 1の実施の形態が適用された結果、 コンテキストスィツチ 5 2においてまずスレ ッド 4が実行され、 その後第 1の実施の形態が適用されスレッド数が動的に変化 している。
図 6は、 コンテキストスイッチ 5 2における各スレッドと対応するフェッチス トール回数の例である。 第 2の実施の形態においては、 スレツドごとのフェッチ ストール回数が累積されて記録されており、 上位 2つのスレツドとしてスレツド 5と 8、 下位 2つのスレツドとしてスレツド 4と 7が選択される。
同様に、 コンテキストスィッチ 5 3のタイミングにおいて、 フェッチストール 回数の上位 2つのスレッドと下位 2つのスレッドが選択された結果、スレッド 2、 3、 7、 1 0がコンテキストユニットに割り当てられる。 さらに第 1の実施の形 態が適用された結果、 コンテキストスィッチ 5 3において最初スレッド 2、 3、 7、 1 0の 4スレッドが実行され、 その後も第 1の実施の形態が適用されスレツ ド数が動的に変化している。
第 2の実施の形態によれば、 マルチスレツディングプロセッサの動作状態を反 映したフェッチストール回数のうち、 上位 2つと下位 2つのスレツドを選択する ことにより、 資源競合による遅延を避け、 マルチスレツディングプロセッサの処 理効率を向上させることができる。 好ましくは、 第 1の実施の形態と合わせて実 施し、 動的に同時実行するスレツドを選択することにより更なる性能向上を図る ことが可能である。
なお、 スレッドの選択法としては、 上位 1つと下位 3つや、 上位 3つと下位 1 つとすることも可能である。 また、 実装されたコンテキストユニットが 4つ以外 の場合の上位と下位の数の組み合わせは何通りもあるが、 明示的に上位のスレヅ ドと下位のスレッドを組み合わせて選択することにより第 2の実施の形態が適用 可能である。
また、 第 2の実施の形態は、 フェッチストール回数によりスレッドを選択した が、 キャッシュミス回数による選択を行うことも可能である。 図 7は、 各スレツ ドと対応するキャッシュミス回数の例である。 図 7の例において、 例えばキヤッ シュミス回数の上位 2つと下位 2つを選択すればスレッド 1、 2、 5、 1 1が選 択される。
同様に、 I P C値によるスレッド選択を行うことも可能である。 図 8は、 各ス レツドと対応する I P C値の例である。 図 8の例において、 例えば I P C値の上 位 2つと下位 2つを選択すれば、 スレッド 2、 3、 8、 1 0が選択される。
図 9は、 第 3の実施の形態を説明する図である。 第 3の実施の形態は、 フェツ チの際またはコンテキストスィッチにおいて、 同一プロセスのスレツドを実行ス レッドとして優先的に選択することによって、 資源競合による遅延を避ける例で ある。 同一プロセスのスレッドは同一のメモリ空間を共有し動作するため、 別メ モリ空間で動作する異なるプロセスのスレツドを選択するよりキャッシュミスの 増加 (キャッシュ競合) が少なく、 キャッシュメモリより低速なメインメモリに アクセスすることによる遅延が避けられる。
図 9 aは、 プロセス 0からの 4スレッド (スレッド 0〜3 ) が優先的にコンテ キストュニッ卜に割り当てられ、 4スレツドとも実行される状態を示している。 図 9 bは、 コンテキストに割り当てられたプロセス 0のスレッド 0と 3、 プロセ ス 4のスレツド 4と 5のうちプロセス 4からの 2スレツド (スレッド 4と 5 ) が 実行される状態を示している。
第 3の実施の形態によれば、 別メモリ空間で動作する異なるプロセスのスレツ ドを選択するのではなく、 同一のメモリ空間を共有し動作する同一プロセスのス レッドを優先的に選択するため、 複数スレッド間で悪影響を及ぼすことなく、 資 源競合による遅延を避け、 マルチスレツディングプロセッサの処理効率を向上さ せることが可能である。 好ましくは、 第 1または第 2の実施の形態と組み合わせ て実施し、 より処理効率のよいスレツドを選択することが望ましい。
図 1 0は、 第 4の実施の形態を説明する図である。 第 4の実施の形態は、 条件 を変えて動作状態を測定するサンプリングフェーズとサンプリングフェーズで測 定された動作状態で最も処理効率のよい条件で実行スレツドを選択する実行フエ —ズに分けてスレツドを実行することで、資源競合による遅延を避ける例である。 まずサンプリングフェーズ 1 0 2では、 例えば、 図 2 aの 4スレッド (スレツ ド 0〜3 ) を実行する。 次に図 2 bの 2スレツドとしてスレツド 0、 1とスレヅ ド 2、 3の 2通りを実行する。 そして、 図 2 cの 1スレヅドとしてスレツド 0、 スレッド 1、 スレッド 2、 スレヅ ド 3の 4通りを実行する。 なお、 サンプリング フェ一ズにて実行されるスレヅドの組み合わせは、上記以外にも存在し、例えば、 2スレヅド実行時にスレツド 0、 2の組を追加することも可能である。
この様にして各スレヅドの統計情報を収集し、 最適なスレツド数を決定する。 最適なスレッドを選択するための統計情報としては、 例えば、 スレッドあたりの フェッチスト一ル回数を使用することができる。 実行フェーズ 1 0 3では、 サン プリングフエ一ズ 1 0 2で決定された最適な組み合わせのスレツドを実行する。 第 4の実施の形態によれば、 様々な組み合わせの動作状態を実際に測定してか ら最適な組み合わせを決定するため、 資源競合による遅延を避け、 マルチスレツ デイングプロセッザの処理効率を向上させることが可能である。
なお、 第 4の実施の形態において動作状態の判定にフヱツチストール回数を用 いたが、 I P C値、 キャッシュミス回数、 メモリアクセスレーテンシなどを使用 することも可能である。 さらに、 最適な組み合わせの決定方法としては、 あるス レッドに注目し、 そのスレッドの処理効率が最も高くなる条件で選択する方法を 適用することも可能である。
また、 本発明の実施の形態において実施される方法を各ュニットが機能として 実現することも可能である。 一例を挙げれば、 図 3の判定をフェッチユニット 1 7で実施することが可能である。 産業上の利用の可能性
以上説明したように本発明によれば、 マルチスレツディングプロセッサの動作 状態を計測することによって同時実行するスレツド数ゃ組み合わせを動的に選択 し、 資源競合による遅延を避けるスケジューリングを行うことで、 マルチスレツ ディングプロセッサの処理効率を向上させることができる。

Claims

請求の範囲
1 . マルチスレツディングプロセッサにおけるスケジュ一リング方法であって、 実行可能な複数のスレッドを割り当て、
実行するスレッド数を前記マルチスレッディングプロセッサの動作状態に 応じて動的に決定し、
前記割り当てられた複数スレッドから前記決定された数のスレッドを選択 し、
同一期間内に前記選択されたスレッドの命令をフエツチし実行することを 特徴とするスケジューリング方法。
2 . マルチスレツデイングプロセッサにおけるスケジュ一リング方法であって、 コンテキストスィツチするスレツド数を前記マルチスレツディングプロセ ッザの動作状態に応じて動的に決定し、
実行可能な複数のスレツドから前記決定された数のスレツドを割り当て、 同一期間内に前記割り当てられたスレツドの命令をフェッチし実行するこ とを特徴とするスケジューリング方法。
3 . 請求項 1または請求項 2において、
さらにフヱツチストール基準値を設定し、
所定の期間内のフエヅチストール回数を記録し、
前記フェッチストール回数が前記フェッチストール基準値を超える場合 スレツド数を減少させ、
前記フ Xツチストール回数が前記フェッチストール基準値を超えない場 合スレツド数を増加させるようにスレツド数を決定することを特徴とする スケジユーリング方法。
4 . 請求項 1または請求項 2において、
さらにレーテンシ基準値を設定し、
所定の期間内のメモリアクセスレーテンシを言己録し、
前記メモリアクセスレーテンシが前記レーテンシ基準値を超える場合ス レッド数を減少させ、 前記メモリアクセスレーテンシが前記レーテンシ基準値を超えない場合 スレツド数を増加させるようにスレツド数を決定することを特徴とするス ケジユーリング方法。
請求項 1または請求項 2において、
さらに所定の期間内のフェッチストール回数を記録し、
前記フェッチストール回数が多いスレツドと少ないスレツ ドを組み合わ せて選択することを特徴とするスケジユーリング方法。
請求項 1または請求項 2において、
さらに所定の期間内のキヤッシュミス回数を記録し、
前記キャッシュミス回数の多いスレッドと少ないスレヅドを組み合わせ て選択することを特徴とするスケジユーリング方法。
請求項 1または請求項 2において、
さらに所定の期間内の 1サイクルあたりに実行した命令数を記録し、 前記 1サイクルあたり実行できる命令数の多いスレッドと少ないスレッ ドを組み合わせて選択することを特徴とするスケジユーリング方法。
請求項 1または請求項 2において、
所定の条件で少なくとも 1つのスレッドを選択し、
前記選択されたスレッ ドの命令をフヱツチして実行し、
前記実行の際の資源競合度を記録し、
前記所定の条件を変更し、
所定の回数前記資源競合度の記録を繰り返す第 1の期間と、
前記第 1の期間で記録された資源競合度が最も低くなる条件に基づきス レツドを選択し、
前記選択されたスレッドの命令をフェッチし実行する第 2の期間を有す ることを特徴とするスケジューリング方法。
実行可能な複数のスレッドを割り当て、 同一期間内に前記複数スレッドの命 令を同時フェッチし、 実行するマルチスレヅディングプロセヅサにおけるス ケジユーリング方法であって、
同一プロセスから複数のスレツドを優先的に選択し、 前記選択されたスレッドの命令をフェヅチし実行することを特徴とするス ケジユーリング方法。
. それそれが 1つのスレツドに対応付けられる複数のコンテキストュニ ッ卜と、
スレツドを実行する際の資源競合度を測定する資源競合測定ユニットと、 前記測定された資源競合度に応じて前記コンテキストユニットに対応付 けられたスレツドのうち少なくとも 1つのスレツドを選択するとともに選 択されたスレツドの命令をフェッチするフェッチュニヅトと、
前記フェツチされた命令をデコ一ドするデコードュニットと、
デコードされた命令を実行する命令実行ュニットを備えたマルチスレツ ディングプロセッサ。
. それそれが 1つのスレッドに対応付けられる複数のコンテキストュニ
V卜と、
スレツドを実行する際の資源競合度を測定する資源競合測定ユニットと、 前記コンテキストュニッ卜に対応付けられるスレツドを前記測定された 資源競合度に応じて少なくとも 1つ選択するとともに選択されたスレツド の命令をフェッチするフェッチュニッ卜と、
前記フェッチされた命令をデコードするデコードュニッ卜と、
前記デコ一ドされた命令を実行する命令実行ュニットを備えたマルチス レツディングプロセッサ。
. 請求項 1 0または請求項 1 1において、
前記マルチスレツディングプロセッサは、 さらに所定の期間内のフェツ チストール回数を記録するフェッチストールカウン夕を有し、 フェッチス トール基準値が設定され、
前記フェッチストール回数が前記フェッチストール基準値を超える場合 スレツド数を減少させ、
前記フヱツチストール回数が前記フヱツチストール基準値を超えない場 合スレツド数を増加させるようにスレツドが選択されることを特徴とする マルチスレツディングプロセッサ。
1 3 . 請求項 1 0または請求項 1 1において、
前記マルチスレツディングプロセッサは、 さらに所定の期間内のメモリ アクセスレーテンシを言己録するメモリアクセスレ一テンシカウンタを有し、 レ一テンシ基準値が設定され、
前記メモリアクセスレーテンシが前記レーテンシ基準値を超える場合ス レツド数を減少させ、
前記メモリアクセスレーテンシが前記レーテンシ基準値を超えない場合 スレツド数を増加させるようにスレツドが選択されることを特徴とするマ ルチスレツディングプロセッサ。
1 4 . 請求項 1 0または請求項 1 1において、
前記マルチスレツディングプロセッサは、 さらに所定の期間内のフェツ チストール回数を記録するフェッチストールカウン夕を有し、
前記フェッチストール回数の多いスレツドと少ないスレツドを組み合わ せて選択することを特徴とするマルチスレツデイングプロセヅサ。
1 5 . 請求項 1 0または請求項 1 1において、
前記マルチスレツディングプロセッサは、 所定の期間内のキヤヅシユミ ス回数を記録するキャッシュミスカウン夕を有し、
前記キヤッシュミス回数の多いスレッドと少ないスレッドを組み合わせ て選択することを特徴とするマルチスレツディングプロセッサ。
1 6 . 請求項 1 0または請求項 1 1において、
前記マルチスレツディングプロセッサは、 さらに所定の期間内の 1サイ クルあたり実行できる命令数を記録する I P Cカウン夕を有し、
前記 1サイクルあたり実行できる命令数の多いスレッドと少ないスレッ ドを組み合わせて選択することを特徴とするマルチスレツディングプロセ ッサ。
1 7 . 請求項 1 0または請求項 1 1において、
前記マルチスレツディングプロセヅサは、 所定の条件で少なくとも 1つ のスレツドを選択し、
前記選択されたスレッドの命令をフェッチして実行し、 前記実行の際の資源競合度を記録し、
前記所定の条件を変更し、
所定の回数前記資源競合度の記録を繰り返す第 1の期間と、
前記第 1の期間で記録された資源競合度が最も低くなる条件に基づきス レッドを選択し、
前記選択されたスレッドの命令をフヱツチし、
前記フヱツチされた命令をデコ一ドし、
前記デコードされた命令を実行する第 2の期間を有することを特徴とす るマルチスレツディングプロセッサ。
それそれが 1つのスレッドに対応付けられる複数のコンテキストュニ ッ卜と、
同一プロセスから少なくとも 1つのスレツドを優先的に選択するととも に選択されたスレツドの命令をフェッチするフヱツチュニッ卜と、 前記フェツチされた命令をデコードするデコードュニットと、 前記デコ一ドされた命令を実行する命令実行ュニットを備えたマルチス レツディングプロセッサ。
PCT/JP2002/011818 2002-11-13 2002-11-13 マルチスレッディングプロセッサにおけるスケジューリング方法およびマルチスレッディングプロセッサ WO2004044745A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/JP2002/011818 WO2004044745A1 (ja) 2002-11-13 2002-11-13 マルチスレッディングプロセッサにおけるスケジューリング方法およびマルチスレッディングプロセッサ
JP2004551175A JP4086846B2 (ja) 2002-11-13 2002-11-13 マルチスレッディングプロセッサにおけるスケジューリング方法およびマルチスレッディングプロセッサ
US11/122,047 US7954102B2 (en) 2002-11-13 2005-05-05 Scheduling method in multithreading processor, and multithreading processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2002/011818 WO2004044745A1 (ja) 2002-11-13 2002-11-13 マルチスレッディングプロセッサにおけるスケジューリング方法およびマルチスレッディングプロセッサ

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US11/122,047 Continuation US7954102B2 (en) 2002-11-13 2005-05-05 Scheduling method in multithreading processor, and multithreading processor

Publications (1)

Publication Number Publication Date
WO2004044745A1 true WO2004044745A1 (ja) 2004-05-27

Family

ID=32310258

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2002/011818 WO2004044745A1 (ja) 2002-11-13 2002-11-13 マルチスレッディングプロセッサにおけるスケジューリング方法およびマルチスレッディングプロセッサ

Country Status (2)

Country Link
JP (1) JP4086846B2 (ja)
WO (1) WO2004044745A1 (ja)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100495344C (zh) * 2004-12-28 2009-06-03 冲电气工业株式会社 多重呼叫处理线程处理方法
JP2010026583A (ja) * 2008-07-15 2010-02-04 Hiroshima Ichi プロセッサ
JP2010528384A (ja) * 2007-05-30 2010-08-19 エックスモス リミテッド プロセッサにおけるスレッドのスケジューリング
EP2573673A1 (en) 2011-09-22 2013-03-27 Fujitsu Limited Multithreaded processor and instruction fetch control method of multithreded processor
JP2013149108A (ja) * 2012-01-19 2013-08-01 Canon Inc 情報処理装置及びその制御方法、プログラム
JP2014532944A (ja) * 2011-11-07 2014-12-08 クアルコム,インコーポレイテッド リターン指向プログラミングエクスプロイトを検出するための方法、デバイス、およびシステム
WO2015020092A1 (ja) * 2013-08-07 2015-02-12 株式会社 東芝 情報処理方法、情報処理装置及びプログラム
JP2015106298A (ja) * 2013-11-29 2015-06-08 富士通株式会社 タスク割り付けプログラム及びタスク割り付け方法
US9116689B2 (en) 2010-03-04 2015-08-25 Nec Corporation Power consumption reduction method of swapping high load threads with low load threads on a candidate core of a multicore processor
US10223168B2 (en) 2013-07-19 2019-03-05 Fujitsu Limited Parallel processing optimization method, and information processing device
WO2021062197A1 (en) * 2019-09-26 2021-04-01 Advanced Micro Devices, Inc. Throttling while managing upstream resources
GB2605375A (en) * 2021-03-29 2022-10-05 Advanced Risc Mach Ltd Data processors

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0471034A (ja) * 1990-07-11 1992-03-05 Matsushita Electric Ind Co Ltd マルチタスク実行装置
JPH07302246A (ja) * 1994-05-09 1995-11-14 Toshiba Corp スケジューリング方式

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0471034A (ja) * 1990-07-11 1992-03-05 Matsushita Electric Ind Co Ltd マルチタスク実行装置
JPH07302246A (ja) * 1994-05-09 1995-11-14 Toshiba Corp スケジューリング方式

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
D.M. TULLSEN et al., "Exploiting Choice: Instruction Fetch and Issue on an Implementable Simultaneous Multithreading Processor", Proceedings of the 23rd Annual International Symposium on Computer Architecture, 1996, Vol. 1, pages 191-202 *
Masami YAMATANI, "Kaso Kioku System Nyumon", first edition, Ohmsha, Ltd., 1978, pages 84-87 *
Shoji KAWAHARA et al., "Koseino Processor Model ni okeru Architecture to OS no Kyocho", Information Processing Society of Japan Dai 64 Kai (Heisei 14 Nen) Zenkoku Taikai, page 1-247-1-248 *
Shoji KAWAHARA et al., "Single Chip Multithread Processor alpha-Coral no Architecture", Heiretsu Shori Symposium JSPP2001, 2001, Vol. 2001, No. 6, pages 39-46 *
Yutaka SUGAWARA et al., "Latency Yosoku ni Motozuita Meirei Fetch Kiko", The Institute of Electronics, Information and Communication Engineers Gijutsu Kenkyu Hokoku, 21 April 2000, Vol. 100, No. 20 (CRSY2000-1-6), page 9 to page 10 *

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100495344C (zh) * 2004-12-28 2009-06-03 冲电气工业株式会社 多重呼叫处理线程处理方法
JP2010528384A (ja) * 2007-05-30 2010-08-19 エックスモス リミテッド プロセッサにおけるスレッドのスケジューリング
JP2010026583A (ja) * 2008-07-15 2010-02-04 Hiroshima Ichi プロセッサ
JP4759026B2 (ja) * 2008-07-15 2011-08-31 公立大学法人広島市立大学 プロセッサ
US9116689B2 (en) 2010-03-04 2015-08-25 Nec Corporation Power consumption reduction method of swapping high load threads with low load threads on a candidate core of a multicore processor
US9069565B2 (en) 2011-09-22 2015-06-30 Fujitsu Limited Processor and control method of processor
EP2573673A1 (en) 2011-09-22 2013-03-27 Fujitsu Limited Multithreaded processor and instruction fetch control method of multithreded processor
JP2014532944A (ja) * 2011-11-07 2014-12-08 クアルコム,インコーポレイテッド リターン指向プログラミングエクスプロイトを検出するための方法、デバイス、およびシステム
US9262627B2 (en) 2011-11-07 2016-02-16 Qualcomm Incorporated Methods, devices, and systems for detecting return oriented programming exploits
JP2013149108A (ja) * 2012-01-19 2013-08-01 Canon Inc 情報処理装置及びその制御方法、プログラム
US10223168B2 (en) 2013-07-19 2019-03-05 Fujitsu Limited Parallel processing optimization method, and information processing device
JP2015035028A (ja) * 2013-08-07 2015-02-19 株式会社東芝 情報処理方法、情報処理装置及びプログラム
WO2015020092A1 (ja) * 2013-08-07 2015-02-12 株式会社 東芝 情報処理方法、情報処理装置及びプログラム
US10025504B2 (en) 2013-08-07 2018-07-17 Kabushiki Kaisha Toshiba Information processing method, information processing apparatus and non-transitory computer readable medium
JP2015106298A (ja) * 2013-11-29 2015-06-08 富士通株式会社 タスク割り付けプログラム及びタスク割り付け方法
US9733982B2 (en) 2013-11-29 2017-08-15 Fujitsu Limited Information processing device and method for assigning task
WO2021062197A1 (en) * 2019-09-26 2021-04-01 Advanced Micro Devices, Inc. Throttling while managing upstream resources
US11169812B2 (en) 2019-09-26 2021-11-09 Advanced Micro Devices, Inc. Throttling while managing upstream resources
US12032965B2 (en) 2019-09-26 2024-07-09 Advanced Micro Devices, Inc. Throttling while managing upstream resources
GB2605375A (en) * 2021-03-29 2022-10-05 Advanced Risc Mach Ltd Data processors
GB2605375B (en) * 2021-03-29 2023-11-29 Advanced Risc Mach Ltd Data processors

Also Published As

Publication number Publication date
JP4086846B2 (ja) 2008-05-14
JPWO2004044745A1 (ja) 2006-03-16

Similar Documents

Publication Publication Date Title
US7954102B2 (en) Scheduling method in multithreading processor, and multithreading processor
US8656401B2 (en) Method and apparatus for prioritizing processor scheduler queue operations
US7500240B2 (en) Apparatus and method for scheduling threads in multi-threading processors
US7035997B1 (en) Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors
US7269712B2 (en) Thread selection for fetching instructions for pipeline multi-threaded processor
US7904704B2 (en) Instruction dispatching method and apparatus
US20030046521A1 (en) Apparatus and method for switching threads in multi-threading processors`
US7707391B2 (en) Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors
US20060136915A1 (en) Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline
US20010004755A1 (en) Mechanism for freeing registers on processors that perform dynamic out-of-order execution of instructions using renaming registers
JP4086846B2 (ja) マルチスレッディングプロセッサにおけるスケジューリング方法およびマルチスレッディングプロセッサ
WO2015024452A1 (zh) 一种分支预测方法及相关装置
US7152170B2 (en) Simultaneous multi-threading processor circuits and computer program products configured to operate at different performance levels based on a number of operating threads and methods of operating
JP2006502504A5 (ja)
JP2004110795A (ja) 二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する方法および装置
JP2002342163A (ja) マルチスレッドプロセッサ用キャッシュ制御方式
US20090249037A1 (en) Pipeline processors
KR100856144B1 (ko) 프로세서 내에서의 다수의 동시 물리 스레드로부터의다수의 논리 스레드의 디커플링
US7237093B1 (en) Instruction fetching system in a multithreaded processor utilizing cache miss predictions to fetch instructions from multiple hardware streams
CN100426260C (zh) 利用路预测技术的多线程处理器的取指方法及系统
CN115525343A (zh) 一种并行译码的方法、处理器、芯片及电子设备
US20080126754A1 (en) Multiple-microcontroller pipeline instruction execution method
CN118227285A (zh) 资源分配方法、处理器和电子设备
CN118035131A (zh) 数据预取方法及装置、处理器和计算机可读存储介质
Özer et al. Energy-efficient simultaneous thread fetch from different cache levels in a soft real-time SMT processor

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

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 11122047

Country of ref document: US