トップ :: G 物理学 :: G06 計算;計数




【発明の名称】 スレッド能力を変更する方法、マルチスレッド・コンピュータ・システム、及びマルチスレッド・プロセッサ
【発明者】 【氏名】サルヴァトーレ・エヌ・ストリノ

【氏名】グレゴリィ・ジェイ・アルマン

【要約】 【課題】マルチスレッド・プロセッサにおいて、1つ又は複数のスレッドを選択的に不能にする。

【解決手段】各々のスレッドの機能を別々にテストして、スレッドが、欠陥のあるレジスタ/アレイを有するかどうかを識別し、もし欠陥があれば、又は他の理由によって、そのスレッドに固有のレジスタ/アレイへのアクセスを選択的に不能にする。マルチスレッド・レジスタ/アレイ内の個々の記憶要素を不能にすることができ、また、障害を起こしたスレッドに関連づけられたハードウェア・レジスタへのアクセス、又はハードウェア・レジスタ内の個々のビットへのアクセスを不能にすることができる。不能にされたスレッドのデータ及び命令を、他のスレッドへ回送する手法が使用可能である。好ましくは、プロセッサが販売される前に、テストが実行されてレジスタ/アレイへのアクセスを不能にする方法が完了される。
【特許請求の範囲】
【請求項1】複数のスレッドを実行することができるハードウェア・マルチスレッド・コンピュータ処理システムのスレッド能力を変更する方法であって、(a)前記複数のスレッドの各々に固有に関連づけられたレジスタ/アレイの障害を分離することができるテストを実行するステップと、(b)少なくとも1つのレジスタ/アレイの障害を検出して、障害を起こした少なくとも1つのレジスタ/アレイが固有に関連づけられたスレッドを記録するステップと、(c)障害を起こした少なくとも1つのレジスタ/アレイが固有に関連づけられたスレッドに関連づけられた全てのレジスタ/アレイへのアクセスを不能にするステップと、(d)検出された障害を有しない前記複数のスレッドの中の他のスレッドに固有に関連づけられた全てのレジスタ/アレイへのアクセスを維持するステップと、含む方法。
【請求項2】更に、前記テストを実行するステップ(a)が、レジスタ/アレイの臨界セクションを働かせるストレスのもとで顧客のパフォーマンス要件を代表する符号化命令を実行することを含む、請求項1に記載の方法。
【請求項3】更に、前記テストを実行するステップ(a)が、ロジック・ビルトイン・セルフ・テスト(LBIST)及び、又はアレイ・ビルトイン・セルフ・テスト(ABIST)を実行するステップを含む、請求項1に記載の方法。
【請求項4】更に、前記レジスタ/アレイが、記憶セルを有するマルチスレッド・レジスタ/アレイを含み、各々の記憶セルが、前記複数のスレッドの1つに固有に関連づけられた1つの記憶要素を有する、請求項1に記載の方法。
【請求項5】更に、前記アクセスを不能にする前記ステップ(c)が、前記レジスタ/アレイへの少なくとも1つのポートを切断するためヒューズを飛ばすステップを含む、請求項1に記載の方法。
【請求項6】更に、前記アクセスを不能にする前記ステップ(c)が、スレッドのハードウェア・スレッド切り替え制御レジスタの中で、複数のスレッド切り替え制御イベントのいずれかを不能にするステップを含む、請求項1に記載の方法。
【請求項7】更に、前記アクセスを不能にする前記ステップ(c)が、マイクロコード命令を実行するステップを含む、請求項1に記載の方法。
【請求項8】複数のスレッドを実行することができるハードウェア・マルチスレッド・コンピュータ処理システムのスレッド能力を変更する方法であって、(a)マルチスレッド・レジスタ/アレイ内の記憶要素の障害を分離する機能テストを実行するステップであって、前記マルチスレッド・レジスタ/アレイは記憶セルのマトリックスとして配列され、更に各々の記憶セルは複数の記憶要素を含み、各々の記憶要素は複数のスレッドの各々に固有に対応している、前記ステップと、(b)少なくとも1つの記憶要素の障害を検出して、障害を起こした少なくとも1つの記憶要素が固有に関連づけられた特定のスレッドを記録するステップと、(c)障害を起こした少なくとも1つの記憶要素に関連づけられた特定のスレッドに固有に対応する全ての記憶要素を不能にするステップと、(d)特定のスレッドのデータを、前記複数のスレッドの中の他のスレッドに固有に関連づけられた記憶要素へ回送するステップと、を含む方法。
【請求項9】更に、前記記憶要素を不能にするステップ(c)が、前記複数のスレッドの中の他のスレッドに関連づけられた個々の記憶要素の中の他の記憶要素を選択するためマルチスレッド・コンピュータの中でマイクロコード命令を実行することによってスレッド切り替え信号を生成するステップを含む、請求項8に記載の方法。
【請求項10】更に、前記記憶要素を不能にするステップ(c)が、ヒューズを飛ばすことを含む、請求項8に記載の方法。
【請求項11】前記ヒューズが、前記特定のヒューズに関連づけられた全ての記憶要素へ接続された全ての読み出し/書き込みポートに置かれる、請求項10に記載の方法。
【請求項12】前記ヒューズが、スレッド切り替えイベント制御レジスタに置かれ、特定のスレッドに対するスレッド切り替えイベント制御レジスタの全て又は一部分を不能にする、請求項10に記載の方法。
【請求項13】前記ヒューズが、スレッド切り替えイベント制御レジスタ内の個々のビットに接続され、個々のビットが特定のスレッドを不能にする、請求項12に記載の方法。
【請求項14】前記ヒューズが、前記特定のスレッドに関係するスレッド状態レジスタに接続される、請求項10に記載の方法。
【請求項15】更に、前記ヒューズが、非活動状態を有するスレッドとして特定のスレッドをマークするため、スレッド状態レジスタの個々のビットに接続される、請求項14に記載の方法。
【請求項16】動作の少なくとも1つのスレッドを不能にすることができるマルチスレッド・コンピュータ・システムであって、(a)少なくとも1つのマルチスレッド・コンピュータ・プロセッサと、(b)前記マルチスレッド・コンピュータ・システムにおける動作の複数のスレッドの各々に対する少なくとも1つのスレッド切り替え制御レジスタと、(c)記憶セルの各々が動作の1つのスレッドに固有に関連づけられた記憶要素を有するマルチスレッド記憶セルを有する少なくとも1つのハードウェア・マルチスレッド・メモリ/レジスタ・アレイと、(d)少なくとも1つのマルチスレッド・コンピュータ・プロセッサに接続されたメイン・メモリと、(e)複数のデータ記憶装置、1つ又は複数の外部通信ネットワーク、コンピュータ・プロセッサとの間でユーザ入力を提供する1つ又は複数の入力/出力装置から構成されるグループの少なくとも1つへ、マルチスレッド・コンピュータ・プロセッサ及びメイン・メモリを接続するバス・インタフェースと、(f)プロセッサの最初のブリングアップの間に、少なくとも1つのマルチスレッド・コンピュータ・プロセッサ内で動作の少なくとも1つのスレッドの機能テストを実行する機能テスト生成手段と、(g)機能テストを受けている動作の少なくとも1つのスレッドに固有に関連づけられた記憶要素の障害を検出する記憶要素障害検出手段と、(h)マルチスレッド記憶セル内で機能テストを受けている動作の少なくとも1つのスレッドに関連づけられた全ての記憶要素を不能にする記憶要素不能手段と、を含むマルチスレッド・コンピュータ・システム。
【請求項17】マルチスレッド・プロセッサであって、(a)複数のスレッドを処理する手段と、(b)前記複数のスレッド各々の状態を、前記マルチスレッド・プロセッサ内のハードウェア・レジスタに記憶する手段と、(c)個々のスレッドに関係するメモリ記憶要素に欠陥があるかどうかを検出する手段と、(d)前記欠陥のあるメモリ記憶要素へのアクセスを不能にする手段と、(e)欠陥のない他のメモリ記憶要素へのアクセスを維持する手段と、(f)欠陥のあるメモリ記憶要素に関係する個々のスレッドの処理及び記憶を、欠陥のあるメモリ記憶要素を有しない少なくとも1つの他のスレッドへリダイレクトする手段と、を含むマルチスレッド・プロセッサ。
【発明の詳細な説明】【0001】
【発明の属する技術分野】本発明は、一般的にはハードウェア・マルチスレッド・コンピュータ処理の分野に関し、更に具体的には、ハードウェア・マルチスレッド・コンピュータ・プロセッサが実行することができるスレッドの数を変更する方法に関する。
【0002】
【従来の技術】ハードウェア・マルチスレッド・コンピュータ・プロセッサは、設計されたハードウェア・プロセッサ内の複数のスレッドの状態を、プロセッサ・コア内に保全する。各々のハードウェア・レジスタが固有のスレッドに関連づけられている場合、ハードウェア・レジスタを単に変更することによって、幾つかのスレッドをマルチスレッド・プロセッサの中で実行してよい。プロセッサはマシン・サイクルごとにレジスタを変更してよいか、又は、例えば、プロセッサが、より遠いキャッシュ又はメモリからのデータ又は命令を待っているためにアイドル状態にあるとき、プロセッサはレジスタを切り替えてよい(即ち、スレッドを切り替えてよい)。
【0003】最近、プロセッサのレジスタ、例えば汎用及び特殊目的レジスタ及び他のマルチスレッド・メモリ・アレイは、読み出し独立性を無視するマルチスレッドのために専門化されてきた。マルチスレッド・レジスタ/アレイは、依然として、マトリックスとして配列された記憶セルを有するが、各々の記憶セルは多数の記憶要素を有し、各々の記憶要素は動作の固有のスレッドに関連づけられている。ハードウェア・マルチスレッド処理は、パフォーマンスの予想を越え、コンピュータ・アーキテクチャの規範的パラダイムとなりつつある。
【0004】しかし、プロセッサ内で1つ又は複数のスレッドを不能にすることが望ましい場合がある。これは、マルチスレッド・プロセッサが、単一スレッド・プロセッサとしてのみ機能することが必要である場合である。マルチスレッド・プロセッサが単一スレッド・プロセッサとしてのみ機能する必要がある場合の例は、プロセッサが製造された後、顧客へ販売される前に、プロセッサの設計をテストするプロセッサ・ブリングアップ(bring-up)テストの場合である。単一スレッド処理が好ましい他の場合は、マルチスレッド能力を使用するようにプログラムされていないオペレーティング・システムと共に、プロセッサが使用される場合である。
【0005】更に、マルチスレッド・プロセッサの1つ又は複数のスレッドを不能にすることが好ましい他の場合は、マルチスレッド・レジスタ/アレイに欠陥が生じて、コンピュータ障害となる場合である。コンピュータのコンポーネントが組み立てられてアセンブルされた後のコンピュータ障害を避けるため、多くの製造業者は、コンピュータが顧客へ販売される前に、プロセッサ及びメモリ・コンポーネントをテストし、誤りを有するコンピュータ・コンポーネントを除去する。プロセッサ障害の1つのタイプは、特に、プロセッサ・コア内の汎用及び特殊目的レジスタのAC欠陥、及び正常な使用のもとでコンポーネントにストレスを加えることによって生じたコンピュータのメイン・ランダム・アクセス・メモリのAC欠陥に帰せられてよい。更に、プロセッサのレジスタ/アレイは、LBIST及びABISTを受けるかも知れない。これらのテストは、必要な時間にビットを掴んで保持するディジタル記憶装置の能力をテストする。現在、マルチスレッド・プロセッサが、これらのテストの1つに失敗すると、それは捨てられる。
【0006】しかし、プロセッサの障害は、1つ又は幾つかのスレッドだけに固有であって、他のスレッドは正常に実行できるかも知れない。従って、マルチスレッド・プロセッサが多数のスレッドを処理できなくても、それは、より少数のスレッド又は1つだけのスレッドを処理できるかも知れない。プロセッサは、縮小された能力と共に販売されたとき、救うことのできる価値を有するが、もしプロセッサが捨てられると、その価値は失われてしまう。
【0007】
【発明が解決しようとする課題】従って、マルチスレッド・プロセッサ内で実行可能なスレッドの数を縮小して、単一スレッド・モード又は縮小スレッド・モードで処理できるプロセッサ能力を維持する必要性が産業界に存在する。更に、プロセッサが、その縮小されたスレッド能力と共に販売及び使用されることができ、またプロセッサが、正常な単一スレッド処理、又は欠陥のある記憶セルを有しない縮小された数の他のスレッドのマルチスレッド処理を実行できるように、この縮小されたスレッド能力を実行できるプロセッサを救助する必要性が存在する。
【0008】更に、コンピュータが顧客へ販売される前に、マルチスレッド記憶要素を有するマルチスレッド・レジスタ及び、又はメモリ・アレイの欠陥を検出する必要性が、マルチスレッド・コンピュータ産業界に存在する。もし障害を起こしたスレッドに関連づけられたマルチスレッド・メモリ又はレジスタ内の記憶要素のみを、プロセッサで使用できないようにすれば、プロセッサ自体は、捨てられる必要はないであろう。欠陥のある記憶要素に関連づけられたスレッドのスレッド処理は、適正に機能するスレッドの記憶要素へ回送されることができる。
【0009】
【課題を解決するための手段】これらの必要性、及び当業者に明らかとなるであろう他の必要性は、複数のスレッドを実行することができるハードウェア・マルチスレッド・コンピュータ処理システムのスレッド能力を変更する方法によって満足させられる。この方法は、各々のスレッドに固有に関連づけられたレジスタ/アレイの障害を分離することができるテストを実行し、少なくとも1つのレジスタ/アレイの障害を検出して、障害を起こしたレジスタ/アレイが固有に関連づけられたスレッドを記録し、障害を起こしたレジスタ/アレイを有するスレッドに関連づけられた全てのレジスタ/アレイへのアクセスを不能にし、検出された障害を有しない他のスレッドに固有に関連づけられた全てのレジスタ/アレイへのアクセスを維持するステップを含む。更に、各々のスレッドに固有に関連づけられたレジスタ/アレイの障害を分離することができるテストを実行するステップは、レジスタ/アレイの臨界セクションを働かせるストレスのもとで顧客のパフォーマンス要件を代表する符号化命令を実行することを含む。更に、テストは、ロジック・ビルトイン・セルフ・テスト(LBIST)及び、又はアレイ・ビルトイン・セルフ・テスト(ABIST)を含んでよい。
【0010】レジスタ/アレイは、記憶セルを有するマルチスレッド・レジスタ/アレイを含み、各々の記憶セルは、1つのスレッドに固有に関連づけられた1つの記憶要素を有してよい。
【0011】更に、障害を起こしたレジスタ/アレイを有するスレッドに関連づけられた全てのレジスタ/アレイへのアクセスを不能にするステップは、障害を起こしたレジスタ/アレイを有するスレッドに関係するレジスタ/アレイへの読み出し/書き込みポートを切断するためヒューズを飛ばすことを含む。代替の実施形態において、障害を起こした少なくとも1つのレジスタ/アレイが固有に関連づけられたスレッドに関連づけられた全てのレジスタ/アレイへのアクセスを不能にするステップは、スレッドのハードウェア・スレッド切り替えイベント制御レジスタ内の複数のスレッド切り替え制御イベントのいずれかを不能にすることを含む。更に、他の実施形態によって予想されることとして、障害を起こした少なくとも1つのレジスタ/アレイが固有に関連づけられたスレッドに関連づけられた全てのレジスタ/アレイへのアクセスを不能にするステップは、マイクロコード命令を実行することによって、スレッド切り替え命令を生成することを含む。
【0012】更に、本発明は、複数のスレッドを実行することができるハードウェア・マルチスレッド・コンピュータ処理システムのスレッド能力を変更する方法と考えられる。この方法は、マルチスレッド・レジスタ/アレイ内の記憶要素の障害を分離する機能テストを実行し、マルチスレッド・レジスタ/アレイは記憶セルのマトリックスとして配列され、更に、各々の記憶セルは複数の記憶要素を含み、各々の記憶要素は多数のスレッドの各々に固有に対応し、少なくとも1つの記憶要素の障害を検出して、障害を起こした少なくとも1つの記憶要素が固有に関連づけられた特定のスレッドを記録し、障害を起こした少なくとも1つの記憶要素に関連づけられた特定のスレッドに固有に対応する全ての記憶要素を不能にし、特定のスレッドのデータを、他のスレッドに固有に関連づけられた記憶要素へ回送するステップを含む。
【0013】更に、特定のスレッドに関連づけられた全ての記憶要素を不能にする前記ステップは、他のスレッドに関連づけられた個々の記憶要素の中の他の記憶要素を選択するため、マルチスレッド・コンピュータの中でマイクロコード命令を実行することによって、スレッド切り替え信号を生成することを含んでよい。
【0014】代替的に、特定のスレッドに関連づけられた全ての記憶要素を不能にする前記ステップは、更に、ヒューズを飛ばすことを含む。ヒューズは、特定のスレッドの全ての記憶要素へ接続された全ての読み出し/書き込みポートに置かれてよい。ヒューズは、スレッド切り替えイベント制御レジスタに置かれて、特定のスレッドに対するスレッド切り替えイベント制御レジスタの全て又は一部分を不能にしてよく、又は、ヒューズは、スレッド切り替えイベント制御レジスタ内の個々のビットへ接続されて、個々のビットが特定のスレッドを不能にしてよい。更に、ヒューズは、特定のスレッドに関係するスレッド状態レジスタへ接続されよい。即ち、明確には、ヒューズは、非活動状態を有するスレッドとして特定のスレッドをマークするため、スレッド状態レジスタの個々のビットへ接続されてよい。
【0015】更に、本発明は、動作の少なくとも1つのスレッドを不能にすることができるマルチスレッド・コンピュータ・システムと考えられる。このマルチスレッド・コンピュータ・システムは、少なくとも1つのマルチスレッド・コンピュータ・プロセッサと、マルチスレッド・コンピュータ・プロセッサにおける動作の複数のスレッドの各々に対する少なくとも1つのスレッド切り替え制御レジスタと、各々の記憶セルが動作の1つのスレッドに固有に関連づけられた記憶要素を有するマルチスレッド記憶セルを有する少なくとも1つのハードウェア・マルチスレッド・メモリ/レジスタ・アレイと、少なくとも1つのマルチスレッド・コンピュータ・プロセッサに接続されたメイン・メモリと、複数のデータ記憶装置、1つ又は複数の外部通信ネットワーク、コンピュータ・プロセッサとの間でユーザ入力を与える1つ又は複数の入力/出力装置から成るグループの少なくとも1つへ、マルチスレッド・コンピュータ・プロセッサ及びメイン・メモリを接続するバス・インタフェースとを含む。更に、装置は、プロセッサの最初のブリングアップの間に少なくとも1つのマルチスレッド・コンピュータ・プロセッサ内で動作の少なくとも1つのスレッドの機能テストを実行する機能テスト生成手段と、機能テストを受けている動作の少なくとも1つのスレッドに固有に関連づけられた記憶要素の障害を検出する記憶要素障害検出手段と、マルチスレッド記憶セル内で機能テストを受けている動作の少なくとも1つのスレッドに関連づけられた全ての記憶要素を不能にする記憶要素不能手段とを含む。
【0016】更に、本発明は、複数のスレッドを処理する手段と、複数のスレッドの各々の状態を、マルチスレッド・プロセッサ内のハードウェア・レジスタに記憶する手段と、個々のスレッドに関係するメモリ記憶要素に欠陥があるかどうかを検出する手段と、欠陥があるメモリ記憶要素へのアクセスを不能にする手段と、欠陥がない他のメモリ記憶要素へのアクセスを維持する手段と、欠陥があるメモリ記憶要素に関係する個々のスレッドの処理及び記憶を、欠陥があるメモリ記憶要素を有しない少なくとも1つの他のスレッドへリダイレクトする手段とを含むマルチスレッド・プロセッサであると見ることができる。
【0017】
【発明の実施の形態】本発明の好ましい実施形態に従って選択的に不能にされることができるマルチスレッド記憶セルを含むレジスタを有するコンピュータ・システム100の主なハードウェア・コンポーネントが、図1に示される。中央処理ユニット(CPU)101A及び101Bは、メイン・メモリ102からの命令及びデータの上で基本的マシン処理を実行するときハードウェア・マルチスレッド動作をサポートする。各々のCPU101A及び101Bは、それぞれの内部レベル1命令キャッシュ106A、106B(L1 Iキャッシュ)、及びレベル1データ・キャッシュ107A、107B(L1 Dキャッシュ)を含む。各々のL1 Iキャッシュ106A、106Bは、そのCPUによって実行される命令を記憶する。各々のL1 Dキャッシュは、そのCPUによって処理される命令以外のデータを記憶する。各々のCPU101A、101Bは、それぞれのレベル2キャッシュ(L2キャッシュ)108A、108Bへ結合される。レベル2キャッシュ108A、108Bは、命令及びデータの双方を保持するために使用されることができる。メモリ・バス109は、CPU及びメモリの間でデータを転送する。更に、CPU101A、101B及びメモリ102は、メモリ・バス109及びバス・インタフェース105を介して、システムI/Oバス110と通信する。様々なI/O処理ユニット(IOP)111〜115が、システムI/Oバス110に取り付けられ、様々な記憶装置及びI/O装置、例えば直接アクセス記憶装置(DASD)、テープ・ドライブ、ワークステーション、プリンタ、及び遠隔装置又は他のコンピュータ・システムと通信する遠隔通信線との通信をサポートする。記述を簡単にするため、CPU、L1 Iキャッシュ、L1 Dキャッシュ、及びL2キャッシュは、ここでは、それぞれ参照番号101、106、107、及び108と略記される。様々なバスが図1に示されるが、これらは、様々な通信路を概念レベルで表すように意図されており、バスの実際の物理構成は変わるかも知れず、実際に、もっと複雑であることを理解すべきである。更に、図1はシステム構成の1つの例として意図されており、コンピュータ・システムにおけるコンポーネントの実際の数、タイプ、及び構成は変わってよいことを理解すべきである。特に、本発明は、単一のマルチスレッドCPUを有するシステム、又は多数のマルチスレッドCPUを有するシステムで使用されることができるであろう。
【0018】各々のCPU101は、多数のスレッドの状態を保全することができる。CPU101は、典型的には、データを記憶するための複数の汎用レジスタ、及び条件、中間結果、命令、及びプロセッサの状態を集合的に決定する他の情報を記憶するための様々な特殊目的レジスタを含む。この情報は、CPU101によってサポートされる各々のスレッドのために複製される。各々のCPU101の内部には、スレッドの優先順位、その活動状態又は非活動状態などに関する情報を含むスレッド状態レジスタ103A及び103Bが、各々のスレッドごとに存在する。図1には、2スレッド・システムであることを仮定して、2つのスレッド状態レジスタが示される。しかし、プロセッサは、3つ以上のスレッドについて状態を保全し、処理を行うことができる。スレッド状態レジスタは、アクティブ・スレッド信号を生成する。ハードウェア・スレッド切り替え制御レジスタ105A及び105Bは、スレッドの切り替えを生成するイベントを選択するようにプログラムされることができる。各々のスレッド切り替え制御イベントは、スレッド切り替え制御レジスタ105の中に別々の可能ビットを有する。各々のスレッドのために、別々のスレッド切り替え制御レジスタが存在してよいが、多くの場合、個々のスレッドに対応するレジスタの個々のビット回路は、典型的には、チップ上で物理的にインタリーブされているであろう。即ち、スレッド0に対するレジスタ部分のビット0は、他のスレッドの各々に対するレジスタ部分の物理的に隣接したビット0であろう。それぞれのビット1回路は、全て物理的に相互に隣接しているであろう。ビット2以下も同様である。1つのスレッド切り替え制御レジスタにおける1つのスレッドのスレッド切り替え制御イベントは、他のスレッドに関連づけられたスレッド切り替え制御イベント、又は他のスレッド切り替え制御レジスタ内のイベントと同一である必要はない。スレッド切り替え制御レジスタは、当技術分野で知られているサービス・プロセッサによって書き込まれることができる。スレッド切り替え制御レジスタの内容は、マルチスレッド・プロセッサにおけるスレッド切り替えの生成を可能又は不能にするため、ハードウェア・スレッド切り替えコントローラによって使用される。レジスタ内の1の値は、そのビットに関連づけられたスレッド切り替え制御イベントを可能にして、スレッド切り替えを生成する。スレッド切り替え制御レジスタ内の0の値は、そのビットに関連づけられたスレッド切り替え制御イベントを不能にして、スレッド切り替えを生成しないようにする。ビット22:29における0の値は、ビットに関連づけられたスレッドを不能にするであろう。もちろん、実行されているスレッド内の命令は、その特定のスレッド又は他のスレッドについて、いずれか又は全てのスレッド切り替え条件を不能にすることができるであろう。次の表は、スレッド切り替えイベントと、スレッド切り替え制御レジスタにおける可能ビットとの間の関連の例を示す。
スレッド切り替え制御レジスタのビット割り当て (0) L1データ・キャッシュ・フェッチ・ミスで切り替え (1) L1データ・キャッシュ記憶ミスで切り替え (2) L1命令キャッシュ・ミスで切り替え (3) 命令TLBミスで切り替え (4) L2キャッシュ・フェッチ・ミスで切り替え (5) L2キャッシュ記憶ミスで切り替え (6) L2命令キャッシュ・ミスで切り替え (7) データTLB/セグメント・ルックアサイド・バッファ・ミ スで切り替え (8) L2キャッシュ・ミス及び活動休止スレッド非L2キャッシ ュ・ミスで切り替え (9) スレッド切り替えタイムアウト値に達したときに切り替え (10) L2キャッシュ・データが返されたときに切り替え (11) IO外部アクセスで切り替え (12) ダブルX記憶で切り替え: 2者の中の1番目でミス (13) ダブルX記憶で切り替え: 2者の中の2番目でミス (14) 多数/ストリング記憶で切り替え: いずれかのアクセスで ミス (15) 多数/ストリング・ロードで切り替え: いずれかのアクセ スでミス (16) 予約 (17) ダブルXロードで切り替え: 2者の中の1番目でミス (18) ダブルXロードで切り替え: 2者の中の2番目でミス (19) もしマシン状態レジスタ(プロブレム状態)ビット、msr (pr)=1であれば、or1,1,1命令で切り替え。m sr(pr)から独立してソフトウェア優先順位の変更を可 能にする。もしビット19が1であれば、or1,1,1命 令は低い優先順位を設定する。もしビット19が0であれば、 or1,1,1命令が実行されるときにmsr(pr)=0 である場合にのみ、優先順位は低に設定される。後述するよ うに、ソフトウェアを使用して優先順位を変更する場合を参 照されたい。
(20) 予約 (21) スレッド切り替え優先順位を可能にする (22:29) スレッドを可能にする。スレッドごとに1つのビット (30:31) 前方進行カウント (32:63) 64ビット・レジスタの実装で予約* ダブルXロード/記憶とは、ダブルワード境界を横断する基本的ハーフワード、ワード、又はダブルワードのロード又は記憶を指す。この文脈におけるダブルXロード/記憶とは、多数のワード又はワード・ストリングのロード又は記憶ではない。
【0019】マルチスレッド・プロセッサ設計に関する追加の背景情報は、次の共通譲渡された同時係属米国特許出願に含まれる。これらの特許出願は、参照して、それらの全体をここに組み込まれる。本願と同時に出願され、「マルチスレッド・コンピュータ・プロセッサのスレッド損失に対する現場防止」(Field Protection Against Thread Loss in a Multithreaded Computer Processor)と題する一連番号不詳の特許出願(譲受人のドケット番号、ROC920000139)、1999年11月12日に出願され、「マルチスレッド処理のマスタ・スレーブ・ラッチ回路」(Master-Slave Latch Circuit for Multithreaded Processing)と題する第09/439,581号(譲受人のドケット番号、RO999−140)、1999年3月10日に出願され、「マルチスレッド・プロセッサの命令キャッシュ」(Instruction Cache for Multithreaded Processor)と題する第09/266,133号(譲受人のドケット番号、RO998−277)、1997年11月21日に出願され、「マルチスレッド・データ処理システムにおける多数エントリ完全連想キャッシュ・バッファからのデータ・アクセス」(Accessing Data from a Multiple Entry Fully Associative Cache Buffer in a Multithreaded Data Processing System)と題する第08/976,533号(譲受人のドケット番号、RO997−182)、1997年11月10に出願され、「実効・リアル・アドレス・キャッシュ管理装置及び方法」(Effective-To-Real Address Cache Managing Apparatus and Method)と題する第08/966,706号(譲受人のドケット番号、RO997−155)、1997年10月23日に出願され、「マルチスレッド・プロセッサにおけるスレッド優先順位の変更」(Altering Thread Priorities in a Multithreaded Processor)と題する第08/958,718号(譲受人のドケット番号、RO997−106)、1997年10月23日に出願され、「マルチスレッド・プロセッサ内でスレッド切り替えイベントを選択する方法及び装置」(Method and Apparatus for Selecting Thread Switch Events in a Multithreaded Processor)と題する第08/958,716号(譲受人のドケット番号、RO997−104)、1997年10月23日に出願され、「マルチスレッド・プロセッサ・システムにおけるスレッド切り替え制御」(Thread Switch Control in a Multithreaded Processor System)と題する第08/957,002号(譲受人のドケット番号、RO996−042)、1997年10月23日に出願され、「マルチスレッド・プロセッサにおける前方進行を保証する装置及び方法」(An Apparatus and Method to Guarantee Forward Progress in a Multithreaded Processor)と題する第08/956,875号(譲受人のドケット番号、RO997−105)、1997年10月23日に出願され、「マルチスレッド・プロセッサにおけるスレッド切り替えの強制」(To Force a Thread Switch in a Multithreaded Processor)と題する第08/956,577号(譲受人のドケット番号、RO997−107)、1996年12月27日に出願され、「マルチスレッド・プロセッサにおける命令及び関連フェッチ・リクエストのバックグラウンド完了」(Background Completion of Instruction and Associated Fetch Request in a Multithread Processor)と題する第08/773,572号(譲受人のドケット番号、RO996−043)。これらの出願で説明されるマルチスレッド・プロセッサ設計は、粗粒度マルチスレッド実現方法であるが、本発明は、粗粒度マルチスレッド、又は細粒度マルチスレッドのいずれにも応用可能であることを理解すべきである。
【0020】マルチスレッド・メモリ・レジスタ/アレイは、共通の読み出しデータ・バスを有する通常の2スレッド・メモリ・アレイと著しく異なっている。共通読み出しバスを有するコンピュータ・アーキテクチャのパラダイムは、読み出し独立性が必要であること、及び各々のスレッドのデータが同時に読み出されるための別々の読み出しデコーダを必要とすることを仮定している。しかし、読み出し独立性を無視することによって、重大なマイナス結果を受けることなく、最適配線能力及び関連した最適最小トランジスタ数を有するマルチスレッド・メモリを達成できることが発見された。なぜなら、2つ以上のスレッドのデータが同時に要求されるインスタンスの数は、無視できるからである。図2のマルチスレッド記憶セルは、読み出し独立性を無視することによって、実質的なマイナスの結果を受けることなく、チップ表面領域の消費を著しく減らすことができるという発見を反映している。なぜなら、読み出し独立性は、一時に1つのスレッドだけをアクセスできるプロセッサに対しては、無視できる機能的属性だからである。スレッド・セレクタ及び読み出しポートに必要なトランジスタの数は、スレッドの各々について別々の読み出しポートを形成する場合に必要であった数よりも少なくなる。
【0021】図2は、本願の譲受人によって共通所有される米国特許第5,778,243号に示されるマルチスレッド記憶セルのブロック図である。この特許は、参照して、その全体を組み込まれる。マルチスレッド記憶セル300は、スレッド0及びスレッド1を読み出しポート340へ選択的に接続するスレッド・セレクタ330を含むマルチスレッド読み出しインタフェースを有する。読み出しポート340の数は、記憶要素320及び322から読み出され得る機能ユニットの数、通常は1を超える数、例えば6から8までの機能ユニットの数に対応する。機能ユニットの例は、整数及び浮動小数点数表現の間で、整数、論理シフト、フィールド抽出、及び、又は浮動小数点演算及び、又は変換を実行することができる算術論理ユニットである。読み出し動作のためには、各々の記憶要素320、322は、次のように機能ユニットへ接続される。即ち、記憶要素320、322はスレッド・セレクタ330へ接続され、スレッド・セレクタ330は、読み出しポート340の1つへ接続され、この1つのポートはデコーダ(図2には示されていない)へ接続され、デコーダは機能ユニット(同様に、図2には示されていない)へ接続される。
【0022】更に、図2は、スレッド0のための書き込みポート310、及びスレッド1のための書き込みポート312を含む。書き込みポートの数は、記憶要素へ書き込むことができる機能ユニットの数、通常は1を超える数、例えば3から12までの機能ユニットの数に対応する。スレッド0の記憶要素320は、書き込みポート310及びスレッド・セレクタ330へ接続され、スレッド1の記憶要素322は、書き込みポート312及びスレッド・セレクタ330へ接続される。
【0023】プロセッサ(図示されていない)は、スレッド0を選択するようにスレッド・セレクタ330を制御することによって、記憶要素320内のデータを読み出すことができる。それによって、記憶要素320のデータは、読み出しポート340上で利用可能になる。同様に、記憶要素322内のデータを読み出すためには、、プロセッサが、記憶要素322からの線を選択するようにスレッド・セレクタ330を制御することが必要である。
【0024】図3は、図2の実施形態の、更に詳細なブロック図である。図3は、マルチスレッド記憶セル410から形成された2スレッド・アレイ402を示す。図3の2スレッド・アレイは、読み出しデコーダ430、432、434、436、スレッド0の書き込みデコーダ438、スレッド1の書き込みデコーダ440、及びマルチスレッド記憶セル410のアレイ450を含む。1つの記憶セル410に対する書き込み相互接続のみが示される。なぜなら、アレイ内の他のセルに対する相互接続は、同じだからである。
【0025】書き込みデコーダ438、440の各々は、書き込みアドレス・バス418、422へ接続され、それぞれ、それ自身の書き込みスレッド選択線416、420へ接続される。このようにして、スレッド選択は、2スレッド・レジスタ402に対して外部的に行われる。対照的に、読み出しデコーダ、例えば430、432、434、436は、読み出しアドレス・バス412へ接続されるが、読み出しスレッド選択線414には接続されない。むしろ、どのスレッドを読み出すかの選択が、マルチスレッド記憶セル410の外部ではなく内部で起こるように、メモリ・セル410の各々が読み出しスレッド選択線414へ接続される。
【0026】図4は、図2の実施形態の配線略図である。具体的には、ブロックはCMOSトランジスタから形成されたように示されるが、本発明は、他の技術の中でも、NMOS、BICMOS、BINMOS、バイポーラ、SOI、及びGaASへ応用される。第1のスレッドの記憶要素320は、トランジスタ510、512、514、516、518、520から形成され、単一のビットを保持する。単純に、ただ1つの機能ユニットが記憶要素へ書き込むことを仮定して、第1のスレッドの書き込みポート310は単一のポートのみを有するように示される。しかし、前述したように、そのような機能ユニットの複数が存在してよい。書き込みポート310は、トランジスタ502、504から形成され、トランジスタ502のゲートを横切るスレッド可能信号522によって動作可能にされる。第2のスレッドは、トランジスタ530、532、534、536、538、540から形成された記憶要素322、及びトランジスタ506並びに508を含む書き込みポート312を有する。第2のスレッド可能信号526は、トランジスタ506のゲートに接続される。スレッド・セレクタ330は、トランジスタ560、562、564、566、568、570から形成される。トランジスタ560のゲート及びトランジスタ566のゲートに接続された線550上の信号THB、及びトランジスタ562のゲート及びトランジスタ564のゲートに接続された線552上の信号THAの状態に基づいて、スレッド・セレクタ330は、第1のスレッド又は第2のスレッドを選択する。読み出しポート340は2つのポート580及び590を含み、第1のポート580はトランジスタ582及び584から形成され、第2のポート590はトランジスタ592及び594から形成される。ここでも、各々のインタフェースにおけるポートの数は例示的なもので、実際には、記憶要素との間で読み出し/書き込みを行うことができる機能ユニットの数に従って変わるであろう。
【0027】マルチスレッド記憶セルを有するレジスタ及びメモリ・アレイは、製造された後にテストされる。幾つかのテスト手順があるが、2つだけを挙げると、LBIST及びABISTがある。それらのテストでは、既知のビット・シーケンスがアレイの中へ入力され、アレイの出力と比較される。適正に機能するメモリ・アレイでは、入力は出力とマッチする。これらのシーケンスは、高速で実行され、多くのメモリ・セルを同時に巻き込むことができ、プロセッサへ「ストレス」を加えて、その障害パラメータ(もしあれば)を決定することができる。他の種類のテストは機能テストであって、その場合、顧客のパフォーマンス要件を代表する実際の符号化命令がストレスのもとで実行され、メモリ・アレイの臨界セクションを働かせる。再び、これらのテストは異なったプロセッサ速度で実行されることができ、プロセッサが障害を起こすかどうか、及び何時プロセッサが障害を起こすかを決定することができる。そのような障害は、最も普通では、マルチスレッド記憶セル内のビット値を捕捉して保持することのできないメモリ・アレイ及び汎用並びに特殊レジスタの結果である。本発明の重要な特徴は、別々のスレッドに関連づけられた個々の記憶セル内に記憶された値をテストする能力である。言い換えれば、本発明との関連において、各々のスレッドは、今や別々にテストされることができる。
【0028】図5は、マルチスレッド・プロセッサの障害を検出する方法の簡単なフローチャートである。図5は、障害が起こるとすれば、それが起こるまで実際の符号化命令を実行する機能テストを例示するが、他のテスト、例えば、メモリ・アレイをテストするためのABIST、LBISTなども、本発明との関連で使用されることができる。典型的には、これらのテストは、製造された後、及び、又は現場におけるプロセッサ・システムの正常な動作の間、即ち、顧客の活動場所で正常なプロセッサ実行の間に定期的に行われる。ここで説明される好ましい実施形態では、これらのテストは、最初のブリングアップの間、即ち、プロセッサ・チップが製造された後、コンピュータへアセンブルされる前、又は販売される前に行われる。ステップ600からスタートして、プロセスは、ステップ610へ進行する。ステップ610において、アクティブ・スレッドが第1のスレッドに設定される。これは、CPU内のスレッド状態レジスタによって達成されることができる。次に、ステップ612において、アクティブ・スレッドの命令がプロセッサで実行される。ステップ614において、テスト手順は、実行されるべきアクティブ・スレッドの更なる命令があるかどうかをチェックする。もし更なる命令があれば、プロセスはステップ612へループバックし、そのスレッドのために次の命令を実行する。しかし、もしステップ614において、選択されたスレッドの更なる命令がなければ、ステップ616において、プロセスは、選択されたスレッドの命令の実行中に障害が生じたかどうかを質問する。
【0029】ステップ616において、レジスタ又はメモリ・アレイの障害がなければ、プロセスは、ステップ618で、テストすべき追加のスレッドがあるかどうかをチェックする。もしあれば、ステップ620で、他のスレッドを選択するようにスレッド選択がプログラムされる。それは、再びステップ612で、その命令の実行をテストするためである。しかし、もし第1のスレッドが障害を経験すれば、障害はステップ630で記録され、信号誤りメッセージがステップ632で生成される。この時点で、テストはステップ640で終了してよい。なぜなら、プロセッサは、マルチスレッド・レジスタ又はメモリ・アレイ内で機能障害を経験したからである。代替的に、テストは、全てのスレッドがテストされてしまうまで、選択されたアクティブ・スレッドとしての次のスレッドへ継続する。ここで開示される特徴の発明以前では、障害を経験したプロセッサ・チップは捨てられたであろう。即ち、全てのスレッドがテストされたわけではないので、プロセッサ内の他のスレッドが適正に実行され、他のスレッドの記憶セルが完全に機能する場合でも、捨てられたであろう。
【0030】このようにして、図5のフローチャートは、どの特定スレッドが機能障害を起こすかを確かめることによって、プロセッサを救助する利点を提供する幾つかの発明的特徴を表す。マルチスレッド・レジスタを有するプロセッサは捨てられる必要はない。その代わりに、欠陥を有するそれらの記憶要素は不能にされ、マルチスレッド・メモリ・アレイ内で障害を経験したスレッドの命令及びデータは、同一又は異なったアレイ又はレジスタ内の他のスレッドの記憶要素へ回送されてよい。
【0031】2スレッド・レジスタ/アレイ内で1つだけのスレッドに関連づけられた欠陥記憶要素を不能にするハードウェア装置及び方法の1つの実施形態が、図6に示される。マルチスレッド・レジスタ/アレイ450は、2つのスレッドを有するように示されるが、概念及びハードウェアは、当業者によって、3つ以上のスレッドへ容易に拡張されることができる。本発明の好ましい実施形態に従った変更は、複数のヒューズブック、及びハードワイヤ・ロジックと連係するマルチプレクサを含む。ヒューズブック内のヒューズは、「1」又は「0」のディジタル信号を駆動するように設定されることができる。典型的には、これらの値は、一度設定されると変更されることはできない。
【0032】図6を参照すると、スレッド選択ヒューズブックと呼ばれる第1のヒューズブック710は、マルチプレクサ750へ入る出力信号F1 712を生成する。更に、スレッド状態レジスタによって生成されたアクティブ・スレッド信号AT714が、マルチプレクサ750へ入力される。マルチプレクサ750へ入力される第3の信号F0 732は、欠陥要素ヒューズブックと呼ばれる第2のヒューズブック730から引き出される。この欠陥要素ヒューズブックは、もし機能テストの間に、例えば図5のステップ630から、欠陥のある記憶要素が検出されると、「1」の値を有する信号F0 732を出力する。スレッド選択ヒューズブック710は、記憶要素が欠陥を有しないスレッドに対応する値を有する信号F1 712を出力する。記憶要素が欠陥を有しないという知識は、ブリングアップの間、又はプロセッサが販売される前の他の時点で実行された機能テスト又は他のテストの結果から得られる。アクティブ・スレッド信号AT 714は、単にアクティブ・スレッドが処理されていること、及びレジスタ/アレイへのアクセスを望んだことを示す。レジスタ/アレイは、マルチスレッド記憶セルのレジスタ/アレイ450であってよい。2スレッド・メモリ・アレイのためにマルチプレクサ内で具体化されることができるロジックの1つの例に従って、書き込み又は読み出しポートのデコーダへ与えられる出力信号AToF(アクティブ・スレッド又はヒューズ) 752は、どのスレッドがマルチスレッド・アレイ内でアクセスすべきかを示す。更に、出力信号は、レジスタの個々のビット又は全体のアレイへ出力されることができる。例えば、図6のように配列されたヒューズブック710及び730並びにマルチプレクサ750は、スレッド切り替え制御イベント・レジスタにおけるビット22:29の個々のビット、又は特定スレッドのスレッド切り替え制御イベント・レジスタへ接続されることができよう。同様に、図6のヒューズブック配列は、例えばスレッドの状態を常に非アクティブとしてマークするため、各々のスレッド状態レジスタのポート、又はスレッド状態レジスタの個々のビットへ接続されることができよう。従って、結果は、レジスタでスレッドを不能にすることになろう。もしマルチスレッド・レジスタ/アレイ内で欠陥アレイ又は欠陥記憶要素が検出されたならば、信号F0が1へ設定されるであろう。もし適正に機能している記憶要素を有するスレッドが第1のスレッドであったならば、信号F1は0であろう。ここで、もしアクティブ・スレッドがスレッド0であれば(論理チャート内でも0の値である)、出力信号AToFは0であり、メモリ・セルはアクセスされることができよう。しかし、もし上記の条件が、アクティブ・スレッド信号がスレッド1に対するものであったことを除いて同じであれば、信号F1と信号ATは矛盾し、第2のスレッドに対する記憶要素へのアクセスは不能にされるであろう。従って、与えられたロジックのもとでは、欠陥記憶要素が検出されて、F0信号が1であり、アクティブ・スレッド信号ATが、どのスレッドが適正に機能する記憶要素を有するかを示す信号F1と矛盾するとき、アクティブ・スレッドによって要求されたレジスタ/アレイへのアクセスは不能にされる。
【0033】図7は、マルチスレッド・レジスタ/アレイのハードウェアへ組み込まれることのできるヒューズブックの1つの例に過ぎない。ヒューズは、実際には多くの実現方法を有し、当業者は、同じように実現されることのできる他のヒューズ及び、又はハードワイヤ・ロジックを知っているであろう。ネットの設定_ヒューズブックは、スタートアップで活性化され、デフォルト値として「1」の出力値を有するが、ヒューズブックを設定するためには「0」の値へドロップする。次に、ネットの設定_ヒューズブックは、プロセッサの寿命の間、「1」の値へ戻る。ヒューズブックを設定する場合、設定_ヒューズブックは0へドロップし、これはトランジスタN1及びP1をオンにし、トランジスタN3及びN2をオフにする。もしヒューズが飛ばされていなければ、ヒューズ_ネットは0へ設定される。N1がオンであるとき、ヒューズ_ラッチはヒューズ_ネットを短絡させる。ヒューズ_ネットは0になって、インバータI2を介してヒューズ_フィードバックを1の値にする。代わって、このアクションは、P2をオフにし、N4をオンにし、出力信号ヒューズ_アウトは、インバータI3を介して0になる。設定_ヒューズブックが高になるとき、トランジスタN3及びN2は活性化されるが、トランジスタN1及びP1は非活性化される。今や、N3及びN4を通るフィードバック通路が存在し、この通路はヒューズ_ラッチを0に保持し、ヒューズ_フィードバックを1に保持し、ヒューズ_アウトを0に保持する。この状態は、設定_ヒューズブックがスタートアップ時を除いて1に止まるので、チップがパワーダウンされるまで続く。
【0034】しかし、もしヒューズが、レーザの使用により、又は電気的に飛ばされると、トランジスタN2がオン、即ち設定_ヒューズブックが1であるときを除いて、ヒューズ_ネットはグラウンドへの通路を有しない。従って、設定_ヒューズブックが0になると、ヒューズ_ネットは0状態で浮動し、トランジスタN1及びP1はオンになる。P1は、トランジスタN1を介してヒューズ_ネットのグラウンド値に打ち勝ち、ヒューズ_フィードバックを0にし、ヒューズ_ラッチ及びヒューズ_ネットを1にする。設定_ヒューズブックが1へ戻り、トランジスタP1及びN1が非活性化されるとき、ヒューズ_ラッチの値が1に保持され、トランジスタN4がオフでヒューズ_フィードバックが0に保持され、ヒューズ_アウトが1に止まるように、トランジスタP2を通るフィードバック通路は存在しない。
【0035】これまで、本発明の様々な実施形態が説明されたが、それらは、限定ではなく例として提示されたこと、及び変形が可能であることを理解すべきである。本発明は、潜在的イベントに基づいてスレッドを切り替える粗粒度マルチスレッドに限定されない。即ち、それは細粒度マルチスレッド・システムに組み込まれるように等しく変更されることができる。更に、本発明は、単に2つのスレッドを有するハードウェア・マルチスレッド・プロセッサに限定されず、多数のスレッドを実行することのできるプロセッサへ拡張されることができる。本発明の好ましい実施形態は、記憶セルの各々でスレッドごとに固有の記憶要素を有するマルチスレッド・メモリ・レジスタに関して説明されたが、マルチスレッド・プロセッサのスレッド能力を変更する発明的特徴は、各々のスレッドについて別々のレジスタを有するマルチスレッド・プロセッサにも等しく応用することができる。レジスタを不能にするハードウェア手法は、ヒューズブックを使用しなくても実現することができる。レジスタ/アレイへのポートを不能にするために必要なロジックも、異なったものでよい。従って、本発明の広さ及び範囲は、これまで説明した例示的実施形態によって限定されるべきではなく、クレイム及びそれらの同等物に従ってのみ限定されるべきである。
【0036】まとめとして、本発明の構成に関して以下の事項を開示する。
(1)複数のスレッドを実行することができるハードウェア・マルチスレッド・コンピュータ処理システムのスレッド能力を変更する方法であって、(a)前記複数のスレッドの各々に固有に関連づけられたレジスタ/アレイの障害を分離することができるテストを実行するステップと、(b)少なくとも1つのレジスタ/アレイの障害を検出して、障害を起こした少なくとも1つのレジスタ/アレイが固有に関連づけられたスレッドを記録するステップと、(c)障害を起こした少なくとも1つのレジスタ/アレイが固有に関連づけられたスレッドに関連づけられた全てのレジスタ/アレイへのアクセスを不能するステップと、(d)検出された障害を有しない前記複数のスレッドの中の他のスレッドに固有に関連づけられた全てのレジスタ/アレイへのアクセスを維持するステップと、含む方法。
(2)更に、前記テストを実行するステップ(a)が、レジスタ/アレイの臨界セクションを働かせるストレスのもとで顧客のパフォーマンス要件を代表する符号化命令を実行することを含む、上記(1)に記載の方法。
(3)更に、前記テストを実行するステップ(a)が、ロジック・ビルトイン・セルフ・テスト(LBIST)及び、又はアレイ・ビルトイン・セルフ・テスト(ABIST)を実行するステップを含む、上記(1)に記載の方法。
(4)更に、前記レジスタ/アレイが、記憶セルを有するマルチスレッド・レジスタ/アレイを含み、各々の記憶セルが、前記複数のスレッドの1つに固有に関連づけられた1つの記憶要素を有する、上記(1)に記載の方法。
(5)更に、前記アクセスを不能にする前記ステップ(c)が、前記レジスタ/アレイへの少なくとも1つのポートを切断するためヒューズを飛ばすステップを含む、上記(1)に記載の方法。
(6)更に、前記アクセスを不能にする前記ステップ(c)が、スレッドのハードウェア・スレッド切り替え制御レジスタの中で、複数のスレッド切り替え制御イベントのいずれかを不能にするステップを含む、上記(1)に記載の方法。
(7)更に、前記アクセスを不能にする前記ステップ(c)が、マイクロコード命令を実行するステップを含む、上記(1)に記載の方法。
(8)複数のスレッドを実行することができるハードウェア・マルチスレッド・コンピュータ処理システムのスレッド能力を変更する方法であって、(a)マルチスレッド・レジスタ/アレイ内の記憶要素の障害を分離する機能テストを実行するステップであって、前記マルチスレッド・レジスタ/アレイは記憶セルのマトリックスとして配列され、更に各々の記憶セルは複数の記憶要素を含み、各々の記憶要素は複数のスレッドの各々に固有に対応している、前記ステップと、(b)少なくとも1つの記憶要素の障害を検出して、障害を起こした少なくとも1つの記憶要素が固有に関連づけられた特定のスレッドを記録するステップと、(c)障害を起こした少なくとも1つの記憶要素に関連づけられた特定のスレッドに固有に対応する全ての記憶要素を不能にするステップと、(d)特定のスレッドのデータを、前記複数のスレッドの中の他のスレッドに固有に関連づけられた記憶要素へ回送するステップと、を含む方法。
(9)更に、前記記憶要素を不能にするステップ(c)が、前記複数のスレッドの中の他のスレッドに関連づけられた個々の記憶要素の中の他の記憶要素を選択するためマルチスレッド・コンピュータの中でマイクロコード命令を実行することによってスレッド切り替え信号を生成するステップを含む、上記(8)に記載の方法。
(10)更に、前記記憶要素を不能にするステップ(c)が、ヒューズを飛ばすことを含む、上記(8)に記載の方法。
(11)前記ヒューズが、前記特定のヒューズに関連づけられた全ての記憶要素へ接続された全ての読み出し/書き込みポートに置かれる、上記(10)に記載の方法。
(12)前記ヒューズが、スレッド切り替えイベント制御レジスタに置かれ、特定のスレッドに対するスレッド切り替えイベント制御レジスタの全て又は一部分を不能にする、上記(10)に記載の方法。
(13)前記ヒューズが、スレッド切り替えイベント制御レジスタ内の個々のビットに接続され、個々のビットが特定のスレッドを不能にする、上記(12)に記載の方法。
(14)前記ヒューズが、前記特定のスレッドに関係するスレッド状態レジスタに接続される、上記(10)に記載の方法。
(15)更に、前記ヒューズが、非活動状態を有するスレッドとして特定のスレッドをマークするため、スレッド状態レジスタの個々のビットに接続される、上記(14)に記載の方法。
(16)動作の少なくとも1つのスレッドを不能にすることができるマルチスレッド・コンピュータ・システムであって、(a)少なくとも1つのマルチスレッド・コンピュータ・プロセッサと、(b)前記マルチスレッド・コンピュータ・システムにおける動作の複数のスレッドの各々に対する少なくとも1つのスレッド切り替え制御レジスタと、(c)記憶セルの各々が動作の1つのスレッドに固有に関連づけられた記憶要素を有するマルチスレッド記憶セルを有する少なくとも1つのハードウェア・マルチスレッド・メモリ/レジスタ・アレイと、(d)少なくとも1つのマルチスレッド・コンピュータ・プロセッサに接続されたメイン・メモリと、(e)複数のデータ記憶装置、1つ又は複数の外部通信ネットワーク、コンピュータ・プロセッサとの間でユーザ入力を提供する1つ又は複数の入力/出力装置から構成されるグループの少なくとも1つへ、マルチスレッド・コンピュータ・プロセッサ及びメイン・メモリを接続するバス・インタフェースと、(f)プロセッサの最初のブリングアップの間に、少なくとも1つのマルチスレッド・コンピュータ・プロセッサ内で動作の少なくとも1つのスレッドの機能テストを実行する機能テスト生成手段と、(g)機能テストを受けている動作の少なくとも1つのスレッドに固有に関連づけられた記憶要素の障害を検出する記憶要素障害検出手段と、(h)マルチスレッド記憶セル内で機能テストを受けている動作の少なくとも1つのスレッドに関連づけられた全ての記憶要素を不能にする記憶要素不能手段と、を含むマルチスレッド・コンピュータ・システム。
(17)マルチスレッド・プロセッサであって、(a)複数のスレッドを処理する手段と、(b)前記複数のスレッド各々の状態を、前記マルチスレッド・プロセッサ内のハードウェア・レジスタに記憶する手段と、(c)個々のスレッドに関係するメモリ記憶要素に欠陥があるかどうかを検出する手段と、(d)前記欠陥のあるメモリ記憶要素へのアクセスを不能にする手段と、(e)欠陥のない他のメモリ記憶要素へのアクセスを維持する手段と、(f)欠陥のあるメモリ記憶要素に関係する個々のスレッドの処理及び記憶を、欠陥のあるメモリ記憶要素を有しない少なくとも1つの他のスレッドへリダイレクトする手段と、を含むマルチスレッド・プロセッサ。
【出願人】 【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【出願日】 平成13年8月9日(2001.8.9)
【代理人】 【識別番号】100086243
【弁理士】
【氏名又は名称】坂口 博 (外2名)
【公開番号】 特開2002−108630(P2002−108630A)
【公開日】 平成14年4月12日(2002.4.12)
【出願番号】 特願2001−242917(P2001−242917)