JP7064273B2 - Read / store unit with split reorder queue using a single CAM port - Google Patents

Read / store unit with split reorder queue using a single CAM port Download PDF

Info

Publication number
JP7064273B2
JP7064273B2 JP2020517847A JP2020517847A JP7064273B2 JP 7064273 B2 JP7064273 B2 JP 7064273B2 JP 2020517847 A JP2020517847 A JP 2020517847A JP 2020517847 A JP2020517847 A JP 2020517847A JP 7064273 B2 JP7064273 B2 JP 7064273B2
Authority
JP
Japan
Prior art keywords
instruction
read
storage
entry
processing unit
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
JP2020517847A
Other languages
Japanese (ja)
Other versions
JP2020536308A (en
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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
Priority claimed from US15/726,627 external-priority patent/US11175924B2/en
Priority claimed from US15/726,596 external-priority patent/US10606591B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2020536308A publication Critical patent/JP2020536308A/en
Application granted granted Critical
Publication of JP7064273B2 publication Critical patent/JP7064273B2/en
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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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, look ahead
    • G06F9/3824Operand accessing
    • 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, 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/655Same page detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/681Multi-level TLB, e.g. microTLB and main TLB
    • 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, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency

Description

本発明の実施形態は、一般に、アウトオブオーダー(OoO:out-of-order)プロセッサに関し、より詳細には、OoOプロセッサにおける命令のアウトオブオーダー実行を効率的にサポートするために、単一の連想メモリ(CAM:content address memory)ポートと共に分割された読み込み順序変更キューおよび格納順序変更キュー(load and store reorder queues)を実装する読み込み/格納ユニット(LSU:load-store unit)に関する。 Embodiments of the present invention generally relate to out-of-order (OoO) processors, and more specifically, are single to efficiently support out-of-order execution of instructions in the OoO processor. It relates to a load-store unit (LSU) that implements load and store reorder queues divided together with an associative memory (CAM) port.

OoOプロセッサでは、命令順序付けユニット(ISU:instruction sequencingunit)が、命令をさまざまな発行キューにディスパッチし、OoO実行のサポートにおいてレジスタ名を変更し、さまざまな発行キューから実行パイプラインに命令を発行し、実行された命令を完了し、例外条件を処理する。レジスタ名の変更は、通常、命令が各発行キューに配置される前に、ISU内のマッパー論理によって実行される。ISUは、命令間の依存関係を追跡するための依存関係行列を含んでいる1つまたは複数の発行キューを含む。依存関係行列は、通常、発行キュー内の命令ごとに1行および1列を含む。 In the OoO processor, an instruction sequencing unit (ISU) dispatches instructions to various issue queues, renames them in support of OoO execution, issues instructions from the various issue queues to the execution pipeline, and issues them to the execution pipeline. Complete the executed instruction and handle the exception condition. Register renaming is usually performed by mapper logic in the ISU before the instruction is placed on each issue queue. The ISU contains one or more issue queues containing a dependency matrix for tracking dependencies between instructions. The dependency matrix typically contains one row and one column for each instruction in the issue queue.

単一のCAMポートを使用する分割された順序変更キューを備える読み込み/格納ユニットを提供する。 Provides a read / store unit with a split reordering queue that uses a single CAM port.

本発明の実施形態は、アウトオブオーダー・プロセッサにおいて実効アドレスに基づく読み込み/格納ユニットを実装するための方法、システム、およびコンピュータ・プログラム製品を含む。1つまたは複数の命令を実行するための処理ユニットの非限定的な例としては、読み込み/格納ユニット(LSU)が挙げられ、LSUは、複数のLSUパイプを使用してアウトオブオーダー(OoO)ウィンドウ内の複数の命令を実行する。この実行は、OoOウィンドウから命令を選択することであって、命令が実効アドレスを使用する、選択することと、命令が読み込み命令であることに応答して、処理ユニットがシングルスレッド・モードで動作することに応答して、命令が第1の読み込みパイプ上で発行されているということに基づいて読み込み順序変更キューの第1のパーティションにエントリを作成することと、命令が第2の読み込みパイプ上で発行されているということに基づいて、読み込み順序変更キューの第2のパーティションにエントリを作成することとを含む。この実行は、複数のスレッドが同時に処理されるマルチスレッド・モードで処理ユニットが動作することに応答して、命令が第1の読み込みパイプ上で発行されているということに基づいて、処理ユニットの第1のスレッドによって、読み込み順序変更キューの第1のパーティションの第1の所定の部分にエントリを作成することも含む。 Embodiments of the invention include methods, systems, and computer program products for implementing effective address-based read / store units in out-of-order processors. A non-limiting example of a processing unit for executing one or more instructions is a read / store unit (LSU), where the LSU is out of order (OoO) using multiple LSU pipes. Execute multiple instructions in a window. This execution is to select an instruction from the OoO window, where the processing unit operates in single-threaded mode in response to the instruction using the effective address, the selection, and the instruction being a read instruction. Creating an entry in the first partition of the read order change queue based on the fact that the instruction was issued on the first read pipe in response to the instruction and the instruction on the second read pipe. Includes creating an entry in the second partition of the read order change queue based on being issued in. This execution is based on the fact that the instruction is issued on the first read pipe in response to the processing unit operating in a multithreaded mode where multiple threads are processed simultaneously. It also includes creating an entry in the first predetermined part of the first partition of the read order change queue by the first thread.

1つまたは複数の実施形態によれば、処理ユニットによる1つまたは複数の命令のアウトオブオーダー実行のためのコンピュータ実装方法が、処理ユニットの読み込み/格納ユニット(LSU)によって、順序に従わずに実行される複数の命令を含んでいる命令のアウトオブオーダー・ウィンドウを受信することと、LSUによって、OoOウィンドウから命令を発行することとを含む。命令の発行は、OoOウィンドウから命令を選択することであって、命令が実効アドレスを使用する、選択することと、命令が読み込み命令であることに応答して、処理ユニットがシングルスレッド・モードで動作することに応答して、命令が第1の読み込みパイプ上で発行されているということに基づいて読み込み順序変更キューの第1のパーティションにエントリを作成することと、命令が第2の読み込みパイプ上で発行されているということに基づいて、読み込み順序変更キューの第2のパーティションにエントリを作成することとを含む。この実行は、複数のスレッドが同時に処理されるマルチスレッド・モードで処理ユニットが動作することに応答して、命令が第1の読み込みパイプ上で発行されているということに基づいて、処理ユニットの第1のスレッドによって、読み込み順序変更キューの第1のパーティションの第1の所定の部分にエントリを作成することも含む。 According to one or more embodiments, the computer implementation method for out-of-order execution of one or more instructions by a processing unit is out of order by the processing unit read / store unit (LSU). It involves receiving an out-of-order window of an instruction containing multiple instructions to be executed and issuing the instruction from the OoO window by the LSU. Issuing an instruction is to select an instruction from the OoO window, where the processing unit is in single-threaded mode in response to the instruction using the effective address, the selection, and the instruction being a read instruction. Creating an entry in the first partition of the read order change queue based on the fact that the instruction was issued on the first read pipe in response to the operation, and the instruction on the second read pipe. Includes creating an entry in the second partition of the read order change queue based on being issued above. This execution is based on the fact that the instruction is issued on the first read pipe in response to the processing unit operating in a multithreaded mode where multiple threads are processed simultaneously. It also includes creating an entry in the first predetermined part of the first partition of the read order change queue by the first thread.

1つまたは複数の実施形態によれば、コンピュータ・プログラム製品が、プログラム命令が具現化されているコンピュータ可読記憶媒体を含み、それらのプログラム命令は、処理ユニットに動作を実行させるために、処理ユニットによって実行可能である。それらの動作は、処理ユニットの読み込み/格納ユニット(LSU)によって、順序に従わずに実行される複数の命令を含んでいる命令のアウトオブオーダー・ウィンドウを受信することと、LSUによって、OoOウィンドウから命令を発行することとを含む。命令の発行は、OoOウィンドウから命令を選択することであって、命令が実効アドレスを使用する、選択することと、命令が読み込み命令であることに応答して、処理ユニットがシングルスレッド・モードで動作することに応答して、命令が第1の読み込みパイプ上で発行されているということに基づいて読み込み順序変更キューの第1のパーティションにエントリを作成することと、命令が第2の読み込みパイプ上で発行されているということに基づいて、読み込み順序変更キューの第2のパーティションにエントリを作成することとを含む。この実行は、複数のスレッドが同時に処理されるマルチスレッド・モードで処理ユニットが動作することに応答して、命令が第1の読み込みパイプ上で発行されているということに基づいて、処理ユニットの第1のスレッドによって、読み込み順序変更キューの第1のパーティションの第1の所定の部分にエントリを作成することも含む。 According to one or more embodiments, the computer program product comprises a computer-readable storage medium in which the program instructions are embodied, the program instructions being used to cause the processing unit to perform an operation. It is feasible by. Their operation is to receive an out-of-order window of instructions containing multiple instructions executed out of order by the processing unit's read / store unit (LSU), and by LSU, the OoO window. Includes issuing orders from. Issuing an instruction is to select an instruction from the OoO window, where the processing unit is in single-threaded mode in response to the instruction using the effective address, the selection, and the instruction being a read instruction. Creating an entry in the first partition of the read order change queue based on the fact that the instruction was issued on the first read pipe in response to the operation, and the instruction on the second read pipe. Includes creating an entry in the second partition of the read order change queue based on being issued above. This execution is based on the fact that the instruction is issued on the first read pipe in response to the processing unit operating in a multithreaded mode where multiple threads are processed simultaneously. It also includes creating an entry in the first predetermined part of the first partition of the read order change queue by the first thread.

その他の特徴および利点が、本発明の手法によって実現される。本発明のその他の実施形態および態様は、本明細書において詳細に説明され、請求される発明の一部と見なされる。本発明を利点および特徴と共によく理解するために、説明および図面を参照されたい。 Other features and advantages are realized by the method of the present invention. Other embodiments and aspects of the invention are described in detail herein and are considered part of the claimed invention. Please refer to the description and drawings for a good understanding of the invention along with its advantages and features.

本明細書に記載された専有権の詳細は、本明細書の最後にある特許請求の範囲において具体的に指摘され、明確に請求される。本発明の各実施形態の前述およびその他の特徴と利点は、添付の図面と共に行われる以下の詳細な説明から明らかになる。 The details of the possession rights described herein are specifically pointed out and explicitly claimed within the scope of the claims at the end of the specification. The aforementioned and other features and advantages of each embodiment of the invention will be apparent from the following detailed description provided with the accompanying drawings.

本発明の1つまたは複数の実施形態に従う、アウトオブオーダー・プロセッサ内に実効アドレスに基づく読み込み/格納ユニットを含んでいるシステムのブロック図である。FIG. 3 is a block diagram of a system comprising an effective address-based read / store unit within an out-of-order processor according to one or more embodiments of the present invention. 本発明の1つまたは複数の実施形態に従う、実効アドレス・ディレクトリ(EAD:effectiveaddress directory)およびこのEADを利用するための関連するメカニズムが実装される、OoOプロセッサのプロセッサ・アーキテクチャの例示的なブロック図である。An exemplary block diagram of a processor architecture of an OoO processor that implements an effective address directory (EAD) and related mechanisms for utilizing this EAD, according to one or more embodiments of the invention. Is. 本発明の1つまたは複数の実施形態に従うプロセッシング・コアの読み込み/格納ユニット(LSU)を示す図である。It is a figure which shows the reading / storing unit (LSU) of the processing core according to one or more embodiments of this invention. 1つの実施形態例に従う実効アドレス・ディレクトリ(EAD)構造(L1キャッシュ)の例示的なブロックである。It is an exemplary block of an effective address directory (EAD) structure (L1 cache) according to one embodiment. 1つの実施形態例に従う実効実変換(ERT:effective real translation)テーブル構造の例示的なブロックである。It is an exemplary block of an effective real translation (ERT) table structure according to one embodiment. 本発明の1つまたは複数の実施形態に従う、LSUによって命令を実行するためにメモリにアクセスするための例示的な方法のフローチャートである。It is a flowchart of an exemplary method for accessing memory to execute an instruction by LSU, according to one or more embodiments of the present invention. 本発明の1つまたは複数の実施形態に従う、ERTを再度読み込むための方法のフローチャートである。It is a flowchart of the method for reloading ERT according to one or more embodiments of this invention. 本発明の1つまたは複数の実施形態に従うシノニム検出テーブル(SDT:synonymdetection table)の例示的な構造を示す図である。It is a figure which shows the exemplary structure of the synonym detection table (SDT) according to one or more embodiments of this invention. 本発明の1つまたは複数の実施形態に従う、ERTおよびSDT EAの交換を実行するための方法のフローチャートである。It is a flowchart of the method for performing exchange of ERT and SDT EA according to one or more embodiments of this invention. 本発明の1つまたは複数の実施形態に従うERT削除(ERTE:ERTeviction)テーブルを示す図である。FIG. 5 shows an ERTeviction (ERTE) table according to one or more embodiments of the present invention. 本発明の1つまたは複数の実施形態に従う、エントリをERTEテーブルに追加するための例示的な方法のフローチャートである。It is a flowchart of an exemplary method for adding an entry to an ERTE table according to one or more embodiments of the present invention. 本発明の1つまたは複数の実施形態に従って開始される例示的な命令のセットの例示的なシーケンス図である。It is an exemplary sequence diagram of a set of exemplary instructions initiated according to one or more embodiments of the invention. 本発明の1つまたは複数の実施形態に従う、プロセッサがシングルスレッド(ST:singlethread)モードまたはマルチスレッド(MT:multi-threaded)モードのどちらで動作しているかに応じて、マルチパイプ・モードで、およびOoOの方法で、LSUによって命令を発行するための例示的な方法のフローチャートである。In multipipe mode, depending on whether the processor is operating in singlethread (ST) mode or multi-threaded (MT) mode, according to one or more embodiments of the invention. And in the OoO method, it is a flowchart of an exemplary method for issuing an instruction by LSU. 本発明の1つまたは複数の実施形態の一部または全部の態様を実装するためのコンピュータ・システムのブロック図である。FIG. 3 is a block diagram of a computer system for implementing some or all embodiments of one or more embodiments of the present invention.

本明細書において示される図は、実例である。本発明の思想から逸脱することなく、本明細書に記載された図または動作の多くの変形が存在することが可能である。例えば、動作は異なる順序で実行されることが可能であり、あるいは動作は追加、削除、または変更されることが可能である。また、「結合される」という用語およびその変形は、2つの要素間に通信経路が存在することを表しており、それらの要素間に要素/接続が介在しない要素間の直接的接続を意味していない。これらのすべての変形は、本明細書の一部であると見なされる。 The figures shown herein are examples. It is possible that many variations of the figures or behaviors described herein exist without departing from the ideas of the present invention. For example, actions can be performed in different order, or actions can be added, deleted, or modified. Also, the term "combined" and its variants represent the existence of a communication path between two elements, meaning a direct connection between elements without element / connection intervening between those elements. Not. All these variations are deemed to be part of this specification.

本明細書に記載された本発明の1つまたは複数の実施形態は、OoOプロセッサ内の実効実アドレス・テーブルのエントリの動的削除によって、実効アドレス(EA:effective address)に基づく読み込み/格納ユニット(LSU)をアウトオブオーダー(OoO)プロセッサに提供する。本明細書に記載された技術的解決策は、チップ面積の削減を促進するために、およびさらに、OoOプロセッサのタイミングを改善するために、コンポーネントの中でも特に、実効実テーブル(ERT:effective real table)およびシノニム検出テーブル(SDT:synonymdetection table)と共に実効アドレス・ディレクトリ(EAD)を使用する。さらに、本明細書に記載された技術的解決策は、OoO LSUが順序に従わない方法で読み込み/格納命令を実行するのを容易にする。OoO LSUは、複数のパイプを使用して読み込み/格納命令を実行し、性能を改善する。LSUのマルチパイプの実装は、本明細書において説明されているように、分割されたERT、読み込み順序変更キュー(LRQ:load reorder queue)、および格納順序変更キュー(SRQ:storereorder queue)に基づく。 One or more embodiments of the invention described herein are read / store units based on an effective address (EA) by dynamically deleting entries in an effective real address table within an OoO processor. (LSU) is provided to the out-of-order (OoO) processor. The technical solutions described herein are effective real tables (ERTs), among other components, to facilitate chip area reductions and, in addition, to improve the timing of OoO processors. ) And the synonym detection table (SDT) and the effective address directory (EAD) are used. In addition, the technical solutions described herein facilitate the OoO LSU to execute read / store instructions in an unordered manner. OoO LSU uses multiple pipes to execute read / store instructions to improve performance. LSU's multi-pipe implementation is based on split ERTs, load reorder queues (LRQs), and store reorder queues (SRQs), as described herein.

ほとんどの最新のコンピューティング・デバイスは、仮想メモリをサポートする。仮想メモリは、実際には物理メモリが断片化しているときに、および物理メモリがディスク・ストレージにあふれているときにも、連続的な作業メモリまたはアドレス空間が存在するという印象をアプリケーション・プログラムに与える技術である。基本的に、コンピューティング・デバイスのメモリの見え方がアプリケーション・プログラムに提供され、アプリケーションは、アプリケーションから見える実効アドレス空間内の実効アドレスを使用して、連続的に見えるメモリにアクセスし、その後、この実効アドレスが、アクセス動作を実際に実行するために、実際の物理メモリまたはストレージ・デバイスの物理アドレスに変換される。実効アドレスは、動作を発行する実体(例えば、アプリケーション、プロセス、スレッド、割り込みハンドラ、カーネル・コンポーネントなど)の視点から動作によってアクセスされるメモリ位置を指定するために使用される値である。 Most modern computing devices support virtual memory. Virtual memory gives application programs the impression that continuous working memory or address space exists even when physical memory is actually fragmented and when physical memory is flooded with disk storage. It is a technique to give. Basically, the memory appearance of the computing device is provided to the application program, and the application uses the effective addresses in the effective address space visible to the application to access the continuously visible memory and then. This effective address is translated into the physical address of the actual physical memory or storage device in order to actually perform the access operation. The effective address is a value used to specify the memory location accessed by the operation from the perspective of the entity issuing the operation (eg, application, process, thread, interrupt handler, kernel component, etc.).

すなわち、コンピューティング・デバイスが仮想メモリの概念をサポートしない場合、実効アドレスおよび物理アドレスは1つであり、同じである。しかし、コンピューティング・デバイスが仮想メモリをサポートする場合、アプリケーションによってサブミットされる特定の動作の実効アドレスは、コンピューティング・デバイスのメモリ・マッピング・ユニットによって、動作が実行される物理メモリまたはストレージ・デバイス内の位置を指定する物理アドレスに変換される。 That is, if the computing device does not support the concept of virtual memory, then there is one effective address and one physical address, which is the same. However, if the computing device supports virtual memory, the effective address of the particular operation submitted by the application is the physical memory or storage device on which the operation is performed by the memory mapping unit of the computing device. Translated to a physical address that specifies a location within.

さらに、最新のコンピューティング・デバイスでは、コンピューティング・デバイスのプロセッサが、一連のデータ処理要素を含んでいるプロセッサ命令パイプラインを使用して、実体(例えば、アプリケーション、プロセスなど)によってサブミットされた命令(動作)を処理する。命令パイプラインは、コンピュータ命令の処理を、各ステップの最後でストレージを使用する一連のステップに分割することによって、命令スループットを増加させる技術である。命令パイプラインは、コンピューティング・デバイスの制御回路が、最も遅いステップの処理速度で命令をプロセッサ命令パイプラインに発行するのを容易にし、この処理速度は、すべてのステップを同時に実行するために必要な時間よりも非常に高速である。命令パイプラインを使用するプロセッサ(すなわち、パイプライン型プロセッサ)は、別々のジョブに対して半ば独立して動作できる段に内部で構造化される。各段は、パイプラインの最後の段まで各段の出力が別の段に供給されるように構造化され、一連のチェーン内の次の段に接続される。 In addition, in modern computing devices, the processor of the computing device is an instruction submitted by an entity (eg, application, process, etc.) using a processor instruction pipeline that contains a set of data processing elements. Process (operation). Instruction pipeline is a technique that increases instruction throughput by dividing the processing of computer instructions into a series of steps that use storage at the end of each step. The instruction pipeline makes it easy for the control circuit of the computing device to issue instructions to the processor instruction pipeline at the slowest step speed, which is required to execute all steps simultaneously. It's much faster than the time. Processors that use instruction pipelines (ie, pipelined processors) are internally structured in stages that can operate semi-independently for separate jobs. Each stage is structured so that the output of each stage is supplied to another stage up to the last stage of the pipeline, and is connected to the next stage in a series of chains.

そのようなパイプライン型プロセッサは、インオーダー・パイプライン型プロセッサまたはアウトオブオーダー・パイプライン型プロセッサの形態を取ってよい。インオーダー・パイプライン型プロセッサの場合、データが、パイプラインの特定の段で処理される命令に使用されない場合に、そのデータが使用可能になるまで、パイプラインを介した命令の実行が停止されるように、命令が順序通りに実行される。一方、アウトオブオーダー・パイプライン型プロセッサは、動作を実行するために必要なデータを使用できないときに発生する停止をプロセッサが回避できるようにする。アウトオブオーダー・プロセッサの命令パイプラインは、処理される準備ができている他の命令で時間の「スロット」を埋め、その後、パイプラインの最後で結果を並べ替え、命令が順序通りに実行されたように見えるようにすることによって、それらの停止を防ぐ。元のコンピュータ・コード内で命令が順序付けられる方法はプログラム順序と呼ばれ、一方、プロセッサでは、命令がデータ順序(すなわち、データおよびオペランドがプロセッサのレジスタ内で使用可能になる順序)で処理される。 Such pipeline processors may take the form of in-order pipeline processors or out-of-order pipeline processors. For in-order pipeline processors, if data is not used for instructions processed at a particular stage in the pipeline, execution of instructions through the pipeline is stopped until the data is available. The instructions are executed in order. Out-of-order pipeline processors, on the other hand, allow processors to avoid outages that occur when the data needed to perform an operation is unavailable. The out-of-order processor instruction pipeline fills a "slot" of time with other instructions that are ready to be processed, then sorts the results at the end of the pipeline, and the instructions are executed in order. Prevent them from stopping by making them look like they are. The way instructions are ordered in the original computer code is called program order, while the processor processes the instructions in data order (that is, the order in which data and operands are available in the processor's registers). ..

最新のプロセッサ命令パイプラインは、命令が命令パイプラインを通って流れるときに、命令の実効アドレスを追跡する。命令の処理が例外の取得をもたらすか、命令が前の状態をフラッシュするか、命令が現在のメモリ位置と相対的な新しいメモリ位置に分岐するか、または命令の実行が完了するときに、常にこの実効アドレスが利用されるため、命令の実効アドレスを追跡することは重要である。 Modern processor instruction pipelines track the effective address of an instruction as it flows through the instruction pipeline. Whenever the processing of an instruction results in getting an exception, the instruction flushes the previous state, the instruction branches to a new memory location relative to the current memory location, or the instruction execution completes. Since this effective address is used, it is important to keep track of the effective address of the instruction.

命令の実効アドレスを追跡することは、プロセッサのチップ面積、電力消費などの観点で、費用がかかる。これは、これらの実効アドレスが大きいサイズ(例えば、64ビット)を有しており、最新のプロセッサ命令パイプラインが深く(すなわち、多くの段を含んでおり)、プロセッサ命令パイプラインの命令フェッチ段からプロセッサ命令パイプラインの完了段までの命令の存続期間が非常に長くなることを引き起こすためである。高度にマルチスレッド化されたアウトオブオーダー・プロセッサ(すなわち、順序に従わない方法で複数のスレッドから命令を実行するプロセッサ)では、異なるアドレス範囲からの膨大な数の命令が同時に処理することができる(すなわち、「インフライト」である)ため、この費用がさらに増えることがある。 Tracking the effective address of an instruction is costly in terms of processor chip area, power consumption, and so on. This is because these effective addresses have a large size (eg, 64 bits), the modern processor instruction pipeline is deep (ie, contains many stages), and the instruction fetch stage of the processor instruction pipeline. This is because it causes the instruction to have a very long duration from to the completion stage of the processor instruction pipeline. A highly multithreaded out-of-order processor (ie, a processor that executes instructions from multiple threads in an unordered manner) can process a huge number of instructions from different address ranges simultaneously. This cost may be further increased because it is (ie, "in-flight").

1つまたは複数の例では、コンピューティング・デバイスは、パイプライン・ラッチ、分岐情報キュー(BIQ:branch information queue)、およびグローバル完了テーブル(GCT:global completion table)の組み合わせを使用して、命令の実効アドレスを追跡する。命令のグループのベース実効アドレス(EA)が、命令シーケンサ・ユニット(ISU:instruction sequencer unit)のGCT内に蓄積されて追跡できるようになるまで、ラッチを使用してパイプラインの前端から転送される。このデータを格納するために必要なラッチの数は、おおよそ、パイプラインのフェッチ段とディスパッチ段の間のパイプラインの段数になる。これらのラッチは、これらの段の間に通常はEAが不要であるため、無駄である。このデータは、命令がパイプラインを通って流れるときに命令グループと共に「付き合いで参加している」単なるペイロード・データである。加えて、この方法は、分岐命令がBIQとGCTの両方にEAを含むため、二重の格納につながる。 In one or more examples, the computing device uses a combination of pipeline latches, branch information queues (BIQs), and global completion tables (GCTs) for instructions. Track the effective address. The base effective address (EA) of a group of instructions is forwarded from the front end of the pipeline using a latch until it can be stored and tracked in the GCT of the instruction sequencer unit (ISU). .. The number of latches required to store this data is approximately the number of stages in the pipeline between the fetch and dispatch stages of the pipeline. These latches are useless as they usually do not require an EA between these stages. This data is just payload data that "associates" with the instruction group as the instruction flows through the pipeline. In addition, this method leads to double storage because the branch instruction includes EA in both BIQ and GCT.

したがって、GCTのみにおいてEAを追跡することによって、そのような非効率性を取り除くコンピューティング・デバイスが開発された。例えば、それらの新しいコンピューティング・デバイス(命令シーケンサ・ユニット)は、フェッチ時にエントリをGCTに作成する。EAは、この時点でGCTに読み込まれ、その後、命令が完了したときに削除される。これによって、装置全体で、多くのパイプライン・ラッチを取り除く。アドレス線の数と同じくらいの長さの完全なEA(例えば、64ビットEA)の代わりに、小さいタグが、パイプラインを通る命令グループと共に運ばれる。このタグは、この命令グループのベースEAを保持するGCT内のエントリを指し示す。分岐が、発行されたときに、EAをGCTから直接取得できるため、BIQ内のアドレスの格納が不要になる。そのような手法は、面積効率を改善するが、アウトオブオーダー・プロセッサには適用できない。さらに、それらの手法は、プログラム順序に従わないで着信するアドレス要求を処理するための十分な情報を欠いている。加えて、それらの手法は、複数のまとまりのないアドレス範囲から形成されていることがある命令グループを追跡する能力を欠いているため、アウトオブオーダー実行に必要なディスパッチおよび完了の帯域幅をサポートできない。従来、そのようなメカニズムは、単一のアドレス範囲からの命令グループのみをサポートしていたため、順序に従わずに実行するために使用できる命令の数が著しく減少する可能性がある。さらに、EAに対応するRA(またはその逆)などの、対応するアドレスを検索するために、連想メモリ(CAM:content addressable memory)が使用される。CAMは、専用比較回路を使用して、単一クロック・サイクルでのルックアップ・テーブル機能を実装する。CAMの機能全体は、検索語を受け取って、一致するメモリ位置を返すことである。しかし、そのようなCAMは、チップ面積を必要とし、そのような検索のための電力を消費する。 Therefore, computing devices have been developed that eliminate such inefficiencies by tracking the EA only in the GCT. For example, those new computing devices (instruction sequencer units) create entries in the GCT on fetch. The EA is read into the GCT at this point and then deleted when the instruction is completed. This removes many pipeline latches throughout the device. Instead of a full EA (eg, 64-bit EA) as long as the number of address lines, a small tag is carried with the instruction group through the pipeline. This tag points to an entry in the GCT that holds the base EA of this instruction group. When the branch is issued, the EA can be obtained directly from the GCT, eliminating the need to store the address in the BIQ. Such techniques improve area efficiency, but are not applicable to out-of-order processors. Moreover, those techniques lack sufficient information to process incoming address requests out of program order. In addition, these techniques lack the ability to track instruction groups that may be formed from multiple disjointed address ranges, thus supporting the dispatch and completion bandwidth required for out-of-order execution. Can not. Traditionally, such a mechanism has supported only instruction groups from a single address range, which can significantly reduce the number of instructions that can be used to execute out of order. In addition, associative memory (CAM: content addressable memory) is used to retrieve the corresponding address, such as RA corresponding to EA (or vice versa). CAM implements a look-up table function in a single clock cycle using a dedicated comparison circuit. The entire function of CAM is to receive a search term and return a matching memory location. However, such a CAM requires chip area and consumes power for such a search.

本明細書に記載された技術的解決策の実施形態例は、前述したGCTの解決策の面積効率を有するだけでなく、性能を抑制せずに発行幅の広いアウトオブオーダー・パイプラインもサポートできる、実効アドレス・ディレクトリ(EAD)、実効実テーブル(ERT)、およびシノニム検出テーブル(SDT:synonym detection table)を提供することによって、これらの手法を改善する。本明細書に記載された技術的解決策は、プロセッサがアウトオブオーダー(OoO)ウィンドウ内でEAのシノニムを避けることができる限り、プロセッサがEAのみを使用して実行するのをさらに容易にする。OoOウィンドウは、プロセッサの命令パイプライン内の命令のセットである。OoOウィンドウ内のEAのシノニムを防ぐことによって、プロセッサがOoOウィンドウ内のEAの変換を回避することができるため、プロセッサは、アドレス変換のためのチップ面積および電力消費を削減する。これは、OoOウィンドウ内にEAのシノニムが存在しなくなって、インフライトの命令に関してロード・ヒット・ストア(LHS:load-hit-store)条件、ストア・ヒット・ロード(SHL:store-hit-load)条件、およびロード・ヒット・ロード(LHL:load-hit-load)条件が検出されなくなるためである。 The embodiments of the technical solutions described herein not only have the area efficiency of the GCT solutions described above, but also support a wide out-of-order pipeline without compromising performance. These techniques are improved by providing an effective address directory (EAD), an effective real table (ERT), and a synonym detection table (SDT) that can be used. The technical solutions described herein make it even easier for the processor to run using EA alone, as long as the processor can avoid EA synonyms within the out-of-order (OoO) window. .. An OoO window is a set of instructions in a processor's instruction pipeline. By preventing the synonyms of the EA in the OOO window, the processor can avoid the translation of the EA in the OOO window, so that the processor reduces the chip area and power consumption for address translation. This is because the EA synonym no longer exists in the OoO window, and the load hit store (LHS: load-hit-store) condition, store hit load (SHL: store-hit-load) for in-flight instructions. ) Condition and load-hit-load (LHL: load-hit-load) condition are no longer detected.

言い換えると、本明細書に記載された技術的解決策は、OoOウィンドウ内のEAの別名化を規制し、読み込み/格納ポートに関する変換データ構造およびハードウェアを縮小することによって、技術的問題に対処する。したがって、本明細書に記載された技術的解決策は、1つのアドレス(EA)のみを追跡することによって、チップ面積の削減を促進する。さらに、これらの技術的解決策は、OoOプロセッサが分割された読み込み/格納キューを使用して2読み込み/2格納モード(2 load and 2 store mode)で実行することを容易にし、通常はアドレス変換に使用されるCAMポートをさらに削減する。 In other words, the technical solutions described herein address technical issues by restricting EA aliasing in OoO windows and reducing the conversion data structure and hardware for read / store ports. do. Therefore, the technical solutions described herein facilitate chip area reduction by tracking only one address (EA). In addition, these technical solutions make it easy for the OoO processor to perform in 2 load and 2 store modes with split load and store queues, usually address translation. Further reduce the number of CAM ports used for.

加えて、OoOプロセッサがマルチスレッド(MT)動作をサポートする場合、OoOプロセッサは、順序に従わない方法でのスレッド動作ごとに、EAをRAに変換するためおよびRAをEAに変換するために、読み込み/格納ユニット内の読み込み/格納キューごとに複数のCAMポートを容易にする必要がある。例えば、MTモードで4つのスレッドを実行するOoOプロセッサについて考える。各スレッドは、独立した命令を実行することによって、同時に実行している。この場合、OoOプロセッサの読み込み/格納ユニット(LSU)は、実効アドレスを実アドレスに変換するためおよび実アドレスを実効アドレスに変換するために、通常、読み込み/格納キューごとに4つ以上のCAMポートを使用する。アドレス変換用のそのような複数のCAMポートは、かなりのチップ面積を占有し、さらに電力を消費する。本明細書に記載された技術的解決策は、複数のスレッドのための複数のCAMポートのそのような技術的課題に対処する。 In addition, if the OoO processor supports multithreaded (MT) operation, the OoO processor will convert EA to RA and RA to EA for each thread operation in an unordered manner. Multiple CAM ports need to be facilitated for each read / store queue in the read / store unit. For example, consider an OoO processor that runs four threads in MT mode. Each thread is executing at the same time by executing independent instructions. In this case, the OoO processor's read / store unit (LSU) typically has four or more CAM ports per read / store queue to translate the effective address to the real address and to translate the real address to the effective address. To use. Such multiple CAM ports for address translation occupy a considerable chip area and consume more power. The technical solutions described herein address such technical challenges of multiple CAM ports for multiple threads.

本明細書に記載された発明の1つまたは複数の実施形態例は、単一のCAMポートを読み込み/格納キューに使用することによって、本明細書に記載された技術的課題の態様に対処し、このようにして、アドレス変換に使用されるチップ面積および電力を削減する。例えば、本明細書に記載された本発明の実施形態例は、LSUが、分割された読み込み/格納キューを含む複数読み込み/複数格納LSU(multi-load and multi-store LSU)になることを容易にすることができ、アドレス変換用のCAMポートの数の削減を促進する。「複数読み込みLSU」は、読み込み命令ごとに別々のパイプ上で、複数の読み込み命令を同時に発行するLSUである。例えば、「2読み込みLSU」は、2つの別々のパイプ(LD0およびLD1)上で、2つの読み込み命令を同時に発行するLSUである。同様に、「複数格納LSU」は、格納命令ごとに別々のパイプ上で、複数の格納命令を同時に発行するLSUである。例えば、「2格納LSU」は、2つの別々のパイプ(ST0およびST1)上で、2つの格納命令を同時に発行するLSUである。 One or more embodiments of the invention described herein address aspects of the technical challenges described herein by using a single CAM port for read / store queues. In this way, the chip area and power used for address translation is reduced. For example, an embodiment of the invention described herein facilitates an LSU to be a multi-load and multi-store LSU (multi-load and multi-store LSU) that includes a split load / store queue. Can help reduce the number of CAM ports for address translation. "Multiple read LSUs" are LSUs that simultaneously issue a plurality of read instructions on separate pipes for each read instruction. For example, "2 read LSUs" are LSUs that issue two read instructions simultaneously on two separate pipes (LD0 and LD1). Similarly, the "plural storage LSU" is an LSU that simultaneously issues a plurality of storage instructions on separate pipes for each storage instruction. For example, "2 storage LSUs" are LSUs that simultaneously issue two storage instructions on two separate pipes (ST0 and ST1).

ここで図1を参照すると、本発明の1つまたは複数の実施形態に従って、OoO命令ウィンドウ内でEAのシノニムを防ぐための技術的解決策を実装するアウトオブオーダー(OoO)プロセッサの命令順序付けユニット(ISU)を含んでいるシステム100のブロック図が、概して示されている。図1に示されているシステム100は、ISUのマッパー110に入力するためのデコードされた命令を準備する設定ブロック108に入力するための命令をフェッチしてデコードする、命令フェッチ・ユニット/命令デコード・ユニット(IFU/IDU:instruction fetch unit/instruction decode unit)106を含んでいる。本発明の1つまたは複数の実施形態に従って、IFU/IDU106によって、スレッドからの一度に6つの命令がフェッチされ、デコードされ得る。本発明の1つまたは複数の実施形態に従って、設定ブロック108に送信される6つの命令は、6つの非分岐命令、5つの非分岐命令および1つの分岐命令、または4つの非分岐命令および2つの分岐命令を含むことができる。本発明の1つまたは複数の実施形態に従って、設定ブロック108は、フェッチされた命令をISU内のそれらのブロックに送信する前に、発行キュー内のエントリ、完了テーブル、マッパー、およびレジスタ・ファイルなどの十分なリソースが存在することをチェックする。 Referring now to FIG. 1, an out-of-order (OoO) processor instruction ordering unit that implements a technical solution to prevent EA synonyms within the OoO instruction window according to one or more embodiments of the invention. A block diagram of the system 100 containing (ISU) is generally shown. System 100, shown in FIG. 1, prepares a decoded instruction for input to the ISU mapper 110. An instruction fetch unit / instruction decode that fetches and decodes an instruction for input to the configuration block 108. -The unit (IFU / IDU: instruction fetch unit / instruction decode unit) 106 is included. According to one or more embodiments of the invention, the IFU / IDU 106 may fetch and decode six instructions from a thread at a time. According to one or more embodiments of the invention, the six instructions transmitted to the configuration block 108 are six non-branch instructions, five non-branch instructions and one branch instruction, or four non-branch instructions and two. Can include branch instructions. According to one or more embodiments of the invention, the configuration block 108 includes entries in the issue queue, completion tables, mappers, register files, etc. before sending the fetched instructions to those blocks in the ISU. Check that there are enough resources for.

図1に示されたマッパー110は、プログラマの命令(例えば、論理レジスタ名)をプロセッサの物理リソース(例えば、物理レジスタ・アドレス)にマッピングする。図1には、条件レジスタ(CR:condition register)マッパー、リンク/カウント(LNK/CNT:link/count)レジスタ・マッパー、整数例外レジスタ(XER:exception register)マッパー、汎用レジスタ(GPR:general purposeregisters)およびベクトル-スカラ・レジスタ(VSR:vector-scalar register)をマッピングするための統合マッパー(Uマッパー:UMapper)、GPRおよびVSRをマッピングするための設計済みマッパー(ARCHマッパー:architected mapper)、および浮動小数点状態および制御レジスタ(FPSCR:floating point status and control register)マッパーを含む、さまざまなマッパー110が示されている。 The mapper 110 shown in FIG. 1 maps programmer instructions (eg, logical register names) to processor physical resources (eg, physical register addresses). In FIG. 1, a condition register (CR) mapper, a link / count (LNK / CNT: link / count) register mapper, an integer exception register (XER) mapper, and general purpose registers (GPR) are shown. And an integrated mapper (UMapper) for mapping vector-scalar registers (VSRs), a pre-designed mapper (ARCH mapper) for mapping GPRs and VSRs, and floating point numbers. Various mappers 110 are shown, including a floating point status and control register (FPSCR) mapper.

設定ブロック108からの出力が、現在のISU内のすべての命令を追跡するためのグローバル完了テーブル(GCT:global completion table)112にも入力される。設定ブロック108からの出力が、命令を発行キューにディスパッチするためのディスパッチ・ユニット114にも入力される。図1に示されているISUの実施形態は、CR発行キュー(CR ISQ:CR issue queue)116を含んでおり、CR発行キュー116は、CRマッパーからの命令を受信して追跡し、それらの命令を命令フェッチ・ユニット(IFU)124に発行(120)して、CR論理命令および移動命令を実行する。図1には分岐発行キュー(分岐ISQ:branch issue queue)118も示されており、分岐発行キュー118は、分岐命令およびLNK/CNT物理アドレスをLNK/CNTマッパーから受信して追跡する。分岐ISQ118は、予測された分岐アドレスまたは方向あるいはその両方が正しくなかった場合、命令をIFU124に発行して、命令フェッチをリダイレクトすることができる。 The output from the configuration block 108 is also input to the global completion table (GCT) 112 for tracking all instructions in the current ISU. The output from the configuration block 108 is also input to the dispatch unit 114 for dispatching instructions to the issue queue. The ISU embodiment shown in FIG. 1 includes a CR issue queue (CR ISQ: CR issue queue) 116, which receives and tracks instructions from the CR mapper and tracks them. The instruction is issued (120) to the instruction fetch unit (IFU) 124 to execute the CR logical instruction and the move instruction. FIG. 1 also shows a branch issue queue (branch issue queue) 118, which receives and tracks branch instructions and LNK / CNT physical addresses from the LNK / CNT mapper. The branch ISQ118 may issue an instruction to the IFU 124 to redirect the instruction fetch if the predicted branch address and / or direction is incorrect.

ディスパッチ論理およびLNK/CNTマッパーから名前が変更されたレジスタ、XERマッパー、UMapper(GPR/VSR)、ARCHマッパー(GPR/VSR)、ならびにFPSCRマッパーから出力された命令が、発行キュー102に入力される。図1に示されているように、発行キュー102は、ディスパッチされた固定小数点命令(Fx:fixed point instructions)、読み込み命令(L:loadinstructions)、格納命令(S:store instructions)、およびベクトルおよびスカラ・ユニット(VSU:vector-and-scaler unit)命令を追跡する。図1の実施形態に示されているように、発行キュー102は、2つの部分ISQ0 1020およびISQ1 1021に分割されており、各部分がN/2個の命令を保持する。プロセッサがシングルスレッド(ST)モードで実行している場合、発行キュー102が、単一のスレッドのすべての命令(この例では、N個すべての命令)を処理するために、ISQ0 1020およびISQ1 1021の両方を含んでいる単一論理の発行キューとして使用され得る。 Instructions output from the dispatch logic and the registers renamed from the LNK / CNT mapper, the XER mapper, the UMapper (GPR / VSR), the ARCH mapper (GPR / VSR), and the FPSCR mapper are input to the issue queue 102. .. As shown in FIG. 1, the issue queue 102 contains dispatched fixed point instructions (Fx), load instructions (L), store instructions (S), and vectors and scalars. -Track unit (VSU: vector-and-scaler unit) instructions. As shown in the embodiment of FIG. 1, the issue queue 102 is divided into two parts ISQ0 1020 and ISQ1 1021, each part holding N / 2 instructions. When the processor is running in single thread (ST) mode, the issue queue 102 has ISQ0 1020 and ISQ1 1021 to process all instructions in a single thread (in this example, all N instructions). Can be used as a single logical issue queue containing both.

プロセッサがマルチスレッド(MT)モードで実行している場合、ISQ0 1020が、第1のスレッドからのN/2個の命令を処理するために使用可能であり、ISQ1 1021が、第2のスレッドISQ1 1021からのN/2個の命令を処理するために使用される。 When the processor is running in multithreaded (MT) mode, ISQ0 1020 can be used to process N / 2 instructions from the first thread and ISQ1 1021 is the second thread ISQ1. Used to process N / 2 instructions from 1021.

図1に示されているように、発行キュー102は、実行ユニットの2つのグループ(1040および1041)に分割されている実行ユニット104に、命令を発行する。図1に示されている実行ユニットの両方のグループ(1040および1041)は、完全固定小数点実行ユニット(full fixed point execution unit)(完全FX0、完全FX1)、読み込み実行ユニット(LU0、LU1)、簡易固定小数点、格納データ、および格納アドレス実行ユニット(簡易FX0/STD0/STA0、簡易FX1/STD1/STA1)、ならびに浮動小数点、ベクトル・マルチメディア実行、10進浮動小数点、および格納データ実行ユニット(FP/VMX/DFP/STD0、FP/VMX/DFP/STD1)を含んでいる。LU0、簡易FX0/STD0/STA0、およびFP/VMX/DFP/STD0は、集合的に、読み込み/格納ユニット(LSU)1042を形成する。同様に、LU1、簡易FX1/STD1/STA1、およびFP/VMX/DFP/STD1は、読み込み/格納ユニット(LSU)1043を形成する。2つのLSU1042および1043は、まとめて、システム100のLSUと呼ばれる。 As shown in FIG. 1, the issue queue 102 issues an instruction to the execution unit 104, which is divided into two groups of execution units (1040 and 1041). Both groups (1040 and 1041) of execution units shown in FIG. 1 are full fixed point execution units (full FX0, full FX1), read execution units (LU0, LU1), simplified. Fixed-point, stored data, and stored address execution units (simple FX0 / STD0 / STA0, simple FX1 / STD1 / STA1), and floating point, vector multimedia execution, decimal floating point, and stored data execution units (FP / VMX / DFP / STD0, FP / VMX / DFP / STD1) is included. LU0, simplified FX0 / STD0 / STA0, and FP / VMX / DFP / STD0 collectively form a read / store unit (LSU) 1042. Similarly, LU1, Simplified FX1 / STD1 / STA1, and FP / VMX / DFP / STD1 form a read / store unit (LSU) 1043. The two LSUs 1042 and 1043 are collectively referred to as the LSU of system 100.

図1に示されているように、プロセッサがSTモードで実行している場合、実行ユニットの第1のグループ1040が、ISQ0 1020から発行された命令を実行し、実行ユニットの第2のグループ1041が、ISQ1 1021から発行された命令を実行する。プロセッサがSTモードで実行している場合の本発明の代替の実施形態では、発行キュー102内のISQ0 1020およびISQ1 1021の両方から発行された命令が、実行ユニットの第1のグループ1040および実行ユニットの第2のグループ1041内の実行ユニット1040のいずれかに含まれる実行ユニットに発行され得る。 As shown in FIG. 1, when the processor is running in ST mode, the first group 1040 of the execution units executes the instructions issued by ISQ0 1020 and the second group 1041 of the execution units. Executes the instruction issued by ISQ1 1021. In an alternative embodiment of the invention when the processor is running in ST mode, instructions issued by both ISQ0 1020 and ISQ1 1021 in the issue queue 102 are the first group 1040 of the execution unit and the execution unit. Can be issued to an execution unit included in any of the execution units 1040 in the second group 1041 of.

本発明の1つまたは複数の実施形態に従って、プロセッサがMTモードで実行している場合、実行ユニットの第1のグループ1040が、ISQ0 1020から発行された第1のスレッドの命令を実行し、実行ユニットの第2のグループ1041が、ISQ1 1021から発行された第2のスレッドの命令を実行する。 According to one or more embodiments of the present invention, when the processor is running in MT mode, the first group 1040 of execution units executes and executes the instructions of the first thread issued by ISQ0 1020. The second group 1041 of the unit executes the instruction of the second thread issued from ISQ1 1021.

本発明の実施形態が、さまざまな異なるサイズの発行キューおよびその他の要素に関して実装され得るため、図1に示されている発行キュー102内のエントリの数およびその他の要素のサイズ(例えば、バス幅、キュー・サイズ)は、実際は例示的であるよう意図されている。本発明の1つまたは複数の実施形態に従って、サイズが選択可能であるか、またはプログラム可能である。 Since embodiments of the present invention can be implemented with respect to various different sizes of issue queues and other elements, the number of entries in the issue queue 102 and the size of the other elements shown in FIG. 1 (eg, bus width). , Cue size) is intended to be exemplary in practice. The size is selectable or programmable according to one or more embodiments of the invention.

1つまたは複数の例では、システム100は、実施形態例に従って、OoOプロセッサである。図2は、本発明の1つまたは複数の実施形態に従う、実効アドレス・ディレクトリ(EAD)およびこのEADを利用するための関連するメカニズムが実装される、OoOプロセッサのプロセッサ・アーキテクチャの例示的なブロック図である。図2に示されているように、このプロセッサ・アーキテクチャは、命令キャッシュ202、命令フェッチ・バッファ204、命令デコード・ユニット206、および命令ディスパッチ・ユニット208を含んでいる。命令が、命令フェッチ・バッファ204によって命令キャッシュ202からフェッチされ、命令デコード・ユニット206に提供される。命令デコード・ユニット206は、命令をデコードし、デコードされた命令を命令ディスパッチ・ユニット208に提供する。命令ディスパッチ・ユニット208の出力が、命令の種類に応じて、グローバル完了テーブル210、ならびに分岐発行キュー212、条件レジスタ発行キュー214、統合発行キュー(unified issue queue)216、読み込み順序変更キュー218、または格納順序変更キュー220あるいはその組み合わせのうちの1つまたは複数に提供される。命令の種類は、命令デコード・ユニット206のデコーディングおよびマッピングによって決定される。発行キュー212~220は、実行ユニット222~240のうちのさまざまな実行ユニットに、入力を提供する。データ・キャッシュ250および各ユニットと共に含まれているレジスタ・ファイルは、命令で使用するためのデータを提供する。 In one or more examples, the system 100 is an OoO processor according to an embodiment. FIG. 2 is an exemplary block of the processor architecture of an OoO processor that implements an effective address directory (EAD) and related mechanisms for utilizing this EAD, according to one or more embodiments of the invention. It is a figure. As shown in FIG. 2, this processor architecture includes an instruction cache 202, an instruction fetch buffer 204, an instruction decode unit 206, and an instruction dispatch unit 208. The instruction is fetched from the instruction cache 202 by the instruction fetch buffer 204 and provided to the instruction decoding unit 206. The instruction decoding unit 206 decodes the instruction and provides the decoded instruction to the instruction dispatch unit 208. The output of the instruction dispatch unit 208, depending on the type of instruction, is the global completion table 210, as well as the branch issue queue 212, the condition register issue queue 214, the unified issue queue 216, the read order change queue 218, or It is provided to one or more of the storage order change queue 220 or a combination thereof. The type of instruction is determined by the decoding and mapping of the instruction decoding unit 206. Issue queues 212-220 provide inputs to various execution units of execution units 222-240. The data cache 250 and the register files included with each unit provide data for use in the instruction.

命令キャッシュ202は、第2のレベルの変換ユニット262およびプリデコード・ユニット270を介してL2キャッシュ260から命令を受信する。第2のレベルの変換ユニット262は、アソシエート・セグメント・ルックアサイド・バッファ(associate segment look-aside buffer)264およびトランスレーション・ルックアサイド・バッファ266を使用して、フェッチされた命令のアドレスを実効アドレスからシステム・メモリ・アドレスに変換する。プリデコード・ユニットは、L2キャッシュから着信する命令を部分的にデコードし、一意の識別情報でそれらの命令を拡大して、下流の命令デコーダの作業を簡略化する。 The instruction cache 202 receives instructions from the L2 cache 260 via the second level conversion unit 262 and predecode unit 270. The second level translation unit 262 uses the associate segment look-aside buffer 264 and the translation lookaside buffer 266 to address the fetched instructions as the effective address. To the system memory address. The pre-decoding unit partially decodes the incoming instructions from the L2 cache and expands those instructions with unique identification information, simplifying the work of the downstream instruction decoder.

命令フェッチ・バッファ204にフェッチされる命令は、命令が分岐命令である場合、分岐予測ユニット280にも提供される。分岐予測ユニット280は、分岐履歴テーブル282、復帰スタック284、およびカウント・キャッシュ286を含んでいる。これらの要素は、次に命令キャッシュからフェッチされるべき実効アドレス(EA)を予測する。分岐命令は、制御の流れが変更されるコンピュータ・プログラム内の位置である。分岐命令は、if-then-elseステートメントまたはdo-whileステートメントなどの、コンピュータ・プログラム内の制御構造から生成される低レベルの機械命令である。分岐が選択されないことがあり、その場合、制御の流れが変化せず、次に実行される命令はメモリ内のその分岐の直後の命令であり、または分岐が選択されることがあり、その場合、次に実行される命令はメモリ内のどこか他の場所にある命令である。分岐が選択される場合、新しいEAが命令キャッシュに提示される必要がある。 The instruction fetched in the instruction fetch buffer 204 is also provided to the branch prediction unit 280 if the instruction is a branch instruction. The branch prediction unit 280 includes a branch history table 282, a return stack 284, and a count cache 286. These factors then predict the effective address (EA) to be fetched from the instruction cache. A branch instruction is a position in a computer program where the flow of control is changed. A branch instruction is a low-level machine instruction generated from a control structure in a computer program, such as an if-then-else statement or a do-while statement. A branch may not be selected, in which case the flow of control does not change and the next instruction executed may be the instruction immediately following that branch in memory, or a branch may be selected, in which case. , The next instruction to be executed is an instruction somewhere else in memory. If a branch is selected, a new EA needs to be presented in the instruction cache.

分岐予測ユニットからのEAおよび関連する予測情報が、実効アドレス・ディレクトリ290に書き込まれる。後で、分岐実行ユニット222によって、このEAが確認される。このEAが正しい場合、このEAは、このアドレス領域からのすべての命令が実行を完了するまで、ディレクトリ内に残る。このEAが正しくない場合、分岐実行ユニットがアドレスをフラッシュし、修正されたアドレスがその場所に書き込まれる。EAD290は、CAMとしてのディレクトリの使用を容易にする論理ユニットも含んでいる。 The EA and related prediction information from the branch prediction unit is written to the effective address directory 290. Later, this EA is confirmed by the branch execution unit 222. If this EA is correct, it will remain in the directory until all instructions from this address area have completed execution. If this EA is incorrect, the branch execution unit flushes the address and the corrected address is written to that location. The EAD290 also includes a logical unit that facilitates the use of the directory as a CAM.

メモリから読み取る命令またはメモリに書き込む命令(読み込み命令または格納命令など)が、LS/EX実行ユニット238、240に発行される。LS/EX実行ユニットは、命令によって指定されたメモリ・アドレスを使用して、データ・キャッシュ250からデータを取得する。このアドレスは、実効アドレスであり、使用される前に、まず第2のレベルの変換ユニットを介してシステム・メモリ・アドレスに変換される必要がある。アドレスがデータ・キャッシュ内に見つからない場合、L2キャッシュに対する失敗した要求を管理するために、読み込み失敗キュー(load miss queue)が使用される。そのようなキャッシュ・ミスの不利益を減らすために、高度なデータ・プリフェッチ・エンジンが、近い将来に命令によって使用される可能性が高いアドレスを予測する。このようにして、命令がデータを必要とするときに、そのデータがデータ・キャッシュ内にすでに存在する可能性が高くなり、それによって、L2キャッシュに対する失敗した要求の長い待ち時間を防ぐ。 An instruction to read from the memory or an instruction to write to the memory (such as a read instruction or a storage instruction) is issued to the LS / EX execution units 238 and 240. The LS / EX execution unit retrieves data from the data cache 250 using the memory address specified by the instruction. This address is an effective address and must first be translated into a system memory address via a second level translation unit before it can be used. If the address is not found in the data cache, a load miss queue is used to manage the failed requests for the L2 cache. To reduce the disadvantages of such cache misses, advanced data prefetch engines predict addresses that are likely to be used by instructions in the near future. In this way, when an instruction requires data, it is more likely that the data already exists in the data cache, thereby preventing long wait times for failed requests for the L2 cache.

LS/EX実行ユニット238、240は、読み込み順序変更キュー218および格納順序変更キュー220内の命令の古さおよびメモリの依存関係を追跡することによって、プログラム順序に従わずに命令を実行する。これらのキューは、アウトオブオーダー実行が同じプログラムのインオーダー実行と一致しない結果を生成したときに、それを検出するために使用される。そのような場合、現在のプログラム・フローがフラッシュされ、再実行される。 The LS / EX execution units 238 and 240 execute instructions out of program order by tracking the age and memory dependencies of the instructions in the read order change queue 218 and the storage order change queue 220. These queues are used to detect when an out-of-order execution produces a result that does not match the in-order execution of the same program. In such a case, the current program flow is flushed and re-executed.

プロセッサ・アーキテクチャは、実効アドレス・ディレクトリ(EAD)290をさらに含んでおり、実効アドレス・ディレクトリ(EAD)290は、実効アドレスが必要とされるがパイプラインを通る必要がない場合に、実効アドレスを使用できるように、集中化された方法で、命令のグループの実効アドレスを維持する。さらに、EAD290は、アウトオブオーダー処理をサポートするための回路または論理あるいはその両方を含んでいる。図2は、分岐予測ユニット280を介してアクセスされているEAD290を示しているが、図2に示されたユニットのうちのさまざまなユニットが、分岐予測ユニット280を通る必要なしにEAD290にアクセスできるようにするための回路が提供されてよいということが、理解されるべきである。 The processor architecture further includes an effective address directory (EAD) 290, which provides an effective address when an effective address is required but does not need to go through the pipeline. Maintain the effective address of a group of instructions in a centralized way so that it can be used. In addition, the EAD290 includes circuits and / or logic to support out-of-order processing. FIG. 2 shows the EAD290 being accessed via the branch prediction unit 280, but various units of the units shown in FIG. 2 can access the EAD290 without having to go through the branch prediction unit 280. It should be understood that a circuit for doing so may be provided.

当業者は、図1~2のハードウェアが実装に応じて変わってよいということを、理解するであろう。フラッシュ・メモリ、同等の不揮発性メモリ、または光ディスク・ドライブなどの、その他の内部ハードウェアまたは周辺機器が、図1~2に示されているハードウェアに加えて、またはそれらのハードウェアの代わりに、使用されてよい。加えて、実施形態例のプロセスは、本発明の思想および範囲を逸脱することなく、前述したSMPシステム以外のマルチプロセッサ・データ処理システムに適用されてよい。 Those skilled in the art will appreciate that the hardware of FIGS. 1-2 may vary depending on the implementation. Other internal hardware or peripherals, such as flash memory, equivalent non-volatile memory, or optical disk drives, may be in addition to or in place of the hardware shown in Figures 1-2. , May be used. In addition, the process of the examples may be applied to a multiprocessor data processing system other than the SMP system described above without departing from the idea and scope of the present invention.

さらに、データ処理システム100は、クライアント・コンピューティング・デバイス、サーバ・コンピューティング・デバイス、タブレット・コンピュータ、ラップトップ・コンピュータ、電話またはその他の通信デバイス、パーソナル・デジタル・アシスタント(PDA:personal digital assistant)などを含む、複数の異なるデータ処理システムのいずれかの形態を取ってよい。一部の例では、データ処理システム100は、例えばオペレーティング・システム・ファイルまたはユーザによって生成されたデータあるいはその両方を格納するために、不揮発性メモリを提供するようにフラッシュ・メモリを使用して構成された、ポータブル・コンピューティング・デバイスであってよい。基本的に、データ処理システム100は、アーキテクチャの制限なしで、任意の既知のデータ処理システムまたは後で開発されるデータ処理システムであってよい。 In addition, the data processing system 100 includes client computing devices, server computing devices, tablet computers, laptop computers, telephones or other communication devices, personal digital assistants (PDAs). It may take any form of a plurality of different data processing systems, including. In some examples, the data processing system 100 is configured with flash memory to provide non-volatile memory, for example to store operating system files and / or user-generated data. It may be a non-volatile computing device. Basically, the data processing system 100 may be any known data processing system or a data processing system developed later, without architectural restrictions.

当業者によって理解されるであろうように、本発明は、システム、装置、または方法として具現化されてよい。1つの実施形態例では、メカニズムが、ハードウェア(例えば、プロセッサの回路、ハードウェア・モジュール、またはユニットなど)において全体的に提供される。しかし、他の実施形態例では、ソフトウェアおよびハードウェアの組み合わせが、実施形態例の特徴およびメカニズムを提供または実装するために利用されてよい。例えば、ソフトウェアは、ファームウェア、常駐ソフトウェア、マイクロコードなどで提供されてよい。以下で示されるさまざまなフローチャートは、ハードウェア、またはハードウェアとソフトウェアの組み合わせ、あるいはその両方によって実行されてよい動作の概要を提供する。 As will be appreciated by those skilled in the art, the invention may be embodied as a system, device, or method. In one embodiment, the mechanism is provided entirely in hardware (eg, processor circuits, hardware modules, or units, etc.). However, in other embodiments, a combination of software and hardware may be utilized to provide or implement the features and mechanisms of the embodiments. For example, the software may be provided in firmware, resident software, microcode, and the like. The various flowcharts shown below provide an overview of the actions that may be performed by hardware, or a combination of hardware and software, or both.

実施形態例のメカニズムが少なくとも部分的にソフトウェアにおいて実装される実施形態例では、このソフトウェアを格納する1つまたは複数のコンピュータ使用可能媒体またはコンピュータ可読媒体の任意の組み合わせが、利用されてよい。例えば、コンピュータ使用可能媒体またはコンピュータ可読媒体は、電子、磁気、光、電磁気、赤外線、または半導体のシステム、装置、またはデバイスであってよいが、これらに限定されない。コンピュータ可読媒体のさらに具体的な例(非網羅的リスト)としては、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-onlymemory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasableprogrammable read-only memoryまたはフラッシュ・メモリ)などが挙げられる。 In embodiments where the mechanisms of the embodiments are implemented, at least in part, in software, any combination of one or more computer-enabled or computer-readable media containing the software may be utilized. For example, a computer-enabled or computer-readable medium may be, but is not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, device, or device. More specific examples of computer-readable media (non-exhaustive list) include random access memory (RAM), read-only memory (ROM), and erasable programmable read-only memory (EPROM). : Erasableprogrammable read-only memory or flash memory).

通常は、すべての読み込み命令および格納命令について、EAが対応するRAに変換される。そのようなEAからRAへの変換は、命令フェッチ(I-フェッチ)の場合にも実行される。低次メモリからの命令の取得の場合、そのような変換は、通常、実効アドレスから実アドレスへのテーブル(EART:effective to real address table)を必要とした。本明細書に記載された技術的解決策では、EAからRAへの変換が、すべての読み込み命令および格納命令について実行されるのではなく、読み込み失敗、I-フェッチ失敗、およびすべての格納の場合にのみ、実行される。 Normally, all read and store instructions are converted by the EA to the corresponding RA. Such an EA to RA conversion is also performed in the case of instruction fetch (I-fetch). In the case of retrieving instructions from low-order memory, such a translation usually required an effective to real address table (EART). In the technical solution described herein, the EA to RA conversion is not performed for all read and store instructions, but for read failures, I-fetch failures, and all stores. Will only be executed.

これらの技術的解決策は、EAのみを動作に使用することによって、EAディレクトリ(L1ディレクトリとも呼ばれる)、LRQFエントリ、LMQエントリなどの、1つまたは複数のデータ構造からのRAビット(例えば、ビット8:51)の除去を容易にする。さらに、EAのみが使用されている場合、SRQ LHS RA比較論理が実行されない。そのような要素を除去することによって、使用されるプロセッサのチップ面積を削減し、したがって、通常のプロセッサを超えるチップ面積の削減を促進する。 These technical solutions use only EA for operation and RA bits (eg, bits) from one or more data structures such as EA directory (also called L1 directory), LRQF entry, LMQ entry, etc. 8:51) facilitates removal. Furthermore, if only EA is used, the SRQ LHS RA comparison logic is not executed. By removing such elements, the chip area of the processor used is reduced, thus facilitating a reduction in chip area beyond that of a normal processor.

さらに、本明細書における技術的解決策は、EAのみを使用することによって、すべての読み込みアドレスおよび格納アドレスの生成時のERATの検索を除去する。これらの技術的解決策は、ユニット全体のRAバスの切り替えをさらに除去し、高速なSRQ LHS RA camも回避する。したがって、これらの技術的解決策は、上記の動作を実行しないことによって、プロセッサが、通常のプロセッサと比較して少ない電力を消費するのを促進する。 Further, the technical solution herein eliminates the ELAT search on generation of all read and store addresses by using only the EA. These technical solutions further eliminate RA bus switching across the unit and also avoid high speed SRQ LHS RA cams. Therefore, these technical solutions facilitate the processor to consume less power compared to a normal processor by not performing the above operation.

さらに、本明細書における技術的解決策は、L1の待ち時間の改善も促進する。例えば、本明細書における技術的解決策は、除去によって、「最終的なdval」を決定することにおいて、アドレス変換が、EAからRAへの変換を実行する通常のプロセッサと比較して少なくとも1サイクル速くなる。EAのみを使用する(RA変換を行わない)ことによって、設定テーブルの複数のヒット、設定テーブルのヒット/RAの失敗などの、「悪いdval」条件を除去するため、待ち時間も改善される。同様の方法で、本明細書における技術的解決策は、L2の待ち時間の改善を促進する。 In addition, the technical solutions herein also facilitate improvements in L1 latency. For example, the technical solution herein is to determine the "final dval" by removal, where the address translation is at least one cycle compared to a normal processor performing an EA to RA translation. It will be faster. By using only the EA (without RA conversion), the waiting time is also improved because "bad dval" conditions such as multiple hits in the setting table and hits / RA failures in the setting table are eliminated. In a similar manner, the technical solutions herein facilitate improvements in L2 latency.

EAに基づくLSUのみを使用することの技術的課題は、L2からのスヌープを処理できることを含む。例えば、LSUは、RAからEAへの逆変換を含むことができる必要がある。したがって、本明細書における技術的解決策は、L2からのRAに基づくスヌープを、LSUのサブユニットへのEAに基づくスヌープに変換することを容易にする。 The technical challenges of using only EA-based LSUs include being able to handle snoops from L2. For example, the LSU needs to be able to include an inverse transformation from RA to EA. Therefore, the technical solution herein facilitates the conversion of RA-based snoops from L2 into EA-based snoops to subunits of LSU.

さらに、EAのみに基づくLSUには、同じスレッドのシノニム(すなわち、1つのスレッドからの2つの異なるEAが、同じRAにマッピングされる)を処理するという技術的課題がある。これらの技術的解決策は、本明細書に記載されたシノニム検出テーブル(SDT)またはERT削除(ERTE)テーブルのいずれかを使用して、そのような技術的課題に対処する。例えば、LHS、SHL、およびLHLにわたる、シノニムが次のように定義される場合のL1のアクセスである。
Tid = w、EA (0:51) = x => RA(8:51) = z
Tid = w、EA (0:51) = y => RA(8:51) = z
このようにして、異なるEAが同じRAに対応する。本明細書に記載された技術的解決策は、EAのシノニムを拒否すること、および対応する一次EAを使用して再開することを容易にする。
In addition, EA-only LSUs have the technical challenge of handling synonyms for the same thread (ie, two different EA's from one thread are mapped to the same RA). These technical solutions address such technical challenges using either the synonym detection table (SDT) or the ERT deletion (ERTE) table described herein. For example, access to L1 across LHS, SHL, and LHL when the synonym is defined as:
Tid = w, EA (0:51) = x => RA (8:51) = z
Tid = w, EA (0:51) = y => RA (8:51) = z
In this way, different EA's correspond to the same RA. The technical solutions described herein facilitate the rejection of EA synonyms and resumption with the corresponding primary EA.

再び図を参照すると、図3は、本発明の1つまたは複数の実施形態に従うプロセッシング・コアの読み込み/格納ユニット(LSU)104を示している。示されているLSU104は、2読み込み/2格納モードでの実行を容易にするが、本明細書に記載された技術的解決策がそのようなLSUに限定されないということに、注意するべきである。以下では、LSUの実行の流れが説明される。読み込み命令または格納命令から、EA(コンピュータ・プログラム内でプログラマによって使用される実効アドレス)が生成される。同様に、命令フェッチの場合にもEAが生成される。通常は、すべての命令について、EAがRA(EAからRAへの変換後にハードウェアによって使用される実アドレス)に変換され、技術的課題の中でも特に、より大きいチップ面積および頻繁な変換が必要だった。本明細書に記載された技術的解決策は、EAのみを使用し(RAへの変換を行わずに)、読み込み失敗時、I-フェッチ失敗時、および格納時にのみ、実効実テーブル(ERT)255を使用してRAを生成することによって、そのような技術的課題に対処する。 Referring again to the figure, FIG. 3 shows a processing core read / store unit (LSU) 104 according to one or more embodiments of the present invention. It should be noted that the LSU 104 shown facilitates execution in 2 read / 2 store modes, but the technical solutions described herein are not limited to such LSUs. .. In the following, the flow of execution of LSU will be described. An EA (effective address used by a programmer in a computer program) is generated from a read or store instruction. Similarly, an EA is generated in the case of instruction fetch. Normally, for every instruction, the EA is converted to RA (the real address used by the hardware after the conversion from EA to RA), which requires a larger chip area and frequent conversions, among other technical challenges. rice field. The technical solution described herein uses only EA (without conversion to RA) and is an effective real table (ERT) only on read failure, I-fetch failure, and storage. Such technical challenges are addressed by using 255 to generate RA.

LSU104は、読み込み順序変更キュー(LRQF)218を含んでおり、読み込み順序変更キュー(LRQF)218では、通常のLSU設計におけるLRQ218と同様に、ディスパッチから完了までのすべての読み込み動作が追跡される。LSU104は、第2の読み込み順序変更キューLRQE225をさらに含んでいる。読み込みが(キャッシュ・ミスまたは変換失敗のため、あるいは読み込みが依存する前の命令が拒否されたために)拒否された場合、発行キューから読み込みが取り出され、LRQEエントリに配置され、このLRQEエントリから読み込みが再発行される。示されているLRQE225は、12個のエントリをそれぞれ含む(合計で24個のエントリ)、2つの読み込みモード用の2つのインスタンス(LRQE0およびLRQE1)に分割される。STモードでは、スレッド/パイプに基づくパーティションが存在しない。MTモードでは、T0、T2の動作がパイプLD0で開始しており、T1、T3の動作が、再開のためのパイプLD1で開始している。ここで、Txはスレッドxであり、例えば、T0はスレッド0、T1はスレッド1、T2はスレッド2、T3はスレッド3である。本明細書では、各例がMTモードで4つのスレッドを使用しているが、他の例では、MTモードが異なる数(8、16、または任意のその他の数など)のスレッドの実行を同時に含んでよいということに、注意するべきである。1つまたは複数の例では、MTモードでのスレッドの数は構成可能である。さらに、本明細書における例では、LSU104が2つの読み込みパイプ(LD0およびLD1)を使用しているが、他の例では、パイプの数が異なっていてよい(例えば、3、4、8など)。1つまたは複数の例では、LRQF218が、パイプの数と同じ数のパーティションに分割される。 The LSU 104 includes a read order change queue (LRQF) 218, which tracks all read operations from dispatch to completion, similar to the LRQ218 in a normal LSU design. The LSU 104 further includes a second read order change queue LRQE225. If a read is rejected (because of a cache miss or conversion failure, or because an instruction before the read depends on it is rejected), the read is taken from the issue queue, placed in the RQE entry, and read from this RQE entry. Will be reissued. The LRQE225 shown is divided into two instances (LRQE0 and LRQE1) for two read modes, each containing 12 entries (24 entries in total). In ST mode, there is no thread / pipe based partition. In the MT mode, the operations of T0 and T2 are started by the pipe LD0, and the operations of T1 and T3 are started by the pipe LD1 for restarting. Here, Tx is thread x, for example, T0 is thread 0, T1 is thread 1, T2 is thread 2, and T3 is thread 3. In this specification, each example uses four threads in MT mode, but in other examples, different numbers of threads in MT mode (such as 8, 16, or any other number) can be executed simultaneously. It should be noted that it may be included. In one or more examples, the number of threads in MT mode is configurable. Further, in the examples herein, the LSU 104 uses two read pipes (LD0 and LD1), but in other examples the number of pipes may be different (eg, 3, 4, 8 etc.). .. In one or more examples, the LRQF218 is divided into as many partitions as there are pipes.

示されているように、LRQF218は、40個のエントリを(インスタンスごとに)含む、2つの読み込みモード用の2つのインスタンス(LRQF0およびLRQF1)に分割される。LRQF218は、循環する順序通りのエントリの割り当て、循環する順序通りのエントリの排出、および循環する順序通りのエントリの割り当て解除である。さらに、MTモードでは、T0、T2の動作がパイプLD0、ST0で開始しており、T1、T3の動作が、パイプLD1、ST1で開始している。STモードでは、LRQFがどのパイプ/スレッドも含まない。 As shown, the LRQF218 is split into two instances (LRQF0 and LRQF1) for two read modes, containing 40 entries (per instance). LRQF218 is the allocation of circularly ordered entries, the ejection of circularly ordered entries, and the unallocation of circularly ordered entries. Further, in the MT mode, the operations of T0 and T2 are started in the pipes LD0 and ST0, and the operations of T1 and T3 are started in the pipes LD1 and ST1. In ST mode, the LRQF does not contain any pipes / threads.

1つまたは複数の例では、SMT4モードの場合、LRQF218(および本明細書に記載されたその他の構造)が、T0:LRQF0[0:19]循環キュー、T1:LRQF1[0:19]循環キュー、およびT2:LRQF0[20:39]循環キュー、T3:LRQF1[20:39]循環キューとして分割される。 In one or more examples, in SMT4 mode, the LRQF218 (and other structures described herein) is a T0: LRQF0 [0:19] circular queue, a T1: LRQF1 [0:19] circular queue. , And T2: LRQF0 [20:39] circular queue, and T3: LRQF1 [20:39] circular queue.

1つまたは複数の例では、SMT2モードの場合、LRQF218(および本明細書に記載されたその他の構造)が、T:LRQF0[0:39]循環キューおよびT1:LRQF1[0:39]循環キューとして分割される。さらに、1つまたは複数の例では、STモードの場合、LRQF0[0:39]循環キューであり、LRQF1がLRQF0のコピーである。他のデータ構造の場合、STモードで類似するパーティション・パターンが使用され、第2のインスタンスが第1のインスタンスコピーである。 In one or more examples, in SMT2 mode, the LRQF218 (and other structures described herein) is a T: LRQF0 [0:39] circular queue and a T1: LRQF1 [0:39] circular queue. Is divided as. Further, in one or more examples, in ST mode, it is an LRQF0 [0:39] circular queue, where LRQF1 is a copy of LRQF0. For other data structures, a similar partition pattern is used in ST mode, where the second instance is the first instance copy.

相互無効化フラッシュ(XIフラッシュ:cross invalidationflush)の場合、LRQFに関して、NTC+1が、別のスレッドからのXIまたは格納排出がヒットするスレッドをフラッシュし、XIフラッシュの場合に、同期時の明示的なL/Lの順序付けのフラッシュがLSU104によって実行されないようにする。 In the case of a cross invalidation flush (XI flush), for LRQF, NTC + 1 flushes the thread that hits the XI or storage discharge from another thread, and in the case of the XI flush, the explicit L at the time of synchronization. Prevents / L ordering flushes from being performed by LSU104.

すべての格納が、SHL検出に関してLRQF218に対してチェックし、SHLの検出時に、LRQF218が、格納の後の読み込みまたはすべてのもの(命令/動作)のフラッシュを開始する。さらに、DCB命令が、SHLのケースに関してLRQF218に対してチェックし、SHLのケースの発生時に、LRQF218が、DCBの後の読み込みまたはすべてのもののフラッシュを引き起こす。さらに、すべての読み込みが、LHL検出に関してLRQF218に対してチェックし(逐次読み込みの一貫性)、LHLの検出時に、LRQF218が、より古い読み込みの後のより新しい読み込みまたはすべてのもののフラッシュを引き起こす。1つまたは複数の例では、LRQF218が、クワッドワードのアトミック性を提供し、LQがクワッドのアトミック性に関してLRQF218に対してチェックし、アトミックでない場合に、LQをフラッシュする。さらに、LARX命令の場合、LSU104がlarxヒットlarxのケースに関してLRQF218に対してチェックし、それに応じて、より古いlarx命令の後のより新しいLARXまたはすべてのものをフラッシュする。 All stores check against LRQF218 for SHL detection, and upon detection of SHL, LRQF218 initiates a read after storage or a flush of everything (instructions / actions). In addition, the DCB instruction checks against the LRQF218 for the SHL case, and when the SHL case occurs, the LRQF218 triggers a read after the DCB or a flush of everything. In addition, all reads check against LRQF218 for LHL detection (sequential read consistency), and upon detection of LHL, LRQF218 triggers newer reads or flushes of everything after older reads. In one or more examples, the LRQF218 provides the atomicity of the quad word, the LQ checks against the LRQF218 for the atomicity of the quad, and flushes the LQ if it is not atomic. Further, in the case of a LARX instruction, the LSU 104 checks against the LRQF218 for the case of a larx hit larx and accordingly flushes the newer LARX or everything after the older larx instruction.

このようにして、LRQF218は、発行から完了までのすべての読み込み動作の追跡を容易にする。LRQF218内のエントリは、キュー構造内の物理的位置であるReal_Ltag(rltag)でインデックス付けされる。LRQF218内の読み込み動作/エントリの古さが、順序通りであるVirtual_Ltag(vltag)を使用して決定される。LRQFは、GMASKを使用して読み込みをフラッシュし、一部のグループは、GTAGおよびIMASKを使用してフラッシュする。LRQF論理は、現在のiタグまたはiタグ+1あるいは正確な読み込みのiタグからフラッシュできる。 In this way, the LRQF218 facilitates tracking of all read operations from issue to completion. The entries in LRQF218 are indexed by Real_Ltag (rltag), which is a physical location in the queue structure. Read operation / entry age in LRQF218 is determined using the ordered Visual_Ltag (vltag). LRQF flashes reads using GMASK, and some groups flash using GTAG and IMASK. LRQF logic can be flushed from the current i-tag or i-tag + 1 or the exact read i-tag.

さらに、LRQFは、通常使用されるRA(8:51)フィールドを含まず、代わりにEAに基づき、ERT ID(0:6)およびEA(40:51)を含む(24ビットの節約)。SHL、LHLでのLRQFのページの一致は、ERT IDの一致に基づく。さらに、各LRQエントリは、「ページ一致強制(Force Page Match)」ビットを含んでいる。LRQエントリのERT IDに一致するERT IDが無効化された場合、ページ一致強制ビットが設定される。LRQがLHL、SHLを検出し、格納の順序付けが、ページ一致強制=1であるエントリを含めてフラッシュする。 In addition, the LRQF does not include the commonly used RA (8:51) field, but instead is based on the EA and includes the ERT ID (0: 6) and EA (40:51) (24-bit savings). Matching LRQF pages in SHL, LHL is based on matching ERT IDs. In addition, each LRQ entry contains a "Force Page Match" bit. If the ERT ID that matches the ERT ID of the LRQ entry is invalidated, the page match coercion bit is set. LRQ detects LHL, SHL and flushes including the entry whose storage order is page match forced = 1.

このようにして、LRQF218は、分割された読み込み要求キューを維持することによって、チップ面積を占有し、アドレス変換に電力を消費する複数のCAMポートの技術的課題に対処し、読み込み要求キューは、OoOプロセッサが同時に実行できる所定の数の命令および所定の数のスレッドのために分割される。 In this way, the LRQF218 addresses the technical challenges of multiple CAM ports that occupy chip area and consume power for address translation by maintaining a split read request queue. It is divided for a given number of instructions and a given number of threads that the OoO processor can execute at the same time.

LSU104のSRQ220は、40個のエントリ(インスタンスごと)の2つのインスタンスSRQR0およびSRQR1を含む、LRQF218に類似する構造を有し、SRQR0およびSRQR1は、循環する順序通りのエントリの割り当て、循環する順序通りのエントリの排出、および循環する順序通りのエントリの割り当て解除である。さらに、SRQ220は、LRQF218と同様に分割される(例えば、パイプLD0、ST0上で開始されるT0、T2の動作、パイプLD1、ST1上で開始されるT1、T3の動作、STモードではパイプ/スレッドのパーティションがない)。STモードでは、両方のコピーが同一の値を含み、MTモードでは、各コピーが異なっている。SMT4モードでは、両方のインスタンスがさらに分割され、各スレッドに、SRQ220から20個のエントリが割り当てられる(本明細書に記載されたLRQFの例示的なパーティションを参照)。1つまたは複数の例では、格納排出調停(store drain arbitration)の場合、SMT4モードで、SRQ内の読み取りポインタの多重化が実行される。代替または追加として、SMT2モードおよびSMT4モードで、SRQ0/1間の多重化が実行される。STモードでは、SRQ0に対してのみ、排出が実行される。 The SRQ220 of the LSU 104 has a structure similar to the LRQF218, including two instances SRQR0 and SRQR1 with 40 entries (per instance), where SRQR0 and SRQR1 assign entries in a circular order, in a circular order. Ejection of entries, and deallocation of entries in a circular order. Further, the SRQ220 is divided in the same manner as the LRQF218 (for example, the operation of T0 and T2 started on the pipes LD0 and ST0, the operation of the T1 and T3 started on the pipes LD1 and ST1, and the pipe / in ST mode. There is no thread partition). In ST mode, both copies contain the same value, and in MT mode, each copy is different. In SMT4 mode, both instances are further subdivided and each thread is assigned 20 entries from SRQ220 (see the exemplary partition of LRQF described herein). In one or more examples, in the case of store drain arbitration, the SMT4 mode performs multiplexing of read pointers in the SRQ. As an alternative or addition, multiplexing between SRQ0 / 1 is performed in SMT2 and SMT4 modes. In the ST mode, the discharge is executed only for SRQ0.

ここで、Txはスレッドxであり、例えば、T0はスレッド0、T1はスレッド1、T2はスレッド2、T3はスレッド3である。本明細書では、各例がMTモードで4つのスレッドを使用しているが、他の例では、MTモードが異なる数(8、16、または任意のその他の数など)のスレッドの実行を同時に含んでよいということに、注意するべきである。1つまたは複数の例では、MTモードでのスレッドの数は構成可能である。さらに、本明細書における例では、LSU104が2つの格納パイプ(ST0およびST1)を使用しているが、他の例では、格納パイプの数が異なっていてよい(例えば、3、4、8など)。1つまたは複数の例では、SRQR220が、格納パイプの数と同じ数のパーティションに分割される。 Here, Tx is thread x, for example, T0 is thread 0, T1 is thread 1, T2 is thread 2, and T3 is thread 3. In this specification, each example uses four threads in MT mode, but in other examples, different numbers of threads in MT mode (such as 8, 16, or any other number) can be executed simultaneously. It should be noted that it may be included. In one or more examples, the number of threads in MT mode is configurable. Further, in the examples herein, the LSU 104 uses two storage pipes (ST0 and ST1), but in other examples the number of storage pipes may be different (eg, 3, 4, 8 etc.). ). In one or more examples, the SRQR 220 is divided into as many partitions as there are storage pipes.

SRQ220の各エントリは、格納のTID(0:1)、ERT ID(0:6)、EA(44:63)、およびRA(8:51)を含む。LHSを検出するために、LSUは{格納のTid, EA(44:63)}を使用し、このようにしてRA LHSの別名チェックを取り除く。ERT IDは、EA(44:63)の部分的一致の投機失敗を「捕らえる」ために使用される。SQRエントリはRA(8:51)を含み、RA(8:51)は格納時に再び変換され、格納要求をL2に送信する(格納命令が排出され、発行されない)ときにのみ使用される。各SRQエントリも、「ページ一致強制」ビットを含んでいる。ページ一致強制ビットは、SRQエントリのERT IDに一致するERT IDが無効化されたときに、設定される。SRQは、ページ一致強制=1であるエントリを伴うLHSを検出できる。例えば、ページ一致強制=1であるエントリに反するLHSは、読み込み命令の拒否を引き起こす。さらに、格納排出は、SQRエントリに関してページ一致強制=1の場合に、L1キャッシュにおける失敗を強制する。これは、「拡張ストア・ヒット・リロード(Extended store hit reload)」LMQ動作と並行して動作する。 Each entry in the SRQ 220 contains a storage TID (0: 1), ERT ID (0: 6), EA (44:63), and RA (8:51). To detect LHS, LSU uses {stored Tid, EA (44:63)} and thus removes the RA LHS alias check. The ERT ID is used to "catch" the speculative failure of the EA (44:63) partial match. The SQR entry contains RA (8:51), which is converted again on storage and is used only when the storage request is sent to L2 (the storage instruction is ejected and not issued). Each SRQ entry also contains a "force page match" bit. The page match coercion bit is set when the ERT ID that matches the ERT ID of the SRQ entry is invalidated. The SRQ can detect LHS with an entry for which page match coercion = 1. For example, an LHS contrary to an entry for which page match compulsion = 1 causes the read instruction to be rejected. Further, the storage discharge forces a failure in the L1 cache when page match coercion = 1 for the SQR entry. This works in parallel with the "Extended store hit reload" LMQ operation.

例えば、LMQの場合、LMQアドレス一致={ERT ID, EAページ・オフセット(xx:51), EA(52:56)}が一致する。さらに、各LMQエントリの「ページ一致強制」ビットは、LMQエントリのERT IDに一致するERT IDが無効化されたときに、設定される(=1)。LMQは、有効なLMQエントリ[x]のページ一致強制=1および読み込み失敗のEA[52:56]=LMQエントリ[X]のEA(52:56)である場合に、読み込み失敗を拒否する。さらに、LMQは拡張ストア・ヒット・リロードを含む。例えば、LMQは、再読み込みのEA(52:56)=SRQエントリ[X]のEA(52:56)およびSRQエントリ[X]のページ一致強制=1である場合に、再読み込みの有効化を抑制する。代替または追加として、LMQは、LMQエントリ[X]のEA(52:56)=格納排出のEA(52:56)および格納排出のページ一致強制=1である場合に、再読み込みの有効化を抑制する。 For example, in the case of LMQ, LMQ address match = {ERT ID, EA page offset (xx: 51), EA (52:56)} match. Further, the "page match enforcement" bit of each LMQ entry is set when the ERT ID matching the ERT ID of the LMQ entry is invalidated (= 1). The LMQ rejects the read failure if the page match forcible = 1 of the valid LMQ entry [x] and the EA [52:56] of the read failure = the EA (52:56) of the LMQ entry [X]. In addition, LMQ includes extended store hit reloads. For example, the LMQ enables reloading when reloading EA (52:56) = EA (52:56) for SRQ entry [X] and page match enforcement = 1 for SRQ entry [X]. Suppress. As an alternative or addition, the LMQ will enable reloading if the EA (52:56) for the LMQ entry [X] = EA (52:56) for the store and discharge and page match enforcement for the store and discharge = 1. Suppress.

示されたLSU104は、チップ面積をさらに節約するために、格納データ・キュー(SDQ:Store Data Queue)をSRQ220自体の一部として折りたたむ。オペランドのサイズがSRQエントリのサイズより小さい(例えば、8バイトである)場合、オペランドがSRQ自体のエントリに格納される。ベクトル・オペランドなどの、さらに広いオペランド(例えば、16バイト幅)の場合、MTモードでは、SRQ220内の2つの連続するエントリを使用して、SRQがそれらのオペランドを格納する。STモードでは、さらに広いオペランドがSRQ0およびSRQ1(例えば、それぞれ8バイト)に格納される。 The LSU 104 shown collapses the Store Data Queue (SDQ) as part of the SRQ220 itself to further save chip area. If the size of the operand is smaller than the size of the SRQ entry (eg, 8 bytes), the operand is stored in the entry of the SRQ itself. For wider operands (eg, 16 bytes wide), such as vector operands, in MT mode, the SRQ stores those operands using two consecutive entries in the SRQ220. In ST mode, wider operands are stored in SRQ0 and SRQ1 (eg, 8 bytes each).

SRQ220は、格納、バリア、DCB、ICBI、またはTLBのタイプの動作をキューに入れる。単一のsタグが、store_agenおよびstore_dataの両方に使用される。SRQ220は、ロード・ヒット・ストア(LHS)のケース(同じスレッドのみ)を処理する。例えば、データ競合を伴う古い格納が存在しないことを保証するために、発行されたすべての読み込みがSRQ220によってチェックされる。例えば、SRQ EAアレイ内の古い格納に対して読み込みのEAおよびデータ・バイト・フラグを比較することによって、データ競合が検出される。 The SRQ220 queues storage, barrier, DCB, ICBI, or TLB type operations. A single s tag is used for both story_agen and story_data. The SRQ220 handles load hit store (LHS) cases (same threads only). For example, all reads issued are checked by SRQ220 to ensure that there are no old stores with data conflicts. Data conflicts are detected, for example, by comparing the read EA and data byte flags against the old stores in the SRQ EA array.

ディスパッチでSRQエントリが割り当てられ、ディスパッチされた命令タグ(iタグ:instructiontags)が正しい行に入力される。さらに、格納排出の発生時に、SRQエントリが割り当て解除される。1つまたは複数の例では、iタグ・アレイが「オーバーフロー」のディスパッチを保持する。例えば、望ましいSRQ内の行(例えば、SRQエントリx)がまだ使用中である場合、ディスパッチで情報がiタグ・アレイに書き込まれる。SRQエントリxが割り当て解除されるときに、SRQのオーバーフローのiタグ構造内の対応する行が読み出され、メインSRQのiタグ・アレイ構造にコピーされる(オーバーフローのiタグ構造の読み取りは、特定のスレッド/領域に関して、オーバーフローのiタグ・アレイ内に有効なエントリが存在するかどうかによって制御される)。メインSRQ0/1のiタグ・アレイがCAMポートによって処理され(またはSMT4内で1/2検索され)、ISUがiタグに基づいて格納を発行するように、格納の発行時にどの物理的行に書き込むかを決定する。SRQ220は、格納排出および割り当て解除の発生時に、iタグをISUに送信する。 SRQ entries are assigned by dispatch, and the dispatched instruction tags (i-tags: instructiontags) are entered in the correct line. Further, the SRQ entry is deallocated when the storage / discharge occurs. In one or more examples, the i-tag array holds an "overflow" dispatch. For example, if a row in the desired SRQ (eg, SRQ entry x) is still in use, the dispatch writes the information to the i-tag array. When the SRQ entry x is deallocated, the corresponding row in the SRQ overflow i-tag structure is read and copied to the main SRQ i-tag array structure (reading the overflow i-tag structure is Controlled by the existence of valid entries in the overflow i-tag array for a particular thread / region). In which physical row at the time of issuing the storage, the i-tag array of the main SRQ0 / 1 is processed by the CAM port (or searched 1/2 in SMT4) and the ISU issues the storage based on the i-tag. Decide if you want to write. The SRQ220 transmits an i-tag to the ISU when storage / discharge and deallocation occur.

図4は、1つの実施形態例に従う実効アドレス・ディレクトリ構造(L1キャッシュ)290の例示的なブロックである。1つまたは複数の例では、EADがLSU104の一部である。図3に示されているように、EAD290は、1つまたは複数のエントリ(例えば、エントリ0~N)から成り、各エントリが、1つまたは複数の命令のグループに関する情報の複数のフィールドを含んでいる。例えば、1つの実施形態例では、EAD290内の各エントリが1個~32個の命令を表してよい。EAD290内のエントリは、プロセッサのキャッシュ(例えば、図2のL2キャッシュ260)の新しいキャッシュ・ライン内にある命令のフェッチに応答して作成される。EAD290内のエントリは、追加の命令がキャッシュ・ラインからフェッチされるときに、更新される。EAD290内の各エントリは、選択された分岐(すなわち、キャッシュからフェッチされた分岐命令が「選択された」として解決される)、キャッシュ・ラインの横断(すなわち、次にフェッチされた命令が、現在のキャッシュ・ラインと異なるキャッシュ・ラインである)、またはプロセッサのパイプラインのフラッシュ(分岐予測ミスが発生した場合など)で、終了する。 FIG. 4 is an exemplary block of an effective address directory structure (L1 cache) 290 according to one embodiment. In one or more examples, EAD is part of LSU104. As shown in FIG. 3, the EAD290 consists of one or more entries (eg, entries 0-N), each entry containing multiple fields of information about a group of one or more instructions. I'm out. For example, in one embodiment, each entry in EAD290 may represent one to 32 instructions. The entry in EAD290 is created in response to an instruction fetch in a new cache line in the processor cache (eg, L2 cache 260 in FIG. 2). The entries in EAD290 are updated when additional instructions are fetched from the cache line. Each entry in EAD290 is a selected branch (ie, the branch instruction fetched from the cache is resolved as "selected"), a cache line crossing (ie, the next fetched instruction is now It ends with a cache line that is different from the cache line of) or a flush of the processor pipeline (for example, if a branch prediction error occurs).

図3に示されているように、EAD290のエントリのフィールドは、ベース実効アドレス310、第1の命令識別子320、最後の命令識別子330、終了識別子340、グローバル履歴ベクトル・フィールド(global history vector field)350、リンク・スタック・ポインタ・フィールド360、分岐選択識別子370、および分岐情報フィールド380を含んでいる。EAD290は、L1データ・キャッシュと同様に構造化される。連想構造を設定する。例えば、1つまたは複数の例では、連想構造は、8ウェイでEA(52:56)によってアドレス指定され、EA(0:51)を使用して選択される、32個のインデックスである。 As shown in FIG. 3, the fields of the entry for EAD290 are the base effective address 310, the first instruction identifier 320, the last instruction identifier 330, the end identifier 340, and the global history vector field. It includes 350, a link stack pointer field 360, a branch selection identifier 370, and a branch information field 380. The EAD290 is structured similarly to the L1 data cache. Set the associative structure. For example, in one or more examples, the associative structure is an 8-way, addressed by EA (52:56) and 32 indexes selected using the EA (0:51).

ベース実効アドレス310は、命令のグループの開始実効アドレス(EA)である。命令のグループ内の各命令は、同じベースEAおよびベースEAからのオフセットを有する。例えば、1つの実施形態例では、EAは、ビット0:63を含んでいる64ビットのアドレスである。1つの実施形態例では、ベースEAは、このEAのビット0:56を含んでよく、ビット57:61が、命令のグループ内の特定の命令に関する、ベースEAからのオフセットを表す。ビット62および63は、各命令の特定のバイトを指す。実施形態例では、各アドレスが32ビット長(すなわち、4バイト)の命令を参照し、メモリ内の各バイトがアドレス指定可能である。命令を、アドレス指定可能なサブコンポーネントにさらに分割することはできず、したがって、命令アドレスのビット62および63が常にゼロに設定される。したがって、ビット62および63は、格納する必要がなく、EADによって、ゼロであるということが常に仮定され得る。 The base effective address 310 is the starting effective address (EA) of a group of instructions. Each instruction in a group of instructions has the same base EA and offset from the base EA. For example, in one embodiment, the EA is a 64-bit address containing bits 0:63. In one embodiment, the base EA may include bits 0:56 of this EA, where bits 57:61 represent an offset from the base EA for a particular instruction within a group of instructions. Bits 62 and 63 point to a particular byte of each instruction. In the embodiment, each address refers to an instruction having a length of 32 bits (that is, 4 bytes), and each byte in the memory can be addressed. The instruction cannot be further subdivided into addressable subcomponents, so bits 62 and 63 of the instruction address are always set to zero. Therefore, bits 62 and 63 do not need to be stored and can always be assumed to be zero by EAD.

第1の命令識別子フィールド320は、EAD290のエントリに対応する命令のグループ内の第1の命令に関して、実効アドレスのオフセット・ビット(例えば、EAのビット57:61)を格納する。フィールド310からのベースEAおよび第1の命令識別子フィールド320内の実効アドレスのオフセット・ビットの組み合わせは、EAD290のエントリによって表された命令のグループ内の第1の命令にEAを提供する。この第1のフィールド320は、後で説明されるように、例えばパイプラインがフラッシュされた場合に、再フェッチ・アドレスおよび分岐予測情報を回復するために使用されてよい。 The first instruction identifier field 320 stores offset bits of the effective address (eg, bits 57:61 of the EA) for the first instruction in the group of instructions corresponding to the entry in EAD290. The combination of the base EA from field 310 and the offset bit of the effective address in the first instruction identifier field 320 provides the EA to the first instruction in the group of instructions represented by the entry in EAD290. This first field 320 may be used to recover the refetch address and branch prediction information, for example, if the pipeline is flushed, as will be described later.

最後の命令識別子フィールド330は、EAD290のエントリに対応する命令のグループ内の最後の命令に関して、実効アドレスのオフセット・ビット(例えば、EAのビット57:61)を格納する。EAD290のエントリによって表された命令のグループ内の追加の命令がフェッチされるときに、EADの論理がこのフィールドを更新する。EADの論理は、キャッシュ・ラインの横断または選択された分岐が検出されたときに、EAD290のエントリが終了することに応答して、特定のEAD290のエントリ内のこのフィールド330の更新を中断する。パイプラインのフラッシュが発生してEADのエントリの一部を消去しない限り、このフィールドは元の状態のままである。そのような場合、EADの論理が、フラッシュの結果としてエントリ内の新しい最後の命令に現在なっている命令の実効アドレスのオフセット・ビットを格納するように、このフィールドを更新する。このフィールドは、後で説明されるように、EAD290内のエントリの解放するために、最終的に完了に使用される。 The last instruction identifier field 330 stores the offset bit of the effective address (eg, bit 57:61 of the EA) for the last instruction in the group of instructions corresponding to the entry in EAD290. The logic of EAD updates this field when additional instructions in the group of instructions represented by the entry in EAD290 are fetched. The logic of EAD interrupts the update of this field 330 in a particular EAD290 entry in response to the termination of the EAD290 entry when a cache line crossing or selected branch is detected. This field remains in its original state unless a pipeline flush occurs to clear some of the EAD entries. In such cases, the EAD logic updates this field to store the offset bit of the effective address of the instruction that is currently in the new last instruction in the entry as a result of the flush. This field will eventually be used for completion to free the entry in EAD290, as described later.

終了識別子フィールド340は、EAD290のエントリが終了しており、EAD290のエントリに対応する命令グループの命令をフェッチするために、それ以上、命令フェッチが行われないということを示すために、使用される。EAD290のエントリは、キャッシュ・ラインの横断、分岐が選択されること、またはパイプラインのフラッシュを含む、さまざまな異なる理由のために終了してよい。これらの条件のいずれかが、EADのエントリが終了したことを示すように終了フィールド340内の値が設定される(例えば、「1」の値に設定される)ことを引き起こしてよい。このフィールド340は、後で詳細に説明されるように、EAD290内のエントリを解放するために、完了時に使用される。 The end identifier field 340 is used to indicate that the entry for EAD290 has been completed and no further instruction fetch is performed to fetch the instruction in the instruction group corresponding to the entry for EAD290. .. The entry in EAD290 may be terminated for a variety of different reasons, including crossing the cache line, selecting a branch, or flushing the pipeline. Any of these conditions may cause the value in the end field 340 to be set (eg, set to a value of "1") to indicate that the entry for EAD has been completed. This field 340 is used on completion to free an entry in EAD290, as described in detail later.

グローバル履歴ベクトル・フィールド350は、EAD290内のエントリを作成した第1の命令フェッチ・グループのグローバル履歴ベクトルを識別する。グローバル履歴ベクトルは、後で詳細に説明されるように、分岐が選択されたかどうかの履歴を識別するために使用される。グローバル履歴ベクトルは、分岐予測の目的に使用され、分岐が選択されたかどうかの最近の履歴に基づいて、現在の分岐が選択される可能性が高いかどうかを判定するのに役立つ。 The global history vector field 350 identifies the global history vector of the first instruction fetch group that created the entry in EAD290. The global history vector is used to identify the history of whether a branch was selected, as described in detail later. The global history vector is used for branch prediction purposes and helps determine if the current branch is likely to be selected based on the recent history of whether the branch was selected.

リンク・スタック・ポインタ・フィールド360は、EAD290内のエントリを作成した第1の命令フェッチ・グループのリンク・スタック・ポインタを識別する。リンク・スタック・ポインタは、後で詳細に説明される別の分岐予測メカニズムである。 The link stack pointer field 360 identifies the link stack pointer of the first instruction fetch group that created the entry in EAD290. Link stack pointers are another branch prediction mechanism described in detail later.

分岐選択フィールド370は、EAD290のエントリに対応する命令のグループが、分岐が選択された分岐命令を含んでいたかどうかを示す。分岐選択フィールド370内の値は、EAD290のエントリによって表された命令グループの分岐命令が選択されると予測されることに応答して、更新される。加えて、EAD290のエントリの命令内の分岐が選択された後に、終了フィールド340に適切な値を書き込むことによって、EAD290のエントリも終了される。予測時に分岐選択フィールドが投機的に書き込まれるため、分岐が実際に実行されるときに、分岐選択フィールドの値を正しい値に置き換える必要があることがある。例えば、分岐が選択されないと予測されることがあり、その場合、「0」が分岐選択フィールドに書き込まれる。しかし、後の実行において、分岐が選択されたことが検出されることがあり、その場合、「1」の値を書き込むことによって、このフィールドが修正されなければならない。分岐が誤って予測された場合にのみ、第2の書き込みが発生する。 The branch selection field 370 indicates whether the group of instructions corresponding to the entry in EAD290 contained the branch instruction for which the branch was selected. The value in the branch selection field 370 is updated in response to the expected selection of the branch instruction of the instruction group represented by the entry in EAD290. In addition, the entry for EAD290 is also terminated by writing an appropriate value in the end field 340 after the branch within the instruction for the entry for EAD290 has been selected. Since the branch selection field is speculatively written at the time of prediction, it may be necessary to replace the value of the branch selection field with the correct value when the branch is actually executed. For example, it may be predicted that no branch will be selected, in which case "0" will be written to the branch selection field. However, in later executions it may be detected that a branch has been selected, in which case this field must be modified by writing a value of "1". The second write occurs only if the branch is erroneously predicted.

分岐情報フィールド380は、分岐が解決したときに分岐予測構造を更新するために使用される種々雑多な分岐情報、または分岐命令が完了したときの設計されたEAの状態を格納する。 The branch information field 380 stores various branch information used to update the branch prediction structure when the branch is resolved, or the state of the designed EA when the branch instruction is completed.

ERT_IDフィールド385は、対応するERTエントリを識別する、ERTテーブル(さらに説明される)へのインデックスを格納する。ERTエントリが無効化された場合、関連付けられたERT_IDが無効化され、L1キャッシュおよびL1 Dキャッシュ内の関連付けられたすべてのエントリも無効化される。 The ERT_ID field 385 stores an index into the ERT table (described further) that identifies the corresponding ERT entry. If an ERT entry is invalidated, the associated ERT_ID is invalidated and all associated entries in the L1 and L1D caches are also invalidated.

ベースeatagおよびeatagオフセットという少なくとも2つの部分を含んでいる実効アドレス・タグ(eatag:effective address tag)を使用して、EAD290内のエントリがアクセスされる。1つの実施形態例では、このeatagは10ビットの値であり、64ビットの実効アドレスより相対的に非常に小さい。1つの実装例では、10ビットのeatagの値および14個のエントリというサイズを有するEAD290を使用する場合、eatagは、EAD290内のエントリを識別するための、ベースeatagと呼ばれる第1の5ビット、およびEAD290内のエントリによって表される命令のグループ内の特定の命令のオフセットを提供するための、eatagオフセットと呼ばれる第2の5ビットから成る。EAD290内のエントリを識別する5ビット内の第1のビットは、EAD290の最上位のエントリから最下位のエントリに移動するときに、循環が発生したかどうかを示すために、循環ビットとして使用されてよい。このビットは、古さの検出に使用されてよい。EAD290内のエントリを識別する5ビットのうちの第2~第5のビットは、EADのインデックスを指して、命令のベースEA(すなわち、EA(0:56))を識別するために使用されてよい。5ビットのオフセット値は、例えば、特定の命令の実効アドレスのビット57:61を提供するために使用されてよい。この例示的なeatagが、以下に示される。
eatag(0:9)=row(0:4)||offset(0:4)
row(0):EADの最上位のエントリから最下位のエントリへの移動時に循環が発生したかどうかを示すEADの循環ビット。
row(1:4):命令のEA(0:56)を決定するために使用される14エントリのEADへのインデックス。
offset(0:4):命令のEAのビット57:61。
An entry in EAD290 is accessed using an effective address tag (eatag) that contains at least two parts, the base eatag and the eatag offset. In one embodiment, this eatag is a 10-bit value, much smaller than a 64-bit effective address. In one implementation, when using an EAD290 with a value of 10 bits and a size of 14 entries, the offset is a first 5 bit, called the base offset, for identifying the entries in the EAD290. And consists of a second 5 bits called the eatag offset to provide the offset for a particular instruction within the group of instructions represented by the entries in EAD290. The first bit in the five bits that identifies the entry in EAD290 is used as a circular bit to indicate whether a cycle has occurred when moving from the most significant entry to the least significant entry in EAD290. It's okay. This bit may be used to detect age. The second to fifth bits of the five bits that identify the entry in the EAD290 point to the index of the EAD and are used to identify the base EA of the instruction (ie, EA (0:56)). good. The 5-bit offset value may be used, for example, to provide bits 57:61 of the effective address of a particular instruction. This exemplary eatag is shown below.
eatag (0: 9) = low (0: 4) || offset (0: 4)
low (0): Circulation bit of the EAD indicating whether or not a cycle has occurred when moving from the highest entry to the lowest entry of the EAD.
low (1: 4): Index to EAD of 14 entries used to determine the EA (0:56) of the instruction.
offset (0: 4): EA bit 57:61 of the instruction.

図5は、本発明の1つまたは複数の実施形態に従う例示的な実効実テーブル(ERT)構造を示している。1つまたは複数の例では、ERT255が合計で128個のエントリを含んでいるが、他の例では、エントリの総数が異なることができるということ、およびさらに、エントリの数が選択可能またはプログラム可能であってよいということに注意するべきである。さらに、LSU104が複数のパイプを使用する場合、各パイプが、個別のパーティションをERT255内で有する。1つまたは複数の例では、ERT255内のエントリの所定の最大数が、パイプ間で均等に分割される。例えば、2つのパイプ(すなわち、別々に並列な2つの命令)の場合、LSUは、それぞれ64個(半分)のエントリを含む、ERT255の2つのパーティション(例えば、ERT0およびERT1)を維持する。例えば、LD0およびST0はERT0を使用し、LD1およびST1はERT1を使用する。STモードでは、ERT255の第1のパーティションが、第1のパーティションのコピーである他のパーティションと共に使用され、例えば、ERT0が、ERT0のコピーであるERT1と共に使用される。代替として、1つまたは複数の例では、LSUが単一の読み込みパイプおよび単一の格納パイプを使用する場合、ERT255全体が単一のパーティションとして使用される。以下では、特に指定されない限り、ERT255のいずれか1つのパーティションについて説明する。 FIG. 5 shows an exemplary effective real table (ERT) structure according to one or more embodiments of the invention. In one or more examples, the ERT255 contains a total of 128 entries, but in other examples the total number of entries can be different, and the number of entries is selectable or programmable. It should be noted that it may be. Further, if the LSU 104 uses multiple pipes, each pipe has a separate partition within the ERT255. In one or more examples, the predetermined maximum number of entries in ERT255 is evenly divided between the pipes. For example, in the case of two pipes (ie, two separately parallel instructions), the LSU maintains two partitions of ERT255 (eg, ERT0 and ERT1), each containing 64 (half) entries. For example, LD0 and ST0 use ERT0, and LD1 and ST1 use ERT1. In ST mode, the first partition of ERT255 is used with other partitions that are copies of the first partition, for example ERT0 is used with ERT1 that is a copy of ERT0. Alternatively, in one or more examples, if the LSU uses a single read pipe and a single storage pipe, the entire ERT255 is used as a single partition. In the following, unless otherwise specified, any one partition of ERT255 will be described.

ERT255は、有効なERTエントリを含み、一般に、L1 I-キャッシュもしくはD-キャッシュ・ディレクトリ(EAD290)、あるいはSRQエントリまたはLRQFエントリまたはLMQエントリ内のアクティブなページに対して存在する。言い換えると、ERT255は、LSUおよびIFU(L1 DC、SRQ、LRQE、LRQF、LMQ、IC)内のアクティブなすべてのRPNのテーブルである。1つまたは複数の例では、プロセッサ106がSTモードで動作している場合、ERT255内のすべてのエントリが、実行されている単一のスレッドに使用される。代替として1つまたは複数の例では、ERT255内のエントリが複数のセットに分割され、STモードでは、各セットが同じ内容を含む。例えば、ERT255が合計で128個のエントリを含んでおり、最大2つのスレッドをサポートする場合、プロセッサがSTモードで動作しているときに、ERT255は、それぞれ64個のエントリの2つのセットを含み、それら2つのセットは同じ内容を含む。 The ERT 255 contains a valid ERT entry and is generally present for the L1 I-cache or D-cache directory (EAD290), or for the active page within the SRQ entry or LRQF entry or LMQ entry. In other words, ERT255 is a table of all active RPNs in LSUs and IFUs (L1 DC, SRQ, LRQE, LRQF, LMQ, IC). In one or more examples, when processor 106 is operating in ST mode, all entries in ERT255 are used for a single thread running. Alternatively, in one or more examples, the entries in ERT255 are split into multiple sets, and in ST mode, each set contains the same content. For example, if the ERT255 contains a total of 128 entries and supports up to 2 threads, then the ERT255 contains 2 sets of 64 entries each when the processor is operating in ST mode. , Those two sets contain the same content.

代替として、プロセッサ106がMTモードで動作している場合、ERTエントリが、実行されているスレッド間で分割される。例えば、2つのスレッドの場合、ERTエントリが2つの等しいセットに分割され、エントリの第1のセットが第1のスレッドに関連付けられ、エントリの第2のセットが第2のスレッドに関連付けられる。例えば、LD0パイプのL1の1つのコピーが失敗し、ST0パイプが、T0/T2 I-フェッチ:ERT0を開始して、SMT2モードでT0を処理し、SMT4モードでT0/T2を処理し、LD1パイプのL1の1つのコピーが失敗し、ST1パイプが、T1/T3 I-フェッチ:ERT1を開始して、SMT2モードでT1を処理し、SMT4モードでT1/T3を処理する。 Alternatively, when processor 106 is operating in MT mode, ERT entries are split between running threads. For example, in the case of two threads, the ERT entry is split into two equal sets, the first set of entries is associated with the first thread, and the second set of entries is associated with the second thread. For example, one copy of L1 in the LD0 pipe fails, the ST0 pipe initiates T0 / T2 I-fetch: ERT0, processes T0 in SMT2 mode, processes T0 / T2 in SMT4 mode, and LD1. One copy of L1 of the pipe fails and the ST1 pipe initiates T1 / T3 I-fetch: ERT1 to process T1 in SMT2 mode and T1 / T3 in SMT4 mode.

1つまたは複数の例では、各ERTエントリが、少なくとも、ERT_ID(0:6)、Tid_en(0:1)、ページ・サイズ(0:1)、EA(0:51)、およびRA(8:51)というERTフィールドを含む。ERT_IDフィールドは、ERTエントリごとの一意のインデックスである。例えば、ERT_IDは、ERTエントリを識別する連続的番号を含んでよい。ERT_IDは、EAD290のERT_IDフィールド285、およびLSUによって使用される他のデータ構造に格納される。TID_enフィールドは、エントリが、MTモードで使用されることに対して有効化されているかどうかを示し、1つまたは複数の例では、ERTエントリを使用している命令のスレッド識別子を示す。さらに、ページ・サイズは、ERTエントリが参照するメモリのページ・サイズを示す。RAは、ERTエントリに関連付けられた実アドレスを含む。 In one or more examples, each ERT entry has at least ERT_ID (0: 6), Tid_en (0: 1), page size (0: 1), EA (0:51), and RA (8: 1). 51) includes the ERT field. The ERT_ID field is a unique index for each ERT entry. For example, the ERT_ID may include a serial number that identifies the ERT entry. The ERT_ID is stored in the ERT_ID field 285 of EAD290, and other data structures used by LSU. The TID_en field indicates whether the entry is enabled for use in MT mode and, in one or more examples, the thread identifier of the instruction using the ERT entry. In addition, the page size indicates the page size of the memory referenced by the ERT entry. The RA contains the real address associated with the ERT entry.

RAが命令の実行を完了するために使用される場合、LSUはERT255のみを参照する。本明細書において説明されているように、ERT255は、1.Iフェッチ、読み込み、または格納がL1キャッシュに失敗する、2.コア内の別のスレッドからの格納、3.別のコアからのスヌープ(XI)、ならびに4.TLBおよびSLBの無効化という4つの機能に関して、LSUによって参照される。 When RA is used to complete the execution of an instruction, LSU refers only to ERT255. As described herein, ERT255 is 1. 2. I fetch, read, or store fails L1 cache. 2. Storage from another thread in the core. Snoop (XI) from another core, as well as 4. Referenced by LSU for four functions: TLB and SLB disabling.

Iフェッチ、読み込み、または格納がL1キャッシュに失敗する第1のケースでは、EAおよびthread_idが、ERT255のインデックスを指すために使用され、有効なERTエントリが存在する場合、対応するERTエントリからのRAがL2キャッシュに送信される。ERTの失敗、すなわち、EAおよびthread_idの有効なERTエントリが存在しない場合、SLB/TLBが使用される。 In the first case where I fetch, read, or store fails L1 cache, EA and threat_id are used to point to the index of ERT255, and if a valid ERT entry exists, RA from the corresponding ERT entry. Is sent to the L2 cache. SLB / TLB is used if the ERT fails, i.e., if there are no valid ERT entries for EA and threat_id.

コア内の別のスレッドからの格納の第2のケースでは、SRQから排出された格納が、別のスレッドからのヒットに関して、ERT255およびERTEテーブル(さらに説明される)をチェックする。異なるスレッドからのヒットが存在しない場合、同じRAを使用している別のスレッドからの読み込みが存在しない。同じRAを使用している異なるスレッドからのヒットが存在する場合、LSUがLRQをチェックする。まれではあるが、別のスレッドによってRAが使用される場合、別のスレッドからのヒットが存在する。それに応じて、LSUが、共通のRAに関連するEAを検出するために、ERTテーブル400を検索する。次にEAが、一致に関してLRQを調べるために使用される(そのサイクル内の格納の発行を拒否する)。LRQがスレッドごとに分割されるため、LSUは関連するスレッドのLRQのみを調べる。一致する読み込みがLRQ内に存在する場合、LSUが、一致する読み込みのうちの最も古い読み込みをフラッシュする。 In the second case of storage from another thread in the core, the storage ejected from the SRQ checks the ERT255 and ERTE tables (discussed further) for hits from another thread. If there are no hits from different threads, then there are no reads from another thread using the same RA. If there are hits from different threads using the same RA, LSU checks the LRQ. In rare cases, if RA is used by another thread, there will be hits from another thread. Accordingly, LSU searches the ERT table 400 to detect EA associated with a common RA. The EA is then used to look up the LRQ for a match (rejects the issuance of storage within that cycle). Since the LRQ is divided for each thread, the LSU only looks at the LRQ of the associated thread. If a matching read exists in the LRQ, the LSU flushes the oldest of the matching reads.

プロセッサの別のコアからのスヌープの第3のケースでは、LSUが第2のケースと同様に動作し、実行されている他のスレッドのいずれかからのヒットに関してチェックする。TLB/SLBが無効化されるケースでは、ERT255も無効化される。 In the third case of snooping from another core of the processor, LSU behaves like the second case and checks for hits from any of the other threads running. In cases where the TLB / SLB is disabled, the ERT255 is also disabled.

図6は、本発明の1つまたは複数の実施形態に従う、LSUによって命令を実行するためにメモリにアクセスするための例示的な方法のフローチャートを示している。この命令は、OoOプロセッサ106の読み込み、格納、または命令フェッチであってよい。505および510に示されているように、命令の受信時に、LSUが、命令のパラメータを使用して、EAD290がその命令に対応するエントリを含んでいるかどうかをチェックする。1つまたは複数の例では、チェックに使用されるパラメータは、特に、スレッド識別子、ページ・サイズ、EAを含む。 FIG. 6 shows a flow chart of an exemplary method for accessing memory to execute an instruction by LSU, according to one or more embodiments of the invention. This instruction may be a read, store, or instruction fetch of the OoO processor 106. Upon receipt of an instruction, as shown in 505 and 510, the LSU uses the parameters of the instruction to check if the EAD290 contains an entry corresponding to that instruction. In one or more examples, the parameters used for the check include, in particular, the thread identifier, page size, EA.

LSUで、EAD290内のEADヒットが発生した(すなわち、命令のEAがEADテーブル300内のエントリに一致する)場合、520に示されているように、LSUが、一致するEADエントリの内容を読み取り、対応するERTエントリを決定する。各EADエントリは、ERT_ID(0:6)フィールド285を含んでいる。前述したように、ERTエントリが無効化された場合、関連付けられたERT_IDが無効化され、EADテーブル300内の関連付けられたすべてのエントリも無効化される。したがって、ERT_IDフィールド285を使用して、読み込み/格納命令のERTエントリを検出できるため、EADヒットはERTヒットを意味する。したがって、EADヒットの場合、対応するEADエントリの識別後に、LSUがEADエントリからERT_IDを読み出し、530に示されているように、SRQ、LMQ、またはLRQF、あるいはその組み合わせに送信する。SRQ、LMQ、またはLRQF、あるいはその組み合わせは、識別されたEADエントリからのEAを使用する。RAを使用する格納命令の場合、540および545に示されているように、ERTエントリからのRAが、L2にアクセスするために読み出される。したがって、格納命令以外のどの場所でもRAが使用されないため、本明細書における技術的解決策を実装するコアは、EA専用コアと呼ばれる。 If an EAD hit in EAD290 occurs in LSU (ie, the EA of the instruction matches an entry in EAD table 300), then LSU reads the contents of the matching EAD entry, as shown in 520. , Determine the corresponding ERT entry. Each EAD entry contains an ERT_ID (0: 6) field 285. As mentioned above, when an ERT entry is invalidated, the associated ERT_ID is invalidated and all associated entries in the EAD table 300 are also invalidated. Therefore, an EAD hit means an ERT hit because the ERT_ID field 285 can be used to detect an ERT entry for a read / store instruction. Thus, in the case of an EAD hit, after identifying the corresponding EAD entry, LSU reads the ERT_ID from the EAD entry and sends it to SRQ, LMQ, or LRQF, or a combination thereof, as shown in 530. The SRQ, LMQ, or LRQF, or a combination thereof, uses the EA from the identified EAD entry. For storage instructions using RA, RA from the ERT entry is read to access L2, as shown in 540 and 545. Therefore, since RA is not used anywhere other than the storage instruction, the core that implements the technical solution herein is referred to as the EA dedicated core.

ここで、命令がEAD290において失敗するケース、すなわち、命令のEAに一致するエントリがEADテーブル300内に存在しないケースについて検討する。550に示されているように、thread_idおよびEAが、ERT255からの各エントリに対して比較される。555および530に示されているように、ERTヒットが発生した場合、すなわち、ERTエントリがパラメータに一致する場合、LSUがRA(8:51)をERTエントリから読み出す。読み込み要求の場合、LSUが、アクセスするためにRAをL2キャッシュに送信する(530)。540~545に示されているように、格納命令の場合、LSUがRAをSRQに格納し、その後、格納がL2キャッシュに排出されるときに、RAをL2キャッシュに送信する。 Here, consider the case where the instruction fails in EAD290, that is, the case where the entry matching the EA of the instruction does not exist in the EAD table 300. As shown in 550, threat_id and EA are compared for each entry from ERT255. As shown in 555 and 530, if an ERT hit occurs, i.e., if the ERT entry matches a parameter, LSU reads RA (8:51) from the ERT entry. In the case of a read request, the LSU sends RA to the L2 cache for access (530). As shown in 540-545, in the case of a storage instruction, the LSU stores the RA in the SRQ and then sends the RA to the L2 cache when the storage is drained into the L2 cache.

555および560に示されているように、ERTの失敗が発生した場合、LSUがERT255の再読み込みを開始する。さらに、ERTエントリの置き換えが開始される。ERTエントリの置き換えはLRUに基づき、LSUは、このプロセスの間に、アウトオブオーダー・ウィンドウ内のシノニムを確実に追跡する。 As shown in 555 and 560, if an ERT failure occurs, the LSU initiates a reload of the ERT 255. In addition, ERT entry replacement is initiated. The replacement of ERT entries is based on LRU, which ensures that synonyms in the out-of-order window are tracked during this process.

このようにして、読み込みに関して上記の方法を実装することによって、EAに基づくL1ディレクトリ内にEAヒットが存在する場合、アドレス変換が実行されない。これによって、L1ディレクトリがRAに基づく通常のプロセッサを改良し、L1ディレクトリでの読み込みの失敗の場合に、L2ディレクトリおよびその先に送信されるRAを取得する変換のために、EAをEARTテーブルに送信することを引き起こす。 By implementing the above method for reading in this way, address translation is not performed if an EA hit exists in the EA-based L1 directory. This improves the normal processor based on the L1 directory and puts the EA in the EAR table for conversion to get the RA sent to the L2 directory and beyond in the event of a read failure in the L1 directory. Cause to send.

さらに、格納の場合、本明細書に記載された方法では、LSUが、ERTテーブルを調べてRAを決定する必要があり、その後、このRAは、格納がSRQから排出されるときにキャッシュ(L1、L2、メモリ)まで排出するために、SRQRに格納される。SRQRは、すべてのRAを格納のために保持する。RAは、ネスト(すなわち、L2、メモリ、およびメモリ・サブシステムのその他のユニット)に排出するためにのみ格納される。RAは、通常の解決策で使用されているように、ロード・ヒット・ストア、ストア・ヒット・ロード、ロード・ヒット・ロードのいずれのタイプのアウトオブオーダー実行のハザード検出にも、使用されることがない。格納のためのRA計算は、格納の完了後にLSUが格納に関する割り込みを処理できないため、格納が完了する前に発生する(格納は、アドレス変換に関連する割り込みを生成することがあり、この割り込みは、格納が完了する前に処理される)。ここで、格納が(SRQRから)発行されるときにRA計算が実行され、このようにして、LSUがアドレス変換を実行する必要がないようにする。このようにして、格納が発行され、順序に従わずに実行されてから、順序通りに完了し、その後、格納がSRQから順序通りに排出される。格納が排出されるまで、他のスレッドまたはコアは、その格納について知らない(現在のスレッドのみが知っている)。格納がSRQから排出された後に、その格納がL1(ラインがL1内にすでに存在する場合)およびL2キャッシュ(キャッシングが有効化されている場合)に書き込まれ、その時点で格納が、システム100内の他のすべてのスレッドおよびコアに知られる。 Further, in the case of storage, the method described herein requires the LSU to examine the ERT table to determine the RA, after which this RA caches (L1) when the storage is ejected from the SRQ. , L2, memory), it is stored in the SRQR. SRQR holds all RAs for storage. RA is stored only for ejection to nests (ie, L2, memory, and other units of the memory subsystem). RA is also used to detect hazards for out-of-order executions of any type of load-hit store, store-hit-load, or load-hit-load, as used in normal solutions. There is no such thing. The RA calculation for storage occurs before the storage is complete because the LSU cannot handle the storage-related interrupt after the storage is complete (the storage may generate an interrupt related to address translation, which is an interrupt. , Processed before storage is complete). Here, the RA calculation is performed when the storage is issued (from SRQR), thus eliminating the need for the LSU to perform address translation. In this way, the storage is issued, executed out of order, then completed in order, and then the storage is ejected from the SRQ in order. No other thread or core knows about the storage (only the current thread knows) until the storage is ejected. After the store is ejected from the SRQ, the store is written to the L1 (if the line already exists in L1) and the L2 cache (if caching is enabled), at which point the store is in system 100. Known to all other threads and cores.

EAに基づくL1 I-キャッシュに失敗した命令フェッチの場合、ERT255を使用してEAがRAに変換され、I-キャッシュ・ラインをフェッチするためにRAがネストに送信される。ここで、LHS(ロード・ヒット・ストア)、SHL(ストア・ヒット・ロード)、およびLHL(ロード・ヒット・ロード)が、EAに基づくL1キャッシュ(EAD290)内のディレクトリ・エントリに格納されたEAおよびERTインデックスに基づいて、すべて決定される。EADテーブル300内のすべてのエントリは、ERTテーブル400において有効な変換を有しており、LHS、SHL、およびLHLが決定された後に、その変換が使用され得る。ERTエントリが無効化された場合、対応するL1キャッシュ・エントリが無効化される。 For instruction fetches that fail the L1 I-cache based on the EA, the EA is converted to RA using ERT255 and the RA is sent to the nest to fetch the I-cache line. Here, the LHS (load hit store), SHL (store hit load), and LHL (load hit load) are stored in a directory entry in the EA-based L1 cache (EAD290). And all are determined based on the ERT index. All entries in the EAD table 300 have a valid transformation in the ERT table 400, which transformations can be used after the LHS, SHL, and LHL have been determined. If an ERT entry is invalidated, the corresponding L1 cache entry is invalidated.

読み込み順序変更キューであるLRQFは、ディスパッチから完了までのすべての読み込み動作が追跡されることを保証する。読み込みが(キャッシュ・ミスまたは変換失敗のため、あるいは読み込みが依存する前の命令が拒否されたために)拒否された場合、発行キューから読み込みが取り出され、LRQEに配置され、このLRQEから読み込みが再発行される。 The read order change queue, LRQF, ensures that all read operations from dispatch to completion are tracked. If the read is rejected (because of a cache miss or conversion failure, or because the instruction before the read depends on it is rejected), the read is taken from the issue queue, placed on the LRQE, and read again from this LRQE. publish.

図7は、本発明の1つまたは複数の実施形態に従う、ERTを再度読み込むための方法のフローチャートを示している。ERTの再読み込みは、ERTの失敗に応答して、ERTの失敗に基づいてERT内のエントリの作成または更新を引き起こす。ERTは、ERT255に追加されるRAを受信し、605に示されているように、そのRAをERT0およびERT1内の各エントリと比較する。610および615に示されているように、そのRAがERT255内に存在せず、新しいエントリを作成できる場合、そのRAを格納するために、ERT255が新しいERT_IDを含む新しいエントリを作成する。新しいエントリは、実行中のスレッドが第1のスレッドまたは第2のスレッドであることに基づいて、それぞれERT0またはERT1のいずれかに作成される。プロセッサがSTモードで動作している場合、ERT0が更新される。ERT255が新しいエントリのための空いているスロットを含んでいない場合、615に示されているように、最長時間未使用またはその他の手法に基づいて、既存のエントリが置き換えられる。 FIG. 7 shows a flow chart of a method for reloading an ERT according to one or more embodiments of the present invention. Reloading the ERT causes the creation or update of entries in the ERT based on the failure of the ERT in response to the failure of the ERT. ERT receives RA added to ERT255 and compares that RA with each entry in ERT0 and ERT1 as shown in 605. As shown in 610 and 615, if the RA does not exist in the ERT255 and a new entry can be created, the ERT255 creates a new entry containing the new ERT_ID to store the RA. New entries are created in either ERT0 or ERT1, respectively, based on the running thread being the first thread or the second thread. If the processor is operating in ST mode, ERT0 is updated. If the ERT 255 does not contain an empty slot for a new entry, the existing entry will be replaced based on the longest unused or other method, as shown in 615.

受信されたRA(再読み込み中のRA)と同じRAを含むERT255内の既存のエントリが検出された場合、620に示されているように、ERT255が、既存のエントリのページ・サイズ(0:1)を受信されたRAのページ・サイズと比較する。既存のエントリのページ・サイズが再読み込み中のRAのページ・サイズより小さい場合、625に示されているように、そのRAの既存のエントリがERT255から除去され、より大きいページ・サイズを有するRAのために、新しいERT_IDを含む新しいエントリが追加される。既存のエントリが同じページ・サイズまたはより大きいページ・サイズを有しており、実装がSDTを使用している場合、627に示されているように、再読み込み中のRAのためのエントリがSDT内に作成される。LSUがERTEを使用している場合、この動作が実行されなくてよいということに注意するべきである。 If an existing entry in ERT255 that contains the same RA as the received RA (RA being reloaded) is detected, the ERT255 will have the page size of the existing entry (0 :), as shown in 620. Compare 1) with the page size of the received RA. If the page size of an existing entry is less than the page size of the RA being reloaded, then as shown in 625, the existing entry for that RA is removed from the ERT255 and the RA with the larger page size. A new entry is added for this, including the new ERT_ID. If an existing entry has the same or larger page size and the implementation is using SDT, then the entry for RA being reloaded is SDT, as shown in 627. Created within. It should be noted that this operation does not have to be performed if the LSU is using ERTE.

既存のエントリのページ・サイズが再読み込み中のRAと同じサイズである場合、630に示されているように、ERT255は、既存のエントリが実行中のスレッドのローカルERT上にあるかどうかをチェックする。この場合、ローカルERTとは、実行されているスレッドに関連付けられているERT(例えば、第1のスレッドの場合はERT0、第2のスレッドの場合はERT1)のことを指す。632に示されているように、RAのヒットが他のERT(すなわち、ローカルERTでないERT)内に存在する場合、ERT255が、非ローカルERT内のERT_IDに一致するERT_IDを含む新しいエントリをローカルERT内に作成する。例えば、RAのヒットが、スレッド0によって実行されている命令のERT1内に存在する場合、ERT1内のエントリに一致するERT_IDを含むエントリがERT0内に作成される。 If the page size of an existing entry is the same size as the RA being reloaded, ERT255 will check if the existing entry is on the local ERT of the running thread, as shown in 630. do. In this case, the local ERT refers to the ERT associated with the thread being executed (eg, ERT0 for the first thread, ERT1 for the second thread). As shown in 632, if an RA hit is in another ERT (ie, an ERT that is not a local ERT), the ERT 255 will make a new entry containing an ERT_ID that matches the ERT_ID in the non-local ERT. Create in. For example, if the RA hit is in ERT1 of the instruction being executed by thread 0, an entry containing the ERT_ID that matches the entry in ERT1 will be created in ERT0.

RAのヒットがローカルERTインスタンス上に存在し、EAも一致する場合、EAとRAの両方が既存のエントリと一致したが、このスレッドに関してERTの再読み込みを引き起こすERTの失敗が存在したため、ERTは、そのことが、2つのスレッドが同じEA-RA間のマッピング(同じページ・サイズを有する)を共有しているということを示していると見なす。したがって、634に示されているように、再読み込みスレッドに対応するビットに関する既存の一致するエントリ内のtid_en(0)ビットまたはtid_en(1)ビットがオンになって、このケースを示す。 If the RA hit is on the local ERT instance and the EA also matches, then both the EA and RA matched the existing entry, but there was an ERT failure that caused the ERT to reload for this thread, so the ERT , That is considered to indicate that the two threads share the same mapping between EA-RA (having the same page size). Therefore, as shown in 634, the tid_en (0) or tid_en (1) bits in the existing matching entry for the bit corresponding to the reload thread are turned on to indicate this case.

636に示されているように、RAのヒットがローカルERTインスタンス上に存在し、EAが既存のエントリに一致せず、既存のエントリが、再読み込み中のRAと同じスレッド用である場合、ERTは、2つの異なるEAが同じスレッドからの同じRAにマッピングされる、別名化のケースを識別する。プロセッサがSDTに基づく実装を使用している場合、既存の一致するエントリのERT_ID、EAオフセット(40:51)にマッピングされるシノニムのエントリが、SDTに導入される。プロセッサがERTEに基づく実装を使用する場合、LSUは、命令が非投機的になるまで、その命令を拒否し、そのとき、ERTからエントリを削除し、エントリをERTEに追加する。 As shown in 636, if an RA hit exists on a local ERT instance, the EA does not match an existing entry, and the existing entry is for the same thread as the RA being reloaded, then the ERT Identify the case of aliasing where two different EA are mapped to the same RA from the same thread. If the processor is using an SDT-based implementation, an entry for the synonym that maps to the ERT_ID, EA offset (40:51) of the existing matching entry is introduced into the SDT. If the processor uses an ERTE-based implementation, LSU rejects the instruction until it becomes non-speculative, then removes the entry from the ERT and adds the entry to the ERTE.

638に示されているように、RAのヒットがローカルERTインスタンス上に存在し、EAが既存のエントリに一致せず、既存のエントリが、異なるスレッド用である場合、ERTは、2つのEAが異なるスレッドからの同じRAにマッピングされる、別名化のケースを識別する。プロセッサがSDTに基づく実装を使用している場合、既存の一致するエントリのERT_ID、EAオフセット(40:51)にマッピングされるシノニムのエントリが、SDTに導入される。プロセッサがERTEに基づく実装を使用している場合、新しいERT_IDを使用して、ERTの失敗が発生したスレッドのみに有効なtid_enを含む新しいローカルERTエントリが追加される。 As shown in 638, if an RA hit exists on a local ERT instance, the EA does not match an existing entry, and the existing entry is for a different thread, then the ERT will have two EA's. Identify cases of aliasing that are mapped to the same RA from different threads. If the processor is using an SDT-based implementation, an entry for the synonym that maps to the ERT_ID, EA offset (40:51) of the existing matching entry is introduced into the SDT. If the processor is using an ERTE-based implementation, the new ERT_ID will be used to add a new local ERT entry containing tid_en that is valid only for the thread in which the ERT failed.

上記の方法は、ERTEに基づく実装において、同じRAを有しているが異なるEAを有している2つのスレッドが、2つの異なるERTエントリを使用し、SDTに基づく実装において、2つのスレッドが同じRAを有しているが異なるEAを有している場合に、変換のうちの1つがERTエントリを使用し、他の変換がSDTエントリを使用するということを、容易にする。したがって、ERTエントリは、tid_enフィールドをERTエントリ内に含むことによって、同じEAおよび同じRAが異なるスレッドにわたって使用されるというケースを容易にする。例えば、ERT0インスタンスではTid_en(0:1) = {tid 0 en, tid 1 en}、ERT1インスタンスではTid_en(0:1) = {tid 1 en, tid 1 en}というようになる。さらに、ERTエントリは、複数のエントリを各スレッド識別子と共にERT0およびERT1内に含むことによって、同じEAが異なるスレッドにわたって異なるRAに対応するというケースを容易にする。ERTエントリは、同じRAに対応する異なるEAを伴うケース(同じスレッドまたは異なるスレッドのケース)もサポートする。ここで、実装がERTEまたはSDTのいずれを使用するかに基づいて、2つのケースがさらに説明される。 In the above method, in an ERTE-based implementation, two threads with the same RA but different EA use two different ERT entries, and in an SDT-based implementation, two threads It facilitates that one of the conversions uses the ERT entry and the other conversion uses the SDT entry when they have the same RA but different EA. Therefore, the ERT entry facilitates the case where the same EA and the same RA are used across different threads by including the tid_en field within the ERT entry. For example, in the ERT0 instance, Tid_en (0: 1) = {tid 0 en, tid 1 en}, and in the ERT1 instance, Tid_en (0: 1) = {tid 1 en, tid 1 en}. Further, the ERT entry facilitates the case where the same EA corresponds to different RAs across different threads by including multiple entries in ERT0 and ERT1 with each thread identifier. The ERT entry also supports cases with different EA corresponding to the same RA (cases of the same thread or different threads). Here, two cases are further described based on whether the implementation uses ERTE or SDT.

LSUが、SDT(シノニム検出テーブル)を使用する実装を使用している場合、ERTの再読み込み時に、同じRAに対応する異なるEAを含む新しい命令が検出されたときに、LSUは、ERT255の代わりにSDTにエントリを導入する。元の(前の)ERTエントリのEAを使用してSDTのヒットが再開する。新しいシノニムのページ・サイズが、一致するRAを含む既存のERTエントリ内のページ・サイズより大きい場合、シノニムをSDTに導入する代わりに、既存のERTエントリが(より大きいページ・サイズを有する)新しいシノニムに置き換えられる。古いERTエントリは、最終的にシノニムとしてSDTに再導入される。 If the LSU is using an implementation that uses the SDT (Synonym Detection Table), the LSU will replace the ERT 255 when a new instruction containing a different EA corresponding to the same RA is detected when reloading the ERT. Introduce an entry to SDT. The SDT hit resumes using the EA of the original (previous) ERT entry. If the page size of the new synonym is larger than the page size in the existing ERT entry containing the matching RA, then instead of introducing the synonym into the SDT, the existing ERT entry is new (with a larger page size). Replaced by synonyms. Old ERT entries will eventually be reintroduced into the SDT as synonyms.

代替として、LSUが、ERTEを使用する実装を使用しており、同じRAに対応する異なるEAを含む命令が、異なるスレッドである場合、LSUは、適切なTid_enが有効化された新しいエントリをERTテーブルに導入する。命令が同じスレッドである場合、LSUは、読み込み/格納が非投機的になるまで、読み込み/格納を拒否する。その後、LSUは、既存のERTエントリを削除し、スレッドからのインフライトの最も新しい命令のIタグでタグ付けされたERTエントリをERTEテーブル内に配置する。LSUは、新しいEA-RA対をERTテーブル400にさらに導入する。これによって、2つの異なるEAが同じスレッドからの同じRAにマッピングされる状況が発生しないことを保証する。 Alternatively, if the LSU is using an implementation that uses ERTE and the instructions containing different EA corresponding to the same RA are in different threads, the LSU will ERT a new entry with the appropriate Tid_en enabled. Introduce to the table. If the instructions are in the same thread, LSU refuses to read / store until the read / store becomes non-speculative. The LSU then deletes the existing ERT entry and places the ERT entry tagged with the I tag of the newest in-flight instruction from the thread in the ERTE table. LSU will further introduce a new EA-RA pair to the ERT table 400. This ensures that there will be no situation where two different EA's are mapped to the same RA from the same thread.

さらに、ERTのケースを再び参照し、LSUがプロセッサ106の別のコアからスヌープを受信する場合について考える。スヌープは、システム内の異なるコアから来る可能性がある(スヌープは、別のコアまたはスレッドを示し、同じ実アドレスでデータを変更している)。LSUは、コア内の他のスレッドへの可能性のあるスヌープとして、コア内のスレッドからのからの格納もチェックする。すべての(他のコアからの)スヌープまたは(コア内の他のスレッドからのからの)格納は、RAを伴う。そのような場合、LSUは、RAを逆変換し、ERT255に基づいて、対応するEA、ERT_ID、およびページ・サイズを決定する。LSUは、この情報を、次の構造の各々に格納されたERT_ID、PS、EA(40:56)と比較して、スヌープのヒットを検出し、適切な動作を実行する。例えば、LRQFエントリにおいてスヌープのヒットが検出された場合、LSUは、可能性のあるロード・ヒット・ロードのアウトオブオーダーのハザードを示す。EAD290においてスヌープのヒットが検出され、スヌープが異なるコアからである場合、LSUがL1の無効化を開始する。格納が共有ラインに対する別のスレッドからである場合、ラインが新しい格納を自動的に取得し、更新される。 Further, referring again to the case of ERT, consider the case where the LSU receives a snoop from another core of the processor 106. Snoops can come from different cores in the system (snoops indicate different cores or threads, modifying data at the same real address). LSU also checks for storage from threads in the core as possible snoops to other threads in the core. All snoops (from other cores) or storages (from other threads in the core) are accompanied by RA. In such cases, the LSU reversely transforms the RA to determine the corresponding EA, ERT_ID, and page size based on ERT255. LSU compares this information with ERT_ID, PS, EA (40:56) stored in each of the following structures to detect snoop hits and perform appropriate actions. For example, if a snoop hit is detected in an LRQF entry, the LSU indicates a possible load-hit-load out-of-order hazard. If a snoop hit is detected in EAD290 and the snoop is from a different core, the LSU initiates L1 invalidation. If the store is from another thread to the shared line, the line will automatically get and update the new store.

したがって、本明細書に記載された技術的解決策は、1つのアドレス(EA)のみを追跡することによって、LSUのチップ面積の削減を促進する。さらに、これらの技術的解決策は、プロセッサ・コアが分割された読み込み/格納キューを使用して2読み込み/2格納モードで実行できるようにし、変換用のCAMポートをさらに削減し、変換の電力消費も削減する。さらに、これらの技術的解決策は、EAのみを使用することによって、EADの失敗が発生しない限り、RAへの変換が読み込み/格納経路において実行されないようにするという利点を有する。さらに、LHL、SHL、LHSなどのハザードを検出すること、および時間においてDVALを抑制することは、タイミング問題を引き起こさない。LSUがEAのみを使用するため、2つの異なるEAが同じRAにマッピングされた場合、LHS、SHL、LHLの検出が失敗する可能性がある。本明細書に記載された技術的解決策は、EADからのEAおよびERTのインデックスを使用することによって、そのような技術的課題に対処する。さらに、EAのシノニムの検出時に、LSUが、SDTまたはERTEテーブルをOoOウィンドウ内の命令に使用することによって、命令を処理する。 Therefore, the technical solutions described herein facilitate a reduction in the chip area of the LSU by tracking only one address (EA). In addition, these technical solutions allow the processor core to run in two read / two store modes using split read / store queues, further reducing the CAM port for conversion, and powering the conversion. It also reduces consumption. Further, these technical solutions have the advantage of using only the EA to prevent the conversion to RA from being performed in the read / store path unless an EAD failure occurs. Furthermore, detecting hazards such as LHL, SHL, LHS, and suppressing DVAL over time does not cause timing problems. Since the LSU uses only EA, detection of LHS, SHL, LHL may fail if two different EA are mapped to the same RA. The technical solutions described herein address such technical challenges by using the EA and ERT indexes from EAD. In addition, upon detection of the EA synonym, the LSU processes the instruction by using the SDT or ERTE table for the instruction in the OoO window.

(ERTEとは対照的に)LSUがSDTを使用し、スヌープのヒットがLMQに存在する場合、LSUは、L1 Dキャッシュに格納しないようにLMQエントリも更新し、SRQエントリがSRQ内のスヌープに使用されず、LHSのEAがRAのヒットに失敗する形式のチェックのみに使用され、新しいSDTエントリがスヌープのヒットに対して作成される。 If the LSU uses the SDT (as opposed to the ERTE) and a snoop hit is present in the LMQ, the LSU also updates the LMQ entry so that it is not stored in the L1D cache and the SRQ entry becomes a snoop in the SRQ. Not used, the LHS EA is used only for checking forms that fail RA hits, and a new SDT entry is created for snoop hits.

図8は、本発明の1つまたは複数の実施形態に従うシノニム検出テーブル(SDT)700の例示的な構造を示している。描かれた例は、16個のエントリを含む場合を示しているが、他の例では、SDT700がこの例とは異なる数のエントリを含んでよいということに、注意するべきである。SDT700は、LSU104の複数のスレッドおよびパイプにわたって共通である。例えば、LD0、LD1、ST0、およびST1は、すべてSDT700内のエントリにアクセスし、SDT700は、各々に対して別々のパーティションを含まない。 FIG. 8 shows an exemplary structure of a synonym detection table (SDT) 700 according to one or more embodiments of the invention. It should be noted that the example depicted shows the case containing 16 entries, but in other examples the SDT700 may contain a different number of entries than this example. The SDT 700 is common across multiple threads and pipes of the LSU 104. For example, LD0, LD1, ST0, and ST1 all access the entries in the SDT700, and the SDT700 does not contain a separate partition for each.

SDT700内のエントリは、少なくとも、発行アドレス{発行Tid(0:1), 発行EA(0:51)}、ページ・サイズ(0:1)(例えば、4k、64k、2MB、16MB)、および再開アドレス{EA(40:51), ERT ID(0:6)}のフィールドを含む。Tid(thread-identifier:スレッド識別子)フィールドは、OoOプロセッサからのどのスレッドが、SDT700内のエントリに関連付けられた命令を実行しているかを示す。開始がL1に失敗する命令の場合、LSUは、命令をSDT700に対して比較する。開始された命令が、元のアドレスの比較でSDTにヒットした場合、LSUが命令を拒否し、SDTエントリからの対応する置換アドレスを使用して命令を再開する。例えば、LSUは、置換アドレス(40:51)をSRQ LHSに使用し、実行パイプライン内のERT IDを「強制的に一致させる」。 The entries in the SDT700 are at least the issue address {issue Tid (0: 1), issue EA (0:51)}, page size (0: 1) (eg 4k, 64k, 2MB, 16MB), and resume. Includes fields for the address {EA (40:51), ERT ID (0: 6)}. The Tid (thread-identifier) field indicates which thread from the OoO processor is executing the instruction associated with the entry in the SDT700. If the start is an instruction that fails L1, the LSU compares the instruction to the SDT700. If the initiated instruction hits the SDT in comparison to the original address, LSU rejects the instruction and resumes the instruction using the corresponding substitution address from the SDT entry. For example, LSU uses the substitution address (40:51) for SRQ LHS to "force match" the ERT ID in the execution pipeline.

本明細書において説明されているように、ERTの再読み込み中に、エントリがSDT700に追加される。例えば、ERTの再読み込み中に、再読み込みRAが、有効なERTエントリに対して比較される。一致するRAを含むERTエントリがすでに存在し、追加のtid_enビットのみが元のERTエントリに設定されているEAのヒットのケースでない場合、既存のERTエントリからEA(32:51)が読み取られ、エントリをERT255に追加する代わりに、エントリがSDT700に導入される。 As described herein, an entry is added to the SDT 700 during the reloading of the ERT. For example, during an ERT reload, the reload RA is compared against valid ERT entries. If an ERT entry containing a matching RA already exists and only the additional tid_en bits are not the case of an EA hit set in the original ERT entry, then the EA (32:51) is read from the existing ERT entry. Instead of adding the entry to the ERT255, the entry is introduced into the SDT700.

SDT700はエントリ数が制限されているため、エントリが置き換えられる。1つまたは複数の例では、最長時間未使用(LRU:least recently used)手法または任意のその他の手法に基づいて、エントリが置き換えられる。1つまたは複数の例では、SDTエントリが置き換えられる場合、二次アドレスを使用するその後の開始が、SDTエントリの導入シーケンスを再トリガーする。さらに、CAMは、無効化されたERTエントリに一致するERT IDを含むSDTエントリを消去する。 Since the SDT700 has a limited number of entries, the entries are replaced. In one or more examples, entries are replaced based on the longest recently used (LRU) method or any other method. In one or more examples, if the SDT entry is replaced, a subsequent start using the secondary address will re-trigger the introduction sequence of the SDT entry. In addition, the CAM clears the SDT entry containing the ERT ID that matches the invalidated ERT entry.

図9は、本発明の1つまたは複数の実施形態に従う、ERTおよびSDT EAの交換を実行するための方法のフローチャートを示している。1つまたは複数の例では、ERTエントリおよびSDTエントリが同じページ・サイズを有している場合に、LSUが交換を実行する。この交換によって、同じスレッドまたは異なるスレッドの異なる命令で、異なるEAが同じRAに対応する場合に、プロセッサ106の効率を改善する。例えば、EAx=>RAz、およびEAy=>RAzとなるような2つの命令xおよびyについて考える。最初に、EAxがERTに失敗した場合、すなわち、EAyの前に、本明細書において説明されているように、LSUが、RAzへのEAxのマッピングを含むERTエントリを導入する。その後、EAyがERTに失敗した場合、LSUが、RAzを使用してERTを検索し、RAにヒットし、元のアドレス=EAy、置換アドレス=EAxを含むエントリをSDT700に導入する。 FIG. 9 shows a flow chart of a method for performing an ERT and SDT EA exchange according to one or more embodiments of the invention. In one or more examples, the LSU performs the exchange if the ERT and SDT entries have the same page size. This exchange improves the efficiency of the processor 106 when different EA's correspond to the same RA with different instructions in the same thread or different threads. For example, consider two instructions x and y such that EAx => Raz and EAy => Raz. First, if EAx fails ERT, i.e., prior to EAy, LSU introduces an ERT entry containing the mapping of EAx to Raz, as described herein. Then, if the EAy fails the ERT, the LSU searches the ERT using RAz, hits the RA, and introduces an entry into the SDT700 containing the original address = EAy and the replacement address = EAx.

ここで、その後のほとんどのRAzへのアクセスがEAyを伴う場合、LSUは、EAD自体を使用するよりも頻繁にSDTを使用する必要がある。1つまたは複数の例では、そのような頻繁なSDTへの参照を減らすことによってLSUの効率を改善するための技術的解決策は、各SDTエントリ内のカウンタをインクリメントすることを含む。図8の810に示されているように、LSUは、SDTエントリからのERT IDに一致するERT IDを含む命令を開始する。SDTエントリのERT IDが一致する場合、820に示されているように、LSUは、開始された命令のEAをSDTエントリ内の元のEAとさらに比較する。830および835に示されているように、SDTエントリが、命令からのEAに一致する元のアドレス値を含んでいる場合、SDTエントリのカウンタがインクリメントされる。840に示されているように、開始された命令が、SDTエントリの元のアドレスと異なるEAを含んでいる場合、SDTエントリのカウンタがリセットされる。 Here, if most subsequent access to Raz is accompanied by EAy, the LSU needs to use the SDT more often than it does with the EAD itself. In one or more examples, a technical solution for improving the efficiency of LSUs by reducing such frequent references to SDTs comprises incrementing the counter in each SDT entry. As shown in 810 of FIG. 8, the LSU initiates an instruction containing an ERT ID that matches the ERT ID from the SDT entry. If the ERT IDs of the SDT entries match, the LSU further compares the EA of the initiated instruction with the original EA in the SDT entry, as shown in 820. As shown in 830 and 835, if the SDT entry contains the original address value that matches the EA from the instruction, the counter for the SDT entry is incremented. As shown in 840, if the initiated instruction contains an EA that is different from the original address of the SDT entry, the SDT entry counter is reset.

1つまたは複数の例では、カウンタが4ビットのフィールドであり、15の最大値を意味する。他の例では、しきい値として使用されるフィールドが異なる長さであるか、または異なる最大値を有するか、あるいはその両方であるということが、理解されるべきである。例えば、845および850に示されているように、命令が開始された後に、カウンタ値がしきい値と比較される。カウンタがしきい値未満である場合、説明されたように、LSUが動作を続行する。カウンタがしきい値を超えたか、または場合によっては、しきい値に等しい場合、860に示されているように、LSUがSDTエントリに対応するERTエントリを無効化する。例えば、SDTエントリからのERT IDを含むERTエントリが無効化される。ERTエントリの無効化は、EAディレクトリ、LRQF、LMQ、およびSRQからの対応するエントリの無効化を引き起こす。 In one or more examples, the counter is a 4-bit field, meaning a maximum of 15. In other examples, it should be understood that the fields used as thresholds are of different lengths, have different maximum values, or both. For example, as shown in 845 and 850, the counter value is compared to the threshold after the instruction is started. If the counter is below the threshold, LSU continues to operate as described. If the counter exceeds the threshold or, in some cases, equals the threshold, LSU invalidates the ERT entry corresponding to the SDT entry, as shown in 860. For example, the ERT entry containing the ERT ID from the SDT entry is invalidated. Invalidating an ERT entry causes invalidation of the corresponding entry from the EA directory, LRQF, LMQ, and SRQ.

さらに、LSUは、以下の方法で、終了するために元のEAを必要とする開始された命令における例外の技術的課題に対処する。例えば、開始された命令がSDTにヒットし、元の開始アドレスの代わりにSDTエントリからの置換アドレスを使用して再開したいが、終了するために元のEAを必要とする例外が選択された場合について考える。そのような条件は、DAWR/SDARなどの場合に発生することがある。 In addition, LSU addresses the technical challenges of exceptions in initiated instructions that require the original EA to terminate in the following manner: For example, if the started instruction hits the SDT and you want to resume using the replacement address from the SDT entry instead of the original starting address, but an exception is selected that requires the original EA to exit. think about. Such a condition may occur in the case of DAWR / SPAR and the like.

本明細書に記載された技術的解決策を実装するLSUは、元のアドレスをLRQE内のキューに維持することによって、そのような技術的課題に対処する。LRQEは、LRQEエントリごとに、SDTヒット・フラグ(ビット)、SDTインデックス(0:3)も維持する。再開時に、置換アドレスを取得するために、1サイクル早くSDTインデックスが読み取られる。LRQEは、再開の前に、LRQEエントリのアドレス(元のアドレス)とSDTの(SDTから読み取られた)置換アドレスとの間で、さらに多重化する。終了するために元のアドレスが必要になる、上記のような例外ケースの場合、LRQEは、DAWRの部分一致などで設定されたエントリごとに、追加のSDTヒット・オーバーライド・フラグ(ビット)を含む。LRQEは、例外と共に終了するSDTのヒットが存在したケースを再開し、元のアドレスを強制的に開始する。SRQの再開は、本明細書において説明されているLRQEの再開と同様であり、再開の前に例外と共に終了することが決定された場合、SDTヒット・オーバーライド・フラグが使用される。 LSUs that implement the technical solutions described herein address such technical challenges by keeping the original address in a queue within the LRQE. The LRQE also maintains an SDT hit flag (bit) and an SDT index (0: 3) for each RQE entry. At restart, the SDT index is read one cycle earlier to get the replacement address. The LRQE is further multiplexed between the address of the LRQE entry (original address) and the replacement address of the SDT (read from the SDT) prior to resumption. In exceptional cases like the one above where the original address is needed to exit, the LRQE contains an additional SDT hit override flag (bit) for each entry set, such as with a partial DAWR match. .. LRQE resumes the case where there was an SDT hit that ends with an exception and forces the original address to start. The resumption of the SRQ is similar to the resumption of the LRQE described herein, and the SDT hit override flag is used if it is determined to terminate with an exception prior to the resumption.

図10は、本発明の1つまたは複数の実施形態に従うERT削除(ERTE)テーブル900を示している。ERTEテーブル900は、LSUがERT255から削除された(または無効化された)行を追跡するのを容易にする。ERTEテーブル900は、ERT255にエントリが作成されているときに、同じスレッドに、同じRAに対する異なるEAが存在するかどうかをチェックするのをさらに容易にする。ERTEテーブル900は、すべての同時スレッドによって共有される。1つまたは複数の例では、ERTEテーブル900の一部が、NTCエントリのために予約される。ERTEテーブル900内のエントリは、スレッドID、Iタグ、EA、およびRAのフィールドを含む。1つまたは複数の例では、ERTEテーブル・エントリが追加のフィールドを含んでよい。1つまたは複数の例では、スレッドIDが4ビットのフィールドであってよい。 FIG. 10 shows an ERT deletion (ERTE) table 900 according to one or more embodiments of the invention. The ERTE table 900 makes it easy for LSU to track deleted (or invalidated) rows from ERT255. The ERTE table 900 makes it even easier to check if different EA's for the same RA exist in the same thread when an entry is made in ERT255. The ERTE table 900 is shared by all concurrent threads. In one or more examples, part of the ERTE table 900 is reserved for NTC entries. The entries in the ERTE table 900 include fields for thread ID, I tag, EA, and RA. In one or more examples, the ERTE table entry may contain additional fields. In one or more examples, the thread ID may be a 4-bit field.

ERTEテーブル900は、1対1の対応関係のある2つのテーブル(ERT_EAおよびERT_RA)の組み合わせと見なされ得る。ERT_EAテーブルは、検索するためにEAを使用し、ERT_RAテーブルは、検索するためにRAを使用する。1つまたは複数の例では、各テーブルは64個のエントリを含むが、他の例では、エントリの数が可変/プログラム可能であってよい。EA-RA間の変換がERTEテーブル900から除去された場合、EADテーブル300からの関連するキャッシュ・ラインも無効化される。そのようにして、ERT255は、プロセッサ・コア内のすべての変換(TLB、SLBを除く)の上位セットになる。 The ERTE table 900 can be considered as a combination of two tables (ERT_EA and ERT_RA) having a one-to-one correspondence. The ERT_EA table uses EA to search, and the ERT_RA table uses RA to search. In one or more examples, each table contains 64 entries, while in other examples the number of entries may be variable / programmable. If the EA-RA conversion is removed from the ERTE table 900, the associated cache line from the EAD table 300 is also invalidated. In that way, the ERT 255 becomes a superset of all translations (except TLB, SLB) in the processor core.

ERTEテーブル900は、ERT255内にないがインフライトの命令によって使用されるすべての変換を追跡する。ERTEテーブル・エントリは、削除されたエントリを使用していた可能性のある最も新しい命令でタグ付けされる。読み込み/格納のOoO発行に起因して、OoOウィンドウ内のアクティブなすべての命令のうちの最も新しいIタグが、ERTEテーブル900に格納される。フラッシュ時に、残っている最後の命令のIタグが、有効なすべてのエントリに格納される。完了時に、同じIタグまたはより古いIタグを含むすべてのエントリが解放される。ERTEテーブル900は、満杯である場合、ディスパッチを阻止して、命令が完了するのを(またはフラッシュされるのを、あるいはその両方を)待ち、最終的にテーブルが完全に解放される。本明細書に記載された例は、開始された命令の古さを追跡するためにIタグを使用するが、他の例では、単調に増加して循環する別のタグ(EAタグ、LSタグなど)が代わりに使用されてよいということに注意するべきである。 The ERTE table 900 keeps track of all transformations that are not in ERT255 but are used by in-flight instructions. The ERTE table entry is tagged with the newest instruction that may have used the deleted entry. Due to the read / store OOO issue, the newest I-tag of all active instructions in the OOO window is stored in the ERTE table 900. Upon flushing, the I tag of the last remaining instruction is stored in all valid entries. Upon completion, all entries containing the same I-tag or older I-tags will be released. If the ERTE table 900 is full, it blocks the dispatch, waits for the instruction to complete (or is flushed, or both), and finally the table is completely freed. The examples described herein use the I tag to track the age of the initiated instruction, while in other examples another tag that monotonically increases and circulates (EA tag, LS tag). Etc.) should be noted that may be used instead.

ERT255またはEAD290内の変換が削除/無効化された場合、削除されたエントリからの最後の所定のビット数(例えば、最後の12ビット)を含まずに、削除されたエントリのEA-RAがERTEテーブル900に追加される。さらに、削除された変換が属する同じスレッドの最も新しい有効なIタグを含むERTEテーブル900内のエントリが、例えばフラグ(ビット)を使用して、マーク付けされる。 If the conversion in ERT255 or EAD290 is deleted / invalidated, the EA-RA of the deleted entry will be ERTE without including the last predetermined number of bits (eg, the last 12 bits) from the deleted entry. Added to table 900. In addition, entries in the ERTE table 900 containing the newest valid I-tag of the same thread to which the deleted transformation belongs are marked, for example, using flags (bits).

新しいアドレス変換(EAからRAへ)が実行されるときに、LSUが、RAをERT255に対して比較し、同じスレッドからのRAに対する異なるEAがすでにERT255に存在するかどうかをチェックする。存在する場合、LSUが、新しい変換をシノニムとしてERT255に導入する。このようにして、ERT255(ERTEを使用する場合)は、同じスレッドの同じRAを指す異なるEAを含む2つのエントリを含むことができる。インフライトの命令のシノニムが許可されないため、1つまたは複数の例では、LSUが、NTC+1のフラッシュをのみを開始して、前進を保証する。 When a new address translation (EA to RA) is performed, LSU compares RA to ERT255 and checks if different EA from the same thread to RA already exists in ERT255. If present, LSU introduces a new transformation into ERT255 as a synonym. In this way, the ERT255 (when using ERTE) can contain two entries containing different EA pointing to the same RA in the same thread. In one or more examples, the LSU only initiates a flush of NTC + 1 to ensure forward, as synonyms for in-flight orders are not allowed.

バランス・フラッシュ(balance flush)は、停止したか、またはリソースを消費するか、あるいはその両方の対象のスレッドを、システムから全体的にフラッシュし、リソース使用の公平性またはバランスを回復する、スレッド制御メカニズムである。バランス・フラッシュは、選択されたスレッド上の、次に実行するべき命令グループに続くすべての命令グループをフラッシュする、次に実行するべき命令のフラッシュ(NTC+1)を含む。NTC+1バランス・フラッシュは、選択されたスレッドに関する実行ユニット、グローバル完了テーブル、およびEADをフラッシュする。スレッドがディスパッチで停止した場合にのみ、スレッドに対してバランス・フラッシュが実行される。スレッド切り替え制御レジスタ内の<bf:1>フィールドを使用して、バランス・フラッシュが有効化または無効化されてよい。 Balance flush is a thread control that flushes the threads of interest from the system as a whole, either stopped, consumes resources, or both, to restore fairness or balance of resource usage. It is a mechanism. Balanced flushing includes flushing all instruction groups on the selected thread following the instruction group to be executed next, flushing the next instruction to be executed (NTC + 1). NTC + 1 balanced flush flushes the execution unit, global completion table, and EAD for the selected thread. A balance flush is performed on the thread only if the thread is dispatched down. Balance flushing may be enabled or disabled using the <bf: 1> field in the thread switching control register.

1つまたは複数の例では、OoOウィンドウの実行が完了した後に、ERTE内のエントリが無効としてマーク付けされる。ERTテーブル255から削除されている新しいEA-RA変換対を使用してERTEエントリが書き込まれているときに、ERTEエントリが有効としてマーク付けされるということに、注意するべきである。 In one or more examples, the entry in the ERTE is marked as invalid after the execution of the OoO window is complete. It should be noted that the ERTE entry is marked as valid when the ERTE entry is written using the new EA-RA conversion pair that has been removed from the ERT table 255.

図11は、本発明の1つまたは複数の実施形態に従う、エントリをERTEテーブル900に追加するための例示的な方法のフローチャートを示している。本明細書において説明されているように、新しいエントリがERT255に追加されるときに、LSUは、1010に示されているように、新しい変換のEAおよびRAの両方を、LRUによって管理されてよい特定の行に書き込む。1012に示されているように、ERTEテーブル900は、RAを使用して検索し、RAが、別のEAに対応するERTEテーブル900内のエントリにすでに存在するかどうかをチェックし、導入での同じスレッドで、複数のヒットの可能性のあるケースについてチェックする。RAがERTEテーブル900にすでに存在する場合、1015に示されているように、ERTテーブルは、NTCまでEA-RAのエントリの作成を拒否し、NTCが検出されたときに導入する。 FIG. 11 shows a flow chart of an exemplary method for adding an entry to the ERTE table 900, according to one or more embodiments of the invention. As described herein, when a new entry is added to ERT255, the LSU may manage both the EA and RA of the new transformation by the LRU, as shown in 1010. Write to a specific line. As shown in 1012, the ERTE table 900 is searched using the RA to check if the RA already exists in the entry in the ERTE table 900 corresponding to another EA and in the deployment. Check for possible multiple hits in the same thread. If the RA already exists in the ERTE table 900, the ERT table refuses to create an entry for the EA-RA up to the NTC and introduces it when the NTC is detected, as shown in 1015.

1020に示されているように、LSUは、ERT255内のエントリを上書きする前に、新しいエントリによって上書きされるERT内の既存のエントリのEAおよびRAを読み取り、1030に示されているように、読み出されたエントリをERTEテーブル900にさらに格納する。さらに、1040および1050に示されているように、プロセッサの別のコアからのスヌープまたは格納排出が存在する場合、ERTEテーブル900がEAを検索して読み取る。 As shown in 1020, the LSU reads the EA and RA of the existing entry in the ERT that is overwritten by the new entry before overwriting the entry in ERT255, as shown in 1030. Further stores the read entries in the ERTE table 900. Further, as shown in 1040 and 1050, the ERTE table 900 searches and reads the EA if there is a snoop or stowed discharge from another core of the processor.

図12は、本発明の1つまたは複数の実施形態に従って開始される例示的な命令のセットの例示的なシーケンス図を示している。各命令は、左側にプログラム順序で示されており、OoOで開始され、命令のシーケンスとは異なる動作のシーケンスを引き起こす。例えば、以下のイベントが時系列で発生することを考える。1.命令Mが、OoOで発行され、変換「ea1、ra1」を使用した。2.命令Kが、OoOで発行され、ERTに失敗し、新しいエントリを導入し、「ra2 ea2」をERTから削除した。この時点で、使用中の最後のIタグ=N(同じスレッドから削除されたすべてのライン)、すなわち、Nまでの命令は、「ra2 ea2」を使用することができており、Nの後に、命令は「ra2 ea2」を使用できなくなる。3.命令Hが、OoOで発行され、ERTに失敗し、「ra1 ea1」をERTから削除した。この時点で、使用中の最後のIタグ=Qである。4.フラッシュされたパイプラインおよび残された最後の命令がIタグ=Eを有しており、さらに、フェッチされる次の命令が、R、Sである。5.命令E~Rが所与の1サイクルで完了し、ERTE内のすべてのエントリを解放する。 FIG. 12 shows an exemplary sequence diagram of an exemplary set of instructions initiated according to one or more embodiments of the invention. Each instruction is shown in program order on the left and starts with OoO, causing a sequence of actions that is different from the sequence of instructions. For example, consider that the following events occur in chronological order. 1. 1. The instruction M was issued in OoO and used the conversion "ea1, ra1". 2. 2. Command K was issued on OoO, failed ERT, introduced a new entry, and removed "ra2 ea2" from ERT. At this point, the last I tag in use = N (all lines deleted from the same thread), i.e., instructions up to N can use "ra2 ea2", after N. The instruction cannot use "ra2 ea2". 3. 3. Command H was issued by OoO, failed ERT, and deleted "ra1 ea1" from ERT. At this point, the last I tag in use = Q. 4. The flushed pipeline and the last instruction left have an I tag = E, and the next instruction to be fetched is R, S. 5. Instructions E-R complete in a given cycle, freeing all entries in the ERTE.

本明細書に記載された技術的解決策は、このようにして、EAのみを使用することを容易にし、読み込み/格納経路においてEART(通常はプロセッサによって使用されていた)が参照されず、さらに、SHLの検出および時間におけるDVALの抑制がタイミング問題を引き起こさないように、技術的優位性を実現する。さらに、本明細書に記載された技術的解決策は、EAのみを使用することに伴う技術的問題、例えば、2つの異なるEAが同じRAにマッピングされた場合に、LHS、SHL、LHLの検出が失敗することがあるなどの問題に対処する。本明細書に記載された技術的解決策は、シノニム検出テーブル(SDT)またはERT削除テーブルのいずれかをOoOウィンドウ内の命令に使用することによって、そのような技術的問題に対処する。これらの技術的解決策は、特に、チップ面積の削減(RAを格納しないことによる)、電力消費の削減(EA-RAを変換しないことによる)、および待ち時間の改善を含む、さまざまな技術的優位性を実現する。 The technical solutions described herein thus facilitate the use of EA alone, with no reference to EAR (usually used by the processor) in the read / store path, and further. , Achieve a technical advantage so that detection of SHL and suppression of DVAL in time do not cause timing problems. In addition, the technical solutions described herein are technical problems associated with using only EA, eg, detection of LHS, SHL, LHL when two different EA are mapped to the same RA. Address issues such as may fail. The technical solutions described herein address such technical problems by using either the synonym detection table (SDT) or the ERT deletion table for instructions in the OoO window. These technical solutions include a variety of technical solutions, including, among other things, reduced chip area (by not storing RA), reduced power consumption (by not converting EA-RA), and improved latency. Achieve superiority.

さらに、これらの技術的解決策は、すべての読み込みおよび格納のアドレス生成においてEAに対してRAを決定するための検索を取り除くことによって、電力消費の節減を促進する。代わりに、EADの失敗およびERTの失敗が発生するまで、EAが使用される。さらに、これらの技術的解決策は、単一のCAMポートのみが使用されるようになるため、ユニット全体でのRAバスの切り替えの除去を容易にする。 In addition, these technical solutions promote power consumption savings by removing the search to determine the RA for the EA in all read and store address generation. Instead, EA is used until EAD failure and ERT failure occur. In addition, these technical solutions facilitate the elimination of RA bus switching across the unit, as only a single CAM port will be used.

図13は、本発明の1つまたは複数の実施形態に従う、プロセッサがSTモードまたはMTモードのどちらで動作しているかに応じて、マルチパイプ・モードで、およびOoOの方法で、LSU104によって命令を発行するための例示的な方法のフローチャートを示している。例えば、LSUは、2読み込み/2格納モード(マルチパイプ・モード)で動作していてよい。ブロック1310に示されているように、LSU104が、発行される命令をOoOウィンドウから選択する。選択された命令は、読み込み命令、格納命令、またはLSU104が発行するそのような命令から派生した任意の命令(例えば、LARX命令)であってよい。 FIG. 13 indicates instructions by the LSU 104 in multipipe mode and in the OoO way, depending on whether the processor is operating in ST mode or MT mode, according to one or more embodiments of the invention. A flowchart of an exemplary method for publishing is shown. For example, LSU may operate in 2 read / 2 storage modes (multipipe mode). As shown in block 1310, the LSU 104 selects the instruction to be issued from the OoO window. The selected instruction may be a read instruction, a storage instruction, or any instruction derived from such an instruction issued by LSU104 (eg, a LARX instruction).

ブロック1320に示されているように、LSU104が、OoOプロセッサがSTモードまたはMTモードのいずれで動作しているかを判定する。STモードが使用されている場合、プロセッサが単一のスレッドを使用しており、ブロック1330に示されているように、LSU104が、命令に関連付けられたLSUパイプのみを決定する。例えば、命令が読み込み命令である場合、LSU104は、その読み込み命令を、LD0パイプ、LD1パイプ、または任意のその他の読み込みパイプのいずれかに関連付けてよい。代替として、命令が格納命令である場合、LSU104は、その格納命令を、ST0パイプ、ST1パイプ、または任意のその他の格納パイプのいずれかに関連付けてよい。 As shown in block 1320, the LSU 104 determines whether the OoO processor is operating in ST mode or MT mode. When ST mode is used, the processor is using a single thread and the LSU 104 determines only the LSU pipe associated with the instruction, as shown in block 1330. For example, if the instruction is a read instruction, the LSU 104 may associate the read instruction with any of the LD0 pipe, LD1 pipe, or any other read pipe. Alternatively, if the instruction is a storage instruction, the LSU 104 may associate the storage instruction with any of the ST0 pipe, ST1 pipe, or any other storage pipe.

さらに、ブロック1340に示されているように、LSU104は、パイプに関連付けられたLRQF218、SRQR220、LRQE222、およびERT255内のパーティションを使用してエントリを作成/エントリにアクセスし、命令を発行する。例えば、命令が読み込み命令であり、関連付けられたパイプがLD0である場合、その命令は、パーティションLRQF0、LRQE0、およびERT0からのエントリを使用する。同様に、パイプST0での格納命令の場合、パーティションSRQR0およびERT0が使用される。LD1パイプまたはST1パイプの場合、LRQF1、LRQE1、ERT1、およびSRQR1パーティションが使用される。エントリは、先入れ先出しに基づいてパーティション内に作成される。 Further, as shown in block 1340, the LSU 104 uses the partitions in the LRQF218, SRQR220, LRQE222, and ERT255 associated with the pipe to create / access entries and issue instructions. For example, if the instruction is a read instruction and the associated pipe is LD0, the instruction will use entries from partitions LRQF0, LRQE0, and ERT0. Similarly, for storage instructions on pipe ST0, partitions SRQR0 and ERT0 are used. For LD1 or ST1 pipes, the LRQF1, LRQE1, ERT1 and SRQR1 partitions are used. Entries are created in the partition on a first-in, first-out basis.

代替として、プロセッサがMTモードで動作している、すなわち、同時に複数のスレッドが実行されている場合、ブロック1350に示されているように、LSU104は、選択された命令に関連付けられたスレッドのスレッド識別子を決定する。ブロック1360に示されているように、LSU104は、命令に関連付けられたLSUパイプをさらに決定する。さらに、ブロック1370に示されているように、LSU104は、LRQF218、SRQR220、LRQE222、およびERT255のパーティションおよびパーティション内の位置を識別して、エントリを作成/エントリにアクセスし、{スレッドidおよびパイプ}の組み合わせに基づいて命令を発行する。例えば、LSUは、特定のスレッドを特定のパイプに制限し、例えば、偶数番号が付けられたスレッドをLD0およびST0に制限し、奇数番号が付けられたスレッドをLD1およびST1に制限する。スレッドおよびパイプの分類が他の例において異なってよいということに、注意するべきである。LD0パイプおよびST0パイプは、「0」の接尾辞が付けられたパーティションに関連付けられ、LD1パイプおよびST1パイプは、「1」の接尾辞が付けられたパーティションに関連付けられる(または、その逆に関連付けられる)。 Alternatively, if the processor is operating in MT mode, i.e., multiple threads are running at the same time, the LSU 104 is the thread of the thread associated with the selected instruction, as shown in block 1350. Determine the identifier. As shown in block 1360, the LSU 104 further determines the LSU pipe associated with the instruction. Further, as shown in block 1370, the LSU 104 identifies the partitions of LRQF218, SRQR220, LRQE222, and ERT255 and their locations within the partitions to create / access entries and {thread ids and pipes}. Issue an instruction based on the combination of. For example, LSU limits specific threads to specific pipes, for example, even-numbered threads to LD0 and ST0, and odd-numbered threads to LD1 and ST1. It should be noted that the classification of threads and pipes may be different in other examples. LD0 and ST0 pipes are associated with partitions suffixed with "0", and LD1 and ST1 pipes are associated with partitions suffixed with "1" (or vice versa). Will be).

本発明の1つまたは複数の実施形態例では、プロセッサがMTモードで実行しているスレッドの数に従って、各パーティションが部分にさらに分割される。例えば、プロセッサが4つのスレッドを実行している場合、LSU内の2つのパーティションが、それぞれ2つの部分(第1のスレッド用の第1のパーティションおよび第2のスレッド用の第2の部分)にさらに分割され、各パーティション分がスレッドの対に関連付けられる。MTモードでのスレッドの数が4つとは異なる1つまたは複数の他の実施形態例では、各パーティションに関連付けられたスレッドの数に基づいて、パーティションが異なる数の部分に分割される。スレッドの対が各パーティションに関連付けられており、各パーティションが等しい部分にさらに分割される上記の例では、対の第1のスレッドが第1の部分を使用し、第2のスレッドが第2の部分を使用する。したがって、LD0/ST0のT0で実行さている命令は、LRQF0、LRQE0、SRQR0、およびERT0のパーティションの第1の部分に関連付けられ、LD0/ST0のT2で実行されている命令は、LRQF0、LRQE0、SRQR0、およびERT0のパーティションの第2の部分に関連付けられる。さらに、LD1/ST1のT1で実行さている命令は、LRQF1、LRQE1、SRQR1、およびERT1のパーティションの第1の部分に関連付けられ、LD1/ST1のT3で実行されている命令は、LRQF1、LRQE1、SRQR1、およびERT1のパーティションの第2の部分に関連付けられる。 In one or more embodiments of the invention, each partition is further subdivided according to the number of threads the processor is running in MT mode. For example, if the processor is running four threads, the two partitions in the LSU will each have two parts (the first partition for the first thread and the second part for the second thread). It is further divided and each partition is associated with a pair of threads. In one or more other embodiments where the number of threads in MT mode is different from four, the partition is divided into different numbers of parts based on the number of threads associated with each partition. In the above example, where a pair of threads is associated with each partition and each partition is further divided into equal parts, the first thread of the pair uses the first part and the second thread is the second. Use the part. Therefore, the instruction executed at T0 of LD0 / ST0 is associated with the first part of the partition of LRQF0, LRQE0, SRQR0, and ERT0, and the instruction executed at T2 of LD0 / ST0 is LRQF0, LRQE0, Associated with the second part of the SRQR0, and ERT0 partitions. Further, the instructions executed at T1 of LD1 / ST1 are associated with the first part of the partition of LRQF1, LRQE1, SRQR1 and ERT1, and the instructions executed at T3 of LD1 / ST1 are LRQF1, LRQE1. Associated with the second part of the SRQR1 and ERT1 partitions.

ここで、本発明の1つまたは複数の実施形態の一部または全部の態様を実装するためのコンピュータ・システム1400のブロック図である図14を参照する。本明細書に記載された処理は、ハードウェア、ソフトウェア(例えば、ファームウェア)、またはハードウェアとソフトウェアの組み合わせにおいて実装されてよい。実施形態例では、記載された方法は、少なくとも一部においてハードウェアに実装されてよく、モバイル・デバイス、パーソナル・コンピュータ、ワークステーション、マイクロコンピュータ、またはメインフレーム・コンピュータなどの、専用または汎用コンピュータ・システム1400のマイクロプロセッサの一部であってよい。 Here, reference is made to FIG. 14, which is a block diagram of a computer system 1400 for implementing some or all embodiments of one or more embodiments of the present invention. The processes described herein may be implemented in hardware, software (eg, firmware), or a combination of hardware and software. In embodiments, the methods described may be implemented in hardware, at least in part, and may be a dedicated or general purpose computer such as a mobile device, personal computer, workstation, microprocessor, or mainframe computer. It may be part of the microprocessor of the system 1400.

実施形態例では、図14に示されているように、コンピュータ・システム1400は、プロセッサ1405、メモリ・コントローラ1415に結合されたメモリ1412、および1つまたは複数の入力デバイス1445、またはローカルI/Oコントローラ1435を介して通信によって結合された周辺機器などの出力デバイス1447、あるいはその組み合わせを含む。これらのデバイス1447および1445は、例えば、プリンタ、スキャナ、マイクロホンなどを含んでよい。従来のキーボード1450およびマウス1455は、I/Oコントローラ1435に結合されてよい。I/Oコントローラ1435は、例えば、1つまたは複数のバスあるいは従来技術において知られたその他の有線接続または無線接続であってよい。I/Oコントローラ1435は、簡単にするために省略されている、通信を可能にするためのコントローラ、バッファ(キャッシュ)、ドライバ、リピータ、およびレシーバなどの追加の要素を含んでよい。 In an example embodiment, as shown in FIG. 14, the computer system 1400 is a processor 1405, a memory 1412 coupled to a memory controller 1415, and one or more input devices 1445, or local I / O. Includes output devices 1447 such as peripherals coupled via communication via controller 1435, or a combination thereof. These devices 1447 and 1445 may include, for example, printers, scanners, microphones and the like. The conventional keyboard 1450 and mouse 1455 may be coupled to the I / O controller 1435. The I / O controller 1435 may be, for example, one or more buses or other wired or wireless connections known in the art. The I / O controller 1435 may include additional elements such as a controller, buffer (cache), driver, repeater, and receiver for enabling communication, which are omitted for simplicity.

I/Oデバイス1447、1445は、例えばディスク・ストレージおよびテープ・ストレージ、ネットワーク・インターフェイス・カード(NIC:network interface card)または変調器/復調器(他のファイル、デバイス、システム、またはネットワークにアクセスするため)、無線周波(RF:radio frequency)またはその他のトランシーバ、電話インターフェイス、ブリッジ、ルータなどの、入力および出力の両方と通信するデバイスをさらに含んでよい。 I / O devices 1447, 1445 access, for example, disk and tape storage, network interface cards (NICs) or modulators / demodulators (other files, devices, systems, or networks). It may further include devices that communicate with both inputs and outputs, such as radio frequency (RF) or other transceivers, telephone interfaces, bridges, routers, and so on.

プロセッサ1405は、ハードウェア命令またはソフトウェア、具体的には、メモリ1412に格納されたソフトウェアを実行するためのハードウェア・デバイスである。プロセッサ1405は、カスタムメイドであるか、または市販されたプロセッサ、中央処理装置(CPU:central processing unit)、コンピュータ・システム1400に関連付けられた複数のプロセッサ間の補助プロセッサ、(マイクロチップまたはチップ・セットの形態での)半導体ベースのマイクロプロセッサ、マクロプロセッサ、または命令を実行するためのその他のデバイスであってよい。プロセッサ1405は、実行可能命令のフェッチを高速化するための命令キャッシュ、データのフェッチおよび格納を高速化するためのデータ・キャッシュ、および実行可能命令とデータの両方の仮想アドレスから物理アドレスへの変換を高速化するために使用されるトランスレーション・ルックアサイド・バッファ(TLB:translation look-aside buffer)などのキャッシュを含むことができるが、これらに限定されない。キャッシュは、さらに多くのキャッシュ・レベル(L1、L2など)の階層として構造化されてよい。 Processor 1405 is a hardware device for executing hardware instructions or software, specifically software stored in memory 1412. Processor 1405 is a custom-made or commercially available processor, central processing unit (CPU), auxiliary processor between multiple processors associated with computer system 1400 (microchip or chip set). It may be a semiconductor-based microprocessor (in the form of), a macroprocessor, or any other device for executing instructions. Processor 1405 includes an instruction cache for speeding up the fetching of executable instructions, a data cache for speeding up fetching and storing data, and a virtual address-to-physical address translation of both executable instructions and data. Can include, but is not limited to, caches such as translation look-aside buffers (TLBs) used to speed up. The cache may be structured as a hierarchy of more cache levels (L1, L2, etc.).

メモリ1412は、揮発性メモリ素子(例えば、DRAM、SRAM、SDRAMなどのランダム・アクセス・メモリ(RAM:random access memory))および不揮発性メモリ素子(例えば、ROM、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read only memory)、電子的消去可能プログラマブル読み取り専用メモリ(EEPROM:electronically erasable programmable read only memory)、プログラマブル読み取り専用メモリ(PROM:programmable read only memory)、テープ、コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read only memory)、ディスク、フロッピー(R)・ディスク、カートリッジ、カセットなど)のうちの1つまたは組み合わせを含んでよい。さらに、メモリ1412は電子、磁気、光、またはその他の種類のストレージ媒体を組み込んでよい。メモリ1412が、さまざまなコンポーネントが互いに遠く離れた位置にあるが、プロセッサ1405によってアクセスされてよい、分散アーキテクチャを含むことができるということに注意する。 The memory 1412 includes a volatile memory element (eg, random access memory (RAM) such as DRAM, SRAM, SDRAM) and a non-volatile memory element (eg, ROM, erasable programmable read-only memory (EPROM:). erasable programmable read only memory), electronically erasable programmable read only memory (EEPROM: electronically erasable programmable read only memory), programmable read only memory (PROM: programmable read only memory), tape, compact disk read only memory (CD- ROM: compact disc read only memory), disc, floppy (R) disc, cartridge, cassette, etc.) may be included. In addition, the memory 1412 may incorporate electronic, magnetic, optical, or other types of storage media. Note that memory 1412 can include a distributed architecture in which the various components are located far apart from each other but may be accessed by processor 1405.

メモリ1412内の命令は、1つまたは複数の別々のプログラムを含んでよく、それらのプログラムの各々は、論理的機能を実装するための実行可能命令の順序付けられたリストを含む。図14の例では、メモリ1412内の命令は、適切なオペレーティング・システム(OS:operating system)1411を含む。オペレーティング・システム1411は、基本的に他のコンピュータ・プログラムの実行を制御することができ、スケジューリング、入出力制御、ファイルおよびデータの管理、メモリ管理、ならびに通信制御および関連するサービスを提供する。 The instructions in memory 1412 may include one or more separate programs, each of which contains an ordered list of executable instructions for implementing a logical function. In the example of FIG. 14, the instructions in memory 1412 include an appropriate operating system (OS) 1411. Operating system 1411 can essentially control the execution of other computer programs, providing scheduling, input / output control, file and data management, memory management, and communication control and related services.

例えば、プロセッサ1405の命令またはその他の取り出し可能な情報を含む追加データが、ストレージ1427に格納されてよく、ストレージ1427はハード・ディスク・ドライブまたは半導体ドライブなどのストレージ・デバイスであってよい。メモリ1412またはストレージ1427に格納される命令は、プロセッサ1405が本開示のディスパッチ・システムおよび方法の1つまたは複数の態様を実行できるようにする命令を含んでよい。 For example, additional data, including instructions from processor 1405 or other retrievable information, may be stored in storage 1427, which may be a storage device such as a hard disk drive or a semiconductor drive. Instructions stored in memory 1412 or storage 1427 may include instructions that allow processor 1405 to perform one or more aspects of the dispatch system and method of the present disclosure.

コンピュータ・システム1400は、ディスプレイ1430に結合されたディスプレイ・コントローラ1425をさらに含んでよい。実施形態例では、コンピュータ・システム1400は、ネットワーク1465に結合するためのネットワーク・インターフェイス1460をさらに含んでよい。ネットワーク1465は、コンピュータ・システム1400と、外部サーバ、クライアントなどとの間での、ブロードバンド接続を介した通信用のIPベースのネットワークであってよい。ネットワーク1465は、コンピュータ・システム1400と外部システムの間で、データを送受信する。実施形態例では、ネットワーク1465は、サービス・プロバイダによって管理された管理IPネットワークであってよい。ネットワーク1465は、例えば、WiFi、WinMaxなどの無線プロトコルおよび無線技術を使用して、無線方式で実装されてよい。ネットワーク1465は、ローカル・エリア・ネットワーク、広域ネットワーク、メトロポリタン・エリア・ネットワーク、インターネット、またはその他の類似する種類のネットワーク環境などの、パケット交換ネットワークであってもよい。ネットワーク1465は、固定無線ネットワーク、無線ローカル・エリア・ネットワーク(LAN:local area network)、無線広域ネットワーク(WAN:wide areanetwork)、パーソナル・エリア・ネットワーク(PAN:personal area network)、仮想プライベート・ネットワーク(VPN:virtual private network)、インターネット、またはその他の適切なネットワーク・システムであってよく、信号を送受信するための機器を含むことができる。 The computer system 1400 may further include a display controller 1425 coupled to the display 1430. In an embodiment, the computer system 1400 may further include a network interface 1460 for coupling to the network 1465. The network 1465 may be an IP-based network for communication over a broadband connection between the computer system 1400 and an external server, client, or the like. Network 1465 sends and receives data between computer system 1400 and an external system. In an embodiment, the network 1465 may be a managed IP network managed by a service provider. The network 1465 may be implemented wirelessly using, for example, wireless protocols and technologies such as WiFi, WinMax. Network 1465 may be a packet-switched network, such as a local area network, a wide area network, a metropolitan area network, the Internet, or other similar types of network environments. The network 1465 includes a fixed wireless network, a wireless local area network (LAN), a wide area network (WAN), a personal area network (PAN), and a virtual private network (PAN). It may be a virtual private network), the Internet, or any other suitable network system, and may include equipment for transmitting and receiving signals.

分割された読み込み要求キューおよび格納要求キューを提供するためのシステムおよび方法が、コンピュータ・プログラム製品において、または図14に示されているようなコンピュータ・システム1400において、全体的または部分的に具現化され得る。 Systems and methods for providing split read and store request queues are embodied in whole or in part in computer program products or in computer system 1400 as shown in FIG. Can be done.

本明細書では、関連する図面を参照して、本発明のさまざまな実施形態が説明される。本発明の範囲を逸脱することなく、本発明の代替の実施形態が考案され得る。以下の説明および図面において、要素間のさまざまな接続および位置関係(例えば、上、下、隣接など)が示される。それらの接続または位置関係あるいはその両方は、特に規定されない限り、直接的または間接的であることができ、本発明はこの点において限定するよう意図されていない。したがって、各実体の結合は、直接的結合または間接的結合を指すことができ、各実体間の位置関係は、直接的位置関係または間接的位置関係であることができる。さらに、本明細書に記載されたさまざまな作業および工程段階は、本明細書に詳細に記載されない追加の段階または機能を含んでいるさらに包括的な手順または工程に組み込まれ得る。 In the present specification, various embodiments of the present invention will be described with reference to the relevant drawings. Alternative embodiments of the invention can be devised without departing from the scope of the invention. In the following description and drawings, various connections and positional relationships between the elements (eg, top, bottom, adjacency, etc.) are shown. Their connections and / or positional relationships can be direct or indirect, unless otherwise specified, and the invention is not intended to be limited in this regard. Therefore, the connection of each entity can refer to a direct connection or an indirect connection, and the positional relationship between the entities can be a direct positional relationship or an indirect positional relationship. In addition, the various work and process steps described herein may be incorporated into more comprehensive procedures or steps that include additional steps or functions not described in detail herein.

以下の定義および略称が、特許請求の範囲および本明細書の解釈に使用される。本明細書において使用されているように、「備える」、「備えている」、「含む」、「含んでいる」、「有する」、「有している」、「含有する」、「含有している」という用語、またはこれらの任意のその他の変形は、非排他的包含をカバーするよう意図されている。例えば、要素のリストを含んでいる組成、混合、工程、方法、製品、または装置は、それらの要素のみに必ずしも限定されず、明示されていないか、またはそのような組成、混合、工程、方法、製品、または装置に固有の、その他の要素を含むことができる。 The following definitions and abbreviations are used in the claims and interpretation of the specification. As used herein, "prepare", "prepare", "contain", "contain", "have", "have", "contain", "contain". The term "is", or any other variant of these, is intended to cover non-exclusive inclusion. For example, a composition, mixture, process, method, product, or device that includes a list of elements is not necessarily limited to those elements and is not specified or such composition, mixture, process, method. Can include other elements that are specific to, product, or device.

さらに、「例示的」という用語は、本明細書では「例、事例、または実例としての役割を果たす」ことを意味するために使用される。「例示的」として本明細書に記載された実施形態または設計は、必ずしも他の実施形態または設計よりも好ましいか、または有利であると解釈されるべきではない。「少なくとも1つ」および「1つまたは複数」という用語は、1以上の任意の整数(すなわち、1、2、3、4など)を含んでいると理解されてよい。「複数」という用語は、2以上の任意の整数(すなわち、2、3、4、5など)を含んでいると理解されてよい。「接続」という用語は、間接的「接続」および直接的「接続」の両方を含んでよい。 In addition, the term "exemplary" is used herein to mean "act as an example, case, or example." The embodiments or designs described herein as "exemplary" should not necessarily be construed as preferred or advantageous over other embodiments or designs. The terms "at least one" and "one or more" may be understood to include any one or more integers (ie, 1, 2, 3, 4, etc.). The term "plurality" may be understood to include any integer greater than or equal to 2 (ie, 2, 3, 4, 5, etc.). The term "connection" may include both indirect "connection" and direct "connection".

「約」、「実質的に」、「近似的に」、およびこれらの変形の用語は、本願書の出願時に使用できる機器に基づいて、特定の量の測定に関連付けられた誤差の程度を含むよう意図されている。例えば、「約」は、特定の値の±8%または5%、あるいは2%の範囲を含むことができる。 The terms "about," "substantially," "approximately," and these variants include the degree of error associated with a particular quantity of measurement, based on the equipment available at the time of filing of this application. Is intended to be. For example, "about" can include a range of ± 8% or 5%, or 2% of a particular value.

簡潔さの目的で、本発明の態様の作成および使用に関連する従来手法は、本明細書に詳細に記載されることもあれば、記載されないこともある。具体的には、本明細書に記載されたさまざまな技術的特徴を実装するためのコンピューティング・システムおよび特定のコンピュータ・プログラムのさまざまな態様は、よく知られている。したがって、簡潔さのために、多くの従来の実装に関する詳細は、本明細書では、既知のシステムまたは工程あるいはその両方の詳細を提供することなく、簡潔にのみ述べられるか、または全体的に省略される。 For the sake of brevity, conventional techniques relating to the creation and use of aspects of the invention may or may not be described in detail herein. Specifically, different aspects of computing systems and specific computer programs for implementing the various technical features described herein are well known. Therefore, for brevity, many prior implementation details are given here only briefly or omitted altogether, without providing details of known systems and / or processes. Will be done.

本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読記憶媒体を含んでよい。 The present invention may be a system, method, computer program product, or a combination thereof. The computer program product may include a computer-readable storage medium containing computer-readable program instructions for causing the processor to perform aspects of the invention.

コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー(R)・ディスク、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-onlymemory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasableprogrammable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されるとき、コンピュータ可読記憶媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。 The computer-readable storage medium can be a tangible device that can hold and store instructions for use by the instruction execution device. The computer-readable storage medium may be, for example, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination thereof, but is limited thereto. Not done. A non-exhaustive list of more specific examples of computer-readable storage media is portable floppy (R) disks, hard disks, random access memory (RAM), read-only memory (ROM: read). -onlymemory), erasable programmable read-only memory (EPROM: eraseableprogrammable read-only memory or flash memory), static random access memory (SRAM), portable compact disk read-only memory (CD) -ROM: compact disc read-only memory), digital versatile disk (DVD), memory sticks, floppy (R) discs, punch cards or raised structures in grooves where instructions are recorded, etc. Includes mechanically encoded devices, and any suitable combination of these. As used herein, a computer-readable storage medium itself passes through a radio wave or other freely propagating electromagnetic wave, a waveguide or other transmitting medium propagating electromagnetic wave (eg, an optical fiber cable). It should not be construed as a transient signal, such as an optical pulse) or an electrical signal transmitted over a wire.

本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。 The computer-readable program instructions described herein are from a computer-readable storage medium to each computing device / processing device, or a network (eg, the Internet, a local area network, a wide area network, or a wireless network, or a network thereof). Can be downloaded to an external computer or external storage device via a combination). This network may include copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. A network adapter card or network interface within each computing device / processing device receives computer-readable program instructions from the network and these computer-readable program instructions are computer-readable within each computing device / processing device. Transfer for storage on a storage medium.

本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Java(R)、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide areanetwork)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。 The computer-readable program instructions for performing the operation of the present invention include assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcodes, firmware instructions, state setting data, and the like. Alternatively, any one or more programming languages, including object-oriented programming languages such as Java (R), Smalltalk (R), C ++, and traditional procedural programming languages such as the "C" programming language or similar programming languages. It may be source code or object code written in a combination of. Computer-readable program instructions can be executed entirely on the user's computer, partially on the user's computer as a stand-alone software package, and partially on the user's computer and on the remote computer, respectively. It can be run, or it can be run globally on a remote computer or on a server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN). Alternatively, the connection may be made to an external computer (eg, over the Internet using an Internet service provider). In some embodiments, in order to carry out aspects of the invention, for example, programmable logic circuits, field-programmable gate arrays (FPGAs), or programmable logic arrays (PLAs). The electronic circuit including) may execute the computer-readable program instruction for customizing the electronic circuit by utilizing the state information of the computer-readable program instruction.

本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。 Aspects of the invention are described herein with reference to flow charts and / or block diagrams of methods, devices (systems), and computer program products, according to embodiments of the invention. It will be appreciated that each block of the flow chart and / or block diagram, as well as the combination of blocks contained in the flow chart and / or block diagram, can be implemented by computer-readable program instructions.

これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読記憶媒体がフローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読記憶媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。 These computer-readable program instructions are means by which instructions executed through the processor of a computer or other programmable data processing device perform the functions / operations specified in the block diagram and / or block diagram. It may be provided to a general purpose computer, a dedicated computer, or the processor of another programmable data processing device to create a machine. These computer-readable program instructions are such that the computer-readable storage medium in which the instructions are stored comprises a product containing instructions that implement the functional / operational mode specified in the block diagram and / or block diagram. It may be stored on a computer-readable storage medium and can instruct a computer, a programmable data processor, or other device, or a combination thereof, to function in a particular manner.

コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施するように、コンピュータ実装プロセスを生成するべく、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行させるものであってもよい。 Computer-readable program instructions are such that instructions executed on a computer, other programmable device, or other device perform the functions / operations specified in the block diagram and / or block diagram. , May be loaded into a computer, other programmable data processing device, or other device to spawn a computer implementation process, thereby allowing a series of operable steps to be programmed on the computer or other. It may be run on a device or on another device.

図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。 The flowcharts and block diagrams in the figure show the architecture, function, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the invention. In this regard, each block in a flowchart or block diagram may represent a module, segment, or portion of an instruction that comprises one or more executable instructions for implementing a defined logical function. .. In some alternative implementations, the functions shown in the blocks may occur in a different order than shown in the figure. For example, two blocks shown in succession may actually be executed at substantially the same time or, in some cases, in reverse order, depending on the functions included. Each block of the block diagram and / or flow chart, and the combination of blocks contained in the block diagram and / or flow chart, either performs the specified function or operation, or is a combination of dedicated hardware and computer instructions. Also note that it can be implemented by a dedicated hardware-based system that runs.

本発明のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された実施形態に制限されない。記載された実施形態の範囲および思想を逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかであろう。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするために選択されている。 Descriptions of the various embodiments of the invention are presented for illustrative purposes, but are not intended to be exhaustive and are not limited to the disclosed embodiments. It will be apparent to those skilled in the art that many modifications and variations are possible without departing from the scope and ideas of the embodiments described. The terms used herein are to best describe the principles of the embodiment, the actual application, or technical improvements beyond the techniques found on the market, or are disclosed herein by those of ordinary skill in the art. It has been selected to help you understand the embodiments.

Claims (20)

1つまたは複数の命令を実行するための処理ユニットであって、前記処理ユニットは、
読み込み/格納ユニット(LSU)を備えており、前記LSUは、複数のLSUパイプを使用してアウトオブオーダー(OoO)ウィンドウ内の複数の命令を実行するように構成されており、前記命令は、
前記OoOウィンドウから命令を選択することであって、前記命令が実効アドレスを使用する、前記選択することと、
前記命令が読み込み命令であることに応答して、
前記処理ユニットがシングルスレッド・モードで動作することに応答して、前記命令が第1の読み込みパイプ上で発行されているということに基づいて読み込み順序変更キューの第1のパーティションにエントリを作成することと、前記命令が第2の読み込みパイプ上で発行されているということに基づいて、前記読み込み順序変更キューの第2のパーティションに前記エントリを作成することと、
複数のスレッドが同時に処理されるマルチスレッド・モードで前記処理ユニットが動作することに応答して、前記命令が前記第1の読み込みパイプ上で発行されているということに基づいて、前記処理ユニットの第1のスレッドによって、前記読み込み順序変更キューの前記第1のパーティションの第1の所定の部分に前記エントリを作成することと
によって実行される、処理ユニット。
A processing unit for executing one or more instructions, wherein the processing unit is
It comprises a read / store unit (LSU), the LSU being configured to use multiple LSU pipes to execute multiple instructions in an out-of-order (OoO) window.
The selection of an instruction from the OoO window, wherein the instruction uses an effective address.
In response to the instruction being a read instruction
Creates an entry in the first partition of the read reorder queue based on the instruction being issued on the first read pipe in response to the processing unit operating in single thread mode. And, based on the fact that the instruction was issued on the second read pipe, creating the entry in the second partition of the read order change queue.
Based on the fact that the instruction is issued on the first read pipe in response to the operation of the processing unit in a multithreaded mode in which a plurality of threads are processed simultaneously, the processing unit of the processing unit A processing unit executed by a first thread by creating the entry in the first predetermined portion of the first partition of the read order change queue.
前記マルチスレッド・モードにおいて、前記読み込み順序変更キューの前記第1のパーティションの前記第1の所定の部分が、前記第1の読み込みパイプを使用して前記処理ユニットの前記第1のスレッドによって発行された読み込み命令に固有である、請求項1に記載の処理ユニット。 In the multithreaded mode, the first predetermined portion of the first partition of the read order change queue is issued by the first thread of the processing unit using the first read pipe. The processing unit according to claim 1, which is specific to the read instruction. 前記読み込み/格納ユニットが、
前記命令が格納命令であることに応答して、
前記処理ユニットが前記シングルスレッド・モードで動作することに応答して、前記格納命令が第1の格納パイプ上で発行されているということに基づいて格納順序変更キューの第1のパーティションに格納エントリを作成することと、前記格納命令が第2の格納パイプ上で発行されているということに基づいて、前記格納順序変更キューの第2のパーティションに前記格納エントリを作成することと、
前記マルチスレッド・モードで前記処理ユニットが動作することに応答して、前記格納命令が前記第1の格納パイプ上で発行されているということに基づいて、前記処理ユニットの前記第1のスレッドによって、前記格納順序変更キューの前記第1のパーティションの第1の所定の部分に前記格納エントリを作成することと
を実行するようにさらに構成されている、請求項1に記載の処理ユニット。
The read / store unit
In response to the instruction being a storage instruction
A storage entry in the first partition of the storage order change queue based on the fact that the storage instruction was issued on the first storage pipe in response to the processing unit operating in the single thread mode. And creating the storage entry in the second partition of the storage order change queue based on the fact that the storage instruction was issued on the second storage pipe.
In response to the operation of the processing unit in the multithreaded mode, the storage instruction is issued on the first storage pipe by the first thread of the processing unit. The processing unit of claim 1, further configured to create the storage entry in a first predetermined portion of the first partition of the storage order change queue.
前記読み込み順序変更キューが、前記LSUの読み込みパイプごとに1つのパーティションを含んでいる、請求項1に記載の処理ユニット。 The processing unit according to claim 1, wherein the read order change queue includes one partition for each read pipe of the LSU. 前記LSUが複数の読み込み命令を同時に動作させ、1つの読み込み命令が各読み込みパイプを使用する、請求項4に記載の処理ユニット。 The processing unit according to claim 4, wherein the LSU operates a plurality of read instructions at the same time, and one read instruction uses each read pipe. 前記格納順序変更キューが、前記LSUの格納パイプごとに1つのパーティションを含んでいる、請求項に記載の処理ユニット。 The processing unit according to claim 3 , wherein the storage order change queue includes one partition for each storage pipe of the LSU. 前記LSUが複数の格納命令を同時に動作させ、1つの格納命令が各読み込みパイプを使用する、請求項6に記載の処理ユニット。 The processing unit according to claim 6, wherein the LSU operates a plurality of storage instructions at the same time, and one storage instruction uses each read pipe. 処理ユニットによる1つまたは複数の命令のアウトオブオーダー実行のためのコンピュータ実装方法であって、前記方法は、
前記処理ユニットの読み込み/格納ユニット(LSU)によって、順序に従わずに実行される複数の命令を含んでいる命令のアウトオブオーダー(OoO)ウィンドウを受信することと、
前記LSUによって、前記OoOウィンドウから命令を発行することと
を含んでおり、前記命令は、
前記OoOウィンドウから命令を選択することであって、前記命令が実効アドレスを使用する、前記選択することと、
前記命令が読み込み命令であることに応答して、
前記処理ユニットがシングルスレッド・モードで動作することに応答して、前記命令が第1の読み込みパイプ上で発行されているということに基づいて読み込み順序変更キューの第1のパーティションにエントリを作成することと、前記命令が第2の読み込みパイプ上で発行されているということに基づいて、前記読み込み順序変更キューの第2のパーティションに前記エントリを作成することと、
マルチスレッド・モードで前記処理ユニットが動作することに応答して、前記命令が前記第1の読み込みパイプ上で発行されているということに基づいて、前記処理ユニットの第1のスレッドによって、前記読み込み順序変更キューの前記第1のパーティションの第1の所定の部分に前記エントリを作成することと
によって発行される、コンピュータ実装方法。
A computer implementation method for out-of-order execution of one or more instructions by a processing unit.
Receiving an out-of-order (OoO) window of instructions containing multiple instructions executed out of order by the processing unit's read / store unit (LSU).
The LSU comprises issuing an instruction from the OoO window, the instruction.
The selection of an instruction from the OoO window, wherein the instruction uses an effective address.
In response to the instruction being a read instruction
Creates an entry in the first partition of the read reorder queue based on the instruction being issued on the first read pipe in response to the processing unit operating in single thread mode. And, based on the fact that the instruction was issued on the second read pipe, creating the entry in the second partition of the read order change queue.
The read by the first thread of the processing unit based on the instruction being issued on the first read pipe in response to the operation of the processing unit in multithreaded mode. A computer implementation method issued by creating the entry in the first predetermined portion of the first partition of the reordering queue.
前記マルチスレッド・モードにおいて、前記読み込み順序変更キューの前記第1のパーティションの前記第1の所定の部分が、前記第1の読み込みパイプを使用して前記処理ユニットの前記第1のスレッドによって発行された読み込み命令に固有である、請求項8に記載のコンピュータ実装方法。 In the multithreaded mode, the first predetermined portion of the first partition of the read order change queue is issued by the first thread of the processing unit using the first read pipe. The computer implementation method according to claim 8, which is specific to the read instruction. 前記命令が格納命令であることに応答して、
前記処理ユニットが前記シングルスレッド・モードで動作することに応答して、前記格納命令が第1の格納パイプ上で発行されているということに基づいて格納順序変更キューの第1のパーティションに格納エントリを作成することと、前記格納命令が第2の格納パイプ上で発行されているということに基づいて、前記格納順序変更キューの第2のパーティションに前記格納エントリを作成することと、
前記マルチスレッド・モードで前記処理ユニットが動作することに応答して、前記格納命令が前記第1の格納パイプ上で発行されているということに基づいて、前記処理ユニットの前記第1のスレッドによって、前記格納順序変更キューの前記第1のパーティションの第1の所定の部分に前記格納エントリを作成することと
をさらに含んでいる、請求項8に記載のコンピュータ実装方法。
In response to the instruction being a storage instruction
A storage entry in the first partition of the storage order change queue based on the fact that the storage instruction was issued on the first storage pipe in response to the processing unit operating in the single thread mode. And creating the storage entry in the second partition of the storage order change queue based on the fact that the storage instruction was issued on the second storage pipe.
In response to the operation of the processing unit in the multithreaded mode, the storage instruction is issued on the first storage pipe by the first thread of the processing unit. The computer implementation method of claim 8, further comprising creating the storage entry in a first predetermined portion of the first partition of the storage order change queue.
前記読み込み順序変更キューが、前記LSUの読み込みパイプごとに1つのパーティションを含んでいる、請求項8に記載のコンピュータ実装方法。 The computer implementation method according to claim 8, wherein the read order change queue includes one partition for each read pipe of the LSU. 前記LSUが複数の読み込み命令を同時に動作させ、1つの読み込み命令が各読み込みパイプを使用する、請求項11に記載のコンピュータ実装方法。 The computer implementation method according to claim 11, wherein the LSU operates a plurality of read instructions at the same time, and one read instruction uses each read pipe. 前記格納順序変更キューが、前記LSUの格納パイプごとに1つのパーティションを含んでいる、請求項10に記載のコンピュータ実装方法。 The computer implementation method according to claim 10 , wherein the storage order change queue includes one partition for each storage pipe of the LSU. 前記LSUが複数の格納命令を同時に動作させ、1つの格納命令が各読み込みパイプを使用する、請求項13に記載のコンピュータ実装方法。 13. The computer implementation method according to claim 13, wherein the LSU operates a plurality of storage instructions at the same time, and one storage instruction uses each read pipe. プログラム命令が具現化されているコンピュータ可読記憶媒体を備えているコンピュータ・プログラム製品であって、前記プログラム命令は、処理ユニットに、
前記処理ユニットの読み込み/格納ユニット(LSU)によって、順序に従わずに実行される複数の命令を含んでいる命令のアウトオブオーダー(OoO)ウィンドウを受信することと、
前記LSUによって、前記OoOウィンドウから命令を発行することと
を含む動作を実行させるように前記処理ユニットによって実行可能であり、前記命令は、
前記OoOウィンドウから命令を選択することであって、前記命令が実効アドレスを使用する、前記選択することと、
前記命令が読み込み命令であることに応答して、
前記処理ユニットがシングルスレッド・モードで動作することに応答して、前記命令が第1の読み込みパイプ上で発行されているということに基づいて読み込み順序変更キューの第1のパーティションにエントリを作成することと、前記命令が第2の読み込みパイプ上で発行されているということに基づいて、前記読み込み順序変更キューの第2のパーティションに前記エントリを作成することと、
マルチスレッド・モードで前記処理ユニットが動作することに応答して、前記命令が前記第1の読み込みパイプ上で発行されているということに基づいて、前記処理ユニットの第1のスレッドによって、前記読み込み順序変更キューの前記第1のパーティションの第1の所定の部分に前記エントリを作成することと
によって発行される、コンピュータ・プログラム製品。
A computer program product comprising a computer-readable storage medium in which a program instruction is embodied, the program instruction being transmitted to a processing unit.
Receiving an out-of-order (OoO) window of instructions containing multiple instructions executed out of order by the processing unit's read / store unit (LSU).
The LSU can be executed by the processing unit to perform an operation including issuing an instruction from the OoO window, and the instruction is:
The selection of an instruction from the OoO window, wherein the instruction uses an effective address.
In response to the instruction being a read instruction
Creates an entry in the first partition of the read reorder queue based on the instruction being issued on the first read pipe in response to the processing unit operating in single thread mode. And, based on the fact that the instruction was issued on the second read pipe, creating the entry in the second partition of the read order change queue.
The read by the first thread of the processing unit based on the instruction being issued on the first read pipe in response to the operation of the processing unit in multithreaded mode. A computer program product issued by creating the entry in the first predetermined portion of the first partition of the reordering queue.
前記マルチスレッド・モードにおいて、前記読み込み順序変更キューの前記第1のパーティションの前記第1の所定の部分が、前記第1の読み込みパイプを使用して前記処理ユニットの前記第1のスレッドによって発行された読み込み命令に固有である、請求項15に記載のコンピュータ・プログラム製品。 In the multithreaded mode, the first predetermined portion of the first partition of the read order change queue is issued by the first thread of the processing unit using the first read pipe. The computer program product according to claim 15, which is specific to the read instruction. 前記命令が格納命令であることに応答して、
前記処理ユニットが前記シングルスレッド・モードで動作することに応答して、前記格納命令が第1の格納パイプ上で発行されているということに基づいて格納順序変更キューの第1のパーティションに格納エントリを作成することと、前記格納命令が第2の格納パイプ上で発行されているということに基づいて、前記格納順序変更キューの第2のパーティションに前記格納エントリを作成することと、
前記マルチスレッド・モードで前記処理ユニットが動作することに応答して、前記格納命令が前記第1の格納パイプ上で発行されているということに基づいて、前記処理ユニットの前記第1のスレッドによって、前記格納順序変更キューの前記第1のパーティションの第1の所定の部分に前記格納エントリを作成することと
を含んでいる、請求項15に記載のコンピュータ・プログラム製品。
In response to the instruction being a storage instruction
A storage entry in the first partition of the storage order change queue based on the fact that the storage instruction was issued on the first storage pipe in response to the processing unit operating in the single thread mode. And creating the storage entry in the second partition of the storage order change queue based on the fact that the storage instruction was issued on the second storage pipe.
In response to the operation of the processing unit in the multithreaded mode, the storage instruction is issued on the first storage pipe by the first thread of the processing unit. 15. The computer program product of claim 15, comprising creating the storage entry in a first predetermined portion of the first partition of the storage order change queue.
前記読み込み順序変更キューが、前記LSUの読み込みパイプごとに1つのパーティションを含んでいる、請求項15に記載のコンピュータ・プログラム製品。 15. The computer program product of claim 15, wherein the read order change queue contains one partition for each read pipe of the LSU. 前記LSUが複数の読み込み命令を同時に動作させ、1つの読み込み命令が各読み込みパイプを使用する、請求項18に記載のコンピュータ・プログラム製品。 18. The computer program product of claim 18, wherein the LSU operates a plurality of read instructions simultaneously, with one read instruction using each read pipe. 前記格納順序変更キューが、前記LSUの格納パイプごとに1つのパーティションを含んでおり、前記LSUが複数の格納命令を同時に動作させ、1つの格納命令が各読み込みパイプを使用する、請求項17に記載のコンピュータ・プログラム製品。 17 . Described computer program products.
JP2020517847A 2017-10-06 2018-10-03 Read / store unit with split reorder queue using a single CAM port Active JP7064273B2 (en)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US15/726,596 2017-10-06
US15/726,627 2017-10-06
US15/726,627 US11175924B2 (en) 2017-10-06 2017-10-06 Load-store unit with partitioned reorder queues with single cam port
US15/726,596 US10606591B2 (en) 2017-10-06 2017-10-06 Handling effective address synonyms in a load-store unit that operates without address translation
US15/825,453 US11175925B2 (en) 2017-10-06 2017-11-29 Load-store unit with partitioned reorder queues with single cam port
US15/825,494 2017-11-29
US15/825,453 2017-11-29
US15/825,494 US10606592B2 (en) 2017-10-06 2017-11-29 Handling effective address synonyms in a load-store unit that operates without address translation
PCT/IB2018/057695 WO2019069256A1 (en) 2017-10-06 2018-10-03 Load-store unit with partitioned reorder queues with single cam port

Publications (2)

Publication Number Publication Date
JP2020536308A JP2020536308A (en) 2020-12-10
JP7064273B2 true JP7064273B2 (en) 2022-05-10

Family

ID=65994519

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2020517847A Active JP7064273B2 (en) 2017-10-06 2018-10-03 Read / store unit with split reorder queue using a single CAM port
JP2020517947A Active JP7025100B2 (en) 2017-10-06 2018-10-03 Processing effective address synonyms in read / store units that operate without address translation

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2020517947A Active JP7025100B2 (en) 2017-10-06 2018-10-03 Processing effective address synonyms in read / store units that operate without address translation

Country Status (5)

Country Link
JP (2) JP7064273B2 (en)
CN (2) CN111133421B (en)
DE (2) DE112018004006B4 (en)
GB (2) GB2579757B (en)
WO (2) WO2019069255A1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023056289A (en) 2021-10-07 2023-04-19 富士通株式会社 Arithmetic processing unit, and arithmetic processing method
CN114780146B (en) * 2022-06-17 2022-08-26 深流微智能科技(深圳)有限公司 Resource address query method, device and system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001356903A (en) 2000-05-04 2001-12-26 Internatl Business Mach Corp <Ibm> Method and device for flashing pipeline stage in multi- thread processor
US20130212585A1 (en) 2012-02-10 2013-08-15 Thang M. Tran Data processing system operable in single and multi-thread modes and having multiple caches and method of operation

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6931639B1 (en) * 2000-08-24 2005-08-16 International Business Machines Corporation Method for implementing a variable-partitioned queue for simultaneous multithreaded processors
US7343469B1 (en) * 2000-09-21 2008-03-11 Intel Corporation Remapping I/O device addresses into high memory using GART
US20040117587A1 (en) 2002-12-12 2004-06-17 International Business Machines Corp. Hardware managed virtual-to-physical address translation mechanism
US7730282B2 (en) * 2004-08-11 2010-06-01 International Business Machines Corporation Method and apparatus for avoiding data dependency hazards in a microprocessor pipeline architecture using a multi-bit age vector
US8145887B2 (en) * 2007-06-15 2012-03-27 International Business Machines Corporation Enhanced load lookahead prefetch in single threaded mode for a simultaneous multithreaded microprocessor
US8645974B2 (en) * 2007-08-02 2014-02-04 International Business Machines Corporation Multiple partition adjunct instances interfacing multiple logical partitions to a self-virtualizing input/output device
US7711929B2 (en) 2007-08-30 2010-05-04 International Business Machines Corporation Method and system for tracking instruction dependency in an out-of-order processor
US8639884B2 (en) * 2011-02-28 2014-01-28 Freescale Semiconductor, Inc. Systems and methods for configuring load/store execution units
US9182991B2 (en) * 2012-02-06 2015-11-10 International Business Machines Corporation Multi-threaded processor instruction balancing through instruction uncertainty
GB2503438A (en) * 2012-06-26 2014-01-01 Ibm Method and system for pipelining out of order instructions by combining short latency instructions to match long latency instructions
CN103198028B (en) * 2013-03-18 2015-12-23 华为技术有限公司 A kind of internal storage data moving method, Apparatus and system
US9740409B2 (en) * 2013-12-13 2017-08-22 Ineda Systems, Inc. Virtualized storage systems
US10209995B2 (en) * 2014-10-24 2019-02-19 International Business Machines Corporation Processor core including pre-issue load-hit-store (LHS) hazard prediction to reduce rejection of load instructions
US10089240B2 (en) * 2014-12-26 2018-10-02 Wisconsin Alumni Research Foundation Cache accessed using virtual addresses

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001356903A (en) 2000-05-04 2001-12-26 Internatl Business Mach Corp <Ibm> Method and device for flashing pipeline stage in multi- thread processor
US20130212585A1 (en) 2012-02-10 2013-08-15 Thang M. Tran Data processing system operable in single and multi-thread modes and having multiple caches and method of operation

Also Published As

Publication number Publication date
GB2579534A (en) 2020-06-24
WO2019069255A1 (en) 2019-04-11
GB2579757B (en) 2020-11-18
DE112018004004T5 (en) 2020-04-16
GB202006344D0 (en) 2020-06-17
GB202006338D0 (en) 2020-06-17
DE112018004006T5 (en) 2020-04-16
JP2020536310A (en) 2020-12-10
DE112018004006B4 (en) 2021-03-25
CN111133413B (en) 2023-09-29
JP2020536308A (en) 2020-12-10
JP7025100B2 (en) 2022-02-24
WO2019069256A1 (en) 2019-04-11
GB2579757A (en) 2020-07-01
GB2579534B (en) 2020-12-16
CN111133421B (en) 2023-09-29
CN111133421A (en) 2020-05-08
CN111133413A (en) 2020-05-08

Similar Documents

Publication Publication Date Title
US10963248B2 (en) Handling effective address synonyms in a load-store unit that operates without address translation
US10977047B2 (en) Hazard detection of out-of-order execution of load and store instructions in processors without using real addresses
US10534616B2 (en) Load-hit-load detection in an out-of-order processor
US10776113B2 (en) Executing load-store operations without address translation hardware per load-store unit port
US11175925B2 (en) Load-store unit with partitioned reorder queues with single cam port
US10324856B2 (en) Address translation for sending real address to memory subsystem in effective address based load-store unit
US10606593B2 (en) Effective address based load store unit in out of order processors
US10579387B2 (en) Efficient store-forwarding with partitioned FIFO store-reorder queue in out-of-order processor
US20120233442A1 (en) Return address prediction in multithreaded processors
US10572257B2 (en) Handling effective address synonyms in a load-store unit that operates without address translation
US9740623B2 (en) Object liveness tracking for use in processing device cache
JP7064273B2 (en) Read / store unit with split reorder queue using a single CAM port
US10579384B2 (en) Effective address based instruction fetch unit for out of order processors

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20200330

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20200327

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210323

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220324

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: 20220411

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20220414

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220420

R150 Certificate of patent or registration of utility model

Ref document number: 7064273

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150