(57)【要約】システム及び方法は、プロセッサ命令パイプラインにおいてアドレス生成ハードウェアを選択的にバイパスする。実施形態では、プロセッサは、アドレス生成ステージ及びアドレス生成バイパス判別ユニット（ＡＢＤＵ）を含む。ＡＢＤＵは、ロード／ストア命令を受信する。ロード／ストア命令の有効アドレスがＡＢＤＵにおいて既知でない場合に、ＡＢＤＵは、プロセッサのアドレス生成ステージを介してロード／ストア命令をルーティングする。しかしながら、ロード／ストア命令の有効アドレスがＡＢＤＵにおいて既知である場合に、ＡＢＤＵは、プロセッサのアドレス生成ステージをバイパスするようにロード／ストア命令をルーティングする。【選択図】図１
2021535478.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上のプロセッサによって実行される方法であって、
プロセッサのアドレス生成（ＡＧＥＮ）バイパス判別ユニット（ＡＢＤＵ）へのロード／ストア命令を受信することと、
前記ロード／ストア命令の有効アドレスが前記ＡＢＤＵにおいて既知でない場合に、前記プロセッサのＡＧＥＮステージを介して前記ロード／ストア命令をルーティングすることと、
前記ロード／ストア命令の前記有効アドレスが前記ＡＢＤＵにおいて既知である場合に、前記ＡＧＥＮステージをバイパスするように前記ロード／ストア命令をルーティングすることと、を含む、
方法。
【請求項２】
前記ロード／ストア命令の前記有効アドレスは、前記ロード／ストア命令がプログラムカウンタ（ＰＣ）相対ロード／ストア命令である場合に、前記ＡＢＤＵにおいて既知である、
請求項１の方法。
【請求項３】
前記ロード／ストア命令の前記有効アドレスは、前記ロード／ストア命令が変位のみロード／ストア命令である場合に、前記ＡＢＤＵにおいて既知である、
請求項１の方法。
【請求項４】
前記ロード／ストア命令の前記有効アドレスは、前記ロード／ストア命令がスタックポインタ（ＳＰ）相対ロード／ストア命令であり、前記ＡＢＤＵがＳＰレジスタ（ｒＳＰ）の現在値を有する場合に、前記ＡＢＤＵにおいて既知である、
請求項１の方法。
【請求項５】
前記ＡＧＥＮステージは、前記ロード／ストア命令の複数の有効アドレス入力を使用して、前記ロード／ストア命令の前記有効アドレスを計算するように構成されており、
前記ロード／ストア命令の前記有効アドレスは、前記ロード／ストア命令の前記有効アドレス入力のうち少なくとも１つが前記ＡＢＤＵにおいて既知でない場合に、前記ＡＢＤＵにおいて既知でなく、
前記ロード／ストア命令の前記有効アドレスは、前記ロード／ストア命令の前記有効アドレス入力の各々が前記ＡＢＤＵにおいて既知である場合に、前記ＡＢＤＵにおいて既知である、
請求項１の方法。
【請求項６】
前記プロセッサは、
ロード／ストアユニットと、
前記ＡＢＤＵ及び前記ロード／ストアユニットを通信可能に結合し、前記ＡＧＥＮステージを含む第１の回路経路と、
前記ＡＢＤＵ及び前記ロード／ストアユニットを通信可能に結合し、前記ＡＧＥＮステージをバイパスする第２の回路経路と、を備え、
前記ＡＧＥＮステージを介して前記ロード／ストア命令をルーティングすることは、前記第１の回路経路を介して前記ロード／ストア命令をルーティングすることを含み、
前記ＡＧＥＮステージをバイパスするように前記ロード／ストア命令をルーティングすることは、前記第２の回路経路を介して前記ロード／ストア命令をルーティングすることを含む、
請求項１の方法。
【請求項７】
前記第２の回路経路を介して前記ロード／ストア命令をルーティングすることは、前記ロード／ストア命令に対応するバイパス適格フラグをアサートすることを含み、
前記ロード／ストアユニットは、
前記対応するバイパス適格フラグがアサートされたロード／ストア命令を処理することと、
前記対応するバイパス適格フラグがクリアされたロード／ストア命令を破棄することと、
を行うように構成されている、
請求項６の方法。
【請求項８】
クロックサイクル毎に第１の整数のロード／ストア命令に関して前記プロセッサによって実行される、請求項６の方法であって、
前記第２の回路経路を介してルーティングされたロード／ストア命令の各々について、対応するバイパス適格フラグをアサートすることをさらに含み、
前記ロード／ストアユニットは、
前記対応するバイパス適格フラグがアサートされたロード／ストア命令を処理することと、
前記対応するバイパス適格フラグがクリアされたロード／ストア命令を破棄することと、
を行うように構成されている、
請求項６の方法。
【請求項９】
クロックサイクル毎に最大で第２の整数のロード／ストア命令について、対応するバイパス適格フラグをアサートすることをさらに含み、前記第２の整数は、前記第１の整数よりも小さい、
請求項８の方法。
【請求項１０】
前記ロード／ストアユニットは、前記第２の整数のロード／ストアパイプラインを正確に有する、
請求項９の方法。
【請求項１１】
前記ロード／ストアユニットは、前記第２の回路経路を介して前記ロード／ストアユニットによって受信されたロード／ストア命令の有効アドレスを計算するように構成されている、
請求項６の方法。
【請求項１２】
前記ロード／ストア命令は、レジスタへの参照を含み、
前記方法は、前記ロード／ストア命令への参照を、前記レジスタに現在記憶されている値と置き換えることをさらに含む、
請求項１の方法。
【請求項１３】
アドレス生成（ＡＧＥＮ）ステージと、
ＡＧＥＮバイパス判別ユニット（ＡＢＤＵ）と、備え、
前記ＡＢＤＵは、
ロード／ストア命令を受信することと、
前記ロード／ストア命令の有効アドレスが前記ＡＢＤＵにおいて既知でない場合に、前記ＡＧＥＮステージを介して前記ロード／ストア命令をルーティングすることと、
前記ロード／ストア命令の前記有効アドレスが前記ＡＢＤＵにおいて既知である場合に、前記ＡＧＥＮステージをバイパスするように前記ロード／ストア命令をルーティングすることと、
を行うように構成されている、
プロセッサ。
【請求項１４】
前記ロード／ストア命令の前記有効アドレスは、前記ロード／ストア命令がプログラムカウンタ（ＰＣ）相対ロード／ストア命令である場合に、前記ＡＢＤＵにおいて既知である、
請求項１３のプロセッサ。
【請求項１５】
前記ロード／ストア命令の前記有効アドレスは、前記ロード／ストア命令が変位のみロード／ストア命令である場合に、前記ＡＢＤＵにおいて既知である、
請求項１３のプロセッサ。
【請求項１６】
前記ロード／ストア命令の前記有効アドレスは、前記ロード／ストア命令がスタックポインタ（ＳＰ）相対ロード／ストア命令であり、前記ＡＢＤＵがＳＰレジスタ（ｒＳＰ）の現在値を有する場合に、前記ＡＢＤＵにおいて既知である、
請求項１３のプロセッサ。
【請求項１７】
前記ＡＧＥＮステージは、前記ロード／ストア命令の複数の有効アドレス入力を使用して、前記ロード／ストア命令の前記有効アドレスを計算するように構成されており、
前記ロード／ストア命令の前記有効アドレスは、前記ロード／ストア命令の前記有効アドレス入力のうち少なくとも１つが前記ＡＢＤＵにおいて既知でない場合に、前記ＡＢＤＵにおいて既知でなく、
前記ロード／ストア命令の前記有効アドレスは、前記ロード／ストア命令の前記有効アドレス入力の各々が前記ＡＢＤＵにおいて既知である場合に、前記ＡＢＤＵにおいて既知である、
請求項１３のプロセッサ。
【請求項１８】
ロード／ストアユニットと、
前記ＡＢＤＵ及び前記ロード／ストアユニットを通信可能に結合し、前記ＡＧＥＮステージを含む第１の回路経路と、
前記ＡＢＤＵ及び前記ロード／ストアユニットを通信可能に結合し、前記ＡＧＥＮステージをバイパスする第２の回路経路と、をさらに備え、
前記ＡＢＤＵは、
前記第１の回路経路を介して、前記ＡＧＥＮステージを介して前記ロード／ストア命令をルーティングすることと、
前記第２の回路経路を介して、前記ＡＧＥＮステージをバイパスするように前記ロード／ストア命令をルーティングすることと、
を行うように構成されている、
請求項１３のプロセッサ。
【請求項１９】
前記ＡＢＤＵは、前記第２の回路経路を介して前記ロード／ストア命令をルーティングする場合に、前記ロード／ストア命令に対応するバイパス適格フラグをアサートするように構成されており、
前記ロード／ストアユニットは、
前記対応するバイパス適格フラグがアサートされたロード／ストア命令を処理することと、
前記対応するバイパス適格フラグがクリアされたロード／ストア命令を破棄することと、
を行うように構成されている、
請求項１８のプロセッサ。
【請求項２０】
前記第１の回路経路又は前記第２の回路経路を介して、クロックサイクル毎に第１の整数のロード／ストア命令の各々をルーティングすることと、
前記第２の回路経路を介してルーティングされたロード／ストア命令の各々について、対応するバイパス適格フラグをアサートすることと、
を行うようにさらに構成されており、
前記ロード／ストアユニットは、
前記対応するバイパス適格フラグがアサートされたロード／ストア命令を処理することと、
前記対応するバイパス適格フラグがクリアされたロード／ストア命令を破棄することと、
を行うように構成されている、
請求項１８のプロセッサ。
【請求項２１】
クロックサイクル毎に最大で第２の整数のロード／ストア命令について、対応するバイパス適格フラグをアサートするようにさらに構成されており、前記第２の整数は、前記第１の整数よりも小さい、
請求項２０のプロセッサ。
【請求項２２】
前記ロード／ストアユニットは、前記第２の整数のロード／ストアパイプラインを正確に有する、
請求項２１のプロセッサ。
【請求項２３】
前記ロード／ストアユニットは、前記第２の回路経路を介して前記ロード／ストアユニットによって受信されたロード／ストア命令の有効アドレスを計算するように構成されている、
請求項１８のプロセッサ。
【請求項２４】
前記ロード／ストア命令は、レジスタへの参照を含み、
前記ＡＢＤＵは、前記ロード／ストア命令への参照を、前記レジスタに現在記憶されている値と置き換えるように構成されている、
請求項１３のプロセッサ。
【請求項２５】
プロセッサを製造するための集積回路製造システムによって実行可能な命令を含む、非一時的なコンピュータ可読記憶媒体であって、
前記プロセッサは、
アドレス生成（ＡＧＥＮ）ステージと、
ＡＧＥＮバイパス判別ユニット（ＡＢＤＵ）と、を備え、
前記ＡＢＤＵは、
ロード／ストア命令を受信することと、
前記ロード／ストア命令の有効アドレスが前記ＡＢＤＵにおいて既知でない場合に、前記ＡＧＥＮステージを介して前記ロード／ストア命令をルーティングすることと、
前記ロード／ストア命令の前記有効アドレスが前記ＡＢＤＵにおいて既知である場合に、前記ＡＧＥＮステージをバイパスするように前記ロード／ストア命令をルーティングすることと、
を行うように構成されている、
非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
現在のプロセッサの実装では、命令は、機能ユニット（すなわち、デジタルロジック回路）のセットである命令パイプラインによって実行され、機能ユニットのセットは、パイプラインのフロントエンドと総称される分岐予測ユニット及びフェッチユニットと、ディスパッチステージを含む復号ユニットと、実行／スケジューラユニット（ＥＸＳＣ）と、レベル１（Ｌ１）データキャッシュとインタフェースし、次いで、レベル２（Ｌ２）データキャッシュとインタフェースするロード／ストアユニットと、を含む。命令パイプラインは、ロード／ストア命令を含む複数のタイプの命令を処理し、複数のタイプの各々は、メモリアドレスからデータを取得するためのロード命令、又は、メモリアドレスにデータを書き込むためのストア命令の何れかである。ロード／ストア命令がロード又はストアするメモリアドレスは、ロード／ストア命令の有効アドレスとして知られており、アドレス指定モードを使用してロード／ストア命令において指定される。
【０００２】
ＥＸＳＣは、命令パイプラインによって処理されるロード／ストア命令毎の有効アドレスを計算する、アドレス生成（ＡＧＥＮ）ステージ（ＡＧＥＮハードウェア、ＡＧＥＮユニット（ＡＧＵ）、及び／又は、アドレス計算ユニット（ＡＣＵ）等）として知られるデジタルロジック回路を含む。ＡＧＥＮ計算の各々は、少なくとも時間及び電力の観点でコストを招く。次に、各ロード／ストア命令は、ＥＸＳＣからロード／ストアユニットに進み、ロード／ストアユニットは、ＡＧＥＮステージによって計算された有効アドレスを使用して、ロード／ストア命令を実行する。ＡＧＥＮステージにおいてロード／ストア命令毎に有効アドレスを計算することによって、現在のプロセッサは、命令パイプライン内のＡＧＥＮステージの前のポイントで有効アドレスを計算するための全ての入力が既知であるロード／ストア命令について、有効アドレスを計算する時間及び電力の両方を無駄にする。
【発明の概要】
【課題を解決するための手段】
【０００３】
本明細書で開示されるのは、プロセッサ命令パイプラインにおいてＡＧＥＮハードウェアを選択的にバイパスするシステム及び方法である。他の有利な点の中で、プロセッサは、所定の命令セット内（すなわち、プログラム、アプリケーション又はアプレット等の実行可能コードの所定のインスタンス等）のロード／ストア命令毎の有効アドレスを計算するために、そのＡＧＥＮステージを使用する時間及び電力を無駄にせず、むしろ、それらのロード／ストア命令の識別されたサブセットに対してのみ計算する。他の技術的な利点として、処理時間及び電力消費の両方が低減される。
【０００４】
いくつかの実施形態では、本システム及び方法は、命令パイプライン内のＡＧＥＮステージの前のポイントにおいて、各ロード／ストア命令に対するＡＧＥＮ計算のための全ての入力が既知であるインスタンスを識別する。このような場合、ロード／ストア命令は、ＡＧＥＮステージをバイパスするようにルーティングされ、ＡＧＥＮ計算を発生させないが、命令パイプライン内の当該ポイントにおいて、少なくとも１つのＡＧＥＮ計算入力が既知でないロード／ストア命令は、ＡＧＥＮステージを介してルーティングされ、その結果、ＡＧＥＮステージは、それらのロード／ストア命令に対するＡＧＥＮ計算を依然として実行する。
【０００５】
本明細書で使用される「ＡＧＥＮ計算入力」という用語は、所定のロード／ストア命令が実際にＡＧＥＮステージを介してルーティングされた場合に、ＡＧＥＮステージが、そのロード／ストア命令の有効アドレスを計算するために使用する入力を指し、本システム及び方法によれば、全てのロード／ストア命令がそうであるわけではない。いくつかの例では、ＡＧＥＮ計算入力は、その入力が、定義によって変化する対象ではない一定値であることから、パイプライン内のプレＡＧＥＮステージポイント（pre-AGEN-stage point）において既知である。このタイプのロード／ストア命令の２つの例は、（ｉ）プログラムカウンタ（ＰＣ）相対（命令ポインタ（ＩＰ）相対とも言う）ロード／ストア命令、及び、（ｉｉ）変位のみ（即値−変位（immediate-displacement））ロード／ストア命令である。
【０００６】
他の例では、所定のＡＧＥＮ計算入力は、命令パイプライン内のプレＡＧＥＮステージポイントにおいて既知であるが、これは、その入力が、（例えば、１つ以上の他の命令の実行に起因して）変化し得る既知の値（例えば、レジスタに記憶されている）を有するためである。この第２のタイプのロード／ストア命令の一例は、スタックポインタ（ＳＰ）相対ロード／ストア命令である。この第２のタイプのロード／ストア命令に関して、本システム及び方法は、このような依存性を監視し、そのような依存性に対する依拠を無効にするイベント（関連するレジスタが後続の命令によって上書きされること等）が発生しない場合にのみ、これらのロード／ストア命令がＡＧＥＮステージを完全にバイパスすることを可能にする。このようなイベントが発生する場合、本システム及び方法の実施形態は、これらのロード／ストア命令にＡＧＥＮステージをバイパスさせることを「取り消し」、代わりに、ＡＧＥＮステージを介してこれらをルーティングする。これは、時間及び電力の観点でコストがかかるが、正確な実行を実現するために行われる。
【０００７】
実施形態では、ＡＧＥＮステージをバイパスするようにルーティングされるロード／ストア命令に関して、プロセッサは、これらのロード／ストア命令の有効アドレスを決定するために、例えば、ロード／ストアユニットによって実行されるロード／ストア命令のＡＧＥＮ計算入力（すなわち、そのロード／ストア命令の有効アドレス関連オペランド）の加算演算を実行する。これは、時間及び電力の観点でコストがかかるが、これらのコストは、ＡＧＥＮステージによって処理されるこれらの同じロード／ストア命令によってかかるコストよりも少ない。いくつかの実施形態では、その加算演算に対する準備は、１つ以上のレジスタ参照（例えば、ＳＰレジスタ（ｒＳＰ）への参照）を、参照されたレジスタに現在記憶されている整数値に変換することによって、命令パイプライン内のプレＡＧＥＮステージポイントにおいて行われ、加算演算を実行する後のステージ（例えば、ロード／ストアユニット）が、その同じ値を取得するためにそのレジスタにアクセスする必要がなくなる。
【０００８】
本システム及び方法は、従来の実装が、有効アドレスの計算のために、それぞれのＡＧＥＮステージを介して、全てのロード／ストア命令をルーティングするという技術的な問題を含む、従来のプロセッサの実装によるいくつかの技術的な問題に対処する。これは、時間及び電力の両方を無駄にする。本システム及び方法は、ＡＧＥＮステージに先行するプロセッサパイプラインステージのデジタルロジックおいて、ロード／ストア命令毎に有効アドレスが既知であるかどうかを判別することによって、この問題に対する技術的解決策を表す。既知でない場合、ロード／ストア命令は、ＡＧＥＮステージを介してルーティングされる。既知である場合、ロード／ストア命令は、ＡＧＥＮステージをバイパスするようにルーティングされる。
【０００９】
一実施形態は、１つ以上のプロセッサによって実行される方法の形態を取る。方法は、プロセッサのＡＧＥＮバイパス判別ユニット（ＡＢＤＵ）においてロード／ストア命令を受信することを含む。ロード／ストア命令の有効アドレスがＡＢＤＵにおいて既知でない場合、ロード／ストア命令は、プロセッサのＡＧＥＮステージを介してルーティングされる。しかしながら、ロード／ストア命令の有効アドレスがＡＢＤＵにおいて既知である場合、ロード／ストア命令は、ＡＧＥＮステージをバイパスするようにルーティングされる。別の実施形態は、命令を有する集積回路の形態を取り、命令が実行されると、集積回路、又は、集積回路が組み込まれ、他の方法で搭載され、集積回路が通信可能に接続されたシステムに方法を実行させる。別の実施形態は、プロセッサと、プロセッサによって実行されるとシステムに方法を実行させる命令を含む非一時的なデータストレージと、を有するシステムの形態を取る。
【００１０】
別の実施形態は、ＡＧＥＮステージ及びＡＢＤＵを含むプロセッサの形態を取る。ＡＢＤＵは、ロード／ストア命令を受信する。ロード／ストア命令の有効アドレスがＡＢＤＵにおいて既知でない場合、ロード／ストア命令は、ＡＧＥＮステージを介してルーティングされる。しかしながら、ロード／ストア命令の有効アドレスがＡＢＤＵにおいて既知である場合、ロード／ストア命令は、ＡＧＥＮステージをバイパスするようにルーティングされる。
【００１１】
別の実施形態は、先行する段落において記載された要素を少なくとも有するプロセッサを製造するように集積回路製造システムによって実行可能な命令を含む、非一時的なコンピュータ可読記憶媒体の形態を取る。少なくとも１つのそのような実施形態では、命令は、プロセッサのレジスタ転送レベル（ＲＴＬ）表現を含む。少なくとも１つの他のそのような実施形態では、命令は、プロセッサを表す高レベル設計言語（ＨＤＬ）命令を含む。
【００１２】
実施形態では、ロード／ストア命令の有効アドレスは、ロード／ストア命令がＰＣ相対ロード／ストア命令及び／又は変位のみロード／ストア命令である場合に、ＡＢＤＵにおいて既知である。他の例では、ロード／ストア命令の有効アドレスは、（ｉ）ロード／ストア命令がＳＰ相対ロード／ストア命令であり、及び、（ｉｉ）ＡＢＤＵがｒＳＰの現在値を有する場合に、ＡＢＤＵにおいて既知である。
【００１３】
実施形態では、ＡＧＥＮステージは、ロード／ストア命令の複数の有効アドレス入力を使用して、ロード／ストア命令の有効アドレスを計算する。ロード／ストア命令の有効アドレスは、ロード／ストア命令の有効アドレス入力のうち少なくとも１つがＡＢＤＵにおいて既知でない場合に、ＡＢＤＵにおいて既知でない。ロード／ストア命令の有効アドレスは、ロード／ストア命令の有効アドレス入力の各々がＡＢＤＵにおいて既知である場合に、ＡＢＤＵにおいて既知である。
【００１４】
実施形態では、プロセッサは、ロード／ストアユニットと、ＡＢＤＵ及びロード／ストアユニットを通信可能に結合し、ＡＧＥＮステージを含む第１の回路経路と、ＡＢＤＵ及びロード／ストアユニットを通信可能に結合し、ＡＧＥＮステージをバイパスする第２の回路経路と、を含む。ＡＧＥＮステージを介してロード／ストア命令をルーティングすることは、第１の回路経路を介してロード／ストア命令をルーティングすることを含む。ＡＧＥＮステージをバイパスするようにロード／ストア命令をルーティングすることは、第２の回路経路を介してロード／ストア命令をルーティングすることを含む。別の実施形態では、第２の回路経路を介してロード／ストア命令をルーティングすることは、ロード／ストア命令に対応するバイパス適格フラグをアサートすることを含む。ロード／ストアユニットは、対応するバイパス適格フラグがアサートされたロード／ストア命令を処理し、対応するバイパス適格フラグがクリアされたロード／ストア命令を破棄する。
【００１５】
実施形態では、方法は、クロックサイクル毎に第１の整数のロード／ストア命令に関してプロセッサによって実行される。方法は更に、第２の回路経路を介してルーティングされるロード／ストア命令毎に、対応するバイパス適格フラグをアサートすることを含む。ロード／ストアユニットは、対応するバイパス適格フラグがアサートされたロード／ストア命令を処理し、対応するバイパス適格フラグがクリアされたロード／ストア命令を破棄する。そのような実施形態は、クロックサイクル毎に最大で第２の整数のロード／ストア命令について対応するバイパス適格フラグをアサートすることを含み、第２の整数は、第１の整数よりも小さい。そのような実施形態では、ロード／ストアユニットは、第２の整数のロード／ストアパイプラインを厳密に有する。
【００１６】
実施形態では、ロード／ストアユニットは、第２の回路経路を介してロード／ストアユニットによって受信されたロード／ストア命令の有効アドレスを計算する。実施形態では、ロード／ストア命令は、レジスタへの参照を含み、方法は、ロード／ストア命令における参照を、レジスタに現在記憶されている値と置き換えることを含む。
【００１７】
上記の実施形態の例の更なる変形及び置換が本明細書で説明される。更に、本明細書で説明されるそのような変形及び置換は、そのような変形及び置換が、本明細書で主に説明される実施形態のタイプとは独立して、任意の方法の実施形態に関して、任意のシステムの実施形態に関して、任意の集積回路製造命令コンピュータ可読記憶媒体の実施形態に関して実施可能であることに、明確に留意されたい。更に、そのような実施形態の柔軟性及び相互適用性は、そのような実施形態を記述及び／又は特徴付ける何れかの僅かに異なる言語（例えば、処理、方法、ステップ、機能、機能のセット等）の使用に関わらずに存在する。
【００１８】
以下の図面に関連して例として提示される以下の説明から、更なる詳細な理解を得ることができ、図面において、同様の符号は、同様の要素に関連して図面を通して使用される。
【図面の簡単な説明】
【００１９】
【図１】実施形態による、例示的なプロセッサを含む例示的なプロセッサベースデバイスの簡略図である。
【図２】実施形態による、図１のプロセッサの第１の例示的な命令パイプラインの部分的な図である。
【図３】実施形態による、図１のプロセッサの第２の例示的な命令パイプラインの部分的な図である。
【図４】実施形態による、図１のプロセッサの第３の例示的な命令パイプラインの部分的な図である。
【図５】実施形態による、例示的なＡＧＥＮバイパス判別ユニット（ＡＢＤＵ）が、第４の例示的な命令パイプラインの復号ユニットのディスパッチステージに存在する、図１のプロセッサの第４の例示的な命令パイプラインの部分的な図である。
【図６】実施形態による、第１の例示的な回路構成における図５のＡＢＤＵの簡略図である。
【図７】実施形態による、第２の例示的な回路構成における図５のＡＢＤＵの簡略図である。
【図８】実施形態による、ＡＢＤＵにおける経路選択ロジックの実質的な実施例を表すフローチャートである。
【図９】実施形態による、アドレス生成ハードウェアを選択的にバイパスする例示的な方法のフローチャートである。
【図１０】実施形態による、図９の方法の一部として実行されるロード／ストア命令ルーティング選択の例示的な実施例のフローチャートである。
【発明を実施するための形態】
【００２０】
本開示の原理の理解を促進する目的のために、以下に説明される図面に示される実施形態を参照する。本明細書で開示される実施形態は、網羅的であることを意図しておらず、又は、以下の詳細な説明において開示される正確な形態に限定することを意図していない。むしろ、実施形態は、当業者がそれらの教示を利用することができるように選択され、説明される。したがって、本開示の範囲の限定は意図されない。
【００２１】
本開示の全体を通じて、及び、請求項におけるいくつかの例において、第１の、第２の、第３の、及び、第４の等の数値的な修飾語句は、様々な構成要素、様々な識別子等のデータ、及び／又は、他の要素に関して使用される。そのような使用は、要素の特定の順序又は必要とされる順序を表し又は指示することを意図していない。むしろ、この数値的な用語は、参照されている要素を識別し、その要素を他の要素と区別することにおいて読者を補助するために使用され、特定の順序を主張するものとして狭義に解釈されるべきではない。
【００２２】
図１は、プロセッサ１０２と、データストレージ１０４と、通信インタフェース１０６と、オプションのユーザインタフェース１０８と、を含むプロセッサベースデバイス１００の実施例を表しており、これらの全てがバス構造１１０を介して通信可能に相互接続されている。プロセッサベースデバイス１００は、図１の説明が一例であるように、異なる構成要素を含んでもよい。例として、プロセッサベースデバイス１００は、コンピュータ、パーソナルコンピュータ、デスクトップコンピュータ、ワークステーション、ラップトップコンピュータ、タブレット、携帯電話、スマートフォン、ウェアラブル、携帯情報端末（ＰＤＡ）、セットトップボックス、ゲームコンソール、ゲーミングコントローラ、サーバ、プリンタ、又は、他の任意のプロセッサベースデバイスであってもよい。
【００２３】
プロセッサ１０２は、マイクロプロセッサ、中央処理装置（ＣＰＵ）、グラフィックスプロセシングユニット（ＧＰＵ）、１つ以上のプロセッサコア、又は、命令パイプラインを実装し、本システム及び方法の１つ以上の実施形態を具体化し、及び／又は、実行するように備えられ及び構成された他のタイプのプロセッサであってもよい。データストレージ１０４は、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリ、磁気ディスク、及び／又は、光学ディスク等の任意のタイプの非一時的なデータストレージであってもよい。
【００２４】
実施形態では、通信インタフェース１０６は、イーサネット（登録商標）等の有線通信プロトコルに従って、１つ以上の他のプロセッサベースデバイス及び／又は他の通信エンティティと通信するための有線通信インタフェースを含む。実施形態では、有線通信インタフェースの代わりに又は有線通信インタフェースに加えて、通信インタフェース１０６は、ＷｉＦｉ（登録商標）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＬＴＥ、ＷｉＭＡＸ（登録商標）、及び／又は、ＣＤＭＡ等の１つ以上の無線通信プロトコルを使用して、１つ以上のデバイス及び／又は他のエンティティと無線で通信するための対応するハードウェア及びファームウェア等を含む無線通信インタフェースを含む。
【００２５】
ユーザインタフェース１０８は、プロセッサベースデバイス１００の全ての例に存在しない。例えば、プロセッサベースデバイス１００がネットワークサーバである例では、ユーザインタフェースが存在しない場合があり得る。ユーザインタフェース１０８が存在する例では、１つ以上の入力デバイス及び／又は１つ以上の出力デバイスを含む。１つ以上の入力デバイスは、タッチスクリーン、キーボード、マウス、及び／又は、マイクロフォン等を含んでもよく、１つ以上の出力デバイスは、ディスプレイ（例えば、タッチスクリーン）、１つ以上のスピーカ、及び／又は、１つ以上のインジケータ発光ダイオード（ＬＥＤ）等を含んでもよい。
【００２６】
図２は、プロセッサ１０２がＡＢＤＵ２００及びＡＧＥＮステージ２０４を含むように表されている、プロセッサ１０２の命令パイプラインの一例の部分的な図である。いくつかの実施形態では、ＡＢＤＵ２００は、決定論的デジタルロジック回路として実装されるが、他の実施形態では、１つ以上の状態機械の組み合わせとしてのＡＢＤＵ２００の実装が使用される。実施形態では、ＡＧＥＮステージ２０４は、決定論的デジタルロジック回路として実装され、本技術分野において既知であるように、１つ以上の算術ロジックユニット（ＡＬＵ）、及び／又は、１つ以上のそれ自体のレジスタ等を含んでもよく、線形算術計算及び／又はモジュロ算術計算等の１つ以上のタイプの算術計算を使用して有効アドレスを計算する。
【００２７】
図２に示すように、ＡＢＤＵ２００は、通信経路２０８を介してロード／ストア命令２０６を受信し、ロード／ストア命令２０６を、本明細書でＡＧＥＮ経路２０１と呼ばれる第１の回路経路、又は、本明細書でＡＧＥＮバイパス経路２０２と呼ばれる第２の回路経路の何れかを介してルーティングする。ＡＧＥＮ経路２０１及びＡＧＥＮバイパス経路２０２の両方は、ワイヤ、接点、ピン、フリップフロップ等の回路要素、及び／又は、電気信号を通信するための他のハードウェア等のハードウェアを含む回路経路である。
【００２８】
ＡＧＥＮ経路２０１は、ＡＧＥＮステージ２０４を含む。ＡＧＥＮバイパス経路２０２は、ＡＧＥＮステージ２０４を含まない。ＡＢＤＵ２００は、ロード／ストア命令２０６の有効アドレスがＡＢＤＵ２００において既知でない場合に、ＡＧＥＮ経路２０１を介してロード／ストア命令２０６をルーティングし、ロード／ストア命令２０６の有効アドレスがＡＢＤＵ２００において既知である場合に、ＡＧＥＮバイパス経路２０２を介してロード／ストア命令２０６をルーティングする。実施形態では、ロード／ストア命令２０６の有効アドレスは、当該有効アドレスを計算するための入力のうち少なくとも１つがＡＢＤＵ２００において既知でない場合に、ＡＢＤＵ２００において既知でないのに対し、ロード／ストア命令２０６の有効アドレスは、当該有効アドレスを計算するための入力の各々がＡＢＤＵ２００において既知である場合に、ＡＢＤＵ２００において既知である。ＡＢＤＵ２００は、ロード／ストア命令２０６の有効アドレスを実際に計算する必要がない。
【００２９】
図３は、ロード／ストアユニット３００及びＬ１データキャッシュ３０２を更に含む、プロセッサ１０２の命令パイプラインの別の例を表す。ＡＧＥＮ経路２０１及びＡＧＥＮバイパス経路２０２の両方は、ＡＢＤＵ２００とロード／ストアユニット３００との間に延在し、ロード／ストアユニット３００は、ＡＧＥＮ経路２０１及びＡＧＥＮバイパス経路２０２を介してロード／ストア命令を受信し、データ経路３０４，３０６を介して、それらのロード／ストア命令をＬ１データキャッシュ３０２に処理する。Ｌ１データキャッシュ３０２は、Ｌ２データキャッシュ（図示省略）とインタフェースする。実施形態では、ロード／ストアユニット３００は、ＡＧＥＮバイパス経路２０２を介して受信されたロード／ストア命令を処理する場合に、ロード／ストア命令の２つ以上のオペランドに対して加算演算を実行することによって、ロード／ストア命令の有効アドレスを決定する。
【００３０】
図４は、プロセッサ１０２の命令パイプラインが、ＡＢＤＵ２００が存在する復号ユニット４０２と、ＡＧＥＮステージ２０４が存在するＥＸＳＣ４０４と、図３のロード／ストアユニット３００の機能を実質的に実行するロード／ストア及びデータキャッシュユニット（ＬＳＤＣ）４０６と、を含むが、Ｌ１データキャッシュ３０２が、組み込まれた要素である実施形態を表す。ＥＸＳＣ４０４は、物理レジスタファイル（ＰＲＦ）４１０と、本明細書でレジスタ値上流リレー（ＲＶＵＲ）４１２と呼ばれるデジタルロジックデバイスと、を含み、レジスタ値上流リレー（ＲＶＵＲ）４１２は、ＲＶＵＲ４１２がＰＲＦ４１０から読み出した１つ以上のレジスタ値４１４を、データリンク４１６を介してＡＢＤＵ２００に通信する。ＬＳＤＣ４０６は、ＡＧＥＮ経路２０１と、ＡＧＥＮバイパス経路２０２と、Ｌ１データキャッシュ３０２とインタフェースするセレクタ回路４１８を含む。
【００３１】
図５は、ディスパッチステージ５００が復号ユニット４０２内に存在し、ＡＢＤＵ２００を含む実施形態を表す。データリンク５０１，５０２は、ＡＧＥＮ経路２０１及びＡＧＥＮバイパス経路２０２の各々の初期部分を形成する。
【００３２】
図６は、ＡＢＤＵ２００が、経路選択ロジック回路６００及び経路切り替え回路６０２を含む例を表す。経路選択ロジック回路６００への入力は、ロード／ストア命令２０６及びレジスタ値４１４であり、経路選択ロジック回路６００の出力は、（データリンク６０４を介した）ロード／ストア命令２０６及び切り替え制御信号６０６である。経路選択ロジック回路６００は、経路選択ロジック６０１を実装する。経路切り替え回路６０２の入力は、（データリンク６０４を介した）ロード／ストア命令２０６及び切り替え制御信号６０６であり、経路切り替え回路６０２の出力は、データリンク５０１又はデータリンク５０２上のロード／ストア命令２０６である。
【００３３】
経路切り替え回路６０２は、切り替えポイント６０７と、切り替え可能データリンク６０８と、データリンク５０１の初期端における接点６１０と、データリンク５０２の初期端における接点６１２と、を含む。図６は、ＡＧＥＮ経路２０１を介してロード／ストア命令２０６をルーティングするＡＢＤＵ２００を表す。切り替え可能データリンク６０８は、切り替えポイント６０７から接点６１０まで延在し、その結果、経路切り替え回路６０２（したがって、ＡＢＤＵ２００）は、ロード／ストア命令２０６をデータリンク５０１上に出力する。
【００３４】
図７は、ＡＢＤＵ２００がＡＧＥＮバイパス経路２０２を介してロード／ストア命令２０６をルーティングする例を表す。切り替え可能データリンク６０８は、切り替えポイント６０７から接点６１２まで延在し、その結果、経路切り替え回路６０２（したがって、ＡＢＤＵ２００）は、ロード／ストア命令２０６をデータリンク５０２上に出力する。
【００３５】
図８は、経路選択ロジック回路６００によって実装される経路選択ロジック６０１の実施例を表す。ステップ８０２において、経路選択ロジック回路６００は、ロード／ストア命令２０６を、プロセッサ１０２の命令パイプラインのフェッチステージ（図示省略）又は他のステージから受信する。
【００３６】
ステップ８０４において、経路選択ロジック回路６００は、ロード／ストア命令２０６の有効アドレス入力の全てが既知であるかどうかを判別する。ステップ８０４において、ロード／ストア命令２０６の有効アドレス入力の全てが既知でないと判別された場合、ステップ８０６において、経路選択ロジック回路６００は、切り替え制御信号６０６を、論理バイナリ０として実現可能なＡＧＥＮに設定する。ただし、ステップ８０４において、ロード／ストア命令２０６の有効アドレス入力の全てが既知であると判別された場合、ステップ８０８において、経路選択ロジック回路６００は、切り替え制御信号６０６を、論理バイナリ１として実現可能なＡＧＥＮ−ＢＹＰＡＳＳに設定する。ステップ８１０において、経路選択ロジック回路６００は、ロード／ストア命令２０６及び（ＡＧＥＮ又はＡＧＥＮ−ＢＹＰＡＳＳの何れかに設定された）切り替え制御信号６０６の両方を出力する。
【００３７】
実施形態では、ロード／ストア命令２０６が１つ以上のレジスタへの１つ以上の参照を含む場合、経路選択ロジック６０１は、ステップ８０４において、ロード／ストア命令２０６の有効アドレス入力の全てが既知であると判別するための必要条件として、ＡＢＤＵ２００が各レジスタの現在値を有することを含む。一例では、ＡＢＤＵ２００は、レジスタ値４１４のこのような値をＲＶＵＲ４１２から取得する。
【００３８】
経路選択ロジック回路６００が切り替え制御信号６０６をＡＧＥＮに設定すると、経路切り替え回路６０２は、これに応じて、切り替え可能データリンク６０８を、図６に示す位置に配置し、ＡＢＤＵ２００は、ＡＧＥＮ経路２０１を介してロード／ストア命令２０６をルーティングする。或いは、経路選択ロジック回路６００が切り替え制御信号６０６をＡＧＥＮ−ＢＹＰＡＳＳに設定すると、経路切り替え回路６０２は、これに応じて、切り替え可能データリンク６０８を、図７に示す位置に配置し、ＡＢＤＵ２００は、ＡＧＥＮバイパス経路２０２を介してロード／ストア命令２０６をルーティングする。
【００３９】
図９は、ＡＧＥＮハードウェアを選択的にバイパスする例示的な方法９００のフローチャートである。特に断らない限り、方法９００は、図４に示す命令パイプラインを参照して以下に説明される。例えば、図３のロード／ストアユニット３００と対照的に、図４のロード／ストアユニット（すなわち、ＬＳＤＣ４０６）が参照される。いくつかの実施形態では、ＡＢＤＵ２００は、クロックサイクル毎に単一のロード／ストア命令に関して方法９００を実行し、他の実施形態では、ＡＢＤＵ２００は、クロックサイクル毎に複数のロード／ストア命令に関して方法９００を実行する。
【００４０】
ステップ９０２において、ＡＢＤＵ２００は、ロード／ストア命令２０６を、プロセッサ１０２の命令パイプラインのフェッチステージ（図示省略）又は他のステージから受信する。実施形態では、ロード／ストア命令２０６は、ＡＧＥＮ経路２０１を介してロード／ストア命令２０６をルーティングするか、ＡＧＥＮバイパス経路２０２を介してロード／ストア命令２０６をルーティングするか、を決定するために、ＡＢＤＵ２００が必要とする全ての情報を含む。また、方法９００は、ステップ９０６及び９０８を含む。方法９００を実行するＡＢＤＵ２００の任意の例では、ＡＢＤＵ２００は、図９において決定ボックス９０４で示すように、ロード／ストア命令２０６の有効アドレスがＡＢＤＵ２００において既知であるかどうかに応じて、ステップ９０６又はステップ９０８を実行する。
【００４１】
ロード／ストア命令２０６の有効アドレスがＡＢＤＵ２００において既知でない場合、ステップ９０６において、ＡＢＤＵ２００は、ＡＧＥＮステージ２０４を介してロード／ストア命令２０６をルーティングする。実施形態では、ロード／ストア命令２０６の有効アドレスは、ロード／ストア命令２０６の有効アドレスを計算するための入力のうち少なくとも１つがＡＢＤＵ２００において既知でない場合、ＡＢＤＵ２００において既知でない。実施形態では、ＡＢＤＵ２００は、ＡＧＥＮ経路２０１を介してロード／ストア命令２０６をルーティングすることによって、ステップ９０６を実行し、ＡＧＥＮ経路２０１は、実施形態では、ＥＸＳＣ４０４をトラバースし、そこに存在するＡＧＥＮステージ２０４を含む。
【００４２】
しかし、ロード／ストア命令２０６の有効アドレスがＡＢＤＵ２００において既知である場合、ステップ９０８において、ＡＢＤＵ２００は、ＡＧＥＮステージ２０４をバイパスするようにロード／ストア命令２０６をルーティングする。実施形態では、ロード／ストア命令２０６の有効アドレスは、ロード／ストア命令２０６の有効アドレスを計算するための入力の各々がＡＢＤＵ２００において既知である場合、ＡＢＤＵ２００において既知である。実施形態では、ＡＢＤＵ２００は、ＡＧＥＮバイパス経路２０２を介してロード／ストア命令２０６をルーティングすることによって、ステップ９０８を実行する。いくつかの実施形態では、ＡＧＥＮバイパス経路２０２は、ＥＸＳＣ４０４（ＡＧＥＮステージ２０４ではない）をトラバースする。他の実施形態では、ＡＧＥＮバイパス経路２０２は、ＥＸＳＣ４０４をトラバースしない。
【００４３】
様々な異なる実施形態では、決定ボックス９０４によって表されるように、ＡＢＤＵ２００が、所定のロード／ストア命令に関してステップ９０６又はステップ９０８を選択的に実行するいくつかの異なる方法及びケースが存在する。それらのオプションのいくつかを説明するために、プロセッサ１０２は、何れのロード／ストア命令２０６が以下の構造を有するかに従って、「ベース＋インデックス＋オフセット」アドレス指定スキームを使用する（以下の構造は、本開示の目的のために単純化されており、他のフィールドが存在してもよいし、他のアドレス指定スキームが使用されてもよい）。
【表１】
2021535478.tif 000003
これは、（ｉ）「ｂａｓｅ」フィールド内の値又は「ｂａｓｅ」フィールド内で識別されたレジスタに記憶された値、（ｉｉ）「ｉｎｄｅｘ」フィールド内の値又は「ｉｎｄｅｘ」フィールド内で識別されたレジスタに記憶された値、及び、（ｉｉｉ）「ｏｆｆｓｅｔ」フィールド内の値、の合計であるアドレスでメモリに記憶された値を、「ｒｅｇ１」と命名されたレジスタに「ロードする」命令である（演算コードである）。
【００４４】
実施形態では、ＡＢＤＵ２００は、ロード／ストア命令２０６のｂａｓｅ、ｉｎｄｅｘ及びｏｆｆｓｅｔフィールドの各々についてＡＢＤＵ２００が現在値を有するかどうかを判別することによって、ロード／ストア命令２０６に関してステップ９０６又はステップ９０８を選択的に実行する。（他の場所に記憶された値への参照又はポインタとは対照的に）ｏｆｆｓｅｔフィールドが定数を含む典型的なケースでは、ＡＢＤＵ２００は、オフセットが既知であるとみなすことができる。ベース及びインデックスについて、ＡＢＤＵ２００は、それらが定数（すなわち、０又は別の整数）であるか、ＡＢＤＵが現在値を有するレジスタ（ＰＣ、ｒＳＰ、他のレジスタ等）への参照をそれらが含む場合に、それらが既知であるとみなすことができる。ＡＢＤＵ２００が参照レジスタの現在値を有する１つの方法は、ＲＶＵＲ４１２が、参照レジスタに記憶されたデータのコピーをＡＢＤＵ２００に直近に中継したことであってもよい。
【００４５】
実施形態では、ロード／ストア命令２０６の有効アドレスは、ロード／ストア命令２０６がＰＣ相対ロード／ストア命令である場合に、ＡＢＤＵ２００において既知である。ＰＣ（命令ポインタ（ＩＰ）とも呼ばれる）は、プロセッサ１０２によって実行される（場合によっては、次に実行される）現在の命令のアドレスを記憶するレジスタである。上記の例示的な命令構造をＰＣ相対命令に変更すると、以下に示す命令になる。
【表２】
2021535478.tif 000004
この命令の有効アドレスは、ＰＣレジスタ内の値及び命令のｏｆｆｓｅｔフィールド内の値の合計である（場合によっては、ｉｎｄｅｘフィールドに非ゼロ定数が存在し、これも合計に含まれる）。
【００４６】
実施形態では、ロード／ストア命令２０６の有効アドレスは、ロード／ストア命令２０６が、ここに示す命令等の変位のみロード／ストア命令である場合に、ＡＢＤＵ２００において既知である。
【表３】
2021535478.tif 000005
この命令の有効アドレスは、ｏｆｆｓｅｔフィールド内の値である。場合によっては、非ゼロ定数が、ｂａｓｅ及びｉｎｄｅｘフィールドのうち一方又は両方に存在することがある。この場合、有効アドレスは、ｂａｓｅ、ｉｎｄｅｘ及びｏｆｆｓｅｔフィールドの合計であるが、ｏｆｆｓｅｔフィールド内の値と等しくない。
【００４７】
実施形態では、ロード／ストア命令２０６の有効アドレスは、（ｉ）ロード／ストア命令２０６がＳＰ相対ロード／ストア命令であり、（ｉｉ）ＡＢＤＵ２００がｒＳＰの現在値を有する場合に、ＡＢＤＵ２００において既知であり、ｒＳＰは、スタック（呼び出しスタック、実行スタック、プログラムスタック、制御スタック、ランタイムスタック、及び、マシンスタック等とも呼ばれる）の現在の最上位のメモリアドレスを保持するレジスタである。例示的なＳＰ相対ロード／ストア命令を以下に示す。
【表４】
2021535478.tif 000006
この命令の有効アドレスは、ｒＳＰ内の値、及び、ｏｆｆｓｅｔフィールド内の値（及び、ｉｎｄｅｘフィールドに存在する非ゼロ値）の合計である。
【００４８】
図１０は、図９の決定ボックス９０４によって表されるロード／ストア命令ルーティング選択の一実施例のフローチャートである。ステップ１００２において、ＡＢＤＵ２００は、ロード／ストア命令２０６を構文解析する。この実施例では、ロード／ストア命令２０６は、以下の形式を有する。
【表５】
2021535478.tif 000007
「ｌ／ｓ」は、演算コードの「ロード」又は「ストア」を表す。
【００４９】
ステップ１００４において、ＡＢＤＵ２００は、ロード／ストア命令２０６のｂａｓｅフィールドがＰＣへの参照を含むかどうか、すなわち、ロード／ストア命令２０６がＰＣ相対ロード／ストア命令であるかどうかを判別する。ステップ１００４において、ロード／ストア命令２０６のｂａｓｅフィールドがＰＣへの参照を含むと判別された場合、ステップ９０８において、ＡＢＤＵ２００は、ＡＧＥＮステージ２０４をバイパスするようにロード／ストア命令をルーティングする。しかしながら、ステップ１００４において、ロード／ストア命令２０６のｂａｓｅフィールドがＰＣへの参照を含まないと判別された場合、制御はステップ１００６に進み、ＡＢＤＵ２００は、ロード／ストア命令２０６のｂａｓｅフィールド及びｉｎｄｅｘフィールドの両方がゼロに等しいかどうか、すなわち、ロード／ストア命令２０６が変位のみロード／ストア命令であるかどうかを判別する。実施形態では、ステップ１００４は、ＡＢＤＵ２００がＰＣの現在値を有するという第２の必要条件を含む。
【００５０】
ステップ１００６において、ロード／ストア命令２０６のｂａｓｅフィールド及びｉｎｄｅｘフィールドの両方がゼロに等しいと判別された場合、ステップ９０８において、ＡＢＤＵ２００は、ＡＧＥＮステージ２０４をバイパスするようにロード／ストア命令をルーティングする。しかしながら、ステップ１００６において、ロード／ストア命令２０６のｂａｓｅフィールド及びｉｎｄｅｘフィールドの両方がゼロに等しくない、すなわち、これらの２つのフィールドのうち少なくとも１つがゼロに等しくないと判別された場合、制御はステップ１００８に進み、ＡＢＤＵ２００は、ロード／ストア命令２０６のｂａｓｅフィールドがｒＳＰへの参照を含むかどうか、すなわち、ロード／ストア命令２０６がＳＰ相対ロード／ストア命令であるかどうかを判別する。
【００５１】
ステップ１００８において、ロード／ストア命令２０６のｂａｓｅフィールドがｒＳＰへの参照を含むと判別された場合、ステップ９０８において、ＡＢＤＵ２００は、ＡＧＥＮステージ２０４をバイパスするようにロード／ストア命令２０６をルーティングする。しかしながら、ステップ１００８において、ロード／ストア命令２０６のｂａｓｅフィールドがｒＳＰへの参照を含まないと判別された場合、ステップ９０６において、ＡＢＤＵ２００は、ＡＧＥＮステージ２０４を介してロード／ストア命令２０６をルーティングする。実施形態では、ステップ１００８は、ＡＢＤＵ２００がｒＳＰの現在値を有するという第２の必要条件を含む。いくつかの実施形態では、ステップ１００４，１００６，１００８は、３つの異なるケースの論理和（ＯＲ）としてロード／ストア命令２０６に対して同時に実行される。
【００５２】
いくつかの実施形態では、プロセッサ１０２は、ＡＧＥＮバイパス経路２０２の制御フローを実装する。そのような実施形態では、ＡＧＥＮバイパス経路２０２は、ＡＢＤＵ２００がその経路を介してルーティングするロード／ストア命令を搬送するだけでなく、それらのロード／ストア命令に関連し、それらのロード／ストア命令と並列に通信される制御情報を搬送するシグナリング経路も含む。いくつかの実施形態では、この制御情報は、ＡＧＥＮバイパス経路２０２を介してルーティングされる各ロード／ストア命令と並列にその経路に沿って送信される「バイパス適格フラグ」と呼ばれるバイナリフラグの形態を取る。アサートされた（すなわち、１に等しくセットされた）バイパス適格フラグは、対応するロード／ストア命令がＡＧＥＮステージ２０４をバイパスするのに適格であることを示す一方で、クリアされた（すなわち、０に等しくリセットされた）バイパス適格フラグは、対応するロード／ストア命令がＡＧＥＮステージ２０４をバイパスするのに適格でないことを示す。
【００５３】
そのような制御フローが実施される実施形態では、命令パイプラインの１つ以上の構成要素は、（ｉ）ＡＧＥＮバイパス経路２０２上にあり、それらのバイパス適格フラグをアサートさせるロード／ストア命令を処理し、（ｉｉ）ＡＧＥＮバイパス経路２０２上にあり、それらのバイパス適格フラグをクリアさせるロード／ストア命令を無視する。そのような構成要素は、ＬＳＤＣ４０６を含み、いくつかの実施形態では、ＥＸＳＣ４０４及び／又は１つ以上の他の構成要素も含む。
【００５４】
別の実施例では、そのような制御フローは採用されない。このケースでは、（ｉ）ＡＢＤＵ２００によってＡＧＥＮバイパス適格性について評価された各ロード／ストア命令２０６は、２つの経路のうち一方のみ、すなわち、ＡＧＥＮ経路２０１又はＡＧＥＮバイパス経路２０２の両方ではないが何れかを介してルーティングされ、（ｉｉ）ロード／ストア命令の比較的単純なタイプ（例えば、変位のみ）のみが、ＡＧＥＮステージ２０４をバイパスするのに適格である。制御フローは、このタイプの実施形態において実施されてもよいが、それらの比較的単純なロード／ストア命令のタイプがＡＧＥＮステージ２０４をバイパスするのに不適格にならないので、必要とされない。
【００５５】
いくつかの実施形態では、レジスタ依存（例えば、ｒＳＰ相対）アドレス指定によるロード／ストア命令は、ＡＧＥＮバイパスに対して適格である。少なくともいくつかのそのような実施形態では、制御フローは、ＡＧＥＮバイパス経路２０２を介してルーティングされる全てのロード／ストア命令が、そのバイパス適格フラグを最初にアサートさせるように実施される。命令がＡＧＥＮバイパスに対してもはや適格でないとプロセッサ１０２が判別した場合（例えば、命令が、無効なｒＳＰ値であるものに依存する場合）、プロセッサ１０２は、対応するバイパス適格フラグをクリアし、ＡＧＥＮ経路２０１を介してその命令をルーティングするために、その全体の進捗をバックトラックする。
【００５６】
いくつかの実施形態では、ＡＢＤＵ２００によってＡＧＥＮバイパス適格性に対して評価された全てのロード／ストア命令は、ＡＧＥＮバイパス経路２０２を介して送信される。ＡＢＤＵ２００によってＡＧＥＮバイパスに対して適格であると判別されたロード／ストア命令は、それらの対応するバイパス適格フラグをアサートさせ（及び、本開示の用語では、ＡＧＥＮバイパス経路２０２を介してルーティングされたとみなされる命令である）、全ての他のロード／ストア命令は、それらの対応するバイパス適格フラグがクリアされた状態でＡＧＥＮバイパス経路２０２に沿って送信され、したがって無視される。
【００５７】
実施形態では、１つ以上のレジスタ参照を含むロード／ストア命令のケースでは、例えば、そのロード／ストア命令が無効なレジスタ参照になったものを含むとプロセッサ１０２が後に判別した場合、プロセッサ１０２は、ＡＧＥＮバイパス経路２０２を介してルーティングされたロード／ストア命令に対応するバイパス適格フラグをクリアする。これが発生する１つの例は、プロセッサ１０２が、所定のロード／ストア命令によって参照されたレジスタに対する書き込み動作が保留中であると判別することである。別の例は、所定のロード／ストア命令に続く命令が、所定のロード／ストア命令によって参照されたレジスタに含まれる値を変更したとプロセッサ１０２が判別することである。
【００５８】
実施形態では、ＡＢＤＵ２００は、ロード／ストア命令２０６内のレジスタ参照を、参照されたレジスタに現在記憶されているデータ（例えば、整数）のコピーと置き換える。これは、レジスタ値（複数可）４１４からの情報を使用して、ＡＢＤＵ２００によって実行されてもよい。このように機能する実施形態では、このステップは、下流エンティティが、ＡＢＤＵ２００が既に有するデータを取得する時間及びエネルギーを費やす必要性を排除する。
【００５９】
いくつかの実施形態では、ＡＢＤＵ２００は、有効アドレスが所定のクロックサイクル内の複数のロード／ストア命令の各々について、ＡＢＤＵ２００において既知であるかどうかを評価し、それに応じて、ＡＧＥＮ経路２０１又はＡＧＥＮバイパス経路２０２の何れかを介して、評価されたロード／ストア命令の各々をルーティングする。場合によっては、ＡＢＤＵ２００は、所定のクロックサイクルにおいて、複数のロード／ストア命令を、ＡＧＥＮバイパス経路２０２を介してルーティングすることになる。任意の複数のロード／ストア命令は、並列にそのように評価されてもよく、そのようにルーティングされてもよい。実施形態では、最大で６個のロード／ストア命令が、クロックサイクル毎に並列にＡＢＤＵによって処理される。
【００６０】
いくつかの実施形態では、ＡＢＤＵ２００は、所定のクロックサイクルにおいてＡＧＥＮバイパス経路２０２を介してルーティングするロード／ストア命令の数を制限する。いくつかのそのようなケースでは、所定のクロックサイクルにおける上限は、ＬＳＤＣ４０６が有するロード／ストアパイプラインの数に等しい。よって、一例では、ＡＢＤＵ２００は、ＡＧＥＮバイパス経路２０２を介してクロックサイクル毎に最大で６個のロード／ストア命令をルーティングすることができるが、実際には、ＡＧＥＮバイパス経路２０２を介してクロックサイクル毎に３個を超えるロード／ストア命令をルーティングしない。これは、この実施例では、ＬＳＤＣ４０６は、３個のロード／ストアパイプラインしか有していないからである。
【００６１】
ＡＢＤＵ２００は、異なる実施形態では、いくつかの異なる方法でこの上限を実施する。いくつかの実施形態では、ＡＢＤＵ２００は、例えば、クロックサイクル毎のバイパス適格フラグの上限をアサートすることによって、クロックサイクル毎のロード／ストア命令の上限を、ＡＧＥＮバイパス経路２０２を介してルーティングする。他の実施形態では、ＡＢＤＵ２００は、ロード／ストア命令毎に第２の制御フラグを実装する。この第２の制御フラグは、本明細書でバイパス選択済みフラグと呼ばれ、ロード／ストア命令は、対応するバイパス適格フラグ及び対応するバイパス選択済みフラグの両方が依然としてアサートされる場合にのみ、例えばＬＳＤＣ４０６によって、ＡＧＥＮバイパス経路２０２上で処理される。２つのフラグオプションは、更なる柔軟性をもたらすが、リソースコストが発生し得る。
【００６２】
いくつかの例では、所定のクロックサイクル内にＡＧＥＮバイパス経路２０２を介してルーティングされた少なくとも２つのロード／ストア命令は、それらに関して無効にするイベントがまだ発生していないので、ＥＸＳＣ４０４をトラバースする場合に依然としてＡＧＥＮバイパス適格である。いくつかのそのような実施形態では、ＥＸＳＣ４０４は、ＡＧＥＮバイパス経路２０２上を進行するために、それらのまだ適格な命令のうち特定の１つ以上を選択し、その他を破棄する。ＥＸＳＣ４０４は、そのような選択をランダムに行ってもよく、又は、おそらく、（ＡＧＥＮバイパス経路２０２上で最初にルーティングされたロード／ストア命令を無効にする必要があることに伴うコストを引き起こす確率を低減させるために）１つ以上のレジスタに依存しないロード／ストア命令を優先にするようなポリシーを使用して行ってもよい。少なくともいくつかのそのような実施形態では、ＥＸＳＣ４０４は、その選択を追跡し、そのような決定を１つ以上の他の構成要素に通知する。ＡＧＥＮバイパス経路２０２上のロード／ストア命令がそのＡＧＥＮバイパス適格性を取り消された場合にはいつでもフルバックアウト戦略を実施する実施形態では、ＥＸＳＣ４０４は、ＡＢＤＵ２００及びフェッチユニット等の上流エンティティに通知して、関連するロード／ストア命令を代わりにＡＧＥＮ経路２０１を介してルーティングさせ、必要に応じてパイプラインをフラッシュさせる。
【００６３】
いくつかの実施形態では、ＡＢＤＵ２００が評価する全てのロード／ストア命令のコピーは、ＡＧＥＮ経路２０１及びＡＧＥＮバイパス経路２０２の両方に送信され、対応する制御フラグは、両方の経路内のエンティティに対して利用可能である。そのような実施形態では、本開示の用語では、所定のロード／ストア命令は、ＡＢＤＵ２００が対応するバイパス適格フラグを最初にクリアする場合、ＡＧＥＮ経路２０１を介してＡＢＤＵ２００によってルーティングされたとみなされ、或いは、ＡＢＤＵ２００が対応するバイパス適格フラグを最初にアサートする場合、ＡＧＥＮバイパス経路２０２を介してルーティングされたとみなされる。そのような実施形態では、プロセッサ１０２は、そのロード／ストア命令の有効アドレスを計算するようにＡＧＥＮステージ２０４に指示するために、時間内に対応するバイパス適格フラグをクリアすることが可能であることが多い点で、フルバックアウトオプションに対して効率を得ることができる。代わりに、ＡＧＥＮ経路２０１及びＡＧＥＮバイパス経路２０２に対して別の制御経路が実装されてもよい。
【００６４】
実施形態では、復号ユニット４０２及びＥＸＳＣ４０４は、復号ユニット４０２の制限された数のスケジューラトークンの管理に関して協働する。例示的な実施形態では、ＥＸＳＣ４０４が、所定のロード／ストア命令のＡＧＥＮバイパス適格性を取り消すと決定した場合、ＥＸＳＣ４０４は、これに応じて、ＡＧＥＮ経路２０１内のスケジューラエントリを割り当てる。そのような発生に備えて、いくつかの実施形態では、復号ユニット４０２は、これが発生すると事前に推定し、これにしたがって、ＡＢＤＵ２００が対応するバイパス適格フラグを最初にアサートするか最初にクリアするかに関わらず、各ロード／ストア命令にスケジューラトークン（例えば、ＩＤ）を割り当てる。よって、ＥＸＳＣ４０４が所定の命令のＡＧＥＮバイパス適格性を取り消す場合、その命令は、ＡＧＥＮステージ２０４によって処理されるように既に準備されている。代わりに、ＥＸＳＣ４０４が、所定のロード／ストア命令がそのＡＧＥＮバイパス適格性を維持することを可能にする場合、ＥＸＳＣ４０４は、以前に割り当てられた対応するスケジューラトークンを復号ユニット４０２に戻す。
【００６５】
実施形態では、ＥＸＳＣ４０４とＬＳＤＣ４０６との間のトークン交換も行われる。それらのケースでは、トークンは、ＬＳＤＣ４０６内の様々なロード／ストアパイプラインの現在の容量に関連する。ＬＳＤＣ４０６がそれらのロード／ストアパイプラインから処理する命令を選択すると、ＬＳＤＣ４０６は、（ＥＸＳＣ４０４がその命令に割り当てた）対応するロード／ストアパイプライントークンを再使用のためにＥＸＳＣ４０４に戻すことによって、ＥＸＳＣ４０４に通知する。
【００６６】
様々な実施形態は、プロセッサ１０２の説明された何れかの実施形態を製造するために、集積回路製造システムによって実行可能な命令を含む非一時的なコンピュータ可読記憶媒体の形態を取る。コンピュータ可読記憶媒体に含まれる命令は、ＲＴＬ表現、アナログＨＤＬ（ＡＨＤＬ）、Ｖｅｒｉｌｏｇ  ＨＤＬ、ＳｙｓｔｅｍＶｅｒｉｌｏｇ  ＨＤＬ、超高速集積回路（ＶＨＳＩＣ）ハードウェア記述言語（ＶＨＤＬ）等の言語におけるＨＤＬ（ハードウェア記述コードとも呼ばれる）命令、例えばＣ、Ｃ＋＋、ＳｙｓｔｅｍＣ、Ｓｉｍｕｌｉｎｋ、ＭＡＴＬＡＢ（登録商標）等の高レベル若しくはモデリング言語のコード、例えばグラフィックスデータベースシステムＩＩ（ＧＤＳＩＩ）コード等の物理レイアウトコード、及び／又は、１つ以上の他のタイプの命令の形式を取ってもよいし、それらを含んでもよい。
【図１】
2021535478.tif 000008
【図２】
2021535478.tif 000009
【図３】
2021535478.tif 000010
【図４】
2021535478.tif 000011
【図５】
2021535478.tif 000012
【図６】
2021535478.tif 000013
【図７】
2021535478.tif 000014
【図８】
2021535478.tif 000015
【図９】
2021535478.tif 000016
【図１０】
2021535478.tif 000017
【手続補正書】
【提出日】令和3年4月20日(2021.4.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
１つ以上のプロセッサによって実行される方法であって、
プロセッサのアドレス生成（ＡＧＥＮ）バイパス判別ユニット（ＡＢＤＵ）へのロード／ストア命令を受信することと、
前記ロード／ストア命令の有効アドレスが前記ＡＢＤＵにおいて既知でない場合に、前記プロセッサのＡＧＥＮステージを介して前記ロード／ストア命令をルーティングすることと、
前記ロード／ストア命令の前記有効アドレスが前記ＡＢＤＵにおいて既知である場合に、前記ＡＧＥＮステージをバイパスするように前記ロード／ストア命令をルーティングすることであって、前記ロード／ストア命令の前記有効アドレスは、前記ロード／ストア命令の複数の有効アドレス入力の各々が前記ＡＢＤＵにおいて既知である場合に、前記ＡＢＤＵにおいて既知である、ことと、を含む、
方法。
【請求項２】
前記ロード／ストア命令の前記有効アドレスは、前記ロード／ストア命令がプログラムカウンタ（ＰＣ）相対ロード／ストア命令又は変位のみロード／ストア命令である場合に、前記ＡＢＤＵにおいて既知である、
請求項１の方法。
【請求項３】
前記ロード／ストア命令の前記有効アドレスは、前記ロード／ストア命令がスタックポインタ（ＳＰ）相対ロード／ストア命令であり、前記ＡＢＤＵがＳＰレジスタ（ｒＳＰ）の現在値を有する場合に、前記ＡＢＤＵにおいて既知である、
請求項１の方法。
【請求項４】
前記ＡＧＥＮステージは、前記ロード／ストア命令の複数の有効アドレス入力を使用して、前記ロード／ストア命令の前記有効アドレスを計算するように構成されており、
前記ロード／ストア命令の前記有効アドレスは、前記ロード／ストア命令の前記有効アドレス入力のうち少なくとも１つが前記ＡＢＤＵにおいて既知でない場合に、前記ＡＢＤＵにおいて既知でない、
請求項１の方法。
【請求項５】
前記プロセッサは、
ロード／ストアユニットと、
前記ＡＢＤＵ及び前記ロード／ストアユニットを通信可能に結合し、前記ＡＧＥＮステージを含む第１の回路経路と、
前記ＡＢＤＵ及び前記ロード／ストアユニットを通信可能に結合し、前記ＡＧＥＮステージをバイパスする第２の回路経路と、を備え、
前記ＡＧＥＮステージを介して前記ロード／ストア命令をルーティングすることは、前記第１の回路経路を介して前記ロード／ストア命令をルーティングすることを含み、
前記ＡＧＥＮステージをバイパスするように前記ロード／ストア命令をルーティングすることは、前記第２の回路経路を介して前記ロード／ストア命令をルーティングすることを含む、
請求項１の方法。
【請求項６】
前記第２の回路経路を介して前記ロード／ストア命令をルーティングすることは、前記ロード／ストア命令に対応するバイパス適格フラグをアサートすることを含み、
前記ロード／ストアユニットは、
前記対応するバイパス適格フラグがアサートされたロード／ストア命令を処理することと、
前記対応するバイパス適格フラグがクリアされたロード／ストア命令を破棄することと、
を行うように構成されている、
請求項５の方法。
【請求項７】
アドレス生成（ＡＧＥＮ）ステージと、
ＡＧＥＮバイパス判別ユニット（ＡＢＤＵ）と、備え、
前記ＡＢＤＵは、
ロード／ストア命令を受信することと、
前記ロード／ストア命令の有効アドレスが前記ＡＢＤＵにおいて既知でない場合に、前記ＡＧＥＮステージを介して前記ロード／ストア命令をルーティングすることと、
前記ロード／ストア命令の前記有効アドレスが前記ＡＢＤＵにおいて既知である場合に、前記ＡＧＥＮステージをバイパスするように前記ロード／ストア命令をルーティングすることであって、前記ロード／ストア命令の前記有効アドレスは、前記ロード／ストア命令の複数の有効アドレス入力の各々が前記ＡＢＤＵにおいて既知である場合に、前記ＡＢＤＵにおいて既知である、ことと、
を行うように構成されている、
プロセッサ。
【請求項８】
前記ロード／ストア命令の前記有効アドレスは、前記ロード／ストア命令がプログラムカウンタ（ＰＣ）相対ロード／ストア命令又は変位のみロード／ストア命令である場合に、前記ＡＢＤＵにおいて既知である、
請求項７のプロセッサ。
【請求項９】
前記ロード／ストア命令の前記有効アドレスは、前記ロード／ストア命令がスタックポインタ（ＳＰ）相対ロード／ストア命令であり、前記ＡＢＤＵがＳＰレジスタ（ｒＳＰ）の現在値を有する場合に、前記ＡＢＤＵにおいて既知である、
請求項７のプロセッサ。
【請求項１０】
前記ＡＧＥＮステージは、前記ロード／ストア命令の複数の有効アドレス入力を使用して、前記ロード／ストア命令の前記有効アドレスを計算するように構成されており、
前記ロード／ストア命令の前記有効アドレスは、前記ロード／ストア命令の前記有効アドレス入力のうち少なくとも１つが前記ＡＢＤＵにおいて既知でない場合に、前記ＡＢＤＵにおいて既知でない、
請求項７のプロセッサ。
【請求項１１】
ロード／ストアユニットと、
前記ＡＢＤＵ及び前記ロード／ストアユニットを通信可能に結合し、前記ＡＧＥＮステージを含む第１の回路経路と、
前記ＡＢＤＵ及び前記ロード／ストアユニットを通信可能に結合し、前記ＡＧＥＮステージをバイパスする第２の回路経路と、をさらに備え、
前記ＡＢＤＵは、
前記第１の回路経路を介して、前記ＡＧＥＮステージを介して前記ロード／ストア命令をルーティングすることと、
前記第２の回路経路を介して、前記ＡＧＥＮステージをバイパスするように前記ロード／ストア命令をルーティングすることと、
を行うように構成されている、
請求項７のプロセッサ。
【請求項１２】
前記ＡＢＤＵは、前記第２の回路経路を介して前記ロード／ストア命令をルーティングする場合に、前記ロード／ストア命令に対応するバイパス適格フラグをアサートするように構成されており、
前記ロード／ストアユニットは、
前記対応するバイパス適格フラグがアサートされたロード／ストア命令を処理することと、
前記対応するバイパス適格フラグがクリアされたロード／ストア命令を破棄することと、
を行うように構成されている、
請求項１１のプロセッサ。
【請求項１３】
前記第１の回路経路又は前記第２の回路経路を介して、クロックサイクル毎に第１の整数のロード／ストア命令の各々をルーティングすることと、
前記第２の回路経路を介してルーティングされたロード／ストア命令の各々について、対応するバイパス適格フラグをアサートすることと、
を行うようにさらに構成されており、
前記ロード／ストアユニットは、
前記対応するバイパス適格フラグがアサートされたロード／ストア命令を処理することと、
前記対応するバイパス適格フラグがクリアされたロード／ストア命令を破棄することと、
を行うように構成されている、
請求項１１のプロセッサ。
【国際調査報告】
2021535478.tif 000018
2021535478.tif 000019