JP7102840B2 - プロセッサコア、命令制御方法、プログラム - Google Patents

プロセッサコア、命令制御方法、プログラム Download PDF

Info

Publication number
JP7102840B2
JP7102840B2 JP2018058318A JP2018058318A JP7102840B2 JP 7102840 B2 JP7102840 B2 JP 7102840B2 JP 2018058318 A JP2018058318 A JP 2018058318A JP 2018058318 A JP2018058318 A JP 2018058318A JP 7102840 B2 JP7102840 B2 JP 7102840B2
Authority
JP
Japan
Prior art keywords
instruction
load
source operand
processor core
reservation station
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
JP2018058318A
Other languages
English (en)
Other versions
JP2019169082A (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2018058318A priority Critical patent/JP7102840B2/ja
Publication of JP2019169082A publication Critical patent/JP2019169082A/ja
Application granted granted Critical
Publication of JP7102840B2 publication Critical patent/JP7102840B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Advance Control (AREA)

Description

本発明は、プロセッサコア、命令制御方法、プログラムに関する。
プロセッサにおいて命令の実行効率を高めるためには、演算器を効率良く動作させる必要がある。このような演算器を効率よく動作させるための技術の一つとして、リザベーションステーションによるレジスタリネーミングが知られている。
レジスタリネーミングでは、例えば、命令の実行結果を格納する論理レジスタに空いている物理レジスタを割り当てる。これにより、WAW(Write After Write)ハザード及びWAR(Write After Read)ハザードを解決する。また、リザベーションステーションは、ソースオペランドの物理レジスタが有効になった時点で、つまり、RAW(Read After Write)ハザードが解決した時点で、アウトオブオーダーで演算器に命令を発行する。このような構成により、並び順に依らず命令を実行するアウトオブオーダー実行などを効率的に行うことを可能としている。
このようなリザベーションステーションを用いた技術としては、例えば、特許文献1がある。特許文献1には、リザベーションステーションを有するプロセッサコアについて記載されている。特許文献1によると、リザベーションステーションは、所定の例外を除き、ロードマイクロ命令に従属するマイクロ命令を、ロードマイクロ命令がディスパッチされてから指定されたクロック数にわたりストールする。また、特許文献1によると、アンコアストールロジックを用いて例外を提供する。アンコアストールロジックは、1つ又は複数のロードマイクロ命令タイプを検出して、それら1つ又は複数のロードマイクロ命令タイプのマイクロ命令に依存する新しいマイクロ命令を、そのオペランドが利用可能になるまでストールさせる。
また、関連する技術として、例えば、特許文献2がある。特許文献2には、リザベーションステーションとロードストア依存関係予測器とを備えるプロセッサについて記載されている。特許文献2によると、ロードストア依存関係予測器は、依存関係の予測強度を示すためのカウンタを含んでおり、カウンタの値に応じて、ロード命令とストア命令との間に依存関係があるか否かを判断する。
特開2017-503294号公報 特開2015-232902号公報
一般に、リザベーションステーションに登録できる命令が多いほど、命令を多く発行することができ、演算器を効率よく動作させることが出来る。しかしながら、回路規模と遅延が問題になり、リザベーションステーションに登録可能なエントリ数を増やすのは困難であるという課題があった。
演算器を効率よく使う方法としては、リザベーションステーションへの登録数を増やすほかに、リザベーションステーションを効率的に使う、という方法もある。しかしながら、特許文献1に記載の技術の場合、リザベーションステーション上で命令がストールされてしまう。そのため、リザベーションステーションを効率的に活用することは出来なかった。
また、特許文献2ではロード命令とストア命令の関係のみを問題としており、その他の命令について何ら記載されていない。そのため、特許文献2に記載の技術を用いたとしても、リザベーションステーションの効率的な活用は不十分である。
以上のように、リザベーションステーションを効率的に使用することが難しかった。その結果、リザベーションステーションを効率的に使用して演算器を効率的に使うことが難しい、という問題が生じていた。
そこで、本発明の目的は、リザベーションステーションを効率的に使用して演算器を効率的に使うことが難しい、という課題を解決するプロセッサコア、命令制御方法、プログラムを提供することにある。
かかる目的を達成するため本発明の一形態であるプロセッサコアは、
命令中の論理レジスタを物理レジスタに割り当てるレジスタリネーミングと、
前記命令が登録され、登録された前記命令のソースオペランドに対応する物理レジスタが有効になると当該命令を演算器に発行するリザベーションステーションと、
前記命令を一時的に保持するとともに、前記命令中のソースオペランドが先行するロード命令に依存しなくなると、当該命令をリザベーションステーションに登録するロード依存キューと、
を有し、
前記レジスタリネーミングは、前記命令のソースオペランドが先行するロード命令に依存しているか否かに応じて、前記リザベーションステーションに前記命令を登録するか、前記ロード依存キューに前記命令をキューイングする
という構成をとる。
また、本発明の他の形態である命令制御方法は、
プロセッサコアが、
命令のソースオペランドが先行するロード命令に依存しているか否か確認して、ソースオペランドが先行するロード命令に依存している前記命令を、前記命令のソースオペランドに対応する物理レジスタが有効になると当該命令を演算器に発行するリザベーションステーションに登録し、ソースオペランドが先行するロード命令に依存していない前記命令を、前記命令を一時的に保持するとともに、前記命令中のソースオペランドが先行するロード命令に依存しなくなると、当該命令をリザベーションステーションに登録するロード依存キューにキューイングする
という構成をとる。
また、本発明の他の形態であるプログラムは、
命令が登録され、登録された前記命令のソースオペランドに対応する物理レジスタが有効になると当該命令を演算器に発行するリザベーションステーションと、前記命令を一時的に保持するとともに、前記命令中のソースオペランドが先行するロード命令に依存しなくなると、当該命令をリザベーションステーションに登録するロード依存キューと、を有するプロセッサコアに、
前記命令中の論理レジスタを物理レジスタに割り当てるレジスタリネーミングを実現させ、
前記レジスタリネーミングは、前記命令のソースオペランドが先行するロード命令に依存しているか否かに応じて、前記リザベーションステーションに前記命令を登録するか、前記ロード依存キューに前記命令をキューイングする処理を実現させるためのプログラムである。
本発明は、以上のように構成されることにより、リザベーションステーションを効率的に使用して演算器を効率的に使うことが難しい、という課題を解決するプロセッサコア、命令制御方法、プログラムを提供することが可能となる。
本発明の第1の実施形態におけるプロセッサコアの構成の一例を示すブロック図である。 図1で示す対応表の一例を示す図である。 図1で示すステータス表の一例を示す図である。 プロセッサコアで実行する命令列の一例を示す図である。 本発明の第1の実施形態におけるレジスタリネーミングの動作の一例を示すフローチャートである。 レジスタリネーミングによるリネーミング後の命令列の一例を示す図である。 リネーミング後の対応表の一例を示す図である。 リネーミング後のステータス表の一例を示す図である。 本発明の第2の実施形態におけるプロセッサコアの構成の一例を示すブロック図である。 本発明の第2の実施形態におけるレジスタリネーミングの動作の一例を示すフローチャートである。 本発明の第3の実施形態におけるステータス表の一例を示す図である。 本発明の第4の実施形態におけるプロセッサコアの構成の一例を示すブロック図である。
[第1の実施形態]
本発明の第1の実施形態を図1から図8までを参照して説明する。図1は、プロセッサコア100の構成の一例を示すブロック図である。図2は、対応表141の一例を示す図である。図3は、ステータス表142の一例を示す図である。図4は、プロセッサコア100で実行する命令列の一例を示す図である。図5は、レジスタリネーミング130の動作の一例を示すフローチャートである。図6は、レジスタリネーミング130によるリネーミング後の命令列の一例を示す図である。図7は、リネーミング後の対応表141の一例を示す図である。図8は、リネーミング後のステータス表142の一例を示す図である。
第1の実施形態では、レジスタリネーミング130を有するプロセッサコア100について説明する。後述するように、レジスタリネーミング130は、リネーミング実行時に、命令のソースオペランドが先行するロード命令に依存しているか否か確認する。そして、ソースオペランドが先行するロード命令に依存している場合、レジスタリネーミング130は、命令をロード依存キュー150にキューイングする。一方、ソースオペランドが先行するロード命令に依存していない場合、レジスタリネーミング130は、命令をリザベーションステーション160に登録する。
図1は、プロセッサコア100の構成の一例を示している。プロセッサコア100は、例えば、図示しないCPU(Central Processing Unit)が有している。図1を参照すると、プロセッサコア100は、例えば、命令フェッチ/デコードユニット110と、命令キュー120と、レジスタリネーミング130と、リネーミングテーブル140と、ロード依存キュー150と、リザベーションステーション160と、演算器170と、を有している。なお、レジスタリネーミング130などは、例えば、図示しない演算装置が図示しない記憶装置に格納されたプログラムを実行することで実現することが出来る。レジスタリネーミング130などは、マッピングテーブルやリオーダバッファなどを用いたハードウェアにより実現しても構わない。
命令フェッチ/デコードユニット110は、図示しない主記憶装置から命令情報を読み出して、読み出した命令情報を解析する。そして、命令フェッチ/デコードユニット110は、読み出した命令情報を命令キュー120に渡す。
命令キュー120は、命令フェッチ/デコードユニット110から渡された命令を一時保持する。命令キュー120は、命令を保持した順番に従って、命令をレジスタリネーミング130に出力する。
レジスタリネーミング130は、リネーミングテーブル140を用いてリネーミングを実行する。例えば、レジスタリネーミング130は、命令中の論理レジスタを物理レジスタに割り当てる。また、この際、レジスタリネーミング130は、命令の実行結果を格納する論理レジスタを空いている物理レジスタに割り当てる。レジスタリネーミング130は、上記リネーミング処理を実行することで、リネーミングテーブル140を更新する。
また、レジスタリネーミング130は、リネーミング実行時に、ロード命令や演算命令のソースオペランドが先行するロード命令に依存しているか否か確認する。そして、ソースオペランドが先行するロード命令に依存している場合、レジスタリネーミング130は、当該命令をロード依存キュー150にキューイングする。一方、ソースオペランドが先行するロード命令に依存していない場合、レジスタリネーミング130は、当該命令をリザベーションステーション160に登録する。
このように、レジスタリネーミング130は、リネーミングを実行するとともに、ソースオペランドが先行するロード命令に依存しているか否かに応じて、命令をロード依存キュー150にキューイングするか、リザベーションステーション160に登録するか判断する。
リネーミングテーブル140は、対応表141と、ステータス表142とを有する。リネーミングテーブル140は、例えば、RAM(Random access memory)などの記憶装置に格納されている。
対応表141は、論理レジスタ番号と物理レジスタ番号とを対応付けた表である。図2は、対応表141の一例を示している。図2を参照すると、対応表141では、論理レジスタの番号と物理レジスタの番号とを対応付けている。例えば、図2の1行目では、論理レジスタ「V0」と物理レジスタ「R0」とを対応付けている。
ステータス表142は、物理レジスタのステータス(状態)を示している。図3は、ステータス表142の構成の一例を示している。図3を参照すると、ステータス表142は、物理レジスタの値と、有効/無効と、命令と、ロード依存と、を対応付けている。
図3中の物理レジスタの項目は、物理レジスタの番号を示している。物理レジスタの番号は、対応表141のものと対応している。
図3中の有効/無効の項目は、物理レジスタが有効であるか否かを示している。例えば、有効/無効の値が「1」の場合、対応する物理レジスタが有効であることを示している。後述するリザベーションステーション160は、命令を実行する際に使用する物理レジスタが有効になった時点で、アウトオブオーダーで命令を演算器170に発行する。一方、有効/無効の値が「0」の場合、対応する物理レジスタが無効であることを示している。有効/無効の値が「0」の場合、リザベーションステーション160は、有効/無効の値が「1」になるまで、登録された命令の演算器170に対する発行を待機する。
図3中の命令の項目は、対応する物理レジスタを使用する命令を示している。図3中の命令の項目は、例えば、レジスタリネーミング130によるリネーミング実行時に更新される。
図3中のロード依存の項目は、対応する物理レジスタにロード依存が有るか否か示している。換言すると、図3中のロード依存の項目は、対応する物理レジスタを使用する命令がロード命令に依存しているか否かを示している。ロード命令に依存している場合とは、物理レジスタがロード命令によるロード先である場合や、ロード命令によるロード先の物理レジスタの値を演算に使用する場合、上記演算の結果を更なる演算に使用する場合、などがある。例えば、ロード依存が「1」である場合、対応する物理レジスタにロード依存が有ることを示している。
ロード依存キュー150は、レジスタリネーミング130から渡された命令を一時保持する。例えば、ロード依存キュー150は、命令のソースオペランドを参照する。そして、ロード依存キュー150は、ソースオペランドが先行するロード命令に依存しなくなると、保持する命令をリザベーションステーション160に登録する。
このように、ロード依存キュー150は、ソースオペランドが先行するロード命令に依存している場合に、依存関係が解消するまで命令のリザベーションステーション160への登録を送らせる。
リザベーションステーション160には、複数の命令が登録される。本実施形態の場合、リザベーションステーション160には、ロード依存キュー150が命令を登録する場合と、レジスタリネーミング130がロード依存キュー150をバイパスして命令を登録する場合と、がある。リザベーションステーション160に一度に登録可能な命令の数は、予め定められている。例えば、本実施形態の場合、リザベーションステーション160には、一度に2つまでの命令を登録することが出来る。
命令が登録されると、リザベーションステーション160はリネーミングテーブル140を参照する。そして、リザベーションステーション160は、登録された命令のソースオペランドに対応する物理レジスタが有効になった時点で、アウトオブオーダーで演算器170に命令を発行する。
なお、上述したリザベーションステーション160に登録可能な命令の数は例示である。リザベーションステーション160に登録可能な命令の数は、上記例示した場合に限定されない。
演算器170は、リザベーションステーション160から発行された命令を実行する。演算器170には、例えば、加算器、乗算器、比較器、シフト器などの様々な演算器を含むことが出来る。
以上が、プロセッサコア100の構成の一例である。
次に、上記のようなプロセッサコア100を用いて行う動作の一例について説明する。具体的には、図4で示す命令列をプロセッサコア100で実行する場合について、図4から図8までを参照して説明する。
図4は、プロセッサコア100で実行する命令列の一例を示している。図4を参照すると、命令列には、例えば、命令「LD V8,(V0)」、命令「ADD V0,V1,V8」、……、命令「ST V3,(V7)」が含まれている。ここで、図4中の命令「LD V8,(V0)」は、論理レジスタ「V0」の値で示されるアドレスで参照されるメモリの内容を、論理レジスタ「V8」にロードする命令である。また、図4中の命令「ADD V0,V1,V8」は、論理レジスタ「V1」と「V8」を加算して論理レジスタ「V0」にセットする命令である。図4中のその他加算命令も同様である。また、図4中の命令「ST(V3),V7」は、論理レジスタ「V7」を論理レジスタ「V3」の値で示すアドレスで参照されるメモリにストアする命令である。
図4で示す命令列は、命令フェッチ/デコードユニット110から発行され、命令キュー120に入る。命令キュー120は、各命令を受け取った順番にレジスタリネーミング130に対して出力する。
図5は、レジスタリネーミング130の動作の一例を示している。図5で示すように、レジスタリネーミング130は、命令を受け取るとリネーミングテーブル140を用いてリネーミングを実行する(ステップS101)。例えば、レジスタリネーミング130は、命令「LD V8,(V0)」中の論理レジスタにそれぞれ物理レジスタを割り当て、命令「LD V8,(V0)」を命令「LD R8,(R0)」とする。また、命令「ADD V0,V1,V8」中の論理レジスタ「V0」は、上記命令「LD V8,(V0)」中に存在する。そのため、例えば、レジスタリネーミング130は、命令の格納先の論理レジスタ「V0」に、既に割り当てた「R0」とは異なる、空いている物理レジスタ「R9」を割り当てる。つまり、例えば、「ADD V0,V1,V8」は、論理レジスタ「V8」が命令「LD V8,(V0)」と重複しているため、重複しない物理レジスタが割り当てられて、「ADD R9,R1,R8」となる。その結果、レジスタリネーミング130は、命令「ADD V0,V1,V8」を命令「ADD R9,R1,8」とする。
例えば、上記のような処理の結果、レジスタリネーミング130は、図4で示す命令を図6で示すようにする。つまり、レジスタリネーミング130は、リネーミングを実行することで、命令「LD V8,(V0)」、命令「ADD V0,V1,V8」、……、命令「ST V3,(V7)」を、命令「LD R8,(R0)」、命令「ADD R9,R1,R8」、……、命令「ST R13,R7」とする。
また、レジスタリネーミング130は、リネーミング実行時に、リネーミングテーブル140の更新を行う。リネーミング時のレジスタリネーミング130の処理により、リネーミングテーブル140は、例えば、図7、図8で示すようになる。
図7は、リネーミング後の対応表141の一例を示している。例えば、図7を参照すると、論理レジスタ「V0」には、物理レジスタ「R0」と「R9」が割り当てられている。これは、上記のように、論理レジスタ「V0」が命令「LD V8,(V0)」と命令「ADD V0,V1,V8」の2つに含まれている為、物理レジスタが重ならないように割り当てられたためである。
また、図8は、リネーミング後のステータス表142の一例を示している。例えば、物理レジスタ「R8」には、論理レジスタ「R0」の値で示されるアドレスで参照されるメモリの内容がロードされる。そのため、物理レジスタ「R8」には、命令「LD(R0)」が対応付けられている。また、物理レジスタ「R8」には、メモリの内容をロードするため、物理レジスタ「R8」はロード依存である。そのため、物理レジスタ「R8」には、ロード依存「1」が対応付けられている。同様に、物理レジスタ「R9」には、物理レジスタ「R1」と「R8」を加算した結果が格納される。ここで、上記のように、物理レジスタ「R8」はロード依存である。つまり、ソースオペランドが先行するロード命令に依存している。そのため、物理レジスタ「R9」もロード依存「1」と対応付けられている。同様に、ロード依存のある物理レジスタ「R9」を演算に用いた結果を格納する物理レジスタ「11」もロード依存「1」となる。
また、レジスタリネーミング130は、命令のソースオペランドを参照して(図5のステップS102)、ソースオペランドが先行するロード命令に依存しているか否かで命令の出力先を変更する。例えば、レジスタリネーミング130は、ソースオペランドが先行するロード命令に依存している場合(ステップS103、Yes)、つまり、対応する物理レジスタにロード依存がある場合、命令をロード依存キュー150にキューイングする(ステップS104)。一方、ロード依存が無い場合(ステップS103、No)、レジスタリネーミング130は、ロード依存キュー150をバイパスして、リザベーションステーション160に命令を登録する(ステップS105)。
図6で示す命令列の場合、図8で示すように、命令「ADD R9,R1,R8」と命令「ADD R11,R9,R2」の2つの命令にロード依存がある。そのため、レジスタリネーミング130は、2つの命令、命令「ADD R9,R1,R8」と命令「ADD R11,R9,R2」をロード依存キュー150にキューイングする。
また、本実施形態においては、リザベーションステーション160が2つのエントリを持つとする。そのため、レジスタリネーミング130は、リザベーションステーション160に命令「LD R8,(R0)」と命令「ADD R10,R3,R4」の2つの命令を登録する。
ここで、図8で示すように、先頭の命令「LD R8,(R0)」のソースオペランド「R0」は有効である。そのため、リザベーションステーション160は、登録された命令「LD R8,(R0)」を演算器170に発行する。
次に、レジスタリネーミング130は、命令「ADD R12,R10,R5」を登録する。その結果、リザベーションステーション160には、命令「ADD R10,R3,R4」と命令「ADD R12,R10,R5」が登録される。上記の場合、図8で示すように、命令「ADD R10,R3,R4」のソースオペランド「R3」、「R4」は有効である。そのため、リザベーションステーション160は、登録された命令「ADD R10,R3,R4」を演算器170に発行する。
続いて、レジスタリネーミング130は、命令「ADD R13,R6,R7」を登録する。その結果、リザベーションステーション160には、命令「ADD R12,R10,R5」と命令「ADD R13,R6,R7」が登録される。また、リザベーションステーション160から命令「ADD R10,R3,R4」が発行されたため、演算器170は命令「ADD R10,R3,R4」を実行する。
演算器170による命令「ADD R10,R3,R4」の実行が終わると、命令「ADD R12,R10,R5」のソースオペランド「R10」が有効になる。また、ソースオペランド「R5」は有効である。そのため、ソースオペランド「R10」が有効になった後、リザベーションステーション160は、命令「ADD R12,R10,R5」を演算器170に発行する。
レジスタリネーミング130は、命令「ST (R13),R7」を登録する。その結果、リザベーションステーション160には、命令「ADD R13,R6,R7」と命令「ST (R13),R7」が登録される。また、リザベーションステーション160から命令「ADD R12,R10,R5」が発行されたため、演算器170は命令「ADD R12,R10,R5」を実行する。
以上が、図4で示す命令列をプロセッサコア100で実行する場合の動作の一例である。
ここで、本実施形態で説明するロード依存キュー150を有さない場合について説明する。
ロード依存キュー150を有さない場合、例えば、図6で示す命令が上から順番にリザベーションステーション160に登録される。その結果、命令「LD R8,(R0)」を演算器170に発行した後、リザベーションステーション160には、命令「ADD R9,R1,R8」と命令「ADD R10,R3,R4」が登録される。ここで、命令「ADD R9,R1,R8」のソースオペランド「R8」は有効でない。そのため、リザベーションステーション160は、命令「ADD R9,R1,R8」を演算器170に発行しない。一方、命令「ADD R10,R3,R4」のソースオペランド「R3」、「R4」は有効である。そのため、リザベーションステーション160は、命令「ADD R10,R3,R4」をアウトオブオーダーで演算器170に発行する。
続いて、レジスタリネーミング130は、命令「ADD R11,R9,R2」をリザベーションステーション160に登録する。その結果、リザベーションステーション160には、命令「ADD R9,R1,R8」と命令「ADD R11,R9,R2」が登録される。また、リザベーションステーション160から命令「ADD R10,R3,R4」が発行されたため、演算器170は命令「ADD R10,R3,R4」を実行する。
上記の結果、リザベーションステーション160は、命令「ADD R9,R1,R8」のソースオペランド「R8」や命令「ADD R11,R9,R2」のソースオペランド「R9」が有効となるまで、新規の命令を発行することが出来ない。つまり、先行するロード命令「LD R8,(R0)」が完了するまで、リザベーションステーション160は新規の命令発行を行うことが出来なくなる。このように、ロード依存キュー150を有さない場合、ロード命令の完了待ちの命令でリザベーションステーション160が詰まってしまうことがある。その結果、リザベーションステーション160から新規の命令を発行することが出来なくなり、演算器170を効率的に活用することが出来なくなる。
以上のように、ロード依存キュー150を有さない場合、リザベーションステーション160による命令の発行が滞り、その結果、演算器170を効率的に活用出来ない事態が生じることがある。一方で、上述したように、ロード依存キュー150を有する場合、ロード依存のある命令をロード依存キュー150にキューイングすることで、ロード命令「LD R8,(R0)」の完了を待つことなく、ロード命令「LD R8,(R0)」と関係のない演算を演算器170で行うことが可能となる。つまり、ロード命令に依存する命令をロード依存キュー150にキューイングすることにより、リザベーションステーション160を効率的に活用し、演算器170の利用効率を向上させることが可能となる。
このように、本実施形態におけるプロセッサコア100は、レジスタリネーミング130と、ロード依存キュー150と、リザベーションステーション160と、を有している。このような構成により、レジスタリネーミング130は、命令のソースオペランドが先行するロード命令に依存している場合に、命令をロード依存キュー150にキューイングすることが可能となる。その結果、レジスタリネーミング130は、ソースオペランドが先行するロード命令に依存していない命令のみを直接、リザベーションステーション160に登録することが可能となる。これにより、ロード命令に依存する命令のみがリザベーションステーション160に登録され、リザベーションステーション160からの新規の命令発行が出来なくなる事態の発生を抑制することが出来る。また、リザベーションステーション160を介して、ロード命令に依存しない命令を返して効率的に演算器170に発行することが可能となる。つまり、リザベーションステーション160を効率的に活用することが可能となり、その結果、演算器170を効率的に活用することが可能となる。
[第2の実施形態]
次に、本発明の第2の実施形態について、図9、図10を参照して説明する。図9は、プロセッサコア200の構成の一例を示すブロック図である。図10は、レジスタリネーミング130の動作の一例を示すフローチャートである。
第2の実施形態では、第1の実施形態で説明した構成に加えて、発行可能キュー210を有するプロセッサコア200について説明する。発行可能キュー210には、ソースオペランドが有効な命令がリザベーションステーション160をバイパスして登録される。これにより、ソースオペランドにロード依存がない命令のうち、ソースオペランドが有効でない命令のみがリザベーションステーション160に登録されることになる。
図9は、プロセッサコア200の構成の一例を示している。図9を参照すると、プロセッサコア200は、第1の実施形態で説明したプロセッサコア100が有する構成に加えて、発行可能キュー210を有している。
発行可能キュー210は、レジスタリネーミング130から渡された命令を一時保持する。発行可能キュー210は、保持する命令を演算器170に発行する。
本実施形態の場合、レジスタリネーミング130は、リネーミング中に、命令のソースオペランドを参照する。そして、レジスタリネーミング130は、ソースオペランドが先行するロード命令に依存する命令をロード依存キュー150にキューイングする。一方、レジスタリネーミング130は、ソースオペランドが先行するロード命令に依存せず、かつ、ソースオペランドが有効でない命令をリザベーションステーション160に登録する。また、本実施形態の場合、レジスタリネーミング130は、ソースオペランドが先行するロード命令に依存せず、かつ、ソースオペランドが有効な命令を、リザベーションステーション160をバイパスして発行可能キュー210にキューイングする。
ここで、本実施形態で説明するプロセッサコア200において、図4、図6で例示した命令列を実行した場合について、図9、図10を参照して説明する。なお、以下においては、第1の実施形態と重複する説明を省略して、本実施形態に特徴的な部分について説明する。
リネーミング中、レジスタリネーミング130は、命令のソースオペランドを参照する。そして、レジスタリネーミング130は、参照した結果に応じて、命令をロード依存キュー150にキューイングするか、リザベーションステーション160に登録するか、発行可能キュー210にキューイングするか、判断する。
例えば、レジスタリネーミング130は、命令のソースオペランドを参照して(図10のステップS102)、ソースオペランドが先行するロード命令に依存しているか否か確認する。例えば、レジスタリネーミング130は、ソースオペランドが先行するロード命令に依存している場合(ステップS103、Yes)、つまり、対応する物理レジスタにロード依存がある場合、命令をロード依存キュー150にキューイングする(ステップS104)。一方、ロード依存が無い場合(ステップS103、No)、レジスタリネーミング130は、ソースオペランドが有効であるか否か確認する(ステップS201)。ソースオペランドが有効である場合、レジスタリネーミング130は、命令を発行可能キュー210にキューイングする(ステップS202)。一方、ソースオペランドが有効でない場合、レジスタリネーミング130は、命令をリザベーションステーション160に登録する(ステップS105)。
具体的には、例えば図6で示す命令列の場合、命令「ADD R9,R1,R8」と命令「ADD R11,R9,R2」は、ソースオペランドが先行するロード命令に依存する。そのため、レジスタリネーミング130は、命令「ADD R9,R1,R8」と命令「ADD R11,R9,R2」をロード依存キュー150にキューイングする。また、図6のうち、命令「LD R8,(R0)」と命令「ADD R10,R3,R4」と命令「ADD R13,R6,R7」は、ソースオペランドが先行するロード命令に依存せず、かつ、ソースオペランドが有効である(図8参照)。そのため、レジスタリネーミング130は、命令「LD R8,(R0)」と命令「ADD R10,R3,R4」と命令「ADD R13,R6,R7」を発行可能キュー210にキューイングする。また、レジスタリネーミング130は、ソースオペランドが先行するロード命令に依存せず、かつ、ソースオペランドが有効でない命令をリザベーションステーション160に登録する。つまり、レジスタリネーミング130は、命令「ADD R12,R10,R5」と命令「ST (R13),R7」をリザベーションステーション160に登録する。
以上のように、本実施形態で説明した構成によると、図6に示す命令列中の最後の命令までリザベーションステーション160に登録出来ているのが分かる。
このように、本実施形態におけるプロセッサコア200は、第1の実施形態で説明したプロセッサコア100が有する構成に加えて、発行可能キュー210を有している。このような構成により、レジスタリネーミング130は、ソースオペランドが有効な場合に、リザベーションステーション160をバイパスして、発行可能キュー210に命令をキューイングすることが可能となる。その結果、所定の命令のリザベーションステーション160への登録をバイパスさせることが可能となり、リザベーションステーション160への登録を効率的に行うことが可能となる。これにより、リザベーションステーション160を有効に利用して、演算器170の利用効率を向上させることが可能となる。
[第3の実施形態]
次に、本発明の第3の実施形態について、図11を参照して説明する。図11は、ステータス表342の構成の一例について説明する。
第3の実施形態では、第1の実施形態で説明したステータス表142の変形例であるステータス表342について説明する。本実施形態において説明するステータス表342は、物理レジスタの値と、有効/無効と、命令と、ロード依存と、に加えて、ストア依存を対応付けている。つまり、ステータス表342は、第1の実施形態で説明したステータス表142が有する項目に追加して、ストア依存の項目を有している。本実施形態の場合、後述するように、命令発行時にストア依存有の命令が優先的に発行される。
図11中のストア依存の項目は、ストア命令に依存しているか否か示している。ストア依存が「1」である場合、対応する物理レジスタにストア依存が有ることを示している。例えば、レジスタリネーミング130は、ストア命令のリネーミング時に、ソースオペランドの物理レジスタに対してストア依存有とする。
本実施形態の場合、ストア依存有の命令は優先的に発行される。例えば、発行可能キュー210は、自身にキューイングされている命令のうちストア依存有の命令を優先的に発行する。このようにストア命令を早く発行することにより、レジスタリネーミング130は、命令発行を効率化している。
ここで、より具体的に、図4、図6で例示した命令列を実行した場合について説明する。
リネーミング中、レジスタリネーミング130は、命令のソースオペランドを参照する。そして、レジスタリネーミング130は、参照した結果に応じて、命令をロード依存キュー150にキューイングするか、リザベーションステーション160に登録するか、発行可能キュー210にキューイングするか、判断する。
例えば、レジスタリネーミング130は、命令のソースオペランドを参照して(図10のステップS102)、ソースオペランドが先行するロード命令に依存しているか否か確認する。例えば、レジスタリネーミング130は、ソースオペランドが先行するロード命令に依存している場合(ステップS103、Yes)、つまり、対応する物理レジスタにロード依存がある場合、命令をロード依存キュー150にキューイングする(ステップS104)。一方、ロード依存が無い場合(ステップS103、No)、レジスタリネーミング130は、ソースオペランドが有効であるか否か確認する(ステップS201)。ソースオペランドが有効である場合、レジスタリネーミング130は、命令を発行可能キュー210にキューイングする(ステップS202)。なお、本実施形態の場合、発行可能キュー210は、自身にキューイングされている命令のうちストア依存有の命令を優先的に発行する。一方、ソースオペランドが有効でない場合、レジスタリネーミング130は、命令をリザベーションステーション160に登録する(ステップS105)。
具体的には、図5で示す命令列の場合、命令「ADD R9,R1,R8」と命令「ADD R11,R9,R2」は、ソースオペランドが先行するロード命令に依存する。そのため、レジスタリネーミング130は、命令「ADD R9,R1,R8」と命令「ADD R11,R9,R2」をロード依存キュー150にキューイングする。また、図5のうち、命令「LD R8,(R0)」と命令「ADD R10,R3,R4」と命令「ADD R13,R6,R7」は、ソースオペランドが先行するロード命令に依存せず、かつ、ソースオペランドが有効である(図7参照)。そのため、レジスタリネーミング130は、命令「LD R8,(R0)」と命令「ADD R10,R3,R4」と命令「ADD R13,R6,R7」を発行可能キュー210にキューイングすることになる。なお、発行可能キュー210においては、ストア依存有の命令が優先的に発行される。そのため、上記3つの命令のうち命令「ADD R13,R6,R7」が優先的に発行されることになる。また、レジスタリネーミング130は、ソースオペランドが先行するロード命令に依存せず、かつ、ソースオペランドが有効でない命令をリザベーションステーション160に登録する。つまり、レジスタリネーミング130は、命令「ADD R12,R10,R5」と命令「ST (R13),R7」をリザベーションステーション160に登録する。
以上のように、本実施形態で説明した構成によると、ストア依存のある命令を優先的に発行している。
このように、本実施形態の場合、ステータス表342にストア依存の項目を有している。このような構成により、発行可能キュー210などはストア依存がある命令を優先的に発行することが出来るようになる。このようにストア命令を早く実行することで、命令発行を効率化することが出来る。
なお、本実施形態においては、発行可能キュー210がストア依存に基づいて命令発行の優先度を変更する場合について例示した。しかしながら、ストア依存に基づく処理は、本実施形態で例示した場合に限定されない。例えば、リザベーションステーション160が命令を発行する際にストア依存の有無を確認するよう構成しても構わない。また、例えば、レジスタリネーミング130がストア依存を確認してキューイングする順番などを制御するよう構成しても構わない。
また、本実施形態で説明したステータス表342は、第1の実施形態で説明したプロセッサコア100が有しても構わないし、第2の実施形態で説明したプロセッサコア200が有しても構わない。
[第4の実施形態]
次に、図12を参照して、本発明の第4の実施形態について説明する。第4の実施形態では、プロセッサコア40の構成の概要について説明する。
図12を参照すると、プロセッサコア40は、例えば、レジスタリネーミング41とリザベーションステーション42とロード依存キュー43とを有している。プロセッサコア40は、例えば、図示しない記憶装置に格納されたプログラムを演算装置が実行することで、上記各処理部を実現する。プロセッサコア40が有する各処理部は、ハードウェアにより実現されても構わない。
レジスタリネーミング41は、命令中の論理レジスタを物理レジスタに割り当てる。
リザベーションステーション42には、命令が登録される。リザベーションステーション42は、登録された命令のソースオペランドに対応する物理レジスタが有効になると当該命令を演算器に発行する。
ロード依存キュー43は、渡された命令を一時的に保持する。また、ロード依存キュー43は、命令中のソースオペランドが先行するロード命令に依存しなくなると、当該命令をリザベーションステーションに登録する。
また、上述したレジスタリネーミング41は、命令のソースオペランドが先行するロード命令に依存しているか否かに応じて、リザベーションステーション42に命令を登録するか、ロード依存キュー43に命令をキューイングする。つまり、レジスタリネーミング41は、命令のソースオペランドが先行するロード命令に依存しているか否かに応じて、命令をリザベーションステーション42に登録するかロード依存キュー43にキューイングするか選択する。
このように、プロセッサコア40は、レジスタリネーミング41と、リザベーションステーション42と、ロード依存キュー43と、を有している。このような構成により、レジスタリネーミング41は、命令のソースオペランドが先行するロード命令に依存しているか否かに応じて、命令をリザベーションステーション42に登録するか、ロード依存キュー43にキューイングするか選択することが可能となる。これにより、例えば、レジスタリネーミング41は、ソースオペランドが先行するロード命令に依存している命令をロード依存キュー43にキューイングすることが出来る。これにより、例えば、ロード命令に依存する命令のみがリザベーションステーション42に登録されてリザベーションステーション42から新規の命令発行が出来なくなる事態が発生するおそれを低減することが可能となる。換言すると、上記構成により、リザベーションステーション42を効率的に活用することが可能となる。その結果、演算器170を効率的に活用することが可能となる。
また、上述したプロセッサコア40は、当該プロセッサコア40に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、命令が登録され、登録された命令のソースオペランドに対応する物理レジスタが有効になると当該命令を演算器に発行するリザベーションステーションと、渡された命令を一時的に保持するとともに、命令中のソースオペランドが先行するロード命令に依存しなくなると、当該命令をリザベーションステーションに登録するロード依存キューと、を有するプロセッサコアに、命令中の論理レジスタを物理レジスタに割り当てるレジスタリネーミングを実現させ、レジスタリネーミングは、命令のソースオペランドが先行するロード命令に依存しているか否かに応じて、リザベーションステーションに命令を登録するか、ロード依存キューに命令をキューイングする処理を実現させるためのプログラムである。
また、上述したプロセッサコア40により実行される命令制御方法は、プロセッサコアが、命令のソースオペランドが先行するロード命令に依存しているか否か確認して、ソースオペランドが先行するロード命令に依存している命令を、登録された命令のソースオペランドに対応する物理レジスタが有効になると当該命令を演算器に発行するリザベーションステーションに登録し、ソースオペランドが先行するロード命令に依存していない命令を、渡された命令を一時的に保持するとともに、命令中のソースオペランドが先行するロード命令に依存しなくなると、当該命令をリザベーションステーションに登録するロード依存キューにキューイングする、という方法である。
上述した構成を有する、プログラム、又は、命令制御方法、の発明であっても、上記プロセッサコア40と同様の作用を有するために、上述した本発明の目的を達成することが出来る。
<付記>
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるプロセッサコアなどの概略を説明する。但し、本発明は、以下の構成に限定されない。
(付記1)
命令中の論理レジスタを物理レジスタに割り当てるレジスタリネーミングと、
前記命令が登録され、登録された前記命令のソースオペランドに対応する物理レジスタが有効になると当該命令を演算器に発行するリザベーションステーションと、
前記命令を一時的に保持するとともに、前記命令中のソースオペランドが先行するロード命令に依存しなくなると、当該命令をリザベーションステーションに登録するロード依存キューと、
を有し、
前記レジスタリネーミングは、前記命令のソースオペランドが先行するロード命令に依存しているか否かに応じて、前記リザベーションステーションに前記命令を登録するか、前記ロード依存キューに前記命令をキューイングする
プロセッサコア。
(付記2)
付記1に記載のプロセッサコアであって、
前記レジスタリネーミングは、ソースオペランドが先行するロード命令に依存していない前記命令を前記リザベーションステーションに登録する
プロセッサコア。
(付記3)
付記1又は付記2に記載のプロセッサコアであって、
前記レジスタリネーミングは、ソースオペランドが先行するロード命令に依存している前記命令を前記ロード依存キューにキューイングする
プロセッサコア。
(付記4)
付記1から付記3までのいずれか1項に記載のプロセッサコアであって、
前記命令を一時保持するとともに、前記命令を演算器に発行する発行可能キューを有し、
前記レジスタリネーミングは、前記命令のソースオペランドが先行するロード命令に依存していない場合、ソースオペランドが有効であるか否かに応じて、当該命令を前記リザベーションステーションに登録するか、前記発行可能キューにキューイングする
プロセッサコア。
(付記5)
付記4に記載のプロセッサコアであって、
前記レジスタリネーミングは、ソースオペランドが有効である前記命令を前記発行可能キューにキューイングする
プロセッサコア。
(付記6)
付記4又は付記5に記載のプロセッサコアであって、
前記レジスタリネーミングは、ソースオペランドが有効でない前記命令を前記リザベーションステーションに登録する
プロセッサコア。
(付記7)
付記4から付記6までのいずれか1項に記載のプロセッサコアであって、
前記発行可能キュー又は前記リザベーションステーションのうちの少なくとも一つは、ストア命令に依存している前記命令を優先的に発行する
プロセッサコア。
(付記8)
付記1から付記7までのいずれか1項に記載のプロセッサコアであって、
物理レジスタの番号と、対応する物理レジスタにロード命令依存があるか否かを示すロード命令依存と、を対応づけたステータス表を記憶しており、
前記リザベーションステーションは、前記ステータス表を用いて前記命令のソースオペランドが先行するロード命令に依存しているか否か判断する
プロセッサコア。
(付記9)
命令が登録され、登録された前記命令のソースオペランドに対応する物理レジスタが有効になると当該命令を演算器に発行するリザベーションステーションと、前記命令を一時的に保持するとともに、前記命令中のソースオペランドが先行するロード命令に依存しなくなると、当該命令をリザベーションステーションに登録するロード依存キューと、を有するプロセッサコアに、
前記命令中の論理レジスタを物理レジスタに割り当てるレジスタリネーミングを実現させ、
前記レジスタリネーミングは、前記命令のソースオペランドが先行するロード命令に依存しているか否かに応じて、前記リザベーションステーションに前記命令を登録するか、前記ロード依存キューに前記命令をキューイングする
プログラム。
(付記10)
プロセッサコアが、
命令のソースオペランドが先行するロード命令に依存しているか否か確認して、ソースオペランドが先行するロード命令に依存している前記命令を、前記命令のソースオペランドに対応する物理レジスタが有効になると当該命令を演算器に発行するリザベーションステーションに登録し、ソースオペランドが先行するロード命令に依存していない前記命令を、前記命令を一時的に保持するとともに、前記命令中のソースオペランドが先行するロード命令に依存しなくなると、当該命令をリザベーションステーションに登録するロード依存キューにキューイングする
命令制御方法。
なお、上記各実施形態及び付記において記載したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されていたりする。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることが出来る。
100 プロセッサコア
110 命令フェッチ/デコードユニット
120 命令キュー
130 レジスタリネーミング
140 リネーミングテーブル
141 対応表
142 ステータス表
150 ロード依存キュー
160 リザベーションステーション
170 演算器
200 プロセッサコア
210 発行可能キュー
342 ステータス表
40 プロセッサコア
41 レジスタリネーミング
42 リザベーションステーション
43 ロード依存キュー


Claims (9)

  1. 命令中の論理レジスタを物理レジスタに割り当てるレジスタリネーミング手段と、
    前記命令が登録され、登録された前記命令のソースオペランドに対応する物理レジスタが有効になると当該命令を演算器に発行するリザベーションステーションと、
    前記命令を一時的に保持するとともに、前記命令中のソースオペランドが先行するロード命令に依存しなくなると、当該命令をリザベーションステーションに登録するロード依存キューと、
    を有し、
    前記レジスタリネーミング手段は、前記命令のソースオペランドが先行するロード命令に依存しているか否かに応じて、前記リザベーションステーションに前記命令を登録するか、前記ロード依存キューに前記命令をキューイングする
    プロセッサコア。
  2. 請求項1に記載のプロセッサコアであって、
    前記レジスタリネーミング手段は、ソースオペランドが先行するロード命令に依存していない前記命令を前記リザベーションステーションに登録する
    プロセッサコア。
  3. 請求項1又は請求項2に記載のプロセッサコアであって、
    前記レジスタリネーミング手段は、ソースオペランドが先行するロード命令に依存している前記命令を前記ロード依存キューにキューイングする
    プロセッサコア。
  4. 請求項1から請求項3までのいずれか1項に記載のプロセッサコアであって、
    前記命令を一時保持するとともに、前記命令を演算器に発行する発行可能キューを有し、
    前記レジスタリネーミング手段は、前記命令のソースオペランドが先行するロード命令に依存していない場合、ソースオペランドが有効であるか否かに応じて、当該命令を前記リザベーションステーションに登録するか、前記発行可能キューにキューイングする
    プロセッサコア。
  5. 請求項4に記載のプロセッサコアであって、
    前記レジスタリネーミング手段は、ソースオペランドが有効である前記命令を前記発行可能キューにキューイングする
    プロセッサコア。
  6. 請求項4又は請求項5に記載のプロセッサコアであって、
    前記レジスタリネーミング手段は、ソースオペランドが有効でない前記命令を前記リザベーションステーションに登録する
    プロセッサコア。
  7. 請求項4から請求項6までのいずれか1項に記載のプロセッサコアであって、
    前記発行可能キュー又は前記リザベーションステーションのうちの少なくとも一つは、ストア命令に依存している前記命令を優先的に発行する
    プロセッサコア。
  8. 請求項1から請求項7までのいずれか1項に記載のプロセッサコアであって、
    物理レジスタの番号と、対応する物理レジスタにロード命令依存があるか否かを示すロード命令依存と、を対応づけたステータス表を記憶しており、
    前記リザベーションステーションは、前記ステータス表を用いて前記命令のソースオペランドが先行するロード命令に依存しているか否か判断する
    プロセッサコア。
  9. プロセッサコアが、
    命令のソースオペランドが先行するロード命令に依存しているか否か確認して、ソースオペランドが先行するロード命令に依存している前記命令を、前記命令のソースオペランドに対応する物理レジスタが有効になると当該命令を演算器に発行するリザベーションステーションに登録し、ソースオペランドが先行するロード命令に依存していない前記命令を、前記命令を一時的に保持するとともに、前記命令中のソースオペランドが先行するロード命令に依存しなくなると、当該命令をリザベーションステーションに登録するロード依存キューにキューイングする
    命令制御方法。
JP2018058318A 2018-03-26 2018-03-26 プロセッサコア、命令制御方法、プログラム Active JP7102840B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018058318A JP7102840B2 (ja) 2018-03-26 2018-03-26 プロセッサコア、命令制御方法、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018058318A JP7102840B2 (ja) 2018-03-26 2018-03-26 プロセッサコア、命令制御方法、プログラム

Publications (2)

Publication Number Publication Date
JP2019169082A JP2019169082A (ja) 2019-10-03
JP7102840B2 true JP7102840B2 (ja) 2022-07-20

Family

ID=68108405

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018058318A Active JP7102840B2 (ja) 2018-03-26 2018-03-26 プロセッサコア、命令制御方法、プログラム

Country Status (1)

Country Link
JP (1) JP7102840B2 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004295195A (ja) 2003-03-25 2004-10-21 Japan Science & Technology Agency 命令発行方法及び装置、中央演算装置、命令発行プログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体
JP2015191660A (ja) 2014-03-28 2015-11-02 インテル・コーポレーション 動的アウトオブオーダプロセッサパイプラインを実装する方法および装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3475861B2 (ja) * 1999-06-29 2003-12-10 日本電気株式会社 データ処理装置
JP4830164B2 (ja) * 2009-07-07 2011-12-07 エヌイーシーコンピュータテクノ株式会社 情報処理装置及びベクトル型情報処理装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004295195A (ja) 2003-03-25 2004-10-21 Japan Science & Technology Agency 命令発行方法及び装置、中央演算装置、命令発行プログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体
JP2015191660A (ja) 2014-03-28 2015-11-02 インテル・コーポレーション 動的アウトオブオーダプロセッサパイプラインを実装する方法および装置

Also Published As

Publication number Publication date
JP2019169082A (ja) 2019-10-03

Similar Documents

Publication Publication Date Title
JP3724582B2 (ja) 命令実行ユニットのためのレジスタ・リネーミング回路
US9569214B2 (en) Execution pipeline data forwarding
TWI439930B (zh) 具選擇性啟動早期引退功能之失序執行微處理器
US20150277925A1 (en) Data processing apparatus and method for executing a stream of instructions out of order with respect to original program order
JPH07506445A (ja) スーパースケーラマイクロプロセサに於て命令をリタイアさせるシステム及び方法
US10649780B2 (en) Data processing apparatus and method for executing a stream of instructions out of order with respect to original program order
WO1993018450A1 (en) Register file backup queue
JP3689369B2 (ja) 2次リオーダ・バッファ・マイクロプロセッサ
US10372458B2 (en) Method and apparatus for a self-clocked, event triggered superscalar processor
US6266763B1 (en) Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values
JP5180285B2 (ja) プロセッサにおいて実行ステージに先立って命令を実行するためのシステムおよび方法
US20140129805A1 (en) Execution pipeline power reduction
US8977837B2 (en) Apparatus and method for early issue and recovery for a conditional load instruction having multiple outcomes
US10095518B2 (en) Allowing deletion of a dispatched instruction from an instruction queue when sufficient processor resources are predicted for that instruction
KR20220065048A (ko) 대기열 압축 해제
JP3816845B2 (ja) プロセッサ及び命令制御方法
JP7102840B2 (ja) プロセッサコア、命令制御方法、プログラム
US20100100709A1 (en) Instruction control apparatus and instruction control method
US7257698B2 (en) Instruction buffer and method of controlling the instruction buffer where buffer entries are issued in a predetermined order
WO1999027439A1 (fr) Systeme informatique
JP5093237B2 (ja) 命令処理装置
CN101706715B (zh) 指令调度装置和方法
US11194577B2 (en) Instruction issue according to in-order or out-of-order execution modes
JP7151439B2 (ja) 演算処理装置および演算処理装置の制御方法
JP6307975B2 (ja) 演算処理装置及び演算処理装置の制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210209

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220324

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220607

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220620

R151 Written notification of patent or utility model registration

Ref document number: 7102840

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151