JP7498166B2 - プロセッサ命令パイプラインにおいてアドレス生成ハードウェアを選択的にバイパスするシステム及び方法 - Google Patents

プロセッサ命令パイプラインにおいてアドレス生成ハードウェアを選択的にバイパスするシステム及び方法 Download PDF

Info

Publication number
JP7498166B2
JP7498166B2 JP2021509745A JP2021509745A JP7498166B2 JP 7498166 B2 JP7498166 B2 JP 7498166B2 JP 2021509745 A JP2021509745 A JP 2021509745A JP 2021509745 A JP2021509745 A JP 2021509745A JP 7498166 B2 JP7498166 B2 JP 7498166B2
Authority
JP
Japan
Prior art keywords
load
store instruction
abdu
store
agen
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2021509745A
Other languages
English (en)
Other versions
JP2021535478A (ja
Inventor
コセフ アンドレイ
フライシュマン ジェイ
トロエステル カイ
シー. チュウ ジョニー
ジェイ. ウィルケンス ティム
マーケットカー ネイル
ダブリュー. ロング マイケル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2021535478A publication Critical patent/JP2021535478A/ja
Application granted granted Critical
Publication of JP7498166B2 publication Critical patent/JP7498166B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • G06F9/3557Indexed addressing using program counter as base address
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

現在のプロセッサの実装では、命令は、機能ユニット(すなわち、デジタルロジック回路)のセットである命令パイプラインによって実行され、機能ユニットのセットは、パイプラインのフロントエンドと総称される分岐予測ユニット及びフェッチユニットと、ディスパッチステージを含む復号ユニットと、実行/スケジューラユニット(EXSC)と、レベル1(L1)データキャッシュとインタフェースし、次いで、レベル2(L2)データキャッシュとインタフェースするロード/ストアユニットと、を含む。命令パイプラインは、ロード/ストア命令を含む複数のタイプの命令を処理し、複数のタイプの各々は、メモリアドレスからデータを取得するためのロード命令、又は、メモリアドレスにデータを書き込むためのストア命令の何れかである。ロード/ストア命令がロード又はストアするメモリアドレスは、ロード/ストア命令の有効アドレスとして知られており、アドレス指定モードを使用してロード/ストア命令において指定される。
EXSCは、命令パイプラインによって処理されるロード/ストア命令毎の有効アドレスを計算する、アドレス生成(AGEN)ステージ(AGENハードウェア、AGENユニット(AGU)、及び/又は、アドレス計算ユニット(ACU)等)として知られるデジタルロジック回路を含む。AGEN計算の各々は、少なくとも時間及び電力の観点でコストを招く。次に、各ロード/ストア命令は、EXSCからロード/ストアユニットに進み、ロード/ストアユニットは、AGENステージによって計算された有効アドレスを使用して、ロード/ストア命令を実行する。AGENステージにおいてロード/ストア命令毎に有効アドレスを計算することによって、現在のプロセッサは、命令パイプライン内のAGENステージの前のポイントで有効アドレスを計算するための全ての入力が既知であるロード/ストア命令について、有効アドレスを計算する時間及び電力の両方を無駄にする。
本明細書で開示されるのは、プロセッサ命令パイプラインにおいてAGENハードウェアを選択的にバイパスするシステム及び方法である。他の有利な点の中で、プロセッサは、所定の命令セット内(すなわち、プログラム、アプリケーション又はアプレット等の実行可能コードの所定のインスタンス等)のロード/ストア命令毎の有効アドレスを計算するために、そのAGENステージを使用する時間及び電力を無駄にせず、むしろ、それらのロード/ストア命令の識別されたサブセットに対してのみ計算する。他の技術的な利点として、処理時間及び電力消費の両方が低減される。
いくつかの実施形態では、本システム及び方法は、命令パイプライン内のAGENステージの前のポイントにおいて、各ロード/ストア命令に対するAGEN計算のための全ての入力が既知であるインスタンスを識別する。このような場合、ロード/ストア命令は、AGENステージをバイパスするようにルーティングされ、AGEN計算を発生させないが、命令パイプライン内の当該ポイントにおいて、少なくとも1つのAGEN計算入力が既知でないロード/ストア命令は、AGENステージを介してルーティングされ、その結果、AGENステージは、それらのロード/ストア命令に対するAGEN計算を依然として実行する。
本明細書で使用される「AGEN計算入力」という用語は、所定のロード/ストア命令が実際にAGENステージを介してルーティングされた場合に、AGENステージが、そのロード/ストア命令の有効アドレスを計算するために使用する入力を指し、本システム及び方法によれば、全てのロード/ストア命令がそうであるわけではない。いくつかの例では、AGEN計算入力は、その入力が、定義によって変化する対象ではない一定値であることから、パイプライン内のプレAGENステージポイント(pre-AGEN-stage point)において既知である。このタイプのロード/ストア命令の2つの例は、(i)プログラムカウンタ(PC)相対(命令ポインタ(IP)相対とも言う)ロード/ストア命令、及び、(ii)変位のみ(即値-変位(immediate-displacement))ロード/ストア命令である。
他の例では、所定のAGEN計算入力は、命令パイプライン内のプレAGENステージポイントにおいて既知であるが、これは、その入力が、(例えば、1つ以上の他の命令の実行に起因して)変化し得る既知の値(例えば、レジスタに記憶されている)を有するためである。この第2のタイプのロード/ストア命令の一例は、スタックポインタ(SP)相対ロード/ストア命令である。この第2のタイプのロード/ストア命令に関して、本システム及び方法は、このような依存性を監視し、そのような依存性に対する依拠を無効にするイベント(関連するレジスタが後続の命令によって上書きされること等)が発生しない場合にのみ、これらのロード/ストア命令がAGENステージを完全にバイパスすることを可能にする。このようなイベントが発生する場合、本システム及び方法の実施形態は、これらのロード/ストア命令にAGENステージをバイパスさせることを「取り消し」、代わりに、AGENステージを介してこれらをルーティングする。これは、時間及び電力の観点でコストがかかるが、正確な実行を実現するために行われる。
実施形態では、AGENステージをバイパスするようにルーティングされるロード/ストア命令に関して、プロセッサは、これらのロード/ストア命令の有効アドレスを決定するために、例えば、ロード/ストアユニットによって実行されるロード/ストア命令のAGEN計算入力(すなわち、そのロード/ストア命令の有効アドレス関連オペランド)の加算演算を実行する。これは、時間及び電力の観点でコストがかかるが、これらのコストは、AGENステージによって処理されるこれらの同じロード/ストア命令によってかかるコストよりも少ない。いくつかの実施形態では、その加算演算に対する準備は、1つ以上のレジスタ参照(例えば、SPレジスタ(rSP)への参照)を、参照されたレジスタに現在記憶されている整数値に変換することによって、命令パイプライン内のプレAGENステージポイントにおいて行われ、加算演算を実行する後のステージ(例えば、ロード/ストアユニット)が、その同じ値を取得するためにそのレジスタにアクセスする必要がなくなる。
本システム及び方法は、従来の実装が、有効アドレスの計算のために、それぞれのAGENステージを介して、全てのロード/ストア命令をルーティングするという技術的な問題を含む、従来のプロセッサの実装によるいくつかの技術的な問題に対処する。これは、時間及び電力の両方を無駄にする。本システム及び方法は、AGENステージに先行するプロセッサパイプラインステージのデジタルロジックおいて、ロード/ストア命令毎に有効アドレスが既知であるかどうかを判別することによって、この問題に対する技術的解決策を表す。既知でない場合、ロード/ストア命令は、AGENステージを介してルーティングされる。既知である場合、ロード/ストア命令は、AGENステージをバイパスするようにルーティングされる。
一実施形態は、1つ以上のプロセッサによって実行される方法の形態を取る。方法は、プロセッサのAGENバイパス判別ユニット(ABDU)においてロード/ストア命令を受信することを含む。ロード/ストア命令の有効アドレスがABDUにおいて既知でない場合、ロード/ストア命令は、プロセッサのAGENステージを介してルーティングされる。しかしながら、ロード/ストア命令の有効アドレスがABDUにおいて既知である場合、ロード/ストア命令は、AGENステージをバイパスするようにルーティングされる。別の実施形態は、命令を有する集積回路の形態を取り、命令が実行されると、集積回路、又は、集積回路が組み込まれ、他の方法で搭載され、集積回路が通信可能に接続されたシステムに方法を実行させる。別の実施形態は、プロセッサと、プロセッサによって実行されるとシステムに方法を実行させる命令を含む非一時的なデータストレージと、を有するシステムの形態を取る。
別の実施形態は、AGENステージ及びABDUを含むプロセッサの形態を取る。ABDUは、ロード/ストア命令を受信する。ロード/ストア命令の有効アドレスがABDUにおいて既知でない場合、ロード/ストア命令は、AGENステージを介してルーティングされる。しかしながら、ロード/ストア命令の有効アドレスがABDUにおいて既知である場合、ロード/ストア命令は、AGENステージをバイパスするようにルーティングされる。
別の実施形態は、先行する段落において記載された要素を少なくとも有するプロセッサを製造するように集積回路製造システムによって実行可能な命令を含む、非一時的なコンピュータ可読記憶媒体の形態を取る。少なくとも1つのそのような実施形態では、命令は、プロセッサのレジスタ転送レベル(RTL)表現を含む。少なくとも1つの他のそのような実施形態では、命令は、プロセッサを表す高レベル設計言語(HDL)命令を含む。
実施形態では、ロード/ストア命令の有効アドレスは、ロード/ストア命令がPC相対ロード/ストア命令及び/又は変位のみロード/ストア命令である場合に、ABDUにおいて既知である。他の例では、ロード/ストア命令の有効アドレスは、(i)ロード/ストア命令がSP相対ロード/ストア命令であり、及び、(ii)ABDUがrSPの現在値を有する場合に、ABDUにおいて既知である。
実施形態では、AGENステージは、ロード/ストア命令の複数の有効アドレス入力を使用して、ロード/ストア命令の有効アドレスを計算する。ロード/ストア命令の有効アドレスは、ロード/ストア命令の有効アドレス入力のうち少なくとも1つがABDUにおいて既知でない場合に、ABDUにおいて既知でない。ロード/ストア命令の有効アドレスは、ロード/ストア命令の有効アドレス入力の各々がABDUにおいて既知である場合に、ABDUにおいて既知である。
実施形態では、プロセッサは、ロード/ストアユニットと、ABDU及びロード/ストアユニットを通信可能に結合し、AGENステージを含む第1の回路経路と、ABDU及びロード/ストアユニットを通信可能に結合し、AGENステージをバイパスする第2の回路経路と、を含む。AGENステージを介してロード/ストア命令をルーティングすることは、第1の回路経路を介してロード/ストア命令をルーティングすることを含む。AGENステージをバイパスするようにロード/ストア命令をルーティングすることは、第2の回路経路を介してロード/ストア命令をルーティングすることを含む。別の実施形態では、第2の回路経路を介してロード/ストア命令をルーティングすることは、ロード/ストア命令に対応するバイパス適格フラグをアサートすることを含む。ロード/ストアユニットは、対応するバイパス適格フラグがアサートされたロード/ストア命令を処理し、対応するバイパス適格フラグがクリアされたロード/ストア命令を破棄する。
実施形態では、方法は、クロックサイクル毎に第1の整数のロード/ストア命令に関してプロセッサによって実行される。方法は更に、第2の回路経路を介してルーティングされるロード/ストア命令毎に、対応するバイパス適格フラグをアサートすることを含む。ロード/ストアユニットは、対応するバイパス適格フラグがアサートされたロード/ストア命令を処理し、対応するバイパス適格フラグがクリアされたロード/ストア命令を破棄する。そのような実施形態は、クロックサイクル毎に最大で第2の整数のロード/ストア命令について対応するバイパス適格フラグをアサートすることを含み、第2の整数は、第1の整数よりも小さい。そのような実施形態では、ロード/ストアユニットは、第2の整数のロード/ストアパイプラインを厳密に有する。
実施形態では、ロード/ストアユニットは、第2の回路経路を介してロード/ストアユニットによって受信されたロード/ストア命令の有効アドレスを計算する。実施形態では、ロード/ストア命令は、レジスタへの参照を含み、方法は、ロード/ストア命令における参照を、レジスタに現在記憶されている値と置き換えることを含む。
上記の実施形態の例の更なる変形及び置換が本明細書で説明される。更に、本明細書で説明されるそのような変形及び置換は、そのような変形及び置換が、本明細書で主に説明される実施形態のタイプとは独立して、任意の方法の実施形態に関して、任意のシステムの実施形態に関して、任意の集積回路製造命令コンピュータ可読記憶媒体の実施形態に関して実施可能であることに、明確に留意されたい。更に、そのような実施形態の柔軟性及び相互適用性は、そのような実施形態を記述及び/又は特徴付ける何れかの僅かに異なる言語(例えば、処理、方法、ステップ、機能、機能のセット等)の使用に関わらずに存在する。
以下の図面に関連して例として提示される以下の説明から、更なる詳細な理解を得ることができ、図面において、同様の符号は、同様の要素に関連して図面を通して使用される。
実施形態による、例示的なプロセッサを含む例示的なプロセッサベースデバイスの簡略図である。 実施形態による、図1のプロセッサの第1の例示的な命令パイプラインの部分的な図である。 実施形態による、図1のプロセッサの第2の例示的な命令パイプラインの部分的な図である。 実施形態による、図1のプロセッサの第3の例示的な命令パイプラインの部分的な図である。 実施形態による、例示的なAGENバイパス判別ユニット(ABDU)が、第4の例示的な命令パイプラインの復号ユニットのディスパッチステージに存在する、図1のプロセッサの第4の例示的な命令パイプラインの部分的な図である。 実施形態による、第1の例示的な回路構成における図5のABDUの簡略図である。 実施形態による、第2の例示的な回路構成における図5のABDUの簡略図である。 実施形態による、ABDUにおける経路選択ロジックの実質的な実施例を表すフローチャートである。 実施形態による、アドレス生成ハードウェアを選択的にバイパスする例示的な方法のフローチャートである。 実施形態による、図9の方法の一部として実行されるロード/ストア命令ルーティング選択の例示的な実施例のフローチャートである。
本開示の原理の理解を促進する目的のために、以下に説明される図面に示される実施形態を参照する。本明細書で開示される実施形態は、網羅的であることを意図しておらず、又は、以下の詳細な説明において開示される正確な形態に限定することを意図していない。むしろ、実施形態は、当業者がそれらの教示を利用することができるように選択され、説明される。したがって、本開示の範囲の限定は意図されない。
本開示の全体を通じて、及び、請求項におけるいくつかの例において、第1の、第2の、第3の、及び、第4の等の数値的な修飾語句は、様々な構成要素、様々な識別子等のデータ、及び/又は、他の要素に関して使用される。そのような使用は、要素の特定の順序又は必要とされる順序を表し又は指示することを意図していない。むしろ、この数値的な用語は、参照されている要素を識別し、その要素を他の要素と区別することにおいて読者を補助するために使用され、特定の順序を主張するものとして狭義に解釈されるべきではない。
図1は、プロセッサ102と、データストレージ104と、通信インタフェース106と、オプションのユーザインタフェース108と、を含むプロセッサベースデバイス100の実施例を表しており、これらの全てがバス構造110を介して通信可能に相互接続されている。プロセッサベースデバイス100は、図1の説明が一例であるように、異なる構成要素を含んでもよい。例として、プロセッサベースデバイス100は、コンピュータ、パーソナルコンピュータ、デスクトップコンピュータ、ワークステーション、ラップトップコンピュータ、タブレット、携帯電話、スマートフォン、ウェアラブル、携帯情報端末(PDA)、セットトップボックス、ゲームコンソール、ゲーミングコントローラ、サーバ、プリンタ、又は、他の任意のプロセッサベースデバイスであってもよい。
プロセッサ102は、マイクロプロセッサ、中央処理装置(CPU)、グラフィックスプロセシングユニット(GPU)、1つ以上のプロセッサコア、又は、命令パイプラインを実装し、本システム及び方法の1つ以上の実施形態を具体化し、及び/又は、実行するように備えられ及び構成された他のタイプのプロセッサであってもよい。データストレージ104は、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、フラッシュメモリ、磁気ディスク、及び/又は、光学ディスク等の任意のタイプの非一時的なデータストレージであってもよい。
実施形態では、通信インタフェース106は、イーサネット(登録商標)等の有線通信プロトコルに従って、1つ以上の他のプロセッサベースデバイス及び/又は他の通信エンティティと通信するための有線通信インタフェースを含む。実施形態では、有線通信インタフェースの代わりに又は有線通信インタフェースに加えて、通信インタフェース106は、WiFi(登録商標)、Bluetooth(登録商標)、LTE、WiMAX(登録商標)、及び/又は、CDMA等の1つ以上の無線通信プロトコルを使用して、1つ以上のデバイス及び/又は他のエンティティと無線で通信するための対応するハードウェア及びファームウェア等を含む無線通信インタフェースを含む。
ユーザインタフェース108は、プロセッサベースデバイス100の全ての例に存在しない。例えば、プロセッサベースデバイス100がネットワークサーバである例では、ユーザインタフェースが存在しない場合があり得る。ユーザインタフェース108が存在する例では、1つ以上の入力デバイス及び/又は1つ以上の出力デバイスを含む。1つ以上の入力デバイスは、タッチスクリーン、キーボード、マウス、及び/又は、マイクロフォン等を含んでもよく、1つ以上の出力デバイスは、ディスプレイ(例えば、タッチスクリーン)、1つ以上のスピーカ、及び/又は、1つ以上のインジケータ発光ダイオード(LED)等を含んでもよい。
図2は、プロセッサ102がABDU200及びAGENステージ204を含むように表されている、プロセッサ102の命令パイプラインの一例の部分的な図である。いくつかの実施形態では、ABDU200は、決定論的デジタルロジック回路として実装されるが、他の実施形態では、1つ以上の状態機械の組み合わせとしてのABDU200の実装が使用される。実施形態では、AGENステージ204は、決定論的デジタルロジック回路として実装され、本技術分野において既知であるように、1つ以上の算術ロジックユニット(ALU)、及び/又は、1つ以上のそれ自体のレジスタ等を含んでもよく、線形算術計算及び/又はモジュロ算術計算等の1つ以上のタイプの算術計算を使用して有効アドレスを計算する。
図2に示すように、ABDU200は、通信経路208を介してロード/ストア命令206を受信し、ロード/ストア命令206を、本明細書でAGEN経路201と呼ばれる第1の回路経路、又は、本明細書でAGENバイパス経路202と呼ばれる第2の回路経路の何れかを介してルーティングする。AGEN経路201及びAGENバイパス経路202の両方は、ワイヤ、接点、ピン、フリップフロップ等の回路要素、及び/又は、電気信号を通信するための他のハードウェア等のハードウェアを含む回路経路である。
AGEN経路201は、AGENステージ204を含む。AGENバイパス経路202は、AGENステージ204を含まない。ABDU200は、ロード/ストア命令206の有効アドレスがABDU200において既知でない場合に、AGEN経路201を介してロード/ストア命令206をルーティングし、ロード/ストア命令206の有効アドレスがABDU200において既知である場合に、AGENバイパス経路202を介してロード/ストア命令206をルーティングする。実施形態では、ロード/ストア命令206の有効アドレスは、当該有効アドレスを計算するための入力のうち少なくとも1つがABDU200において既知でない場合に、ABDU200において既知でないのに対し、ロード/ストア命令206の有効アドレスは、当該有効アドレスを計算するための入力の各々がABDU200において既知である場合に、ABDU200において既知である。ABDU200は、ロード/ストア命令206の有効アドレスを実際に計算する必要がない。
図3は、ロード/ストアユニット300及びL1データキャッシュ302を更に含む、プロセッサ102の命令パイプラインの別の例を表す。AGEN経路201及びAGENバイパス経路202の両方は、ABDU200とロード/ストアユニット300との間に延在し、ロード/ストアユニット300は、AGEN経路201及びAGENバイパス経路202を介してロード/ストア命令を受信し、データ経路304,306を介して、それらのロード/ストア命令をL1データキャッシュ302に処理する。L1データキャッシュ302は、L2データキャッシュ(図示省略)とインタフェースする。実施形態では、ロード/ストアユニット300は、AGENバイパス経路202を介して受信されたロード/ストア命令を処理する場合に、ロード/ストア命令の2つ以上のオペランドに対して加算演算を実行することによって、ロード/ストア命令の有効アドレスを決定する。
図4は、プロセッサ102の命令パイプラインが、ABDU200が存在する復号ユニット402と、AGENステージ204が存在するEXSC404と、図3のロード/ストアユニット300の機能を実質的に実行するロード/ストア及びデータキャッシュユニット(LSDC)406と、を含むが、L1データキャッシュ302が、組み込まれた要素である実施形態を表す。EXSC404は、物理レジスタファイル(PRF)410と、本明細書でレジスタ値上流リレー(RVUR)412と呼ばれるデジタルロジックデバイスと、を含み、レジスタ値上流リレー(RVUR)412は、RVUR412がPRF410から読み出した1つ以上のレジスタ値414を、データリンク416を介してABDU200に通信する。LSDC406は、AGEN経路201と、AGENバイパス経路202と、L1データキャッシュ302とインタフェースするセレクタ回路418を含む。
図5は、ディスパッチステージ500が復号ユニット402内に存在し、ABDU200を含む実施形態を表す。データリンク501,502は、AGEN経路201及びAGENバイパス経路202の各々の初期部分を形成する。
図6は、ABDU200が、経路選択ロジック回路600及び経路切り替え回路602を含む例を表す。経路選択ロジック回路600への入力は、ロード/ストア命令206及びレジスタ値414であり、経路選択ロジック回路600の出力は、(データリンク604を介した)ロード/ストア命令206及び切り替え制御信号606である。経路選択ロジック回路600は、経路選択ロジック601を実装する。経路切り替え回路602の入力は、(データリンク604を介した)ロード/ストア命令206及び切り替え制御信号606であり、経路切り替え回路602の出力は、データリンク501又はデータリンク502上のロード/ストア命令206である。
経路切り替え回路602は、切り替えポイント607と、切り替え可能データリンク608と、データリンク501の初期端における接点610と、データリンク502の初期端における接点612と、を含む。図6は、AGEN経路201を介してロード/ストア命令206をルーティングするABDU200を表す。切り替え可能データリンク608は、切り替えポイント607から接点610まで延在し、その結果、経路切り替え回路602(したがって、ABDU200)は、ロード/ストア命令206をデータリンク501上に出力する。
図7は、ABDU200がAGENバイパス経路202を介してロード/ストア命令206をルーティングする例を表す。切り替え可能データリンク608は、切り替えポイント607から接点612まで延在し、その結果、経路切り替え回路602(したがって、ABDU200)は、ロード/ストア命令206をデータリンク502上に出力する。
図8は、経路選択ロジック回路600によって実装される経路選択ロジック601の実施例を表す。ステップ802において、経路選択ロジック回路600は、ロード/ストア命令206を、プロセッサ102の命令パイプラインのフェッチステージ(図示省略)又は他のステージから受信する。
ステップ804において、経路選択ロジック回路600は、ロード/ストア命令206の有効アドレス入力の全てが既知であるかどうかを判別する。ステップ804において、ロード/ストア命令206の有効アドレス入力の全てが既知でないと判別された場合、ステップ806において、経路選択ロジック回路600は、切り替え制御信号606を、論理バイナリ0として実現可能なAGENに設定する。ただし、ステップ804において、ロード/ストア命令206の有効アドレス入力の全てが既知であると判別された場合、ステップ808において、経路選択ロジック回路600は、切り替え制御信号606を、論理バイナリ1として実現可能なAGEN-BYPASSに設定する。ステップ810において、経路選択ロジック回路600は、ロード/ストア命令206及び(AGEN又はAGEN-BYPASSの何れかに設定された)切り替え制御信号606の両方を出力する。
実施形態では、ロード/ストア命令206が1つ以上のレジスタへの1つ以上の参照を含む場合、経路選択ロジック601は、ステップ804において、ロード/ストア命令206の有効アドレス入力の全てが既知であると判別するための必要条件として、ABDU200が各レジスタの現在値を有することを含む。一例では、ABDU200は、レジスタ値414のこのような値をRVUR412から取得する。
経路選択ロジック回路600が切り替え制御信号606をAGENに設定すると、経路切り替え回路602は、これに応じて、切り替え可能データリンク608を、図6に示す位置に配置し、ABDU200は、AGEN経路201を介してロード/ストア命令206をルーティングする。或いは、経路選択ロジック回路600が切り替え制御信号606をAGEN-BYPASSに設定すると、経路切り替え回路602は、これに応じて、切り替え可能データリンク608を、図7に示す位置に配置し、ABDU200は、AGENバイパス経路202を介してロード/ストア命令206をルーティングする。
図9は、AGENハードウェアを選択的にバイパスする例示的な方法900のフローチャートである。特に断らない限り、方法900は、図4に示す命令パイプラインを参照して以下に説明される。例えば、図3のロード/ストアユニット300と対照的に、図4のロード/ストアユニット(すなわち、LSDC406)が参照される。いくつかの実施形態では、ABDU200は、クロックサイクル毎に単一のロード/ストア命令に関して方法900を実行し、他の実施形態では、ABDU200は、クロックサイクル毎に複数のロード/ストア命令に関して方法900を実行する。
ステップ902において、ABDU200は、ロード/ストア命令206を、プロセッサ102の命令パイプラインのフェッチステージ(図示省略)又は他のステージから受信する。実施形態では、ロード/ストア命令206は、AGEN経路201を介してロード/ストア命令206をルーティングするか、AGENバイパス経路202を介してロード/ストア命令206をルーティングするか、を決定するために、ABDU200が必要とする全ての情報を含む。また、方法900は、ステップ906及び908を含む。方法900を実行するABDU200の任意の例では、ABDU200は、図9において決定ボックス904で示すように、ロード/ストア命令206の有効アドレスがABDU200において既知であるかどうかに応じて、ステップ906又はステップ908を実行する。
ロード/ストア命令206の有効アドレスがABDU200において既知でない場合、ステップ906において、ABDU200は、AGENステージ204を介してロード/ストア命令206をルーティングする。実施形態では、ロード/ストア命令206の有効アドレスは、ロード/ストア命令206の有効アドレスを計算するための入力のうち少なくとも1つがABDU200において既知でない場合、ABDU200において既知でない。実施形態では、ABDU200は、AGEN経路201を介してロード/ストア命令206をルーティングすることによって、ステップ906を実行し、AGEN経路201は、実施形態では、EXSC404をトラバースし、そこに存在するAGENステージ204を含む。
しかし、ロード/ストア命令206の有効アドレスがABDU200において既知である場合、ステップ908において、ABDU200は、AGENステージ204をバイパスするようにロード/ストア命令206をルーティングする。実施形態では、ロード/ストア命令206の有効アドレスは、ロード/ストア命令206の有効アドレスを計算するための入力の各々がABDU200において既知である場合、ABDU200において既知である。実施形態では、ABDU200は、AGENバイパス経路202を介してロード/ストア命令206をルーティングすることによって、ステップ908を実行する。いくつかの実施形態では、AGENバイパス経路202は、EXSC404(AGENステージ204ではない)をトラバースする。他の実施形態では、AGENバイパス経路202は、EXSC404をトラバースしない。
様々な異なる実施形態では、決定ボックス904によって表されるように、ABDU200が、所定のロード/ストア命令に関してステップ906又はステップ908を選択的に実行するいくつかの異なる方法及びケースが存在する。それらのオプションのいくつかを説明するために、プロセッサ102は、何れのロード/ストア命令206が以下の構造を有するかに従って、「ベース+インデックス+オフセット」アドレス指定スキームを使用する(以下の構造は、本開示の目的のために単純化されており、他のフィールドが存在してもよいし、他のアドレス指定スキームが使用されてもよい)。
Figure 0007498166000001

これは、(i)「base」フィールド内の値又は「base」フィールド内で識別されたレジスタに記憶された値、(ii)「index」フィールド内の値又は「index」フィールド内で識別されたレジスタに記憶された値、及び、(iii)「offset」フィールド内の値、の合計であるアドレスでメモリに記憶された値を、「reg1」と命名されたレジスタに「ロードする」命令である(演算コードである)。
実施形態では、ABDU200は、ロード/ストア命令206のbase、index及びoffsetフィールドの各々についてABDU200が現在値を有するかどうかを判別することによって、ロード/ストア命令206に関してステップ906又はステップ908を選択的に実行する。(他の場所に記憶された値への参照又はポインタとは対照的に)offsetフィールドが定数を含む典型的なケースでは、ABDU200は、オフセットが既知であるとみなすことができる。ベース及びインデックスについて、ABDU200は、それらが定数(すなわち、0又は別の整数)であるか、ABDUが現在値を有するレジスタ(PC、rSP、他のレジスタ等)への参照をそれらが含む場合に、それらが既知であるとみなすことができる。ABDU200が参照レジスタの現在値を有する1つの方法は、RVUR412が、参照レジスタに記憶されたデータのコピーをABDU200に直近に中継したことであってもよい。
実施形態では、ロード/ストア命令206の有効アドレスは、ロード/ストア命令206がPC相対ロード/ストア命令である場合に、ABDU200において既知である。PC(命令ポインタ(IP)とも呼ばれる)は、プロセッサ102によって実行される(場合によっては、次に実行される)現在の命令のアドレスを記憶するレジスタである。上記の例示的な命令構造をPC相対命令に変更すると、以下に示す命令になる。
Figure 0007498166000002

この命令の有効アドレスは、PCレジスタ内の値及び命令のoffsetフィールド内の値の合計である(場合によっては、indexフィールドに非ゼロ定数が存在し、これも合計に含まれる)。
実施形態では、ロード/ストア命令206の有効アドレスは、ロード/ストア命令206が、ここに示す命令等の変位のみロード/ストア命令である場合に、ABDU200において既知である。
Figure 0007498166000003

この命令の有効アドレスは、offsetフィールド内の値である。場合によっては、非ゼロ定数が、base及びindexフィールドのうち一方又は両方に存在することがある。この場合、有効アドレスは、base、index及びoffsetフィールドの合計であるが、offsetフィールド内の値と等しくない。
実施形態では、ロード/ストア命令206の有効アドレスは、(i)ロード/ストア命令206がSP相対ロード/ストア命令であり、(ii)ABDU200がrSPの現在値を有する場合に、ABDU200において既知であり、rSPは、スタック(呼び出しスタック、実行スタック、プログラムスタック、制御スタック、ランタイムスタック、及び、マシンスタック等とも呼ばれる)の現在の最上位のメモリアドレスを保持するレジスタである。例示的なSP相対ロード/ストア命令を以下に示す。
Figure 0007498166000004

この命令の有効アドレスは、rSP内の値、及び、offsetフィールド内の値(及び、indexフィールドに存在する非ゼロ値)の合計である。
図10は、図9の決定ボックス904によって表されるロード/ストア命令ルーティング選択の一実施例のフローチャートである。ステップ1002において、ABDU200は、ロード/ストア命令206を構文解析する。この実施例では、ロード/ストア命令206は、以下の形式を有する。
Figure 0007498166000005

「l/s」は、演算コードの「ロード」又は「ストア」を表す。
ステップ1004において、ABDU200は、ロード/ストア命令206のbaseフィールドがPCへの参照を含むかどうか、すなわち、ロード/ストア命令206がPC相対ロード/ストア命令であるかどうかを判別する。ステップ1004において、ロード/ストア命令206のbaseフィールドがPCへの参照を含むと判別された場合、ステップ908において、ABDU200は、AGENステージ204をバイパスするようにロード/ストア命令をルーティングする。しかしながら、ステップ1004において、ロード/ストア命令206のbaseフィールドがPCへの参照を含まないと判別された場合、制御はステップ1006に進み、ABDU200は、ロード/ストア命令206のbaseフィールド及びindexフィールドの両方がゼロに等しいかどうか、すなわち、ロード/ストア命令206が変位のみロード/ストア命令であるかどうかを判別する。実施形態では、ステップ1004は、ABDU200がPCの現在値を有するという第2の必要条件を含む。
ステップ1006において、ロード/ストア命令206のbaseフィールド及びindexフィールドの両方がゼロに等しいと判別された場合、ステップ908において、ABDU200は、AGENステージ204をバイパスするようにロード/ストア命令をルーティングする。しかしながら、ステップ1006において、ロード/ストア命令206のbaseフィールド及びindexフィールドの両方がゼロに等しくない、すなわち、これらの2つのフィールドのうち少なくとも1つがゼロに等しくないと判別された場合、制御はステップ1008に進み、ABDU200は、ロード/ストア命令206のbaseフィールドがrSPへの参照を含むかどうか、すなわち、ロード/ストア命令206がSP相対ロード/ストア命令であるかどうかを判別する。
ステップ1008において、ロード/ストア命令206のbaseフィールドがrSPへの参照を含むと判別された場合、ステップ908において、ABDU200は、AGENステージ204をバイパスするようにロード/ストア命令206をルーティングする。しかしながら、ステップ1008において、ロード/ストア命令206のbaseフィールドがrSPへの参照を含まないと判別された場合、ステップ906において、ABDU200は、AGENステージ204を介してロード/ストア命令206をルーティングする。実施形態では、ステップ1008は、ABDU200がrSPの現在値を有するという第2の必要条件を含む。いくつかの実施形態では、ステップ1004,1006,1008は、3つの異なるケースの論理和(OR)としてロード/ストア命令206に対して同時に実行される。
いくつかの実施形態では、プロセッサ102は、AGENバイパス経路202の制御フローを実装する。そのような実施形態では、AGENバイパス経路202は、ABDU200がその経路を介してルーティングするロード/ストア命令を搬送するだけでなく、それらのロード/ストア命令に関連し、それらのロード/ストア命令と並列に通信される制御情報を搬送するシグナリング経路も含む。いくつかの実施形態では、この制御情報は、AGENバイパス経路202を介してルーティングされる各ロード/ストア命令と並列にその経路に沿って送信される「バイパス適格フラグ」と呼ばれるバイナリフラグの形態を取る。アサートされた(すなわち、1に等しくセットされた)バイパス適格フラグは、対応するロード/ストア命令がAGENステージ204をバイパスするのに適格であることを示す一方で、クリアされた(すなわち、0に等しくリセットされた)バイパス適格フラグは、対応するロード/ストア命令がAGENステージ204をバイパスするのに適格でないことを示す。
そのような制御フローが実施される実施形態では、命令パイプラインの1つ以上の構成要素は、(i)AGENバイパス経路202上にあり、それらのバイパス適格フラグをアサートさせるロード/ストア命令を処理し、(ii)AGENバイパス経路202上にあり、それらのバイパス適格フラグをクリアさせるロード/ストア命令を無視する。そのような構成要素は、LSDC406を含み、いくつかの実施形態では、EXSC404及び/又は1つ以上の他の構成要素も含む。
別の実施例では、そのような制御フローは採用されない。このケースでは、(i)ABDU200によってAGENバイパス適格性について評価された各ロード/ストア命令206は、2つの経路のうち一方のみ、すなわち、AGEN経路201又はAGENバイパス経路202の両方ではないが何れかを介してルーティングされ、(ii)ロード/ストア命令の比較的単純なタイプ(例えば、変位のみ)のみが、AGENステージ204をバイパスするのに適格である。制御フローは、このタイプの実施形態において実施されてもよいが、それらの比較的単純なロード/ストア命令のタイプがAGENステージ204をバイパスするのに不適格にならないので、必要とされない。
いくつかの実施形態では、レジスタ依存(例えば、rSP相対)アドレス指定によるロード/ストア命令は、AGENバイパスに対して適格である。少なくともいくつかのそのような実施形態では、制御フローは、AGENバイパス経路202を介してルーティングされる全てのロード/ストア命令が、そのバイパス適格フラグを最初にアサートさせるように実施される。命令がAGENバイパスに対してもはや適格でないとプロセッサ102が判別した場合(例えば、命令が、無効なrSP値であるものに依存する場合)、プロセッサ102は、対応するバイパス適格フラグをクリアし、AGEN経路201を介してその命令をルーティングするために、その全体の進捗をバックトラックする。
いくつかの実施形態では、ABDU200によってAGENバイパス適格性に対して評価された全てのロード/ストア命令は、AGENバイパス経路202を介して送信される。ABDU200によってAGENバイパスに対して適格であると判別されたロード/ストア命令は、それらの対応するバイパス適格フラグをアサートさせ(及び、本開示の用語では、AGENバイパス経路202を介してルーティングされたとみなされる命令である)、全ての他のロード/ストア命令は、それらの対応するバイパス適格フラグがクリアされた状態でAGENバイパス経路202に沿って送信され、したがって無視される。
実施形態では、1つ以上のレジスタ参照を含むロード/ストア命令のケースでは、例えば、そのロード/ストア命令が無効なレジスタ参照になったものを含むとプロセッサ102が後に判別した場合、プロセッサ102は、AGENバイパス経路202を介してルーティングされたロード/ストア命令に対応するバイパス適格フラグをクリアする。これが発生する1つの例は、プロセッサ102が、所定のロード/ストア命令によって参照されたレジスタに対する書き込み動作が保留中であると判別することである。別の例は、所定のロード/ストア命令に続く命令が、所定のロード/ストア命令によって参照されたレジスタに含まれる値を変更したとプロセッサ102が判別することである。
実施形態では、ABDU200は、ロード/ストア命令206内のレジスタ参照を、参照されたレジスタに現在記憶されているデータ(例えば、整数)のコピーと置き換える。これは、レジスタ値(複数可)414からの情報を使用して、ABDU200によって実行されてもよい。このように機能する実施形態では、このステップは、下流エンティティが、ABDU200が既に有するデータを取得する時間及びエネルギーを費やす必要性を排除する。
いくつかの実施形態では、ABDU200は、有効アドレスが所定のクロックサイクル内の複数のロード/ストア命令の各々について、ABDU200において既知であるかどうかを評価し、それに応じて、AGEN経路201又はAGENバイパス経路202の何れかを介して、評価されたロード/ストア命令の各々をルーティングする。場合によっては、ABDU200は、所定のクロックサイクルにおいて、複数のロード/ストア命令を、AGENバイパス経路202を介してルーティングすることになる。任意の複数のロード/ストア命令は、並列にそのように評価されてもよく、そのようにルーティングされてもよい。実施形態では、最大で6個のロード/ストア命令が、クロックサイクル毎に並列にABDUによって処理される。
いくつかの実施形態では、ABDU200は、所定のクロックサイクルにおいてAGENバイパス経路202を介してルーティングするロード/ストア命令の数を制限する。いくつかのそのようなケースでは、所定のクロックサイクルにおける上限は、LSDC406が有するロード/ストアパイプラインの数に等しい。よって、一例では、ABDU200は、AGENバイパス経路202を介してクロックサイクル毎に最大で6個のロード/ストア命令をルーティングすることができるが、実際には、AGENバイパス経路202を介してクロックサイクル毎に3個を超えるロード/ストア命令をルーティングしない。これは、この実施例では、LSDC406は、3個のロード/ストアパイプラインしか有していないからである。
ABDU200は、異なる実施形態では、いくつかの異なる方法でこの上限を実施する。いくつかの実施形態では、ABDU200は、例えば、クロックサイクル毎のバイパス適格フラグの上限をアサートすることによって、クロックサイクル毎のロード/ストア命令の上限を、AGENバイパス経路202を介してルーティングする。他の実施形態では、ABDU200は、ロード/ストア命令毎に第2の制御フラグを実装する。この第2の制御フラグは、本明細書でバイパス選択済みフラグと呼ばれ、ロード/ストア命令は、対応するバイパス適格フラグ及び対応するバイパス選択済みフラグの両方が依然としてアサートされる場合にのみ、例えばLSDC406によって、AGENバイパス経路202上で処理される。2つのフラグオプションは、更なる柔軟性をもたらすが、リソースコストが発生し得る。
いくつかの例では、所定のクロックサイクル内にAGENバイパス経路202を介してルーティングされた少なくとも2つのロード/ストア命令は、それらに関して無効にするイベントがまだ発生していないので、EXSC404をトラバースする場合に依然としてAGENバイパス適格である。いくつかのそのような実施形態では、EXSC404は、AGENバイパス経路202上を進行するために、それらのまだ適格な命令のうち特定の1つ以上を選択し、その他を破棄する。EXSC404は、そのような選択をランダムに行ってもよく、又は、おそらく、(AGENバイパス経路202上で最初にルーティングされたロード/ストア命令を無効にする必要があることに伴うコストを引き起こす確率を低減させるために)1つ以上のレジスタに依存しないロード/ストア命令を優先にするようなポリシーを使用して行ってもよい。少なくともいくつかのそのような実施形態では、EXSC404は、その選択を追跡し、そのような決定を1つ以上の他の構成要素に通知する。AGENバイパス経路202上のロード/ストア命令がそのAGENバイパス適格性を取り消された場合にはいつでもフルバックアウト戦略を実施する実施形態では、EXSC404は、ABDU200及びフェッチユニット等の上流エンティティに通知して、関連するロード/ストア命令を代わりにAGEN経路201を介してルーティングさせ、必要に応じてパイプラインをフラッシュさせる。
いくつかの実施形態では、ABDU200が評価する全てのロード/ストア命令のコピーは、AGEN経路201及びAGENバイパス経路202の両方に送信され、対応する制御フラグは、両方の経路内のエンティティに対して利用可能である。そのような実施形態では、本開示の用語では、所定のロード/ストア命令は、ABDU200が対応するバイパス適格フラグを最初にクリアする場合、AGEN経路201を介してABDU200によってルーティングされたとみなされ、或いは、ABDU200が対応するバイパス適格フラグを最初にアサートする場合、AGENバイパス経路202を介してルーティングされたとみなされる。そのような実施形態では、プロセッサ102は、そのロード/ストア命令の有効アドレスを計算するようにAGENステージ204に指示するために、時間内に対応するバイパス適格フラグをクリアすることが可能であることが多い点で、フルバックアウトオプションに対して効率を得ることができる。代わりに、AGEN経路201及びAGENバイパス経路202に対して別の制御経路が実装されてもよい。
実施形態では、復号ユニット402及びEXSC404は、復号ユニット402の制限された数のスケジューラトークンの管理に関して協働する。例示的な実施形態では、EXSC404が、所定のロード/ストア命令のAGENバイパス適格性を取り消すと決定した場合、EXSC404は、これに応じて、AGEN経路201内のスケジューラエントリを割り当てる。そのような発生に備えて、いくつかの実施形態では、復号ユニット402は、これが発生すると事前に推定し、これにしたがって、ABDU200が対応するバイパス適格フラグを最初にアサートするか最初にクリアするかに関わらず、各ロード/ストア命令にスケジューラトークン(例えば、ID)を割り当てる。よって、EXSC404が所定の命令のAGENバイパス適格性を取り消す場合、その命令は、AGENステージ204によって処理されるように既に準備されている。代わりに、EXSC404が、所定のロード/ストア命令がそのAGENバイパス適格性を維持することを可能にする場合、EXSC404は、以前に割り当てられた対応するスケジューラトークンを復号ユニット402に戻す。
実施形態では、EXSC404とLSDC406との間のトークン交換も行われる。それらのケースでは、トークンは、LSDC406内の様々なロード/ストアパイプラインの現在の容量に関連する。LSDC406がそれらのロード/ストアパイプラインから処理する命令を選択すると、LSDC406は、(EXSC404がその命令に割り当てた)対応するロード/ストアパイプライントークンを再使用のためにEXSC404に戻すことによって、EXSC404に通知する。
様々な実施形態は、プロセッサ102の説明された何れかの実施形態を製造するために、集積回路製造システムによって実行可能な命令を含む非一時的なコンピュータ可読記憶媒体の形態を取る。コンピュータ可読記憶媒体に含まれる命令は、RTL表現、アナログHDL(AHDL)、Verilog HDL、SystemVerilog HDL、超高速集積回路(VHSIC)ハードウェア記述言語(VHDL)等の言語におけるHDL(ハードウェア記述コードとも呼ばれる)命令、例えばC、C++、SystemC、Simulink、MATLAB(登録商標)等の高レベル若しくはモデリング言語のコード、例えばグラフィックスデータベースシステムII(GDSII)コード等の物理レイアウトコード、及び/又は、1つ以上の他のタイプの命令の形式を取ってもよいし、それらを含んでもよい。

Claims (13)

  1. 1つ以上のプロセッサによって実行される方法であって、
    プロセッサのアドレス生成(AGEN)バイパス判別ユニット(ABDU)へのロード/ストア命令を受信することと、
    前記ロード/ストア命令のオペランドの有効アドレスが前記ABDUにおいて既知でない場合に、前記プロセッサのAGENステージを介して前記ロード/ストア命令をルーティングすることであって、前記ロード/ストア命令のオペランドの有効アドレスは、前記ロード/ストア命令のオペランドの複数の有効アドレス入力のうち少なくとも1つが前記ABDUにおいて既知でない場合に、前記ABDUにおいて既知でない、ことと、
    前記ロード/ストア命令のオペランドの有効アドレスが前記ABDUにおいて既知である場合に、前記AGENステージをバイパスするように前記ロード/ストア命令をルーティングすることであって、前記ロード/ストア命令のオペランドの有効アドレスは、前記ロード/ストア命令のオペランドの複数の有効アドレス入力の各々が前記ABDUにおいて既知である場合に、前記ABDUにおいて既知である、ことと、を含む、
    方法。
  2. 前記ロード/ストア命令のオペランドの有効アドレスは、前記ロード/ストア命令がプログラムカウンタ(PC)相対ロード/ストア命令又は変位のみロード/ストア命令である場合に、前記ABDUにおいて既知である、
    請求項1の方法。
  3. 前記ロード/ストア命令のオペランドの有効アドレスは、前記ロード/ストア命令がスタックポインタ(SP)相対ロード/ストア命令であり、前記ABDUがSPレジスタ(rSP)の現在値を有する場合に、前記ABDUにおいて既知である、
    請求項1の方法。
  4. 前記AGENステージは、前記ロード/ストア命令のオペランドの複数の有効アドレス入力を使用して、前記ロード/ストア命令のオペランドの有効アドレスを計算するように構成されている、
    請求項1の方法。
  5. 前記プロセッサは、
    ロード/ストアユニットと、
    前記ABDU及び前記ロード/ストアユニットを通信可能に結合し、前記AGENステージを含む第1の回路経路と、
    前記ABDU及び前記ロード/ストアユニットを通信可能に結合し、前記AGENステージをバイパスする第2の回路経路と、を備え、
    前記AGENステージを介して前記ロード/ストア命令をルーティングすることは、前記第1の回路経路を介して前記ロード/ストア命令をルーティングすることを含み、
    前記AGENステージをバイパスするように前記ロード/ストア命令をルーティングすることは、前記第2の回路経路を介して前記ロード/ストア命令をルーティングすることを含む、
    請求項1の方法。
  6. 前記第2の回路経路を介して前記ロード/ストア命令をルーティングすることは、前記ロード/ストア命令に対応するバイパス適格フラグをアサートすることを含み、
    前記ロード/ストアユニットは、
    前記対応するバイパス適格フラグがアサートされたロード/ストア命令を処理することと、
    前記対応するバイパス適格フラグがクリアされたロード/ストア命令を破棄することと、
    を行うように構成されている、
    請求項5の方法。
  7. アドレス生成(AGEN)ステージと、
    AGENバイパス判別ユニット(ABDU)と、備え、
    前記ABDUは、
    ロード/ストア命令を受信することと、
    前記ロード/ストア命令のオペランドの有効アドレスが前記ABDUにおいて既知でない場合に、前記AGENステージを介して前記ロード/ストア命令をルーティングすることであって、前記ロード/ストア命令のオペランドの有効アドレスは、前記ロード/ストア命令のオペランドの複数の有効アドレス入力のうち少なくとも1つが前記ABDUにおいて既知でない場合に、前記ABDUにおいて既知でない、ことと、
    前記ロード/ストア命令のオペランドの有効アドレスが前記ABDUにおいて既知である場合に、前記AGENステージをバイパスするように前記ロード/ストア命令をルーティングすることであって、前記ロード/ストア命令のオペランドの有効アドレスは、前記ロード/ストア命令のオペランドの複数の有効アドレス入力の各々が前記ABDUにおいて既知である場合に、前記ABDUにおいて既知である、ことと、
    を行うように構成されている、
    プロセッサ。
  8. 前記ロード/ストア命令のオペランドの有効アドレスは、前記ロード/ストア命令がプログラムカウンタ(PC)相対ロード/ストア命令又は変位のみロード/ストア命令である場合に、前記ABDUにおいて既知である、
    請求項7のプロセッサ。
  9. 前記ロード/ストア命令のオペランドの有効アドレスは、前記ロード/ストア命令がスタックポインタ(SP)相対ロード/ストア命令であり、前記ABDUがSPレジスタ(rSP)の現在値を有する場合に、前記ABDUにおいて既知である、
    請求項7のプロセッサ。
  10. 前記AGENステージは、前記ロード/ストア命令のオペランドの複数の有効アドレス入力を使用して、前記ロード/ストア命令のオペランドの有効アドレスを計算するように構成されている、
    請求項7のプロセッサ。
  11. ロード/ストアユニットと、
    前記ABDU及び前記ロード/ストアユニットを通信可能に結合し、前記AGENステージを含む第1の回路経路と、
    前記ABDU及び前記ロード/ストアユニットを通信可能に結合し、前記AGENステージをバイパスする第2の回路経路と、をさらに備え、
    前記ABDUは、
    前記第1の回路経路を介して、前記AGENステージを介して前記ロード/ストア命令をルーティングすることと、
    前記第2の回路経路を介して、前記AGENステージをバイパスするように前記ロード/ストア命令をルーティングすることと、
    を行うように構成されている、
    請求項7のプロセッサ。
  12. 前記ABDUは、前記第2の回路経路を介して前記ロード/ストア命令をルーティングする場合に、前記ロード/ストア命令に対応するバイパス適格フラグをアサートするように構成されており、
    前記ロード/ストアユニットは、
    前記対応するバイパス適格フラグがアサートされたロード/ストア命令を処理することと、
    前記対応するバイパス適格フラグがクリアされたロード/ストア命令を破棄することと、
    を行うように構成されている、
    請求項11のプロセッサ。
  13. 前記第1の回路経路又は前記第2の回路経路を介して、クロックサイクル毎に第1の整数のロード/ストア命令の各々をルーティングすることと、
    前記第2の回路経路を介してルーティングされたロード/ストア命令の各々について、対応するバイパス適格フラグをアサートすることと、
    を行うようにさらに構成されており、
    前記ロード/ストアユニットは、
    前記対応するバイパス適格フラグがアサートされたロード/ストア命令を処理することと、
    前記対応するバイパス適格フラグがクリアされたロード/ストア命令を破棄することと、
    を行うように構成されている、
    請求項11のプロセッサ。
JP2021509745A 2018-08-21 2019-08-20 プロセッサ命令パイプラインにおいてアドレス生成ハードウェアを選択的にバイパスするシステム及び方法 Active JP7498166B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/106,515 2018-08-21
US16/106,515 US11023241B2 (en) 2018-08-21 2018-08-21 Systems and methods for selectively bypassing address-generation hardware in processor instruction pipelines
PCT/US2019/047217 WO2020041276A1 (en) 2018-08-21 2019-08-20 Systems and methods for selectively bypassing address-generation hardware in processor instruction pipelines

Publications (2)

Publication Number Publication Date
JP2021535478A JP2021535478A (ja) 2021-12-16
JP7498166B2 true JP7498166B2 (ja) 2024-06-11

Family

ID=69583745

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021509745A Active JP7498166B2 (ja) 2018-08-21 2019-08-20 プロセッサ命令パイプラインにおいてアドレス生成ハードウェアを選択的にバイパスするシステム及び方法

Country Status (6)

Country Link
US (1) US11023241B2 (ja)
EP (1) EP3841464A4 (ja)
JP (1) JP7498166B2 (ja)
KR (1) KR20210035320A (ja)
CN (1) CN112534406A (ja)
WO (1) WO2020041276A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002116951A (ja) 2000-10-11 2002-04-19 Matsushita Electric Ind Co Ltd アドレス生成回路
US20170206086A1 (en) 2016-01-20 2017-07-20 Imagination Technologies Limited Execution of Load Instructions in a Processor

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06110688A (ja) * 1991-06-13 1994-04-22 Internatl Business Mach Corp <Ibm> 複数の順序外れ命令を並行処理するためのコンピュータ・システム
JP3199604B2 (ja) * 1995-05-31 2001-08-20 松下電器産業株式会社 プロセッサ
JP3449186B2 (ja) * 1997-08-19 2003-09-22 富士通株式会社 パイプラインバイパス機能を有するデータ処理装置
US7941647B2 (en) * 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
RU2210186C2 (ru) 1999-04-02 2003-08-10 Самсунг Электроникс Ко., Лтд. Способ перемежения/обращенного перемежения для системы связи и устройство для его осуществления
US6694424B1 (en) * 2000-01-03 2004-02-17 Advanced Micro Devices, Inc. Store load forward predictor training
US6829700B2 (en) * 2000-12-29 2004-12-07 Stmicroelectronics, Inc. Circuit and method for supporting misaligned accesses in the presence of speculative load instructions
US8165864B2 (en) * 2008-02-08 2012-04-24 International Business Machines Corporation Method, system and computer program product for verifying address generation, interlocks and bypasses
US7987343B2 (en) * 2008-03-19 2011-07-26 International Business Machines Corporation Processor and method for synchronous load multiple fetching sequence and pipeline stage result tracking to facilitate early address generation interlock bypass
US9477634B2 (en) 2010-06-04 2016-10-25 Intersil Americas LLC I2C address translation
US9262174B2 (en) * 2012-04-05 2016-02-16 Nvidia Corporation Dynamic bank mode addressing for memory access
US9448960B2 (en) 2013-03-14 2016-09-20 Linear Technology Corporation Address translation in I2C data communications system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002116951A (ja) 2000-10-11 2002-04-19 Matsushita Electric Ind Co Ltd アドレス生成回路
US20170206086A1 (en) 2016-01-20 2017-07-20 Imagination Technologies Limited Execution of Load Instructions in a Processor

Also Published As

Publication number Publication date
WO2020041276A1 (en) 2020-02-27
US11023241B2 (en) 2021-06-01
EP3841464A4 (en) 2022-06-01
CN112534406A (zh) 2021-03-19
US20200065108A1 (en) 2020-02-27
JP2021535478A (ja) 2021-12-16
EP3841464A1 (en) 2021-06-30
KR20210035320A (ko) 2021-03-31

Similar Documents

Publication Publication Date Title
CN107871301B (zh) 在gpu中的任务调度
US7861065B2 (en) Preferential dispatching of computer program instructions
US11900122B2 (en) Methods and systems for inter-pipeline data hazard avoidance
US7739455B2 (en) Avoiding livelock using a cache manager in multiple core processors
US9946549B2 (en) Register renaming in block-based instruction set architecture
KR20160031503A (ko) 마이크로프로세서에서의 선택적 리네이밍을 위한 방법 및 장치
CN107209664B (zh) 用于扇出生产指令的结果的方法和设备及计算机可读媒体
KR20170036035A (ko) 인터럽트들의 세트들을 구성하는 장치 및 방법
CN116909943B (zh) 一种缓存访问方法、装置、存储介质及电子设备
EP2270652B1 (en) Priority circuit for dispatching instructions in a superscalar processor having a shared reservation station and processing method
CN109032665B (zh) 微处理器中指令输出处理方法及装置
JP7498166B2 (ja) プロセッサ命令パイプラインにおいてアドレス生成ハードウェアを選択的にバイパスするシステム及び方法
US10635444B2 (en) Shared compare lanes for dependency wake up in a pair-based issue queue
Birari et al. A risc-v isa compatible processor ip
EP2860643A2 (en) Collective communications apparatus and method for parallel systems
JP4444305B2 (ja) 半導体装置
CN112540789B (zh) 一种指令处理装置、处理器及其处理方法
JP6473023B2 (ja) 性能評価モジュール及びこれを組み込んだ半導体集積回路
GB2576457A (en) Queues for inter-pipeline data hazard avoidance
US20170083336A1 (en) Processor equipped with hybrid core architecture, and associated method
GB2584227A (en) Inter-pipeline data hazard avoidance
JP5598114B2 (ja) 演算ユニット
JP4703735B2 (ja) コンパイラ、コード生成方法、コード生成プログラム
JP2015156112A (ja) ベクトルプロセッサ、情報処理装置および追い越し制御方法
JP2011141619A (ja) マイクロプロセッサ

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210420

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220808

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231003

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20240104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240131

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240430

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240530

R150 Certificate of patent or registration of utility model

Ref document number: 7498166

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150