JP2004110795A - 二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する方法および装置 - Google Patents

二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する方法および装置 Download PDF

Info

Publication number
JP2004110795A
JP2004110795A JP2003288289A JP2003288289A JP2004110795A JP 2004110795 A JP2004110795 A JP 2004110795A JP 2003288289 A JP2003288289 A JP 2003288289A JP 2003288289 A JP2003288289 A JP 2003288289A JP 2004110795 A JP2004110795 A JP 2004110795A
Authority
JP
Japan
Prior art keywords
thread
tier
executable
state
selection data
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.)
Pending
Application number
JP2003288289A
Other languages
English (en)
Inventor
Jeffrey D Brown
ジェフリー・ディー・ブラウン
Harold F Kossman
ハロルド・エフ・コスマン
Timothy J Mullins
ティモシー・ジェイ・マリンズ
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2004110795A publication Critical patent/JP2004110795A/ja
Pending 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/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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc

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)
  • Debugging And Monitoring (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

【課題】二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する方法および装置を提供すること。
【解決手段】第1の層のスレッド状態ストレージは、限定された数の実行可能なスレッド・レジスタ状態を格納する。第2の層のスレッド・ストレージ機能は、限定された数の実行可能なスレッド・レジスタ状態よりも大きな第2の数のスレッド状態を格納する。各格納されたスレッド状態は事前定義された選択データを含む。第1の層のスレッド状態ストレージと第2の層のスレッド・ストレージ機能の間に結合された実行可能スレッド選択論理は、第1の層の限定された数の実行可能なスレッド・レジスタ状態と第2の層のスレッド・ストレージ機能の間でスレッド状態を選択的に交換するために、格納されている事前定義された選択データを使用する。
【選択図】図2

Description

 本発明は、一般に、データ処理分野に関し、より詳細には、二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する方法および装置に関する。
 関連する米国特許出願番号10/246,937、Harold F. KossmanおよびTimothyJohn Mullinsによる「METHOD AND APPARATUS FOR IMPLEMENTING TWO-TIERED THREAD STATEMULTITHREADING SUPPORT WITH HIGH CLOCK RATE」は、本発明の譲渡人に譲渡され、本発明の出願と同日に出願された。
 CPU内のハードウェアの効率は、処理タスクをスレッドと呼ばれる単独で実行可能な命令シーケンスに分割することによって向上する。何らかの理由でCPUがこれらのスレッドの1つの処理または実行を継続できない場合、CPUは迅速に別のスレッドに切り替えて実行する。マルチスレッド化は、コンピュータ・システムの全体的な速度すなわちシステム・スループットを向上させるために有効な方法である。
 マルチスレッド化の設計技術は、プロセッサのパフォーマンスがクロック周波数に関して上がることを可能にする重要な手段となっている。過去のプロセッサ設計でパフォーマンスを低下させる停止状態が発生した場合、マルチスレッド化によってアクティビティの別個の並列スレッドによる命令の継続的な実行が可能になる。しかしクロック周波数が増えつづける場合、プロセッサが実行するための継続的に使用可能なオプションを提供するために、ハードウェアではより多くのスレッドをサポートすることが必要となる。
米国特許出願番号10/246,937
 従来のハードウェア・マルチスレッド化方式は、ハードウェアのレジスタ・セットに格納されるべきいくつかの数のスレッド状態を規定している。これらのレジスタ・セットは、一般に、ピーク・パフォーマンスを達成するという利益のためにチップ面積、回路の速度などを含めて比較的高価なチップ設計コストで実施される。
 代替のマルチスレッド化設計は、複数の層の状態ストレージを使用する。例えば、第1の層すなわち第1のレベルの状態ストレージには高価なチップ資源コストではあるが限定されたスレッド保持容量を提供することができ、第2の層すなわち第2のレベルの状態ストレージにはスループット要求をサポートするがアクセスの速度は低速の追加のスレッド容量を提供することができる。第2のレベルの状態ストレージでサポートされるスレッドを第1のレベルの状態レジスタでサポートされるスレッドと交換することは、スレッドにプロセッサで実行する機会を与えるために必須である。単純なハードウェア方式は、ラウンド・ロビン・アルゴリズムのような簡単なアルゴリズムによって第2のレベルのスレッドを選択することができる。残念ながら、これは全体的には最適でないパフォーマンスの原因となる。何故ならば、マシンのスループット能力を完全に活用するには、プロセッサでスレッドが何時実行されるかに関する適切なスケジューリングが要求されるからである。
 第1のレベルの状態レジスタと交換するために第2のレベル状態ストレージから適切な次のスレッドを選別する方法を提供することによって最適でないパフォーマンスの問題を解決する機構が求められている。
 本発明の主な目的は、二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する方法および装置を提供することである。本発明の他の重要な目的は、事実上悪影響なしに二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施するための、従来技術の構成の不利な点の多くを克服する方法および装置を提供することである。
 端的に言えば、二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する方法および装置が提供される。第1の層のスレッド状態ストレージは、限定された数の実行可能なスレッド・レジスタ状態を格納する。第2の層のスレッド・ストレージ機能は、実行可能なスレッド・レジスタ状態の限定された数よりも大きな第2の数のスレッド状態を格納する。各格納されたスレッド状態は事前定義された選択データを含む。第1の層のスレッド状態ストレージと第2の層のスレッド・ストレージ機能の間に結合された実行可能スレッド選択論理は、第1の層の限定された数の実行可能なスレッド・レジスタ状態と第2の層のスレッド・ストレージ機能の間でスレッド状態を選択的に交換するために、格納された事前定義された選択データを使用する。
 本発明の特徴によれば、第1の層の実行可能なスレッド・レジスタ状態と第2の層のスレッド・ストレージ機能の間でスレッド状態を選択的に交換するために実行可能スレッド選択論理によって使用される格納されている事前定義された選択データは、特定のスレッド使用履歴データを含む。実行可能スレッド選択論理によって使用される格納された事前定義された選択データは、各特定のスレッドに対するプロセッサ・サイクルの使用効率を含む。格納されている事前定義された選択データは、実行可能スレッド選択論理によって枯渇状態を信号で知らせるために使用される、特定のスレッドがプロセッサで実行されてからの時間を含む。格納されている事前定義された選択データは、実行可能スレッド選択論理がシステム・ポリシーに従い、第1の層の実行可能なスレッド・レジスタ状態に移動するために優先順位の低いスレッドより先に優先順位の高いスレッドを選択することを可能にするためにスレッド・システム優先順位を含む。格納されている事前定義された選択データは、二次スレッド・ストレージ機能に維持されている停止したスレッドがその停止状態が解消されるまで起動されないように、実行準備済みインジケータを含む。格納された事前定義された選択データは、第1の層の実行可能なスレッド・レジスタ状態に維持されるべき実行可能なスレッドをランク付けするためのランク付け論理によって使用される。第1の層の実行可能なスレッド・レジスタ状態は、現在実行中のプロセッサの状態がアイドル・イベントで変更された場合の選択用に使用可能である。
 本発明は、上記および他の目的および利点と共に、図面に示す本発明の好ましい実施形態の以下の詳細な説明から最もよく理解することができよう。
 図面を参照すると、図1には、好ましい実施形態の、参照文字100で全体を示したマルチスレッド化選択構造が示されている。マルチスレッド化選択構造100は、102および104で全体を示した二層のスレッド状態ストレージを含む。第1の層のスレッド状態ストレージ102は、高速クロック・レートに対して最適化された高速論理である。第1の層のスレッド状態ストレージ102は、プロセッサで実行するためにアクセスすることのできる実行可能なスレッド用の限定された数の実行可能なレジスタ状態を含む。いくつかのレジスタ論理の複製が特定の閾値よりも多く増える場合に起こりうるクロック・レートに対する不利益を回避するために、実行可能なレジスタ状態の限定された数は特定の閾値よりも小さい。第2の層のスレッド状態ストレージ104は、任意選択で第1の層の状態ストレージ102の高速論理よりも低速で動作する中速論理である。第2の層のスレッド状態ストレージ104は、ピーク・パフォーマンスを達成するために、ハードウェアのサポートを必要とするスレッドの完全な合計数に関する状態情報を保持するための容量を提供する。現在実行中のプロセッサの状態106がアイドル・イベントで変更された場合、次に実行するためには第1の層の実行可能なレジスタ状態102に格納されている実行可能なスレッドしか選択することはできない。第2の層104にだけ存在する状態を有するスレッドはプロセッサを使用することはできないが、実行可能スレッド選択論理108による高速選択に対しては使用可能である。
 好ましい実施形態の特徴によれば、最適なマルチスレッド化パフォーマンスはスレッド状態と共に保存されている情報を増やすことによって実現される。事前定義された選択データは、第1の層の実行可能なスレッド・レジスタ状態102と第2の層のスレッド・ストレージ機能104の間でスレッド状態を選択的に交換するために使用されるスレッド状態と共に格納される。この保存されている選択データを参照することによって、実行可能スレッド選択論理108は、プロセッサで実行するための第1の層の実行可能なレジスタ状態102の位置に移動するために適切なスレッドを選択することができる。具体的には、プロセッサ資源106の特定のスレッド使用に関する過去の履歴が維持され、スレッドの選択をランク付けするために使用される。
 次に図2を参照すると、好ましい実施形態によって追加のスレッド情報すなわち事前定義された選択データ200は二次スレッド・ストレージ機能104に保存されている。事前定義された選択データ200はプロセッサ・サイクル使用効率を含む。実行中にプロセッサの停止状態が頻繁に発生するスレッドは、プロセッサ資源の非効率的な使用の原因となる。キャッシュ・ミスおよび他の長期待ち時間イベントなどの事象はこれらの非効率性の一因となる。プロセッサで実行するために最も効率のよいスレッドをそれよりも効率の悪いスレッド以前にスケジューリングすることが一般的には望ましい。事前定義された選択データ200は、特定のスレッドがアクティブである間に発生するプロセッサ・サイクル(または命令)を追跡するための実行サイクル・カウンタ202と、実行スレッドが遭遇する長期待ち時間イベントを追跡するための長期待ち時間イベント・カウンタ204を含む。サイクル当たりの(または命令当たりの)長期待ち時間イベントの比率は効率メトリックを設定する。この比率が高いほど、スレッドはそのプロセッサの使用のより低い効率性を示す。効率メトリック比率が最も低いスレッドは、プロセッサで次に実行するものとして選択するには最も望ましい。
 事前定義された選択データ200は、特定のスレッドがプロセッサで最後に実行された時からの時間206を含む。スレッド状態と共に格納されているタイムスタンプ206によって、実行可能スレッド選択論理108はスレッドがプロセッサでどれだけ長期間非アクティブであるかを決定することができる。閾値を超えた場合、特定スレッドに対して枯渇状態が信号で知らされ、その特定のスレッドには、そのスレッドを非アクティブな状態に維持する他の判定基準があってもプロセッサで確実に実行されるような特別の優先順位を付与することができる。
 事前定義された選択データ200はシステム優先順位208を含む。システム・アルゴリズムは、システム資源の競合が生じた場合にどのスレッドが有利な処置を受けるかに関するポリシーを設定することをしばしば必要とする。システム優先順位208をスレッド状態に保つことによって、実行可能スレッド選択論理108がそのようなシステム・ポリシーに従い、通常ならば実行可能な状態から外される可能性のある場合にプロセッサで実行するための優先順位の高いスレッドを選択する。
 事前定義された選択データ200は実行準備済みインジケータ210を含む。より高いプロセッサのクロック周波数では、新しい実行を開始する機会が生じた場合にプロセッサを使用することが可能なハードウェアでサポートされるスレッドが多数ある。停止ポイントに達し、アクティブ実行106から切り替えられるスレッドは、第1の層の実行可能なスレッド・レジスタ状態102または第2の層のスレッド・ストレージ機能104にその状態を維持させ、停止が解消されると実行サイクルを再度競合する必要がある。そのようなスレッドが停止し、第2の層のスレッド・ストレージ機能104だけに保存されている状態を有する可能性がある期間中、それらのスレッドは実行可能な選択論理108でバイパスする必要がある。実行準備済みインジケータ210は、特定の状態が実行可能かどうかを評価するマシン・サイクルを消費せず、判定のために他のスレッドに移動するよう選択論理に信号で知らせるためにそれらのスレッド状態に維持される。停止状態が解消されるとこの実行準備済みインジケータ210はリセットされ、スレッドを再度実行することを可能にする。
 スレッドのランク付け212は、ランク付け選択論理214に、例えばソフトウェアによるなどしてセットされた指定の基準を使用して実行される。第2の層のスレッド・ストレージ機能104のいくつかの候補スレッドから1つのスレッドを選択する際の融通性を見込んでおくために、スレッド状態メトリックに対して事前定義された選択データ200を使用して評価シーケンスを設定するために、システム・ソフトウェアには追加の機会が付与される。ランク付け選択論理214は、選択論理関数を実行し、総合ランクで最高位の1つのスレッドを選別するなどして、各メトリックに対してスレッドの相対的ランク付けを評価する。例えばランク付け選択論理214は、サイクル当たり最低長期待ち時間数の最高システム優先順位で、閾値を超す最高の枯渇時間を有する実行準備済みスレッドを選別するようソフトウェアによってセットアップすることができる。現在の基準を満たすスレッドがない場合、次の再評価では最も重要な選択属性がスキップされる。現在の基準を満たすスレッドが複数ある場合、ランダム選択を行うことができる。
 事前定義された選択データ200を、プロセッサ・ハードウェアがサポートするスレッドに対して保存された状態に組み込むことによって、実行可能スレッド選択論理108は、現在アクティブなスレッドを非アクティブなスレッドと交換するために最適の選択を決定する。実行可能なスレッドが停止状態によって非アクティブになった場合、実行可能なスレッドに対するアクティブな第1の層の実行可能なレジスタ状態で、最適な動作履歴によって、別の選択を代用することによってプロセッサ資源は効率よく管理される。これによってマルチスレッド化プロセッサによる実現可能なピーク・パフォーマンスが実現し、現在の最先端技術のハードウェア管理方式のパフォーマンスを制限する効率の低下は回避される。
 本発明は、図面に示した本発明の実施形態の詳細を参照して説明したが、これらの詳細は首記の特許請求の範囲で請求するように本発明の範囲を限定することを目的とするものではない。
 まとめとして、本発明の構成に関して以下の事項を開示する。
(1)二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する装置において、
 限定された数の実行可能なスレッド・レジスタ状態を格納する第1の層のスレッド状態ストレージと、
 実行可能なスレッド・レジスタ状態の限定された数よりも大きな第2の数のスレッド状態を格納する第2の層のスレッド・ストレージ機能と
 を含み、
 各格納されたスレッド状態が特定のスレッド使用データを含む事前定義された選択データを含み、前記装置はさらに、
 前記格納されている事前定義された選択データを使用して、第1の層の限定された数の実行可能なスレッド・レジスタ状態と第2の層のスレッド・ストレージ機能の間でスレッド状態を選択的に交換するための、第1の層のスレッド状態ストレージと第2の層のスレッド・ストレージ機能の間に結合された実行可能スレッド選択論理を含む装置。
(2)前記事前定義された選択データが各特定のスレッドに対するプロセッサ・サイクルの使用効率データを含む上記(1)に記載の二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する装置。
(3)前記事前定義された選択データが、特定のスレッドがプロセッサで実行されてからの時間値が閾値を超すと枯渇状態を信号で知らせるために使用される前記時間値を含む上記(1)に記載の二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する装置。
(4)前記事前定義された選択データが、システム優先順位の低いスレッドの前にシステム優先順位の高いスレッドを選択するために前記実行可能スレッド選択論理によって使用されるスレッド・システム優先順位を含む上記(1)に記載の二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する装置。
(5)前記事前定義された選択データが、停止状態のスレッドが、その停止状態が解消されるまで前記二次スレッド・ストレージ機能から実行可能なスレッドに対する第1の層のスレッド・レジスタ状態に移動されないように前記実行可能なスレッド選択によって使用される実行準備済みインジケータを含む上記(1)に記載の二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する装置。
(6)現在実行中のプロセッサの状態がアイドル・イベントで変更された場合に、次に実行するプロセッサで実行されるべき次に適切で実行可能なスレッドを選択するための前記格納されている事前定義された選択データを使用する、前記第1の層のスレッド状態ストレージの実行可能なスレッドをランク付けするランク付け論理を含む上記(1)に記載の二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する装置。
(7)二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する方法において、
 限定された数の実行可能なスレッド・レジスタ状態を格納している、高クロック・レートに対して最適化された第1の層の状態ストレージ論理を使用するステップと、
 実行可能なスレッド・レジスタ状態の前記限定された数よりも大きく、プロセッサで実行するためのすべてのスレッドに等しい第2の数のスレッド状態に関する状態と、特定のスレッド使用データを含む事前定義された選択データとを格納している第2の層のストレージ機能を使用するステップと、
 実行可能スレッド選択論理を使用し、前記スレッドのそれぞれに関する前記格納されている事前定義された選択データを処理し、前記事前定義された選択データに基づいて前記第1の層の状態ストレージ論理と前記第2の層のストレージ機能の間でスレッド状態を選択的に交換するステップと
 を含む方法。
(8)第2の数のスレッド状態に関する前記状態と前記事前定義された選択データとを格納する、前記第2の層のストレージ機能を使用するステップが、各特定のスレッドに関するプロセッサ・サイクルの使用効率データを含めて前記事前定義された選択データを格納するステップを含む上記(7)に記載の二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する方法。
(9)第2の数のスレッド状態に関する前記状態と前記事前定義された選択データとを格納する、前記第2の層のストレージ機能を使用するステップが、特定のスレッドがプロセッサで実行されてからの時間値が閾値を超すと枯渇状態を信号で知らせるために使用される前記時間値を含む前記事前定義された選択データを格納するステップを含む上記(7)に記載の二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する方法。
(10)第2の数のスレッド状態に関する前記状態と前記事前定義された選択データとを格納する、前記第2の層のストレージ機能を使用するステップが、システム優先順位の低いスレッドより先にシステム優先順位の高いスレッドを選択することを可能にするために前記実行可能スレッド選択論理によって使用されるスレッド・システム優先順位を含む前記事前定義された選択データを格納するステップを含む上記(7)に記載の二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する方法。
(11)第2の数のスレッド状態に関する前記状態と前記事前定義された選択データとを格納する、前記第2の層のストレージ機能を使用するステップが、停止状態のスレッドが、その停止状態が解消されるまで前記二次スレッド・ストレージ機能から実行可能なスレッドに対する第1の層のスレッド・レジスタ状態に移動されないように前記実行可能スレッド選択論理によって使用される実行準備済みインジケータを含む前記事前定義された選択データを格納するステップを含む上記(7)に記載の二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する方法。
(12)現在実行中のプロセッサの状態がアイドル・イベントで変更された場合にプロセッサで次に実行されるべき実行可能なスレッドを選択するために前記事前定義された選択データを使用して前記第1の層の実行可能なスレッド・レジスタ状態の実行可能なスレッドをランク付けするステップを含む上記(7)に記載の二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する方法。
好ましい実施形態による二層マルチスレッド化選択構造のブロック図である。 好ましい実施形態による格納されている事前定義された選択データを使用した実行可能スレッド選択論理の動作を示すブロック図である。
符号の説明
 200 事前定義された選択データ
 202 実行サイクル・カウンタ
 204 長期待ち時間イベント・カウンタ
 206 プロセッサで最後に実行された時からの時間
 208 システム優先順位
 210 実行準備済みインジケータ
 214 ランク付け選択論理

Claims (12)

  1.  二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する装置において、
     限定された数の実行可能なスレッド・レジスタ状態を格納する第1の層のスレッド状態ストレージと、
     実行可能なスレッド・レジスタ状態の限定された数よりも大きな第2の数のスレッド状態を格納する第2の層のスレッド・ストレージ機能と
     を含み、
     各格納されたスレッド状態が特定のスレッド使用データを含む事前定義された選択データを含み、前記装置はさらに、
     前記格納されている事前定義された選択データを使用して、第1の層の限定された数の実行可能なスレッド・レジスタ状態と第2の層のスレッド・ストレージ機能の間でスレッド状態を選択的に交換するための、第1の層のスレッド状態ストレージと第2の層のスレッド・ストレージ機能の間に結合された実行可能スレッド選択論理を含む装置。
  2.  前記事前定義された選択データが各特定のスレッドに対するプロセッサ・サイクルの使用効率データを含む請求項1に記載の二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する装置。
  3.  前記事前定義された選択データが、特定のスレッドがプロセッサで実行されてからの時間値が閾値を超すと枯渇状態を信号で知らせるために使用される前記時間値を含む請求項1に記載の二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する装置。
  4.  前記事前定義された選択データが、システム優先順位の低いスレッドの前にシステム優先順位の高いスレッドを選択するために前記実行可能スレッド選択論理によって使用されるスレッド・システム優先順位を含む請求項1に記載の二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する装置。
  5.  前記事前定義された選択データが、停止状態のスレッドが、その停止状態が解消されるまで前記二次スレッド・ストレージ機能から実行可能なスレッドに対する第1の層のスレッド・レジスタ状態に移動されないように前記実行可能なスレッド選択によって使用される実行準備済みインジケータを含む請求項1に記載の二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する装置。
  6.  現在実行中のプロセッサの状態がアイドル・イベントで変更された場合に、次に実行するプロセッサで実行されるべき次に適切で実行可能なスレッドを選択するための前記格納されている事前定義された選択データを使用する、前記第1の層のスレッド状態ストレージの実行可能なスレッドをランク付けするランク付け論理を含む請求項1に記載の二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する装置。
  7.  二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する方法において、
     限定された数の実行可能なスレッド・レジスタ状態を格納している、高クロック・レートに対して最適化された第1の層の状態ストレージ論理を使用するステップと、
     実行可能なスレッド・レジスタ状態の前記限定された数よりも大きく、プロセッサで実行するためのすべてのスレッドに等しい第2の数のスレッド状態に関する状態と、特定のスレッド使用データを含む事前定義された選択データとを格納している第2の層のストレージ機能を使用するステップと、
     実行可能スレッド選択論理を使用し、前記スレッドのそれぞれに関する前記格納されている事前定義された選択データを処理し、前記事前定義された選択データに基づいて前記第1の層の状態ストレージ論理と前記第2の層のストレージ機能の間でスレッド状態を選択的に交換するステップと
     を含む方法。
  8.  第2の数のスレッド状態に関する前記状態と前記事前定義された選択データとを格納する、前記第2の層のストレージ機能を使用するステップが、各特定のスレッドに関するプロセッサ・サイクルの使用効率データを含めて前記事前定義された選択データを格納するステップを含む請求項7に記載の二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する方法。
  9.  第2の数のスレッド状態に関する前記状態と前記事前定義された選択データとを格納する、前記第2の層のストレージ機能を使用するステップが、特定のスレッドがプロセッサで実行されてからの時間値が閾値を超すと枯渇状態を信号で知らせるために使用される前記時間値を含む前記事前定義された選択データを格納するステップを含む請求項7に記載の二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する方法。
  10.  第2の数のスレッド状態に関する前記状態と前記事前定義された選択データとを格納する、前記第2の層のストレージ機能を使用するステップが、システム優先順位の低いスレッドより先にシステム優先順位の高いスレッドを選択することを可能にするために前記実行可能スレッド選択論理によって使用されるスレッド・システム優先順位を含む前記事前定義された選択データを格納するステップを含む請求項7に記載の二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する方法。
  11.  第2の数のスレッド状態に関する前記状態と前記事前定義された選択データとを格納する、前記第2の層のストレージ機能を使用するステップが、停止状態のスレッドが、その停止状態が解消されるまで前記二次スレッド・ストレージ機能から実行可能なスレッドに対する第1の層のスレッド・レジスタ状態に移動されないように前記実行可能スレッド選択論理によって使用される実行準備済みインジケータを含む前記事前定義された選択データを格納するステップを含む請求項7に記載の二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する方法。
  12.  現在実行中のプロセッサの状態がアイドル・イベントで変更された場合にプロセッサで次に実行されるべき実行可能なスレッドを選択するために前記事前定義された選択データを使用して前記第1の層の実行可能なスレッド・レジスタ状態の実行可能なスレッドをランク付けするステップを含む請求項7に記載の二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する方法。
JP2003288289A 2002-09-19 2003-08-06 二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する方法および装置 Pending JP2004110795A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/246,912 US7096470B2 (en) 2002-09-19 2002-09-19 Method and apparatus for implementing thread replacement for optimal performance in a two-tiered multithreading structure

Publications (1)

Publication Number Publication Date
JP2004110795A true JP2004110795A (ja) 2004-04-08

Family

ID=31992392

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003288289A Pending JP2004110795A (ja) 2002-09-19 2003-08-06 二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する方法および装置

Country Status (4)

Country Link
US (1) US7096470B2 (ja)
JP (1) JP2004110795A (ja)
CN (1) CN100428197C (ja)
TW (1) TWI261200B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010522920A (ja) * 2007-03-26 2010-07-08 イマジネイション テクノロジーズ リミテッド パイプラインプロセッサにおける長い待ち時間命令の処理

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3883647B2 (ja) * 1997-06-10 2007-02-21 インターナショナル・ビジネス・マシーンズ・コーポレーション メッセージ処理方法、メッセージ処理装置及びメッセージ処理を制御するプログラムを格納する記憶媒体
US7634774B2 (en) * 2004-09-13 2009-12-15 Integrated Device Technology, Inc. System and method of scheduling computing threads
US7827555B2 (en) * 2004-09-13 2010-11-02 Integrated Device Technology, Inc. Scheduler for a multiprocessing computing system
JP4151975B2 (ja) * 2004-11-08 2008-09-17 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報処理装置、プログラム、及び管理方法
US7418576B1 (en) 2004-11-17 2008-08-26 Nvidia Corporation Prioritized issuing of operation dedicated execution unit tagged instructions from multiple different type threads performing different set of operations
US7506140B2 (en) * 2005-02-04 2009-03-17 Mips Technologies, Inc. Return data selector employing barrel-incrementer-based round-robin apparatus
US7752627B2 (en) 2005-02-04 2010-07-06 Mips Technologies, Inc. Leaky-bucket thread scheduler in a multithreading microprocessor
US7664936B2 (en) * 2005-02-04 2010-02-16 Mips Technologies, Inc. Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages
US7613904B2 (en) * 2005-02-04 2009-11-03 Mips Technologies, Inc. Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler
US7657891B2 (en) 2005-02-04 2010-02-02 Mips Technologies, Inc. Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency
US7681014B2 (en) 2005-02-04 2010-03-16 Mips Technologies, Inc. Multithreading instruction scheduler employing thread group priorities
US7853777B2 (en) * 2005-02-04 2010-12-14 Mips Technologies, Inc. Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions
US7657883B2 (en) 2005-02-04 2010-02-02 Mips Technologies, Inc. Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor
US7490230B2 (en) * 2005-02-04 2009-02-10 Mips Technologies, Inc. Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor
US7631130B2 (en) * 2005-02-04 2009-12-08 Mips Technologies, Inc Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor
US8001549B2 (en) * 2006-04-27 2011-08-16 Panasonic Corporation Multithreaded computer system and multithread execution control method
US9342350B2 (en) * 2006-08-24 2016-05-17 Renesas Electronics Corporation System for selecting a task to be executed according to an output from a task control circuit
US7990989B2 (en) * 2006-09-16 2011-08-02 Mips Technologies, Inc. Transaction selector employing transaction queue group priorities in multi-port switch
US7961745B2 (en) * 2006-09-16 2011-06-14 Mips Technologies, Inc. Bifurcated transaction selector supporting dynamic priorities in multi-port switch
US7773621B2 (en) * 2006-09-16 2010-08-10 Mips Technologies, Inc. Transaction selector employing round-robin apparatus supporting dynamic priorities in multi-port switch
US7760748B2 (en) * 2006-09-16 2010-07-20 Mips Technologies, Inc. Transaction selector employing barrel-incrementer-based round-robin apparatus supporting dynamic priorities in multi-port switch
US7859548B1 (en) 2006-10-19 2010-12-28 Nvidia Corporation Offloading cube map calculations to a shader
US8813080B2 (en) * 2007-06-28 2014-08-19 Intel Corporation System and method to optimize OS scheduling decisions for power savings based on temporal characteristics of the scheduled entity and system workload
JP5414305B2 (ja) * 2009-02-25 2014-02-12 キヤノン株式会社 情報処理装置、仮想記憶管理方法及びプログラム
US9063796B2 (en) * 2012-08-02 2015-06-23 GM Global Technology Operations LLC Method and apparatus for improving processing performance of a multi-core processor
US9710054B2 (en) * 2015-02-28 2017-07-18 Intel Corporation Programmable power management agent
WO2016175285A1 (ja) * 2015-04-30 2016-11-03 株式会社特殊免疫研究所 ヒト特定分子およびヒトFcγ受容体ファミリーを発現するトランスジェニック非ヒト動物
US20240095031A1 (en) * 2022-09-19 2024-03-21 Apple Inc. Thread Channel Deactivation based on Instruction Cache Misses

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4596739A (en) 1985-02-11 1986-06-24 International Business Machines Corporation Rigid magnetic recording media
JP2665699B2 (ja) 1991-12-27 1997-10-22 新日本ホイール工業株式会社 多板クラッチの潤滑装置
JP3696901B2 (ja) * 1994-07-19 2005-09-21 キヤノン株式会社 負荷分散方法
JP3231571B2 (ja) * 1994-12-20 2001-11-26 日本電気株式会社 順序付きマルチスレッド実行方法とその実行装置
US5812811A (en) * 1995-02-03 1998-09-22 International Business Machines Corporation Executing speculative parallel instructions threads with forking and inter-thread communication
US5771382A (en) * 1995-06-05 1998-06-23 International Business Machines Corporation System and method for synchronizing static variable initialization and reference under a multi-threaded computer environment
JPH096633A (ja) * 1995-06-07 1997-01-10 Internatl Business Mach Corp <Ibm> データ処理システムに於ける高性能多重論理経路の動作用の方法とシステム
JPH096007A (ja) 1995-06-15 1997-01-10 Shin Etsu Chem Co Ltd 水溶性パターン形成材料
JP4309481B2 (ja) 1996-01-12 2009-08-05 テイコクメディックス株式会社 ゼリー状経口医薬組成物
US6766515B1 (en) * 1997-02-18 2004-07-20 Silicon Graphics, Inc. Distributed scheduling of parallel jobs with no kernel-to-kernel communication
US5872963A (en) * 1997-02-18 1999-02-16 Silicon Graphics, Inc. Resumption of preempted non-privileged threads with no kernel intervention
US6418460B1 (en) * 1997-02-18 2002-07-09 Silicon Graphics, Inc. System and method for finding preempted threads in a multi-threaded application
JPH10320759A (ja) 1997-05-20 1998-12-04 Fuji Photo Film Co Ltd ディスク状磁気記録媒体
US6223208B1 (en) * 1997-10-03 2001-04-24 International Business Machines Corporation Moving data in and out of processor units using idle register/storage functional units
US6076157A (en) * 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US6697935B1 (en) * 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US6212544B1 (en) * 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6105051A (en) * 1997-10-23 2000-08-15 International Business Machines Corporation Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor
US6567839B1 (en) * 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6018759A (en) * 1997-12-22 2000-01-25 International Business Machines Corporation Thread switch tuning tool for optimal performance in a computer processor
JP2000010800A (ja) * 1998-06-19 2000-01-14 Toshiba Corp 計算機システムに於けるスレッド制御装置、及び同システムに於けるスレッド制御方法
JP2000333724A (ja) 1999-05-31 2000-12-05 Sadaichi Kano 二枚合せ開閉櫛
US6785889B1 (en) * 2000-06-15 2004-08-31 Aurema, Inc. System and method for scheduling bandwidth resources using a Kalman estimator with active feedback
US6965986B2 (en) * 2002-09-19 2005-11-15 International Business Machines Corporation Method and apparatus for implementing two-tiered thread state multithreading support with high clock rate

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010522920A (ja) * 2007-03-26 2010-07-08 イマジネイション テクノロジーズ リミテッド パイプラインプロセッサにおける長い待ち時間命令の処理

Also Published As

Publication number Publication date
US20040060052A1 (en) 2004-03-25
TWI261200B (en) 2006-09-01
CN1484153A (zh) 2004-03-24
CN100428197C (zh) 2008-10-22
TW200411564A (en) 2004-07-01
US7096470B2 (en) 2006-08-22

Similar Documents

Publication Publication Date Title
JP2004110795A (ja) 二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する方法および装置
US8219993B2 (en) Frequency scaling of processing unit based on aggregate thread CPI metric
US7979680B2 (en) Multi-threaded parallel processor methods and apparatus
US8756605B2 (en) Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline
JP5040773B2 (ja) メモリバッファ割当装置およびプログラム
US8302098B2 (en) Hardware utilization-aware thread management in multithreaded computer systems
JP5091986B2 (ja) 電力制御装置
US8959515B2 (en) Task scheduling policy for limited memory systems
US8356304B2 (en) Method and system for job scheduling
US20090172423A1 (en) Method, system, and apparatus for rerouting interrupts in a multi-core processor
US8375390B2 (en) Scheduling method and scheduling apparatus
JP2008084009A (ja) マルチプロセッサシステム
US8640133B2 (en) Equal duration and equal fetch operations sub-context switch interval based fetch operation scheduling utilizing fetch error rate based logic for switching between plurality of sorting algorithms
KR101356033B1 (ko) 하이브리드 주메모리 시스템 및 이를 위한 태스크 스케줄링 방법
Liu et al. SAWS: Synchronization aware GPGPU warp scheduling for multiple independent warp schedulers
US10768684B2 (en) Reducing power by vacating subsets of CPUs and memory
JP2004110796A (ja) 高クロック・レートによる二層スレッド状態マルチスレッド化サポートを実施する方法および装置
Zhu et al. Improving first level cache efficiency for gpus using dynamic line protection
Kim et al. Using DVFS and task scheduling algorithms for a hard real-time heterogeneous multicore processor environment
Garg Real-time linux kernel scheduler
KR100728899B1 (ko) 복수의 레지스터 집합과 하드웨어 작업 관리자를 가진고성능 멀티쓰레드 임베디드 프로세서
Sibai Nearest neighbor affinity scheduling in heterogeneous multi-core architectures
WO2006016283A2 (en) Task scheduling using context switch overhead table
Abeydeera Optimizing throughput architectures for speculative parallelism

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060118

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060228

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060524

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060529

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20061024