JP7211719B2 - プログラマブル命令のバッファリング - Google Patents

プログラマブル命令のバッファリング Download PDF

Info

Publication number
JP7211719B2
JP7211719B2 JP2018101271A JP2018101271A JP7211719B2 JP 7211719 B2 JP7211719 B2 JP 7211719B2 JP 2018101271 A JP2018101271 A JP 2018101271A JP 2018101271 A JP2018101271 A JP 2018101271A JP 7211719 B2 JP7211719 B2 JP 7211719B2
Authority
JP
Japan
Prior art keywords
instructions
instruction
buffers
processing pipeline
circuit
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
JP2018101271A
Other languages
English (en)
Other versions
JP2018206375A (ja
Inventor
バーティア ジャティン
ジョン ペントン アントニー
ヤークブ ジョハール カウセール
Original Assignee
アーム・リミテッド
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 アーム・リミテッド filed Critical アーム・リミテッド
Publication of JP2018206375A publication Critical patent/JP2018206375A/ja
Application granted granted Critical
Publication of JP7211719B2 publication Critical patent/JP7211719B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation 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/38Concurrent instruction execution, e.g. pipeline or 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 or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking

Landscapes

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

Description

本開示はデータ処理システムの分野に関する。より具体的には、本開示は、処理パイプラインを含むデータ処理システム、及び、その処理パイプラインを通る命令のフローの制御に関する。
命令フェッチ、命令デコード、命令発行、命令実行及びライトバックに対応するステージといった複数のステージを含んだ処理パイプラインを含むデータ処理システムの提供が知られている。こうしたパイプライン化された処理は、並列処理により、命令処理能力の向上に貢献する。処理パイプラインの命令フェッチステージは、これらの命令を格納しているメモリシステムから、実行すべき命令をフェッチするように機能する。命令をフェッチするのに要する時間は、命令がキャッシュされているか否か、命令を遅いメインメモリからフェッチしなければならないか否か、或いは命令のフェッチによって仮想から物理へのページマッピング障害が引き起こされるか否か等の要因に応じて、大幅に変動しうる。このため、命令をフェッチするのに要する時間は数桁分も変動することがある。
この変動のために、或るときには全ての命令が遅延なくキャッシュできて使用可能となるのが、別の場合では同じ命令について、命令フェッチステージにおいてメインメモリ及び場合によりページテーブルウォークを伴う複数の高レイテンシフェッチ操作を行うことが必要となるといったように、所定の一連の命令の実行に要する時間に差異が生じる。フェッチは、様々なソース、又はフラッシュやDDRメモリといった遅延の異なる様々な種類のメインメモリから行われうる。
本開示の少なくとも幾つかの実施例では、実行すべき命令をメモリからフェッチするフェッチ回路を有する処理パイプラインと、フェッチ回路によってメモリからフェッチされた命令を格納する1つ以上のバッファと、プログラマブルトリガーに応答するバッファ制御回路であって、1つ以上のバッファの下流にある処理パイプラインのストール可能箇所をストールさせ、所定の開始命令から開始する複数の命令を備えた命令バーストを、1つ以上のバッファ内に蓄積し、1つ以上のバッファ内に複数の命令が蓄積されると、処理パイプラインのストール可能箇所を再開させるバッファ制御回路とを備える、データを処理する装置が提供される。
本開示の少なくとも幾つかの実施例では、実行すべき命令をメモリからフェッチするフェッチ手段を有する処理パイプラインと、フェッチ手段によってメモリからフェッチされた命令を格納する1つ以上のバッファ手段と、プログラマブルトリガーに応答するバッファ制御手段であって、1つ以上のバッファ手段の下流にある処理パイプラインのストール可能箇所をストールさせ、所定の開始命令から開始する複数の命令を備えた命令バーストを、1つ以上のバッファ手段内に蓄積し、1つ以上のバッファ手段内に複数の命令が蓄積されると、処理パイプラインのストール可能箇所を再開させるバッファ制御手段とを備える、データを処理する装置。
本開示の少なくとも幾つかの実施例では、実行すべき命令をメモリからフェッチすることと、プログラマブルトリガーに応答して、1つ以上のバッファの下流にある処理パイプラインのストール可能箇所をストールさせ、所定の開始命令から開始する複数の命令を備えた命令バーストを、1つ以上のバッファ内に蓄積し、1つ以上のバッファ内に複数の命令が蓄積されると、処理パイプラインのストール可能箇所を再開させることとを含む、データを処理する方法。
ここで、実施例の例は、添付の図面を参照しながら例として説明される。
処理パイプラインを有するプロセッサコアを含むデータ処理システムを概略的に示す。 プログラマブルトリガーの形態の様々な例のひとつを概略的に示す。 プログラマブルトリガーの形態の様々な例のひとつを概略的に示す。 プログラマブルトリガーの形態の様々な例のひとつを概略的に示す。 開始点及びバースト長を指定するヒント命令を用いたバッファ制御を概略的に示すフロー図である。 ヒント開始命令及びヒント停止命令を用いるバッファ制御を概略的に示すフロー図である。
図1は、メインメモリ6と、命令キャッシュ8と、データキャッシュ10とを含むメモリシステムに接続された4を含むデータ処理システム2を概略的に示す。プロセッサコア4は、命令キャッシュ8又はメインメモリ6からプログラム命令をフェッチするフェッチ回路12と、プログラム命令をデコードして、それらのプログラム命令が指定する処理操作を制御する制御信号を生成するデコード回路14と、デコードされた命令が実行のために発行される際に制御を行う発行回路16と、整数パイプライン20や、浮動小数点パイプライン22、単一命令複数データ(SIMD)パイプライン24、ロードストアユニット26といった様々な機能ユニットを用いた命令の実行と連動する実行回路18と、最後に、実行された命令の結果をシステム及びメモリ内にライトバックするように機能するライトバック回路28とが含まれた複数のパイプラインステージを含んだ処理パイプラインを含む。
動作中、命令は、命令キャッシュ8からフェッチ回路12によってフェッチされる。命令キャッシュ8内で失敗が生じた場合は、命令はメインメモリ6からフェッチされる。こうしたメインメモリ命令フェッチは、命令キャッシュ8からのフェッチよりも更に時間を要する。フェッチ回路12は、フェッチした命令を第1バッファに格納する。デコード回路14は、第1バッファ30から命令を読み取り、それらをデコードすることでデコードされた命令を形成して、その後、デコードされた命令は第2バッファ32に格納される。発行回路16は、第2バッファ32からデコードされた命令を読み取り、スロットがこれらの命令を関連機能ユニット内で実行することが可能な場合、これらを実行回路18,20,22,24及び26に発行する。最後に、ライトバック回路28は、命令の実行結果をライトバックして、これらの結果に伴ってプロセッサコアの状態を更新するように機能する。
デコード回路14に接続されたバッファ制御回路34は、デコード回路14が、プログラマブルトリガーとして機能するプログラム命令をデコードすると、デコード回路14から信号を受信して、処理パイプラインのストール可能箇所をストールさせ、命令バーストを1つ以上のバッファ内に蓄積し、その後、1つ以上のバッファ内に(所定でもよい)複数のプログラム命令が蓄積されると、処理パイプラインのストール可能箇所を再開させる。
この実施例の例では、処理パイプラインのストール可能箇所は発行回路16を含む。このストール可能箇所がプログラマブルトリガーに応答してストールすると、命令(及びデコードされた命令)がバッファ30及び32内に蓄積される。他の実施例では、処理パイプラインの他の部分がストール可能箇所として機能してもよいことが理解されよう。例えば、デコード回路14が、命令が第1バッファ30内に蓄積するようにストールしてもよい。他の実施例では、実行回路18、又は整数パイプライン20、浮動小数点パイプライン22、単一命令複数データパイプライン24若しくはロードストアユニット26といった個別の機能処理ブロックを、少なくとも、これらのストールされた箇所によって実行されるようになっている命令に関しては、こうしたストールされた箇所の上流で命令がバッファされる影響によってストールできる(例えば、実行回路内の他のパイプライン22,24及び26によって実行される命令の継続を許容しながら、ストールし且つ整数パイプライン20によって実行されるようになっている命令を蓄積することが可能となりうる)。
フェッチされた命令バーストを蓄積するための処理パイプラインのストールは、データ処理システムの動作テストを試みる用途を含む、様々な用途を有することができる。例えば、メインメモリ6に格納された内蔵セルフテストライブラリコード36を実行させて、データ処理システムの一部が正しく機能するかをテストしてもよい。テストが適切に行われ、且つプログラム命令のフェッチのタイミングに影響されないことが確実となるように、内蔵セルフテストライブラリコード36は、上記のストール、蓄積及び再開動作のためのプログラマブルトリガーとして機能する命令を含むことで、その内蔵セルフテストコード内の特定の一連/バーストの命令を、どの命令フェッチ遅延変動とも無関係な決定的タイミングで実行できるようにしてもよい。本技術の用途の他の例では、決定的タイミングで特定の一連/バーストの命令を実行して、タイミングが極めて近い様々な周辺機器/装置から複数のデータ点をサンプリングする。
一例として、ロードストアユニット26は、進行中のデータ書き込みの既定の書き込みデータを、その既定の書き込みデータがメモリに書き込まれる前に、既定のメモリアドレスにバッファするように機能する格納フォワーディング回路38を含んでもよく、この格納フォワーディング回路38は、こうした書き込みが進行中で、既定の書き込みデータが格納フォワーディング回路に格納されている間は、メモリシステムに書き込まれる書き込みデータを待つ遅延を被って、メモリシステムからそのデータを読み取るよりも、むしろ、格納フォワーディング回路38に格納されているデータのコピーを用いて、既定のアドレスに対する後続のデータ読み込みを処理するように機能する。しかしながら、こうした格納フォワーディング回路を適切にテストするには、メモリへの格納が行われることなく、格納フォワーディング回路が読み取りの処理で活動するように、書き込み操作の後に読み取り操作が素早く行われることが重要である。これは、フェッチ回路12の下流の処理パイプライン内にまとめられて、処理される命令バーストとして開放される命令バースト内に、書き込み命令と後続の読み取り命令とを含むことで、変動するフェッチ遅延と関係なく、書き込み命令と読み取り命令との間の決定的タイミングで、書き込み命令の後に読み取り命令が続くようにすることで実現されてもよい。
バッファ制御回路34は、エスケープイベントを検出するように機能して、こうしたエスケープイベントが検出されると1つ以上のバッファ30,32内への命令の蓄積を全て停止させ、ストール可能箇所(例えばこの実施例の例では発行回路)を再開させる、エスケープ回路40を含む。例えばこうしたエスケープ回路40は、例えば、フェッチされた命令が、それらの命令がフェッチされるのを妨げる他のプロセスによって到着しないことで、処理パイプラインが永久にストールしてしまうことによる、デッドロックといった病的状態が生じないことを確実とするのに有用となりうる。エスケープ回路40の用途の他の例では、パイプラインがストールしている間に蓄積される命令バーストに所定の長さがない場合、命令は、例えば、ハードウェアトリガーイベントが生じる(実施によってバッファ全信号からバッファサイズまでが異なる等)まで、所定のプログラムされたモニタイベントが設計(又はバッファ制御回路)内で生じるまで、割り込み若しくは中断がトリガーされるまで、又はこれらの組み合わせが生じるまで、むしろ蓄積される。こうして、エスケープ回路は、ストールを止めるバックドア若しくは意図的にストールを止める主要設計特徴のいずれか又は両方を提供できる。
エスケープ回路40によって検出されるエスケープイベントは、様々な異なる形態をとってもよい。例えば、エスケープイベントは、メモリから複数の命令がフェッチされるのに要する時間が、タイムアウトタイマー等の閾値時間を超えることを含んでもよい。或いは、エスケープイベントは、処理パイプラインを再開すべき/ストールしないべきといった問題を示すことができる、(例えば、行われようとしている所定の数のメモリフェッチや、所定の数のメモリ中断等)発生中の1つ以上のモニタイベントを検出するように機能してもよい。
プログラマブルトリガーに続いて複数の命令が蓄積される1つ以上のバッファ30,32は、処理パイプラインの通常動作のためにその処理パイプライン内に既に設けられているバッファであってもよい。この場合、決定的な命令フェッチのために処理パイプラインのストール可能箇所をストール、蓄積及び再開させる設備の提供と関連する更なるオーバーヘッドを、比較的低くできる。他の実施例の例では、蓄積された命令を、パイプラインのストールされた箇所が再開される前に格納するように機能する、専用のバッファを提供することが可能である。
ストールされた箇所が再開されると、1つ以上のバッファ内に蓄積されている命令バーストを、例えば割り込み又は他の遅延を介在させることなく、アトミックに実行することができる。こうしたアトミックな実行は、1つ以上のバッファ内に命令が蓄積されることで、命令フェッチ内のメモリ障害に起因して、アトミックなシーケンスの実行中にメモリ中断が途中まで生じる可能性をなくすように、支援される。
バッファ制御回路34を制御して処理パイプラインをストール、蓄積及び再開工程を行うように制御するプログラマブルトリガーは、以下に更に説明するように様々な異なる形態をとってもよい。プログラマブルトリガーの制御及び提供の形態の一部には、プログラマブルトリガーに関するパラメータを格納できる構成レジスタ42を利用してもよい。例えば、プログラマブルフラグを構成レジスタ42内に設定して、ストール、蓄積及び再開の動作を、まだ受信されていない同期命令と同期して行うように、バッファ制御回路34を準備してもよい。構成レジスタ42は、幾つかの実施例では、蓄積される命令バーストの長さを指定するパラメータも格納してもよい。
図2は、プログラマブルトリガーの第1の形態を概略的に示す。この例では、一連のプログラム命令は、プログラマブル開始点パラメータ及びプログラマブルバースト長パラメータを指定するヒント命令44を含む。こうしたヒント命令がデコード回路14によってデコードされると、その後、バッファ制御回路34を制御して、処理パイプラインを、デコードされた開始点パラメータ及びバースト長パラメータに関連付けてストール、蓄積及び再開を行うように制御する。
図3は、プログラマブルトリガーの他の形態を概略的に示す。この例では、一連のプログラム命令が、命令バーストの開始をマークするヒント命令46と、命令バーストの終了をマークするヒント命令48とを含む。こうして、命令バーストは、プログラム命令の流れの中に組み込まれた開始命令46及び停止命令48のそれぞれによって区切られる。
図4は、使用できるプログラマブルトリガーの更なる例を概略的に示す。この例では、実行すべきプログラムが構成レジスタ42内にプログラマブルフラグを設定して、バッファ制御回路34を、蓄積されるバースト長を指定するパラメータといった適当なパラメータによってストール、蓄積及び再開の動作を行うように準備する。準備ができると、バッファ制御回路34は、こうしたバースト蓄積を、実行すべき一連のプログラム命令内の同期命令50によって起動するようにトリガーされてもよい。
上記の例は、本技術の実施に使用できる回路及びプログラマブルトリガーの幾つかの形態でしかないことが理解されよう。他の形態の回路及びプログラマブルトリガーも可能である。
図5は、プログラマブル開始点パラメータ及びプログラマブルバースト長パラメータを指定するヒント命令を用いたバッファ制御を概略的に示すフロー図である。処理は、こうしたヒント命令が受信されるまでステップ52で待機する。ステップ54は、発行回路16をストールさせる(他の実施例の例では、処理パイプラインの他のストール可能箇所が採用されてもよい)。ステップ56は、フェッチ回路12によってフェッチされ続けるようにしたまま、命令をバッファ30,32内に蓄積する。ステップ58は、バッファ30,32が、ステップ52でデコードされたヒント命令内のバースト長パラメータによって指定される所定の長さの命令バーストを現在格納しているか否かを判断する。ステップ58で命令バーストが完全に蓄積されていると判断された場合は、処理は、発行回路16が再開される(ストールされなくなる)ステップ60に進む。ステップ58で命令バーストがまだ完全に蓄積されていないと判断された場合は、処理は、エスケープ回路40がエスケープイベント(例えばタイムアウト)を検出しているか否かを判断するステップ62に進む。こうしたエスケープイベントが検出されていない場合は、処理はステップ56に戻る。こうしたエスケープイベントが検出されている場合は、動作は、発行回路16が再開されるステップ60に進む。
図6は、蓄積される命令バーストを個別のヒント開始命令及びヒント停止命令によって区切るバッファ制御を概略的に示すフロー図である。処理は、ヒント開始命令がデコードされるまでステップ64で待機する。こうしたヒント開始命令がデコードされると、ステップ66で、バッファ制御回路34が、発行回路16をストールさせるように機能する。ステップ68は、フェッチ回路がストールせずそのフェッチ操作を継続しながら、命令をバッファ30,32内に蓄積する。ステップ70は、エスケープ回路40がエスケープイベントを検出しているか否かを判断する。エスケープイベントが検出されていない場合は、処理は、ヒント停止命令がデコードされているか否かを判断するステップ72に進む。ヒント停止命令がデコードされていない場合は、処理はステップ68に戻る。ヒント停止命令がデコードされている場合は、バッファ30,32内に必要な命令バーストが蓄積されており、処理は、発行回路16が再開されるステップ74に進む。エスケープイベントが検出されている場合は、ステップ72が迂回されて、処理は、発行回路が再開されるステップ74に進む。
本明細書では、「~するように構成され」という単語は、装置の要素が、定義された動作を実行可能な構成を有することを意味するように用いられる。この文脈では、「構成」は、ハードウェア又はソフトウェアの相互接続の構造又は様式を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有してもよいし、プロセッサ又は他の処理装置が、機能を実行するようにプログラムされてもよい。「~するように構成され」は、定義された動作を提供するために装置要素を任意の方法で変更しなければならないことを暗示するものではない。
本発明の例示的な実施例が、添付の図面と関連して本明細書に詳細に説明されているが、本発明はこれらの正確な実施例に限定されるものではなく、添付の請求項で定義されるような本発明の範囲及び精神から逸脱することなく、当業者が実施例への様々な変更及び修正を行うことができるものと理解されよう。

Claims (19)

  1. 実行すべき命令をメモリからフェッチするフェッチ回路を有する処理パイプラインと、
    前記フェッチ回路によって前記メモリからフェッチされた命令を格納する1つ以上のバッファと、
    プログラマブルトリガーに応答して、
    前記1つ以上のバッファの下流にある前記処理パイプラインのストール可能箇所をストールさせ、
    所定の開始命令から開始する所定の数の命令を備えた命令バーストを前記1つ以上のバッファ内に蓄積し、
    前記1つ以上のバッファ内に前記所定の数の命令が蓄積されると、前記処理パイプラインの前記ストール可能箇所を再開させる
    バッファ制御回路とを備える、データを処理する装置。
  2. 前記処理パイプラインが、
    前記命令を実行する実行回路と、
    前記フェッチ回路によって前記メモリからフェッチされた命令を、実行のために、前記実行回路に発行する発行回路とを備える、請求項1に記載の装置。
  3. 前記ストール可能箇所が前記発行回路を備える、請求項2に記載の装置。
  4. 前記プログラマブルトリガーが、
    前記所定の開始命令をプログラマブルに指定する開始点パラメータ及び
    前記所定の数の命令をプログラマブルに指定するバースト長パラメータの少なくとも1つを備える、請求項1に記載の装置。
  5. 前記所定の数が固定されたバースト長を備える、請求項1に記載の装置。
  6. 前記プログラマブルトリガーが、
    前記命令バーストの開始をマークするヒント命令及び
    前記命令バーストの終了をマークするヒント命令の少なくとも1つを実行することを含む、請求項1~5のいずれか一項に記載の装置。
  7. 前記プログラマブルトリガーが、
    プログラマブルフラグを構成レジスタ内に設定して、前記ストール、前記蓄積及び前記再開の動作を、実行すべき命令の流れの中の同期命令と同期して行うように、前記バッファ制御回路を準備することを含む、請求項1~5のいずれか一項に記載の装置。
  8. 前記処理パイプラインが、前記フェッチ回路によってフェッチされた命令をデコードするデコード回路を備える、請求項1~7のいずれか一項に記載の装置。
  9. 前記1つ以上のバッファが、前記フェッチ回路によってフェッチされた命令を、前記命令が前記フェッチ回路の下流にある前記処理パイプラインに供給される前に格納する、請求項1~8のいずれか一項に記載の装置。
  10. 前記1つ以上のバッファが、前記デコード回路によってデコードされた命令を、前記命令が前記デコード回路の下流にある前記処理パイプラインに供給される前に格納する、請求項8に記載の装置。
  11. 前記1つ以上のバッファが、前記プログラマブルトリガーと関係なく、前記処理パイプラインの動作中に、命令の一時的な格納も行う、請求項1~10のいずれか一項に記載の装置。
  12. 前記1つ以上のバッファが、前記フェッチ回路による、前記メモリから前記1つ以上のバッファへの前記命令バースト内の前記命令のフェッチのレイテンシから独立したタイミングで、前記命令バースト内の命令を前記処理パイプラインに供給する、請求項1~11のいずれか一項に記載の装置。
  13. メインメモリをさらに備え、前記命令バーストが、前記装置内の障害をテストするための前記メインメモリ内に格納された内蔵セルフテスト命令を備える、請求項1~12のいずれか一項に記載の装置。
  14. 前記実行回路が前記命令バーストをアトミックに実行する、請求項2、3、及び、請求項2に従属する場合の請求項6~13のいずれか一項に記載の装置。
  15. 格納フォワーディング回路であって、
    進行中のデータ書き込みの既定の書き込みデータを、前記既定の書き込みデータが前記メモリに書き込まれる前に、既定のメモリアドレスにバッファし、
    前記データ書き込みがまだ進行中の間、前記格納フォワーディング回路内に格納された前記既定の書き込みデータによって、前記既定のアドレスの後続のデータ読み取りを処理する格納フォワーディング回路を備える、請求項1~14のいずれか一項に記載の装置。
  16. 前記バッファ制御回路が、エスケープイベントを検出し、前記エスケープイベントが検出されると前記1つ以上のバッファ内への前記蓄積を停止させ、前記ストール可能箇所を再開させるエスケープ回路を備える、請求項1~15のいずれか一項に記載の装置。
  17. 前記エスケープイベントが、
    前記メモリから前記所定の数の命令がフェッチされるのに要する時間が閾値時間を超えること及び
    1つ以上のモニタイベントが発生していることの少なくとも1つを備える、請求項16に記載の装置。
  18. 実行すべき命令をメモリからフェッチするフェッチ手段を有する処理パイプラインと、
    前記フェッチ手段によって前記メモリからフェッチされた命令を格納する1つ以上のバッファ手段と、
    プログラマブルトリガーに応答して、
    前記1つ以上のバッファ手段の下流にある前記処理パイプラインのストール可能箇所をストールさせ、
    所定の開始命令から開始する所定の数の命令を備えた命令バーストを前記1つ以上のバッファ手段内に蓄積し、
    前記1つ以上のバッファ手段内に前記所定の数の命令が蓄積されると、前記処理パイプラインの前記ストール可能箇所を再開させる
    バッファ制御手段とを備える、データを処理する装置。
  19. 実行すべき命令をメモリからフェッチすることと、
    プログラマブルトリガーに応答して、
    1つ以上のバッファの下流にある処理パイプラインのストール可能箇所をストールさせ、
    所定の開始命令から開始する所定の数の命令を備えた命令バーストを、前記1つ以上のバッファ内に蓄積し、
    前記1つ以上のバッファ内に前記所定の数の命令が蓄積されると、前記処理パイプラインの前記ストール可能箇所を再開させることとを含む、データを処理する方法。
JP2018101271A 2017-06-07 2018-05-28 プログラマブル命令のバッファリング Active JP7211719B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1709064.8 2017-06-07
GB201709064A GB2563384B (en) 2017-06-07 2017-06-07 Programmable instruction buffering

Publications (2)

Publication Number Publication Date
JP2018206375A JP2018206375A (ja) 2018-12-27
JP7211719B2 true JP7211719B2 (ja) 2023-01-24

Family

ID=59349786

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018101271A Active JP7211719B2 (ja) 2017-06-07 2018-05-28 プログラマブル命令のバッファリング

Country Status (5)

Country Link
US (2) US10866810B2 (ja)
EP (1) EP3413191B1 (ja)
JP (1) JP7211719B2 (ja)
KR (1) KR102571928B1 (ja)
GB (1) GB2563384B (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2563384B (en) 2017-06-07 2019-12-25 Advanced Risc Mach Ltd Programmable instruction buffering
US11960404B2 (en) * 2020-09-23 2024-04-16 Advanced Micro Devices, Inc. Method and apparatus for reducing the latency of long latency memory requests
US11740929B2 (en) * 2020-10-20 2023-08-29 Micron Technology, Inc. Registering a custom atomic operation with the operating system
US11436187B2 (en) 2020-10-20 2022-09-06 Micron Technology, Inc. Method of notifying a process or programmable atomic operation traps
US11586439B2 (en) 2020-10-20 2023-02-21 Micron Technology, Inc. Detecting infinite loops in a programmable atomic transaction
US11693690B2 (en) 2020-10-20 2023-07-04 Micron Technology, Inc. Method of completing a programmable atomic transaction by ensuring memory locks are cleared
CN115917519B (zh) * 2021-07-30 2023-09-08 株式会社软技 存储有信息处理程序的记录介质、信息处理装置和信息处理方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002149404A (ja) 2000-10-20 2002-05-24 Texas Instr Inc <Ti> マイクロプロセッサにおける連鎖ブレークポイントを設ける方法及び装置
WO2006112190A1 (ja) 2005-04-08 2006-10-26 Matsushita Electric Industrial Co., Ltd. プロセッサ
JP2009110209A (ja) 2007-10-29 2009-05-21 Panasonic Corp 演算処理装置、プロセッサ、プログラム変換装置およびプログラム
US20090198980A1 (en) 2008-01-31 2009-08-06 International Business Machines Corporation Facilitating processing in a computing environment using an extended drain instruction
JP2011508309A (ja) 2007-12-20 2011-03-10 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド ロックされたオペレーションを実行するためのシステムおよび方法

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5021945A (en) * 1985-10-31 1991-06-04 Mcc Development, Ltd. Parallel processor system for processing natural concurrencies and method therefor
US5193167A (en) * 1990-06-29 1993-03-09 Digital Equipment Corporation Ensuring data integrity by locked-load and conditional-store operations in a multiprocessor system
JP2748822B2 (ja) * 1993-07-05 1998-05-13 日本電気株式会社 情報処理装置
US5884080A (en) * 1996-11-26 1999-03-16 International Business Machines Corporation System and method for instruction burst performance profiling for single-processor and multi-processor systems
JPH1115661A (ja) * 1997-06-26 1999-01-22 Toshiba Corp Cpuの自己診断方法
US6370638B1 (en) * 1997-11-21 2002-04-09 Matsushita Electric Industrial Co., Ltd. Apparatus and method of computer program control in computer systems using pipeline processing
US6353805B1 (en) * 1997-12-31 2002-03-05 Intel Corporation Apparatus and method for cycle accounting in microprocessors
US6212603B1 (en) * 1998-04-09 2001-04-03 Institute For The Development Of Emerging Architectures, L.L.C. Processor with apparatus for tracking prefetch and demand fetch instructions serviced by cache memory
US6275924B1 (en) * 1998-09-15 2001-08-14 Texas Instruments Incorporated System for buffering instructions in a processor by reissuing instruction fetches during decoder stall time
US6230263B1 (en) * 1998-09-17 2001-05-08 Charles P. Ryan Data processing system processor delay instruction
US6859871B1 (en) * 1998-10-19 2005-02-22 Agere Systems Inc. Method and apparatus for reducing power consumption in a pipelined processor
US6691240B1 (en) * 1999-12-30 2004-02-10 Texas Instruments Incorporated System and method of implementing variabe length delay instructions, which prevents overlapping lifetime information or values in efficient way
US6671795B1 (en) * 2000-01-21 2003-12-30 Intel Corporation Method and apparatus for pausing execution in a processor or the like
US6629167B1 (en) * 2000-02-18 2003-09-30 Hewlett-Packard Development Company, L.P. Pipeline decoupling buffer for handling early data and late data
US7139898B1 (en) * 2000-11-03 2006-11-21 Mips Technologies, Inc. Fetch and dispatch disassociation apparatus for multistreaming processors
WO2002077799A1 (en) * 2001-03-22 2002-10-03 Infineon Technologies Ag Program-controlled unit employing a stop instruction
US7096347B2 (en) * 2001-10-25 2006-08-22 Moore Charles R Processor and method of testing a processor for hardware faults utilizing a pipeline interlocking test instruction
US20040186982A9 (en) * 2002-02-06 2004-09-23 Matthew Becker Stalling Instructions in a pipelined microprocessor
US6988187B2 (en) * 2002-03-21 2006-01-17 Sony Computer Entertainment Inc. Counting instructions to skip in superscaler processor
US7185177B2 (en) * 2002-08-26 2007-02-27 Gerald George Pechanek Methods and apparatus for meta-architecture defined programmable instruction fetch functions supporting assembled variable length instruction processors
GB2392742B (en) * 2002-09-04 2005-10-19 Advanced Risc Mach Ltd Synchronisation between pipelines in a data processing apparatus
US7065665B2 (en) * 2002-10-02 2006-06-20 International Business Machines Corporation Interlocked synchronous pipeline clock gating
US7380114B2 (en) * 2002-11-15 2008-05-27 Broadcom Corporation Integrated circuit with DMA module for loading portions of code to a code memory for execution by a host processor that controls a video decoder
US7475399B2 (en) * 2004-01-13 2009-01-06 International Business Machines Corporation Method and data processing system optimizing performance through reporting of thread-level hardware resource utilization
US7469334B1 (en) * 2004-03-30 2008-12-23 Sun Microsystems, Inc. Method and apparatus for facilitating a fast restart after speculative execution
US7257699B2 (en) * 2004-07-08 2007-08-14 Sun Microsystems, Inc. Selective execution of deferred instructions in a processor that supports speculative execution
US7657891B2 (en) * 2005-02-04 2010-02-02 Mips Technologies, Inc. Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency
US7971042B2 (en) * 2005-09-28 2011-06-28 Synopsys, Inc. Microprocessor system and method for instruction-initiated recording and execution of instruction sequences in a dynamically decoupleable extended instruction pipeline
US7490224B2 (en) * 2005-10-07 2009-02-10 International Business Machines Corporation Time-of-life counter design for handling instruction flushes from a queue
US7650487B2 (en) * 2006-03-08 2010-01-19 Sun Microsystems, Inc. Method and structure for coordinating instruction execution in out-of-order processor execution using an instruction including an artificial register dependency
US8683212B2 (en) * 2006-10-06 2014-03-25 Broadcom Corporation Method and system for securely loading code in a security processor
US7444501B2 (en) * 2006-11-28 2008-10-28 Qualcomm Incorporated Methods and apparatus for recognizing a subroutine call
US8627047B2 (en) * 2008-02-15 2014-01-07 International Business Machines Corporation Store data forwarding with no memory model restrictions
JP5431003B2 (ja) * 2009-04-03 2014-03-05 スパンション エルエルシー リコンフィギュラブル回路及びリコンフィギュラブル回路システム
US9086889B2 (en) * 2010-04-27 2015-07-21 Oracle International Corporation Reducing pipeline restart penalty
US20120023314A1 (en) * 2010-07-21 2012-01-26 Crum Matthew M Paired execution scheduling of dependent micro-operations
US10346173B2 (en) * 2011-03-07 2019-07-09 Oracle International Corporation Multi-threaded instruction buffer design
US9164690B2 (en) * 2012-07-27 2015-10-20 Nvidia Corporation System, method, and computer program product for copying data between memory locations
US9367471B2 (en) * 2012-09-10 2016-06-14 Apple Inc. Fetch width predictor
US11036505B2 (en) * 2012-12-20 2021-06-15 Advanced Micro Devices, Inc. Store-to-load forwarding
US10628163B2 (en) * 2014-04-17 2020-04-21 Texas Instruments Incorporated Processor with variable pre-fetch threshold
US9600286B2 (en) * 2014-06-30 2017-03-21 International Business Machines Corporation Latent modification instruction for transactional execution
US9417916B1 (en) * 2014-11-02 2016-08-16 Netronome Systems, Inc. Intelligent packet data register file that prefetches data for future instruction execution
JP6223637B2 (ja) * 2015-05-29 2017-11-01 三菱電機株式会社 シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム
US10175988B2 (en) * 2015-06-26 2019-01-08 Microsoft Technology Licensing, Llc Explicit instruction scheduler state information for a processor
US10719321B2 (en) * 2015-09-19 2020-07-21 Microsoft Technology Licensing, Llc Prefetching instruction blocks
US10002063B2 (en) * 2015-10-20 2018-06-19 International Business Machines Corporation Monitoring performance of multithreaded workloads
US20170139716A1 (en) * 2015-11-18 2017-05-18 Arm Limited Handling stalling event for multiple thread pipeline, and triggering action based on information access delay
CN106406814B (zh) * 2016-09-30 2019-06-14 上海兆芯集成电路有限公司 处理器和将架构指令转译成微指令的方法
GB2563384B (en) 2017-06-07 2019-12-25 Advanced Risc Mach Ltd Programmable instruction buffering

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002149404A (ja) 2000-10-20 2002-05-24 Texas Instr Inc <Ti> マイクロプロセッサにおける連鎖ブレークポイントを設ける方法及び装置
WO2006112190A1 (ja) 2005-04-08 2006-10-26 Matsushita Electric Industrial Co., Ltd. プロセッサ
JP2009110209A (ja) 2007-10-29 2009-05-21 Panasonic Corp 演算処理装置、プロセッサ、プログラム変換装置およびプログラム
JP2011508309A (ja) 2007-12-20 2011-03-10 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド ロックされたオペレーションを実行するためのシステムおよび方法
US20090198980A1 (en) 2008-01-31 2009-08-06 International Business Machines Corporation Facilitating processing in a computing environment using an extended drain instruction

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ライアン, ボブ,Pentiumに挑戦するCyrixのM1,日経バイト 1994年3月1日号 ,日経BP社,第123号,第295頁-第301頁

Also Published As

Publication number Publication date
EP3413191B1 (en) 2020-04-22
GB2563384A (en) 2018-12-19
US11579889B2 (en) 2023-02-14
GB201709064D0 (en) 2017-07-19
US10866810B2 (en) 2020-12-15
KR102571928B1 (ko) 2023-08-29
EP3413191A1 (en) 2018-12-12
GB2563384B (en) 2019-12-25
JP2018206375A (ja) 2018-12-27
US20210089323A1 (en) 2021-03-25
KR20180133794A (ko) 2018-12-17
US20180357065A1 (en) 2018-12-13

Similar Documents

Publication Publication Date Title
JP7211719B2 (ja) プログラマブル命令のバッファリング
TWI626589B (zh) 用以從預行再入的檢查點緩衝器
US8060730B2 (en) Selective MISR data accumulation during exception processing
JP5431308B2 (ja) システムおよびパイプラインプロセッサにおける条件命令実行の加速のためのローカル条件コードレジスタの使用方法
US6760835B1 (en) Instruction branch mispredict streaming
US20060149931A1 (en) Runahead execution in a central processing unit
US8171266B2 (en) Look-ahead load pre-fetch in a processor
JPH10283203A (ja) マルチスレッド・プロセッサにおけるスレッド切換え待ち時間を減少させる方法および装置
US11693661B2 (en) Mechanism for interrupting and resuming execution on an unprotected pipeline processor
US20210294639A1 (en) Entering protected pipeline mode without annulling pending instructions
US20240036876A1 (en) Pipeline protection for cpus with save and restore of intermediate results
US20210326136A1 (en) Entering protected pipeline mode with clearing
JP2008269390A (ja) プロセッサ
US11379233B2 (en) Apparatus and data processing method for transactional memory
US9983932B2 (en) Pipeline processor and an equal model compensator method and apparatus to store the processing result
JPH11345121A (ja) プログラム制御ユニット用の命令取り出し装置および方法
CN111782272B (zh) 一种vliw处理器中重复程序的执行控制方法及装置
JP3798180B2 (ja) プロセッサにおいて命令をバッファリングする方法およびシステム
JP2011060129A (ja) アウトオブオーダー実行プロセッサ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210521

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220427

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220531

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220831

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230112

R150 Certificate of patent or registration of utility model

Ref document number: 7211719

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150