JP4141112B2 - プロセッサおよびプロセッサシステム - Google Patents
プロセッサおよびプロセッサシステム Download PDFInfo
- Publication number
- JP4141112B2 JP4141112B2 JP2001113931A JP2001113931A JP4141112B2 JP 4141112 B2 JP4141112 B2 JP 4141112B2 JP 2001113931 A JP2001113931 A JP 2001113931A JP 2001113931 A JP2001113931 A JP 2001113931A JP 4141112 B2 JP4141112 B2 JP 4141112B2
- Authority
- JP
- Japan
- Prior art keywords
- value
- instruction
- field
- predicted
- result
- 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
Links
- 238000000034 method Methods 0.000 claims description 62
- 238000010586 diagram Methods 0.000 description 15
- 230000000694 effects Effects 0.000 description 7
- 230000006399 behavior Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
- G06F9/3832—Value prediction for operands; operand history buffers
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)
- Memory System Of A Hierarchy Structure (AREA)
Description
【発明の属する技術分野】
本発明は、高性能コンピュータ・システムに係り、特に、命令の処理結果の値を予測し、予測結果を用いて後続命令の処理を行うコンピュータシステムに関する。
【0002】
【従来の技術】
高性能コンピュータ・システムにおいて、プログラムの実行時間を短縮するために、命令の処理順序を規定する制御依存関係とデータ依存関係をプログラムの結果が正しくなる範囲でできる限り実行時間が短くなるように並び替えることが行われている。
制御依存関係については、分岐命令の結果を予測することで、分岐方向が決定する前に、予測した分岐先の命令の処理を進めることが行われている。
これにより予測が成功すれば、データ依存関係のない命令は分岐命令の処理の終了にかかわらず処理可能となり、処理の高速化がはかられる。
予測が失敗した場合は、予測により実行された処理を取り消し、正しい分岐先の命令を再実行することでプログラムの実行結果を正しく保てる機構をもつ。
一方データ依存関係については、演算結果やデータ転送命令によりロードされるデータの値を予測することで処理性能の向上をはかる方法がある。
値予測の方法としては、前回と同一の値が繰り返されると予測する最終値予測、一定の差分でデータ値が変化していくと予測するストライド値予測、過去の値の振る舞いのパターンに対する相関を利用する2レベル値予測などの方式が知られている。
【0003】
【発明が解決しようとする課題】
値予測によるデータ依存関係の解消は、値が正しく予想されれば性能向上をはかれるが、間違った値を予測すると、値を予測しなかった場合に比べて性能が低下する可能性がある。
また、値の予測には通常、過去の履歴に基づく方式が利用されるため、命令によって値予測の成功率に大きな差があるのが通常であり、値予測の成功率の高いものにのみ選択的に値予測を行う必要がある。
本発明の目的は、値予測を行った方が処理性能が向上すると思われる命令を指定できるようにすることにある。
本発明の他の目的は、値予測を行う際の予測精度を向上することにある。
【0004】
【課題を解決するための手段】
上記目的を達成するため、本発明では、命令の一部に値予測を行うべきかどうかを指示するフィールドを設け、もしくは、命令キャッシュメモリに値予測を行うべきかどうかを指示するフィールドおよび値予測方式を指定するフィールドを併設し、値予測を行った方が処理性能が向上すると思われる命令を指定し、この命令をプロセッサで実行することにより、精度の高い予測を行うようにしている。
また、さらに、命令に値予測の結果を常に使用することを指示するフィールドを設け、この命令をプロセッサで実行することにより、処理の高速化をはかるようにしている。
また、上記のフィールドを備える命令からなるプログラムの内容にしたがって、該命令のフィールドの内容を設定するようにしている。
【0005】
【発明の実施の形態】
本発明による命令フォーマットの1実施例は図1に示す。
命令はオペコード(1)およびディスティネーションレジスタRD(2)、第1ソースレジスタRS1(3)、第2ソースレジスタRS2(4)に加えて、値予測フィールド(5)をもつ。
値予測フィールド(5)は、処理結果を予測する必要のある命令にのみ値予測フィールド(5)があればよく、すべての命令セットに必要であるというものではない。
値予測フィールド(5)は1ビットからなり、このビットが1ならば値予測を行い、0ならば値予測を無効化する。
図2は図1の命令フォーマットに追加して、さらに値予測方式フィールド(6)を備えたものである。
値予測方式フィールドはN個(Nは1以上の整数)の値予測方式から1つを選択するものである。
値予測方式フィールドも、処理結果を予測する必要のある命令で、さらに値予測器が複数ある場合で、その中の1つがその命令に対してより高い確率で値予測が可能である場合に、命令に付加されものであり、すべての命令セットに必要であるというものでない。
【0006】
本発明による、値予測フィールド(5)および値予測方式フィールド(6)をそなえた命令をもつコンピュータシステムの構成図を図3に示し、コンピュータシステムの動作をこの図3により説明する。
コンピュータシステムは、それぞれ値予測の方式が異なるN個の値予測器(12)、セレクタ13、値予測マスクゲート(14)、演算器(15)、レジスタ(16)を備える。
値予測フィールド(5)および値予測方式フィールド(6)を除いた命令の実行は演算器(15)で行われる。
それぞれ値予測の方式が異なるN個の値予測器(12)によるそれぞれの値予測結果のうち、値予測方式フィールド(6)により指定される値予測器の予測結果がセレクタ(13)で選択される。
選択された予測値は値予測フィールド(5)と値予測マスクゲート(14)で論理積がとられ、それが有効もしくは無効にされる。
有効となった予測値はレジスタ(16)に書き込まれ、後続の命令により演算器(15)で利用される。
ただし、演算器(15)による処理結果が予測値と異なった場合は、予測値が書き込まれたレジスタ(16)は無効化され、その予測値を使って処理された後続命令もキャンセルされる。
また、値予測フィールド(5)および値予測方式フィールド(6)に格納されたデータをオペコード(1)の中に符号化して組み込むこともでき、その場合命令フォーマット中には値予測フィールド(5)や値予測方式フィールド(6)は存在しなくなるが、オペコード(1)に含まれることになる。
【0007】
本発明の他の実施例は図4に示した命令キャッシュメモリ(20)である。
この命令キャッシュメモリ(20)は命令フィールド(7)に加えて、値予測フィールド(8)をもつ。
値予測フィールドは図1の値予測フィールド(5)と同様の意味を持つ。
図5は図4に加えて、命令キャッシュメモリ(20)の各命令に対して、値予測方式フィールド(9)を追加したものである。
この値予測方式フィールド(9)も図2の値予測方式フィールド(6)と同様の意味を持つ。
【0008】
図5の命令キャッシュメモリ(20)をもつコンピュータシステムの構成を図6に示し、このコンピュータシステムにおける命令処理手順をこの図6により説明する。
コンピュータシステムは、それぞれ値予測の方式が異なるN個の値予測器(12)、セレクタ13、値予測マスクゲート(14)、演算器(15)、レジスタ(16)、値予測結果判定器(17)、命令キャッシュメモリ(20)を備える。
値予測フィールド(8)および値予測方式フィールド(9)を除いた命令の実行は演算器(15)で行われる。
それぞれ値予測の方式が異なるN個の値予測器(12)のそれぞれの値予測結果のうち、命令キャッシュメモリ(20)から読み出された命令の値予測方式フィールド(9)により指定される値予測器の予測結果がセレクタ(13)で選択される。
選択された予測値は値予測フィールド(8)と値予測マスクゲート(14)で論理積がとられ、選択された予測値は有効もしくは無効にされる。
有効となった予測値はレジスタ(16)に書き込まれ、後続の命令により演算器(15)で利用される。
ただし、演算器(15)による処理結果が予測値と異なった場合は、予測値が書き込まれたレジスタ(16)は無効化され、その予測値を使って処理された後続命令もキャンセルされる。
演算器(15)と予測値の比較は値予測結果判定器(17)により判定され、その結果は命令キャッシュメモリ(20)に通知されて、該予測値に対応する命令キャッシュメモリ(20)内の命令の値予測フィールド(8)および値予測方式フィールド(9)のデータが更新される。これにより、命令キャッシュメモリ(20)内の命令が再度実行されるとき、更新された命令が実行されることになる。
【0009】
本発明が対象とする値予測器の実施例としては、図7、図8、図9が挙げられる。
図7の値予測器は最終値予測方式によるものであり、命令を特定するための値であるプログラムカウンタなどのインデックス値により値予測表のタグ(21)を引き、該当するインデックスの前回の値(Last Value:最終値)(22)を予測値とするものである。
この値予測器では、同じTagに対する予測値が常に同じ値をとる値、即ち、予測値が一定値をとる値、については正しく予測されるが、それ以外の値、即ち、予測値が常に同じ値とは言えない場合では正しく予測されないことがある。ただし、この値予測器では、ハードウェア量が少ないため実装が簡単である。
なお、図において、0x2020等における‘x’は16進数を表す。
【0010】
図8は図7に示した値予測器における最終値(Last Value)(22)にインターバル値(Interval)(23)を加えたものを予測値とする値予測器である。即ち、Last Valueを L とし、Intervalを I とした場合、L = L ± I により、L の値が変化してゆく。。
この値予測器では、図7の値予測器で正しく予測が可能な定数値の場合に加えて、一定のインターバルで値が増減するものについても正しく値予測できる。
ただし、インターバル値が一定で無い場合には正しく予測されないことがある。
この値予測器では、ハードウェア量は図7の値予測器に比べて増える。
【0011】
図9は2レベルの予測方式による値予測器であり、インデックス値による値予測表のタグ(21)を引きオフセット値(Offset Value)(24)と履歴情報(History)(25)を取り出す。
次に履歴情報(25)で履歴タグ(History Tag)(26)を引き、リンク値(Link Value)(27)を得る。
予測値はオフセット値(24)とリンク値(27)を加えたものとなる。
履歴情報(25)は、予測結果の正解、不正解により更新されるようにしてもよい。例えば、履歴情報(25)が‘0000’の場合、正解なら‘0000’とし、不正解なら‘0001’とする。
また、リンク値(27)も予測結果の正解、不正解により更新されるようにしてもよい。オフセット値(24)=1で、リンク値(27)=0なら予測値は‘1’であるが、実際の演算結果が‘2’である場合には、リンク値(27)を‘1’更新する。
この値予測器では、図7や図8の値予測器で正しく予測が可能な場合には、ほとんどの場合正しく予測でき、さらに通常は定数値であるが、ある間隔で異なった値に変化するケースなどで正しく予測が可能な場合がある。
図7や図8に示した値予測器に比べてハードウェア量は大きいが正しく予測される確率は一般的に高い特徴を持つ。
【0012】
図7、図8、図9で示した値予測器の実装例は、図3や図6における値予測器1〜Nの実装例である。
図3や図6では、これらの値予測器の中から、最終的な値予測を行う値予測器を値予測ごとに選択できる。
【0013】
図10、図11、図12は値予測が効果的に働く例(プログラムも表示)を示す。
図10に示した例では、アドレス0x2020においてレジスタr1の値が0に設定され、アドレス0x2024から0x2030までのループ処理において、r1の値は常に0となる。
またアドレス0x2024においてレジスタr2の値は常にレジスタr1に4を加えた値となるので、ループ処理中は常に4である。
同様にしてアドレス0x2028においてレジスタr3の値は常に8、アドレス0x202Cにおいてレジスタr4の値は常に12である。
よってアドレス0x2020、0x2024、0x2028、0x202Cのすべての命令の演算結果は常に定数となり、これは図7に示した値予測器によって正しく値予測が行われる。
【0014】
図11に示した例では、アドレス0x2024においてレジスタr1の値がループ処理ごとに1ずつ増える。
アドレス0x2028においてレジスタr2の値はレジスタr1の値に4を加えた値となるので、ループ処理ごとに1ずつ増える。
同様にしてアドレス0x202Cにおいてレジスタr3の値はループ処理ごとに1ずつ増え、アドレス0x2030においてレジスタr4の値もループ処理ごとに1ずつ増える。
図11に示した例は、図7に示した値予測器によって正しく予測することはできないが、図8に示した値予測器によって正しく予測することができる。
【0015】
図12に示した例では、アドレス0x2028においてレジスタr1の値がループ処理ごとに−1と+1を交互にとる。
アドレス0x202Cにおいてレジスタr2の値はレジスタr1の値に4を加えた値となるので,ループ処理ごとに3と5を交互にとる。
同様にしてアドレス0x2030においてレジスタr3の値はループ処理ごとに7と9を交互にとり、アドレス0x2034においてレジスタr4の値はループ処理ごとに11と13を交互にとる。
図12に示した例は、図7や図8に示した値予測器によって正しく予測することはできないが、図9に示した値予測器によって正しく予測することができる。
【0016】
図9の値予測器によって図12のプログラムの値予測を行った場合の、定常状態における値予測器の状態は図13に示したようになる。
図13において、Tagが0x2028のとき、オフセット値(24)=−1であり、履歴情報(25)は‘0101’で、リンク値(27)=2となり、予測値は‘1’となる。
予測値が正になる場合には、履歴情報(25)の‘0101’の末尾に‘0’を追加して左シフトし、履歴情報(25)を‘1010’にする。
この次にTagが0x2028になったとき、履歴情報(25)は‘1010’であるため、リンク値(27)=0となり、予測値は‘−1’となり、予測値は負になる。
予測値が負になる場合には、履歴情報(25)の‘1010’の末尾に‘1’を追加して左シフトし、履歴情報(25)を‘0101’にする。
そこで、この次にTagが0x2028になったとき、履歴情報(25)は‘0101’であるため、リンク値(27)=2となり、予測値は‘1’となり、予測値は正になる。
これにより、Tagが0x2028になる度に、予測値は‘1’と‘−1’の間で切り替わる。
【0017】
図10、図11、図12に示した例では、コンパイラプログラムがプログラムにおけるデータ依存関係を解析することにより、レジスタr1、r2、r3、r4の値が決定できるため、値予測器を使用しなくても処理速度を向上させられる。
しかし、図14、図15、図16に示すように図10、図11、図12におけるそれぞれのアドレス0x2020、0x2020、0x2024の命令がロード命令に置き換わった場合には、レジスタr1の値がコンパイラプログラムによる静的な解析では決定できないため、コンパイラプログラムによって処理速度を向上させることは困難である。
そこで、本発明による値予測をすべき命令としてのマーク(すなわち、図1または図2の命令フォーマットの値予測フィールドの値としての‘1’)を図14では0x2024〜0x202C、図15では0x2024〜0x2030、図16では0x2028〜0x2034の命令に対して付けることにより、値予測器によって正しく値予測が行われる可能性が高いことを示し、実際に値予測が正しく行われれば処理速度の向上が達成される。
【0018】
図1もしくは図2に示した命令をもつプロセッサの実行コードを作成するコード作成用プログラムでは、図14、図15、図16のプログラムを次のように解析して、値予測フィールド(5)、値予測方式(6)に値を設定する。
図14では、レジスタr1の値がプログラム中のループの外側にあるアドレス0x2020の命令で設定されており、ループの中では値が変更されないことがコード作成用プログラムによって解析することで分かる。
さらに、0x2024、0x2028、0x202Cの各add命令では、それぞれレジスタr1の値に定数0x4、0x8、0xCを加算しているため、これらの加算結果が格納されるレジスタr2、r3、r4はループ内で不変の値となることが分かる。
よって、前回の値を次回の値予測値とする図7の最終値予測方式の値予測器によって正しく値を予測することができるので、値予測フィールド(5)を値予測を有効とする意味を持つ1に設定し、値予測方式フィールド(6)には図7の最終値予測方式を指定する値をコード作成用プログラムによって設定する。
【0019】
図15では、プログラム中のループの内側にあるアドレス0x2024の命令でレジスタr1の値が毎回1ずつ加算されていることがコード作成用プログラムによって解析することで分かる。
よって、毎回一定値を加算して値予測値とする図8のインターバル値予測方式の値予測器によって正しく値を予測することができるので、アドレス0x2024の命令の値予測フィールド(5)を値予測を有効とする意味を持つ1に設定し、値予測方式フィールド(6)には図8のインターバル予測方式を指定する値をコード作成用プログラムによって設定する。
さらに、アドレス0x2028、0x202C、0x2030の各命令では、毎回一定値が加算されていくレジスタr1の値に定数値0x4、0x8、0xCをそれぞれ加算したデータをレジスタr2、r3、r4に格納していることがコード作成用プログラムによって解析することで分かる。
よってr2、r3、r4のデータも毎回一定値を加算して値予想値とする図8のインターバル値予測方式の値予測器によって正しく値を予測することができるので、アドレス0x2028、0x202C、0x2030の各命令の値予測フィールド(5)も値予測を有効とする意味を持つ1に設定し、値予測方式フィールド(6)には図8のインターバル値予測方式を指定する値をコード作成用プログラムによって設定する。
【0020】
図16では、プログラム中のループの内側にあるアドレス0x2028の命令でレジスタr1の値が交互に正負の値を繰り返し取ることがコード作成用プログラムによって解析することで分かる。
よって、前回までの値の履歴によって次の予測する値が決定される図9の2レベルの値予測方式の値予測器によって正しく値を予測することができるので、アドレス0x2028の命令の値予測フィールド(5)を値予測を有効とする意味を持つ1に設定し、値予測方式フィールド(6)には図9の2レベル値予測方式を指定する値をコード作成用プログラムによって設定する。
さらに、アドレス0x202C、0x2030、0x2034の各命令では、交互に値の正負が変化するレジスタr1の値に定数値0x4、0x8、0xCをそれぞれ加算したデータをレジスタr2、r3、r4に格納していることがコード作成用プログラムによって解析することで分かる。
よってr2、r3、r4のデータもr1のデータと同様にして図9の2レベル値予測方式の値予測器によって正しく値を予測することができるので、アドレス0x202C、0x2030、0x2034の各命令の値予測フィールド(5)も値予測を有効とする意味を持つ1に設定し、値予測方式フィールド(6)には図9の2レベル値予測方式を指定する値をコード作成用プログラムによって設定する。
【0021】
メディア処理など、処理の内容によっては、演算結果の真偽において精度が低いことが許される場合がある。
そのような場合には、演算結果を値予測によって決定して後続の処理を進めることで、処理速度の向上を実現することが可能である。
【0022】
図17は値予測の結果を常に使用するためのフィールドを備えた命令の実施例である。
図17で強制値予測(28)フィールドによって、この命令の処理結果は、値予測ができた場合には常に値予測結果を信用して、これを使用して後続の処理を継続する。
図18は、これと同様の機能を命令キャッシュに強制値予測(29)フィールドを備えることで実現した実施例である。
図19は、本発明による値予測を行うコンピュータシステムの一実施例である。
プログラムコード(30)は本発明の値予測関係フィールドをもった命令列を出力するコンパイラプログラム(31)によってコンパイルされ、この実行形式コードが命令キャッシュ(20)に登録される。
命令キャッシュ(20)からコードが実行されると、値予測方式フィールド(9)により値予測器が選択(12)され、さらに値予測フィールド(8)の値に応じてその結果の使用が決定(14)される。
一方この命令の演算は演算器(15)において並行して行われ、その結果と値予測の結果が比較(17)され、この結果に応じて命令中のフィールド値が更新(18)される。
【0023】
【発明の効果】
本発明によれば、値予測により性能向上がはかれる命令にのみ値予測を適用するための命令もしくは命令キャッシュメモリを用意することで、不必要な値予測による性能低下を押さえることができる。
また、より精度の高い値予測を行うのに必要な、値予測方式の選択を命令毎に可能とすることで、値予測を利用したコンピュータシステムの性能向上率を高めることができる。
【図面の簡単な説明】
【図1】本発明による値予測フィールドをもつ命令フォーマットを示す図である。
【図2】本発明による値予測フィールドおよび値予測方式フィールドをもつ命令フォーマットを示す図である。
【図3】本発明による図2に示す命令フォーマットをもつコンピュータシステムの構成を示す図である。
【図4】本発明による値予測フィールドをもつ命令キャッシュを示す図である。
【図5】本発明による値予測フィールドおよび値予測方式フィールドをもつ命令キャッシュを示す図である。
【図6】本発明による図5に示す命令キャッシュをもつコンピュータシステムの構成を示す図である。
【図7】本発明による値予測器の実施例を示す図である。
【図8】本発明による値予測器の他の実施例を示す図である。
【図9】本発明による値予測器のさらに他の実施例を示す図である。
【図10】値予測効果がある1番目のプログラム例を示す図である。
【図11】値予測効果がある2番目のプログラム例を示す図である。
【図12】値予測効果がある3番目のプログラム例を示す図である。
【図13】本発明による値予測器の別の実施例を示す図である。
【図14】値予測効果がある4番目のプログラム例を示す図である。
【図15】値予測効果がある5番目のプログラム例を示す図である。
【図16】値予測効果がある6番目のプログラム例を示す図である。
【図17】本発明による値予測フィールドおよび値予測方式フィールドおよび強制値予測フィールドをもつ命令フォーマットを示す図である。
【図18】本発明による値予測フィールドおよび値予測方式フィールドおよび強制値予測フィールドをもつ命令キャッシュを示す図である。
【図19】本発明によるコンピュータシステムの構成を示す図である。
【符号の説明】
5、8 値予測フィールド
6、9 値予測方式
10 値予測イネーブル信号線
11 値予測方式セレクト信号線
12 値予測器
13 値予測値セレクタ
14 値予測マスクゲート
15 演算器
16 レジスタ
17 値予測結果判定器
18 値予測結果判定信号線
30 プログラムコードを格納するディスク装置
31 コンパイラプログラム
32〜35 命令コード転送線
Claims (7)
- 命令の処理に先立ってもしくは並行してその命令の処理結果の値を予測し、予測された結果を使用して仮に後続の処理を行うことを許可する印をつけられるフィールドと、命令の処理結果の値を予測する方法を指定するフィールドと、命令の処理結果の値を予測し、その結果をその真偽に関わらず常に使用して処理を行うことを許可する印をつけられるフィールドを備える命令を実行する手段を有することを特徴とするプロセッサ。
- 請求項1記載のプロセッサにおいて、
命令の処理結果の値を予測した値を使用して実行した結果の真偽に応じてキャッシュメモリに格納された命令毎に用意されたフィールドの値を更新する手段を有することを特徴とするプロセッサ。 - 請求項1記載のプロセッサにおいて、
命令毎に、命令の処理結果の値を予測し、その結果をその真偽に関わらず常に使用して処理を行うことを許可する印をつけられるフィールドを備えることを特徴とするプロセッサ。 - 命令の処理に先立ってもしくは並行してその命令の処理結果の値を予測し、予測された結果(予測値)を使用して仮に後続の処理を行うことを許可する印をつけられる第1のフィールドと、命令の処理結果の値を予測する方法を指定する第2のフィールドを備える命令が格納されるキャッシュメモリと、
予測値を出力する複数の値予測手段と、
予測値を格納する格納手段と、
命令の処理結果と該命令の処理結果の予測値が一致するか否かを判定する判定手段と、
前記キャッシュメモリから読み出された命令の実行と、前記格納手段に格納された予測値を用いた後続命令の実行を行う演算手段を有し、
前記命令の第1のフィールドに前記許可する印がつけられているとき、該命令の第2のフィールドにより指定された値予測手段の予測値を前記格納手段と前記判定手段に出力し、
該命令に対する該判定手段の判定結果が不一致のとき、前記キャッシュメモリ中の該命令の第1のフィールド及び第2のフィールドのデータを更新することを特徴とするプロセッサ。 - 請求項4記載のプロセッサにおいて、
命令の処理結果の値を予測した値を使用して実行した結果の真偽に応じて前記キャッシュメモリに格納された命令毎に用意されたフィールドの値を更新する手段を有することを特徴とするプロセッサ。 - 請求項4記載のプロセッサにおいて、
前記キャッシュメモリに格納された命令毎に、命令の処理結果の値を予測し、その結果をその真偽に関わらず常に使用して処理を行うことを許可する印をつけられるフィールドを備えることを特徴とするプロセッサ。 - 命令の処理に先立ってもしくは並行してその命令の処理結果の値を予測し予測された結果を使用して仮に後続の処理を行うことを許可する印をつけられる第1のフィールドと、命令の処理結果の値を予測する方法を指定する第2のフィールドと、命令の処理結果の値を予測しその結果をその真偽に関わらず常に使用して処理を行うことを許可する印をつけられる第3のフィールドを備える命令を有するプログラムの該各命令の第1のフィールドの印を許可もしくは不許可に設定し、第2のフィールドに値を予測する方法を設定し、第3のフィールドの印を許可もしくは不許可に設定する設定手段と、該全ての設定の行われた各命令を実行する実行手段を有することを特徴とするプロセッサシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001113931A JP4141112B2 (ja) | 2001-04-12 | 2001-04-12 | プロセッサおよびプロセッサシステム |
US10/046,982 US6952765B2 (en) | 2001-04-12 | 2002-01-17 | Processor using a predicted result in executing a subsequent instruction regardless of whether a predicted value is true or false |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001113931A JP4141112B2 (ja) | 2001-04-12 | 2001-04-12 | プロセッサおよびプロセッサシステム |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2002312162A JP2002312162A (ja) | 2002-10-25 |
JP2002312162A5 JP2002312162A5 (ja) | 2006-06-15 |
JP4141112B2 true JP4141112B2 (ja) | 2008-08-27 |
Family
ID=18965086
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001113931A Expired - Fee Related JP4141112B2 (ja) | 2001-04-12 | 2001-04-12 | プロセッサおよびプロセッサシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US6952765B2 (ja) |
JP (1) | JP4141112B2 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6912649B2 (en) * | 2002-03-13 | 2005-06-28 | International Business Machines Corporation | Scheme to encode predicted values into an instruction stream/cache without additional bits/area |
JP4635193B2 (ja) * | 2004-11-30 | 2011-02-16 | 国立大学法人京都大学 | データ処理装置、データ処理プログラム、およびデータ処理プログラムを記録した記録媒体 |
JP4654433B2 (ja) * | 2004-11-08 | 2011-03-23 | 国立大学法人京都大学 | データ処理装置、データ処理プログラム、およびデータ処理プログラムを記録した記録媒体 |
EP1731998A1 (en) | 2004-03-29 | 2006-12-13 | Kyoto University | Data processing device, data processing program, and recording medium containing the data processing program |
US7219185B2 (en) * | 2004-04-22 | 2007-05-15 | International Business Machines Corporation | Apparatus and method for selecting instructions for execution based on bank prediction of a multi-bank cache |
US9658851B2 (en) | 2013-08-30 | 2017-05-23 | Think Silicon Sa | Device and method for approximate memoization |
US9110814B2 (en) * | 2013-08-30 | 2015-08-18 | Think Silicon Ltd | Device and method for eliminating complex operations in processing systems based on caching |
US20160092219A1 (en) * | 2014-09-29 | 2016-03-31 | Qualcomm Incorporated | Accelerating constant value generation using a computed constants table, and related circuits, methods, and computer-readable media |
US10705972B2 (en) * | 2016-09-13 | 2020-07-07 | Advanced Micro Devices, Inc. | Dynamic adaptation of memory page management policy |
CN112540795A (zh) * | 2019-09-23 | 2021-03-23 | 阿里巴巴集团控股有限公司 | 指令处理装置和指令处理方法 |
US20220342672A1 (en) * | 2021-04-27 | 2022-10-27 | Red Hat, Inc. | Rescheduling a load instruction based on past replays |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4755966A (en) * | 1985-06-28 | 1988-07-05 | Hewlett-Packard Company | Bidirectional branch prediction and optimization |
US5649137A (en) * | 1994-10-20 | 1997-07-15 | Advanced Micro Devices, Inc. | Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency |
US5659752A (en) * | 1995-06-30 | 1997-08-19 | International Business Machines Corporation | System and method for improving branch prediction in compiled program code |
US5996060A (en) * | 1997-09-25 | 1999-11-30 | Technion Research And Development Foundation Ltd. | System and method for concurrent processing |
JP2001056971A (ja) | 1999-08-19 | 2001-02-27 | Tdk Corp | 光ディスク媒体の製造方法および光ディスク媒体 |
-
2001
- 2001-04-12 JP JP2001113931A patent/JP4141112B2/ja not_active Expired - Fee Related
-
2002
- 2002-01-17 US US10/046,982 patent/US6952765B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6952765B2 (en) | 2005-10-04 |
JP2002312162A (ja) | 2002-10-25 |
US20020152368A1 (en) | 2002-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5193205A (en) | Pipeline processor, with return address stack storing only pre-return processed address for judging validity and correction of unprocessed address | |
US9557995B2 (en) | Data processing apparatus and method for performing segmented operations | |
CN204945992U (zh) | 一种处理器 | |
JP3594506B2 (ja) | マイクロプロセッサの分岐命令予測方法 | |
EP1267257A2 (en) | Conditional execution per data path slice | |
KR20130100900A (ko) | 조건부 비교 명령 | |
JP4141112B2 (ja) | プロセッサおよびプロセッサシステム | |
EP1267258A2 (en) | Setting up predicates in a processor with multiple data paths | |
KR100745889B1 (ko) | 보안 메시지 인증 제어 명령어의 처리 방법 | |
KR20180035211A (ko) | 벡터 산술 명령 | |
EP0093430A2 (en) | Pipeline data processing system | |
KR100316710B1 (ko) | 병렬 프로세서를 위한 무순서 명령어 발행 방법 및 장치 | |
US20040117606A1 (en) | Method and apparatus for dynamically conditioning statically produced load speculation and prefetches using runtime information | |
US7003651B2 (en) | Program counter (PC) relative addressing mode with fast displacement | |
JP6850888B2 (ja) | 分岐予測のために分岐履歴を判別する方法及びデバイス | |
JP2008527559A (ja) | プロセッサ及びその命令発行方法 | |
US7647368B2 (en) | Data processing apparatus and method for performing data processing operations on floating point data elements | |
US8484446B2 (en) | Microprocessor saving data stored in register and register saving method | |
US20070011440A1 (en) | Processor and processing method | |
US6044455A (en) | Central processing unit adapted for pipeline process | |
JP2006053830A (ja) | 分岐予測装置および分岐予測方法 | |
JP2806093B2 (ja) | ロード・ストア処理装置 | |
JP2000112754A (ja) | データ処理装置 | |
CN118132154A (zh) | 指令处理方法、程序编译方法、相关器件及设备 | |
CN113703842A (zh) | 一种基于分支预测的值预测方法、装置及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20040318 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060424 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060424 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061215 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070123 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070612 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070812 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080226 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080402 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20080424 |
|
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: 20080603 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080610 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110620 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |