JP5493837B2 - 演算処理装置、情報処理装置及び演算処理装置のパイプライン制御方法 - Google Patents

演算処理装置、情報処理装置及び演算処理装置のパイプライン制御方法 Download PDF

Info

Publication number
JP5493837B2
JP5493837B2 JP2009294196A JP2009294196A JP5493837B2 JP 5493837 B2 JP5493837 B2 JP 5493837B2 JP 2009294196 A JP2009294196 A JP 2009294196A JP 2009294196 A JP2009294196 A JP 2009294196A JP 5493837 B2 JP5493837 B2 JP 5493837B2
Authority
JP
Japan
Prior art keywords
pipeline
unit
instruction
input
stage
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.)
Expired - Fee Related
Application number
JP2009294196A
Other languages
English (en)
Other versions
JP2011134181A (ja
Inventor
英喜 大河原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2009294196A priority Critical patent/JP5493837B2/ja
Priority to US12/926,799 priority patent/US8683181B2/en
Priority to EP10195257A priority patent/EP2348400A1/en
Publication of JP2011134181A publication Critical patent/JP2011134181A/ja
Application granted granted Critical
Publication of JP5493837B2 publication Critical patent/JP5493837B2/ja
Expired - Fee Related 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, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, 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, 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/3861Recovery, e.g. branch miss-prediction, exception handling

Description

本願発明は、演算処理装置、情報処理装置及び演算処理装置のパイプライン制御方法に関する。
例えば以下の技術が知られている。4本の命令パイプラインを有する演算処理装置としてのスーパースカラプロセッサにおいて、リオーダバッファは、命令フェッチ部が主記憶装置から実質的に同時に取り出した4つの命令に関する情報を管理する。取り出された4つの命令は、命令デコード部で同時にデコードされ、命令発行制御部の調停の下、4つのALU(Arithmetic Logical Unit:算術論理ユニット)で並行して実行される。ここで、例えば、一のALUにハードウェア障害が発生すると、障害履歴フラグがセットされる。命令発行制御部は、リオーダバッファで管理されている障害が発生した命令に関する情報に従って、障害の発生のない他の3つのALUを用いて当該命令を再実行させるよう命令フェッチ部、命令デコード部、4つのALUをそれぞれ制御する。
特開2000−339185号公報 特開2007−26392号公報
複数のパイプライン部を有する演算処理装置において何れかのパイプライン部で命令を完了できない場合に当該命令を登録しておき、当該命令を負荷の低いパイプラインに入力する制御では、登録された複数の候補から一の命令を選択する際に処理時間を要していた。
演算処理装置は、入力される第1の命令を実行する第1のパイプライン部と、入力される第2の命令を実行する第2のパイプライン部とを有する。演算処理装置は更に、第1のパイプライン部が第1の命令を完了できない場合又は第2のパイプライン部が第2の命令を完了できない場合に、完了できない第1の命令又は第2の命令を登録する登録部を有する。演算処理装置は更に、第1のパイプライン部と第2のパイプライン部とのうち、負荷が低いパイプライン部を決定する決定部と、登録部に登録された命令を、決定部が決定したパイプライン部に入力する入力部を有する。第1のパイプライン部は、第1の実行ステージで第1の処理を実行する第1の処理手段と、第1の実行ステージの後段の第2の実行ステージで第2の処理を実行する第2の処理手段とを有し、第2のパイプライン部は、第3の実行ステージで第3の処理を実行する第3の処理手段と、第3の実行ステージの後段の第4の実行ステージで第4の処理を実行する第4の処理手段とを有し、決定部は、第1の処理手段及び第2の処理手段がともに使用中であり且つ前記第3の処理手段及び第4の処理手段がともに不使用の場合に、前記第2のパイプライン部を決定し、第3の処理手段及び第4の処理手段がともに使用中であり且つ第1の処理手段及び第2の処理手段がともに不使用の場合に、第1のパイプライン部を決定する。
演算処理装置は、第1のパイプライン部と第2のパイプライン部とのうち負荷が低いパイプライン部を決定する決定部と、登録部に登録された命令を、決定部が決定したパイプライン部に入力する入力部を有する。このため、効率的に複数のパイプライン部の間で負荷分散を図ることができる。
プロセッサの構成例を示すブロック図である。 プロセッサの他の構成例を示すブロック図である。 実施例1によるプロセッサの構成例を示すブロック図である。 実施例2によるプロセッサの構成例を示すブロック図である。 図3又は図4に示される再投入パイプライン決定部の構成例を示す図である。 実施例1又は実施例2によるプロセッサの制御の流れの一例を示すフローチャートである。 図6に示される再投入パイプライン決定動作の詳細の一例を示すフローチャートである。 プロセッサにおける一例の処理の様子を示す図である。 実施例1又は実施例2によるプロセッサにおける一例の処理の様子を示す図である。 実施例3によるプロセッサの構成例を示すブロック図である。 実施例4によるコンピュータの構成例を示すブロック図である。
まず、複数のステージを備えるパイプライン部を有する演算処理装置としてのマイクロプロセッサの構成例につき説明する。当該マイクロプロセッサは、新規処理要求に係る命令(以下「処理要求に係る命令」を単に「命令」と称する)を発行する命令フェッチ部および命令発行部を備え、更にパイプライン部の各種回路リソース状態を管理するリソース管理ユニットを備える。更に、パイプライン部に投入されたが各種リソース状態によって処理が完了できずにアボートした命令を保持する再投入待ちポート部を備える。アボートとは当該命令の実行が停止(中断)状態となることを示す(以下同様)。更に、パイプライン投入命令選択部を備え、パイプライン投入命令選択部は、命令発行部からの新規命令、あるいはアボート要因が解消して再投入可能な再投入待ちポート部の複数の命令の中から一つの命令を選択してパイプライン部に投入する。一般的に、このパイプライン投入命令選択部は、複数の候補から優先度制御を行い一つの命令を選択するため処理時間が要される。
これに対し実施例によれば、パイプライン部に投入された命令が当該パイプライン部でアボートして待ちポート部に登録される際に、当該命令がアボートした時点において負荷が低いパイプライン部を選択する。そして、当該選択されたパイプライン部を、当該命令に対応する付加情報として待ちポート部に記憶しておき、当該命令のアボート要因が解消されてパイプライン部に再投入する際には当該記憶しておいたパイプライン部に再投入する。その結果、複数のパイプライン部の間の負荷分散を行なうことができる。また、アボートした時点で当該命令を再投入するパイプライン部を予め選択しておくため、パイプライン部へ再投入する際に処理時間をかけずに、効率的に負荷分散を図ることができる。
実施例による演算処理装置としてのプロセッサは、同一の命令処理機能を有する第1及び第2のパイプライン部としての複数のパイプライン部を備える。パイプライン部は、各ステージ毎に投入された命令の処理を行う複数の命令実行ステージを有する。ここで、プロセッサとはCPU(Central Processing Unit),MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)及びDSP(Digital Signal Processor)等を含む。当該プロセッサでは、パイプライン部の外部から新規の命令を受けてから完了応答までの間に当該命令がアボートする要因が存在すると、当該命令は複数回パイプライン部に再投入される。ここで投入とは入力を意味し、再投入とは再度の入力を意味する(以下同様)。ここで特定のパイプライン部に負荷が連続して偏っている状況で、ある命令がパイプライン部に投入されてアボート要因が存在して当該命令がアボートし、当該命令のアボート要因が解消した時点で当該命令を再投入する場合を想定する。この場合、上記負荷が連続して偏っているパイプライン部とは異なるパイプライン部を、当該命令を再投入するパイプライン部として予め決定する。予め決定とは、当該命令をパイプライン部に再投入する時点で決定するのではなく、上記アボート要因が存在してアボートした当該命令に係る実行サイクル(又は実行ステージ、以下同様)の間に決定することを意味する。その結果、当該処理のアボート要因が解消して当該命令をパイプライン部に再投入する際には、性能オーバーヘッドなしにパイプライン部の間の負荷を分散させることができる。ここで「性能オーバーヘッドがない」というのは、パイプライン部の間の負荷分散を行なわない従来手法に比べて、本実施例に係るパイプライン負荷分散を行なった場合に、パイプライン部へ投入する命令を選択してパイプライン部へ投入するのに必要な処理時間が、従来手法と変わらないことを意味する。
ここで演算処理装置としてのプロセッサでは、複数のパイプライン部を設け複数の命令を同時実行し、又、各パイプライン部はアウトオブオーダ(Out−of−Order)処理により、実行可能な命令から順次処理していくことで性能向上を図る場合がある。アウトオブオーダ処理とは、依存関係にない複数の命令を、プログラム中での出現順序に関係なく実行する処理を言う。ここで、特にパイプライン部の外部からの命令の投入から応答がなされるまでの処理が必ず固定レイテンシで完了する構成、あるいは処理内容が異なるパイプライン部を有する構成の場合を想定する。このような場合、パイプライン部の間の負荷分散を考慮する必要はなく、命令を実行可能な複数のパイプライン部に複数の命令をそれぞれ同時に投入すれば良い。他方同一処理を行なうパイプライン部を複数有し、パイプライン部の外部からの命令の投入から応答がなされるまでの処理のレイテンシが、パイプライン部の動的な状態によって異なる可変レイテンシの構成では、投入するパイプライン部の選択によって複数のパイプライン部の間で負荷の偏りが生じ得る。
パイプライン部の外部からの命令の投入から応答がなされるまでの処理が固定レイテンシでない例として、例えば主記憶装置としてのメインメモリと複数のキャッシュメモリを有するキャッシュ階層を備えるプロセッサにおけるメモリアクセス処理が挙げられる。この場合、プロセッサの命令発行部からパイプライン部に投入されるメモリアクセス命令に対し、当該命令がアボートする要因が複数存在し得る。当該命令がアボートする要因とは、キャッシュヒット/ミスの状態、TLB(Translation Look-aside Buffer)ヒット/ミスの状態、先行するメモリアクセス命令に係る状態等である。又、当該命令のアボート要因が解消するまでに要する時間も、パイプライン部の動的な状態に依存して変化し得る。このようなプロセッサでは、アボート要因が解消された命令からパイプライン部に再投入され、全てのアボート要因が解消し、当該命令が実行された際に、パイプライン部が当該命令に対する応答を返す。
図1は、上述した如くの、アボート要因によりアボートした命令をパイプライン部へ再投入する動作を行うプロセッサの構成例を示す。当該プロセッサでは、パイプライン部の外部から新規の命令を受ける新規命令発行部110から、パイプライン投入命令選択部111,112を介し、2つのパイプライン部121,122のいずれかに新規の命令が投入される。その結果、当該命令にアボート要因がなければ、当該命令をパイプライン部が実行および完了し、実行が完了するとパイプライン部は処理完了応答を行う。他方パイプライン部121,122に当該命令のアボート要因が存在する場合、パイプライン部121,122は当該アボート要因によってアボートした命令を待ちポート部131,132に登録する。又、このように「アボートした命令を登録する」とは、上記の如く命令がアボート要因によってアボートした際、再投入待ちとなる当該命令に関連する一連の情報を記憶するとともに、アボート要因が解消するまで当該命令をパイプライン部に再投入せずに当該命令を中断することを意味する。その後、待ちポート部131,132に登録された命令のうち、パイプライン部121,122の当該命令に対するアボート要因が解消した命令の中から、再投入命令選択部141,141の各々が命令を選択し、選択した命令を、パイプライン投入命令選択部111,112を介し、パイプライン部121,122に再投入する。
ここで図1の構成例では、制御を簡単にするため、プロセッサが、待ちポート部131,132、再投入命令選択部141,142を、パイプライン部121,122ごとにそれぞれ独立に備えるものとした。このため、パイプライン部の外部からの新規の命令の投入先が特定のパイプライン部に偏っていた場合、再投入の段階でも当該偏った状態が維持される。その結果動的に負荷分散を行なうことができない。
図2は、複数のパイプライン部の間で動的に負荷分散を図るプロセッサの構成例を示す。図2の構成例では、図1の構成例と異なり、待ちポート部130、再投入命令選択部140は2つのパイプライン部121,122の間で共通とされており、待ちポート部130の資源有効活用も可能となる。この構成例では、再投入命令選択部140による制御によって負荷分散を図ることができる。すなわち、再投入命令選択部140がパイプライン部121,122の負荷の状況に応じ、負荷の小さい側のパイプライン部に優先的に命令を再投入することにより、パイプライン部121,122の間の負荷分散を図り得る。しかしながら図2の構成例の場合、再投入命令選択部140が実行する処理量が多く、性能オーバーヘッドが大きいという問題点が想定される。すなわち再投入命令選択部140は待ちポート部130が有する多数のエントリから命令を選択する際に、パイプライン部121,122の間の負荷分散を考慮して再投入を行う命令および再投入を行うパイプラインを選択するため、処理量が多い。
また、プロセッサ以外の負荷分散方式として、例えばネットワーク機器などでは、パケットのヘッダの内容を解析して処理時間を見積り、負荷分散をすることが知られている。しかしながらプロセッサのパイプライン部で解析可能な情報は命令には付加されていないため、プロセッサのパイプライン部の間の負荷分散は、動的なパイプライン部の挙動に基づいて行うことが望ましい。
論理的には、パイプライン部121,122に命令を投入する時点で動的に負荷分散を行うことにより、パイプライン部の間で負荷が均等な理想的な状態で動作させることが可能である。具体的には、パイプライン部の外部からの新規な命令をパイプライン部121,122に投入する新規命令発行部110による負荷分散を行う第1の方法が考えられる。更に、パイプライン部121,122のアボート要因によりアボートした命令をパイプライン部121,122に再投入する再投入命令選択部141,142又は140による負荷分散を行う第2の方法も考えられる。しかしながら第1の方法の場合、新規命令発行部110が命令を投入するパイプライン部を動的に切り替えるため、新規命令発行部110による命令の発行動作に性能オーバーヘッドを伴う。更に新規命令発行部110がパイプライン部121,122の外部からパイプライン部121,122の使用状況をそれぞれ観測して制御を行うため、比較的粗い負荷分散制御となり、リアルタイムな細粒度の制御が行えない場合が想定される。又、上記第2の方法では、再投入命令選択部141,142又は140が待ちポート部131,132又は130の複数のエントリから再投入可能な複数の命令を選択し、更に再投入するパイプライン部を動的に決定する。このため命令を再投入する動作に性能オーバーヘッドが生ずる。このように、新規の命令の発行時あるいは命令のパイプライン部への再投入時、動的なパイプライン使用状況に応じてパイプライン部の間で負荷を分散することは理論的には可能である。しかしながら現実的には性能面、制御の複雑さ、ハードウェアの実現性の面等における問題点が想定される。特に、新規命令発行部110及び再投入命令選択部141,142又は140は高性能であることが求められる。このため、パイプライン部121,122の間の負荷分散を考慮しない、比較的単純な制御であっても、新規命令発行部110、あるいは再投入命令選択部141,142又は140の動作の高速化は困難と考えられる。したがってパイプライン部121,122の間の負荷分散の場合における性能オーバーヘッドを許容できない場合が多いと考えられる。
実施例によれば、パイプライン部の間の負荷分散を行なうために、パイプライン部がある命令を実行している間に、当該命令を実行した結果、アボート要因の存在によりアボートした場合に当該命令を再投入するパイプライン部を決定する。すなわち実施例では、当該命令がアボートした時、最近のパイプライン部の使用状況に基づいてパイプライン部の間の負荷の偏りを検出した場合、負荷の低い側のパイプライン部を、当該命令の再投入先として決定する。命令の再投入時にどのパイプライン部を使用するかを示す情報は、後述するように、例えば待ち合わせポート部が命令毎の情報として保持する。
実施例では、命令を再投入するパイプライン部を決定する際、当該命令がアボートした時の最近の新規の命令あるいはパイプライン部の使用率の状況を参照することができる。例えば、パイプライン部が有するパイプライン段の段数の範囲で直近の状況からパイプライン部の負荷の状況を判断(より具体的にはパイプライン部の間の負荷の偏りを検出)することができる。そのために、パイプライン部が実行中の命令に関する制御情報を流用することができ、その場合にはハードウェア資源の追加はほとんど必要ない。あるいはパイプライン部が有するパイプライン段の段数の範囲を超え、過去にさかのぼった履歴からパイプライン部の使用状況を判断することもできる。この場合、別途パイプライン部の使用状況を記録する履歴テーブルを用意して利用することにより、より大局的な観点から負荷分散を行なうことが可能になる。
図3は実施例1による演算処理装置としてのプロセッサの構成を示す。図3のプロセッサは、与えられた命令に応じてデータ処理を実行する第1及び第2のパイプライン部としてのパイプライン部21,22と、パイプライン部21,22の外部から与えられる新規な命令をパイプライン部21,22に投入する新規命令発行部10とを有する。新規命令発行部10は、例えば新規命令の要求元にしたがって命令を投入すべきパイプライン部を決定したり、あるいは同時発行する新規命令の数にしたがって命令を投入すべきパイプライン部を決定する。当該プロセッサは更に、パイプライン投入命令選択部11,12を有する。パイプライン投入命令選択部11は新規命令発行部10から入力された命令と、再投入命令選択部41から入力された命令とのうち、何れかを選択しパイプライン投入命令選択部11を介してパイプライン部21に投入する。同様にパイプライン投入命令選択部12は新規命令発行部10から入力された命令と、再投入命令選択部42から入力された命令とのうち、何れかを選択しパイプライン投入命令選択部11を介してパイプライン部21に投入する。ここで一例として、パイプライン投入命令選択部11、12は新規の命令よりも、アボート要因の解消によって再投入される命令の方を優先し、再投入される命令がない場合にのみ新規の命令をパイプライン部21,22に投入するようにすることができる。但しこれはあくまで一例であり、パイプライン投入命令選択部11、12による命令の選択方法は当該方法に限定されることはない。
パイプライン部21は、第1の処理手段としてのパイプライン段(パイプラインステージ)21−1(1段目),第の処理手段としてのパイプライン段21−2(2段目),及びパイプライン段21−3(3段目)を有する。新規命令発行部10からパイプライン部21に投入された命令は、一の実行サイクルでパイプライン段21−1に実行され、次の実行サイクルでパイプライン段21−2に実行され、更に次の実行サイクルでパイプライン段21−3(3段目)に実行される。そして更に次の実行サイクルで当該命令の実行結果がパイプライン段21−3から出力される。各パイプライン段21−1,21−2,21−3が実行する処理内容の例につき、図10とともに後述する。
同様にパイプライン部22は、第3の処理手段としてのパイプライン段22−1(1段目),第4の処理手段としてのパイプライン段22−2(2段目),及びパイプライン段22−3(3段目)を有する。新規命令発行部10からパイプライン部22に投入された命令は、一の実行サイクルでパイプライン段22−1に実行され、次の実行サイクルでパイプライン段22−2に実行され、更に次の実行サイクルでパイプライン段22−3(3段目)に実行される。そして更に次の実行サイクルで当該命令の実行結果がパイプライン段22−3から出力される。パイプライン段22−1,22−2,22−3は、夫々上記パイプライン段21−1,21−2,21−3と同様の構成を有する。したがって命令をパイプライン部21,22のいずれに投入しても同様の実行結果を得ることができる。
上記パイプライン段21−1,21−2,21−3、及びパイプライン段22−1,22−2,22−3の各々は図示の如く有効ビットvalid bitを有する。有効ビットvalid bitは、当該パイプライン段が使用中か否かを示す情報であり、使用中の場合は値“1”を有し、不使用の場合は値“0”を有する。又、上記パイプライン段21−2(2段目),21−3(3段目),パイプライン段22−2(2段目),22−3(3段目)は、各々、再投入パイプラインID(pipeline-ID)を有する。再投入パイプラインIDは、当該パイプライン段で実行中の命令の最終段21−3又は22−3での実行結果でアボート要因が存在した場合に、後に当該命令のアボート要因が解消してパイプライン再投入する際のパイプライン部を示す情報であり、値“0”がパイプライン部21を示し、値“1”がパイプライン部22を示す。
実施例1のプロセッサは更に、パイプライン段21−1(1段目)及びパイプライン段22−1(1段目)で実行中の命令がアボートしてパイプライン部に再投入される際の、上記、再投入パイプラインIDを決定する、決定部としての再投入パイプライン決定部50を有する。再投入パイプライン決定部50は決定した再投入先のパイプライン部を示す情報を、パイプライン段21−2(2段目)及びパイプライン段22−2(2段目)に、上記再投入パイプラインIDとして設定する。パイプライン段21−2に設定された再投入パイプラインIDは、パイプライン部21の実行サイクルに同期して、パイプライン段21−2で実行中の命令とともに次のパイプライン段21−3に伝達される。同様にパイプライン段22−2に設定された再投入パイプラインIDは、パイプライン部22の実行サイクルに同期して、パイプライン段22−2で実行中の命令とともに次のパイプライン段22−3に伝達される。
実施例1のプロセッサは更に、アボートした命令を保持しておく、登録部としての待ちポート部31,32を有し、上記の如く再投入パイプライン決定部50により決定されたアボートした命令の再投入先のパイプライン部の別に応じて待ちポート部31或いは32に当該命令を登録する。再投入パイプライン決定部50が再投入先のパイプライン部としてパイプライン部21を決定した場合、パイプライン部21又は22から出力される当該命令は待ちポート部31に登録される。他方、再投入パイプライン決定部50が再投入先のパイプライン部としてパイプライン部22を決定した場合、パイプライン部21又は22から出力される当該命令は待ちポート部32に登録される。より具体的には、上記の如く再投入パイプライン決定部50によってパイプライン段21−2に設定され、次のサイクルに命令とともにパイプライン段21−3に伝達された再投入パイプラインIDがパイプライン部21を示す場合、パイプライン段21−3で当該命令がアボートしたら待ちポート部31に登録される。他方、上記の如く再投入パイプライン決定部50によってパイプライン段21−2に設定され、次のサイクルに命令とともにパイプライン段21−3に伝達された再投入パイプラインIDがパイプライン部22を示す場合、パイプライン段21−3で当該命令がアボートしたら待ちポート部32に登録される。同様に再投入パイプライン決定部50によってパイプライン段22−2に設定され、次のサイクルに命令とともにパイプライン段22−3に伝達された再投入パイプラインIDがパイプライン部21を示す場合、パイプライン段22−3で当該命令がアボートしたら待ちポート部31に登録される。他方、上記の如く再投入パイプライン決定部50によってパイプライン段22−2に設定され、次のサイクルに命令とともにパイプライン段22−3に伝達された再投入パイプラインIDがパイプライン部22を示す場合、パイプライン段22−3で当該命令がアボートしたら待ちポート部32に登録される。
更に実施例1のプロセッサは、待ちポート部31に登録された命令に係るアボート要因が解消した旨の信号を受信すると、当該命令を、パイプライン投入命令選択部11を介してパイプライン部21に再投入する、入力部としての再投入命令選択部41を有する。更に実施例1のプロセッサは、待ちポート部32に登録された命令に係るアボート要因が解消した旨の信号を受信すると、当該命令を、パイプライン投入命令選択部12を介してパイプライン部22に再投入する、入力部としての再投入命令選択部42を有する。
上述した図1の構成例では、パイプライン部の外部からの新規の命令が投入されるパイプライン部ごとに待ちポート部、再投入命令選択部が設けられており、パイプライン部の間の負荷分散は行うことはできない。これに対し、図3に示す実施例1のプロセッサ構成によれば、再投入パイプライン決定部50が、各パイプライン部21,22のパイプライン段の有効ビットvalid bitの情報を得、各パイプライン部21,22の使用状況を得る。このようにして再投入パイプライン決定部50は各パイプライン部21,22の間の負荷の偏りを検出し、特定のパイプライン部への負荷の偏りが続いている場合には、再投入先のパイプライン部として、他のパイプライン部を決定する。例えばパイプライン部21に負荷が偏った状態が続いていることを検出した場合、再投入パイプライン決定部50は再投入先のパイプライン部として、パイプライン部22を決定する。同様にパイプライン部22に負荷が偏った状態が続いていることを検出した場合、再投入パイプライン決定部50は再投入先のパイプライン部として、パイプライン部21を決定する。他方、特に特定のパイプライン部に負荷が偏った状態が続いていることを検出しなかった場合、再投入パイプライン決定部50は、再投入先のパイプライン部として、当初当該命令が投入されたパイプライン部を決定する。例えば再投入パイプライン決定部50が、当該命令が当初投入されたパイプライン部に負荷が偏っていることを検出した場合、当該命令の再投入先として他のパイプライン部を決定する。すなわちこの場合、当該命令につき、使用するパイプライン部を変更する。
上記実施例1のプロセッサによれば、パイプライン部21,22の間の負荷分散の際に行われるパイプライン部の選択を、ある命令がパイプライン部において実行され当該命令のアボートが検出されるまでの間に行う。その結果、新規命令発行部10による新規の命令の発行(投入)動作及び再投入命令選択部41,42による再投入動作は、当該パイプライン部21,22の間の負荷分散を行わない場合と同様であるため、特に性能オーバーヘッドは発生しない。
図4は実施例2によるプロセッサの構成を示す。図4のプロセッサ中、新規命令発行部10,パイプライン部21,22、及び再投入パイプライン決定部50は、夫々上述した実施例1のプロセッサにおける新規命令発行部10,パイプライン部21,22、及び再投入パイプライン決定部50と同様の構成を有する。
実施例2のプロセッサは、パイプライン部21,22でアボートした命令を登録する、全てのパイプラインで共有された登録部としての待ちポート部30を有する。実施例2のプロセッサの場合、当該アボートした命令とともに、当該命令の再投入先のパイプライン部の情報(再投入パイプラインID)が、当該命令に対応付けられて待ちポート部30に登録される。すなわち実施例2のプロセッサの場合、再投入パイプライン決定部50が決定する再投入先のパイプライン部に関わらず、パイプライン部21又は22から出力される当該命令は待ちポート部30に登録される。より具体的には、上記の如く再投入パイプライン決定部50によりパイプライン段21−2に設定され、次のサイクルに命令とともにパイプライン段21−3に伝達された再投入パイプラインIDは、パイプライン段21−3で当該命令がアボートしたら、当該命令に対応付けられて、待ちポート部30に登録される。同様に再投入パイプライン決定部50によりパイプライン段22−2に設定され、次のサイクルにパイプライン段22−3に伝達された再投入パイプラインIDも、パイプライン段22−3で当該命令がアボートしたら、当該命令に対応付けられて、待ちポート部30に登録される。
更に実施例2のプロセッサは、待ちポート部30に登録された命令に係るアボートの要因が解消した旨の信号を外部から受信すると、当該命令を、パイプライン投入命令選択部11、12を介して夫々パイプライン部21、22に再投入する、入力部としての再投入命令選択部43、44を有する。より具体的には、再投入命令選択部43は以下の動作を行う。待ちポート部30に登録された、アボートの要因が解消した命令のうち、再投入パイプラインIDがパイプライン部21を示す命令を選択し、パイプライン投入命令選択部11を介してパイプライン部21に再投入する。同様に再投入命令選択部44は以下の動作を行う。待ちポート部30に登録された、アボートの要因が解消した命令のうち、再投入パイプラインIDがパイプライン部22を示す命令を選択し、パイプライン投入命令選択部12を介してパイプライン部22に再投入する。
実施例2のプロセッサは、前述した図2のプロセッサ同様、待ちポート部30が複数パイプライン21,22で共通とされている点が、図3とともに上述した実施例1のプロセッサと異なる。実施例2のプロセッサも実施例1のプロセッサ同様、再投入パイプライン決定部50がパイプライン部21,22の間の負荷の偏りを検出する。そして特定のパイプライン部への負荷の偏りが続いている場合には、再投入パイプライン決定部50は以下の動作を行う。再投入パイプライン決定部50は命令につき待ちポート30に登録する際、待ちポート部30に登録する再投入パイプラインIDが示す再投入先のパイプライン部として、他のパイプライン部を決定する。例えば再投入パイプライン決定部50が、当該命令が当初投入されたパイプライン部に負荷が偏っていることを検出した場合、当該命令の再投入先として他のパイプライン部を決定する。すなわちこの場合、当該命令につき、使用するパイプライン部を変更する。
実施例1のプロセッサでは待ちポート部31,32がパイプライン部21,22のそれぞれに対し独立に設けられており、アボートした命令の登録を行なう待ちポート部31,32を切り替えることでパイプライン部21,22の間の負荷分散を実現する。これに対し実施例2のプロセッサでは待ちポート部30がパイプライン部21,22で共通である。このため実施例2のプロセッサでは、パイプライン部21,22は、アボートした命令を登録する際、当該命令に対応付けて、待ちポート部30に再投入パイプライン情報IDを登録する。そして再投入命令選択部43は、待ちポート部30が有する、アボート要因が解消した命令のエントリ中、再投入パイプラインIDがパイプライン部21を示すエントリから一つの命令を選択し、パイプライン投入命令選択部11を介してパイプライン部21に再投入する。同様に再投入命令選択部44は、待ちポート部30が有する、アボート要因が解消した命令のエントリ中、再投入パイプラインIDがパイプライン部22を示すエントリから一つの命令を選択し、パイプライン投入命令選択部12を介してパイプライン部22に再投入する。
このようにして実施例2のプロセッサにおいてパイプライン部21、22の間の負荷分散が図られる。又、実施例2のプロセッサは実施例1のプロセッサ同様、パイプライン部21,22の間の負荷分散の際に行われるパイプライン部の選択を、ある命令がパイプライン部において実行されてアボートが検出されるまでの間に実行する。したがって新規命令発行部10による新規の命令の発行(投入)動作及び再投入命令選択部43,44による再投入動作は、当該パイプライン部21,22の間の負荷分散を行わない場合と同様の内容で済み、性能オーバーヘッドが小さく済む。すなわち再投入命令選択部43は、待ちポート部30に登録された、アボート要因が解消された命令中、再投入パイプラインIDがパイプライン部21を示す命令から一つの命令を選択すれば良い。当該選択は、例えば命令の登録順に行うことができる。同様に再投入命令選択部44は、待ちポート部30に登録された、アボート要因が解消された命令中、再投入パイプラインIDがパイプライン部22を示す命令の中から一つの命令を選択すれば良い。当該選択は上記同様、例えば命令の登録順に行うことができる。このため、図2のプロセッサの場合に再投入命令選択部140が待ちポート部130に登録された命令から、アボート要因が解消された命令をパイプライン部の数より少ない範囲で選択し、且つ再投入先のパイプライン部を選択する構成に比して、性能オーバーヘッドが小さく済むし、さらに負荷分散を行なうこともできる。
次に図5とともに、図3,図4とともに上述した実施例1,実施例2のプロセッサにおける再投入パイプライン決定部50の構成例を説明する。図5に示す如く、再投入パイプライン決定部50は、AND(論理積)ゲート53、57,NOT(否定)ゲート51,52,55,56及びXOR(排他的論理和)ゲート54,58を有する。パイプライン部21の1−2段目のパイプライン段21−1,21−2の有効ビットvalid bitは、ANDゲート53に入力されるとともに、NOTゲート55,56に入力される。パイプライン部22の1−2段目のパイプライン段22−1,22−2の有効ビットvalid bitは、ANDゲート57に入力されるとともに、NOTゲート51,52に入力される。又、NOTゲート51、52の出力はANDゲート53に入力され、NOTゲート55、56の出力はANDゲート57に入力される。更に、ANDゲート53の出力はXORゲート54に入力され、ANDゲート57の出力はXORゲート58に入力される。又、XORゲート54の他の入力として、“0”が入力され、XORゲート58の他の入力として、“1”が入力される。
上記構成の再投入パイプライン決定部50は、各々がパイプライン段21−1,21−2,21−3、パイプライン段22−1,22−2,22−3という三段構成の2つのパイプライン部21,22の間の負荷の偏りを検出する。図5の例では、再投入パイプライン決定部50は、パイプライン部21,22の各々の1段目のパイプライン段21−1,22−1及び2段目のパイプライン段21−2,22−2の有効ビットvalid bitの情報を使用する。
ここでパイプライン部21のパイプライン段21−1,21−2の有効ビットvalid bitがともに“1”、すなわち使用中である場合、パイプライン部21は連続する2実行サイクルに亘って使用中であることを意味する。この場合には、当該パイプライン部21の負荷が高いと判断できる。同様にパイプライン部22のパイプライン段22−1,22−2の有効ビットvalid bitがともに“1”、すなわち使用中である場合、パイプライン部22では連続する2実行サイクルに亘って使用中であることを意味する。この場合には、当該パイプライン部22の負荷が高いと判断できる。
逆にパイプライン部21のパイプライン段21−1,21−2の有効ビットvalid bitがともに“0”、すなわち不使用の場合、パイプライン部21では連続する2実行サイクルに亘って不使用であることを意味し、当該パイプライン部21の負荷が低いと判断できる。同様にパイプライン部22のパイプライン段22−1,22−2の有効ビットvalid bitがともに“0”、すなわち不使用の場合、パイプライン部22では連続する2実行サイクルに亘って不使用であることを意味し、当該パイプライン部22の負荷が低いと判断できる。再投入パイプライン決定部50はこのような判断方法に基づき、各パイプライン部の2段のパイプライン段の使用状態を基に、パイプライン部21,22の間の負荷の偏りを検出し、検出結果に応じ、再投入パイプラインIDを設定する構成を有する。
より詳細には、図5の再投入パイプライン決定部50は以下の動作を行う。まず、例として、パイプライン部21の1−2段目のパイプライン段21−1,21−2が使用中でパイプライン部22の1−2段目のパイプライン段22−1,22−2が不使用であり、パイプライン部21に負荷が偏っている場合を想定する。この場合、パイプライン段21−1,21−2の有効ビットvalid bitがともに“1”であり且つパイプライン段22−1,22−2の有効ビットvalid bitがともに“0”となる。パイプライン段22−1,22−2の有効ビットvalid bit“0”はNOTゲート51,52で反転されて“1”となるため、ANDゲート53の4つの入力は全て“1”となる。その結果ANDゲート53は“1”を出力し、XORゲート54の2つの入力は“0”、“1”となり“1”を出力する。当該出力“1”により、パイプライン段21−2の再投入パイプラインIDとして、“1”が設定される。又、この場合、パイプライン段21−1,21−2の有効ビットvalid bit“1”はNOTゲート55,56で反転されて“0”となるため、ANDゲート57の4つの入力は、全て“0”となる。その結果ANDゲート57は“0”を出力し、XORゲート58の2つの入力は“0”、“1”となりXORゲート58も“1”を出力する。当該出力“1”により、パイプライン段22−2の再投入パイプラインIDとしても、“1”が設定される。すなわちこの場合パイプライン部21に負荷が偏っているため、再投入パイプライン決定部50は再投入先として、パイプライン部22(再投入パイプラインID=1)を決定し、再投入パイプラインID=1をパイプライン段21−2,22−2の各々に設定する。
次に、パイプライン部21の1−2段目のパイプライン段21−1,21−2が不使用でパイプライン部22の1−2段目のパイプライン段22−1,22−2が使用中であり、パイプライン部22に負荷が偏っている場合を想定する。この場合にはパイプライン段21−1,21−2の有効ビットvalid bitがともに“0”であり且つパイプライン段22−1,22−2の有効ビットvalid bitがともに“1”となる。パイプライン段22−1,22−2の有効ビットvalid bit“1”はNOTゲート51,52で反転されて“0”となるため、ANDゲート53の4つの入力は、全て“0”となる。その結果ANDゲート53は“0”を出力し、XORゲート54の2つの入力は“0”、“0”となり、XORゲート54は“0”を出力する。当該出力“0”により、パイプライン段21−2の再投入パイプラインIDとして、“0”が設定される。又、この場合、パイプライン段21−1,21−2の有効ビットvalid bit“0”はNOTゲート55,56で反転されて“1”となるため、ANDゲート57の4つの入力は、全て“1”となる。その結果ANDゲート57は“1”を出力し、XORゲート58の2つの入力は“1”、“1”となり、XORゲート58も“0”を出力する。当該出力“0”により、パイプライン段22−2の再投入パイプラインIDとしても、“0”が設定される。すなわちこの場合パイプライン部22に負荷が偏っているため、再投入パイプライン決定部50は再投入先として、パイプライン部21(再投入パイプラインID=0)を決定し、再投入パイプラインID=0をパイプライン段21−2,22−2の各々に設定する。
すなわち図5の再投入パイプライン決定部50は。パイプライン部21の1−2段目のパイプライン段21−1,21−2がいずれも使用中であり、パイプライン部22の1−2段目のパイプライン段22−1,22−2がいずれも不使用の場合、以下の動作を行う。パイプライン部21,パイプライン部22の各々に対し、再投入先としてパイプライン部22を設定する。逆にパイプライン部21の1−2段目のパイプライン段21−1,21−2がいずれも不使用であり、パイプライン部22の1−2段目のパイプライン段22−1,22−2がいずれも使用中の場合、以下の動作を行う。パイプライン部21,パイプライン部22の各々に対し、再投入先としてパイプライン部21を設定する。
以上、パイプライン段21−1,21−2のいずれもが使用中且つパイプライン段22−1,22−2のいずれもが不使用の場合、及びパイプライン段21−1,21−2のいずれもが不使用且つパイプライン段22−1,22−2のいずれもが使用中の場合について説明した。次に、当該2つの場合以外の場合について説明する。当該2つの場合以外の場合、ANDゲート53の4つの入力が全て“1”とはならず、又、ANDゲート57の4つの入力が全て“1”とはならない。したがってANDゲート53、57のいずれもが“0”を出力する。その結果、XORゲート54の2つの入力は“0”、“0”となり、“0”を出力する。他方、XORゲート58の2つの入力は“0”、“1”となり、“1”を出力する。したがってパイプライン部21のパイプライン段21−2には“0”(パイプライン部21を示す再投入パイプラインID)が設定され、パイプライン部22のパイプライン段22−2には“1”(パイプライン部22を示す再投入パイプラインID)が設定される。その結果、当初パイプライン部21に投入された命令は同じパイプライン部21に再投入され、当初パイプライン部22に投入された命令は同じパイプライン部22に再投入される。すなわちこの場合、再投入される命令は、当初投入されたパイプライン部に再投入される。すなわちこの場合には特にパイプライン部21,22の間の負荷の偏りは無いと判断され、命令を再投入する際の再投入先のパイプライン部を、当初当該命令が投入されたパイプライン部から変更しない。
尚、図3、4、5とともに説明した実施例1,2は、2つのパイプライン部21,22を有し、各パイプライン部は3段のパイプライン段21−1,21−2,21−3,22−1,22−2,22−3を有する。しかしながらこの例に限らず、パイプライン部の個数は3以上でも良いし、各パイプライン部が有するパイプライン段の段数も4段以上でもよいし、2段でも良い。又再投入パイプライン決定部50においてパイプライン部21,22の間の負荷の偏りを検出する方法も図5の構成を使用する例に限られない。例えば図5に示す再投入パイプライン決定部50の回路構成は、同様の機能を有する他の回路構成に置き換えることが可能である。
図6は、図3、図4とともに上述した実施例1,実施例2のプロセッサにおける動作の流れの一例を示すフローチャートである。図6中、図3、図4に示されるパイプライン投入命令選択部11,12は新規の命令又は再投入する命令から一命令を選択してパイプライン部21、22に投入する(ステップS1のYES)。新規の命令と再投入する命令とが同時に発生した場合、選択されなかった命令につき、次のサイクルに再度パイプライン投入を試みる(ステップS1のNO)。パイプライン部21,22に投入された命令(ステップS1のYES)は、パイプライン部21、22において実行されると同時に、再投入パイプライン決定部50がパイプライン部21,22の負荷の状態に応じて当該命令の再投入先のパイプライン部を決定する(ステップS2)。パイプライン部21,22による命令の実行の結果、該当命令にアボート要因が存在しない場合(ステップS3のYES),完了報告の信号を出力する(ステップS4)。パイプライン部21,22による実行の結果、当該命令にアボート要因が存在してアボートした場合(ステップS3のNO),上記ステップS2で決定しておいた再投入先のパイプライン部に対応した待ちポート31,32、あるいは待ちポート部30に当該命令を登録する(ステップS5)。
尚ここで上記アボートした命令に関し、図3の実施例1では、ステップS2において上記再投入先としてパイプライン部21を選択していた場合には、ステップS5においては待ちポート31に当該命令を登録する。同様に、ステップS2において上記再投入先としてパイプライン部22を選択していた場合には、ステップS5においては待ちポート32に当該命令を登録する。他方図4の実施例2では、ステップS2において上記再投入先としてパイプライン部21を選択していた場合には、アボートした命令と対応づけて再投入先のパイプライン部の情報としてパイプライン部21を示す情報を待ちポート30に登録する。同様に、ステップS2において上記再投入先としてパイプライン部22を選択していた場合には、アボートした命令と対応づけて再投入先のパイプライン部の情報としてパイプライン部22を示す情報を待ちポート30に登録する。
次に、ステップS5で登録した命令に対するアボート要因が解消し、その旨の信号を受信すると(ステップS6のYES)、再投入命令選択部41,42あるいは43,44が当該命令を、パイプライン投入命令選択部11、12を介してパイプライン部21,22に再投入する(ステップS7)。ここで図3の実施例1の場合、ステップS7では以下の動作がなされる。上記命令が待ちポート部31に登録された場合、再投入命令選択部41が当該命令を、パイプライン投入命令選択部11を介してパイプライン部21に投入する。他方、上記命令が待ちポート部32に登録された場合、再投入命令選択部42が当該命令を、パイプライン投入命令選択部12を介してパイプライン部22に再投入する。
又、図4の実施例2の場合、ステップS7では以下の動作がなされる。上記命令とともに当該命令に対応付けて待ちポート30に登録された再投入先のパイプライン部の情報がパイプライン部21を示す場合、再投入命令選択部43が当該命令を、パイプライン投入命令選択部11を介してパイプライン部21に再投入する。上記命令とともに当該命令に対応付けて待ちポート30に登録された再投入先のパイプライン部の情報がパイプライン部22を示す場合、再投入命令選択部44が当該命令を、パイプライン投入命令選択部12を介してパイプライン部22に再投入する。
図7は図6中、再投入パイプライン決定部50が実行する、ステップ2の再投入先のパイプライン部を決定する動作の流れの一例を示すフローチャートである。ステップS41で、一のパイプライン部の1段目のパイプライン段が使用中の際、他のパイプライン部の1段目のパイプライン段も使用中か否かを判断する(ステップS42)。ここでパイプライン部が3個以上の場合を想定すると、ステップS42では、他の全てのパイプライン部の1段目のパイプライン段も使用中か否かを判断する。ステップS42の判断結果がYESの場合、すなわち他のパイプライン部も使用中の場合、ステップS43に移行する。ステップS43では、当該一のパイプライン部につき、再投入先のパイプライン部として、当該一のパイプライン部を決定する。上記の如く他のパイプライン部も使用中の場合、複数のパイプライン部の間で負荷の偏りが無く負荷分散の余地がないと判断できるからである。
他方、ステップS42の判断結果がNOの場合、ステップS44に移行する。より具体的には、他のパイプライン部が不使用の場合、ステップS44に移行する。この場合は空いている(不使用の)パイプライン部が存在し、複数のパイプライン部の間で負荷の偏りがあると判断できる。ステップS44では、1実行サイクル前のパイプライン部にも同様の負荷の偏りがあるか否かを判断する。1実行サイクル前のパイプライン部の状態は、例えば現在の実行サイクルにおける2段目のパイプライン段の使用状態によって得ることができる。又、上記「1実行サイクル前にも同様の負荷の偏りがある」とは、例えば、1実行サイクル前のパイプライン部においても以下の状態であったことを意味する。1実行サイクル前も上記同様に、当該一のパイプライン部が使用中であり、且つ、他のパイプライン部は不使用の状態である。すなわちこの場合、当該一のパイプライン部は連続する2実行サイクルに亘って使用中であり、他のパイプライン部は上記連続する2実行サイクルに亘って不使用である。
ステップS44の判断結果がNOの場合、すなわち1実行サイクル前のパイプライン部には同様の負荷の偏りがない場合、上記ステップS43に移行する。他方、ステップS44の判断結果がYESの場合、すなわち1実行サイクル前のパイプライン部にも同様の負荷の偏りがある場合、ステップS45に移行する。ステップS45では、当該一のパイプライン部につき、再投入先のパイプライン部として、現在の実行サイクル及び1実行サイクル前に不使用であったパイプライン部を再投入先のパイプライン部として決定する。ここでは、例えば現在の実行サイクルにおいて1乃至2段目のパイプライン段が不使用であった他のパイプライン部を、上記現在の実行サイクル及び1実行サイクル前に不使用であったパイプライン部として得ることができる。当該他のパイプライン部は連続する2実行サイクルに亘って不使用であり、上記一のパイプライン部との間で負荷の偏りがあると判断できるからである。
次に図8,9とともに、実施例によるプロセッサの動作例について説明する。図8は特に複数のパイプライン部の間の負荷の調整を行わない場合の動作例を示し、図9は、同様の条件における、図5に示す再投入パイプライン決定部50を使用した場合の動作例を示す。但し図9の例では説明の便宜上図5の例と異なり、パイプライン部が有するパイプライン段の段数を3段ではなく、4段としている。
図8,9では、右方向が時間軸(実行サイクル)を示し、下方向が新規の命令1〜10を示す。尚、この動作例の場合、パイプライン投入命令選択部11、12は新規の命令よりも、アボート要因の解消によって再投入される命令の方を優先し、再投入される命令がない場合にのみ新規の命令をパイプライン部21,22に投入する。又、図8,9中、パイプライン部21の1段目のパイプライン段を0−1,2段目のパイプライン段を0−2,3段目のパイプライン段を0−3(以下同様)として示す。同様にパイプライン部22の1段目のパイプライン段を1−1,2段目のパイプライン段を1−2,3段目のパイプライン段を1−3(以下同様)として示す。更に、同じ命令が再投入される場合、下線を付す。又、パイプライン部による命令の実行の結果アボート要因が存在して当該命令が待ちポート部に登録される場合の当該命令の再投入先を⇒0(再投入先がパイプライン部21)、⇒1(再投入先がパイプライン部22)として示す。
図8,9の動作例では、新規の命令1,2は、2つのパイプライン部21,22に分散して投入されるが、新規の命令3以降は、パイプライン部21に偏って投入される。又、第8実行サイクル以降、アボート要因が解消され、待ちポート部に登録された命令が再投入される。
図8の動作例ではパイプライン部21,22の間の負荷の調整はなされず、新規に命令が投入されたパイプライン部と同じパイプライン部に、待ちポート部に登録された当該命令が再投入される。そのため、命令3以降は、パイプライン部21に新規に投入されるとともに、待ちポート部に登録された当該命令が同じパイプライン部21に再投入される。その結果第9〜14実行サイクルの6実行サイクルの間は、パイプライン部21は再投入される命令3〜8に使用され、その間新規に命令の投入ができない。そして上記命令3〜8の再投入が済んだ後の第15〜16実行サイクルにて、新規の命令9,10の投入がなされる。
一方、図9の動作例では、図5の再投入パイプライン決定部50により、パイプライン部21,22の間の負荷の調整がなされる。その結果、パイプライン部21への負荷の偏りが検出され、待ちポート部に登録された命令4〜8はパイプライン部22に再投入される。その結果、第10実行サイクル以降パイプライン部21は再投入される命令の実行には使用されない状態となり、新規の命令9,10は、第10〜11実行サイクルでパイプライン部21に投入される。ここで上記の如く、図8の動作例の場合には、上記の如く新規の命令9,10は、第15〜16実行サイクルでパイプライン部21に投入される。他方図9の動作例の場合、実施例の再投入パイプライン決定部50によるパイプライン部21,22の間の負荷の調整の結果、新規の命令9,10を、5実行サイクル分早く投入することができる。よって実施例の再投入パイプライン決定部50によるパイプライン部21,22の間の負荷の調整の結果、効果的な負荷分散が図れ、パイプライン部21,22の使用効率を向上し得る。
次に図10とともに、実施例3によるプロセッサの説明を行う。実施例3のプロセッサは、 メモリ(図示を省略)から命令を取り出す命令フェッチ部1、取り出した命令を解読する命令解読部2,解読した命令をパイプライン部へ投入する命令発行部3を有する。命令発行部3は図3,図4の上記新規命令発行部10に対応する。
実施例3のプロセッサは更に、固定小数点演算を実行する固定小数点演算パイプライン部4、浮動小数点演算を実行する浮動小数点演算パイプライン部5、及び一次キャッシュアクセスパイプライン部6を有する。一次キャッシュアクセスパイプライン部6は、図3,図4のパイプライン部21,22に対応する。ここで命令発行部3は命令解読部2が解読した命令の種別に応じて、固定小数点演算パイプライン部4、浮動小数点演算パイプライン部5、又は一次キャッシュアクセスパイプライン部6を選択し、当該選択したパイプライン部に新規の命令を投入する。より具体的には、命令発行部3は固定小数点演算パイプライン部4に対し新規の固定小数点演算命令を投入し、浮動小数点演算パイプライン部5に対し新規の浮動小数点演算命令を投入し、一次キャッシュアクセスパイプライン部6に対し新規のメモリアクセス命令を投入する。又、図10では、パイプライン部21又は22としての1つの一次キャッシュアクセスパイプライン部6のみを示し、他のパイプライン部22又は21としてのパイプライン部の図示を省略する。
実施例3のプロセッサは更に、一次キャッシュアクセス再投入命令待ちポート部8及び命令完了部7を有する。一次キャッシュアクセスパイプライン部6は与えられた命令(新規メモリアクセス命令)の実行を完了すると、メモリアクセス命令完了報告を示す信号を命令完了部7に入力する。又一次キャッシュアクセスパイプライン部6は、アボート要因によってメモリアクセス命令の完了報告を返せない場合、一次キャッシュアクセス再投入命令待ちポート部8にメモリアクセス命令を登録する。一次キャッシュアクセス再投入命令待ちポート部8は、図3の待ちポート部31,32、あるいは図4の待ちポート部30に対応する。尚、図示は省略するが、実施例3のプロセッサは、実施例1あるいは実施例2の再投入パイプライン決定部50、及び再投入命令選択部41,42あるいは再投入命令選択部43,44と同様の機能部を有する。
一次キャッシュメモリアクセスパイプライン部6は、パイプライン投入命令選択部6−1,一次キャッシュアクセスパイプラインラッチ(1段目)6−2、及びタグマッチ検索・一次キャッシュ読出部6−3を有する。一次キャッシュメモリアクセスパイプライン部6は更に、一次キャッシュアクセスパイプラインラッチ(2段目)6−4、キャッシュヒットデータ選択部6−5,一次キャッシュアクセスパイプラインラッチ(3段目)6−6,及び命令完了応答/アボート命令処理部6−7を有する。パイプライン投入命令選択部6−1及び一次キャッシュアクセスパイプラインラッチ(1段目)6−2は、図3,4,5の1段目のパイプライン段21−1又は22−1に対応する。タグマッチ検索・一次キャッシュ読出部6−3及び一次キャッシュアクセスパイプラインラッチ(2段目)6−4は、2段目のパイプライン段21−2又は22−2に対応する。キャッシュヒットデータ選択部6−5及び一次キャッシュアクセスパイプラインラッチ(3段目)6−6は、3段目のパイプライン段21−3又は22−3に対応する。
一次キャッシュアクセスパイプライン部6は、一次キャッシュアクセスパイプライン処理(後述)を行なった結果、一次キャッシュ(図示は省略)において必要なデータが存在(キャッシュヒット)して当該データを返せる場合、メモリアクセス命令完了応答を示す信号を命令完了部7に送信し、メモリアクセス命令の実行が完了する。他方、一次キャッシにおいて必要なデータが存在しない(キャッシュミス)等により当該データを返せない場合には、メモリアクセス命令はアボートし、当該アボートしたメモリアクセス命令を一次キャッシュアクセス再投入命令待ちポート部8に登録する。
尚、実施例3のプロセッサの一次キャッシュアクセスパイプライン部6は、実施例1あるいは実施例2のパイプライン部21,22同様、「有効ビットvalid bit」及び「再投入パイプラインID」を有する(図示を省略)。
次に図11とともに、実施例4によるコンピュータにつき説明する。図11に示される実施例4によるコンピュータ500は、命令を格納する記憶装置としてのメモリ502と、メモリ502にバス503によって接続された演算処理装置としてのプロセッサ501とを有する、情報処理装置(例えばサーバ)としてのコンピュータである。メモリ502は、プロセッサ501が実行する命令が書き込まれたプログラム等を格納する。プロセッサ501として、例えば図3とともに上述した実施例1のプロセッサを適用し得る。その場合、プロセッサ501がメモリ502に格納されたプログラムを実行する際、当該プログラムに書き込まれた命令が、図3の新規命令発行部10を介し、更にパイプライン投入命令選択部11、12を介してパイプライン部21,22に投入される。命令がパイプライン部21,22に投入された後のプロセッサ501の動作は実施例1の説明で述べたとおりである。
同様にプロセッサ501として、図4とともに上述した実施例2のプロセッサを適用し得る。その場合、プロセッサ501がメモリ502に格納されたプログラムを実行する際、当該プログラムに書き込まれた命令が、図3の新規命令発行部10を介し、更にパイプライン投入命令選択部11、12を介してパイプライン部21,22に投入される。命令がパイプライン部21,22に投入された後のプロセッサ501の動作は実施例2の説明で述べたとおりである。
同様にプロセッサ501として、図10とともに上述した実施例3のプロセッサを適用し得る。その場合、プロセッサ501がメモリ502に格納されたプログラムを実行する際、当該プログラムに書き込まれた命令が、図10の命令フェッチ部1によって取り出され、取り出された命令が命令解読部2に解読され,解読された命令が命令発行部3により、例えば一次キャッシュアクセスパイプライン部6に投入される。命令が一次キャッシュアクセスパイプライン部6に投入された後のプロセッサ501の動作は実施例3の説明で述べたとおりである。
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
入力される第1の命令を実行する第1のパイプライン部と、
入力される第2の命令を実行する第2のパイプライン部と、
前記第1のパイプライン部が前記第1の命令を完了できない場合又は前記第2のパイプライン部が前記第2の命令を完了できない場合に、完了できない前記第1の命令又は前記第2の命令を登録する登録部と、
前記第1のパイプライン部と第2のパイプライン部とのうち、負荷が低いパイプライン部を決定する決定部と、
前記登録部に登録された命令を、前記決定部が決定したパイプライン部に入力する入力部とを有することを特徴とする演算処理装置。
(付記2)
前記演算処理装置において、
前記決定部は、
前記登録部に登録された命令が、前記第1のパイプライン部又は前記第2のパイプライン部に入力されてから前記登録部に登録されるまでの間に、前記負荷が低いパイプライン部を決定することを特徴とする付記1記載の演算処理装置。
(付記3)
前記演算処理装置において、
前記第1のパイプライン部は、第1の実行ステージで第1の処理を実行する第1の処理手段と、前記第1の実行ステージの後段の第2の実行ステージで第2の処理を実行する第2の処理手段とを有し、
前記第2のパイプライン部は、第3の実行ステージで第3の処理を実行する第3の処理手段と、前記第3の実行ステージの後段の第4の実行ステージで第4の処理を実行する第4の処理手段とを有し、
前記決定部は、前記第1の処理手段及び第2の処理手段がともに使用中であり且つ前記第3の処理手段及び第4の処理手段がともに不使用の場合に、前記第2のパイプライン部を決定し、
前記第3の処理手段及び第4の処理手段がともに使用中であり且つ前記第1の処理手段及び第2の処理手段がともに不使用の場合に、前記第1のパイプライン部を決定することを特徴とする付記1又は2記載の演算処理装置。
(付記4)
前記第1の処理手段は使用中の場合に“1”、不使用の場合に“0”となる第1の情報を有し、
前記第2の処理手段は使用中の場合に“1”、不使用の場合に“0”となる第2の情報を有し、
前記第3の処理手段は使用中の場合に“1”、不使用の場合に“0”となる第3の情報を有し、
前記第4の処理手段は使用中の場合に“1”、不使用の場合に“0”となる第4の情報を有し、
前記決定部は、前記第1の情報、前記第2の情報、前記第3の情報が反転された情報及び前記第4の情報が反転された情報が入力される第1のANDゲートと、
前記第1のANDゲートの出力と、“0”とが入力され、出力を前記第2の処理手段に設定する第1のXORゲートと、
前記第1の情報が反転された情報、前記第2の情報が反転された情報、前記第3の情報及び前記第4の情報が入力される第2のANDゲートと、
前記第2のANDゲートの出力と、“1”とが入力され、出力を前記第4の処理手段に設定する第2のXORゲートとを有し、
前記第1のXORゲート及び第2のXORゲートの出力の“0”は第1のパイプライン部を示し、“1”は第2のパイプライン部を示すことを特徴とする付記3に記載の演算処理装置。
(付記5)
前記登録部は、前記第1のパイプライン部及び前記第2のパイプライン部のうちの何れか一方が前記決定部による決定にしたがって前記第1のパイプライン部に再度入力する命令を登録する第1の登録部と、前記第1のパイプライン部及び前記第2のパイプライン部のうちの何れか一方が前記決定部による決定にしたがって前記第2のパイプライン部に再度入力する命令を登録する第2の登録部とを有し、
前記入力部は、前記第1の登録部に登録される命令を前記第1のパイプライン部に入力する第1の入力部と、前記第2の登録部に登録される命令を前記第2のパイプライン部に入力する第2の入力部とを有することを特徴とする付記1乃至4のうちのいずれかに記載の演算処理装置。
(付記6)
前記入力部は、前記登録部に登録される命令を前記決定部による決定にしたがって前記第1のパイプライン部に入力する第1の入力部と、前記登録部に登録される命令を前記決定部による決定にしたがって前記第2のパイプライン部に入力する第2の入力部とを有することを特徴とする付記1乃至4のうちのいずれかに記載の演算処理装置。
(付記7)
命令を格納する記憶装置と、前記記憶装置に接続された演算処理装置とを有する情報処理装置において、
前記演算処理装置は、
入力される第1の命令を実行する第1のパイプライン部と、
入力される第2の命令を実行する第2のパイプライン部と、
前記第1のパイプライン部が前記第1の命令を完了できない場合又は前記第2のパイプライン部が前記第2の命令を完了できない場合に、完了できない前記第1の命令又は前記第2の命令を登録する登録部と、
前記第1のパイプライン部と第2のパイプライン部とのうち、負荷が低いパイプライン部を決定する決定部と、
前記登録部に登録された命令を、前記決定部が決定したパイプライン部に入力する入力部とを有することを特徴とする情報処理装置。
(付記8)
前記情報処理装置において、
前記決定部は、
前記登録部に登録された命令が、前記第1のパイプライン部又は前記第2のパイプライン部に入力されてから前記登録部に登録されるまでの間に、前記負荷が低いパイプライン部を決定することを特徴とする付記7記載の情報処理装置。
(付記9)
前記情報処理装置において、
前記第1のパイプライン部は、第1の実行ステージで第1の処理を実行する第1の処理手段と、前記第1の実行ステージの後段の第2の実行ステージで第2の処理を実行する第2の処理手段とを有し、
前記第2のパイプライン部は、第3の実行ステージで第3の処理を実行する第3の処理手段と、前記第3の実行ステージの後段の第4の実行ステージで第4の処理を実行する第4の処理手段とを有し、
前記決定部は、前記第1の処理手段及び第2の処理手段がともに使用中であり且つ前記第3の処理手段及び第4の処理手段がともに不使用の場合に、前記第2のパイプライン部を決定し、
前記第3の処理手段及び第4の処理手段がともに使用中であり且つ前記第1の処理手段及び第2の処理手段がともに不使用の場合に、前記第1のパイプライン部を決定することを特徴とする付記7又は8記載の情報処理装置。
(付記10)
第1のパイプライン部が第1の命令を実行するステップと、
第2のパイプライン部が第2の命令を実行するステップと、
登録部が、前記第1のパイプライン部が前記第1の命令を完了できない場合又は前記第2のパイプライン部が前記第2の命令を完了できない場合に完了できない前記第1の命令又は前記第2の命令を登録するステップと、
決定部が、前記第1のパイプライン部と第2のパイプライン部とのうち、負荷が低いパイプライン部を決定するステップと、
入力部が、前記登録部に登録された命令を、前記決定部が決定したパイプライン部に入力するステップとを有することを特徴とする演算処理装置のパイプライン制御方法。
(付記11)
前記演算処理装置のパイプライン制御方法において、
前記決定するステップは、
前記登録部に登録された命令が、前記第1のパイプライン部又は前記第2のパイプライン部に入力されてから前記登録部に登録されるまでの間に、前記負荷が低いパイプライン部を決定するステップを有することを特徴とする付記10記載の演算処理装置のパイプライン制御方法。
(付記12)
前記演算処理装置のパイプライン制御方法において、
前記第1のパイプライン部は、第1の実行ステージで第1の処理を実行する第1の処理手段と、前記第1の実行ステージの後段の第2の実行ステージで第2の処理を実行する第2の処理手段とを有し、
前記第2のパイプライン部は、第3の実行ステージで第3の処理を実行する第3の処理手段と、前記第3の実行ステージの後段の第4の実行ステージで第4の処理を実行する第4の処理手段とを有し、
前記決定するステップは、前記第1の処理手段及び第2の処理手段がともに使用中であり且つ前記第3の処理手段及び第4の処理手段がともに不使用の場合に、前記第2のパイプライン部を決定し、
前記第3の処理手段及び第4の処理手段がともに使用中であり且つ前記第1の処理手段及び第2の処理手段がともに不使用の場合に、前記第1のパイプライン部を決定することを特徴とする付記10又は11記載の演算処理装置のパイプライン制御方法。
10、110 新規命令発行部
11,12,111,112 パイプライン投入命令選択部
21,22、121,122 パイプライン部
30,31,32、130,131,132 待ちポート部
41,42、43,44、140、141,142 再投入命令選択部
50 再投入パイプライン決定部

Claims (6)

  1. 入力される第1の命令を実行する第1のパイプライン部と、
    入力される第2の命令を実行する第2のパイプライン部と、
    前記第1のパイプライン部が前記第1の命令を完了できない場合又は前記第2のパイプライン部が前記第2の命令を完了できない場合に、完了できない前記第1の命令又は前記第2の命令を登録する登録部と、
    前記第1のパイプライン部と第2のパイプライン部とのうち、負荷が低いパイプライン部を決定する決定部と、
    前記登録部に登録された命令を、前記決定部が決定したパイプライン部に入力する入力部とを有し、
    前記第1のパイプライン部は、第1の実行ステージで第1の処理を実行する第1の処理手段と、前記第1の実行ステージの後段の第2の実行ステージで第2の処理を実行する第2の処理手段とを有し、
    前記第2のパイプライン部は、第3の実行ステージで第3の処理を実行する第3の処理手段と、前記第3の実行ステージの後段の第4の実行ステージで第4の処理を実行する第4の処理手段とを有し、
    前記決定部は、前記第1の処理手段及び第2の処理手段がともに使用中であり且つ前記第3の処理手段及び第4の処理手段がともに不使用の場合に、前記第2のパイプライン部を決定し、
    前記第3の処理手段及び第4の処理手段がともに使用中であり且つ前記第1の処理手段及び第2の処理手段がともに不使用の場合に、前記第1のパイプライン部を決定することを特徴とする演算処理装置。
  2. 前記演算処理装置において、
    前記決定部は、
    前記登録部に登録された命令が、前記第1のパイプライン部又は前記第2のパイプライン部に入力されてから前記登録部に登録されるまでの間に、前記負荷が低いパイプライン部を決定することを特徴とする請求項1記載の演算処理装置。
  3. 命令を格納する記憶装置と、前記記憶装置に接続された演算処理装置とを有する情報処理装置において、
    前記演算処理装置は、
    入力される第1の命令を実行する第1のパイプライン部と、
    入力される第2の命令を実行する第2のパイプライン部と、
    前記第1のパイプライン部が前記第1の命令を完了できない場合又は前記第2のパイプライン部が前記第2の命令を完了できない場合に、完了できない前記第1の命令又は前記第2の命令を登録する登録部と、
    前記第1のパイプライン部と第2のパイプライン部とのうち、負荷が低いパイプライン部を決定する決定部と、
    前記登録部に登録された命令を、前記決定部が決定したパイプライン部に入力する入力部とを有し、
    前記第1のパイプライン部は、第1の実行ステージで第1の処理を実行する第1の処理手段と、前記第1の実行ステージの後段の第2の実行ステージで第2の処理を実行する第2の処理手段とを有し、
    前記第2のパイプライン部は、第3の実行ステージで第3の処理を実行する第3の処理手段と、前記第3の実行ステージの後段の第4の実行ステージで第4の処理を実行する第4の処理手段とを有し、
    前記決定部は、前記第1の処理手段及び第2の処理手段がともに使用中であり且つ前記第3の処理手段及び第4の処理手段がともに不使用の場合に、前記第2のパイプライン部を決定し、
    前記第3の処理手段及び第4の処理手段がともに使用中であり且つ前記第1の処理手段及び第2の処理手段がともに不使用の場合に、前記第1のパイプライン部を決定することを特徴とする情報処理装置。
  4. 前記情報処理装置において、
    前記決定部は、
    前記登録部に登録された命令が、前記第1のパイプライン部又は前記第2のパイプライン部に入力されてから前記登録部に登録されるまでの間に、前記負荷が低いパイプライン部を決定することを特徴とする請求項記載の情報処理装置。
  5. 第1のパイプライン部が第1の命令を実行するステップと、
    第2のパイプライン部が第2の命令を実行するステップと、
    登録部が、前記第1のパイプライン部が前記第1の命令を完了できない場合又は前記第2のパイプライン部が前記第2の命令を完了できない場合に完了できない前記第1の命令又は前記第2の命令を登録するステップと、
    決定部が、前記第1のパイプライン部と第2のパイプライン部とのうち、負荷が低いパイプライン部を決定するステップと、
    入力部が、前記登録部に登録された命令を、前記決定部が決定したパイプライン部に入力するステップとを有し、
    前記第1のパイプライン部は、第1の実行ステージで第1の処理を実行する第1の処理手段と、前記第1の実行ステージの後段の第2の実行ステージで第2の処理を実行する第2の処理手段とを有し、
    前記第2のパイプライン部は、第3の実行ステージで第3の処理を実行する第3の処理手段と、前記第3の実行ステージの後段の第4の実行ステージで第4の処理を実行する第4の処理手段とを有し、
    前記決定するステップは、前記第1の処理手段及び第2の処理手段がともに使用中であり且つ前記第3の処理手段及び第4の処理手段がともに不使用の場合に、前記第2のパイプライン部を決定し、
    前記第3の処理手段及び第4の処理手段がともに使用中であり且つ前記第1の処理手段及び第2の処理手段がともに不使用の場合に、前記第1のパイプライン部を決定することを特徴とする演算処理装置のパイプライン制御方法。
  6. 前記演算処理装置のパイプライン制御方法において、
    前記決定するステップは、
    前記登録部に登録された命令が、前記第1のパイプライン部又は前記第2のパイプライン部に入力されてから前記登録部に登録されるまでの間に、前記負荷が低いパイプライン部を決定するステップを有することを特徴とする請求項記載の演算処理装置のパイプライン制御方法。
JP2009294196A 2009-12-25 2009-12-25 演算処理装置、情報処理装置及び演算処理装置のパイプライン制御方法 Expired - Fee Related JP5493837B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2009294196A JP5493837B2 (ja) 2009-12-25 2009-12-25 演算処理装置、情報処理装置及び演算処理装置のパイプライン制御方法
US12/926,799 US8683181B2 (en) 2009-12-25 2010-12-09 Processor and method for distributing load among plural pipeline units
EP10195257A EP2348400A1 (en) 2009-12-25 2010-12-15 Arithmetic processor, information processor, and pipeline control method of arithmetic processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009294196A JP5493837B2 (ja) 2009-12-25 2009-12-25 演算処理装置、情報処理装置及び演算処理装置のパイプライン制御方法

Publications (2)

Publication Number Publication Date
JP2011134181A JP2011134181A (ja) 2011-07-07
JP5493837B2 true JP5493837B2 (ja) 2014-05-14

Family

ID=43735574

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009294196A Expired - Fee Related JP5493837B2 (ja) 2009-12-25 2009-12-25 演算処理装置、情報処理装置及び演算処理装置のパイプライン制御方法

Country Status (3)

Country Link
US (1) US8683181B2 (ja)
EP (1) EP2348400A1 (ja)
JP (1) JP5493837B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7013707B2 (ja) * 2017-08-02 2022-02-01 富士通株式会社 情報処理装置および情報処理方法
US10467142B1 (en) * 2019-05-07 2019-11-05 12 Sigma Technologies Enhancement of real-time response to request for detached data analytics

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3180803B2 (ja) * 1999-05-26 2001-06-25 日本電気株式会社 スーパースカラプロセッサ
US6993641B2 (en) * 2000-11-08 2006-01-31 Pts Corporation Stall control
GB2392742B (en) * 2002-09-04 2005-10-19 Advanced Risc Mach Ltd Synchronisation between pipelines in a data processing apparatus
JP2007026392A (ja) * 2005-07-21 2007-02-01 Toshiba Corp マイクロプロセッサ

Also Published As

Publication number Publication date
JP2011134181A (ja) 2011-07-07
US8683181B2 (en) 2014-03-25
US20110161629A1 (en) 2011-06-30
EP2348400A1 (en) 2011-07-27

Similar Documents

Publication Publication Date Title
US10338927B2 (en) Method and apparatus for implementing a dynamic out-of-order processor pipeline
Sinharoy et al. IBM POWER8 processor core microarchitecture
CN101965554B (zh) 选择性地提交已执行指令的结果的系统和方法
US9058180B2 (en) Unified high-frequency out-of-order pick queue with support for triggering early issue of speculative instructions
JP5894120B2 (ja) ゼロサイクルロード
JP3716414B2 (ja) 同時マルチスレッド化プロセッサ
JP3927546B2 (ja) 同時マルチスレッド化プロセッサ
US9037837B2 (en) Hardware assist thread for increasing code parallelism
US8069340B2 (en) Microprocessor with microarchitecture for efficiently executing read/modify/write memory operand instructions
US20150106598A1 (en) Computer Processor Employing Efficient Bypass Network For Result Operand Routing
TWI233051B (en) Method and apparatus for partitioning a resource between multiple threads within a multi-threaded processor
JP2006114036A (ja) Smtディスパッチのための命令グループ形成およびメカニズム
JP2013515306A5 (ja)
JP2002268878A (ja) スレッド間優先度可変プロセッサ
JP2005302025A (ja) 複数の未解決命令を追跡するための方法、完了テーブルおよびプロセッサ
JP2018005488A (ja) 演算処理装置及び演算処理装置の制御方法
CN112241288A (zh) 在硬件中检测条件分支的动态控制流重汇聚点
US20050251662A1 (en) Secondary register file mechanism for virtual multithreading
JP2006517322A (ja) パイプライン化ディジタルプロセッサにおけるハザード検出および管理のための方法および装置
JP5493837B2 (ja) 演算処理装置、情報処理装置及び演算処理装置のパイプライン制御方法
US7962722B2 (en) Branch target address cache with hashed indices
Shum et al. Design and microarchitecture of the IBM System z10 microprocessor
US20170371701A1 (en) Apparatuses, methods, and systems for granular and adaptive hardware transactional synchronization
JPWO2008155799A1 (ja) 命令実行制御装置及び命令実行制御方法
US11537402B1 (en) Execution elision of intermediate instruction by processor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120910

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131031

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131112

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140106

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140217

R150 Certificate of patent or registration of utility model

Ref document number: 5493837

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees