(57)【特許請求の範囲】
【請求項１】
レジスタファイルの一部であって、
値を記憶する記憶素子と、
前記記憶素子から値を受け取る読取り線と、
前記記憶素子に書き込む値を該記憶素子に供給する書込み線と、
読取りおよび書込み操作の間、アクティブ状態をとる、合体された読取り/書込みワード線と、
書込み操作の間、書込み方向状態をとり、読取り操作の間、読取り方向状態をとる方向線と、
前記合体された読取り/書込みワード線がアクティブであり、かつ前記方向線が読取り方向状態をとるとき、前記読取り線を前記記憶素子に結合して該記憶素子から値を読み取り、前記合体された読取り/書込みワード線がアクティブ状態をとり、かつ前記方向線が書込み方向状態をとるとき、前記書込み線を該記憶素子に結合して該記憶素子に値を書き込む、一意に前記記憶素子に関連付けられたマルチプレクサと、
を備えるレジスタファイルの一部。
【請求項２】
前記マルチプレクサは、
前記方向線を入力で受け取り、反転された方向線を出力に供給するインバータと、
前記合体された読取り/書込みワード線を第１入力で受け取り、前記方向線を第２入力で受け取り、書込みイネーブル信号を出力に供給する第１論理ゲートと、
前記第１論理ゲートの出力に供給される書込みイネーブル信号に結合されるイネーブル入力、前記書込み線に結合される入力、および前記記憶素子に結合される出力をもつ第１トライステート・バッファと、
前記合体された読取り/書込みワード線を第１入力で受け取り、前記インバータの出力からの反転された方向を第２入力で受け取り、読取りイネーブル信号を出力に供給する第２論理ゲートと、
前記第２論理ゲートの出力に供給される前記読取りイネーブル信号に結合されるイネーブル入力、前記記憶素子への入力、および前記読取り線に結合される出力をもつ第２トライステート・バッファと、
を含む、請求項１に記載のレジスタファイルの一部。
【請求項３】
レジスタファイルのレジスタのビットを記憶する能力がある記憶素子に、書込み線からの値を書き込む方法であって、
合体された読取り/書込みワード線をアサートするステップと、
方向線を書込み方向状態に駆動するステップと、
前記記憶素子に一意に関連付けられたゲートを用いて、前記アサートされた合体された読取り/書込みワード線および前記方向線の書込み方向状態に基づいて、書込みイネーブル信号を形成するステップと、
前記書込みイネーブル信号に基づいて前記記憶素子に一意に関連付けられたバッファをイネーブルして、前記書込み線からの値を前記記憶素子のノードに伝送し、それによって前記記憶素子に前記値を保持させるステップと、
を含む方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、コンピュータ・プロセッサ内で使用されるレジスタに関連する。特に、この発明は、レジスタ書込み操作およびレジスタ内のワード線の編成および構成に関連する。
【０００２】
【従来の技術】
コンピューティング技術において、レジスタは、変数の一時的記憶のためにプロセッサ内で使用される。そのようなレジスタの集まりは、従来技術でレジスタファイルとして知られている。典型的に、レジスタファイルは、複数の読取りおよび書込みポートを含み、複数オペランドが１クロックサイクルにレジスタファイルに書き込まれ、そこから読み取られることを可能にする。
【０００３】
コンピュータシステムは、命令を実行することによってタスクを実施し、コンピュータ・システムの速さは、主に、命令が実行されるレートによって決定される。命令実行レートを向上させるためコンピュータ設計者によって使用される１つの技法は、それぞれの実行ユニットが他のユニットと並行に命令を実行する能力がある複数の実行ユニットを含むことである。追加の実行ユニットを支援するため、レジスタファイルは、同時に複数の実行ユニットがレジスタファイルにアクセスすることを可能にするに十分な読取りおよび書込みポートを持たなければならない。多くの命令は、レジスタファイルから２つまたはそれ以上のオペランドを読み取り、１つのオペランドを書き込むので、レジスタファイルは、書込みポートより多くの読取りポートをもつことが一般的である。
【０００４】
典型的な先行技術のレジスタファイルは、スタティック(静的)記憶素子の行および列で配列される。それぞれの静的記憶素子は、１ビットを記憶し、一般に、帰還ループを形成するように一対のインバータを一緒に接続することによって実現される。記憶素子のそれぞれの行は、レジスタファイルの１レジスタを形成する。行は、従来技術でワードとしても知られている。記憶素子のそれぞれの列は、全てのレジスタの共通のビット位置を記憶する。例えば、第１列は、それぞれのレジスタについてビット0を記憶することができる。
【０００５】
レジスタファイルの行ごとに、ワード線が、それぞれのポートについて与えられる。典型的に、ワード線は、レジスタファイルを横切って水平に走る。レジスタファイルの列ごとに、データ線が、それぞれのポートについて与えられる。典型的に、データ線は、レジスタファイルを横切って垂直に走る。
【０００６】
12個の読取りポートおよび8個の書込みポートをもつ128個の64ビット・レジスタをもつ従来技術のレジスタファイルを考える。そのようなレジスタファイルは、それぞれのレジスタについて20本の水平ワード線(読取りポートについて12本、書込みポートについて8本)、およびそれぞれのビット位置について20本の垂直データ線(読取りポートについて12本、書込みポートについて8本)を必要とする。従って、そのようなレジスタは、2560本の水平ワード線および1280本の垂直線をもつ。結果は、配線によって完全に支配されるレジスタファイルであり、それは、レジスタファイルの大きさおよび複雑さを増大させる。コンピュータ設計者が、プロセッサ内の実行ユニットの数を増加させ、それゆえレジスタファイル内のポートの数を増やし続けるに従って、問題は悪化する。
【０００７】
【発明が解決しようとする課題】
従って、従来技術で必要とされるものは、従来の構成と比べて必要とされる線の数を低減させ、それゆえ配線によって強制されることなく設計者がレジスタファイルにポートを加え続けることを可能にするレジスタファイル構成である。
【０００８】
【課題を解決するための手段】
この発明は、読取りおよび書込みポートのための共有されるワード線、および書込み操作の間にパワーダウンし、または高インピーダンス状態に入る記憶素子をもつ複数ポート・コンピュータ・レジスタファイルである。この発明に従って、レジスタファイルはR個の読取りポートおよびW個の書込みポートをもつ。典型的に、レジスタファイルは、書込みポートよりも多くの読取りポートをもつが、この発明はこの構成に限定されない。
【０００９】
この発明に従うレジスタファイルは、従来技術で一般的であるように書込みポートよりも多くの読取りポートをもつとする。そのようなレジスタファイルで、それぞれのレジスタは、W本の合体された読取り/書込みワード線、１本の方向線、およびR-W本の読取り専用ワード線によってアクセスされる。方向線は、書込み操作の間はアサートされ、読取り操作の間はアサートされない。先行技術のレジスタファイルは、R+W本のワード線をもつ。従って、レジスタファイルが12個の読取りポートおよび8個の書込みポートをもつ場合、先行技術のレジスタファイルは、それぞれのレジスタについて20本の水平線をもつが、この発明に従うレジスタファイルは、それぞれのレジスタのについて13本の水平線をもち、これは水平ワード線の数の35%の低減である。
【００１０】
さらに方向線は、レジスタを含む記憶素子が、書込み操作の間にパワーダウンされ、または高インピーダンス状態に入ることを可能にする。先行技術で、一般的な記憶素子は、結合されて帰還ループになる一対のインバータを含む。先行技術のレジスタファイルの中の書込み操作の間、書込みバッファの出力ドライバは、記憶素子の出力ドライバを過電力にして、それによって記憶素子が、書込みバッファによって供給される値を呈するようにする。この発明では、書込み操作の間、方向線がアサートされ、記憶素子がパワーダウンされ、または高インピーダンス状態に入る。こうして、書込みバッファは、記憶素子の出力ドライバを過電力にする必要がないので、それらは、より小さい出力ドライバを備えることができる。書込み操作が終了すると、方向線が非アサートにされ、記憶素子がパワーアップされ、または高インピーダンス状態を解消し、書込みバッファによって供給される値を保持する。方向線は、マルチプレクサ信号としても使用され、合体された読取り/書込みワード線によって表される書込みポートにおける書込み操作をイネーブルする。
【００１１】
読取り操作の間、方向線は、非アサートされたままであり、記憶素子は、パワーアップされたままであり、高インピーダンス状態にはない。合体された読取り/書込みワード線を書込みポートと共有する読取りポートについて、方向線は、マルチプレクサ信号として使用されて、合体された読取り/書込みワード線によって表される読取りポートでの読取り操作をイネーブルする。共有されない読取りポートについて、読取り専用ワード線を使用して、読取り操作をイネーブルする。
【００１２】
同数の読取りと書込みポートをもつレジスタファイルについて、全てのポートは、合体した読取り/書込みワード線を使用してアクセスされる。読取りポートより多数の書込みポートをもつレジスタファイルについて、全ての読取りポート、および読取りポートの数と等しい数の書込みポートは、合体した読取り/書込みワード線を使用してアクセスされる。読取りポートの数を越える書込みポートは、書込み専用ワード線を使用してアクセスされる。
【００１３】
この発明は、先行技術とくらべて２つの重要な利点を提供する。第１に、書込み操作の間、記憶素子をパワーダウンさせ、または記憶素子が高インピーダンス状態に入ることを可能にすることによって、より小さいトランジスタを使用して記憶素子に値を書き込むことができる。より小さいトランジスタを使用することにより、レジスタファイルの大きさおよび電力要求が低減される。第２に、方向線、ならびに読取りおよび書込みポートのための合体したワード線を使用することによって、レジスタファイルを横切って走る水平線の数が低減される。従ってこの発明は、先行技術のレジスタファイル構成と比べて水平線の数を低減し、書込み操作の間に使用される出力ドライバ・トランジスタの大きさを低減しつつ、多数の読取りおよび書込みポートをもつレジスタファイルを実現する能力をコンピュータ設計者に与える。
【００１４】
【発明の実施の形態】
この発明は、合体されたワード線を使用して読取りおよび書込み操作の両方を実施することによって、先行技術のレジスタファイル編成と比べて水平ワード線の数を低減したレジスタファイルである。この発明はさらに、書込み操作の間に記憶素子をパワーダウンし、または書込み操作の間に記憶素子を高インピーダンス状態におくことにより、書込み操作の間に使用されるトランジスタの大きさを低減する。この発明をさらに詳しく考察する前に、図1および図２を参照して先行技術のレジスタファイルについて以下に述べる。
【００１５】
図1は、先行技術のプロセッサ10を示す簡略図である。分かり易くし、この発明をより良く理解するため、レジスタファイルに関連するプロセッサ10の一部分のみを図1に示す。
【００１６】
プロセッサ10は、複数の実行ユニット12、マルチプレクサ14、およびレジスタファイル16を含む。レジスタファイル16は、128個の64ビット・レジスタ、12個の読取りポート、および8個の書込みポートを含む。複数の実行ユニット12の１つまたはそれ以上の実行ユニットが、レジスタファイル16のレジスタから読み取り、またはそこに書き込もうとするとき、それぞれの実行ユニットは、バス18を介して、アクセスされようとするレジスタと連絡する。バス18は、140本のレジスタ索引線を含む。それぞれのポートは、レジスタを選択するため７ビットを必要とし、20個のポート(12個の読取りポートおよび8個の書込みポート)がある。実行ユニットが書込み操作を実施している場合、対応するポートについての書込みデータは、実行ユニットによってバス22を介して供給される。バス22は、512本の書込み線を含む。それぞれのポートは64ビット幅であり、8個の書込みポートがある。実行ユニットが読取り操作を実施している場合、対応するポートについての読取りデータは、レジスタファイル16によってバス24を介して供給される。バス24は、768本の読取り線を含む。重ねて、それぞれのポートは64ビット幅であり、12個の読取りポートがある。
【００１７】
バス18に戻って、アクセスされようとするレジスタは、マルチプレクサ14に供給され、マルチプレクサ14は、７ビットのポート識別を復号して対応するワード線に入れる。ワード線は、バス20を通してレジスタファイル16に供給される。バス20は、2560ビット幅である。12本の読取りワード線および8本の書込みワード線が、128個のレジスタのそれぞれについて与えられる。当業者であれば、その他の同期およびクロック信号が、プロセッサ10を完成するために必要とされることが分かるであろう。そのような信号は、この発明を理解するために示す必要がない。
【００１８】
図2は、図1の先行技術のレジスタファイル16の複数のレジスタのうちの１つの一部を示す。図2に示されるレジスタファイル16の一部は、書込みポート6および7でレジスタのビット0に書き込むために必要とされる回路、および読取りポート4および5でレジスタのビット0から読み取るために必要とされる回路を含む。例えば、トライステート・バッファ34を使用して、ポート7でレジスタにビット0を書き込み、トライステート・バッファ36を使用して、ポート4でレジスタからビット0を読み取る。レジスタファイルを完成するため、まず、残りの書込みポートについてさらに6個のトライステート・バッファ、および残りの読取りポートについてさらに10個のトライステート・バッファを加える必要がある。そして、64ビットレジスタを完成するため、さらに63個の図2に示される回路を加える必要がある。最後に、さらに127個のレジスタを加える必要がある。図2に示される回路および以下の対応する記述は、先行技術のレジスタファイルの論理演算を示す。当業者であれば、図2に示される回路のトランジスタ・レベルの実現は、追加の回路を含むことができることが分かるであろう。例えば、１本のワード線を、１つのレジスタの全てのビットに論理的に提示することができるが、トランジスタ・レベルの実現は、ワード線に過負荷を与えることを避けるため追加のバッファをもつことができる。
【００１９】
記憶素子28は、レジスタについてビット0を記憶する。素子28は、帰還ループに結合されるインバータ30および32を含む。図1の複数の実行ユニット12の実行ユニットのうちの１つは、図2に示されるレジスタの一部から読取りポート4を介してオペランドを読み取ろうとしているとする。実行ユニットは、最初に、読取りポート4に対応するバス18のレジスタ索引線上に適切なレジスタ索引を提示する。マルチプレクサ14は、レジスタ索引を復号し、このレジスタの読取りポート4についてのワード線をアサートし、そのワード線は、トライステート・バッファ36のイネーブル入力に結合される。さらにこのワード線は、レジスタの残りの63ビットを含む記憶素子に関連する読取りポート4について同様のトライステート・バッファのイネーブル入力にも並列に提示されることに注意されたい。ワード線がアサートされると、トライステート・バッファ36は、読取りポート4、ビット0の読取り線を、記憶素子28に記憶された値に駆動する。読取りポート4、ビット0の読取り線は、残りの127個のレジスタの読取りポート4、ビット0に関連する同様のトライステート・バッファの出力に並列に結合されることに注意されたい。バッファ36の出力に供給される値は、図１のバス24を介して実行ユニットに送り返される。実行ユニットは、バス18からレジスタ索引を除去し、マルチプレクサ14は、バス20を介してワード線を非アサートにする。
【００２０】
実行ユニットの１つが、書込みポート7を介してオペランドを書き込もうとしているとする。実行ユニットは、まず、書込みポート7に対応するバス22の書込み線上にオペランドをおく。書込みポート7、ビット0の書込み線は、バッファ34の入力に供給される。その上、この書込み線は、残りの127個のレジスタの書込みポート7、ビット0に関連する同様のトライステート・バッファの入力に並列に結合される。次に、実行ユニットは、書込みポート7に対応するバス18のレジスタ索引線上に適切なレジスタ索引を提示する。それからマルチプレクサ14は、レジスタ索引を復号し、このレジスタの書込みポート7についてのワード線をバス20を通してアサートし、そのワード線は、トライステート・バッファ34のイネーブル入力に結合される。さらにこのワード線は、レジスタの残りの63ビットを含む記憶素子に関連する書込みポート7について同様のトライステート・バッファのイネーブル入力にも並列に提示されることに注意されたい。ワード線がアサートされると、トライステート・バッファ34の出力は、実行ユニットによって供給される値に駆動される。バッファ34の出力ドライバは、インバータ32の出力ドライバより強力であるように設計される。それゆえ、バッファ34は、インバータ32を過電力にして、記憶素子30に格納された値を変更する(書き込まれる値は、素子30に以前に格納されていた値とは異なるとする)。実行ユニットは、バス18からレジスタ索引を除去し、マルチプレクサ14は、バス20を介してワード線を非アサートにする。最後に、実行ユニットは、バス22からオペランドを除去し、書込み操作が完了する。
【００２１】
図1および図2に示される先行技術のレジスタファイルの中で、それぞれのレジスタは、それぞれの書込みポートについて１つのワード線、およびそれぞれの読取りポートについて１つのワード線を必要とすることに注意されたい。その上、記憶素子に書き込むために使用されるバッファ34のようなバッファは、記憶素子のインバータを形成するために使用される出力ドライバ・トランジスタよりも大きい出力ドライバ・トランジスタを使用して組み立てなければならない。この発明において、書込みポートに関連するワード線は、方向線を使用することによって読取りポートにも関連付けられる。さらに、記憶素子のインバータの出力バッファは、書込み操作の間はパワーダウンされ、または高インピーダンス状態に入り、それゆえ一層小さいトランジスタを使用して、記憶素子にデータを書き込むバッファの出力ドライバを形成することを可能にする。
【００２２】
図3は、この発明に従うレジスタファイルをもつプロセッサ38を示す簡略ブロック図である。プロセッサ38は、複数の実行ユニット40、マルチプレクサ42、およびレジスタファイル44を含む。レジスタファイル44は、128個の64ビット・レジスタ、12個の読取りポート、および8個の書込みポートを含む。図3で、複数の実行ユニット40ならびにバス46、50および52は、それぞれ図１に示される先行技術の複数の実行ユニット12ならびにバス18、22および24と同様に動作する。しかし、マルチプレクサ42、バス48、およびレジスタファイル44の動作は、この発明に従って異なる。
【００２３】
図1のプロセッサ10の動作と同様に、複数の実行ユニット40の１つまたはそれ以上の実行ユニットが、レジスタファイル44のレジスタから読み取り、またはそこに書き込もうとするとき、それぞれの実行ユニットは、バス46を通して、アクセスされようとするレジスタと連絡する。バス46は、140本のレジスタ索引線を含む。それぞれのポートは、レジスタを選択するため７ビットを必要とし、20個のポート(12個の読取りポートおよび8個の書込みポート)がある。実行ユニットが書込み操作を実施している場合、対応するポートについて書込みデータは、実行ユニットによってバス50を介して供給される。バス50は、512本の書込み線を含む。それぞれのポートは64ビット幅であり、8個の書込みポートがある。実行ユニットが読取り操作を実施している場合、対応するポートについて読取りデータは、レジスタファイル44によってバス52を介して供給される。バス52は、768本の読取り線を含む。重ねて、それぞれのポートは64ビット幅であり、12個の読取りポートがある。
【００２４】
バス46に戻って、アクセスされようとするレジスタは、マルチプレクサ42に供給され、マルチプレクサ42は、７ビットのポート識別を復号する。しかし、図1のマルチプレクサ14とは異なり、マルチプレクサ42は、合体された読取り/書込みワード線として、それぞれのレジスタについて8本のワード線を供給し、合体されたワード線の各々は、１個の読取りポートおよび書込みポートを表す。さらに、マルチプレクサ42は、そのレジスタが読み取られるかまたは書き込まれるかを示す方向線をそれぞれのレジスタについて供給する。最後に、マルチプレクサ42は、４本の追加の読取り専用ワード線を生成する。従来技術で一般的であるように、レジスタファイルが書込みポートよりも多くの読取りポートをもつときのみ、読取り専用ワード線がこの発明の中で使用されることに注意されたい。合体された読取り/書込みワード線、方向線、および読取り専用線が、バス48を通して、レジスタファイル44にそれぞれのレジスタについて供給される。バス48は、1664ビット幅である。8本の合体された読取り/書込みワード線、1本の方向線、および4本の読取り専用ワード線が、128個のレジスタのそれぞれに供給される。図1のように、当業者であれば、他の同期およびクロック信号がプロセッサ38を完成するために要求されることが分かるであろう。そのような信号は、この発明を理解するために示す必要がない。
【００２５】
先行技術の図1を図3と比較することによって分かるように、両方のレジスタファイルが同様の機能性を提供するとしても、この発明は、レジスタファイルを横切る水平線の数の大幅な低減をもたらす。図1では、2560本の水平線が、先行技術のレジスタファイル16を横切って走る。しかし、この発明による図3では、たった1664本の水平線がレジスタファイル44を横切って走る。従って、図1および図3に示されるレジスタファイル構成に対し、この発明は、水平線の数の35%の低減をもたらし、それによって一層コンパクトなレジスタファイルを生成する。もちろん、水平線の数を低減させることは、この発明に従うレジスタファイルを取り入れる集積回路を設計する際にレジスタファイルをルーティングし、レイアウトすることに関連する問題も単純化する。
【００２６】
図4は、この発明に従う図3のレジスタファイル44の複数のレジスタのうちの１つの一部分を示す。図4に示されるレジスタファイル44の一部は、書込みポート6および7でレジスタのビット0に書き込むために必要とされる回路、および読取りポート6および9でレジスタのビット0から読み取るために必要とされる回路を含む。例えば、トライステート・バッファ64を使用して、ポート6でレジスタにビット0を書き込み、トライステート・バッファ72を使用して、ポート9でレジスタからビット0を読み取る。レジスタファイルを完成させるため、まず、残りの書込みポートについてさらに6個のトライステート・バッファ、および残りの読取りポートについてさらに10個のトライステート・バッファを加える必要がある。さらに、合体された読取り/書込みワード線をもつポートについてＡＮＤゲート62および66のようなＡＮＤゲートを加える必要がある。64ビット・レジスタを完成させるため、さらに63個の図4に示される回路を加える必要がある。最後に、さらに127個のレジスタを加える必要がある。当業者であれば、図4に示される回路のトランジスタ・レベルの実現は、追加の回路を含むことができることが分かるであろう。例えば、１つのワード線を、レジスタの全てのビットに論理的に提示することができるが、トランジスタ・レベルの回路図である図7および図8に関して後述するように、トランジスタ・レベル実現は、ワード線に過負荷を与えることを避けるため追加のバッファをもつことができる。
【００２７】
図3に関して上述したように、マルチプレクサ42は、バス48を介して、それぞれのレジスタについて１つの方向線を供給する。図4で、方向線は、WRとラベル付けされている。方向線は、書込み操作の間、高く駆動されるが、そうでなければ低いままである。方向線は、インバータ54に供給され、そのインバータ54は、NWRとラベル付けされた方向線の反転されたコピーをインバータ54の出力に生成する。
【００２８】
記憶素子56は、図4に示されるレジスタの一部についてビット0を記憶する。記憶素子56は、結合されて帰還ループになるインバータ58および60を含む。それぞれのインバータは、信号NWRによって電力供給される。従って、記憶素子56は、読取り操作の間、WRが低く、NWRが高いときにパワーアップされ、書込み操作の間、WRが高く、NWRが低いときにパワーダウンされる。
【００２９】
図3の複数の実行ユニット40の実行ユニットの１つによって、図4に示されるレジスタにポート6でアドレスされる書込み操作を考える。実行ユニットは、書込みポート6に対応するバス50の線を、レジスタに書き込まれるオペランドに駆動し、読取りポート6に対応するバス46のレジスタ索引線上に適切なレジスタ索引を提示する。マルチプレクサ42は、レジスタ索引を復号し、まず、バス48を通してこのレジスタについての方向線WRを高く駆動する。これは、記憶素子56をパワーダウンさせる。次に、マルチプレクサ42は、バス48を介して、読取りポート6および書込みポート6に対応する合体された読取り/書込みワード線を高く駆動する。ＡＮＤゲート62は、方向線WRおよび合体されたワード線の論理AND演算を実施し、ゲート62の出力は、トライステート・バッファ64のイネーブル入力に供給される。読取りおよび書込みポート6のための合体された読取り/書込みワード線は、ＡＮＤゲート66の入力にも供給される。しかし、反転された方向線NWRは、書込み操作の間は低いので、(読取りポート6から読取り操作の間に使用される)トライステート・バッファ68はイネーブルにされない。そのレジスタについて、ＡＮＤゲート62の１つの具体例しか論理的に必要とされないことに注意されたい。ゲート62の出力は、書込みポート6でレジスタの他のビットを書き込むために使用される他のトライステート・バッファにも並列に供給することができる。
【００３０】
トライステート・バッファ64がイネーブルにされると、ビット0、ポート6に対応する書込み線によって供給される値は、バッファ64の出力に伝えられる。さらに、この書込み線は、残りの127個のレジスタの書込みポート6、ビット0に関連する同様のトライステート・バッファの入力にも並列に結合される。記憶素子56はパワーダウンされるので、バッファ64の出力は、インバータ58の出力をインバータ60の入力に結合する導線を、書込み線によって供給される値に駆動させる。次に、マルチプレクサ42は、方向線WRを低く駆動し、それによって記憶素子56をパワーアップして、バッファ64を通して書き込まれる値を記憶素子56に保持させ、そして、読取りおよび書込みポート6のための合体されたワード線を低く駆動する。最後に、実行ユニットは、バス50からオペランドを除去する。この発明によれば、記憶素子はパワーダウンされるので、書込み操作の間に使用されるトライステート・バッファの出力ドライバは、記憶素子を形成するインバータの出力ドライバを過電力にする必要がなく、そのため一層小さい出力ドライバを使用して、バッファ64のようなトライステート・バッファを形成することができることに注意されたい。対照的に、先行技術のレジスタファイル構成では、上述したように、書込み操作の間に使用されるトライステート・バッファの出力ドライバは、記憶素子を形成するインバータの出力ドライバを過電力にしなければならず、従って一層大きい出力バッファを使用して、図2のバッファ34のようなトライステート・バッファを形成することが要求される。
【００３１】
ここで、図3の複数の実行ユニット40の実行ユニットの１つが、読取りポート6を介して、図4に示されるレジスタの一部からオペランドを読み取ろうとしていると考える。実行ユニットは、まず、読取りポート6に対応するバス46のレジスタ索引線上に適切なレジスタ索引を提示する。マルチプレクサ42は、レジスタ索引を復号し、読取りポート6および書込みポート6のための合体されたワード線をバス48を通してアサートにする。このレジスタについて、マルチプレクサ42によってバス48を通して供給される方向線は低いままであり、そのため記憶素子56をパワーアップされた状態に保つことに注意されたい。合体されたワード線は、高い反転された方向線NWRと共にＡＮＤゲート66に供給され、ゲート66の出力は、トライステート・バッファ68のイネーブル入力に結合される。ゲート66の出力は、レジスタの残りの63ビットを含む記憶素子に関連する読取りポート6について同様のトライステート・バッファのイネーブル入力に並列に論理的に提示することができることに注意されたい。この合体されたワード線は、上述したようにＡＮＤゲート62にも提示される。しかし、方向線WRは低いので、トライステート・バッファ64はイネーブルされない。ワード線がアサートされると、トライステート・バッファ68は、イネーブルされ、読取りポート6、ビット0の読取り線を、記憶素子56に格納された値に駆動する。読取りポート6、ビット0の読取り線は、残りの127個のレジスタの読取りポート6のビット0に関連する同様のトライステート・バッファの出力に並列に結合されることに注意されたい。バッファ68の出力に供給される値は、図3のバス52を介して実行ユニットに送り戻される。実行ユニットは、バス52からオペランドを読み取り、バス46からレジスタ索引を除去する。それからマルチプレクサ42は、バス48を介して、合体されたワード線を低く駆動する。
【００３２】
先行技術で一般的であるように、レジスタファイル44は、書込みポートより多くの読取りポートをもつ。それゆえ、書込みポートの数を越える読取りポートは、合体された読取り/書込みワード線を使用しない。そうではなく、そのようなポートは、読取り専用ワード線を使用してイネーブルされる。図4で、読取りポート9がそのようなポートである。上述したように、読取りポート9の操作は、読取りポート6の操作と同様であり、マルチプレクサ42が、読取りポート9のための読取り専用ワード線をバス48を通して高く駆動し、方向線WRをバス48を通して低く駆動する(そのため記憶素子56をパワーアップされた状態に保つ)。しかし、ゲート66のようなＡＮＤゲートは論理的に必要とされない。その代わりに、読取りポート9のための読取り専用ワード線は、イネーブル入力に直接供給される。この読取り専用ワード線は、レジスタの残りの63ビットを含む記憶素子に関連する読取りポート9について同様のトライステート・バッファのイネーブル入力に並列に提示することができることに注意されたい。もちろん、この発明に従うレジスタファイルが、読取りポートより多くの書込みポートをもつ場合、読取りポートの数を越える書込みポートが、書込み専用ワード線によってイネーブルにされる。また、読取りおよび書込みポートの数が等しい場合、全てのワード線が、合体された読取り書込みワード線になる。
【００３３】
図5は、図4の記憶素子56の別の実施例を示す。図5で、インバータ71および73は結合されて、帰還ループを形成する。しかし、書込み操作の間にパワーダウンする代わりに、インバータ73は、反転された方向線NWRを通してイネーブルにされるトライステート・インバータである。従って、書込み操作の間、NWRが低くなると、インバータ73の出力は高インピーダンス状態に入る。トライステート・バッファ64のような書込みバッファの出力ドライバは、記憶素子を形成するインバータの出力バッファを過電力にする必要がないので、これは、記憶素子をパワーダウンするのと同じ利益を提供する。書込み操作を実施していないとき、NWRは高く、インバータ73の出力はアクティブであり、その結果、記憶要素に格納された値を維持する。
【００３４】
図6、図7、図8および図9は一緒に、8個の書込みポートおよび12個の読取りポートをもつレジスタの2ビットについてこの発明の特定の実施例を示しているトランジスタ・レベルの回路図である。図6を参照して、レジスタ74は、記憶素子76および78、読取り専用ポート(8:11)ブロック80、読取り/書込みポート(0:7)ブロック82、ならびにインバータ84および86を含む。
【００３５】
記憶素子76および78はそれぞれ、帰還ループの中で結合される一対のインバータを含む。それぞれのインバータは、ｎチャネル電界効果トランジスタ(NFET)およびｐチャネル電界効果トランジスタ(PFET)からなる。それぞれの記憶素子に記憶されるデータビットは、ブロック80および82に供給されるが、これは後でより詳しく述べる。方向線WRが、インバータ84に供給される。インバータ84もまたPFETおよびNFETを含む。インバータ84の出力は、反転された方向線NWRであり、導線88を介して記憶素子76および78に電力を供給する。反転された方向線は、ブロック82にも供給されるが、ブロック80には供給されない。インバータ86もまたPFETおよびNFETを含む。インバータ86は、線88を介して反転された方向線NWRを受け取り、導線90を介して方向線WRをブロック82に供給する。
【００３６】
読取り専用ワード線(8:11)は、バス92を介して、入力としてブロック80に供給される。読取りポート(8:11)のための読取り線は、ブロック80によって出力として、ビット0についてバス94を介して、ビット1についてバス96を介して供給される。
【００３７】
合体された読取り/書込みワード線(0:7)は、バス98を介して、入力としてブロック82に供給される。読取りポート(0:7)についての読取り線は、ブロック82によって、ビット0についてバス100を通して、ビット1についてバス102を通して出力として供給される。最後に、書込みポート(0:7)についての書込み線は、ブロック82へ、ビット0についてバス104を通して、ビット1についてバス106を通して入力として供給される。
【００３８】
図7は、図6の読取り専用ポート(8:11)ブロック80の一部である回路108を示すトランジスタ・レベルの回路図である。回路108は、ビット0および1について１つの読取り専用ポートについて必要とされる回路を示す。従って、ブロック80は、４つの読取り専用ポートを実現するので、回路108の4つの具体例が、ブロック80を完成するために必要とされる。
【００３９】
読取り専用ワード線は、図6のバス92の一部である導線109を通して、回路108に供給される。読取り専用ワード線は、NFETおよびPFETを含むバッファ110に供給される。バッファ110によってバッファされた後、読取り専用ワード線は、NFETトランジスタ114および116のゲートに並列に供給される。
【００４０】
トランジスタ114および116のドレイン端子は、共有されるドレイン出力として従来技術で知られている構成を使用して、ビット0およびビット1のための読取り線に結合される。トランジスタ114および116のソース端子は、それぞれNFETトランジスタ118および120のドレイン端子に結合される。トランジスタ118および120のソース端末は、接地信号GNDに結合される。最後に、トランジスタ118のゲートは、ビット0である記憶素子76に結合され、トランジスタ120のゲートは、ビット1である記憶素子78に結合される。
【００４１】
読取りサイクルの前に、読取り線は、図7に図示しない回路によって正電圧をかけられている。その後、読取り専用ワード線が高くなり、導線112を通してトランジスタ114および116のゲート端子に適用される。記憶素子76からのビット0が高い場合、ビット0のための読取り線上の電荷は、トランジスタ114および118によって接地に導かれる。しかし、ビット0が低い場合、電荷は、ビット0のための読取り線上に残る。同様に、記憶素子78からのビット1が高い場合、ビット1のための読取り線上の電荷は、トランジスタ116および120によって接地に導かれる。しかし、ビット1が低い場合、電荷は、ビット1のための読取り線上に残る。読取り専用ワード線をアサートした後、読取り線をサンプリングして、電荷が読取り線上に残っているかどうか調べる。電荷が残っているそれぞれの読取り線について、その読取り線に対応するビットについて低い値が、読取り操作を実施している実行ユニットへ供給される。同様に、電荷が除去されたそれぞれの読取り線について、その読取り線に対応するビットについて高い値が、読取り操作を実施している実行ユニットへ供給される。従って、読取り専用ワード線がアサートされた直後に読取り線上に現れるこの論理値は、それぞれの記憶素子に記憶されている論理値の逆である。
【００４２】
図8は、図6の読取り/書込みポート(0:7)ブロック82の一部である回路122を示すトランジスタ・レベル回路図である。回路122は、ビット0および1について１つの読取り/書込みポートに必要とされる回路を示している。それゆえ、ブロック82は、8個の読取り/書込みポートを実現するので、回路122の8つの具体例が、ブロック82を完成するために必要とされる。
【００４３】
合体された読取り/書込みワード線は、図6のバス98の一部である導線124を介して、回路122に供給される。読取り/書込みワード線は、NFETおよびPFETを含むインバータ126に供給される。読取り/書込みワード線は、インバータのバッファ126によって反転された後、導線128に供給される。反転された方向線NWRは、図6のインバータ84から導線88を介して回路122に供給される。
【００４４】
導線88は、PFETトランジスタ132のドレイン端子に供給される。トランジスタ132のソース端子は、NFETトランジスタ134のドレイン端子に供給され、トランジスタ134のソース端子は、接地信号GNDに結合される。トランジスタ132および134のゲート端子は、反転された合体された読取り/書込みワード線である導線128に結合される。トランジスタ132および134ならびにインバータ126は、図4のＡＮＤゲート66と同様の機能を実施する論理ＡＮＤゲートを形成する。従って、読取り操作の間、合体された読取り/書込みワード線は高く(導線128は低く駆動され)、方向線WRは低い(導線88は高く駆動される)。これは、導線136を高く駆動させる。導線136は、トランジスタ132のソースをトランジスタ134のドレインに接続するノードに結合されており、NFETトランジスタ138および140のゲート端子に供給される。
【００４５】
図7の回路108のように、トランジスタ138および140のドレイン端子は、共有されるドレイン出力構成を使用して、ビット0および1のための読取り線にそれぞれ結合される。読取り操作が実施されるとき、読取り線はプリチャージされており、合体された読取り/書込みワード線がアサートされる。上述したように、ワード線が高く駆動されると、これは、導線136を高く駆動させる。記憶素子76からのビット0が高い場合、ビット0のための読取り線上の電荷は、トランジスタ138および142によって接地に導かれる。しかし、ビット0が低い場合、電荷は、ビット0のための読取り線上に残る。同様に、記憶素子78からのビット1が高い場合、ビット1のための読取り線上の電荷は、トランジスタ140および144によって接地に導かれる。しかし、ビット1が低い場合、電荷は、ビット1のための読取り線上に残る。図7の回路108と同様に、合体された読取り/書込みワード線をアサートした後、読取り線をサンプリングして、電荷が読取り線上に残っているかどうか調べる。電荷が残っているそれぞれの読取り線について、その読取り線に対応するビットについて低い値が、読取り操作を実施している実行ユニットに供給される。同様に、電荷が除去されているそれぞれの読取り線については、その読取り線に対応するビットについて高い値が、読取り操作を実施している実行ユニットに供給される。それゆえ、読取り専用ワード線がアサートされた直後に読取り線上に現れるこの論理値は、それぞれの記憶素子に記憶された論理値の逆である。
【００４６】
次に、書込み操作の間の回路122について考える。まず、方向線WRが高くなり、反転された方向線NWRは低くなる。上述したように、これは、図6の記憶素子76および78をパワーダウンさせる。さらに、導線88(NWR)は低いので、トランジスタ138および140のゲート端子に供給される導線136は低く、そのためトランジスタ138および140のドレイン端子を高インピーダンス状態に保つ。
【００４７】
反転された合体された読取り/書込みワード線は、導線128を通してPFETトランジスタ148のゲート入力に供給され、反転された方向線NWRは、導線88を通してNFETトランジスタ146のゲート入力に供給される。方向線WRは、導線90を通してトランジスタ148のドレイン端子に供給される。トランジスタ148のソース端子は、トランジスタ146のドレイン端子に結合され、トランジスタ146のソース端子は、接地信号GNDに供給される。インバータ126およびトランジスタ146および148は、図4のゲート62と同様の論理ＡＮＤゲートを形成する。方向線WRおよび合体された読取り/書込みワード線が両方とも高く駆動されると、導線150が高く駆動される。導線150は、トランジスタ146のドレイン端子をトランジスタ148のソースに接続するノードに結合されており、トランジスタ152および154のゲート端子に供給される。
【００４８】
書込み操作の間、合体された読取り/書込みワード線がアサートされる直前に、実行ユニットは、ビット0および1について書込み線を、レジスタに書き込まれる値に駆動する。従って、導線150が高く駆動されると、ビット0およびビット1について書込み線上に現れる値は、それぞれトランジスタ152および154を通して記憶素子76および78に駆動される。記憶素子76および78はパワーダウンされているので、トランジスタ152および154は、先行技術で一般的であるように記憶素子の出力ドライバを過電力にする必要がない。
【００４９】
書込み操作は、合体されたワード線および方向線WRが低く駆動されて終わる。これは、記憶素子76および78をそれぞれパワーアップし、トランジスタ152および154を通して書き込まれる値を保持させる。さらに、トランジスタ152および154のソース端子が、高インピーダンス状態に再び入り、書込み操作は完了する。さらに、合体された読取り/書込みワード線が低く駆動されるので、トランジスタ138および140のドレイン端子は、書込み操作を通して高インピーダンス状態を保ち、その結果、このポートについての読取り線を、別のレジスタでの読取り操作の間に使用することを可能にする。
【００５０】
図9は、図5の記憶素子56の他の実施例に対応する図6の記憶素子76の別の実施例を示す。図9で、記憶素子76は、書込み操作の間、パワーアップされたままである。しかし、トランジスタ155のゲート端子が、導線88を介してNFETトランジスタ155に結合されている。従って、書込み操作の間、NWRは低く駆動される。これは、NFETトランジスタ157を通る電流通路を閉ざし、(図9で「d0」とラベルを付された)ビット0についての導線を、高インピーダンス状態に入れる。その結果、書込み操作の間に記憶素子を駆動する図8のトランジスタ152および154のようなトランジスタは、記憶素子のトランジスタを過電力にする必要がないので、記憶素子をパワーダウンするのと同じ利益をもたらす。書込み操作を実施していないとき、NWRは高く、トランジスタ157を通る電流通路がイネーブルにされ、それによって記憶素子に記憶された値を維持する。
【００５１】
この発明は、先行技術と比べて２つの重要な利益を提供する。第１に、書込み操作の間、記憶素子をパワーダウンさせ、または記憶素子を高インピーダンス状態に入れることによって、より小さいトランジスタを使用して、記憶素子に値を駆動することができる。より小さいトランジスタを使用することによって、レジスタファイルの大きさおよび電力要求が低減される。第２に、読取りおよび書込みポートについて、方向線および合体された読取り/書込みワード線を使用することによって、レジスタファイルを横切って走る水平線の数が低減される。この発明に従って、これらの利益は、それぞれ独立して達成される。例えば、先行技術のように別々の読取りおよび書込みワード線をもつレジスタファイル内で、全ての書込みワード線を一緒にゲート制御して、レジスタの記憶素子をパワーダウンし、または記憶素子を高インピーダンス状態に入れるために使用される書込み信号を形成することができる。そのようなレジスタファイルは、先行技術のように多くの数のワード線をもつが、それはさらに、先行技術のレジスタファイル内で使用されるものより小さい書込みバッファ出力ドライバ・トランジスタを有する。同様に、パワーダウンせず、高インピーダンス状態に入らない記憶素子を有するレジスタファイル内で、合体された読取り/書込みワード線および方向線を使用することもできる。そのようなレジスタファイルは、先行技術のように比較的大きい書込みバッファ出力ドライバ・トランジスタをもつが、それはさらに、先行技術のレジスタファイル編成と比べて低減された数の水平線をもつ。もちろん、合体された読取り/書込みワード線が読取りポートあるいは書込みポートを表しているかを判断するために使用される同一の方向線が、記憶素子をパワーダウンし、または記憶素子を高インピーダンス状態に入れるために使用されるので、両方の利益が同じレジスタファイル内でもたらされると、かなりの相乗作用が得られる。
【００５２】
コンピュータ設計技術の動向は、多数の実行ユニットに、レジスタファイルに並列にアクセスさせることである。この発明は、先行技術のレジスタファイル構成と比較して水平線の数を低減し、書込み操作の間に使用される出力ドライバ・トランジスタの大きさを低減しつつ、多数の読取りおよび書込みポートをもつレジスタファイルを実現する能力を、コンピュータ設計者に提供する。
【００５３】
この発明は、特定の実施例に関して記述されたが、当業者であれば、この発明の精神および理念から逸脱することなく変更を加えることができることが分かるであろう。
【００５４】
本発明は例として次の実施態様を含む。
【００５５】
（１）レジスタファイルの一部であって、
値を記憶する記憶素子と、
上記記憶素子から値を受け取る読取り線と、
上記記憶素子に書き込もうとする値を該記憶素子に供給する書込み線と、
読取りおよび書込み操作の間、アクティブ状態を呈する合体された読取り/書込みワード線と、
書込み操作の間は書込み方向状態、および読取り操作の間は読取り方向状態を呈する方向線と、
上記合体された読取り/書込みワード線がアクティブであって、上記方向線が読取り方向状態を呈するとき、上記読取り線を上記記憶素子に結合して該記憶素子から値を読み取り、該合体された読取り/書込みワード線がアクティブ状態を呈し、該方向線が書込み方向状態を呈するとき、上記書込み線を該記憶素子に結合して該記憶素子に値を書き込むマルチプレクサと、
を備えるレジスタファイルの一部。
【００５６】
（２）上記マルチプレクサは、
上記方向線を入力で受け取り、反転された方向線を出力に供給するインバータと、
上記合体された読取り/書込みワード線を第１入力で受け取り、上記方向線を第２入力で受け取り、書込みイネーブル信号を出力に供給する第１論理ゲートと、
上記第１論理ゲートの出力に供給される書込みイネーブル信号に結合されるイネーブル入力、上記書込み線に結合される入力、および上記記憶素子に結合される出力をもつ第１トライステート・バッファと、
上記合体された読取り/書込みワード線を第１入力で受け取り、上記インバータの出力からの反転された方向を第２入力で受け取り、読取りイネーブル信号を出力に供給する第２論理ゲートと、
上記第２論理ゲートの出力に供給される上記読取りイネーブル信号に結合されるイネーブル入力、上記記憶素子への入力、および上記読取り線に結合される出力をもつ第２トライステート・バッファと、
を含む、上記(1)に記載のレジスタファイルの一部。
【００５７】
（３）上記インバータ、上記第１および第２論理ゲート、ならびに上記第１および第２トライステート・バッファは、電界効果トランジスタから形成される、上記(2)に記載のレジスタファイルの一部。
【００５８】
（４）上記記憶素子は、書込み操作の間、上記マルチプレクサを通して書込み線から値を受け取るため該マルチプレクサに結合されるノードを含み、該ノードは、上記方向線が書込み方向状態を呈するときに高インピーダンス状態を呈する、上記(1)に記載のレジスタファイルの一部。
【００５９】
（５）上記ノードはさらに、読取り操作の間、上記マルチプレクサを通して上記読取り線に値を供給するため該マルチプレクサに結合され、該ノードは、上記方向線が読取り方向状態を呈するとき、上記記憶素子内に記憶される値に基づいてアクティブ状態を呈する、上記(4)に記載のレジスタファイルの一部。
【００６０】
（６）上記記憶素子は、上記方向線が書込み方向状態を呈するときにパワーダウンし、そのによって上記ノードを高インピーダンス状態に入れさせる、上記(4)に記載のレジスタファイルの一部。
【００６１】
（７）上記記憶素子は、結合されて帰還ループになる第１および第２インバータを含み、上記ノードは、該第１または第２インバータのいずれかの出力から導き出される、上記(6)に記載のレジスタファイルの一部。
【００６２】
（８）上記記憶素子は、上記ノードに結合される出力をもつトライステートインバータを含み、該トライステートインバータの出力は、上記方向線が書込み方向状態を呈するとき高インピーダンス状態に入る、上記(4)に記載のレジスタファイルの一部。
【００６３】
（９）上記記憶素子は第２インバータを含み、上記トライステートインバータおよび該第２インバータは、結合されて帰還ループになる、上記(8)に記載のレジスタファイルの一部。
【００６４】
（１０）値を記憶する記憶素子であって、書込み操作の間に記憶されようとする値を受け取るノードを含む記憶素子と、
書き込もうとする値を上記記憶素子に供給する書込み線と、
書込み操作の間、アクティブ状態を呈するワード線であって、上記記憶素子のノードは、書込み操作の間、高インピーダンス状態に入るワード線と、
を備えるレジスタファイルの一部。
【００６５】
（１１）上記記憶素子は、書込み操作の間はパワーダウンし、それによって上記ノードを高インピーダンス状態に入れる、上記(10)に記載のレジスタファイルの一部。
【００６６】
（１２）上記記憶素子は、結合されて帰還ループになる第１および第２インバータを含み、上記ノードは、該第１または第２インバータのいずれかの出力から導き出される、上記(11)に記載のレジスタファイルの一部。
【００６７】
（１３）上記記憶素子は、上記ノードに結合される出力をもつトライステートインバータを含み、該トライステートインバータの出力は、書込み操作の間、高インピーダンス状態に入る、上記(10)に記載のレジスタファイルの一部。
【００６８】
（１４）上記記憶素子は、第２インバータを含み、上記トライステートインバータおよび該第２インバータは、結合されて帰還ループになる、上記(13)に記載のレジスタファイルの部分。
【００６９】
（１５）上記ワード線は、読取りおよび書込み操作の間、アクティブ状態を呈する合体された読取り/書込みワード線であり、さらに、
上記記憶素子から値を受け取る読取り線と、
書込み操作の間、書込み方向状態を呈し、読取り操作の間、読取り方向状態を呈する方向線と、
上記合体された読取り/書込みワード線がアクティブであり、かつ、上記方向線が読取り方向状態を呈するとき、該記憶素子から値を読み取るように上記読取り線を上記記憶素子に結合し、そして、該合体された読取り/書込みワード線がアクティブ状態を呈し、かつ、該方向線が書込み方向状態を呈するとき、該記憶素子に値を書き込むように上記書込み線を該記憶素子に結合するマルチプレクサと、
を備える、上記(10)に記載のレジスタファイルの一部。
【００７０】
（１６）上記マルチプレクサは、
上記方向線を入力で受け取り、反転された方向線を出力に供給するインバータと、
上記合体された読取り/書込みワード線を第１入力で受け取り、上記方向線を第２入力で受け取り、書込みイネーブル信号を出力に供給する第１論理ゲートと、
上記第１論理ゲートの出力に供給される上記書込みイネーブル信号に結合されるイネーブル入力、上記書込み線に結合される入力、および上記記憶素子に結合される出力をもつ第１トライステート・バッファと、
上記合体された読取り/書込みワード線を第１入力で受け取り、上記インバータの出力からの反転された方向を第２出力で受け取り、読取りイネーブル信号を出力に供給する第２論理ゲートと、
上記第２論理ゲートの出力に供給される上記読取りイネーブル信号に結合されるイネーブル入力、上記記憶素子への入力、および上記読取り線に結合される出力をもつ第２トライステート・バッファと、
を含む上記(15)に記載のレジスタファイルの一部。
【００７１】
（１７）上記インバータ、上記第１および第２論理ゲート、ならびに上記第１および第２トライステート・バッファは、電界効果トランジスタから形成される、上記(16)に記載のレジスタファイルの一部。
【００７２】
（１８）コンピュータ・プロセッサであって、
複数の実行ユニットと、
R個の読取りポート、W個の書込みポート、およびN個のレジスタを含むレジスタファイルであって、
それぞれのレジスタは、
それぞれの読取り線がR個の読取りポートの1つと関連するR本の読取り線、
それぞれの書込み線がW個の書込みポートの1つと関連するW本の書込み線、
書込み操作の間に書込み方向状態を呈し、読取り操作の間に読取り方向状態を呈する方向線、
それぞれの合体された読取り/書込みワード線がR個の読取りポートの1つおよびW個の書込みポートの1つと関連するC本の合体された読取り/書込みワード線、
R＞Wの場合、合体された読取り/書込みワード線に関連しないR個の読取りポートのうちの1つとそれぞれの読取り専用ワード線が関連するR-W本の読取り専用ワード線、および、
W＞Rの場合、合体された読取り/書込みワード線に関連しないW個の書込みポートのうちの1つとそれぞれの書き込み専用ワード線が関連するW-R本の書込み専用ワード線、
によってアクセスされ、
それぞれのレジスタは、I個のビット位置を含み、
それぞれのビット位置は、該ビット位置に関連する値を記憶する記憶素子および記憶素子マルチプレクサを含み、
該記憶素子マルチプレクサは、上記方向線が読取り方向状態を呈し、読取り専用または合体されたワード線の中の1本がアサートされるとき、R本の読取り線のうちの1本を選択的に上記記憶素子に結合して上記記憶素子から値を読み取り、該選択される読取り線は、アサートされた読取り専用または合体された読取り/書込みワード線と同じ読取りポートに関連付けられており、また、上記方向線が書込み方向状態を呈し、書込み専用または合体されたワード線のうちの1本がアサートされるとき、W本の書込み線のうちの1本を選択的に上記記憶素子に結合して上記記憶素子に値を書き込み、該選択される書込み線は、アサートされた書込み専用または合体された読取り/書込みワード線と同じ書込みポートに関連付けられている、レジスタファイルと、
上記実行ユニットと上記レジスタファイルの間に結合されるW本の書込み線のバスと、
上記実行ユニットと上記レジスタファイルの間に結合されるR本の読取り線のバスと、
マルチプレクサと、
上記実行ユニットと上記マルチプレクサの間に結合されるレジスタ索引選択線のバスと、
方向線、合体された読取り/書込みワード線、および、R＞Wの場合はR-W本の読取り専用ワード線またはW＞Rの場合はW-R本の書込み専用ワード線のバスと、
を備えるコンピュータ・プロセッサ。
【００７３】
（１９）それぞれの記憶素子は、書込み操作の間、上記マルチプレクサを通して上記W本の書込み線のうちの1本から値を受け取るように上記記憶素子マルチプレクサに結合されるノードを含み、該ノードは、上記方向線が書込み方向状態を呈するとき高インピーダンス状態を呈する、上記(18)に記載のコンピュータ・プロセッサ。
【００７４】
（２０）上記ノードはさらに、読取り操作の間、上記マルチプレクサを通して上記R本の読取り線のうちの1本に値を供給するよう該マルチプレクサに結合され、該ノードは、上記方向線が読取り方向状態を呈するとき、上記記憶素子に記憶される値に基づいてアクティブ状態を呈する、上記(19)に記載のコンピュータ・プロセッサ。
【００７５】
（２１）上記記憶素子は、上記方向線が書込み方向状態を呈するときパワーダウンし、それによって上記ノードを高インピーダンス状態に入れさせる、上記(20)に記載のコンピュータプロセッサ。
【００７６】
（２２）それぞれの記憶素子は、結合されて帰還ループになる第１および第２インバータを含み、上記ノードは、該第１または第２インバータのいずれかの出力から導き出される、上記(21)に記載のコンピュータ・プロセッサ。
【００７７】
（２３）それぞれの記憶素子は、上記ノードに結合される出力をもつトライステートインバータを含み、該トライステートインバータの出力は、上記方向線が書込み方向状態を呈するとき高インピーダンス状態に入る、上記(19)に記載のコンピュータ・プロセッサ。
【００７８】
（２４）上記記憶素子は、第２インバータを含み、上記トライステートインバータおよび上記第２インバータは、結合されて帰還ループになる、上記(23)に記載のコンピュータ・プロセッサ。
【００７９】
（２５）レジスタファイルのレジスタの１ビットを記憶する記憶素子からの値を、読取り線に読み出す方法であって、
合体された読取り/書込みワード線をアサートし、
方向線を読取り方向状態に駆動し、
上記アサートされた合体された読取り/書込みワード線および上記方向線の読取り方向状態に基づいて読取りイネーブル信号を形成し、
上記読取りイネーブル信号に基づいてバッファをイネーブルして、上記記憶素子から値を受け取り、その値を読取り線に伝送する、
方法。
【００８０】
（２６）レジスタファイルのレジスタのビットを記憶する能力がある記憶素子に、書込み線からの値を書き込む方法であって、
合体された読取り/書込みワード線をアサートし、
方向線を書込み方向状態に駆動し、
上記アサートされた合体された読取り/書込みワード線および上記方向線の書込み方向状態に基づいて、書込みイネーブル信号を形成し、
上記書込みイネーブル信号に基づいてバッファをイネーブルして、上記書込み線からの値を上記記憶素子のノードに伝送し、それによって上記記憶素子にその値を保持させる、
方法。
【００８１】
（２７）さらに、上記方向線の書込み方向状態に基づいて、上記記憶素子のノードを高インピーダンス状態に入れる、上記(26)に記載の方法。
【００８２】
（２８）レジスタファイルのレジスタのビットを記憶する能力がある記憶素子に、書込み線からの値を書き込む方法であって、
ワード線をアサートし、
書込み操作の間、上記アサートされるワード線に基づいて、書込みイネーブル信号を形成し、
書込み操作の間、上記アサートされるワード線に基づいて、上記記憶素子のノードを高インピーダンス状態に入れ、
上記書込みイネーブル信号に基づいてバッファをイネーブルにし、上記記憶素子のノードに上記書込み線からの値を伝送し、
上記ノードを高インピーダンス状態からはずし、それによって上記記憶素子にその値を保持させる、
方法。
【００８３】
【発明の効果】
本発明によれば、プロセッサ内で使用されるレジスタファイルについて、方向線および共有される読取り/書込みワード線を使用してアクセスすることにより、レジスタファイルを横切る水平線の数を低減することができる。また、レジスタへの書込み操作の間、記憶素子をパワーダウンさせ、または記憶素子を高インピーダンス状態に入れることによって、小さいトランジスタを使用して記憶素子に値を書き込むことができ、レジスタファイルの大きさおよび電力要求を低減することができる。
【図面の簡単な説明】
【図１】先行技術のレジスタファイルを含む先行技術のプロセッサを示す簡略図。
【図２】図１に示される先行技術のレジスタファイルのレジスタの１つの一部を示す図。
【図３】この発明によるレジスタファイルをもつプロセッサを示す簡略ブロック図。
【図４】この発明に従って、図3に示されるレジスタファイルのレジスタの1つの一部を示す図。
【図５】図4に示されるレジスタの一部の中で使用される記憶素子の別の実施例を示す図。
【図６】図７および図８と一緒に、8個の書込みポートおよび12個の読取りポートをもつレジスタの２ビットについて、この発明の特定の実施例を示すトランジスタ・レベル回路図。
【図７】図６および図８と一緒に、8個の書込みポートおよび12個の読取りポートをもつレジスタの２ビットについて、この発明の特定の実施例を示すトランジスタ・レベル回路図。
【図８】図６および図７と一緒に、8個の書込みポートおよび12個の読取りポートをもつレジスタの２ビットについて、この発明の特定の実施例を示すトランジスタ・レベル回路図。
【図９】図5に示される記憶素子の別の実施例を示す図。
【符号の説明】
４０            複数実行ユニット
４２            マルチプレクサ
４４            レジスタファイル
４６            レジスタ索引線
４８            水平ワード線
５０            書込み線
５２            読取り線
５４            インバータ
５６            記憶素子
６４、６８      トライステート・バッファ
６２、６６      ANDゲート
【図１】
0003954238.tif 000002
【図２】
0003954238.tif 000003
【図３】
0003954238.tif 000004
【図４】
0003954238.tif 000005
【図５】
0003954238.tif 000006
【図６】
0003954238.tif 000007
【図７】
0003954238.tif 000008
【図８】
0003954238.tif 000009
【図９】
0003954238.tif 000010