(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023138911
(43)【公開日】2023-10-03
(54)【発明の名称】演算除去
(51)【国際特許分類】
G06F 9/38 20180101AFI20230926BHJP
【FI】
G06F9/38 350B
G06F9/38 310F
【審査請求】未請求
【請求項の数】13
【出願形態】OL
(21)【出願番号】P 2023036279
(22)【出願日】2023-03-09
(31)【優先権主張番号】17/699,326
(32)【優先日】2022-03-21
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】プラント、ニコラス アンドリュー
(72)【発明者】
【氏名】プスデスリス、ジョセフ マイケル
(72)【発明者】
【氏名】キム、ジョンス
【テーマコード(参考)】
5B013
【Fターム(参考)】
5B013AA20
(57)【要約】 (修正有)
【課題】リオーダリングによる命令キューへのエントリをより良く管理してより大きな柔軟性を達成する。
【解決手段】データ処理装置100において、リネーム回路構成130は、レジスタ間のマッピングをストレージ回路構成に記憶することで、パイプラインのレジスタリネームステージを実行する。マッピングの各々は、除去フィールド値に関連付けられている。演算除去回路構成170は、ソースレジスタからの、宛先レジスタに記憶されているデータに対してアクションが実行されることを指示する演算を、宛先レジスタを参照し、かつ除去フィールド値が設定されているストレージ回路構成内の新しいマッピングに置換する。演算回路190は、除去フィールド値が設定されているときに、ソースレジスタのコンテンツを取得し、結果を取得するためにコンテンツに対してアクションを実行し、結果を返すことによって、宛先レジスタにアクセスする後続の演算に応答する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
レジスタ間のマッピングをストレージ回路構成に記憶することによって、パイプラインのレジスタリネームステージを実行するように構成されたリネーム回路構成であって、前記マッピングの各々が除去フィールド値に関連付けられている、リネーム回路構成と、
ソースレジスタからのもので、宛先レジスタに記憶されているデータに対してアクションが実行されることを指示する演算を、前記宛先レジスタを参照し、かつ前記除去フィールド値が設定されている前記ストレージ回路構成内の新しいマッピングに置換するように構成された演算除去回路構成と、
前記除去フィールド値が設定されているときに、前記ソースレジスタのコンテンツを取得し、結果を取得するために前記コンテンツに対して前記アクションを実行し、前記結果を返すことによって、前記宛先レジスタにアクセスする後続の演算に応答するように構成された演算回路構成と、
を含む、データ処理装置。
【請求項2】
前記演算が、命令キューへの前記演算の挿入を禁止することによって置換される、
請求項1に記載のデータ処理装置。
【請求項3】
前記演算回路構成が、前記除去フィールド値が設定されていないときに、前記ソースレジスタの前記コンテンツを返すことによって、前記宛先レジスタにアクセスする前記後続の演算に応答するように構成されている、
請求項1に記載のデータ処理装置。
【請求項4】
前記マッピングが、論理レジスタから物理レジスタへのものであり、
前記新しいマッピングが、前記ソースレジスタに対応する前記物理レジスタのうちの1つを参照し、
前記宛先レジスタが、前記論理レジスタのうちの1つである、
請求項1に記載のデータ処理装置。
【請求項5】
前記除去フィールド値が、複数のアクションのうちのどれが実行されるかを示す、
請求項1に記載のデータ処理装置。
【請求項6】
前記演算が、0個の更なるソースレジスタを参照する、
請求項1に記載のデータ処理装置。
【請求項7】
前記演算回路構成が、1クロックサイクル内で前記コンテンツに対して前記アクションを実行するように構成されている、
請求項1に記載のデータ処理装置。
【請求項8】
前記演算回路構成が、論理ゲートを使用せずに前記コンテンツに対して前記アクションを実行するように構成されている、
請求項1に記載のデータ処理装置。
【請求項9】
前記演算が、ビット単位NOT、否定シフト、ビット反転、バイト反転、符号なし拡張、及び符号付き拡張を含むリストからのものである、
請求項1に記載のデータ処理装置。
【請求項10】
前記演算が、拡張演算である、
請求項1に記載のデータ処理装置。
【請求項11】
前記ソースレジスタと前記宛先レジスタが、異なる幅を有する、
請求項1に記載のデータ処理装置。
【請求項12】
レジスタ間のマッピングをストレージ回路構成に記憶することによって、パイプラインのレジスタリネームステージを実行することであって、前記マッピングの各々が除去フィールド値に関連付けられている、実行することと、
ソースレジスタからのもので、宛先レジスタに記憶されているデータに対してアクションが実行されることを指示する演算を、前記宛先レジスタを参照し、かつ前記除去フィールド値が設定されている前記ストレージ回路構成内の新しいマッピングに置換することと、
前記除去フィールド値が設定されているときに、前記ソースレジスタのコンテンツを取得し、結果を取得するために前記コンテンツに対して前記アクションを実行し、前記結果を返すことによって、前記宛先レジスタにアクセスする後続の演算に応答することと、
を含む、データ処理方法。
【請求項13】
データ処理装置の製造のためのコンピュータ可読コードを記憶する非一時的コンピュータ可読媒体であって、
レジスタ間のマッピングをストレージ回路構成に記憶することによって、パイプラインのレジスタリネームステージを実行するように構成されたリネーム回路構成であって、前記マッピングの各々が除去フィールド値に関連付けられている、リネーム回路構成と、
ソースレジスタからのもので、宛先レジスタに記憶されているデータに対してアクションが実行されることを指示する演算を、前記宛先レジスタを参照し、かつ前記除去フィールド値が設定されている前記ストレージ回路構成内の新しいマッピングに置換するように構成された演算除去回路構成と、
前記除去フィールド値が設定されているときに、前記ソースレジスタのコンテンツを取得し、結果を取得するために前記コンテンツに対して前記アクションを実行し、前記結果を返すことによって、前記宛先レジスタにアクセスする後続の演算に応答するように構成された演算回路構成と、を含む、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、データ処理に関する。
【背景技術】
【0002】
データ処理装置において、命令キューは、実行がまだ完了していない命令を記憶するために使用される。そのような命令キュー内の命令は、リオーダリングされ得る(すなわち、アウトオブオーダで実行され得る)。しかしながら、リオーダリングは、典型的には、容量が限られているキュー自体内の命令に限定される。したがって、命令キューへのエントリをより良く管理することができれば、より大きな柔軟性を達成することができる。
【発明の概要】
【0003】
第1の例示的な構成から見ると、データ処理装置が提供されており、データ処理装置は、レジスタ間のマッピングをストレージ回路構成に記憶することによって、パイプラインのレジスタリネームステージを実行するように構成されたリネーム回路構成であって、マッピングの各々が除去フィールド値に関連付けられている、リネーム回路構成と、ソースレジスタからのもので、宛先レジスタに記憶されているデータに対してアクションが実行されることを指示する演算を、宛先レジスタを参照し、かつ除去フィールド値が設定されているストレージ回路構成内の新しいマッピングに置換するように構成された演算除去回路構成と、除去フィールド値が設定されているときに、ソースレジスタのコンテンツを取得し、結果を取得するためにコンテンツに対してアクションを実行し、結果を返すことによって、宛先レジスタにアクセスする後続の演算に応答するように構成された演算回路構成と、を含む。
【0004】
第2の例示的な構成から見ると、データ処理方法が提供されており、データ処理方法は、レジスタ間のマッピングをストレージ回路構成に記憶することによって、パイプラインのレジスタリネームステージを実行することであって、マッピングの各々が除去フィールド値に関連付けられている、実行することと、ソースレジスタからのもので、宛先レジスタに記憶されているデータに対してアクションが実行されることを指示する演算を、宛先レジスタを参照し、かつ除去フィールド値が設定されているストレージ回路構成内の新しいマッピングに置換することと、除去フィールド値が設定されているときに、ソースレジスタのコンテンツを取得し、結果を取得するためにコンテンツに対してアクションを実行し、結果を返すことによって、宛先レジスタにアクセスする後続の演算に応答することと、を含む。
【0005】
第3の例示的な構成から見ると、データ処理装置の製造のためのコンピュータ可読コードを記憶する非一時的コンピュータ可読媒体が提供されており、非一時的コンピュータ可読媒体は、レジスタ間のマッピングをストレージ回路構成に記憶することによって、パイプラインのレジスタリネームステージを実行するように構成されたリネーム回路構成であって、マッピングの各々が除去フィールド値に関連付けられている、リネーム回路構成と、ソースレジスタからのもので、宛先レジスタに記憶されているデータに対してアクションが実行されることを指示する演算を、宛先レジスタを参照し、かつ除去フィールド値が設定されているストレージ回路構成内の新しいマッピングに置換するように構成された演算除去回路構成と、除去フィールド値が設定されているときに、ソースレジスタのコンテンツを取得し、結果を取得するためにコンテンツに対してアクションを実行し、結果を返すことによって、宛先レジスタにアクセスする後続の演算に応答するように構成された演算回路構成と、を含む。
【図面の簡単な説明】
【0006】
本発明を、添付図面に示されているそれらの実施形態を参照して、あくまで例として更に説明する。
【
図2】符号拡張命令の例についての演算除去のプロセスを示す図である。
【
図4】データ処理装置によって使用される請求項に記載のストレージ回路構成の一例である論理レジスタテーブルの一例である。
【
図5】いくつかの異なる演算を除去することができる変形例を示す図である。
【
図6A】一部の実施形態による演算を除去するプロセスを示すフローチャートである。
【
図6B】後続の演算が、除去された演算の宛先レジスタに記憶されているデータを使用しようとするときに、除去された演算を補償するプロセスを示すフローチャートである。
【発明を実施するための形態】
【0007】
添付図面を参照して実施形態を検討する前に、以下の実施形態を説明する。
【0008】
1つの例示的な構成によれば、データ処理装置が提供されており、データ処理装置は、レジスタ間のマッピングをストレージ回路構成に記憶することによって、パイプラインのレジスタリネームステージを実行するように構成されたリネーム回路構成であって、マッピングの各々が除去フィールド値に関連付けられている、リネーム回路構成と、ソースレジスタからのもので、宛先レジスタに記憶されているデータに対してアクションが実行されることを指示する演算を、宛先レジスタを参照し、かつ除去フィールド値が設定されているストレージ回路構成内の新しいマッピングに置換するように構成された演算除去回路構成と、除去フィールド値が設定されているときに、ソースレジスタのコンテンツを取得し、結果を取得するためにコンテンツに対してアクションを実行し、結果を返すことによって、宛先レジスタにアクセスする後続の演算に応答するように構成された演算回路構成と、を含む。
【0009】
これらの例では、リネーム回路構成を使用して、演算(例えば命令)のストリームからいくつかの演算を、それらの演算が削除される影響なしに除去することができる。すなわち、通常の状況下では、演算は、実行ユニットによる実行のために命令キューに入力されるものである。しかしながら、これらの例では、命令/発行キューに演算を入力する必要なく、実行ユニットの同じ効果を依然として達成することができる。リネーム回路構成で行われる表記は、後になって、演算の結果を保持するように意図されたレジスタがアクセスされるときに、演算の効果を効果的に達成させる。このとき、演算のソースを保持していたソースレジスタがアクセスされ、演算のアクションが実行され、結果が返される。演算回路構成は、実行ユニットとは別個であってもよい。実際に、いくつかの状況では、演算回路構成は、より一般化され、複数の異なるアクション(場合によってはそれらを組み合わせて)を実行することができる実行ユニットとは対照的に、アクションを高速に実行するように設計された専用ユニットを備えることができる。この結果、これらの演算は命令に入る必要がなく、したがって、限られた容量でより多くのリオーダリングを実現することができるため、命令キューの容量を節約することができる。
【0010】
いくつかの例では、演算は、命令キューへの演算の挿入を禁止することによって置換される。よって、演算は、命令キュー(例えば、発行キュー)に入らず、したがって、命令キュー内の空間を占有しない。これは、ひいては、例えば、アウトオブオーダ実行がより大きな空間にわたって動作することを可能にするための命令のリオーダリングが実行され得る有効範囲を拡張する。
【0011】
いくつかの例では、演算回路構成は、除去フィールド値が設定されていないときに、ソースレジスタのコンテンツを返すことによって、宛先レジスタにアクセスする後続の演算に応答するように構成される。リネーム回路構成内の除去フィールドが特定の宛先レジスタに対して設定されていないとき、アクションは実行されない。よって、除去フィールドは、宛先レジスタがアクセスされるときにアクションが実行されるか否かを制御する。
【0012】
いくつかの例では、マッピングは、論理レジスタから物理レジスタへのものであり、新しいマッピングは、ソースレジスタに対応する物理レジスタのうちの1つを参照し、宛先レジスタは、論理レジスタのうちの1つである。典型的に、パイプラインのリネームステージは、物理レジスタ(ハードウェア内に実際に物理的に存在するレジスタ)と論理レジスタ(「仮想」形式で存在するレジスタ)との間のマッピングを提供するために使用される。命令は典型的に、仮想レジスタを参照し、これらの仮想レジスタは必要に応じてリネームステージによって物理レジスタに割り当てられる。物理レジスタを論理レジスタに慎重に割り当てることによって、命令への偽依存関係を除去することが可能であり、これによって命令並列処理を行うことが可能になる。リネームステージは通常、関連付けられた物理レジスタを演算に読み取らせ、結果を記憶する物理レジスタを割り当てる。しかしながら、その代わりに、物理レジスタと論理レジスタとの間のマッピングを記憶するために使用されるストレージ回路構成は、論理宛先レジスタが物理ソースレジスタにマッピングするという事実を記憶する。このようにして、後続の命令が(演算の結果が記憶されると想定していた)宛先レジスタにアクセスしようとするとき、実行される演算のソースを含む物理レジスタに実際にアクセスする。明らかに、このデータは、想定していたものではない。したがって、除去フィールド値は、演算のアクションが依然として実行されなければならないことを示すために設定され、このアクションは、結果として生じるデータが渡される前に実行される。
【0013】
いくつかの例では、除去フィールド値は、複数のアクションのうちのどれが実行されるかを示す。これらの例では、いくつかの異なるアクションを実行することが可能である。すなわち、多数の異なる演算を除去することができる。したがって、除去フィールド値は、宛先レジスタが後続の演算によってアクセスされるときにどの演算が実行されるかを示す。
【0014】
いくつかの例では、演算は、0個の更なるソースレジスタを参照する。すなわち、演算は、正確に1つのソースレジスタを参照する。演算はまた、1つ以上の宛先レジスタを参照してもよく、制御情報を含んでもよい。
【0015】
いくつかの例では、演算回路構成は、1クロックサイクル内でコンテンツに対してアクションを実行するように構成される。したがって、アクションは、特に高速に実行され、よって、宛先レジスタにアクセスする要求が行われるときに「オンデマンド」で実行することができる。これは、クロックサイクルの全体がこれらの行動によって占有されるということではない。逆に、これらの行動は、クロックサイクルのほんの一部しか占有せず、これにより、リストに載っているアクションに加えて他のアクションが実行されることを可能にする。
【0016】
いくつかの例では、演算回路構成は、論理ゲートを使用せずにコンテンツに対してアクションを実行するように構成される。これらの実施形態では、アクションは、代わりに、例えば、ビットを移動させるために配線を使用して実行される。いくつかの例では、論理ゲートが含まれるが、ビットを反転させる(例えば、「0」が入力されると「1」を生成し、「1」が入力されると「0」を生成する)NOTゲートのみが含まれる。
【0017】
いくつかの例では、演算は、ビット単位NOT、否定シフト、ビット反転、バイト反転、符号なし拡張、及び符号付き拡張を含むリストからのものである。ビット単位のNOT演算は、一連のビットを入力とし、入力の各ビットが反転された出力を生成する。否定シフト演算は同じことを実行するが、否定が行われる前に入力の左又は右シフトを実行する。ビット反転は、一連のビットを取り、最下位ビットが最上位ビットになるように順序を反転させ、その逆も同様である。バイト反転演算は、入力を一連のバイト(例えば、8ビットのグループ)とみなす。次に、各グループのビットが反転され、各グループ内のビットの順序はそのままである。符号なし拡張は、レジスタのコンテンツを正として扱い、(例えば、最上位位置に0をパディングすることによって)その数を拡張する。符号付き拡張は、あるビット数を有する値を取り、より多くのビット数を使用して同じ数を表す。入力及び出力は符号付きであり、したがって、正又は負とすることができる。正数の場合、これは、最上位ビット位置に0をパディングすることによって達成される。負数の場合、プロセスは、最上位ビット位置に1をパディングすることを含む。いずれの場合も、実行されるアクションは、実行される演算によって指示され、実行される演算に対応する。
【0018】
いくつかの例では、演算は拡張演算である。これは、符号拡張演算又は符号なし拡張演算であり得る。
【0019】
いくつかの例では、ソースレジスタと宛先レジスタは異なる幅を有する。例えば、ソースレジスタは、宛先レジスタよりも少ないビット数を有し、よって、宛先レジスタよりも小さい範囲の数を表すことができる。
【0020】
ここで、特定の実施形態を、図面を参照して説明する。
【0021】
図1は、データ処理装置100を概略的に図示する。データ処理装置100は、メモリから(メインメモリから、又はキャッシュを介してメモリからのいずれか)命令をフェッチする役割を果たすフェッチ回路構成110を含む。取り出された命令は、命令に応答して1つ以上の演算を生成するデコード回路構成120に渡される。演算除去回路構成170は、リネーム回路構成130を用いて特定の演算(例えば、命令)を除去するために設けられる。これについては、以下でより詳細に説明する。ここから、演算はコミットキュー180に渡される。コミットキュー180は、命令が受信された順序を追跡し続け、命令が異なる順序で実行される場合、それらが受信されたのと同じ順序でコミットされる(例えば、実行が完了される)ようにし、それによってデータの完全性を提供する。同時に、命令に対応する演算が、レジスタリネーミングが行われるリネーム回路構成130に渡される。レジスタリネーミングは、いくつかの異なる技法を組み込むことができるが、一般に、命令間の偽依存関係の削除を可能にするために、(物理レジスタファイル187の一部を形成する)本当の物理レジスタにマッピングする「論理レジスタ」の概念を可能にする。レジスタリネーミングはまた、以下に詳述するように、演算の除去を可能にする。発行回路構成140は、実行回路構成150に演算を発行するために提供される。実際には、発行回路構成140は、命令(演算)が実行回路構成150に渡されるまで、命令(演算)を格納するためのキューのセットとして機能する。
【0022】
実行回路構成は、算術論理ユニット(Arithmetic Logic Unit、ALU)160a、複数の算術演算が同時に行われることを可能にするために提供される第2のALU 160b、浮動小数点ユニット(Floating Point Unit、FPU)160c、ロード/ストアユニット160d、及び分岐ユニット160eなどのいくつかの実行ユニットから構成され得る。当業者には、実行ユニットの他の例は知られているであろう。これらの実行ユニットは、演算を受信し、それらの演算に基づいて1つ以上の機能を実行する。演算が完了すると、それらはコミットキュー180を参照してコミットされるので、命令がアウトオブオーダで実行されるとしても、それらはデコード回路構成から現われる順序でコミットされることになる。コミットポインタ185は、コミットされる次の命令を追跡するためにコミットキュー180内に提供される。このポインタは、コミットキュー内の命令がコミットされるたびにインクリメントされる。
【0023】
これらの例は、実行回路構成150によって実行され得るアクションの限定されたセットを実行するために使用され得る演算回路(単数又は複数)190を更に使用する。演算回路(単数)190又は回路(複数)190は、演算除去回路構成170がいくつかの演算を除去することを可能にするために、リネーム回路構成130と組み合わせて使用され得る。
【0024】
この例では、演算回路190は、否定回路195aと、(否定及び/又はシフトを実行する)移動否定回路195bと、ビットの順序を反転するビット反転回路195cと、バイトの順序を反転するバイト反転回路195dと、符号なし拡張回路195eと、符号付き拡張回路195fとを含む。この例では、バイト反転回路195d、符号なし拡張回路195e、及び符号付き拡張回路195fはすべて、それらが異なるデータ長(例えば、ワード、ハーフワードなど)に対して指定された演算を実行することができることを示すために、*が付けられていることに留意されたい。
【0025】
図2は、符号拡張命令(Signed eXTend Word、SXTW)がソースレジスタのコンテンツの32ビットに対して2の補数符号拡張演算を実行して、64ビットの符号拡張整数値を生成し、次にこれが宛先レジスタに配置される例についての演算除去のプロセスを図示する。実際には、このプロセスは、ソースレジスタの最上位ビットをコピーして、宛先レジスタにおけるパディングとして使用する。例えば、4ビットの2の補数符号化1101(10進数で-2)を8ビット値に符号拡張すると、第3のビット位置のビット(1)が出力のビット位置4、5、6、及び7にコピーされるので、11111101が生成される。この演算は、論理ゲートを用いずに配線のみで実現できる。従来、この演算は、ALU実行ユニット160aによって実行され得る。もちろん、このような演算は、演算がALUによって実行される結果、電力及び帯域幅を活用するので、パイプラインを通る命令の全体的なスループットを低減することができる。
【0026】
演算除去は、レジスタリネーミングが利用可能であるとき、特定の演算を実行から除去することが可能であり得ることを認識している。代わりに、単に論理レジスタと物理レジスタとの間のマッピングを更新し、演算が後に実行されるであるという指示を追加することができる。
【0027】
このような例を
図2に示す。ここで、論理レジスタx4は最初に物理レジスタp0をポイントしていて、論理レジスタx5は最初に物理レジスタp4をポイントしている。命令SXTW x4 x5は、論理レジスタx5に記憶されている値を符号拡張し、その結果を論理レジスタx4に記憶する。この命令は、(例えば、デコードステージ120によって)デコードされ、(例えば、リネーミングステージ130によって)リネーミングが実行され、それによって物理レジスタが演算に割り当てられ、よって、結果として演算SXTW p0 p4が得られる。
【0028】
結果として生じる演算は、上述のように、ALU 160aを使用して達成することができる。しかしながら、本技法は、命令キューに演算を提供する必要なく、これを達成するより高速な方法を提供する。具体的には、(
図2の右側に示すように)論理レジスタテーブルが更新され、その結果、(SXTW演算の結果が記憶されていたはずの場所である)論理レジスタx4が、代わりに、その演算のソース(物理レジスタp4)をポイントするようになる。更に、もし論理レジスタx4がアクセスされる場合そのときは、レジスタp4に記憶されているデータに対して符号拡張を行う必要があるという(アスタリスク*で示す)注釈が付けられている。これらの例では、遅れての符号拡張は、演算ユニット190のうちの1つによって実行することができ、したがって、この演算は、いかなる実行ユニット150の使用も必要としない。したがって、平均命令実行速度が向上する。
【0029】
図3に示されているように、
図2に示されている演算除去によって、2つのエントリがリネームコミットキュー(Rename Commit Queue、RCQ)に記憶されることになる。RCQは、命令のコミットフェーズ中に使用され、命令ストリームを「巻き戻す」ためのパイプラインフラッシュの場合にも使用される。また、
図3に示されているように、論理レジスタ(x4及びx5)の両方がその物理レジスタの使用を終了するまで、物理レジスタ(p4)が再利用されないことを確実にするために、参照カウンティングを実行する必要があり得る。よって、2つの論理レジスタが物理レジスタp4を参照し、0個の論理レジスタがp0を参照することを示すために、エントリが参照カウンティングテーブルに記憶される。したがって、物理レジスタp0は再利用できるようになっている。論理レジスタのうちの1つがレジスタp4への参照を停止すると(例えば、値が変更された場合)、参照カウンティングテーブル内のp4の参照カウントを減らすことができる。
【0030】
図4は、データ処理装置100によって使用される請求項に記載のストレージ回路構成の一例である論理レジスタテーブルの一例を示す。論理レジスタテーブルは、論理レジスタと物理レジスタとの間のマッピングを記憶するために使用される。この例では、例えば、(
図2/
図3の最後の結果と同様に)、論理レジスタx4が物理レジスタp4にマッピングされ、論理レジスタx5も論理レジスタp4にマッピングされることが分かる。したがって、デコードされた命令が論理レジスタ(例えば、x4)を参照するとき、演算を実行するには、対応する物理レジスタp4をレジスタファイル187からアクセスすべきであることが分かる。
【0031】
これらの例では、論理レジスタテーブルはまた、各マッピングに対応する値を有する除去フィールドを含む。フィールドは、論理レジスタがアクセスされるときに、除去された演算に対応するアクションが実行されるべきかどうかを示す。
図2/
図3の例を再び参照して、符号拡張演算SXTWが除去され(すなわち、命令キュー140に入力されず)、代わりに、論理レジスタテーブルが更新され、符号拡張の宛先であったレジスタx4がその演算の物理ソースレジスタp4を参照したことを想起されたい。もちろん、物理レジスタp4にアクセスしても符号拡張に対応する値が生成されないので、これだけでは十分ではない。符号拡張は、物理レジスタp4に記憶されている値に対して依然として実行される。したがって、物理レジスタp4がアクセスされるときに、そのレジスタからのデータに対して符号拡張演算が実行されるように、レジスタx4の除去フィールド値が設定される(すなわち、その値が「1」に設定される)。
【0032】
これは、
図1に示されている演算回路(単数又は複数)190、具体的には符号拡張ユニット195fによって達成される。すなわち、レジスタx4が後続の演算によってアクセスされるとき、レジスタx4の対応する除去フィールド値が設定されていることに留意されたい。よって、(x4がポイントしている)物理レジスタp4のコンテンツがアクセスされ、そして符号拡張ユニット195fを通ってから、そのデータに対して更なる演算が実行される。符号拡張は、配線によって、(すなわち、いかなる論理ゲートも使用せずに)達成することができるので、符号拡張アクションを非常に高速に実行することができ、このアクションの結果を単一クロックサイクル内で確実に実行して渡すことができる。
【0033】
したがって、
図4の例では、除去フィールド値はx4に対して設定されているが、x5に対しては設定されていないことが理解されるであろう。よって、x4がアクセスされるときには符号拡張は行われないが、x5がアクセスされるときには符号拡張が行われる。これは、除去された演算によれば、符号拡張が実行されるのはx4ではなくx5のコンテンツだけだからである。
【0034】
図5は、いくつかの異なる演算を除去することができる変形例を図示する。この例では、除去フィールドは、いくつかの対応するアクションのうちのどれが実行されるかを示す。すなわち、NEG演算が除去された場合、その演算の対象のソースレジスタのコンテンツは、NEG演算回路195aを通ることになる。これは(
図5の例では)、そのレジスタの除去フィールドに値「1」を記録することによって表記される。同様に、MVN演算が除去された場合、その演算の対象のソースレジスタのコンテンツは、MVN演算回路195bを通ることになる。これは(
図5の例では)、そのレジスタの除去フィールドに値「2」を記録することによって表記される。値「0」は、この場合、アクションが実行されない状況のためにリザーブされる。すなわち、ソースレジスタの値は、演算回路(単数又は複数)を通さずに逐語的に取り込まれる。
【0035】
演算回路のいくつかは論理ゲートを使用せずに実装することができるが、いくつかの他の演算回路は否定論理ゲート(例えば、NOTゲート)の使用を必要とすることに留意されたい。典型的には、NOTゲートは高速に演算するので、NOTゲートをソースレジスタに適用する結果を1クロックサイクル内で実行し、その結果を別の演算に渡すことができる。もちろん、他の実施形態では、ソースオペランドが、更なる演算に渡される前に演算回路(単数又は複数)によって演算されるために2つ以上のプロセッササイクルを要することが許容され得る。
【0036】
このようにして演算を除去する結果として、除去された演算は、(実行される演算がないため)、命令/発行キュー140に渡される必要がない。これは、ひいては、発行キュー140のリオーダリング能力を拡張する。
【0037】
図6Aは、一部の実施形態による演算を除去するプロセスを示すフローチャート600を図示する。ステップ605では、(例えば、フェッチ回路構成110及びデコード回路構成120によって)命令が受信され、演算にデコードされる。ステップ610では、発生することになっているあらゆる論理から物理へのリネーミングが行われる。ステップ615では、(リネーム回路構成130の使用によって演算を除去することができるように)演算が正確に1つのソースレジスタを参照するか否かが判定される。正確に1つのソースレジスタを参照しない場合、演算は発行/命令キュー140に挿入される。さもなければ、ステップ625で、論理宛先レジスタを物理ソースレジスタにマッピングし、そのマッピング内に除去フィールドを設定するためのエントリがリネームテーブル(例えば、論理レジスタテーブル)に挿入される。複数の演算を除去することができる場合、除去フィールドは、除去された演算に対応するように設定される。次に、ステップ630では、発行/命令キューへの演算の挿入が禁止される。すなわち、演算は挿入されない。
【0038】
図6Bは、後続の演算が、除去された演算の宛先レジスタに記憶されているデータを使用しようとするときに、除去された演算を補償するプロセスを示すフローチャート635を図示する。ステップ640では、命令が受信され、デコードされる。ステップ645では、論理から物理へのリネーミングが行われる。これらのステップは、第1のフローチャート600を参照して先に説明したステップ605、610と同様の方法で行われる。ステップ650では、後続の演算の対象の(物理)ソースレジスタがアクセスされる。ステップ655では、論理ソースレジスタに除去フィールドが設定されているかどうかが判定される。設定されていない場合、(物理)ソースレジスタ内の値がステップ665で返される。さもなければ、ステップ660で、物理ソースレジスタに記憶されているデータに対して、除去フィールドに示されているアクションが実行される。この例では、アクションは単一のクロックサイクル内で実行される。次に、ステップ670で、そのアクションを実行して得た結果が返される。
【0039】
本明細書に記載の概念は、記載された概念を具現化する装置の製造のためのコンピュータ可読コードで具現化され得る。例えば、コンピュータ可読コードは、概念を具現化する装置を備える集積回路を製造するために、電子設計自動化(Electronic Design Automation、EDA)ステージを含む半導体設計及び製造プロセスの1つ以上のステージで使用されることができる。上記のコンピュータ可読コードは、追加的又は代替的に、本明細書に記載の概念を具現化する装置の定義、モデリング、シミュレーション、検証及び/又は試験を可能にすることができる。
【0040】
例えば、本明細書に記載の概念を具現化する装置を製造するためのコンピュータ可読コードは、概念のハードウェア記述言語(Hardware Description Language、HDL)表現を定義するコードで具現化することができる。例えば、コードは、概念を具現化する装置を定義するための1つ以上の論理回路のレジスタ転送レベル(Register-Transfer-Level、RTL)抽象化を定義することができる。コードは、Verilog、SystemVerilog、Chisel、又は超高速集積回路ハードウェア記述言語(Very High-Speed Integrated Circuit Hardware Description Language、VHDL)並びにFIRRTLのような中間表現を用いて、装置を具現化する1つ以上の論理回路のHDL表現を定義し得る。コンピュータ可読コードは、SystemC及びSystemVerilogなどのシステムレベルモデリング言語又は概念のシミュレーション、機能的及び/若しくは形式的な検証、及び概念の試験を可能にするためにコンピュータによって解釈され得る概念の他の行動表現を使用して概念を具現化する定義を提供することができる。
【0041】
追加的又は代替的に、コンピュータ可読コードは、GDSIIなどの表現を含む、1つ以上のネットリスト又は集積回路レイアウト定義など、本明細書に記載の概念を具現化する集積回路構成要素の低レベル記述を定義し得る。集積回路構成要素の1つ以上のネットリスト又は他のコンピュータ可読表現は、1つ以上の論理合成プロセスをRTL表現に適用して、本発明を具現化する装置の製造に使用する定義を生成することによって生成することができる。代替的又は追加的に、1つ以上の論理合成プロセスは、記載された概念を具現化するようにFPGAを構成するためにフィールドプログラマブルゲートアレイ(FPGA)にロードされるビットストリームをコンピュータ可読コードから生成することができる。FPGAは、集積回路での製造前に概念の検証及び試験の目的で展開されてもよく、又はFPGAは製品に直接展開されてもよい。
【0042】
コンピュータ可読コードは、例えば、本発明を具現化する装置を製造するための半導体設計及び製造プロセスで使用されるRTL表現、ネットリスト表現、又は別のコンピュータ可読定義のうちの1つ以上の混合を含む、装置の製造のためのコード表現の混合を含むことができる。代替的又は追加的に、概念は、装置を製造するために半導体設計及び製造プロセスで使用されるコンピュータ可読定義と、いったん製造されると定義された装置によって実行される命令を定義するコンピュータ可読コードとの組み合わせで定義されてもよい。
【0043】
そのようなコンピュータ可読コードは、任意の既知の一時的なコンピュータ可読媒体(ネットワークを介したコードの有線又は無線送信など)、又は半導体、磁気ディスク、若しくは光ディスクなどの非一時的コンピュータ可読媒体に配置することができる。コンピュータ可読コードを使用して製造された集積回路は、中央処理装置、グラフィック処理装置、ニューラル処理装置、デジタル信号プロセッサ、又は概念を個別に若しくは集合的に具現化する他の構成要素のうちの1つ以上などの構成要素を備えることができる。
【0044】
本出願において、「~ように構成された(configured to...)」という用語は、装置の要素が、定義された動作を実施することが可能である構成を有することを意味するために使用される。この文脈において、「構成」とは、ハードウェア又はソフトウェアの構成又は相互接続の方法を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有してもよく、又はプロセッサ若しくは他の処理デバイスが、機能を実行するようにプログラムされてもよい。「ように構成された」は、装置要素が、定義された動作を提供するために何らかの変更がなされる必要があることを意味しない。
【0045】
本発明の例示的な実施形態が添付の図面を参照して本明細書で詳細に説明されてきたが、本発明はそれらの正確な実施形態に限定されないこと、及び添付の特許請求の範囲によって規定される本発明の範囲及び趣旨から逸脱することなく、当業者によって様々な変更、追加、及び修正が当業者によって実施され得ることが理解されるであろう。例えば、従属請求項の特徴の様々な組み合わせは、本発明の範囲から逸脱することなく、独立請求項の特徴でなされてもよい。
【0046】
本発明の他の態様及び特徴は、以下の番号付けされた項に記載されている。
【0047】
1.レジスタ間のマッピングをストレージ回路構成に記憶することによって、パイプラインのレジスタリネームステージを実行するように構成されたリネーム回路構成であって、マッピングの各々が除去フィールド値に関連付けられている、リネーム回路構成と、
ソースレジスタからのもので、宛先レジスタに記憶されているデータに対してアクションが実行されることを指示する演算を、宛先レジスタを参照し、かつ除去フィールド値が設定されているストレージ回路構成内の新しいマッピングに置換するように構成された演算除去回路構成と、
除去フィールド値が設定されているときに、ソースレジスタのコンテンツを取得し、結果を取得するためにコンテンツに対してアクションを実行し、結果を返すことによって、宛先レジスタにアクセスする後続の演算に応答するように構成された演算回路構成と、を含む、データ処理装置。
【0048】
2.演算が、命令キューへの演算の挿入を禁止することによって置換される、項1に記載のデータ処理装置。
【0049】
3.演算回路構成が、除去フィールド値が設定されていないときに、ソースレジスタのコンテンツを返すことによって、宛先レジスタにアクセスする後続の演算に応答するように構成されている、前項のいずれかに記載のデータ処理装置。
【0050】
4.マッピングが、論理レジスタから物理レジスタへのものであり、
新しいマッピングが、ソースレジスタに対応する物理レジスタのうちの1つを参照し、
宛先レジスタが、論理レジスタのうちの1つである、前項のいずれかに記載のデータ処理装置。
【0051】
5.除去フィールド値が、複数のアクションのうちのどれが実行されるかを示す、前項のいずれかに記載のデータ処理装置。
【0052】
6.演算が、0個の更なるソースレジスタを参照する、前項のいずれかに記載のデータ処理装置。
【0053】
7.演算回路構成が、1クロックサイクル内でコンテンツに対してアクションを実行するように構成されている、前項のいずれかに記載のデータ処理装置。
【0054】
8.演算回路構成が、論理ゲートを使用せずにコンテンツに対してアクションを実行するように構成されている、前項のいずれかに記載のデータ処理装置。
【0055】
9.演算が、ビット単位NOT、否定シフト、ビット反転、バイト反転、符号なし拡張、及び符号付き拡張を含むリストからのものである、前項のいずれかに記載のデータ処理装置。
【0056】
10.演算が、拡張演算である、前項のいずれかに記載のデータ処理装置。
【0057】
11.ソースレジスタと宛先レジスタが、異なる幅を有する、前項のいずれかに記載のデータ処理装置。
【0058】
12.レジスタ間のマッピングをストレージ回路構成に記憶することによって、パイプラインのレジスタリネームステージを実行することであって、マッピングの各々が除去フィールド値に関連付けられている、実行することと、
ソースレジスタからのもので、宛先レジスタに記憶されているデータに対してアクションが実行されることを指示する演算を、宛先レジスタを参照し、かつ除去フィールド値が設定されているストレージ回路構成内の新しいマッピングに置換することと、
除去フィールド値が設定されているときに、ソースレジスタのコンテンツを取得し、結果を取得するためにコンテンツに対してアクションを実行し、結果を返すことによって、宛先レジスタにアクセスする後続の演算に応答することと、を含む、データ処理方法。
【0059】
13.データ処理装置の製造のためのコンピュータ可読コードを記憶する非一時的コンピュータ可読媒体であって、
レジスタ間のマッピングをストレージ回路構成に記憶することによって、パイプラインのレジスタリネームステージを実行するように構成されたリネーム回路構成であって、マッピングの各々が除去フィールド値に関連付けられている、リネーム回路構成と、
ソースレジスタからのもので、宛先レジスタに記憶されているデータに対してアクションが実行されることを指示する演算を、宛先レジスタを参照し、かつ除去フィールド値が設定されているストレージ回路構成内の新しいマッピングに置換するように構成された演算除去回路構成と、
除去フィールド値が設定されているときに、ソースレジスタのコンテンツを取得し、結果を取得するためにコンテンツに対してアクションを実行し、結果を返すことによって、宛先レジスタにアクセスする後続の演算に応答するように構成された演算回路構成と、を含む、非一時的コンピュータ可読媒体。