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

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

Info

Publication number
JP4086846B2
JP4086846B2 JP2004551175A JP2004551175A JP4086846B2 JP 4086846 B2 JP4086846 B2 JP 4086846B2 JP 2004551175 A JP2004551175 A JP 2004551175A JP 2004551175 A JP2004551175 A JP 2004551175A JP 4086846 B2 JP4086846 B2 JP 4086846B2
Authority
JP
Japan
Prior art keywords
threads
fetch
thread
stalls
context
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004551175A
Other languages
English (en)
Other versions
JPWO2004044745A1 (ja
Inventor
英喜 大河原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2004044745A1 publication Critical patent/JPWO2004044745A1/ja
Application granted granted Critical
Publication of JP4086846B2 publication Critical patent/JP4086846B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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

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)

Description

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

Claims (8)

  1. マルチスレッディングプロセッサにおけるスケジューリング方法であって、
    実行可能な複数のスレッドを割り当て、
    実行するスレッド数を前記マルチスレッディングプロセッサの動作状態に応じて決定し、
    前記割り当てられた複数スレッドから前記決定された数のスレッドを選択し、
    同一期間内に前記選択されたスレッドの命令をフェッチし実行し、
    さらに、前記マルチスレッディングプロセッサの動作状態に応じて実行するスレッド数の決定において、
    フェッチストール基準値を設定し、
    所定の期間内のフェッチストール回数を記録し、
    前記フェッチストール回数が前記フェッチストール基準値を超える場合に、前記実行するスレッド数を減少させ、
    前記フェッチストール回数が前記フェッチストール基準値を超えない場合に、前記実行するスレッド数を増加させるようにスレッド数を決定し、
    さらに、所定の期間内のフェッチストール回数を記録し、
    コンテキストスイッチの際に、前記フェッチストール回数の多いスレッドと少ないスレッドを組み合わせて選択する、
    ことを特徴とするスケジューリング方法。
  2. マルチスレッディングプロセッサにおけるスケジューリング方法であって、
    実行可能な複数のスレッドを割り当て、
    実行するスレッド数を前記マルチスレッディングプロセッサの動作状態に応じて決定し、
    前記割り当てられた複数スレッドから前記決定された数のスレッドを選択し、
    同一期間内に前記選択されたスレッドの命令をフェッチし実行し、
    さらに、前記マルチスレッディングプロセッサの動作状態に応じて実行するスレッド数の決定において、
    レーテンシ基準値を設定し、
    所定の期間内のメモリアクセスレーテンシを記録し、
    前記メモリアクセスレーテンシが前記レーテンシ基準値を超える場合に、前記スレッド数を減少させ、
    前記メモリアクセスレーテンシが前記レーテンシ基準値を超えない場合に、前記スレッド数を増加させるようにスレッド数を決定し、
    さらに、所定の期間内のフェッチストール回数を記録し、
    コンテキストスイッチの際に、前記フェッチストール回数の多いスレッドと少ないスレッドを組み合わせて選択する、ことを特徴とするスケジューリング方法。
  3. 請求項1または請求項2において、
    さらに所定の期間内のキャッシュミス回数を記録し、
    コンテキストスイッチの際に、前記キャッシュミス回数の多いスレッドと少ないスレッドを組み合わせて選択することを特徴とするスケジューリング方法。
  4. 請求項1または請求項2において、
    さらに1サイクルあたりに実行した命令数を記録し、
    コンテキストスイッチの際に、前記命令数の多いスレッドと少ないスレッドを組み合わせて選択することを特徴とするスケジューリング方法。
  5. それぞれが1つのスレッドに対応付けられる複数のコンテキストユニットと、
    資源競合度に応じて前記コンテキストユニットに対応付けられたスレッドのうち少なくとも1つのスレッドを選択するとともに選択されたスレッドの命令をフェッチするフェッチユニットと、
    前記フェッチされた命令をデコードするデコードユニットと、
    デコードされた命令を実行する命令実行ユニットを備え、
    さらに所定の期間内のフェッチストール回数を記録するフェッチストールカウンタを有し、
    前記コンテキストユニットにスレッドを対応づける際に、
    前記フェッチストールカウンタに計数された前記フェッチストール回数が、フェッチストール基準値を超える場合にスレッド数を減少させ、
    前記フェッチストール回数が前記フェッチストール基準値を超えない場合にスレッド数を増加させ
    さらに所定の期間内のフェッチストール回数を記録するフェッチストールカウンタを有し、
    コンテテキストスイッチの際に、前記フェッチストール回数の多いスレッドと少ないスレッドを組み合わせて選択する、
    ことを特徴とするマルチスレッディングプロセッサ。
  6. それぞれが1つのスレッドに対応付けられる複数のコンテキストユニットと、
    資源競合度に応じて前記コンテキストユニットに対応付けられたスレッドのうち少なくとも1つのスレッドを選択するとともに選択されたスレッドの命令をフェッチするフェッチユニットと、
    前記フェッチされた命令をデコードするデコードユニットと、
    デコードされた命令を実行する命令実行ユニットを備え、
    さらに所定の期間内のメモリアクセスレーテンシを記録するメモリアクセスレーテンシカウンタを有し、
    前記コンテキストユニットにスレッドを対応づける際に、
    前記メモリアクセスレーテンシカウンタに記録された前記メモリアクセスレーテンシが、レーテンシ基準値を超える場合にスレッド数を減少させ、
    前記メモリアクセスレーテンシが、レーテンシ基準値を超えない場合にスレッド数を増加させ
    さらに所定の期間内のフェッチストール回数を記録するフェッチストールカウンタを有し、
    コンテテキストスイッチの際に、前記フェッチストール回数の多いスレッドと少ないスレッドを組み合わせて選択する、
    ことを特徴とするマルチスレッディングプロセッサ。
  7. 請求項5または6において、
    さらに所定の期間内のキャッシュミス回数を記録するキャッシュミスカウンタを有し、
    コンテテキストスイッチの際に、前記キャッシュミス回数の多いスレッドと少ないスレッドを組み合わせて選択することを特徴とするマルチスレッディングプロセッサ。
  8. 請求項5または6において、
    さらに所定の期間内の1サイクルあたり実行できる命令数を記録するIPCカウンタを有し、
    コンテテキストスイッチの際に、前記1サイクルあたり実行できる命令数の多いスレッドと少ないスレッドを組み合わせて選択することを特徴とするマルチスレッディングプロセッサ。
JP2004551175A 2002-11-13 2002-11-13 マルチスレッディングプロセッサにおけるスケジューリング方法およびマルチスレッディングプロセッサ Expired - Fee Related JP4086846B2 (ja)

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JPWO2004044745A1 JPWO2004044745A1 (ja) 2006-03-16
JP4086846B2 true JP4086846B2 (ja) 2008-05-14

Family

ID=32310258

Family Applications (1)

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

Country Status (2)

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

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4609070B2 (ja) * 2004-12-28 2011-01-12 沖電気工業株式会社 マルチ呼処理スレッド処理方法
US7958333B2 (en) * 2007-05-30 2011-06-07 XMOS Ltd. Processor with memory access stage adapted to fetch an instruction of a thread when no memory access operation is detected
JP4759026B2 (ja) * 2008-07-15 2011-08-31 公立大学法人広島市立大学 プロセッサ
JP5531679B2 (ja) 2010-03-04 2014-06-25 日本電気株式会社 Smt対応cpuを有する情報処理装置の消費電力低減方法、消費電力低減装置及び消費電力低減プログラム
JP5861354B2 (ja) 2011-09-22 2016-02-16 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US8839429B2 (en) * 2011-11-07 2014-09-16 Qualcomm Incorporated Methods, devices, and systems for detecting return-oriented programming exploits
JP2013149108A (ja) * 2012-01-19 2013-08-01 Canon Inc 情報処理装置及びその制御方法、プログラム
JP6171658B2 (ja) 2013-07-19 2017-08-02 富士通株式会社 並列処理最適化プログラム、並列処理最適化方法および情報処理装置
JP6166616B2 (ja) * 2013-08-07 2017-07-19 株式会社東芝 情報処理方法、情報処理装置及びプログラム
JP6252140B2 (ja) 2013-11-29 2017-12-27 富士通株式会社 タスク割り付けプログラム及びタスク割り付け方法
US11169812B2 (en) 2019-09-26 2021-11-09 Advanced Micro Devices, Inc. Throttling while managing upstream resources
GB2605375B (en) * 2021-03-29 2023-11-29 Advanced Risc Mach Ltd Data processors

Family Cites Families (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 スケジューリング方式

Also Published As

Publication number Publication date
WO2004044745A1 (ja) 2004-05-27
JPWO2004044745A1 (ja) 2006-03-16

Similar Documents

Publication Publication Date Title
US7954102B2 (en) Scheduling method in multithreading processor, and multithreading processor
US7269712B2 (en) Thread selection for fetching instructions for pipeline multi-threaded processor
US8656401B2 (en) Method and apparatus for prioritizing processor scheduler queue operations
JP4086846B2 (ja) マルチスレッディングプロセッサにおけるスケジューリング方法およびマルチスレッディングプロセッサ
US7035997B1 (en) Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors
US7904704B2 (en) Instruction dispatching method and apparatus
US20030046521A1 (en) Apparatus and method for switching threads in multi-threading processors`
JP5177141B2 (ja) 演算処理装置、演算処理方法
US7707391B2 (en) Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors
JP5548037B2 (ja) 命令発行制御装置及び方法
US7941643B2 (en) Multi-thread processor with multiple program counters
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
WO2015024452A1 (zh) 一种分支预测方法及相关装置
US10108424B2 (en) Profiling code portions to generate translations
Liu et al. SAWS: Synchronization aware GPGPU warp scheduling for multiple independent warp schedulers
Zheng et al. Memory access scheduling schemes for systems with multi-core processors
US7509643B2 (en) Method and apparatus for supporting asymmetric multi-threading in a computer system
EP4020167A1 (en) Accessing a branch target buffer based on branch instruction information
JP5128382B2 (ja) 複数のロード命令を実行するための方法および装置
WO2024093062A1 (zh) 并行译码的方法、处理器、芯片及电子设备
US7237093B1 (en) Instruction fetching system in a multithreaded processor utilizing cache miss predictions to fetch instructions from multiple hardware streams
CN100426260C (zh) 利用路预测技术的多线程处理器的取指方法及系统
EP4020187A1 (en) Segmented branch target buffer based on branch instruction type
US20080126754A1 (en) Multiple-microcontroller pipeline instruction execution method
CN111475203B (zh) 一种用于处理器的指令读取方法以及相应的处理器

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070123

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070717

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070918

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080219

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080219

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110228

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4086846

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110228

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120229

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130228

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140228

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees