JP3683837B2 - スレッド能力を変更する方法及びマルチスレッド・コンピュータ・システム - Google Patents
スレッド能力を変更する方法及びマルチスレッド・コンピュータ・システム Download PDFInfo
- Publication number
- JP3683837B2 JP3683837B2 JP2001242917A JP2001242917A JP3683837B2 JP 3683837 B2 JP3683837 B2 JP 3683837B2 JP 2001242917 A JP2001242917 A JP 2001242917A JP 2001242917 A JP2001242917 A JP 2001242917A JP 3683837 B2 JP3683837 B2 JP 3683837B2
- Authority
- JP
- Japan
- Prior art keywords
- thread
- register
- threads
- multithreaded
- fuse
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 35
- 210000000352 storage cell Anatomy 0.000 claims description 29
- 238000012360 testing method Methods 0.000 claims description 28
- 238000003491 array Methods 0.000 claims description 16
- 238000012545 processing Methods 0.000 claims description 15
- 238000011990 functional testing Methods 0.000 claims description 12
- 210000004027 cell Anatomy 0.000 claims description 10
- 238000004891 communication Methods 0.000 claims description 5
- 238000007664 blowing Methods 0.000 claims description 4
- 230000006870 function Effects 0.000 claims description 4
- 239000011159 matrix material Substances 0.000 claims description 3
- 238000013500 data storage Methods 0.000 claims description 2
- 238000001514 detection method Methods 0.000 claims description 2
- 230000002401 inhibitory effect Effects 0.000 claims 1
- 230000002950 deficient Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 6
- 230000007547 defect Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 2
- 238000010998 test method Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/18—Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
- G11C29/26—Accessing multiple arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/28—Error detection; Error correction; Monitoring by checking the correct order of processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/44—Indication or identification of errors, e.g. for repair
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/78—Masking faults in memories by using spares or by reconfiguring using programmable devices
- G11C29/80—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
- G11C29/816—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout
- G11C29/818—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout for dual-port memories
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0401—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals in embedded memories
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/88—Masking faults in memories by using spares or by reconfiguring with partially good memories
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/16—Multiple access memory array, e.g. addressing one storage element via at least two independent addressing line groups
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Executing Machine-Instructions (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Microcomputers (AREA)
Description
【発明の属する技術分野】
本発明は、一般的にはハードウェア・マルチスレッド・コンピュータ処理の分野に関し、更に具体的には、ハードウェア・マルチスレッド・コンピュータ・プロセッサが実行することができるスレッドの数を変更する方法に関する。
【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】
更に、前記アクセスを不能にするステップは、前記特定のスレッドに関係するレジスタ/アレイへの読み出し/書き込みポートを切断するためヒューズを飛ばすことを含む。代替の実施形態において、前記アクセスを不能にするステップは、前記特定のスレッドのハードウェア・スレッド切り替えイベント制御レジスタ内の複数のスレッド切り替え制御イベントのいずれかを不能にすることを含む。更に、他の実施形態では、前記アクセスを不能にするステップは、マイクロコード命令を実行することによって、スレッド切り替え命令を生成することを含む。
【0012】
更に、本発明は、複数のスレッドを実行することができるハードウェア・マルチスレッド・コンピュータ処理システムのスレッド能力を変更する方法と考えられる。この方法は、マルチスレッド・レジスタ/アレイ内の記憶要素の障害を分離する機能テストを実行し、マルチスレッド・レジスタ/アレイは記憶セルのマトリックスとして配列され、更に、各々の記憶セルは複数の記憶要素を含み、各々の記憶要素は多数のスレッドの各々に固有に対応し、少なくとも1つの記憶要素の障害を検出して、障害を起こした少なくとも1つの記憶要素が固有に関連づけられた特定のスレッドを記録し、障害を起こした少なくとも1つの記憶要素に関連づけられた特定のスレッドに固有に対応する全ての記憶要素を不能にし、特定のスレッドのデータを、他のスレッドに固有に関連づけられた記憶要素へ回送するステップを含む。
【0013】
更に、特定のスレッドに関連づけられた全ての記憶要素を不能にする前記ステップは、他のスレッドに関連づけられた個々の記憶要素の中の他の記憶要素を選択するため、マルチスレッド・コンピュータの中でマイクロコード命令を実行することによって、スレッド切り替え信号を生成することを含んでよい。
【0014】
代替的に、特定のスレッドに関連づけられた全ての記憶要素を不能にする前記ステップは、更に、ヒューズを飛ばすことを含む。ヒューズは、特定のスレッドの全ての記憶要素へ接続された全ての読み出し/書き込みポートに置かれてよい。ヒューズは、スレッド切り替えイベント制御レジスタに置かれて、特定のスレッドに対するスレッド切り替えイベント制御レジスタの全て又は一部分を不能にしてよく、又は、ヒューズは、スレッド切り替えイベント制御レジスタ内の個々のビットへ接続されて、個々のビットが特定のスレッドを不能にしてよい。更に、ヒューズは、特定のスレッドに関係するスレッド状態レジスタへ接続されよい。即ち、明確には、ヒューズは、非活動状態を有するスレッドとして特定のスレッドをマークするため、スレッド状態レジスタの個々のビットへ接続されてよい。
【0015】
更に、本発明は、動作の少なくとも1つのスレッドを不能にすることができるマルチスレッド・コンピュータ・システムと考えられる。このマルチスレッド・コンピュータ・システムは、少なくとも1つのマルチスレッド・コンピュータ・プロセッサと、マルチスレッド・コンピュータ・プロセッサにおける動作の複数のスレッドの各々に対する少なくとも1つのスレッド切り替え制御レジスタと、各々の記憶セルが動作の1つのスレッドに固有に関連づけられた記憶要素を有するマルチスレッド記憶セルを有する少なくとも1つのハードウェア・マルチスレッド・メモリ/レジスタ・アレイと、少なくとも1つのマルチスレッド・コンピュータ・プロセッサに接続されたメイン・メモリと、複数のデータ記憶装置、1つ又は複数の外部通信ネットワーク、コンピュータ・プロセッサとの間でユーザ入力を与える1つ又は複数の入力/出力装置から成るグループの少なくとも1つへ、マルチスレッド・コンピュータ・プロセッサ及びメイン・メモリを接続するバス・インタフェースとを含む。更に、装置は、プロセッサの最初のブリングアップの間に少なくとも1つのマルチスレッド・コンピュータ・プロセッサ内で動作の少なくとも1つのスレッドの機能テストを実行する機能テスト生成手段と、機能テストを受けている動作の少なくとも1つのスレッドに固有に関連づけられた記憶要素の障害を検出する記憶要素障害検出手段と、マルチスレッド記憶セル内で機能テストを受けている動作の少なくとも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命令で切り替え。msr(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つのスレッドを有するハードウェア・マルチスレッド・プロセッサに限定されず、多数のスレッドを実行することのできるプロセッサへ拡張されることができる。本発明の好ましい実施形態は、記憶セルの各々でスレッドごとに固有の記憶要素を有するマルチスレッド・メモリ・レジスタに関して説明されたが、マルチスレッド・プロセッサのスレッド能力を変更する発明的特徴は、各々のスレッドについて別々のレジスタを有するマルチスレッド・プロセッサにも等しく応用することができる。レジスタを不能にするハードウェア手法は、ヒューズブックを使用しなくても実現することができる。レジスタ/アレイへのポートを不能にするために必要なロジックも、異なったものでよい。従って、本発明の広さ及び範囲は、これまで説明した例示的実施形態によって限定されるべきではなく、クレイム及びそれらの同等物に従ってのみ限定されるべきである。
【図面の簡単な説明】
【図1】 本発明の好ましい実施形態に従って、個々のスレッドのための記憶セルを有するマルチスレッド・レジスタ/メモリ・アレイを使用するコンピュータ・システムの主なハードウェア・コンポーネントを示す図である。
【図2】 マルチスレッド記憶セルの簡単なブロック図である。
【図3】 図2のマルチスレッド記憶セルの更に詳細なブロック図である。
【図4】 図3のマルチスレッド記憶セルの配線略図である。
【図5】 マルチスレッド・セルの記憶要素に欠陥があることを検出するプロセスの簡単なフローチャートである。
【図6】 本発明の1つの実施形態に従って、スレッド能力を変更する能力を有するマルチスレッド・メモリ・レジスタ/アレイのコンポーネントの簡単なブロック図である。
【図7】 レジスタ/アレイのスレッド能力を変更するため、マルチスレッド・メモリ・レジスタ/アレイに従って使用されることができるヒューズブックの回路図である。
Claims (15)
- 複数のスレッドを実行することができるハードウェア・マルチスレッド・コンピュータ処理システムのスレッド能力を変更する方法であって、
(a)前記複数のスレッドの各々に固有に関連づけられたレジスタ/アレイの障害を分離することができるテストを実行するステップと、
(b)少なくとも1つのレジスタ/アレイの障害を検出して、当該障害を起こした少なくとも1つのレジスタ/アレイが固有に関連づけられた特定のスレッドを記録するステップと、
(c)前記特定のスレッドに関連づけられた全てのレジスタ/アレイへのアクセスを不能にするステップと、
(d)検出された障害を有しない前記複数のスレッドのうちの他のスレッドに固有に関連づけられた全てのレジスタ/アレイへのアクセスを維持するステップと、
を含む方法。 - 前記ステップ(a)が、ロジック・ビルトイン・セルフ・テスト(LBIST)及び、又はアレイ・ビルトイン・セルフ・テスト(ABIST)を実行するステップを含む、請求項1記載の方法。
- 前記レジスタ/アレイが、記憶セルを有するマルチスレッド・レジスタ/アレイを含み、各々の記憶セルが、前記複数のスレッドの1つに固有に関連づけられた1つの記憶要素を有する、請求項1記載の方法。
- 前記ステップ(c)が、前記レジスタ/アレイへの少なくとも1つのポートを切断するためヒューズを飛ばすステップを含む、請求項1記載の方法。
- 前記ステップ(c)が、前記特定のスレッドのハードウェア・スレッド切り替え制御レジスタの中で、複数のスレッド切り替え制御イベントのいずれかを不能にするステップを含む、請求項1記載の方法。
- 前記ステップ(c)が、マイクロコード命令を実行するステップを含む、請求項1記載の方法。
- 複数のスレッドを実行することができるハードウェア・マルチスレッド・コンピュータ処理システムのスレッド能力を変更する方法であって、
(a)マルチスレッド・レジスタ/アレイ内の記憶要素の障害を分離する機能テストを実行するステップであって、前記マルチスレッド・レジスタ/アレイは記憶セルのマトリックスとして配列され、更に各々の記憶セルは複数の記憶要素を含み、各々の記憶要素は複数のスレッドの各々に固有に対応している、前記ステップと、
(b)少なくとも1つの記憶要素の障害を検出して、当該障害を起こした少なくとも1つの記憶要素が固有に関連づけられた特定のスレッドを記録するステップと、
(c)前記特定のスレッドに固有に関連づけられた全ての記憶要素を不能にするステップと、
(d)前記特定のスレッドのデータを、前記複数のスレッドのうちの他のスレッドに固有に関連づけられた記憶要素へ回送するステップと、
を含む方法。 - 前記ステップ(c)が、前記複数のスレッドのうちの他のスレッドに固有に関連づけられた記憶要素を選択するため、マルチスレッド・コンピュータ内でマイクロコード命令を実行することによってスレッド切り替え信号を生成するステップを含む、請求項7記載の方法。
- 前記ステップ(c)が、ヒューズを飛ばすことを含む、請求項7記載の方法。
- 前記ヒューズが、当該ヒューズに関連づけられた全ての記憶要素へ接続された全ての読み出し/書き込みポートに置かれる、請求項9記載の方法。
- 前記ヒューズが、スレッド切り替えイベント制御レジスタに置かれ、前記特定のスレッドに対するスレッド切り替えイベント制御レジスタの全て又は一部分を不能にする、請求項9記載の方法。
- 前記ヒューズが、スレッド切り替えイベント制御レジスタ内の個々のビットに接続され、当該個々のビットが前記特定のスレッドを不能にする、請求項11記載の方法。
- 前記ヒューズが、前記特定のスレッドに関係するスレッド状態レジスタに接続される、請求項9記載の方法。
- 前記ヒューズが、非活動状態を有するスレッドとして前記特定のスレッドをマークするため、前記スレッド状態レジスタの個々のビットに接続される、請求項13記載の方法。
- 少なくとも1つのスレッドを不能にすることができるマルチスレッド・コンピュータ・システムであって、
(a)少なくとも1つのマルチスレッド・コンピュータ・プロセッサと、
(b)前記マルチスレッド・コンピュータ・システムにおける複数のスレッドの各々に対する少なくとも1つのスレッド切り替え制御レジスタと、
(c)記憶セルの各々が1つのスレッドに固有に関連づけられた記憶要素を有するマルチスレッド記憶セルを有する少なくとも1つのハードウェア・マルチスレッド・メモリ/レジスタ・アレイと、
(d)前記マルチスレッド・コンピュータ・プロセッサに接続されたメイン・メモリと、
(e)複数のデータ記憶装置、1つ又は複数の外部通信ネットワーク、前記マルチスレッド・コンピュータ・プロセッサとの間でユーザ入力を提供する1つ又は複数の入力/出力装置から構成されるグループの少なくとも1つへ、前記マルチスレッド・コンピュータ・プロセッサ及び前記メイン・メモリを接続するバス・インタフェースと、
(f)前記マルチスレッド・コンピュータ・プロセッサの最初のブリングアップの間に、前記マルチスレッド・コンピュータ・プロセッサ内で少なくとも1つのスレッドの機能テストを実行する機能テスト生成手段と、
(g)前記機能テストを受けている前記少なくとも1つのスレッドに固有に関連づけられた記憶要素の障害を検出する記憶要素障害検出手段と、
(h)前記機能テストを受けている前記少なくとも1つのスレッドに関連づけられた全ての記憶要素を不能にする記憶要素不能手段と、
を備えたマルチスレッド・コンピュータ・システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/638577 | 2000-08-15 | ||
US09/638,577 US6748556B1 (en) | 2000-08-15 | 2000-08-15 | Changing the thread capacity of a multithreaded computer processor |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002108630A JP2002108630A (ja) | 2002-04-12 |
JP3683837B2 true JP3683837B2 (ja) | 2005-08-17 |
Family
ID=24560580
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001242917A Expired - Fee Related JP3683837B2 (ja) | 2000-08-15 | 2001-08-09 | スレッド能力を変更する方法及びマルチスレッド・コンピュータ・システム |
Country Status (3)
Country | Link |
---|---|
US (1) | US6748556B1 (ja) |
JP (1) | JP3683837B2 (ja) |
KR (1) | KR100388550B1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008155797A1 (ja) * | 2007-06-20 | 2008-12-24 | Fujitsu Limited | 演算装置 |
Families Citing this family (60)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6681345B1 (en) * | 2000-08-15 | 2004-01-20 | International Business Machines Corporation | Field protection against thread loss in a multithreaded computer processor |
US7324520B2 (en) * | 2002-07-03 | 2008-01-29 | Intel Corporation | Method and apparatus to process switch traffic |
US7174554B2 (en) * | 2002-12-20 | 2007-02-06 | Microsoft Corporation | Tools and methods for discovering race condition errors |
US7178005B1 (en) | 2004-06-30 | 2007-02-13 | Sun Microsystems, Inc. | Efficient implementation of timers in a multithreaded processor |
US7434000B1 (en) | 2004-06-30 | 2008-10-07 | Sun Microsystems, Inc. | Handling duplicate cache misses in a multithreaded/multi-core processor |
US7774393B1 (en) | 2004-06-30 | 2010-08-10 | Oracle America, Inc. | Apparatus and method for integer to floating-point format conversion |
US7702887B1 (en) | 2004-06-30 | 2010-04-20 | Sun Microsystems, Inc. | Performance instrumentation in a fine grain multithreaded multicore processor |
US7343474B1 (en) | 2004-06-30 | 2008-03-11 | Sun Microsystems, Inc. | Minimal address state in a fine grain multithreaded processor |
US7676655B2 (en) * | 2004-06-30 | 2010-03-09 | Sun Microsystems, Inc. | Single bit control of threads in a multithreaded multicore processor |
US8225034B1 (en) | 2004-06-30 | 2012-07-17 | Oracle America, Inc. | Hybrid instruction buffer |
US7216216B1 (en) | 2004-06-30 | 2007-05-08 | Sun Microsystems, Inc. | Register window management using first pipeline to change current window and second pipeline to read operand from old window and write operand to new window |
US7401206B2 (en) * | 2004-06-30 | 2008-07-15 | Sun Microsystems, Inc. | Apparatus and method for fine-grained multithreading in a multipipelined processor core |
US7523330B2 (en) * | 2004-06-30 | 2009-04-21 | Sun Microsystems, Inc. | Thread-based clock enabling in a multi-threaded processor |
US7890734B2 (en) | 2004-06-30 | 2011-02-15 | Open Computing Trust I & II | Mechanism for selecting instructions for execution in a multithreaded processor |
US7478225B1 (en) | 2004-06-30 | 2009-01-13 | Sun Microsystems, Inc. | Apparatus and method to support pipelining of differing-latency instructions in a multithreaded processor |
US7941642B1 (en) | 2004-06-30 | 2011-05-10 | Oracle America, Inc. | Method for selecting between divide instructions associated with respective threads in a multi-threaded processor |
US7330988B2 (en) * | 2004-06-30 | 2008-02-12 | Sun Microsystems, Inc. | Method and apparatus for power throttling in a multi-thread processor |
US7185178B1 (en) | 2004-06-30 | 2007-02-27 | Sun Microsystems, Inc. | Fetch speculation in a multithreaded processor |
US7383403B1 (en) | 2004-06-30 | 2008-06-03 | Sun Microsystems, Inc. | Concurrent bypass to instruction buffers in a fine grain multithreaded processor |
US7370243B1 (en) | 2004-06-30 | 2008-05-06 | Sun Microsystems, Inc. | Precise error handling in a fine grain multithreaded multicore processor |
US7426630B1 (en) | 2004-06-30 | 2008-09-16 | Sun Microsystems, Inc. | Arbitration of window swap operations |
US7747771B1 (en) | 2004-06-30 | 2010-06-29 | Oracle America, Inc. | Register access protocol in a multihreaded multi-core processor |
US7353364B1 (en) | 2004-06-30 | 2008-04-01 | Sun Microsystems, Inc. | Apparatus and method for sharing a functional unit execution resource among a plurality of functional units |
US8095778B1 (en) | 2004-06-30 | 2012-01-10 | Open Computing Trust I & II | Method and system for sharing functional units of a multithreaded processor |
US7373489B1 (en) | 2004-06-30 | 2008-05-13 | Sun Microsystems, Inc. | Apparatus and method for floating-point exception prediction and recovery |
US7533248B1 (en) | 2004-06-30 | 2009-05-12 | Sun Microsystems, Inc. | Multithreaded processor including a functional unit shared between multiple requestors and arbitration therefor |
US7437538B1 (en) | 2004-06-30 | 2008-10-14 | Sun Microsystems, Inc. | Apparatus and method for reducing execution latency of floating point operations having special case operands |
US7861063B1 (en) | 2004-06-30 | 2010-12-28 | Oracle America, Inc. | Delay slot handling in a processor |
US7707586B2 (en) * | 2004-09-08 | 2010-04-27 | Intel Corporation | Operating system independent agent |
US7280428B2 (en) | 2004-09-30 | 2007-10-09 | Rambus Inc. | Multi-column addressing mode memory system including an integrated circuit memory device |
US8595459B2 (en) | 2004-11-29 | 2013-11-26 | Rambus Inc. | Micro-threaded memory |
US8037250B1 (en) | 2004-12-09 | 2011-10-11 | Oracle America, Inc. | Arbitrating cache misses in a multithreaded/multi-core processor |
US7600101B2 (en) * | 2005-01-13 | 2009-10-06 | Hewlett-Packard Development Company, L.P. | Multithreaded hardware systems and methods |
JP4757648B2 (ja) * | 2005-03-03 | 2011-08-24 | 日本電気株式会社 | 処理装置及びその障害復旧方法 |
US7389403B1 (en) * | 2005-08-10 | 2008-06-17 | Sun Microsystems, Inc. | Adaptive computing ensemble microprocessor architecture |
WO2007091297A1 (ja) * | 2006-02-06 | 2007-08-16 | Fujitsu Limited | 情報処理装置、cpu、診断プログラムおよび診断方法 |
US7716530B2 (en) * | 2006-02-28 | 2010-05-11 | Microsoft Corporation | Thread interception and analysis |
WO2007100484A1 (en) * | 2006-02-28 | 2007-09-07 | Microsoft Corporation | Thread interception and analysis |
US7802073B1 (en) | 2006-03-29 | 2010-09-21 | Oracle America, Inc. | Virtual core management |
US20070260841A1 (en) | 2006-05-02 | 2007-11-08 | Hampel Craig E | Memory module with reduced access granularity |
CN106407136B (zh) | 2007-04-12 | 2019-05-28 | 拉姆伯斯公司 | 具有点对点请求互连的存储器系统 |
US7926035B2 (en) * | 2007-04-24 | 2011-04-12 | Microsoft Corporation | Testing multi-thread software using prioritized context switch limits |
WO2008155794A1 (ja) * | 2007-06-19 | 2008-12-24 | Fujitsu Limited | 情報処理装置 |
US8225315B1 (en) | 2007-07-23 | 2012-07-17 | Oracle America, Inc. | Virtual core management |
US8572577B2 (en) * | 2008-06-20 | 2013-10-29 | International Business Machines Corporation | Monitoring changes to data within a critical section of a threaded program |
US20100115494A1 (en) * | 2008-11-03 | 2010-05-06 | Gorton Jr Richard C | System for dynamic program profiling |
US8024719B2 (en) | 2008-11-03 | 2011-09-20 | Advanced Micro Devices, Inc. | Bounded hash table sorting in a dynamic program profiling system |
US8478948B2 (en) * | 2008-12-04 | 2013-07-02 | Oracle America, Inc. | Method and system for efficient tracing and profiling of memory accesses during program execution |
KR101313692B1 (ko) * | 2009-12-18 | 2013-10-02 | 한국전자통신연구원 | 로봇용 소프트웨어 컴포넌트를 실행하는데 있어서 고장 감내 방법 및 장치 |
US8365014B2 (en) * | 2010-01-14 | 2013-01-29 | Juniper Networks, Inc. | Fast resource recovery after thread crash |
GB2484458A (en) | 2010-10-04 | 2012-04-18 | Thorn Security | Commissioning detector units of an alarm system by means of a remote infrared based communication tool |
US8984518B2 (en) | 2010-10-14 | 2015-03-17 | Electronics And Telecommunications Research Institute | Apparatus and method for executing components based on thread pool |
US8671309B2 (en) * | 2011-07-01 | 2014-03-11 | Intel Corporation | Mechanism for advanced server machine check recovery and associated system software enhancements |
US9268719B2 (en) | 2011-08-05 | 2016-02-23 | Rambus Inc. | Memory signal buffers and modules supporting variable access granularity |
US8631292B2 (en) * | 2011-08-29 | 2014-01-14 | Freescale Semiconductor, Inc. | Multi-threading flip-flop circuit |
US9069598B2 (en) * | 2012-01-06 | 2015-06-30 | International Business Machines Corporation | Providing logical partions with hardware-thread specific information reflective of exclusive use of a processor core |
KR20150019349A (ko) * | 2013-08-13 | 2015-02-25 | 삼성전자주식회사 | 다중 쓰레드 실행 프로세서 및 이의 동작 방법 |
US9734033B2 (en) | 2014-12-08 | 2017-08-15 | International Business Machines Corporation | Implementing processor functional verification by generating and running constrained random irritator tests for multiple processor system and processor core with multiple threads |
US10445133B2 (en) | 2016-03-04 | 2019-10-15 | Nxp Usa, Inc. | Data processing system having dynamic thread control |
US10706101B2 (en) | 2016-04-14 | 2020-07-07 | Advanced Micro Devices, Inc. | Bucketized hash tables with remap entries |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4489401A (en) * | 1982-04-12 | 1984-12-18 | Seeq Technology, Inc. | Electrical partitioning scheme for improving yields during the manufacture of semiconductor memory arrays |
EP0729097A1 (en) * | 1995-02-07 | 1996-08-28 | Sun Microsystems, Inc. | Method and apparatus for run-time memory access checking and memory leak detection of a multi-threaded program |
US5659551A (en) * | 1995-05-31 | 1997-08-19 | International Business Machines Corporation | Programmable computer system element with built-in self test method and apparatus for repair during power-on |
US5805789A (en) * | 1995-12-14 | 1998-09-08 | International Business Machines Corporation | Programmable computer system element with built-in self test method and apparatus for repair during power-on |
US5778243A (en) * | 1996-07-03 | 1998-07-07 | International Business Machines Corporation | Multi-threaded cell for a memory |
US6119145A (en) * | 1997-02-28 | 2000-09-12 | Oracle Corporation | Multithreaded client application storing a separate context for each transaction thus allowing threads to resume transactions started by other client threads |
US5835705A (en) * | 1997-03-11 | 1998-11-10 | International Business Machines Corporation | Method and system for performance per-thread monitoring 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 |
US6256775B1 (en) * | 1997-12-11 | 2001-07-03 | International Business Machines Corporation | Facilities for detailed software performance analysis in a multithreaded processor |
US6418542B1 (en) * | 1998-04-27 | 2002-07-09 | Sun Microsystems, Inc. | Critical signal thread |
-
2000
- 2000-08-15 US US09/638,577 patent/US6748556B1/en not_active Expired - Fee Related
-
2001
- 2001-08-08 KR KR10-2001-0047693A patent/KR100388550B1/ko not_active IP Right Cessation
- 2001-08-09 JP JP2001242917A patent/JP3683837B2/ja not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008155797A1 (ja) * | 2007-06-20 | 2008-12-24 | Fujitsu Limited | 演算装置 |
JP5099131B2 (ja) * | 2007-06-20 | 2012-12-12 | 富士通株式会社 | 演算装置 |
US8407714B2 (en) | 2007-06-20 | 2013-03-26 | Fujitsu Limited | Arithmetic device for processing one or more threads |
Also Published As
Publication number | Publication date |
---|---|
JP2002108630A (ja) | 2002-04-12 |
KR100388550B1 (ko) | 2003-06-25 |
US6748556B1 (en) | 2004-06-08 |
KR20020014694A (ko) | 2002-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3683837B2 (ja) | スレッド能力を変更する方法及びマルチスレッド・コンピュータ・システム | |
JP3683838B2 (ja) | 正常なコンピュータ処理を継続する方法及びマルチスレッド・コンピュータ・システム | |
US7770067B2 (en) | Method for cache correction using functional tests translated to fuse repair | |
KR102288558B1 (ko) | 데이터 처리장치의 메모리 내장 자체 테스트 | |
US7676728B2 (en) | Apparatus and method for memory asynchronous atomic read-correct-write operation | |
US7676715B2 (en) | Integrated circuit with continuous testing of repetitive functional blocks | |
JPH1115687A (ja) | ブートアドレス変換装置 | |
JPH10301846A (ja) | 修復マスクを使用したキャッシュ・アレイ欠陥の機能的迂回方法及びシステム | |
CN103164316B (zh) | 硬件监视器 | |
US9984766B1 (en) | Memory protection circuitry testing and memory scrubbing using memory built-in self-test | |
US20030133336A1 (en) | Method and apparatus for dynamically hiding a defect in an embedded memory | |
JPH10320279A (ja) | 回復可能な高速ディレクトリ・アクセス方法 | |
US10311963B2 (en) | Data processing | |
KR20220116208A (ko) | 비휘발성 메모리 모듈에 대한 에러 보고 | |
US8904227B2 (en) | Cache self-testing technique to reduce cache test time | |
WO2010066207A1 (zh) | 在片自测试自修复方法 | |
US20050071723A1 (en) | Adaptive runtime repairable entry register file | |
US20060230308A1 (en) | Methods and systems for conducting processor health-checks | |
JP2008262648A (ja) | 半導体集積回路装置 | |
US7254746B1 (en) | Method and apparatus for using a fault tolerant memory in processor testing and design | |
JP2001307497A (ja) | 半導体集積回路装置 | |
JP2003337758A (ja) | 二重化メモリシステム | |
JP2006018486A (ja) | バッファ装置およびバッファ故障診断方法 | |
JPH0296255A (ja) | 記憶装置制御方式 | |
JPH0312757A (ja) | メモリカード |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050201 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050307 |
|
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: 20050510 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050526 |
|
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: 20080603 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090603 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100603 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |