JP2009053861A - プログラム実行制御装置 - Google Patents

プログラム実行制御装置 Download PDF

Info

Publication number
JP2009053861A
JP2009053861A JP2007218827A JP2007218827A JP2009053861A JP 2009053861 A JP2009053861 A JP 2009053861A JP 2007218827 A JP2007218827 A JP 2007218827A JP 2007218827 A JP2007218827 A JP 2007218827A JP 2009053861 A JP2009053861 A JP 2009053861A
Authority
JP
Japan
Prior art keywords
instruction
loop
branch
branch instruction
execution
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.)
Granted
Application number
JP2007218827A
Other languages
English (en)
Other versions
JP5043560B2 (ja
Inventor
Takenobu Tani
丈暢 谷
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.)
Panasonic Corp
Original Assignee
Panasonic 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 Panasonic Corp filed Critical Panasonic Corp
Priority to JP2007218827A priority Critical patent/JP5043560B2/ja
Priority to US12/194,783 priority patent/US7836289B2/en
Priority to CN201310136817.7A priority patent/CN103257849A/zh
Priority to CN200810210003.2A priority patent/CN101373427B/zh
Publication of JP2009053861A publication Critical patent/JP2009053861A/ja
Priority to US12/900,975 priority patent/US8015391B2/en
Application granted granted Critical
Publication of JP5043560B2 publication Critical patent/JP5043560B2/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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

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)

Abstract

【課題】少ない回路投資により、プロセッサで実行される様々な構造のループを制御適用対象とすることができ、ソフトウェア生産性を高めながら、性能向上および省電力化を実現する。
【解決手段】命令の条件実行のためのプレディケート機能を有するプロセッサによるプログラムの実行を制御するプログラム実行制御装置であって、プログラムは、ループ処理における繰り返しを制御するための分岐命令を含み、分岐命令は、さらに、ループ処理の1回後の繰り返し時に当該分岐命令を実行するか否かを示す実行可否条件を生成し、実行可否条件を、分岐命令を条件実行させるためのプレディケートフラグに反映させる命令であり、プログラム実行制御装置は、前記分岐命令の実行サイクルよりも前に、前記プレディケートフラグに反映された前記実行可否条件をもとに、当該分岐命令以降の命令実行のためにプロセッサの状態を先行的に変更するループ分岐予測装置38を備える。
【選択図】図1

Description

本発明は、単一または複数のマイクロプロセッサで実行されるプログラムを制御するプログラム実行制御装置に関する。
近年、デジタルテレビ、ビデオレコーダおよび携帯電話等のデジタル機器において、音声処理、オーディオ処理、動画処理および符号処理などのデジタル処理や、GUI操作処理を実行することや、JAVA(登録商標)対応等の様々な要求が増加している。これらの要求を実現するために、マイクロプロセッサ(マイクロコンピュータやマイクロコントローラやデジタル・シグナル・プロセッサ(DSP)を含む)などの情報処理装置が一般に利用されているが、アプリケーションの要求の増大に応じて処理能力を向上させるために、プロセッサの動作周波数の向上、マルチスレッド化およびマルチコア化等が行われている。これに伴い、プロセッサのパイプラインステージ段数、回路規模および消費電力は増加の一途を辿っている。
一般にパイプライン段数が増加すると、分岐命令実行時において新たな命令をフェッチするまでのペナルティサイクルが発生し性能低下の一因となる。アプリケーションプログラムの実行効率向上のために、特に処理の集中するループ部においてこの性能劣化を抑制する必要がある。性能劣化を抑制する目的で、ループ命令用の分岐命令では常に分岐成立(taken)するものであると静的に予測するとともに(静的分岐予測)、ループの先頭命令をループ用命令バッファに格納し、ループ末端から先頭への分岐時に発生するペナルティサイクルを抑制する方法が知られている(例えば、特許文献1参照。)。
図22は、プロセッサで実行されるプログラムの一例を示す図であり、図22(a)は、C言語で記述されたプログラムであり、図22(b)は、図22(a)に示されるプログラムに対応するアセンブリプログラムである。
例えば、図22(b)に示すプログラム例において、ループ末端の分岐命令(BRZ命令)における分岐成立時(この場合ループ先頭であるL_HEADラベル位置への分岐時)および分岐不成立時(BRZ命令より後続のST命令への実行遷移時)のそれぞれにおいて、ペナルティサイクルが発生し得る。
また、上述の静的分岐予測や、分岐履歴表(BHT)を使用した動的分岐予測においてすら回避できない、ループ最終周における分岐不成立(not−taken)によるペナルティサイクルを抑制するために、ループカウンタを用いてループ最終回を高い精度で予測し、最終周におけるループ終了時の分岐ペナルティを抑制する方法が知られている(例えば、特許文献2参照。)。
一方、増加する消費電力の抑制に関しては、やはりループ部分に着目し、ループ実行中には使用されない資源を停止させ電力削減を行う方法が知られている(例えば、特許文献3参照。)。
例えば、ループ対象箇所の命令を格納するループ用命令バッファを有するプロセッサでは、ループ実行中は、ループ用命令バッファに格納された命令を繰り返し実行するため、命令メモリからの命令フェッチが不要である。このため、キャッシュシステムを含めた命令メモリシステムを停止させることができ、省電力化を図ることができる。
また、パイプラインステージの増加にともなうペナルティサイクルの増加に起因する性能劣化を抑制するために、マルチスレッド指向のプロセッサが有効になりつつある(例えば、特許文献4参照。)。
特許第2987311号公報 特許第3570855号公報 特許第1959871号公報 特許第3716414号公報
しかしながら、分岐命令の種類に応じて常に予測方向を固定(例えばループ用分岐命令では常に分岐成立とする等)にする静的分岐予測や、過去の分岐成立頻度を元に次回の判定を予測する分岐履歴表などに基づく動的予測においても、ループ終了時の分岐では必ず予測ミスが発生し、分岐ペナルティを生じてしまう。
特に、近年のプロセッサのパイプラインステージ増加に伴うペナルティサイクル増加により、分岐予測ミスによる性能劣化の影響が大きくなっている。
また、アプリケーションの特性として、例えば動画コーデック規格の動向に見られるように、総処理量は増加するにも係らず、一度に処理する領域が小型化する傾向にある。例えば、従来の動画コーデック規格では、16画素角のデータが処理対象であったのに対し、新たな規格では4画素角のデータに対する処理が登場している。これは1つのループにおける処理サイクル数が減少する事を意味する。
さらに、プロセッサが実行可能な命令の並列度が向上する傾向にあることも、1つのループにおける処理サイクル数を減少させる事に拍車をかけている。
このように、アプリケーションの特性やプロセッサの並列実行可能数の向上により、1つのループにおける処理サイクル数が減少するのに対し、分岐ペナルティは増加する傾向にある。
例えば、ループ内の1周の命令実行サイクルが8サイクルで、ループ周回数が4回の場合、1つのループにおける処理サイクル数は32サイクルである。これに対し、例えば分岐ペナルティが4サイクルであれば、1つのループ実行のたびに、約1割強の実行性能劣化が生ずることとなる。
このようなループ処理における実行性能劣化を回避するために、例として示した特許文献2に代表される、ループカウンタを用いて最終周を予測する方法は、比較的高頻度に最終回を予測できるという意味で価値がある。しかしながら、適用対象、ソフトウェア生産性およびハードウェア実装資源投資において課題がある。
ループカウンタ方式において最終周予測が適用可能なループは、ループカウンタの増減値が、1またはハードウェアで予め固定されたステップ数でなければならない。現在のループカウンタ値をもとに、次回が最終周、すなわち減算カウンタ方式においては次回にカウンタ値が0以下となることを知るためには、上記制限が必須となる。
したがって、ループの種類によっては、ループカウンタを用いて最終周を予測する方法が適用できない。例えば、図23(a)に示すようにループ変数の増減値が1でない場合や、図23(b)に示すようにループ変数の増減値が所定のステップ数でない場合や、図23(c)に示すようにループ回数が予め決まらないwhileループのような場合や、図23(d)に示すように、ループ内からループ外への飛び出しが存在し得る場合には、最終周予測制御を適用する事ができない。
過去のDSP応用分野のように小規模なソフトウェアでは、ループのそれぞれを増分1のforループにアルゴリズム変更することも可能であった。しかし、現在のように大規模化したソフトウェア応用分野では、ソフトウェア生産性の観点からそのような個別のアルゴリズムチューニングが現実的ではなくなっている。また、本質的にアルゴリズム変更が不可能なケースも存在する。
また、ループカウンタによる予測方式は、単一スレッドのプログラム実行環境で、かつ最も深いforループのみを適用対象とする場合には実装回路規模を少なく実現できるが、多重ループやマルチスレッドを対象とする場合には回路投資の増加が避けられない。
例えば、3重のforループをループカウンタ方式で実現する場合、それぞれ3つのループごとのループカウンタ値を保持および管理する記録装置がハードウェア的に必要となる。物理的なカウンタ用レジスタをただ1つ用意し、ループの深さに応じてスタックメモリなどにループカウンタ値を退避させ、スタックメモリからループカウンタにループカウンタ値を復帰させる事も可能であるが、その処理を挿入するために処理サイクルを要し、プログラムの実行性能が劣化する。
この資源の増加はマルチスレッド型プロセッサでは特に顕著となる。これは、ループカウンタ用のスタックメモリを、プロセッサで同時に実行可能なスレッドの数だけ実装する必要があるためである。
またスタックメモリを利用するハードウェア構成以外に、特許文献2に示されるように、アドレス(プログラムカウンタ値)に対応づけられたテーブルを利用するハードウェア構成もあるが、この場合にもアドレス情報を含めて、必要回路規模が大きくなる。
このように、ループカウンタを用いた最終周予測制御は、過去の伝統的なDSP分野においては有効であったが、現在のように大規模ソフトウェア開発を前提とした高性能プロセッサにおいては、その適用対象、ソフトウェア生産性およびハードウェア投資の観点から有効では無くなっている。
本発明は上述の課題を解決するためになされたものであり、少ない回路投資により、プロセッサで実行される様々な構造のループを制御適用対象とすることができ、ソフトウェア生産性を高めながら、性能向上および省電力化を実現できるプログラム実行制御装置を提供することを目的とする。
上記目的を達成するために、本発明に係るプログラム実行制御装置は、命令の条件実行のためのプレディケート機能を有するプロセッサによるプログラムの実行を制御するプログラム実行制御装置であって、前記プログラムは、ループ処理における繰り返しを制御するための分岐命令を含み、前記分岐命令は、さらに、ループ処理の1回後の繰り返し時に当該分岐命令を実行するか否かを示す実行可否条件を生成し、当該実行可否条件を、当該分岐命令を条件実行させるためのプレディケートフラグに反映させる命令であり、前記プログラム実行制御装置は、前記分岐命令の実行サイクルよりも前に、前記プレディケートフラグに反映された前記実行可否条件をもとに、当該分岐命令以降の命令実行のためにプロセッサの状態を先行的に変更するプロセッサ状態変更手段を備えることを特徴とする。
この構成によると、プレディケートフラグにより、ループ処理が最終周か否かを判断することができる。このため、最終周の実行が終了するまでの間に、プロセッサの状態を先行的に変更することができる。例えば分岐方向や電力制御状態や命令発行条件を的確に変更可能であるため、分岐ペナルティサイクルに伴う性能劣化の抑制や、電力制御による省電力化や、命令発行数の動的制御によりシステム全体性能の向上を図ることができる。
また、このような制御はプレディケートフラグに基づいて行なうことができるため、少ない回路投資において、様々な構造のループを制御適用対象とすることができ、ソフトウェア生産性を高めながら、性能向上や省電力化を実現できる。
なお、本発明は、このような特徴的な手段を備えるプログラム実行制御装置として実現することができるだけでなく、プログラム実行制御装置に含まれる特徴的な手段をステップとするプログラム制御方法として実現したり、プログラム制御方法に含まれる特徴的なステップをコンピュータに実行させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、CD−ROM(Compact Disc-Read Only Memory)等の記録媒体やインターネット等の通信ネットワークを介して流通させることができるのは言うまでもない。
以上のように本発明によれば、ループ終了後のプロセッサ状態の変更として、例えば分岐方向や電力制御状態や命令発行条件を的確に変更可能であるため、分岐ペナルティサイクルに伴う性能劣化の抑制や、電力制御による省電力化や、命令発行数の動的制御によりシステム全体性能の向上を図ることができる。
特に、少ない回路投資において、様々な構造のループを制御適用対象とすることができ、ソフトウェア生産性を高めながら、性能向上や省電力化を実現できる。
以下、本発明の実施の形態を図面を参照して詳しく説明する。なお、図面において同一または相当する部分には同一の参照符号を付してその説明は繰り返さない。
(第1の実施形態)
図1は、本発明の第1の実施形態に係るプロセッサの構成を示すブロック図である。
プロセッサは、プログラムを実行する装置であり、命令フェッチ装置31と、命令メモリ32と、命令デコード装置33と、命令実行装置34と、レジスタファイル35と、データメモリ36と、プレディケートフラグ制御装置37と、ループ分岐予測装置38とを含む。
命令メモリ32は、プログラムを構成する複数の命令を記憶するメモリである。
命令フェッチ装置31は、命令メモリ32に記憶されている命令をフェッチする処理部である。命令フェッチ装置31は、命令が記憶されている命令メモリ32のアドレスである命令フェッチアドレスを、命令メモリ32に対して送出する。命令メモリ32は、受け取った命令フェッチアドレスに記憶されている命令を、命令フェッチ装置31に対して出力する。命令フェッチ装置31は、受け取った命令を場合に応じて並べ替え、命令デコード装置33に供給する。
命令デコード装置33は、供給された命令を解読し命令の内容に応じて、プロセッサ内の各ブロックへ、命令の動作を指示するための制御信号を送出する処理部である。
レジスタファイル35は、各種データを記憶する複数の汎用レジスタおよび複数の専用レジスタから構成される。
データメモリ36は、各種データを記憶するメモリである。
命令実行装置34は、算術論理演算器(ALU)および積和演算器(MAC)等の演算器ならびに各命令の動作を実現する専用回路から構成される処理部である。命令実行装置34は、命令デコード装置33から入力される命令に応じた制御信号の指示に基づき、レジスタファイル35やデータメモリ36との間で演算用データの入力を行い、これに対して演算を施し、命令に応じて演算結果をレジスタファイル35やデータメモリ36に出力する。
プレディケートフラグ制御装置37は、命令実行装置34による命令の条件付き実行のための条件フラグである複数のプレディケートフラグを有する。各々のプレディケートフラグは1ビットで構成され、条件が真であるか偽であるかを表す。プレディケートフラグには、例えば、命令実行装置34において、比較命令を実行した結果の真偽の結果が書き込まれる。
図2に、プレディケートフラグを用いたアセンブリプログラムの例を示す。図2におけるCMPEQ命令は、レジスタR0およびR1に記憶されている値が等しいか否かを判定し、等しい場合(真)には、指定したプレディケートフラグC0に1を書き込み、等しくない場合(偽)には、プレディケートフラグC0に0を書き込むものとする。図2の例では、3ステップ目のMOV命令は、プレディケートフラグC0の内容が1(真)である場合にのみ実行される。この様にプレディケート機能を使用することで、C言語におけるif文などの条件実行を表現することができる。なおここで示したプレディケート機能自体は、近年の命令並列度の高いプロセッサにおいては、一般的なものである。
図1において、ループ分岐予測装置38は、命令デコード装置33から出力される命令デコード情報と、プレディケートフラグ制御装置37から出力されるプレディケートフラグの値により、次回のループが最終周であることを示すループ最終周フラグを生成する処理部である。
命令フェッチ装置31は、命令デコード装置33からループ分岐命令の実行を指示された場合には、ループ分岐予測装置38から供給されるループ最終周フラグを参照し、この内容が無効(例えば値として0)を表していれば分岐が成立するものと判断(次回もループを実行するものと判断)して、分岐処理、即ち分岐先のアドレスに対する命令フェッチを行う。供給されたループ最終周フラグが有効(例えば値として1)を表していれば、命令フェッチ装置31は、今回がループの最終周であると判断し、分岐不成立と判断して分岐処理を行う。即ち、命令フェッチ装置31は、分岐先からではなく、プログラムカウンタの値として連続する後続のアドレスに対する命令フェッチと命令供給を行う。
図3に、本実施形態におけるループ用分岐命令を含むプログラムの例を示す。図3(a)は、C言語で記述されたプログラムであり、図3(b)は、図3(a)に示したプログラムに対応するアセンブリプログラムである。この例では、ループ変数の増減値が−2である。この例では、BLOOP命令が、ループ用分岐命令に相当する。つまり、BLOOP命令は、BLOOP命令が次に実行される際の実行可否条件を、ループ用分岐命令(ここでは、BLOOP命令)の1回前の実行時に生成し、この結果をプレディケートフラグに反映することを特徴とするループ用分岐命令に相当する。なおR4の初期値は、N−2である。
図3において、SETLB命令は、L_HEADラベルで示されたアドレスと、当該アドレスに対応する命令をループ用命令バッファのTR0番地に格納する。ループ用命令バッファを複数実装するプロセッサにおいては、TR0、TR1のように名称指定でそれぞれを識別する。
ここで、BLOOP命令の動作説明のために、C言語における機能表現を図4に示す。BLOOP命令は行頭の[C0]で示されるように、プレディケートフラグC0で条件実行指定されているので、プレディケートフラグC0が真であればBLOOP命令が実行され、偽であればBLOOP命令は実行されない。
BLOOP命令のオペランドでC0を指定しているため、R4が0以下であれば、C0には偽、そうでなければ真の値が書き込まれる。
さらに、オペランド指定されたR4,0x2によりR4から2を減算し、識別子TR0で指定したループ用命令バッファのアドレスに分岐が行われる。
BLOOP命令は、現在の命令実行において、次回の実行時の条件を直接生成することが特徴である。これにより、様々なループ条件下においても正確に次回の分岐予測を行うことができる。
ループ用分岐命令の実装は、条件生成方法に関してさまざまな形態が考えられる。上述の例ではレジスタR4が0以下であるか否かを判定しているが、値の一致判定やゼロ判定や符号判定などでも良い。上述の例では、指定したレジスタR4から即値を減算する機能を並列実行するが、これについてもこの演算内容に限る必要は無い。
なお、例示したBLOOP命令を用いても、例えば減算値を0x0とし、BLOOP命令より前に比較命令を置くことで、ループ回数が予め決定されないループ型のループ(C言語におけるwhileループ)に対する制御を実現する事ができる。
プレディケート機能を用いて、ループの条件生成を行うことにより、多重ループへ容易に対応することができる。例えば2重ループの例では、プレディケートフラグC0を内側ループ用、プレディケートフラグC1を外側ループ用として使用することにより、お互いを識別する事ができる。
また一般的な演算結果の特徴を示すフラグである、キャリーフラグやサインフラグやゼロフラグなどを使用する場合と異なり、プレディケートフラグを使用すれば、ループ内にループ判定以外の条件文が出現してもお互いを識別する事ができる。
図5に、第1の実施形態に係るプロセッサの実装回路の例を示す。
命令フェッチ装置31は、フェッチ用プログラムカウンタ41と、セレクタ42と、加算器43と、分岐ターゲットアドレス生成部44と、命令割当て装置45とを含む。
命令デコード装置33は、命令デコード回路46を含む。
プレディケートフラグ制御装置37は、複数のプレディケートフラグレジスタ52と、マルチプレクサ53とを含む。
ループ分岐予測装置38は、ループ最終周フラグレジスタ54を含む。
命令フェッチ装置31内のフェッチ用プログラムカウンタ(PC)41は、命令フェッチのためのアドレスを格納するレジスタである。フェッチ用プログラムカウンタ41から送出されたフェッチ用アドレスに基づき、命令メモリ32は、当該フェッチ用アドレスに記憶されている命令を命令フェッチ装置31に出力する。
命令フェッチ装置31内の命令割当て装置45は、フェッチした命令列の中から実行すべき命令を取り出し、命令デコード装置33に供給する。
命令デコード装置33内の命令デコード回路46は、供給された命令をデコードし、命令の動作ごとに適切な制御信号をプロセッサ内の各装置に供給する。
命令実行装置34は、図の例では演算器として、比較器(CMP)47と、算術論理演算器(ALU)48と、積和演算器(MAC)49とを含む。レジスタファイル35から読み出された演算用オペランドデータがオペランド読み出しバス50で選択され、各演算器に供給される。さらに各演算器で演算した演算結果がオペランド書き込みバス51経由でレジスタファイル35に書き込まれる。
実行する命令が比較命令の場合は、比較器47で比較演算が行われ、結果は1ビットの真/偽(true/false)の形でプレディケートフラグ制御装置37に出力され、命令で指定したC0からC3の識別番号に対応するプレディケートフラグレジスタ52に書き込まれる。
なお本実施形態では、プレディケートフラグをC0からC3の4レジスタの例を示しているが、当然ながら実装数は任意である。
通常のプレディケートの使用形態であるため図中には明記しないが、各プレディケートフラグレジスタ52の値は、命令実行可否の決定のために命令デコード装置33にて参照され、プレディケートフラグレジスタの値が偽の場合は、命令をNOPとしてデコードし命令を無効化する。
ループ用分岐命令を実行する場合は、ループ用分岐命令のオペランドで指定した識別番号(C0〜C3)に対応するプレディケートフラグレジスタ52の内容を、マルチプレクサ(MUX)53にて選択し、ループ分岐予測装置38に出力する。
ループ最終周フラグレジスタ54の内容は、マルチプレクサ53で選択されたプレディケートフラグの内容の反転値と、命令デコード装置33にてデコードされた命令がループ分岐命令であることを示す信号と、ループ実行中であることを示す信号の論理積により生成される。つまり、ループにおけるループ分岐命令の実行時に、プレディケートフラグが偽となった場合に、ループ最終周フラグレジスタ54の値が真(1)となる。
フェッチ用プログラムカウンタ41の内容は、加算器43でインクリメントされた値か、分岐ターゲットアドレス生成部44で生成された値かを、セレクタ42で選択された値により書き換えられる。
セレクタ42は、実行すべき命令が、ループ用分岐命令ではなく、かつその他の分岐命令でもない場合は、加算器43で生成されたインクリメント値を選択して出力する。
実行すべき命令がループ用分岐命令以外の分岐命令の場合には、セレクタ42は、分岐ターゲットアドレス生成部44で生成された値を選択する。
実行すべき命令がループ用分岐命令の場合には、ループ最終周フラグレジスタ54から出力されたループ最終周フラグの値が偽(0)の場合には分岐が成立すると判断し、セレクタ42は、分岐ターゲットアドレス生成部44で生成された値を選択する。当該ループ最終周フラグの値が真(1)の場合には、セレクタ42は、実行すべき命令がループの最終周に位置するために分岐が成立しないと判断し、加算器43で生成されたインクリメント値を選択する。
図6に、本実施形態のプロセッサの動作の一例を示す。
命令フェッチ装置31は、フェッチ用プログラムカウンタ41を参照し、命令メモリ32より命令をフェッチする(S1)。命令デコード装置33は、供給された命令をデコードする(S2)。
命令デコード装置33は、デコードした命令の内容をもとに、命令がループ用分岐命令以外の分岐命令か否かを判定する(S3)。命令がループ用分岐命令以外の分岐命令の場合には(S3でYES)、フェッチ用プログラムカウンタ41に、分岐ターゲットアドレス生成部44に記憶されている分岐先アドレスが格納され、命令フェッチ装置31は、分岐先アドレスに格納されている命令フェッチを行う(S10)。その後、命令デコード装置33にて、フェッチされた命令のデコードが行なわれる(S2)。
デコードした命令がループ用分岐命令以外の分岐命令ではない場合には(S3でNO)、命令デコード装置33は、デコードした命令がループ用分岐命令であるか否かを判断する(S4)。デコードした命令が、ループ用分岐命令ではない場合(S4でNO)、すなわち、ループ用分岐命令でもなく、かつ他の分岐命令でもない場合には、命令実行装置34にて当該命令の実行が行なわれる(S6)。その後、S1以降の処理が繰り返される。
デコードした命令がループ用分岐命令の場合には(S4でYES)、ループ分岐予測装置38は、当該命令が最終周予測された分岐命令か否かを判定する(S5)。これは、図5におけるループ最終周フラグレジスタ54の値をもとに判定する。最終周予測された状態であれば(S5でYES)、ループ先頭に戻るための分岐処理は行わず、即ちループ分岐不成立として、後続の命令を継続実行するために、命令実行装置34は、命令を実行した後、命令フェッチ装置31が後続アドレスの命令をフェッチする(S1)。
デコードした命令が、最終周予測された分岐命令で無いと判定された場合は(S5でNO)、ループ分岐予測装置38は、次回の分岐が最終周であるかを判定する(S7)。これは図5におけるループ最終周フラグレジスタ54の前段の論理回路において行われる。
次回の分岐が最終周である場合には(S7でYES)、ループ分岐予測装置38は、ループ最終周フラグレジスタ54に真をセットし(S8)、命令実行装置34が、当該命令を実行する(S9)。その後、分岐先アドレスの命令がフェッチされ(S10)、S2以降の処理が繰り返される。
次回の分岐が最終周でないと判断された場合は(S7でNO)、命令実行装置34が、当該命令を実行し(S9)、その後、S10、S2以降の処理が繰り返される。
次に、タイミング図を用いて命令の実行サイクルの関係について説明する。
まず説明の簡単のために、プロセッサのパイプラインステージを図7に示す構成とし、プログラムは図8のようにループ内が3サイクル(3命令)である場合について説明する。
図9は、ループ最終周における分岐予測が無い場合の、プロセッサの動作を示すタイミング図である。図中の#iは、ループ処理におけるi番目の繰り返しを示す。
まずループ最終周以外については、最終周から2回前のBLOOP命令である「BLOOP(#N−2)」から「LD(#N−1)」の間には、分岐予測ミスによるペナルティサイクルは発生しない。これは最終周以外の分岐は常に「成立」と予測するためである。
しかしながら、本来はループ終了であるはずの「BLOOP(#N)」においても、分岐が成立すると予測するため、ループ先頭への分岐が行われ「LD(#N+1)」以降についても命令フェッチと供給が行われる。
この例におけるプロセッサのパイプラインステージ構成においては、プレディケートによる条件判定サイクルが「EM」ステージであり、その場合には「t10」のサイクルにおいて始めて分岐が不成立であった事が判明する。
したがって、「t11」サイクルから、本来の次命令である「ST」命令のためのフェッチが開始される。「t8」から「t10」までに予測を誤ってフェッチ及び供給した命令は、パイプラインフラッシュ動作により実行はキャンセルされるが、無駄なサイクルが挿入されることによる性能劣化が生じる。
次に本実施形態の分岐予測動作について、図10を用いて説明する。
ループ最終周の2周前である「BLOOP(#N−2)」の命令により、R4レジスタは2減算され0となる。
続くループ最終周の1周前である「BLOOP(#N−1)」の命令では、R4レジスタが0以下となったため、プレディケートフラグC0の値を偽(0)に変更する。
さらに、ループ分岐予測装置38において、C0フラグの結果をもとに、ループ最終周フラグを生成する。本例では、C0フラグが偽となったことをうけて、ループ最終周予測が真となる。
これが次回の分岐命令が最終であることの予測生成に相当する。
命令フェッチ装置31では、後続のアドレスに対する命令フェッチを継続し、この命令フェッチは分岐予測により有効となるため、分岐最終周における命令フェッチのミスペナルティは発生しない。
さらに、最終周の「BLOOP(#N)」の条件判定サイクル「t11」において、ループの最終周予測が完了する。これにより、安全に最終周の予測を完了することができるため、異なるループに処理を進めても予測ミスによる性能劣化を引き起こすことがない。
また、対象ループ内の処理を実行中に割込みや例外が発生し、割込み処理ルーチンへ処理が移行する場合にも、予測の整合性を維持する必要がある。なぜなら、割込み処理ルーチンの中で、新たにループ構造が存在する場合に、ループ用分岐命令にて、割込み処理前のループ構造による分岐予測の結果を誤って使用してしまう可能性があるためである。
この予測結果の誤使用を防ぐためには、割込みや例外などの分岐や、ループ処理以外の分岐により、対象ループ外に処理が遷移する場合には、分岐予測を完了する構成をとることで実現が可能である。
図11に、ループ最終周予測に関する状態遷移の例を示す。すなわち、ループの開始時には、ループの最終周ではないことを示す状態62である。この状態において、BLOOP命令を実行することにより次回がループの最終周であると判定された場合には、ループの最終周であることを示す状態63に遷移する。この状態において、ループの最終周であり、かつBLOOP命令を実行することにより分岐が成立しないと判断された場合、ループの最終周以外のBLOOP命令を実行した場合、またはBLOOP命令以外の分岐命令を実行した場合には、状態62に遷移する。
さらに、分岐予測ミスが多発する場合には、分岐予測機能を抑制する機構を設けることで、安全なプロセッサ稼働を実現する事ができる。例えば、分岐予測ミスが所定の回数以上発生した場合には、分岐予測を行なわないようにすればよい。
次に、多重ループやループ内の条件分岐に対応するための構成について説明する。
図12と図13に2重ループを含むプログラムの一例を示す。図12は、C言語により記述されたプログラムであり、図13は図12に示したプログラムに対応するアセンブリプログラムである。
多重ループにおいて、分岐予測の誤判定を防ぐ単純な方法は最内ループのみを分岐予測の対象とすることである。
誤判定の例として、図13の例においては、外側ループにてC3を使用するBLOOP命令の実行時に、次回が最終周と判断してループ最終周フラグをセットしたとして説明する。
単にループ用分岐命令(BLOOP)のみを分岐命令の対象として検出する構成の場合には、外側ループによりループ最終周フラグがセットされた後、内側ループ用の初回のBLOOP命令を検出した際に、本来は分岐成立と扱うべきところを、誤って最終回として判断し、分岐不成立として動作を行ってしまう。
これを防ぐ方法として、現在予測対象としているループのプレディケートフラグ識別子(例ではC2やC3)が、前回のループ用分岐命令検出時の内容と一致するか否かを判定する構成を採ると良い。
他の構成方法として、分岐ターゲットレジスタ識別子(例ではTR0やTR1)が、前回のループ用分岐命令検出時の内容と一致するか否かを判定することもできる。
図13の例では、外側ループでは、プレディケート識別子としてC3が指定され、分岐ターゲットレジスタ識別子としてTR0が指定されている。
このいずれかの情報を保持しておき、新たなループ用分岐命令検出時に、当該情報とこの分岐命令用の識別子とを比較する。
上述の例では、多重ループにおいても、最も内側のループのみを分岐予測の対象とする構成であり、少ないハードウェアコスト下での実装に適した方法を示した。
さらに本発明では、本実施形態で示すループ用分岐命令を用いて、多重ループの外側のループ群においても、少ない回路投資にて正確なループ最終周の分岐予測を行うことができる。
図14に示すように、ループ用分岐命令に付随するプレディケートフラグ識別子ごとに、ループ最終周フラグを有するテーブルを用意する。
これにより、多重ループにおけるお互いのループ用分岐命令の区別が行える上、各々のループについて、ループ最終周であるかを判定する事ができる。
この方法のテーブル用ハードウェアに必要な回路資源はプレディケート毎にたかだか数bitであるため、単純なカウンタ方式においてプログラムカウンタ等の情報を多量に保持するテーブル構成と比べて、遙かに少コストで多重ループに対応したループ最終周予測を行なうことができるプロセッサを実現する事ができる。
図15には、プレディケートフラグ識別子のかわりに、分岐先のアドレスを保持する分岐ターゲットレジスタの識別子を用いて、ループを区別する構成例を示す。
以上のように本実施の形態によれば、ループの最終周よりも1つ前の繰り返しにおいて、次の繰り返しが最終周であることが予測され、分岐命令のプレディケートに利用される。このため、最終周では、分岐命令が実行されずに後続の命令を実行させるようにすることができる。よって、ループ終了後のプロセッサ状態の変更として、分岐方向を的確に変更可能である。このため、分岐ペナルティサイクルに伴う命令実行性能の劣化を抑制することができる。
(第2の実施形態)
第2の実施形態は、プロセッサの処理状態として、電力状態を変更することを特徴とする。
図16は、本発明の第2の実施形態に係るプロセッサの構成を示すブロック図である。
第2の実施形態に係るプロセッサは、図1に示した第1の実施形態に係るプロセッサの構成に加え、電力制御装置71を備えたものである。
電力制御装置71以外の処理部が行なう処理は、第1の実施形態と同様である。このため、その詳細な説明はここでは繰り返さない。
電力制御装置71は、ループ最終周フラグの情報をもとに電力制御を行う。
図17に、電力制御装置71の構成例を示す。ループ最終周フラグの値を反転させるインバータ71aと、インバータ71aの出力と、ループ実行中であることを示すループ実行中信号との論理積を演算するANDゲート71bと、ANDゲート71bの出力を反転させるインバータ71cとを含む。
この構成例では、最終周以外のループ実行時において、クロックイネーブル信号が0になり、それ以外の場合にはクロックイネーブル信号が1となる。ANDゲート81が、現クロック信号とクロックイネーブル信号との論理積を演算し、演算結果をゲーテッドクロック信号として命令メモリ32に供給することにより、最終周以外のループ実行時において、命令メモリ32へのクロック供給を停止することができる。また、ループの最終周においては、命令メモリ32へのクロック供給を再開させることができる。
一般に、例えばループ部を対象とした電力制御として、命令メモリシステムの停止制御が考えられる。例えば、ループ対象箇所の命令をループ用命令バッファに格納し、ループ実行中にはこのバッファから命令をフェッチさせることで、命令メモリシステムへのアクセスを不要とし、命令メモリシステムの動作を停止させることができる。
命令メモリシステムの停止は、簡単にはメモリへのアクセス要求信号の送出を抑制することで実現できる。さらに効果的な低電力化のためには、メモリシステムへのクロック供給自身を停止するクロックゲーティングを行うのが良い。
しかしながら、負荷の重いクロックラインへの論理挿入はプロセッサの動作速度向上に対するネックとなりやすく、高速プロセッサではその適用が困難となる。
そこで図17に示した構成を用いることで、ループ終了後の命令メモリシステムへのクロック供給の再開を、メモリへのアクセス要求が発生するよりも早いサイクルで充分な余裕をもって行うことができる。このため、高速プロセッサにおいても命令メモリシステムへのクロック停止による省電力化を実現する事ができる。
図18に、図17に示した電力制御装置71をパワーゲーティングに用いた構成を示している。
つまり、インバータ71cの出力をパワーゲートイネーブル信号として利用し、パワーゲートイネーブル信号が1の場合に電源を供給するようにしている。
LSIの製造プロセスの微細化に伴って増加の一途を辿っているリーク電流を削減するために、通常の論理用MOS回路に直列にリーク阻止用のトランジスタを挿入して電力制御を行うパワーゲーティングの方法が知られている。
この方法においても、パワーゲーティングのためのトランジスタへのスイッチ操作は高負荷であるために時間がかかるので、論理動作が必要となるよりもはるかに早いタイミングで、スイッチの開通操作が必要である。
そこで図18に示した構成を用いることにより、前述のクロックゲーティングへの適用と同様に、アクセスが必要となるよりも早いサイクルでパワーゲーティングの操作を先行的に行え、例えばループ実行中の命令メモリシステム全体のリーク電流削減を容易に行う事ができる。
以上のように本実施の形態によれば、ループ処理実行中に命令メモリ32へのクロック供給または電力供給を停止させるとともに、ループの再収集において、命令メモリ32へのクロック供給または電力供給を再開させることができる。このため、ループ終了後のプロセッサ状態の変更として、電力制御状態を先行的に変更可能である。よって、電力制御のためのペナルティサイクルに起因する性能劣化を伴わずに省電力化が可能である。
(第3の実施形態)
第3の実施形態は、プロセッサの処理状態として、命令発行制約を変更することを特徴とする。
図19は、本発明の第3の実施形態に係るプロセッサの構成を示すブロック図である。
第3の実施形態に係るプロセッサは、図1に示した第1の実施形態に係るプロセッサの構成に加え、命令発行制御装置101を備えたものである。
命令デコード装置33および命令発行制御装置101以外の処理部が行なう処理は、第1の実施形態と同様である。このため、その詳細な説明はここでは繰り返さない。
命令デコード装置33は、命令発行制御装置101から出力される制御信号に基づいて、命令発行を行なう。
命令発行制御装置101は、ループ最終周フラグの情報をもとに、命令デコード装置33での命令発行を制御する。
例えば、マルチスレッドパイプライン構成をとるプロセッサにおいては、スレッド毎の命令発行数を可変制御することで、プロセッサシステム全体のスループット性能の向上を図ることができる。
図20は、命令デコード装置33で発行される命令を時系列に示した図である。命令デコード装置33は、5つの命令を同時に発行できるものとする。
例えば、処理を集中的に素早く行うべきループ処理のスレッド(同図のスレッドA)には、ループ実行中(時刻t0およびt1)に命令発行数の割当てを多めにし、ループ外では(時刻t2、t3)、他のスレッド(同図のスレッドB)に命令発行数の割当てを譲ることで、全体の処理を効率化することができる。
本発明においては、ループ最終周の分岐判定が容易であるので、ループ以後の命令発行数を的確に変更することができる。
また、プログラム容量の削減のために、多bit長であるがフルセットの命令種類を有する命令フォーマットモードと、容量削減のために命令の組合せを限定したコンパクトなサブセットモードといった、複数の命令bit長の命令フォーマットを有するプロセッサを構成可能である。
このようなプロセッサにおいては、例えば、図21に示すように、通常は容量削減版命令フォーマットモードでプロセッサが動作し、ループのように処理能力が必要な局面において、フルセット版の命令フォーマットモードに切り替えることで、処理性能と命令メモリ容量の削減の両立を図ることができる。
本発明を用いれば、ループ最終周の判定が容易なので、この両立制御を容易にかつ的確に実現できる。
以上のように本実施の形態によれば、ループ終了後のプロセッサ状態の変更として、命令発行条件の的確な変更が可能である。このため、命令発行数の動的制御によりシステム全体の性能向上を実現可能である。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
本発明は、単一または複数構成からなるマイクロプロセッサ(マイクロコンピュータ,マイクロコントローラ,デジタルシグナルプロセッサを含む)を含む情報処理装置等に適用可能である。
本発明の第1の実施形態に係るプロセッサの構成を示すブロック図である。 プレディケートフラグを用いたアセンブリプログラムの一例を示す図である。 ループ用分岐命令を含むプログラムの例を示す。(a)は、C言語で記述されたプログラムであり、(b)は、(a)に示したプログラムに対応するアセンブリプログラムである。 ループ用分岐命令(BLOOP命令)の動作を説明するプログラムの一例を示す図である。 第1の実施形態に係るプロセッサの実装回路の一例を示す図である。 プロセッサの動作手順を説明するためのフローチャートである。 想定するプロセッサのパイプライン構成を説明するための表である。 プロセッサの動作手順を説明するためのプログラムの一例を示す図である。 プロセッサの動作手順を説明するためのタイミングチャートである。 プロセッサの動作手順を説明するためのタイミングチャートである。 プロセッサの制御手順を説明するための状態遷移図である。 多重ループを説明するプログラムの一例を示す図である。 多重ループを説明するプログラムの一例を示す図である。 多重ループにおける最終周判定を説明するための図である。 多重ループにおける最終周判定を説明するための図である。 本発明の第2の実施形態に係るプロセッサの構成を示すブロック図である。 第2の実施形態に係る電力制御装置の構成を示すブロック図である。 第2の実施形態に係る電力制御装置の構成を示すブロック図である。 本発明の第3の実施形態に係るプロセッサの構成を示すブロック図である。 第3の実施形態に係るプロセッサの適用例を示す図である。 第3の実施形態に係るプロセッサの適用例を示す図である。 プロセッサで実行されるプログラムの一例を示す図であり、(a)は、C言語で記述されたプログラムであり、(b)は、(a)に示されるプログラムに対応するアセンブリプログラムである。 ループ処理を含むプログラムの一例を示す図である。
符号の説明
31 命令フェッチ装置
32 命令メモリ
33 命令デコード装置
34 命令実行装置
35 レジスタファイル
36 データメモリ
37 プレディケートフラグ制御装置
38 ループ分岐予測装置
52 プレディケートフラグレジスタ
54 ループ最終周フラグレジスタ
71 電力制御装置
101 命令発行制御装置

Claims (11)

  1. 命令の条件実行のためのプレディケート機能を有するプロセッサによるプログラムの実行を制御するプログラム実行制御装置であって、
    前記プログラムは、ループ処理における繰り返しを制御するための分岐命令を含み、
    前記分岐命令は、さらに、ループ処理の1回後の繰り返し時に当該分岐命令を実行するか否かを示す実行可否条件を生成し、当該実行可否条件を、当該分岐命令を条件実行させるためのプレディケートフラグに反映させる命令であり、
    前記プログラム実行制御装置は、
    前記分岐命令の実行サイクルよりも前に、前記プレディケートフラグに反映された前記実行可否条件をもとに、当該分岐命令以降の命令実行のためにプロセッサの状態を先行的に変更するプロセッサ状態変更手段を備える
    ことを特徴とするプログラム実行制御装置。
  2. 前記プロセッサ状態変更手段は、前記プレディケートフラグが分岐命令が実行されないことを示している場合には、当該分岐命令の実行サイクルよりも前に、前記分岐命令以降の命令を前記プロセッサにフェッチさせる
    ことを特徴とする請求項1に記載のプログラム実行制御装置。
  3. 前記プロセッサ状態変更手段は、前記プレディケートフラグが分岐命令が実行されることを示している場合には、前記プログラムを記憶しているメモリへの電力供給またはクロック供給を停止させ、前記プレディケートフラグが分岐命令が実行されないことを示している場合には、当該分岐命令の実行サイクルよりも前に、前記メモリへの電力供給またはクロック供給を再開させる
    ことを特徴とする請求項1に記載のプログラム実行制御装置。
  4. 前記プロセッサ状態変更手段は、前記プレディケートフラグが示す実行可否条件に応じて、前記プロセッサによる命令発行に関する制約条件を変更する
    ことを特徴とする請求項1に記載のプログラム実行制御装置。
  5. 前記プロセッサ状態変更手段は、前記プレディケートフラグに基づいて、ループ処理における繰り返し処理の最終周を判断し、最終周の繰り返し処理を実行した後は、当該分岐命令により制御されるループ処理に対する処理を行なわない
    ことを特徴とする請求項1に記載のプログラム実行制御装置。
  6. 前記分岐命令は、当該分岐命令の条件実行のためのプレディケートをオペランドにより指定し、
    前記プロセッサ状態変更手段は、プレディケートフラグの一致を利用して、ループ処理における繰り返しの最終周を判断する
    ことを特徴とする請求項5に記載のプログラム実行制御装置。
  7. 前記分岐命令は、当該分岐命令実行時の分岐先のアドレスを保持する分岐ターゲットレジスタの識別子をオペランドで指定し、
    前記プロセッサ状態変更手段は、分岐ターゲットレジスタの一致を利用して、ループ処理における繰り返しの最終周を判断する
    ことを特徴とする請求項5に記載のプログラム実行制御装置。
  8. 前記プロセッサ状態変更手段は、前記プレディケートフラグに基づいて、ループ処理における繰り返し処理の最終周を判断した後に、当該プレディケートフラグに対応する分岐命令以外の分岐命令が発生した場合に、前記最終周の判断を終了する
    ことを特徴とする請求項5に記載のプログラム実行制御装置。
  9. 前記プロセッサ状態変更手段は、前記プレディケートフラグに基づいて、ループ処理における繰り返し処理の最終周を判断する際に、当該判断の誤りが回数以上発生した場合には、前記最終周の判断を終了する
    ことを特徴とする請求項5に記載のプログラム実行制御装置。
  10. 前記分岐命令は、当該分岐命令の条件実行のためのプレディケートをオペランドにより指定し、
    前記プロセッサ状態変更手段は、プレディケートフラグ毎に、前記プロセッサの状態の先行的変更処理を行なう
    ことを特徴とする請求項1に記載のプログラム実行制御装置。
  11. 前記プロセッサ状態変更手段は、
    前記分岐命令は、当該分岐命令実行時の分岐先のアドレスを保持する分岐ターゲットレジスタの識別子をオペランドで指定し、
    前記プロセッサ状態変更手段は、分岐ターゲットレジスタごとに、前記プロセッサの状態の先行的変更処理を行なう
    ことを特徴とする請求項1に記載のプログラム実行制御装置。
JP2007218827A 2007-08-24 2007-08-24 プログラム実行制御装置 Active JP5043560B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2007218827A JP5043560B2 (ja) 2007-08-24 2007-08-24 プログラム実行制御装置
US12/194,783 US7836289B2 (en) 2007-08-24 2008-08-20 Branch predictor for setting predicate flag to skip predicated branch instruction execution in last iteration of loop processing
CN201310136817.7A CN103257849A (zh) 2007-08-24 2008-08-22 程序执行控制装置
CN200810210003.2A CN101373427B (zh) 2007-08-24 2008-08-22 程序执行控制装置
US12/900,975 US8015391B2 (en) 2007-08-24 2010-10-08 Simultaneous multiple thread processor increasing number of instructions issued for thread detected to be processing loop

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007218827A JP5043560B2 (ja) 2007-08-24 2007-08-24 プログラム実行制御装置

Publications (2)

Publication Number Publication Date
JP2009053861A true JP2009053861A (ja) 2009-03-12
JP5043560B2 JP5043560B2 (ja) 2012-10-10

Family

ID=40383240

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007218827A Active JP5043560B2 (ja) 2007-08-24 2007-08-24 プログラム実行制御装置

Country Status (3)

Country Link
US (2) US7836289B2 (ja)
JP (1) JP5043560B2 (ja)
CN (2) CN103257849A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011161884A1 (ja) * 2010-06-25 2011-12-29 パナソニック株式会社 集積回路、コンピュータシステム、制御方法
KR101126001B1 (ko) * 2009-06-01 2012-03-20 후지쯔 가부시끼가이샤 정보 처리 장치 및 분기 예측 방법
JP2013541758A (ja) * 2010-09-24 2013-11-14 インテル・コーポレーション 命令フェッチユニットの電力を落とすことによりプロセッサ内の電力消費を低下させる方法および装置
US9703559B2 (en) 2011-11-09 2017-07-11 Nec Corporation Digital signal processor, program control method, and control program

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102349276B (zh) * 2009-03-12 2014-07-02 Nec欧洲有限公司 支持用户或实体的分布式数据的管理和交换的方法
US10698859B2 (en) 2009-09-18 2020-06-30 The Board Of Regents Of The University Of Texas System Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture
US10360039B2 (en) * 2009-09-28 2019-07-23 Nvidia Corporation Predicted instruction execution in parallel processors with reduced per-thread state information including choosing a minimum or maximum of two operands based on a predicate value
US8887142B2 (en) 2010-03-10 2014-11-11 Microsoft Corporation Loop control flow diversion
WO2011159309A1 (en) * 2010-06-18 2011-12-22 The Board Of Regents Of The University Of Texas System Combined branch target and predicate prediction
US8762783B2 (en) * 2010-06-24 2014-06-24 International Business Machines Corporation Error identification
RU2461051C2 (ru) * 2010-07-27 2012-09-10 Государственное образовательное учреждение высшего профессионального образования "Воронежский государственный технический университет" Способ обнаружения случайных "блужданий" в микроэвм
CN101930358B (zh) * 2010-08-16 2013-06-19 中国科学技术大学 一种单指令多数据流结构上的数据处理方法及处理器
US9588881B2 (en) * 2011-05-16 2017-03-07 Cypress Semiconductor Corporation Stack processor using a ferroelectric random access memory (F-RAM) for code space and a portion of the stack memory space having an instruction set optimized to minimize processor stack accesses
US9910823B2 (en) 2011-05-16 2018-03-06 Cypress Semiconductor Corporation Stack processor using a ferroelectric random access memory (F-RAM) having an instruction set optimized to minimize memory fetch
US9501640B2 (en) * 2011-09-14 2016-11-22 Mcafee, Inc. System and method for statistical analysis of comparative entropy
US9158328B2 (en) 2011-12-20 2015-10-13 Oracle International Corporation Memory array clock gating scheme
WO2013156825A1 (en) * 2012-04-20 2013-10-24 Freescale Semiconductor, Inc. A computer system and a method for generating an optimized program code
US9256427B2 (en) 2012-12-11 2016-02-09 International Business Machines Corporation Tracking multiple conditions in a general purpose register and instruction therefor
US9411589B2 (en) 2012-12-11 2016-08-09 International Business Machines Corporation Branch-free condition evaluation
US9430369B2 (en) * 2013-05-24 2016-08-30 Coherent Logix, Incorporated Memory-network processor with programmable optimizations
US9633409B2 (en) 2013-08-26 2017-04-25 Apple Inc. GPU predication
US10133300B2 (en) 2014-01-08 2018-11-20 Microsoft Technology Licensing, Llc Control of predication across clock domains
US9519482B2 (en) * 2014-06-20 2016-12-13 Netronome Systems, Inc. Efficient conditional instruction having companion load predicate bits instruction
US10289417B2 (en) * 2014-10-21 2019-05-14 Arm Limited Branch prediction suppression for blocks of instructions predicted to not include a branch instruction
GB2540941B (en) * 2015-07-31 2017-11-15 Advanced Risc Mach Ltd Data processing
US10719321B2 (en) 2015-09-19 2020-07-21 Microsoft Technology Licensing, Llc Prefetching instruction blocks
US10776115B2 (en) 2015-09-19 2020-09-15 Microsoft Technology Licensing, Llc Debug support for block-based processor
US11681531B2 (en) 2015-09-19 2023-06-20 Microsoft Technology Licensing, Llc Generation and use of memory access instruction order encodings
US10936316B2 (en) 2015-09-19 2021-03-02 Microsoft Technology Licensing, Llc Dense read encoding for dataflow ISA
US11016770B2 (en) 2015-09-19 2021-05-25 Microsoft Technology Licensing, Llc Distinct system registers for logical processors
US10180840B2 (en) 2015-09-19 2019-01-15 Microsoft Technology Licensing, Llc Dynamic generation of null instructions
US10678544B2 (en) 2015-09-19 2020-06-09 Microsoft Technology Licensing, Llc Initiating instruction block execution using a register access instruction
US10768936B2 (en) 2015-09-19 2020-09-08 Microsoft Technology Licensing, Llc Block-based processor including topology and control registers to indicate resource sharing and size of logical processor
US10452399B2 (en) 2015-09-19 2019-10-22 Microsoft Technology Licensing, Llc Broadcast channel architectures for block-based processors
US11977891B2 (en) 2015-09-19 2024-05-07 Microsoft Technology Licensing, Llc Implicit program order
US11126433B2 (en) 2015-09-19 2021-09-21 Microsoft Technology Licensing, Llc Block-based processor core composition register
US10198263B2 (en) 2015-09-19 2019-02-05 Microsoft Technology Licensing, Llc Write nullification
US10871967B2 (en) 2015-09-19 2020-12-22 Microsoft Technology Licensing, Llc Register read/write ordering
US10275249B1 (en) * 2015-10-15 2019-04-30 Marvell International Ltd. Method and apparatus for predicting end of loop
WO2018149495A1 (en) * 2017-02-16 2018-08-23 Huawei Technologies Co., Ltd. A method and system to fetch multicore instruction traces from a virtual platform emulator to a performance simulation model
US10235173B2 (en) 2017-05-30 2019-03-19 Advanced Micro Devices, Inc. Program code optimization for reducing branch mispredictions
JP6885226B2 (ja) * 2017-07-03 2021-06-09 株式会社デンソー 電子制御装置
US10620961B2 (en) * 2018-03-30 2020-04-14 Intel Corporation Apparatus and method for speculative conditional move operation
US10831492B2 (en) 2018-07-05 2020-11-10 International Business Machines Corporation Most favored branch issue
US10990404B2 (en) * 2018-08-10 2021-04-27 Arm Limited Apparatus and method for performing branch prediction using loop minimum iteration prediction
US10915322B2 (en) * 2018-09-18 2021-02-09 Advanced Micro Devices, Inc. Using loop exit prediction to accelerate or suppress loop mode of a processor
US11392537B2 (en) * 2019-03-18 2022-07-19 Microsoft Technology Licensing, Llc Reach-based explicit dataflow processors, and related computer-readable media and methods
US20220197660A1 (en) * 2020-12-21 2022-06-23 Intel Corporation Context-based loop branch prediction
US11907718B2 (en) * 2020-12-31 2024-02-20 Micron Technology, Inc. Loop execution in a reconfigurable compute fabric using flow controllers for respective synchronous flows
US11663013B2 (en) 2021-08-24 2023-05-30 International Business Machines Corporation Dependency skipping execution
US20230098640A1 (en) * 2021-09-26 2023-03-30 Ceremorphic, Inc. Core Processor and Redundant Branch Processor with Control Flow Attack Detection
CN114510271B (zh) * 2022-02-09 2023-08-15 海飞科(南京)信息技术有限公司 用于在单指令多线程计算***中加载数据的方法和装置
US20240046543A1 (en) * 2022-08-05 2024-02-08 Qualcomm Incorporated Runtime mechanism to optimize shader execution flow

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04264923A (ja) * 1991-02-20 1992-09-21 Nec Corp 情報処理装置
JPH10333906A (ja) * 1997-05-29 1998-12-18 Hitachi Ltd 分岐予測装置
JP2002251282A (ja) * 2001-01-31 2002-09-06 Siroyan Ltd プロセッサにおけるループの処理
JP2004288016A (ja) * 2003-03-24 2004-10-14 Matsushita Electric Ind Co Ltd プロセッサおよびコンパイラ
JP2007207039A (ja) * 2006-02-02 2007-08-16 Matsushita Electric Ind Co Ltd メモリシステムおよびメモリアクセス制御方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0687358B2 (ja) 1986-04-04 1994-11-02 松下電器産業株式会社 Romの消費電力低減方法
JPH0486808A (ja) 1990-07-31 1992-03-19 Ricoh Co Ltd 液晶表示装置
JP2987311B2 (ja) * 1995-05-12 1999-12-06 松下電器産業株式会社 プロセッサ及び翻訳装置
US5909573A (en) * 1996-03-28 1999-06-01 Intel Corporation Method of branch prediction using loop counters
US6477562B2 (en) * 1998-12-16 2002-11-05 Clearwater Networks, Inc. Prioritized instruction scheduling for multi-streaming processors
US6571385B1 (en) * 1999-03-22 2003-05-27 Intel Corporation Early exit transformations for software pipelining
US6493741B1 (en) * 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit
GB2372847B (en) 2001-02-19 2004-12-29 Imagination Tech Ltd Control of priority and instruction rates on a multithreaded processor
US7000233B2 (en) 2003-04-21 2006-02-14 International Business Machines Corporation Simultaneous multithread processor with result data delay path to adjust pipeline length for input to respective thread
US7657893B2 (en) * 2003-04-23 2010-02-02 International Business Machines Corporation Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (SMT) processor
US7360062B2 (en) * 2003-04-25 2008-04-15 International Business Machines Corporation Method and apparatus for selecting an instruction thread for processing in a multi-thread processor
US7010676B2 (en) * 2003-05-12 2006-03-07 International Business Machines Corporation Last iteration loop branch prediction upon counter threshold and resolution upon counter one
EP1660998A1 (en) * 2003-08-28 2006-05-31 MIPS Technologies, Inc. Mechanisms for dynamic configuration of virtual processor resources
US7401206B2 (en) * 2004-06-30 2008-07-15 Sun Microsystems, Inc. Apparatus and method for fine-grained multithreading in a multipipelined processor core
US20080114975A1 (en) * 2006-11-10 2008-05-15 Hsueh-Bing Yen Method and processing system for nested flow control utilizing predicate register and branch register

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04264923A (ja) * 1991-02-20 1992-09-21 Nec Corp 情報処理装置
JPH10333906A (ja) * 1997-05-29 1998-12-18 Hitachi Ltd 分岐予測装置
JP2002251282A (ja) * 2001-01-31 2002-09-06 Siroyan Ltd プロセッサにおけるループの処理
JP2004288016A (ja) * 2003-03-24 2004-10-14 Matsushita Electric Ind Co Ltd プロセッサおよびコンパイラ
JP2007207039A (ja) * 2006-02-02 2007-08-16 Matsushita Electric Ind Co Ltd メモリシステムおよびメモリアクセス制御方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101126001B1 (ko) * 2009-06-01 2012-03-20 후지쯔 가부시끼가이샤 정보 처리 장치 및 분기 예측 방법
US8595474B2 (en) 2009-06-01 2013-11-26 Fujitsu Limited Information processing apparatus and branch prediction method
WO2011161884A1 (ja) * 2010-06-25 2011-12-29 パナソニック株式会社 集積回路、コンピュータシステム、制御方法
US8918664B2 (en) 2010-06-25 2014-12-23 Panasonic Corporation Integrated circuit, computer system, and control method, including power saving control to reduce power consumed by execution of a loop
JP5853216B2 (ja) * 2010-06-25 2016-02-09 パナソニックIpマネジメント株式会社 集積回路、コンピュータシステム、制御方法
JP2013541758A (ja) * 2010-09-24 2013-11-14 インテル・コーポレーション 命令フェッチユニットの電力を落とすことによりプロセッサ内の電力消費を低下させる方法および装置
US9703559B2 (en) 2011-11-09 2017-07-11 Nec Corporation Digital signal processor, program control method, and control program

Also Published As

Publication number Publication date
CN101373427B (zh) 2013-05-22
US20090055635A1 (en) 2009-02-26
US8015391B2 (en) 2011-09-06
JP5043560B2 (ja) 2012-10-10
US20110029763A1 (en) 2011-02-03
US7836289B2 (en) 2010-11-16
CN103257849A (zh) 2013-08-21
CN101373427A (zh) 2009-02-25

Similar Documents

Publication Publication Date Title
JP5043560B2 (ja) プログラム実行制御装置
US8301870B2 (en) Method and apparatus for fast synchronization and out-of-order execution of instructions in a meta-program based computing system
JP5313279B2 (ja) 非アラインドメモリアクセス予測
WO2015024452A1 (zh) 一种分支预测方法及相关装置
US7478228B2 (en) Apparatus for generating return address predictions for implicit and explicit subroutine calls
US6772355B2 (en) System and method for reducing power consumption in a data processor having a clustered architecture
US7444501B2 (en) Methods and apparatus for recognizing a subroutine call
JP2008530714A5 (ja)
TWI649693B (zh) 用於控制推測向量運算效能的資料處理設備、方法及電腦程式產品
JP2006313422A (ja) 演算処理装置及びデータ転送処理の実行方法
US7523295B2 (en) Processor and method of grouping and executing dependent instructions in a packet
WO2021027253A1 (zh) 用于多线程处理的方法、装置及***
JP4134179B2 (ja) ソフトウエアによる動的予測方法および装置
JP2000322257A (ja) 条件分岐命令の投機的実行制御方法
US20150370568A1 (en) Integrated circuit processor and method of operating a integrated circuit processor
CN112241288A (zh) 在硬件中检测条件分支的动态控制流重汇聚点
JP5316407B2 (ja) 演算処理装置および演算処理装置の制御方法
US11216278B2 (en) Multi-thread processing
JP2004145454A (ja) 情報処理装置及び情報処理方法
CN112559048B (zh) 一种指令处理装置、处理器及其处理方法
KR100837400B1 (ko) 멀티스레딩/비순차 병합 기법에 따라 처리하는 방법 및장치
WO2022036690A1 (zh) 一种图计算装置、处理方法及相关设备
CN112395000B (zh) 一种数据预加载方法和指令处理装置
CN113568663A (zh) 代码预取指令
EP4202664B1 (en) System, apparatus and method for throttling fusion of micro-operations in a processor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100304

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110829

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110913

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111110

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 5043560

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150720

Year of fee payment: 3