JP2005309762A - スレッド切替制御装置。 - Google Patents

スレッド切替制御装置。 Download PDF

Info

Publication number
JP2005309762A
JP2005309762A JP2004125763A JP2004125763A JP2005309762A JP 2005309762 A JP2005309762 A JP 2005309762A JP 2004125763 A JP2004125763 A JP 2004125763A JP 2004125763 A JP2004125763 A JP 2004125763A JP 2005309762 A JP2005309762 A JP 2005309762A
Authority
JP
Japan
Prior art keywords
instruction
thread
entry
branch
execution
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.)
Granted
Application number
JP2004125763A
Other languages
English (en)
Other versions
JP4327008B2 (ja
Inventor
Emi Yokoi
恵美 横井
Masaki Ukai
昌樹 鵜飼
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
Priority to JP2004125763A priority Critical patent/JP4327008B2/ja
Priority to US10/967,235 priority patent/US8108859B2/en
Publication of JP2005309762A publication Critical patent/JP2005309762A/ja
Application granted granted Critical
Publication of JP4327008B2 publication Critical patent/JP4327008B2/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, 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/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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

Abstract

【課題】 命令フェッチ時にキャッシュミスが生じた場合のスレッド切替条件を明確にし、マルチスレッド方式の性能を向上させる。
【解決手段】 デコードされた命令に対応してエントリが作成され、命令実行完了時にそのエントリが消去されるユニット3と、ユニット3内で消去されていないエントリの数としての未完了命令数を報告する手段5と、キャッシュミス発生後に手段5から未完了命令数が0である報告を受けた時にスレッド切替要求信号を出力する手段4とを備える。
【選択図】図1

Description

本発明は、情報処理装置における命令実行処理方式に係り、さらに詳しくはハードウェアマルチスレッド方式を用いる情報処理装置におけるスレッド切替方式、またはスレッド実行順位優先順序変更方式に関する。
計算機の資源をできるだけ有効に利用するための1つの方式としてマルチスレッド方式がある。マルチスレッド方式とは、1つのプロセッサを用いてあたかも複数のプロセッサが処理を行っているかのような効果を生ずる方法である。スレッドとは、そのように複数の論理的なプロセッサの内で1つのプロセッサの処理を指すものである。マルチスレッド方式の1つがバーティカル・マルチ・スレッド(VMT)方式である。この方式はスレッドの切替要因が生じた場合にスレッドの切替を行って、演算器を遊ばせることなく、別の無関係な処理を行わせるものである。
図21はこのVMT方式の従来例の動作説明図である。この方式ではある時刻に実際に実行パイプラインを流れるスレッドの処理は1つであり、時間を縦方向に分割したマルチスレッド処理となるが、OSには2つのCPUが動いているように見える。効率よくマルチスレッド処理を行うためにはどのような条件でスレッドを切替えるかが重要となる。
マルチスレッドのもう1つの方式が、シマルテーニアス・マルチ・スレッド(SMT)方式である。1つ以上のパイプラインに対して複数のスレッドの命令列を交互、もしくは同時に投入し、演算器を共有して処理を行うマルチスレッド方式であり、ある時刻に実行処理されているスレッドは複数存在し得る。SMT方式においては、あるスレッドが動作を停止しているようなスレッド切替条件が生じた場合には、他のスレッドの実行処理を優先して行うことによって、効率的に計算機の資源を利用することが可能となる。なおSMT方式では、アドレス計算器や演算器を必要に応じて複数用意して使用することもできる。
このようなマルチスレッド方式を用いた従来技術に関して次の文献がある。
特開平11−96005号公報 「並列処理装置」 特表平2001−521215号公報 「マルチスレッド式プロセッサでスレッド切替イベントを選択するための方法および装置」 特表平2001−521219号公報 「マルチスレッド式プロセッサでのスレッド優先順位の変更」
特許文献1では、待機中のスレッド実行部を活用して、条件分岐命令の条件成立側、非成立側の双方の命令を実行して、成立/非成立の確定後にどちらかの処理を選択することによって高速化を図る技術が開示されている。
特許文献2、および3には、スレッド切替条件を格納するためのスレッド切替制御レジスタを含むスレッド切替論理におけるスレッド優先順位の変更や、スレッド切替イベントの選択が可能なシステムが開示されている。
スレッド切替条件の1つとして重要なものとしては、キャッシュミスによるメモリアクセスがある。そのようなメモリアクセスには非常に時間がかかり、キャッシュミス時のペナルティは高速なプロセッサにおいては非常に大きくなる。プロセッサ内部の演算器等は使用されない状態が長時間続き、その待ち時間を有効に使うためには、スレッドの切替を行う必要がある。
しかしながらキャッシュミスにはオペランド側のキャッシュミスも存在し、命令キャッシュのミスとオペランドキャッシュのミスとを正しく見分ける必要があり、また例えば分岐命令に対応してキャッシュミスが生じた場合などには、分岐予測ミス等によってメモリアクセス中の命令列が実際には使用されず、同じスレッドの内部で正しい方向の処理がすぐに行われることがあるため、そのような場合にはスレッドを切替える必要はなく、命令キャッシュのミスが生じた場合にもスレッドの切替を行う条件をさらに明確にする必要があるという問題点があった。
上述の特許文献1〜特許文献3においては、このように例えば命令キャッシュのミスを契機として行われるべきスレッドの切替方法やその条件については明らかでなく、スレッドの切替条件をさらに明確にする必要があるという問題点については解決されていなかった。
本発明の課題は、上述の問題点に鑑み、命令フェッチ時のキャッシュミスを契機としてスレッドの切替を行う方式を提供することであり、さらに分岐命令等に対応してキャッシュミスが生じた場合にスレッド切替を行う条件をさらに明確にしてマルチスレッド方式の性能を向上させることである。
図1は本発明のスレッド切替制御方式を用いる情報処理装置の原理構成ブロック図である。同図において情報処理装置1は、その内部にスレッド切替制御装置2を備え、スレッド切替制御装置2は、命令フェッチ時にキャッシュにフェッチすべき命令が格納されていないキャッシュミスの発生後にスレッド切替要求信号を出力するスレッド切替要求手段4、例えば切替要求生成回路を少なくとも備えている。
発明の実施の形態においては、情報処理装置1はすでにデコードされた命令に1対1に対応して、その命令の実行に関係するデータが格納されるエントリが作成されて、その命令の実行完了時にそのエントリが消去される命令完了管理ユニット3をさらに備え、またスレッド切替制御装置2が、作成されたエントリの内で消去されていないエントリの数によって実行未完了の命令の数をスレッド切替要求手段4に報告する未完了命令数報告手段5、例えばCSE使用個数カウンタと比較回路をさらに備え、スレッド切替要求手段4がキャッシュミスの発生後に該未完了命令数が0であることを示す報告を受け取った時にスレッド切替要求信号を出力することもできる。これによってキャッシュミスを起こした命令より前のすべての命令の実行が完了し、キャッシュミスを起こした命令が使用されることが確実になった時点でスレッド切替要求信号が出力されることになる。
また実施の形態においては、情報処理装置1が前述の命令完了管理ユニット3と、分岐命令のデコード時に、そのデコード順に分岐命令の実行に関するデータが格納されるエントリが先頭から順次作成され、分岐命令の完了時にそのエントリの内容が消去されるとともに、未完了の分岐命令に対応するエントリの格納内容が先頭方向に順次移動される分岐リザベーションステーションをさらに備え、またスレッド切替制御装置2が前述の未完了命令数報告手段5を備え、スレッド切替要求手段4がキャッシュミスの発生後に未完了命令数報告手段5から未完了の命令数が1であることを示す報告を受け、かつ分岐リザベーションステーションから先頭エントリに有効データが格納されていることを示す信号を受け取った時にスレッド切替要求信号を出力することもできる。
さらに実施の形態においては、情報処理装置1が前述の命令完了ユニット3と、分岐命令のデコード時にデコード順に分岐命令の実行に関するデータが格納されるエントリが先頭から順次作成され、分岐命令の完了時にそのエントリの内容が消去されるとともに、未完了の分岐命令に対応するエントリの格納内容が先頭方向に順次移動される分岐リザベーションステーションであって、その分岐命令に対応する遅延命令がその分岐命令の直後に存在する時、その遅延命令を対応する分岐命令の実行に関するデータが格納されたエントリに対応させて格納するディレイスロットスタックを有する分岐リザベーションステーションと、フェッチされた1つ以上の命令を一時的に格納する命令バッファから同時に複数の命令が供給される時にその命令を1つずつ格納し、格納データが有効であることを示すバリッド信号を出力する複数のインストラクション・ワード・レジスタとをさらに備え、スレッド切替要求手段4が、キャッシュミスの発生後に分岐リザベーションステーションから先頭エントリのみのデータが有効で、かつ先頭エントリに対応するディレイスロットスタックのデータが無効であることを示す信号を受け、また複数のインストラクション・ワード・レジスタの内で実行順序が最も早い命令が格納されるべきレジスタから出力すべきデータが無効であることを示す信号を受け、さらに命令バッファからそのレジスタに供給すべきデータが無効であることを示す信号を受け取った時にスレッド切替要求信号を出力することもできる。
実施の形態においては、キャッシュミスの発生時に起動され、あらかじめ定められた時間内にスレッド切替要求手段4が要求信号を出力しない時に、その後の要求信号出力を停止させるスレッド切替要求抑止手段をさらに備えることもできる。
本発明のスレッド切替制御方式を用いる情報処理装置においては、命令フェッチ時にキャッシュにフェッチすべき命令が格納されていないキャッシュミスの発生後にスレッドの実行優先順位の変更要求を出力するスレッド優先順位変更要求手段、例えば切替要求生成回路を有するスレッド切替制御装置を備える。
発明の実施の形態においては、前述と同様に情報処理装置1が命令完了管理ユニット3を、またスレッド切替制御装置2が未完了命令数報告手段5をさらに備え、未完了命令数が0であることを示す報告を受け取った時にスレッド優先順位変更要求手段が変更要求信号を出力することもできる。
また実施の形態においては、前述と同様に情報処理装置1が命令完了管理ユニット3と分岐リザベーションステーションとを、またスレッド切替制御装置2が未完了命令数報告手段5をさらに備え、未完了令数が1であることを示す報告と分岐リザベーションステーションの先頭エントリに有効データが格納されていることを示す信号を受け取った時に優先順位変更要求信号を出力することもできる。
さらに実施の形態においては、前述と同様に情報処理装置1が命令完了管理ユニット3と、ディレイスロットスタックを有する分岐リザベーションステーションと、複数のインストラクション・ワード・レジスタをさらに備え、分岐リザベーションステーションの先頭エントリのみのデータが有効であり、かつ先頭エントリに対応するディレイスロットスタックのデータが無効であることを示す信号を受け取り、実行順序が最も早い命令が格納されるべきインストラクション・ワード・レジスタから出力すべきデータの無効を示す信号を受け取り、命令バッファからそのレジスタに供給すべきデータの無効を示す信号を受け取った時に優先順位変更要求信号を出力することもできる。
次に本発明の実施形態においては、スレッドの切替を制御する方法として、命令フェッチ時にキャッシュにフェッチすべき命令が格納されていないキャッシュミスの発生後にスレッド切替要求信号を出力する方法を用いることができる。
本発明によれば、命令フェッチ時におけるキャッシュミスを契機として、例えばキャッシュミスを起こした命令よりも実行順序が早いすべての命令が終了したことを検出してスレッドの切替やスレッド実行優先順位の変更を行うことによって、キャッシュミスを起こした命令が確実に使用されることが検出された時点でスレッド切替などを行うことが可能となり、マルチスレッド方式の性能向上に寄与するところが大きい。
図2は、本発明のスレッド切替制御方式が用いられる情報処理装置の全体構成ブロック図である。ただし、情報処理装置の内で本発明の説明に直接の関係がない部分は省略されている。
図2において情報処理装置は、実行すべき命令をフェッチするための命令フェッチ制御ユニット10、命令フェッチ制御ユニット10からの命令フェッチ要求を受けて命令キャッシュ12に格納されている命令を検索するキャッシュ制御ユニット11、キャッシュ制御ユニット11によって出力されたフェッチされた命令群を一時的に格納する命令バッファ13、命令バッファ13に格納されている命令列の命令をデコードするデコーダ14、デコードされた命令のすべてについてその実行完了までの管理を行う命令完了管理ユニット15、デコードされた命令が分岐命令である時、その分岐命令の完了までを制御する分岐リザベーションステーション16、分岐命令以外の命令、例えば演算命令に関するデータを格納し、その実行を管理するその他のリザベーションステーション17、例えば演算用リザベーションステーションからの演算要求に対応して演算を行う演算ユニット18、ロード命令、ストア命令などの管理を行うその他のリザベーションステーション17からのロード、またはストア要求に対応してオペランドキャッシュ20の内容を検索するキャッシュ制御ユニット19、デコーダ14によって命令完了管理ユニット15内のエントリ(コミット・スタック・エントリ CSE)にセットされた命令の数と、命令完了管理ユニット15から報告される完了命令数によってCSEの使用個数をカウントするカウンタ21、カウンタ21の出力によって、例えばCSEの使用個数が0であることを検出する比較回路22、命令キャッシュ12内にフェッチすべき命令が存在せず、キャッシュミスの場合にキャッシュ制御ユニット11からのメモリリード要求を受け取るメモリ23を備えている。
なお本発明のスレッド切替制御装置は、図2のCSE使用個数カウンタ21、比較回路22、および例えば命令フェッチ制御ユニット10の内部に備えられる切替要求生成回路によって基本的に構成される。
図2において、命令フェッチ制御ユニット10からフェッチが要求された命令が命令キャッシュ12に存在しないときには、キャッシュ制御ユニット11から命令フェッチ制御ユニット10に対して次に返すべき命令のミスヒット報告がなされるとともに、メモリリード要求がメモリ23に出力される。
命令バッファ13に一時的に格納された命令列の内で、一度に最大で4つの命令がデコーダ14に与えられ、デコーダ14によって一度に最大4命令がデコードされて、例えば全ての命令に関するデータが命令完了管理ユニット15に与えられる。
分岐リザベーションステーション16からは、分岐命令の完了毎にその完了報告が、演算ユニット18からは、例えば固定小数点演算、浮動小数点演算などの完了報告が、またキャッシュ制御ユニット19からはロード命令、あるいはストア命令の完了報告が命令完了管理ユニット15に与えられる。
命令フェッチ制御ユニット10に対しては、前述のように比較回路22から、例えばCSEの使用個数が0であることの報告が与えられる以外に、分岐リザベーションステーション16から必要に応じてディレイスロット待ちを示す信号が入力される。このディレイスロット待ちは後述するように分岐命令にディレイスロット命令(遅延命令)が対応しており、そのディレイスロット命令に対応して命令キャッシュのミスヒットが検出された時に、そのディレイスロットの命令がフェッチされるまでの待ち状態であることを示すものである。
次に本実施形態において、スレッド切替の制御のために重要な役割を果たす図2内の命令完了管理ユニット15の動作について図3を用いて説明する。図3において命令完了管理ユニット15には、図2で説明したようにデコーダ14によってデコードされた命令のそれぞれに対応してコミット・スタック・エントリ CSEが作成される。このエントリのセットと命令完了によるエントリの消去は、インオーダで行われる。デコーダ14によって最大4つの命令が同時にデコードされるため、最大4命令が4個のエントリ、すなわちCSEに同時にセットされるとともに、各リザベーションステーション、例えばその他のリザベーションステーション17にも対応するエントリの作成が行われる。
命令完了管理ユニット15内部のCSE、すなわちエントリの総数を64個とすると、64個のエントリは図3に示すように円状に連続するイメージとなる。新しいエントリはすでにデータが格納されているエントリの後ろに順次作成され、先頭から順番に命令の完了に伴って消去される。次にエントリを作成すべき位置、次にエントリを消去すべき位置はそれぞれポインタによって示される。現在使用されているCSEの個数は、CSE使用個数カウンタ21によってカウントされる。そのカウンタ21には、デコーダ14からDリリースのサイクルでN個の命令が同時にセットされたことを示す信号が、また命令完了管理ユニット15からM個の命令が完了したことを示す信号が入力される。
次に本発明の第1の実施形態について図4〜図7を用いて説明する。この第1の実施形態では、図2で説明したように比較回路22から命令完了管理ユニット15の内部のエントリ、すなわちCSEの使用個数が0であることが報告された時点で、命令フェッチ制御ユニット10から、スレッド制御に必要とされるレジスタやプログラムカウンタなどに対してスレッド切替要求信号が出されることになる。この第1の実施形態は、デコーダ14によって同時にデコードされる命令の内で、例えば先頭命令に対応してキャッシュミスが起こった場合に相当する。
図4はこのように先頭命令に対してキャッシュミスが起こった場合の命令完了管理ユニット15内の各エントリの状態の説明図である。同図において上部は、すでに前回の命令フェッチとデコードの結果によって作成されたエントリとしてのCSEmからCSEm+3までのエントリに対してデータが格納され、次に後続の4つの命令をフェッチしようとした時点で先頭命令に対するキャッシュミスが発生し、命令のフェッチができないために命令完了管理ユニット15の内部で新しいエントリ、すなわちCSEm+4以降のエントリが作成できない状態を示している。
その後、ある程度時間が経過した後の状態が下の図であり、エントリCSEmからCSEm+3までのエントリにデータが格納された命令の全てに対して完了条件が揃ったことが判定され、これら4つのエントリは消去される。しかしながら前述のように次のCSEm+4以降のエントリは作成されておらず、全てのエントリが空となった状態となり、比較回路22は、全てのエントリが空であることを示すCSE_EMPTY信号をHとして、命令フェッチ制御ユニット10に与えることになる。この時キャッシュ制御ユニット11からは、キャッシュミスが起こり、まだメモリ23からデータが読み出されていないことを示すIF_TOQ_MISS_DETECTED信号がHとして命令フェッチ制御ユニット10に与えられている。
図5は図4における比較回路22の動作の説明図である。同図においてデコーダ14からは前述のようにN、最大4個の命令をセットしたことを示す信号+Nが、また命令完了管理ユニット15からはM、最大4個の命令が完了したことを示す−M信号がCSE使用個数カウンタ21に入力され、カウンタ21は現在のカウント値にセット命令数Nを加算し、完了命令数Mを減算して、結果としてのカウント値を比較回路22に与える。比較回路22はこのCSE使用個数カウンタ21のカウント値が0である時に、CSE_EMPTY信号をHとして図4の命令フェッチ制御ユニット10に与える。
図6は命令フェッチ制御ユニット10の内部に備えられるスレッド切替要求生成回路の動作説明図である。スレッド切替要求生成回路24は、実質的に1つのANDゲート25によって構成され、キャッシュ制御ユニット11から次に返すべき命令がキャッシュミスしていることを示すIF_TOQ_MISS_DETECTED信号がHとして、また比較回路22からCSE使用個数カウンタ21の値が0であることを示すCSE_EMPTY信号がHとして与えられ、2つの信号の入力時点でスレッド切替要求を示すTHREAD_SWITCH_REQUESTをHとして、例えば各種レジスタやプログラムカウンタなどに出力する。
図7は図6のスレッド切替要求生成回路におけるスレッド切替要求信号出力までのタイムチャートである。図2においてキャッシュ制御ユニット11からのIF_TOQ_MISS_DETECTED信号はキャッシュミスの判定時点からHとなるが、その後比較回路22からCSEの全てが空であることを示すCSE_EMPTY信号がHとして出力された時点で、切替要求を示すTHREAD_SWITCH_REQUEST信号がHとなる。なお、以上の説明では最大4個のデコード対象命令のうち先頭の命令に対応してキャッシュミスが起こった場合を例として第1の実施形態を説明したが、第1の実施形態はCSE使用個数カウンタのカウント値が0となった時点でスレッド切替を行うものであり、キャッシュミスを起こした命令が先頭に限定されないことは当然である。
本発明の第2の実施形態について図8〜図13を用いて説明する。この第2の実施形態では、フェッチされる命令が分岐命令であり、SPARC(登録商標)アーキテクチャのように、その分岐命令の直後にその分岐命令に対応するディレイスロット命令(遅延命令)が存在し、そのディレイスロット命令に対するキャッシュミスが起こった場合にスレッド切替要求が行われるものである。
この第2の実施形態においては、図2の命令完了管理ユニット15とともに、分岐リザベーションステーション16がスレッド切替制御において重要な役割を果たすため、図8を用いて分岐リザベーションステーション16の動作について説明する。分岐リザベーションステーション16には、分岐命令のそれぞれに対応するデータが格納されるエントリとしてRSBR(リザベーション・ステーション・フォー・ブランチ)0から複数個、図8ではRSBR4までのエントリが各分岐命令のデコードの時点で作成される。新しいエントリはどんどん下に作られ、分岐命令の実行が完了して対応するエントリ内容が消去されると、エントリの内容は順次上(先頭方向)に移動される。分岐命令の実行完了に伴うエントリの消去はインオーダで行われ、従って先頭エントリには常に最も古く、実行が未完了である分岐命令に関するデータが格納されている。各エントリに格納されているデータが有効であるかどうかはVALID信号によって外部に出力される。このような分岐リザベーションステーションの動作の詳細については出願人の次の先願に開示されている。
特開2000−181710号公報「分岐命令実行制御装置」
分岐命令に対応してその直後にディレイスロット命令が存在する場合、その命令はデコーダ14によってデコードされることなく、ディレイスロット命令を格納するディレイスロットスタック(DSS)にセットされる。DSSに命令がセットされた時には、そのエントリが有効であることを示すVALID信号がHとして外部に出力される。
分岐命令が完了したときには、命令完了管理ユニット15に対して対応するエントリの処理が終了したことを示すCOMPLETED信号がHとして出力される。同時にいくつまで分岐命令の実行完了を報告できるかは実装形式に依存するが、前述のようにこの報告の時点で対応するエントリの内容は消去され、各エントリの内容は上に移動される。
命令バッファ13からデコーダ14に対しては、同時に最大4個の命令が与えられるが、その4個の命令はそれぞれ4つのインストラクション・ワード・レジスタ IWR0からIWR3に与えられる。命令が与えられる場合には、その命令のデータとそのデータが有効であることを示すバリッド信号とがセットとして与えられる。
図8においてはデコードの結果、IWR0の命令が分岐命令であり、Dリリースのサイクルでその分岐命令に対応するデータがRSBRにセットされ、その直後の後続命令、すなわちIWR1に格納されたディレイスロット命令はデコードされることなく、DSSにセットされることが示されている。分岐命令の完了を命令完了管理ユニット15に報告するためには、その分岐命令のデータが格納されているエントリに対応するDSSのエントリに命令データが格納されていることが必要である。分岐の予測が失敗した場合には、ディレイスロット命令は、その命令が格納されたDSSから再びインストラクション・ワード・レジスタに供給され、デコーダによってデコードされて、ディレイスロット命令の実行が行われる。
図9は、分岐リザベーションステーションにおけるエントリ移動の説明図である。同図において完了待ちの分岐命令、すなわち先頭エントリとしてのRSBR0に対応する分岐命令Bが完了すると、その次のRSBR1に格納されている分岐命令Aに対するデータが上のエントリRSBR0に移動される。RSBR0のエントリに対応する分岐命令Bの予測が間違っている場合には、RSBR1以降のエントリは全て消去される。なおディレイスロットスタックの先頭エントリDSS0には分岐命令Bに対応する、すなわちその直後のディレイスロット命令が格納されている。
図10は、分岐命令Aの直後のディレイスロット命令に対してキャッシュミスが発生した場合の、RSBRエントリとDSSエントリの格納内容の説明図である。ディレイスロット命令に対するキャッシュミスヒットが発生した場合、RSBR0に対応するDSS0のエントリには、ディレイスロット命令が格納されることなく、図2においてキャッシュ制御ユニット11からメモリ23に対するメモリリード要求がなされることになる。そこで図10において分岐命令Aを完了させようとしても、DSS0のエントリにディレイスロット命令が格納されていないため、分岐命令Aの処理を完了させることができず、RSBRの先頭エントリに対応するバリッド信号はHのままとなる。キャッシュミスによって命令フェッチが停滞しているため、他のエントリは当然空となっている。
図11は、第2の実施形態における命令完了管理ユニット内のデータ格納状態の説明図である。まず上の図において、エントリCSEm+3に対応する分岐命令の直後のディレイスロット命令に対してキャッシュミスが発生した場合、このディレイスロット命令が格納されるべきCSEm+4のエントリは空のままとなる。
その後時間が経過し、下の図に示すようにCSEmからCSEm+2までの3つのエントリに格納されている命令に対応する完了条件が揃い、完了命令数がCSE使用個数カウンタ21に与えられるとともに3つのエントリの内容は消去されるが、分岐命令に対応するエントリCSEm+3の次のエントリCSEm+4にディレイスロット命令が格納されていないために分岐命令を完了させることができず、CSEm+3のエントリだけが空でない状態となる。この状態に対応して、比較回路22から命令フェッチ制御ユニット10に対してはCSE使用個数カウンタ21のカウント値が1であることを示すUSED_CSE_EQ_1信号がHとして与えられるとともに、分岐リザベーションステーション16からその先頭エントリが有効であることを示すRSBR0_VALID信号がHとして与えられる。
図12は第2の実施形態におけるスレッド切替要求生成回路の動作説明図である。同図において要求生成回路24は実質的に1つのANDゲート26によって構成される。ANDゲート26に対しては、図6におけると同様にキャッシュ制御ユニット11から次に返すべき命令がキャッシュミスであることを示す信号がHとして、また図11で説明したように分岐リザベーションステーション16からは先頭のエントリが有効であることを示す信号がHとして、比較回路22からはCSE使用個数カウンタ21の値が1であることを示す信号がHとしてそれぞれ入力され、スレッド切替要求を示す信号が出力される。前述の第1の実施形態と組み合わせた動作を実現するために、図6のANDゲート25と図12のANDゲート26の出力をそれぞれORゲートに入力させ、そのORゲートの出力をスレッド切替要求信号とすることもできる。
図13は図12のスレッド切替要求生成回路における切替信号出力までのタイムチャートである。同図において分岐命令に対応するエントリが作られ、RSBR0_VALID信号がHとなった後に、その直後のディレイスロット命令に対するキャッシュミスが発生したことを示す信号がHとなり、さらにその後CSE使用個数カウンタの値が1であることを示す信号がHとなった時点で、スレッド切替要求信号がHとなる。
このように第2の実施形態では第1の実施形態と異なり、キャッシュミスを起こした命令より前のすべての命令の実行が完了し、CSE使用個数カウンタ21の値が0となったことを条件とすることはできず、そのカウント値が1であり、かつ分岐リザベーションステーション16の先頭エントリが有効であるという条件が用いられる。
次に本発明の第3の実施形態について説明する。この第3の実施形態では、第2の実施形態における同様に、分岐命令の直後に存在するディレイスロット命令のフェッチ要求に対してキャッシュミスが発生して、スレッド切替の契機となるが、キャッシュミス後にディレイスロット命令のデータがメモリからリードされ、その命令が命令バッファからインストラクション・ワード・レジスタを介してデコーダに与えられる時には、例えば図8において4つの命令の内で、先頭の命令が与えられるインストラクション・ワード・レジスタ IWR0を介して命令が供給されるために、分岐命令が1つだけ実行未完了で残り、後続命令としてのディレイスロット命令がIWR0に供給されていないことが検出された場合にスレッド切替要求が出されることになる。
図14は、4つのインストラクション・ワード・レジスタの内で最後の順位のIWR3を介して分岐命令がデコーダから分岐リザベーションステーション16に与えられる場合の、命令バッファ13からデコーダ14への命令データ供給の説明図である。同図において先頭から3番目の順位までの命令が全て分岐命令以外の命令であるとすると、それらの命令は図2でその他のリザベーションステーション17に与えられ、IWR3を介して供給される最後の順位の分岐命令は分岐リザベーションステーション16に与えられる。ディレイスロット命令は分岐命令の直後の命令であるために、その供給は図14には示されておらず、次のサイクルで命令バッファ13からIWR0を介してデコーダ14に供給されるはずとなっている。
図15は、図14における命令バッファ13から4つのインストラクション・ワード・レジスタを介した命令データ供給のタイムチャートである。同図においてEは分岐命令のインストラクション・ワード・レジスタへの命令投入のサイクルを示し、Eはディレイスロット命令のIWRへの投入サイクルを示す、またEx_VALIDは命令バッファ内にIWRに投入すべき命令が存在することを、またDx_VALIDはIWRxに命令データがセットされ、デコーダにその命令を供給することが可能であることを示す信号であり、Dx_RELEASEはデコーダから各リザベーションステーションに命令に関するデータの投入が行われたことを示す信号である。
図15においては、ディレイスロット命令のフェッチ要求に対してはキャッシュにヒットし、EサイクルでIWR0に投入されたディレイスロット命令は次のサイクルでデコーダ14に与えられ、さらに次のサイクルにディレイスロットスタック内でその直前の分岐命令、すなわちIWR3から供給された分岐命令に関するデータが格納された分岐リザベーションステーション16のn番目のエントリRSBRnに対応する位置DSSnに格納されている。
すなわちここでは、図14で説明したように分岐命令がIWR3を介してレコーダに供給された次のサイクルで、ディレイスロット命令に対するフェッチ要求がキャッシュにヒットし、正常な動作が行われた場合を説明しているが、ディレイスロット命令のフェッチに対してキャッシュミスが起こった場合には、当然ディレイスロット命令の供給は行われず、メモリ23に対するリード動作が行われることになる。
図16は図14、図15と異なり、ディレイスロット命令のフェッチ要求に対してキャッシュミスが発生し、スレッド切替が行われるべき状態となる場合の命令バッファからの命令データ供給動作の説明図である。
図16においては、分岐命令がIWR2からデコーダを介して分岐リザベーションステーション16に供給されるが、その直後の命令であるディレイスロット命令、すなわちIRW3を介してデコーダに供給されるべき命令がそのフェッチ時にキャッシュミスとなり、図2においてメモリ23からそのディレイスロット命令のデータが供給されるまでの期間がスレッド切替要求の対象期間となる。前述のようにメモリ23からディレイスロット命令のデータが命令バッファ13に供給されると、その命令データはIWR0を介してデコーダに供給される。図16では分岐命令はIRW2を介してデコーダに供給されているが、分岐命令を供給するインストラクション・ワード・レジスタはIWR2には限定されず、図14で説明したようにIWR3を介しても、またIWR0、またはIWR1を介してデコーダに供給されても良い。いずれにしてもその直後のディレイスロット命令のフェッチ時にキャッシュミスが発生すると、メモリ23から読み出された命令データが供給されるべきIWR0に対応するE0_VALID信号、およびD0_VALID信号の値がLの期間が続くことになる。
図17は図16に対応する命令データ供給のタイムチャートである。同図を図15の正常動作の場合と比較すると、分岐命令がIWR2を介してデコーダに供給されることによる相違と、Eサイクルにおいてディレイスロット(DS)命令に対応するE0_VALID信号がオンとならず、その後の命令データの供給が停止され、従って一番下のDSSn_VALID信号がオンとならない点が基本的に異なっている。
図18は実施形態3におけるスレッド切替要求信号生成回路の動作説明図である。第3の実施形態では、分岐命令の直後のディレイスロット命令のフェッチ時にキャッシュミスが発生し、そのデータがメモリから読み出されて、例えば図16のインストラクション・ワード・レジスタ IWR0を介して供給されるまでの期間を対象としてスレッド切替要求が出されるために、ディレイスロット命令の直前にある分岐命令以外の分岐命令が完了していることは必要であるが、その分岐命令以外の命令が完了していることは必ずしも必要ではなく、例えば図12と比較するとCSE使用個数カウンタ21のカウント値が1であるという条件は必要でない。
図18においてスレッド切替要求信号を生成するANDゲート27に対しては、キャッシュ制御ユニット11からはディレイスロット命令のフェッチ要求に対するキャッシュミスが起こった時点で図12と同様の信号が与えられる。分岐リザベーションステーション16からは、その先頭エントリのデータが有効であることを示す信号と、先頭から2番目のエントリのデータが無効であることを示す信号、およびRSBR0に対応するディレイスロットスタックの位置のデータが無効であることを示す信号が入力される。これによって分岐リザベーションステーション16に格納されている分岐命令が1つだけであり、またそれに対応するディレイスロットスタックには、データが格納されていないことになる。
前述のようにディレイスロット命令のフェッチ時にキャッシュミスが発生すると、その命令データがメモリから読み出されるまでの期間は、命令バッファ13からIWR0に与えられるE0_VALID信号と、IWR0からデコーダに与えられるD0_VALID信号とはともにLとなっており、これらの条件もANDゲート27に入力されることによってスレッド切替要求信号が出力されることになる。
図19は図18のスレッド切替要求信号生成回路における動作のタイムチャートである。同図において簡単のため、E0_VALID信号とD0_VALID信号とはともに最初からLであるとし、またRSBR0_VALID信号も最初からHであるとする。
図19では最初から4番目のサイクルでディレイスロット命令に対するキャッシュミスが検出され、RSBR1_VALID信号はその前のサイクルからLであるとすると、キャッシュミスが検出されたサイクルからスレッド切替要求を示すTHREAD_SWITCH_REQUEST信号がHとなる。
すなわち第3の実施形態では、第1の実施形態のようにキャッシュミスを起こした命令より前のすべての命令の実行が完了していることを条件とするのではなく、キャッシュミスを起こしたディレイスロット命令に対応する分岐命令以外の(分岐命令でない)命令が実行完了していなくとも、それ以外の分岐命令が実行完了していれば図9で説明したエントリの消去は起こらず、命令の再フェッチが起こらないことを条件としたスレッド切替が行われる。
以上において本発明の実施形態について詳細に説明したが、例えば第1の実施形態において、命令フェッチ要求に対してキャッシュミスが発生した命令以前の全ての命令が完了した時点でスレッド切替要求信号を出力する場合、キャッシュミスが検出されてからそれ以前の命令がすべて実行完了したことが検出されるまでの時間が長くなれば、スレッド切替要求信号が出力されて実際にスレッドの切替が行われた直後に、メモリから読み出された命令データが供給可能となることも考えられる。このような場合にはスレッド切替による性能向上効果は期待しにくいため、スレッド切替を抑止した方が良いと考えられる。
図20は、そのようなスレッド切替抑止方式の説明図である。同図においてレジスタ35にキャッシュミスが検出されてからスレッド切替を抑止するまでの時間の上限値が設定され、その上限値はカウンタ36に与えられる。カウンタ36はキャッシュ制御ユニット11から与えられるキャッシュミス検出信号、すなわちIF_TOQ_MISS_DETECTED信号がHとなった時点で、例えばカウントダウンを開始し、カウント値が0となった時点でタイムアウト信号を切替要求抑止回路37に出力する。切替抑止回路37はタイムアウト信号の入力時点以後は、例えば図6で説明した切替要求生成回路24からの切替要求を抑止する動作を行う。またキャッシュ制御ユニット11からのキャッシュミス検出信号は、例えばメモリ23から実際の命令データが届いた時点でLになり、その時点以降も切替要求の抑止が行われる。切替要求の抑止が行われない間は、スレッド切替要求信号生成回路24の出力は切替要求抑止回路37を介してスレッド切替に関係するステートレジスタやプログラムカウンタなどに与えられる。
以上の説明では、フェッチが要求された命令に対するキャッシュミスの発生を契機としてスレッド切替が行われる方式、すなわちVMT方式を基本として本発明の実施形態を説明したが、本発明の方式はVMT方式に限定されず、SMT方式にも利用することができる。SMT方式では、複数スレッドの命令が同時にパイプラインを流れているために、キャッシュミスが起こった命令列(スレッドを示すタグがついている)が実行されていたスレッドについて、前述の第1の実施形態から第3の実施形態におけると同様にスレッド毎に条件判定を行い、スレッド切替条件が成立すればキャッシュミスが発生したスレッド、すなわちデータ待ち状態に入ったスレッド以外のスレッドの命令列を優先的にパイプラインに投入したり、演算処理を行わせたりすることによって性能向上を実現することができる。
また以上の説明ではキャッシュミスが発生した時、キャッシュに存在しない命令データをメモリからリードする場合について発明の実施形態を説明したが、キャッシュが複数階層を持つ場合には、次にCPUから遠い階層のキャッシュにアクセスし、データリードを行うことになるが、この場合次の階層へのアクセスに要する時間が十分に長く、その時間をスレッド切替に有効に使える場合には、スレッド切替を行うことによって性能向上を図ることができる。複数階層を持つキャッシュシステムにおいて、例えば途中の階層においてキャッシュミスが発生した場合には、図2における命令フェッチ制御ユニット10に対してのミスヒット報告は、キャッシュミスが発生した階層から直接に行われてもよく、各階層を経由して最もCPUに近い階層のキャッシュから行われても良い。
さらに以上においては、命令キャッシュのミスによるメモリアクセス、および複数階層キャッシュ内のある階層におけるキャッシュミスによる次階層キャッシュへのアクセスを契機とするスレッド切替について説明したが、スレッド切替の契機はこれに限定されることはなく、他の条件、例えばオペランドキャッシュのミスや、複数の条件の組合せを契機としてスレッド切替の制御を行うことも当然可能である。
(付記1) マルチスレッド方式を用いる情報処理装置において、
命令フェッチ時にフェッチすべき命令がキャッシュに格納されていないキャッシュミスの発生後にスレッド切替要求信号を出力するスレッド切替要求手段を備えることを特徴とするスレッド切替制御装置。
(付記2) 前記情報処理装置が、すでにデコードされた命令に1対1に対応して該命令の実行に関係するデータが格納されるエントリが作成されて、該命令の実行完了時に該エントリが消去される命令完了管理ユニットをさらに備え、
前記スレッド切替制御装置が、該作成されたエントリの内で消去されていないエントリの数に対応して実行が未完了である命令の数を前記スレッド切替要求手段に報告する未完了命令数報告手段をさらに備えるとともに、
該スレッド切替要求手段が、前記キャッシュミスの発生後に該未完了命令数が0であることを示す報告を受けた時にスレッド切替要求信号を出力することを特徴とする付記1記載のスレッド切替制御装置。
(付記3) 前記情報処理装置が、すでにデコードされた命令に1対1に対応して該命令の実行に関係するデータが格納されるエントリが作成されて、該命令の実行完了時に該エントリが消去される命令完了管理ユニットと、分岐命令のデコード時に分岐命令のデコード順に、該分岐命令の実行に関するデータが格納されるエントリが先頭から順次作成され、該分岐命令の実行完了時に該エントリが消去されるとともに、未完了の分岐命令に対応するエントリの格納内容が先頭方向に順次移動される分岐リザベーションステーションとをさらに備え、
前記スレッド切替制御装置が、前記命令完了管理ユニットに作成されたエントリの内で消去されていないエントリの数に対応して実行が未完了である命令の数を前記スレッド切替要求手段に報告する未完了命令数報告手段をさらに備えるとともに、
前記スレッド切替要求手段が、前記キャッシュミスの発生後に該未完了命令数報告手段から未完了命令数が1であることを示す報告を受け、かつ前記分岐リザベーションステーションから先頭エントリに有効データが格納されていることを示す信号を受け取った時にスレッド切替要求信号を出力することを特徴とする付記1記載のスレッド切替制御装置。
(付記4) 前記情報処理装置が、すでにデコードされた命令に1対1に対応して該命令の実行に関係するデータが格納されるエントリが作成されて、該命令の実行完了時に該エントリが消去される命令完了管理ユニットと、分岐命令のデコード時に分岐命令のデコード順に、該分岐命令の実行に関するデータが格納されるエントリが先頭から順次作成され、該分岐命令の実行完了時に該エントリが消去されるとともに、未完了の分岐命令に対応するエントリの格納内容が先頭方向に順次移動される分岐リザベーションステーションであって、前記分岐命令に対応する遅延命令が該分岐命令の直後に存在する時、該遅延命令を該分岐命令の実行に関するデータが格納されたエントリに対応して格納するディレイスロットスタックを有する分岐リザベーションステーションと、フェッチされた1つ以上の命令を一時的に格納する命令バッファから同時に複数の命令が供給される時に該複数の命令を1つずつ格納し、格納データが有効であることを示すバリッド信号を出力する複数のインストラクション・ワード・レジスタとをさらに備え、
前記スレッド切替要求手段が、前記キャッシュミスの発生後に前記分岐リザベーションステーションから前記エントリの内で先頭エントリのデータが有効であり、先頭から2番目のエントリのデータが無効であり、かつ該先頭エントリに対応するディレイスロットスタックのデータが無効であることを示す信号を受け、前記複数のインストラクション・ワード・レジスタの内で実行順序が最も早い命令が格納されるべきインストラクション・ワード・レジスタから出力すべきデータが無効であることを示す信号を受け、さらに命令バッファから該インストラクション・ワード・レジスタに供給すべきデータが無効であることを示す信号を受け取った時にスレッド切替要求信号を出力することを特徴とする付記1記載のスレッド切替制御装置。
(付記5) 前記キャッシュミスの発生時に起動され、あらかじめ定められた時間内に前記スレッド切替要求手段が前記スレッド切替要求信号を出力しない時、その後の該スレッド切替要求信号の出力を停止させるスレッド切替要求抑止手段をさらに備えることを特徴とする付記1記載のスレッド切替制御装置。
(付記6) マルチスレッド方式を用いる情報処理装置において、
命令フェッチ時にフェッチすべき命令がキャッシュに格納されていないキャッシュミスの発生後にスレッドの実行優先順位変更要求信号を出力するスレッド優先順位変更要求手段を備えることを特徴とするスレッド切替制御装置。
(付記7) 前記情報処理装置が、すでにデコードされた命令に1対1に対応して該命令の実行に関係するデータが格納されるエントリが作成されて、該命令の実行完了時に該エントリが消去される命令完了管理ユニットをさらに備え、
前記スレッド切替制御装置が、該作成されたエントリの内で消去されていないエントリの数に対応して実行が未完了である命令の数を前記スレッド優先順位変更要求手段に報告する未完了命令数報告手段をさらに備えるとともに、
該スレッド優先順位変更要求手段が、前記キャッシュミスの発生後に該キャッシュミスの発生したスレッドに対応して該未完了命令数が0であることを示す報告を受けた時にスレッド優先順位変更要求信号を出力することを特徴とする付記6記載のスレッド切替制御装置。
(付記8) 前記情報処理装置が、すでにデコードされた命令に1対1に対応して該命令の実行に関係するデータが格納されるエントリが作成されて、該命令の実行完了時に該エントリが消去される命令完了管理ユニットと、分岐命令のデコード時に分岐命令のデコード順に、該分岐命令の実行に関するデータが格納されるエントリが先頭から順次作成され、該分岐命令の実行完了時に該エントリが消去されるとともに、未完了の分岐命令に対応するエントリの格納内容が先頭方向に順次移動される分岐リザベーションステーションとをさらに備え、
前記スレッド切替制御装置が、前記命令完了管理ユニットに作成されたエントリの内で消去されていないエントリの数に対応して実行が未完了である命令の数を前記スレッド優先順位変更要求手段に報告する未完了命令数報告手段をさらに備えるとともに、
該スレッド優先順位変更要求手段が、前記キャッシュミスの発生後に該キャッシュミスの発生したスレッドに対応して該未完了命令数報告手段から未完了命令数が1であることを示す報告を受け、かつ前記分岐リザベーションステーションから先頭エントリに有効データが格納されていることを示す信号を受け取った時にスレッド優先順位変更要求信号を出力することを特徴とする付記6記載のスレッド切替制御装置。
(付記9) 前記情報処理装置が、すでにデコードされた命令に1対1に対応して該命令の実行に関係するデータが格納されるエントリが作成されて、該命令の実行完了時に該エントリが消去される命令完了管理ユニットと、分岐命令のデコード時に分岐命令のデコード順に、該分岐命令の実行に関するデータが格納されるエントリが先頭から順次作成され、該分岐命令の実行完了時に該エントリが消去されるとともに、未完了の分岐命令に対応するエントリの格納内容が先頭方向に順次移動される分岐リザベーションステーションであって、前記分岐命令に対応する遅延命令が該分岐命令の直後に存在する時、該遅延命令を該分岐命令の実行に関するデータが格納されたエントリに対応して格納するディレイスロットスタックを有する分岐リザベーションステーションと、フェッチされた1つ以上の命令を一時的に格納する命令バッファから同時に複数の命令が供給される時に該複数の命令を1つずつ格納し、格納データが有効であることを示すバリッド信号を出力する複数のインストラクション・ワード・レジスタとをさらに備え、
前記スレッド優先順位変更要求手段が、前記キャッシュミスの発生後に該キャッシュミスの発生したスレッドに対応して前記分岐リザベーションステーションから前記エントリの内で先頭エントリのデータが有効であり、先頭から2番目のエントリのデータが無効であり、かつ該先頭エントリに対応するディレイスロットスタックのデータが無効であることを示す信号を受け、前記複数のインストラクション・ワード・レジスタの内で実行順序が最も早い命令が格納されるべきインストラクション・ワード・レジスタから出力すべきデータが無効であることを示す信号を受け、さらに命令バッファから該インストラクション・ワード・レジスタに供給すべきデータが無効であることを示す信号を受け取った時にスレッド優先順位変更要求信号を出力することを特徴とする付記6記載のスレッド切替制御装置。
(付記10) 前記キャッシュミスの発生時に起動され、あらかじめ定められた時間内に前記スレッド優先順位変更要求手段が前記スレッド優先順位変更要求信号を出力しない時、その後の該スレッド優先順位変更要求信号の出力を停止させるスレッド優先順位変更要求抑止手段をさらに備えることを特徴とする付記6記載のスレッド切替制御装置。
(付記11) マルチスレッド方式を用いる情報処理装置におけるスレッド切替方法であって、
命令フェッチ時にフェッチすべき命令がキャッシュに格納されていないキャッシュミスの発生後にスレッド切替要求信号を出力することを特徴とするスレッド切替方法。
(付記12) マルチスレッド方式を用いる情報処理装置におけるスレッド優先順位変更方法であって、
命令フェッチ時にフェッチすべき命令がキャッシュに格納されていないキャッシュミスの発生後にスレッド優先順位変更要求信号を出力することを特徴とするスレッド優先順位変更方法。
本発明のスレッド切替制御方式を用いる情報処理装置の原理構成ブロック図である。 本実施形態における情報処理装置の基本的な構成を示すブロック図である。 図2における命令完了管理ユニットの動作の説明図である。 第1の実施形態におけるスレッド切替条件検出方式の説明図である。 コミット・スタック・エントリの空状態検出方式の説明図である。 第1の実施形態におけるスレッド切替要求信号生成回路の動作の説明図である。 図6におけるスレッド切替要求信号生成のタイムチャートである。 分岐リザベーションステーションの動作の概要を説明する図である。 分岐リザベーションステーションにおけるエントリの移動を説明する図である。 分岐命令に対応するディレイスロット命令に対してキャッシュミスが検出された場合のディレイスロットスタックのデータ格納状態を説明する図である。 第2の実施形態におけるスレッド切替条件検出方式の説明図である。 第2の実施形態におけるスレッド切替要求信号生成回路の動作の説明図である。 図12におけるスレッド切替要求信号生成のタイムチャートである。 命令バッファからインストラクション・ワード・レジスタを介した分岐命令の供給動作の説明図である。 図14における命令データ供給のタイムチャートである。 第3の実施形態における命令バッファからインストラクション・ワード・レジスタを介した命令データ供給動作の説明図である。 図16における命令データ供給のタイムチャートである。 第3の実施形態におけるスレッド切替要求信号生成回路の動作の説明図である。 図18におけるスレッド切替要求信号生成のタイムチャートである。 スレッド切替抑止方式の説明図である。 マルチスレッド方式の従来例の動作説明図である。
符号の説明
1 情報処理装置
2 スレッド切替制御装置
3 命令完了管理ユニット
4 スレッド切替要求手段
5 未完了命令数報告手段
10 命令フェッチ制御ユニット
11 キャッシュ制御ユニット
12 命令キャッシュ
13 命令バッファ
14 デコーダ
15 命令完了管理ユニット
16 分岐リザベーションステーション
17 その他のリザベーションステーション
18 演算ユニット
19 キャッシュ制御ユニット
20 オペランドキャッシュ
21 CSE使用個数カウンタ
22 比較回路
23 メモリ
24 切替要求信号生成回路
25、26、27 ANDゲート
30 インストラクション・ワード・レジスタ(IWR0)
35 レジスタ
36 カウンタ
37 切替要求抑止回路

Claims (10)

  1. マルチスレッド方式を用いる情報処理装置において、
    命令フェッチ時にフェッチすべき命令がキャッシュに格納されていないキャッシュミスの発生後にスレッド切替要求信号を出力するスレッド切替要求手段を備えることを特徴とするスレッド切替制御装置。
  2. 前記情報処理装置が、すでにデコードされた命令に1対1に対応して該命令の実行に関係するデータが格納されるエントリが作成されて、該命令の実行完了時に該エントリが消去される命令完了管理ユニットをさらに備え、
    前記スレッド切替制御装置が、該作成されたエントリの内で消去されていないエントリの数に対応して実行が未完了である命令の数を前記スレッド切替要求手段に報告する未完了命令数報告手段をさらに備えるとともに、
    該スレッド切替要求手段が、前記キャッシュミスの発生後に該未完了命令数が0であることを示す報告を受けた時にスレッド切替要求信号を出力することを特徴とする請求項1記載のスレッド切替制御装置。
  3. 前記情報処理装置が、すでにデコードされた命令に1対1に対応して該命令の実行に関係するデータが格納されるエントリが作成されて、該命令の実行完了時に該エントリが消去される命令完了管理ユニットと、分岐命令のデコード時に分岐命令のデコード順に、該分岐命令の実行に関するデータが格納されるエントリが先頭から順次作成され、該分岐命令の実行完了時に該エントリが消去されるとともに、未完了の分岐命令に対応するエントリの格納内容が先頭方向に順次移動される分岐リザベーションステーションとをさらに備え、
    前記スレッド切替制御装置が、前記命令完了管理ユニットに作成されたエントリの内で消去されていないエントリの数に対応して実行が未完了である命令の数を前記スレッド切替要求手段に報告する未完了命令数報告手段をさらに備えるとともに、
    前記スレッド切替要求手段が、前記キャッシュミスの発生後に該未完了命令数報告手段から未完了命令数が1であることを示す報告を受け、かつ前記分岐リザベーションステーションから先頭エントリに有効データが格納されていることを示す信号を受け取った時にスレッド切替要求信号を出力することを特徴とする請求項1記載のスレッド切替制御装置。
  4. 前記情報処理装置が、すでにデコードされた命令に1対1に対応して該命令の実行に関係するデータが格納されるエントリが作成されて、該命令の実行完了時に該エントリが消去される命令完了管理ユニットと、分岐命令のデコード時に分岐命令のデコード順に、該分岐命令の実行に関するデータが格納されるエントリが先頭から順次作成され、該分岐命令の実行完了時に該エントリが消去されるとともに、未完了の分岐命令に対応するエントリの格納内容が先頭方向に順次移動される分岐リザベーションステーションであって、前記分岐命令に対応する遅延命令が該分岐命令の直後に存在する時、該遅延命令を該分岐命令の実行に関するデータが格納されたエントリに対応して格納するディレイスロットスタックを有する分岐リザベーションステーションと、フェッチされた1つ以上の命令を一時的に格納する命令バッファから同時に複数の命令が供給される時に該複数の命令を1つずつ格納し、格納データが有効であることを示すバリッド信号を出力する複数のインストラクション・ワード・レジスタとをさらに備え、
    前記スレッド切替要求手段が、前記キャッシュミスの発生後に前記分岐リザベーションステーションから前記エントリの内で先頭エントリのデータが有効であり、先頭から2番目のエントリのデータが無効であり、かつ該先頭エントリに対応するディレイスロットスタックのデータが無効であることを示す信号を受け、前記複数のインストラクション・ワード・レジスタの内で実行順序が最も早い命令が格納されるべきインストラクション・ワード・レジスタから出力すべきデータが無効であることを示す信号を受け、さらに命令バッファから該インストラクション・ワード・レジスタに供給すべきデータが無効であることを示す信号を受け取った時にスレッド切替要求信号を出力することを特徴とする請求項1記載のスレッド切替制御装置。
  5. 前記キャッシュミスの発生時に起動され、あらかじめ定められた時間内に前記スレッド切替要求手段が前記スレッド切替要求信号を出力しない時、その後の該スレッド切替要求信号の出力を停止させるスレッド切替要求抑止手段をさらに備えることを特徴とする請求項1記載のスレッド切替制御装置。
  6. マルチスレッド方式を用いる情報処理装置において、
    命令フェッチ時にフェッチすべき命令がキャッシュに格納されていないキャッシュミスの発生後にスレッドの実行優先順位変更要求信号を出力するスレッド優先順位変更要求手段を備えることを特徴とするスレッド切替制御装置。
  7. 前記情報処理装置が、すでにデコードされた命令に1対1に対応して該命令の実行に関係するデータが格納されるエントリが作成されて、該命令の実行完了時に該エントリが消去される命令完了管理ユニットをさらに備え、
    前記スレッド切替制御装置が、該作成されたエントリの内で消去されていないエントリの数に対応して実行が未完了である命令の数を前記スレッド優先順位変更要求手段に報告する未完了命令数報告手段をさらに備えるとともに、
    該スレッド優先順位変更要求手段が、前記キャッシュミスの発生後に該キャッシュミスの発生したスレッドに対応して該未完了命令数が0であることを示す報告を受けた時にスレッド優先順位変更要求信号を出力することを特徴とする請求項6記載のスレッド切替制御装置。
  8. 前記情報処理装置が、すでにデコードされた命令に1対1に対応して該命令の実行に関係するデータが格納されるエントリが作成されて、該命令の実行完了時に該エントリが消去される命令完了管理ユニットと、分岐命令のデコード時に分岐命令のデコード順に、該分岐命令の実行に関するデータが格納されるエントリが先頭から順次作成され、該分岐命令の実行完了時に該エントリが消去されるとともに、未完了の分岐命令に対応するエントリの格納内容が先頭方向に順次移動される分岐リザベーションステーションとをさらに備え、
    前記スレッド切替制御装置が、前記命令完了管理ユニットに作成されたエントリの内で消去されていないエントリの数に対応して実行が未完了である命令の数を前記スレッド優先順位変更要求手段に報告する未完了命令数報告手段をさらに備えるとともに、
    該スレッド優先順位変更要求手段が、前記キャッシュミスの発生後に該キャッシュミスの発生したスレッドに対応して該未完了命令数報告手段から未完了命令数が1であることを示す報告を受け、かつ前記分岐リザベーションステーションから先頭エントリに有効データが格納されていることを示す信号を受け取った時にスレッド優先順位変更要求信号を出力することを特徴とする請求項6記載のスレッド切替制御装置。
  9. 前記情報処理装置が、すでにデコードされた命令に1対1に対応して該命令の実行に関係するデータが格納されるエントリが作成されて、該命令の実行完了時に該エントリが消去される命令完了管理ユニットと、分岐命令のデコード時に分岐命令のデコード順に、該分岐命令の実行に関するデータが格納されるエントリが先頭から順次作成され、該分岐命令の実行完了時に該エントリが消去されるとともに、未完了の分岐命令に対応するエントリの格納内容が先頭方向に順次移動される分岐リザベーションステーションであって、前記分岐命令に対応する遅延命令が該分岐命令の直後に存在する時、該遅延命令を該分岐命令の実行に関するデータが格納されたエントリに対応して格納するディレイスロットスタックを有する分岐リザベーションステーションと、フェッチされた1つ以上の命令を一時的に格納する命令バッファから同時に複数の命令が供給される時に該複数の命令を1つずつ格納し、格納データが有効であることを示すバリッド信号を出力する複数のインストラクション・ワード・レジスタとをさらに備え、
    前記スレッド優先順位変更要求手段が、前記キャッシュミスの発生後に該キャッシュミスの発生したスレッドに対応して前記分岐リザベーションステーションから前記エントリの内で先頭エントリのデータが有効であり、先頭から2番目のエントリのデータが無効であり、かつ該先頭エントリに対応するディレイスロットスタックのデータが無効であることを示す信号を受け、前記複数のインストラクション・ワード・レジスタの内で実行順序が最も早い命令が格納されるべきインストラクション・ワード・レジスタから出力すべきデータが無効であることを示す信号を受け、さらに命令バッファから該インストラクション・ワード・レジスタに供給すべきデータが無効であることを示す信号を受け取った時にスレッド優先順位変更要求信号を出力することを特徴とする請求項6記載のスレッド切替制御装置。
  10. 前記キャッシュミスの発生時に起動され、あらかじめ定められた時間内に前記スレッド優先順位変更要求手段が前記スレッド優先順位変更要求信号を出力しない時、その後の該スレッド優先順位変更要求信号の出力を停止させるスレッド優先順位変更要求抑止手段をさらに備えることを特徴とする請求項6記載のスレッド切替制御装置。
JP2004125763A 2004-04-21 2004-04-21 演算処理装置及び演算処理装置の制御方法 Expired - Fee Related JP4327008B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004125763A JP4327008B2 (ja) 2004-04-21 2004-04-21 演算処理装置及び演算処理装置の制御方法
US10/967,235 US8108859B2 (en) 2004-04-21 2004-10-19 Processor for controlling tread switching

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004125763A JP4327008B2 (ja) 2004-04-21 2004-04-21 演算処理装置及び演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2005309762A true JP2005309762A (ja) 2005-11-04
JP4327008B2 JP4327008B2 (ja) 2009-09-09

Family

ID=35137825

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004125763A Expired - Fee Related JP4327008B2 (ja) 2004-04-21 2004-04-21 演算処理装置及び演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US8108859B2 (ja)
JP (1) JP4327008B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008155794A1 (ja) 2007-06-19 2008-12-24 Fujitsu Limited 情報処理装置
US8291195B2 (en) 2007-06-20 2012-10-16 Fujitsu Limited Processing device
CN114721726A (zh) * 2022-06-10 2022-07-08 成都登临科技有限公司 一种多线程组并行获取指令的方法、处理器及电子设备

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7631308B2 (en) * 2005-02-11 2009-12-08 International Business Machines Corporation Thread priority method for ensuring processing fairness in simultaneous multi-threading microprocessors
JP4770664B2 (ja) * 2006-09-20 2011-09-14 株式会社デンソー マイクロプロセッサおよびそれを用いたマイクロコンピュータ
EP2159692A4 (en) * 2007-06-20 2010-09-15 Fujitsu Ltd Information processor and load cancellation control method
KR101100145B1 (ko) * 2007-06-20 2011-12-29 후지쯔 가부시끼가이샤 명령실행 제어장치 및 명령실행 제어방법
EP2159685B1 (en) * 2007-06-20 2013-08-21 Fujitsu Limited Processor
US8397236B2 (en) * 2007-08-24 2013-03-12 Virtualmetrix, Inc. Credit based performance managment of computer systems
US8205203B2 (en) * 2008-10-16 2012-06-19 International Business Machines Corporation Scheduling for real-time garbage collection
US8782653B2 (en) * 2010-03-26 2014-07-15 Virtualmetrix, Inc. Fine grain performance resource management of computer systems
US8677071B2 (en) * 2010-03-26 2014-03-18 Virtualmetrix, Inc. Control of processor cache memory occupancy
US9870340B2 (en) * 2015-03-30 2018-01-16 International Business Machines Corporation Multithreading in vector processors
US10180839B2 (en) * 2016-03-04 2019-01-15 Silicon Laboratories Inc. Apparatus for information processing with loop cache and associated methods
JP6390748B1 (ja) * 2017-04-19 2018-09-19 富士通株式会社 情報処理装置、情報処理方法および情報処理プログラム
US10754782B1 (en) * 2019-03-30 2020-08-25 Intel Corporation Apparatuses, methods, and systems to accelerate store processing

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2234613B (en) * 1989-08-03 1993-07-07 Sun Microsystems Inc Method and apparatus for switching context of state elements in a microprocessor
US5974522A (en) * 1990-01-24 1999-10-26 Cornell Research Foundation, Inc. Machine for processing interrupted out-of-order instructions
FR2750510B1 (fr) * 1996-06-28 1998-09-25 Aaton Sa Camera pour film cinematographique et dispositif de reception de bobines de film
JPH1196005A (ja) 1997-09-19 1999-04-09 Nec Corp 並列処理装置
US6212544B1 (en) 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6567839B1 (en) * 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6697935B1 (en) 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US6148394A (en) * 1998-02-10 2000-11-14 International Business Machines Corporation Apparatus and method for tracking out of order load instructions to avoid data coherency violations in a processor
JP3469469B2 (ja) * 1998-07-07 2003-11-25 富士通株式会社 情報処理装置
JP3522135B2 (ja) * 1998-12-10 2004-04-26 富士通株式会社 複数のウェイを持つブランチヒストリを備える情報処理装置
JP3565314B2 (ja) * 1998-12-17 2004-09-15 富士通株式会社 分岐命令実行制御装置
JP3739607B2 (ja) * 1999-08-24 2006-01-25 富士通株式会社 情報処理装置
US6694425B1 (en) * 2000-05-04 2004-02-17 International Business Machines Corporation Selective flush of shared and other pipeline stages in a multithread processor
JP3948615B2 (ja) * 2002-07-05 2007-07-25 富士通株式会社 プロセッサ及び命令制御方法
US7607133B2 (en) * 2004-02-11 2009-10-20 Arm Limited Interrupt processing control

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008155794A1 (ja) 2007-06-19 2008-12-24 Fujitsu Limited 情報処理装置
US8151097B2 (en) 2007-06-19 2012-04-03 Fujitsu Limited Multi-threaded system with branch
JP5104861B2 (ja) * 2007-06-19 2012-12-19 富士通株式会社 演算処理装置
US8291195B2 (en) 2007-06-20 2012-10-16 Fujitsu Limited Processing device
JP5177141B2 (ja) * 2007-06-20 2013-04-03 富士通株式会社 演算処理装置、演算処理方法
CN114721726A (zh) * 2022-06-10 2022-07-08 成都登临科技有限公司 一种多线程组并行获取指令的方法、处理器及电子设备
CN114721726B (zh) * 2022-06-10 2022-08-12 成都登临科技有限公司 一种多线程组并行获取指令的方法、处理器及电子设备

Also Published As

Publication number Publication date
US20050240752A1 (en) 2005-10-27
JP4327008B2 (ja) 2009-09-09
US8108859B2 (en) 2012-01-31

Similar Documents

Publication Publication Date Title
JP4327008B2 (ja) 演算処理装置及び演算処理装置の制御方法
US7487340B2 (en) Local and global branch prediction information storage
US6907520B2 (en) Threshold-based load address prediction and new thread identification in a multithreaded microprocessor
US7734897B2 (en) Allocation of memory access operations to memory access capable pipelines in a superscalar data processing apparatus and method having a plurality of execution threads
US20070288733A1 (en) Early Conditional Branch Resolution
JPWO2008029450A1 (ja) 分岐予測ミスリカバリ機構を有する情報処理装置
US20070143580A1 (en) Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors
JP2010501963A (ja) 明示的サブルーチンコールの分岐予測動作をエミュレートするための方法および装置
US20050216703A1 (en) Apparatus and method for decreasing the latency between an instruction cache and a pipeline processor
US8301871B2 (en) Predicated issue for conditional branch instructions
KR20100111700A (ko) 로킹된 오퍼레이션을 수행하기 위한 방법 및 시스템
US20070288732A1 (en) Hybrid Branch Prediction Scheme
JP5104861B2 (ja) 演算処理装置
US20070288731A1 (en) Dual Path Issue for Conditional Branch Instructions
US20070288734A1 (en) Double-Width Instruction Queue for Instruction Execution
KR101122180B1 (ko) 명령 제어 장치 및 명령 제어 방법
US5987599A (en) Target instructions prefetch cache
US7237093B1 (en) Instruction fetching system in a multithreaded processor utilizing cache miss predictions to fetch instructions from multiple hardware streams
EP1296228B1 (en) Instruction Issue and retirement in processor having mismatched pipeline depths
JP5104862B2 (ja) 命令実行制御装置及び命令実行制御方法
JP5696210B2 (ja) プロセッサ及びその命令処理方法
US6738897B1 (en) Incorporating local branch history when predicting multiple conditional branch outcomes
US20080005545A1 (en) Dynamically shared high-speed jump target predictor
JP5093237B2 (ja) 命令処理装置
JPH09190348A (ja) 命令プリフェッチバッファ制御方法、命令プリフェッチバッファ制御装置、及び命令プリフェッチバッファフラッシュ方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060726

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080926

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090209

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090317

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090518

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20090522

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090610

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

Free format text: PAYMENT UNTIL: 20120619

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20120619

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130619

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130619

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees