JP2021174506A - 事前設定された未来時間において命令を実行するためのパイプライン制御を備えるマイクプロセッサ - Google Patents

事前設定された未来時間において命令を実行するためのパイプライン制御を備えるマイクプロセッサ Download PDF

Info

Publication number
JP2021174506A
JP2021174506A JP2020172656A JP2020172656A JP2021174506A JP 2021174506 A JP2021174506 A JP 2021174506A JP 2020172656 A JP2020172656 A JP 2020172656A JP 2020172656 A JP2020172656 A JP 2020172656A JP 2021174506 A JP2021174506 A JP 2021174506A
Authority
JP
Japan
Prior art keywords
instruction
time point
throughput
execution
counter
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.)
Withdrawn
Application number
JP2020172656A
Other languages
English (en)
Inventor
丁明 陳
Thang Minh Tran
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.)
Andes Technology Corp
Original Assignee
Andes Technology 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
Application filed by Andes Technology Corp filed Critical Andes Technology Corp
Publication of JP2021174506A publication Critical patent/JP2021174506A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/223Execution means for microinstructions irrespective of the microinstruction function, e.g. decoding of microinstructions and nanoinstructions; timing of microinstructions; programmable logic arrays; delays and fan-out problems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30141Implementation provisions of register files, e.g. ports
    • 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/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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Abstract

【課題】復号段階で命令のオペランドレジスタ及び機能ユニットコンフリクトを解決し、命令が未来に実行されるように予定するマイクロプロセッサを提供する。【解決手段】復号/発令ユニット120は未来時間におけるリソースの可用性をチェックし、命令を機能ユニット専用の実行キュー161に効果的に発送する。データ依存性チェックは、オペランドがコンフリクトしておらず、命令が発令され、その後の命令をブロックしない可能性がより高い未来の時において行われる。命令は、実行のために機能ユニットに発送されると、未来の予定された時間まで実行キューに発令される。未来においていつリソースが可用であり、機能ユニットが次の命令を受け取ることができるかを把握するために、カウンター163を使用する。また、レジスタファイル読み取り書き込みポートがオペランドデータを読み取り及び書き込みできる未来のNサイクルを把握する。【選択図】図2

Description

本開示は、概して、マイクロプロセッサに関し、具体的には、事前に命令を発令する実行パイプライン制御を有するマイクプロセッサに関する。
マイクロプロセッサにおいて、命令は、命令に対応するオペランドレジスタ及び機能ユニットの可用性(すなわち、コンフリクト)に基づいてパイプライン及び実行される。オペランドレジスタの可用性は、データ依存性及び読み取り書き込みポートのレジスタファイルに対する可用性を含む。オペランドレジスタ及び機能ユニットが可用でない場合、命令は、停止される、又はキュー(例えば、命令キュー)に入れられ、後で、機能ユニットに発令される前に再度チェックされる。対応するオペランドレジスタ及び対応する機能ユニットが可用である場合、コンフリクト命令は、その後、実行されるために対応する機能ユニットに発送される。コンフリクトを解決する手段には、(1)命令を発令するために、命令を復号したまま停止させ、コンフリクトが除去されるまでチェックを続ける、又は(2)命令を実行キューに発送し、命令を機能ユニットに発送できる特定のコンフリクトをチェックし続ける、という2つの選択肢がある。1つ目の選択肢は、命令が復号されたまま停止し、その後の全ての命令が発令されなくなるために、低パフォーマンスである。2つ目の選択肢は、コンフリクトが多数の異なる場所でチェックされるために、より複雑になる。どちらの場合でも、パイプラインを追跡するためのリソース又は追加のリソース(キュー)の継続的なチェックが必要である。
マイクロプロセッサにおいて、命令は、命令に対応するオペランドレジスタ及び機能ユニットの可用性(すなわち、コンフリクト)に基づいてパイプライン及び実行される。オペランドレジスタの可用性は、データ依存性及び読み取り書き込みポートのレジスタファイルに対する可用性を含む。オペランドレジスタ及び機能ユニットが可用でない場合、命令は、停止される、又はキュー(例えば、命令キュー)に入れられ、後で、復号/発令段階から機能ユニットに発令される前に再度チェックされる。
本開示は、リソースが未来のどの時間において可用であるかを把握し、命令を実行キューに発送するために、その未来時間におけるオペランドの可用性をチェックする。本開示は、必要なレジスタファイル読み取り書き込みポート制御を提供し、それにより、未来の特定の時間において、実行キューの命令を実行パイプラインに送ることができる。本開示は、また、オペランドコンフリクト時間を把握し、命令の実行キューへの発送を促進させる。データ依存性チェックは、オペランドがコンフリクトしておらず、命令が発令され、その後の命令をブロックしない可能性がより高い未来の時において行われる。実行キューの命令は、コンフリクトしておらず、事前に設定された時間に読み込まれてレジスタファイルに書き戻されるオペランドデータと共に、未来の正確な時間に実行される。レジスタファイル読み取り書き込みポートは、オペランドコンフリクトが最少となる最適な設計により設定される。その利点は、先行技術における2つのボトルネックを解決することであり、復号段階における命令の停止を無くし、復号段階及びその他のいかなる場所においてもオペランド及びリソースのコンフリクトを解決する。
上記を鑑みて、本開示は、命令を復号/発令ユニットから機能ユニット専用の実行キューに効果的に発送し、オペランドレジスタ及び機能ユニットの可用性に基づいて、命令の実行を計算された未来時間に予定し、それにより、命令が復号/発令段階において停止することを防止する。予定された未来時間において、命令は、実行キューから実行ユニットに発令される。
本開示の様態は、付された図面と共に、以下の詳細な説明によってよく理解される。産業における一般的な実用に応じて、様々な特徴は原寸で描かれていない。事実、様々な特徴の寸法は、説明を明確にするために、任意に大きく又は小さくされている。
図1は、いくつかの実施の形態に係る、コンピュータ処理システムを示すブロック図である。
図2は、いくつかの実施の形態に係る、マイクロプロセッサの命令パイプラインアーキテクチャを示すブロック図である。
図3は、本開示のいくつかの実施の形態の内の1つに係る、機能ユニットの実行キューを示す図である。
図4は、いくつかの実施の形態の内の1つに係る、機能ユニットの実行キューを示す図である。
図5は、本開示のいくつかの実施の形態の内の1つに係る、機能ユニットの実行キューを示す図である。
図6は、本開示のいくつかの実施の形態の内の1つに係る、全部でNエントリを有するスコアボードの例を示す図である。
図7は、本開示のいくつかの実施の形態の内の1つに係る、レジスタファイル読み取り書き込み制御部750を示す図である。
図8は、本開示のいくつかの実施の形態の内の1つに係る、レジスタファイル読み取り書き込み制御部850を示す図である。
図9は、本開示のいくつかの実施の形態の内の1つに係る、命令を機能ユニットに発令する処理を示す図である。
以下の開示は、本開示の異なる特徴を実装するために多数の異なる実施の形態及び例を提供する。構成要素及び配置の特定の例が、本開示の簡易化のために以下に説明される。当然、それらは単に例であり、本開示の限定を意図していない。例えば、第1の特徴、及び明細書においてそれに続く第2の特徴の構成は、第1及び第2の特徴が直接接触している実施の形態を含んでよく、また、第1及び第2の特徴の間に追加の特徴が形成され、第1及び第2の特徴が直接接触していない実施の形態を含んでよい。さらに、本開示は、様々な実施の形態において、参照番号及び文字を繰り返し使用している。この使用は、簡易化及び明確化のためのものであり、それ自体は、様々な実施の形態及び/又は説明される構成間の関係を規定するものではない。
マイクロプロセッサにおいて、命令は、命令実行の並行性を最大化するために、順番にパイプライン及び処理される。マイクロプロセッサのパイプラインは、典型的には、命令取り出し段階、命令復号/発令段階、実行段階、及び書き戻し段階を含む。命令復号/発令段階において、リソースにおける命令のコンフリクトが判定される。例えば、コンフリクトは、オペランドレジスタにおけるデータ依存性、命令により指定された機能ユニットの非可用性、その他を参照してよい。コンフリクトの場合、従来のマイクロプロセッサは、(1)コンフリクトが解決されるまで、復号/発令段階において命令を停止させる、又は(2)命令を、コンフリクトを解決し、命令の実行を予定できるキューに入れる、という2つの選択肢を有する。本開示において、マイクロプロセッサは、復号段階においてコンフリクトを解決し、命令が未来時間において実行されるように予定する。命令は、命令が実行されるために機能ユニットに発送される未来の予定された時間まで、実行キューに発送される。本開示は、未来において、いつリソースが可用であり、次の命令を受けることができるかを把握するために、スループットカウンターを使用する。本開示は、また、レジスタファイル読み取り書き込みポートがオペランドデータを読み取り書き込みする予定である未来のNクロックサイクルを把握する。本開示のマイクロプロセッサは、以下に詳細に説明される。
図1は、いくつかの実施の形態に係る、マイクロプロセッサ100と、メモリ20と、入力/出力(I/O)インターフェース30と、周辺機器40と、バス50と、を備えるコンピュータ処理システム1を示す。バス50は、コンピュータ処理システムの構成要素の間の双方向通信を可能にしてよい。本開示のいくつかの実施の形態は、図1より多い、図1より少ない、又は図1とは異なる構成要素を使用してよい。例えば、コンピュータ処理システム1は、さらに、タイマー、シリアル・ペリフェラル・インターフェース、デジタル−アナログコンバータ、アナログ−デジタルコンバータ、ディスプレイドライバ、複数の種類のメモリ、及び他の好適な構成要素を含んでよい。
いくつかの実施の形態において、マイクロプロセッサ100は、命令パイプラインを使用して命令を実行するように構成され、命令の実行は、命令取り出し段階、命令復号/発令段階、実行段階、及び書き戻し段階等の複数の段階に分解できる。マイクロプロセッサ100は、比較的高いアクセス率を有するデータキャッシュ及び命令キャッシュを含む。マイクロプロセッサ100のためのデータキャッシュは、L1データキャッシュ、L2データキャッシュ、及びL3データキャッシュを含んでよいマルチレベルデータキャッシュであってよい。L1データキャッシュ、L2データキャッシュ、及びL3データキャッシュは、マイクロプロセッサ100内又は外に配置されてよい。いくつかの実施の形態において、コンピュータ処理システム1は、複数のマイクロプロセッサを備える。
メモリ20は、命令の実行に必要な命令のプログラムコード及びデータを保存するように構成される。メモリ20は、不揮発性メモリ、揮発性メモリ、又はその組み合わせを含んでよい。例えば、メモリ20は、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、リードオンリメモリ(ROM)、プログラマブルリードオンリメモリ(PROM)、エレクトリカリプログラマブルリードオンリメモリ(EPROM)、及びエレクトリカリイレーザブルプログラマブルリードオンリメモリ(EEPROM)の少なくとも1つを含んでよい。
I/Oインターフェース30は、バス50を介して、入力装置及び出力装置をコンピュータシステム1に連結するように構成される。コンピュータシステム1は、I/Oインターフェース30を介して、入力データを受信し、出力データを送信してよい。I/Oインターフェース30は、有線又は無線通信のシリアル通信インターフェース及びパラレル通信インターフェースの少なくとも1つを備えてよい。周辺機器40は、キーボード、マウス、センサ、シグナルレシーバ、モニタ、及び他の好適な装置を含んでよい。
図2は、いくつかの実施の形態に係る、マイクロプロセッサ100の命令パイプラインアーキテクチャを示すブロック図である。以下に説明する処理は、図2に示されるアーキテクチャを有するプロセッサにより実行されてよい。実施の形態において、マイクロプロセッサ100は、命令取り出し部110と、復号/発令部120と、レジスタファイルスコアボード130と、レジスタファイル140と、レジスタファイル読み取り/書き込み制御部150と、機能ユニットモジュール160と、を備えてよい。命令取り出し部110は、復号/発令部120に連結される。復号/発令部120は、スコアボード130を介してレジスタファイル140に連結され、レジスタスコアボード130にアクセスし、命令により使用されるオペランドレジスタに保存されるデータの状態をチェックする。スコアボード130は、復号/発令部120に連結され、レジスタファイル140にマップされ、複数のエントリ130_1〜130_Nを備える。復号/発令部120は、機能ユニットモジュール160に連結され、ここで命令が実行される。復号/発令部120は、また、レジスタファイル140からデータを読み取り、機能ユニットモジュール160からの結果データをレジスタファイル140に書き戻すレジスタファイル読み取り書き込み制御部150に連結される。
レジスタファイル140は、データを保存するように構成される複数のレジスタ140_1〜140_Nを備えてよい。レジスタ140_1〜140_Nは、命令101の実行に使用されるオペランドのデータ、及び/又は発令された命令101の書き戻し動作を通じてレジスタファイルに書き戻される結果データを保存してよい。レジスタ140_1〜140_Nのサイズ及び数は、マイクロプロセッサ100のアーキテクチャに応じて異なっていてよい。実施の形態において、レジスタファイル140は、機能ユニット160がレジスタファイル140のレジスタにアクセスするための読み取りポート及び書き込みポート備えてよい。レジスタファイル読み取り/書き込み制御部150は、機能ユニットモジュール160がレジスタファイル140からのデータにアクセスするための特定のアクセス時間を予定する。
機能ユニットモジュール160は、複数の機能ユニットFUNIT_A、FUNIT_B、及びFUNIT_Cを備える。実施の形態において、機能ユニットモジュールは、整数乗算、整数除算を含むいくつかの動作、演算論理装置(ALU)、シフタ、アドレス生成装置(AGU)、浮動小数点装置(FPU)、及びロードストア装置(LSU)を含んでよいが、これらに限定されない。図2には機能ユニットFUNIT_A、FUNIT_B、及びFUNIT_Cの例が示されているが、本開示において、機能ユニットの数は限定されていない。別の実施の形態において、より多くの機能ユニットが機能ユニットモジュール160に含まれていてよい。
各機能ユニットFUNIT_A、FUNIT_B、FUNIT_Cは、実行キュー161_A、161_B、161_C、蓄積スループットカウンター163_A、163_B、163_C、及び実行ユニット165_A、165_B、165_Cを備える又はそれらに連結されている。以下において、簡潔化のために、実行キュー、蓄積スループットカウンター、及び実行ユニットの参照番号は、161、163、及び165に簡略化される。実行キュー161は、復号/発令部121からの発送された命令を、実行ユニット165に送信される順番に記録するように構成される複数のエントリを備える。本開示は、実行キューのエントリの数を限定する意図はなく、実施の形態は、設計要求に応じて任意の数のエントリを有していてよい。各エントリは、対応する命令に関する様々な情報を記録するように構成される複数の領域を含む。例えば、実行キューエントリの領域の1つは、対応する命令のスループット時間を記録する。実行キュー161のエントリ内の各領域のさらなる詳細は、後述される。蓄積スループットカウンター163のカウンター値は、復号/発令部120が次の命令を実行部165に送信することができる未来の時間を示す。蓄積スループットカウンター163のカウンター値は、単一の命令及びマイクロオペレーション命令のスループット時間、及び/又は複数の発令された命令の蓄積スループット時間であってよい。蓄積スループットカウンター163は、クロックサイクル毎に1減少する。蓄積スループットカウンター163は、ハードウェアレジスタ、フリップフロップ、論理回路、その他の様々な種類により実装されてよく、本開示は、カウンターの実装を限定しない。実施の形態において、蓄積スループットカウンター163のカウンター値は、次の命令が実行部164に受け取られるまでのクロックサイクルの数を示す。換言すれば、蓄積スループットカウンター163のカウンター値は、また、復号/発令部120の命令が、機能ユニットモジュール160に発送された場合、未来の時間において、いつ対応する実行部165により実行されるかを示す。以下において、図2に示される実行パイプラインに通じた命令の処理フローが詳細に説明される。
マイクロプロセッサ110が命令101を受信すると、命令部110は、命令キャッシュ(図示せず)から命令101を取り出す。実施の形態において、命令101は、レジスタファイル140のレジスタ140_Xに関連するソースオペランド及びデスティネーションオペランドを含んでよく、レジスタ140_Xは、レジスタ140_1〜140_Nの任意のレジスタである。命令101は、マイクロプロセッサ100のアーキテクチャに依拠してスカラー命令又はベクトル命令であってよい。命令101は、命令101が実行されるために送信される機能ユニット160の命令タイプFUNIT_A、FUNIT_B、FUNIT_Cを含む。
取り出された命令101は、その後、復号及び発令されるために、復号/発令部120に送信される。命令は、以下の(1)write after read(WAR)、read after write(RAW)、及びwrite after write(WAW)を含むデータ依存性、(2)レジスタファイル140からのデータを機能ユニットに160に読み取るための読み取りポートの可用性、(3)機能ユニット160からのデータをレジスタファイル140に書き戻すための書き込みポートの可用性、並びに(4)データを実行するための機能ユニット160の可用性、の4つの種類の基本的なコンフリクトを有し得る。従来、復号/発令部120は、命令101が機能ユニット160に発送される次のクロックサイクルにおいて、コンフリクト(1)、(2)、及び(4)を解決していたが、リソースコンフリクトが解決されるまで、命令101は復号/発令部120で停止したままだった。機能ユニット160は、データをレジスタファイル140に書き戻すための書き込みポートを仲裁する。命令101は、書き込みポートが可用になり、レジスタファイル140に書き戻せるようになるまで、機能ユニット160で停止する。機能ユニット160で停止している命令は、復号/発令部120の次の命令とコンフリクトを起こす。機能ユニット160の可用性は、命令の一般的なスループット時間により又はレジスタファイル140に書き戻せないことによる命令の停止により、影響される。命令スループット時間は、次の命令が実行ユニット165により受け取られることができる時間である。例えば、ほとんどの命令は1サイクルのスループット時間を有するが、整数割算動作は、6サイクルのスループット時間を有する。コンフリクトがない場合、命令101は、実行のために機能ユニットモジュール160に送信される。
実施の形態において、復号/発令部120は、命令101を機能ユニット160に発送できるようになる前に、全てのコンフリクトをチェックする。復号/発令部120は、レジスタファイル140にマップされたレジスタファイルスコアボード130にアクセスしてソースオペランド及び/又はデスティネーションオペランドをチェックし、データを割り当てる。復号/発令部120は、レジスタファイル読み取り/書き込み制御部150にアクセスして読み取り書き込みポートの可用性をチェックし、レジスタファイル140からのデータにアクセスするために読み取り書き込みポートを割り当てる。命令101の命令タイプに依拠して、復号/発令部120は、命令101を機能ユニットに送信する前に、機能ユニットモジュール160の命令101に対応する機能ユニット(FUNIT_A、FUNIT_B、FUNIT_C)の可用性をチェックする。いくつかの実施の形態において、命令101は、実行部165に送信される前に実行キュー161に入る。機能ユニットのコンフリクトの1ソースは、実行キュー161がいっぱいであることである。この場合、命令101は、復号/発令部120で停止する。実行キュー161の命令は、実行部165がビジーでない時に限り、実行部165に送信される。実行キュー161は、多数の命令を有してよく、各命令は、実行のために実行部165に送信されてよい未来における特定の時間を有する。蓄積スループットカウンター163は、復号/発令部120の命令101が実行部165により実行されてよい未来における時間を示す。実施の形態において、復号/発令部120は、蓄積スループットカウンター163が命令101を発令する時に全てのコンフリクトを解決する。復号/発令部120は、レジスタファイル読み取り/書き込み制御部150の正確なサイクル時間を予定して、機能ユニット160により、レジスタファイル140からオペランドデータを読み取る及びレジスタファイル140にオペランドデータを書き込み、命令101を実行キュー161に発送し、命令101は、実行キュー161から実行部165に発送されるように予定される。
命令101が機能ユニットモジュール160により受信されると、対応する機能ユニットは、レジスタファイル140からデータを受信するように予定される。機能ユニットモジュール160は、命令101を実行し、その後、予定された時間に、レジスタファイル140のデスティネーションオペランド(1つ以上のレジスタエントリ)に結果データを書き戻すように構成される。機能ユニットにより実行される命令101は、レジスタファイル140又は他の保存メモリ(例えば、メモリ20)に保存されるオペランドのセットを含む。命令101に対応する機能ユニット(FUNIT_A、FUNIT_B、FUNIT_C)は、実行のためのレジスタファイル140の可用な読み取りポートを通して、レジスタファイル140からオペランドデータを受信するように予定される。命令101は、実行キュー161に発送され、その後、未来の特定の時間に実行キュー161から実行部165に発令される。各命令は、実行キュー161のエントリに保管され、各エントリは、スループットカウント領域を有する。命令が実行キュー161から実行部165に発令されると、次の命令が実行部165に発令可能になる前に、スループットカウントが0に減る。機能ユニットモジュール160により出力された結果データは、書き戻し動作において、予定された時間に、レジスタファイル140の可用な書き込みポートを通して、レジスタファイル140に書き込まれる。実行部165による実行の合計時間は、命令101のレイテンシ時間として知られる。命令の種類に応じて、レイテンシ時間は、異なる命令の種類について異なっていてよい。いくつかの実施の形態において、機能ユニットFUNIT_A、FUNIT_B、FUNIT_Cの結果データは、実行パイプラインのその後の命令の機能ユニットに送られ、マイクロプロセッサ100の性能を向上させる。レジスタファイル読み取り/書き込み制御部150は、命令が実行キュー161から実行部165に送信された時間を把握し、レジスタファイル140の読み取りポートのオペランドデータを予定する。レジスタファイル読み取り/書き込み制御部150は、また、結果データが実行部165からレジスタファイル140の書き込みポートに予定されたレイテンシ時間を把握する。全ての命令のオペランドデータの読み取り及び書き込み時間は、レジスタファイル読み取り/書き込み制御部150により知られ、レジスタファイル読み取り/書き込み制御部150は、書き込みポートから読み取りポートへとデータを送ることを予定する。命令101のレイテンシ時間は、同じ機能ユニットにおいても、各命令について異なっている。例えば、同じ機能ユニットにおいて、8ビット、16ビット、32ビット分割命令は、異なるスループット及びレイテンシ時間を有している。機能ユニットモジュール160の各機能ユニットは、命令101の特定のレイテンシ時間である異なる実行時間を有する。読み取り/書き込み制御部150がレジスタファイル140及び実行キュー161にアクセスして、命令101を実行部165に発送するタイミングは、完全に同期していなければならない。
レジスタファイル140は、機能ユニットモジュールについてのデータを取り出し、機能ユニットモジュールから結果データを書き戻す、多数の読み取り及び書き込みポートを含んでよい。レジスタファイル読み取り/書き込み制御部150は、命令101に対応する機能ユニットについてのデータがレジスタファイル140から読み込まれる及びレジスタファイル140からに書き込まれる未来の時間を設定する。各命令は、結果データを機能ユニット160からレジスタファイル140に書き戻すために有効なレイテンシ時間が知られており、読み取り/書き込み制御部150は、特定のレジスタ140_Xの読み取り及び書き込みポートのための正確な時間を予定できる。読み取り/書き込み制御部150は、どの時間にどの読み取り又は書き込みポートがビジーであるかを把握する。読み取り及び書き込みポートは、機能ユニットコンフリクトに加えて、命令についての別のリソースコンフリクトである。多数の読み取り及び書き込みポートは、アプリケーションの最適な性能について選択される。
図3は、本開示のいくつかの実施の形態の内の1つに係る、機能ユニットの実行キューを示す図である。図3において、4つのエントリを有する図2の実行キューが例として示され、各エントリは、有効領域(有効ビットとも称される)210と、スループットカウント領域212と、実行制御データ214と、中間データ216と、を備える。実行キュー161の各エントリは、復号/発令部120により発送された命令についての情報を記録する。しかしながら、本開示は、実行キュー161の各エントリに記録される領域を限定しない。別の実施の形態において、実行部165により実行される命令についての必要な情報である領域は、より多くても少なくてもよい。実施の形態において、実行制御データ212(すなわち、「ex_ctrl」とラベルされた行)及び中間データ216(すなわち、「Imm_data」とラベルされた行)は、対応する命令から導出される。有効領域210(すなわち、「Valid」とラベルされた行)は、エントリが有効か否かを示す。例えば、実行キュー161の第1の命令及び第2の命令を示す、図3に示される実行キュー161の第1及び第2のエントリQE[1]、QE[2]は、有効領域210の「1」により有効であると示される。実施の形態において、第1の命令は、第2の命令より前に、実行部165により実行される。第1の有効な命令は、スループットカウント領域212(すなわち、「xput_cnt」とラベルされた行)により示される、5のスループットカウントを有する。実施の形態において、実行キュー161は、さらに、実行部165に送信された命令のスループット時間を把握するために利用される命令カウンター230を備える。命令カウンター230は、実行キューエントリに記録されたスループット時間を受信し、0になるまでクロックサイクル毎に1減少させる。
図3は、実行部165に送信される、(第1のエントリQE[1]に記録される)第1の命令を示し、5のスループットカウントが命令カウンター230に入る。命令カウンター230は、第2の命令が実行部165に入れるようになる前に、0まで減少しなければならない。命令カウンター230が0になると、第1のエントリの有効ビットがリセットされ、第2の命令が処理可能となる。第2のエントリQE[2]に記録される第2の命令は、第1の命令が完了した後に、送信されて実行される、命令カウンター230は、第2のエントリから6のスループットカウントをロードする。命令カウンター230は、次の有効な命令が実行部165に送信可能となる前に、0に減少する。0のスループットカウントは、命令が連続的なサイクルにおいて実行部165にパイプラインされることを示す。
実行キュー161の各有効な命令からのスループット時間は、蓄積スループットカウンター163に蓄積及びアサートされ、それにより、復号/発令部120は、実行キュー161に次の命令を発送する前に蓄積スループット時間を知る。図3に示される実行キュー161を例にすると、第1及び第2の命令が実行キュー161に発送される前において、第1及び第2の命令は、それぞれ、5及び6のスループットカウントを有し、蓄積スループットカウンター163は、第1及び第2の命令の蓄積されたカウント値である11を有する。蓄積スループットカウンター163の蓄積されたカウント値は、11クロックサイクル経過の後に第3の命令が実行部165に発送可能となることを示す。換言すれば、実行部165は、11クロックサイクルの後に、第3の命令のために可用となる。復号/発令部120は、この蓄積されたカウント値11を使用して、未来の11クロックサイクルの後の第3の命令についてのデータ依存性及び読み取りポートの可用性をチェックする。さらに、復号/発令部120は、また、第3の命令の書き込みポートの可用性をチェックしなくてはならない。例えば、第3の命令のレイテンシ時間が12クロックサイクルであった場合、結果データは、未来の時間23において機能ユニット160からレジスタファイル140に書き戻される。すなわち、実行部165により実行を開始するのが11クロックサイクルであり、結果データを完了及び生成するのに12クロックサイクルである。第3の命令が復号/発令部120から実行キュー161に発送されるためには、書き込みポートが時間23において可用でなければならない。
第3の命令が6のスループット時間を有するとする。第3の命令が復号/発令部120により発送された時、第3の命令は、実行キュー161の第3のエントリの有効領域210を設定し、第3のエントリのスループットカウント領域212に6を書き込み、第3のエントリの制御データ214及び中間データ216に第3の命令から導出されたデータを書き込む。また、蓄積スループットカウンターは16に設定される。これは、前回の蓄積カウント値が、第3の命令が実行キュー161に発送された時に11から10に減少し、10に第3の命令の6のスループットカウントを加えると16になるからである。読み取り及び書き込みポートの数は、最適な性能となるように設計され、それにより、時間11における読み取りポートコンフリクト及び時間23における書き込みポートコンフリクトは稀となる。図3を参照すると、第3の命令が発送された時、第3の命令のスループット時間(例えば、6)は、第3のエントリのスループットカウント領域212に書き込まれる第3の命令のスループット時間は、蓄積スループットカウンターにも送信され、ここで、加算器が第3のスループット時間と蓄積スループットカウンター163の出力とを加算する。本実施の形態において、一度データ依存性、読み取りポートコンフリクト、又は書き込みポートコンフリクトが検出されると、命令は、蓄積スループットカウンターが0となる後まで、復号/発令部120において停止する。
図4は、いくつかの実施の形態の内の1つに係る、機能ユニットの実行キューを示す図である。実施の形態において、実行キュー461の各エントリは、さらに、プレカウンター領域420を備え、上記の単一の発令時間を解決する。上記の例において、蓄積スループットカウンター163が11のカウント値を有する場合、復号/発令部120は、第3の命令を発送するために、時間11における読み取りポート及び時間23における書き込みポートのデータ依存性及び可用性をチェックする。データ依存性、又は読み取りポートコンフリクト、又は書き込みポートコンフリクトが存在する場合、復号/発令部120は、蓄積スループットカウンター163の値が10に減少している次のクロックサイクルにおける時間11における読み取りポート及び時間23における書き込みポートのデータ依存性及び可用性を再度チェックする。復号/発令部120は、第3の命令が実行キュー161に発送可能となるまで、時間11における読み取りポート及び時間23における書き込みポートのデータ依存性及び可用性をチェックし続ける。実施の形態において、時間11と蓄積スループットカウンター163のカウント値との違いは、プレカウンター420について設定される。例えば、蓄積スループットカウンター163の値が9の時に第3の命令が発送可能であると判定された場合、プレカウンター420は2に設定される。6のスループットカウントの第2の命令が実行部165に発送されると、命令スループットカウンター230は6に設定され、第2のエントリが無効となる前に0に減少する。その後、2のプレカウント値が、プレカウンター領域420から命令スループットカウンター230にロードされ、第3の命令が実行部165に送信される前に0に減少する。
図5は、本開示のいくつかの実施の形態の内の1つに係る、機能ユニットの実行キューを示す図である。実施の形態において、命令101は、マイクロオペレーション(micro−ops)から成るベクトル命令である。マイクロプロセッサ100は、ベクトル命令を実行する。ベクトル命令は、複数の連続ベクトルレジスタ上で動作するようにプログラムされ、レジスタファイル140は、ベクトルレジスタを含んでよい。例えば、ベクトルの第1のマイクロオペレーション加算命令は、ソースオペランドレジスタ140_A及び140_Bであり、デスティネーションレジスタ140_Cへの書き戻しであってよく、第2のマイクロオペレーションベクトル加算命令は、ソースオペランドレジスタ140_A+1及び140_B+1を備える第2のベクトル加算命令であり、デスティネーションレジスタ140_C+1への書き戻しであってよい。ベクトル加算命令は、例えば、1〜8のマイクロオペレーションを有するようにプログラムされてよい。図5を参照すると、実行キュー161は、さらに、図3に示される実施の形態の有効領域210、スループットカウント領域212、実行制御データ214、及び中間データ216に加えて、マイクロオペレーションカウント領域518を備えてよい。実施の形態は、また、図4に示されるように、プレカウント領域420を備える。マイクロオペレーションカウント領域518は、実行キュー561に加えられ、マイクロオペレーションの数を特定し、マイクロオペレーションの数をカウントする。実行キュー581は、また、マイクロオペレーションが実行部165に発送される毎に減少するマイクロオペレーションカウンター532を備え、実行されたマイクロオペレーションの数を把握する。実施の形態において、マイクロオペレーションは、対応するエントリが無効可能となる前に、0に減少する。例えば、第1のエントリの命令は、5のスループットレイテンシの4つのマイクロオペレーションを有する。5クロックサイクル毎に、マイクロオペレーションは実行部165に送信される。マイクロオペレーション領域518は、4つのマイクロオペレーションが存在することを示し、従って、第1のエントリQE[1]の第1の命令の合計レイテンシは、20サイクルである。同様に、8つのマイクロオペレーションが存在し、それぞれのレイテンシ時間が6サイクルであるため、第2のエントリQE[2]の第2の命令の合計レイテンシは、48サイクルである。蓄積スループットカウンター163は、68サイクルに設定される。第3の命令を発送するために、復号/発令部120は、時間68における読み取りポート及び時間80における書き込みポートのデータ依存性及び可用性をチェックする。カウンター領域のサイズは、8ビット又は設計要求に基づいて他の任意の好適なビット数であってよい。領域212のノンゼロスループットカウントは、蓄積スループットカウンター163の動作を示すために使用される。ほとんどの命令は1のスループットカウントを有する、又は領域212のスループットカウントは0に設定される。
いくつかの実施の形態において、スコアボード130は、データ依存性コンフリクトをチェックするために使用される。再び図2を参照すると、スコアボード130は、復号/発令部120に連結され、レジスタファイル140にマップされる。スコアボード130は、複数のエントリ130_1〜130_N(スコアボードエントリとも称される)を備え、各エントリ130_1〜130_Nは、マイクロプロセッサ100のクロックサイクルに応じてカウントを行うように構成されるレジスタアクセスカウンターを備える。例えば、レジスタアクセスカウンターは、マイクロプロセッサ100の各クロックサイクルの立ち上がり又は立ち下がりエッジにおいて1減少する。実施の形態において、スコアボードエントリの数は、レジスタファイル140のレジスタの数と同じであってよい。例えば、レジスタ140が32のレジスタを含む場合、スコアボードは32のエントリを含み、1つのスコアボードは、レジスタの状態を把握するために、レジスタファイル140の1つのレジスタにマップされる。しかしながら、本開示は、スコアボード130のエントリの数を限定しない。別の実施の形態において、スコアボードエントリの数は、レジスタファイル140のレジスタの数より多くても少なくてもよい。
図6は、本開示のいくつかの実施の形態の内の1つに係る、全部でNエントリを有するスコアボードの例を示す図である。スコアボード130の各エントリは、未知領域131と、レジスタアクセスカウンター領域133と、機能ユニット領域135と、を備えるが、これに限定されない、いくつかの実施の形態において、未知領域131は、発令された命令の実行レイテンシ時間が未知であることを示す。例えば、発令された命令がロード命令である場合、ロード動作がデータの位置に依存するため、ロード命令のスコアボードエントリ対応レジスタの未知領域が設定される(論理1又は0)。データがデータキャッシュに保存される場合、ロードには2クロックサイクルかかる。しかしながら、データがマイクロプロセッサに連結されるメモリ(例えば、RAM)に保存される場合、ロードには50〜100クロックサイクルかかる。整数割算(INT DIV)動作は、未知の実行レイテンシ時間を有する命令の別の例である。割り算する桁の数を判定するために6クロックサイクルかかるため、整数割算動作の実行レイテンシ時間は、6サイクル分未知である。従って、未知ビットは、最初の6クロックサイクル分設定され、その後、整数割算動作が桁の数を判定した後リセットされる。また、レジスタアクセスカウンター領域は、未知領域131の未知ビットのリセットの後の既知の時間に設定される。実施の形態において、未知領域のサイズは、1ビット又は設計要求に基づいて他の任意の好適なビット数であってよい。FUNIT領域135は、機能ユニットを記録するように構成され、結果データが当該機能ユニットから書き戻される。いくつかの実施の形態において、FUNIT領域は、結果データを次の命令に送るために使用されてよい。例えば、ADD命令は、前回のMUL命令のデスティネーションオペランドにデータ依存性を有するアクセスレジスタ140_3に送られる。この場合、スコアボードエントリのFUNIT領域は、MULを記録してよく、MUL命令の結果データは、機能ユニットモジュール上で論理を構成することにより、ADD機能ユニットに直接送られてよい。第1及び第2の命令のFUNITは、同じ機能ユニット出ることが理解される。
各エントリ130_1〜130_Nのレジスタアクセスカウンター領域133は、復号/発令部120による命令パイプラインの復号/発令段階、例えば、命令がスコアボード130を読み取り、オペランドのデータ依存性をチェックする段階に設定されてよい。命令の実行レイテンシ時間(書き込み時間とも称されてよい)は未知であるため、命令は、命令の実行レイテンシ時間に基づいてレジスタアクセスカウンターを設定してよい。例えば、第1の命令(例えば、ADD命令)は、結果データをレジスタ140_3に書き戻すことに2クロックサイクル(例えば、実行及び書き戻し段階)かかる。換言すれば、第1の命令は、2クロックサイクルの実行レイテンシ時間を有する。スコアボード13のレジスタ140_3にマップされたレジスタアクセスカウンターは、2に設定される。これは、レジスタ140_3が、2クロックサイクル後まで、第1の命令の後の第2の命令のために準備ができていないことを示す。マイクロプロセッサのクロックサイクル毎に、レジスタ140_3にマップされたレジスタアクセスカウンターは、データ依存性が存在しないことを意味するカウント値が0となるようにカウンター自身の値を自身でリセットするまで、減少する。第1の命令の後の第2の命令が復号/発令部120により受信された時、第2の命令がレジスタ140_3を読み取る命令へと復号される場合、このタイプのデータ依存性は、read after write(RAW)依存性と称される。第2の命令がレジスタ140_3に書き込む命令へと復号される場合、このタイプのデータ依存性は、write after write(WAW)依存性と称される。
別の実施の形態において、レジスタアクセスカウンター領域のレジスタアクセスカウンター値は、命令の発送において、命令のスループット時間(読み取り時間とも称される)に設定される。読み取り時間は、実行のための対応するレジスタのソースデータを読み取るための機能ユニットについてのクロックサイクルの数を表す。本開示において、読み取り時間は、図2の蓄積スループットカウンター163の値である。例えば、第1の命令がレジスタ150_5から、8クロックサイクルのデータを読み取ることである場合、レジスタ140_5にマップされたスコアボードエントリ130_5のレジスタアクセスカウンター領域は、8に設定される。次に、第1の命令の後の第2の命令は、レジスタ140_5に書き込む命令へと復号される。このタイプのデータ依存性は、write after read(WAR)と称される。第2の命令は、レジスタ140_5にマップされたスコアボードエントリ130_5を読み取り、データ依存性があると判定する。
さらなる別の実施の形態において、各スコアボードエントリ130_1〜130_Nのレジスタアクセスカウンター領域133は、それぞれ対応するレジスタに関連する書き込み時間及び読み取り時間を保存する、第1のアクセスカウンター領域及び第2のアクセスカウンター領域を備えてよい。
図3に示される実施の形態を再度参照すると、復号/発令部120は、この11の蓄積スループット値を使用して、第3の命令を発送するために、未来における読み取りポートのデータ依存性及び可用性、並びに未来の時間23における書き込みポートの可用性をチェックする。いくつかの実施の形態において、復号/発令部120は、さらに、蓄積スループットカウンター163に保持される蓄積カウント値に加えて、スコアボード130に保存されるレジスタアクセスカウンター値を含み、データ依存性、読み取りポートコンフリクト及び書き込みポートコンフリクトをチェックする。第3の命令を発送する時、復号/発令部120は、蓄積スループットカウンター163及びスコアボード130にアクセスする。例えば、対応するレジスタのスコアボードエントリは、時間16において命令が実行部に発送されることを意味する16の値を有し、そのため、データ依存性は存在しない。復号/発令部120は、未来の時間16におけるあらゆるコンフリクトを再度チェックする。コンフリクトが存在しない場合、第3の命令は実行キュー161に発送され、pre_cnt領域420は、すなわち16−11である、5に設定される。コンフリクトが存在する場合、第3の命令は、1クロックサイクル分、復号/発令部120で停止し、その後、復号/発令部120は、未来の時間16におけるあらゆるコンフリクトを再度チェックする。上記に基づいて、データ依存性を有する命令は、復号/発令部120で停止する代わりに、依然として、機能ユニットモジュール160に発送されることができる(例えば、命令は、実行キューに発送され、その後、実行部に発令される)。実施の形態の1つにおいて上記したように、レジスタアクセスカウンター領域133は、個別に、書き込み時間及び読み取り時間の両方を保存してよい。この場合、復号/発令部120は、リソースコンフリクトをチェックするために、最長の時間(最悪のシナリオ)を有する書き込み時間又は読み取り時間を使用する。
図7は、本開示のいくつかの実施の形態の内の1つに係る、レジスタファイル読み取り書き込み制御部750を示す図である。実施の形態において、レジスタファイル読み取り/書き込み制御部750は、レジスタファイル140の各書き込みポートのためのレイテンシシフタ751を備える。レイテンシシフタ751は、複数のシフタエントリE[0]〜E[N]を含み、シフタエントリクロックサイクル毎に方向D1にシフトされるように構成される。シフタエントリE[0]は、ボトムシフタエントリ(例えば、最下位ビット、LSB)と称され、シフタエントリE[N]は、トップシフタエントリ(例えば、最上位ビット、MSB)と称される。レイテンシシフタ751は、クロックサイクル毎に、ボトムシフタエントリE[0]をシフトアウトしてよい。レイテンシシフタ751の各シフタエントリは、クロックサイクル(例えば、xは正の整数である、xthクロックサイクル)に関連し、各シフタエントリは、クロックサイクルにおけるレジスタファイル140の書き込みポートの可用性を示す書き戻し値(例えば、wb_shift「x」)を含む。書き戻し値wb_shift「x」は、「1」の論理値及び「0」の論理値のいずれかを示すマルチビット値又はシングルビット値であってよい。例えば、書き戻し値wb_shift「x」(例えば、エントリE[5]のwb_shift「5」)が「1」の論理値である場合、これは、書き込みポートがxthクロックサイクル(例えば、5thクロックサイクル)において書き戻し動作のために可用でないことを示す。換言すれば、xthクロックサイクルでは別の書き戻し動作が書き込みポートにより実行される。あるいは、書き戻し値wb_shift「x」(例えば、エントリE[4]のwb_shift「4」)が「0」の論理値である場合、これは、書き込みポートがxthクロックサイクル(例えば、4thクロックサイクル)において書き戻し動作のために可用であることを示す。いくつかの実施の形態において、レイテンシシフタ751の書き戻し値は、復号/発令部120から機能ユニットモジュール160への命令の発令の上で設定される。
実施の形態において、復号/発令部120は、レイテンシシフタ751のシフタエントリE[0]〜E[N]に保存される書き戻し値wb_shift「0」〜wb_shift「N」に基づいて、命令の発送を制御することができる。書き戻し値wb_shift「0」〜wb_shift「N」は、未来の特定の時間にソースコンフリクト(特に、書き込みポートコンフリクト)が存在するかを判定するために使用される。図3に示される例において、第3の命令の発送の際、復号/発令部120は、この11の蓄積カウント値を使用して、レイテンシシフタ751に保存される書き戻し値wb_shift「23」にアクセスすることにより、未来の23thクロックサイクル(すなわち、第3の命令についての)における書き込みポートのデータ依存性及び可用性をチェックする。書き込みポートコンフリクトが存在する場合、第3の命令は、次のクロックサイクルまで復号/発令部120で停止する。時間23において書き込みポートコンフリクトが存在しない場合、復号/発令部120は、第3の命令を実行キュー161に発送する。
図8は、本開示のいくつかの実施の形態の内の1つに係る、レジスタファイル読み取り書き込み制御部850を示す図である。実施の形態において、レジスタファイル読み取り/書き込み制御部850は、レジスタファイル140の各読み取りポートのための読み取りシフタ853を備える。読み取りシフタ853は、クロックサイクル毎に方向D1にシフトする複数のシフタエントリE[0]〜E[N]を含む。読み取りシフタ853の各シフタエントリは、クロックサイクル(例えば、kは正の整数である、kthクロックサイクル)に関連し、各シフタエントリは、クロックサイクルにおけるレジスタファイル140の読み取りポートの可用性を示す読み取り値(例えば、rdx「k」)を含む。いくつかの実施の形態において、各シフタエントリは、さらに、レジスタファイル140のどのレジスタがkthクロックサイクルの読み取りポートを使用するかを示すレジスタアドレス値vrx[k]を含む。シフタエントリE[0]は、ボトムシフタエントリと称され、シフタエントリE[N]は、トップシフタエントリと称される。読み取りシフタ853は、クロックサイクル毎に、ボトムシフタエントリE[0]をシフトアウトしてよい。読み取り値rdx「k」は、「1」の論理値及び「0」の論理値のいずれかを示すマルチビット値又はシングルビット値であってよい。例えば、読み取り値rdx「k」が「1」の論理値である場合、これは、読み取りポートがkthクロックサイクルにおいて読み取り動作のために可用でないことを示す。換言すれば、kthクロックサイクルでは別の読み取り動作が読み取りポートにより実行される。あるいは、読み取り値rdx「k」が「0」の論理値である場合、これは、読み取りポートがkthクロックサイクルにおいて読み取り動作のために可用であることを示す。いくつかの実施の形態において、読み取りシフタ853の読み取り値は、プロセッサ100により実行される命令の発令の上で設定される。
実施の形態において、復号/発令部120は、読み取りシフタ853のシフタエントリE[0]〜E[N]に保存される読み取り値rdx「0」〜rdx「N」に基づいて、命令の発送を制御することができる。読み取り値rdx「0」〜rdx「N」は、未来の特定の時間にソースコンフリクト(特に、読み取りポートコンフリクト)が存在するかを判定するために使用される。図3に示される例において、第3の命令の発送の際、復号/発令部120は、この11の蓄積カウント値を使用して、読み取りシフタ853に保存される書き戻し値rdx「11」にアクセスすることにより、未来の11thクロックサイクルにおける読み取りポートのデータ依存性及び可用性をチェックする。読み取りポートコンフリクトが存在する場合、第3の命令は、次のクロックサイクルまで復号/発令部120で停止する。時間11において書き込みポートコンフリクトが存在しない場合、復号/発令部120は、第3の命令を実行キュー161に発送する。
図7及び8は、それぞれ、書き込みポートのためのレイテンシシフタ及び読み取りポートのための読み取りシフタを示すが、本開示のレジスタファイル読み取り/書き込み制御部150の実装は限定されない。別の実施の形態において、レジスタファイル読み取り/書き込み制御部150は、復号/発令部120から機能ユニットモジュール160への命令の発令の間のあらゆる書き込みポート及び読み取りポートコンフリクトを判定するために、レイテンシシフタ751及び読み取りポート853の両方を備えてよい。別の実施の形態において、図6に示されるスコアボードは、また、図7のレイテンシシフタ751及び図8の読み取りポート853を実装していてよい。
図9は、本開示のいくつかの実施の形態の内の1つに係る、命令を機能ユニットに発令する処理を示す図である。ステップS901において、第1の命令は、復号/発令部120から、機能ユニットモジュール160の機能ユニットの実行キュー161に発送される。上記のように、実行キュー161のエントリは、命令の発送の時に、第1の命令のスループット時間に更新されてよい。蓄積スループット時間のカウント値も更新される。また、スコアボード130及びレジスタファイル読み取り/書き込み制御部150も第1の命令に基づいて更新されてよい。ステップS903において、第2の命令は、復号/発令部120により受信される。ステップS905において、蓄積スループットカウンターの現在のカウント値がロードされ、ここで、カウント値は、実行部が、復号及び発令される第2の命令を受け取るクロックサイクルの数を表す。ステップS907において、リソースコンフリクトがチェックされる。上記の実施の形態に基づいて、リソースコンフリクトは、以下の(1)write after read(WAR)、read after write(RAW)、及びwrite after write(WAW)を含むデータ依存性、(2)レジスタファイル140からのデータを機能ユニットに160に読み取るための読み取りポートの可用性、(3)機能ユニット160からのデータをレジスタファイル140に書き戻すための書き込みポートの可用性、並びに(4)データを実行するための機能ユニット160の可用性、の少なくとも1つであってよい。
リソースコンフリクトが存在しない場合、処理はステップS909に進み、第2の命令のスループット時間は蓄積スループットカウンターのカウント値に加算され、実行キューが更新される。その後、処理はステップS911に進み、第2の命令が発送される。
リソースコンフリクト(例えば、データ依存性、読み取りポートコンフリクト、書き込みポートコンフリクト)が存在する場合、処理はクロックサイクル分停止し、次のクロックサイクルにおけるリソースコンフリクトのチェックの開始に戻る(ステップS913)。
実施の形態の1つによれば、マイクロプロセッサが開示される。マイクロプロセッサは、復号/発令部と、実行キューと、実行部と、カウンターと、を備える。復号/発令部は、第1の命令を受信し、第1の命令を発送するように構成される。実行キューは、復号/発令部により発送された第1の命令を予定するように構成される。実行部は、実行キューから発令された予定された第1の命令を受信し、第1の命令を実行するように構成される。また、カウンターは、実行部が第1の命令によりビジーであるクロックサイクルの数を表すカウント値を保存するように構成される。実施の形態において、復号/発令部は、カウンターのカウント値に応じて、第1の命令の後の第2の命令を発送する。
実施の形態の1つによれば、実行キューに連結された実行部に命令を発令するための方法が開示される。方法は、以下のステップを含む。第1の命令が、実行キューに発送される。第2の命令が、第1の命令が発送された後に受信される。蓄積スループットカウンターが、実行部の蓄積スループットカウント値を取得するためにアクセスされ、蓄積スループットカウント値は、実行部が第2の命令を受け取るクロックサイクルの数を表す。第2の命令が、蓄積スループットカウントに応じて、実行キューに発送される。蓄積スループットカウント値は、クロックサイクル毎に減少する。
実施の形態の1つによれば、データ処理システムが開示される。データ処理システムは、マイクロプロセッサと、マイクロプロセッサに連結されるメインメモリと、マイクロプロセッサに連結されるバスブリッジと、バスブリッジに連結される入力/出力装置と、を備える。実施の形態において、マイクロプロセッサは、復号/発令部と、実行キューと、実行部と、蓄積スループットカウンターと、を備える。復号/発令部は、第1の命令を受信し、第1の命令を発送するように構成される。実行キューは、復号/発令部により発送された第1の命令を予定するように構成される。実行部は、実行キューから発令された予定された第1の命令を受信し、第1の命令を実行するように構成される。また、蓄積スループットカウンターは、実行部が第1の命令によりビジーであるクロックサイクルの数を表し、クロックサイクル毎に減少する蓄積スループットカウント値を保存するように構成され、復号/発令部は、カウンターのカウント値に応じて、第1の命令の後の第2の命令を発送する。
上記には複数の実施の形態の特徴が説明され、それにより、当業者は、それに続く詳細な説明をよりよく理解できる。当業者にとって、本明細書の実施の形態と同じ目的を実行及び/又は同じ利点を達成するために、本開示を別のプロセスや構造を設計及び変更するための基本として容易に使用することができる点が理解される。また、当業者にとって、それらと同等の構成は本開示の精神及び範囲から逸脱しておらず、様々な変更、置換、及び変形を本開示の精神及び範囲から逸脱せずに行うことができる点が理解される。
本開示は、データ処理システムの命令パイプラインを対象とする。
1 データ処理システム
20 メモリ
30 入力/出力インターフェース
40 周辺機器
50 バス
100 プロセッサ
110 命令取り出し部
120 複合/発令部
130 スコアボード
130_1〜130_N スコアボードエントリ
131 未知領域
133 カウンター領域
135 機能ユニット領域
140 レジスタファイル
140_1〜140_N レジスタエントリ
150、750、850 レジスタ読み取り/書き込み制御
160 機能ユニットモジュール
161、161_A、161_B、161_C 実行キュー
163、163_A、163_B、163_C スループットカウンター
165、165_A、165_B、165_C 実行部
210 有効領域
212 スループットカウント領域
214 実行制御データ
216 中間データ
218 マイクロオペレーションカウンター
230 命令カウンター
420 プレカウンター領域
461 実行キュー
518 マイクロオペレーションカウント領域
532 マイクロオペレーションカウンター
751 レイテンシシフタ
853 読み取りシフタ
S901、S903、S905、S907、S909、S911、S913 ステップ
Yes Yes
No No
FUNIT_A 機能ユニットA
FUNIT_B 機能ユニットC
FUNIT_B 機能ユニットC
QE[1]、QE[2]、QE[3] キューエントリ
E[0]〜E[N] エントリ
R0〜R(N) 0thレジスタ〜Nthレジスタ

Claims (31)

  1. 第1の命令を受信し、前記第1の命令を発送する復号/発令部と、
    前記復号/発令部により発送された前記第1の命令を予定する実行キューと、
    前記実行キューから発令された予定された前記第1の命令を受信し、前記第1の命令を実行する実行部と、
    前記実行部が前記第1の命令によりビジーであるクロックサイクルの数を表すカウント値を保存し、クロックサイクル毎に減少させるカウンターと、
    を備え、
    前記復号/発令部は、前記カウンターの前記カウント値に応じて、前記第1の命令の後の第2の命令を発送する、
    マイクロプロセッサ。
  2. 前記第1の命令は、複数の第1の命令を含み、
    前記カウント値は、前記実行部が前記複数の第1の命令によりビジーである前記クロックサイクルの蓄積数である、
    請求項1のマイクロプロセッサ。
  3. 実行部が前記第1の命令の後の第2の命令を完了する前記クロックサイクルの数は、前記第2の命令が前記復号/発令部により前記実行キューに発送された時の前記蓄積カウント値に加算される、請求項1のマイクロプロセッサ。
  4. 前記第2の命令が前記復号/発令部から前記実行キューに発送された時、前記実行部が前記第1の命令によりビジーである前記クロックサイクルの数を保存する第1のエントリの後の第2のエントリは、有効であると設定され、
    前記実行部が前記第2の命令を完了する前記クロックサイクルの数は、前記第2のエントリに保存される、
    請求項3のマイクロプロセッサ。
  5. 第1のエントリの後の第2のエントリに予定される前記第2の命令が前記実行部に発令される前に、前記実行キューの前記第1のエントリに保存される前記第1の命令のスループットカウントをロード及び減少させるように構成される命令スループットカウンターをさらに備える、請求項1のマイクロプロセッサ。
  6. 前記第1の命令は、複数のマイクロオペレーションを含むベクトル命令であり、
    前記マイクロプロセッサは、
    前記マイクロオペレーションの1つを完了する前記クロックサイクルの数を表すスループットカウントを保存する命令スループットカウンターと、
    前記実行キューの前記第1の命令に対応するエントリの前記マイクロオペレーションの数を表すマイクロオペレーションカウントを保存するマイクロオペレーションカウンターと、
    をさらに備え、
    前記命令スループットカウンターは、前記第1の命令が前記実行キューから前記実行部に発令されると、前記第1の命令に対応する前記スループットカウントをロード及び減少させるように構成され、
    前記マイクロオペレーションカウンターは、前記マイクロオペレーションカウントをロードし、前記マイクロオペレーションカウンターが0になるまで、前記命令スループットカウンターが0になる毎に、前記マイクロオペレーションカウントを減少させ、
    前記実行キューは、前記マイクロオペレーションカウンターが0になった時、前記第1の命令の後の前記第2の命令を前記実行部に発令する、
    請求項1のマイクロプロセッサ。
  7. 前記第2の命令が前記実行キューに発送される第1の時点において、前記復号/発令部は、前記第1の時点から開始する前記カウンターに保存される前記カウント値により特定される未来の前記クロックサイクルの数である第2の時点にリソースコンフリクトが存在するかを判定し、前記第2の時点において前記リソースコンフリクトが存在する場合、前記第2の命令の発送を停止させる、
    請求項1のマイクロプロセッサ。
  8. 前記復号/発令部は、リソースコンフリクトを有しない第3の時点を判定するようにさらに構成され、
    前記第3の時点は、前記第1の時点の後であり、前記第2の時点の前であり、
    前記復号/発令部は、前記第3の時点において前記第2の命令を発送し、前記第2の時点と前記第3の時点との差を、前記実行キューの対応するエントリのプレカウント値として保存する、
    請求項7のマイクロプロセッサ。
  9. 命令スループットカウンターであって、
    前記実行キューの第1のエントリに保存される前記第1の命令のスループットカウントをロード及び減少させ、前記スループットカウントがロードされた前記命令スループットカウンターが0になった後に、前記実行キューの対応するエントリに保存されるプレカウント値をロード及び減少させるように構成される、命令スループットカウンターをさらに備え、
    前記実行キューは、前記プレカウント値がロードされた前記命令スループットカウンターが0になった後、前記第1のエントリの後の第2のエントリに予定される前記第2の命令を前記実行部に発令するように構成される、
    請求項8のマイクロプロセッサ。
  10. 複数のレジスタにマップされた複数のスコアボードエントリを有するスコアボードであって、各前記スコアボードエントリは、発令された命令が前記レジスタにアクセスする前記クロックサイクルの数を示すレジスタアクセスカウンターを備え、
    前記第2の命令が前記実行キューに発送される第1の時点において、前記復号/発令部は、前記第2の命令により指定された前記レジスタに対応する、対応するスコアボードエントリの前記レジスタアクセスカウンターに保存された値を取得し、
    前記レジスタアクセスカウンターの値は、前記第1の時点の後の、データ依存性がない
    未来のNクロックサイクルである第2の時点を表し、前記第1の時点の後の前記Nクロックサイクルである前記第2の時点においてリソースコンフリクトが存在しないと判定された時、前記第2の命令を発送し、
    Nは、1以上の数である、
    請求項1のマイクロプロセッサ。
  11. 前記第2の時点においてリソースコンフリクトが存在すると判定された時、前記復号/発令部は、所定のクロックサイクル分、前記第2の命令の発送を停止し、前記第2の時点におけるリソースコンフリクトをチェックする、
    請求項10のマイクロプロセッサ。
  12. 前記第2の命令の発送のために、第1の時点の後の複数のクロックサイクルにおけるレジスタファイルの読み取りポートの使用を保存するレジスタファイル読み取り/書き込み制御部をさらに備え、
    前記第1の時点において、前記復号/発令部は、前記レジスタファイル読み取り/書き込み制御部にアクセスし、前記第1の時点において前記カウンターから取得される前記カウント値に応じて、前記第1の時点の後のNクロックサイクルである第2の時点において読み取りポートコンフリクトをチェックし、前記第2の時点において前記読み取りポートコンフリクトが存在すると判定された時、クロックサイクルについて前記第2の命令の発送を停止し、前記第2の時点において前記読み取りポートコンフリクトが存在しないと判定された時、前記第2の命令を発送し、Nは1以上である、
    請求項1のマイクロプロセッサ。
  13. 前記第2の命令の発令のために、第1の時点の後の複数のクロックサイクルにおけるレジスタファイルの書き込みポートの使用を保存するレジスタファイル読み取り/書き込み制御部をさらに備え、
    前記第1の時点において、前記復号/発令部は、前記レジスタファイル読み取り/書き込み制御部にアクセスし、前記第1の時点のカウンター及び前記第2の命令実行のレイテンシ時間から取得される前記カウント値に応じて、前記第1の時点の後のNクロックサイクルである第2の時点において書き込みポートコンフリクトをチェックし、前記第2の時点において前記書き込みポートコンフリクトが存在すると判定された時、クロックサイクルについて前記第2の命令の発送を停止し、前記第2の時点において前記書き込みポートコンフリクトが存在しないと判定された時、前記第2の命令を発送し、Nは1以上である、
    請求項1のマイクロプロセッサ。
  14. 実行キューに連結される実行部に命令を発令するための方法であって、
    第1の命令を、前記実行キューに発送することと、
    第2の命令を、前記第1の命令が前記実行キューに発送された後に受信することと、
    蓄積スループットカウンターにアクセスし、前記実行部の蓄積スループットカウント値を取得することであって、前記蓄積スループットカウント値は、前記実行部が前記第2の命令を受け取るクロックサイクルの数を表す、取得することと、
    前記第2の命令を、前記蓄積スループットカウント値に応じて、前記実行キューに発送することと
    前記蓄積スループットカウント値を、クロックサイクル毎に減少させることと
    を備える、方法。
  15. 前記第1の命令は、複数の第1の命令を含み、
    前記蓄積スループットカウント値は、前記実行部が前記複数の第1の命令によりビジーである前記クロックサイクルの蓄積数である、
    請求項14の方法。
  16. 前記第2の命令を前記実行キューに発送することは、
    前記実行部が前記実行キューに前記第2の命令を完了するクロックサイクルの数を、前記第2の命令に対応するスループットカウントとして保存することと、
    前記スループットカウントを、前記蓄積スループットカウント値に加算することと、
    前記第2の命令を、前記実行キューに発送することと、
    を備える、請求項14の方法。
  17. 前記第1の命令が前記実行キューから前記実行部に発令された時、前記第1の命令のスループットカウントをロードすることと、
    クロックサイクル毎に前記スループットカウントを減少させることと、
    前記第1の命令の前記スループットカウントが0になった時、前記第2の命令を、前記実行キューから前記実行部に発令することと、
    を備える、請求項14の方法。
  18. 前記第1の命令は、複数のマイクロオペレーションを含むベクトル命令であり、
    前記方法は、
    前記第1の命令が前記実行キューから前記実行部に発令された時、前記第1の命令の前記マイクロオペレーションのスループットカウントをロードし、前記第1の命令の前記マイクロオペレーションの数を表すマイクロオペレーションカウントをロードすることと、
    クロックサイクル毎に前記スループットカウントを減少させることと、
    前記スループットカウントが0になった時、前記マイクロオペレーションカウントを減少させ、
    前記マイクロオペレーションカウントが0になった時、前記第2の命令を、前記実行キューから前記実行部に発令することと、
    をさらに備える、請求項14の方法。
  19. 前記第2の命令が前記実行キューに発送される第1の時点において、前記第1の時点の後のNクロックサイクルである第2の時点においてリソースコンフリクトをチェックすることであって、Nは、前記蓄積スループットカウント値により定義される1以上である、チェックすることと、
    前記第2の時点において前記リソースコンフリクトが検出された時、前記第2の命令の発送を停止することと、
    をさらに備える、請求項14の方法。
  20. 前記第1の時点より後であり、前記第2の時点より前である、リソースコンフリクトを有さない第3の時点を判定することと、
    前記第3の時点において前記第2の命令を発送し、前記実行キューの前記第2の時点と前記第3の時点の差を、プレカウント値として保存することと、
    をさらに備える、請求項19の方法。
  21. 前記第1の命令のスループットカウントをロードし、前記第1の命令が前記実行キューから前記実行部に発令された時、クロックサイクル毎に前記スループットカウントを減少させることと、
    前記スループットカウントが0になった時、前記プレカウント値をロード及び減少させることと、
    前記プレカウント値が0になった時、前記第2の命令を、前記実行キューから前記実行部に発令することと、
    をさらに備える、請求項20の方法。
  22. 前記第2の命令を前記実行キューに発送することの前に、
    前記第2の命令が前記実行キューに発送される第1の時点において、前記第2の命令により指定されたレジスタに対応するレジスタアクセスカウント値を取得するためにスコアボードにアクセスすることであって、前記レジスタアクセスカウント値は、前記第1の時点の後の、データ依存性がないNクロックサイクルである第2の時点を定義し、Nは1以上である、アクセスすることと、
    前記第2の時点におけるリソースコンフリクトをチェックすることと、
    前記リソースコンフリクトが検出された時、前記第2の命令の発送を停止させることと、
    をさらに備える、請求項14の方法。
  23. 前記レジスタアクセスカウント値は、読み取り時間及び書き込み時間を含み、
    前記読み取り時間及び前記書き込み時間の内の最長の時間が、前記リソースコンフリクトをチェックするための前記レジスタアクセスカウント値として使用される、
    請求項22の方法。
  24. 前記第2の命令を前記実行キューに発送することの前に
    前記第1の時点においてレジスタファイル読み取り/書き込み制御部にアクセスし、前記第1の時点で取得された前記蓄積スループットカウント値に応じて、前記第1の時点の後のNクロックサイクルである第2の時点において読み取りポートの可用性をチェックすることであって、Nは1以上である、チェックすることと、
    前記第2の時点において読み取りポートが占有されていると判定された時、前記第2の命令の発送を停止させることと、
    をさらに備える、請求14の方法。
  25. 前記第2の命令を前記実行キューに発送することの前に
    第1の時点においてレジスタファイル読み取り/書き込み制御部にアクセスし、前記第1の時点で取得された前記蓄積スループットカウント値及び前記第2の命令を実行するためのレイテンシ時間に応じて、前記第1の時点の後のNクロックサイクルである第2の時点において書き込みポートの可用性をチェックすることであって、前記第2の時点は、前記蓄積スループットカウント値により定義され、Nは1以上である、チェックすることと、
    前記第2の時点において前記書き込みポートが占有されていると判定された時、前記第2の命令の発送を停止させることと、
    をさらに備える、請求14の方法。
  26. マイクロプロセッサであって、
    第1の命令を受信し、前記第1の命令を発送する復号/発令部と、
    前記復号/発令部により発送された前記第1の命令を予定する実行キューと、
    前記実行キューから予定された前記第1の命令を受信し、前記第1の命令を実行する実行部と、
    前記実行部が前記第1の命令によりビジーであるクロックサイクルの数を表す蓄積スループットカウント値を保存し、クロックサイクル毎に減少させる、前記復号/発令部が、前記カウンターの前記カウント値に応じて、前記第1の命令の後の前記第2の命令を発送するように構成される蓄積スループットカウンターと、
    を備えるマイクロプロセッサと、
    前記マイクロプロセッサに連結されるメインメモリと、
    前記マイクロプロセッサに連結されるバスブリッジと、
    前記バスブリッジに連結される入力/出力装置と、
    を備える、
    データ処理システム。
  27. 前記第1の命令は、複数の第1の命令を含み、
    前記蓄積スループットカウント値は、前記実行部が前記複数の第1の命令によりビジーである前記クロックサイクルの蓄積値である、
    請求項26のデータ処理システム。
  28. 前記第1の命令は、複数のマイクロオペレーションを含むベクトル命令であり、
    前記マイクロプロセッサは、
    前記マイクロオペレーションの1つを完了する前記クロックサイクルの数を表すスループットカウントを保存する命令スループットカウンターと、
    前記実行キューの前記第1の命令に対応するエントリの前記マイクロオペレーションの数を表すマイクロオペレーションカウントを保存するマイクロオペレーションカウンターと、
    をさらに備え、
    前記命令スループットカウンターは、前記第1の命令が前記実行キューから前記実行部に発令されると、前記第1の命令に対応する前記スループットカウントをロード及び減少させるように構成され、
    前記マイクロオペレーションカウンターは、前記マイクロオペレーションカウントをロードし、前記マイクロオペレーションカウンターが0になるまで、前記命令スループットカウンターが0になる毎に、前記マイクロオペレーションカウントを減少させ、
    前記実行キューは、前記マイクロオペレーションカウンターが0になった時、前記第1の命令の後の前記第2の命令を発令する、
    請求項26のデータ処理システム。
  29. 前記第2の命令が前記実行キューに発送される第1の時点において、前記復号/発令部は、前記第1の時点の後のNクロックサイクルである前記蓄積スループットカウンターに保存される前記蓄積スループットカウント値により特定される前記クロックサイクルの数である第2の時点にリソースコンフリクトが存在するかを判定し、前記第2の時点において前記リソースコンフリクトが判定された場合、前記第2の命令の発令を停止させ、Nは1以上である、
    請求項26のデータ処理システム。
  30. 前記マイクロプロセッサは、複数のレジスタにマップされた複数のスコアボードエントリを有するスコアボードであって、各前記スコアボードエントリは、発令された命令が前記レジスタにアクセスする前記クロックサイクルの数を示すレジスタアクセスカウンターを備え、
    前記第2の命令が前記実行キューに発送される第1の時点において、前記復号/発令部は、前記第2の命令により指定された前記レジスタに対応する、対応するスコアボードエントリの前記レジスタアクセスカウンターに保存された値を取得し、
    前記レジスタアクセスカウンターの値は、前記第1の時点の後の、データ依存性がない未来のNクロックサイクルである第2の時点を表し、前記第1の時点の後のNクロックサイクルである前記第2の時点においてリソースコンフリクトが存在しないと判定された時、前記第2の命令を発送し、
    Nは、1以上の数である、
    請求項26のデータ処理システム。
  31. 前記マイクロプロセッサは、前記第2の命令の発送のために、第1の時点の後の複数のクロックサイクルにおけるレジスタファイルの読み取りポート及び書き込みポートの使用を保存するレジスタファイル読み取り/書き込み制御部をさらに備え、
    前記第1の時点において、前記復号/発令部は、前記レジスタファイル読み取り/書き込み制御部にアクセスし、前記第1の時点において前記カウンターから取得される前記カウント値に応じて、前記第1の時点の後のNクロックサイクルである第2の時点において読み取りポートコンフリクトをチェックし、前記第1の時点において前記カウンター及び前記第2の命令実行のレイテンシ時間から取得される前記カウント値に応じて、前記第1の時点の後のNクロックサイクルである第3の時点において書き込みポートコンフリクトをチェックし、Nは1以上であり、
    前記復号/発令部は、クロックサイクルについて前記第2の命令の発送を停止させ、
    前記第2の時点において前記読み取りポートコンフリクトが存在しないと判定され、前記第3の時点において前記書き込みポートコンフリクトが存在しないと判定された時、前記第2の命令を発送する、
    請求項26のデータ処理システム。

JP2020172656A 2020-04-20 2020-10-13 事前設定された未来時間において命令を実行するためのパイプライン制御を備えるマイクプロセッサ Withdrawn JP2021174506A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/853,717 2020-04-20
US16/853,717 US11163582B1 (en) 2020-04-20 2020-04-20 Microprocessor with pipeline control for executing of instruction at a preset future time

Publications (1)

Publication Number Publication Date
JP2021174506A true JP2021174506A (ja) 2021-11-01

Family

ID=78082453

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020172656A Withdrawn JP2021174506A (ja) 2020-04-20 2020-10-13 事前設定された未来時間において命令を実行するためのパイプライン制御を備えるマイクプロセッサ

Country Status (3)

Country Link
US (1) US11163582B1 (ja)
JP (1) JP2021174506A (ja)
CN (1) CN113535423A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7348969B2 (ja) 2021-06-01 2023-09-21 晶心科技股▲ふん▼有限公司 共有機能部を有するマイクロプロセッサ

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11868287B2 (en) 2020-12-17 2024-01-09 Micron Technology, Inc. Just-in-time (JIT) scheduler for memory subsystems
US11687347B2 (en) * 2021-05-25 2023-06-27 Andes Technology Corporation Microprocessor and method for speculatively issuing load/store instruction with non-deterministic access time using scoreboard
US11741044B2 (en) * 2021-12-30 2023-08-29 Microsoft Technology Licensing, Llc Issuing instructions on a vector processor
CN114047956B (zh) * 2022-01-17 2022-04-19 北京智芯微电子科技有限公司 处理器指令多发射方法、双发射方法、装置及处理器
US11829187B2 (en) 2022-01-30 2023-11-28 Simplex Micro, Inc. Microprocessor with time counter for statically dispatching instructions
US11829767B2 (en) 2022-01-30 2023-11-28 Simplex Micro, Inc. Register scoreboard for a microprocessor with a time counter for statically dispatching instructions
US11829762B2 (en) 2022-01-30 2023-11-28 Simplex Micro, Inc. Time-resource matrix for a microprocessor with time counter for statically dispatching instructions
US11954491B2 (en) 2022-01-30 2024-04-09 Simplex Micro, Inc. Multi-threading microprocessor with a time counter for statically dispatching instructions
US20230342153A1 (en) * 2022-04-20 2023-10-26 Simplex Micro, Inc. Microprocessor with a time counter for statically dispatching extended instructions
US20230350679A1 (en) * 2022-04-29 2023-11-02 Simplex Micro, Inc. Microprocessor with odd and even register sets
US20230393852A1 (en) * 2022-06-01 2023-12-07 Simplex Micro, Inc. Vector coprocessor with time counter for statically dispatching instructions
WO2024015445A1 (en) * 2022-07-13 2024-01-18 Simplex Micro, Inc. Vector processor with extended vector registers

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5961630A (en) * 1997-12-30 1999-10-05 Intel Corporation Method and apparatus for handling dynamic structural hazards and exceptions by using post-ready latency
US5996064A (en) * 1997-12-30 1999-11-30 Intel Corporation Method and apparatus for guaranteeing minimum variable schedule distance by using post-ready latency
US20160371091A1 (en) * 2015-06-17 2016-12-22 Ibm Techniques for improving issue of instructions with variable latencies in a microprocessor
US10445100B2 (en) * 2016-06-09 2019-10-15 International Business Machines Corporation Broadcasting messages between execution slices for issued instructions indicating when execution results are ready

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7348969B2 (ja) 2021-06-01 2023-09-21 晶心科技股▲ふん▼有限公司 共有機能部を有するマイクロプロセッサ

Also Published As

Publication number Publication date
CN113535423A (zh) 2021-10-22
US11163582B1 (en) 2021-11-02
US20210326141A1 (en) 2021-10-21

Similar Documents

Publication Publication Date Title
JP2021174506A (ja) 事前設定された未来時間において命令を実行するためのパイプライン制御を備えるマイクプロセッサ
US8904153B2 (en) Vector loads with multiple vector elements from a same cache line in a scattered load operation
US5748950A (en) Method and apparatus for providing an optimized compare-and-branch instruction
US4493020A (en) Microprogrammed digital data processor employing microinstruction tasking and dynamic register allocation
US6330661B1 (en) Reducing inherited logical to physical register mapping information between tasks in multithread system using register group identifier
US9639369B2 (en) Split register file for operands of different sizes
US5109495A (en) Method and apparatus using a source operand list and a source operand pointer queue between the execution unit and the instruction decoding and operand processing units of a pipelined data processor
JP3547482B2 (ja) 情報処理装置
US11204770B2 (en) Microprocessor having self-resetting register scoreboard
US20130117543A1 (en) Low overhead operation latency aware scheduler
US20050198476A1 (en) Parallel multithread processor (PMT) with split contexts
US11132199B1 (en) Processor having latency shifter and controlling method using the same
CN109564546B (zh) 通过绕过加载存储单元来跟踪存储和加载
RU2628156C2 (ru) Системы и способы отслеживания флага в операциях устранения перемещения
US5815698A (en) Microprocessor having delayed instructions
US11263013B2 (en) Processor having read shifter and controlling method using the same
US20220382546A1 (en) Apparatus and method for implementing vector mask in vector processing unit
JP3093673B2 (ja) リネーム・レジスタを割り付ける方法及びプロセッサ
US8910181B2 (en) Divided central data processing
US20120144175A1 (en) Method and apparatus for an enhanced speed unified scheduler utilizing optypes for compact logic
JP2017538215A (ja) 逆分離演算を実行するための命令及びロジック
US9176738B2 (en) Method and apparatus for fast decoding and enhancing execution speed of an instruction
JP7383390B2 (ja) 情報処理ユニット、情報処理装置、情報処理方法及びプログラム
CN114327635A (zh) 用于处理器的非对称执行端口和分配宽度的可缩放端口绑定的方法、系统和装置
US11829762B2 (en) Time-resource matrix for a microprocessor with time counter for statically dispatching instructions

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201013

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20211130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20211201