(57)【特許請求の範囲】
【請求項１】
一度に１つのスレッドを処理する単一プロセッサをもち、複数のスレッドを使用するマルチ・スレッド・コンピュータ・システムにおけるマルチ・スレッド・メモリであって、前記マルチ・スレッド・メモリが、
（Ａ）複数のマルチ・スレッド記憶セルと、
（Ｂ）前記マルチ・スレッド記憶セルの選択された１つに情報を供給する少なくとも１つの書き込みデコーダと、
（Ｃ）前記マルチ・スレッド記憶セルの選択された１つから情報をアクセスする少なくとも１つの読み取りデコーダと、
を含み、
各前記マルチ・スレッド記憶セルが、
（ａ）各々がスレッド対応内容を有する、Ｎ≧２（Ｎは自然数）であるＮ個の記憶素子と、
（ｂ）前記少なくとも１つの書き込みデコーダに作動状態で接続され、前記複数の記憶素子に情報を提供する書き込みインタフェースと、
（ｃ）前記少なくとも１つの読み取りデコーダに作動状態で接続され、前記複数の記憶素子から情報を読み取る読み取りインタフェースと、
を含み、
少なくとも１つの前記インタフェースが、
（ａ）Ｎ個の記憶素子のうちの、選択されたスレッドに対応する１つを選択するＮセレクタと、
（ｂ）前記少なくとも１つのデコーダに前記Ｎセレクタを接続する、デコーダ当たり１ポートの割合で存在する少なくとも１つのポートと、
を含む、
マルチ・スレッド・メモリ。
【請求項２】
前記読み取りインタフェースが、前記Ｎセレクタと前記ポートを含む、請求項１に記載のマルチ・スレッド・メモリ。
【請求項３】
（ａ）記憶素子当たり少なくとも１デコーダの比率を確保するために十分な数である少なくともＮ個のデコーダと、
（ｂ）各記憶素子に対して、前記記憶素子を前記デコーダに作動状態で接続するデコーダ当たり１つのポートを含み、これによって複数のスレッドに同時に書き込むことを可能にする前記書き込みインタフェースと、
を含む、請求項２に記載のマルチ・スレッド・メモリ。
【請求項４】
前記マルチ・スレッド・メモリが、少なくとも２つの書き込みデコーダと、少なくとも２つの読み取りデコーダとを含み、
前記書き込みインタフェースが、各前記書き込みデコーダ用に記憶セル当たり少なくとも１つのポートを含み、
前記読み取りインタフェースが、各前記読み取りデコーダ用に記憶セル当たり少なくとも１つのポートを含む、
請求項１に記載のマルチ・スレッド・メモリ。
【請求項５】
前記マルチ・スレッド・メモリが、３個の書き込みデコーダ及び６個の読み取りデコーダのセット、又は１２個の書き込みデコーダ及び８個の読み取りデコーダのセットのどちらかを含む、請求項４に記載のマルチ・スレッド・メモリ。
【請求項６】
前記書き込みインタフェースが、Ｎセレクタとデコーダ当たり１ポートとを含む、請求項１に記載のマルチ・スレッド・メモリ。
【請求項７】
前記読み取りインタフェース及び書き込みインタフェースが、伝送ゲートで構成されるポートを含む、請求項１に記載のマルチ・スレッド・メモリ。
【請求項８】
前記読み取りインタフェース及び書き込みインタフェースが、パス・ゲートで構成されるポートを含む、請求項１に記載のマルチ・スレッド・メモリ。
【請求項９】
各前記記憶素子がマスタ記憶素子であり、
前記マルチ・スレッド記憶セルが、
（ａ）前記マスタ記憶素子にそれぞれが対応するＮ個のスレーブ記憶素子と、
（ｂ）各前記マスタ／スレーブ記憶素子ペアに関連し、前記スレーブ記憶素子を対応する前記マスタ記憶素子内のデータの正確性の検証に使用するためのスキャニング手段と、
を更に含む、請求項１に記載のマルチ・スレッド・メモリ。
【請求項１０】
前記マルチ・スレッド・メモリが、内容をアドレス指定できるメモリであり、
前記マルチ・スレッド・メモリが、各前記マルチ・スレッド記憶セルに関連付けられている、所要のビット・パターン内の各ビット値を各前記スレッド対応内容と比較し、すべてのビット値の一致を識別するための比較手段を更に含む、請求項１に記載のマルチ・スレッド・メモリ。
【請求項１１】
一度に１つのスレッドを処理する単一プロセッサをもち、複数のスレッドを使用するマルチ・スレッド・コンピュータ・システムにおけるマルチ・スレッド・メモリであって、前記マルチ・スレッド・メモリが、
（Ａ）複数のマルチ・スレッド記憶セルと、
（Ｂ）前記マルチ・スレッド記憶セルの選択された１つに情報を供給する少なくとも１つの書き込みデコーダと、
（Ｃ）前記マルチ・スレッド記憶セルの選択された１つから情報をアクセスする少なくとも１つの読み取りデコーダと、
を含み、
各前記マルチ・スレッド記憶セルが、
（ａ）各々がスレッド対応内容を有する、Ｎ≧２（Ｎは自然数）であるＮ個の記憶素子と、
（ｂ）前記少なくとも１つの書き込みデコーダ及び少なくとも１つの記憶素子に作動状態で接続され、前記複数の記憶素子に情報を供給する書き込みインタフェースと、
（ｃ）前記少なくとも１つの読み取りデコーダ及び少なくとも１つの記憶素子に作動状態で接続され、前記複数の記憶素子から情報を読み取る読み取りインタフェースと、
（ｄ）マルチ・スレッド記憶セル内のリング状に接続されたＮ個の記憶素子と、
を含み、
所要のスレッド対応内容が、前記書き込みインタフェース及び読み取りインタフェースが接続された記憶素子内に配置されるまで、前記記憶素子内の前記スレッド対応内容をリング内でシフトすることにより、スレッド選択が行われ、各前記マルチ・スレッド記憶セルが、
（ｅ）前記インタフェースに接続されるべき記憶素子が、スレッド内容を循環させるときに前記リング内の他の記憶素子をバイパスできるようにする、リング・バイパス手段を更に含む、
マルチ・スレッド・メモリ。
【請求項１２】
各前記記憶素子がラッチのペアを含む、請求項１１に記載のマルチ・スレッド・メモリ。
【請求項１３】
各前記マルチ・スレッド記憶セルが、
前記書き込みインタフェースが接続されている記憶素子とは別の記憶素子に接続され、前記書き込みインタフェースがアクセスするポイントとは別の前記リング上のポイントへのアクセスを可能にする、補助の書き込みインタフェースを含む、
請求項１１又は１２に記載のマルチ・スレッド・メモリ。
【請求項１４】
前記マルチ・スレッド・メモリが、少なくとも２つの書き込みデコーダと少なくとも２つの読み取りデコーダとを含み、
前記書き込みインタフェースが、各前記書き込みデコーダ用に記憶セル当たり少なくとも１ポートを含み、
前記読み取りインタフェースが、各前記読み取りデコーダ用に記憶セル当たり少なくとも１ポートを含む、
請求項１１〜１３のいずれか１項に記載のマルチ・スレッド・メモリ。
【請求項１５】
前記マルチ・スレッド・メモリが、３個の書き込みデコーダ及び６個の読み取りデコーダのセット、又は１２個の書き込みデコーダ及び８個の読み取りデコーダのセットのどちらかを含む、請求項１４に記載のマルチ・スレッド・メモリ。
【請求項１６】
請求項１〜請求項１５の任意の１つに記載されたマルチ・スレッド・メモリを含むマイクロプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、表面面積の効率的使用に関して最適な数のトランジスタを含むマルチ・スレッド記憶素子／セルに関連し、これらのトランジスタは、マルチ・スレッド素子／セルの入出力を制御する回路を構成する。更に詳細に述べれば、本発明は、マイクロプロセッサ内に機能性の高いマルチ・スレッド・メモリを構成する、マルチ・スレッド記憶素子／セルに関連する。
【０００２】
【従来の技術】
コンピュータ・アーキテクチャが常に目指すものは、処理速度の改善、即ちプロセッサの利用度及び（又は）システム・スループットの改善である。ノイマン型（ｖｏｎ  Ｎｅｕｍａｎｎ）アーキテクチャとして知られる、最も一般的なプロセッサ・アーキテクチャでは、プログラムが設定したシーケンスに従って命令が順次実行される。このようなプロセッサは、単一スレッドであると言われる。
【０００３】
ある種の命令は、プロセッサをアイドル状態にする。例えば論理演算が実行される前に、データをリモート位置からプロセッサのレジスタの１つ又は複数に読み取るように命令が要求したとき、リモート位置に記憶されているデータの読み取りに費やされる時間中は、プロセッサがアイドル状態になる。この状況は、メモリ待ち時間と呼ばれる。
【０００４】
メモリ待ち時間の更に詳細な例は、プロセッサがキャッシュ・メモリからデータを読み取ろうとするときである。データがキャッシュ内に存在しない場合、即ちキャッシュ・ミスがある場合、プロセッサは、そのデータをもっと速度が遅いリモート・メモリから読み取る必要がある。こうしてメモリ待ち時間が発生する。
【０００５】
メモリ待ち時間に対処する方法の１つは、これを許容することである。このメモリ待ち時間を許容する技術の１つが、マルチ・スレッド処理である。マルチ・スレッド・プロセッサは、命令によってプロセッサがアイドル状態になるとき、例えばメモリ待ち時間条件が発生したときを認識し、メモリ待ち時間を起こした命令から別の命令に、前の命令と関係なく切り替えることができる。前の命令は第１のスレッドと見なされ、後の命令は第２のスレッドと見なされる。スレッドは、「コンテキスト」と呼ばれる場合もある。第２のスレッドに、プロセッサをアイドル状態にする操作が含まれている場合、プロセッサは第２のスレッドを保留にして、第３のスレッドに切り替える。ある時点で、プロセッサをアイドル状態にしたスレッドの準備が整う。例えばメモリ待ち時間状態が終了する。この時点で、プロセッサはこれらのスレッドに戻ることができる。１つのスレッドから次のスレッドに切り替えることにより、プロセッサは、アイドル状態になる時間の長さを最小にすることができる。言い替えると、プロセッサはビジー状態である時間の長さを最大にできる。
【０００６】
一般的にスレッド即ちコンテキストは、プログラム・カウンタ、レジスタ・セット（記憶素子）、ならびにレジスタ・セット用の複数の書き込みポート及び複数の読み取りポートを含む。これを図１に示す。
【０００７】
図１は、２つのスレッドをもつ記憶アレイ内のセルを示す。セルは標準の記憶素子で構成される。スレッド０は、複数の書き込みポート２、１個の記憶素子４、及び複数の読み取りポート６で構成される。スレッド１は、複数の書き込みポート８、１個の記憶素子１０、及び複数の読み取りポート１２で構成される。書き込みポート及び読み取りポートの数は、記憶素子への書き込みや素子からの読み取りを実行するそれぞれの機能ユニットの数により決まる。
【０００８】
図１に示すような従来の記憶アレイでは、スレッド１の記憶素子への書き込みと同時に、スレッド０の記憶素子への書き込みが可能である。同様に、スレッド０の記憶素子用と、スレッド１の記憶素子用の読み取りポートを別々にもつことにより、スレッド０及びスレッド１の各々から、データを同時に読み取ることが可能になる。これは、それぞれ書き込み独立性及び読み取り独立性と呼ばれる。
【０００９】
超大規模集積回路（「ＶＬＳＩ」）の領域では、集積回路が形式されるチップの表面面積の経済的利用が非常に重要である。周知のようにＶＬＳＩ技術が進歩するにつれて、より小さな集積回路上により沢山のデバイスが形成される、即ちトランジスタ密度が増加している。２つの主要な要因がトランジスタ密度に影響する。即ち、トランジスタ・サイズと、トランジスタの相互接続に必要な配線数である。配線数は、実装される特定の回路（複数）の関数である。配線サイズの縮小、及び（容量結合、又は混信を防ぐために必要な）配線の最小間隔の問題は、トランジスタ・サイズの縮小化ほどには重要ではなかった。チップ上のトランジスタで構成される特定の回路において、配線の相互接続によって使用される表面面積を扱うこの問題は、一般的に回路の「配線配置性」と称される。即ち、回路は「配線が制約される」と考えられている。実際に特定の回路について、トランジスタを１つ減らして表面面積の使用を削減すると、トランジスタ自身が使用する表面面積の削減より、関連する配線の相互接続で使用する表面面積の削減が貢献する方が大きい。
【００１０】
発明者達は、読み取り又は書き込みの独立性に関連する費用を評価した。即ち同時スレッド読み取り機能、又は書き込み機能に関連する費用を、各記憶素子の書き込みポートの構成に必要なトランジスタの数、及び関連する配線配置性に関して評価した。
【００１１】
従来の技術では、読み取り独立性及び書き込み独立性は、マルチ・スレッド・メモリに絶対的に必要であると想定されていた。発明者達は、この従来の技術において支配的な想定が誤りであることを明らかにし、全体又は一部分で読み取り及び（又は）書き込み独立性をなくすことにより、このような従来の技術のシステムの性能を改善する設計を開発した。我々は、これらの従来の技術の想定が、マルチ・スレッド・メモリ上で実際上不必要な表面面積の消費を強制していることを明らかにした。
【００１２】
発明者達は、特にマルチ・スレッド・プロセッサでは、（実際上）読み取り独立性はほとんど使用されない機能であることを明らかにした。マルチ・スレッド・プロセッサは、一度に１つのスレッドからしか読み取りができない。したがって、マルチ・スレッド・プロセッサ自身、そのレジスタ・セットの読み取り独立性を全く要求しない。複数のマルチ・スレッド・プロセッサが並列的に動作している環境では、プロセッサのレジスタ・セットに読み取り独立性が要求される状況がまれに発生する可能性がある。このような状況では、第１のプロセッサが第１のスレッドから読み取っている間、第２のプロセッサは、第１のプロセッサの第２のスレッドからリモート・メモリ読み取りを実行する。我々は、読み取り独立性を削除することで生じる不都合な結果は、実際上無視できるものであり、除去できるトランジスタが消費していた表面面積を大きく節約できることを明らかにした。
【００１３】
発明者達は、同様にいくつかのアプリケーションでは、データを複数のスレッドの記憶素子に同時に書き込むことは実際上あまり頻繁に発生しないので、利点はほとんどないことを明らかにした。むしろデータをスレッド１の記憶素子に書き込むこととは非同期に、データをスレッド０の記憶素子に書き込むことの方がよほど一般的である。我々は、以上より書き込み独立性にあまり重要な機能性はないので、著しく不都合な結果が生じることなく、表面面積の経済性を改善できることを明らかにした。
【００１４】
【発明が解決しようとする課題】
上記より、本発明の目的は、従来の技術の問題点の解決にある。
【００１５】
本発明の目的は、集積回路チップの表面面積の消費に優れた経済性をもつ、汎用レジスタなどのマルチ・スレッド・メモリを作成することである。
【００１６】
本発明の目的は、最適な最小数のトランジスタで形成される、マルチ・スレッド・メモリを実現することである。
【００１７】
本発明の目的は、記憶素子（マルチ・スレッド・セルのスレッドに対応する）用の読み取り及び書き込みポートの形成に必要な、最適な最小数のトランジスタで構成される、マルチ・スレッド・メモリを実現することである。この目的は、読み取り独立性、及び書き込み独立性の機能的利点は無視できるほど小さいのものであり、これらの独立性を選択的に削除しても不都合な結果はほとんど生ぜず、これらの独立性を削除することによって関連する配線配置性が改善され、その結果表面面積の経済性が改善されるという認識に基づいている。
【００１８】
【課題を解決するための手段】
発明者達が、上記で明らかにしたことから、上記の目的を満たす本発明の展開として、一度に１つのスレッドを処理する単一プロセッサをもち、複数のスレッドを使用するマルチ・スレッド・コンピュータ・システムにおける、マルチ・スレッド・メモリを提供する。このマルチ・スレッド・メモリは、複数のマルチ・スレッド記憶セルと、マルチ・スレッド記憶セル中の選択された１つに情報を供給する少なくとも１つの書き込みデコーダと、マルチ・スレッド記憶セル中の選択された１つから情報をアクセスする少なくとも１つの読み取りデコーダとを含む。各マルチ・スレッド記憶セルは、Ｎ≧２であるＮ個の記憶素子を含み、前記Ｎ個の記憶素子の各々は、スレッド対応内容をもつ。またこの記憶セルは、書き込みインタフェースを含み、このインタフェースは前記少なくとも１つの書き込みデコーダと作動状態で接続され、前記複数の記憶素子に情報を提供する。更にこの記憶セルは、読み取りインタフェースを含み、このインタフェースは前記少なくとも１つの読み取りデコーダと作動状態で接続され、前記複数の記憶素子から情報を読み取る。前記読み取り及び書き込みインタフェースの少なくとも１つが、少なくとも部分的に、対応するスレッドを識別することによって、前記スレッド対応内容の１つを選択し、セル内のスレッド対応内容選択を実行する。
【００１９】
また単一のプロセッサをもち、複数のスレッドを使用する、マルチ・スレッド・コンピュータ・システムに組み込まれた複数のマルチ・スレッド記憶セルで構成されるマルチ・スレッド・メモリに使用される、スレッド選択方法を提供することによって、本発明の目的が達成される。前記単一プロセッサは、一度に１つのスレッドを処理し、前記プロセッサは、マルチ・スレッド記憶セルの選択された１つに情報を提供する少なくとも１つの書き込みデコーダと、マルチ・スレッド記憶セルの選択された１つから情報をアクセスする少なくとも１つの読み取りデコーダとを含む。各マルチ・スレッド記憶セルは、Ｎ個の記憶素子を含む。ここで、Ｎ≧２であり、前記Ｎ個の記憶素子の各々は、スレッド対応内容をもつ。またこの記憶セルは、前記少なくとも１つの書き込みデコーダと作動状態で接続され、前記複数の記憶素子に情報を提供する書き込みインタフェースと、前記少なくとも１つの読み取りデコーダと作動状態で接続され、前記複数の記憶素子から情報を読み取る読み取りインタフェースとを含む。スレッド選択方法には、各前記Ｎ個の記憶素子にスレッド対応内容を提供するステップと、少なくとも部分的には対応するスレッドを識別することによって、前記複数のスレッド対応内容の１つをセル内で選択するステップと、少なくとも１つの前記書き込み及び読み取りインタフェースを介して、前記複数のスレッド対応内容の選択された１つを前記単一プロセッサに接続するステップを含む。前記複数のスレッド対応内容の１つをセル内で選択するステップは、次のような方法で選択する。即ち、単一プロセッサが処理しているスレッドをセルに示し、データ線を前記記憶素子の１つに直接接続するか、又は前記１つのスレッド対応内容が、前記書き込みインタフェース、及び読み取りインタフェースの１つに接続される記憶素子内に配置されるまで、前記Ｎ個の記憶素子間を前記複数のスレッド対応内容をシフトすることにより選択する。
【００２０】
本発明の前記の目的及びこの他の目的は、この後の本発明の詳細な説明により更に明らかになる。しかし、本発明の好ましい実施例を示しながら詳細な説明及び特定の例を提示するが、これは説明のために提示するものであり、本発明の意図と範囲を逸脱しない各種の変更及び修正が可能であることは、当分野に知識をもつ当業者にはこの詳細な説明から明らかであろう。
【００２１】
【発明の実施の形態】
図２は、標準記憶セルを使用した、従来の２スレッド・アレイ４８のブロック図である。アレイ４８は、スレッド０用の読み取りデコーダ４９から５２、スレッド０用の書き込みデコーダ５３、及び標準記憶セル５６（読み取りデコーダ４９から５２、及び書き込みデコーダ５３の各々と接続されている）のアレイ５４、スレッド１用の読み取りデコーダ５７から６０、スレッド１用の書き込みデコーダ６１、及びここでも標準記憶セル５６（読み取りデコーダ５７から６０、及び書き込みデコーダ６１の各々と接続されている）で構成される第２の記憶セルのアレイ６２を含む。各アレイ５４及びアレイ６２内のセル５６の１つのセルに対する配線相互接続だけが示されている。アレイ５４及びアレイ６２内の他の記憶セルについても、それぞれ同じ接続が存在する。スレッド選択（デコーダ４９から５３、及びデコーダ５７から６１により実行される）は、アレイ内のセルの内部ではなく、各セルの外部で実施される。
【００２２】
図２に示す従来の２スレッド・アレイは、共通読み取りデータ・バスを備えているが、これはスレッド０とスレッド１の各々からのデータの同時読み取りを可能にするために、２つの読み取りデコーダが要求されるので、読み取り独立性が必要な機能属性であるという仮定を反映している。ここでも発明者達は、最適な配線配置性（及び関連する最適な最小数のトランジスタ）を備えたマルチ・スレッド・メモリは、読み取り独立性を除去することによって、著しく不都合な結果が生じることなく実現でき、その理由は、複数のスレッドからの同時読み取りが必要である事象の発生数は、無視できるほど少数だからであることを明らかにした。
【００２３】
図３は、本発明のマルチ・スレッド記憶セルの第１の実施例を示すブロック図である。特に図３は、スレッド０及びスレッド１を選択的に読み取りポート１１４に接続するスレッド・セレクタ１１０を含む、マルチ・スレッド読み取りインタフェースを示す。読み取りポート１１４の数は、記憶素子１０４及び１０８から読み取ることができる機能ユニットの数（普通は２つ以上であり、６または８など）に一致する。読み取り動作では、各記憶素子が次のように機能ユニットに接続される。即ち、記憶素子がセレクタ１１０に接続される。セレクタ１１０はポート１１４の１つに接続される。この接続されたポートがデコーダに接続され、デコーダが機能ユニットに接続される。
【００２４】
図３は、スレッド０用の書き込みポート１０２、及びスレッド１用の書き込みポート１０６（書き込みポートの数は、例えば記憶素子１０４に書き込みできる機能ユニットの数に一致し、普通は２つ以上であり、３または１２などである）、スレッド０用記憶素子１０４（書き込みポート１０２とスレッド・セレクタ１１０に接続されている）、及びスレッド１用記憶素子１０８（書き込みポート１０６とスレッド・セレクタ１１０に接続されている）も含む。
【００２５】
図３のマルチ・スレッド・セルは、読み取り独立性を削除することにより、実質的に不都合な結果が生じることなく、チップ表面面積の消費を十分に減らすことができ、その理由は、一度に１つのスレッドしかアクセスできない単一プロセッサにとって、読み取り独立性は無視できるほど小さい機能属性であるからであるという発明者の発見を反映するものである。スレッド０及びスレッド１の各々に個別の読み取りポートを構成する（従来の技術）ために必要なトランジスタの数より、スレッド・セレクタ１１０と読み取りポート１１４の構成に必要なトランジスタの数のほうが少ないので、著しく不都合な結果が生じることなく、表面面積の経済性を高められる。
【００２６】
図３では、プロセッサ（図示せず）はスレッド・セレクタ１１０がスレッド０を選択するように制御して、記憶素子１０４内のデータを読み取ることにより、記憶素子１０４のデータを読み取りポート１１４上で使用可能にできる。同様に、記憶素子１０８内のデータを読み取るには、プロセッサは、スレッド・セレクタ１１０が記憶素子１０８からの線を選択するように制御する必要がある。
【００２７】
図４は、本発明の第１の実施例の更に詳細なブロック図である。図４は、マルチ・スレッド記憶セル１６０で構成される２スレッド・アレイ１５０を示す。図４の２スレッド・アレイ１５０は、読み取りデコーダ１５１から１５４、スレッド０用の書き込みデコーダ１５５、スレッド１用の書き込みデコーダ１５６、及びマルチ・スレッド記憶セル１６０のアレイ１５８を含む。ここでも、アレイ１５８内のセルの相互接続はすべて同じなので、記憶セル１６０の１つのセルに対する配線相互接続だけを示す。
【００２８】
書き込みデコーダ１５５及び１５６の各々は、書き込みアドレス・バス１６８に接続され、またデコーダ自身の書き込みスレッド選択線１６６及び１７０にそれぞれ接続される。言い替えると、スレッド選択は、２スレッド・レジスタ１５０の外部で実行される。これと対照的に、単一の読み取りデコーダ１５２は、読み取りアドレス・バス１６２に接続されるが、読み取り選択線１６４には接続されない。むしろ各メモリ・セル１６０が読み取り選択線に接続されるので、読み取られるスレッドの選択は、マルチ・スレッド記憶セル１６０の外部ではなく、セルの内部で実行される。
【００２９】
図４は図２と比較すると、必要なデコーダが８個ではなく４個だけであるという利点がある。このデコーダの数の減少は、４個の余分なデコーダに関連する表面面積消費の削減や、４つの余分なデコーダに関連する制御論理回路の削減だけではなく、各デコーダ５７から６０からアレイ６２内の各セル５６に結ばれた配線相互接続に関連する表面面積の消費も削減する。このように、図４のアレイ１５０の配線配置性は、図２のアレイ５４の配線配置性より優れている。また、図４の記憶セル１６０の数は図２の記憶セルの数の半分なので、読み取りデータ・バスを短くできる。これは例えば信号伝達時間を短くするので、その結果応答が早まる。図４は４つの読み取りデコーダを示すが、１個以上いくつであってもよい。
【００３０】
図５は、本発明の第１の実施例の概略図である。特に図３のブロックが、ＣＭＯＳトランジスタで構成されたものとして示されている。ただし本発明は、他の技術の中でも特にＮＭＯＳ、ＢＩＣＭＯＳ、ＢＩＮＭＯＳ、バイポーラ、ＳＯＩ、及びＧａＡＳに適用可能である。記憶素子１０４がトランジスタ２０８から２１８で構成され、単一ビットを保持する。書き込みポート１０２が、トランジスタ２００から２０２で構成され、単一ポートだけをもつものとして示される（記憶素子１０４に書き込む機能ユニットが１つだけという単純な想定に基づく）。同様に、書き込みポート１０６もトランジスタ２０４から２０６で構成される。記憶素子１０８が、トランジスタ２２０から２３０で構成される。
【００３１】
スレッド・セレクタ１１０が、トランジスタ２３４から２４４で構成される。ライン２３７（トランジスタ２３４のゲートとトランジスタ２４０のゲートに接続される）上の信号「ＴＨＢ」の状態、及びライン２３９（トランジスタ２３６のゲートとトランジスタ２３８のゲートに接続される）上の信号「ＴＨＡ」の状態に基づき、スレッド・セレクタ１１０は、第１のスレッドか第２のスレッドのどちらかを選択する。読み取りポート１１４は、２つのポートを含む。第１のポート２４５は、トランジスタ２４６から２４８で構成され、第２のポート２５０は、トランジスタ２５２から２５４で構成される。ここでも各インタフェースのポートの数は、実際には、記憶素子への書き込みや記憶素子からの読み取りを実行する機能ユニットの数に従って変化する。
【００３２】
図６は、第１の実施例の書き込みポート、例えば図３の１０２及び１０６が、伝送ゲート（図５に示す）としてではなく、パス・ゲートとして構成できることを示す。代替として、他の技術の中で特にセット／リセット・ゲート、又はデュアル・エンド・パス・ゲートを使用できる。
【００３３】
図７は、本発明のマルチ・スレッド記憶セルの第２の実施例を示すブロック図である。図７には、スレッド・セレクタ３０２にデータを供給する書き込みポート３００の単一セット、スレッド０用記憶素子３０４（スレッド・セレクタ３０２に接続される）、スレッド０用読み取りポート３０６（記憶素子３０４に接続される）、スレッド１用記憶素子３０８（スレッド・セレクタ３０２に接続される）、及びスレッド１用読み取りポート３１０（記憶素子３０８に接続される）が含まれる。ここでも書き込みポート及び読み取りポートの数は、それぞれ記憶素子３０４及び３０８を読み書きする機能ユニットの数に一致する。書き込み動作では、各機能ユニットは次のようにして記憶素子に接続される。即ち、機能ユニットは書き込みデコーダに接続され、書き込みデコーダはポート３００の１つに接続され、この接続されたポートが書き込みセレクタ３０２に接続され、更に書き込みセレクタ３０２が各記憶素子に接続される。
【００３４】
発明者達は、ここでも実際上、最適化された配線配置性（及び関連する最適な最小数のトランジスタ）をもつマルチ・スレッド・メモリは、（アプリケーションによっては）書き込み独立性を削除することにより、実質的に不都合な結果が生じることなく達成でき、その理由は、スレッド０の記憶素子３０４とスレッド１の記憶素子３０８の両方に同時に書き込むためのデータが用意されるような事象は、ほとんど発生しないためであることを明らかにした。このように発明者達は、この実施例では書き込み独立性機能を除去することにより（図７に示すように）、著しく不都合な結果が生じることなく、表面面積の経済性を大きく増進させた。
【００３５】
図８は、本発明のマルチ・スレッド記憶セルの第３の実施例を示すブロック図である。図８では、スレッド０の記憶素子３５６及びスレッド１の記憶素子３５８が、双方ともスレッド・セレクタ３５４を介して書き込みポート３５２の単一セットに接続されている。同様に記憶素子３５６及び３５８は、どちらもスレッド・セレクタ３６０を介して読み取りポート３６２の単一セットに接続されている。
【００３６】
図９は、本発明の第１の実施例において、内容をアドレス指定できるバージョンを示すブロック図である。図３に示す第１の実施例のバージョンで使用されたものと同じ素子には、同じ参照番号が付けられている。図９と図３の唯一の相違点は、読み取りポート１１４だけではなく、比較ポート４０２もスレッド・セレクタ１１０の出力を受信することである。内容をアドレス指定できるメモリは周知の技術なので、説明は最小限に止める。
【００３７】
図１０は、第１の実施例のマルチ・スレッド・メモリ・セルの内容をアドレス指定できるバージョンを示す概略図である。特に比較ポート４０２は、単純にするためにトランジスタ４２０から４３４で構成される単一ポートだけを含むように示されているが、このようなポートを複数個使用することが可能である。
【００３８】
図１１は、本発明の第１の実施例の自己テスト機能付きで、内容をアドレス指定できるバージョンを示すブロック図である。図１１と図９の相違点は、記憶素子１０４が、ラッチ４５２及び４５４に置き換えられ、また記憶素子１０８が、ラッチ４５６及び４５８に置き換えられている点である。更にスイッチ４６０が、ラッチ４５４をラッチ４５６に接続する。書き込みポート１０２に加えて、ラッチ４５２がスキャン・ポート４５０からデータを受信する。ラッチ４５２及び４５４を通り、スイッチ４６０、ラッチ４５６及び４５８を通るスキャン・ポート４５０からのパスは、第１の実施例のマルチ・スレッド・メモリ・セルにレベル・センシティブ走査設計（「ＬＳＳＤ」）方法を統合する。
【００３９】
ラッチ４５２と４５４、及びラッチ４５６と４５８の各ペアは、マスタ・ラッチ及びスレーブ・ラッチとして動作し、シフト・レジスタ・ラッチ・ペアを構成する。これらのラッチ・ペアは、スイッチ４６０を介して接続される。同様に構成された他のメモリ・セルと共に、このような一連のマスタ／スレーブ・ラッチ・ペアは、多様な方法でシフト・レジスタのように動作する。既知のデータを、この疑似シフト・レジスタを通じて循環させる、即ちスキャンさせることにより、回路が正常に動作しているか否かをテストできる。このようなＬＳＳＤ技術は周知の技術であり、例えばＳｍｉｔｈに発行された米国特許第５，３３１，６４３号に開示されている。
【００４０】
図１２は、第１の実施例の自己テスト機能付きで、内容をアドレス指定できるバージョンの概略を示す図である。スキャン・ポート４５０が、トランジスタ５０２から５０４で構成される。ラッチ４５２は図５の記憶素子１０４に相当し、トランジスタ２０８から２１８で構成される。同様に、ラッチ４５６は図５の記憶素子１０８に相当し、トランジスタ２２０から２３０で構成される。ラッチ４５４は、トランジスタ５０６から５１２で構成される。ラッチ４５８は、トランジスタ５１４から５２０で構成される。
【００４１】
図１１に示される第１の実施例のバージョンは、比較ポート４０２を削除して変形することができる。
【００４２】
図１３は、本発明のマルチ・スレッド記憶セルの第４の実施例を示すブロック図である。図１３は４スレッド記憶セルを示し、ここでは４つのスレッドが、リング状に接続される４つの記憶素子５５２から５５８で表される。特定のスレッドに対応するデータの読み取りや書き込みのために、所要のスレッドに対応する内容（「スレッド対応内容」）が、主記憶素子５５２内に配置されるまでリング内を循環、即ちスキャンされる。
【００４３】
図１３では、主記憶素子５５２がスレッド１に対応し、記憶素子５５４がスレッド２に対応し、記憶素子５５６がスレッド３に対応し、また記憶素子５５８がスレッド４に対応するが、この対応関係は変化することに注意されたい。例えば、記憶素子の内容が位置を１つだけ循環／スキャンされる場合、結果は主記憶素子５５２がスレッド４に対応し、記憶素子５５４がスレッド１に対応し、記憶素子５５６がスレッド２に対応し、記憶素子５５８がスレッド３に対応するようになる。
【００４４】
主記憶素子５５２は、ラッチ５６０及びラッチ５６４で構成され、これらのラッチはインバータ５６２を介して接続されている。記憶素子５５４は、ラッチ５６８及びラッチ５７０で構成され、ラッチ５６８は、３対１マルチプレクサ５６６を介してラッチ５６４に接続される。記憶素子５５６はラッチ５７４及びラッチ５７６で構成され、ラッチ５７４はスイッチ５７２を介してラッチ５７０に接続される。第４の記憶素子５５８は、ラッチ５８０及びラッチ５８２で構成され、ラッチ５８０は、スイッチ５７８を介してラッチ５７６に接続される。ラッチ５８２は２対１マルチプレクサ５８４、及び３対１マルチプレクサ５８６を介してラッチ５６０に接続される。繰り返すと、リングのパスが記憶素子５５２、３対１マルチプレクサ５６６、記憶素子５５４、スイッチ５７２、記憶素子５５６、スイッチ５７８、記憶素子５５８、２対１マルチプレクサ５８４及び３対１マルチプレクサ５８６を通る。必要な場合は、リング・パスを２対１マルチプレクサ５８４を使って選択的に短くして、ラッチ５６４からの出力を選択するように制御できる。
【００４５】
図１３の４スレッド記憶セルからデータを読み取るときには、データは、ラッチ５６０からインバータ５６２及びインバータ５８８を通り、読み取りポート５９０に渡される。これは例えばマイクロプロセッサ（図示せず）、又は別個のタイミング回路（図示せず）からのタイミング信号に従って行われる。読み取りポート５９０は、記憶素子５５２からデータを読み取ることができる機能ユニットの数と同じ数だけ存在する。
【００４６】
スレッド対応内容のスキャニング／循環は、マイクロプロセッサなどのコントローラ（図示せず）から図１４、図１５のトランジスタ６７４、６９２、６６８、７０９、７１６、７２６、７３６、７５２、及び７６０に供給されるタイミング信号により制御される。
【００４７】
データは、次の４つの方法の１つにより図１３の４スレッド・メモリ・セルに書き込まれる。第１の方法は、コントローラの算術論理演算ユニット（「ＡＬＵ」）（図示せず）の機能ユニットからのデータを、ＡＬＵ書き込みポート５９２の１つで受信する。このデータは、バッファ５９４及び３対１マルチプレクサ５８６を通ってラッチ５６０に渡される。データ書き込みの第２の方法では、データはバッファ５９４を通り、直接３対１マルチプレクサ５６６に向かい、このマルチプレクサを通って記憶素子５５４のラッチ５６８に渡される。何らかの時間的制約が原因で、リング内のデータを循環させねばならない時間までに、主記憶素子５５２のラッチ５６０にデータのすべてを書き込めなかった場合に、このような３対１マルチプレクサ５６６を介したバイパスが行われる。
【００４８】
第３及び第４のデータ書き込み方法は、ロード・データ・ポート５９６に関係する。ロード・ポート５９６からのデータは、バッファ５９８を通ってから、３対１マルチプレクサ５８６を通って記憶素子５５２に渡されるか、又は３対１マルチプレクサ５６６を通って記憶素子５５４に渡されるかのどちらかである。ここでもロード・データ・ポート５９６が設けられることにより、所要のスレッドに対する対応内容が、記憶素子５５２から記憶素子５５４に循環／スキャンされた後で、残りのデータを記憶素子５５４に書き込むことにより、記憶素子５５２への不完全なデータ書き込み動作を補完する。
【００４９】
図１４及び図１５は、本発明の第４の実施例の概略図である。バッファ５９８は、トランジスタ６５２から６５６で構成される。同様にバッファ５９４は、トランジスタ６５８から６６２で構成される。バッファ５９８及びバッファ５９４は、ポート５９６及びポート５９２から３対１マルチプレクサ５６６及び５８６それぞれへの直流（「ＤＣ」）の伝送を防ぐためのフィードバックをもつ構成になっている。
【００５０】
３対１マルチプレクサ５８６は、トランジスタ６７０から６７４で構成される。同様に、３対１マルチプレクサ５６６は、トランジスタ６６４から６６８で構成される。ラッチ５６０は、トランジスタ６７６から６８２で構成される。インバータ５６２は、トランジスタ６８４から６８６で構成される。インバータ５８８は、トランジスタ６８８から６９０で構成される。読み取りポート５９０は、それぞれトランジスタ７７０から７８４で構成される。ロード・データ・ポート５９６は、それぞれトランジスタ８０２から８０８で構成される。ＡＬＵ書き込みデータ・ポート５９２は、それぞれトランジスタ７８６から８００で構成される。
【００５１】
ラッチ５６４は、トランジスタ６９２から７００で構成される。ラッチ５６８は、トランジスタ７０２から７０８で構成される。ラッチ５７０は、トランジスタ７０９から７１４で構成される。スイッチ５７２は、トランジスタ７１６で構成される。ラッチ５７４は、トランジスタ７１８から７２４で構成される。ラッチ５７６は、トランジスタ７２６から７３４で構成される。スイッチ５７８は、トランジスタ７３６で構成される。ラッチ５８０は、トランジスタ７３８から７４４で構成される。ラッチ５８２は、トランジスタ７４６から７５２で構成される。２対１マルチプレクサ５８４は、トランジスタ７５４から７６０で構成される。
【００５２】
マルチ・スレッド・メモリ・セルの本発明の実施例は、２スレッド及び４スレッドを備えるものとして示してきた。これらのスレッド数は、例として示したものであり、特定のアプリケーションの必要性に合わせて変更可能である。同様に、マルチ・スレッド・セルの記憶素子を読み書きできる機能デバイスの数も、ここでは例として示したものなので、特定のアプリケーションに合わせて変更可能である。
【００５３】
図３から図１５に示した本発明の各実施例は、スレッド対応の記憶素子内容の選択がセル内で実行されるという共通の属性をもつ。この共通の属性は、２つの思想に従って本発明で実現された。即ち、例えば図３から図１２に示すような、データ線のデータ／記憶素子への効率的な関連付け、及び例えば図１３から図１５に示すような、データのデータ線への効率的な伝送の２つである。更に各実施例は、最適な配線配置性（及び関連する最適な最小数のトランジスタ）を備えるマルチ・スレッド・メモリは、読み取り独立性及び書き込み独立性の機能性が実際上無視できるほど小さいので、従来の技術の支配的な考えとは逆に、これらの独立性を除去することにより、実質的に不都合な結果が生じることなく作成できるという、発明者が明確にした利点を利用している。これらの機能性の１つ又は両方を実現するために必要な余分のトランジスタがないので、表面面積の経済性を増進させることができる。
【００５４】
上記の説明のように、書き込みポート及び読み取りポートの数は、それぞれメモリ内の各セルへの書き込みや、セルからの読み取りができる機能ユニットの数により決まる。一般的に、セル毎に少なくとも２つの書き込みポート、及び少なくとも２つの読み取りポートが存在する。セル当たりの書き込みポート及び読み取りポートの組み合せの例としては、３書き込みポートと６読み取りポート、及び１２書き込みポートと８読み取りポートなどがある。
【００５５】
図３から図１５で示した本発明の実施例は、マルチ・スレッド・コンピュータ用の汎用アレイとして、マルチ・スレッド・コンピュータのスキャン可能な汎用アレイとして、超長命令語（「ＶＬＩＷ」）コンピュータ用アレイとして、及びマルチ・スレッド・コンピュータの内容をアドレス指定できるメモリとして使用できる。
【００５６】
本実施例はスレッド・セレクタを使用しているため、スレッドを追加するときに、各スレッド用の書き込みポート及び読み取りポートの別個のセットを追加する必要がないという利点がある。
【００５７】
更に本実施例は、スレッド・デコーディングがセル内で実行される、即ちセル内スレッド・デコーディングという利点ももつ。このセル内スレッド・デコーディングは、通常最も重要なパラメータである読み取り性能が、スレッドの追加による影響を受けないという効果がある。
【００５８】
本明細書で説明した本発明は、多様な方法で変形できることは明らかである。このような変形は、本発明の意図と範囲を逸脱しないものであり、このような変更のすべてが、前記特許請求の範囲に含まれるように解釈されるものであることは、当分野に知識をもつ当業者には明らかであろう。
【００５９】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００６０】
（１）
一度に１つのスレッドを処理する単一プロセッサをもち、複数のスレッドを使用するマルチ・スレッド・コンピュータ・システムにおけるマルチ・スレッド・メモリであって、前記マルチ・スレッド・メモリが、
（Ａ）複数のマルチ・スレッド記憶セルと、
（Ｂ）前記マルチ・スレッド記憶セルの選択された１つに情報を供給する少なくとも１つの書き込みデコーダと、
（Ｃ）前記マルチ・スレッド記憶セルの選択された１つから情報をアクセスする少なくとも１つの読み取りデコーダと、
を含み、
各前記マルチ・スレッド記憶セルが、
（ａ）各々がスレッド対応内容を有する、Ｎ≧２（Ｎは自然数）であるＮ個の記憶素子と、
（ｂ）前記少なくとも１つの書き込みデコーダに作動状態で接続され、前記複数の記憶素子に情報を提供する書き込みインタフェースと、
（ｃ）前記少なくとも１つの読み取りデコーダに作動状態で接続され、前記複数の記憶素子から情報を読み取る読み取りインタフェースと、
を含み、
少なくとも１つの前記読み取りインタフェース及び書き込みインタフェースが、少なくとも部分的に対応するスレッドを識別することに基づいて前記スレッド対応内容の１つを選択することにより、セル内部の前記スレッド対応内容の選択が実施される、
マルチ・スレッド・メモリ。
（２）
少なくとも１つの前記インタフェースが、
（ａ）選択されたスレッドに対応するＮ個の記憶素子の１つを選択するＮセレクタと、
（ｂ）前記少なくとも１つのデコーダに前記Ｎセレクタを接続する、デコーダ当たり１ポートの割合で存在する少なくとも１つのポートと、
を含む、（１）に記載のマルチ・スレッド・メモリ。
（３）
前記読み取りインタフェースが、Ｎセレクタ及びデコーダ当たり１ポートを含む、（２）に記載のマルチ・スレッド・メモリ。
（４）
（ａ）記憶素子当たり少なくとも１デコーダの比率を確保するために十分な数である少なくともＮ個のデコーダと、
（ｂ）各記憶素子に対して、前記記憶素子を前記デコーダに作動状態で接続するデコーダ当たり１つのポートを含み、これによって複数のスレッドに同時に書き込むことを可能にする前記書き込みインタフェースと、
を含む、（３）に記載のマルチ・スレッド・メモリ。
（５）
前記書き込みインタフェースが、Ｎセレクタ及びデコーダ当たり１ポートを含む、（３）に記載のマルチ・スレッド・メモリ。
（６）
前記読み取りインタフェース及び書き込みインタフェースが、伝送ゲートで構成されるポートを含む、（１）に記載のマルチ・スレッド・メモリ。
（７）
前記読み取りインタフェース及び書き込みインタフェースが、パス・ゲートで構成されるポートを含む、（１）に記載のマルチ・スレッド・メモリ。
（８）
各前記記憶素子がマスタ記憶素子であり、
前記マルチ・スレッド記憶セルが、
（ａ）前記マスタ記憶素子にそれぞれが対応するＮ個のスレーブ記憶素子と、
（ｂ）各前記マスタ／スレーブ記憶素子ペアに関連し、前記スレーブ記憶素子を対応する前記マスタ記憶素子内のデータの正確性の検証に使用するためのスキャニング手段と、
を更に含む、
（１）に記載のマルチ・スレッド・メモリ。
（９）
前記マルチ・スレッド・メモリが、内容をアドレス指定できるメモリであり、前記マルチ・スレッド・メモリが、各前記マルチ・スレッド記憶セルに関連付けられている、所要のビット・パターン内の各ビット値を各前記スレッド対応内容と比較し、すべてのビット値の一致を識別するための比較手段を更に含む、
（１）に記載のマルチ・スレッド・メモリ。
（１０）
前記マルチ・スレッド記憶セル内のＮ個の記憶素子がリング状に接続され、
前記インタフェースが作動状態で前記Ｎ個の記憶素子のいずれかに接続され、
所要のスレッド対応内容が、前記インタフェースが接続された前記記憶素子内に配置されるまで、前記記憶素子内の前記スレッド対応内容を前記リング内で循環させることにより、スレッド選択が行われる、
（１）に記載のマルチ・スレッド・メモリ。
（１１）
各前記記憶素子がラッチのペアを含む、（１０）に記載のマルチ・スレッドメモリ。
（１２）
各前記マルチ・スレッド記憶セルが、
前記書き込みインタフェースが接続されている記憶素子とは別の記憶素子に接続され、前記書き込みインタフェースがアクセスするポイントとは別の前記リング上のポイントへのアクセスを可能にする、補助の書き込みインタフェースを含む、
（１０）に記載のマルチ・スレッド・メモリ。
（１３）
前記書き込みインタフェース及び読み取りインタフェースが同じ記憶素子に接続され、
各前記マルチ・スレッド記憶セルが、
前記インタフェースに接続されている記憶素子が、スレッド内容を循環させるときに前記リング内の他の記憶素子をバイパスできるようにする、リング・バイパス手段を更に含む、
（１０）に記載のマルチ・スレッド・メモリ。
（１４）
前記マルチ・スレッド・メモリが少なくとも２つの書き込みデコーダ及び少なくとも２つの読み取りデコーダを含み、
前記書き込みインタフェースが、各前記書き込みデコーダ用に記憶セル当たり少なくとも１つのポートを含み、
前記読み取りインタフェースが、各前記読み取りデコーダ用に記憶セル当たり少なくとも１つのポートを含む、
（１）に記載のマルチ・スレッド・メモリ。
（１５）
前記マルチ・スレッド・メモリが、３個の書き込みデコーダ及び６個の読み取りデコーダのセット、又は１２個の書き込みデコーダ及び８個の読み取りデコーダのセットのどちらかを含む、（１４）に記載のマルチ・スレッド・メモリ。
（１６）
（１）から（１５）の任意の１つに記載されたマルチ・スレッド・メモリを含むマイクロプロセッサ。
（１７）
単一プロセッサをもち、複数のスレッドを使用するマルチ・スレッド・コンピュータ・システム内で使用するための、複数のマルチ・スレッド記憶セルで構成されるマルチ・スレッド・メモリにおいて、前記単一プロセッサが一度に１つのスレッドを処理し、前記単一プロセッサが、前記マルチ・スレッド記憶セルの選択された１つに情報を供給する少なくとも１つの書き込みデコーダと、前記マルチ・スレッド記憶セルの選択された１つから情報をアクセスする少なくとも１つの読み取りデコーダとを含み、各前記マルチ・スレッド記憶セルが、Ｎ≧２（Ｎは自然数）であるＮ個の記憶素子と、前記少なくとも１つの書き込みデコーダに作動状態で接続され、前記複数の記憶素子に情報を供給する書き込みインタフェースと、前記少なくとも１つの読み取りデコーダに作動状態で接続され、前記複数の記憶素子から情報を読み取る読み取りインタフェースとを含む、前記マルチ・スレッド・メモリにおいて、
（ａ）各前記Ｎ個の記憶素子にスレッド対応内容を提供するステップと、
（ｂ）少なくとも部分的に対応するスレッドを識別することによって、前記複数のスレッド対応内容の１つをセル内部で選択するステップと、
（ｃ）前記複数のスレッド対応内容の選択された１つを、前記書き込みインタフェース及び読み取りインタフェースの少なくとも１つを介して前記単一プロセッサに接続するステップと、
を含むスレッド選択方法。
（１８）
前記セル内部で選択するステップが、前記単一プロセッサが処理しつつある前記スレッドを前記セルに示すステップを含む、（１７）に記載のスレッド選択方法。
（１９）
前記複数のスレッド対応内容の１つをセル内部で選択する前記ステップが、前記記憶素子の１つに直接にデータ線を接続することにより選択する、（１７）に記載のスレッド選択方法。
（２０）
前記複数のスレッド対応内容の１つをセル内部で選択する前記ステップが、前記スレッド対応内容の１つが、前記書き込みインタフェース及び読み取りインタフェースの１つに接続された記憶素子内に配置されるまで、前記複数のスレッド対応内容を前記Ｎ個の記憶素子間をシフトすることにより選択する、（１７）に記載のスレッド選択方法。
（２１）
一度に１つのスレッドを処理する単一プロセッサをもち、複数のスレッドを使用するマルチ・スレッド・コンピュータ・システムにおけるマルチ・スレッド・メモリであって、前記マルチ・スレッド・メモリが
（Ａ）複数のマルチ・スレッド記憶セルと、
（Ｂ）前記マルチ・スレッド記憶セルの選択された１つに情報を供給する少なくとも１つの書き込みデコーダと、
（Ｃ）前記マルチ・スレッド記憶セルの選択された１つから情報をアクセスする少なくとも１つの読み取りデコーダと、
を含み、
各前記マルチ・スレッド記憶セルが、
（ａ）各々がスレッド対応内容を有する、Ｎ≧２（Ｎは自然数）であるＮ個の記憶素子と、
（ｂ）前記少なくとも１つの書き込みデコーダに作動状態で接続され、前記複数の記憶素子に情報を供給する書き込みインタフェースと、
（ｃ）前記少なくとも１つの読み取りデコーダに作動状態で接続され、前記複数の記憶素子から情報を読み取る読み取りインタフェースと、
を含み、
少なくとも１つの前記読み取りインタフェース及び書き込みインタフェースが、
（１）選択されたスレッドに対応する、前記Ｎ個の記憶素子の１つを選択するＮセレクタと、
（２）少なくとも１つのデコーダに前記Ｎセレクタを接続する、デコーダ当たり少なくとも１ポートの割合で存在する少なくとも１つのポートと、
を含む、
マルチ・スレッド・メモリ。
（２２）
前記読み取りインタフェースが、Ｎセレクタ及びデコーダ当たり少なくとも１ポートを含む、（２１）に記載のマルチ・スレッド・メモリ。
（２３）
前記マルチ・スレッド・メモリが、スレッド当たり少なくとも１デコーダの割合で、少なくとも２つの書き込みデコーダを含み、
前記書き込みインタフェースが、各記憶素子に対して、デコーダ当たり少なくとも１ポートのセットを含むことにより、複数のスレッドに同時に書き込みが可能な、
（２２）に記載のマルチ・スレッド・メモリ。
（２４）
前記マルチ・スレッド・メモリが、少なくとも２つの書き込みデコーダと、少なくとも２つの読み取りデコーダとを含み、
前記書き込みインタフェースが、各前記書き込みデコーダ用に記憶セル当たり少なくとも１つのポートを含み、
前記読み取りインタフェースが、各前記読み取りデコーダ用に記憶セル当たり少なくとも１つのポートを含む、
（２１）に記載のマルチ・スレッド・メモリ。
（２５）
前記マルチ・スレッド・メモリが、３個の書き込みデコーダ及び６個の読み取りデコーダのセット、又は１２個の書き込みデコーダ及び８個の読み取りデコーダのセットのどちらかを含む、（２４）に記載のマルチ・スレッド・メモリ。
（２６）
一度に１つのスレッドを処理する単一プロセッサをもち、複数のスレッドを使用するマルチ・スレッド・コンピュータ・システムにおけるマルチ・スレッド・メモリであって、前記マルチ・スレッド・メモリが、
（Ａ）複数のマルチ・スレッド記憶セルと、
（Ｂ）前記マルチ・スレッド記憶セルの選択された１つに情報を供給する少なくとも１つの書き込みデコーダと、
（Ｃ）前記マルチ・スレッド記憶セルの選択された１つから情報をアクセスする少なくとも１つの読み取りデコーダと、
を含み、
各前記マルチ・スレッド記憶セルが、
（ａ）各々がスレッド対応内容を有する、Ｎ≧２（Ｎは自然数）であるＮ個の記憶素子と、
（ｂ）前記少なくとも１つの書き込みデコーダ及び少なくとも１つの記憶素子に作動状態で接続され、前記複数の記憶素子に情報を供給する書き込みインタフェースと、
（ｃ）前記少なくとも１つの読み取りデコーダ及び少なくとも１つの記憶素子に作動状態で接続され、前記複数の記憶素子から情報を読み取る読み取りインタフェースと、
（ｄ）マルチ・スレッド記憶セル内のリング状に接続されたＮ個の記憶素子と、
を含み、
所要のスレッド対応内容が、前記インタフェースが接続された前記記憶素子内に配置されるまで、前記記憶素子内の前記スレッド対応内容をリング内でシフトすることにより、スレッド選択が行われる、
マルチ・スレッド・メモリ。
（２７）
各前記記憶素子がラッチのペアを含む、（２６）に記載のマルチ・スレッド・メモリ。
（２８）
各前記マルチ・スレッド記憶セルが、
前記書き込みインタフェースが接続されている記憶素子とは別の記憶素子に接続され、前記書き込みインタフェースがアクセスするポイントとは別の前記リング上のポイントへのアクセスを可能にする、補助の書き込みインタフェースを含む、
（２６）に記載のマルチ・スレッド・メモリ。
（２９）
前記書き込みインタフェース及び読み取りインタフェースが同じ記憶素子に接続され、
各前記マルチ・スレッド記憶セルが、
前記インタフェースに接続された記憶素子が、スレッド内容を循環させるときに前記リング内の他の記憶素子をバイパスできるようにする、リング・バイパス手段を更に含む、
（２６）に記載のマルチ・スレッド・メモリ。
（３０）
前記マルチ・スレッド・メモリが、少なくとも２つの書き込みデコーダと少なくとも２つの読み取りデコーダとを含み、
前記書き込みインタフェースが、各前記書き込みデコーダ用に記憶セル当たり少なくとも１ポートを含み、
前記読み取りインタフェースが、各前記読み取りデコーダ用に記憶セル当たり少なくとも１ポートを含む、
（２６）に記載のマルチ・スレッド・メモリ。
（３１）
前記マルチ・スレッド・メモリが、３個の書き込みデコーダ及び６個の読み取りデコーダのセット、又は１２個の書き込みデコーダ及び８個の読み取りデコーダのセットのどちらかを含む、（３０）に記載のマルチ・スレッド・メモリ。
【図面の簡単な説明】
【図１】標準記憶素子の２スレッド記憶アレイ中の、従来技術のセルを示すブロック図である。
【図２】共通読み取りデータ・バスを備えた標準記憶セルの、従来技術の２スレッド・アレイを示すブロック図である。
【図３】本発明のマルチ・スレッド記憶セルの第１の実施例を示すブロック図である。
【図４】本発明の第１の実施例の更に詳細を示すブロック図である。
【図５】本発明の第１の実施例の概略図である。
【図６】第１の実施例の書き込みポートを実現するための１代替方法を示す図である。
【図７】本発明のマルチ・スレッド記憶セルの第２の実施例を示すブロック図である。
【図８】本発明のマルチ・スレッド記憶セルの第３の実施例を示すブロック図である。
【図９】本発明の第１の実施例の内容をアドレス指定できるバージョンを示すブロック図である。
【図１０】本発明の第１の実施例の内容をドレス指定できるバージョンの概略図である。
【図１１】本発明の第１の実施例の自己テスト機能付きで、内容をアドレス指定できるバージョンを示すブロック図である。
【図１２】本発明の第１の実施例の自己テスト機能付きで、内容をアドレス指定できるバージョンの概略図である。
【図１３】本発明のマルチ・スレッド記憶セルの第４の実施例を示すブロック図である。
【図１４】本発明の第４の実施例の概略図である。
【図１５】本発明の第４の実施例の概略図である。
【符号の説明】
４８  ２スレッド・アレイ（図２）
５４  標準記憶セルのアレイ（図２）
６２  標準記憶セルのアレイ（図２）
１５０  ２スレッド・アレイ（図４）
１５８  アレイ（図４）
２００、２０２  トランジスタ（図５、図１０、図１２）
２０４、２０６  トランジスタ（図５、図１０、図１２）
２０８、２１０、２１２、２１４、２１６、２１８  トランジスタ（図５、図１０、図１２）
２２０、２２２、２２４、２２６、２２８、２３０  トランジスタ（図５、図１０、図１２）
２３４、２３６、２３８、２４０、２４２、２４４  トランジスタ（図５、図１０、図１２）
２３７、２３９  入力ライン（図５、図１０、図１２）
２４５、２５０  読み取りポート（図５）
２４６、２４８  トランジスタ（図５、図１０、図１２）
２５２、２５４  トランジスタ（図５）
４２０、４２２、４２４、４２６、４２８、４３０、４３２、４３４  トランジスタ（図１０、図１２）
４５２、４５４、４５６、４５８  ラッチ（図１１、図１２）
５０２、５０４  トランジスタ（図１２）
５０６、５０８、５１０、５１２  トランジスタ（図１２）
５１４、５１６、５１８、５２０  トランジスタ（図１２）
５５２、５５４、５５６、５５８  記憶素子（図１３、図１５））
５６２、５８８  インバータ（図１３）
６５２、６５４、６５６  トランジスタ（図１４）
６５８、６６０、６６２  トランジスタ（図１４）
６６４、６６６、６６８  トランジスタ（図１４）
６７０、６７２、６７４  トランジスタ（図１４）
６７６、６７８、６８０、６８２  トランジスタ（図１４）
６８４、６８６  トランジスタ（図１４）
６８８、６９０    トランジスタ（図１４）
６９２、６９４、６９６、６９８、７００  トランジスタ（図１５）
７０２、７０４、７０６、７０８  トランジスタ（図１５）
７０９、７１０、７１２、７１４  トランジスタ（図１５）
７１６    トランジスタ（図１５）
７１８、７２０、７２２、７２４  トランジスタ（図１５）
７２６、７２８、７３０、７３４  トランジスタ（図１５）
７３６  トランジスタ（図１５）
７３８、７４０、７４２、７４４  トランジスタ（図１５）
７４６、７４８、７５０、７５２  トランジスタ（図１５）
７５４、７５６、７５８、７６０  トランジスタ（図１５）
７７０、７７２、７７４、７７６、７７８、７８０、７８２、７８４  トランジスタ（図１４）
７８６、７８８、７９０、７９２、７９４、７９６、７９８、８００  トランジスタ（図１４）
８０２、８０４、８０６、８０８  トランジスタ（図１４）
【図１】
0003562552.tif 000002
【図２】
0003562552.tif 000003
【図３】
0003562552.tif 000004
【図４】
0003562552.tif 000005
【図５】
0003562552.tif 000006
【図６】
0003562552.tif 000007
【図７】
0003562552.tif 000008
【図８】
0003562552.tif 000009
【図９】
0003562552.tif 000010
【図１０】
0003562552.tif 000011
【図１１】
0003562552.tif 000012
【図１２】
0003562552.tif 000013
【図１３】
0003562552.tif 000014
【図１４】
0003562552.tif 000015
【図１５】
0003562552.tif 000016