JP2012221086A - 情報処理装置 - Google Patents
情報処理装置 Download PDFInfo
- Publication number
- JP2012221086A JP2012221086A JP2011084292A JP2011084292A JP2012221086A JP 2012221086 A JP2012221086 A JP 2012221086A JP 2011084292 A JP2011084292 A JP 2011084292A JP 2011084292 A JP2011084292 A JP 2011084292A JP 2012221086 A JP2012221086 A JP 2012221086A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- unit
- loop
- pointer
- end point
- 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.)
- Pending
Links
Images
Landscapes
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
【課題】 パイプライン処理の停止を低減するとともに、ループ処理が実施されている期間のアクセス効率を向上する。
【解決手段】 情報処理装置は、命令を取得するフェッチ部と、命令を解読するデコード部と、フェッチ部から出力される命令を順次記憶する書き込み動作と、ループ処理の範囲に対応する命令を繰り返し出力する読み出し動作とを切り替えて実施する命令バッファ部と、書き込み動作が実施されているとき、フェッチ部から出力される命令をデコード部に出力し、読み出し動作が実施されているとき、命令バッファ部から出力される命令をデコード部に出力する選択部とを有している。
【選択図】 図1
【解決手段】 情報処理装置は、命令を取得するフェッチ部と、命令を解読するデコード部と、フェッチ部から出力される命令を順次記憶する書き込み動作と、ループ処理の範囲に対応する命令を繰り返し出力する読み出し動作とを切り替えて実施する命令バッファ部と、書き込み動作が実施されているとき、フェッチ部から出力される命令をデコード部に出力し、読み出し動作が実施されているとき、命令バッファ部から出力される命令をデコード部に出力する選択部とを有している。
【選択図】 図1
Description
本発明は、情報処理装置に関する。
プロセッサ等の情報処理装置は、命令メモリから命令を取得するフェッチ部、命令をデコードするデコード部および命令を実行する実行部を有している。例えば、情報処理装置は、パイプライン処理を実施することにより、効率のよい動作を実現する。なお、パイプライン処理では、分岐命令が実行されたとき、分岐命令の次に実行される命令が確定するまで、フェッチ部は正しい命令を取得できない。このため、分岐命令が実行されたとき、パイプライン処理は停止する。この結果、パイプライン処理の効率は低下する。パイプライン処理の効率低下は、1回のループ処理で実施される命令に要するサイクル数が少ないほど顕著になる。
パイプライン処理の停止を低減するための技術として、例えば、分岐予測が知られている。また、パイプライン処理の停止を低減するために、分岐先の情報(例えば、分岐先の命令)を保持する記憶部を有するプロセッサが提案されている(例えば、特許文献1、特許文献2参照)。この種のプロセッサは、例えば、所定のループ処理が実施される前に、登録命令を用いて分岐先の情報を記憶部に保持する。記憶部に記憶された分岐先の情報は、例えば、所定のループ処理を示す命令がデコードされたとき、参照される。
フェッチ部は、例えば、命令を取得する際、命令メモリにバスを介してアクセスする。このため、ループ処理が実施されている期間では、バスを使用するアクセスは制限される。例えば、フェッチ部以外のモジュールは、ループ処理が実施されている期間、バスを使用したアクセスを効率よく実施できない。この結果、情報処理装置の処理効率は低下する。すなわち、情報処理装置の性能は、低下する。なお、ループ処理中のバスの使用効率は、パイプライン処理の停止を分岐予測等により低減した構成でも、改善されない。
本発明の目的は、パイプライン処理の停止を低減するとともに、ループ処理が実施されている期間のアクセス効率を向上することである。
本発明の一形態では、情報処理装置は、命令を取得するフェッチ部と、命令を解読するデコード部と、フェッチ部から出力される命令を順次記憶する書き込み動作と、ループ処理の範囲に対応する命令を繰り返し出力する読み出し動作とを切り替えて実施する命令バッファ部と、書き込み動作が実施されているとき、フェッチ部から出力される命令をデコード部に出力し、読み出し動作が実施されているとき、命令バッファ部から出力される命令をデコード部に出力する選択部とを有している。
パイプライン処理の停止を低減するとともに、ループ処理が実施されている期間のアクセス効率を向上できる。
以下、実施形態を図面を用いて説明する。
図1は、一実施形態における情報処理装置10の例を示している。例えば、情報処理装置10は、パイプライン処理を実施するプロセッサである。情報処理装置10は、例えば、フェッチ部20、命令バッファ30、選択部40およびデコード部50を有し、デコード部50により解読された命令CMDを実行する。なお、図1では、命令CMDfは、フェッチ部20から出力される命令CMDを示し、命令CMDbは、命令バッファ30から出力される命令CMDを示している。また、命令CMDmは、選択部40から出力される命令CMDを示している。
フェッチ部20は、例えば、命令メモリに保持されている命令CMDをフェッチ(取得)する。例えば、フェッチ部20は、命令CMDをフェッチする際、命令メモリにバスを介してアクセスする。そして、フェッチ部20は、フェッチした命令CMDを選択部40に出力する。
命令バッファ30は、例えば、リングバッファを有し、リングバッファに命令を書き込むための書き込み動作とリングバッファから命令を読み出すための読み出し動作とを切り替えて実施する。例えば、書き込み動作では、命令バッファ30は、フェッチ部20から選択部40に出力される命令CMDfをリングバッファに順次記憶する。また、例えば、読み出し動作では、命令バッファ30は、ループ処理の範囲に対応する命令CMDbを選択部40に繰り返し出力する。
選択部40は、フェッチ部20および命令バッファ30から命令CMD(CMDf、CMDb)を受ける。そして、選択部40は、例えば、命令バッファ30が書き込み動作を実施しているとき、フェッチ部20から出力される命令CMDfをデコード部50に出力する。また、選択部40は、例えば、命令バッファ30が読み出し動作を実施しているとき、命令バッファ30から出力される命令CMDbをデコード部50に出力する。
このように、選択部40は、デコード部50に出力する命令CMDmを、命令CMDfおよび命令CMDbから選択する。例えば、選択部40が出力する命令CMDmの選択は、命令バッファ30により制御される。なお、選択部40が出力する命令CMDmの選択は、デコード部50により制御されてもよい。
デコード部50は、選択部40から受けた命令CMDmの内容を解釈する。すなわち、デコード部50は、選択部40から受けた命令CMDmを解読する。例えば、デコード部50は、ループ処理のない通常の動作では、フェッチ部20から出力される命令CMDfを、選択部40を介して受ける。この際、命令バッファ30は、フェッチ部20から選択部40に出力される命令CMDfをリングバッファに順次記憶する。
そして、デコード部50は、例えば、ループ処理が発生したとき、命令バッファ30から出力される命令CMDbを、選択部40を介して受ける。例えば、1回目のループ処理では、デコード部50は、フェッチ部20から選択部40を介して命令CMDを受ける。そして、2回目以降のループ処理では、デコード部50は、命令バッファ30から選択部40を介して命令CMDを受ける。
例えば、情報処理装置10は、デコード部50が1回目のループ処理の分岐命令を解読したとき、ループ処理の先頭の命令CMDを命令バッファ30からデコード部50に選択部40を介して転送する。すなわち、命令バッファ30は、デコード部50が1回目のループ処理の分岐命令を解読したとき、書き込み動作から読み出し動作に切り替わる。これにより、この実施形態では、パイプライン処理の停止を低減できる。ここで、ループ処理の分岐命令とは、例えば、アドレス値の小さい方向に向かう分岐命令である。
また、フェッチ部20は、命令バッファ30が読み出し動作を実施している期間、命令メモリに保持されている命令CMDをフェッチしなくてもよい。例えば、フェッチ部20のフェッチ動作を停止するか否かの選択は、命令バッファ30により制御される。なお、フェッチ部20のフェッチ動作を停止するか否かの選択は、デコード部50により制御されてもよい。
フェッチ部20のフェッチ動作が停止しているとき、情報処理装置10は、バスを使用したアクセスを効率よく実施できる。したがって、情報処理装置10は、命令バッファ30が読み出し動作を実施している期間、バスを使用したアクセスを効率よく実施できる。これにより、この実施形態では、ループ処理が実施されている期間のアクセス効率を向上できる。
なお、命令バッファ30は、ループ処理の範囲の命令CMDを記憶していないとき、読み出し動作に切り替わらない。したがって、命令バッファ30がループ処理の範囲の命令CMDを記憶していないとき、デコード部50は、2回目以降のループ処理でも、フェッチ部20から選択部40を介して命令CMDを受ける。
以上、この実施形態では、情報処理装置10は、フェッチ部20からの命令CMDを順次記憶する書き込み動作とループ処理の範囲の命令CMDを選択部40を介してデコード部50に繰り返し出力する読み出し動作とを切り替えて実施する命令バッファ30を有している。これにより、この実施形態は、パイプライン処理の停止を低減するとともに、ループ処理が実施されている期間のアクセス効率を向上できる。
図2は、別の実施形態における情報処理装置12の一例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。情報処理装置12では、ループ処理の終了を判定する実行部60が図1に示した情報処理装置10に追加されている。また、情報処理装置12は、図1に示した命令バッファ30およびデコード部50の代わりに、命令バッファ32およびデコード部52を有している。したがって、図2では、例えば、命令CMDbは、命令バッファ32から出力される命令CMDを示している。情報処理装置12のその他の構成は、上述した実施形態と同じである。例えば、情報処理装置12は、パイプライン処理を実施するプロセッサである。
情報処理装置12は、フェッチ部20、命令バッファ32、選択部40、デコード部52および実行部60を有している。フェッチ部20は、例えば、命令メモリにバスを介してアクセスし、命令メモリに保持されている命令CMDをフェッチする。また、フェッチ部20は、例えば、ループ処理フラグLFLGを命令バッファ32から受ける。
そして、フェッチ部20は、ループ処理フラグLFLGが命令バッファ32の書き込み動作を示しているとき、命令メモリに保持されている命令CMDをフェッチし、フェッチした命令CMDを命令バッファ32および選択部40に出力する。また、フェッチ部20は、ループ処理フラグLFLGが命令バッファ32の読み出し動作を示しているとき、フェッチ動作を停止する。
また、フェッチ部20は、出力した命令CMDfが有効であることを示すフェッチ出力イネーブル信号FENを命令バッファ32に出力する。なお、フェッチ部20は、実行部60から受けるフラッシュ制御信号FLSHがアサートされたとき、フェッチ部20内に保持している命令CMD(フェッチした命令CMD)を破棄する。例えば、フラッシュ制御信号FLSHは、パイプラインフラッシュを実施するときに、アサートされる。
命令バッファ32は、例えば、リングバッファとして機能するバッファ部(図3のバッファ部BUF)を有している。そして、命令バッファ32は、バッファ部に命令CMDを書き込むための書き込み動作とバッファ部から命令CMDを読み出すための読み出し動作とを切り替えて実施する。例えば、命令バッファ32は、ループ検出信号LDETおよび分岐先アドレスBADRをデコード部52から受ける。
そして、命令バッファ32は、例えば、ループ検出信号LDETがアサートされたとき、分岐先アドレスBADR等に基づいて、書き込み動作から読み出し動作に切り替え可能か判定する。なお、ループ検出信号LDETは、1回目のループ処理の分岐命令を検出したことを示す信号である。また、分岐先アドレスBADRは、ループ処理の分岐先のアドレスを相対値で示すアドレス情報である。
例えば、命令バッファ32は、書き込み動作から読み出し動作に切り替え可能と判定したとき、ループ検出応答信号LDETRをアサートする。すなわち、命令バッファ32は、書き込み動作から読み出し動作に切り替え可能と判定したとき、読み出し動作に切り替わることを示すループ検出応答信号LDETRをデコード部52に出力する。そして、命令バッファ32は、ループ処理の範囲に対応する命令CMDbを選択部40に繰り返し出力する読み出し動作を実施するとともに、読み出し動作を示すループ処理フラグLFLGをフェッチ部20および選択部40に出力する。
例えば、読み出し動作では、命令バッファ32は、ループ処理の終点に対応する命令CMDbを選択部40に出力するとき、ループ終点信号LENDをアサートする。すなわち、命令バッファ32は、ループ処理の終点に対応する命令CMDbを選択部40に出力するとき、出力した命令CMDbがループ処理の終点に対応する命令であることを示すループ終点信号LENDをデコード部52に出力する。これにより、デコード部52は、ループの終点を簡易に検出できる。
また、命令バッファ32は、例えば、ループ処理の終了を示すループ終了通知LFINを実行部60から受けたとき、読み出し動作から書き込み動作に切り替える。そして、命令バッファ32は、書き込み動作を示すループ処理フラグLFLGをフェッチ部20および選択部40に出力する。例えば、書き込み動作では、命令バッファ32は、フェッチ部20から選択部40に出力される命令CMDfをバッファ部に順次記憶する。
ここで、命令バッファ32は、書き込み動作から読み出し動作に切り替え不可と判定したとき、読み出し動作に切り替わらない。例えば、命令バッファ32は、分岐先の命令CMDを記憶していないとき、読み出し動作に切り替わらない。したがって、命令バッファ32は、書き込み動作から読み出し動作に切り替え不可と判定したとき、ループ検出応答信号LDETRをアサートしない。
選択部40は、命令バッファ32から受けるループ処理フラグLFLGに基づいて、出力する命令CMDmを選択する。例えば、選択部40は、ループ処理フラグLFLGが命令バッファ32の書き込み動作を示しているとき、フェッチ部20から出力される命令CMDfをデコード部52に出力する。また、選択部40は、例えば、ループ処理フラグLFLGが命令バッファ32の読み出し動作を示しているとき、命令バッファ32から出力される命令CMDbをデコード部52に出力する。
デコード部52は、選択部40から受けた命令CMDmを解読する。そして、デコード部52は、解読結果を実行部60に出力する。なお、デコード部52は、ループ終点信号LENDがアサートされたとき、ループ終点信号LENDに対応する命令CMDの解読結果と一緒に、ループ終点信号LENDを実行部60に出力する。また、デコード部52は、ループ検出応答信号LDETRがアサートされたとき、ループ検出応答信号LDETRに対応する命令CMDの解読結果と一緒に、ループ検出応答信号LDETRを実行部60に出力する。
また、デコード部50は、例えば、1回目のループ処理の分岐命令を解読したとき、ループ検出信号LDETをアサートするとともに、分岐先アドレスBADRを命令バッファ32に出力する。例えば、デコード部52は、分岐先を示す相対アドレスが負である分岐命令(アドレス値の小さい方向に向かう分岐命令)を検出したとき、ループ処理の終点と判断し、ループ検出信号LDETおよび分岐先アドレスBADRを命令バッファ32に出力する。
このように、デコード部52は、フェッチ部20から選択部40を介して受けた命令CMDがループ処理の分岐先を含む分岐命令のとき、分岐命令を検出したことを命令バッファ32に通知する。なお、デコード部52は、例えば、命令バッファ32から選択部40を介して受けた命令CMDに対しては、ループ処理の分岐命令の検出を実施しなくてもよい。
また、デコード部52は、実行部60から受けるフラッシュ制御信号FLSHおよびループ終了通知LFINのいずれかがアサートされたとき、デコード部52内に保持している命令CMDを破棄する。例えば、ループ終了通知LFINは、ループ処理が終了したとき、アサートされる。
実行部60は、例えば、ループ処理が終了したか否かを判定する。そして、実行部60は、例えば、ループ終点信号LENDに対応するループ処理が終了したとき、ループ終了通知LFINをアサートする。また、実行部60は、デコード部50により解読された命令CMDを実行する。例えば、実行部60は、デコード部50の解読結果に基づいて、命令CMDのオペランド等をレジスタから読み出す。そして、実行部60は、例えば、読み出したオペランド等に基づいて、四則演算や論理演算等を実行する。例えば、実行部60は、命令CMDの実行に必要な読み出しデータRDATAや命令CMDの実行結果に対応する書き込みデータWDATAを、バスを介して転送する。
さらに、実行部60は、各パイプラインに保持されている命令CMD等を破棄するパイプラインフラッシュを実施する必要があるとき、フラッシュ制御信号FLSHをアサートする。パイプラインフラッシュの実施条件は、分岐命令の解読結果を実行部60が受けたときに、ループ終点信号LENDあるいはループ検出応答信号LDETRがアサートされているか否かで異なる。
例えば、ループ終点信号LENDおよびループ検出応答信号LDETRのいずれもアサートされていないときでは、パイプラインフラッシュは、分岐が発生する度に実施される。なお、ループ終点信号LENDおよびループ検出応答信号LDETRのいずれもアサートされていないとき、ループ処理の終了では、パイプラインフラッシュは、実施されない。
また、例えば、ループ終点信号LENDおよびループ検出応答信号LDETRのいずれかがアサートされているときでは、パイプラインフラッシュは、分岐が発生しても実施されない。そして、ループ終点信号LENDおよびループ検出応答信号LDETRのいずれかがアサートされているときでは、ループ処理の終了に応じて、パイプラインフラッシュが実施される。
このように、実行部60は、ループ終点信号LENDおよびループ検出応答信号LDETRのいずれかがアサートされたときには、ループ処理が終了するまで、フラッシュ制御信号FLSHをアサートしない。すなわち、命令バッファ32から命令CMDbが読み出されるループ処理では、ループ処理が終了するまで、フラッシュ制御信号FLSHはアサートされない。これにより、この実施形態では、ループ処理の分岐が発生する度にパイプラインフラッシュが実施されることを防止できる。したがって、この実施形態では、パイプライン処理の停止を低減できる。
また、命令バッファ32から命令CMDbが読み出されている期間では、フェッチ部20のフェッチ動作が停止しているため、実行部60は、読み出しデータRDATAや書き込みデータWDATAの転送等のバスを使用したアクセスを効率よく実施できる。これにより、この実施形態では、ループ処理が実施されている期間のアクセス効率を向上できる。
図3は、図2に示した命令バッファ32の一例を示している。命令バッファ32は、命令CMDfを記憶するバッファ部BUFと、バッファ部BUF等を制御する制御部BCNTを有している。
バッファ部BUFは、リングバッファとして機能する。例えば、バッファ部BUFは、書き込み動作では、書き込みポインタWPが示す位置に命令CMDfを記憶する。そして、読み出し動作では、バッファ部BUFは、読み出しポインタRPが示す位置の命令CMDbを出力する。制御部BCNTは、制御信号FEN、LFIN、BADR、LDETを受け、制御信号LFLG、LEND、LDETRを出力する。また、制御部BCNTは、例えば、書き込みポインタWPおよび読み出しポインタRPを更新し、バッファ部BUFの動作を制御する。
図4は、図3に示した制御部BCNTの論理構成の一例を示している。なお、図4では、ポインタ等の値が伝達される信号線を太い線で示している。また、図4では、例えば、分岐先アドレスBADRは負の値であり、制御信号FEN、LFIN、LDET、LEND、LDETRは、正論理である。なお、制御信号LFLG(ループ処理フラグLFLG)は、論理値が“1”のとき、命令バッファ32が読み出し動作であることを示している。また、図中の符号szは、図3に示したバッファ部BUFが記憶できる命令数(バッファサイズ)を示している。
制御部BCNTは、例えば、書き込みポインタ部WPNT、読み出しポインタ部RPNT、始点ポインタ部SPNT、終点ポインタ部EPNT、フラグ制御部LFCNT、命令数保持部CNUM、比較器ICMP1、MCMP1、MCMP2、マルチプレクサMUX1、加算部ADD1、アンド回路AND1、AND2、AND3、AND4、オア回路OR1およびインバータINV1を有している。
ポインタ部WPNT、RPNT、SPNT、EPNTは、例えば、ループ検出応答信号LDETRやループ処理フラグLFLG等により制御される。したがって、ポインタ部WPNT、RPNT、SPNT、EPNTの動作を説明する前に、ループ検出応答信号LDETRを制御する比較器MCMP1等の動作を説明する。次に、ループ処理フラグLFLGを制御するフラグ制御部LFCNT等の動作を説明する。
比較器MCMP1は、命令数保持部CNUMの端子NUMの出力値(以下、命令数保持部CNUMの値とも称する)と分岐先アドレスBADRの絶対値とを比較する。命令数保持部CNUMの値は、バッファ部BUFに記憶されている命令CMDの数である。例えば、比較器MCMP1は、分岐先アドレスBADRの絶対値が命令数保持部CNUMの値より小さいとき、論理値“1”をアンド回路AND2に出力する。すなわち、分岐先の命令CMDがバッファ部BUFに記憶されているとき、比較器MCMP1の出力は、論理値“1”である。
なお、分岐先アドレスBADRの絶対値が命令数保持部CNUMの値以上のとき、比較器MCMP1の出力は、論理値“0”である。すなわち、分岐先の命令CMDがバッファ部BUFに記憶されていないとき、比較器MCMP1の出力は、論理値“0”である。
アンド回路AND2は、ループ検出信号LDETと比較器MCMP1の出力値との論理積結果(ループ検出応答信号LDETR)を出力する。例えば、アンド回路AND2は、分岐先の命令CMDがバッファ部BUFに記憶されているとき、論理値“1”のループ検出信号LDETに応答して、論理値“1”のループ検出応答信号LDETRを出力する。なお、分岐先の命令CMDがバッファ部BUFに記憶されていないとき、ループ検出応答信号LDETRの論理値は、“0”である。あるいは、ループ検出信号LDETの論理値が“0”のとき、ループ検出応答信号LDETRの論理値は、“0”である。
フラグ制御部LFCNTは、ループ検出応答信号LDETRおよびループ終了通知LFINをセット端子SETおよびクリア端子CLでそれぞれ受け、ループ処理フラグLFLGを制御する。例えば、フラグ制御部LFCNTは、論理値“1”のループ検出応答信号LDETRに応答して、ループ処理フラグLFLGの論理値を“1”に設定する。そして、フラグ制御部LFCNTは、論理値“1”のループ終了通知LFINに応答して、ループ処理フラグLFLGの論理値を“0”にクリアする。
インバータINV1は、ループ処理フラグLFLGの反転信号をアンド回路AND1、AND4に出力する。アンド回路AND1は、ループ処理フラグLFLGの反転信号とフェッチ出力イネーブル信号FENとの論理積結果を書き込みポインタ部WPNTのカウントイネーブル端子CENに出力する。
書き込みポインタ部WPNTは、書き込みポインタWPを保持する。例えば、書き込みポインタ部WPNTは、カウントイネーブル端子CENで受けた信号の論理値が“1”の期間、情報処理装置12の動作クロックに同期して、書き込みポインタWPを更新する。すなわち、書き込みポインタ部WPNTは、ループ処理フラグLFLGおよびフェッチ出力イネーブル信号FENのそれぞれの論理値が“0”および“1”のとき、書き込みポインタWPを更新する。
これにより、書き込みポインタWPは、例えば、書き込み動作時に、情報処理装置12の動作クロックに同期してカウントアップする。なお、読み出し動作では、ループ処理フラグLFLGの論理値が“1”であるため、書き込みポインタWPは、更新されない。書き込みポインタWPは、例えば、終点ポインタ部EPNTおよび図3に示したバッファ部BUFに出力される。
加算部ADD1は、書き込みポインタWPの値に分岐先アドレスBADRの値(負の値)を加算し、加算結果を始点ポインタ部SPNTの入力端子INTおよびマルチプレクサMUX1に出力する。加算結果(加算部ADD1の出力値)は、例えば、ループ検出応答信号LDETRが“1”のとき、ループ処理の分岐先の命令CMDが記憶されている位置を示している。
始点ポインタ部SPNTは、例えば、ループ処理の始点を示す始点ポインタSPを保持する。例えば、始点ポインタ部SPNTは、加算部ADD1の加算結果およびループ検出応答信号LDETRを入力端子INTおよび初期化制御端子ICNTでそれぞれ受ける。そして、始点ポインタ部SPNTは、例えば、初期化制御端子ICNTで受けたループ検出応答信号LDETRの論理値が“1”のとき、入力端子INTで受けた値(加算部ADD1の出力値)を始点ポインタSPに設定する。
終点ポインタ部EPNTは、例えば、ループ処理の終点を示す終点ポインタEPを保持する。例えば、終点ポインタ部EPNTは、書き込みポインタWPおよびループ検出応答信号LDETRを入力端子INTおよび初期化制御端子ICNTでそれぞれ受ける。そして、終点ポインタ部EPNTは、例えば、初期化制御端子ICNTで受けたループ検出応答信号LDETRの論理値が“1”のとき、入力端子INTで受けた値(書き込みポインタWP)を終点ポインタEPに設定する。このように、命令バッファ32は、始点ポインタSPおよび終点ポインタEPの組みを、始点ポインタ部SPNTおよび終点ポインタ部EPNTに保持する。
マルチプレクサMUX1は、加算部ADD1の出力値(書き込みポインタWPの値と分岐先アドレスBADRの値との加算結果)、始点ポインタSPおよびループ終点信号LENDを受ける。そして、マルチプレクサMUX1は、ループ終点信号LENDの論理値に応じて、加算部ADD1の出力値および始点ポインタSPのいずれかを読み出しポインタ部RPNTの入力端子INTに出力する。
例えば、マルチプレクサMUX1は、ループ終点信号LENDの論理値が“1”のとき(2回目以降のループ処理)、始点ポインタSPを読み出しポインタ部RPNTの入力端子INTに出力する。また、例えば、マルチプレクサMUX1は、ループ終点信号LENDの論理値が“0”のとき(1回目のループ処理)、加算部ADD1の出力値を読み出しポインタ部RPNTの入力端子INTに出力する。
オア回路OR1は、ループ終点信号LENDとループ検出応答信号LDETRとの論理和結果を読み出しポインタ部RPNTの初期化制御端子ICNTに出力する。読み出しポインタ部RPNTは、読み出しポインタRPを保持する。例えば、読み出しポインタ部RPNTは、マルチプレクサMUX1の出力値およびオア回路OR1の出力値を入力端子INTおよび初期化制御端子ICNTでそれぞれ受ける。
また、読み出しポインタ部RPNTは、ループ処理フラグLFLGをカウントイネーブル端子CENで受ける。例えば、読み出しポインタ部RPNTは、初期化制御端子ICNTで受けた信号の論理値が“1”のとき、入力端子INTで受けた値を読み出しポインタRPに設定する。そして、読み出しポインタ部RPNTは、例えば、カウントイネーブル端子CENで受けたループ処理フラグLFLGの論理値が“1”の期間、情報処理装置12の動作クロックに同期して、読み出しポインタRPを更新する。これにより、読み出しポインタ部RPNTは、読み出し動作時に、始点ポインタSPから終点ポインタEPまでの値(読み出しポインタRP)を繰り返し出力できる。読み出しポインタRPは、例えば、比較器ICMP1および図3に示したバッファ部BUFに出力される。
比較器ICMP1は、終点ポインタEPと読み出しポインタRPとを比較する。例えば、比較器ICMP1は、終点ポインタEPと読み出しポインタRPとが一致したとき、論理値“1”をアンド回路AND3に出力する。また、比較器ICMP1は、終点ポインタEPと読み出しポインタRPとが一致しないとき、論理値“0”をアンド回路AND3に出力する。
アンド回路AND3は、ループ処理フラグLFLGと比較器ICMP1の出力値との論理積結果(ループ終点信号LEND)を出力する。これにより、ループ終点信号LENDの論理値は、例えば、読み出しポインタRPの示す命令CMDが分岐命令のとき、“1”に設定される。なお、例えば、読み出しポインタRPの示す命令CMDが分岐命令でないとき、ループ終点信号LENDの論理値は、“0”である。あるいは、例えば、ループ処理フラグLFLGの論理値が“0”のとき(書き込み動作時)、ループ終点信号LENDの論理値は、“0”である。
次に、バッファ部BUFに記憶されている命令CMDの数の計測について説明する。比較器MCMP2は、命令数保持部CNUMの値とバッファサイズ(“sz”)とを比較する。例えば、比較器MCMP2は、命令数保持部CNUMの値がバッファサイズ(“sz”)より小さいとき、論理値“1”をアンド回路AND4に出力する。したがって、比較器MCMP2の出力は、命令数保持部CNUMの値がバッファサイズ(“sz”)と同じとき、論理値“0”である。
アンド回路AND4は、フェッチ出力イネーブル信号FENと比較器MCMP2の出力値とループ処理フラグLFLGの反転信号との論理積結果を命令数保持部CNUMのカウントイネーブル端子CENに出力する。命令数保持部CNUMは、例えば、カウントイネーブル端子CENで受けた信号の論理値が“1”の期間、情報処理装置12の動作クロックに同期して、端子NUMの出力値をカウントアップする。
これにより、命令数保持部CNUMの値は、例えば、命令CMDを記憶するバッファ部BUFの位置(書き込みポインタWP)が一巡するまで、更新される。そして、命令CMDを記憶するバッファ部BUFの位置が一巡したとき、命令数保持部CNUMの値は、バッファサイズ(“sz”)に一致する。なお、命令数保持部CNUMの値は、カウントイネーブル端子CENで受けた信号の論理値が“0”の期間では、更新されない。したがって、命令CMDを記憶するバッファ部BUFの位置が一巡した後では、命令数保持部CNUMの値は、例えば、“0”にクリアされるまで、バッファサイズ(“sz”)に維持される。
図5は、図2に示したデコード部52のフラッシュ制御の一例を示している。デコード部52は、例えば、選択部40から受けた命令CMDmを解読するデコーダDECと、オア回路OR2を有している。オア回路OR2は、フラッシュ制御信号FLSHとループ終了通知LFINとの論理和結果を、デコーダDECに出力する。なお、オア回路OR2は、例えば、実行部60に形成されてもよい。
デコーダDECは、例えば、オア回路OR2の出力が論理値“1”のとき、デコーダDEC内に保持している命令CMDを破棄する。すなわち、デコード部52では、内部に保持している命令CMD等を破棄するフラッシュ制御は、実行部60から受けるフラッシュ制御信号FLSHおよびループ終了通知LFINのいずれかがアサートされたとき、実施される。
また、デコーダDECは、ループ終点信号LENDを受けたとき、ループ終点信号LENDに対応する命令CMDmの解読結果と一緒に、ループ終点信号LENDを実行部60に出力する。例えば、デコーダDECは、ループ終点信号LENDを受けてから実行部60に出力するまでのクロック数と、命令CMDmを受けてから命令CMDmの解読結果を実行部60に出力するまでのクロック数とを一致させる。
さらに、デコーダDECは、ループ検出応答信号LDETRを受けたとき、ループ検出応答信号LDETRに対応する命令CMDmの解読結果と一緒に、ループ検出応答信号LDETRを実行部60に出力する。なお、デコーダDECは、ループ検出応答信号LDETRとループ終点信号LENDとの論理和結果を、ループ終点信号LENDとして実行部60に出力してもよい。
図6は、図2に示した情報処理装置12の動作の一例を示している。なお、図6の例では、命令CMD7が命令バッファ32に記憶される前に、命令バッファ32には、“sz−3”個の命令CMDが記憶されている。符号szは、図3に示したバッファ部BUFが記憶できる命令数(バッファサイズ)を示している。
先ず、命令CMD7−CMD9は、命令バッファ32のブッファ部BUFに順次記憶される。例えば、命令CMD7は、書き込みポインタWPが示す位置“A−3”に、記憶される。これにより、命令バッファ32に記憶されている命令数(命令数保持部CNUMの値)は、“sz−2”に更新される。そして、命令CMD8は、書き込みポインタWPが示す位置“A−2”に、記憶される。これにより、命令数保持部CNUMの値は、“sz−1”に更新される。なお、命令CMD8は、レジスタreg01の値を“15”に設定する命令である。命令CMD9は、書き込みポインタWPが示す位置“A−1”に、記憶される。これにより、命令数保持部CNUMの値は、“sz”に更新される。
命令CMD10−CMD13は、1回目のループ処理では、命令バッファ32のブッファ部BUFに順次記憶される。例えば、命令CMD10、CMD11、CMD12、CMD13は、書き込みポインタWPが示す位置“A”、“A+1”、“A+2”、“A+3”に、それぞれ記憶される。なお、命令バッファ32に記憶されている命令数がバッファサイズに一致しているため、命令CMD10−CMD13では、命令数保持部CNUMの値は、“sz”に維持される。
命令CMD10は、ループ処理の始点に対応する命令である。また、命令CMD12は、レジスタreg01の値を“1”減算する命令である。命令CMD13は、例えば、レジスタreg01の値が“0”以外のときに、命令CMD10に戻る分岐命令である。したがって、命令CMD13は、ループ処理の終点に対応する命令である。
命令CMD10−CMD13は、2回目以降のループ処理では、命令バッファ32から順次読み出される。例えば、命令CMD10、CMD11、CMD12、CMD13は、読み出しポインタRPが示す位置“A”、“A+1”、“A+2”、“A+3”からそれぞれ読み出される。
命令CMD14は、命令CMD10−CMD13のループ処理が終了した後、命令バッファ32のブッファ部BUFに記憶される。例えば、命令CMD14は、書き込みポインタWPが示す位置“A+4”に、記憶される。なお、命令バッファ32に記憶されている命令数がバッファサイズに一致しているため、命令CMD14では、命令数保持部CNUMの値は、“sz”に維持される。
図7は、図2に示した情報処理装置12のループ処理開始時の動作の一例を示している。なお、図7は、図6に示した命令CMD10−CMD13のループ処理の開始時の動作の一例を示している。また、図の太い線で囲んだ命令CMD13等は、ループ処理の終点に対応することを示している。図のデコード出力DOUTは、デコード部52の出力(解読結果)を示している。例えば、図のデコード出力DOUTの命令CMD7は、命令CMD7の解読結果がデコード部52から出力されることを示している。以下、デコード出力DOUTを解読結果DOUTとも称する。
期間T10は、例えば、命令CMD8−CMD13が命令バッファ32に順次記憶される期間である。また、期間T20は、例えば、ループ処理の範囲に対応する命令CMD10−CMD13が命令バッファ32から繰り返し読み出される期間である。
例えば、期間T10では、フェッチ部20は、フェッチした命令CMDf(命令CMD8−CMD13)を選択部40に順次出力する。選択部40は、フェッチ部20から受けた命令CMDf(命令CMDm)をデコード部52に順次出力する。デコード部52は、選択部40から受けた命令CMDmを順次解読し、解読結果DOUTを実行部60に出力する。例えば、デコード部52は、命令CMD8を受けるサイクルで、命令CMD7の解読結果DOUTを出力する。
命令バッファ32は、フェッチ部20から出力される命令CMDfを順次記憶する。例えば、期間T10では、書き込みポインタWPは、情報処理装置12の動作クロックに同期して、“A−2”から“A+3”までカウントアップする。これにより、命令CMD8−CMD13は、書き込みポインタWPが示す位置(“A−2”から“A+3”)に、それぞれ記憶される。すなわち、期間T10では、命令バッファ32は、書き込み動作を実施する。したがって、期間T10では、有効な命令CMDbは、命令バッファ32から出力されない。
ループ検出信号LDETの論理値は、分岐命令(命令CMD13)が解読されるまで、“0”に維持される。例えば、デコード部52は、命令CMD13を受けたサイクル内で、命令CMD13を解読する。これにより、命令CMD13が選択部40から出力されるサイクルで、ループ検出信号LDETの論理値は、“0”から“1”に変化する。このとき、分岐先アドレスBADRは、“−3”に設定される。分岐先アドレスBADRの“−3”は、次のサイクルで、命令CMD13の3つ前の命令CMD10に戻ることを示している。
なお、図7の例では、命令バッファ32の容量は、4つ以上の命令CMDを保持できるバッファサイズである。このため、ループ検出応答信号LDETRの論理値は、ループ検出信号LDETに応答して、“0”から“1”に変化する。
ループ処理フラグLFLGの論理値は、命令バッファ32が書き込み動作を実施している期間T10では、“0”に維持されている。なお、命令バッファ32が書き込み動作を実施しているため、始点ポインタSP、終点ポインタEP、読み出しポインタRPには、有効な値は設定されていない。また、ループ終点信号LENDの論理値は、“0”に維持されている。レジスタreg01の値は、レジスタreg01の値を“15”に設定する命令CMD8の解読結果DOUTが出力された次のサイクルで、“15”に設定される。
期間T20では、フェッチ部20は、フェッチした命令CMD14を保持した状態で、フェッチ動作を停止する。なお、フェッチ部20は、命令CMD14を選択部40に出力してもよいし、命令CMD14を選択部40に出力しなくてもよい。命令バッファ32は、期間T10で記憶した命令CMD10−CMD13を順次出力する動作を繰り返す。例えば、命令CMD10、CMD11、CMD12、CMD13は、読み出しポインタRPが示す位置“A”、“A+1”、“A+2”、“A+3”からそれぞれ読み出される。すなわち、期間T20では、命令バッファ32は、読み出し動作を実施する。
選択部40は、命令バッファ32から受けた命令CMDb(命令CMDm)をデコード部52に順次出力する。デコード部52は、選択部40から受けた命令CMDmを順次解読し、解読結果DOUTを実行部60に出力する。例えば、デコード部52は、命令CMD10を受けるサイクルで、命令CMD13の解読結果DOUTを出力する。
書き込みポインタWPは、例えば、期間T10(書き込み動作時)の最後のサイクルでの値“A+3”に“1”を加算した値“A+4”に維持される。ループ検出信号LDETの論理値は、命令バッファ32が読み出し動作を実施している期間T20では、“0”に維持される。したがって、ループ検出応答信号LDETRの論理値は、“0”に維持される。また、ループ処理フラグLFLGは、命令CMD10が命令バッファ32から出力される最初のサイクルで、“0”から“1”に変化する。そして、ループ処理フラグLFLGの論理値は、“1”に維持される。
始点ポインタSPは、ループ検出信号LDETの論理値が“1”のときの分岐先アドレスBADR(“−3”)および書き込みポインタWP(“A+3”)に基づいて、“A”に設定される。すなわち、始点ポインタSPは、分岐先アドレスBADR(“−3”)および書き込みポインタWP(“A+3”)の和(“A”)に設定される。
終点ポインタEPは、ループ検出信号LDETの論理値が“1”のときの書き込みポインタWPと同じ値(“A+3”)に設定される。読み出しポインタRPは、情報処理装置12の動作クロックに同期して更新される。例えば、読み出しポインタ部RPNTは、読み出しポインタRPを“A”から“A+3”までカウントアップする動作を、繰り返す。
ループ終点信号LENDは、読み出しポインタRPが“A”、“A+1”、“A+2”のとき、論理値“0”に設定され、読み出しポインタRPが“A+3”のとき、論理値“1”に設定される。すなわち、ループ終点信号LENDは、読み出しポインタRPが終点ポインタEPに一致するサイクルで、論理値“1”に設定される。
レジスタreg01の値は、命令CMD12(reg01=reg01−1)の解読結果DOUTが出力された次のサイクルで、更新される。例えば、レジスタreg01の値は、期間T20における最初の命令CMD13の解読結果DOUTが出力されるサイクルで、“15”から“14”に更新される。そして、レジスタreg01の値は、期間T20における2回目の命令CMD13の解読結果DOUTが出力されるサイクルで、“14”から“13”に更新される。
なお、命令CMD13の解読結果DOUTが実行部60に出力されるサイクルでは、命令CMD10に戻る分岐を実行するか否かが実行部60により判定される。すなわち、命令CMD13の解読結果DOUTが実行部60に出力される度に、ループ処理を終了するか否かが判定される。この実施形態では、レジスタreg01の値が“0”のとき(図8に示すゼロフラグZFLGの論理値が“1”のとき)、ループ処理が終了する。したがって、例えば、期間T20では、レジスタreg01の値が“0”でないため、命令CMD10に戻る分岐が実行される。
このように、情報処理装置12は、ループ処理の分岐命令(命令CMD13)が解読されたときに、パイプラインフラッシュを実施することなく、ループ処理の始点に対応する命令CMD10を命令バッファ32からデコード部52に選択部40を介して転送する。これにより、この実施形態では、パイプライン処理の停止を低減できる。また、期間T20では、フェッチ部20のフェッチ動作は停止している。これにより、この実施形態では、ループ処理が実施されている期間のアクセス効率を向上できる。
図8は、図2に示した情報処理装置12のループ処理終了時の動作の一例を示している。なお、図8は、図6に示した命令CMD10−CMD13のループ処理の終了時の動作の一例を示している。すなわち、図8に示した動作は、図7に示した動作の続きに対応する。図の太い線で囲んだ命令CMD13等は、ループ処理の終点に対応することを示している。図のデコード出力イネーブル信号DENは、デコード部52から出力された解読結果DOUTが有効であることを示す信号であり、デコード部52から出力される。また、ゼロフラグZFLGは、例えば、実行部60内のフラグであり、レジスタreg01の値が“0”のときに論理値“1”に設定される。
期間T22の動作は、レジスタreg01の値を除いて、図7に示した期間T20の動作と同じである。なお、期間T22では、デコード出力イネーブル信号DEN、ゼロフラグZFLGおよびループ終了通知LFINのそれぞれの論理値は、“1”、“0”および“0”に維持される。
期間T24では、命令CMD10が命令バッファ32からデコード部52に選択部40を介して転送される。すなわち、命令バッファ32は、読み出し動作を実施する。また、命令CMD13の解読結果DOUTが実行部60に出力され、デコード出力イネーブル信号DENの論理値が“1”に維持されている。このため、実行部60は、ループ処理を終了するか否かを判定する。
例えば、期間T24では、レジスタreg01の値が“1”から“0”に更新されるため、ゼロフラグZFLGの論理値は、“0”から“1”に変化する。ゼロフラグZFLGの論理値が“0”であるため、実行部60は、ループ終了と判断する。したがって、ループ終了通知LFINの論理値は、“0”から“1”に変化する。また、ループ終了通知LFINの論理値が“1”であるため、デコード部52は、デコード部52内に保持している命令CMD10を破棄する。
期間T30では、ループ処理フラグLFLGの論理値は、ループ終了通知LFINの論理値が期間T24で“1”に設定されたため、“1”から“0”に変化する。これにより、命令バッファ32は、書き込み動作を実施する。また、フェッチ部20は、フェッチ動作を再開する。例えば、フェッチ部20は、図7の期間T20に保持した命令CMD14を選択部40に出力する。そして、例えば、命令バッファ32は、書き込みポインタWPが示す位置“A+4”に、命令CMD14を記憶する。
選択部40は、ループ処理フラグLFLGの論理値が“0”のため、フェッチ部20から受けた命令CMD14をデコード部52に出力する。デコード部52は、期間T24で命令CMD10を破棄したため、デコード出力イネーブル信号DENの論理値を“0”に設定する。これにより、例えば、実行部60は、デコード部52からの解読結果DOUTが無効であることを判断できる。
したがって、例えば、実行部60は、命令CMD10の解読結果DOUTをデコード部52から受けたときにも、デコード出力イネーブル信号DENの論理値が“0”であるため、命令CMD10の解読結果DOUTが無効であることを判断できる。これにより、この実施形態では、命令CMD10がループ処理の終了後に実行されることを防止できる。
なお、期間T30では、レジスタreg01の値およびゼロフラグZFLGの論理値は、“0”および“1”にそれぞれ維持される。また、ループ終了通知LFINの論理値は、“1”から“0”に変化する。このように、情報処理装置12は、命令CMD10−CMD13のループ処理が終了したときに、デコード部52および実行部60間のフラッシュ制御を実施する。
期間T32は、例えば、命令CMD15以降の命令CMD(図8では、命令CMD15−CMD18)が命令バッファ32に順次記憶される期間である。すなわち、期間T32の動作は、フェッチされる命令CMDを除いて、期間T10の動作と同じである。
例えば、期間T32では、フェッチ部20は、フェッチした命令CMDf(命令CMD15−CMD18)を選択部40に順次出力する。選択部40は、フェッチ部20から受けた命令CMDf(命令CMDm)をデコード部52に順次出力する。デコード部52は、選択部40から受けた命令CMDmを順次解読し、解読結果DOUTを実行部60に出力する。書き込みポインタWPは、情報処理装置12の動作クロックに同期して、”A+5”から“A+8”までカウントアップする。
図9は、図2に示した情報処理装置12のループ処理開始時の動作の別の例を示している。なお、図9は、命令バッファ32の容量が分岐先アドレスBADRの絶対値(“40”)以下のバッファサイズ(“32”)のときの情報処理装置12の動作の一例を示している。図の太い線で囲んだ命令CMD43は、ループ処理の終点(分岐命令)に対応する命令CMDを示している。図9に示した命令CMD43の分岐命令では、例えば、40個前の命令CMD3に戻る。また、図の太い線で囲んだ書き込みポインタWPの“A+3”は、ループ処理の終点に対応することを示している。図の符号stallは、パイプラインフラッシュにより発生した各パイプラインの無効なサイクルを示している。
期間T10’は、図7に示した期間T10に対応している。例えば、期間T10’では、フェッチ部20は、フェッチした命令CMDf(命令CMD38−CMD43)を選択部40に順次出力する。選択部40は、フェッチ部20から受けた命令CMDf(命令CMDm)をデコード部52に順次出力する。デコード部52は、選択部40から受けた命令CMDmを順次解読し、解読結果DOUTを実行部60に出力する。
命令バッファ32は、フェッチ部20から出力される命令CMDfを順次記憶する。例えば、命令CMD38−CMD43は、書き込みポインタWPが示す位置(“A−2”から“A+3”)に、それぞれ記憶される。すなわち、期間T10’では、命令バッファ32は、書き込み動作を実施する。したがって、期間T10’では、有効な命令CMDbは、命令バッファ32から出力されない。なお、命令数保持部CNUMの値(命令数)は、例えば、情報処理装置12の動作クロックに同期して、“27”から“32”までカウントアップする。
ループ検出信号LDETの論理値は、分岐命令(命令CMD43)が解読されるまで、“0”に維持される。そして、命令CMD43が選択部40から出力されるサイクルで、ループ検出信号LDETの論理値は、“0”から“1”に変化する。このとき、分岐先アドレスBADRは、“−40”に設定される。
分岐先アドレスBADRの絶対値(“40”)以下のバッファサイズ(“32”)であるため、命令CMD43の分岐命令で戻る命令CMD3は、命令バッファ32に記憶されていない。したがって、命令バッファ32は、書き込み動作から読み出し動作に切り替えできないと判断する。このため、ループ検出応答信号LDETRの論理値は、“0”に維持される。したがって、ループ処理フラグLFLGの論理値は、“0”に維持される。このように、命令バッファ32は、ループ処理の範囲の命令CMDを記憶していないとき、読み出し動作に切り替わらない。
期間T12では、命令バッファ32は、書き込み動作を実施する。なお、命令バッファ32が読み出し動作を実施しないため、パイプラインフラッシュが実施される。このため、例えば、期間T12の最初の2サイクルでは、フェッチ部20および選択部40は、パイプライン処理を停止する。
また、デコード部52は、命令CMD43の解読結果DOUTを出力した後、有効な命令CMDを受けるまで、解読処理を停止する。このため、デコード出力イネーブル信号DENの論理値は、命令CMD43の解読結果DOUTを出力した後に“0”に設定され、命令CMD3の解読結果DOUTを出力するまで、“0”に維持される。なお、期間T12では、パイプラインフラッシュが実施されるため、書き込みポインタWPおよび命令数保持部CNUMの値は、“0”にクリアされる。
パイプラインフラッシュが実施された後、フェッチ部20は、フェッチした命令CMDf(命令CMD3−CMD8)を選択部40に順次出力する。選択部40は、フェッチ部20から受けた命令CMDf(命令CMDm)をデコード部52に順次出力する。デコード部52は、選択部40から受けた命令CMDmを順次解読し、解読結果DOUTを実行部60に出力する。
命令バッファ32は、フェッチ部20から出力される命令CMDfを順次記憶する。例えば、命令CMD3−CMD8は、書き込みポインタWPが示す位置(“0”から“5”)に、それぞれ記憶される。また、命令数保持部CNUMの値(命令数)は、例えば、フェッチ部20から命令CMD3が出力されるとき、情報処理装置12の動作クロックに同期して、“0”から“1”にカウントアップする。その後、命令数保持部CNUMの値(命令数)は、情報処理装置12の動作クロックに同期して、カウントアップする。
このように、情報処理装置12は、分岐先の命令CMDが命令バッファ32に記憶されていないとき、ループ処理の始点に対応する命令CMD3をフェッチ部20からデコード部52に選択部40を介して転送する。
なお、情報処理装置12の構成および動作は、この例に限定されない。例えば、デコード部52は、ループ検出応答信号LDETRの代わりに、ループ処理フラグLFLGを受けてもよい。この場合、フェッチ部20およびデコード部52は、例えば、ループ処理フラグLFLGが命令バッファ32の読み出し動作を示している期間では、フラッシュ制御信号FLSHがアサートされても、パイプラインフラッシュを実施しない。
また、例えば、命令バッファ32は、ループ終点信号LENDをデコード部52に出力しなくてもよい。この場合、デコード部52は、例えば、ループ処理フラグLFLGが命令バッファ32の読み出し動作を示しているときにも、ループ処理の分岐命令の検出を実施する。そして、デコード部52は、例えば、ループ処理フラグLFLGが命令バッファ32の読み出し動作を示している期間にループ処理の分岐命令を検出したとき、ループ終点信号LENDを実行部60に出力する。
さらに、例えば、デコード部52がループ終点信号LENDを生成するとき、始点ポインタ部SPNTおよび終点ポインタ部EPNTが省かれてもよい。この場合、デコード部52は、例えば、ループ処理フラグLFLGが命令バッファ32の読み出し動作を示しているときにも、ループ検出信号LDETおよび分岐先アドレスBADRを命令バッファ32に出力する。これにより、情報処理装置12は、多重ループに対応できる。
また、例えば、命令バッファ32は、ループ検出信号LDETがアサートされたとき(分岐命令が検出されたとき)、分岐命令の1つ前の命令CMDに対応する書き込みポインタWPを、終点ポインタEPに設定してもよい。この場合、例えば、実行部60は、ループ検出応答信号LDETRを受けたとき、分岐命令の解読結果(分岐条件)をループ処理が終了するまで保持する。そして、実行部60は、ループ終点信号LENDを受けたとき、保持した分岐条件に基づいて、ループ処理を終了するか否かを判定する。
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。
図10は、別の実施形態における情報処理装置14の一例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。情報処理装置14は、図2に示した命令バッファ32の代わりに、命令バッファ34を有している。したがって、図10では、例えば、命令CMDbは、命令バッファ34から出力される命令CMDを示している。情報処理装置14のその他の構成は、図2−図9で説明した実施形態と同じである。例えば、情報処理装置14は、パイプライン処理を実施するプロセッサである。
情報処理装置14は、フェッチ部20、命令バッファ34、選択部40、デコード部52および実行部60を有している。命令バッファ34は、多重ループに対応するために、始点ポインタSPおよび終点ポインタEPの組みを複数保持可能に形成されている。
例えば、多重ループが実施されるとき、デコード部52は、多重ループの最も外側のループを1周する間に、内側のループから外側のループにかけて、ループの終点を順次検出する。そして、命令バッファ34は、例えば、ループの終点が検出される度に、ループ処理の始点ポインタSPおよび終点ポインタEPの組みを保持するとともに、読み出し動作に切り替わる。そして、命令バッファ34は、実行中のループ処理が終了する度に、書き込み動作に切り替わる。
また、例えば、多重ループの最も外側のループの2回目以降の動作では、命令バッファ34は、複数の終点ポインタEPのいずれかが示す終点位置から命令CMDを出力した後、終点位置を示す終点ポインタEPに対応する始点ポインタSPが示す命令CMDを出力する。このようにして、命令バッファ34は、始点ポインタSPと終点ポインタEPとの間の命令CMDを、ループ終了通知LFINを受けるまで繰り返し出力する。
図11は、図10に示した命令バッファ34の一例を示している。命令バッファ34は、例えば、バッファ部BUFおよび制御部BCNT2を有している。すなわち、命令バッファ34は、図3に示した制御部BCNTの代わりに、制御部BCNT2を有している。命令バッファ34のその他の構成は、命令バッファ32と同じである。
制御部BCNT2では、多重ループに対応するために、始点ポインタ部SPNTおよび終点ポインタ部EPNTが複数形成され、エントリフラグテーブルEFTL、ループ数保持部LNUMおよびループ深さ保持部LDEPが追加されている。制御部BCNT2のその他の構成は、追加されたモジュールを制御するための論理構成を除いて、制御部BCNTと同じである。
例えば、制御部BCNT2は、書き込みポインタ部WPNT、読み出しポインタ部RPNT、複数の始点ポインタ部SPNT(SPNT(0)−SPNT(n−1))、複数の終点ポインタ部EPNT(EPNT(0)−EPNT(n−1))、フラグ制御部LFCNT、命令数保持部CNUM、エントリフラグテーブルEFTL、ループ数保持部LNUMおよびループ深さ保持部LDEPを有している。
エントリフラグテーブルEFTLは、始点ポインタSPおよび終点ポインタEPが有効か否かを示すエントリフラグEF(0)−EF(n−1)を設定する。なお、エントリフラグEFの符号の末尾のカッコ内の値は、始点ポインタ部SPNTおよび終点ポインタ部EPNTの符号の末尾のカッコ内の値に対応している。例えば、始点ポインタ部SPNT(0)の始点ポインタSPおよび終点ポインタ部EPNT(0)の終点ポインタEPが有効のとき、エントリフラグEF(0)の論理値は、“1”に設定される。
ループ数保持部LNUMは、有効を示しているエントリフラグEFの数を保持する。例えば、ループ数保持部LNUMの値は、バッファ部BUFに記憶された命令CMDで対応したループ処理の数を示している。ループ深さ保持部LDEPは、バッファ部BUFからの命令CMDbを使用するループ処理が終了するまでのループ処理の数を保持する。例えば、多重ループが実施されるときでは、ループ深さ保持部LDEPの値は、ループ処理の深さに対応する。
図12は、図11に示したループ数保持部LNUMを制御するための論理構成の一例を示している。なお、図12では、ポインタ等の値が伝達される信号線を太い線で示している。例えば、制御部BCNT2は、ループ数保持部LNUMを制御するために、比較器MCMP1、ナンド回路NAND1およびアンド回路AND5を有している。比較器MCMP1は、図4に示した比較器MCMP1である。
ナンド回路NAND1は、エントリフラグテーブルEFTLから受けるエントリフラグEF(0)−EF(n−1)の否定論理積結果をアンド回路AND5に出力する。アンド回路AND5は、図4に示したアンド回路AND2の代わりに設けられている。アンド回路AND5は、ループ検出信号LDETと比較器MCMP1の出力値とナンド回路NAND1の出力値との論理積結果(ループ検出応答信号LDETR)を出力する。
例えば、アンド回路AND5は、値を保持可能な始点ポインタ部SPNTおよび終点ポインタ部EPNTが存在し、かつ、分岐先の命令CMDがバッファ部BUFに記憶されているとき、論理値“1”のループ検出信号LDETに応答して、論理値“1”のループ検出応答信号LDETRを出力する。なお、値を保持可能な始点ポインタ部SPNTおよび終点ポインタ部EPNTが存在しないとき等では、ループ検出応答信号LDETRの論理値は、“0”である。
ループ数保持部LNUMは、カウントイネーブル端子CENでループ検出応答信号LDETR(アンド回路AND5の出力)を受ける。そして、ループ数保持部LNUMは、例えば、カウントイネーブル端子CENで受けた信号の論理値が“1”の期間、情報処理装置14の動作クロックに同期して、端子NUMの出力値をカウントアップする。以下、ループ数保持部LNUMの端子NUMの出力値をループ数保持部LNUMの値とも称する。
図13は、図11に示した始点ポインタ部SPNTおよび終点ポインタ部EPNTを制御するための論理構成の一例を示している。なお、図13では、ポインタ等の値が伝達される信号線を太い線で示している。例えば、制御部BCNT2は、始点ポインタ部SPNTおよび終点ポインタ部EPNTを制御するために、加算部ADD1、比較器ICMP2(ICMP2(0)−ICMP2(n−1))およびアンド回路AND6(AND6(0)−AND6(n−1))を有している。なお、比較器ICMP2およびアンド回路AND6の符号の末尾のカッコ内の値は、エントリフラグEF等の符号の末尾のカッコ内の値に対応している。加算部ADD1は、図4に示した加算部ADD1である。
比較器ICMP2は、例えば、比較器ICMP2の符号の末尾のカッコ内の値とループ数保持部LNUMの値とを比較する。そして、例えば、比較器ICMP2は、比較器ICMP2の符号の末尾のカッコ内の値とループ数保持部LNUMの値とが一致したとき、論理値“1”をアンド回路AND6に出力する。
例えば、比較器ICMP2(0)は、値“0”とループ数保持部LNUMの値とを比較し、ループ数保持部LNUMの値が“0”のとき、論理値“1”をアンド回路AND6(0)に出力する。また、例えば、比較器ICMP2(n−1)は、値“n−1”とループ数保持部LNUMの値とを比較し、ループ数保持部LNUMの値が“n−1”のとき、論理値“1”をアンド回路AND6(n−1)に出力する。
アンド回路AND6は、ループ検出応答信号LDETRと比較器ICMP2の出力値との論理積結果を、エントリフラグテーブルEFTL、始点ポインタ部SPNTの初期化制御端子ICNTおよび終点ポインタ部EPNTの初期化制御端子ICNTに出力する。例えば、アンド回路AND6(0)は、論理積結果を、エントリフラグテーブルEFTL、始点ポインタ部SPNT(0)の初期化制御端子ICNTおよび終点ポインタ部EPNT(0)の初期化制御端子ICNTに出力する。また、例えば、アンド回路AND6(n−1)は、論理積結果を、エントリフラグテーブルEFTL、始点ポインタ部SPNT(n−1)の初期化制御端子ICNTおよび終点ポインタ部EPNT(n−1)の初期化制御端子ICNTに出力する。
エントリフラグテーブルEFTLのエントリフラグEFは、アンド回路AND6の出力値に設定される。例えば、エントリフラグテーブルEFTLのエントリフラグEF(0)は、アンド回路AND6(0)の出力値に設定される。また、例えば、エントリフラグテーブルEFTLのエントリフラグEF(n−1)は、アンド回路AND6(n−1)の出力値に設定される。
各始点ポインタ部SPNTの動作は、図4に示した始点ポインタ部SPNTの動作と同じである。例えば、各始点ポインタ部SPNTは、加算部ADD1の加算結果を入力端子INTで受ける。そして、各始点ポインタ部SPNTは、例えば、初期化制御端子ICNTで受けた信号(アンド回路AND6の出力)の論理値が“1”のとき、入力端子INTで受けた値を始点ポインタSPに設定する。
各終点ポインタ部EPNTの動作は、図4に示した終点ポインタ部EPNTの動作と同じである。例えば、各終点ポインタ部EPNTは、書き込みポインタ部WPNTの値(書き込みポインタWP)を入力端子INTで受ける。そして、各終点ポインタ部EPNTは、例えば、初期化制御端子ICNTで受けた信号(アンド回路AND6の出力)の論理値が“1”のとき、入力端子INTで受けた値(書き込みポインタWP)を終点ポインタEPに設定する。
図14は、図11に示した読み出しポインタ部RPNTを制御するための論理構成の一例を示している。なお、図14では、ポインタ等の値が伝達される信号線を太い線で示している。例えば、制御部BCNT2は、読み出しポインタ部RPNTを制御するために、マルチプレクサMUX1、比較器ICMP3(ICMP3(0)−ICMP3(n−1))、アンド回路AND3、AND7(AND7(0)−AND7(n−1))、オア回路OR1、OR3、OR4および始点選択部SPSELを有している。
始点選択部SPSELは、アンド回路AND8(AND8(0)−AND8(n−1))、読み出しポインタ制御部RPCNTおよびオア回路OR5を有している。なお、比較器ICMP3、アンド回路AND7、AND8の符号の末尾のカッコ内の値は、エントリフラグEF等の符号の末尾のカッコ内の値に対応している。始点選択部SPSELは、マルチプレクサMUX1に出力するポインタを選択する。なお、マルチプレクサMUX1は、図4に示したマルチプレクサMUX1である。
各比較器ICMP3の動作は、図4に示した比較器ICMP1の動作と同じである。例えば、各比較器ICMP3は、各終点ポインタ部EPNTから受ける終点ポインタEPと読み出しポインタ部RPNTから受ける読み出しポインタRPとを比較する。そして、各比較器ICMP3は、終点ポインタEPと読み出しポインタRPとが一致したとき、論理値“1”を各アンド回路AND7に出力する。
例えば、比較器ICMP3(0)は、終点ポインタ部EPNT(0)の終点ポインタEPと読み出しポインタRPとが一致したとき、論理値“1”をアンド回路AND7(0)に出力する。また、例えば、比較器ICMP3(n−1)は、終点ポインタ部EPNT(n−1)の終点ポインタEPと読み出しポインタRPとが一致したとき、論理値“1”をアンド回路AND7(n−1)に出力する。
各アンド回路AND7は、各比較器ICMP3の出力値と各エントリフラグEFの論理値との論理積結果をオア回路OR3および各アンド回路AND8に出力する。例えば、アンド回路AND7(0)は、比較器ICMP3(0)の出力値とエントリフラグEF(0)の論理値との論理積結果を、オア回路3およびアンド回路AND8(0)に出力する。また、例えば、アンド回路AND7(n−1)は、比較器ICMP3(n−1)の出力値とエントリフラグEF(n−1)の論理値との論理積結果を、オア回路3およびアンド回路AND8(n−1)に出力する。
なお、例えば、始点選択部SPSELでは、各アンド回路AND8が受ける各アンド回路AND7の出力値のビット幅は、始点ポインタSPのビット幅に合わせて拡張される。各アンド回路AND8は、各アンド回路AND7の出力値と各始点ポインタ部SPNTの始点ポインタSPとの論理積結果をオア回路OR5に出力する。
例えば、アンド回路AND8(0)は、アンド回路AND7(0)の出力値と始点ポインタ部SPNT(0)の始点ポインタSPとの論理積結果をオア回路OR5に出力する。また、例えば、アンド回路AND8(n−1)は、アンド回路AND7(n−1)の出力値と始点ポインタ部SPNT(n−1)の始点ポインタSPとの論理積結果をオア回路OR5に出力する。
読み出しポインタ制御部RPCNTは、読み出しポインタRP、ループ終点信号LENDおよびループ終了通知LFINを受ける。例えば、読み出しポインタ制御部RPCNTは、ループ終点信号LENDの論理値が“1”のときの読み出しポインタRPを保持する。そして、読み出しポインタ制御部RPCNTは、ループ終了通知LFINの論理値が“1”のとき、保持した読み出しポインタRPに“1”を加算した値をオア回路OR5に出力する。なお、読み出しポインタ制御部RPCNTは、ループ終了通知LFINの論理値が“0”のとき、“0”をオア回路OR5に出力する。
オア回路OR5は、アンド回路AND8(0)−AND8(n−1)の出力値と読み出しポインタ制御部RPCNTの出力値との論理和結果をマルチプレクサMUX1に出力する。このように、始点選択部SPSELは、ループ処理が終了していないとき、実行中のループ処理の始点ポインタSPをマルチプレクサMUX1に出力する。また、始点選択部SPSELは、ループ処理が終了したとき、終了したループ処理の後に実行される命令CMDに対応するポインタをマルチプレクサMUX1に出力する。
オア回路OR3は、アンド回路AND7(0)−AND7(n−1)の出力値の論理和結果をアンド回路AND3に出力する。アンド回路AND3は、ループ処理フラグLFLGとオア回路OR3の出力値との論理積結果(ループ終点信号LEND)を出力する。これにより、ループ終点信号LENDの論理値は、例えば、読み出しポインタRPの示す命令CMDが分岐命令のとき、“1”に設定される。
オア回路OR4は、アンド回路AND3の出力値とループ終了通知LFINとの論理和結果をオア回路OR1およびマルチプレクサMUX1に出力する。例えば、マルチプレクサMUX1は、オア回路OR4の出力値が“1”のとき、始点選択部SPSELから受けたポインタを読み出しポインタ部RPNTの入力端子INTに出力する。
オア回路OR1は、オア回路OR4の出力値とループ検出応答信号LDETRとの論理和結果を、読み出しポインタ部RPNTの初期化制御端子ICNTに出力する。これにより、読み出しポインタ部RPNTは、例えば、ループ終点信号LEND、ループ終了通知LFINおよびループ検出応答信号LDETRのいずれかの論理値が“1”のとき、入力端子INTで受けた値を読み出しポインタRPに設定する。
図15は、図10に示した情報処理装置14の動作の一例を示している。なお、図15は、情報処理装置14の2重ループの処理時の動作の一例を示している。例えば、命令CMD9は、2重ループの外側のループ(図のループ2)の始点に対応する命令である。また、命令CMD10は、2重ループの内側のループ(図のループ1)の始点に対応する命令である。
命令CMD8−CMD14の動作は、図6に示した命令CMD8−CMD14の動作と同じである。例えば、命令CMD10−CMD13のループ1の処理は、2重ループの内側のループ処理であり、図6等で説明した命令CMD10−CMD13のループ処理に対応する。なお、命令CMD9−CMD18のループ2の処理は、2重ループの外側のループ処理である。命令CMD15は、レジスタreg01の値を“15”に設定する命令である。また、命令CMD17は、レジスタreg02の値を“1”減算する命令である。
命令CMD14−CMD18は、1回目のループ2の処理では、命令バッファ34のブッファ部BUFに順次記憶される。例えば、命令CMD14、CMD15、CMD16、CMD17、CMD18は、書き込みポインタWPが示す位置“A+4”、“A+5”、“A+6”、“A+7”、“A+8”に、それぞれ記憶される。なお、命令バッファ34に記憶されている命令数がバッファサイズに一致しているため、命令CMD14−CMD18では、命令数保持部CNUMの値は、“sz”に維持される。
また、命令CMD9−CMD18は、2回目以降のループ2の処理では、命令バッファ34から順次読み出される。例えば、命令CMD9−CMD18は、読み出しポインタRPが示す位置(“A−1”から“A+8”)からそれぞれ読み出される。
命令CMD19は、命令CMD9−CMD18のループ処理(ループ2の処理)が終了した後、命令バッファ34のブッファ部BUFに記憶される。例えば、命令CMD19は、書き込みポインタWPが示す位置“A+9”に、記憶される。なお、命令バッファ34に記憶されている命令数がバッファサイズに一致しているため、命令CMD19では、命令数保持部CNUMの値は、“sz”に維持される。
図16は、図15に示したループ2の処理開始時の動作の一例を示している。なお、図16に示した動作は、図7に示した動作の続きに対応する。したがって、期間T22’、T24’、T30’、T32’は、図8に示した期間T22、T24、T30、T32に対応する。図の太い線で囲んだ命令CMD13、CMD18等は、ループ処理の終点に対応することを示している。始点ポインタSP(0)、SP(1)は、始点ポインタ部SPNT(0)、SPNT(1)の始点ポインタSPをそれぞれ示している。また、終点ポインタEP(0)、EP(1)は、終点ポインタ部EPNT(0)、EPNT(1)の終点ポインタEPをそれぞれ示している。
期間T22’の動作は、情報処理装置14で追加されたループ深さ保持部LDEPの値等を除いて、図8に示した期間T22の最後のサイクルと同じである。例えば、ループ深さ保持部LDEPの値は、命令CMD9−CMD18のループ2の処理が実施される前に、命令CMD10−CMD13のループ1の処理が実施されている状態であるため、“1”に設定されている。
また、ループ数保持部LNUMの値は、始点ポインタSP(0)および終点ポインタEP(0)のみに有効な値がされているため、“1”に設定されている。例えば、始点ポインタSP(0)および終点ポインタEP(0)には、命令CMD10−CMD13のループ1の始点および終点に対応する“A”および“A+3”がそれぞれ設定されている。また、レジスタreg02の値は、例えば、“7”に設定されている。
期間T24’の動作は、情報処理装置14で追加されたループ深さ保持部LDEPの値等を除いて、図8に示した期間T24の動作と同じである。例えば、期間T24’では、レジスタreg01の値が“1”から“0”に更新されるため、ゼロフラグZFLGの論理値は、“0”から“1”に変化する。これにより、ループ終了通知LFINの論理値は、“0”から“1”に変化する。また、ループ終了通知LFINの論理値が“1”であるため、デコード部52は、デコード部52内に保持している命令CMD10を破棄する。
期間T30’では、読み出しポインタRPが“A+4”に設定される点が図8に示した期間T30と相違する。期間T30’のその他の動作は、情報処理装置14で追加されたループ深さ保持部LDEPの値等を除いて、図8に示した期間T30の動作と同じである。例えば、期間T30’では、ループ処理フラグLFLGの論理値は、ループ終了通知LFINの論理値が期間T24’で“1”に設定されたため、“1”から“0”に変化する。これにより、命令バッファ34は、書き込み動作を実施する。例えば、命令バッファ34は、フェッチ部20から出力された命令CMD14を、書き込みポインタWPが示す位置“A+4”に記憶する。
また、ループ深さ保持部LDEPの値は、ループ終了通知LFINの論理値が期間T24’で“1”に設定されたため、“1”から“0”に変化する。このように、例えば、ループ深さ保持部LDEPの値は、ループ終了通知LFINのアサートに応じて、カウントダウンする。また、デコード部52で保持していた命令CMD10が期間T24’に破棄されたため、デコード出力イネーブル信号DENの論理値は“0”に設定される。
期間T32’では、命令CMD15−CMD18が命令バッファ34に順次記憶される。例えば、フェッチ部20は、フェッチした命令CMDf(命令CMD15−CMD18)を選択部40に順次出力する。選択部40は、フェッチ部20から受けた命令CMDf(命令CMDm)をデコード部52に順次出力する。デコード部52は、選択部40から受けた命令CMDmを順次解読し、解読結果DOUTを実行部60に出力する。
書き込みポインタWPは、情報処理装置14の動作クロックに同期して、”A+5”から“A+8”までカウントアップする。これにより、命令CMD15、CMD16、CMD17、CMD18は、書き込みポインタWPが示す位置“A+5”、“A+6”、“A+7”、“A+8”にそれぞれ記憶される。
ループ検出信号LDETの論理値は、ループ2の分岐命令(命令CMD18)が解読されるまで、“0”に維持される。そして、命令CMD18が選択部40から出力されるサイクルで、ループ検出信号LDETの論理値は、“0”から“1”に変化する。なお、命令CMD18の分岐命令では、命令CMD18の9つ前の命令CMD9に戻る。このため、ループ検出信号LDETの論理値が“1”に設定されたとき、分岐先アドレスBADRは、“−9”に設定される。なお、図16の例では、命令バッファ34の容量は、10個以上の命令CMDを保持できるバッファサイズである。このため、ループ検出応答信号LDETRの論理値は、ループ検出信号LDETに応答して、“0”から“1”に変化する。
ループ処理フラグLFLGの論理値は、“0”に維持されている。また、ループ終点信号LENDの論理値は、“0”に維持されている。レジスタreg01の値は、レジスタreg01の値を“15”に設定する命令CMD15の解読結果DOUTが出力された次のサイクルで、“15”に設定される。これにより、ゼロフラグZFLGの論理値は、“1”から“0”に変化する。また、ループ終了通知LFINの論理値は、“0”に維持されている。
期間T40では、フェッチ部20は、フェッチした命令CMD19を保持した状態で、フェッチ動作を停止する。そして、命令バッファ34は、読み出し動作を実施する。例えば、命令バッファ34は、命令CMD9−CMD13を順次出力する。なお、命令CMD9は、ループ2の始点に対応する命令CMDである。また、命令CMD13は、ループ2より内側のループ1の終点に対応する命令CMDである。例えば、命令CMD9、CMD10、CMD11は、読み出しポインタRPが示す位置“A−1”、“A”、“A+1”からそれぞれ読み出される。
選択部40は、命令バッファ34から受けた命令CMDb(命令CMDm)をデコード部52に順次出力する。デコード部52は、選択部40から受けた命令CMDmを順次解読し、解読結果DOUTを実行部60に出力する。デコード出力イネーブル信号DENの論理値は、“1”に維持される。書き込みポインタWPは、期間T32’(書き込み動作時)の最後のサイクルでの値“A+8”に“1”を加算した値“A+9”に維持される。
ループ検出信号LDETおよびループ検出応答信号LDETRの論理値は、“0”に維持される。また、ループ処理フラグLFLGは、命令CMD9が命令バッファ34から出力される最初のサイクルで、“0”から“1”に変化する。そして、ループ処理フラグLFLGの論理値は、“1”に維持される。始点ポインタSP(0)および終点ポインタ(0)は、“A”および“A+3”にそれぞれ維持される。
また、ループ検出応答信号LDETRの論理値が“1”のときのループ数保持部LNUMの値が“1”であるため、始点ポインタSP(1)および終点ポインタEP(1)が更新される。例えば、始点ポインタSP(1)は、ループ検出信号LDETの論理値が“1”のときの分岐先アドレスBADR(“−9”)および書き込みポインタWP(“A+8”)の和(“A−1”)に設定される。また、終点ポインタEP(1)は、ループ検出信号LDETの論理値が“1”のときの書き込みポインタWPと同じ値(“A+8”)に設定される。
読み出しポインタRPは、期間T40の最初のサイクルで、分岐先アドレスBADR(“−9”)および書き込みポインタWP(“A+8”)の和(“A−1”)に設定される。そして、読み出しポインタRPは、情報処理装置14の動作クロックに同期して更新される。例えば、読み出しポインタRPは、命令CMD10が命令バッファ34から出力されるサイクルで、“A−1”から“A”にカウントアップする。
ループ終点信号LENDは、例えば、読み出しポインタRPが“A−1”、“A”、“A+1”、“A+2”のとき、論理値“0”に設定される。なお、ループ終点信号LENDは、例えば、図17に示すように、読み出しポインタRPが“A+3”のとき、論理値“1”に設定される。
ループ深さ保持部LDEPの値は、論理値“1”のループ検出応答信号LDETRに応答して、“0”から“1”にカウントアップする。ループ数保持部LNUMの値は、始点ポインタSP(1)および終点ポインタEP(1)に有効な値が設定されるため、“1”から“2”にカウントアップする。レジスタreg01の値は、例えば、期間T40の最初のサイクルでは、命令CMD12が実行されていないため、“15”に維持される。
レジスタreg02の値は、命令CMD17(reg02=reg02−1)の解読結果DOUTが出力された次のサイクルで、更新される。例えば、レジスタreg02の値は、期間T40における最初の命令CMD18の解読結果DOUTが出力されるサイクルで、“7”から“6”に更新される。なお、ゼロフラグZFLGおよびループ終了通知LFINの論理値は、“0”に維持される。
このように、情報処理装置14は、多重ループにおけるループ2の分岐命令(命令CMD18)が解読されたときにも、パイプラインフラッシュを実施することなく、ループ2の始点に対応する命令CMD9を命令バッファ34からデコード部52に選択部40を介して転送する。これにより、この実施形態では、多重ループが実施されるときにも、パイプライン処理の停止を低減できる。
図17は、図15に示したループ1の処理時の動作の一例を示している。なお、図17に示した動作は、図16に示した動作の続きに対応する。期間T42は、図16に示した期間T40の続きである。図の太い線で囲んだ命令CMD13等は、ループ処理の終点に対応することを示している。
期間T42では、例えば、命令CMD12、CMD13が命令バッファ34からデコード部52に選択部40を介して順次転送される。命令CMD12、CMD13は、例えば、読み出しポインタRPが示す位置“A+2”、“A+3”からそれぞれ読み出される。
ループ終点信号LENDは、読み出しポインタRPが“A+3”(終点ポインタEP(0))のとき、論理値“1”に設定される。すなわち、ループ終点信号LENDは、読み出しポインタRPが終点ポインタEP(0)に一致するサイクルで、論理値“1”に設定される。
なお、ループ終点信号LENDの論理値が“1”のときの読み出しポインタRP“A+3”は、実行中のループ処理(ループ2の処理)の終点ポインタEP(1)と異なる。このため、ループ深さ保持部LDEPの値は、次のサイクル(期間T50の最初のサイクル)で、“1”から“2”にカウントアップする。このように、ループ深さ保持部LDEPの値は、例えば、実行中のループ処理の終点ポインタEPと異なる終点ポインタEPに読み出しポインタRPが一致したとき、論理値“1”のループ終点信号LENDに応答して、カウントアップする。
期間T50は、2重ループの内側のループ1の処理が命令バッファ34から読み出される命令CMDで実施される期間である。例えば、命令バッファ34は、論理値“1”のループ終点信号LENDを受けるまで、ループ1の処理の範囲に対応する命令CMD10−CMD13を順次出力する動作を繰り返す。
ループ終点信号LENDは、読み出しポインタRPが“A”、“A+1”、“A+2”のとき、論理値“0”に設定され、読み出しポインタRPが“A+3”のとき、論理値“1”に設定される。すなわち、ループ終点信号LENDは、読み出しポインタRPが終点ポインタEP(0)、EP(1)のいずれか(図17では、終点ポインタEP(0))に一致するサイクルで、論理値“1”に設定される。
なお、ループ終点信号LENDの論理値が“1”のときの読み出しポインタRP“A+3”は、実行中のループ処理(ループ1の処理)の終点ポインタEP(0)に一致する。このため、ループ深さ保持部LDEPの値は、ループ終点信号LENDの論理値が“0”から“1”に変化しても、カウントアップしない。例えば、ループ深さ保持部LDEPの値は、期間T50の最初のサイクルで“1”から“2”にカウントアップした後、“2”に維持される。
レジスタreg01の値は、命令CMD12(reg01=reg01−1)が実行される度に、減少する。例えば、レジスタreg01の値は、期間T50における最初の命令CMD13の解読結果DOUTが出力されるサイクルで、“15”から“14”に更新される。そして、レジスタreg01の値は、期間T50における14回目の命令CMD13の解読結果DOUTが出力されるサイクルで、“2”から“1”に更新される。なお、期間T50では、例えば、レジスタreg01、reg02の値が“0”でないため、ゼロフラグZFLGおよびループ終了通知LFINの論理値は、“0”に維持される。
期間T60では、レジスタreg01の値は、命令CMD12(reg01=reg01−1)の実行に伴い、“1”から“0”に更新される。このため、ゼロフラグZFLGの論理値は、“0”から“1”に変化する。したがって、ループ終了通知LFINの論理値は、“0”から“1”に変化する。ループ終了通知LFINの論理値が“1”であるため、デコード部52は、デコード部52内に保持している命令CMD10を破棄する。
期間T62では、デコード出力イネーブル信号DENの論理値は、ループ終了通知LFINの論理値が期間T60で“1”に設定されたため、“0”に設定される。また、読み出しポインタRPは、ループ終了通知LFINの論理値が期間T60で“1”に設定されたため、ループ終了通知LFINに対応するループ1の終点“A+3”に“1”を加算した“A+4”に設定される。
ループ深さ保持部LDEPの値は、ループ終了通知LFINの論理値が期間T60で“1”に設定されたため、“2”から“1”にカウントダウンする。ループ処理フラグLFLGの論理値は、ループ深さ保持部LDEPの値が1以上であるため、“1”に維持される。すなわち、ループ処理フラグLFLGの論理値は、ループ深さ保持部LDEPの値が2以上の期間では、ループ終了通知LFINの論理値が“1”に設定されても、“1”に維持される。したがって、命令バッファ34は、読み出し動作を継続する。例えば、命令CMD14は、読み出しポインタRPが示す位置“A+4”から読み出される。
期間T64では、例えば、命令CMD15、CMD16が命令バッファ34からデコード部52に選択部40を介して順次転送される。命令CMD15、CMD16は、例えば、読み出しポインタRPが示す位置“A+5”、“A+6”からそれぞれ読み出される。
このように、情報処理装置14は、ループ1の処理の分岐命令(命令CMD13)が解読されたときに、パイプラインフラッシュを実施することなく、ループ1の処理の始点に対応する命令CMD10を命令バッファ34からデコード部52に選択部40を介して転送する。そして、情報処理装置14は、ループ1の処理が終了したときに、デコード部52および実行部60間のフラッシュ制御を実施する。これにより、この実施形態では、パイプライン処理の停止を低減できる。
図18は、図15に示したループ2の処理時の動作の一例を示している。なお、図18に示した動作は、図17に示した動作の続きに対応する。期間T50’は、図17に示した期間T50の最後のサイクルに対応する。また、期間T60、T62、T64は、図17に示した期間T60、T62、T64である。図の太い線で囲んだ命令CMD13、CMD18等は、ループ処理の終点に対応することを示している。
期間T66では、例えば、命令CMD17、CMD18が命令バッファ34からデコード部52に選択部40を介して順次転送される。命令CMD17、CMD18は、例えば、読み出しポインタRPが示す位置“A+7”、“A+8”からそれぞれ読み出される。
ループ終点信号LENDは、読み出しポインタRPが“A+8”(終点ポインタEP(1))のとき、論理値“1”に設定される。すなわち、ループ終点信号LENDは、読み出しポインタRPが終点ポインタEP(0)、EP(1)のいずれか(図18では、終点ポインタEP(1))に一致するサイクルで、論理値“1”に設定される。なお、ループ終点信号LENDの論理値が“1”のときの読み出しポインタRP“A+8”は、実行中のループ処理(ループ2の処理)の終点ポインタEP(1)に一致する。このため、次のサイクルでも、ループ深さ保持部LDEPの値は、“1”に維持される。
レジスタreg01の値は、レジスタreg01の値を“15”に設定する命令CMD15の実行に伴い、“15”に設定される。これにより、ゼロフラグZFLGの論理値は、“1”から“0”に変化する。また、ループ終了通知LFINの論理値は、“0”に維持されている。
期間T40の動作は、レジスタreg02の値を除いて、図16に示した期間T40の動作と同じである。例えば、レジスタreg02の値は、命令CMD17(reg02=reg02−1)の実行に伴い、“6”から“5”に更新される。なお、ゼロフラグZFLGおよびループ終了通知LFINの論理値は、“0”に維持される。
このように、情報処理装置14は、命令CMD10−CMD13のループ1および命令CMD9−CMD18のループ2を含む多重ループを、バッファ命令32から命令CMDを読み出して実行する。このとき、フェッチ部20のフェッチ動作は、停止している。このため、この実施形態では、多重ループが実施されるときにも、ループ処理が実施されている期間のアクセス効率を向上できる。
図19は、図15に示したループ2の処理終了時の動作の一例を示している。図の太い線で囲んだ命令CMD13、CMD18等は、ループ処理の終点に対応することを示している。期間T50’、T60、T62、T64、T66の動作は、レジスタreg02の値を除いて、図18に示した期間T50’、T60、T62、T64、T66の動作と同じである。例えば、レジスタreg02の値は、“1”に設定されている。
期間T70では、レジスタreg02の値は、命令CMD17(reg02=reg02−1)の実行に伴い、“1”から“0”に更新される。このため、ゼロフラグZFLGの論理値は、“0”から“1”に変化する。したがって、ループ終了通知LFINの論理値は、“0”から“1”に変化する。ループ終了通知LFINの論理値が“1”であるため、デコード部52は、デコード部52内に保持している命令CMD9を破棄する。
ループ終了通知LFINの論理値が“1”に設定されたとき、ループ深さ保持部LDEPの値は、“1”である。このため、ループ処理フラグLFLGの論理値は、次のサイクル(期間T72)で、“1”から“0”に変化する。
期間T72では、デコード出力イネーブル信号DENの論理値は、ループ終了通知LFINの論理値が期間T70で“1”に設定されたため、“0”に設定される。また、ループ処理フラグLFLGの論理値は、ループ深さ保持部LDEPの値が“1”のときの論理値“1”のループ終了通知LFINに応答して、“1”から“0”に変化する。これにより、命令バッファ34は、書き込み動作を実施する。例えば、命令バッファ34は、フェッチ部20から出力された命令CMD19を、書き込みポインタWPが示す位置“A+9”に記憶する。また、命令CMD19は、フェッチ部20からデコード部52に選択部40を介して転送される。
ループ深さ保持部LDEPの値は、ループ終了通知LFINの論理値が期間T70で“1”に設定されたため、“1”から“0”にカウントダウンする。なお、ゼロフラグZFLGの論理値は、レジスタreg02の値が“0”のため、“1”に維持される。なお、ループ終了通知LFINの論理値は、“1”から“0”に変化する。
期間T74では、命令CMD20がフェッチ部20からデコード部52に選択部40を介して転送される。また、命令CMD20は、命令バッファ34に記憶される。例えば、書き込みポインタWPは、”A+9”から“A+10”にカウントアップする。そして、命令CMD20は、書き込みポインタWPが示す位置“A+10”に記憶される。
なお、命令CMD20以降の命令CMDは、ループ処理フラグLFLGの論理値が“0”の期間、フェッチ部20からデコード部52に選択部40を介して順次転送されるとともに、命令バッファ34に順次記憶される。
図20は、図15に示したループ2の処理開始時の動作の別の例を示している。なお、図20は、n個の全ての始点ポインタ部SPNTおよび終点ポインタ部EPNTに有効な始点ポインタSPおよび終点ポインタEPが保持されているときの情報処理装置14の動作の一例を示している。図の太い線で囲んだ命令CMD13、CMD18等は、ループ処理の終点(分岐命令)に対応することを示している。図の符号stallは、パイプラインフラッシュにより発生した各パイプラインの無効なサイクルを示している。
期間T24’、T30’、T32’の動作は、ループ検出応答信号LDETR、始点ポインタSP、終点ポインタEPおよびループ数保持部LNUMの値を除いて、図16に示した期間T24’、T30’、T32’の動作と同じである。例えば、始点ポインタSP(0)−SP(n−1)および終点ポインタEP(n)−EP(n−1)には、ループ2の分岐命令に対応する命令CMD18が検出される前に、有効な値が設定されている。このため、ループ数保持部LNUMの値は、“n”に設定されている。
期間T32の最後のサイクルでは、ループ2の分岐命令に対応する命令CMD18がフェッチ部20からデコード部52に選択部40を介して転送される。また、命令CMD18は、命令バッファ34に記憶される。
分岐命令(命令CMD18)が解読されることにより、ループ検出信号LDETの論理値は、“0”から“1”に変化する。このとき、分岐先アドレスBADRは、“−9”に設定される。なお、図20の例では、命令バッファ34の容量は、10個以上の命令CMDを保持できるバッファサイズである。このため、命令CMD18の分岐命令で戻る命令CMD9は、命令バッファ34に記憶されている。
しかし、n個の全ての始点ポインタ部SPNTおよび終点ポインタ部EPNTに有効な始点ポインタSPおよび終点ポインタEPが既に保持されている。このため、命令バッファ34は、命令CMD9に対応する始点ポインタSPおよび命令CMD18に対応する終点ポインタEPを保持できないと判断する。すなわち、命令バッファ34は、書き込み動作から読み出し動作に切り替えできないと判断する。
このため、ループ検出応答信号LDETRの論理値は、“0”に維持される。したがって、ループ処理フラグLFLGの論理値は、“0”に維持される。このように、始点ポインタSPおよび終点ポインタEPの保持数が限界に達しているとき、命令バッファ34は、読み出し動作に切り替わらない。
期間T34では、命令バッファ34は、書き込み動作を実施する。なお、命令バッファ34が読み出し動作を実施しないため、パイプラインフラッシュが実施される。このため、例えば、期間T34の最初の2サイクルでは、フェッチ部20および選択部40は、パイプライン処理を停止する。
また、デコード部52は、命令CMD18の解読結果DOUTを出力した後、有効な命令CMDを受けるまで、解読処理を停止する。このため、デコード出力イネーブル信号DENの論理値は、命令CMD18の解読結果DOUTを出力した後に“0”に設定され、命令CMD9の解読結果DOUTを出力するまで、“0”に維持される。なお、期間T34では、パイプラインフラッシュが実施されるため、書き込みポインタWP、ループ深さ保持部LDEPの値およびループ数保持部LNUMの値は、“0”にクリアされる。なお、例えば、図11に示した命令数保持部CNUMの値も、“0”にクリアされる。
また、図11に示したエントリフラグEF(0)−EF(n−1)は、無効(例えば、論理値“0”)に設定される。すなわち、n個の全ての始点ポインタ部SPNTおよび終点ポインタ部EPNTは、新たな始点ポインタSPおよび終点ポインタEPを保持可能な状態になる。
パイプラインフラッシュが実施された後、フェッチ部20は、フェッチした命令CMDf(命令CMD9、CMD10)を選択部40に順次出力する。選択部40は、フェッチ部20から受けた命令CMDf(命令CMDm)をデコード部52に順次出力する。デコード部52は、選択部40から受けた命令CMDmを順次解読し、解読結果DOUTを実行部60に出力する。
命令バッファ34は、フェッチ部20から出力される命令CMDfを順次記憶する。例えば、命令CMD9、CMD10は、書き込みポインタWPが示す位置“0”、“1”にそれぞれ記憶される。
このように、情報処理装置14は、始点ポインタSPおよび終点ポインタEPの保持数が限界に達しているとき、ループ処理の始点に対応する命令CMD9をフェッチ部20からデコード部52に選択部40を介して転送する。
なお、情報処理装置14の構成および動作は、この例に限定されない。例えば、始点ポインタ部SPNTおよび終点ポインタ部EPNTは、リング状に形成されてもよい。この場合、例えば、単独のループが続くとき、パイプライン処理の停止を効率よく低減できる。
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
10、12、14‥情報処理装置;20‥フェッチ部;30、32、34‥命令バッファ;40‥選択部;50、52‥デコード部;ADD1‥加算部;AND1−AND8‥アンド回路;BCNT、BCNT2‥制御部;BUF‥バッファ部;CNUM‥命令数保持部;DEC‥デコーダ;EFTL‥エントリフラグテーブル;EPNT‥終点ポインタ部;ICMP1−ICMP3、MCMP1、MCMP2‥比較器;INV1‥インバータ;LDEP‥ループ深さ保持部;LFCNT‥フラグ制御部;LNUM‥ループ数保持部;MCMP1‥比較器;MUX1‥マルチプレクサ;NAND1‥ナンド回路;OR1−OR5‥オア回路;RPCNT‥読み出しポインタ制御部;RPNT‥読み出しポインタ部;SPNT‥始点ポインタ部;SPSEL‥始点選択部;WPNT‥書き込みポインタ部
Claims (9)
- 命令を取得するフェッチ部と、
前記命令を解読するデコード部と、
前記フェッチ部から出力される前記命令を順次記憶する書き込み動作と、ループ処理の範囲に対応する前記命令を繰り返し出力する読み出し動作とを切り替えて実施する命令バッファ部と、
前記書き込み動作が実施されているとき、前記フェッチ部から出力される前記命令を前記デコード部に出力し、前記読み出し動作が実施されているとき、前記命令バッファ部から出力される前記命令を前記デコード部に出力する選択部と
を備えていることを特徴とする情報処理装置。 - 前記デコード部は、前記フェッチ部から前記選択部を介して受けた前記命令がループ処理の分岐先を含む分岐命令のとき、前記分岐命令を検出したことを前記命令バッファに通知すること
を特徴とする請求項1記載の情報処理装置。 - 前記命令バッファ部は、
ループ処理の始点および終点を示す始点ポインタおよび終点ポインタの組みを保持するレジスタ部を含み、
前記デコード部が前記分岐命令を検出したとき、前記書き込み動作から前記読み出し動作に切り替え可能か判定し、
切り替え可能と判定したとき、前記始点ポインタおよび前記終点ポインタの組みを前記レジスタ部に保持するとともに、前記始点ポインタおよび前記終点ポインタ間の前記命令を繰り返し出力する前記読み出し動作を実施すること
を特徴とする請求項2記載の情報処理装置。 - 前記レジスタ部は、前記始点ポインタおよび前記終点ポインタの組みを複数保持可能に形成され、
前記命令バッファ部は、
多重ループの前記ループ処理が実施されるとき、前記各ループ処理の前記始点ポインタおよび前記終点ポインタの組みを前記レジスタ部に順次保持すること
を特徴とする請求項3記載の情報処理装置。 - 前記デコード部により解読された前記命令を実行し、前記ループ処理が実施されているとき、前記ループ処理が終了したか否かを判定し、判定結果に応じて、前記ループ処理が終了したことを示すループ終了通知を前記命令バッファ部に出力する実行部を備え、
前記命令バッファ部は、
多重ループの前記読み出し動作では、複数の前記終点ポインタのいずれかが示す終点位置から前記命令を出力した後、前記終点位置を示す前記終点ポインタに対応する前記始点ポインタと前記終点位置との間の前記命令を、前記ループ終了通知を受けるまで繰り返し出力すること
を特徴とする請求項4記載の情報処理装置。 - 前記デコード部により解読された前記命令を実行し、前記ループ処理が実施されているとき、前記ループ処理が終了したか否かを判定し、判定結果に応じて、前記ループ処理が終了したことを示すループ終了通知を前記命令バッファ部に出力する実行部を備えていること
を特徴とする請求項1記載の情報処理装置。 - 前記命令バッファ部は、前記ループ終了通知に応答して、前記読み出し動作から前記書き込み動作に切り替わるとともに、前記読み出し動作の終了を前記選択部に通知し、
前記選択部は、前記読み出し動作の終了を示す通知に応答して、前記フェッチ部から出力される前記命令を前記デコード部に出力すること
を特徴とする請求項6記載の情報処理装置。 - 前記実行部は、前記ループ終了通知を前記命令バッファ部および前記デコード部に出力し、
前記デコード部は、前記ループ終了通知を受けたとき、保持している前記命令を破棄すること
を特徴とする請求項6記載の情報処理装置。 - 前記デコード部により解読された前記命令を実行する実行部を備え、
前記命令バッファ部は、
前記ループ処理の始点および終点を示す始点ポインタおよび終点ポインタの組みを保持するレジスタ部を含み、
前記終点ポインタが示す前記命令を出力するとき、ループ処理の終点であることを示すループ終点通知を前記デコード部に出力し、
前記デコード部は、
前記ループ処理の終点に対応する前記命令と前記ループ終点通知とを前記実行部に転送すること
を特徴とする請求項1記載の情報処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011084292A JP2012221086A (ja) | 2011-04-06 | 2011-04-06 | 情報処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011084292A JP2012221086A (ja) | 2011-04-06 | 2011-04-06 | 情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012221086A true JP2012221086A (ja) | 2012-11-12 |
Family
ID=47272560
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011084292A Pending JP2012221086A (ja) | 2011-04-06 | 2011-04-06 | 情報処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012221086A (ja) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0228723A (ja) * | 1988-07-18 | 1990-01-30 | Fujitsu Ltd | ループ命令実行方式 |
JPH0773034A (ja) * | 1993-09-07 | 1995-03-17 | Nec Corp | 情報処理装置 |
JPH0991136A (ja) * | 1995-09-25 | 1997-04-04 | Toshiba Corp | 信号処理装置 |
JPH10232830A (ja) * | 1996-11-14 | 1998-09-02 | Motorola Inc | 分散型タグ・キャッシュメモリシステムおよびそこにデータを格納する方法 |
JP2004258905A (ja) * | 2003-02-25 | 2004-09-16 | Japan Science & Technology Agency | データ処理装置、データ処理プログラム、およびデータ処理プログラムを記録した記録媒体 |
JP2004326330A (ja) * | 2003-04-23 | 2004-11-18 | Kyushu Inst Of Technology | キャッシュメモリ、及びキャッシュメモリの電力削減方法 |
JP2007257349A (ja) * | 2006-03-23 | 2007-10-04 | Fujitsu Ltd | プロセッサ及びその処理方法 |
JP2010066892A (ja) * | 2008-09-09 | 2010-03-25 | Renesas Technology Corp | データプロセッサ及びデータ処理システム |
-
2011
- 2011-04-06 JP JP2011084292A patent/JP2012221086A/ja active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0228723A (ja) * | 1988-07-18 | 1990-01-30 | Fujitsu Ltd | ループ命令実行方式 |
JPH0773034A (ja) * | 1993-09-07 | 1995-03-17 | Nec Corp | 情報処理装置 |
JPH0991136A (ja) * | 1995-09-25 | 1997-04-04 | Toshiba Corp | 信号処理装置 |
JPH10232830A (ja) * | 1996-11-14 | 1998-09-02 | Motorola Inc | 分散型タグ・キャッシュメモリシステムおよびそこにデータを格納する方法 |
JP2004258905A (ja) * | 2003-02-25 | 2004-09-16 | Japan Science & Technology Agency | データ処理装置、データ処理プログラム、およびデータ処理プログラムを記録した記録媒体 |
JP2004326330A (ja) * | 2003-04-23 | 2004-11-18 | Kyushu Inst Of Technology | キャッシュメモリ、及びキャッシュメモリの電力削減方法 |
JP2007257349A (ja) * | 2006-03-23 | 2007-10-04 | Fujitsu Ltd | プロセッサ及びその処理方法 |
JP2010066892A (ja) * | 2008-09-09 | 2010-03-25 | Renesas Technology Corp | データプロセッサ及びデータ処理システム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3688270B2 (ja) | プロセッサの停止 | |
US8601239B2 (en) | Extended register addressing using prefix instruction | |
CN107450888B (zh) | 嵌入式数字信号处理器中的零开销循环 | |
US6237089B1 (en) | Method and apparatus for affecting subsequent instruction processing in a data processor | |
EP2972787B1 (en) | Eliminating redundant synchronization barriers in instruction processing circuits, and related processor systems, methods, and computer-readable media | |
CN112230992B (zh) | 一种包含分支预测循环的指令处理装置、处理器及其处理方法 | |
WO2009114289A1 (en) | System and method of selectively committing a result of an executed instruction | |
JP5941488B2 (ja) | 条件付きショート前方分岐の計算的に等価な述語付き命令への変換 | |
KR101806279B1 (ko) | 명령어 순서 강제 명령어들의 쌍들, 프로세서들, 방법들, 및 시스템들 | |
US7523295B2 (en) | Processor and method of grouping and executing dependent instructions in a packet | |
JP5107892B2 (ja) | 間接レジスタ読み取り及び書込み動作 | |
TW201342225A (zh) | 用於使用觸發來決定指令順序之方法 | |
EP1974254B1 (en) | Early conditional selection of an operand | |
EP3198400B1 (en) | Dependency-prediction of instructions | |
EP1770507A2 (en) | Pipeline processing based on RISC architecture | |
CN112559048B (zh) | 一种指令处理装置、处理器及其处理方法 | |
WO2013067515A1 (en) | Selective writing of branch target buffer | |
JP2012221086A (ja) | 情報処理装置 | |
JP2008299729A (ja) | プロセッサ | |
JP2008071061A (ja) | 情報処理装置 | |
US20140201505A1 (en) | Prediction-based thread selection in a multithreading processor | |
TWI493450B (zh) | 用於在微碼呼叫程式與微碼次常式之間傳遞別名參數的設備、方法、物件及系統 | |
US20100153688A1 (en) | Apparatus and method for data process | |
JP2009205351A (ja) | マイクロコンピュータ | |
JP2005134987A (ja) | パイプライン演算処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20131225 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140827 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140902 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20150106 |