(57)【要約】  命令オペランドのための狭い生成値をアウトオブオーダプロセッサ(OoP)内のレジスタマップ内に直接記憶することが開示される。命令処理システムを含むOoPが提供される。命令処理システムは、データフロー実行に従って命令の処理および実行をパイプライン処理するように構成されたいくつかの命令処理ステージを含む。命令処理システムはまた、後に実行される順序外の命令のための論理レジスタを上書きすることなく、コンシューマ命令によって使用するための生成されたデータを記憶するための物理レジスタファイル(PRF)内の物理レジスタに論理レジスタをマッピングするアドレスポインタを記憶するように構成されたレジスタマップテーブル(RMT)を含む。いくつかの態様では、命令処理システムは、狭い生成値をライトバックステージにおいてPRFに書き込むのとは対照的に、実行された命令によって生成された狭い値をRMTに直接ライトバックする(すなわち、記憶する)ように構成される。
2018523242.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサのための命令処理システムであって、
命令メモリから命令をフェッチするように構成されたインオーダ処理ステージと、
アウトオブオーダ処理ステージと
を備え、前記アウトオブオーダ処理ステージが、
命令を実行するように構成された実行回路と、
ライトバック回路であって、
前記実行回路内で前記実行された命令に対して生成された生成値が狭い生成値であるかどうかを決定し、
前記実行された命令に対する前記生成値が狭い生成値であることに応答して、物理レジスタファイル(PRF)内の物理レジスタのアドレスを指す少なくとも1つのアドレスポインタを記憶するように各々が構成された複数のマッピングエントリを備えるレジスタマップテーブル(RMT)の、前記実行された命令の宛先レジスタオペランドの論理レジスタにマッピングされたマッピングエントリに、情報として前記狭い生成値をライトバックする
ように構成されたライトバック回路と
を備える、命令処理システム。
【請求項２】
前記インオーダ処理ステージが、
前記実行回路内の前記実行された命令からの生成値を取り出すために、前記命令のソースレジスタオペランドの論理レジスタに基づいて、複数の物理レジスタを備える前記物理レジスタファイル(PRF)内の物理レジスタにアクセスし、
前記取り出された生成値を前記命令の前記ソースレジスタオペランドとして提供する
ように構成されたレジスタアクセス(RACC)回路をさらに備え、
前記アウトオブオーダ処理ステージが、
前記命令のためのすべてのソースレジスタオペランドが利用可能なとき、前記命令が実行されるように前記RACC回路から前記実行回路に前記命令をディスパッチする
ように構成されたディスパッチ回路をさらに備える、請求項1に記載の命令処理システム。
【請求項３】
前記ライトバック回路が、前記実行された命令に対する前記生成値が広い生成値であることに応答して、前記物理レジスタファイル(PRF)内の前記実行された命令の前記宛先レジスタオペランドに割り当てられた物理レジスタに前記広い生成値をライトバックするようにさらに構成された、請求項1に記載の命令処理システム。
【請求項４】
前記実行された命令に対する前記生成値が狭い生成値であることに応答して、前記ライトバック回路が、前記実行された命令の前記宛先レジスタオペランドへの前記物理レジスタファイル(PRF)内の割り当てられた物理レジスタを開放するようにさらに構成された、請求項1に記載の命令処理システム。
【請求項５】
前記ライトバック回路が、前記レジスタマップテーブル(RMT)から、前記実行された命令のための前記宛先レジスタオペランドが前記物理レジスタファイル(PRF)内の前記物理レジスタにマッピングされているかどうかを決定し、
前記実行された命令のための前記宛先レジスタオペランドが前記レジスタマップテーブル(RMT)内の前記マッピングエントリにマッピングされていることに応答して、前記レジスタマップテーブル(RMT)内の、前記実行された命令の前記宛先レジスタオペランドにマッピングされた前記マッピングエントリに、前記狭い生成値をライトバックする
ようにさらに構成された、請求項1に記載の命令処理システム。
【請求項６】
前記ライトバック回路が、
前記物理レジスタがマッピングされているかどうかを示す前記物理レジスタファイル(PRF)内の物理レジスタに各々が対応する複数のマッピングされたインジケータを備えるフィルタテーブルにアクセスし、
前記物理レジスタを示す前記フィルタテーブル内の前記複数のマッピングされたインジケータのうちのマッピングされたインジケータが前記実行された命令の前記宛先レジスタオペランドにマッピングされていることに応答して、前記レジスタマップテーブル(RMT)内の前記実行された命令の前記宛先レジスタオペランドにマッピングされた前記マッピングエントリに前記狭い生成値をライトバックする
ように構成されていることによって、前記レジスタマップテーブル(RMT)から、前記実行された命令のための前記宛先レジスタオペランドが前記物理レジスタファイル(PRF)内の前記物理レジスタにマッピングされているかどうかを決定するように構成された、請求項5に記載の命令処理システム。
【請求項７】
前記インオーダ処理ステージが、
前記命令を受信し、
前記命令の前記宛先レジスタオペランドの前記論理レジスタに基づいて、前記マッピングエントリを前記物理レジスタファイル(PRF)内の前記物理レジスタにマッピングするために、前記レジスタマップテーブル(RMT)にアクセスし、
前記命令の前記宛先レジスタオペランドにマッピングされた前記物理レジスタに対応する前記フィルタテーブル内の前記マッピングされたインジケータをクリアする
ように構成されたリネーム回路をさらに備える、請求項6に記載の命令処理システム。
【請求項８】
前記ライトバック回路が、前記物理レジスタが前記実行された命令の前記宛先レジスタオペランドにマッピングされていないことを示す前記フィルタテーブル内の前記マッピングされたインジケータに応答して、前記物理レジスタファイル(PRF)内の物理レジスタのアドレスへの少なくとも1つのアドレスポインタを記憶するように各々が構成された複数のマッピングエントリを備えるレジスタマップパッチ履歴テーブル内で、前記実行された命令の前記宛先レジスタオペランドにマッピングされた前記マッピングエントリに前記狭い生成値をライトバックするようにさらに構成された、請求項6に記載の命令処理システム。
【請求項９】
前記プロセッサにおいて生成された正確な割込みに応答して、前記レジスタマップテーブル(RMT)を以前の投機的状態に回復するように構成された、請求項8に記載の命令処理システム。
【請求項１０】
前記ライトバック回路が、準備ができていないと識別された前記命令の前記ソースレジスタオペランドのためのソース値として使用されるように、前記実行された命令に対する前記生成値を、データ転送ネットワークを介して前記ディスパッチ回路に転送するようにさらに構成された、請求項2に記載の命令処理システム。
【請求項１１】
前記RACC回路が、
前記命令の前記ソースレジスタオペランドのための前記生成値が消費される準備ができているかどうかを決定するために準備テーブルにアクセスし、
前記命令の前記ソースレジスタオペランドのための前記生成値が消費される準備ができていないとの決定に応答して、前記命令の前記ソースレジスタオペランドのための前記生成値なしに前記命令を前記ディスパッチ回路にディスパッチする
ようにさらに構成された、請求項10に記載の命令処理システム。
【請求項１２】
前記ライトバック回路が、前記生成値内の有効ビットの数を決定するように構成されていることによって、前記実行回路内で前記実行された命令に対して生成された前記生成値が前記狭い生成値であるかどうかを決定するように構成された、請求項1に記載の命令処理システム。
【請求項１３】
物理レジスタファイル(PRF)を備える、請求項1に記載の命令処理システム。
【請求項１４】
前記アウトオブオーダ処理ステージが、複数のアウトオブオーダ命令処理レーンを備え、前記アウトオブオーダ処理ステージが、前記複数のアウトオブオーダ命令処理レーン内で命令を処理するように構成された、請求項13に記載の命令処理システム。
【請求項１５】
前記物理レジスタファイル(PRF)内の物理レジスタのアドレスを指す、前記複数のアウトオブオーダ命令処理レーンの数よりも少ない数の少なくとも1つのアドレスポインタを記憶するように各々が構成された複数のマッピングエントリを備える前記レジスタマップテーブル(RMT)をさらに備える、請求項14に記載の命令処理システム。
【請求項１６】
前記レジスタマップテーブル(RMT)が、前記複数のアウトオブオーダ命令処理レーンの数よりも少ない書込みポートを含む、請求項15に記載の命令処理システム。
【請求項１７】
前記狭い生成値のビット幅が、前記少なくとも1つのアドレスポインタのビット幅と等しい、請求項15に記載の命令処理システム。
【請求項１８】
前記インオーダ処理ステージが、前記プロセッサのクロックサイクルごとに複数のインオーダ命令処理レーン内で命令を処理するように構成された、請求項14に記載の命令処理システム。
【請求項１９】
前記インオーダ処理ステージが、
前記命令を受信し、
前記命令のソースレジスタオペランドに基づいて、前記物理レジスタファイル(PRF)内の物理レジスタ内に記憶された情報を受信するために、前記命令の前記ソースレジスタオペランドの論理レジスタにマッピングされたマッピングエントリにおいて前記レジスタマップテーブル(RMT)を読み出し、
前記レジスタマップテーブル(RMT)から受信した前記情報が、狭い生成値であるのか、または広い生成値を記憶する前記物理レジスタファイル(PRF)内の物理レジスタにマッピングされたアドレスポインタであるかを決定し、
前記レジスタマップテーブル(RMT)から受信した前記情報が前記狭い生成値であることに応答して、前記命令の前記ソースレジスタオペランドのための前記生成値として前記受信した情報を提供する
ように構成されたリネーム回路をさらに備える、請求項1に記載の命令処理システム。
【請求項２０】
前記インオーダ処理ステージが、
前記実行回路内の前記実行された命令からの生成値を取り出すために、前記命令のソースレジスタオペランドの論理レジスタにマッピングされたマッピングエントリに基づいて、複数の物理レジスタを備える前記物理レジスタファイル(PRF)内の物理レジスタにアクセスし、
前記命令の前記ソースレジスタオペランドとして前記取り出された生成値を提供する
ように構成されたレジスタアクセス(RACC)回路をさらに備え、
前記RACC回路が、前記広い生成値である前記レジスタマップテーブル(RMT)からの前記アドレスポインタを前記リネーム回路が受信することに応答して、
前記物理レジスタ内に記憶された前記広い生成値を取り出すために前記物理レジスタファイル(PRF)内の前記アドレスポインタにおいて前記物理レジスタにアクセスし、
前記命令の前記ソースレジスタオペランドのための前記受信した広い生成値を提供する
ようにさらに構成された、請求項19に記載の命令処理システム。
【請求項２１】
命令のグループの前記狭い生成値である、前記レジスタマップテーブル(RMT)からの前記アドレスポインタを前記リネーム回路が受信することに応答して、前記リネーム回路が、命令の前記グループをディスパッチ回路に提供するために前記RACC回路をバイパスするようにさらに構成された、請求項20に記載の命令処理システム。
【請求項２２】
前記リネーム回路が
ポインタレジスタマップテーブル(RMT)または値レジスタマップテーブル(RMT)が前記命令の前記ソースレジスタオペランドの前記論理レジスタにマッピングされた前記マッピングエントリのための有効データエントリを含むかどうかを決定するために、前記命令の前記ソースレジスタオペランドの前記論理レジスタにマッピングされた前記マッピングエントリにおいて前記値レジスタマップテーブル(RMT)を読み出し、
前記ポインタレジスタマップテーブル(RMT)が前記命令の前記ソースレジスタオペランドの前記論理レジスタにマッピングされた前記マッピングエントリのための有効データエントリを含むとの決定に応答して、前記命令の前記ソースレジスタオペランドのための前記狭い生成値として、前記ポインタレジスタマップテーブル(RMT)内の前記マッピングエントリにおいて受信した前記情報を提供し、
前記値レジスタマップテーブル(RMT)が前記命令の前記ソースレジスタオペランドの前記論理レジスタにマッピングされた前記マッピングエントリのための有効データエントリを含むとの決定に応答して、前記物理レジスタ内に記憶された広い生成値を取り出すために、前記値レジスタマップテーブル(RMT)内の前記マッピングエントリ内に記憶された情報の前記アドレスポインタにおいて前記物理レジスタファイル(PRF)内の前記物理レジスタにアクセスする
ように構成されていることによって、前記命令の前記ソースレジスタオペランドに基づいて、前記物理レジスタファイル(PRF)内の前記物理レジスタ内の前記情報を受信するために、前記命令の前記ソースレジスタオペランドの前記論理レジスタにマッピングされた前記マッピングエントリにおいて前記レジスタマップテーブル(RMT)を読み出すように構成された、請求項19に記載の命令処理システム。
【請求項２３】
システムオンチップ(SoC)に組み込まれた、請求項1に記載の命令処理システム。
【請求項２４】
セットトップボックス、エンターテイメントユニット、ナビゲーションデバイス、通信デバイス、固定位置データユニット、モバイル位置データユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)、およびポータブルデジタルビデオプレーヤから成るグループから選択されたデバイスに組み込まれた、請求項1に記載の命令処理システム。
【請求項２５】
プロセッサのための命令処理システムであって、
命令メモリから命令をフェッチするための手段と、
前記命令を実行するための手段と、
前記実行された命令に対して生成された生成値が狭い生成値であるかどうかを決定するための手段と、
前記実行された命令に対する前記生成値が狭い生成値であることに応答して、物理レジスタファイル(PRF)内の物理レジスタのアドレスを指す少なくとも1つのアドレスポインタを記憶するように各々が構成された複数のマッピングエントリを備えるレジスタマップテーブル(RMT)の、前記実行された命令の宛先レジスタオペランドの論理レジスタにマッピングされたマッピングエントリに、情報として前記狭い生成値をライトバックするための手段と
を備える、命令処理システム。
【請求項２６】
プロセッサにおいて命令を処理する方法であって、
インオーダ処理ステージにおいて命令メモリから命令をフェッチするステップと、
アウトオブオーダ処理ステージにおいて前記命令を実行するステップと、
前記実行された命令に対して生成された生成値が狭い生成値であるかどうかを決定するステップと、
前記実行された命令に対する前記生成値が狭い生成値であることに応答して、物理レジスタファイル(PRF)内の物理レジスタのアドレスを指す少なくとも1つのアドレスポインタを記憶するように各々が構成された複数のマッピングエントリを備えるレジスタマップテーブル(RMT)の、前記実行された命令の宛先レジスタオペランドの論理レジスタにマッピングされたマッピングエントリに、情報として前記アウトオブオーダ処理ステージからの狭い生成値をライトバックするステップと
を備える方法。
【請求項２７】
前記インオーダ処理ステージにおいて、前記アウトオブオーダ処理ステージ内の実行回路内の実行された命令からの生成値を取り出すために、命令のソースレジスタオペランドの論理レジスタにマッピングされたマッピングエントリ基づいて、複数の物理レジスタを備える前記物理レジスタファイル(PRF)内の物理レジスタにアクセスするステップと、
前記インオーダ処理ステージにおいて、前記取り出された生成値を前記命令の前記ソースレジスタオペランドとして提供するステップと、
前記命令のためのすべてのソースレジスタオペランドが利用可能なとき、前記命令を、実行されるように前記インオーダ処理ステージから前記アウトオブオーダ処理ステージの前記実行回路にディスパッチするステップと
をさらに備える、請求項26に記載の方法。
【請求項２８】
前記実行された命令に対する前記生成値が広い生成値であることに応答して、前記物理レジスタファイル(PRF)内の前記実行された命令の前記宛先レジスタオペランドに割り当てられた物理レジスタに前記広い生成値をライトバックするステップをさらに備える、請求項26に記載の方法。
【請求項２９】
前記実行された命令に対する前記生成値が狭い生成値であることに応答して、前記実行された命令の前記宛先レジスタオペランドへの前記物理レジスタファイル(PRF)内の割り当てられた物理レジスタを開放するステップをさらに備える、請求項26に記載の方法。
【請求項３０】
前記レジスタマップテーブル(RMT)から、前記実行された命令のための前記宛先レジスタオペランドが前記物理レジスタファイル(PRF)内の前記物理レジスタにマッピングされているかどうかを決定するステップと、
前記実行された命令のための前記宛先レジスタオペランドが前記レジスタマップテーブル(RMT)内の前記マッピングエントリにマッピングされていることに応答して、前記レジスタマップテーブル(RMT)内の、前記実行された命令の前記宛先レジスタオペランドの前記論理レジスタにマッピングされた前記マッピングエントリに、前記狭い生成値をライトバックするステップと
をさらに備える、請求項26に記載の方法。
【請求項３１】
準備ができていないと識別された前記命令のソースレジスタオペランドのためのソース値として使用されるように、前記実行された命令に対する前記生成値を、転送経路を介して転送するステップをさらに備える、請求項26に記載の方法。
【請求項３２】
前記命令のソースレジスタオペランドに基づいて、情報を受信するために、前記インオーダ処理ステージにおいて、前記命令のソースレジスタオペランドの論理レジスタにマッピングされたマッピングエントリにおいて前記レジスタマップテーブル(RMT)を読み出すステップと、
前記レジスタマップテーブル(RMT)から受信した前記情報が、狭い生成値であるのか、または広い生成値を記憶する前記物理レジスタファイル(PRF)内の物理レジスタにマッピングされたアドレスポインタであるかを決定するステップと、
前記レジスタマップテーブル(RMT)から受信した前記アドレスポインタが狭い生成値であることに応答して、前記命令の前記ソースレジスタオペランドのための前記生成値として前記受信した情報を提供するステップと
をさらに備える、請求項26に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権出願
本出願は、参照によりその全体が本明細書に組み込まれる、2015年8月14日に出願した、「STORING NARROW PRODUCED VALUES FOR INSTRUCTION OPERANDS DIRECTLY IN A REGISTER MAP IN AN OUT-OF-ORDER PROCESSOR (OOP) FOR REDUCED PHYSICAL REGISTER FILE PORT PRESSURE AND/OR INCREASED PERFORMANCE」と題する米国仮特許出願第62/205,379号の優先権を主張するものである。
【０００２】
本出願は、参照によりその全体が本明細書に組み込まれる、2015年9月21日に出願した、「STORING NARROW PRODUCED VALUES FOR INSTRUCTION OPERANDS DIRECTLY IN A REGISTER MAP IN AN OUT-OF-ORDER PROCESSOR」と題する米国特許出願第14/860,032号の優先権を主張するものである。
【０００３】
本開示の技術は、一般には、アウトオブオーダプロセッサ(OoP:out-of-order processor)に関し、より詳細には、処理およびパイプライン命令のためのOoPにおける命令処理システムに関する。
【背景技術】
【０００４】
現代の多くのプロセッサは、アウトオブオーダプロセッサ(OoP)である。OoPは、プログラム命令(「命令」と呼ばれる)のデータフロー実行が可能なプロセッサである。データフロー実行手法を使用すると、OoPにおける命令の実行順序は、命令のプログラム順序ではなく、命令によって消費される入力データの可用性(「データフロー順序」)によって決定され得る。したがって、OoPは、命令によって消費されるすべての入力データが生成されるとすぐに命令を実行し得る。命令のデータフロー順序処理は、命令が実行される特定の順序を予測不可能にする場合があるが、OoPにおけるデータフロー順序実行は、性能の向上を実現する場合がある。たとえば、消費される入力データがより古い命令のために取り出される間に「ストール」する(すなわち、意図的に処理遅延を導入する)代わりに、OoPは、すぐに実行できるより最近フェッチされた命令の実行を進めることができる。このように、そうでなければ命令処理および実行に使用されないであろうプロセッサクロックサイクルは、OoPによって生産的に利用され得る。
【０００５】
OoPは、インオーダパイプラインステージとアウトオブオーダパイプラインステージとを含み得る。OoPにおけるインオーダステージは、従来、命令内のソースレジスタオペランドのためのデータを命令キャッシュまたはメモリから投機的予測(たとえば、分岐予測)のために1つまたは複数の命令パイプラインにフェッチし、復号し、取得する命令を含む。OoPにおけるアウトオブオーダパイプラインステージは、従来、命令の実行と、他のパイプライン命令によって消費される実行された命令から生成されたデータのライトバックとを含む。OoPはまた、レジスタマップテーブル(RMT:register map table)と物理レジスタファイル(PRF:physical register file)構造とを含む。命令からのソースレジスタオペランドのためのデータを供給するとき、命令処理システムは、ソースレジスタオペランドの論理レジスタに対応する物理レジスタを識別するためにRMTにアクセスし得る。OoPのアーキテクチャに従って命令に利用可能になる論理レジスタの数よりも多くの、PRF内で提供される物理レジスタが存在するので、RMTは、論理レジスタをPRF内の物理レジスタにマッピングするために提供される。PRFを提供することは、OoPが、データがシステムメモリから読み取られるのを待つなど、より遅く実行される遅延された命令を通り越して順序外に命令を処理することを可能にする。この点に関して、より後に実行されるがより前にフェッチされる命令と同じレジスタソースオペランドを有する、より前に実行されるがより後にフェッチされる命令は、より前にフェッチされる命令の物理レジスタを上書きしないようにPRF内の一意の物理レジスタを割り当てられ得る。
【０００６】
したがって、OoPにおける重要な設計選択は、PRFのサイズである。性能の向上のために独立して順序外に実行され得るより多くの命令を抽出するために、OoPが多数の将来の命令(すなわち、命令ウィンドウ)に対する可視性を有することが望ましい場合、PRFは、ソースオペランドのための一意の物理レジスタの割当てに対応するためにより大きく設計されるべきである。しかしながら、より大きいPRFサイズは、PRFアクセス時間と、したがって、サイクル時間とを増大させ、それは、性能を低下させる。より大きいPRFサイズはまた、面積と関連するコストとを追加し、消費電力を増加させる。また、性能の向上のために同じプロセッサクロックサイクルにおいてPRFから物理レジスタからの命令のためのソースデータを読み取るために提供される命令処理システムにおける命令ステージが広くなるほど、PRFにおいて必要な読取りポートの数が多くなる。十分なパイプライン幅を持たないより大きいウィンドウサイズは、OoPにおける性能の可能な向上を低下させる可能性がある。また、性能の向上のためにライトバックパイプラインステージが広くなるほど、実行された命令から生成された値をPRF内の物理レジスタにライトバックできるようにするためにPRFに必要な書込みポートが多くなる。より大きいPRFはまた、より大きいPRFを提供することの問題をさらに悪化させるマルチスレッドをサポートするために構築的および投機的なレジスタ状態を保持することを要求され得る。
【発明の概要】
【課題を解決するための手段】
【０００７】
本明細書で開示する態様は、命令オペランドのための狭い生成値をアウトオブオーダプロセッサ(OoP)内のレジスタマップ内に直接記憶することを含む。非限定的な例として、命令オペランドのための狭い生成値をOoP内のレジスタマップ内に直接記憶することは、物理レジスタファイルのポート圧力および/または性能向上を低下させる可能性がある。この点に関して、本明細書で開示されるいくつかの態様では、命令処理システムを含むOoPが提供される。命令処理システムは、データフロー実行に従って命令の処理および実行をパイプライン処理するように構成されたいくつかの命令処理ステージを含む。命令処理システムはまた、後に実行される順序外の命令のための論理レジスタを上書きすることなく、命令を消費することによって使用するための生成されたデータを記憶するための物理レジスタファイル(PRF)内の物理レジスタに論理レジスタをマッピングするアドレスポインタを記憶するように構成されたレジスタマップテーブル(RMT)を含む。本明細書で開示するいくつかの態様では、命令処理システムは、生成された狭い値をライトバックステージにおいてPRFに書き込むのとは対照的に、実行命令によって生成された狭い値をRMTに直接ライトバックする(すなわち、記憶する)ように構成される。このようにして、狭い生成値がより後で消費する命令のために命令処理システムによってアクセスされるとき、狭い生成値は、さらなるプロセッサクロックサイクルにおけるPRFへのさらなるアクセスを必要とするアドレスポインタにアクセスする代わりに、RMTから直接取得され得る。また、命令処理システムは、RMT内の狭い生成値を直接ライトバックおよびアクセスするように構成されるので、性能を低下させることなく、面積および関連するコストならびに消費電力を低減するためにPRF内の読取りおよび/または書込みポート圧力(すなわち、ポート数)を低減することも可能である。これは、アプリケーションに依存して、特定の数のプログラム命令が狭い値を生成または消費し、それによって、PRFへの全データ幅アクセスの頻度を減少させるためである。
【０００８】
この点に関して、一態様では、プロセッサのための命令処理システムが提供される。命令処理システムは、インオーダ処理ステージを備える。インオーダ処理ステージは、命令メモリから命令をフェッチするように構成される。命令処理システムは、アウトオブオーダ処理ステージをさらに備える。アウトオブオーダ処理ステージは、命令を実行するように構成された実行回路と、ライトバック回路とを備える。ライトバック回路は、実行回路内で実行された命令に対して生成された生成値が狭い生成値であるかどうかを決定するように構成される。実行された命令に対する生成値が狭い生成値であることに応答して、ライトバック回路は、物理レジスタファイル(PRF)内の物理レジスタのアドレスを指す少なくとも1つのアドレスポインタを記憶するように各々が構成された複数のマッピングエントリを備えるレジスタマップテーブル(RMT)の、実行された命令の宛先レジスタオペランドの論理レジスタにマッピングされたマッピングエントリに、情報として狭い生成値をライトバックするように構成される。
【０００９】
別の例示的な態様では、プロセッサのための命令処理システムが提供される。命令処理システムは、命令メモリから命令をフェッチするための手段と、命令を実行するための手段と、実行された命令に対して生成された生成値が狭い生成値であるかどうかを決定するための手段とを備える。実行された命令に対する生成値が狭い生成値であることに応答して、命令処理システムは、物理レジスタファイル(PRF)内の物理レジスタのアドレスを指す少なくとも1つのアドレスポインタを記憶するように各々が構成された複数のマッピングエントリを備えるレジスタマップテーブル(RMT)の、実行された命令の宛先レジスタオペランドの論理レジスタにマッピングされたマッピングエントリに、情報として狭い生成値をライトバックするための手段をさらに備える。
【００１０】
別の態様では、プロセッサにおいて命令を処理する方法が提供される。方法は、インオーダ処理ステージにおいて命令メモリから命令をフェッチするステップと、アウトオブオーダ処理ステージにおいて命令を実行するステップとを備える。方法は、実行された命令に対して生成された生成値が狭い生成値であるかどうかを決定するステップをさらに備える。実行された命令に対する生成値が狭い生成値であることに応答して、方法は、物理レジスタファイル(PRF)内の物理レジスタのアドレスを指す少なくとも1つのアドレスポインタを記憶するように各々が構成された複数のマッピングエントリを備えるレジスタマップテーブル(RMT)の、実行された命令の宛先レジスタオペランドの論理レジスタにマッピングされたマッピングエントリに、情報としてアウトオブオーダ処理ステージからの狭い生成値をライトバックするステップを備える。
【図面の簡単な説明】
【００１１】
【図１】実行のための命令をフェッチし、パイプライン処理し、処理するように構成され、実行命令によって生成された狭い値をレジスタマップテーブル(RMT)に直接ライトバックするように構成された命令処理システムを含むアウトオブオーダプロセッサ(OoP)を含む例示的な中央処理装置(CPU)ベースのシステムのブロック図である。
【図２】実行命令によって生成された狭い値をRMTに直接ライトバックすることと、命令ソースレジスタオペランドを消費するための狭い値にRMTから直接アクセスすることとについてより例示的な詳細を説明するための図1中の例示的な命令処理システムのブロック図である。
【図３Ａ】命令ソースレジスタオペランドを消費するための狭い値にレジスタマップテーブル(RMT)から直接アクセスし、実行された命令によって生成された狭い生成値をレジスタマップテーブル(RMT)に直接ライトバックするための、図2中のOoP内の命令処理システムの例示的なインオーダ命令処理を示すフローチャートである。
【図３Ｂ】命令ソースレジスタオペランドを消費するための狭い値にレジスタマップテーブル(RMT)から直接アクセスし、実行された命令によって生成された狭い生成値をレジスタマップテーブル(RMT)に直接ライトバックするための、図2中のOoP内の命令処理システムの例示的なアウトオーダ命令処理を示すフローチャートである。
【図４】正確な割込みの発生などにより履歴値がレジスタマップテーブル(RMT)に復元される必要がある場合に、レジスタマップテーブル(RMT)にライトバックされた狭い値の履歴値を記憶するために使用されるマップパッチ履歴テーブルを追加で含む図2の命令処理システムのブロック図である。
【図５】ポート圧力を低減して、すべてのライトバック値が狭い値である場合など、ライトバックステージの全幅のライトバックを可能にする、ポインタレジスタマップテーブル(RMT)と、値インジケータテーブルと、値レジスタマップテーブル(RMT)とにわたって設けられた別の例示的なレジスタマップテーブル(RMT)のブロック図である。
【図６】実行命令によって生成された狭い値をレジスタマップテーブル(RMT)に直接ライトバックするように構成された命令処理システムを含むCPUを含む例示的なプロセッサベースのシステムのブロック図である。
【発明を実施するための形態】
【００１２】
ここで図面に関連して、本開示のいくつかの例示的な態様について説明する。「例示的」という単語は、本明細書では、「例、事例、または例示として役に立つ」ことを意味するために使用される。本明細書で「例示的」として記載されている任意の態様は、必ずしも他の態様よりも好ましいまたは有利であると解釈されるべきではない。
【００１３】
図1は、中央処理装置(CPU)システム102内に設けられた例示的な命令処理システム100のブロック図である。CPUシステム102は、一例としてシステムオンチップ(SoC)104内に設けられ得る。命令処理システム100は、CPUシステム102内のアウトオブオーダプロセッサ(OoP)106によって実行されるべき命令を処理するように構成される。この点に関して、命令108は、命令メモリ116から命令処理システム100のフロントエンド命令ステージ114F内のインオーダ処理ステージ112I内に設けられた命令フェッチ回路110によってフェッチされる。命令メモリ116は、一例としてCPUシステム102内のシステムメモリ内にまたはその一部として設けられ得る。命令キャッシュ118はまた、命令108をフェッチする命令フェッチ回路110内のレイテンシを低減するために、命令メモリ116から命令108をキャッシュするためにCPUシステム102内に設けられ得る。命令フェッチ回路110は、フェッチされた命令108Fが実行される命令処理システム100内のバックエンド命令ステージ114B内の実行回路120に到達する前に、前処理される命令処理システム100内の1つまたは複数の命令パイプラインI0〜INに、フェッチされた命令108Fとして命令108を提供するように構成される。命令パイプラインI0〜INは、実行回路120におけるフェッチされた命令108Fの実行の前にスループットを増加させるために同時に実行される一連のステップにおいてフェッチされた命令108Fを前処理および処理するために、命令処理システム100の異なる処理回路またはステージにわたって設けられる。
【００１４】
引き続き図1に関連して、条件付き分岐命令などの制御フローのフェッチされた命令108Fのためのターゲットアドレスを推測または予測するために、フロントエンド命令ステージ114F内に制御フロー予測回路122(たとえば、分岐予測回路)も設けられる。制御フロー予測回路122によるターゲットアドレスの予測は、予測されたターゲットアドレスに基づいてフェッチする次のフェッチされた命令108Fを決定するために、命令フェッチ回路110によって使用される。この例における命令処理システム100のフロントエンド命令ステージ114Fはまた、命令復号回路124を含む。命令復号回路124は、命令108のタイプと必要なアクションとを決定するために、命令フェッチ回路110によってフェッチされたフェッチされた命令108Fを復号された命令108Dに復号するように構成され、それは次に、どの命令パイプラインI0〜IN内にフェッチされた命令108Fが置かれるべきかを決定するために使用される。
【００１５】
引き続き図1に関連して、この例では、復号された命令108Dは次いで、命令パイプラインI0〜INのうちの1つまたは複数の中に置かれ、次に、命令処理システム100のバックエンド命令ステージ114B内のリネーム回路126に提供される。リネーム回路126は、復号された命令108Dにおける任意のレジスタ名が、命令108の並列処理または順序外処理を妨げる任意のレジスタ依存性を壊すためにリネームされる必要があるかどうかを決定するように構成される。図1中の命令処理システム100は、可能ならば、より高いスループット性能および並列性を達成するために、フェッチされた命令108Fを順序外で処理することができる。しかしながら、CPUシステム102内に設けられる論理(すなわち、構造上の)レジスタの数は、制限される場合がある。
【００１６】
この点に関して、リネーム回路126は、命令処理システム100のバックエンド命令ステージ114B内に設けられる。リネーム回路126は、論理ソースレジスタオペランド130Sをリネームすること、および/または命令108の宛先レジスタオペランド130Dを物理レジスタファイル(PRF)134内の利用可能な物理レジスタ132(1)〜132(X)(P1、P2、...、PX)に書き込むことをレジスタマップテーブル(RMT)128に求めるように構成される。レジスタマップテーブル(RMT)128は、各々がそれぞれの論理レジスタR1〜RLにマッピングされた(すなわち、関連付けられた)複数のマッピングエントリ136(1)〜136(L)を含む。マッピングエントリ136(1)〜136(L)は、物理レジスタファイル(PRF)134内の物理レジスタ132(1)〜132(X)を指すアドレスポインタの形態において情報140(1)〜140(L)を記憶するように構成されたデータエントリ138(1)〜138(L)を各々含む。物理レジスタファイル(PRF)134内の各物理レジスタ132(1)〜132(X)は、命令108のソースレジスタオペランド130Sおよび/または宛先レジスタオペランド130Dのためのデータ144(1)〜144(X)を記憶するように構成されたデータエントリ142(1)〜142(X)を含む。
【００１７】
性能を向上させるために独立して順序外で実行され得るより多くの命令108を抽出するために、図1中のOoP106が多数の将来の命令108(すなわち、命令ウィンドウ)に対する可視性を有するようにすることが望ましい場合がある。この点に関して、物理レジスタファイル(PRF)134は、ソースレジスタオペランド130Sに対する固有の物理レジスタ132(1)〜132(X)の割当てに適応するようにより大きく設計され得る。しかしながら、より大きい物理レジスタファイル(PRF)134のサイズは、物理レジスタファイル(PRF)134へのアクセス時間と、したがって、プロセッササイクル時間とを増加させ、それは、OoP106の性能を低下させる。より大きい物理レジスタファイル(PRF)134を設けることはまた、OoP106に面積と関連するコストとを追加し、消費電力を増加させる。OoP106の性能は、サポートされる論理レジスタ136(1)〜136(L)の数が増加する場合、悪化する。加えて、OoP106が、マルチスレッディングなどを介して複数のプログラムコンテキストをサポートする必要がある場合、物理レジスタファイル(PRF)134において必要とされる物理レジスタ132(1)〜132(X)の数は、大幅に増加する可能性がある。
【００１８】
この点に関して、図1、および図1中の命令処理システム100の図2におけるより詳細な図に示すように、命令処理システム100は、レジスタアクセス(RACC)回路146を含む。RACC回路146は、ディスパッチ回路148の前に命令パイプラインI0〜IN内のインオーダ処理ステージ112I内に設けられる。図2に示すように、RACC回路146は、実行回路120内の実行された命令108Eから生成された値を取り出すために、復号された命令108Dのソースレジスタオペランド130Sの論理レジスタにマッピングされたマッピングエントリ136(1)〜136(L)に基づいて、物理レジスタファイル(PRF)134内の物理レジスタ132(1)〜132(X)にアクセスするように構成される。RACC回路146はまた、実行された命令108Eから生成された取り出された値を、実行されるべき命令108のソースレジスタオペランド130Sとして提供するように構成される。また、図1中の命令処理システム100は、以下により詳細に説明するように、ディスパッチ回路148は、命令パイプラインI0〜IN内にRACC回路146の後にアウトオブオーダ処理ステージ112Oとして設けられる。ディスパッチ回路148は、復号された命令108Dのためのすべてのソースレジスタオペランド130Sが利用可能であるときに実行されるように、復号された命令108Dを実行回路120にディスパッチするように構成される。実行回路120およびライトバック回路150は、アウトオブオーダ処理ステージ112Oとして設けられる。
【００１９】
引き続き図2中の命令処理システム100に関連して、以下により詳細に説明するように、ライトバック回路150は、実行された命令108Eから生成された狭い生成値をレジスタマップテーブル(RMT)128に直接ライトバックするように構成される。狭い生成値は、物理レジスタファイル(PRF)へのアドレスポインタを記憶するように構成されたレジスタマップテーブル(RMT)内のマッピングエントリのビット幅と同じかまたはそれ未満であるビット幅を有する値である。このようにして、値を記憶する物理レジスタファイル(PRF)内の場所に対するアドレスポインタを含むレジスタマップテーブル(RMT)とは対照的に、狭い生成値は、レジスタマップテーブル(RMT)に記憶され得る。命令処理システム100のこの例では、狭い生成値は、レジスタマップテーブル(RMT)128内のマッピングエントリ136(1)〜136(L)(R1〜RL)のビット幅と同じかまたはそれ未満であるビット幅を有する値である。この点に関して、図2中の命令処理システム100内のライトバック回路150は、実行回路120によって実行された命令108Eに対して生成された生成値が狭い生成値であるかどうかを決定するように構成される。実行された命令108Eに対する生成値が狭い生成値であることに応答して、ライトバック回路150は、物理レジスタファイル(PRF)134内の物理レジスタ132(1)〜132(X)のアドレスを指す情報140(1)〜140(L)としてアドレスポインタを記憶するのではなく、レジスタマップテーブル(RMT)128内の実行された命令108Eの宛先レジスタオペランド130Dの論理レジスタにマッピングされたマッピングエントリ136(1)〜136(L)に、狭い生成値を情報140(1)〜140(L)としてライトバックする。たとえば、実行された命令108Eから生じる狭い生成値が0x5Fである場合、レジスタマップテーブル(RMT)128内のマッピングエントリ136(1)〜136(L)のビット幅が8ビットである場合、ライトバック回路150は、物理レジスタファイル(PRF)134内の物理レジスタ132(1)〜132(X)に0x5Fを書き込むのではなく、レジスタマップテーブル(RMT)128内のマッピングエントリ136(たとえば、マッピングエントリ136(2))に0x5Fを直接書き込むように構成される。したがって、物理レジスタファイル(PRF)134からアドレスポインタとして情報140(1)〜140(L)を使用して実行されるべき復号された命令108Dのためのソースレジスタオペランド130Sのための狭い生成値を読み込むために、命令処理システム100内のRACC回路146によって追加の処理時間が必要とされない。命令処理システム100内のリネーム回路126は、そのような狭い生成値をRACC回路146に提供するために、レジスタマップテーブル(RMT)128から、以前に実行された命令108Eからの狭い生成値のためのソースレジスタオペランド130Sを直接書き込むことができる。
【００２０】
たとえば、図2中の命令処理システム100内のレジスタマップテーブル(RMT)128内のデータエントリ138(1)〜138(L)のデータビット幅が8ビット幅である場合、情報140(1)〜140(L)は、8ビット幅であり得る。したがって、物理レジスタファイル(PRF)134内の256までの物理レジスタ132(1)〜132(X)は、命令処理システム100内のリネーム回路126によって記憶されたレジスタマップテーブル(RMT)128を使用してアドレスポインタとして情報140(1)〜140(L)によってアドレスされ得る。したがって、命令処理システム100内の実行回路120によって実行された実行命令108Eからの生成値が8ビット幅以下である場合、この生成値は、ライトバック回路150によってレジスタマップテーブル(RMT)128内のデータエントリ138(1)〜138(L)内に直接ライトバックされ得る。これは、狭い生成値を物理レジスタファイル(PRF)134にライトバックすることとは対照的である。このようにして、物理レジスタファイル(PRF)134からアドレスポインタとして情報140(1)〜140(L)を使用して実行されるべき復号された命令108Dのためのソースレジスタオペランド130Sのための狭い生成値を読み込むために、命令処理システム100内のRACC回路146によって追加の処理時間が必要とされない。しかしながら、図2中の命令処理システム100内の実行回路120によって実行された命令108Eからの生成値が、広い生成値である場合(生成値のデータビット幅がレジスタマップテーブル(RMT)128内のデータエントリ138(1)〜138(L)のデータビット幅(すなわち、情報140(1)〜140(L)の幅)よりも大きいことを意味する)、RACC回路146は、正常に物理レジスタファイル(PRF)134からアドレスポインタとして情報140(1)〜140(L)を使用して広い生成値を読み込むことができる。この例におけるレジスタマップテーブル(RMT)128内のデータエントリ138(1)〜138(L)は、広い生成値を直接記憶するのに十分なほど広くないので、ライトバック回路150は、この例では、実行された命令108Eからの広い生成値を物理レジスタファイル(PRF)134にライトバックするように構成される。この点に関して、レジスタマップテーブル(RMT)128は、それぞれのマッピングエントリ136(1)〜136(L)に記憶された情報140(1)〜140(L)がアドレスポインタまたは狭い生成値であるかどうかを示す、ビット151(1)〜151(L)などのフラグを有し得る。
【００２１】
図2に示すように、命令処理システム100内のライトバック回路150は、実行された命令108Eからの狭い生成値をレジスタマップテーブル(RMT) 128にライトバックするように構成され、性能の低下なしに、物理レジスタファイル(PRF)134に提供される書込みポート252(1)〜252(Y)の低減を可能にすることもできる。このようにして、命令108のウィンドウを増加させるためにOoP106内のより大きい物理レジスタファイル(PRF)134を提供することによって通常生じる面積および/または消費電力の増大は、物理レジスタファイル(PRF)134内の書込みポート252(1)〜252(Y)の数を減少させることによってオフセットされ得る。
【００２２】
たとえば、図2中のOoP106のインオーダ処理ステージ112Iが、OoP106サイクルごとに「F」の命令108を処理するように設計された「F」のインオーダ命令処理レーン256Iを有すると仮定する。たとえば、「F」は、この例では2つまでの命令108であり得る。したがって、この例では、フロントエンド命令ステージ114Fにおける命令108に関するデータの読出しおよび書込みの各インスタンスに対して、レジスタマップテーブル(RMT)128において2つのポートが必要とされる。ここで、OoP106のアウトオブオーダ処理ステージ112Oが、OoP106サイクルごとに「B」の生成されたデータの値をライトバックすることができるライトバック回路150を用いて、OoP106サイクルごとに「B」の命令108をディスパッチ回路148がディスパッチし、実行回路120が実行することを可能にするように設計された「B」のアウトオブオーダ命令処理レーン256Oを有すると仮定する。たとえば、「B」は、4つまでの命令108であり得る。したがって、この例では、ライトバック回路150から命令108に関するデータを書き込む各インスタンスに対して、この例では、物理レジスタファイル(PRF)134において4つの書込みポートが必要とされる。しかしながら、狭い生成値をレジスタマップテーブル(RMT)128に直接ライトバックするように構成されているライトバック回路150によって、ライトバック回路150によって生成されたすべての「B」の値が物理レジスタファイル(PRF)134に書き込まれなければならない広い生成値でもある場合は、しばしば統計的に少なくなる。このようにして、広い生成値から成るライトバック回路150における全幅「B」の減少した周波数のため、物理レジスタファイル(PRF)134に提供される書込みポート252(1)〜252(Y)は、同じOoP106内の物理レジスタファイル(PRF)134に「B」の生成物がライトバックされるのを可能にするよりも少ない書込みポート(たとえば、「B」/2の書込みポート252(1)〜252(Y)であり、ここで、「Y」=「B」/2)に低減され得る。しかしながら、ライトバック回路150におけるデータビット幅「B」の全体が、低減された書込みポート物理レジスタファイル(PRF)134に書き込まれるべき広い生成値から成る場合、ライトバック回路150は、2つ以上のOoP106サイクルにわたって物理レジスタファイル(PRF)134に広い生成値をライトバックするように構成され得る。また、レジスタマップテーブル(RMT)128内に狭い生成値を記憶することは、生成値を十分に記憶するのにより少ない物理レジスタ132(0)〜132(X)を必要とし得るので、物理レジスタファイル(PRF)134の設計サイズはまた、性能を低下させることなく低減させることが可能であり得る。
【００２３】
また、上記で説明したように、実行される復号された命令108Dのソースレジスタオペランド130Sのための狭い生成値を取り出すために物理レジスタファイル(PRF)134にアクセスする必要がないRACC回路146によって、性能の低下なしに、ならびに/または物理レジスタファイル(PRF)134の面積および/もしくは消費電力の増加をオフセットすることなく、より少ない読出しポート254(1)〜254(Z)が物理レジスタファイル(PRF)134において設けられ得る。しかしながら、ここではレジスタマップテーブル(RMT)128から狭い生成値を読み出すように構成されているリネーム回路126によって、レジスタマップテーブル(RMT)128への読出しポートの数は、増加する必要がある場合がある。レジスタマップテーブル(RMT)128内の読出しポートの増加を軽減するための一例について、図5に関して以下により詳細に説明する。
【００２４】
図1および図2中のOoP106内の命令処理システム100の動作をさらに説明するために、図3Aおよび図3Bが提供される。図3Aおよび図3Bは、図1および図2中の命令処理システム100の例示的なインオーダ命令プロセス300およびアウトオブオーダ命令プロセス302を示すフローチャートである。図3A中のインオーダ命令プロセス300は、そのような狭い生成値のための物理レジスタファイル(PRF)134にさらにアクセスする必要なしに、命令ソースレジスタオペランドを消費するための狭い生成値をレジスタマップテーブル(RMT)128から直接アクセスする命令処理システム100をサポートする。図3B中のアウトオブオーダ命令プロセス302は、狭い生成値がインオーダ命令プロセス300の一部としてレジスタマップテーブル(RMT)128から直接アクセスされ得るように、実行された命令108Eによって生成された狭い生成値をレジスタマップテーブル(RMT)128に直接ライトバックする命令処理システム100をサポートする。図3Aおよび図3B中のインオーダ命令プロセス300およびアウトオブオーダ命令プロセス302について、図2中の命令処理システム100に関連してここで説明する。
【００２５】
この点に関して、図3Aに関連して、インオーダ命令プロセス300は、命令フェッチ回路110が命令108をフェッチすることによって開始する(図3A中のブロック304;図1および図2中の番号1)。フェッチされた命令108Fは、復号された命令108Dを提供するために、命令復号回路124によって復号される。次に、リネーム回路126は、復号された命令108Dのソースレジスタオペランド130Sに基づいて情報140(1)〜140(L)を受信するために、復号された命令108Dのソースレジスタオペランド130Sの論理レジスタにマッピングされたマッピングエントリ136(1)〜136(L)におけるレジスタマップテーブル(RMT)128を読み出す(図3A中のブロック306;図1および図2中の番号2)。リネーム回路126は、レジスタマップテーブル(RMT)128から受信された情報140(1)〜140(L)が、物理レジスタファイル(PRF)134を記憶する物理レジスタ132(1)〜132(X)にマッピングされた狭い生成値であるかまたはアドレスポインタであるかを決定するように構成される。たとえば、上記で説明し、以下でより詳細に説明するように、レジスタマップテーブル(RMT)128は、記憶された情報140(1)〜140(L)がアドレスポインタであるかまたは狭い生成値であるかを示すために、マッピングエントリ136(1)〜136(L)ごとにビットなどのフラグ151(1)〜151(L)を有し得る。レジスタマップテーブル(RMT)128から受信された情報140(1)〜140(L)が実質的に狭い生成値であると決定された場合、リネーム回路126は、次いで、復号された命令108Dの実行のために使用されるべきRACC回路146に渡されるべきソースレジスタオペランド130Sのための生成値として、狭い生成値としてそれぞれの受信された情報140(1)〜140(L)を提供するように構成される(図3A中のブロック308;図1および図2中の番号2A)。
【００２６】
引き続き図3Aに関連して、RACC回路146は、復号された命令108(D)の宛先レジスタオペランド130Dのための物理レジスタファイル(PRF)134内に新しい物理レジスタ132(1)〜132(X)を記憶するために、レジスタマップテーブル(RMT)128に書き込むように構成される(図3A中のブロック310;図1および図2中の番号3)。RACC回路146はまた、広い生成値を取り出すために、復号された命令108Dのソースレジスタオペランド130Sのためのレジスタマップテーブル(RMT)128内のマッピングエントリ136(1)〜136(L)にマッピングされた物理レジスタファイル(PRF)134内の物理レジスタ132(1)〜132(X)にアクセスするように構成される(図3A中のブロック312;図1および図2中の番号4A)。RACC回路146はまた、実行回路120内の実行された命令108Eから生成された値を取り出すために、復号された命令108Dのソースレジスタオペランド130Sの論理レジスタにマッピングされたマッピングエントリ136(1)〜136(L)に基づいて、物理レジスタファイル(PRF)134内の物理レジスタ132(1)〜132(X)にアクセスするための図2中の手段を含み得る。広い生成値は、実行された命令108Eの結果として実行回路120によって以前に生成され、ライトバック回路150によって、マッピングされた物理レジスタファイル(PRF)134にライトバックされている。上記で説明したように、実行されるべき復号された命令108Dのソースレジスタオペランド130Sのための生成値が、リネーム回路126によって、レジスタマップテーブル(RMT)128内に記憶された狭い生成値であると決定された場合、RACC回路146は、物理レジスタファイル(PRF)134にアクセスする必要がなく、それによって、処理時間および消費電力を低減することに留意されたい。そのソースレジスタオペランド130Sを有する復号された命令108Dは、RACC回路146によって、アウトオブオーダ処理ステージ112O内のディスパッチ回路148に提供される。代替的には、受信された生成値を復号された命令108Dのためのソースレジスタオペランド130Sとして提供するための手段が提供され得る。
【００２７】
図1および図2中の命令処理システム100におけるアウトオブオーダ処理のために、図3B中の例示的なアウトオブオーダ命令処理302が用いられ得る。この点に関して、ディスパッチ回路148は、復号された命令108Dのためのソースレジスタオペランド130Sが利用可能であるとき、復号された命令108Dを実行されるように実行回路120にディスパッチする(図3B中のブロック314;図1および図2中の番号5)。代替的には、復号された命令108Dのためのソースレジスタオペランド130Sが利用可能であるとき、復号された命令108Dを実行されるように実行回路120にディスパッチするための手段が設けられ得る。
【００２８】
命令処理システム100において、ディスパッチ回路148は、アウトオブオーダ処理ステージ112OとしてRACC回路146の後に設けられる。このようにして、復号された命令108Dのためのレジスタの読出しは、物理レジスタファイル(PRF)134からの生成値をまだ消費していないアクティブコンシューマの数を追跡するためにカウンタを維持する複雑さを回避するために、インオーダ処理ステージ112Iにおいて実行される。そうでなければ、物理レジスタファイル(PRF)134内のエントリは、リネーム回路126に加えて、実行回路120内の実行レーンの終わりから変更され得るので、インオーダ処理ステージ112Iとしてディスパッチ回路148を設けることは、物理レジスタファイル(PRF)134内の書込みポートの大幅な増加を必要とする場合がある。狭い生成値でマッピングを更新する前に、ライトバックステージにおいてレジスタマップテーブル(RMT)128内に論理から物理へのマッピングがまだ存在していることを確認するために、レジスタマップテーブル(RMT)128内に追加の読出しポートも必要とされる。
【００２９】
また、アウトオブオーダ処理ステージ112Oとしてディスパッチ回路148を設けることは、向上した性能を提供するために、サイクルごとにより多くの命令108を実行するために、実行回路120が平均してより完全に使用されることを可能にし得る。これは、ディスパッチ回路148が、アウトオブオーダ処理ステージ112Oとして設けられることによって、向上した並列性のために実行回路120内のより多くのアウトオブオーダ命令処理レーンをよりよく利用できるからである。復号された命令108Dは、実行回路120によるアウトオブオーダ処理のために、より多くの復号された命令108Dを並列に提供するためにそのソースレジスタオペランド130Sが利用可能になるまで、ディスパッチ回路148内に保持され得る。次に、実行回路120にディスパッチされた復号された命令108Dは、実行された命令108Eとして実行される(図3B中のブロック316;図1および図2中の番号6)。
【００３０】
引き続き図3Bに関連して、ライトバック回路150は、実行された命令108Eに対して実行回路120によって生成された生成値が狭い生成値であるかどうかを決定する(図3B中のブロック318)。代替的には、実行された命令108Eに対して実行回路120によって生成された生成値が狭い生成値であるかどうかを決定するための手段が設けられ得る。実行回路120によって生成された生成値が狭い生成値である場合、上記で説明したように、ライトバック回路150は、レジスタマップテーブル(RMT)128からの情報140(1)〜140(L)として、狭い生成値をレジスタマップテーブル(RMT)128内の実行された命令108Eのための宛先ソースオペランド130Dの論理レジスタにマッピングされたマッピングエントリ136(1)〜136(L)に書き込むように構成される(図3B中のブロック320;図1および図2中の番号7A)。代替的には、実行された命令108Eに対する生成値が狭い生成値であることに応答して、実行された命令108Eのための宛先ソースオペランド130Dにマッピングされた論理レジスタに割り当てられたレジスタマップテーブル(RMT)128内のマッピングエントリ136(1)〜136(L)に狭い生成値を直接ライトバックするために手段が設けられ得る。一例として、ライトバック回路150は、生成値内の有効ビットの数を決定することによって、実行回路120によって生成された値が狭い生成値であるかどうかを決定するように構成され得る。別の非限定的な例として、狭い生成値を定義するために代替の圧縮機構も考慮され得る。実行回路120によって生成された生成値が広い生成値である場合、ライトバック回路150は、物理レジスタファイル(PRF)134内の広い生成値を、実行された命令108Eの宛先ソースオペランド130Dに割り当てられた物理レジスタ132(1)〜132(X)に書き込むように構成される(図3B中のブロック322;図1および図2中の番号7B)。
【００３１】
図2に関連して、ディスパッチ回路148は、ソースレジスタオペランド130Sがディスパッチされる前に復号された命令108Dのために利用可能になるまで待機するアウトオブオーダ処理ステージ112Oとして設けられるので、命令処理システム100は、データ転送ネットワーク258も含む。データ転送ネットワーク258は、ライトバック回路150が、ディスパッチ回路148において準備されていないと識別された復号された命令108Dのためのソース値として使用されるようにディスパッチ回路148に狭い生成値を転送することを可能にする(図3B中のブロック324、図1および図2中の番号8)。これは、レジスタマップテーブル(RMT)128がライトバック回路150から読み出されたときに準備されていない狭い生成値を含む生成値を得るために、すでにリネーム回路126以降にある復号された命令108Dを消費することを可能にする。データ転送ネットワーク258は、復号された命令108Dを消費することが物理レジスタファイル(PRF)134から狭い生成値を得ることを必要としないことを可能にする。また、上記で説明したように、狭い生成値の任意のさらなるアクティブコンシューマが、レジスタマップテーブル(RMT)128から、またはデータ転送ネットワーク258によって狭い生成値を取得するので、狭い生成値に割り当てられた物理レジスタファイル(PRF)134内のデータエントリ142(1)〜142(X)は、ライトバック回路150によって解放され得る。図1および図2中の命令処理システム100は、狭い生成値の他のコンシューマがアクティブである限り開放され得ない狭い生成値を保持するために物理レジスタが必要とされる他のOoPとは異なることに留意されたい。
【００３２】
図4は、図1および図2中の命令処理システム100と同様のOoP106(1)のための代替的な命令処理システム100(1)のブロック図である。インオーダ処理ステージ112I(1)内のインオーダ命令処理レーン256Iの数は、図2中のOoP106の例と同様に、「F」までの命令108を並列に処理することができるように、「F」である。この例におけるアウトオブオーダ処理ステージ112O(1)内のアウトオブオーダ命令処理レーン256Oの数は、図2中のOoP106の例と同様に、「B」までの命令108を並列に処理することができるように、「B」である。図4中のOoP106(1)はまた、図2中のOoP106と同様のステージおよび回路を含み、これらは、図2と図4との間で共通の要素番号で示されており、したがって、ここでは再度説明はしない。しかしながら、図4中のOoP106(1)は、加えて、マップパッチ履歴テーブル400を含む。以下に説明するように、マップパッチ履歴テーブル400は、正確な割込みの発生などにより、履歴値がレジスタマップテーブル(RMT)128に復元される必要がある場合、代替のライトバック回路150(1)による狭いライトバック値の履歴値をレジスタマップテーブル(RMT)128に記憶するために使用される。
【００３３】
図4に関連して、生成値が実行回路120によって生成された後、先に説明したように、ライトバック回路150(1)は、生成値が狭い値であるかまたは広い値であるかを決定するように構成される。生成値が広い値である場合、先に説明したように、ライトバック回路150(1)は、実行された命令108Eのための宛先レジスタオペランド130Dに割り当てられた物理レジスタファイル(PRF)134内の物理レジスタ132(1)〜132(X)に広い値を書き込むように構成される(図4中に番号7Bとして示す)。物理レジスタファイル(PRF)134内の物理レジスタ132(1)〜132(X)に対応する準備(ready)テーブル404内の準備エントリ402(1)〜402(X)は、物理レジスタファイル(PRF)134内の対応する物理レジスタ132(1)〜132(X)内の生成値が準備できていることを示すために更新される(図4中に番号7B-2において示す)。RACC回路146は、実行されるべき復号された命令108Dのソースレジスタオペランド130Sのための生成値を取り出すために、物理レジスタファイル(PRF)134へのアクセスの一部として準備テーブル404にアクセスするように構成される。
【００３４】
引き続き図4に関連して、ライトバック回路150(1)が、実行された命令108Eによって生成された生成値が狭い生成値であると決定した場合、ライトバック回路150(1)は、物理レジスタファイル(PRF)134内の物理レジスタ132(1)〜132(X)が依然として実行された命令108Eの宛先レジスタオペランド130Dにマッピングされているかどうかを決定するように構成される。物理レジスタファイル(PRF)134内の物理レジスタ132(1)〜132(X)が依然として実行された命令108Eの宛先レジスタオペランド130Dにマッピングされている場合、狭い生成値は、先に説明したように、レジスタマップテーブル(RMT)128内の実行された命令108Eの宛先レジスタオペランド130Dの論理レジスタにマッピングされたマッピングエントリ136(1)〜136(L)に書き込まれる。しかしながら、物理レジスタファイル(PRF)134内の物理レジスタ132(1)〜132(X)がもう実行された命令108Eの宛先レジスタオペランド130Dにマッピングされていない場合、これは、生成された実行された命令108Eがリネームされたので、レジスタマップテーブル(RMT)128内の宛先レジスタオペランド130Dのマッピングが変更されたことを意味する。したがって、以前に割り当てられたマッピングエントリ136(1)〜136(L)は、上書きされ得ない別の復号された命令108Dの宛先レジスタオペランド130Dの論理レジスタに割り当てられているので、狭い生成値は、実行された命令108Eの宛先レジスタオペランド130Dの論理レジスタに以前に割り当てられたマッピングエントリ136(1)〜136(L)にライトバックされるべきではない。しかしながら、実行回路120が、その後、誤って予測された以前の投機的状態(たとえば、条件分岐)に基づいた復号された命令108Dを実行し、したがって、正確な割込みが生成された場合、命令が達成され得る投機的状態への命令108のフラッシュ(flush)および再フェッチのため、投機的状態が予測された以前の時点においてレジスタマップテーブル(RMT)128内に以前に記憶された狭い生成値の状態を復元する方法が提供され得る。
【００３５】
この点に関して、図4中のライトバック回路150(1)は、マップパッチ履歴テーブル400において、実行された命令108Eの宛先レジスタオペランド130Dに関連する論理レジスタにマッピングされたマッピングエントリ406(1)〜406(A)に狭い生成値を記憶するように構成される。マップパッチ履歴テーブル400は、物理レジスタファイル(PRF)134内の物理レジスタ132(1)〜132(X)のアドレスに対する少なくとも1つのアドレスポインタ408(1)〜408(A)を記憶するように各々構成された複数のマッピングエントリ406(1)〜406(A)を含む。このようにして、マップパッチ履歴テーブル400は、物理レジスタファイル(PRF)134内の物理レジスタ132(1)〜132(X)へのマッピングエントリ136(1)〜136(L)のより古いコミットされていないマッピングを追跡する。このようにして、OoP106(1)が、正確な割込みに応答するなどして、以前の投機的状態に回復される必要がある場合、マップパッチ履歴テーブル400内に記憶された狭い生成値は、より以前の状態からの以前の値にレジスタマップテーブル(RMT)128を再ロードするために使用され得る。
【００３６】
引き続き図4に関連して、この例では、物理レジスタファイル(PRF)134内の物理レジスタ132(1)〜132(X)が、狭い生成値を生成した実行された命令108Eの宛先レジスタオペランド130Dに依然としてマッピングされているかどうかを、ライトバック回路150(1)が決定することを可能にするために、フィルタテーブル409が用いられる。この例におけるフィルタテーブル409は、物理レジスタファイル(PRF)134内の各物理レジスタ132(1)〜132(X)に対応するマッピングされたインジケータ410(1)〜410(X)を含むビットベクトルである。対応する特定の物理レジスタ132(1)〜132(X)について、フィルタテーブル409内のマッピングされたインジケータ410(1)〜410(X)が、狭い生成値を生成した実行された命令108Eのための宛先レジスタオペランド130Dのための対応する物理レジスタ132(1)〜132(X)が依然としてレジスタマップテーブル(RMT)(128)内でマッピングされていることを示す場合、対応するマッピングされたインジケータ410(1)〜410(X)は、マッピングされる(たとえば、論理「0」)ように設定される。対応する特定の物理レジスタ132(1)〜132(X)について、フィルタテーブル409内のマッピングされたインジケータ410(1)〜410(X)が、狭い生成値を生成した実行された命令108Eのための宛先レジスタオペランド130Dのための対応する物理レジスタ132(1)〜132(X)がもうレジスタマップテーブル(RMT)128内でマッピングされていないことを示す場合、対応するマッピングされたインジケータ410(1)〜410(X)は、マッピングされない(たとえば、論理「1」)ように設定される。したがって、フィルタテーブル409は、OoP106(1)サイクルあたり「B」までの生成物のマッピング状態のチェックを可能にするために、この例では「B」の読出しポート412(B)をサポートする。フィルタテーブル409は、復号された命令108Dのための宛先レジスタオペランド130Dが物理レジスタファイル(PRF)134内でリネームされたとき、リネーム回路126によって更新される。そのようなとき、以前の物理レジスタ132(1)〜132(X)に対応するフィルタテーブル409内のマッピングされたインジケータ410(1)〜410(X)は、マッピングされないように設定され、新たに割り当てられた物理レジスタ132(1)〜132(X)に対応するマッピングされたインジケータ410(1)〜410(X)は、マッピングされるように設定される。したがって、この例におけるフィルタテーブル409は、「2F」の書込みポート412(1)〜412(B)を有し、ここで、「B」は、「2F」に等しい。
【００３７】
ライトバック回路150(1)が狭い生成値をレジスタマップテーブル(RMT)128に書き込むことができるようにすることによって、レジスタマップテーブル(RMT)128への書込みポートの数は、増加し得る。所与のOoP106(1)内のライトバック回路150(1)によってライトバックされるべきすべての生成値が狭い生成値である事例では、1つのOoP106(1)サイクルにおいて「B」のアウトオブオーダ命令処理レーン256Oの各々において実行された命令109Eからの生成値をライトバック回路150(1)がライトバックすることを可能にすることが望ましい場合、レジスタマップテーブル(RMT)128への書込みポートの数は、ライトバック回路150(1)内のアウトオブオーダ命令処理レーン256Oの数「B」だけ増加し得る。この点に関して、所与のOoP106(1)サイクルにおいてライトバック回路150(1)によってライトバックされるべき生成値のいずれもが、物理レジスタファイル(PRF)134内の物理レジスタ132(1)〜132(X)にもうマッピングされていない場合、図4中のOoP106(1)内のマップパッチ履歴テーブル400はまた、理想的には「B」の書込みポートを有する。しかしながら、レジスタマップテーブル(RMT)128および/またはマップパッチ履歴テーブル400への書込みポートの数を減少させることが望ましい場合がある。
【００３８】
この点に関して、図5は、レジスタマップテーブル(RMT)128および/またはマップパッチ履歴テーブル400における書込みポート圧力を減少させるために図4中のOoP106(1)において用いられ得る追加のデータ構造を示す。この点に関して、レジスタマップテーブル(RMT)128において設けられた「F+B」の書込みポートは、ポインタレジスタマップテーブル(RMT)500と値レジスタマップテーブル(RMT)502の2つのテーブルにわたって分散される。ポインタレジスタマップテーブル(RMT)500は、図4中のレジスタマップテーブル(RMT)128と同様に動作する。レジスタマップテーブル(RMT)500は、図2および図4中のレジスタマップテーブル(RMT)128内のマッピングエントリと同じ数のポインタエントリ136P(1)〜136P(L)を有する。しかしながら、ポインタレジスタマップテーブル(RMT)500は、この例では、「2F」の読出しポート504(1)〜504(2F)と「F」の書込みポート506(1)〜506(F)とを有する。値レジスタマップテーブル(RMT)502はまた、図4中のレジスタマップテーブル(RMT)128内のマッピングエントリと同じ数の値エントリ136V(1)〜136V(L)を有する。しかしながら、値レジスタマップテーブル(RMT)502は、この例では、単に、値を含み、「2F」の読出しポート508(1)〜508(2F)を有するが、「F」の書込みポート510(1)〜510(F)を有する。「値があるか?(Is a Value?)」テーブル512と呼ばれる第3のテーブルは、レジスタマップテーブル(RMT)502またはポインタレジスタマップテーブル(RMT)500が有効なデータを含むかどうかを示すために、マッピングエントリごとにエントリ514(1)〜514(L)を含む。値レジスタマップテーブル(RMT)502とポインタレジスタマップテーブル(RMT)500との間の2つのテーブルのうちの一方のみが有効なデータを含む。「値があるか?」テーブル512は、依然として「F+B」の書込みポート516(1)〜516(F+B)を必要とするが、はるかにより小さいエントリサイズ(すなわち、この例ではエントリ514(1)〜514(L)ごとに1ビット)を有し、「F+B」の書込みポート516(
1)〜516(F+B)を設けることは、達成するのが困難ではない可能性がある。
【００３９】
この点に関して、引き続き図5に関連して、図4中の命令処理システム100(1)内のライトバック回路150(1)は、情報140(1)〜140(L)を、ポインタレジスタマップテーブル(RMT)500内の広い生成値のためのアドレスポインタとして、および値レジスタマップテーブル(RMT)502内の狭い生成値として書き込むように構成され得る。ポインタレジスタマップテーブル(RMT)500内の対応するポインタエントリ136P(1)〜136P(L)または値レジスタマップテーブル(RMT)502内の対応する値エントリ136V(1)〜136V(L)が有効であるかどうかを示すために、ライトバック回路150(1)は、「値があるか?」レジスタマップテーブル(RMT)512内の対応するエントリ514(1)〜514(L)を更新する。したがって、ポインタレジスタマップテーブル(RMT)500または値レジスタマップテーブル(RMT)502が、復号された命令108Dのソースレジスタオペランド130Sの論理レジスタにマッピングされたマッピングエントリのための有効エントリを含むかどうかを決定するために、図4中の命令処理システム100(1)内のリネーム回路126は、「値があるか?」レジスタマップテーブル(RMT)512内の復号された命令108Dのソースレジスタオペランド130Sの論理レジスタにマッピングされたマッピングエントリに対して対応するエントリ514(1)〜514(L)を調べることができる。リネーム回路126はまた、ソース値が狭い値であるのか、または広い値であるのかを示すために、「値があるか?」レジスタマップテーブル(RMT)512内の情報を使用することができる。
【００４０】
ポインタレジスタマップテーブル(RMT)500のサイズは、値レジスタマップテーブル(RMT)502のサイズと一致する必要はないことに留意されたい。たとえば、ポインタレジスタマップテーブル(RMT)500は、物理レジスタファイル(PRF)134内の128の物理レジスタ132(1)〜132(X)が指し示される必要があると仮定すると、ポインタエントリ136P(1)〜136P(L)あたり7ビットを使用するが、値レジスタマップテーブル(RMT)502は、24ビット(すなわち、3バイト)が、アウトオブオーダ命令処理レーン256Oによって生成されたすべての値にわたって所望のカバレッジを提供するのに十分であると仮定すると、値エントリ136V(1)〜136V(L)あたり24ビットを有し得る。
【００４１】
本明細書で開示する態様による、物理レジスタファイルポート圧力の低減および/または性能の向上のために、OoP内のレジスタマップ内に命令オペランドのための狭い生成値を直接記憶することは、任意のプロセッサベースのデバイス内に設けられ得、またはその中に組み込まれ得る。例は、限定はしないが、セットトップボックス、エンターテイメントユニット、ナビゲーションデバイス、通信デバイス、固定位置データユニット、モバイル位置データユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)、およびポータブルデジタルビデオプレーヤを含む。
【００４２】
この点に関して、図6は、実行命令によって生成された狭い値をレジスタマップテーブル(RMT)に直接ライトバックするように構成された、本明細書で開示する特定の態様のいずれかによる命令処理システムを含むプロセッサベースのシステム600の一例を示す。この例では、プロセッサベースのシステム600は、処理ユニットとしても知られるOoP604を含む中央処理装置(CPU)602を含む。OoP604は、上記で説明したOoP106または106(1)であり得る。図1、図2、および図4中の命令処理システム100、100(1)は、CPU602またはOoP604内に含まれ得る。CPU602は、たとえば、一時的に記憶されたデータへの迅速なアクセスのためにプロセッサ604に結合された、図1中の命令キャッシュ118のような命令キャッシュ606を有し得る。CPU602は、システムバス608に結合され、プロセッサベースのシステム600内に含まれる周辺デバイスを相互接続することができる。よく知られているように、CPU602は、システムバス608を介してアドレス情報、制御情報、およびデータ情報を交換することによってこれらの他のデバイスと通信する。たとえば、CPU602は、スレーブデバイスの一例としてメモリシステム612内のメモリコントローラ610にバストランザクション要求を通信することができる。図6には示されていないが、複数のシステムバス608が設けられ得、各システムバス608は、異なるファブリックを構成する。この例では、メモリコントローラ610は、メモリシステム612内のメモリアレイ614にメモリアクセス要求を提供するように構成される。
【００４３】
他のデバイスは、システムバス608に接続され得る。図6に示すように、これらのデバイスは、例として、メモリシステム612、1つまたは複数の入力デバイス616、1つまたは複数の出力デバイス618、1つまたは複数のネットワークインターフェースデバイス620、および1つまたは複数のディスプレイコントローラ622を含むことができる。入力デバイス616は、限定はしないが、入力キー、スイッチ、音声プロセッサなどを含む、任意のタイプの入力デバイスを含むことができる。出力デバイス618は、限定はしないが、オーディオインジケータ、ビデオインジケータ、他の視覚インジケータなどを含む、任意のタイプの出力デバイスを含むことができる。ネットワークインターフェースデバイス620は、ネットワーク624との間でデータの交換を可能にするように構成された任意のデバイスであり得る。ネットワーク624は、限定はしないが、有線またはワイヤレスネットワーク、私設または公衆ネットワーク、ローカルエリアネットワーク(LAN)、ワイヤレスローカルエリアネットワーク(WLAN)、ワイドエリアネットワーク(WAN)、BLUETOOT(登録商標)Hネットワーク、およびインターネットを含む、任意のタイプのネットワークであり得る。ネットワークインターフェースデバイス620は、所望の任意のタイプの通信プロトコルをサポートするように構成され得る。
【００４４】
CPU602はまた、1つまたは複数のディスプレイ626に送られる情報を制御するために、システムバス608を介してディスプレイコントローラ622にアクセスするように構成され得る。ディスプレイコントローラ622は、表示されるべき情報をディスプレイ626に適したフォーマットに処理する1つまたは複数のビデオプロセッサ628を介して、表示されるべき情報をディスプレイ626に送る。ディスプレイ626は、限定はしないが、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイなどを含む、任意のタイプのディスプレイを含むことができる。
【００４５】
当業者は、本明細書で開示する態様に関連して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムが、電子ハードウェアとして、メモリ内もしくは別のコンピュータ可読媒体内に記憶され、プロセッサもしくは他の処理デバイスによって実行される命令として、または両方の組合せとして実行され得ることをさらに認識するであろう。本明細書で説明するマスタデバイスおよびスレーブデバイスは、例として、任意の回路、ハードウェア構成要素、集積回路(IC)、またはICチップ内に用いられ得る。本明細書で開示するメモリは、任意のタイプおよびサイズのメモリであってもよく、所望の任意のタイプの情報を記憶するように構成されてもよい。この互換性を明確に例示するために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、それらの機能の点で一般的に上記で説明した。そのような機能がどのように実装されるのかは、具体的な用途、設計選択、および/またはシステム全体に課せられる設計制約に依存する。当業者は、説明した機能を特定の用途ごとに様々な方法で実装し得るが、そのような実装形態の決定は、本開示の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【００４６】
本明細書で開示する態様に関連して説明した様々な例示的な論理ブロック、モジュール、および回路は、プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、ディスクリートゲートもしくはトランジスタロジック、ディスクリートハードウェア構成要素、または、本明細書で説明する機能を実行するように設計されたそれらの組合せを用いて実装または実行され得る。プロセッサは、マイクロプロセッサであり得るが、代替において、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPおよびマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実現される場合もある。
【００４７】
本明細書で開示する態様は、ハードウェアにおいて、およびハードウェア内に記憶された命令において具体化され得、たとえば、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読出し専用メモリ(ROM)、電気的プログラム可能ROM(EPROM)、電気的消去可能プログラム可能ROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当該技術分野で知られている任意の他の形態のコンピュータ可読媒体内に存在し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み出すことができ、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替において、記憶媒体は、プロセッサに一体化され得る。プロセッサおよび記憶媒体は、ASICに存在する場合がある。ASICは、遠隔局内に存在する場合がある。
代替において、プロセッサおよび記憶媒体は、遠隔局、基地局、またはサーバ内の個別の構成要素として存在する場合がある。
【００４８】
本明細書における例示的な態様のいずれかにおいて説明した動作について、例および議論を提供するために説明したことにも留意されたい。上述の動作は、図示されたシーケンス以外の多数の異なるシーケンスにおいて実行される場合がある。さらに、単一の動作ステップにおいて説明された動作は、実際にはいくつかの異なるステップにおいて実行される場合がある。加えて、例示的な態様で説明した1つまたは複数の動作ステップは、組み合わせられ得る。流れ図に示された動作ステップは、当業者には容易に明らかであるように、多数の異なる変更を受ける場合があることは理解されたい。また、当業者は、情報および信号が様々な異なる技術および技法のいずれを使用して表される場合があることも理解されよう。たとえば、上記の説明全体を通じて参照される場合があるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁気粒子、光場あるいは光粒子、またはそれらの任意の組合せによって表現される場合がある。
【００４９】
本開示の前述の説明は、当業者が本開示を作成または仕様することを可能にするために提供される。本開示の種々の変更が、当業者には容易に明らかになり、本明細書において規定される一般原理は、本開示の趣旨または範囲から逸脱することなく他の変形形態に適用される場合がある。したがって、本開示は、本明細書において説明された例および設計には限定されず、本明細書において開示される原理および新規の特徴と一致する最も広い範囲を与えられるべきである。
【符号の説明】
【００５０】
100  命令処理システム
100(1)  命令処理システム
102  中央処理装置(CPU)システム、CPUシステム
104  システムオンチップ(SoC)
106  アウトオブオーダプロセッサ(OoP)、OoP
106(1)  OoP
108  命令
108D  復号された命令
108E  実行された命令
108F  フェッチされた命令
110  命令フェッチ回路
112I  インオーダ処理ステージ
112I(1)  インオーダ処理ステージ
112O  アウトオブオーダ処理ステージ
112O(1)  アウトオブオーダ処理ステージ
114B  バックエンド命令ステージ
114F  フロントエンド命令ステージ
116  命令メモリ
118  命令キャッシュ
120  実行回路
122  制御フロー予測回路
124  命令復号回路
126  リネーム回路
128  レジスタマップテーブル(RMT)
130D  宛先レジスタオペランド
130S  ソースレジスタオペランド
132(1)〜132(X)  物理レジスタ
134  物理レジスタファイル(PRF)
136(1)〜136(L)  マッピングエントリ
138(1)〜138(L)  データエントリ
140(1)〜140(L)  情報
142(1)〜142(X)  データエントリ
144(1)〜144(X)  データ
146  レジスタアクセス(RACC)回路、RACC回路
148  ディスパッチ回路
150  ライトバック回路
151(1)〜151(L)  ビット
252(1)〜252(Y)  書込みポート
254(1)〜254(Z)  読出しポート
256I  インオーダ命令処理レーン
256O  アウトオブオーダ命令処理レーン
258  データ転送ネットワーク
400  マップパッチ履歴テーブル
402(1)〜402(X)  準備エントリ
404  準備テーブル
406(1)〜406(A)  マッピングエントリ
408(1)〜408(A)  アドレスポインタ
409  フィルタテーブル
410(1)〜410(X)  インジケータ
412(1)〜412(B)  書込みポート
412  読出しポート
500  ポインタレジスタマップテーブル(RMT)
502  値レジスタマップテーブル(RMT)
504(1)〜504(2F)  読出しポート
506(1)〜506(2F)  書込みポート
508(1)〜508(2F)  読出しポート
510(1)〜510(B)  書込みポート
514(1)〜514(L)  エントリ
516(1)〜516(F+B)  書込みポート
600  プロセッサベースのシステム
602  中央処理装置(CPU)、CPU
604  OoP
606  命令キャッシュ
608  システムバス
610  メモリコントローラ
612  メモリシステム
614  メモリアレイ
616  入力デバイス
618  出力デバイス
620  ネットワークインターフェースデバイス
622  ディスプレイコントローラ
624  ネットワーク
626  ディスプレイ
628  ビデオプロセッサ
【図１】
2018523242.tif 000003
【図２】
2018523242.tif 000004
【図３Ａ】
2018523242.tif 000005
【図３Ｂ】
2018523242.tif 000006
【図４】
2018523242.tif 000007
【図５】
2018523242.tif 000008
【図６】
2018523242.tif 000009
【国際調査報告】
2018523242.tif 000010
2018523242.tif 000011